[Web] Enable the closure compiler in CI

Also fixes some JSDoc annotations in GodotAudio
This commit is contained in:
Fabio Alessandrelli 2024-07-26 11:52:36 +02:00
parent 26f17c33a5
commit 96feb924e8
2 changed files with 9 additions and 14 deletions

View File

@ -6,7 +6,7 @@ on:
env: env:
# Used for the cache key. Add version suffix to force clean build. # Used for the cache key. Add version suffix to force clean build.
GODOT_BASE_BRANCH: master GODOT_BASE_BRANCH: master
SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no use_closure_compiler=yes
EM_VERSION: 3.1.59 EM_VERSION: 3.1.59
EM_CACHE_FOLDER: "emsdk-cache" EM_CACHE_FOLDER: "emsdk-cache"

View File

@ -77,7 +77,7 @@ class Sample {
* Creates a `Sample` based on the params. Will register it to the * Creates a `Sample` based on the params. Will register it to the
* `GodotAudio.samples` registry. * `GodotAudio.samples` registry.
* @param {SampleParams} params Base params * @param {SampleParams} params Base params
* @param {SampleOptions} [options={}] Optional params * @param {SampleOptions} [options={{}}] Optional params
* @returns {Sample} * @returns {Sample}
*/ */
static create(params, options = {}) { static create(params, options = {}) {
@ -98,8 +98,7 @@ class Sample {
/** /**
* `Sample` constructor. * `Sample` constructor.
* @param {SampleParams} params Base params * @param {SampleParams} params Base params
* @param {SampleOptions} [options={}] Optional params * @param {SampleOptions} [options={{}}] Optional params
* @constructor
*/ */
constructor(params, options = {}) { constructor(params, options = {}) {
/** @type {string} */ /** @type {string} */
@ -154,7 +153,7 @@ class Sample {
if (this._audioBuffer == null) { if (this._audioBuffer == null) {
throw new Error('couldn\'t duplicate a null audioBuffer'); throw new Error('couldn\'t duplicate a null audioBuffer');
} }
/** @type {Float32Array[]} */ /** @type {Array<Float32Array>} */
const channels = new Array(this._audioBuffer.numberOfChannels); const channels = new Array(this._audioBuffer.numberOfChannels);
for (let i = 0; i < this._audioBuffer.numberOfChannels; i++) { for (let i = 0; i < this._audioBuffer.numberOfChannels; i++) {
const channel = new Float32Array(this._audioBuffer.getChannelData(i)); const channel = new Float32Array(this._audioBuffer.getChannelData(i));
@ -189,7 +188,6 @@ class SampleNodeBus {
/** /**
* `SampleNodeBus` constructor. * `SampleNodeBus` constructor.
* @param {Bus} bus The bus related to the new `SampleNodeBus`. * @param {Bus} bus The bus related to the new `SampleNodeBus`.
* @constructor
*/ */
constructor(bus) { constructor(bus) {
const NUMBER_OF_WEB_CHANNELS = 6; const NUMBER_OF_WEB_CHANNELS = 6;
@ -413,8 +411,7 @@ class SampleNode {
/** /**
* @param {SampleNodeParams} params Base params * @param {SampleNodeParams} params Base params
* @param {SampleNodeOptions} [options={}] Optional params * @param {SampleNodeOptions} [options={{}}] Optional params
* @constructor
*/ */
constructor(params, options = {}) { constructor(params, options = {}) {
/** @type {string} */ /** @type {string} */
@ -441,7 +438,7 @@ class SampleNode {
this._sampleNodeBuses = new Map(); this._sampleNodeBuses = new Map();
/** @type {AudioBufferSourceNode | null} */ /** @type {AudioBufferSourceNode | null} */
this._source = GodotAudio.ctx.createBufferSource(); this._source = GodotAudio.ctx.createBufferSource();
/** @type {AudioBufferSourceNode["onended"]} */
this._onended = null; this._onended = null;
this.setPlaybackRate(options.playbackRate ?? 44100); this.setPlaybackRate(options.playbackRate ?? 44100);
@ -558,7 +555,7 @@ class SampleNode {
/** /**
* Sets the volumes of the `SampleNode` for each buses passed in parameters. * Sets the volumes of the `SampleNode` for each buses passed in parameters.
* @param {Bus[]} buses * @param {Array<Bus>} buses
* @param {Float32Array} volumes * @param {Float32Array} volumes
*/ */
setVolumes(buses, volumes) { setVolumes(buses, volumes) {
@ -818,7 +815,6 @@ class Bus {
/** /**
* `Bus` constructor. * `Bus` constructor.
* @constructor
*/ */
constructor() { constructor() {
/** @type {Set<SampleNode>} */ /** @type {Set<SampleNode>} */
@ -985,7 +981,6 @@ class Bus {
GodotAudio.buses = GodotAudio.buses.filter((v) => v !== this); GodotAudio.buses = GodotAudio.buses.filter((v) => v !== this);
} }
/** @type {Bus["prototype"]["_syncSampleNodes"]} */
_syncSampleNodes() { _syncSampleNodes() {
const sampleNodes = Array.from(this._sampleNodes); const sampleNodes = Array.from(this._sampleNodes);
for (let i = 0; i < sampleNodes.length; i++) { for (let i = 0; i < sampleNodes.length; i++) {
@ -1086,7 +1081,7 @@ const _GodotAudio = {
// `Bus` class // `Bus` class
/** /**
* Registry of `Bus`es. * Registry of `Bus`es.
* @type {Bus[]} * @type {Array<Bus>}
*/ */
buses: null, buses: null,
/** /**
@ -1309,7 +1304,7 @@ const _GodotAudio = {
/** /**
* Triggered when a sample node volumes need to be updated. * Triggered when a sample node volumes need to be updated.
* @param {string} playbackObjectId Id of the sample playback * @param {string} playbackObjectId Id of the sample playback
* @param {number[]} busIndexes Indexes of the buses that need to be updated * @param {Array<number>} busIndexes Indexes of the buses that need to be updated
* @param {Float32Array} volumes Array of the volumes * @param {Float32Array} volumes Array of the volumes
* @returns {void} * @returns {void}
*/ */