blob: 4798a249c5e782de86eedc17d2f38b96643d7160 [file] [log] [blame] [edit]
/**
* Copyright 2014 The Emscripten Authors. All rights reserved.
* Emscripten is available under two separate licenses, the MIT license and the
* University of Illinois/NCSA Open Source License. Both these licenses can be
* found in the LICENSE file.
*
* This file contains definitions for things that we'd really rather the closure compiler *didn't* minify.
* See http://code.google.com/p/closure-compiler/wiki/FAQ#How_do_I_write_an_externs_file
* See also the discussion here: https://github.com/emscripten-core/emscripten/issues/1979
*
* The closure_compiler() method in tools/shared.py refers to this file when calling closure.
*/
// Closure externs used by library_sockfs.js
/**
* Backported from latest closure...
* @see https://developer.mozilla.org/en-US/docs/Web/API/Document/currentScript
*/
Document.prototype.currentScript;
/**
* Don't minify Math.*
*/
/**
* @suppress {duplicate}
*/
var Math = {};
Math.abs = function() {};
Math.cos = function() {};
Math.sin = function() {};
Math.tan = function() {};
Math.acos = function() {};
Math.asin = function() {};
Math.atan = function() {};
Math.atan2 = function() {};
Math.exp = function() {};
Math.log = function() {};
Math.sqrt = function() {};
Math.ceil = function() {};
Math.floor = function() {};
Math.pow = function() {};
Math.imul = function() {};
Math.fround = function() {};
Math.round = function() {};
Math.min = function() {};
Math.max = function() {};
Math.clz32 = function() {};
Math.trunc = function() {};
/**
* Atomics
*/
var Atomics = {};
Atomics.compareExchange = function() {};
Atomics.exchange = function() {};
Atomics.wait = function() {};
Atomics.notify = function() {};
Atomics.load = function() {};
Atomics.store = function() {};
/**
* @const
* @suppress {duplicate, checkTypes}
*/
var WebAssembly = {};
/**
* @constructor
* @param {!BufferSource} bytes
*/
WebAssembly.Module = function(bytes) {};
/**
* @constructor
* @param {!WebAssembly.Module} moduleObject
* @param {Object=} importObject
*/
WebAssembly.Instance = function(moduleObject, importObject) {};
/**
* @constructor
* @param {MemoryDescriptor} memoryDescriptor
*/
WebAssembly.Memory = function(memoryDescriptor) {};
/**
* @constructor
* @param {TableDescriptor} tableDescriptor
*/
WebAssembly.Table = function(tableDescriptor) {};
/**
* @constructor
* @param {GlobalDescriptotr} globalDescriptor
*/
WebAssembly.Global = function(globalDescriptor) {};
/**
* @constructor
* @extends {Error}
*/
WebAssembly.CompileError = function() {};
/**
* @constructor
* @extends {Error}
*/
WebAssembly.LinkError = function() {};
/**
* @constructor
* @param {string=} message
* @param {string=} fileName
* @param {number=} lineNumber
* @extends {Error}
*/
WebAssembly.RuntimeError = function(message, fileName, lineNumber) {};
/**
* Note: Closure compiler does not support function overloading, omit this overload for now.
* {function(!WebAssembly.Module, Object=):!Promise<!WebAssembly.Instance>}
*/
/**
* @param {!BufferSource} moduleObject
* @param {Object=} importObject
* @return {!Promise<{module:WebAssembly.Module, instance:WebAssembly.Instance}>}
*/
WebAssembly.instantiate = function(moduleObject, importObject) {};
/**
* @param {!Promise<!Response>|!Response} source
* @param {Object=} importObject
* @return {!Promise<{module:WebAssembly.Module, instance:WebAssembly.Instance}>}
*/
WebAssembly.instantiateStreaming = function(source, importObject) {};
/**
* @param {!BufferSource} bytes
* @return {!Promise<!WebAssembly.Module>}
*/
WebAssembly.compile = function(bytes) {};
/**
* @param {!BufferSource} bytes
* @return {boolean}
*/
WebAssembly.validate = function(bytes) {};
/**
* @param {!WebAssembly.Module} moduleObject
* @return {!Array<{name:string, kind:string}>}
*/
WebAssembly.Module.exports = function(moduleObject) {};
/**
* @param {!WebAssembly.Module} moduleObject
* @return {!Array<{module:string, name:string, kind:string}>}
*/
WebAssembly.Module.imports = function(moduleObject) {};
/**
* @param {!WebAssembly.Module} moduleObject
* @param {string} sectionName
* @return {!Array<!ArrayBuffer>}
*/
WebAssembly.Module.customSections = function(moduleObject, sectionName) {};
/** @dict */
WebAssembly.Instance.prototype.exports;
/**
* @param {number} delta
* @return {number}
*/
WebAssembly.Memory.prototype.grow = function(delta) {};
/**
* @type {!ArrayBuffer}
*/
WebAssembly.Memory.prototype.buffer;
/**
* @param {number} delta
* @return {number}
*/
WebAssembly.Table.prototype.grow = function(delta) {};
/**
* @type {number}
*/
WebAssembly.Table.prototype.length;
/**
* @param {number} index
* @return {function(...)}
*/
WebAssembly.Table.prototype.get = function(index) {};
/**
* @param {number} index
* @param {?function(...)} value
*/
WebAssembly.Table.prototype.set = function(index, value) {};
/**
* @suppress {undefinedVars}
*/
var wakaUnknownAfter;
/**
* @suppress {undefinedVars}
*/
var wakaUnknownBefore;
/**
* @suppress {undefinedVars}
*/
var MozBlobBuilder;
// Module loaders externs, for AMD etc.
/**
* @param {Function} wrapper
*/
var define = function (wrapper) {};
/**
* @type {Worker}
*/
var worker;
/**
* @param {Object} message
*/
var onmessage = function(message) {};
var onmessageerror = function() {};
/**
* @param {string} type
* @param {!Function} listener
* @param {Object|boolean=} optionsOrUseCapture
*/
var addEventListener = function (type, listener, optionsOrUseCapture) {};
/**
* @param {string} type
* @param {!Function} listener
*/
var removeEventListener = function (type, listener) {};
/**
* @type {Function}
*/
var close;
// Fetch.js/Fetch Worker
/**
* @suppress {undefinedVars}
*/
var ENVIRONMENT_IS_FETCH_WORKER;
// Due to the way MODULARIZE works, Closure is run on generated code that does not define _scriptDir,
// but only after MODULARIZE has finished, _scriptDir is injected to the generated code.
// Therefore it cannot be minified.
/**
* @suppress {duplicate, undefinedVars}
*/
var _scriptDir;
// Closure run on asm.js uses a hack to execute only on shell code, declare externs needed for it.
/**
* @suppress {undefinedVars}
*/
var wakaGlobal;
/**
* @suppress {undefinedVars}
*/
var wakaEnv;
/**
* @suppress {undefinedVars}
*/
var wakaBuffer;
// Browser externs on global window object.
var pageXOffset;
var pageYOffset;
var innerWidth;
var innerHeight;
var outerWidth;
var outerHeight;
var event;
var devicePixelRatio;
// TODO: Use Closure's multifile support and/or migrate worker.js onmessage handler to inside the MODULARIZEd block
// to be able to remove all the variables below:
// Variables that are present in both output runtime .js file/JS lib files, and worker.js, so cannot be minified because
// the names need to match:
/** @suppress {duplicate} */
var noExitRuntime;
/** @type {?AudioWorklet} */
BaseAudioContext.prototype.audioWorklet;
/*
* AudioWorkletGlobalScope globals
*/
var registerProcessor = function(name, obj) {};
var currentFrame;
var currentTime;
var sampleRate;
/*
* WebGPU globals
*/
var GPUValidationError;
var GPUOutOfMemoryError;