UNPKG

google-closure-compiler

Version:

Check, compile, optimize and compress Javascript with Closure-Compiler

398 lines (332 loc) • 10.1 kB
/* * Copyright 2017 The Closure Compiler Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @fileoverview Definitions for WebAssembly JS API * * @see http://webassembly.org/docs/js/ * * @externs * @author loorongjie@gmail.com (Loo Rong Jie) */ /** * @const */ var WebAssembly = {}; /** * @record * @see https://webassembly.github.io/spec/js-api/#dictdef-webassemblycompileoptions */ WebAssembly.WebAssemblyCompileOptions = function() {}; /** * @type {!Array<string>|undefined} */ WebAssembly.WebAssemblyCompileOptions.prototype.builtins; /** * @type {string|null|undefined} */ WebAssembly.WebAssemblyCompileOptions.prototype.importedStringConstants; /** * @record * @see https://webassembly.github.io/spec/js-api/#dictdef-webassemblyinstantiatedsource */ WebAssembly.WebAssemblyInstantiatedSource = function() {}; /** @type {!WebAssembly.Instance} */ WebAssembly.WebAssemblyInstantiatedSource.prototype.instance; /** @type {!WebAssembly.Module} */ WebAssembly.WebAssemblyInstantiatedSource.prototype.module; /** * @constructor * @param {!BufferSource} bytes * @param {!WebAssembly.WebAssemblyCompileOptions=} opt_options */ WebAssembly.Module = function(bytes, opt_options) {}; /** * @constructor * @param {!WebAssembly.Module} moduleObject * @param {!WebAssembly.Imports=} importObject */ WebAssembly.Instance = function(moduleObject, importObject) {}; /** * @record * @see https://webassembly.github.io/spec/js-api/#dictdef-memorydescriptor */ WebAssembly.MemoryDescriptor = function() {}; /** @type {(!WebAssembly.AddressType|undefined)} */ WebAssembly.MemoryDescriptor.prototype.address; /** @type {!WebAssembly.AddressValue} */ WebAssembly.MemoryDescriptor.prototype.initial; /** @type {(!WebAssembly.AddressValue|undefined)} */ WebAssembly.MemoryDescriptor.prototype.maximum; /** @type {(boolean|undefined)} */ WebAssembly.MemoryDescriptor.prototype.shared; /** * @constructor * @param {!WebAssembly.MemoryDescriptor} memoryDescriptor * @see https://developer.mozilla.org/en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory */ WebAssembly.Memory = function(memoryDescriptor) {}; /** * @record * @see https://webassembly.github.io/spec/js-api/#dictdef-tabledescriptor */ WebAssembly.TableDescriptor = function() {}; /** @type {(!WebAssembly.AddressType|undefined)} */ WebAssembly.TableDescriptor.prototype.address; /** @type {!WebAssembly.TableKind} */ WebAssembly.TableDescriptor.prototype.element; /** @type {!WebAssembly.AddressValue} */ WebAssembly.TableDescriptor.prototype.initial; /** @type {(!WebAssembly.AddressValue|undefined)} */ WebAssembly.TableDescriptor.prototype.maximum; /** * @constructor * @param {!WebAssembly.TableDescriptor} tableDescriptor * @see https://developer.mozilla.org/en-US/docs/WebAssembly/Reference/JavaScript_interface/Table */ WebAssembly.Table = function(tableDescriptor) {}; /** * @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) {}; /** * @record * @see https://developer.mozilla.org/en-US/docs/WebAssembly/Reference/JavaScript_interface/Tag */ WebAssembly.TagType = function() {}; /** * @type {!Array<!WebAssembly.ValueType>} */ WebAssembly.TagType.prototype.parameters; /** * @constructor * @param {!WebAssembly.TagType} type * @see https://developer.mozilla.org/en-US/docs/WebAssembly/Reference/JavaScript_interface/Tag */ WebAssembly.Tag = function(type) {}; /** * @type {!WebAssembly.Tag} */ WebAssembly.JSTag; /** * @record */ function WebAssemblyExceptionOptions() {}; /** * @type {undefined|boolean} */ WebAssemblyExceptionOptions.prototype.traceStack; /** * @constructor * @param {!WebAssembly.Tag} tag * @param {!Array} payload * @param {WebAssemblyExceptionOptions=} options * @see https://developer.mozilla.org/en-US/docs/WebAssembly/Reference/JavaScript_interface/Exception */ WebAssembly.Exception = function(tag, payload, options) {}; /** * @type {undefined|string} */ WebAssembly.Exception.prototype.stack; /** * @param {!WebAssembly.Tag} exceptionTag * @param {number} index * @return {*} */ WebAssembly.Exception.prototype.getArg = function(exceptionTag, index) {}; /** * @param {!WebAssembly.Tag} exceptionTag * @return {boolean} */ WebAssembly.Exception.prototype.is = function(exceptionTag) {}; /** * @param {!BufferSource|!WebAssembly.Module} bytesOrModuleObject * @param {!WebAssembly.Imports=} opt_importObject * @param {!WebAssembly.WebAssemblyCompileOptions=} opt_options * @return {!Promise<!WebAssembly.WebAssemblyInstantiatedSource|!WebAssembly.Instance>} * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate */ WebAssembly.instantiate = function( bytesOrModuleObject, opt_importObject, opt_options) {}; /** * @param {!Promise<!Response>|!Response} source * @param {!WebAssembly.Imports=} opt_importObject * @param {!WebAssembly.WebAssemblyCompileOptions=} opt_options * @return {!Promise<!WebAssembly.WebAssemblyInstantiatedSource>} * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming */ WebAssembly.instantiateStreaming = function( source, opt_importObject, opt_options) {}; /** * @param {!BufferSource} bytes * @param {!WebAssembly.WebAssemblyCompileOptions=} opt_options * @return {!Promise<!WebAssembly.Module>} * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile */ WebAssembly.compile = function(bytes, opt_options) {}; /** * @param {!Promise<!Response>|!Response} source * @param {!WebAssembly.WebAssemblyCompileOptions=} opt_options * @return {!Promise<!WebAssembly.Module>} * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming */ WebAssembly.compileStreaming = function(source, opt_options) {}; /** * @param {!BufferSource} bytes * @param {!WebAssembly.WebAssemblyCompileOptions=} opt_options * @return {boolean} * @nosideeffects * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/validate */ WebAssembly.validate = function(bytes, opt_options) {}; /** * @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) {}; WebAssembly.Instance.prototype.exports; /** * @param {number} delta * @return {number} */ WebAssembly.Memory.prototype.grow = function(delta) {}; /** * @return {!ArrayBuffer} */ WebAssembly.Memory.prototype.toFixedLengthBuffer = function() {}; /** * @return {!ArrayBuffer} */ WebAssembly.Memory.prototype.toResizableBuffer = function() {}; /** * @type {!ArrayBuffer} */ WebAssembly.Memory.prototype.buffer; /** * @param {!WebAssembly.AddressValue} delta * @param {*=} opt_value * @return {!WebAssembly.AddressValue} */ WebAssembly.Table.prototype.grow = function(delta, opt_value) {}; /** * @type {number} */ WebAssembly.Table.prototype.length; /** @typedef {function(...)} */ var TableFunction; /** * @param {number} index * @return {TableFunction} */ WebAssembly.Table.prototype.get = function(index) {}; /** * @param {number} index * @param {?TableFunction} value * @return {undefined} */ WebAssembly.Table.prototype.set = function(index, value) {}; /** * @typedef {string} * Valid values: 'i32', 'i64'. */ WebAssembly.AddressType; /** * @typedef {number} */ WebAssembly.AddressValue; /** * @typedef {{ * anyfunc: !Function, * externref: ?, * f32: number, * f64: number, * i32: number, * i64: bigint, * v128: * * }} * Note: This declaration is only here to document the acceptable type strings * ("anyfunc"|"externref"|"f32"|"f64"|"i32"|"i64"|"v128") and to prevent * the properties to be marked as missing externs in d.ts files. */ WebAssembly.ValueTypeMap; /** * @typedef {string} * Really: keyof ValueTypeMap, i.e. ("anyfunc"|"externref"|"f32"|"f64"|"i32"|"i64"|"v128") */ WebAssembly.ValueType; /** * @typedef {string} * Valid values: 'anyfunc', 'externref'. * @see https://webassembly.github.io/spec/js-api/#enumdef-tablekind */ WebAssembly.TableKind; /** * @typedef {{ * mutable: (boolean|undefined), * value: WebAssembly.ValueType * }} */ WebAssembly.GlobalDescriptor; /** * @constructor * @param {WebAssembly.GlobalDescriptor} descriptor * @param {?=} v */ WebAssembly.Global = function(descriptor, v) {}; /** * @type {?} */ WebAssembly.Global.prototype.value; /** * @typedef {!Function|!WebAssembly.Global|!WebAssembly.Memory|!WebAssembly.Table} */ WebAssembly.ExportValue; /** * @typedef {!WebAssembly.ExportValue|number} */ WebAssembly.ImportValue; /** * @typedef {!Object<string, !WebAssembly.ModuleImports>} */ WebAssembly.Imports; /** * @typedef {!Object<string, !WebAssembly.ImportValue>} */ WebAssembly.ModuleImports;