mirror of
https://github.com/github/codeql-action.git
synced 2025-12-24 08:10:06 +08:00
update node_modules
This commit is contained in:
1
node_modules/.bin/atob
generated
vendored
1
node_modules/.bin/atob
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../atob/bin/atob.js
|
|
||||||
1
node_modules/.bin/errno
generated
vendored
1
node_modules/.bin/errno
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../errno/cli.js
|
|
||||||
1
node_modules/.bin/json5
generated
vendored
1
node_modules/.bin/json5
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../json5/lib/cli.js
|
|
||||||
1
node_modules/.bin/miller-rabin
generated
vendored
1
node_modules/.bin/miller-rabin
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../miller-rabin/bin/miller-rabin
|
|
||||||
1
node_modules/.bin/sha.js
generated
vendored
1
node_modules/.bin/sha.js
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../sha.js/bin.js
|
|
||||||
1
node_modules/.bin/terser
generated
vendored
1
node_modules/.bin/terser
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../terser/bin/terser
|
|
||||||
1
node_modules/.bin/webpack
generated
vendored
1
node_modules/.bin/webpack
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../webpack/bin/webpack.js
|
|
||||||
1
node_modules/.bin/webpack-cli
generated
vendored
1
node_modules/.bin/webpack-cli
generated
vendored
@@ -1 +0,0 @@
|
|||||||
../webpack-cli/bin/cli.js
|
|
||||||
21
node_modules/@webassemblyjs/ast/LICENSE
generated
vendored
21
node_modules/@webassemblyjs/ast/LICENSE
generated
vendored
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
167
node_modules/@webassemblyjs/ast/README.md
generated
vendored
167
node_modules/@webassemblyjs/ast/README.md
generated
vendored
@@ -1,167 +0,0 @@
|
|||||||
# @webassemblyjs/ast
|
|
||||||
|
|
||||||
> AST utils for webassemblyjs
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add @webassemblyjs/ast
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
### Traverse
|
|
||||||
|
|
||||||
```js
|
|
||||||
import { traverse } from "@webassemblyjs/ast";
|
|
||||||
|
|
||||||
traverse(ast, {
|
|
||||||
Module(path) {
|
|
||||||
console.log(path.node);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
### Instruction signatures
|
|
||||||
|
|
||||||
```js
|
|
||||||
import { signatures } from "@webassemblyjs/ast";
|
|
||||||
|
|
||||||
console.log(signatures);
|
|
||||||
```
|
|
||||||
|
|
||||||
### Path methods
|
|
||||||
|
|
||||||
- `findParent: NodeLocator`
|
|
||||||
- `replaceWith: Node => void`
|
|
||||||
- `remove: () => void`
|
|
||||||
- `insertBefore: Node => void`
|
|
||||||
- `insertAfter: Node => void`
|
|
||||||
- `stop: () => void`
|
|
||||||
|
|
||||||
### AST utils
|
|
||||||
|
|
||||||
- function `module(id, fields, metadata)`
|
|
||||||
- function `moduleMetadata(sections, functionNames, localNames)`
|
|
||||||
- function `moduleNameMetadata(value)`
|
|
||||||
- function `functionNameMetadata(value, index)`
|
|
||||||
- function `localNameMetadata(value, localIndex, functionIndex)`
|
|
||||||
- function `binaryModule(id, blob)`
|
|
||||||
- function `quoteModule(id, string)`
|
|
||||||
- function `sectionMetadata(section, startOffset, size, vectorOfSize)`
|
|
||||||
- function `loopInstruction(label, resulttype, instr)`
|
|
||||||
- function `instruction(id, args, namedArgs)`
|
|
||||||
- function `objectInstruction(id, object, args, namedArgs)`
|
|
||||||
- function `ifInstruction(testLabel, test, result, consequent, alternate)`
|
|
||||||
- function `stringLiteral(value)`
|
|
||||||
- function `numberLiteralFromRaw(value, raw)`
|
|
||||||
- function `longNumberLiteral(value, raw)`
|
|
||||||
- function `floatLiteral(value, nan, inf, raw)`
|
|
||||||
- function `elem(table, offset, funcs)`
|
|
||||||
- function `indexInFuncSection(index)`
|
|
||||||
- function `valtypeLiteral(name)`
|
|
||||||
- function `typeInstruction(id, functype)`
|
|
||||||
- function `start(index)`
|
|
||||||
- function `globalType(valtype, mutability)`
|
|
||||||
- function `leadingComment(value)`
|
|
||||||
- function `blockComment(value)`
|
|
||||||
- function `data(memoryIndex, offset, init)`
|
|
||||||
- function `global(globalType, init, name)`
|
|
||||||
- function `table(elementType, limits, name, elements)`
|
|
||||||
- function `memory(limits, id)`
|
|
||||||
- function `funcImportDescr(id, signature)`
|
|
||||||
- function `moduleImport(module, name, descr)`
|
|
||||||
- function `moduleExportDescr(exportType, id)`
|
|
||||||
- function `moduleExport(name, descr)`
|
|
||||||
- function `limit(min, max)`
|
|
||||||
- function `signature(params, results)`
|
|
||||||
- function `program(body)`
|
|
||||||
- function `identifier(value, raw)`
|
|
||||||
- function `blockInstruction(label, instr, result)`
|
|
||||||
- function `callInstruction(index, instrArgs)`
|
|
||||||
- function `callIndirectInstruction(signature, intrs)`
|
|
||||||
- function `byteArray(values)`
|
|
||||||
- function `func(name, signature, body, isExternal, metadata)`
|
|
||||||
- Constant`isModule`
|
|
||||||
- Constant`isModuleMetadata`
|
|
||||||
- Constant`isModuleNameMetadata`
|
|
||||||
- Constant`isFunctionNameMetadata`
|
|
||||||
- Constant`isLocalNameMetadata`
|
|
||||||
- Constant`isBinaryModule`
|
|
||||||
- Constant`isQuoteModule`
|
|
||||||
- Constant`isSectionMetadata`
|
|
||||||
- Constant`isLoopInstruction`
|
|
||||||
- Constant`isInstruction`
|
|
||||||
- Constant`isObjectInstruction`
|
|
||||||
- Constant`isIfInstruction`
|
|
||||||
- Constant`isStringLiteral`
|
|
||||||
- Constant`isNumberLiteral`
|
|
||||||
- Constant`isLongNumberLiteral`
|
|
||||||
- Constant`isFloatLiteral`
|
|
||||||
- Constant`isElem`
|
|
||||||
- Constant`isIndexInFuncSection`
|
|
||||||
- Constant`isValtypeLiteral`
|
|
||||||
- Constant`isTypeInstruction`
|
|
||||||
- Constant`isStart`
|
|
||||||
- Constant`isGlobalType`
|
|
||||||
- Constant`isLeadingComment`
|
|
||||||
- Constant`isBlockComment`
|
|
||||||
- Constant`isData`
|
|
||||||
- Constant`isGlobal`
|
|
||||||
- Constant`isTable`
|
|
||||||
- Constant`isMemory`
|
|
||||||
- Constant`isFuncImportDescr`
|
|
||||||
- Constant`isModuleImport`
|
|
||||||
- Constant`isModuleExportDescr`
|
|
||||||
- Constant`isModuleExport`
|
|
||||||
- Constant`isLimit`
|
|
||||||
- Constant`isSignature`
|
|
||||||
- Constant`isProgram`
|
|
||||||
- Constant`isIdentifier`
|
|
||||||
- Constant`isBlockInstruction`
|
|
||||||
- Constant`isCallInstruction`
|
|
||||||
- Constant`isCallIndirectInstruction`
|
|
||||||
- Constant`isByteArray`
|
|
||||||
- Constant`isFunc`
|
|
||||||
- Constant`assertModule`
|
|
||||||
- Constant`assertModuleMetadata`
|
|
||||||
- Constant`assertModuleNameMetadata`
|
|
||||||
- Constant`assertFunctionNameMetadata`
|
|
||||||
- Constant`assertLocalNameMetadata`
|
|
||||||
- Constant`assertBinaryModule`
|
|
||||||
- Constant`assertQuoteModule`
|
|
||||||
- Constant`assertSectionMetadata`
|
|
||||||
- Constant`assertLoopInstruction`
|
|
||||||
- Constant`assertInstruction`
|
|
||||||
- Constant`assertObjectInstruction`
|
|
||||||
- Constant`assertIfInstruction`
|
|
||||||
- Constant`assertStringLiteral`
|
|
||||||
- Constant`assertNumberLiteral`
|
|
||||||
- Constant`assertLongNumberLiteral`
|
|
||||||
- Constant`assertFloatLiteral`
|
|
||||||
- Constant`assertElem`
|
|
||||||
- Constant`assertIndexInFuncSection`
|
|
||||||
- Constant`assertValtypeLiteral`
|
|
||||||
- Constant`assertTypeInstruction`
|
|
||||||
- Constant`assertStart`
|
|
||||||
- Constant`assertGlobalType`
|
|
||||||
- Constant`assertLeadingComment`
|
|
||||||
- Constant`assertBlockComment`
|
|
||||||
- Constant`assertData`
|
|
||||||
- Constant`assertGlobal`
|
|
||||||
- Constant`assertTable`
|
|
||||||
- Constant`assertMemory`
|
|
||||||
- Constant`assertFuncImportDescr`
|
|
||||||
- Constant`assertModuleImport`
|
|
||||||
- Constant`assertModuleExportDescr`
|
|
||||||
- Constant`assertModuleExport`
|
|
||||||
- Constant`assertLimit`
|
|
||||||
- Constant`assertSignature`
|
|
||||||
- Constant`assertProgram`
|
|
||||||
- Constant`assertIdentifier`
|
|
||||||
- Constant`assertBlockInstruction`
|
|
||||||
- Constant`assertCallInstruction`
|
|
||||||
- Constant`assertCallIndirectInstruction`
|
|
||||||
- Constant`assertByteArray`
|
|
||||||
- Constant`assertFunc`
|
|
||||||
|
|
||||||
10
node_modules/@webassemblyjs/ast/esm/clone.js
generated
vendored
10
node_modules/@webassemblyjs/ast/esm/clone.js
generated
vendored
@@ -1,10 +0,0 @@
|
|||||||
export function cloneNode(n) {
|
|
||||||
// $FlowIgnore
|
|
||||||
var newObj = {};
|
|
||||||
|
|
||||||
for (var k in n) {
|
|
||||||
newObj[k] = n[k];
|
|
||||||
}
|
|
||||||
|
|
||||||
return newObj;
|
|
||||||
}
|
|
||||||
663
node_modules/@webassemblyjs/ast/esm/definitions.js
generated
vendored
663
node_modules/@webassemblyjs/ast/esm/definitions.js
generated
vendored
@@ -1,663 +0,0 @@
|
|||||||
var definitions = {};
|
|
||||||
|
|
||||||
function defineType(typeName, metadata) {
|
|
||||||
definitions[typeName] = metadata;
|
|
||||||
}
|
|
||||||
|
|
||||||
defineType("Module", {
|
|
||||||
spec: {
|
|
||||||
wasm: "https://webassembly.github.io/spec/core/binary/modules.html#binary-module",
|
|
||||||
wat: "https://webassembly.github.io/spec/core/text/modules.html#text-module"
|
|
||||||
},
|
|
||||||
doc: "A module consists of a sequence of sections (termed fields in the text format).",
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
maybe: true,
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
fields: {
|
|
||||||
array: true,
|
|
||||||
type: "Node"
|
|
||||||
},
|
|
||||||
metadata: {
|
|
||||||
optional: true,
|
|
||||||
type: "ModuleMetadata"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ModuleMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
sections: {
|
|
||||||
array: true,
|
|
||||||
type: "SectionMetadata"
|
|
||||||
},
|
|
||||||
functionNames: {
|
|
||||||
optional: true,
|
|
||||||
array: true,
|
|
||||||
type: "FunctionNameMetadata"
|
|
||||||
},
|
|
||||||
localNames: {
|
|
||||||
optional: true,
|
|
||||||
array: true,
|
|
||||||
type: "ModuleMetadata"
|
|
||||||
},
|
|
||||||
producers: {
|
|
||||||
optional: true,
|
|
||||||
array: true,
|
|
||||||
type: "ProducersSectionMetadata"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ModuleNameMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("FunctionNameMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
index: {
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("LocalNameMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
localIndex: {
|
|
||||||
type: "number"
|
|
||||||
},
|
|
||||||
functionIndex: {
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("BinaryModule", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
maybe: true,
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
blob: {
|
|
||||||
array: true,
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("QuoteModule", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
maybe: true,
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
string: {
|
|
||||||
array: true,
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("SectionMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
section: {
|
|
||||||
type: "SectionName"
|
|
||||||
},
|
|
||||||
startOffset: {
|
|
||||||
type: "number"
|
|
||||||
},
|
|
||||||
size: {
|
|
||||||
type: "NumberLiteral"
|
|
||||||
},
|
|
||||||
vectorOfSize: {
|
|
||||||
comment: "Size of the vector in the section (if any)",
|
|
||||||
type: "NumberLiteral"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ProducersSectionMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
producers: {
|
|
||||||
array: true,
|
|
||||||
type: "ProducerMetadata"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ProducerMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
language: {
|
|
||||||
type: "ProducerMetadataVersionedName",
|
|
||||||
array: true
|
|
||||||
},
|
|
||||||
processedBy: {
|
|
||||||
type: "ProducerMetadataVersionedName",
|
|
||||||
array: true
|
|
||||||
},
|
|
||||||
sdk: {
|
|
||||||
type: "ProducerMetadataVersionedName",
|
|
||||||
array: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ProducerMetadataVersionedName", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
name: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
version: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
/*
|
|
||||||
Instructions
|
|
||||||
*/
|
|
||||||
|
|
||||||
defineType("LoopInstruction", {
|
|
||||||
unionType: ["Node", "Block", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
constant: true,
|
|
||||||
type: "string",
|
|
||||||
value: "loop"
|
|
||||||
},
|
|
||||||
label: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Identifier"
|
|
||||||
},
|
|
||||||
resulttype: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Valtype"
|
|
||||||
},
|
|
||||||
instr: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Instr", {
|
|
||||||
unionType: ["Node", "Expression", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
object: {
|
|
||||||
optional: true,
|
|
||||||
type: "Valtype"
|
|
||||||
},
|
|
||||||
args: {
|
|
||||||
array: true,
|
|
||||||
type: "Expression"
|
|
||||||
},
|
|
||||||
namedArgs: {
|
|
||||||
optional: true,
|
|
||||||
type: "Object"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("IfInstruction", {
|
|
||||||
unionType: ["Node", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
constant: true,
|
|
||||||
type: "string",
|
|
||||||
value: "if"
|
|
||||||
},
|
|
||||||
testLabel: {
|
|
||||||
comment: "only for WAST",
|
|
||||||
type: "Identifier"
|
|
||||||
},
|
|
||||||
test: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
result: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Valtype"
|
|
||||||
},
|
|
||||||
consequent: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
alternate: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
/*
|
|
||||||
Concrete value types
|
|
||||||
*/
|
|
||||||
|
|
||||||
defineType("StringLiteral", {
|
|
||||||
unionType: ["Node", "Expression"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("NumberLiteral", {
|
|
||||||
unionType: ["Node", "NumericLiteral", "Expression"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "number"
|
|
||||||
},
|
|
||||||
raw: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("LongNumberLiteral", {
|
|
||||||
unionType: ["Node", "NumericLiteral", "Expression"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "LongNumber"
|
|
||||||
},
|
|
||||||
raw: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("FloatLiteral", {
|
|
||||||
unionType: ["Node", "NumericLiteral", "Expression"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "number"
|
|
||||||
},
|
|
||||||
nan: {
|
|
||||||
optional: true,
|
|
||||||
type: "boolean"
|
|
||||||
},
|
|
||||||
inf: {
|
|
||||||
optional: true,
|
|
||||||
type: "boolean"
|
|
||||||
},
|
|
||||||
raw: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Elem", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
table: {
|
|
||||||
type: "Index"
|
|
||||||
},
|
|
||||||
offset: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
funcs: {
|
|
||||||
array: true,
|
|
||||||
type: "Index"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("IndexInFuncSection", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
index: {
|
|
||||||
type: "Index"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ValtypeLiteral", {
|
|
||||||
unionType: ["Node", "Expression"],
|
|
||||||
fields: {
|
|
||||||
name: {
|
|
||||||
type: "Valtype"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("TypeInstruction", {
|
|
||||||
unionType: ["Node", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Index"
|
|
||||||
},
|
|
||||||
functype: {
|
|
||||||
type: "Signature"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Start", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
index: {
|
|
||||||
type: "Index"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("GlobalType", {
|
|
||||||
unionType: ["Node", "ImportDescr"],
|
|
||||||
fields: {
|
|
||||||
valtype: {
|
|
||||||
type: "Valtype"
|
|
||||||
},
|
|
||||||
mutability: {
|
|
||||||
type: "Mutability"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("LeadingComment", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("BlockComment", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Data", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
memoryIndex: {
|
|
||||||
type: "Memidx"
|
|
||||||
},
|
|
||||||
offset: {
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
init: {
|
|
||||||
type: "ByteArray"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Global", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
globalType: {
|
|
||||||
type: "GlobalType"
|
|
||||||
},
|
|
||||||
init: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
name: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Identifier"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Table", {
|
|
||||||
unionType: ["Node", "ImportDescr"],
|
|
||||||
fields: {
|
|
||||||
elementType: {
|
|
||||||
type: "TableElementType"
|
|
||||||
},
|
|
||||||
limits: {
|
|
||||||
assertNodeType: true,
|
|
||||||
type: "Limit"
|
|
||||||
},
|
|
||||||
name: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Identifier"
|
|
||||||
},
|
|
||||||
elements: {
|
|
||||||
array: true,
|
|
||||||
optional: true,
|
|
||||||
type: "Index"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Memory", {
|
|
||||||
unionType: ["Node", "ImportDescr"],
|
|
||||||
fields: {
|
|
||||||
limits: {
|
|
||||||
type: "Limit"
|
|
||||||
},
|
|
||||||
id: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Index"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("FuncImportDescr", {
|
|
||||||
unionType: ["Node", "ImportDescr"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
type: "Identifier"
|
|
||||||
},
|
|
||||||
signature: {
|
|
||||||
type: "Signature"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ModuleImport", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
module: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
name: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
descr: {
|
|
||||||
type: "ImportDescr"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ModuleExportDescr", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
exportType: {
|
|
||||||
type: "ExportDescrType"
|
|
||||||
},
|
|
||||||
id: {
|
|
||||||
type: "Index"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ModuleExport", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
name: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
descr: {
|
|
||||||
type: "ModuleExportDescr"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Limit", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
min: {
|
|
||||||
type: "number"
|
|
||||||
},
|
|
||||||
max: {
|
|
||||||
optional: true,
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Signature", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
params: {
|
|
||||||
array: true,
|
|
||||||
type: "FuncParam"
|
|
||||||
},
|
|
||||||
results: {
|
|
||||||
array: true,
|
|
||||||
type: "Valtype"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Program", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
body: {
|
|
||||||
array: true,
|
|
||||||
type: "Node"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Identifier", {
|
|
||||||
unionType: ["Node", "Expression"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
raw: {
|
|
||||||
optional: true,
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("BlockInstruction", {
|
|
||||||
unionType: ["Node", "Block", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
constant: true,
|
|
||||||
type: "string",
|
|
||||||
value: "block"
|
|
||||||
},
|
|
||||||
label: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Identifier"
|
|
||||||
},
|
|
||||||
instr: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
result: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Valtype"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("CallInstruction", {
|
|
||||||
unionType: ["Node", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
constant: true,
|
|
||||||
type: "string",
|
|
||||||
value: "call"
|
|
||||||
},
|
|
||||||
index: {
|
|
||||||
type: "Index"
|
|
||||||
},
|
|
||||||
instrArgs: {
|
|
||||||
array: true,
|
|
||||||
optional: true,
|
|
||||||
type: "Expression"
|
|
||||||
},
|
|
||||||
numeric: {
|
|
||||||
type: "Index",
|
|
||||||
optional: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("CallIndirectInstruction", {
|
|
||||||
unionType: ["Node", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
constant: true,
|
|
||||||
type: "string",
|
|
||||||
value: "call_indirect"
|
|
||||||
},
|
|
||||||
signature: {
|
|
||||||
type: "SignatureOrTypeRef"
|
|
||||||
},
|
|
||||||
intrs: {
|
|
||||||
array: true,
|
|
||||||
optional: true,
|
|
||||||
type: "Expression"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ByteArray", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
values: {
|
|
||||||
array: true,
|
|
||||||
type: "Byte"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Func", {
|
|
||||||
unionType: ["Node", "Block"],
|
|
||||||
fields: {
|
|
||||||
name: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Index"
|
|
||||||
},
|
|
||||||
signature: {
|
|
||||||
type: "SignatureOrTypeRef"
|
|
||||||
},
|
|
||||||
body: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
isExternal: {
|
|
||||||
comment: "means that it has been imported from the outside js",
|
|
||||||
optional: true,
|
|
||||||
type: "boolean"
|
|
||||||
},
|
|
||||||
metadata: {
|
|
||||||
optional: true,
|
|
||||||
type: "FuncMetadata"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
/**
|
|
||||||
* Intrinsics
|
|
||||||
*/
|
|
||||||
|
|
||||||
defineType("InternalBrUnless", {
|
|
||||||
unionType: ["Node", "Intrinsic"],
|
|
||||||
fields: {
|
|
||||||
target: {
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("InternalGoto", {
|
|
||||||
unionType: ["Node", "Intrinsic"],
|
|
||||||
fields: {
|
|
||||||
target: {
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("InternalCallExtern", {
|
|
||||||
unionType: ["Node", "Intrinsic"],
|
|
||||||
fields: {
|
|
||||||
target: {
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}); // function bodies are terminated by an `end` instruction but are missing a
|
|
||||||
// return instruction
|
|
||||||
//
|
|
||||||
// Since we can't inject a new instruction we are injecting a new instruction.
|
|
||||||
|
|
||||||
defineType("InternalEndAndReturn", {
|
|
||||||
unionType: ["Node", "Intrinsic"],
|
|
||||||
fields: {}
|
|
||||||
});
|
|
||||||
module.exports = definitions;
|
|
||||||
6
node_modules/@webassemblyjs/ast/esm/index.js
generated
vendored
6
node_modules/@webassemblyjs/ast/esm/index.js
generated
vendored
@@ -1,6 +0,0 @@
|
|||||||
export * from "./nodes";
|
|
||||||
export { numberLiteralFromRaw, withLoc, withRaw, funcParam, indexLiteral, memIndexLiteral, instruction, objectInstruction } from "./node-helpers.js";
|
|
||||||
export { traverse } from "./traverse";
|
|
||||||
export { signatures } from "./signatures";
|
|
||||||
export * from "./utils";
|
|
||||||
export { cloneNode } from "./clone";
|
|
||||||
84
node_modules/@webassemblyjs/ast/esm/node-helpers.js
generated
vendored
84
node_modules/@webassemblyjs/ast/esm/node-helpers.js
generated
vendored
@@ -1,84 +0,0 @@
|
|||||||
import { parse32F, parse64F, parse32I, parse64I, parseU32, isNanLiteral, isInfLiteral } from "@webassemblyjs/wast-parser";
|
|
||||||
import { longNumberLiteral, floatLiteral, numberLiteral, instr } from "./nodes";
|
|
||||||
export function numberLiteralFromRaw(rawValue) {
|
|
||||||
var instructionType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "i32";
|
|
||||||
var original = rawValue; // Remove numeric separators _
|
|
||||||
|
|
||||||
if (typeof rawValue === "string") {
|
|
||||||
rawValue = rawValue.replace(/_/g, "");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof rawValue === "number") {
|
|
||||||
return numberLiteral(rawValue, String(original));
|
|
||||||
} else {
|
|
||||||
switch (instructionType) {
|
|
||||||
case "i32":
|
|
||||||
{
|
|
||||||
return numberLiteral(parse32I(rawValue), String(original));
|
|
||||||
}
|
|
||||||
|
|
||||||
case "u32":
|
|
||||||
{
|
|
||||||
return numberLiteral(parseU32(rawValue), String(original));
|
|
||||||
}
|
|
||||||
|
|
||||||
case "i64":
|
|
||||||
{
|
|
||||||
return longNumberLiteral(parse64I(rawValue), String(original));
|
|
||||||
}
|
|
||||||
|
|
||||||
case "f32":
|
|
||||||
{
|
|
||||||
return floatLiteral(parse32F(rawValue), isNanLiteral(rawValue), isInfLiteral(rawValue), String(original));
|
|
||||||
}
|
|
||||||
// f64
|
|
||||||
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
return floatLiteral(parse64F(rawValue), isNanLiteral(rawValue), isInfLiteral(rawValue), String(original));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export function instruction(id) {
|
|
||||||
var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
||||||
var namedArgs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
||||||
return instr(id, undefined, args, namedArgs);
|
|
||||||
}
|
|
||||||
export function objectInstruction(id, object) {
|
|
||||||
var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
||||||
var namedArgs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
||||||
return instr(id, object, args, namedArgs);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Decorators
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function withLoc(n, end, start) {
|
|
||||||
var loc = {
|
|
||||||
start: start,
|
|
||||||
end: end
|
|
||||||
};
|
|
||||||
n.loc = loc;
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
export function withRaw(n, raw) {
|
|
||||||
n.raw = raw;
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
export function funcParam(valtype, id) {
|
|
||||||
return {
|
|
||||||
id: id,
|
|
||||||
valtype: valtype
|
|
||||||
};
|
|
||||||
}
|
|
||||||
export function indexLiteral(value) {
|
|
||||||
// $FlowIgnore
|
|
||||||
var x = numberLiteralFromRaw(value, "u32");
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
export function memIndexLiteral(value) {
|
|
||||||
// $FlowIgnore
|
|
||||||
var x = numberLiteralFromRaw(value, "u32");
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
137
node_modules/@webassemblyjs/ast/esm/node-path.js
generated
vendored
137
node_modules/@webassemblyjs/ast/esm/node-path.js
generated
vendored
@@ -1,137 +0,0 @@
|
|||||||
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
||||||
|
|
||||||
function findParent(_ref, cb) {
|
|
||||||
var parentPath = _ref.parentPath;
|
|
||||||
|
|
||||||
if (parentPath == null) {
|
|
||||||
throw new Error("node is root");
|
|
||||||
}
|
|
||||||
|
|
||||||
var currentPath = parentPath;
|
|
||||||
|
|
||||||
while (cb(currentPath) !== false) {
|
|
||||||
// Hit the root node, stop
|
|
||||||
// $FlowIgnore
|
|
||||||
if (currentPath.parentPath == null) {
|
|
||||||
return null;
|
|
||||||
} // $FlowIgnore
|
|
||||||
|
|
||||||
|
|
||||||
currentPath = currentPath.parentPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
return currentPath.node;
|
|
||||||
}
|
|
||||||
|
|
||||||
function insertBefore(context, newNode) {
|
|
||||||
return insert(context, newNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
function insertAfter(context, newNode) {
|
|
||||||
return insert(context, newNode, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
function insert(_ref2, newNode) {
|
|
||||||
var node = _ref2.node,
|
|
||||||
inList = _ref2.inList,
|
|
||||||
parentPath = _ref2.parentPath,
|
|
||||||
parentKey = _ref2.parentKey;
|
|
||||||
var indexOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
||||||
|
|
||||||
if (!inList) {
|
|
||||||
throw new Error('inList' + " error: " + ("insert can only be used for nodes that are within lists" || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(parentPath != null)) {
|
|
||||||
throw new Error('parentPath != null' + " error: " + ("Can not remove root node" || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// $FlowIgnore
|
|
||||||
var parentList = parentPath.node[parentKey];
|
|
||||||
var indexInList = parentList.findIndex(function (n) {
|
|
||||||
return n === node;
|
|
||||||
});
|
|
||||||
parentList.splice(indexInList + indexOffset, 0, newNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
function remove(_ref3) {
|
|
||||||
var node = _ref3.node,
|
|
||||||
parentKey = _ref3.parentKey,
|
|
||||||
parentPath = _ref3.parentPath;
|
|
||||||
|
|
||||||
if (!(parentPath != null)) {
|
|
||||||
throw new Error('parentPath != null' + " error: " + ("Can not remove root node" || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// $FlowIgnore
|
|
||||||
var parentNode = parentPath.node; // $FlowIgnore
|
|
||||||
|
|
||||||
var parentProperty = parentNode[parentKey];
|
|
||||||
|
|
||||||
if (Array.isArray(parentProperty)) {
|
|
||||||
// $FlowIgnore
|
|
||||||
parentNode[parentKey] = parentProperty.filter(function (n) {
|
|
||||||
return n !== node;
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// $FlowIgnore
|
|
||||||
delete parentNode[parentKey];
|
|
||||||
}
|
|
||||||
|
|
||||||
node._deleted = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function stop(context) {
|
|
||||||
context.shouldStop = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function replaceWith(context, newNode) {
|
|
||||||
// $FlowIgnore
|
|
||||||
var parentNode = context.parentPath.node; // $FlowIgnore
|
|
||||||
|
|
||||||
var parentProperty = parentNode[context.parentKey];
|
|
||||||
|
|
||||||
if (Array.isArray(parentProperty)) {
|
|
||||||
var indexInList = parentProperty.findIndex(function (n) {
|
|
||||||
return n === context.node;
|
|
||||||
});
|
|
||||||
parentProperty.splice(indexInList, 1, newNode);
|
|
||||||
} else {
|
|
||||||
// $FlowIgnore
|
|
||||||
parentNode[context.parentKey] = newNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
context.node._deleted = true;
|
|
||||||
context.node = newNode;
|
|
||||||
} // bind the context to the first argument of node operations
|
|
||||||
|
|
||||||
|
|
||||||
function bindNodeOperations(operations, context) {
|
|
||||||
var keys = Object.keys(operations);
|
|
||||||
var boundOperations = {};
|
|
||||||
keys.forEach(function (key) {
|
|
||||||
boundOperations[key] = operations[key].bind(null, context);
|
|
||||||
});
|
|
||||||
return boundOperations;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createPathOperations(context) {
|
|
||||||
// $FlowIgnore
|
|
||||||
return bindNodeOperations({
|
|
||||||
findParent: findParent,
|
|
||||||
replaceWith: replaceWith,
|
|
||||||
remove: remove,
|
|
||||||
insertBefore: insertBefore,
|
|
||||||
insertAfter: insertAfter,
|
|
||||||
stop: stop
|
|
||||||
}, context);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function createPath(context) {
|
|
||||||
var path = _extends({}, context); // $FlowIgnore
|
|
||||||
|
|
||||||
|
|
||||||
Object.assign(path, createPathOperations(path)); // $FlowIgnore
|
|
||||||
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
915
node_modules/@webassemblyjs/ast/esm/nodes.js
generated
vendored
915
node_modules/@webassemblyjs/ast/esm/nodes.js
generated
vendored
@@ -1,915 +0,0 @@
|
|||||||
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
||||||
|
|
||||||
// THIS FILE IS AUTOGENERATED
|
|
||||||
// see scripts/generateNodeUtils.js
|
|
||||||
function isTypeOf(t) {
|
|
||||||
return function (n) {
|
|
||||||
return n.type === t;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function assertTypeOf(t) {
|
|
||||||
return function (n) {
|
|
||||||
return function () {
|
|
||||||
if (!(n.type === t)) {
|
|
||||||
throw new Error('n.type === t' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
}();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function module(id, fields, metadata) {
|
|
||||||
if (id !== null && id !== undefined) {
|
|
||||||
if (!(typeof id === "string")) {
|
|
||||||
throw new Error('typeof id === "string"' + " error: " + ("Argument id must be of type string, given: " + _typeof(id) || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(fields) === "object" && typeof fields.length !== "undefined")) {
|
|
||||||
throw new Error('typeof fields === "object" && typeof fields.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "Module",
|
|
||||||
id: id,
|
|
||||||
fields: fields
|
|
||||||
};
|
|
||||||
|
|
||||||
if (typeof metadata !== "undefined") {
|
|
||||||
node.metadata = metadata;
|
|
||||||
}
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function moduleMetadata(sections, functionNames, localNames, producers) {
|
|
||||||
if (!(_typeof(sections) === "object" && typeof sections.length !== "undefined")) {
|
|
||||||
throw new Error('typeof sections === "object" && typeof sections.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (functionNames !== null && functionNames !== undefined) {
|
|
||||||
if (!(_typeof(functionNames) === "object" && typeof functionNames.length !== "undefined")) {
|
|
||||||
throw new Error('typeof functionNames === "object" && typeof functionNames.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (localNames !== null && localNames !== undefined) {
|
|
||||||
if (!(_typeof(localNames) === "object" && typeof localNames.length !== "undefined")) {
|
|
||||||
throw new Error('typeof localNames === "object" && typeof localNames.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (producers !== null && producers !== undefined) {
|
|
||||||
if (!(_typeof(producers) === "object" && typeof producers.length !== "undefined")) {
|
|
||||||
throw new Error('typeof producers === "object" && typeof producers.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "ModuleMetadata",
|
|
||||||
sections: sections
|
|
||||||
};
|
|
||||||
|
|
||||||
if (typeof functionNames !== "undefined" && functionNames.length > 0) {
|
|
||||||
node.functionNames = functionNames;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof localNames !== "undefined" && localNames.length > 0) {
|
|
||||||
node.localNames = localNames;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof producers !== "undefined" && producers.length > 0) {
|
|
||||||
node.producers = producers;
|
|
||||||
}
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function moduleNameMetadata(value) {
|
|
||||||
if (!(typeof value === "string")) {
|
|
||||||
throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "ModuleNameMetadata",
|
|
||||||
value: value
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function functionNameMetadata(value, index) {
|
|
||||||
if (!(typeof value === "string")) {
|
|
||||||
throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(typeof index === "number")) {
|
|
||||||
throw new Error('typeof index === "number"' + " error: " + ("Argument index must be of type number, given: " + _typeof(index) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "FunctionNameMetadata",
|
|
||||||
value: value,
|
|
||||||
index: index
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function localNameMetadata(value, localIndex, functionIndex) {
|
|
||||||
if (!(typeof value === "string")) {
|
|
||||||
throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(typeof localIndex === "number")) {
|
|
||||||
throw new Error('typeof localIndex === "number"' + " error: " + ("Argument localIndex must be of type number, given: " + _typeof(localIndex) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(typeof functionIndex === "number")) {
|
|
||||||
throw new Error('typeof functionIndex === "number"' + " error: " + ("Argument functionIndex must be of type number, given: " + _typeof(functionIndex) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "LocalNameMetadata",
|
|
||||||
value: value,
|
|
||||||
localIndex: localIndex,
|
|
||||||
functionIndex: functionIndex
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function binaryModule(id, blob) {
|
|
||||||
if (id !== null && id !== undefined) {
|
|
||||||
if (!(typeof id === "string")) {
|
|
||||||
throw new Error('typeof id === "string"' + " error: " + ("Argument id must be of type string, given: " + _typeof(id) || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(blob) === "object" && typeof blob.length !== "undefined")) {
|
|
||||||
throw new Error('typeof blob === "object" && typeof blob.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "BinaryModule",
|
|
||||||
id: id,
|
|
||||||
blob: blob
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function quoteModule(id, string) {
|
|
||||||
if (id !== null && id !== undefined) {
|
|
||||||
if (!(typeof id === "string")) {
|
|
||||||
throw new Error('typeof id === "string"' + " error: " + ("Argument id must be of type string, given: " + _typeof(id) || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(string) === "object" && typeof string.length !== "undefined")) {
|
|
||||||
throw new Error('typeof string === "object" && typeof string.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "QuoteModule",
|
|
||||||
id: id,
|
|
||||||
string: string
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function sectionMetadata(section, startOffset, size, vectorOfSize) {
|
|
||||||
if (!(typeof startOffset === "number")) {
|
|
||||||
throw new Error('typeof startOffset === "number"' + " error: " + ("Argument startOffset must be of type number, given: " + _typeof(startOffset) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "SectionMetadata",
|
|
||||||
section: section,
|
|
||||||
startOffset: startOffset,
|
|
||||||
size: size,
|
|
||||||
vectorOfSize: vectorOfSize
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function producersSectionMetadata(producers) {
|
|
||||||
if (!(_typeof(producers) === "object" && typeof producers.length !== "undefined")) {
|
|
||||||
throw new Error('typeof producers === "object" && typeof producers.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "ProducersSectionMetadata",
|
|
||||||
producers: producers
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function producerMetadata(language, processedBy, sdk) {
|
|
||||||
if (!(_typeof(language) === "object" && typeof language.length !== "undefined")) {
|
|
||||||
throw new Error('typeof language === "object" && typeof language.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(processedBy) === "object" && typeof processedBy.length !== "undefined")) {
|
|
||||||
throw new Error('typeof processedBy === "object" && typeof processedBy.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(sdk) === "object" && typeof sdk.length !== "undefined")) {
|
|
||||||
throw new Error('typeof sdk === "object" && typeof sdk.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "ProducerMetadata",
|
|
||||||
language: language,
|
|
||||||
processedBy: processedBy,
|
|
||||||
sdk: sdk
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function producerMetadataVersionedName(name, version) {
|
|
||||||
if (!(typeof name === "string")) {
|
|
||||||
throw new Error('typeof name === "string"' + " error: " + ("Argument name must be of type string, given: " + _typeof(name) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(typeof version === "string")) {
|
|
||||||
throw new Error('typeof version === "string"' + " error: " + ("Argument version must be of type string, given: " + _typeof(version) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "ProducerMetadataVersionedName",
|
|
||||||
name: name,
|
|
||||||
version: version
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function loopInstruction(label, resulttype, instr) {
|
|
||||||
if (!(_typeof(instr) === "object" && typeof instr.length !== "undefined")) {
|
|
||||||
throw new Error('typeof instr === "object" && typeof instr.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "LoopInstruction",
|
|
||||||
id: "loop",
|
|
||||||
label: label,
|
|
||||||
resulttype: resulttype,
|
|
||||||
instr: instr
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function instr(id, object, args, namedArgs) {
|
|
||||||
if (!(typeof id === "string")) {
|
|
||||||
throw new Error('typeof id === "string"' + " error: " + ("Argument id must be of type string, given: " + _typeof(id) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(args) === "object" && typeof args.length !== "undefined")) {
|
|
||||||
throw new Error('typeof args === "object" && typeof args.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "Instr",
|
|
||||||
id: id,
|
|
||||||
args: args
|
|
||||||
};
|
|
||||||
|
|
||||||
if (typeof object !== "undefined") {
|
|
||||||
node.object = object;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof namedArgs !== "undefined" && Object.keys(namedArgs).length !== 0) {
|
|
||||||
node.namedArgs = namedArgs;
|
|
||||||
}
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function ifInstruction(testLabel, test, result, consequent, alternate) {
|
|
||||||
if (!(_typeof(test) === "object" && typeof test.length !== "undefined")) {
|
|
||||||
throw new Error('typeof test === "object" && typeof test.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(consequent) === "object" && typeof consequent.length !== "undefined")) {
|
|
||||||
throw new Error('typeof consequent === "object" && typeof consequent.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(alternate) === "object" && typeof alternate.length !== "undefined")) {
|
|
||||||
throw new Error('typeof alternate === "object" && typeof alternate.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "IfInstruction",
|
|
||||||
id: "if",
|
|
||||||
testLabel: testLabel,
|
|
||||||
test: test,
|
|
||||||
result: result,
|
|
||||||
consequent: consequent,
|
|
||||||
alternate: alternate
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function stringLiteral(value) {
|
|
||||||
if (!(typeof value === "string")) {
|
|
||||||
throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "StringLiteral",
|
|
||||||
value: value
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function numberLiteral(value, raw) {
|
|
||||||
if (!(typeof value === "number")) {
|
|
||||||
throw new Error('typeof value === "number"' + " error: " + ("Argument value must be of type number, given: " + _typeof(value) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(typeof raw === "string")) {
|
|
||||||
throw new Error('typeof raw === "string"' + " error: " + ("Argument raw must be of type string, given: " + _typeof(raw) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "NumberLiteral",
|
|
||||||
value: value,
|
|
||||||
raw: raw
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function longNumberLiteral(value, raw) {
|
|
||||||
if (!(typeof raw === "string")) {
|
|
||||||
throw new Error('typeof raw === "string"' + " error: " + ("Argument raw must be of type string, given: " + _typeof(raw) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "LongNumberLiteral",
|
|
||||||
value: value,
|
|
||||||
raw: raw
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function floatLiteral(value, nan, inf, raw) {
|
|
||||||
if (!(typeof value === "number")) {
|
|
||||||
throw new Error('typeof value === "number"' + " error: " + ("Argument value must be of type number, given: " + _typeof(value) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nan !== null && nan !== undefined) {
|
|
||||||
if (!(typeof nan === "boolean")) {
|
|
||||||
throw new Error('typeof nan === "boolean"' + " error: " + ("Argument nan must be of type boolean, given: " + _typeof(nan) || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (inf !== null && inf !== undefined) {
|
|
||||||
if (!(typeof inf === "boolean")) {
|
|
||||||
throw new Error('typeof inf === "boolean"' + " error: " + ("Argument inf must be of type boolean, given: " + _typeof(inf) || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(typeof raw === "string")) {
|
|
||||||
throw new Error('typeof raw === "string"' + " error: " + ("Argument raw must be of type string, given: " + _typeof(raw) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "FloatLiteral",
|
|
||||||
value: value,
|
|
||||||
raw: raw
|
|
||||||
};
|
|
||||||
|
|
||||||
if (nan === true) {
|
|
||||||
node.nan = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (inf === true) {
|
|
||||||
node.inf = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function elem(table, offset, funcs) {
|
|
||||||
if (!(_typeof(offset) === "object" && typeof offset.length !== "undefined")) {
|
|
||||||
throw new Error('typeof offset === "object" && typeof offset.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(funcs) === "object" && typeof funcs.length !== "undefined")) {
|
|
||||||
throw new Error('typeof funcs === "object" && typeof funcs.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "Elem",
|
|
||||||
table: table,
|
|
||||||
offset: offset,
|
|
||||||
funcs: funcs
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function indexInFuncSection(index) {
|
|
||||||
var node = {
|
|
||||||
type: "IndexInFuncSection",
|
|
||||||
index: index
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function valtypeLiteral(name) {
|
|
||||||
var node = {
|
|
||||||
type: "ValtypeLiteral",
|
|
||||||
name: name
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function typeInstruction(id, functype) {
|
|
||||||
var node = {
|
|
||||||
type: "TypeInstruction",
|
|
||||||
id: id,
|
|
||||||
functype: functype
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function start(index) {
|
|
||||||
var node = {
|
|
||||||
type: "Start",
|
|
||||||
index: index
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function globalType(valtype, mutability) {
|
|
||||||
var node = {
|
|
||||||
type: "GlobalType",
|
|
||||||
valtype: valtype,
|
|
||||||
mutability: mutability
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function leadingComment(value) {
|
|
||||||
if (!(typeof value === "string")) {
|
|
||||||
throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "LeadingComment",
|
|
||||||
value: value
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function blockComment(value) {
|
|
||||||
if (!(typeof value === "string")) {
|
|
||||||
throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "BlockComment",
|
|
||||||
value: value
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function data(memoryIndex, offset, init) {
|
|
||||||
var node = {
|
|
||||||
type: "Data",
|
|
||||||
memoryIndex: memoryIndex,
|
|
||||||
offset: offset,
|
|
||||||
init: init
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function global(globalType, init, name) {
|
|
||||||
if (!(_typeof(init) === "object" && typeof init.length !== "undefined")) {
|
|
||||||
throw new Error('typeof init === "object" && typeof init.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "Global",
|
|
||||||
globalType: globalType,
|
|
||||||
init: init,
|
|
||||||
name: name
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function table(elementType, limits, name, elements) {
|
|
||||||
if (!(limits.type === "Limit")) {
|
|
||||||
throw new Error('limits.type === "Limit"' + " error: " + ("Argument limits must be of type Limit, given: " + limits.type || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (elements !== null && elements !== undefined) {
|
|
||||||
if (!(_typeof(elements) === "object" && typeof elements.length !== "undefined")) {
|
|
||||||
throw new Error('typeof elements === "object" && typeof elements.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "Table",
|
|
||||||
elementType: elementType,
|
|
||||||
limits: limits,
|
|
||||||
name: name
|
|
||||||
};
|
|
||||||
|
|
||||||
if (typeof elements !== "undefined" && elements.length > 0) {
|
|
||||||
node.elements = elements;
|
|
||||||
}
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function memory(limits, id) {
|
|
||||||
var node = {
|
|
||||||
type: "Memory",
|
|
||||||
limits: limits,
|
|
||||||
id: id
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function funcImportDescr(id, signature) {
|
|
||||||
var node = {
|
|
||||||
type: "FuncImportDescr",
|
|
||||||
id: id,
|
|
||||||
signature: signature
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function moduleImport(module, name, descr) {
|
|
||||||
if (!(typeof module === "string")) {
|
|
||||||
throw new Error('typeof module === "string"' + " error: " + ("Argument module must be of type string, given: " + _typeof(module) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(typeof name === "string")) {
|
|
||||||
throw new Error('typeof name === "string"' + " error: " + ("Argument name must be of type string, given: " + _typeof(name) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "ModuleImport",
|
|
||||||
module: module,
|
|
||||||
name: name,
|
|
||||||
descr: descr
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function moduleExportDescr(exportType, id) {
|
|
||||||
var node = {
|
|
||||||
type: "ModuleExportDescr",
|
|
||||||
exportType: exportType,
|
|
||||||
id: id
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function moduleExport(name, descr) {
|
|
||||||
if (!(typeof name === "string")) {
|
|
||||||
throw new Error('typeof name === "string"' + " error: " + ("Argument name must be of type string, given: " + _typeof(name) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "ModuleExport",
|
|
||||||
name: name,
|
|
||||||
descr: descr
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function limit(min, max) {
|
|
||||||
if (!(typeof min === "number")) {
|
|
||||||
throw new Error('typeof min === "number"' + " error: " + ("Argument min must be of type number, given: " + _typeof(min) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (max !== null && max !== undefined) {
|
|
||||||
if (!(typeof max === "number")) {
|
|
||||||
throw new Error('typeof max === "number"' + " error: " + ("Argument max must be of type number, given: " + _typeof(max) || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "Limit",
|
|
||||||
min: min
|
|
||||||
};
|
|
||||||
|
|
||||||
if (typeof max !== "undefined") {
|
|
||||||
node.max = max;
|
|
||||||
}
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function signature(params, results) {
|
|
||||||
if (!(_typeof(params) === "object" && typeof params.length !== "undefined")) {
|
|
||||||
throw new Error('typeof params === "object" && typeof params.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(results) === "object" && typeof results.length !== "undefined")) {
|
|
||||||
throw new Error('typeof results === "object" && typeof results.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "Signature",
|
|
||||||
params: params,
|
|
||||||
results: results
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function program(body) {
|
|
||||||
if (!(_typeof(body) === "object" && typeof body.length !== "undefined")) {
|
|
||||||
throw new Error('typeof body === "object" && typeof body.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "Program",
|
|
||||||
body: body
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function identifier(value, raw) {
|
|
||||||
if (!(typeof value === "string")) {
|
|
||||||
throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (raw !== null && raw !== undefined) {
|
|
||||||
if (!(typeof raw === "string")) {
|
|
||||||
throw new Error('typeof raw === "string"' + " error: " + ("Argument raw must be of type string, given: " + _typeof(raw) || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "Identifier",
|
|
||||||
value: value
|
|
||||||
};
|
|
||||||
|
|
||||||
if (typeof raw !== "undefined") {
|
|
||||||
node.raw = raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function blockInstruction(label, instr, result) {
|
|
||||||
if (!(_typeof(instr) === "object" && typeof instr.length !== "undefined")) {
|
|
||||||
throw new Error('typeof instr === "object" && typeof instr.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "BlockInstruction",
|
|
||||||
id: "block",
|
|
||||||
label: label,
|
|
||||||
instr: instr,
|
|
||||||
result: result
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function callInstruction(index, instrArgs, numeric) {
|
|
||||||
if (instrArgs !== null && instrArgs !== undefined) {
|
|
||||||
if (!(_typeof(instrArgs) === "object" && typeof instrArgs.length !== "undefined")) {
|
|
||||||
throw new Error('typeof instrArgs === "object" && typeof instrArgs.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "CallInstruction",
|
|
||||||
id: "call",
|
|
||||||
index: index
|
|
||||||
};
|
|
||||||
|
|
||||||
if (typeof instrArgs !== "undefined" && instrArgs.length > 0) {
|
|
||||||
node.instrArgs = instrArgs;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof numeric !== "undefined") {
|
|
||||||
node.numeric = numeric;
|
|
||||||
}
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function callIndirectInstruction(signature, intrs) {
|
|
||||||
if (intrs !== null && intrs !== undefined) {
|
|
||||||
if (!(_typeof(intrs) === "object" && typeof intrs.length !== "undefined")) {
|
|
||||||
throw new Error('typeof intrs === "object" && typeof intrs.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "CallIndirectInstruction",
|
|
||||||
id: "call_indirect",
|
|
||||||
signature: signature
|
|
||||||
};
|
|
||||||
|
|
||||||
if (typeof intrs !== "undefined" && intrs.length > 0) {
|
|
||||||
node.intrs = intrs;
|
|
||||||
}
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function byteArray(values) {
|
|
||||||
if (!(_typeof(values) === "object" && typeof values.length !== "undefined")) {
|
|
||||||
throw new Error('typeof values === "object" && typeof values.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "ByteArray",
|
|
||||||
values: values
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function func(name, signature, body, isExternal, metadata) {
|
|
||||||
if (!(_typeof(body) === "object" && typeof body.length !== "undefined")) {
|
|
||||||
throw new Error('typeof body === "object" && typeof body.length !== "undefined"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isExternal !== null && isExternal !== undefined) {
|
|
||||||
if (!(typeof isExternal === "boolean")) {
|
|
||||||
throw new Error('typeof isExternal === "boolean"' + " error: " + ("Argument isExternal must be of type boolean, given: " + _typeof(isExternal) || "unknown"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "Func",
|
|
||||||
name: name,
|
|
||||||
signature: signature,
|
|
||||||
body: body
|
|
||||||
};
|
|
||||||
|
|
||||||
if (isExternal === true) {
|
|
||||||
node.isExternal = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof metadata !== "undefined") {
|
|
||||||
node.metadata = metadata;
|
|
||||||
}
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function internalBrUnless(target) {
|
|
||||||
if (!(typeof target === "number")) {
|
|
||||||
throw new Error('typeof target === "number"' + " error: " + ("Argument target must be of type number, given: " + _typeof(target) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "InternalBrUnless",
|
|
||||||
target: target
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function internalGoto(target) {
|
|
||||||
if (!(typeof target === "number")) {
|
|
||||||
throw new Error('typeof target === "number"' + " error: " + ("Argument target must be of type number, given: " + _typeof(target) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "InternalGoto",
|
|
||||||
target: target
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function internalCallExtern(target) {
|
|
||||||
if (!(typeof target === "number")) {
|
|
||||||
throw new Error('typeof target === "number"' + " error: " + ("Argument target must be of type number, given: " + _typeof(target) || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = {
|
|
||||||
type: "InternalCallExtern",
|
|
||||||
target: target
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export function internalEndAndReturn() {
|
|
||||||
var node = {
|
|
||||||
type: "InternalEndAndReturn"
|
|
||||||
};
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
export var isModule = isTypeOf("Module");
|
|
||||||
export var isModuleMetadata = isTypeOf("ModuleMetadata");
|
|
||||||
export var isModuleNameMetadata = isTypeOf("ModuleNameMetadata");
|
|
||||||
export var isFunctionNameMetadata = isTypeOf("FunctionNameMetadata");
|
|
||||||
export var isLocalNameMetadata = isTypeOf("LocalNameMetadata");
|
|
||||||
export var isBinaryModule = isTypeOf("BinaryModule");
|
|
||||||
export var isQuoteModule = isTypeOf("QuoteModule");
|
|
||||||
export var isSectionMetadata = isTypeOf("SectionMetadata");
|
|
||||||
export var isProducersSectionMetadata = isTypeOf("ProducersSectionMetadata");
|
|
||||||
export var isProducerMetadata = isTypeOf("ProducerMetadata");
|
|
||||||
export var isProducerMetadataVersionedName = isTypeOf("ProducerMetadataVersionedName");
|
|
||||||
export var isLoopInstruction = isTypeOf("LoopInstruction");
|
|
||||||
export var isInstr = isTypeOf("Instr");
|
|
||||||
export var isIfInstruction = isTypeOf("IfInstruction");
|
|
||||||
export var isStringLiteral = isTypeOf("StringLiteral");
|
|
||||||
export var isNumberLiteral = isTypeOf("NumberLiteral");
|
|
||||||
export var isLongNumberLiteral = isTypeOf("LongNumberLiteral");
|
|
||||||
export var isFloatLiteral = isTypeOf("FloatLiteral");
|
|
||||||
export var isElem = isTypeOf("Elem");
|
|
||||||
export var isIndexInFuncSection = isTypeOf("IndexInFuncSection");
|
|
||||||
export var isValtypeLiteral = isTypeOf("ValtypeLiteral");
|
|
||||||
export var isTypeInstruction = isTypeOf("TypeInstruction");
|
|
||||||
export var isStart = isTypeOf("Start");
|
|
||||||
export var isGlobalType = isTypeOf("GlobalType");
|
|
||||||
export var isLeadingComment = isTypeOf("LeadingComment");
|
|
||||||
export var isBlockComment = isTypeOf("BlockComment");
|
|
||||||
export var isData = isTypeOf("Data");
|
|
||||||
export var isGlobal = isTypeOf("Global");
|
|
||||||
export var isTable = isTypeOf("Table");
|
|
||||||
export var isMemory = isTypeOf("Memory");
|
|
||||||
export var isFuncImportDescr = isTypeOf("FuncImportDescr");
|
|
||||||
export var isModuleImport = isTypeOf("ModuleImport");
|
|
||||||
export var isModuleExportDescr = isTypeOf("ModuleExportDescr");
|
|
||||||
export var isModuleExport = isTypeOf("ModuleExport");
|
|
||||||
export var isLimit = isTypeOf("Limit");
|
|
||||||
export var isSignature = isTypeOf("Signature");
|
|
||||||
export var isProgram = isTypeOf("Program");
|
|
||||||
export var isIdentifier = isTypeOf("Identifier");
|
|
||||||
export var isBlockInstruction = isTypeOf("BlockInstruction");
|
|
||||||
export var isCallInstruction = isTypeOf("CallInstruction");
|
|
||||||
export var isCallIndirectInstruction = isTypeOf("CallIndirectInstruction");
|
|
||||||
export var isByteArray = isTypeOf("ByteArray");
|
|
||||||
export var isFunc = isTypeOf("Func");
|
|
||||||
export var isInternalBrUnless = isTypeOf("InternalBrUnless");
|
|
||||||
export var isInternalGoto = isTypeOf("InternalGoto");
|
|
||||||
export var isInternalCallExtern = isTypeOf("InternalCallExtern");
|
|
||||||
export var isInternalEndAndReturn = isTypeOf("InternalEndAndReturn");
|
|
||||||
export var isNode = function isNode(node) {
|
|
||||||
return isModule(node) || isModuleMetadata(node) || isModuleNameMetadata(node) || isFunctionNameMetadata(node) || isLocalNameMetadata(node) || isBinaryModule(node) || isQuoteModule(node) || isSectionMetadata(node) || isProducersSectionMetadata(node) || isProducerMetadata(node) || isProducerMetadataVersionedName(node) || isLoopInstruction(node) || isInstr(node) || isIfInstruction(node) || isStringLiteral(node) || isNumberLiteral(node) || isLongNumberLiteral(node) || isFloatLiteral(node) || isElem(node) || isIndexInFuncSection(node) || isValtypeLiteral(node) || isTypeInstruction(node) || isStart(node) || isGlobalType(node) || isLeadingComment(node) || isBlockComment(node) || isData(node) || isGlobal(node) || isTable(node) || isMemory(node) || isFuncImportDescr(node) || isModuleImport(node) || isModuleExportDescr(node) || isModuleExport(node) || isLimit(node) || isSignature(node) || isProgram(node) || isIdentifier(node) || isBlockInstruction(node) || isCallInstruction(node) || isCallIndirectInstruction(node) || isByteArray(node) || isFunc(node) || isInternalBrUnless(node) || isInternalGoto(node) || isInternalCallExtern(node) || isInternalEndAndReturn(node);
|
|
||||||
};
|
|
||||||
export var isBlock = function isBlock(node) {
|
|
||||||
return isLoopInstruction(node) || isBlockInstruction(node) || isFunc(node);
|
|
||||||
};
|
|
||||||
export var isInstruction = function isInstruction(node) {
|
|
||||||
return isLoopInstruction(node) || isInstr(node) || isIfInstruction(node) || isTypeInstruction(node) || isBlockInstruction(node) || isCallInstruction(node) || isCallIndirectInstruction(node);
|
|
||||||
};
|
|
||||||
export var isExpression = function isExpression(node) {
|
|
||||||
return isInstr(node) || isStringLiteral(node) || isNumberLiteral(node) || isLongNumberLiteral(node) || isFloatLiteral(node) || isValtypeLiteral(node) || isIdentifier(node);
|
|
||||||
};
|
|
||||||
export var isNumericLiteral = function isNumericLiteral(node) {
|
|
||||||
return isNumberLiteral(node) || isLongNumberLiteral(node) || isFloatLiteral(node);
|
|
||||||
};
|
|
||||||
export var isImportDescr = function isImportDescr(node) {
|
|
||||||
return isGlobalType(node) || isTable(node) || isMemory(node) || isFuncImportDescr(node);
|
|
||||||
};
|
|
||||||
export var isIntrinsic = function isIntrinsic(node) {
|
|
||||||
return isInternalBrUnless(node) || isInternalGoto(node) || isInternalCallExtern(node) || isInternalEndAndReturn(node);
|
|
||||||
};
|
|
||||||
export var assertModule = assertTypeOf("Module");
|
|
||||||
export var assertModuleMetadata = assertTypeOf("ModuleMetadata");
|
|
||||||
export var assertModuleNameMetadata = assertTypeOf("ModuleNameMetadata");
|
|
||||||
export var assertFunctionNameMetadata = assertTypeOf("FunctionNameMetadata");
|
|
||||||
export var assertLocalNameMetadata = assertTypeOf("LocalNameMetadata");
|
|
||||||
export var assertBinaryModule = assertTypeOf("BinaryModule");
|
|
||||||
export var assertQuoteModule = assertTypeOf("QuoteModule");
|
|
||||||
export var assertSectionMetadata = assertTypeOf("SectionMetadata");
|
|
||||||
export var assertProducersSectionMetadata = assertTypeOf("ProducersSectionMetadata");
|
|
||||||
export var assertProducerMetadata = assertTypeOf("ProducerMetadata");
|
|
||||||
export var assertProducerMetadataVersionedName = assertTypeOf("ProducerMetadataVersionedName");
|
|
||||||
export var assertLoopInstruction = assertTypeOf("LoopInstruction");
|
|
||||||
export var assertInstr = assertTypeOf("Instr");
|
|
||||||
export var assertIfInstruction = assertTypeOf("IfInstruction");
|
|
||||||
export var assertStringLiteral = assertTypeOf("StringLiteral");
|
|
||||||
export var assertNumberLiteral = assertTypeOf("NumberLiteral");
|
|
||||||
export var assertLongNumberLiteral = assertTypeOf("LongNumberLiteral");
|
|
||||||
export var assertFloatLiteral = assertTypeOf("FloatLiteral");
|
|
||||||
export var assertElem = assertTypeOf("Elem");
|
|
||||||
export var assertIndexInFuncSection = assertTypeOf("IndexInFuncSection");
|
|
||||||
export var assertValtypeLiteral = assertTypeOf("ValtypeLiteral");
|
|
||||||
export var assertTypeInstruction = assertTypeOf("TypeInstruction");
|
|
||||||
export var assertStart = assertTypeOf("Start");
|
|
||||||
export var assertGlobalType = assertTypeOf("GlobalType");
|
|
||||||
export var assertLeadingComment = assertTypeOf("LeadingComment");
|
|
||||||
export var assertBlockComment = assertTypeOf("BlockComment");
|
|
||||||
export var assertData = assertTypeOf("Data");
|
|
||||||
export var assertGlobal = assertTypeOf("Global");
|
|
||||||
export var assertTable = assertTypeOf("Table");
|
|
||||||
export var assertMemory = assertTypeOf("Memory");
|
|
||||||
export var assertFuncImportDescr = assertTypeOf("FuncImportDescr");
|
|
||||||
export var assertModuleImport = assertTypeOf("ModuleImport");
|
|
||||||
export var assertModuleExportDescr = assertTypeOf("ModuleExportDescr");
|
|
||||||
export var assertModuleExport = assertTypeOf("ModuleExport");
|
|
||||||
export var assertLimit = assertTypeOf("Limit");
|
|
||||||
export var assertSignature = assertTypeOf("Signature");
|
|
||||||
export var assertProgram = assertTypeOf("Program");
|
|
||||||
export var assertIdentifier = assertTypeOf("Identifier");
|
|
||||||
export var assertBlockInstruction = assertTypeOf("BlockInstruction");
|
|
||||||
export var assertCallInstruction = assertTypeOf("CallInstruction");
|
|
||||||
export var assertCallIndirectInstruction = assertTypeOf("CallIndirectInstruction");
|
|
||||||
export var assertByteArray = assertTypeOf("ByteArray");
|
|
||||||
export var assertFunc = assertTypeOf("Func");
|
|
||||||
export var assertInternalBrUnless = assertTypeOf("InternalBrUnless");
|
|
||||||
export var assertInternalGoto = assertTypeOf("InternalGoto");
|
|
||||||
export var assertInternalCallExtern = assertTypeOf("InternalCallExtern");
|
|
||||||
export var assertInternalEndAndReturn = assertTypeOf("InternalEndAndReturn");
|
|
||||||
export var unionTypesMap = {
|
|
||||||
Module: ["Node"],
|
|
||||||
ModuleMetadata: ["Node"],
|
|
||||||
ModuleNameMetadata: ["Node"],
|
|
||||||
FunctionNameMetadata: ["Node"],
|
|
||||||
LocalNameMetadata: ["Node"],
|
|
||||||
BinaryModule: ["Node"],
|
|
||||||
QuoteModule: ["Node"],
|
|
||||||
SectionMetadata: ["Node"],
|
|
||||||
ProducersSectionMetadata: ["Node"],
|
|
||||||
ProducerMetadata: ["Node"],
|
|
||||||
ProducerMetadataVersionedName: ["Node"],
|
|
||||||
LoopInstruction: ["Node", "Block", "Instruction"],
|
|
||||||
Instr: ["Node", "Expression", "Instruction"],
|
|
||||||
IfInstruction: ["Node", "Instruction"],
|
|
||||||
StringLiteral: ["Node", "Expression"],
|
|
||||||
NumberLiteral: ["Node", "NumericLiteral", "Expression"],
|
|
||||||
LongNumberLiteral: ["Node", "NumericLiteral", "Expression"],
|
|
||||||
FloatLiteral: ["Node", "NumericLiteral", "Expression"],
|
|
||||||
Elem: ["Node"],
|
|
||||||
IndexInFuncSection: ["Node"],
|
|
||||||
ValtypeLiteral: ["Node", "Expression"],
|
|
||||||
TypeInstruction: ["Node", "Instruction"],
|
|
||||||
Start: ["Node"],
|
|
||||||
GlobalType: ["Node", "ImportDescr"],
|
|
||||||
LeadingComment: ["Node"],
|
|
||||||
BlockComment: ["Node"],
|
|
||||||
Data: ["Node"],
|
|
||||||
Global: ["Node"],
|
|
||||||
Table: ["Node", "ImportDescr"],
|
|
||||||
Memory: ["Node", "ImportDescr"],
|
|
||||||
FuncImportDescr: ["Node", "ImportDescr"],
|
|
||||||
ModuleImport: ["Node"],
|
|
||||||
ModuleExportDescr: ["Node"],
|
|
||||||
ModuleExport: ["Node"],
|
|
||||||
Limit: ["Node"],
|
|
||||||
Signature: ["Node"],
|
|
||||||
Program: ["Node"],
|
|
||||||
Identifier: ["Node", "Expression"],
|
|
||||||
BlockInstruction: ["Node", "Block", "Instruction"],
|
|
||||||
CallInstruction: ["Node", "Instruction"],
|
|
||||||
CallIndirectInstruction: ["Node", "Instruction"],
|
|
||||||
ByteArray: ["Node"],
|
|
||||||
Func: ["Node", "Block"],
|
|
||||||
InternalBrUnless: ["Node", "Intrinsic"],
|
|
||||||
InternalGoto: ["Node", "Intrinsic"],
|
|
||||||
InternalCallExtern: ["Node", "Intrinsic"],
|
|
||||||
InternalEndAndReturn: ["Node", "Intrinsic"]
|
|
||||||
};
|
|
||||||
export var nodeAndUnionTypes = ["Module", "ModuleMetadata", "ModuleNameMetadata", "FunctionNameMetadata", "LocalNameMetadata", "BinaryModule", "QuoteModule", "SectionMetadata", "ProducersSectionMetadata", "ProducerMetadata", "ProducerMetadataVersionedName", "LoopInstruction", "Instr", "IfInstruction", "StringLiteral", "NumberLiteral", "LongNumberLiteral", "FloatLiteral", "Elem", "IndexInFuncSection", "ValtypeLiteral", "TypeInstruction", "Start", "GlobalType", "LeadingComment", "BlockComment", "Data", "Global", "Table", "Memory", "FuncImportDescr", "ModuleImport", "ModuleExportDescr", "ModuleExport", "Limit", "Signature", "Program", "Identifier", "BlockInstruction", "CallInstruction", "CallIndirectInstruction", "ByteArray", "Func", "InternalBrUnless", "InternalGoto", "InternalCallExtern", "InternalEndAndReturn", "Node", "Block", "Instruction", "Expression", "NumericLiteral", "ImportDescr", "Intrinsic"];
|
|
||||||
199
node_modules/@webassemblyjs/ast/esm/signatures.js
generated
vendored
199
node_modules/@webassemblyjs/ast/esm/signatures.js
generated
vendored
@@ -1,199 +0,0 @@
|
|||||||
function sign(input, output) {
|
|
||||||
return [input, output];
|
|
||||||
}
|
|
||||||
|
|
||||||
var u32 = "u32";
|
|
||||||
var i32 = "i32";
|
|
||||||
var i64 = "i64";
|
|
||||||
var f32 = "f32";
|
|
||||||
var f64 = "f64";
|
|
||||||
|
|
||||||
var vector = function vector(t) {
|
|
||||||
var vecType = [t]; // $FlowIgnore
|
|
||||||
|
|
||||||
vecType.vector = true;
|
|
||||||
return vecType;
|
|
||||||
};
|
|
||||||
|
|
||||||
var controlInstructions = {
|
|
||||||
unreachable: sign([], []),
|
|
||||||
nop: sign([], []),
|
|
||||||
// block ?
|
|
||||||
// loop ?
|
|
||||||
// if ?
|
|
||||||
// if else ?
|
|
||||||
br: sign([u32], []),
|
|
||||||
br_if: sign([u32], []),
|
|
||||||
br_table: sign(vector(u32), []),
|
|
||||||
return: sign([], []),
|
|
||||||
call: sign([u32], []),
|
|
||||||
call_indirect: sign([u32], [])
|
|
||||||
};
|
|
||||||
var parametricInstructions = {
|
|
||||||
drop: sign([], []),
|
|
||||||
select: sign([], [])
|
|
||||||
};
|
|
||||||
var variableInstructions = {
|
|
||||||
get_local: sign([u32], []),
|
|
||||||
set_local: sign([u32], []),
|
|
||||||
tee_local: sign([u32], []),
|
|
||||||
get_global: sign([u32], []),
|
|
||||||
set_global: sign([u32], [])
|
|
||||||
};
|
|
||||||
var memoryInstructions = {
|
|
||||||
"i32.load": sign([u32, u32], [i32]),
|
|
||||||
"i64.load": sign([u32, u32], []),
|
|
||||||
"f32.load": sign([u32, u32], []),
|
|
||||||
"f64.load": sign([u32, u32], []),
|
|
||||||
"i32.load8_s": sign([u32, u32], [i32]),
|
|
||||||
"i32.load8_u": sign([u32, u32], [i32]),
|
|
||||||
"i32.load16_s": sign([u32, u32], [i32]),
|
|
||||||
"i32.load16_u": sign([u32, u32], [i32]),
|
|
||||||
"i64.load8_s": sign([u32, u32], [i64]),
|
|
||||||
"i64.load8_u": sign([u32, u32], [i64]),
|
|
||||||
"i64.load16_s": sign([u32, u32], [i64]),
|
|
||||||
"i64.load16_u": sign([u32, u32], [i64]),
|
|
||||||
"i64.load32_s": sign([u32, u32], [i64]),
|
|
||||||
"i64.load32_u": sign([u32, u32], [i64]),
|
|
||||||
"i32.store": sign([u32, u32], []),
|
|
||||||
"i64.store": sign([u32, u32], []),
|
|
||||||
"f32.store": sign([u32, u32], []),
|
|
||||||
"f64.store": sign([u32, u32], []),
|
|
||||||
"i32.store8": sign([u32, u32], []),
|
|
||||||
"i32.store16": sign([u32, u32], []),
|
|
||||||
"i64.store8": sign([u32, u32], []),
|
|
||||||
"i64.store16": sign([u32, u32], []),
|
|
||||||
"i64.store32": sign([u32, u32], []),
|
|
||||||
current_memory: sign([], []),
|
|
||||||
grow_memory: sign([], [])
|
|
||||||
};
|
|
||||||
var numericInstructions = {
|
|
||||||
"i32.const": sign([i32], [i32]),
|
|
||||||
"i64.const": sign([i64], [i64]),
|
|
||||||
"f32.const": sign([f32], [f32]),
|
|
||||||
"f64.const": sign([f64], [f64]),
|
|
||||||
"i32.eqz": sign([i32], [i32]),
|
|
||||||
"i32.eq": sign([i32, i32], [i32]),
|
|
||||||
"i32.ne": sign([i32, i32], [i32]),
|
|
||||||
"i32.lt_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.lt_u": sign([i32, i32], [i32]),
|
|
||||||
"i32.gt_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.gt_u": sign([i32, i32], [i32]),
|
|
||||||
"i32.le_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.le_u": sign([i32, i32], [i32]),
|
|
||||||
"i32.ge_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.ge_u": sign([i32, i32], [i32]),
|
|
||||||
"i64.eqz": sign([i64], [i64]),
|
|
||||||
"i64.eq": sign([i64, i64], [i32]),
|
|
||||||
"i64.ne": sign([i64, i64], [i32]),
|
|
||||||
"i64.lt_s": sign([i64, i64], [i32]),
|
|
||||||
"i64.lt_u": sign([i64, i64], [i32]),
|
|
||||||
"i64.gt_s": sign([i64, i64], [i32]),
|
|
||||||
"i64.gt_u": sign([i64, i64], [i32]),
|
|
||||||
"i64.le_s": sign([i64, i64], [i32]),
|
|
||||||
"i64.le_u": sign([i64, i64], [i32]),
|
|
||||||
"i64.ge_s": sign([i64, i64], [i32]),
|
|
||||||
"i64.ge_u": sign([i64, i64], [i32]),
|
|
||||||
"f32.eq": sign([f32, f32], [i32]),
|
|
||||||
"f32.ne": sign([f32, f32], [i32]),
|
|
||||||
"f32.lt": sign([f32, f32], [i32]),
|
|
||||||
"f32.gt": sign([f32, f32], [i32]),
|
|
||||||
"f32.le": sign([f32, f32], [i32]),
|
|
||||||
"f32.ge": sign([f32, f32], [i32]),
|
|
||||||
"f64.eq": sign([f64, f64], [i32]),
|
|
||||||
"f64.ne": sign([f64, f64], [i32]),
|
|
||||||
"f64.lt": sign([f64, f64], [i32]),
|
|
||||||
"f64.gt": sign([f64, f64], [i32]),
|
|
||||||
"f64.le": sign([f64, f64], [i32]),
|
|
||||||
"f64.ge": sign([f64, f64], [i32]),
|
|
||||||
"i32.clz": sign([i32], [i32]),
|
|
||||||
"i32.ctz": sign([i32], [i32]),
|
|
||||||
"i32.popcnt": sign([i32], [i32]),
|
|
||||||
"i32.add": sign([i32, i32], [i32]),
|
|
||||||
"i32.sub": sign([i32, i32], [i32]),
|
|
||||||
"i32.mul": sign([i32, i32], [i32]),
|
|
||||||
"i32.div_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.div_u": sign([i32, i32], [i32]),
|
|
||||||
"i32.rem_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.rem_u": sign([i32, i32], [i32]),
|
|
||||||
"i32.and": sign([i32, i32], [i32]),
|
|
||||||
"i32.or": sign([i32, i32], [i32]),
|
|
||||||
"i32.xor": sign([i32, i32], [i32]),
|
|
||||||
"i32.shl": sign([i32, i32], [i32]),
|
|
||||||
"i32.shr_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.shr_u": sign([i32, i32], [i32]),
|
|
||||||
"i32.rotl": sign([i32, i32], [i32]),
|
|
||||||
"i32.rotr": sign([i32, i32], [i32]),
|
|
||||||
"i64.clz": sign([i64], [i64]),
|
|
||||||
"i64.ctz": sign([i64], [i64]),
|
|
||||||
"i64.popcnt": sign([i64], [i64]),
|
|
||||||
"i64.add": sign([i64, i64], [i64]),
|
|
||||||
"i64.sub": sign([i64, i64], [i64]),
|
|
||||||
"i64.mul": sign([i64, i64], [i64]),
|
|
||||||
"i64.div_s": sign([i64, i64], [i64]),
|
|
||||||
"i64.div_u": sign([i64, i64], [i64]),
|
|
||||||
"i64.rem_s": sign([i64, i64], [i64]),
|
|
||||||
"i64.rem_u": sign([i64, i64], [i64]),
|
|
||||||
"i64.and": sign([i64, i64], [i64]),
|
|
||||||
"i64.or": sign([i64, i64], [i64]),
|
|
||||||
"i64.xor": sign([i64, i64], [i64]),
|
|
||||||
"i64.shl": sign([i64, i64], [i64]),
|
|
||||||
"i64.shr_s": sign([i64, i64], [i64]),
|
|
||||||
"i64.shr_u": sign([i64, i64], [i64]),
|
|
||||||
"i64.rotl": sign([i64, i64], [i64]),
|
|
||||||
"i64.rotr": sign([i64, i64], [i64]),
|
|
||||||
"f32.abs": sign([f32], [f32]),
|
|
||||||
"f32.neg": sign([f32], [f32]),
|
|
||||||
"f32.ceil": sign([f32], [f32]),
|
|
||||||
"f32.floor": sign([f32], [f32]),
|
|
||||||
"f32.trunc": sign([f32], [f32]),
|
|
||||||
"f32.nearest": sign([f32], [f32]),
|
|
||||||
"f32.sqrt": sign([f32], [f32]),
|
|
||||||
"f32.add": sign([f32, f32], [f32]),
|
|
||||||
"f32.sub": sign([f32, f32], [f32]),
|
|
||||||
"f32.mul": sign([f32, f32], [f32]),
|
|
||||||
"f32.div": sign([f32, f32], [f32]),
|
|
||||||
"f32.min": sign([f32, f32], [f32]),
|
|
||||||
"f32.max": sign([f32, f32], [f32]),
|
|
||||||
"f32.copysign": sign([f32, f32], [f32]),
|
|
||||||
"f64.abs": sign([f64], [f64]),
|
|
||||||
"f64.neg": sign([f64], [f64]),
|
|
||||||
"f64.ceil": sign([f64], [f64]),
|
|
||||||
"f64.floor": sign([f64], [f64]),
|
|
||||||
"f64.trunc": sign([f64], [f64]),
|
|
||||||
"f64.nearest": sign([f64], [f64]),
|
|
||||||
"f64.sqrt": sign([f64], [f64]),
|
|
||||||
"f64.add": sign([f64, f64], [f64]),
|
|
||||||
"f64.sub": sign([f64, f64], [f64]),
|
|
||||||
"f64.mul": sign([f64, f64], [f64]),
|
|
||||||
"f64.div": sign([f64, f64], [f64]),
|
|
||||||
"f64.min": sign([f64, f64], [f64]),
|
|
||||||
"f64.max": sign([f64, f64], [f64]),
|
|
||||||
"f64.copysign": sign([f64, f64], [f64]),
|
|
||||||
"i32.wrap/i64": sign([i64], [i32]),
|
|
||||||
"i32.trunc_s/f32": sign([f32], [i32]),
|
|
||||||
"i32.trunc_u/f32": sign([f32], [i32]),
|
|
||||||
"i32.trunc_s/f64": sign([f32], [i32]),
|
|
||||||
"i32.trunc_u/f64": sign([f64], [i32]),
|
|
||||||
"i64.extend_s/i32": sign([i32], [i64]),
|
|
||||||
"i64.extend_u/i32": sign([i32], [i64]),
|
|
||||||
"i64.trunc_s/f32": sign([f32], [i64]),
|
|
||||||
"i64.trunc_u/f32": sign([f32], [i64]),
|
|
||||||
"i64.trunc_s/f64": sign([f64], [i64]),
|
|
||||||
"i64.trunc_u/f64": sign([f64], [i64]),
|
|
||||||
"f32.convert_s/i32": sign([i32], [f32]),
|
|
||||||
"f32.convert_u/i32": sign([i32], [f32]),
|
|
||||||
"f32.convert_s/i64": sign([i64], [f32]),
|
|
||||||
"f32.convert_u/i64": sign([i64], [f32]),
|
|
||||||
"f32.demote/f64": sign([f64], [f32]),
|
|
||||||
"f64.convert_s/i32": sign([i32], [f64]),
|
|
||||||
"f64.convert_u/i32": sign([i32], [f64]),
|
|
||||||
"f64.convert_s/i64": sign([i64], [f64]),
|
|
||||||
"f64.convert_u/i64": sign([i64], [f64]),
|
|
||||||
"f64.promote/f32": sign([f32], [f64]),
|
|
||||||
"i32.reinterpret/f32": sign([f32], [i32]),
|
|
||||||
"i64.reinterpret/f64": sign([f64], [i64]),
|
|
||||||
"f32.reinterpret/i32": sign([i32], [f32]),
|
|
||||||
"f64.reinterpret/i64": sign([i64], [f64])
|
|
||||||
};
|
|
||||||
export var signatures = Object.assign({}, controlInstructions, parametricInstructions, variableInstructions, memoryInstructions, numericInstructions);
|
|
||||||
76
node_modules/@webassemblyjs/ast/esm/transform/denormalize-type-references/index.js
generated
vendored
76
node_modules/@webassemblyjs/ast/esm/transform/denormalize-type-references/index.js
generated
vendored
@@ -1,76 +0,0 @@
|
|||||||
var t = require("../../index"); // func and call_indirect instructions can either define a signature inline, or
|
|
||||||
// reference a signature, e.g.
|
|
||||||
//
|
|
||||||
// ;; inline signature
|
|
||||||
// (func (result i64)
|
|
||||||
// (i64.const 2)
|
|
||||||
// )
|
|
||||||
// ;; signature reference
|
|
||||||
// (type (func (result i64)))
|
|
||||||
// (func (type 0)
|
|
||||||
// (i64.const 2))
|
|
||||||
// )
|
|
||||||
//
|
|
||||||
// this AST transform denormalises the type references, making all signatures within the module
|
|
||||||
// inline.
|
|
||||||
|
|
||||||
|
|
||||||
export function transform(ast) {
|
|
||||||
var typeInstructions = [];
|
|
||||||
t.traverse(ast, {
|
|
||||||
TypeInstruction: function TypeInstruction(_ref) {
|
|
||||||
var node = _ref.node;
|
|
||||||
typeInstructions.push(node);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!typeInstructions.length) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
function denormalizeSignature(signature) {
|
|
||||||
// signature referenced by identifier
|
|
||||||
if (signature.type === "Identifier") {
|
|
||||||
var identifier = signature;
|
|
||||||
var typeInstruction = typeInstructions.find(function (t) {
|
|
||||||
return t.id.type === identifier.type && t.id.value === identifier.value;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!typeInstruction) {
|
|
||||||
throw new Error("A type instruction reference was not found ".concat(JSON.stringify(signature)));
|
|
||||||
}
|
|
||||||
|
|
||||||
return typeInstruction.functype;
|
|
||||||
} // signature referenced by index
|
|
||||||
|
|
||||||
|
|
||||||
if (signature.type === "NumberLiteral") {
|
|
||||||
var signatureRef = signature;
|
|
||||||
var _typeInstruction = typeInstructions[signatureRef.value];
|
|
||||||
return _typeInstruction.functype;
|
|
||||||
}
|
|
||||||
|
|
||||||
return signature;
|
|
||||||
}
|
|
||||||
|
|
||||||
t.traverse(ast, {
|
|
||||||
Func: function (_Func) {
|
|
||||||
function Func(_x) {
|
|
||||||
return _Func.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
Func.toString = function () {
|
|
||||||
return _Func.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return Func;
|
|
||||||
}(function (_ref2) {
|
|
||||||
var node = _ref2.node;
|
|
||||||
node.signature = denormalizeSignature(node.signature);
|
|
||||||
}),
|
|
||||||
CallIndirectInstruction: function CallIndirectInstruction(_ref3) {
|
|
||||||
var node = _ref3.node;
|
|
||||||
node.signature = denormalizeSignature(node.signature);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
216
node_modules/@webassemblyjs/ast/esm/transform/wast-identifier-to-index/index.js
generated
vendored
216
node_modules/@webassemblyjs/ast/esm/transform/wast-identifier-to-index/index.js
generated
vendored
@@ -1,216 +0,0 @@
|
|||||||
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
||||||
|
|
||||||
function _sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
||||||
|
|
||||||
function _slicedToArray(arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return _sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }
|
|
||||||
|
|
||||||
import { isBlock, isFunc, isIdentifier, numberLiteralFromRaw, traverse } from "../../index";
|
|
||||||
import { moduleContextFromModuleAST } from "@webassemblyjs/helper-module-context"; // FIXME(sven): do the same with all block instructions, must be more generic here
|
|
||||||
|
|
||||||
function newUnexpectedFunction(i) {
|
|
||||||
return new Error("unknown function at offset: " + i);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function transform(ast) {
|
|
||||||
var module;
|
|
||||||
traverse(ast, {
|
|
||||||
Module: function (_Module) {
|
|
||||||
function Module(_x) {
|
|
||||||
return _Module.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
Module.toString = function () {
|
|
||||||
return _Module.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return Module;
|
|
||||||
}(function (path) {
|
|
||||||
module = path.node;
|
|
||||||
})
|
|
||||||
});
|
|
||||||
var moduleContext = moduleContextFromModuleAST(module); // Transform the actual instruction in function bodies
|
|
||||||
|
|
||||||
traverse(ast, {
|
|
||||||
Func: function (_Func) {
|
|
||||||
function Func(_x2) {
|
|
||||||
return _Func.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
Func.toString = function () {
|
|
||||||
return _Func.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return Func;
|
|
||||||
}(function (path) {
|
|
||||||
transformFuncPath(path, moduleContext);
|
|
||||||
}),
|
|
||||||
Start: function (_Start) {
|
|
||||||
function Start(_x3) {
|
|
||||||
return _Start.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
Start.toString = function () {
|
|
||||||
return _Start.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return Start;
|
|
||||||
}(function (path) {
|
|
||||||
var index = path.node.index;
|
|
||||||
|
|
||||||
if (isIdentifier(index) === true) {
|
|
||||||
var offsetInModule = moduleContext.getFunctionOffsetByIdentifier(index.value);
|
|
||||||
|
|
||||||
if (typeof offsetInModule === "undefined") {
|
|
||||||
throw newUnexpectedFunction(index.value);
|
|
||||||
} // Replace the index Identifier
|
|
||||||
// $FlowIgnore: reference?
|
|
||||||
|
|
||||||
|
|
||||||
path.node.index = numberLiteralFromRaw(offsetInModule);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function transformFuncPath(funcPath, moduleContext) {
|
|
||||||
var funcNode = funcPath.node;
|
|
||||||
var signature = funcNode.signature;
|
|
||||||
|
|
||||||
if (signature.type !== "Signature") {
|
|
||||||
throw new Error("Function signatures must be denormalised before execution");
|
|
||||||
}
|
|
||||||
|
|
||||||
var params = signature.params; // Add func locals in the context
|
|
||||||
|
|
||||||
params.forEach(function (p) {
|
|
||||||
return moduleContext.addLocal(p.valtype);
|
|
||||||
});
|
|
||||||
traverse(funcNode, {
|
|
||||||
Instr: function (_Instr) {
|
|
||||||
function Instr(_x4) {
|
|
||||||
return _Instr.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
Instr.toString = function () {
|
|
||||||
return _Instr.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return Instr;
|
|
||||||
}(function (instrPath) {
|
|
||||||
var instrNode = instrPath.node;
|
|
||||||
/**
|
|
||||||
* Local access
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (instrNode.id === "get_local" || instrNode.id === "set_local" || instrNode.id === "tee_local") {
|
|
||||||
var _instrNode$args = _slicedToArray(instrNode.args, 1),
|
|
||||||
firstArg = _instrNode$args[0];
|
|
||||||
|
|
||||||
if (firstArg.type === "Identifier") {
|
|
||||||
var offsetInParams = params.findIndex(function (_ref) {
|
|
||||||
var id = _ref.id;
|
|
||||||
return id === firstArg.value;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (offsetInParams === -1) {
|
|
||||||
throw new Error("".concat(firstArg.value, " not found in ").concat(instrNode.id, ": not declared in func params"));
|
|
||||||
} // Replace the Identifer node by our new NumberLiteral node
|
|
||||||
|
|
||||||
|
|
||||||
instrNode.args[0] = numberLiteralFromRaw(offsetInParams);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Global access
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
if (instrNode.id === "get_global" || instrNode.id === "set_global") {
|
|
||||||
var _instrNode$args2 = _slicedToArray(instrNode.args, 1),
|
|
||||||
_firstArg = _instrNode$args2[0];
|
|
||||||
|
|
||||||
if (isIdentifier(_firstArg) === true) {
|
|
||||||
var globalOffset = moduleContext.getGlobalOffsetByIdentifier( // $FlowIgnore: reference?
|
|
||||||
_firstArg.value);
|
|
||||||
|
|
||||||
if (typeof globalOffset === "undefined") {
|
|
||||||
// $FlowIgnore: reference?
|
|
||||||
throw new Error("global ".concat(_firstArg.value, " not found in module"));
|
|
||||||
} // Replace the Identifer node by our new NumberLiteral node
|
|
||||||
|
|
||||||
|
|
||||||
instrNode.args[0] = numberLiteralFromRaw(globalOffset);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Labels lookup
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
if (instrNode.id === "br") {
|
|
||||||
var _instrNode$args3 = _slicedToArray(instrNode.args, 1),
|
|
||||||
_firstArg2 = _instrNode$args3[0];
|
|
||||||
|
|
||||||
if (isIdentifier(_firstArg2) === true) {
|
|
||||||
// if the labels is not found it is going to be replaced with -1
|
|
||||||
// which is invalid.
|
|
||||||
var relativeBlockCount = -1; // $FlowIgnore: reference?
|
|
||||||
|
|
||||||
instrPath.findParent(function (_ref2) {
|
|
||||||
var node = _ref2.node;
|
|
||||||
|
|
||||||
if (isBlock(node)) {
|
|
||||||
relativeBlockCount++; // $FlowIgnore: reference?
|
|
||||||
|
|
||||||
var name = node.label || node.name;
|
|
||||||
|
|
||||||
if (_typeof(name) === "object") {
|
|
||||||
// $FlowIgnore: isIdentifier ensures that
|
|
||||||
if (name.value === _firstArg2.value) {
|
|
||||||
// Found it
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isFunc(node)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}); // Replace the Identifer node by our new NumberLiteral node
|
|
||||||
|
|
||||||
instrNode.args[0] = numberLiteralFromRaw(relativeBlockCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Func lookup
|
|
||||||
*/
|
|
||||||
CallInstruction: function (_CallInstruction) {
|
|
||||||
function CallInstruction(_x5) {
|
|
||||||
return _CallInstruction.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
CallInstruction.toString = function () {
|
|
||||||
return _CallInstruction.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return CallInstruction;
|
|
||||||
}(function (_ref3) {
|
|
||||||
var node = _ref3.node;
|
|
||||||
var index = node.index;
|
|
||||||
|
|
||||||
if (isIdentifier(index) === true) {
|
|
||||||
var offsetInModule = moduleContext.getFunctionOffsetByIdentifier(index.value);
|
|
||||||
|
|
||||||
if (typeof offsetInModule === "undefined") {
|
|
||||||
throw newUnexpectedFunction(index.value);
|
|
||||||
} // Replace the index Identifier
|
|
||||||
// $FlowIgnore: reference?
|
|
||||||
|
|
||||||
|
|
||||||
node.index = numberLiteralFromRaw(offsetInModule);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
96
node_modules/@webassemblyjs/ast/esm/traverse.js
generated
vendored
96
node_modules/@webassemblyjs/ast/esm/traverse.js
generated
vendored
@@ -1,96 +0,0 @@
|
|||||||
import { createPath } from "./node-path";
|
|
||||||
import { unionTypesMap, nodeAndUnionTypes } from "./nodes"; // recursively walks the AST starting at the given node. The callback is invoked for
|
|
||||||
// and object that has a 'type' property.
|
|
||||||
|
|
||||||
function walk(context, callback) {
|
|
||||||
var stop = false;
|
|
||||||
|
|
||||||
function innerWalk(context, callback) {
|
|
||||||
if (stop) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = context.node;
|
|
||||||
|
|
||||||
if (node === undefined) {
|
|
||||||
console.warn("traversing with an empty context");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (node._deleted === true) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var path = createPath(context);
|
|
||||||
callback(node.type, path);
|
|
||||||
|
|
||||||
if (path.shouldStop) {
|
|
||||||
stop = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Object.keys(node).forEach(function (prop) {
|
|
||||||
var value = node[prop];
|
|
||||||
|
|
||||||
if (value === null || value === undefined) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var valueAsArray = Array.isArray(value) ? value : [value];
|
|
||||||
valueAsArray.forEach(function (childNode) {
|
|
||||||
if (typeof childNode.type === "string") {
|
|
||||||
var childContext = {
|
|
||||||
node: childNode,
|
|
||||||
parentKey: prop,
|
|
||||||
parentPath: path,
|
|
||||||
shouldStop: false,
|
|
||||||
inList: Array.isArray(value)
|
|
||||||
};
|
|
||||||
innerWalk(childContext, callback);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
innerWalk(context, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
var noop = function noop() {};
|
|
||||||
|
|
||||||
export function traverse(node, visitors) {
|
|
||||||
var before = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : noop;
|
|
||||||
var after = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;
|
|
||||||
Object.keys(visitors).forEach(function (visitor) {
|
|
||||||
if (!nodeAndUnionTypes.includes(visitor)) {
|
|
||||||
throw new Error("Unexpected visitor ".concat(visitor));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
var context = {
|
|
||||||
node: node,
|
|
||||||
inList: false,
|
|
||||||
shouldStop: false,
|
|
||||||
parentPath: null,
|
|
||||||
parentKey: null
|
|
||||||
};
|
|
||||||
walk(context, function (type, path) {
|
|
||||||
if (typeof visitors[type] === "function") {
|
|
||||||
before(type, path);
|
|
||||||
visitors[type](path);
|
|
||||||
after(type, path);
|
|
||||||
}
|
|
||||||
|
|
||||||
var unionTypes = unionTypesMap[type];
|
|
||||||
|
|
||||||
if (!unionTypes) {
|
|
||||||
throw new Error("Unexpected node type ".concat(type));
|
|
||||||
}
|
|
||||||
|
|
||||||
unionTypes.forEach(function (unionType) {
|
|
||||||
if (typeof visitors[unionType] === "function") {
|
|
||||||
before(unionType, path);
|
|
||||||
visitors[unionType](path);
|
|
||||||
after(unionType, path);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
0
node_modules/@webassemblyjs/ast/esm/types/basic.js
generated
vendored
0
node_modules/@webassemblyjs/ast/esm/types/basic.js
generated
vendored
0
node_modules/@webassemblyjs/ast/esm/types/nodes.js
generated
vendored
0
node_modules/@webassemblyjs/ast/esm/types/nodes.js
generated
vendored
0
node_modules/@webassemblyjs/ast/esm/types/traverse.js
generated
vendored
0
node_modules/@webassemblyjs/ast/esm/types/traverse.js
generated
vendored
265
node_modules/@webassemblyjs/ast/esm/utils.js
generated
vendored
265
node_modules/@webassemblyjs/ast/esm/utils.js
generated
vendored
@@ -1,265 +0,0 @@
|
|||||||
function _sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
||||||
|
|
||||||
function _slicedToArray(arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return _sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }
|
|
||||||
|
|
||||||
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
||||||
|
|
||||||
import { signatures } from "./signatures";
|
|
||||||
import { traverse } from "./traverse";
|
|
||||||
import constants from "@webassemblyjs/helper-wasm-bytecode";
|
|
||||||
import { getSectionForNode } from "@webassemblyjs/helper-wasm-bytecode";
|
|
||||||
export function isAnonymous(ident) {
|
|
||||||
return ident.raw === "";
|
|
||||||
}
|
|
||||||
export function getSectionMetadata(ast, name) {
|
|
||||||
var section;
|
|
||||||
traverse(ast, {
|
|
||||||
SectionMetadata: function (_SectionMetadata) {
|
|
||||||
function SectionMetadata(_x) {
|
|
||||||
return _SectionMetadata.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
SectionMetadata.toString = function () {
|
|
||||||
return _SectionMetadata.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return SectionMetadata;
|
|
||||||
}(function (_ref) {
|
|
||||||
var node = _ref.node;
|
|
||||||
|
|
||||||
if (node.section === name) {
|
|
||||||
section = node;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
return section;
|
|
||||||
}
|
|
||||||
export function getSectionMetadatas(ast, name) {
|
|
||||||
var sections = [];
|
|
||||||
traverse(ast, {
|
|
||||||
SectionMetadata: function (_SectionMetadata2) {
|
|
||||||
function SectionMetadata(_x2) {
|
|
||||||
return _SectionMetadata2.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
SectionMetadata.toString = function () {
|
|
||||||
return _SectionMetadata2.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return SectionMetadata;
|
|
||||||
}(function (_ref2) {
|
|
||||||
var node = _ref2.node;
|
|
||||||
|
|
||||||
if (node.section === name) {
|
|
||||||
sections.push(node);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
return sections;
|
|
||||||
}
|
|
||||||
export function sortSectionMetadata(m) {
|
|
||||||
if (m.metadata == null) {
|
|
||||||
console.warn("sortSectionMetadata: no metadata to sort");
|
|
||||||
return;
|
|
||||||
} // $FlowIgnore
|
|
||||||
|
|
||||||
|
|
||||||
m.metadata.sections.sort(function (a, b) {
|
|
||||||
var aId = constants.sections[a.section];
|
|
||||||
var bId = constants.sections[b.section];
|
|
||||||
|
|
||||||
if (typeof aId !== "number" || typeof bId !== "number") {
|
|
||||||
throw new Error("Section id not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
return aId - bId;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
export function orderedInsertNode(m, n) {
|
|
||||||
assertHasLoc(n);
|
|
||||||
var didInsert = false;
|
|
||||||
|
|
||||||
if (n.type === "ModuleExport") {
|
|
||||||
m.fields.push(n);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m.fields = m.fields.reduce(function (acc, field) {
|
|
||||||
var fieldEndCol = Infinity;
|
|
||||||
|
|
||||||
if (field.loc != null) {
|
|
||||||
// $FlowIgnore
|
|
||||||
fieldEndCol = field.loc.end.column;
|
|
||||||
} // $FlowIgnore: assertHasLoc ensures that
|
|
||||||
|
|
||||||
|
|
||||||
if (didInsert === false && n.loc.start.column < fieldEndCol) {
|
|
||||||
didInsert = true;
|
|
||||||
acc.push(n);
|
|
||||||
}
|
|
||||||
|
|
||||||
acc.push(field);
|
|
||||||
return acc;
|
|
||||||
}, []); // Handles empty modules or n is the last element
|
|
||||||
|
|
||||||
if (didInsert === false) {
|
|
||||||
m.fields.push(n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export function assertHasLoc(n) {
|
|
||||||
if (n.loc == null || n.loc.start == null || n.loc.end == null) {
|
|
||||||
throw new Error("Internal failure: node (".concat(JSON.stringify(n.type), ") has no location information"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export function getEndOfSection(s) {
|
|
||||||
assertHasLoc(s.size);
|
|
||||||
return s.startOffset + s.size.value + ( // $FlowIgnore
|
|
||||||
s.size.loc.end.column - s.size.loc.start.column);
|
|
||||||
}
|
|
||||||
export function shiftLoc(node, delta) {
|
|
||||||
// $FlowIgnore
|
|
||||||
node.loc.start.column += delta; // $FlowIgnore
|
|
||||||
|
|
||||||
node.loc.end.column += delta;
|
|
||||||
}
|
|
||||||
export function shiftSection(ast, node, delta) {
|
|
||||||
if (node.type !== "SectionMetadata") {
|
|
||||||
throw new Error("Can not shift node " + JSON.stringify(node.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
node.startOffset += delta;
|
|
||||||
|
|
||||||
if (_typeof(node.size.loc) === "object") {
|
|
||||||
shiftLoc(node.size, delta);
|
|
||||||
} // Custom sections doesn't have vectorOfSize
|
|
||||||
|
|
||||||
|
|
||||||
if (_typeof(node.vectorOfSize) === "object" && _typeof(node.vectorOfSize.loc) === "object") {
|
|
||||||
shiftLoc(node.vectorOfSize, delta);
|
|
||||||
}
|
|
||||||
|
|
||||||
var sectionName = node.section; // shift node locations within that section
|
|
||||||
|
|
||||||
traverse(ast, {
|
|
||||||
Node: function Node(_ref3) {
|
|
||||||
var node = _ref3.node;
|
|
||||||
var section = getSectionForNode(node);
|
|
||||||
|
|
||||||
if (section === sectionName && _typeof(node.loc) === "object") {
|
|
||||||
shiftLoc(node, delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
export function signatureForOpcode(object, name) {
|
|
||||||
var opcodeName = name;
|
|
||||||
|
|
||||||
if (object !== undefined && object !== "") {
|
|
||||||
opcodeName = object + "." + name;
|
|
||||||
}
|
|
||||||
|
|
||||||
var sign = signatures[opcodeName];
|
|
||||||
|
|
||||||
if (sign == undefined) {
|
|
||||||
// TODO: Uncomment this when br_table and others has been done
|
|
||||||
//throw new Error("Invalid opcode: "+opcodeName);
|
|
||||||
return [object, object];
|
|
||||||
}
|
|
||||||
|
|
||||||
return sign[0];
|
|
||||||
}
|
|
||||||
export function getUniqueNameGenerator() {
|
|
||||||
var inc = {};
|
|
||||||
return function () {
|
|
||||||
var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "temp";
|
|
||||||
|
|
||||||
if (!(prefix in inc)) {
|
|
||||||
inc[prefix] = 0;
|
|
||||||
} else {
|
|
||||||
inc[prefix] = inc[prefix] + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return prefix + "_" + inc[prefix];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
export function getStartByteOffset(n) {
|
|
||||||
// $FlowIgnore
|
|
||||||
if (typeof n.loc === "undefined" || typeof n.loc.start === "undefined") {
|
|
||||||
throw new Error( // $FlowIgnore
|
|
||||||
"Can not get byte offset without loc informations, node: " + String(n.id));
|
|
||||||
}
|
|
||||||
|
|
||||||
return n.loc.start.column;
|
|
||||||
}
|
|
||||||
export function getEndByteOffset(n) {
|
|
||||||
// $FlowIgnore
|
|
||||||
if (typeof n.loc === "undefined" || typeof n.loc.end === "undefined") {
|
|
||||||
throw new Error("Can not get byte offset without loc informations, node: " + n.type);
|
|
||||||
}
|
|
||||||
|
|
||||||
return n.loc.end.column;
|
|
||||||
}
|
|
||||||
export function getFunctionBeginingByteOffset(n) {
|
|
||||||
if (!(n.body.length > 0)) {
|
|
||||||
throw new Error('n.body.length > 0' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var _n$body = _slicedToArray(n.body, 1),
|
|
||||||
firstInstruction = _n$body[0];
|
|
||||||
|
|
||||||
return getStartByteOffset(firstInstruction);
|
|
||||||
}
|
|
||||||
export function getEndBlockByteOffset(n) {
|
|
||||||
// $FlowIgnore
|
|
||||||
if (!(n.instr.length > 0 || n.body.length > 0)) {
|
|
||||||
throw new Error('n.instr.length > 0 || n.body.length > 0' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var lastInstruction;
|
|
||||||
|
|
||||||
if (n.instr) {
|
|
||||||
// $FlowIgnore
|
|
||||||
lastInstruction = n.instr[n.instr.length - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (n.body) {
|
|
||||||
// $FlowIgnore
|
|
||||||
lastInstruction = n.body[n.body.length - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(lastInstruction) === "object")) {
|
|
||||||
throw new Error('typeof lastInstruction === "object"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// $FlowIgnore
|
|
||||||
return getStartByteOffset(lastInstruction);
|
|
||||||
}
|
|
||||||
export function getStartBlockByteOffset(n) {
|
|
||||||
// $FlowIgnore
|
|
||||||
if (!(n.instr.length > 0 || n.body.length > 0)) {
|
|
||||||
throw new Error('n.instr.length > 0 || n.body.length > 0' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var fistInstruction;
|
|
||||||
|
|
||||||
if (n.instr) {
|
|
||||||
// $FlowIgnore
|
|
||||||
var _n$instr = _slicedToArray(n.instr, 1);
|
|
||||||
|
|
||||||
fistInstruction = _n$instr[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (n.body) {
|
|
||||||
// $FlowIgnore
|
|
||||||
var _n$body2 = _slicedToArray(n.body, 1);
|
|
||||||
|
|
||||||
fistInstruction = _n$body2[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(fistInstruction) === "object")) {
|
|
||||||
throw new Error('typeof fistInstruction === "object"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// $FlowIgnore
|
|
||||||
return getStartByteOffset(fistInstruction);
|
|
||||||
}
|
|
||||||
17
node_modules/@webassemblyjs/ast/lib/clone.js
generated
vendored
17
node_modules/@webassemblyjs/ast/lib/clone.js
generated
vendored
@@ -1,17 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.cloneNode = cloneNode;
|
|
||||||
|
|
||||||
function cloneNode(n) {
|
|
||||||
// $FlowIgnore
|
|
||||||
var newObj = {};
|
|
||||||
|
|
||||||
for (var k in n) {
|
|
||||||
newObj[k] = n[k];
|
|
||||||
}
|
|
||||||
|
|
||||||
return newObj;
|
|
||||||
}
|
|
||||||
663
node_modules/@webassemblyjs/ast/lib/definitions.js
generated
vendored
663
node_modules/@webassemblyjs/ast/lib/definitions.js
generated
vendored
@@ -1,663 +0,0 @@
|
|||||||
var definitions = {};
|
|
||||||
|
|
||||||
function defineType(typeName, metadata) {
|
|
||||||
definitions[typeName] = metadata;
|
|
||||||
}
|
|
||||||
|
|
||||||
defineType("Module", {
|
|
||||||
spec: {
|
|
||||||
wasm: "https://webassembly.github.io/spec/core/binary/modules.html#binary-module",
|
|
||||||
wat: "https://webassembly.github.io/spec/core/text/modules.html#text-module"
|
|
||||||
},
|
|
||||||
doc: "A module consists of a sequence of sections (termed fields in the text format).",
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
maybe: true,
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
fields: {
|
|
||||||
array: true,
|
|
||||||
type: "Node"
|
|
||||||
},
|
|
||||||
metadata: {
|
|
||||||
optional: true,
|
|
||||||
type: "ModuleMetadata"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ModuleMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
sections: {
|
|
||||||
array: true,
|
|
||||||
type: "SectionMetadata"
|
|
||||||
},
|
|
||||||
functionNames: {
|
|
||||||
optional: true,
|
|
||||||
array: true,
|
|
||||||
type: "FunctionNameMetadata"
|
|
||||||
},
|
|
||||||
localNames: {
|
|
||||||
optional: true,
|
|
||||||
array: true,
|
|
||||||
type: "ModuleMetadata"
|
|
||||||
},
|
|
||||||
producers: {
|
|
||||||
optional: true,
|
|
||||||
array: true,
|
|
||||||
type: "ProducersSectionMetadata"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ModuleNameMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("FunctionNameMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
index: {
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("LocalNameMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
localIndex: {
|
|
||||||
type: "number"
|
|
||||||
},
|
|
||||||
functionIndex: {
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("BinaryModule", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
maybe: true,
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
blob: {
|
|
||||||
array: true,
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("QuoteModule", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
maybe: true,
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
string: {
|
|
||||||
array: true,
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("SectionMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
section: {
|
|
||||||
type: "SectionName"
|
|
||||||
},
|
|
||||||
startOffset: {
|
|
||||||
type: "number"
|
|
||||||
},
|
|
||||||
size: {
|
|
||||||
type: "NumberLiteral"
|
|
||||||
},
|
|
||||||
vectorOfSize: {
|
|
||||||
comment: "Size of the vector in the section (if any)",
|
|
||||||
type: "NumberLiteral"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ProducersSectionMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
producers: {
|
|
||||||
array: true,
|
|
||||||
type: "ProducerMetadata"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ProducerMetadata", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
language: {
|
|
||||||
type: "ProducerMetadataVersionedName",
|
|
||||||
array: true
|
|
||||||
},
|
|
||||||
processedBy: {
|
|
||||||
type: "ProducerMetadataVersionedName",
|
|
||||||
array: true
|
|
||||||
},
|
|
||||||
sdk: {
|
|
||||||
type: "ProducerMetadataVersionedName",
|
|
||||||
array: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ProducerMetadataVersionedName", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
name: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
version: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
/*
|
|
||||||
Instructions
|
|
||||||
*/
|
|
||||||
|
|
||||||
defineType("LoopInstruction", {
|
|
||||||
unionType: ["Node", "Block", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
constant: true,
|
|
||||||
type: "string",
|
|
||||||
value: "loop"
|
|
||||||
},
|
|
||||||
label: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Identifier"
|
|
||||||
},
|
|
||||||
resulttype: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Valtype"
|
|
||||||
},
|
|
||||||
instr: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Instr", {
|
|
||||||
unionType: ["Node", "Expression", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
object: {
|
|
||||||
optional: true,
|
|
||||||
type: "Valtype"
|
|
||||||
},
|
|
||||||
args: {
|
|
||||||
array: true,
|
|
||||||
type: "Expression"
|
|
||||||
},
|
|
||||||
namedArgs: {
|
|
||||||
optional: true,
|
|
||||||
type: "Object"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("IfInstruction", {
|
|
||||||
unionType: ["Node", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
constant: true,
|
|
||||||
type: "string",
|
|
||||||
value: "if"
|
|
||||||
},
|
|
||||||
testLabel: {
|
|
||||||
comment: "only for WAST",
|
|
||||||
type: "Identifier"
|
|
||||||
},
|
|
||||||
test: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
result: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Valtype"
|
|
||||||
},
|
|
||||||
consequent: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
alternate: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
/*
|
|
||||||
Concrete value types
|
|
||||||
*/
|
|
||||||
|
|
||||||
defineType("StringLiteral", {
|
|
||||||
unionType: ["Node", "Expression"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("NumberLiteral", {
|
|
||||||
unionType: ["Node", "NumericLiteral", "Expression"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "number"
|
|
||||||
},
|
|
||||||
raw: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("LongNumberLiteral", {
|
|
||||||
unionType: ["Node", "NumericLiteral", "Expression"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "LongNumber"
|
|
||||||
},
|
|
||||||
raw: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("FloatLiteral", {
|
|
||||||
unionType: ["Node", "NumericLiteral", "Expression"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "number"
|
|
||||||
},
|
|
||||||
nan: {
|
|
||||||
optional: true,
|
|
||||||
type: "boolean"
|
|
||||||
},
|
|
||||||
inf: {
|
|
||||||
optional: true,
|
|
||||||
type: "boolean"
|
|
||||||
},
|
|
||||||
raw: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Elem", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
table: {
|
|
||||||
type: "Index"
|
|
||||||
},
|
|
||||||
offset: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
funcs: {
|
|
||||||
array: true,
|
|
||||||
type: "Index"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("IndexInFuncSection", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
index: {
|
|
||||||
type: "Index"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ValtypeLiteral", {
|
|
||||||
unionType: ["Node", "Expression"],
|
|
||||||
fields: {
|
|
||||||
name: {
|
|
||||||
type: "Valtype"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("TypeInstruction", {
|
|
||||||
unionType: ["Node", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Index"
|
|
||||||
},
|
|
||||||
functype: {
|
|
||||||
type: "Signature"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Start", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
index: {
|
|
||||||
type: "Index"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("GlobalType", {
|
|
||||||
unionType: ["Node", "ImportDescr"],
|
|
||||||
fields: {
|
|
||||||
valtype: {
|
|
||||||
type: "Valtype"
|
|
||||||
},
|
|
||||||
mutability: {
|
|
||||||
type: "Mutability"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("LeadingComment", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("BlockComment", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Data", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
memoryIndex: {
|
|
||||||
type: "Memidx"
|
|
||||||
},
|
|
||||||
offset: {
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
init: {
|
|
||||||
type: "ByteArray"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Global", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
globalType: {
|
|
||||||
type: "GlobalType"
|
|
||||||
},
|
|
||||||
init: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
name: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Identifier"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Table", {
|
|
||||||
unionType: ["Node", "ImportDescr"],
|
|
||||||
fields: {
|
|
||||||
elementType: {
|
|
||||||
type: "TableElementType"
|
|
||||||
},
|
|
||||||
limits: {
|
|
||||||
assertNodeType: true,
|
|
||||||
type: "Limit"
|
|
||||||
},
|
|
||||||
name: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Identifier"
|
|
||||||
},
|
|
||||||
elements: {
|
|
||||||
array: true,
|
|
||||||
optional: true,
|
|
||||||
type: "Index"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Memory", {
|
|
||||||
unionType: ["Node", "ImportDescr"],
|
|
||||||
fields: {
|
|
||||||
limits: {
|
|
||||||
type: "Limit"
|
|
||||||
},
|
|
||||||
id: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Index"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("FuncImportDescr", {
|
|
||||||
unionType: ["Node", "ImportDescr"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
type: "Identifier"
|
|
||||||
},
|
|
||||||
signature: {
|
|
||||||
type: "Signature"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ModuleImport", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
module: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
name: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
descr: {
|
|
||||||
type: "ImportDescr"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ModuleExportDescr", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
exportType: {
|
|
||||||
type: "ExportDescrType"
|
|
||||||
},
|
|
||||||
id: {
|
|
||||||
type: "Index"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ModuleExport", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
name: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
descr: {
|
|
||||||
type: "ModuleExportDescr"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Limit", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
min: {
|
|
||||||
type: "number"
|
|
||||||
},
|
|
||||||
max: {
|
|
||||||
optional: true,
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Signature", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
params: {
|
|
||||||
array: true,
|
|
||||||
type: "FuncParam"
|
|
||||||
},
|
|
||||||
results: {
|
|
||||||
array: true,
|
|
||||||
type: "Valtype"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Program", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
body: {
|
|
||||||
array: true,
|
|
||||||
type: "Node"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Identifier", {
|
|
||||||
unionType: ["Node", "Expression"],
|
|
||||||
fields: {
|
|
||||||
value: {
|
|
||||||
type: "string"
|
|
||||||
},
|
|
||||||
raw: {
|
|
||||||
optional: true,
|
|
||||||
type: "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("BlockInstruction", {
|
|
||||||
unionType: ["Node", "Block", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
constant: true,
|
|
||||||
type: "string",
|
|
||||||
value: "block"
|
|
||||||
},
|
|
||||||
label: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Identifier"
|
|
||||||
},
|
|
||||||
instr: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
result: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Valtype"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("CallInstruction", {
|
|
||||||
unionType: ["Node", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
constant: true,
|
|
||||||
type: "string",
|
|
||||||
value: "call"
|
|
||||||
},
|
|
||||||
index: {
|
|
||||||
type: "Index"
|
|
||||||
},
|
|
||||||
instrArgs: {
|
|
||||||
array: true,
|
|
||||||
optional: true,
|
|
||||||
type: "Expression"
|
|
||||||
},
|
|
||||||
numeric: {
|
|
||||||
type: "Index",
|
|
||||||
optional: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("CallIndirectInstruction", {
|
|
||||||
unionType: ["Node", "Instruction"],
|
|
||||||
fields: {
|
|
||||||
id: {
|
|
||||||
constant: true,
|
|
||||||
type: "string",
|
|
||||||
value: "call_indirect"
|
|
||||||
},
|
|
||||||
signature: {
|
|
||||||
type: "SignatureOrTypeRef"
|
|
||||||
},
|
|
||||||
intrs: {
|
|
||||||
array: true,
|
|
||||||
optional: true,
|
|
||||||
type: "Expression"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("ByteArray", {
|
|
||||||
unionType: ["Node"],
|
|
||||||
fields: {
|
|
||||||
values: {
|
|
||||||
array: true,
|
|
||||||
type: "Byte"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("Func", {
|
|
||||||
unionType: ["Node", "Block"],
|
|
||||||
fields: {
|
|
||||||
name: {
|
|
||||||
maybe: true,
|
|
||||||
type: "Index"
|
|
||||||
},
|
|
||||||
signature: {
|
|
||||||
type: "SignatureOrTypeRef"
|
|
||||||
},
|
|
||||||
body: {
|
|
||||||
array: true,
|
|
||||||
type: "Instruction"
|
|
||||||
},
|
|
||||||
isExternal: {
|
|
||||||
comment: "means that it has been imported from the outside js",
|
|
||||||
optional: true,
|
|
||||||
type: "boolean"
|
|
||||||
},
|
|
||||||
metadata: {
|
|
||||||
optional: true,
|
|
||||||
type: "FuncMetadata"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
/**
|
|
||||||
* Intrinsics
|
|
||||||
*/
|
|
||||||
|
|
||||||
defineType("InternalBrUnless", {
|
|
||||||
unionType: ["Node", "Intrinsic"],
|
|
||||||
fields: {
|
|
||||||
target: {
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("InternalGoto", {
|
|
||||||
unionType: ["Node", "Intrinsic"],
|
|
||||||
fields: {
|
|
||||||
target: {
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
defineType("InternalCallExtern", {
|
|
||||||
unionType: ["Node", "Intrinsic"],
|
|
||||||
fields: {
|
|
||||||
target: {
|
|
||||||
type: "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}); // function bodies are terminated by an `end` instruction but are missing a
|
|
||||||
// return instruction
|
|
||||||
//
|
|
||||||
// Since we can't inject a new instruction we are injecting a new instruction.
|
|
||||||
|
|
||||||
defineType("InternalEndAndReturn", {
|
|
||||||
unionType: ["Node", "Intrinsic"],
|
|
||||||
fields: {}
|
|
||||||
});
|
|
||||||
module.exports = definitions;
|
|
||||||
118
node_modules/@webassemblyjs/ast/lib/index.js
generated
vendored
118
node_modules/@webassemblyjs/ast/lib/index.js
generated
vendored
@@ -1,118 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
var _exportNames = {
|
|
||||||
numberLiteralFromRaw: true,
|
|
||||||
withLoc: true,
|
|
||||||
withRaw: true,
|
|
||||||
funcParam: true,
|
|
||||||
indexLiteral: true,
|
|
||||||
memIndexLiteral: true,
|
|
||||||
instruction: true,
|
|
||||||
objectInstruction: true,
|
|
||||||
traverse: true,
|
|
||||||
signatures: true,
|
|
||||||
cloneNode: true
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "numberLiteralFromRaw", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _nodeHelpers.numberLiteralFromRaw;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "withLoc", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _nodeHelpers.withLoc;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "withRaw", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _nodeHelpers.withRaw;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "funcParam", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _nodeHelpers.funcParam;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "indexLiteral", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _nodeHelpers.indexLiteral;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "memIndexLiteral", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _nodeHelpers.memIndexLiteral;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "instruction", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _nodeHelpers.instruction;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "objectInstruction", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _nodeHelpers.objectInstruction;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "traverse", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _traverse.traverse;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "signatures", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _signatures.signatures;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "cloneNode", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _clone.cloneNode;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
var _nodes = require("./nodes");
|
|
||||||
|
|
||||||
Object.keys(_nodes).forEach(function (key) {
|
|
||||||
if (key === "default" || key === "__esModule") return;
|
|
||||||
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
||||||
Object.defineProperty(exports, key, {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _nodes[key];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
var _nodeHelpers = require("./node-helpers.js");
|
|
||||||
|
|
||||||
var _traverse = require("./traverse");
|
|
||||||
|
|
||||||
var _signatures = require("./signatures");
|
|
||||||
|
|
||||||
var _utils = require("./utils");
|
|
||||||
|
|
||||||
Object.keys(_utils).forEach(function (key) {
|
|
||||||
if (key === "default" || key === "__esModule") return;
|
|
||||||
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
||||||
Object.defineProperty(exports, key, {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _utils[key];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
var _clone = require("./clone");
|
|
||||||
107
node_modules/@webassemblyjs/ast/lib/node-helpers.js
generated
vendored
107
node_modules/@webassemblyjs/ast/lib/node-helpers.js
generated
vendored
@@ -1,107 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.numberLiteralFromRaw = numberLiteralFromRaw;
|
|
||||||
exports.instruction = instruction;
|
|
||||||
exports.objectInstruction = objectInstruction;
|
|
||||||
exports.withLoc = withLoc;
|
|
||||||
exports.withRaw = withRaw;
|
|
||||||
exports.funcParam = funcParam;
|
|
||||||
exports.indexLiteral = indexLiteral;
|
|
||||||
exports.memIndexLiteral = memIndexLiteral;
|
|
||||||
|
|
||||||
var _wastParser = require("@webassemblyjs/wast-parser");
|
|
||||||
|
|
||||||
var _nodes = require("./nodes");
|
|
||||||
|
|
||||||
function numberLiteralFromRaw(rawValue) {
|
|
||||||
var instructionType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "i32";
|
|
||||||
var original = rawValue; // Remove numeric separators _
|
|
||||||
|
|
||||||
if (typeof rawValue === "string") {
|
|
||||||
rawValue = rawValue.replace(/_/g, "");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof rawValue === "number") {
|
|
||||||
return (0, _nodes.numberLiteral)(rawValue, String(original));
|
|
||||||
} else {
|
|
||||||
switch (instructionType) {
|
|
||||||
case "i32":
|
|
||||||
{
|
|
||||||
return (0, _nodes.numberLiteral)((0, _wastParser.parse32I)(rawValue), String(original));
|
|
||||||
}
|
|
||||||
|
|
||||||
case "u32":
|
|
||||||
{
|
|
||||||
return (0, _nodes.numberLiteral)((0, _wastParser.parseU32)(rawValue), String(original));
|
|
||||||
}
|
|
||||||
|
|
||||||
case "i64":
|
|
||||||
{
|
|
||||||
return (0, _nodes.longNumberLiteral)((0, _wastParser.parse64I)(rawValue), String(original));
|
|
||||||
}
|
|
||||||
|
|
||||||
case "f32":
|
|
||||||
{
|
|
||||||
return (0, _nodes.floatLiteral)((0, _wastParser.parse32F)(rawValue), (0, _wastParser.isNanLiteral)(rawValue), (0, _wastParser.isInfLiteral)(rawValue), String(original));
|
|
||||||
}
|
|
||||||
// f64
|
|
||||||
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
return (0, _nodes.floatLiteral)((0, _wastParser.parse64F)(rawValue), (0, _wastParser.isNanLiteral)(rawValue), (0, _wastParser.isInfLiteral)(rawValue), String(original));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function instruction(id) {
|
|
||||||
var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
||||||
var namedArgs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
||||||
return (0, _nodes.instr)(id, undefined, args, namedArgs);
|
|
||||||
}
|
|
||||||
|
|
||||||
function objectInstruction(id, object) {
|
|
||||||
var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
||||||
var namedArgs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
||||||
return (0, _nodes.instr)(id, object, args, namedArgs);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Decorators
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function withLoc(n, end, start) {
|
|
||||||
var loc = {
|
|
||||||
start: start,
|
|
||||||
end: end
|
|
||||||
};
|
|
||||||
n.loc = loc;
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
|
|
||||||
function withRaw(n, raw) {
|
|
||||||
n.raw = raw;
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
|
|
||||||
function funcParam(valtype, id) {
|
|
||||||
return {
|
|
||||||
id: id,
|
|
||||||
valtype: valtype
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function indexLiteral(value) {
|
|
||||||
// $FlowIgnore
|
|
||||||
var x = numberLiteralFromRaw(value, "u32");
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
|
|
||||||
function memIndexLiteral(value) {
|
|
||||||
// $FlowIgnore
|
|
||||||
var x = numberLiteralFromRaw(value, "u32");
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
144
node_modules/@webassemblyjs/ast/lib/node-path.js
generated
vendored
144
node_modules/@webassemblyjs/ast/lib/node-path.js
generated
vendored
@@ -1,144 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.createPath = createPath;
|
|
||||||
|
|
||||||
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
||||||
|
|
||||||
function findParent(_ref, cb) {
|
|
||||||
var parentPath = _ref.parentPath;
|
|
||||||
|
|
||||||
if (parentPath == null) {
|
|
||||||
throw new Error("node is root");
|
|
||||||
}
|
|
||||||
|
|
||||||
var currentPath = parentPath;
|
|
||||||
|
|
||||||
while (cb(currentPath) !== false) {
|
|
||||||
// Hit the root node, stop
|
|
||||||
// $FlowIgnore
|
|
||||||
if (currentPath.parentPath == null) {
|
|
||||||
return null;
|
|
||||||
} // $FlowIgnore
|
|
||||||
|
|
||||||
|
|
||||||
currentPath = currentPath.parentPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
return currentPath.node;
|
|
||||||
}
|
|
||||||
|
|
||||||
function insertBefore(context, newNode) {
|
|
||||||
return insert(context, newNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
function insertAfter(context, newNode) {
|
|
||||||
return insert(context, newNode, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
function insert(_ref2, newNode) {
|
|
||||||
var node = _ref2.node,
|
|
||||||
inList = _ref2.inList,
|
|
||||||
parentPath = _ref2.parentPath,
|
|
||||||
parentKey = _ref2.parentKey;
|
|
||||||
var indexOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
||||||
|
|
||||||
if (!inList) {
|
|
||||||
throw new Error('inList' + " error: " + ("insert can only be used for nodes that are within lists" || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(parentPath != null)) {
|
|
||||||
throw new Error('parentPath != null' + " error: " + ("Can not remove root node" || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// $FlowIgnore
|
|
||||||
var parentList = parentPath.node[parentKey];
|
|
||||||
var indexInList = parentList.findIndex(function (n) {
|
|
||||||
return n === node;
|
|
||||||
});
|
|
||||||
parentList.splice(indexInList + indexOffset, 0, newNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
function remove(_ref3) {
|
|
||||||
var node = _ref3.node,
|
|
||||||
parentKey = _ref3.parentKey,
|
|
||||||
parentPath = _ref3.parentPath;
|
|
||||||
|
|
||||||
if (!(parentPath != null)) {
|
|
||||||
throw new Error('parentPath != null' + " error: " + ("Can not remove root node" || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// $FlowIgnore
|
|
||||||
var parentNode = parentPath.node; // $FlowIgnore
|
|
||||||
|
|
||||||
var parentProperty = parentNode[parentKey];
|
|
||||||
|
|
||||||
if (Array.isArray(parentProperty)) {
|
|
||||||
// $FlowIgnore
|
|
||||||
parentNode[parentKey] = parentProperty.filter(function (n) {
|
|
||||||
return n !== node;
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// $FlowIgnore
|
|
||||||
delete parentNode[parentKey];
|
|
||||||
}
|
|
||||||
|
|
||||||
node._deleted = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function stop(context) {
|
|
||||||
context.shouldStop = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function replaceWith(context, newNode) {
|
|
||||||
// $FlowIgnore
|
|
||||||
var parentNode = context.parentPath.node; // $FlowIgnore
|
|
||||||
|
|
||||||
var parentProperty = parentNode[context.parentKey];
|
|
||||||
|
|
||||||
if (Array.isArray(parentProperty)) {
|
|
||||||
var indexInList = parentProperty.findIndex(function (n) {
|
|
||||||
return n === context.node;
|
|
||||||
});
|
|
||||||
parentProperty.splice(indexInList, 1, newNode);
|
|
||||||
} else {
|
|
||||||
// $FlowIgnore
|
|
||||||
parentNode[context.parentKey] = newNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
context.node._deleted = true;
|
|
||||||
context.node = newNode;
|
|
||||||
} // bind the context to the first argument of node operations
|
|
||||||
|
|
||||||
|
|
||||||
function bindNodeOperations(operations, context) {
|
|
||||||
var keys = Object.keys(operations);
|
|
||||||
var boundOperations = {};
|
|
||||||
keys.forEach(function (key) {
|
|
||||||
boundOperations[key] = operations[key].bind(null, context);
|
|
||||||
});
|
|
||||||
return boundOperations;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createPathOperations(context) {
|
|
||||||
// $FlowIgnore
|
|
||||||
return bindNodeOperations({
|
|
||||||
findParent: findParent,
|
|
||||||
replaceWith: replaceWith,
|
|
||||||
remove: remove,
|
|
||||||
insertBefore: insertBefore,
|
|
||||||
insertAfter: insertAfter,
|
|
||||||
stop: stop
|
|
||||||
}, context);
|
|
||||||
}
|
|
||||||
|
|
||||||
function createPath(context) {
|
|
||||||
var path = _extends({}, context); // $FlowIgnore
|
|
||||||
|
|
||||||
|
|
||||||
Object.assign(path, createPathOperations(path)); // $FlowIgnore
|
|
||||||
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
1134
node_modules/@webassemblyjs/ast/lib/nodes.js
generated
vendored
1134
node_modules/@webassemblyjs/ast/lib/nodes.js
generated
vendored
File diff suppressed because it is too large
Load Diff
207
node_modules/@webassemblyjs/ast/lib/signatures.js
generated
vendored
207
node_modules/@webassemblyjs/ast/lib/signatures.js
generated
vendored
@@ -1,207 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.signatures = void 0;
|
|
||||||
|
|
||||||
function sign(input, output) {
|
|
||||||
return [input, output];
|
|
||||||
}
|
|
||||||
|
|
||||||
var u32 = "u32";
|
|
||||||
var i32 = "i32";
|
|
||||||
var i64 = "i64";
|
|
||||||
var f32 = "f32";
|
|
||||||
var f64 = "f64";
|
|
||||||
|
|
||||||
var vector = function vector(t) {
|
|
||||||
var vecType = [t]; // $FlowIgnore
|
|
||||||
|
|
||||||
vecType.vector = true;
|
|
||||||
return vecType;
|
|
||||||
};
|
|
||||||
|
|
||||||
var controlInstructions = {
|
|
||||||
unreachable: sign([], []),
|
|
||||||
nop: sign([], []),
|
|
||||||
// block ?
|
|
||||||
// loop ?
|
|
||||||
// if ?
|
|
||||||
// if else ?
|
|
||||||
br: sign([u32], []),
|
|
||||||
br_if: sign([u32], []),
|
|
||||||
br_table: sign(vector(u32), []),
|
|
||||||
return: sign([], []),
|
|
||||||
call: sign([u32], []),
|
|
||||||
call_indirect: sign([u32], [])
|
|
||||||
};
|
|
||||||
var parametricInstructions = {
|
|
||||||
drop: sign([], []),
|
|
||||||
select: sign([], [])
|
|
||||||
};
|
|
||||||
var variableInstructions = {
|
|
||||||
get_local: sign([u32], []),
|
|
||||||
set_local: sign([u32], []),
|
|
||||||
tee_local: sign([u32], []),
|
|
||||||
get_global: sign([u32], []),
|
|
||||||
set_global: sign([u32], [])
|
|
||||||
};
|
|
||||||
var memoryInstructions = {
|
|
||||||
"i32.load": sign([u32, u32], [i32]),
|
|
||||||
"i64.load": sign([u32, u32], []),
|
|
||||||
"f32.load": sign([u32, u32], []),
|
|
||||||
"f64.load": sign([u32, u32], []),
|
|
||||||
"i32.load8_s": sign([u32, u32], [i32]),
|
|
||||||
"i32.load8_u": sign([u32, u32], [i32]),
|
|
||||||
"i32.load16_s": sign([u32, u32], [i32]),
|
|
||||||
"i32.load16_u": sign([u32, u32], [i32]),
|
|
||||||
"i64.load8_s": sign([u32, u32], [i64]),
|
|
||||||
"i64.load8_u": sign([u32, u32], [i64]),
|
|
||||||
"i64.load16_s": sign([u32, u32], [i64]),
|
|
||||||
"i64.load16_u": sign([u32, u32], [i64]),
|
|
||||||
"i64.load32_s": sign([u32, u32], [i64]),
|
|
||||||
"i64.load32_u": sign([u32, u32], [i64]),
|
|
||||||
"i32.store": sign([u32, u32], []),
|
|
||||||
"i64.store": sign([u32, u32], []),
|
|
||||||
"f32.store": sign([u32, u32], []),
|
|
||||||
"f64.store": sign([u32, u32], []),
|
|
||||||
"i32.store8": sign([u32, u32], []),
|
|
||||||
"i32.store16": sign([u32, u32], []),
|
|
||||||
"i64.store8": sign([u32, u32], []),
|
|
||||||
"i64.store16": sign([u32, u32], []),
|
|
||||||
"i64.store32": sign([u32, u32], []),
|
|
||||||
current_memory: sign([], []),
|
|
||||||
grow_memory: sign([], [])
|
|
||||||
};
|
|
||||||
var numericInstructions = {
|
|
||||||
"i32.const": sign([i32], [i32]),
|
|
||||||
"i64.const": sign([i64], [i64]),
|
|
||||||
"f32.const": sign([f32], [f32]),
|
|
||||||
"f64.const": sign([f64], [f64]),
|
|
||||||
"i32.eqz": sign([i32], [i32]),
|
|
||||||
"i32.eq": sign([i32, i32], [i32]),
|
|
||||||
"i32.ne": sign([i32, i32], [i32]),
|
|
||||||
"i32.lt_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.lt_u": sign([i32, i32], [i32]),
|
|
||||||
"i32.gt_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.gt_u": sign([i32, i32], [i32]),
|
|
||||||
"i32.le_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.le_u": sign([i32, i32], [i32]),
|
|
||||||
"i32.ge_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.ge_u": sign([i32, i32], [i32]),
|
|
||||||
"i64.eqz": sign([i64], [i64]),
|
|
||||||
"i64.eq": sign([i64, i64], [i32]),
|
|
||||||
"i64.ne": sign([i64, i64], [i32]),
|
|
||||||
"i64.lt_s": sign([i64, i64], [i32]),
|
|
||||||
"i64.lt_u": sign([i64, i64], [i32]),
|
|
||||||
"i64.gt_s": sign([i64, i64], [i32]),
|
|
||||||
"i64.gt_u": sign([i64, i64], [i32]),
|
|
||||||
"i64.le_s": sign([i64, i64], [i32]),
|
|
||||||
"i64.le_u": sign([i64, i64], [i32]),
|
|
||||||
"i64.ge_s": sign([i64, i64], [i32]),
|
|
||||||
"i64.ge_u": sign([i64, i64], [i32]),
|
|
||||||
"f32.eq": sign([f32, f32], [i32]),
|
|
||||||
"f32.ne": sign([f32, f32], [i32]),
|
|
||||||
"f32.lt": sign([f32, f32], [i32]),
|
|
||||||
"f32.gt": sign([f32, f32], [i32]),
|
|
||||||
"f32.le": sign([f32, f32], [i32]),
|
|
||||||
"f32.ge": sign([f32, f32], [i32]),
|
|
||||||
"f64.eq": sign([f64, f64], [i32]),
|
|
||||||
"f64.ne": sign([f64, f64], [i32]),
|
|
||||||
"f64.lt": sign([f64, f64], [i32]),
|
|
||||||
"f64.gt": sign([f64, f64], [i32]),
|
|
||||||
"f64.le": sign([f64, f64], [i32]),
|
|
||||||
"f64.ge": sign([f64, f64], [i32]),
|
|
||||||
"i32.clz": sign([i32], [i32]),
|
|
||||||
"i32.ctz": sign([i32], [i32]),
|
|
||||||
"i32.popcnt": sign([i32], [i32]),
|
|
||||||
"i32.add": sign([i32, i32], [i32]),
|
|
||||||
"i32.sub": sign([i32, i32], [i32]),
|
|
||||||
"i32.mul": sign([i32, i32], [i32]),
|
|
||||||
"i32.div_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.div_u": sign([i32, i32], [i32]),
|
|
||||||
"i32.rem_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.rem_u": sign([i32, i32], [i32]),
|
|
||||||
"i32.and": sign([i32, i32], [i32]),
|
|
||||||
"i32.or": sign([i32, i32], [i32]),
|
|
||||||
"i32.xor": sign([i32, i32], [i32]),
|
|
||||||
"i32.shl": sign([i32, i32], [i32]),
|
|
||||||
"i32.shr_s": sign([i32, i32], [i32]),
|
|
||||||
"i32.shr_u": sign([i32, i32], [i32]),
|
|
||||||
"i32.rotl": sign([i32, i32], [i32]),
|
|
||||||
"i32.rotr": sign([i32, i32], [i32]),
|
|
||||||
"i64.clz": sign([i64], [i64]),
|
|
||||||
"i64.ctz": sign([i64], [i64]),
|
|
||||||
"i64.popcnt": sign([i64], [i64]),
|
|
||||||
"i64.add": sign([i64, i64], [i64]),
|
|
||||||
"i64.sub": sign([i64, i64], [i64]),
|
|
||||||
"i64.mul": sign([i64, i64], [i64]),
|
|
||||||
"i64.div_s": sign([i64, i64], [i64]),
|
|
||||||
"i64.div_u": sign([i64, i64], [i64]),
|
|
||||||
"i64.rem_s": sign([i64, i64], [i64]),
|
|
||||||
"i64.rem_u": sign([i64, i64], [i64]),
|
|
||||||
"i64.and": sign([i64, i64], [i64]),
|
|
||||||
"i64.or": sign([i64, i64], [i64]),
|
|
||||||
"i64.xor": sign([i64, i64], [i64]),
|
|
||||||
"i64.shl": sign([i64, i64], [i64]),
|
|
||||||
"i64.shr_s": sign([i64, i64], [i64]),
|
|
||||||
"i64.shr_u": sign([i64, i64], [i64]),
|
|
||||||
"i64.rotl": sign([i64, i64], [i64]),
|
|
||||||
"i64.rotr": sign([i64, i64], [i64]),
|
|
||||||
"f32.abs": sign([f32], [f32]),
|
|
||||||
"f32.neg": sign([f32], [f32]),
|
|
||||||
"f32.ceil": sign([f32], [f32]),
|
|
||||||
"f32.floor": sign([f32], [f32]),
|
|
||||||
"f32.trunc": sign([f32], [f32]),
|
|
||||||
"f32.nearest": sign([f32], [f32]),
|
|
||||||
"f32.sqrt": sign([f32], [f32]),
|
|
||||||
"f32.add": sign([f32, f32], [f32]),
|
|
||||||
"f32.sub": sign([f32, f32], [f32]),
|
|
||||||
"f32.mul": sign([f32, f32], [f32]),
|
|
||||||
"f32.div": sign([f32, f32], [f32]),
|
|
||||||
"f32.min": sign([f32, f32], [f32]),
|
|
||||||
"f32.max": sign([f32, f32], [f32]),
|
|
||||||
"f32.copysign": sign([f32, f32], [f32]),
|
|
||||||
"f64.abs": sign([f64], [f64]),
|
|
||||||
"f64.neg": sign([f64], [f64]),
|
|
||||||
"f64.ceil": sign([f64], [f64]),
|
|
||||||
"f64.floor": sign([f64], [f64]),
|
|
||||||
"f64.trunc": sign([f64], [f64]),
|
|
||||||
"f64.nearest": sign([f64], [f64]),
|
|
||||||
"f64.sqrt": sign([f64], [f64]),
|
|
||||||
"f64.add": sign([f64, f64], [f64]),
|
|
||||||
"f64.sub": sign([f64, f64], [f64]),
|
|
||||||
"f64.mul": sign([f64, f64], [f64]),
|
|
||||||
"f64.div": sign([f64, f64], [f64]),
|
|
||||||
"f64.min": sign([f64, f64], [f64]),
|
|
||||||
"f64.max": sign([f64, f64], [f64]),
|
|
||||||
"f64.copysign": sign([f64, f64], [f64]),
|
|
||||||
"i32.wrap/i64": sign([i64], [i32]),
|
|
||||||
"i32.trunc_s/f32": sign([f32], [i32]),
|
|
||||||
"i32.trunc_u/f32": sign([f32], [i32]),
|
|
||||||
"i32.trunc_s/f64": sign([f32], [i32]),
|
|
||||||
"i32.trunc_u/f64": sign([f64], [i32]),
|
|
||||||
"i64.extend_s/i32": sign([i32], [i64]),
|
|
||||||
"i64.extend_u/i32": sign([i32], [i64]),
|
|
||||||
"i64.trunc_s/f32": sign([f32], [i64]),
|
|
||||||
"i64.trunc_u/f32": sign([f32], [i64]),
|
|
||||||
"i64.trunc_s/f64": sign([f64], [i64]),
|
|
||||||
"i64.trunc_u/f64": sign([f64], [i64]),
|
|
||||||
"f32.convert_s/i32": sign([i32], [f32]),
|
|
||||||
"f32.convert_u/i32": sign([i32], [f32]),
|
|
||||||
"f32.convert_s/i64": sign([i64], [f32]),
|
|
||||||
"f32.convert_u/i64": sign([i64], [f32]),
|
|
||||||
"f32.demote/f64": sign([f64], [f32]),
|
|
||||||
"f64.convert_s/i32": sign([i32], [f64]),
|
|
||||||
"f64.convert_u/i32": sign([i32], [f64]),
|
|
||||||
"f64.convert_s/i64": sign([i64], [f64]),
|
|
||||||
"f64.convert_u/i64": sign([i64], [f64]),
|
|
||||||
"f64.promote/f32": sign([f32], [f64]),
|
|
||||||
"i32.reinterpret/f32": sign([f32], [i32]),
|
|
||||||
"i64.reinterpret/f64": sign([f64], [i64]),
|
|
||||||
"f32.reinterpret/i32": sign([i32], [f32]),
|
|
||||||
"f64.reinterpret/i64": sign([i64], [f64])
|
|
||||||
};
|
|
||||||
var signatures = Object.assign({}, controlInstructions, parametricInstructions, variableInstructions, memoryInstructions, numericInstructions);
|
|
||||||
exports.signatures = signatures;
|
|
||||||
83
node_modules/@webassemblyjs/ast/lib/transform/denormalize-type-references/index.js
generated
vendored
83
node_modules/@webassemblyjs/ast/lib/transform/denormalize-type-references/index.js
generated
vendored
@@ -1,83 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.transform = transform;
|
|
||||||
|
|
||||||
var t = require("../../index"); // func and call_indirect instructions can either define a signature inline, or
|
|
||||||
// reference a signature, e.g.
|
|
||||||
//
|
|
||||||
// ;; inline signature
|
|
||||||
// (func (result i64)
|
|
||||||
// (i64.const 2)
|
|
||||||
// )
|
|
||||||
// ;; signature reference
|
|
||||||
// (type (func (result i64)))
|
|
||||||
// (func (type 0)
|
|
||||||
// (i64.const 2))
|
|
||||||
// )
|
|
||||||
//
|
|
||||||
// this AST transform denormalises the type references, making all signatures within the module
|
|
||||||
// inline.
|
|
||||||
|
|
||||||
|
|
||||||
function transform(ast) {
|
|
||||||
var typeInstructions = [];
|
|
||||||
t.traverse(ast, {
|
|
||||||
TypeInstruction: function TypeInstruction(_ref) {
|
|
||||||
var node = _ref.node;
|
|
||||||
typeInstructions.push(node);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!typeInstructions.length) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
function denormalizeSignature(signature) {
|
|
||||||
// signature referenced by identifier
|
|
||||||
if (signature.type === "Identifier") {
|
|
||||||
var identifier = signature;
|
|
||||||
var typeInstruction = typeInstructions.find(function (t) {
|
|
||||||
return t.id.type === identifier.type && t.id.value === identifier.value;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!typeInstruction) {
|
|
||||||
throw new Error("A type instruction reference was not found ".concat(JSON.stringify(signature)));
|
|
||||||
}
|
|
||||||
|
|
||||||
return typeInstruction.functype;
|
|
||||||
} // signature referenced by index
|
|
||||||
|
|
||||||
|
|
||||||
if (signature.type === "NumberLiteral") {
|
|
||||||
var signatureRef = signature;
|
|
||||||
var _typeInstruction = typeInstructions[signatureRef.value];
|
|
||||||
return _typeInstruction.functype;
|
|
||||||
}
|
|
||||||
|
|
||||||
return signature;
|
|
||||||
}
|
|
||||||
|
|
||||||
t.traverse(ast, {
|
|
||||||
Func: function (_Func) {
|
|
||||||
function Func(_x) {
|
|
||||||
return _Func.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
Func.toString = function () {
|
|
||||||
return _Func.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return Func;
|
|
||||||
}(function (_ref2) {
|
|
||||||
var node = _ref2.node;
|
|
||||||
node.signature = denormalizeSignature(node.signature);
|
|
||||||
}),
|
|
||||||
CallIndirectInstruction: function CallIndirectInstruction(_ref3) {
|
|
||||||
var node = _ref3.node;
|
|
||||||
node.signature = denormalizeSignature(node.signature);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
225
node_modules/@webassemblyjs/ast/lib/transform/wast-identifier-to-index/index.js
generated
vendored
225
node_modules/@webassemblyjs/ast/lib/transform/wast-identifier-to-index/index.js
generated
vendored
@@ -1,225 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.transform = transform;
|
|
||||||
|
|
||||||
var _index = require("../../index");
|
|
||||||
|
|
||||||
var _helperModuleContext = require("@webassemblyjs/helper-module-context");
|
|
||||||
|
|
||||||
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
||||||
|
|
||||||
function _sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
||||||
|
|
||||||
function _slicedToArray(arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return _sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }
|
|
||||||
|
|
||||||
// FIXME(sven): do the same with all block instructions, must be more generic here
|
|
||||||
function newUnexpectedFunction(i) {
|
|
||||||
return new Error("unknown function at offset: " + i);
|
|
||||||
}
|
|
||||||
|
|
||||||
function transform(ast) {
|
|
||||||
var module;
|
|
||||||
(0, _index.traverse)(ast, {
|
|
||||||
Module: function (_Module) {
|
|
||||||
function Module(_x) {
|
|
||||||
return _Module.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
Module.toString = function () {
|
|
||||||
return _Module.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return Module;
|
|
||||||
}(function (path) {
|
|
||||||
module = path.node;
|
|
||||||
})
|
|
||||||
});
|
|
||||||
var moduleContext = (0, _helperModuleContext.moduleContextFromModuleAST)(module); // Transform the actual instruction in function bodies
|
|
||||||
|
|
||||||
(0, _index.traverse)(ast, {
|
|
||||||
Func: function (_Func) {
|
|
||||||
function Func(_x2) {
|
|
||||||
return _Func.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
Func.toString = function () {
|
|
||||||
return _Func.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return Func;
|
|
||||||
}(function (path) {
|
|
||||||
transformFuncPath(path, moduleContext);
|
|
||||||
}),
|
|
||||||
Start: function (_Start) {
|
|
||||||
function Start(_x3) {
|
|
||||||
return _Start.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
Start.toString = function () {
|
|
||||||
return _Start.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return Start;
|
|
||||||
}(function (path) {
|
|
||||||
var index = path.node.index;
|
|
||||||
|
|
||||||
if ((0, _index.isIdentifier)(index) === true) {
|
|
||||||
var offsetInModule = moduleContext.getFunctionOffsetByIdentifier(index.value);
|
|
||||||
|
|
||||||
if (typeof offsetInModule === "undefined") {
|
|
||||||
throw newUnexpectedFunction(index.value);
|
|
||||||
} // Replace the index Identifier
|
|
||||||
// $FlowIgnore: reference?
|
|
||||||
|
|
||||||
|
|
||||||
path.node.index = (0, _index.numberLiteralFromRaw)(offsetInModule);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function transformFuncPath(funcPath, moduleContext) {
|
|
||||||
var funcNode = funcPath.node;
|
|
||||||
var signature = funcNode.signature;
|
|
||||||
|
|
||||||
if (signature.type !== "Signature") {
|
|
||||||
throw new Error("Function signatures must be denormalised before execution");
|
|
||||||
}
|
|
||||||
|
|
||||||
var params = signature.params; // Add func locals in the context
|
|
||||||
|
|
||||||
params.forEach(function (p) {
|
|
||||||
return moduleContext.addLocal(p.valtype);
|
|
||||||
});
|
|
||||||
(0, _index.traverse)(funcNode, {
|
|
||||||
Instr: function (_Instr) {
|
|
||||||
function Instr(_x4) {
|
|
||||||
return _Instr.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
Instr.toString = function () {
|
|
||||||
return _Instr.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return Instr;
|
|
||||||
}(function (instrPath) {
|
|
||||||
var instrNode = instrPath.node;
|
|
||||||
/**
|
|
||||||
* Local access
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (instrNode.id === "get_local" || instrNode.id === "set_local" || instrNode.id === "tee_local") {
|
|
||||||
var _instrNode$args = _slicedToArray(instrNode.args, 1),
|
|
||||||
firstArg = _instrNode$args[0];
|
|
||||||
|
|
||||||
if (firstArg.type === "Identifier") {
|
|
||||||
var offsetInParams = params.findIndex(function (_ref) {
|
|
||||||
var id = _ref.id;
|
|
||||||
return id === firstArg.value;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (offsetInParams === -1) {
|
|
||||||
throw new Error("".concat(firstArg.value, " not found in ").concat(instrNode.id, ": not declared in func params"));
|
|
||||||
} // Replace the Identifer node by our new NumberLiteral node
|
|
||||||
|
|
||||||
|
|
||||||
instrNode.args[0] = (0, _index.numberLiteralFromRaw)(offsetInParams);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Global access
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
if (instrNode.id === "get_global" || instrNode.id === "set_global") {
|
|
||||||
var _instrNode$args2 = _slicedToArray(instrNode.args, 1),
|
|
||||||
_firstArg = _instrNode$args2[0];
|
|
||||||
|
|
||||||
if ((0, _index.isIdentifier)(_firstArg) === true) {
|
|
||||||
var globalOffset = moduleContext.getGlobalOffsetByIdentifier( // $FlowIgnore: reference?
|
|
||||||
_firstArg.value);
|
|
||||||
|
|
||||||
if (typeof globalOffset === "undefined") {
|
|
||||||
// $FlowIgnore: reference?
|
|
||||||
throw new Error("global ".concat(_firstArg.value, " not found in module"));
|
|
||||||
} // Replace the Identifer node by our new NumberLiteral node
|
|
||||||
|
|
||||||
|
|
||||||
instrNode.args[0] = (0, _index.numberLiteralFromRaw)(globalOffset);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Labels lookup
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
if (instrNode.id === "br") {
|
|
||||||
var _instrNode$args3 = _slicedToArray(instrNode.args, 1),
|
|
||||||
_firstArg2 = _instrNode$args3[0];
|
|
||||||
|
|
||||||
if ((0, _index.isIdentifier)(_firstArg2) === true) {
|
|
||||||
// if the labels is not found it is going to be replaced with -1
|
|
||||||
// which is invalid.
|
|
||||||
var relativeBlockCount = -1; // $FlowIgnore: reference?
|
|
||||||
|
|
||||||
instrPath.findParent(function (_ref2) {
|
|
||||||
var node = _ref2.node;
|
|
||||||
|
|
||||||
if ((0, _index.isBlock)(node)) {
|
|
||||||
relativeBlockCount++; // $FlowIgnore: reference?
|
|
||||||
|
|
||||||
var name = node.label || node.name;
|
|
||||||
|
|
||||||
if (_typeof(name) === "object") {
|
|
||||||
// $FlowIgnore: isIdentifier ensures that
|
|
||||||
if (name.value === _firstArg2.value) {
|
|
||||||
// Found it
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((0, _index.isFunc)(node)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}); // Replace the Identifer node by our new NumberLiteral node
|
|
||||||
|
|
||||||
instrNode.args[0] = (0, _index.numberLiteralFromRaw)(relativeBlockCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Func lookup
|
|
||||||
*/
|
|
||||||
CallInstruction: function (_CallInstruction) {
|
|
||||||
function CallInstruction(_x5) {
|
|
||||||
return _CallInstruction.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
CallInstruction.toString = function () {
|
|
||||||
return _CallInstruction.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return CallInstruction;
|
|
||||||
}(function (_ref3) {
|
|
||||||
var node = _ref3.node;
|
|
||||||
var index = node.index;
|
|
||||||
|
|
||||||
if ((0, _index.isIdentifier)(index) === true) {
|
|
||||||
var offsetInModule = moduleContext.getFunctionOffsetByIdentifier(index.value);
|
|
||||||
|
|
||||||
if (typeof offsetInModule === "undefined") {
|
|
||||||
throw newUnexpectedFunction(index.value);
|
|
||||||
} // Replace the index Identifier
|
|
||||||
// $FlowIgnore: reference?
|
|
||||||
|
|
||||||
|
|
||||||
node.index = (0, _index.numberLiteralFromRaw)(offsetInModule);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
105
node_modules/@webassemblyjs/ast/lib/traverse.js
generated
vendored
105
node_modules/@webassemblyjs/ast/lib/traverse.js
generated
vendored
@@ -1,105 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.traverse = traverse;
|
|
||||||
|
|
||||||
var _nodePath = require("./node-path");
|
|
||||||
|
|
||||||
var _nodes = require("./nodes");
|
|
||||||
|
|
||||||
// recursively walks the AST starting at the given node. The callback is invoked for
|
|
||||||
// and object that has a 'type' property.
|
|
||||||
function walk(context, callback) {
|
|
||||||
var stop = false;
|
|
||||||
|
|
||||||
function innerWalk(context, callback) {
|
|
||||||
if (stop) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var node = context.node;
|
|
||||||
|
|
||||||
if (node === undefined) {
|
|
||||||
console.warn("traversing with an empty context");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (node._deleted === true) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var path = (0, _nodePath.createPath)(context);
|
|
||||||
callback(node.type, path);
|
|
||||||
|
|
||||||
if (path.shouldStop) {
|
|
||||||
stop = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Object.keys(node).forEach(function (prop) {
|
|
||||||
var value = node[prop];
|
|
||||||
|
|
||||||
if (value === null || value === undefined) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var valueAsArray = Array.isArray(value) ? value : [value];
|
|
||||||
valueAsArray.forEach(function (childNode) {
|
|
||||||
if (typeof childNode.type === "string") {
|
|
||||||
var childContext = {
|
|
||||||
node: childNode,
|
|
||||||
parentKey: prop,
|
|
||||||
parentPath: path,
|
|
||||||
shouldStop: false,
|
|
||||||
inList: Array.isArray(value)
|
|
||||||
};
|
|
||||||
innerWalk(childContext, callback);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
innerWalk(context, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
var noop = function noop() {};
|
|
||||||
|
|
||||||
function traverse(node, visitors) {
|
|
||||||
var before = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : noop;
|
|
||||||
var after = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;
|
|
||||||
Object.keys(visitors).forEach(function (visitor) {
|
|
||||||
if (!_nodes.nodeAndUnionTypes.includes(visitor)) {
|
|
||||||
throw new Error("Unexpected visitor ".concat(visitor));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
var context = {
|
|
||||||
node: node,
|
|
||||||
inList: false,
|
|
||||||
shouldStop: false,
|
|
||||||
parentPath: null,
|
|
||||||
parentKey: null
|
|
||||||
};
|
|
||||||
walk(context, function (type, path) {
|
|
||||||
if (typeof visitors[type] === "function") {
|
|
||||||
before(type, path);
|
|
||||||
visitors[type](path);
|
|
||||||
after(type, path);
|
|
||||||
}
|
|
||||||
|
|
||||||
var unionTypes = _nodes.unionTypesMap[type];
|
|
||||||
|
|
||||||
if (!unionTypes) {
|
|
||||||
throw new Error("Unexpected node type ".concat(type));
|
|
||||||
}
|
|
||||||
|
|
||||||
unionTypes.forEach(function (unionType) {
|
|
||||||
if (typeof visitors[unionType] === "function") {
|
|
||||||
before(unionType, path);
|
|
||||||
visitors[unionType](path);
|
|
||||||
after(unionType, path);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
0
node_modules/@webassemblyjs/ast/lib/types/basic.js
generated
vendored
0
node_modules/@webassemblyjs/ast/lib/types/basic.js
generated
vendored
0
node_modules/@webassemblyjs/ast/lib/types/nodes.js
generated
vendored
0
node_modules/@webassemblyjs/ast/lib/types/nodes.js
generated
vendored
0
node_modules/@webassemblyjs/ast/lib/types/traverse.js
generated
vendored
0
node_modules/@webassemblyjs/ast/lib/types/traverse.js
generated
vendored
306
node_modules/@webassemblyjs/ast/lib/utils.js
generated
vendored
306
node_modules/@webassemblyjs/ast/lib/utils.js
generated
vendored
@@ -1,306 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.isAnonymous = isAnonymous;
|
|
||||||
exports.getSectionMetadata = getSectionMetadata;
|
|
||||||
exports.getSectionMetadatas = getSectionMetadatas;
|
|
||||||
exports.sortSectionMetadata = sortSectionMetadata;
|
|
||||||
exports.orderedInsertNode = orderedInsertNode;
|
|
||||||
exports.assertHasLoc = assertHasLoc;
|
|
||||||
exports.getEndOfSection = getEndOfSection;
|
|
||||||
exports.shiftLoc = shiftLoc;
|
|
||||||
exports.shiftSection = shiftSection;
|
|
||||||
exports.signatureForOpcode = signatureForOpcode;
|
|
||||||
exports.getUniqueNameGenerator = getUniqueNameGenerator;
|
|
||||||
exports.getStartByteOffset = getStartByteOffset;
|
|
||||||
exports.getEndByteOffset = getEndByteOffset;
|
|
||||||
exports.getFunctionBeginingByteOffset = getFunctionBeginingByteOffset;
|
|
||||||
exports.getEndBlockByteOffset = getEndBlockByteOffset;
|
|
||||||
exports.getStartBlockByteOffset = getStartBlockByteOffset;
|
|
||||||
|
|
||||||
var _signatures = require("./signatures");
|
|
||||||
|
|
||||||
var _traverse = require("./traverse");
|
|
||||||
|
|
||||||
var _helperWasmBytecode = _interopRequireWildcard(require("@webassemblyjs/helper-wasm-bytecode"));
|
|
||||||
|
|
||||||
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
|
|
||||||
|
|
||||||
function _sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
||||||
|
|
||||||
function _slicedToArray(arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return _sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }
|
|
||||||
|
|
||||||
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
||||||
|
|
||||||
function isAnonymous(ident) {
|
|
||||||
return ident.raw === "";
|
|
||||||
}
|
|
||||||
|
|
||||||
function getSectionMetadata(ast, name) {
|
|
||||||
var section;
|
|
||||||
(0, _traverse.traverse)(ast, {
|
|
||||||
SectionMetadata: function (_SectionMetadata) {
|
|
||||||
function SectionMetadata(_x) {
|
|
||||||
return _SectionMetadata.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
SectionMetadata.toString = function () {
|
|
||||||
return _SectionMetadata.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return SectionMetadata;
|
|
||||||
}(function (_ref) {
|
|
||||||
var node = _ref.node;
|
|
||||||
|
|
||||||
if (node.section === name) {
|
|
||||||
section = node;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
return section;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getSectionMetadatas(ast, name) {
|
|
||||||
var sections = [];
|
|
||||||
(0, _traverse.traverse)(ast, {
|
|
||||||
SectionMetadata: function (_SectionMetadata2) {
|
|
||||||
function SectionMetadata(_x2) {
|
|
||||||
return _SectionMetadata2.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
SectionMetadata.toString = function () {
|
|
||||||
return _SectionMetadata2.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
return SectionMetadata;
|
|
||||||
}(function (_ref2) {
|
|
||||||
var node = _ref2.node;
|
|
||||||
|
|
||||||
if (node.section === name) {
|
|
||||||
sections.push(node);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
return sections;
|
|
||||||
}
|
|
||||||
|
|
||||||
function sortSectionMetadata(m) {
|
|
||||||
if (m.metadata == null) {
|
|
||||||
console.warn("sortSectionMetadata: no metadata to sort");
|
|
||||||
return;
|
|
||||||
} // $FlowIgnore
|
|
||||||
|
|
||||||
|
|
||||||
m.metadata.sections.sort(function (a, b) {
|
|
||||||
var aId = _helperWasmBytecode.default.sections[a.section];
|
|
||||||
var bId = _helperWasmBytecode.default.sections[b.section];
|
|
||||||
|
|
||||||
if (typeof aId !== "number" || typeof bId !== "number") {
|
|
||||||
throw new Error("Section id not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
return aId - bId;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function orderedInsertNode(m, n) {
|
|
||||||
assertHasLoc(n);
|
|
||||||
var didInsert = false;
|
|
||||||
|
|
||||||
if (n.type === "ModuleExport") {
|
|
||||||
m.fields.push(n);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m.fields = m.fields.reduce(function (acc, field) {
|
|
||||||
var fieldEndCol = Infinity;
|
|
||||||
|
|
||||||
if (field.loc != null) {
|
|
||||||
// $FlowIgnore
|
|
||||||
fieldEndCol = field.loc.end.column;
|
|
||||||
} // $FlowIgnore: assertHasLoc ensures that
|
|
||||||
|
|
||||||
|
|
||||||
if (didInsert === false && n.loc.start.column < fieldEndCol) {
|
|
||||||
didInsert = true;
|
|
||||||
acc.push(n);
|
|
||||||
}
|
|
||||||
|
|
||||||
acc.push(field);
|
|
||||||
return acc;
|
|
||||||
}, []); // Handles empty modules or n is the last element
|
|
||||||
|
|
||||||
if (didInsert === false) {
|
|
||||||
m.fields.push(n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function assertHasLoc(n) {
|
|
||||||
if (n.loc == null || n.loc.start == null || n.loc.end == null) {
|
|
||||||
throw new Error("Internal failure: node (".concat(JSON.stringify(n.type), ") has no location information"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getEndOfSection(s) {
|
|
||||||
assertHasLoc(s.size);
|
|
||||||
return s.startOffset + s.size.value + ( // $FlowIgnore
|
|
||||||
s.size.loc.end.column - s.size.loc.start.column);
|
|
||||||
}
|
|
||||||
|
|
||||||
function shiftLoc(node, delta) {
|
|
||||||
// $FlowIgnore
|
|
||||||
node.loc.start.column += delta; // $FlowIgnore
|
|
||||||
|
|
||||||
node.loc.end.column += delta;
|
|
||||||
}
|
|
||||||
|
|
||||||
function shiftSection(ast, node, delta) {
|
|
||||||
if (node.type !== "SectionMetadata") {
|
|
||||||
throw new Error("Can not shift node " + JSON.stringify(node.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
node.startOffset += delta;
|
|
||||||
|
|
||||||
if (_typeof(node.size.loc) === "object") {
|
|
||||||
shiftLoc(node.size, delta);
|
|
||||||
} // Custom sections doesn't have vectorOfSize
|
|
||||||
|
|
||||||
|
|
||||||
if (_typeof(node.vectorOfSize) === "object" && _typeof(node.vectorOfSize.loc) === "object") {
|
|
||||||
shiftLoc(node.vectorOfSize, delta);
|
|
||||||
}
|
|
||||||
|
|
||||||
var sectionName = node.section; // shift node locations within that section
|
|
||||||
|
|
||||||
(0, _traverse.traverse)(ast, {
|
|
||||||
Node: function Node(_ref3) {
|
|
||||||
var node = _ref3.node;
|
|
||||||
var section = (0, _helperWasmBytecode.getSectionForNode)(node);
|
|
||||||
|
|
||||||
if (section === sectionName && _typeof(node.loc) === "object") {
|
|
||||||
shiftLoc(node, delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function signatureForOpcode(object, name) {
|
|
||||||
var opcodeName = name;
|
|
||||||
|
|
||||||
if (object !== undefined && object !== "") {
|
|
||||||
opcodeName = object + "." + name;
|
|
||||||
}
|
|
||||||
|
|
||||||
var sign = _signatures.signatures[opcodeName];
|
|
||||||
|
|
||||||
if (sign == undefined) {
|
|
||||||
// TODO: Uncomment this when br_table and others has been done
|
|
||||||
//throw new Error("Invalid opcode: "+opcodeName);
|
|
||||||
return [object, object];
|
|
||||||
}
|
|
||||||
|
|
||||||
return sign[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
function getUniqueNameGenerator() {
|
|
||||||
var inc = {};
|
|
||||||
return function () {
|
|
||||||
var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "temp";
|
|
||||||
|
|
||||||
if (!(prefix in inc)) {
|
|
||||||
inc[prefix] = 0;
|
|
||||||
} else {
|
|
||||||
inc[prefix] = inc[prefix] + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return prefix + "_" + inc[prefix];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function getStartByteOffset(n) {
|
|
||||||
// $FlowIgnore
|
|
||||||
if (typeof n.loc === "undefined" || typeof n.loc.start === "undefined") {
|
|
||||||
throw new Error( // $FlowIgnore
|
|
||||||
"Can not get byte offset without loc informations, node: " + String(n.id));
|
|
||||||
}
|
|
||||||
|
|
||||||
return n.loc.start.column;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getEndByteOffset(n) {
|
|
||||||
// $FlowIgnore
|
|
||||||
if (typeof n.loc === "undefined" || typeof n.loc.end === "undefined") {
|
|
||||||
throw new Error("Can not get byte offset without loc informations, node: " + n.type);
|
|
||||||
}
|
|
||||||
|
|
||||||
return n.loc.end.column;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getFunctionBeginingByteOffset(n) {
|
|
||||||
if (!(n.body.length > 0)) {
|
|
||||||
throw new Error('n.body.length > 0' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var _n$body = _slicedToArray(n.body, 1),
|
|
||||||
firstInstruction = _n$body[0];
|
|
||||||
|
|
||||||
return getStartByteOffset(firstInstruction);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getEndBlockByteOffset(n) {
|
|
||||||
// $FlowIgnore
|
|
||||||
if (!(n.instr.length > 0 || n.body.length > 0)) {
|
|
||||||
throw new Error('n.instr.length > 0 || n.body.length > 0' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var lastInstruction;
|
|
||||||
|
|
||||||
if (n.instr) {
|
|
||||||
// $FlowIgnore
|
|
||||||
lastInstruction = n.instr[n.instr.length - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (n.body) {
|
|
||||||
// $FlowIgnore
|
|
||||||
lastInstruction = n.body[n.body.length - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(lastInstruction) === "object")) {
|
|
||||||
throw new Error('typeof lastInstruction === "object"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// $FlowIgnore
|
|
||||||
return getStartByteOffset(lastInstruction);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getStartBlockByteOffset(n) {
|
|
||||||
// $FlowIgnore
|
|
||||||
if (!(n.instr.length > 0 || n.body.length > 0)) {
|
|
||||||
throw new Error('n.instr.length > 0 || n.body.length > 0' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var fistInstruction;
|
|
||||||
|
|
||||||
if (n.instr) {
|
|
||||||
// $FlowIgnore
|
|
||||||
var _n$instr = _slicedToArray(n.instr, 1);
|
|
||||||
|
|
||||||
fistInstruction = _n$instr[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (n.body) {
|
|
||||||
// $FlowIgnore
|
|
||||||
var _n$body2 = _slicedToArray(n.body, 1);
|
|
||||||
|
|
||||||
fistInstruction = _n$body2[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(_typeof(fistInstruction) === "object")) {
|
|
||||||
throw new Error('typeof fistInstruction === "object"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// $FlowIgnore
|
|
||||||
return getStartByteOffset(fistInstruction);
|
|
||||||
}
|
|
||||||
33
node_modules/@webassemblyjs/ast/package.json
generated
vendored
33
node_modules/@webassemblyjs/ast/package.json
generated
vendored
@@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@webassemblyjs/ast",
|
|
||||||
"version": "1.9.0",
|
|
||||||
"description": "AST utils for webassemblyjs",
|
|
||||||
"keywords": [
|
|
||||||
"webassembly",
|
|
||||||
"javascript",
|
|
||||||
"ast"
|
|
||||||
],
|
|
||||||
"main": "lib/index.js",
|
|
||||||
"module": "esm/index.js",
|
|
||||||
"author": "Sven Sauleau",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@webassemblyjs/helper-module-context": "1.9.0",
|
|
||||||
"@webassemblyjs/helper-wasm-bytecode": "1.9.0",
|
|
||||||
"@webassemblyjs/wast-parser": "1.9.0"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/xtuc/webassemblyjs.git"
|
|
||||||
},
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@webassemblyjs/helper-test-framework": "1.9.0",
|
|
||||||
"array.prototype.flatmap": "^1.2.1",
|
|
||||||
"dump-exports": "^0.1.0",
|
|
||||||
"mamacro": "^0.0.7"
|
|
||||||
},
|
|
||||||
"gitHead": "0440b420888c1f7701eb9762ec657775506b87d8"
|
|
||||||
}
|
|
||||||
219
node_modules/@webassemblyjs/ast/scripts/generateNodeUtils.js
generated
vendored
219
node_modules/@webassemblyjs/ast/scripts/generateNodeUtils.js
generated
vendored
@@ -1,219 +0,0 @@
|
|||||||
const definitions = require("../src/definitions");
|
|
||||||
const flatMap = require("array.prototype.flatmap");
|
|
||||||
const {
|
|
||||||
typeSignature,
|
|
||||||
iterateProps,
|
|
||||||
mapProps,
|
|
||||||
filterProps,
|
|
||||||
unique
|
|
||||||
} = require("./util");
|
|
||||||
|
|
||||||
const stdout = process.stdout;
|
|
||||||
|
|
||||||
const jsTypes = ["string", "number", "boolean"];
|
|
||||||
|
|
||||||
const quote = value => `"${value}"`;
|
|
||||||
|
|
||||||
function params(fields) {
|
|
||||||
const optionalDefault = field => (field.default ? ` = ${field.default}` : "");
|
|
||||||
return mapProps(fields)
|
|
||||||
.map(field => `${typeSignature(field)}${optionalDefault(field)}`)
|
|
||||||
.join(",");
|
|
||||||
}
|
|
||||||
|
|
||||||
function assertParamType({ assertNodeType, array, name, type }) {
|
|
||||||
if (array) {
|
|
||||||
// TODO - assert contents of array?
|
|
||||||
return `assert(typeof ${name} === "object" && typeof ${name}.length !== "undefined")\n`;
|
|
||||||
} else {
|
|
||||||
if (jsTypes.includes(type)) {
|
|
||||||
return `assert(
|
|
||||||
typeof ${name} === "${type}",
|
|
||||||
"Argument ${name} must be of type ${type}, given: " + typeof ${name}
|
|
||||||
)`;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (assertNodeType === true) {
|
|
||||||
return `assert(
|
|
||||||
${name}.type === "${type}",
|
|
||||||
"Argument ${name} must be of type ${type}, given: " + ${name}.type
|
|
||||||
)`;
|
|
||||||
}
|
|
||||||
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function assertParam(meta) {
|
|
||||||
const paramAssertion = assertParamType(meta);
|
|
||||||
|
|
||||||
if (paramAssertion === "") {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (meta.maybe || meta.optional) {
|
|
||||||
return `
|
|
||||||
if (${meta.name} !== null && ${meta.name} !== undefined) {
|
|
||||||
${paramAssertion};
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
} else {
|
|
||||||
return paramAssertion;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function assertParams(fields) {
|
|
||||||
return mapProps(fields)
|
|
||||||
.map(assertParam)
|
|
||||||
.join("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
function buildObject(typeDef) {
|
|
||||||
const optionalField = meta => {
|
|
||||||
if (meta.array) {
|
|
||||||
// omit optional array properties if the constructor function was supplied
|
|
||||||
// with an empty array
|
|
||||||
return `
|
|
||||||
if (typeof ${meta.name} !== "undefined" && ${meta.name}.length > 0) {
|
|
||||||
node.${meta.name} = ${meta.name};
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
} else if (meta.type === "Object") {
|
|
||||||
// omit optional object properties if they have no keys
|
|
||||||
return `
|
|
||||||
if (typeof ${meta.name} !== "undefined" && Object.keys(${
|
|
||||||
meta.name
|
|
||||||
}).length !== 0) {
|
|
||||||
node.${meta.name} = ${meta.name};
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
} else if (meta.type === "boolean") {
|
|
||||||
// omit optional boolean properties if they are not true
|
|
||||||
return `
|
|
||||||
if (${meta.name} === true) {
|
|
||||||
node.${meta.name} = true;
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
} else {
|
|
||||||
return `
|
|
||||||
if (typeof ${meta.name} !== "undefined") {
|
|
||||||
node.${meta.name} = ${meta.name};
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const fields = mapProps(typeDef.fields)
|
|
||||||
.filter(f => !f.optional && !f.constant)
|
|
||||||
.map(f => f.name);
|
|
||||||
|
|
||||||
const constants = mapProps(typeDef.fields)
|
|
||||||
.filter(f => f.constant)
|
|
||||||
.map(f => `${f.name}: "${f.value}"`);
|
|
||||||
|
|
||||||
return `
|
|
||||||
const node: ${typeDef.flowTypeName || typeDef.name} = {
|
|
||||||
type: "${typeDef.name}",
|
|
||||||
${constants.concat(fields).join(",")}
|
|
||||||
}
|
|
||||||
|
|
||||||
${mapProps(typeDef.fields)
|
|
||||||
.filter(f => f.optional)
|
|
||||||
.map(optionalField)
|
|
||||||
.join("")}
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
|
|
||||||
function lowerCamelCase(name) {
|
|
||||||
return name.substring(0, 1).toLowerCase() + name.substring(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
function generate() {
|
|
||||||
stdout.write(`
|
|
||||||
// @flow
|
|
||||||
|
|
||||||
// THIS FILE IS AUTOGENERATED
|
|
||||||
// see scripts/generateNodeUtils.js
|
|
||||||
|
|
||||||
import { assert } from "mamacro";
|
|
||||||
|
|
||||||
function isTypeOf(t: string) {
|
|
||||||
return (n: Node) => n.type === t;
|
|
||||||
}
|
|
||||||
|
|
||||||
function assertTypeOf(t: string) {
|
|
||||||
return (n: Node) => assert(n.type === t);
|
|
||||||
}
|
|
||||||
`);
|
|
||||||
|
|
||||||
// Node builders
|
|
||||||
iterateProps(definitions, typeDefinition => {
|
|
||||||
stdout.write(`
|
|
||||||
export function ${lowerCamelCase(typeDefinition.name)} (
|
|
||||||
${params(filterProps(typeDefinition.fields, f => !f.constant))}
|
|
||||||
): ${typeDefinition.name} {
|
|
||||||
|
|
||||||
${assertParams(filterProps(typeDefinition.fields, f => !f.constant))}
|
|
||||||
${buildObject(typeDefinition)}
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
`);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Node testers
|
|
||||||
iterateProps(definitions, typeDefinition => {
|
|
||||||
stdout.write(`
|
|
||||||
export const is${typeDefinition.name} =
|
|
||||||
isTypeOf("${typeDefinition.name}");
|
|
||||||
`);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Node union type testers
|
|
||||||
const unionTypes = unique(
|
|
||||||
flatMap(mapProps(definitions).filter(d => d.unionType), d => d.unionType)
|
|
||||||
);
|
|
||||||
unionTypes.forEach(unionType => {
|
|
||||||
stdout.write(
|
|
||||||
`
|
|
||||||
export const is${unionType} = (node: Node) => ` +
|
|
||||||
mapProps(definitions)
|
|
||||||
.filter(d => d.unionType && d.unionType.includes(unionType))
|
|
||||||
.map(d => `is${d.name}(node) `)
|
|
||||||
.join("||") +
|
|
||||||
";\n\n"
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Node assertion
|
|
||||||
iterateProps(definitions, typeDefinition => {
|
|
||||||
stdout.write(`
|
|
||||||
export const assert${typeDefinition.name} =
|
|
||||||
assertTypeOf("${typeDefinition.name}");
|
|
||||||
`);
|
|
||||||
});
|
|
||||||
|
|
||||||
// a map from node type to its set of union types
|
|
||||||
stdout.write(
|
|
||||||
`
|
|
||||||
export const unionTypesMap = {` +
|
|
||||||
mapProps(definitions)
|
|
||||||
.filter(d => d.unionType)
|
|
||||||
.map(t => `"${t.name}": [${t.unionType.map(quote).join(",")}]\n`) +
|
|
||||||
`};
|
|
||||||
`
|
|
||||||
);
|
|
||||||
|
|
||||||
// an array of all node and union types
|
|
||||||
stdout.write(
|
|
||||||
`
|
|
||||||
export const nodeAndUnionTypes = [` +
|
|
||||||
mapProps(definitions)
|
|
||||||
.map(t => `"${t.name}"`)
|
|
||||||
.concat(unionTypes.map(quote))
|
|
||||||
.join(",") +
|
|
||||||
`];`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
generate();
|
|
||||||
47
node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
generated
vendored
47
node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
generated
vendored
@@ -1,47 +0,0 @@
|
|||||||
const definitions = require("../src/definitions");
|
|
||||||
const flatMap = require("array.prototype.flatmap");
|
|
||||||
const { typeSignature, mapProps, iterateProps, unique } = require("./util");
|
|
||||||
|
|
||||||
const stdout = process.stdout;
|
|
||||||
|
|
||||||
function params(fields) {
|
|
||||||
return mapProps(fields)
|
|
||||||
.map(typeSignature)
|
|
||||||
.join(",");
|
|
||||||
}
|
|
||||||
|
|
||||||
function generate() {
|
|
||||||
stdout.write(`
|
|
||||||
// @flow
|
|
||||||
/* eslint no-unused-vars: off */
|
|
||||||
|
|
||||||
// THIS FILE IS AUTOGENERATED
|
|
||||||
// see scripts/generateTypeDefinitions.js
|
|
||||||
`);
|
|
||||||
|
|
||||||
// generate union types
|
|
||||||
const unionTypes = unique(
|
|
||||||
flatMap(mapProps(definitions).filter(d => d.unionType), d => d.unionType)
|
|
||||||
);
|
|
||||||
unionTypes.forEach(unionType => {
|
|
||||||
stdout.write(
|
|
||||||
`type ${unionType} = ` +
|
|
||||||
mapProps(definitions)
|
|
||||||
.filter(d => d.unionType && d.unionType.includes(unionType))
|
|
||||||
.map(d => d.name)
|
|
||||||
.join("|") +
|
|
||||||
";\n\n"
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
// generate the type definitions
|
|
||||||
iterateProps(definitions, typeDef => {
|
|
||||||
stdout.write(`type ${typeDef.name} = {
|
|
||||||
...BaseNode,
|
|
||||||
type: "${typeDef.name}",
|
|
||||||
${params(typeDef.fields)}
|
|
||||||
};\n\n`);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
generate();
|
|
||||||
38
node_modules/@webassemblyjs/ast/scripts/util.js
generated
vendored
38
node_modules/@webassemblyjs/ast/scripts/util.js
generated
vendored
@@ -1,38 +0,0 @@
|
|||||||
function iterateProps(obj, iterator) {
|
|
||||||
Object.keys(obj).forEach(key => iterator({ ...obj[key], name: key }));
|
|
||||||
}
|
|
||||||
|
|
||||||
function mapProps(obj) {
|
|
||||||
return Object.keys(obj).map(key => ({ ...obj[key], name: key }));
|
|
||||||
}
|
|
||||||
|
|
||||||
function filterProps(obj, filter) {
|
|
||||||
const ret = {};
|
|
||||||
Object.keys(obj).forEach(key => {
|
|
||||||
if (filter(obj[key])) {
|
|
||||||
ret[key] = obj[key];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
function typeSignature(meta) {
|
|
||||||
const type = meta.array ? `Array<${meta.type}>` : meta.type;
|
|
||||||
if (meta.optional) {
|
|
||||||
return `${meta.name}?: ${type}`;
|
|
||||||
} else if (meta.maybe) {
|
|
||||||
return `${meta.name}: ?${type}`;
|
|
||||||
} else {
|
|
||||||
return `${meta.name}: ${type}`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const unique = items => Array.from(new Set(items));
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
iterateProps,
|
|
||||||
mapProps,
|
|
||||||
filterProps,
|
|
||||||
typeSignature,
|
|
||||||
unique
|
|
||||||
};
|
|
||||||
21
node_modules/@webassemblyjs/floating-point-hex-parser/LICENSE
generated
vendored
21
node_modules/@webassemblyjs/floating-point-hex-parser/LICENSE
generated
vendored
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2017 Mauro Bringolf
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
34
node_modules/@webassemblyjs/floating-point-hex-parser/README.md
generated
vendored
34
node_modules/@webassemblyjs/floating-point-hex-parser/README.md
generated
vendored
@@ -1,34 +0,0 @@
|
|||||||
# Parser function for floating point hexadecimals
|
|
||||||
|
|
||||||
[]()
|
|
||||||
[]()
|
|
||||||
[]()
|
|
||||||
|
|
||||||
> A JavaScript function to parse floating point hexadecimals as defined by the [WebAssembly specification](https://webassembly.github.io/spec/core/text/values.html#text-hexfloat).
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
import parseHexFloat from '@webassemblyjs/floating-point-hex-parser'
|
|
||||||
|
|
||||||
parseHexFloat('0x1p-1') // 0.5
|
|
||||||
parseHexFloat('0x1.921fb54442d18p+2') // 6.283185307179586
|
|
||||||
```
|
|
||||||
|
|
||||||
## Tests
|
|
||||||
|
|
||||||
This module is tested in two ways. The first one is through a small set of test cases that can be found in [test/regular.test.js](https://github.com/maurobringolf/@webassemblyjs/floating-point-hex-parser/blob/master/test/regular.test.js). The second one is non-deterministic (sometimes called *fuzzing*):
|
|
||||||
|
|
||||||
1. Generate a random IEEE754 double precision value `x`.
|
|
||||||
1. Compute its representation `y` in floating point hexadecimal format using the C standard library function `printf` since C supports this format.
|
|
||||||
1. Give both values to JS testcase and see if `parseHexFloat(y) === x`.
|
|
||||||
|
|
||||||
By default one `npm test` run tests 100 random samples. If you want to do more, you can set the environment variable `FUZZ_AMOUNT` to whatever number of runs you'd like. Because it uses one child process for each sample, it is really slow though. For more details about the randomized tests see [the source](https://github.com/maurobringolf/@webassemblyjs/floating-point-hex-parser/tree/master/test/fuzzing).
|
|
||||||
|
|
||||||
## Links
|
|
||||||
|
|
||||||
* [maurobringolf.ch/2017/12/hexadecimal-floating-point-notation/](https://maurobringolf.ch/2017/12/hexadecimal-floating-point-notation/)
|
|
||||||
|
|
||||||
* [github.com/xtuc/js-webassembly-interpreter/issues/32](https://github.com/xtuc/js-webassembly-interpreter/issues/32)
|
|
||||||
|
|
||||||
* [github.com/WebAssembly/design/issues/292](https://github.com/WebAssembly/design/issues/292)
|
|
||||||
42
node_modules/@webassemblyjs/floating-point-hex-parser/esm/index.js
generated
vendored
42
node_modules/@webassemblyjs/floating-point-hex-parser/esm/index.js
generated
vendored
@@ -1,42 +0,0 @@
|
|||||||
export default function parse(input) {
|
|
||||||
input = input.toUpperCase();
|
|
||||||
var splitIndex = input.indexOf("P");
|
|
||||||
var mantissa, exponent;
|
|
||||||
|
|
||||||
if (splitIndex !== -1) {
|
|
||||||
mantissa = input.substring(0, splitIndex);
|
|
||||||
exponent = parseInt(input.substring(splitIndex + 1));
|
|
||||||
} else {
|
|
||||||
mantissa = input;
|
|
||||||
exponent = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
var dotIndex = mantissa.indexOf(".");
|
|
||||||
|
|
||||||
if (dotIndex !== -1) {
|
|
||||||
var integerPart = parseInt(mantissa.substring(0, dotIndex), 16);
|
|
||||||
var sign = Math.sign(integerPart);
|
|
||||||
integerPart = sign * integerPart;
|
|
||||||
var fractionLength = mantissa.length - dotIndex - 1;
|
|
||||||
var fractionalPart = parseInt(mantissa.substring(dotIndex + 1), 16);
|
|
||||||
var fraction = fractionLength > 0 ? fractionalPart / Math.pow(16, fractionLength) : 0;
|
|
||||||
|
|
||||||
if (sign === 0) {
|
|
||||||
if (fraction === 0) {
|
|
||||||
mantissa = sign;
|
|
||||||
} else {
|
|
||||||
if (Object.is(sign, -0)) {
|
|
||||||
mantissa = -fraction;
|
|
||||||
} else {
|
|
||||||
mantissa = fraction;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
mantissa = sign * (integerPart + fraction);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
mantissa = parseInt(mantissa, 16);
|
|
||||||
}
|
|
||||||
|
|
||||||
return mantissa * (splitIndex !== -1 ? Math.pow(2, exponent) : 1);
|
|
||||||
}
|
|
||||||
49
node_modules/@webassemblyjs/floating-point-hex-parser/lib/index.js
generated
vendored
49
node_modules/@webassemblyjs/floating-point-hex-parser/lib/index.js
generated
vendored
@@ -1,49 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.default = parse;
|
|
||||||
|
|
||||||
function parse(input) {
|
|
||||||
input = input.toUpperCase();
|
|
||||||
var splitIndex = input.indexOf("P");
|
|
||||||
var mantissa, exponent;
|
|
||||||
|
|
||||||
if (splitIndex !== -1) {
|
|
||||||
mantissa = input.substring(0, splitIndex);
|
|
||||||
exponent = parseInt(input.substring(splitIndex + 1));
|
|
||||||
} else {
|
|
||||||
mantissa = input;
|
|
||||||
exponent = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
var dotIndex = mantissa.indexOf(".");
|
|
||||||
|
|
||||||
if (dotIndex !== -1) {
|
|
||||||
var integerPart = parseInt(mantissa.substring(0, dotIndex), 16);
|
|
||||||
var sign = Math.sign(integerPart);
|
|
||||||
integerPart = sign * integerPart;
|
|
||||||
var fractionLength = mantissa.length - dotIndex - 1;
|
|
||||||
var fractionalPart = parseInt(mantissa.substring(dotIndex + 1), 16);
|
|
||||||
var fraction = fractionLength > 0 ? fractionalPart / Math.pow(16, fractionLength) : 0;
|
|
||||||
|
|
||||||
if (sign === 0) {
|
|
||||||
if (fraction === 0) {
|
|
||||||
mantissa = sign;
|
|
||||||
} else {
|
|
||||||
if (Object.is(sign, -0)) {
|
|
||||||
mantissa = -fraction;
|
|
||||||
} else {
|
|
||||||
mantissa = fraction;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
mantissa = sign * (integerPart + fraction);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
mantissa = parseInt(mantissa, 16);
|
|
||||||
}
|
|
||||||
|
|
||||||
return mantissa * (splitIndex !== -1 ? Math.pow(2, exponent) : 1);
|
|
||||||
}
|
|
||||||
24
node_modules/@webassemblyjs/floating-point-hex-parser/package.json
generated
vendored
24
node_modules/@webassemblyjs/floating-point-hex-parser/package.json
generated
vendored
@@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@webassemblyjs/floating-point-hex-parser",
|
|
||||||
"scripts": {
|
|
||||||
"build-fuzzer": "[ -f ./test/fuzzing/parse.out ] || gcc ./test/fuzzing/parse.c -o ./test/fuzzing/parse.out -lm -Wall"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/xtuc/webassemblyjs.git"
|
|
||||||
},
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"version": "1.9.0",
|
|
||||||
"description": "A function to parse floating point hexadecimal strings as defined by the WebAssembly specification",
|
|
||||||
"main": "lib/index.js",
|
|
||||||
"module": "esm/index.js",
|
|
||||||
"keywords": [
|
|
||||||
"webassembly",
|
|
||||||
"floating-point"
|
|
||||||
],
|
|
||||||
"author": "Mauro Bringolf",
|
|
||||||
"license": "MIT",
|
|
||||||
"gitHead": "0440b420888c1f7701eb9762ec657775506b87d8"
|
|
||||||
}
|
|
||||||
21
node_modules/@webassemblyjs/helper-api-error/LICENSE
generated
vendored
21
node_modules/@webassemblyjs/helper-api-error/LICENSE
generated
vendored
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
47
node_modules/@webassemblyjs/helper-api-error/esm/index.js
generated
vendored
47
node_modules/@webassemblyjs/helper-api-error/esm/index.js
generated
vendored
@@ -1,47 +0,0 @@
|
|||||||
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
||||||
|
|
||||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
||||||
|
|
||||||
export var RuntimeError =
|
|
||||||
/*#__PURE__*/
|
|
||||||
function (_Error) {
|
|
||||||
_inherits(RuntimeError, _Error);
|
|
||||||
|
|
||||||
function RuntimeError() {
|
|
||||||
_classCallCheck(this, RuntimeError);
|
|
||||||
|
|
||||||
return _possibleConstructorReturn(this, (RuntimeError.__proto__ || Object.getPrototypeOf(RuntimeError)).apply(this, arguments));
|
|
||||||
}
|
|
||||||
|
|
||||||
return RuntimeError;
|
|
||||||
}(Error);
|
|
||||||
export var CompileError =
|
|
||||||
/*#__PURE__*/
|
|
||||||
function (_Error2) {
|
|
||||||
_inherits(CompileError, _Error2);
|
|
||||||
|
|
||||||
function CompileError() {
|
|
||||||
_classCallCheck(this, CompileError);
|
|
||||||
|
|
||||||
return _possibleConstructorReturn(this, (CompileError.__proto__ || Object.getPrototypeOf(CompileError)).apply(this, arguments));
|
|
||||||
}
|
|
||||||
|
|
||||||
return CompileError;
|
|
||||||
}(Error);
|
|
||||||
export var LinkError =
|
|
||||||
/*#__PURE__*/
|
|
||||||
function (_Error3) {
|
|
||||||
_inherits(LinkError, _Error3);
|
|
||||||
|
|
||||||
function LinkError() {
|
|
||||||
_classCallCheck(this, LinkError);
|
|
||||||
|
|
||||||
return _possibleConstructorReturn(this, (LinkError.__proto__ || Object.getPrototypeOf(LinkError)).apply(this, arguments));
|
|
||||||
}
|
|
||||||
|
|
||||||
return LinkError;
|
|
||||||
}(Error);
|
|
||||||
62
node_modules/@webassemblyjs/helper-api-error/lib/index.js
generated
vendored
62
node_modules/@webassemblyjs/helper-api-error/lib/index.js
generated
vendored
@@ -1,62 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.LinkError = exports.CompileError = exports.RuntimeError = void 0;
|
|
||||||
|
|
||||||
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
||||||
|
|
||||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
||||||
|
|
||||||
var RuntimeError =
|
|
||||||
/*#__PURE__*/
|
|
||||||
function (_Error) {
|
|
||||||
_inherits(RuntimeError, _Error);
|
|
||||||
|
|
||||||
function RuntimeError() {
|
|
||||||
_classCallCheck(this, RuntimeError);
|
|
||||||
|
|
||||||
return _possibleConstructorReturn(this, (RuntimeError.__proto__ || Object.getPrototypeOf(RuntimeError)).apply(this, arguments));
|
|
||||||
}
|
|
||||||
|
|
||||||
return RuntimeError;
|
|
||||||
}(Error);
|
|
||||||
|
|
||||||
exports.RuntimeError = RuntimeError;
|
|
||||||
|
|
||||||
var CompileError =
|
|
||||||
/*#__PURE__*/
|
|
||||||
function (_Error2) {
|
|
||||||
_inherits(CompileError, _Error2);
|
|
||||||
|
|
||||||
function CompileError() {
|
|
||||||
_classCallCheck(this, CompileError);
|
|
||||||
|
|
||||||
return _possibleConstructorReturn(this, (CompileError.__proto__ || Object.getPrototypeOf(CompileError)).apply(this, arguments));
|
|
||||||
}
|
|
||||||
|
|
||||||
return CompileError;
|
|
||||||
}(Error);
|
|
||||||
|
|
||||||
exports.CompileError = CompileError;
|
|
||||||
|
|
||||||
var LinkError =
|
|
||||||
/*#__PURE__*/
|
|
||||||
function (_Error3) {
|
|
||||||
_inherits(LinkError, _Error3);
|
|
||||||
|
|
||||||
function LinkError() {
|
|
||||||
_classCallCheck(this, LinkError);
|
|
||||||
|
|
||||||
return _possibleConstructorReturn(this, (LinkError.__proto__ || Object.getPrototypeOf(LinkError)).apply(this, arguments));
|
|
||||||
}
|
|
||||||
|
|
||||||
return LinkError;
|
|
||||||
}(Error);
|
|
||||||
|
|
||||||
exports.LinkError = LinkError;
|
|
||||||
13
node_modules/@webassemblyjs/helper-api-error/package.json
generated
vendored
13
node_modules/@webassemblyjs/helper-api-error/package.json
generated
vendored
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@webassemblyjs/helper-api-error",
|
|
||||||
"version": "1.9.0",
|
|
||||||
"description": "Common API errors",
|
|
||||||
"main": "lib/index.js",
|
|
||||||
"module": "esm/index.js",
|
|
||||||
"author": "Sven Sauleau",
|
|
||||||
"license": "MIT",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"gitHead": "0440b420888c1f7701eb9762ec657775506b87d8"
|
|
||||||
}
|
|
||||||
21
node_modules/@webassemblyjs/helper-buffer/LICENSE
generated
vendored
21
node_modules/@webassemblyjs/helper-buffer/LICENSE
generated
vendored
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
65
node_modules/@webassemblyjs/helper-buffer/esm/compare.js
generated
vendored
65
node_modules/@webassemblyjs/helper-buffer/esm/compare.js
generated
vendored
@@ -1,65 +0,0 @@
|
|||||||
// this are dev dependencies
|
|
||||||
var diff = require("jest-diff");
|
|
||||||
|
|
||||||
var _require = require("jest-diff/build/constants"),
|
|
||||||
NO_DIFF_MESSAGE = _require.NO_DIFF_MESSAGE;
|
|
||||||
|
|
||||||
var _require2 = require("@webassemblyjs/wasm-parser"),
|
|
||||||
decode = _require2.decode;
|
|
||||||
|
|
||||||
var oldConsoleLog = console.log;
|
|
||||||
export function compareArrayBuffers(l, r) {
|
|
||||||
/**
|
|
||||||
* Decode left
|
|
||||||
*/
|
|
||||||
var bufferL = "";
|
|
||||||
|
|
||||||
console.log = function () {
|
|
||||||
for (var _len = arguments.length, texts = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
||||||
texts[_key] = arguments[_key];
|
|
||||||
}
|
|
||||||
|
|
||||||
return bufferL += texts.join("") + "\n";
|
|
||||||
};
|
|
||||||
|
|
||||||
try {
|
|
||||||
decode(l, {
|
|
||||||
dump: true
|
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
console.error(bufferL);
|
|
||||||
console.error(e);
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Decode right
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
var bufferR = "";
|
|
||||||
|
|
||||||
console.log = function () {
|
|
||||||
for (var _len2 = arguments.length, texts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
||||||
texts[_key2] = arguments[_key2];
|
|
||||||
}
|
|
||||||
|
|
||||||
return bufferR += texts.join("") + "\n";
|
|
||||||
};
|
|
||||||
|
|
||||||
try {
|
|
||||||
decode(r, {
|
|
||||||
dump: true
|
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
console.error(bufferR);
|
|
||||||
console.error(e);
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log = oldConsoleLog;
|
|
||||||
var out = diff(bufferL, bufferR);
|
|
||||||
|
|
||||||
if (out !== null && out !== NO_DIFF_MESSAGE) {
|
|
||||||
throw new Error("\n" + out);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
67
node_modules/@webassemblyjs/helper-buffer/esm/index.js
generated
vendored
67
node_modules/@webassemblyjs/helper-buffer/esm/index.js
generated
vendored
@@ -1,67 +0,0 @@
|
|||||||
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
|
||||||
|
|
||||||
function concatUint8Arrays() {
|
|
||||||
for (var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
||||||
arrays[_key] = arguments[_key];
|
|
||||||
}
|
|
||||||
|
|
||||||
var totalLength = arrays.reduce(function (a, b) {
|
|
||||||
return a + b.length;
|
|
||||||
}, 0);
|
|
||||||
var result = new Uint8Array(totalLength);
|
|
||||||
var offset = 0;
|
|
||||||
|
|
||||||
for (var _i = 0; _i < arrays.length; _i++) {
|
|
||||||
var arr = arrays[_i];
|
|
||||||
|
|
||||||
if (arr instanceof Uint8Array === false) {
|
|
||||||
throw new Error("arr must be of type Uint8Array");
|
|
||||||
}
|
|
||||||
|
|
||||||
result.set(arr, offset);
|
|
||||||
offset += arr.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function overrideBytesInBuffer(buffer, startLoc, endLoc, newBytes) {
|
|
||||||
var beforeBytes = buffer.slice(0, startLoc);
|
|
||||||
var afterBytes = buffer.slice(endLoc, buffer.length); // replacement is empty, we can omit it
|
|
||||||
|
|
||||||
if (newBytes.length === 0) {
|
|
||||||
return concatUint8Arrays(beforeBytes, afterBytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
var replacement = Uint8Array.from(newBytes);
|
|
||||||
return concatUint8Arrays(beforeBytes, replacement, afterBytes);
|
|
||||||
}
|
|
||||||
export function makeBuffer() {
|
|
||||||
for (var _len2 = arguments.length, splitedBytes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
||||||
splitedBytes[_key2] = arguments[_key2];
|
|
||||||
}
|
|
||||||
|
|
||||||
var bytes = [].concat.apply([], splitedBytes);
|
|
||||||
return new Uint8Array(bytes).buffer;
|
|
||||||
}
|
|
||||||
export function fromHexdump(str) {
|
|
||||||
var lines = str.split("\n"); // remove any leading left whitespace
|
|
||||||
|
|
||||||
lines = lines.map(function (line) {
|
|
||||||
return line.trim();
|
|
||||||
});
|
|
||||||
var bytes = lines.reduce(function (acc, line) {
|
|
||||||
var cols = line.split(" "); // remove the offset, left column
|
|
||||||
|
|
||||||
cols.shift();
|
|
||||||
cols = cols.filter(function (x) {
|
|
||||||
return x !== "";
|
|
||||||
});
|
|
||||||
var bytes = cols.map(function (x) {
|
|
||||||
return parseInt(x, 16);
|
|
||||||
});
|
|
||||||
acc.push.apply(acc, _toConsumableArray(bytes));
|
|
||||||
return acc;
|
|
||||||
}, []);
|
|
||||||
return Buffer.from(bytes);
|
|
||||||
}
|
|
||||||
73
node_modules/@webassemblyjs/helper-buffer/lib/compare.js
generated
vendored
73
node_modules/@webassemblyjs/helper-buffer/lib/compare.js
generated
vendored
@@ -1,73 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.compareArrayBuffers = compareArrayBuffers;
|
|
||||||
|
|
||||||
// this are dev dependencies
|
|
||||||
var diff = require("jest-diff");
|
|
||||||
|
|
||||||
var _require = require("jest-diff/build/constants"),
|
|
||||||
NO_DIFF_MESSAGE = _require.NO_DIFF_MESSAGE;
|
|
||||||
|
|
||||||
var _require2 = require("@webassemblyjs/wasm-parser"),
|
|
||||||
decode = _require2.decode;
|
|
||||||
|
|
||||||
var oldConsoleLog = console.log;
|
|
||||||
|
|
||||||
function compareArrayBuffers(l, r) {
|
|
||||||
/**
|
|
||||||
* Decode left
|
|
||||||
*/
|
|
||||||
var bufferL = "";
|
|
||||||
|
|
||||||
console.log = function () {
|
|
||||||
for (var _len = arguments.length, texts = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
||||||
texts[_key] = arguments[_key];
|
|
||||||
}
|
|
||||||
|
|
||||||
return bufferL += texts.join("") + "\n";
|
|
||||||
};
|
|
||||||
|
|
||||||
try {
|
|
||||||
decode(l, {
|
|
||||||
dump: true
|
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
console.error(bufferL);
|
|
||||||
console.error(e);
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Decode right
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
var bufferR = "";
|
|
||||||
|
|
||||||
console.log = function () {
|
|
||||||
for (var _len2 = arguments.length, texts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
||||||
texts[_key2] = arguments[_key2];
|
|
||||||
}
|
|
||||||
|
|
||||||
return bufferR += texts.join("") + "\n";
|
|
||||||
};
|
|
||||||
|
|
||||||
try {
|
|
||||||
decode(r, {
|
|
||||||
dump: true
|
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
console.error(bufferR);
|
|
||||||
console.error(e);
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log = oldConsoleLog;
|
|
||||||
var out = diff(bufferL, bufferR);
|
|
||||||
|
|
||||||
if (out !== null && out !== NO_DIFF_MESSAGE) {
|
|
||||||
throw new Error("\n" + out);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
78
node_modules/@webassemblyjs/helper-buffer/lib/index.js
generated
vendored
78
node_modules/@webassemblyjs/helper-buffer/lib/index.js
generated
vendored
@@ -1,78 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.overrideBytesInBuffer = overrideBytesInBuffer;
|
|
||||||
exports.makeBuffer = makeBuffer;
|
|
||||||
exports.fromHexdump = fromHexdump;
|
|
||||||
|
|
||||||
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
|
||||||
|
|
||||||
function concatUint8Arrays() {
|
|
||||||
for (var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
||||||
arrays[_key] = arguments[_key];
|
|
||||||
}
|
|
||||||
|
|
||||||
var totalLength = arrays.reduce(function (a, b) {
|
|
||||||
return a + b.length;
|
|
||||||
}, 0);
|
|
||||||
var result = new Uint8Array(totalLength);
|
|
||||||
var offset = 0;
|
|
||||||
|
|
||||||
for (var _i = 0; _i < arrays.length; _i++) {
|
|
||||||
var arr = arrays[_i];
|
|
||||||
|
|
||||||
if (arr instanceof Uint8Array === false) {
|
|
||||||
throw new Error("arr must be of type Uint8Array");
|
|
||||||
}
|
|
||||||
|
|
||||||
result.set(arr, offset);
|
|
||||||
offset += arr.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function overrideBytesInBuffer(buffer, startLoc, endLoc, newBytes) {
|
|
||||||
var beforeBytes = buffer.slice(0, startLoc);
|
|
||||||
var afterBytes = buffer.slice(endLoc, buffer.length); // replacement is empty, we can omit it
|
|
||||||
|
|
||||||
if (newBytes.length === 0) {
|
|
||||||
return concatUint8Arrays(beforeBytes, afterBytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
var replacement = Uint8Array.from(newBytes);
|
|
||||||
return concatUint8Arrays(beforeBytes, replacement, afterBytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
function makeBuffer() {
|
|
||||||
for (var _len2 = arguments.length, splitedBytes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
||||||
splitedBytes[_key2] = arguments[_key2];
|
|
||||||
}
|
|
||||||
|
|
||||||
var bytes = [].concat.apply([], splitedBytes);
|
|
||||||
return new Uint8Array(bytes).buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
function fromHexdump(str) {
|
|
||||||
var lines = str.split("\n"); // remove any leading left whitespace
|
|
||||||
|
|
||||||
lines = lines.map(function (line) {
|
|
||||||
return line.trim();
|
|
||||||
});
|
|
||||||
var bytes = lines.reduce(function (acc, line) {
|
|
||||||
var cols = line.split(" "); // remove the offset, left column
|
|
||||||
|
|
||||||
cols.shift();
|
|
||||||
cols = cols.filter(function (x) {
|
|
||||||
return x !== "";
|
|
||||||
});
|
|
||||||
var bytes = cols.map(function (x) {
|
|
||||||
return parseInt(x, 16);
|
|
||||||
});
|
|
||||||
acc.push.apply(acc, _toConsumableArray(bytes));
|
|
||||||
return acc;
|
|
||||||
}, []);
|
|
||||||
return Buffer.from(bytes);
|
|
||||||
}
|
|
||||||
24
node_modules/@webassemblyjs/helper-buffer/package.json
generated
vendored
24
node_modules/@webassemblyjs/helper-buffer/package.json
generated
vendored
@@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@webassemblyjs/helper-buffer",
|
|
||||||
"version": "1.9.0",
|
|
||||||
"description": "Buffer manipulation utility",
|
|
||||||
"main": "lib/index.js",
|
|
||||||
"module": "esm/index.js",
|
|
||||||
"scripts": {
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/xtuc/webassemblyjs.git"
|
|
||||||
},
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"author": "Sven Sauleau",
|
|
||||||
"license": "MIT",
|
|
||||||
"devDependencies": {
|
|
||||||
"@webassemblyjs/wasm-parser": "1.9.0",
|
|
||||||
"jest-diff": "^24.0.0"
|
|
||||||
},
|
|
||||||
"gitHead": "0440b420888c1f7701eb9762ec657775506b87d8"
|
|
||||||
}
|
|
||||||
21
node_modules/@webassemblyjs/helper-code-frame/LICENSE
generated
vendored
21
node_modules/@webassemblyjs/helper-code-frame/LICENSE
generated
vendored
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
37
node_modules/@webassemblyjs/helper-code-frame/esm/index.js
generated
vendored
37
node_modules/@webassemblyjs/helper-code-frame/esm/index.js
generated
vendored
@@ -1,37 +0,0 @@
|
|||||||
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
||||||
|
|
||||||
import { print } from "@webassemblyjs/wast-printer";
|
|
||||||
var SHOW_LINES_AROUND_POINTER = 5;
|
|
||||||
|
|
||||||
function repeat(char, nb) {
|
|
||||||
return Array(nb).fill(char).join("");
|
|
||||||
} // TODO(sven): allow arbitrary ast nodes
|
|
||||||
|
|
||||||
|
|
||||||
export function codeFrameFromAst(ast, loc) {
|
|
||||||
return codeFrameFromSource(print(ast), loc);
|
|
||||||
}
|
|
||||||
export function codeFrameFromSource(source, loc) {
|
|
||||||
var start = loc.start,
|
|
||||||
end = loc.end;
|
|
||||||
var length = 1;
|
|
||||||
|
|
||||||
if (_typeof(end) === "object") {
|
|
||||||
length = end.column - start.column + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return source.split("\n").reduce(function (acc, line, lineNbr) {
|
|
||||||
if (Math.abs(start.line - lineNbr) < SHOW_LINES_AROUND_POINTER) {
|
|
||||||
acc += line + "\n";
|
|
||||||
} // Add a new line with the pointer padded left
|
|
||||||
|
|
||||||
|
|
||||||
if (lineNbr === start.line - 1) {
|
|
||||||
acc += repeat(" ", start.column - 1);
|
|
||||||
acc += repeat("^", length);
|
|
||||||
acc += "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
return acc;
|
|
||||||
}, "");
|
|
||||||
}
|
|
||||||
47
node_modules/@webassemblyjs/helper-code-frame/lib/index.js
generated
vendored
47
node_modules/@webassemblyjs/helper-code-frame/lib/index.js
generated
vendored
@@ -1,47 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.codeFrameFromAst = codeFrameFromAst;
|
|
||||||
exports.codeFrameFromSource = codeFrameFromSource;
|
|
||||||
|
|
||||||
var _wastPrinter = require("@webassemblyjs/wast-printer");
|
|
||||||
|
|
||||||
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
||||||
|
|
||||||
var SHOW_LINES_AROUND_POINTER = 5;
|
|
||||||
|
|
||||||
function repeat(char, nb) {
|
|
||||||
return Array(nb).fill(char).join("");
|
|
||||||
} // TODO(sven): allow arbitrary ast nodes
|
|
||||||
|
|
||||||
|
|
||||||
function codeFrameFromAst(ast, loc) {
|
|
||||||
return codeFrameFromSource((0, _wastPrinter.print)(ast), loc);
|
|
||||||
}
|
|
||||||
|
|
||||||
function codeFrameFromSource(source, loc) {
|
|
||||||
var start = loc.start,
|
|
||||||
end = loc.end;
|
|
||||||
var length = 1;
|
|
||||||
|
|
||||||
if (_typeof(end) === "object") {
|
|
||||||
length = end.column - start.column + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return source.split("\n").reduce(function (acc, line, lineNbr) {
|
|
||||||
if (Math.abs(start.line - lineNbr) < SHOW_LINES_AROUND_POINTER) {
|
|
||||||
acc += line + "\n";
|
|
||||||
} // Add a new line with the pointer padded left
|
|
||||||
|
|
||||||
|
|
||||||
if (lineNbr === start.line - 1) {
|
|
||||||
acc += repeat(" ", start.column - 1);
|
|
||||||
acc += repeat("^", length);
|
|
||||||
acc += "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
return acc;
|
|
||||||
}, "");
|
|
||||||
}
|
|
||||||
23
node_modules/@webassemblyjs/helper-code-frame/package.json
generated
vendored
23
node_modules/@webassemblyjs/helper-code-frame/package.json
generated
vendored
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@webassemblyjs/helper-code-frame",
|
|
||||||
"version": "1.9.0",
|
|
||||||
"description": "",
|
|
||||||
"main": "lib/index.js",
|
|
||||||
"module": "esm/index.js",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/xtuc/webassemblyjs.git"
|
|
||||||
},
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"author": "Sven Sauleau",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@webassemblyjs/wast-printer": "1.9.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@webassemblyjs/ast": "1.9.0"
|
|
||||||
},
|
|
||||||
"gitHead": "0440b420888c1f7701eb9762ec657775506b87d8"
|
|
||||||
}
|
|
||||||
21
node_modules/@webassemblyjs/helper-fsm/LICENSE
generated
vendored
21
node_modules/@webassemblyjs/helper-fsm/LICENSE
generated
vendored
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
101
node_modules/@webassemblyjs/helper-fsm/esm/index.js
generated
vendored
101
node_modules/@webassemblyjs/helper-fsm/esm/index.js
generated
vendored
@@ -1,101 +0,0 @@
|
|||||||
function _sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
||||||
|
|
||||||
function _slicedToArray(arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return _sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }
|
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
||||||
|
|
||||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
||||||
|
|
||||||
var STOP = Symbol("STOP");
|
|
||||||
|
|
||||||
function makeTransition(regex, nextState) {
|
|
||||||
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
||||||
_ref$n = _ref.n,
|
|
||||||
n = _ref$n === void 0 ? 1 : _ref$n,
|
|
||||||
allowedSeparator = _ref.allowedSeparator;
|
|
||||||
|
|
||||||
return function (instance) {
|
|
||||||
if (allowedSeparator) {
|
|
||||||
if (instance.input[instance.ptr] === allowedSeparator) {
|
|
||||||
if (regex.test(instance.input.substring(instance.ptr - 1, instance.ptr))) {
|
|
||||||
// Consume the separator and stay in current state
|
|
||||||
return [instance.currentState, 1];
|
|
||||||
} else {
|
|
||||||
return [instance.terminatingState, 0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (regex.test(instance.input.substring(instance.ptr, instance.ptr + n))) {
|
|
||||||
return [nextState, n];
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function combineTransitions(transitions) {
|
|
||||||
return function () {
|
|
||||||
var match = false;
|
|
||||||
var currentTransitions = transitions[this.currentState] || [];
|
|
||||||
|
|
||||||
for (var i = 0; i < currentTransitions.length; ++i) {
|
|
||||||
match = currentTransitions[i](this);
|
|
||||||
|
|
||||||
if (match !== false) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return match || [this.terminatingState, 0];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
var FSM =
|
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function FSM(transitions, initialState) {
|
|
||||||
var terminatingState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : STOP;
|
|
||||||
|
|
||||||
_classCallCheck(this, FSM);
|
|
||||||
|
|
||||||
this.initialState = initialState;
|
|
||||||
this.terminatingState = terminatingState;
|
|
||||||
|
|
||||||
if (terminatingState === STOP || !transitions[terminatingState]) {
|
|
||||||
transitions[terminatingState] = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
this.transitionFunction = combineTransitions.call(this, transitions);
|
|
||||||
}
|
|
||||||
|
|
||||||
_createClass(FSM, [{
|
|
||||||
key: "run",
|
|
||||||
value: function run(input) {
|
|
||||||
this.input = input;
|
|
||||||
this.ptr = 0;
|
|
||||||
this.currentState = this.initialState;
|
|
||||||
var value = "";
|
|
||||||
var eatLength, nextState;
|
|
||||||
|
|
||||||
while (this.currentState !== this.terminatingState && this.ptr < this.input.length) {
|
|
||||||
var _transitionFunction = this.transitionFunction();
|
|
||||||
|
|
||||||
var _transitionFunction2 = _slicedToArray(_transitionFunction, 2);
|
|
||||||
|
|
||||||
nextState = _transitionFunction2[0];
|
|
||||||
eatLength = _transitionFunction2[1];
|
|
||||||
value += this.input.substring(this.ptr, this.ptr += eatLength);
|
|
||||||
this.currentState = nextState;
|
|
||||||
}
|
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return FSM;
|
|
||||||
}();
|
|
||||||
|
|
||||||
export { makeTransition, FSM };
|
|
||||||
109
node_modules/@webassemblyjs/helper-fsm/lib/index.js
generated
vendored
109
node_modules/@webassemblyjs/helper-fsm/lib/index.js
generated
vendored
@@ -1,109 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.makeTransition = makeTransition;
|
|
||||||
exports.FSM = void 0;
|
|
||||||
|
|
||||||
function _sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
||||||
|
|
||||||
function _slicedToArray(arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return _sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }
|
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
||||||
|
|
||||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
||||||
|
|
||||||
var STOP = Symbol("STOP");
|
|
||||||
|
|
||||||
function makeTransition(regex, nextState) {
|
|
||||||
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
||||||
_ref$n = _ref.n,
|
|
||||||
n = _ref$n === void 0 ? 1 : _ref$n,
|
|
||||||
allowedSeparator = _ref.allowedSeparator;
|
|
||||||
|
|
||||||
return function (instance) {
|
|
||||||
if (allowedSeparator) {
|
|
||||||
if (instance.input[instance.ptr] === allowedSeparator) {
|
|
||||||
if (regex.test(instance.input.substring(instance.ptr - 1, instance.ptr))) {
|
|
||||||
// Consume the separator and stay in current state
|
|
||||||
return [instance.currentState, 1];
|
|
||||||
} else {
|
|
||||||
return [instance.terminatingState, 0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (regex.test(instance.input.substring(instance.ptr, instance.ptr + n))) {
|
|
||||||
return [nextState, n];
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function combineTransitions(transitions) {
|
|
||||||
return function () {
|
|
||||||
var match = false;
|
|
||||||
var currentTransitions = transitions[this.currentState] || [];
|
|
||||||
|
|
||||||
for (var i = 0; i < currentTransitions.length; ++i) {
|
|
||||||
match = currentTransitions[i](this);
|
|
||||||
|
|
||||||
if (match !== false) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return match || [this.terminatingState, 0];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
var FSM =
|
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function FSM(transitions, initialState) {
|
|
||||||
var terminatingState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : STOP;
|
|
||||||
|
|
||||||
_classCallCheck(this, FSM);
|
|
||||||
|
|
||||||
this.initialState = initialState;
|
|
||||||
this.terminatingState = terminatingState;
|
|
||||||
|
|
||||||
if (terminatingState === STOP || !transitions[terminatingState]) {
|
|
||||||
transitions[terminatingState] = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
this.transitionFunction = combineTransitions.call(this, transitions);
|
|
||||||
}
|
|
||||||
|
|
||||||
_createClass(FSM, [{
|
|
||||||
key: "run",
|
|
||||||
value: function run(input) {
|
|
||||||
this.input = input;
|
|
||||||
this.ptr = 0;
|
|
||||||
this.currentState = this.initialState;
|
|
||||||
var value = "";
|
|
||||||
var eatLength, nextState;
|
|
||||||
|
|
||||||
while (this.currentState !== this.terminatingState && this.ptr < this.input.length) {
|
|
||||||
var _transitionFunction = this.transitionFunction();
|
|
||||||
|
|
||||||
var _transitionFunction2 = _slicedToArray(_transitionFunction, 2);
|
|
||||||
|
|
||||||
nextState = _transitionFunction2[0];
|
|
||||||
eatLength = _transitionFunction2[1];
|
|
||||||
value += this.input.substring(this.ptr, this.ptr += eatLength);
|
|
||||||
this.currentState = nextState;
|
|
||||||
}
|
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return FSM;
|
|
||||||
}();
|
|
||||||
|
|
||||||
exports.FSM = FSM;
|
|
||||||
13
node_modules/@webassemblyjs/helper-fsm/package.json
generated
vendored
13
node_modules/@webassemblyjs/helper-fsm/package.json
generated
vendored
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@webassemblyjs/helper-fsm",
|
|
||||||
"version": "1.9.0",
|
|
||||||
"description": "FSM implementation",
|
|
||||||
"main": "lib/index.js",
|
|
||||||
"module": "esm/index.js",
|
|
||||||
"author": "Mauro Bringolf",
|
|
||||||
"license": "ISC",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"gitHead": "0440b420888c1f7701eb9762ec657775506b87d8"
|
|
||||||
}
|
|
||||||
21
node_modules/@webassemblyjs/helper-module-context/LICENSE
generated
vendored
21
node_modules/@webassemblyjs/helper-module-context/LICENSE
generated
vendored
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
378
node_modules/@webassemblyjs/helper-module-context/esm/index.js
generated
vendored
378
node_modules/@webassemblyjs/helper-module-context/esm/index.js
generated
vendored
@@ -1,378 +0,0 @@
|
|||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
||||||
|
|
||||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
||||||
|
|
||||||
// TODO(sven): add flow in here
|
|
||||||
import { isSignature, isNumberLiteral } from "@webassemblyjs/ast";
|
|
||||||
export function moduleContextFromModuleAST(m) {
|
|
||||||
var moduleContext = new ModuleContext();
|
|
||||||
|
|
||||||
if (!(m.type === "Module")) {
|
|
||||||
throw new Error('m.type === "Module"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
m.fields.forEach(function (field) {
|
|
||||||
switch (field.type) {
|
|
||||||
case "Start":
|
|
||||||
{
|
|
||||||
moduleContext.setStart(field.index);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "TypeInstruction":
|
|
||||||
{
|
|
||||||
moduleContext.addType(field);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "Func":
|
|
||||||
{
|
|
||||||
moduleContext.addFunction(field);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "Global":
|
|
||||||
{
|
|
||||||
moduleContext.defineGlobal(field);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "ModuleImport":
|
|
||||||
{
|
|
||||||
switch (field.descr.type) {
|
|
||||||
case "GlobalType":
|
|
||||||
{
|
|
||||||
moduleContext.importGlobal(field.descr.valtype, field.descr.mutability);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "Memory":
|
|
||||||
{
|
|
||||||
moduleContext.addMemory(field.descr.limits.min, field.descr.limits.max);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "FuncImportDescr":
|
|
||||||
{
|
|
||||||
moduleContext.importFunction(field.descr);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "Table":
|
|
||||||
{
|
|
||||||
// FIXME(sven): not implemented yet
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
|
||||||
throw new Error("Unsupported ModuleImport of type " + JSON.stringify(field.descr.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "Memory":
|
|
||||||
{
|
|
||||||
moduleContext.addMemory(field.limits.min, field.limits.max);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return moduleContext;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Module context for type checking
|
|
||||||
*/
|
|
||||||
|
|
||||||
export var ModuleContext =
|
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function ModuleContext() {
|
|
||||||
_classCallCheck(this, ModuleContext);
|
|
||||||
|
|
||||||
this.funcs = [];
|
|
||||||
this.funcsOffsetByIdentifier = [];
|
|
||||||
this.types = [];
|
|
||||||
this.globals = [];
|
|
||||||
this.globalsOffsetByIdentifier = [];
|
|
||||||
this.mems = []; // Current stack frame
|
|
||||||
|
|
||||||
this.locals = [];
|
|
||||||
this.labels = [];
|
|
||||||
this.return = [];
|
|
||||||
this.debugName = "unknown";
|
|
||||||
this.start = null;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Set start segment
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
_createClass(ModuleContext, [{
|
|
||||||
key: "setStart",
|
|
||||||
value: function setStart(index) {
|
|
||||||
this.start = index.value;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Get start function
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "getStart",
|
|
||||||
value: function getStart() {
|
|
||||||
return this.start;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Reset the active stack frame
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "newContext",
|
|
||||||
value: function newContext(debugName, expectedResult) {
|
|
||||||
this.locals = [];
|
|
||||||
this.labels = [expectedResult];
|
|
||||||
this.return = expectedResult;
|
|
||||||
this.debugName = debugName;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "addFunction",
|
|
||||||
value: function addFunction(func
|
|
||||||
/*: Func*/
|
|
||||||
) {
|
|
||||||
// eslint-disable-next-line prefer-const
|
|
||||||
var _ref = func.signature || {},
|
|
||||||
_ref$params = _ref.params,
|
|
||||||
args = _ref$params === void 0 ? [] : _ref$params,
|
|
||||||
_ref$results = _ref.results,
|
|
||||||
result = _ref$results === void 0 ? [] : _ref$results;
|
|
||||||
|
|
||||||
args = args.map(function (arg) {
|
|
||||||
return arg.valtype;
|
|
||||||
});
|
|
||||||
this.funcs.push({
|
|
||||||
args: args,
|
|
||||||
result: result
|
|
||||||
});
|
|
||||||
|
|
||||||
if (typeof func.name !== "undefined") {
|
|
||||||
this.funcsOffsetByIdentifier[func.name.value] = this.funcs.length - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "importFunction",
|
|
||||||
value: function importFunction(funcimport) {
|
|
||||||
if (isSignature(funcimport.signature)) {
|
|
||||||
// eslint-disable-next-line prefer-const
|
|
||||||
var _funcimport$signature = funcimport.signature,
|
|
||||||
args = _funcimport$signature.params,
|
|
||||||
result = _funcimport$signature.results;
|
|
||||||
args = args.map(function (arg) {
|
|
||||||
return arg.valtype;
|
|
||||||
});
|
|
||||||
this.funcs.push({
|
|
||||||
args: args,
|
|
||||||
result: result
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
if (!isNumberLiteral(funcimport.signature)) {
|
|
||||||
throw new Error('isNumberLiteral(funcimport.signature)' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var typeId = funcimport.signature.value;
|
|
||||||
|
|
||||||
if (!this.hasType(typeId)) {
|
|
||||||
throw new Error('this.hasType(typeId)' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var signature = this.getType(typeId);
|
|
||||||
this.funcs.push({
|
|
||||||
args: signature.params.map(function (arg) {
|
|
||||||
return arg.valtype;
|
|
||||||
}),
|
|
||||||
result: signature.results
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof funcimport.id !== "undefined") {
|
|
||||||
// imports are first, we can assume their index in the array
|
|
||||||
this.funcsOffsetByIdentifier[funcimport.id.value] = this.funcs.length - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "hasFunction",
|
|
||||||
value: function hasFunction(index) {
|
|
||||||
return typeof this.getFunction(index) !== "undefined";
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getFunction",
|
|
||||||
value: function getFunction(index) {
|
|
||||||
if (typeof index !== "number") {
|
|
||||||
throw new Error("getFunction only supported for number index");
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.funcs[index];
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getFunctionOffsetByIdentifier",
|
|
||||||
value: function getFunctionOffsetByIdentifier(name) {
|
|
||||||
if (!(typeof name === "string")) {
|
|
||||||
throw new Error('typeof name === "string"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.funcsOffsetByIdentifier[name];
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Labels
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "addLabel",
|
|
||||||
value: function addLabel(result) {
|
|
||||||
this.labels.unshift(result);
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "hasLabel",
|
|
||||||
value: function hasLabel(index) {
|
|
||||||
return this.labels.length > index && index >= 0;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getLabel",
|
|
||||||
value: function getLabel(index) {
|
|
||||||
return this.labels[index];
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "popLabel",
|
|
||||||
value: function popLabel() {
|
|
||||||
this.labels.shift();
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Locals
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "hasLocal",
|
|
||||||
value: function hasLocal(index) {
|
|
||||||
return typeof this.getLocal(index) !== "undefined";
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getLocal",
|
|
||||||
value: function getLocal(index) {
|
|
||||||
return this.locals[index];
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "addLocal",
|
|
||||||
value: function addLocal(type) {
|
|
||||||
this.locals.push(type);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Types
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "addType",
|
|
||||||
value: function addType(type) {
|
|
||||||
if (!(type.functype.type === "Signature")) {
|
|
||||||
throw new Error('type.functype.type === "Signature"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
this.types.push(type.functype);
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "hasType",
|
|
||||||
value: function hasType(index) {
|
|
||||||
return this.types[index] !== undefined;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getType",
|
|
||||||
value: function getType(index) {
|
|
||||||
return this.types[index];
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Globals
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "hasGlobal",
|
|
||||||
value: function hasGlobal(index) {
|
|
||||||
return this.globals.length > index && index >= 0;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getGlobal",
|
|
||||||
value: function getGlobal(index) {
|
|
||||||
return this.globals[index].type;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getGlobalOffsetByIdentifier",
|
|
||||||
value: function getGlobalOffsetByIdentifier(name) {
|
|
||||||
if (!(typeof name === "string")) {
|
|
||||||
throw new Error('typeof name === "string"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.globalsOffsetByIdentifier[name];
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "defineGlobal",
|
|
||||||
value: function defineGlobal(global
|
|
||||||
/*: Global*/
|
|
||||||
) {
|
|
||||||
var type = global.globalType.valtype;
|
|
||||||
var mutability = global.globalType.mutability;
|
|
||||||
this.globals.push({
|
|
||||||
type: type,
|
|
||||||
mutability: mutability
|
|
||||||
});
|
|
||||||
|
|
||||||
if (typeof global.name !== "undefined") {
|
|
||||||
this.globalsOffsetByIdentifier[global.name.value] = this.globals.length - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "importGlobal",
|
|
||||||
value: function importGlobal(type, mutability) {
|
|
||||||
this.globals.push({
|
|
||||||
type: type,
|
|
||||||
mutability: mutability
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "isMutableGlobal",
|
|
||||||
value: function isMutableGlobal(index) {
|
|
||||||
return this.globals[index].mutability === "var";
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "isImmutableGlobal",
|
|
||||||
value: function isImmutableGlobal(index) {
|
|
||||||
return this.globals[index].mutability === "const";
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Memories
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "hasMemory",
|
|
||||||
value: function hasMemory(index) {
|
|
||||||
return this.mems.length > index && index >= 0;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "addMemory",
|
|
||||||
value: function addMemory(min, max) {
|
|
||||||
this.mems.push({
|
|
||||||
min: min,
|
|
||||||
max: max
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getMemory",
|
|
||||||
value: function getMemory(index) {
|
|
||||||
return this.mems[index];
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return ModuleContext;
|
|
||||||
}();
|
|
||||||
389
node_modules/@webassemblyjs/helper-module-context/lib/index.js
generated
vendored
389
node_modules/@webassemblyjs/helper-module-context/lib/index.js
generated
vendored
@@ -1,389 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.moduleContextFromModuleAST = moduleContextFromModuleAST;
|
|
||||||
exports.ModuleContext = void 0;
|
|
||||||
|
|
||||||
var _ast = require("@webassemblyjs/ast");
|
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
||||||
|
|
||||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
||||||
|
|
||||||
function moduleContextFromModuleAST(m) {
|
|
||||||
var moduleContext = new ModuleContext();
|
|
||||||
|
|
||||||
if (!(m.type === "Module")) {
|
|
||||||
throw new Error('m.type === "Module"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
m.fields.forEach(function (field) {
|
|
||||||
switch (field.type) {
|
|
||||||
case "Start":
|
|
||||||
{
|
|
||||||
moduleContext.setStart(field.index);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "TypeInstruction":
|
|
||||||
{
|
|
||||||
moduleContext.addType(field);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "Func":
|
|
||||||
{
|
|
||||||
moduleContext.addFunction(field);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "Global":
|
|
||||||
{
|
|
||||||
moduleContext.defineGlobal(field);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "ModuleImport":
|
|
||||||
{
|
|
||||||
switch (field.descr.type) {
|
|
||||||
case "GlobalType":
|
|
||||||
{
|
|
||||||
moduleContext.importGlobal(field.descr.valtype, field.descr.mutability);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "Memory":
|
|
||||||
{
|
|
||||||
moduleContext.addMemory(field.descr.limits.min, field.descr.limits.max);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "FuncImportDescr":
|
|
||||||
{
|
|
||||||
moduleContext.importFunction(field.descr);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "Table":
|
|
||||||
{
|
|
||||||
// FIXME(sven): not implemented yet
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
|
||||||
throw new Error("Unsupported ModuleImport of type " + JSON.stringify(field.descr.type));
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "Memory":
|
|
||||||
{
|
|
||||||
moduleContext.addMemory(field.limits.min, field.limits.max);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return moduleContext;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Module context for type checking
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
var ModuleContext =
|
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function ModuleContext() {
|
|
||||||
_classCallCheck(this, ModuleContext);
|
|
||||||
|
|
||||||
this.funcs = [];
|
|
||||||
this.funcsOffsetByIdentifier = [];
|
|
||||||
this.types = [];
|
|
||||||
this.globals = [];
|
|
||||||
this.globalsOffsetByIdentifier = [];
|
|
||||||
this.mems = []; // Current stack frame
|
|
||||||
|
|
||||||
this.locals = [];
|
|
||||||
this.labels = [];
|
|
||||||
this.return = [];
|
|
||||||
this.debugName = "unknown";
|
|
||||||
this.start = null;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Set start segment
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
_createClass(ModuleContext, [{
|
|
||||||
key: "setStart",
|
|
||||||
value: function setStart(index) {
|
|
||||||
this.start = index.value;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Get start function
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "getStart",
|
|
||||||
value: function getStart() {
|
|
||||||
return this.start;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Reset the active stack frame
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "newContext",
|
|
||||||
value: function newContext(debugName, expectedResult) {
|
|
||||||
this.locals = [];
|
|
||||||
this.labels = [expectedResult];
|
|
||||||
this.return = expectedResult;
|
|
||||||
this.debugName = debugName;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "addFunction",
|
|
||||||
value: function addFunction(func
|
|
||||||
/*: Func*/
|
|
||||||
) {
|
|
||||||
// eslint-disable-next-line prefer-const
|
|
||||||
var _ref = func.signature || {},
|
|
||||||
_ref$params = _ref.params,
|
|
||||||
args = _ref$params === void 0 ? [] : _ref$params,
|
|
||||||
_ref$results = _ref.results,
|
|
||||||
result = _ref$results === void 0 ? [] : _ref$results;
|
|
||||||
|
|
||||||
args = args.map(function (arg) {
|
|
||||||
return arg.valtype;
|
|
||||||
});
|
|
||||||
this.funcs.push({
|
|
||||||
args: args,
|
|
||||||
result: result
|
|
||||||
});
|
|
||||||
|
|
||||||
if (typeof func.name !== "undefined") {
|
|
||||||
this.funcsOffsetByIdentifier[func.name.value] = this.funcs.length - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "importFunction",
|
|
||||||
value: function importFunction(funcimport) {
|
|
||||||
if ((0, _ast.isSignature)(funcimport.signature)) {
|
|
||||||
// eslint-disable-next-line prefer-const
|
|
||||||
var _funcimport$signature = funcimport.signature,
|
|
||||||
args = _funcimport$signature.params,
|
|
||||||
result = _funcimport$signature.results;
|
|
||||||
args = args.map(function (arg) {
|
|
||||||
return arg.valtype;
|
|
||||||
});
|
|
||||||
this.funcs.push({
|
|
||||||
args: args,
|
|
||||||
result: result
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
if (!(0, _ast.isNumberLiteral)(funcimport.signature)) {
|
|
||||||
throw new Error('isNumberLiteral(funcimport.signature)' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var typeId = funcimport.signature.value;
|
|
||||||
|
|
||||||
if (!this.hasType(typeId)) {
|
|
||||||
throw new Error('this.hasType(typeId)' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
var signature = this.getType(typeId);
|
|
||||||
this.funcs.push({
|
|
||||||
args: signature.params.map(function (arg) {
|
|
||||||
return arg.valtype;
|
|
||||||
}),
|
|
||||||
result: signature.results
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof funcimport.id !== "undefined") {
|
|
||||||
// imports are first, we can assume their index in the array
|
|
||||||
this.funcsOffsetByIdentifier[funcimport.id.value] = this.funcs.length - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "hasFunction",
|
|
||||||
value: function hasFunction(index) {
|
|
||||||
return typeof this.getFunction(index) !== "undefined";
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getFunction",
|
|
||||||
value: function getFunction(index) {
|
|
||||||
if (typeof index !== "number") {
|
|
||||||
throw new Error("getFunction only supported for number index");
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.funcs[index];
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getFunctionOffsetByIdentifier",
|
|
||||||
value: function getFunctionOffsetByIdentifier(name) {
|
|
||||||
if (!(typeof name === "string")) {
|
|
||||||
throw new Error('typeof name === "string"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.funcsOffsetByIdentifier[name];
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Labels
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "addLabel",
|
|
||||||
value: function addLabel(result) {
|
|
||||||
this.labels.unshift(result);
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "hasLabel",
|
|
||||||
value: function hasLabel(index) {
|
|
||||||
return this.labels.length > index && index >= 0;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getLabel",
|
|
||||||
value: function getLabel(index) {
|
|
||||||
return this.labels[index];
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "popLabel",
|
|
||||||
value: function popLabel() {
|
|
||||||
this.labels.shift();
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Locals
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "hasLocal",
|
|
||||||
value: function hasLocal(index) {
|
|
||||||
return typeof this.getLocal(index) !== "undefined";
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getLocal",
|
|
||||||
value: function getLocal(index) {
|
|
||||||
return this.locals[index];
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "addLocal",
|
|
||||||
value: function addLocal(type) {
|
|
||||||
this.locals.push(type);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Types
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "addType",
|
|
||||||
value: function addType(type) {
|
|
||||||
if (!(type.functype.type === "Signature")) {
|
|
||||||
throw new Error('type.functype.type === "Signature"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
this.types.push(type.functype);
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "hasType",
|
|
||||||
value: function hasType(index) {
|
|
||||||
return this.types[index] !== undefined;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getType",
|
|
||||||
value: function getType(index) {
|
|
||||||
return this.types[index];
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Globals
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "hasGlobal",
|
|
||||||
value: function hasGlobal(index) {
|
|
||||||
return this.globals.length > index && index >= 0;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getGlobal",
|
|
||||||
value: function getGlobal(index) {
|
|
||||||
return this.globals[index].type;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getGlobalOffsetByIdentifier",
|
|
||||||
value: function getGlobalOffsetByIdentifier(name) {
|
|
||||||
if (!(typeof name === "string")) {
|
|
||||||
throw new Error('typeof name === "string"' + " error: " + (undefined || "unknown"));
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.globalsOffsetByIdentifier[name];
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "defineGlobal",
|
|
||||||
value: function defineGlobal(global
|
|
||||||
/*: Global*/
|
|
||||||
) {
|
|
||||||
var type = global.globalType.valtype;
|
|
||||||
var mutability = global.globalType.mutability;
|
|
||||||
this.globals.push({
|
|
||||||
type: type,
|
|
||||||
mutability: mutability
|
|
||||||
});
|
|
||||||
|
|
||||||
if (typeof global.name !== "undefined") {
|
|
||||||
this.globalsOffsetByIdentifier[global.name.value] = this.globals.length - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "importGlobal",
|
|
||||||
value: function importGlobal(type, mutability) {
|
|
||||||
this.globals.push({
|
|
||||||
type: type,
|
|
||||||
mutability: mutability
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "isMutableGlobal",
|
|
||||||
value: function isMutableGlobal(index) {
|
|
||||||
return this.globals[index].mutability === "var";
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "isImmutableGlobal",
|
|
||||||
value: function isImmutableGlobal(index) {
|
|
||||||
return this.globals[index].mutability === "const";
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Memories
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: "hasMemory",
|
|
||||||
value: function hasMemory(index) {
|
|
||||||
return this.mems.length > index && index >= 0;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "addMemory",
|
|
||||||
value: function addMemory(min, max) {
|
|
||||||
this.mems.push({
|
|
||||||
min: min,
|
|
||||||
max: max
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: "getMemory",
|
|
||||||
value: function getMemory(index) {
|
|
||||||
return this.mems[index];
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return ModuleContext;
|
|
||||||
}();
|
|
||||||
|
|
||||||
exports.ModuleContext = ModuleContext;
|
|
||||||
27
node_modules/@webassemblyjs/helper-module-context/package.json
generated
vendored
27
node_modules/@webassemblyjs/helper-module-context/package.json
generated
vendored
@@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@webassemblyjs/helper-module-context",
|
|
||||||
"version": "1.9.0",
|
|
||||||
"description": "",
|
|
||||||
"main": "lib/index.js",
|
|
||||||
"module": "esm/index.js",
|
|
||||||
"scripts": {
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/xtuc/webassemblyjs.git"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@webassemblyjs/ast": "1.9.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@webassemblyjs/wast-parser": "1.9.0",
|
|
||||||
"mamacro": "^0.0.7"
|
|
||||||
},
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"author": "Sven Sauleau",
|
|
||||||
"license": "MIT",
|
|
||||||
"gitHead": "0440b420888c1f7701eb9762ec657775506b87d8"
|
|
||||||
}
|
|
||||||
287
node_modules/@webassemblyjs/helper-module-context/src/index.js
generated
vendored
287
node_modules/@webassemblyjs/helper-module-context/src/index.js
generated
vendored
@@ -1,287 +0,0 @@
|
|||||||
// TODO(sven): add flow in here
|
|
||||||
|
|
||||||
import { isSignature, isNumberLiteral } from "@webassemblyjs/ast";
|
|
||||||
import { assert } from "mamacro";
|
|
||||||
|
|
||||||
export function moduleContextFromModuleAST(m) {
|
|
||||||
const moduleContext = new ModuleContext();
|
|
||||||
|
|
||||||
assert(m.type === "Module");
|
|
||||||
|
|
||||||
m.fields.forEach(field => {
|
|
||||||
switch (field.type) {
|
|
||||||
case "Start": {
|
|
||||||
moduleContext.setStart(field.index);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "TypeInstruction": {
|
|
||||||
moduleContext.addType(field);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "Func": {
|
|
||||||
moduleContext.addFunction(field);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "Global": {
|
|
||||||
moduleContext.defineGlobal(field);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "ModuleImport": {
|
|
||||||
switch (field.descr.type) {
|
|
||||||
case "GlobalType": {
|
|
||||||
moduleContext.importGlobal(
|
|
||||||
field.descr.valtype,
|
|
||||||
field.descr.mutability
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "Memory": {
|
|
||||||
moduleContext.addMemory(
|
|
||||||
field.descr.limits.min,
|
|
||||||
field.descr.limits.max
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "FuncImportDescr": {
|
|
||||||
moduleContext.importFunction(field.descr);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "Table": {
|
|
||||||
// FIXME(sven): not implemented yet
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
|
||||||
throw new Error(
|
|
||||||
"Unsupported ModuleImport of type " +
|
|
||||||
JSON.stringify(field.descr.type)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "Memory": {
|
|
||||||
moduleContext.addMemory(field.limits.min, field.limits.max);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return moduleContext;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Module context for type checking
|
|
||||||
*/
|
|
||||||
export class ModuleContext {
|
|
||||||
constructor() {
|
|
||||||
this.funcs = [];
|
|
||||||
this.funcsOffsetByIdentifier = [];
|
|
||||||
|
|
||||||
this.types = [];
|
|
||||||
|
|
||||||
this.globals = [];
|
|
||||||
this.globalsOffsetByIdentifier = [];
|
|
||||||
|
|
||||||
this.mems = [];
|
|
||||||
|
|
||||||
// Current stack frame
|
|
||||||
this.locals = [];
|
|
||||||
this.labels = [];
|
|
||||||
this.return = [];
|
|
||||||
|
|
||||||
this.debugName = "unknown";
|
|
||||||
|
|
||||||
this.start = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set start segment
|
|
||||||
*/
|
|
||||||
setStart(index) {
|
|
||||||
this.start = index.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get start function
|
|
||||||
*/
|
|
||||||
getStart() {
|
|
||||||
return this.start;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reset the active stack frame
|
|
||||||
*/
|
|
||||||
newContext(debugName, expectedResult) {
|
|
||||||
this.locals = [];
|
|
||||||
this.labels = [expectedResult];
|
|
||||||
this.return = expectedResult;
|
|
||||||
this.debugName = debugName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Functions
|
|
||||||
*/
|
|
||||||
addFunction(func /*: Func*/) {
|
|
||||||
// eslint-disable-next-line prefer-const
|
|
||||||
let { params: args = [], results: result = [] } = func.signature || {};
|
|
||||||
|
|
||||||
args = args.map(arg => arg.valtype);
|
|
||||||
|
|
||||||
this.funcs.push({ args, result });
|
|
||||||
|
|
||||||
if (typeof func.name !== "undefined") {
|
|
||||||
this.funcsOffsetByIdentifier[func.name.value] = this.funcs.length - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
importFunction(funcimport) {
|
|
||||||
if (isSignature(funcimport.signature)) {
|
|
||||||
// eslint-disable-next-line prefer-const
|
|
||||||
let { params: args, results: result } = funcimport.signature;
|
|
||||||
args = args.map(arg => arg.valtype);
|
|
||||||
|
|
||||||
this.funcs.push({ args, result });
|
|
||||||
} else {
|
|
||||||
assert(isNumberLiteral(funcimport.signature));
|
|
||||||
|
|
||||||
const typeId = funcimport.signature.value;
|
|
||||||
assert(this.hasType(typeId));
|
|
||||||
|
|
||||||
const signature = this.getType(typeId);
|
|
||||||
this.funcs.push({
|
|
||||||
args: signature.params.map(arg => arg.valtype),
|
|
||||||
result: signature.results
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof funcimport.id !== "undefined") {
|
|
||||||
// imports are first, we can assume their index in the array
|
|
||||||
this.funcsOffsetByIdentifier[funcimport.id.value] = this.funcs.length - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
hasFunction(index) {
|
|
||||||
return typeof this.getFunction(index) !== "undefined";
|
|
||||||
}
|
|
||||||
|
|
||||||
getFunction(index) {
|
|
||||||
if (typeof index !== "number") {
|
|
||||||
throw new Error("getFunction only supported for number index");
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.funcs[index];
|
|
||||||
}
|
|
||||||
|
|
||||||
getFunctionOffsetByIdentifier(name) {
|
|
||||||
assert(typeof name === "string");
|
|
||||||
|
|
||||||
return this.funcsOffsetByIdentifier[name];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Labels
|
|
||||||
*/
|
|
||||||
addLabel(result) {
|
|
||||||
this.labels.unshift(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
hasLabel(index) {
|
|
||||||
return this.labels.length > index && index >= 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
getLabel(index) {
|
|
||||||
return this.labels[index];
|
|
||||||
}
|
|
||||||
|
|
||||||
popLabel() {
|
|
||||||
this.labels.shift();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Locals
|
|
||||||
*/
|
|
||||||
hasLocal(index) {
|
|
||||||
return typeof this.getLocal(index) !== "undefined";
|
|
||||||
}
|
|
||||||
|
|
||||||
getLocal(index) {
|
|
||||||
return this.locals[index];
|
|
||||||
}
|
|
||||||
|
|
||||||
addLocal(type) {
|
|
||||||
this.locals.push(type);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Types
|
|
||||||
*/
|
|
||||||
addType(type) {
|
|
||||||
assert(type.functype.type === "Signature");
|
|
||||||
this.types.push(type.functype);
|
|
||||||
}
|
|
||||||
|
|
||||||
hasType(index) {
|
|
||||||
return this.types[index] !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
getType(index) {
|
|
||||||
return this.types[index];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Globals
|
|
||||||
*/
|
|
||||||
hasGlobal(index) {
|
|
||||||
return this.globals.length > index && index >= 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
getGlobal(index) {
|
|
||||||
return this.globals[index].type;
|
|
||||||
}
|
|
||||||
|
|
||||||
getGlobalOffsetByIdentifier(name) {
|
|
||||||
assert(typeof name === "string");
|
|
||||||
|
|
||||||
return this.globalsOffsetByIdentifier[name];
|
|
||||||
}
|
|
||||||
|
|
||||||
defineGlobal(global /*: Global*/) {
|
|
||||||
const type = global.globalType.valtype;
|
|
||||||
const mutability = global.globalType.mutability;
|
|
||||||
|
|
||||||
this.globals.push({ type, mutability });
|
|
||||||
|
|
||||||
if (typeof global.name !== "undefined") {
|
|
||||||
this.globalsOffsetByIdentifier[global.name.value] =
|
|
||||||
this.globals.length - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
importGlobal(type, mutability) {
|
|
||||||
this.globals.push({ type, mutability });
|
|
||||||
}
|
|
||||||
|
|
||||||
isMutableGlobal(index) {
|
|
||||||
return this.globals[index].mutability === "var";
|
|
||||||
}
|
|
||||||
|
|
||||||
isImmutableGlobal(index) {
|
|
||||||
return this.globals[index].mutability === "const";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Memories
|
|
||||||
*/
|
|
||||||
hasMemory(index) {
|
|
||||||
return this.mems.length > index && index >= 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
addMemory(min, max) {
|
|
||||||
this.mems.push({ min, max });
|
|
||||||
}
|
|
||||||
|
|
||||||
getMemory(index) {
|
|
||||||
return this.mems[index];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
100
node_modules/@webassemblyjs/helper-module-context/test/index.js
generated
vendored
100
node_modules/@webassemblyjs/helper-module-context/test/index.js
generated
vendored
@@ -1,100 +0,0 @@
|
|||||||
const { assert } = require("chai");
|
|
||||||
const { parse } = require("@webassemblyjs/wast-parser");
|
|
||||||
|
|
||||||
const { moduleContextFromModuleAST } = require("../lib");
|
|
||||||
|
|
||||||
const contextFromWast = wast => moduleContextFromModuleAST(parse(wast).body[0]);
|
|
||||||
|
|
||||||
describe("module context", () => {
|
|
||||||
describe("start segment", () => {
|
|
||||||
it("should return the start function offset", () => {
|
|
||||||
const context = contextFromWast(`
|
|
||||||
(module
|
|
||||||
(func)
|
|
||||||
(func)
|
|
||||||
(start 1)
|
|
||||||
)
|
|
||||||
`);
|
|
||||||
|
|
||||||
assert.isOk(context.getStart());
|
|
||||||
assert.typeOf(context.getStart(), "number");
|
|
||||||
assert.equal(context.getStart(), 1);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should return null if no start function", () => {
|
|
||||||
const context = contextFromWast(`
|
|
||||||
(module (func))
|
|
||||||
`);
|
|
||||||
|
|
||||||
assert.isNull(context.getStart());
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should retrive the type of implemented functions", () => {
|
|
||||||
const context = contextFromWast(`
|
|
||||||
(module
|
|
||||||
(func (param i32) (result i64))
|
|
||||||
(func (param i64) (result i32))
|
|
||||||
(func (result i64))
|
|
||||||
(func)
|
|
||||||
)
|
|
||||||
`);
|
|
||||||
|
|
||||||
assert.deepEqual(context.getFunction(0), {
|
|
||||||
args: ["i32"],
|
|
||||||
result: ["i64"]
|
|
||||||
});
|
|
||||||
assert.deepEqual(context.getFunction(1), {
|
|
||||||
args: ["i64"],
|
|
||||||
result: ["i32"]
|
|
||||||
});
|
|
||||||
assert.deepEqual(context.getFunction(2), { args: [], result: ["i64"] });
|
|
||||||
assert.deepEqual(context.getFunction(3), { args: [], result: [] });
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should retrive the type of imported functions", () => {
|
|
||||||
const context = contextFromWast(`
|
|
||||||
(module
|
|
||||||
(import "a" "a" (func (param i32) (result i32)))
|
|
||||||
(import "a" "b" (func (result i64)))
|
|
||||||
(import "a" "c" (func))
|
|
||||||
(func (result f32))
|
|
||||||
)
|
|
||||||
`);
|
|
||||||
|
|
||||||
assert.deepEqual(context.getFunction(0), {
|
|
||||||
args: ["i32"],
|
|
||||||
result: ["i32"]
|
|
||||||
});
|
|
||||||
assert.deepEqual(context.getFunction(1), {
|
|
||||||
args: [],
|
|
||||||
result: ["i64"]
|
|
||||||
});
|
|
||||||
assert.deepEqual(context.getFunction(2), { args: [], result: [] });
|
|
||||||
assert.deepEqual(context.getFunction(3), { args: [], result: ["f32"] });
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should retrive the type of functions with type ref", () => {
|
|
||||||
const context = contextFromWast(`
|
|
||||||
(module
|
|
||||||
(type (func (param i32) (result i32)))
|
|
||||||
(type (func (result i64)))
|
|
||||||
(type (func))
|
|
||||||
|
|
||||||
(import "a" "a" (func (type 0)))
|
|
||||||
(import "a" "b" (func (type 1)))
|
|
||||||
(func (type 2))
|
|
||||||
)
|
|
||||||
`);
|
|
||||||
|
|
||||||
assert.deepEqual(context.getFunction(0), {
|
|
||||||
args: ["i32"],
|
|
||||||
result: ["i32"]
|
|
||||||
});
|
|
||||||
assert.deepEqual(context.getFunction(1), {
|
|
||||||
args: [],
|
|
||||||
result: ["i64"]
|
|
||||||
});
|
|
||||||
assert.deepEqual(context.getFunction(2), { args: [], result: [] });
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
21
node_modules/@webassemblyjs/helper-wasm-bytecode/LICENSE
generated
vendored
21
node_modules/@webassemblyjs/helper-wasm-bytecode/LICENSE
generated
vendored
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
324
node_modules/@webassemblyjs/helper-wasm-bytecode/esm/index.js
generated
vendored
324
node_modules/@webassemblyjs/helper-wasm-bytecode/esm/index.js
generated
vendored
@@ -1,324 +0,0 @@
|
|||||||
var illegalop = "illegal";
|
|
||||||
var magicModuleHeader = [0x00, 0x61, 0x73, 0x6d];
|
|
||||||
var moduleVersion = [0x01, 0x00, 0x00, 0x00];
|
|
||||||
|
|
||||||
function invertMap(obj) {
|
|
||||||
var keyModifierFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (k) {
|
|
||||||
return k;
|
|
||||||
};
|
|
||||||
var result = {};
|
|
||||||
var keys = Object.keys(obj);
|
|
||||||
|
|
||||||
for (var i = 0, length = keys.length; i < length; i++) {
|
|
||||||
result[keyModifierFn(obj[keys[i]])] = keys[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createSymbolObject(name
|
|
||||||
/*: string */
|
|
||||||
, object
|
|
||||||
/*: string */
|
|
||||||
)
|
|
||||||
/*: Symbol*/
|
|
||||||
{
|
|
||||||
var numberOfArgs
|
|
||||||
/*: number*/
|
|
||||||
= arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
||||||
return {
|
|
||||||
name: name,
|
|
||||||
object: object,
|
|
||||||
numberOfArgs: numberOfArgs
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function createSymbol(name
|
|
||||||
/*: string */
|
|
||||||
)
|
|
||||||
/*: Symbol*/
|
|
||||||
{
|
|
||||||
var numberOfArgs
|
|
||||||
/*: number*/
|
|
||||||
= arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
||||||
return {
|
|
||||||
name: name,
|
|
||||||
numberOfArgs: numberOfArgs
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
var types = {
|
|
||||||
func: 0x60,
|
|
||||||
result: 0x40
|
|
||||||
};
|
|
||||||
var exportTypes = {
|
|
||||||
0x00: "Func",
|
|
||||||
0x01: "Table",
|
|
||||||
0x02: "Mem",
|
|
||||||
0x03: "Global"
|
|
||||||
};
|
|
||||||
var exportTypesByName = invertMap(exportTypes);
|
|
||||||
var valtypes = {
|
|
||||||
0x7f: "i32",
|
|
||||||
0x7e: "i64",
|
|
||||||
0x7d: "f32",
|
|
||||||
0x7c: "f64",
|
|
||||||
0x7b: "v128"
|
|
||||||
};
|
|
||||||
var valtypesByString = invertMap(valtypes);
|
|
||||||
var tableTypes = {
|
|
||||||
0x70: "anyfunc"
|
|
||||||
};
|
|
||||||
var blockTypes = Object.assign({}, valtypes, {
|
|
||||||
// https://webassembly.github.io/spec/core/binary/types.html#binary-blocktype
|
|
||||||
0x40: null,
|
|
||||||
// https://webassembly.github.io/spec/core/binary/types.html#binary-valtype
|
|
||||||
0x7f: "i32",
|
|
||||||
0x7e: "i64",
|
|
||||||
0x7d: "f32",
|
|
||||||
0x7c: "f64"
|
|
||||||
});
|
|
||||||
var globalTypes = {
|
|
||||||
0x00: "const",
|
|
||||||
0x01: "var"
|
|
||||||
};
|
|
||||||
var globalTypesByString = invertMap(globalTypes);
|
|
||||||
var importTypes = {
|
|
||||||
0x00: "func",
|
|
||||||
0x01: "table",
|
|
||||||
0x02: "mem",
|
|
||||||
0x03: "global"
|
|
||||||
};
|
|
||||||
var sections = {
|
|
||||||
custom: 0,
|
|
||||||
type: 1,
|
|
||||||
import: 2,
|
|
||||||
func: 3,
|
|
||||||
table: 4,
|
|
||||||
memory: 5,
|
|
||||||
global: 6,
|
|
||||||
export: 7,
|
|
||||||
start: 8,
|
|
||||||
element: 9,
|
|
||||||
code: 10,
|
|
||||||
data: 11
|
|
||||||
};
|
|
||||||
var symbolsByByte = {
|
|
||||||
0x00: createSymbol("unreachable"),
|
|
||||||
0x01: createSymbol("nop"),
|
|
||||||
0x02: createSymbol("block"),
|
|
||||||
0x03: createSymbol("loop"),
|
|
||||||
0x04: createSymbol("if"),
|
|
||||||
0x05: createSymbol("else"),
|
|
||||||
0x06: illegalop,
|
|
||||||
0x07: illegalop,
|
|
||||||
0x08: illegalop,
|
|
||||||
0x09: illegalop,
|
|
||||||
0x0a: illegalop,
|
|
||||||
0x0b: createSymbol("end"),
|
|
||||||
0x0c: createSymbol("br", 1),
|
|
||||||
0x0d: createSymbol("br_if", 1),
|
|
||||||
0x0e: createSymbol("br_table"),
|
|
||||||
0x0f: createSymbol("return"),
|
|
||||||
0x10: createSymbol("call", 1),
|
|
||||||
0x11: createSymbol("call_indirect", 2),
|
|
||||||
0x12: illegalop,
|
|
||||||
0x13: illegalop,
|
|
||||||
0x14: illegalop,
|
|
||||||
0x15: illegalop,
|
|
||||||
0x16: illegalop,
|
|
||||||
0x17: illegalop,
|
|
||||||
0x18: illegalop,
|
|
||||||
0x19: illegalop,
|
|
||||||
0x1a: createSymbol("drop"),
|
|
||||||
0x1b: createSymbol("select"),
|
|
||||||
0x1c: illegalop,
|
|
||||||
0x1d: illegalop,
|
|
||||||
0x1e: illegalop,
|
|
||||||
0x1f: illegalop,
|
|
||||||
0x20: createSymbol("get_local", 1),
|
|
||||||
0x21: createSymbol("set_local", 1),
|
|
||||||
0x22: createSymbol("tee_local", 1),
|
|
||||||
0x23: createSymbol("get_global", 1),
|
|
||||||
0x24: createSymbol("set_global", 1),
|
|
||||||
0x25: illegalop,
|
|
||||||
0x26: illegalop,
|
|
||||||
0x27: illegalop,
|
|
||||||
0x28: createSymbolObject("load", "u32", 1),
|
|
||||||
0x29: createSymbolObject("load", "u64", 1),
|
|
||||||
0x2a: createSymbolObject("load", "f32", 1),
|
|
||||||
0x2b: createSymbolObject("load", "f64", 1),
|
|
||||||
0x2c: createSymbolObject("load8_s", "u32", 1),
|
|
||||||
0x2d: createSymbolObject("load8_u", "u32", 1),
|
|
||||||
0x2e: createSymbolObject("load16_s", "u32", 1),
|
|
||||||
0x2f: createSymbolObject("load16_u", "u32", 1),
|
|
||||||
0x30: createSymbolObject("load8_s", "u64", 1),
|
|
||||||
0x31: createSymbolObject("load8_u", "u64", 1),
|
|
||||||
0x32: createSymbolObject("load16_s", "u64", 1),
|
|
||||||
0x33: createSymbolObject("load16_u", "u64", 1),
|
|
||||||
0x34: createSymbolObject("load32_s", "u64", 1),
|
|
||||||
0x35: createSymbolObject("load32_u", "u64", 1),
|
|
||||||
0x36: createSymbolObject("store", "u32", 1),
|
|
||||||
0x37: createSymbolObject("store", "u64", 1),
|
|
||||||
0x38: createSymbolObject("store", "f32", 1),
|
|
||||||
0x39: createSymbolObject("store", "f64", 1),
|
|
||||||
0x3a: createSymbolObject("store8", "u32", 1),
|
|
||||||
0x3b: createSymbolObject("store16", "u32", 1),
|
|
||||||
0x3c: createSymbolObject("store8", "u64", 1),
|
|
||||||
0x3d: createSymbolObject("store16", "u64", 1),
|
|
||||||
0x3e: createSymbolObject("store32", "u64", 1),
|
|
||||||
0x3f: createSymbolObject("current_memory"),
|
|
||||||
0x40: createSymbolObject("grow_memory"),
|
|
||||||
0x41: createSymbolObject("const", "i32", 1),
|
|
||||||
0x42: createSymbolObject("const", "i64", 1),
|
|
||||||
0x43: createSymbolObject("const", "f32", 1),
|
|
||||||
0x44: createSymbolObject("const", "f64", 1),
|
|
||||||
0x45: createSymbolObject("eqz", "i32"),
|
|
||||||
0x46: createSymbolObject("eq", "i32"),
|
|
||||||
0x47: createSymbolObject("ne", "i32"),
|
|
||||||
0x48: createSymbolObject("lt_s", "i32"),
|
|
||||||
0x49: createSymbolObject("lt_u", "i32"),
|
|
||||||
0x4a: createSymbolObject("gt_s", "i32"),
|
|
||||||
0x4b: createSymbolObject("gt_u", "i32"),
|
|
||||||
0x4c: createSymbolObject("le_s", "i32"),
|
|
||||||
0x4d: createSymbolObject("le_u", "i32"),
|
|
||||||
0x4e: createSymbolObject("ge_s", "i32"),
|
|
||||||
0x4f: createSymbolObject("ge_u", "i32"),
|
|
||||||
0x50: createSymbolObject("eqz", "i64"),
|
|
||||||
0x51: createSymbolObject("eq", "i64"),
|
|
||||||
0x52: createSymbolObject("ne", "i64"),
|
|
||||||
0x53: createSymbolObject("lt_s", "i64"),
|
|
||||||
0x54: createSymbolObject("lt_u", "i64"),
|
|
||||||
0x55: createSymbolObject("gt_s", "i64"),
|
|
||||||
0x56: createSymbolObject("gt_u", "i64"),
|
|
||||||
0x57: createSymbolObject("le_s", "i64"),
|
|
||||||
0x58: createSymbolObject("le_u", "i64"),
|
|
||||||
0x59: createSymbolObject("ge_s", "i64"),
|
|
||||||
0x5a: createSymbolObject("ge_u", "i64"),
|
|
||||||
0x5b: createSymbolObject("eq", "f32"),
|
|
||||||
0x5c: createSymbolObject("ne", "f32"),
|
|
||||||
0x5d: createSymbolObject("lt", "f32"),
|
|
||||||
0x5e: createSymbolObject("gt", "f32"),
|
|
||||||
0x5f: createSymbolObject("le", "f32"),
|
|
||||||
0x60: createSymbolObject("ge", "f32"),
|
|
||||||
0x61: createSymbolObject("eq", "f64"),
|
|
||||||
0x62: createSymbolObject("ne", "f64"),
|
|
||||||
0x63: createSymbolObject("lt", "f64"),
|
|
||||||
0x64: createSymbolObject("gt", "f64"),
|
|
||||||
0x65: createSymbolObject("le", "f64"),
|
|
||||||
0x66: createSymbolObject("ge", "f64"),
|
|
||||||
0x67: createSymbolObject("clz", "i32"),
|
|
||||||
0x68: createSymbolObject("ctz", "i32"),
|
|
||||||
0x69: createSymbolObject("popcnt", "i32"),
|
|
||||||
0x6a: createSymbolObject("add", "i32"),
|
|
||||||
0x6b: createSymbolObject("sub", "i32"),
|
|
||||||
0x6c: createSymbolObject("mul", "i32"),
|
|
||||||
0x6d: createSymbolObject("div_s", "i32"),
|
|
||||||
0x6e: createSymbolObject("div_u", "i32"),
|
|
||||||
0x6f: createSymbolObject("rem_s", "i32"),
|
|
||||||
0x70: createSymbolObject("rem_u", "i32"),
|
|
||||||
0x71: createSymbolObject("and", "i32"),
|
|
||||||
0x72: createSymbolObject("or", "i32"),
|
|
||||||
0x73: createSymbolObject("xor", "i32"),
|
|
||||||
0x74: createSymbolObject("shl", "i32"),
|
|
||||||
0x75: createSymbolObject("shr_s", "i32"),
|
|
||||||
0x76: createSymbolObject("shr_u", "i32"),
|
|
||||||
0x77: createSymbolObject("rotl", "i32"),
|
|
||||||
0x78: createSymbolObject("rotr", "i32"),
|
|
||||||
0x79: createSymbolObject("clz", "i64"),
|
|
||||||
0x7a: createSymbolObject("ctz", "i64"),
|
|
||||||
0x7b: createSymbolObject("popcnt", "i64"),
|
|
||||||
0x7c: createSymbolObject("add", "i64"),
|
|
||||||
0x7d: createSymbolObject("sub", "i64"),
|
|
||||||
0x7e: createSymbolObject("mul", "i64"),
|
|
||||||
0x7f: createSymbolObject("div_s", "i64"),
|
|
||||||
0x80: createSymbolObject("div_u", "i64"),
|
|
||||||
0x81: createSymbolObject("rem_s", "i64"),
|
|
||||||
0x82: createSymbolObject("rem_u", "i64"),
|
|
||||||
0x83: createSymbolObject("and", "i64"),
|
|
||||||
0x84: createSymbolObject("or", "i64"),
|
|
||||||
0x85: createSymbolObject("xor", "i64"),
|
|
||||||
0x86: createSymbolObject("shl", "i64"),
|
|
||||||
0x87: createSymbolObject("shr_s", "i64"),
|
|
||||||
0x88: createSymbolObject("shr_u", "i64"),
|
|
||||||
0x89: createSymbolObject("rotl", "i64"),
|
|
||||||
0x8a: createSymbolObject("rotr", "i64"),
|
|
||||||
0x8b: createSymbolObject("abs", "f32"),
|
|
||||||
0x8c: createSymbolObject("neg", "f32"),
|
|
||||||
0x8d: createSymbolObject("ceil", "f32"),
|
|
||||||
0x8e: createSymbolObject("floor", "f32"),
|
|
||||||
0x8f: createSymbolObject("trunc", "f32"),
|
|
||||||
0x90: createSymbolObject("nearest", "f32"),
|
|
||||||
0x91: createSymbolObject("sqrt", "f32"),
|
|
||||||
0x92: createSymbolObject("add", "f32"),
|
|
||||||
0x93: createSymbolObject("sub", "f32"),
|
|
||||||
0x94: createSymbolObject("mul", "f32"),
|
|
||||||
0x95: createSymbolObject("div", "f32"),
|
|
||||||
0x96: createSymbolObject("min", "f32"),
|
|
||||||
0x97: createSymbolObject("max", "f32"),
|
|
||||||
0x98: createSymbolObject("copysign", "f32"),
|
|
||||||
0x99: createSymbolObject("abs", "f64"),
|
|
||||||
0x9a: createSymbolObject("neg", "f64"),
|
|
||||||
0x9b: createSymbolObject("ceil", "f64"),
|
|
||||||
0x9c: createSymbolObject("floor", "f64"),
|
|
||||||
0x9d: createSymbolObject("trunc", "f64"),
|
|
||||||
0x9e: createSymbolObject("nearest", "f64"),
|
|
||||||
0x9f: createSymbolObject("sqrt", "f64"),
|
|
||||||
0xa0: createSymbolObject("add", "f64"),
|
|
||||||
0xa1: createSymbolObject("sub", "f64"),
|
|
||||||
0xa2: createSymbolObject("mul", "f64"),
|
|
||||||
0xa3: createSymbolObject("div", "f64"),
|
|
||||||
0xa4: createSymbolObject("min", "f64"),
|
|
||||||
0xa5: createSymbolObject("max", "f64"),
|
|
||||||
0xa6: createSymbolObject("copysign", "f64"),
|
|
||||||
0xa7: createSymbolObject("wrap/i64", "i32"),
|
|
||||||
0xa8: createSymbolObject("trunc_s/f32", "i32"),
|
|
||||||
0xa9: createSymbolObject("trunc_u/f32", "i32"),
|
|
||||||
0xaa: createSymbolObject("trunc_s/f64", "i32"),
|
|
||||||
0xab: createSymbolObject("trunc_u/f64", "i32"),
|
|
||||||
0xac: createSymbolObject("extend_s/i32", "i64"),
|
|
||||||
0xad: createSymbolObject("extend_u/i32", "i64"),
|
|
||||||
0xae: createSymbolObject("trunc_s/f32", "i64"),
|
|
||||||
0xaf: createSymbolObject("trunc_u/f32", "i64"),
|
|
||||||
0xb0: createSymbolObject("trunc_s/f64", "i64"),
|
|
||||||
0xb1: createSymbolObject("trunc_u/f64", "i64"),
|
|
||||||
0xb2: createSymbolObject("convert_s/i32", "f32"),
|
|
||||||
0xb3: createSymbolObject("convert_u/i32", "f32"),
|
|
||||||
0xb4: createSymbolObject("convert_s/i64", "f32"),
|
|
||||||
0xb5: createSymbolObject("convert_u/i64", "f32"),
|
|
||||||
0xb6: createSymbolObject("demote/f64", "f32"),
|
|
||||||
0xb7: createSymbolObject("convert_s/i32", "f64"),
|
|
||||||
0xb8: createSymbolObject("convert_u/i32", "f64"),
|
|
||||||
0xb9: createSymbolObject("convert_s/i64", "f64"),
|
|
||||||
0xba: createSymbolObject("convert_u/i64", "f64"),
|
|
||||||
0xbb: createSymbolObject("promote/f32", "f64"),
|
|
||||||
0xbc: createSymbolObject("reinterpret/f32", "i32"),
|
|
||||||
0xbd: createSymbolObject("reinterpret/f64", "i64"),
|
|
||||||
0xbe: createSymbolObject("reinterpret/i32", "f32"),
|
|
||||||
0xbf: createSymbolObject("reinterpret/i64", "f64")
|
|
||||||
};
|
|
||||||
var symbolsByName = invertMap(symbolsByByte, function (obj) {
|
|
||||||
if (typeof obj.object === "string") {
|
|
||||||
return "".concat(obj.object, ".").concat(obj.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
return obj.name;
|
|
||||||
});
|
|
||||||
export default {
|
|
||||||
symbolsByByte: symbolsByByte,
|
|
||||||
sections: sections,
|
|
||||||
magicModuleHeader: magicModuleHeader,
|
|
||||||
moduleVersion: moduleVersion,
|
|
||||||
types: types,
|
|
||||||
valtypes: valtypes,
|
|
||||||
exportTypes: exportTypes,
|
|
||||||
blockTypes: blockTypes,
|
|
||||||
tableTypes: tableTypes,
|
|
||||||
globalTypes: globalTypes,
|
|
||||||
importTypes: importTypes,
|
|
||||||
valtypesByString: valtypesByString,
|
|
||||||
globalTypesByString: globalTypesByString,
|
|
||||||
exportTypesByName: exportTypesByName,
|
|
||||||
symbolsByName: symbolsByName
|
|
||||||
};
|
|
||||||
export { getSectionForNode } from "./section";
|
|
||||||
31
node_modules/@webassemblyjs/helper-wasm-bytecode/esm/section.js
generated
vendored
31
node_modules/@webassemblyjs/helper-wasm-bytecode/esm/section.js
generated
vendored
@@ -1,31 +0,0 @@
|
|||||||
export function getSectionForNode(n) {
|
|
||||||
switch (n.type) {
|
|
||||||
case "ModuleImport":
|
|
||||||
return "import";
|
|
||||||
|
|
||||||
case "CallInstruction":
|
|
||||||
case "CallIndirectInstruction":
|
|
||||||
case "Func":
|
|
||||||
case "Instr":
|
|
||||||
return "code";
|
|
||||||
|
|
||||||
case "ModuleExport":
|
|
||||||
return "export";
|
|
||||||
|
|
||||||
case "Start":
|
|
||||||
return "start";
|
|
||||||
|
|
||||||
case "TypeInstruction":
|
|
||||||
return "type";
|
|
||||||
|
|
||||||
case "IndexInFuncSection":
|
|
||||||
return "func";
|
|
||||||
|
|
||||||
case "Global":
|
|
||||||
return "global";
|
|
||||||
// No section
|
|
||||||
|
|
||||||
default:
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
339
node_modules/@webassemblyjs/helper-wasm-bytecode/lib/index.js
generated
vendored
339
node_modules/@webassemblyjs/helper-wasm-bytecode/lib/index.js
generated
vendored
@@ -1,339 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "getSectionForNode", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _section.getSectionForNode;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
exports.default = void 0;
|
|
||||||
|
|
||||||
var _section = require("./section");
|
|
||||||
|
|
||||||
var illegalop = "illegal";
|
|
||||||
var magicModuleHeader = [0x00, 0x61, 0x73, 0x6d];
|
|
||||||
var moduleVersion = [0x01, 0x00, 0x00, 0x00];
|
|
||||||
|
|
||||||
function invertMap(obj) {
|
|
||||||
var keyModifierFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (k) {
|
|
||||||
return k;
|
|
||||||
};
|
|
||||||
var result = {};
|
|
||||||
var keys = Object.keys(obj);
|
|
||||||
|
|
||||||
for (var i = 0, length = keys.length; i < length; i++) {
|
|
||||||
result[keyModifierFn(obj[keys[i]])] = keys[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createSymbolObject(name
|
|
||||||
/*: string */
|
|
||||||
, object
|
|
||||||
/*: string */
|
|
||||||
)
|
|
||||||
/*: Symbol*/
|
|
||||||
{
|
|
||||||
var numberOfArgs
|
|
||||||
/*: number*/
|
|
||||||
= arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
||||||
return {
|
|
||||||
name: name,
|
|
||||||
object: object,
|
|
||||||
numberOfArgs: numberOfArgs
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function createSymbol(name
|
|
||||||
/*: string */
|
|
||||||
)
|
|
||||||
/*: Symbol*/
|
|
||||||
{
|
|
||||||
var numberOfArgs
|
|
||||||
/*: number*/
|
|
||||||
= arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
||||||
return {
|
|
||||||
name: name,
|
|
||||||
numberOfArgs: numberOfArgs
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
var types = {
|
|
||||||
func: 0x60,
|
|
||||||
result: 0x40
|
|
||||||
};
|
|
||||||
var exportTypes = {
|
|
||||||
0x00: "Func",
|
|
||||||
0x01: "Table",
|
|
||||||
0x02: "Mem",
|
|
||||||
0x03: "Global"
|
|
||||||
};
|
|
||||||
var exportTypesByName = invertMap(exportTypes);
|
|
||||||
var valtypes = {
|
|
||||||
0x7f: "i32",
|
|
||||||
0x7e: "i64",
|
|
||||||
0x7d: "f32",
|
|
||||||
0x7c: "f64",
|
|
||||||
0x7b: "v128"
|
|
||||||
};
|
|
||||||
var valtypesByString = invertMap(valtypes);
|
|
||||||
var tableTypes = {
|
|
||||||
0x70: "anyfunc"
|
|
||||||
};
|
|
||||||
var blockTypes = Object.assign({}, valtypes, {
|
|
||||||
// https://webassembly.github.io/spec/core/binary/types.html#binary-blocktype
|
|
||||||
0x40: null,
|
|
||||||
// https://webassembly.github.io/spec/core/binary/types.html#binary-valtype
|
|
||||||
0x7f: "i32",
|
|
||||||
0x7e: "i64",
|
|
||||||
0x7d: "f32",
|
|
||||||
0x7c: "f64"
|
|
||||||
});
|
|
||||||
var globalTypes = {
|
|
||||||
0x00: "const",
|
|
||||||
0x01: "var"
|
|
||||||
};
|
|
||||||
var globalTypesByString = invertMap(globalTypes);
|
|
||||||
var importTypes = {
|
|
||||||
0x00: "func",
|
|
||||||
0x01: "table",
|
|
||||||
0x02: "mem",
|
|
||||||
0x03: "global"
|
|
||||||
};
|
|
||||||
var sections = {
|
|
||||||
custom: 0,
|
|
||||||
type: 1,
|
|
||||||
import: 2,
|
|
||||||
func: 3,
|
|
||||||
table: 4,
|
|
||||||
memory: 5,
|
|
||||||
global: 6,
|
|
||||||
export: 7,
|
|
||||||
start: 8,
|
|
||||||
element: 9,
|
|
||||||
code: 10,
|
|
||||||
data: 11
|
|
||||||
};
|
|
||||||
var symbolsByByte = {
|
|
||||||
0x00: createSymbol("unreachable"),
|
|
||||||
0x01: createSymbol("nop"),
|
|
||||||
0x02: createSymbol("block"),
|
|
||||||
0x03: createSymbol("loop"),
|
|
||||||
0x04: createSymbol("if"),
|
|
||||||
0x05: createSymbol("else"),
|
|
||||||
0x06: illegalop,
|
|
||||||
0x07: illegalop,
|
|
||||||
0x08: illegalop,
|
|
||||||
0x09: illegalop,
|
|
||||||
0x0a: illegalop,
|
|
||||||
0x0b: createSymbol("end"),
|
|
||||||
0x0c: createSymbol("br", 1),
|
|
||||||
0x0d: createSymbol("br_if", 1),
|
|
||||||
0x0e: createSymbol("br_table"),
|
|
||||||
0x0f: createSymbol("return"),
|
|
||||||
0x10: createSymbol("call", 1),
|
|
||||||
0x11: createSymbol("call_indirect", 2),
|
|
||||||
0x12: illegalop,
|
|
||||||
0x13: illegalop,
|
|
||||||
0x14: illegalop,
|
|
||||||
0x15: illegalop,
|
|
||||||
0x16: illegalop,
|
|
||||||
0x17: illegalop,
|
|
||||||
0x18: illegalop,
|
|
||||||
0x19: illegalop,
|
|
||||||
0x1a: createSymbol("drop"),
|
|
||||||
0x1b: createSymbol("select"),
|
|
||||||
0x1c: illegalop,
|
|
||||||
0x1d: illegalop,
|
|
||||||
0x1e: illegalop,
|
|
||||||
0x1f: illegalop,
|
|
||||||
0x20: createSymbol("get_local", 1),
|
|
||||||
0x21: createSymbol("set_local", 1),
|
|
||||||
0x22: createSymbol("tee_local", 1),
|
|
||||||
0x23: createSymbol("get_global", 1),
|
|
||||||
0x24: createSymbol("set_global", 1),
|
|
||||||
0x25: illegalop,
|
|
||||||
0x26: illegalop,
|
|
||||||
0x27: illegalop,
|
|
||||||
0x28: createSymbolObject("load", "u32", 1),
|
|
||||||
0x29: createSymbolObject("load", "u64", 1),
|
|
||||||
0x2a: createSymbolObject("load", "f32", 1),
|
|
||||||
0x2b: createSymbolObject("load", "f64", 1),
|
|
||||||
0x2c: createSymbolObject("load8_s", "u32", 1),
|
|
||||||
0x2d: createSymbolObject("load8_u", "u32", 1),
|
|
||||||
0x2e: createSymbolObject("load16_s", "u32", 1),
|
|
||||||
0x2f: createSymbolObject("load16_u", "u32", 1),
|
|
||||||
0x30: createSymbolObject("load8_s", "u64", 1),
|
|
||||||
0x31: createSymbolObject("load8_u", "u64", 1),
|
|
||||||
0x32: createSymbolObject("load16_s", "u64", 1),
|
|
||||||
0x33: createSymbolObject("load16_u", "u64", 1),
|
|
||||||
0x34: createSymbolObject("load32_s", "u64", 1),
|
|
||||||
0x35: createSymbolObject("load32_u", "u64", 1),
|
|
||||||
0x36: createSymbolObject("store", "u32", 1),
|
|
||||||
0x37: createSymbolObject("store", "u64", 1),
|
|
||||||
0x38: createSymbolObject("store", "f32", 1),
|
|
||||||
0x39: createSymbolObject("store", "f64", 1),
|
|
||||||
0x3a: createSymbolObject("store8", "u32", 1),
|
|
||||||
0x3b: createSymbolObject("store16", "u32", 1),
|
|
||||||
0x3c: createSymbolObject("store8", "u64", 1),
|
|
||||||
0x3d: createSymbolObject("store16", "u64", 1),
|
|
||||||
0x3e: createSymbolObject("store32", "u64", 1),
|
|
||||||
0x3f: createSymbolObject("current_memory"),
|
|
||||||
0x40: createSymbolObject("grow_memory"),
|
|
||||||
0x41: createSymbolObject("const", "i32", 1),
|
|
||||||
0x42: createSymbolObject("const", "i64", 1),
|
|
||||||
0x43: createSymbolObject("const", "f32", 1),
|
|
||||||
0x44: createSymbolObject("const", "f64", 1),
|
|
||||||
0x45: createSymbolObject("eqz", "i32"),
|
|
||||||
0x46: createSymbolObject("eq", "i32"),
|
|
||||||
0x47: createSymbolObject("ne", "i32"),
|
|
||||||
0x48: createSymbolObject("lt_s", "i32"),
|
|
||||||
0x49: createSymbolObject("lt_u", "i32"),
|
|
||||||
0x4a: createSymbolObject("gt_s", "i32"),
|
|
||||||
0x4b: createSymbolObject("gt_u", "i32"),
|
|
||||||
0x4c: createSymbolObject("le_s", "i32"),
|
|
||||||
0x4d: createSymbolObject("le_u", "i32"),
|
|
||||||
0x4e: createSymbolObject("ge_s", "i32"),
|
|
||||||
0x4f: createSymbolObject("ge_u", "i32"),
|
|
||||||
0x50: createSymbolObject("eqz", "i64"),
|
|
||||||
0x51: createSymbolObject("eq", "i64"),
|
|
||||||
0x52: createSymbolObject("ne", "i64"),
|
|
||||||
0x53: createSymbolObject("lt_s", "i64"),
|
|
||||||
0x54: createSymbolObject("lt_u", "i64"),
|
|
||||||
0x55: createSymbolObject("gt_s", "i64"),
|
|
||||||
0x56: createSymbolObject("gt_u", "i64"),
|
|
||||||
0x57: createSymbolObject("le_s", "i64"),
|
|
||||||
0x58: createSymbolObject("le_u", "i64"),
|
|
||||||
0x59: createSymbolObject("ge_s", "i64"),
|
|
||||||
0x5a: createSymbolObject("ge_u", "i64"),
|
|
||||||
0x5b: createSymbolObject("eq", "f32"),
|
|
||||||
0x5c: createSymbolObject("ne", "f32"),
|
|
||||||
0x5d: createSymbolObject("lt", "f32"),
|
|
||||||
0x5e: createSymbolObject("gt", "f32"),
|
|
||||||
0x5f: createSymbolObject("le", "f32"),
|
|
||||||
0x60: createSymbolObject("ge", "f32"),
|
|
||||||
0x61: createSymbolObject("eq", "f64"),
|
|
||||||
0x62: createSymbolObject("ne", "f64"),
|
|
||||||
0x63: createSymbolObject("lt", "f64"),
|
|
||||||
0x64: createSymbolObject("gt", "f64"),
|
|
||||||
0x65: createSymbolObject("le", "f64"),
|
|
||||||
0x66: createSymbolObject("ge", "f64"),
|
|
||||||
0x67: createSymbolObject("clz", "i32"),
|
|
||||||
0x68: createSymbolObject("ctz", "i32"),
|
|
||||||
0x69: createSymbolObject("popcnt", "i32"),
|
|
||||||
0x6a: createSymbolObject("add", "i32"),
|
|
||||||
0x6b: createSymbolObject("sub", "i32"),
|
|
||||||
0x6c: createSymbolObject("mul", "i32"),
|
|
||||||
0x6d: createSymbolObject("div_s", "i32"),
|
|
||||||
0x6e: createSymbolObject("div_u", "i32"),
|
|
||||||
0x6f: createSymbolObject("rem_s", "i32"),
|
|
||||||
0x70: createSymbolObject("rem_u", "i32"),
|
|
||||||
0x71: createSymbolObject("and", "i32"),
|
|
||||||
0x72: createSymbolObject("or", "i32"),
|
|
||||||
0x73: createSymbolObject("xor", "i32"),
|
|
||||||
0x74: createSymbolObject("shl", "i32"),
|
|
||||||
0x75: createSymbolObject("shr_s", "i32"),
|
|
||||||
0x76: createSymbolObject("shr_u", "i32"),
|
|
||||||
0x77: createSymbolObject("rotl", "i32"),
|
|
||||||
0x78: createSymbolObject("rotr", "i32"),
|
|
||||||
0x79: createSymbolObject("clz", "i64"),
|
|
||||||
0x7a: createSymbolObject("ctz", "i64"),
|
|
||||||
0x7b: createSymbolObject("popcnt", "i64"),
|
|
||||||
0x7c: createSymbolObject("add", "i64"),
|
|
||||||
0x7d: createSymbolObject("sub", "i64"),
|
|
||||||
0x7e: createSymbolObject("mul", "i64"),
|
|
||||||
0x7f: createSymbolObject("div_s", "i64"),
|
|
||||||
0x80: createSymbolObject("div_u", "i64"),
|
|
||||||
0x81: createSymbolObject("rem_s", "i64"),
|
|
||||||
0x82: createSymbolObject("rem_u", "i64"),
|
|
||||||
0x83: createSymbolObject("and", "i64"),
|
|
||||||
0x84: createSymbolObject("or", "i64"),
|
|
||||||
0x85: createSymbolObject("xor", "i64"),
|
|
||||||
0x86: createSymbolObject("shl", "i64"),
|
|
||||||
0x87: createSymbolObject("shr_s", "i64"),
|
|
||||||
0x88: createSymbolObject("shr_u", "i64"),
|
|
||||||
0x89: createSymbolObject("rotl", "i64"),
|
|
||||||
0x8a: createSymbolObject("rotr", "i64"),
|
|
||||||
0x8b: createSymbolObject("abs", "f32"),
|
|
||||||
0x8c: createSymbolObject("neg", "f32"),
|
|
||||||
0x8d: createSymbolObject("ceil", "f32"),
|
|
||||||
0x8e: createSymbolObject("floor", "f32"),
|
|
||||||
0x8f: createSymbolObject("trunc", "f32"),
|
|
||||||
0x90: createSymbolObject("nearest", "f32"),
|
|
||||||
0x91: createSymbolObject("sqrt", "f32"),
|
|
||||||
0x92: createSymbolObject("add", "f32"),
|
|
||||||
0x93: createSymbolObject("sub", "f32"),
|
|
||||||
0x94: createSymbolObject("mul", "f32"),
|
|
||||||
0x95: createSymbolObject("div", "f32"),
|
|
||||||
0x96: createSymbolObject("min", "f32"),
|
|
||||||
0x97: createSymbolObject("max", "f32"),
|
|
||||||
0x98: createSymbolObject("copysign", "f32"),
|
|
||||||
0x99: createSymbolObject("abs", "f64"),
|
|
||||||
0x9a: createSymbolObject("neg", "f64"),
|
|
||||||
0x9b: createSymbolObject("ceil", "f64"),
|
|
||||||
0x9c: createSymbolObject("floor", "f64"),
|
|
||||||
0x9d: createSymbolObject("trunc", "f64"),
|
|
||||||
0x9e: createSymbolObject("nearest", "f64"),
|
|
||||||
0x9f: createSymbolObject("sqrt", "f64"),
|
|
||||||
0xa0: createSymbolObject("add", "f64"),
|
|
||||||
0xa1: createSymbolObject("sub", "f64"),
|
|
||||||
0xa2: createSymbolObject("mul", "f64"),
|
|
||||||
0xa3: createSymbolObject("div", "f64"),
|
|
||||||
0xa4: createSymbolObject("min", "f64"),
|
|
||||||
0xa5: createSymbolObject("max", "f64"),
|
|
||||||
0xa6: createSymbolObject("copysign", "f64"),
|
|
||||||
0xa7: createSymbolObject("wrap/i64", "i32"),
|
|
||||||
0xa8: createSymbolObject("trunc_s/f32", "i32"),
|
|
||||||
0xa9: createSymbolObject("trunc_u/f32", "i32"),
|
|
||||||
0xaa: createSymbolObject("trunc_s/f64", "i32"),
|
|
||||||
0xab: createSymbolObject("trunc_u/f64", "i32"),
|
|
||||||
0xac: createSymbolObject("extend_s/i32", "i64"),
|
|
||||||
0xad: createSymbolObject("extend_u/i32", "i64"),
|
|
||||||
0xae: createSymbolObject("trunc_s/f32", "i64"),
|
|
||||||
0xaf: createSymbolObject("trunc_u/f32", "i64"),
|
|
||||||
0xb0: createSymbolObject("trunc_s/f64", "i64"),
|
|
||||||
0xb1: createSymbolObject("trunc_u/f64", "i64"),
|
|
||||||
0xb2: createSymbolObject("convert_s/i32", "f32"),
|
|
||||||
0xb3: createSymbolObject("convert_u/i32", "f32"),
|
|
||||||
0xb4: createSymbolObject("convert_s/i64", "f32"),
|
|
||||||
0xb5: createSymbolObject("convert_u/i64", "f32"),
|
|
||||||
0xb6: createSymbolObject("demote/f64", "f32"),
|
|
||||||
0xb7: createSymbolObject("convert_s/i32", "f64"),
|
|
||||||
0xb8: createSymbolObject("convert_u/i32", "f64"),
|
|
||||||
0xb9: createSymbolObject("convert_s/i64", "f64"),
|
|
||||||
0xba: createSymbolObject("convert_u/i64", "f64"),
|
|
||||||
0xbb: createSymbolObject("promote/f32", "f64"),
|
|
||||||
0xbc: createSymbolObject("reinterpret/f32", "i32"),
|
|
||||||
0xbd: createSymbolObject("reinterpret/f64", "i64"),
|
|
||||||
0xbe: createSymbolObject("reinterpret/i32", "f32"),
|
|
||||||
0xbf: createSymbolObject("reinterpret/i64", "f64")
|
|
||||||
};
|
|
||||||
var symbolsByName = invertMap(symbolsByByte, function (obj) {
|
|
||||||
if (typeof obj.object === "string") {
|
|
||||||
return "".concat(obj.object, ".").concat(obj.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
return obj.name;
|
|
||||||
});
|
|
||||||
var _default = {
|
|
||||||
symbolsByByte: symbolsByByte,
|
|
||||||
sections: sections,
|
|
||||||
magicModuleHeader: magicModuleHeader,
|
|
||||||
moduleVersion: moduleVersion,
|
|
||||||
types: types,
|
|
||||||
valtypes: valtypes,
|
|
||||||
exportTypes: exportTypes,
|
|
||||||
blockTypes: blockTypes,
|
|
||||||
tableTypes: tableTypes,
|
|
||||||
globalTypes: globalTypes,
|
|
||||||
importTypes: importTypes,
|
|
||||||
valtypesByString: valtypesByString,
|
|
||||||
globalTypesByString: globalTypesByString,
|
|
||||||
exportTypesByName: exportTypesByName,
|
|
||||||
symbolsByName: symbolsByName
|
|
||||||
};
|
|
||||||
exports.default = _default;
|
|
||||||
38
node_modules/@webassemblyjs/helper-wasm-bytecode/lib/section.js
generated
vendored
38
node_modules/@webassemblyjs/helper-wasm-bytecode/lib/section.js
generated
vendored
@@ -1,38 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.getSectionForNode = getSectionForNode;
|
|
||||||
|
|
||||||
function getSectionForNode(n) {
|
|
||||||
switch (n.type) {
|
|
||||||
case "ModuleImport":
|
|
||||||
return "import";
|
|
||||||
|
|
||||||
case "CallInstruction":
|
|
||||||
case "CallIndirectInstruction":
|
|
||||||
case "Func":
|
|
||||||
case "Instr":
|
|
||||||
return "code";
|
|
||||||
|
|
||||||
case "ModuleExport":
|
|
||||||
return "export";
|
|
||||||
|
|
||||||
case "Start":
|
|
||||||
return "start";
|
|
||||||
|
|
||||||
case "TypeInstruction":
|
|
||||||
return "type";
|
|
||||||
|
|
||||||
case "IndexInFuncSection":
|
|
||||||
return "func";
|
|
||||||
|
|
||||||
case "Global":
|
|
||||||
return "global";
|
|
||||||
// No section
|
|
||||||
|
|
||||||
default:
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
20
node_modules/@webassemblyjs/helper-wasm-bytecode/package.json
generated
vendored
20
node_modules/@webassemblyjs/helper-wasm-bytecode/package.json
generated
vendored
@@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@webassemblyjs/helper-wasm-bytecode",
|
|
||||||
"version": "1.9.0",
|
|
||||||
"description": "WASM's Bytecode constants",
|
|
||||||
"main": "lib/index.js",
|
|
||||||
"module": "esm/index.js",
|
|
||||||
"scripts": {
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"author": "Sven Sauleau",
|
|
||||||
"license": "MIT",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/xtuc/webassemblyjs.git"
|
|
||||||
},
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"gitHead": "0440b420888c1f7701eb9762ec657775506b87d8"
|
|
||||||
}
|
|
||||||
21
node_modules/@webassemblyjs/helper-wasm-section/LICENSE
generated
vendored
21
node_modules/@webassemblyjs/helper-wasm-section/LICENSE
generated
vendored
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
107
node_modules/@webassemblyjs/helper-wasm-section/esm/create.js
generated
vendored
107
node_modules/@webassemblyjs/helper-wasm-section/esm/create.js
generated
vendored
@@ -1,107 +0,0 @@
|
|||||||
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
||||||
|
|
||||||
import { encodeNode } from "@webassemblyjs/wasm-gen";
|
|
||||||
import { overrideBytesInBuffer } from "@webassemblyjs/helper-buffer";
|
|
||||||
import constants from "@webassemblyjs/helper-wasm-bytecode";
|
|
||||||
import * as t from "@webassemblyjs/ast";
|
|
||||||
|
|
||||||
function findLastSection(ast, forSection) {
|
|
||||||
var targetSectionId = constants.sections[forSection]; // $FlowIgnore: metadata can not be empty
|
|
||||||
|
|
||||||
var moduleSections = ast.body[0].metadata.sections;
|
|
||||||
var lastSection;
|
|
||||||
var lastId = 0;
|
|
||||||
|
|
||||||
for (var i = 0, len = moduleSections.length; i < len; i++) {
|
|
||||||
var section = moduleSections[i]; // Ignore custom section since they can actually occur everywhere
|
|
||||||
|
|
||||||
if (section.section === "custom") {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
var sectionId = constants.sections[section.section];
|
|
||||||
|
|
||||||
if (targetSectionId > lastId && targetSectionId < sectionId) {
|
|
||||||
return lastSection;
|
|
||||||
}
|
|
||||||
|
|
||||||
lastId = sectionId;
|
|
||||||
lastSection = section;
|
|
||||||
}
|
|
||||||
|
|
||||||
return lastSection;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function createEmptySection(ast, uint8Buffer, section) {
|
|
||||||
// previous section after which we are going to insert our section
|
|
||||||
var lastSection = findLastSection(ast, section);
|
|
||||||
var start, end;
|
|
||||||
/**
|
|
||||||
* It's the first section
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (lastSection == null || lastSection.section === "custom") {
|
|
||||||
start = 8
|
|
||||||
/* wasm header size */
|
|
||||||
;
|
|
||||||
end = start;
|
|
||||||
} else {
|
|
||||||
start = lastSection.startOffset + lastSection.size.value + 1;
|
|
||||||
end = start;
|
|
||||||
} // section id
|
|
||||||
|
|
||||||
|
|
||||||
start += 1;
|
|
||||||
var sizeStartLoc = {
|
|
||||||
line: -1,
|
|
||||||
column: start
|
|
||||||
};
|
|
||||||
var sizeEndLoc = {
|
|
||||||
line: -1,
|
|
||||||
column: start + 1
|
|
||||||
}; // 1 byte for the empty vector
|
|
||||||
|
|
||||||
var size = t.withLoc(t.numberLiteralFromRaw(1), sizeEndLoc, sizeStartLoc);
|
|
||||||
var vectorOfSizeStartLoc = {
|
|
||||||
line: -1,
|
|
||||||
column: sizeEndLoc.column
|
|
||||||
};
|
|
||||||
var vectorOfSizeEndLoc = {
|
|
||||||
line: -1,
|
|
||||||
column: sizeEndLoc.column + 1
|
|
||||||
};
|
|
||||||
var vectorOfSize = t.withLoc(t.numberLiteralFromRaw(0), vectorOfSizeEndLoc, vectorOfSizeStartLoc);
|
|
||||||
var sectionMetadata = t.sectionMetadata(section, start, size, vectorOfSize);
|
|
||||||
var sectionBytes = encodeNode(sectionMetadata);
|
|
||||||
uint8Buffer = overrideBytesInBuffer(uint8Buffer, start - 1, end, sectionBytes); // Add section into the AST for later lookups
|
|
||||||
|
|
||||||
if (_typeof(ast.body[0].metadata) === "object") {
|
|
||||||
// $FlowIgnore: metadata can not be empty
|
|
||||||
ast.body[0].metadata.sections.push(sectionMetadata);
|
|
||||||
t.sortSectionMetadata(ast.body[0]);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Update AST
|
|
||||||
*/
|
|
||||||
// Once we hit our section every that is after needs to be shifted by the delta
|
|
||||||
|
|
||||||
|
|
||||||
var deltaBytes = +sectionBytes.length;
|
|
||||||
var encounteredSection = false;
|
|
||||||
t.traverse(ast, {
|
|
||||||
SectionMetadata: function SectionMetadata(path) {
|
|
||||||
if (path.node.section === section) {
|
|
||||||
encounteredSection = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (encounteredSection === true) {
|
|
||||||
t.shiftSection(ast, path.node, deltaBytes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return {
|
|
||||||
uint8Buffer: uint8Buffer,
|
|
||||||
sectionMetadata: sectionMetadata
|
|
||||||
};
|
|
||||||
}
|
|
||||||
3
node_modules/@webassemblyjs/helper-wasm-section/esm/index.js
generated
vendored
3
node_modules/@webassemblyjs/helper-wasm-section/esm/index.js
generated
vendored
@@ -1,3 +0,0 @@
|
|||||||
export { resizeSectionByteSize, resizeSectionVecSize } from "./resize";
|
|
||||||
export { createEmptySection } from "./create";
|
|
||||||
export { removeSections } from "./remove";
|
|
||||||
36
node_modules/@webassemblyjs/helper-wasm-section/esm/remove.js
generated
vendored
36
node_modules/@webassemblyjs/helper-wasm-section/esm/remove.js
generated
vendored
@@ -1,36 +0,0 @@
|
|||||||
import { traverse, getSectionMetadatas, shiftSection } from "@webassemblyjs/ast";
|
|
||||||
import { overrideBytesInBuffer } from "@webassemblyjs/helper-buffer";
|
|
||||||
export function removeSections(ast, uint8Buffer, section) {
|
|
||||||
var sectionMetadatas = getSectionMetadatas(ast, section);
|
|
||||||
|
|
||||||
if (sectionMetadatas.length === 0) {
|
|
||||||
throw new Error("Section metadata not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
return sectionMetadatas.reverse().reduce(function (uint8Buffer, sectionMetadata) {
|
|
||||||
var startsIncludingId = sectionMetadata.startOffset - 1;
|
|
||||||
var ends = section === "start" ? sectionMetadata.size.loc.end.column + 1 : sectionMetadata.startOffset + sectionMetadata.size.value + 1;
|
|
||||||
var delta = -(ends - startsIncludingId);
|
|
||||||
/**
|
|
||||||
* update AST
|
|
||||||
*/
|
|
||||||
// Once we hit our section every that is after needs to be shifted by the delta
|
|
||||||
|
|
||||||
var encounteredSection = false;
|
|
||||||
traverse(ast, {
|
|
||||||
SectionMetadata: function SectionMetadata(path) {
|
|
||||||
if (path.node.section === section) {
|
|
||||||
encounteredSection = true;
|
|
||||||
return path.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (encounteredSection === true) {
|
|
||||||
shiftSection(ast, path.node, delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}); // replacement is nothing
|
|
||||||
|
|
||||||
var replacement = [];
|
|
||||||
return overrideBytesInBuffer(uint8Buffer, startsIncludingId, ends, replacement);
|
|
||||||
}, uint8Buffer);
|
|
||||||
}
|
|
||||||
78
node_modules/@webassemblyjs/helper-wasm-section/esm/resize.js
generated
vendored
78
node_modules/@webassemblyjs/helper-wasm-section/esm/resize.js
generated
vendored
@@ -1,78 +0,0 @@
|
|||||||
import { encodeU32 } from "@webassemblyjs/wasm-gen";
|
|
||||||
import { getSectionMetadata, traverse, shiftSection } from "@webassemblyjs/ast";
|
|
||||||
import { overrideBytesInBuffer } from "@webassemblyjs/helper-buffer";
|
|
||||||
export function resizeSectionByteSize(ast, uint8Buffer, section, deltaBytes) {
|
|
||||||
var sectionMetadata = getSectionMetadata(ast, section);
|
|
||||||
|
|
||||||
if (typeof sectionMetadata === "undefined") {
|
|
||||||
throw new Error("Section metadata not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof sectionMetadata.size.loc === "undefined") {
|
|
||||||
throw new Error("SectionMetadata " + section + " has no loc");
|
|
||||||
} // keep old node location to be overriden
|
|
||||||
|
|
||||||
|
|
||||||
var start = sectionMetadata.size.loc.start.column;
|
|
||||||
var end = sectionMetadata.size.loc.end.column;
|
|
||||||
var newSectionSize = sectionMetadata.size.value + deltaBytes;
|
|
||||||
var newBytes = encodeU32(newSectionSize);
|
|
||||||
/**
|
|
||||||
* update AST
|
|
||||||
*/
|
|
||||||
|
|
||||||
sectionMetadata.size.value = newSectionSize;
|
|
||||||
var oldu32EncodedLen = end - start;
|
|
||||||
var newu32EncodedLen = newBytes.length; // the new u32 has a different encoded length
|
|
||||||
|
|
||||||
if (newu32EncodedLen !== oldu32EncodedLen) {
|
|
||||||
var deltaInSizeEncoding = newu32EncodedLen - oldu32EncodedLen;
|
|
||||||
sectionMetadata.size.loc.end.column = start + newu32EncodedLen;
|
|
||||||
deltaBytes += deltaInSizeEncoding; // move the vec size pointer size the section size is now smaller
|
|
||||||
|
|
||||||
sectionMetadata.vectorOfSize.loc.start.column += deltaInSizeEncoding;
|
|
||||||
sectionMetadata.vectorOfSize.loc.end.column += deltaInSizeEncoding;
|
|
||||||
} // Once we hit our section every that is after needs to be shifted by the delta
|
|
||||||
|
|
||||||
|
|
||||||
var encounteredSection = false;
|
|
||||||
traverse(ast, {
|
|
||||||
SectionMetadata: function SectionMetadata(path) {
|
|
||||||
if (path.node.section === section) {
|
|
||||||
encounteredSection = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (encounteredSection === true) {
|
|
||||||
shiftSection(ast, path.node, deltaBytes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return overrideBytesInBuffer(uint8Buffer, start, end, newBytes);
|
|
||||||
}
|
|
||||||
export function resizeSectionVecSize(ast, uint8Buffer, section, deltaElements) {
|
|
||||||
var sectionMetadata = getSectionMetadata(ast, section);
|
|
||||||
|
|
||||||
if (typeof sectionMetadata === "undefined") {
|
|
||||||
throw new Error("Section metadata not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof sectionMetadata.vectorOfSize.loc === "undefined") {
|
|
||||||
throw new Error("SectionMetadata " + section + " has no loc");
|
|
||||||
} // Section has no vector
|
|
||||||
|
|
||||||
|
|
||||||
if (sectionMetadata.vectorOfSize.value === -1) {
|
|
||||||
return uint8Buffer;
|
|
||||||
} // keep old node location to be overriden
|
|
||||||
|
|
||||||
|
|
||||||
var start = sectionMetadata.vectorOfSize.loc.start.column;
|
|
||||||
var end = sectionMetadata.vectorOfSize.loc.end.column;
|
|
||||||
var newValue = sectionMetadata.vectorOfSize.value + deltaElements;
|
|
||||||
var newBytes = encodeU32(newValue); // Update AST
|
|
||||||
|
|
||||||
sectionMetadata.vectorOfSize.value = newValue;
|
|
||||||
sectionMetadata.vectorOfSize.loc.end.column = start + newBytes.length;
|
|
||||||
return overrideBytesInBuffer(uint8Buffer, start, end, newBytes);
|
|
||||||
}
|
|
||||||
121
node_modules/@webassemblyjs/helper-wasm-section/lib/create.js
generated
vendored
121
node_modules/@webassemblyjs/helper-wasm-section/lib/create.js
generated
vendored
@@ -1,121 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.createEmptySection = createEmptySection;
|
|
||||||
|
|
||||||
var _wasmGen = require("@webassemblyjs/wasm-gen");
|
|
||||||
|
|
||||||
var _helperBuffer = require("@webassemblyjs/helper-buffer");
|
|
||||||
|
|
||||||
var _helperWasmBytecode = _interopRequireDefault(require("@webassemblyjs/helper-wasm-bytecode"));
|
|
||||||
|
|
||||||
var t = _interopRequireWildcard(require("@webassemblyjs/ast"));
|
|
||||||
|
|
||||||
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
|
|
||||||
|
|
||||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
||||||
|
|
||||||
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
||||||
|
|
||||||
function findLastSection(ast, forSection) {
|
|
||||||
var targetSectionId = _helperWasmBytecode.default.sections[forSection]; // $FlowIgnore: metadata can not be empty
|
|
||||||
|
|
||||||
var moduleSections = ast.body[0].metadata.sections;
|
|
||||||
var lastSection;
|
|
||||||
var lastId = 0;
|
|
||||||
|
|
||||||
for (var i = 0, len = moduleSections.length; i < len; i++) {
|
|
||||||
var section = moduleSections[i]; // Ignore custom section since they can actually occur everywhere
|
|
||||||
|
|
||||||
if (section.section === "custom") {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
var sectionId = _helperWasmBytecode.default.sections[section.section];
|
|
||||||
|
|
||||||
if (targetSectionId > lastId && targetSectionId < sectionId) {
|
|
||||||
return lastSection;
|
|
||||||
}
|
|
||||||
|
|
||||||
lastId = sectionId;
|
|
||||||
lastSection = section;
|
|
||||||
}
|
|
||||||
|
|
||||||
return lastSection;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createEmptySection(ast, uint8Buffer, section) {
|
|
||||||
// previous section after which we are going to insert our section
|
|
||||||
var lastSection = findLastSection(ast, section);
|
|
||||||
var start, end;
|
|
||||||
/**
|
|
||||||
* It's the first section
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (lastSection == null || lastSection.section === "custom") {
|
|
||||||
start = 8
|
|
||||||
/* wasm header size */
|
|
||||||
;
|
|
||||||
end = start;
|
|
||||||
} else {
|
|
||||||
start = lastSection.startOffset + lastSection.size.value + 1;
|
|
||||||
end = start;
|
|
||||||
} // section id
|
|
||||||
|
|
||||||
|
|
||||||
start += 1;
|
|
||||||
var sizeStartLoc = {
|
|
||||||
line: -1,
|
|
||||||
column: start
|
|
||||||
};
|
|
||||||
var sizeEndLoc = {
|
|
||||||
line: -1,
|
|
||||||
column: start + 1
|
|
||||||
}; // 1 byte for the empty vector
|
|
||||||
|
|
||||||
var size = t.withLoc(t.numberLiteralFromRaw(1), sizeEndLoc, sizeStartLoc);
|
|
||||||
var vectorOfSizeStartLoc = {
|
|
||||||
line: -1,
|
|
||||||
column: sizeEndLoc.column
|
|
||||||
};
|
|
||||||
var vectorOfSizeEndLoc = {
|
|
||||||
line: -1,
|
|
||||||
column: sizeEndLoc.column + 1
|
|
||||||
};
|
|
||||||
var vectorOfSize = t.withLoc(t.numberLiteralFromRaw(0), vectorOfSizeEndLoc, vectorOfSizeStartLoc);
|
|
||||||
var sectionMetadata = t.sectionMetadata(section, start, size, vectorOfSize);
|
|
||||||
var sectionBytes = (0, _wasmGen.encodeNode)(sectionMetadata);
|
|
||||||
uint8Buffer = (0, _helperBuffer.overrideBytesInBuffer)(uint8Buffer, start - 1, end, sectionBytes); // Add section into the AST for later lookups
|
|
||||||
|
|
||||||
if (_typeof(ast.body[0].metadata) === "object") {
|
|
||||||
// $FlowIgnore: metadata can not be empty
|
|
||||||
ast.body[0].metadata.sections.push(sectionMetadata);
|
|
||||||
t.sortSectionMetadata(ast.body[0]);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Update AST
|
|
||||||
*/
|
|
||||||
// Once we hit our section every that is after needs to be shifted by the delta
|
|
||||||
|
|
||||||
|
|
||||||
var deltaBytes = +sectionBytes.length;
|
|
||||||
var encounteredSection = false;
|
|
||||||
t.traverse(ast, {
|
|
||||||
SectionMetadata: function SectionMetadata(path) {
|
|
||||||
if (path.node.section === section) {
|
|
||||||
encounteredSection = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (encounteredSection === true) {
|
|
||||||
t.shiftSection(ast, path.node, deltaBytes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return {
|
|
||||||
uint8Buffer: uint8Buffer,
|
|
||||||
sectionMetadata: sectionMetadata
|
|
||||||
};
|
|
||||||
}
|
|
||||||
35
node_modules/@webassemblyjs/helper-wasm-section/lib/index.js
generated
vendored
35
node_modules/@webassemblyjs/helper-wasm-section/lib/index.js
generated
vendored
@@ -1,35 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "resizeSectionByteSize", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _resize.resizeSectionByteSize;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "resizeSectionVecSize", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _resize.resizeSectionVecSize;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "createEmptySection", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _create.createEmptySection;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty(exports, "removeSections", {
|
|
||||||
enumerable: true,
|
|
||||||
get: function get() {
|
|
||||||
return _remove.removeSections;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
var _resize = require("./resize");
|
|
||||||
|
|
||||||
var _create = require("./create");
|
|
||||||
|
|
||||||
var _remove = require("./remove");
|
|
||||||
45
node_modules/@webassemblyjs/helper-wasm-section/lib/remove.js
generated
vendored
45
node_modules/@webassemblyjs/helper-wasm-section/lib/remove.js
generated
vendored
@@ -1,45 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.removeSections = removeSections;
|
|
||||||
|
|
||||||
var _ast = require("@webassemblyjs/ast");
|
|
||||||
|
|
||||||
var _helperBuffer = require("@webassemblyjs/helper-buffer");
|
|
||||||
|
|
||||||
function removeSections(ast, uint8Buffer, section) {
|
|
||||||
var sectionMetadatas = (0, _ast.getSectionMetadatas)(ast, section);
|
|
||||||
|
|
||||||
if (sectionMetadatas.length === 0) {
|
|
||||||
throw new Error("Section metadata not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
return sectionMetadatas.reverse().reduce(function (uint8Buffer, sectionMetadata) {
|
|
||||||
var startsIncludingId = sectionMetadata.startOffset - 1;
|
|
||||||
var ends = section === "start" ? sectionMetadata.size.loc.end.column + 1 : sectionMetadata.startOffset + sectionMetadata.size.value + 1;
|
|
||||||
var delta = -(ends - startsIncludingId);
|
|
||||||
/**
|
|
||||||
* update AST
|
|
||||||
*/
|
|
||||||
// Once we hit our section every that is after needs to be shifted by the delta
|
|
||||||
|
|
||||||
var encounteredSection = false;
|
|
||||||
(0, _ast.traverse)(ast, {
|
|
||||||
SectionMetadata: function SectionMetadata(path) {
|
|
||||||
if (path.node.section === section) {
|
|
||||||
encounteredSection = true;
|
|
||||||
return path.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (encounteredSection === true) {
|
|
||||||
(0, _ast.shiftSection)(ast, path.node, delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}); // replacement is nothing
|
|
||||||
|
|
||||||
var replacement = [];
|
|
||||||
return (0, _helperBuffer.overrideBytesInBuffer)(uint8Buffer, startsIncludingId, ends, replacement);
|
|
||||||
}, uint8Buffer);
|
|
||||||
}
|
|
||||||
90
node_modules/@webassemblyjs/helper-wasm-section/lib/resize.js
generated
vendored
90
node_modules/@webassemblyjs/helper-wasm-section/lib/resize.js
generated
vendored
@@ -1,90 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.resizeSectionByteSize = resizeSectionByteSize;
|
|
||||||
exports.resizeSectionVecSize = resizeSectionVecSize;
|
|
||||||
|
|
||||||
var _wasmGen = require("@webassemblyjs/wasm-gen");
|
|
||||||
|
|
||||||
var _ast = require("@webassemblyjs/ast");
|
|
||||||
|
|
||||||
var _helperBuffer = require("@webassemblyjs/helper-buffer");
|
|
||||||
|
|
||||||
function resizeSectionByteSize(ast, uint8Buffer, section, deltaBytes) {
|
|
||||||
var sectionMetadata = (0, _ast.getSectionMetadata)(ast, section);
|
|
||||||
|
|
||||||
if (typeof sectionMetadata === "undefined") {
|
|
||||||
throw new Error("Section metadata not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof sectionMetadata.size.loc === "undefined") {
|
|
||||||
throw new Error("SectionMetadata " + section + " has no loc");
|
|
||||||
} // keep old node location to be overriden
|
|
||||||
|
|
||||||
|
|
||||||
var start = sectionMetadata.size.loc.start.column;
|
|
||||||
var end = sectionMetadata.size.loc.end.column;
|
|
||||||
var newSectionSize = sectionMetadata.size.value + deltaBytes;
|
|
||||||
var newBytes = (0, _wasmGen.encodeU32)(newSectionSize);
|
|
||||||
/**
|
|
||||||
* update AST
|
|
||||||
*/
|
|
||||||
|
|
||||||
sectionMetadata.size.value = newSectionSize;
|
|
||||||
var oldu32EncodedLen = end - start;
|
|
||||||
var newu32EncodedLen = newBytes.length; // the new u32 has a different encoded length
|
|
||||||
|
|
||||||
if (newu32EncodedLen !== oldu32EncodedLen) {
|
|
||||||
var deltaInSizeEncoding = newu32EncodedLen - oldu32EncodedLen;
|
|
||||||
sectionMetadata.size.loc.end.column = start + newu32EncodedLen;
|
|
||||||
deltaBytes += deltaInSizeEncoding; // move the vec size pointer size the section size is now smaller
|
|
||||||
|
|
||||||
sectionMetadata.vectorOfSize.loc.start.column += deltaInSizeEncoding;
|
|
||||||
sectionMetadata.vectorOfSize.loc.end.column += deltaInSizeEncoding;
|
|
||||||
} // Once we hit our section every that is after needs to be shifted by the delta
|
|
||||||
|
|
||||||
|
|
||||||
var encounteredSection = false;
|
|
||||||
(0, _ast.traverse)(ast, {
|
|
||||||
SectionMetadata: function SectionMetadata(path) {
|
|
||||||
if (path.node.section === section) {
|
|
||||||
encounteredSection = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (encounteredSection === true) {
|
|
||||||
(0, _ast.shiftSection)(ast, path.node, deltaBytes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return (0, _helperBuffer.overrideBytesInBuffer)(uint8Buffer, start, end, newBytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
function resizeSectionVecSize(ast, uint8Buffer, section, deltaElements) {
|
|
||||||
var sectionMetadata = (0, _ast.getSectionMetadata)(ast, section);
|
|
||||||
|
|
||||||
if (typeof sectionMetadata === "undefined") {
|
|
||||||
throw new Error("Section metadata not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof sectionMetadata.vectorOfSize.loc === "undefined") {
|
|
||||||
throw new Error("SectionMetadata " + section + " has no loc");
|
|
||||||
} // Section has no vector
|
|
||||||
|
|
||||||
|
|
||||||
if (sectionMetadata.vectorOfSize.value === -1) {
|
|
||||||
return uint8Buffer;
|
|
||||||
} // keep old node location to be overriden
|
|
||||||
|
|
||||||
|
|
||||||
var start = sectionMetadata.vectorOfSize.loc.start.column;
|
|
||||||
var end = sectionMetadata.vectorOfSize.loc.end.column;
|
|
||||||
var newValue = sectionMetadata.vectorOfSize.value + deltaElements;
|
|
||||||
var newBytes = (0, _wasmGen.encodeU32)(newValue); // Update AST
|
|
||||||
|
|
||||||
sectionMetadata.vectorOfSize.value = newValue;
|
|
||||||
sectionMetadata.vectorOfSize.loc.end.column = start + newBytes.length;
|
|
||||||
return (0, _helperBuffer.overrideBytesInBuffer)(uint8Buffer, start, end, newBytes);
|
|
||||||
}
|
|
||||||
29
node_modules/@webassemblyjs/helper-wasm-section/package.json
generated
vendored
29
node_modules/@webassemblyjs/helper-wasm-section/package.json
generated
vendored
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@webassemblyjs/helper-wasm-section",
|
|
||||||
"version": "1.9.0",
|
|
||||||
"description": "",
|
|
||||||
"main": "lib/index.js",
|
|
||||||
"module": "esm/index.js",
|
|
||||||
"scripts": {
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/xtuc/webassemblyjs.git"
|
|
||||||
},
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"author": "Sven Sauleau",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@webassemblyjs/ast": "1.9.0",
|
|
||||||
"@webassemblyjs/helper-buffer": "1.9.0",
|
|
||||||
"@webassemblyjs/helper-wasm-bytecode": "1.9.0",
|
|
||||||
"@webassemblyjs/wasm-gen": "1.9.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@webassemblyjs/wasm-parser": "1.9.0"
|
|
||||||
},
|
|
||||||
"gitHead": "0440b420888c1f7701eb9762ec657775506b87d8"
|
|
||||||
}
|
|
||||||
21
node_modules/@webassemblyjs/ieee754/LICENSE
generated
vendored
21
node_modules/@webassemblyjs/ieee754/LICENSE
generated
vendored
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
33
node_modules/@webassemblyjs/ieee754/esm/index.js
generated
vendored
33
node_modules/@webassemblyjs/ieee754/esm/index.js
generated
vendored
@@ -1,33 +0,0 @@
|
|||||||
import { write, read } from "@xtuc/ieee754";
|
|
||||||
/**
|
|
||||||
* According to https://webassembly.github.io/spec/binary/values.html#binary-float
|
|
||||||
* n = 32/8
|
|
||||||
*/
|
|
||||||
|
|
||||||
export var NUMBER_OF_BYTE_F32 = 4;
|
|
||||||
/**
|
|
||||||
* According to https://webassembly.github.io/spec/binary/values.html#binary-float
|
|
||||||
* n = 64/8
|
|
||||||
*/
|
|
||||||
|
|
||||||
export var NUMBER_OF_BYTE_F64 = 8;
|
|
||||||
export var SINGLE_PRECISION_MANTISSA = 23;
|
|
||||||
export var DOUBLE_PRECISION_MANTISSA = 52;
|
|
||||||
export function encodeF32(v) {
|
|
||||||
var buffer = [];
|
|
||||||
write(buffer, v, 0, true, SINGLE_PRECISION_MANTISSA, NUMBER_OF_BYTE_F32);
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
export function encodeF64(v) {
|
|
||||||
var buffer = [];
|
|
||||||
write(buffer, v, 0, true, DOUBLE_PRECISION_MANTISSA, NUMBER_OF_BYTE_F64);
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
export function decodeF32(bytes) {
|
|
||||||
var buffer = Buffer.from(bytes);
|
|
||||||
return read(buffer, 0, true, SINGLE_PRECISION_MANTISSA, NUMBER_OF_BYTE_F32);
|
|
||||||
}
|
|
||||||
export function decodeF64(bytes) {
|
|
||||||
var buffer = Buffer.from(bytes);
|
|
||||||
return read(buffer, 0, true, DOUBLE_PRECISION_MANTISSA, NUMBER_OF_BYTE_F64);
|
|
||||||
}
|
|
||||||
52
node_modules/@webassemblyjs/ieee754/lib/index.js
generated
vendored
52
node_modules/@webassemblyjs/ieee754/lib/index.js
generated
vendored
@@ -1,52 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.encodeF32 = encodeF32;
|
|
||||||
exports.encodeF64 = encodeF64;
|
|
||||||
exports.decodeF32 = decodeF32;
|
|
||||||
exports.decodeF64 = decodeF64;
|
|
||||||
exports.DOUBLE_PRECISION_MANTISSA = exports.SINGLE_PRECISION_MANTISSA = exports.NUMBER_OF_BYTE_F64 = exports.NUMBER_OF_BYTE_F32 = void 0;
|
|
||||||
|
|
||||||
var _ieee = require("@xtuc/ieee754");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* According to https://webassembly.github.io/spec/binary/values.html#binary-float
|
|
||||||
* n = 32/8
|
|
||||||
*/
|
|
||||||
var NUMBER_OF_BYTE_F32 = 4;
|
|
||||||
/**
|
|
||||||
* According to https://webassembly.github.io/spec/binary/values.html#binary-float
|
|
||||||
* n = 64/8
|
|
||||||
*/
|
|
||||||
|
|
||||||
exports.NUMBER_OF_BYTE_F32 = NUMBER_OF_BYTE_F32;
|
|
||||||
var NUMBER_OF_BYTE_F64 = 8;
|
|
||||||
exports.NUMBER_OF_BYTE_F64 = NUMBER_OF_BYTE_F64;
|
|
||||||
var SINGLE_PRECISION_MANTISSA = 23;
|
|
||||||
exports.SINGLE_PRECISION_MANTISSA = SINGLE_PRECISION_MANTISSA;
|
|
||||||
var DOUBLE_PRECISION_MANTISSA = 52;
|
|
||||||
exports.DOUBLE_PRECISION_MANTISSA = DOUBLE_PRECISION_MANTISSA;
|
|
||||||
|
|
||||||
function encodeF32(v) {
|
|
||||||
var buffer = [];
|
|
||||||
(0, _ieee.write)(buffer, v, 0, true, SINGLE_PRECISION_MANTISSA, NUMBER_OF_BYTE_F32);
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
function encodeF64(v) {
|
|
||||||
var buffer = [];
|
|
||||||
(0, _ieee.write)(buffer, v, 0, true, DOUBLE_PRECISION_MANTISSA, NUMBER_OF_BYTE_F64);
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
function decodeF32(bytes) {
|
|
||||||
var buffer = Buffer.from(bytes);
|
|
||||||
return (0, _ieee.read)(buffer, 0, true, SINGLE_PRECISION_MANTISSA, NUMBER_OF_BYTE_F32);
|
|
||||||
}
|
|
||||||
|
|
||||||
function decodeF64(bytes) {
|
|
||||||
var buffer = Buffer.from(bytes);
|
|
||||||
return (0, _ieee.read)(buffer, 0, true, DOUBLE_PRECISION_MANTISSA, NUMBER_OF_BYTE_F64);
|
|
||||||
}
|
|
||||||
18
node_modules/@webassemblyjs/ieee754/package.json
generated
vendored
18
node_modules/@webassemblyjs/ieee754/package.json
generated
vendored
@@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@webassemblyjs/ieee754",
|
|
||||||
"version": "1.9.0",
|
|
||||||
"description": "IEEE754 decoder and encoder",
|
|
||||||
"license": "MIT",
|
|
||||||
"main": "lib/index.js",
|
|
||||||
"module": "esm/index.js",
|
|
||||||
"scripts": {
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@xtuc/ieee754": "^1.2.0"
|
|
||||||
},
|
|
||||||
"gitHead": "0440b420888c1f7701eb9762ec657775506b87d8"
|
|
||||||
}
|
|
||||||
47
node_modules/@webassemblyjs/ieee754/src/index.js
generated
vendored
47
node_modules/@webassemblyjs/ieee754/src/index.js
generated
vendored
@@ -1,47 +0,0 @@
|
|||||||
// @flow
|
|
||||||
|
|
||||||
import { write, read } from "@xtuc/ieee754";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* According to https://webassembly.github.io/spec/binary/values.html#binary-float
|
|
||||||
* n = 32/8
|
|
||||||
*/
|
|
||||||
export const NUMBER_OF_BYTE_F32 = 4;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* According to https://webassembly.github.io/spec/binary/values.html#binary-float
|
|
||||||
* n = 64/8
|
|
||||||
*/
|
|
||||||
export const NUMBER_OF_BYTE_F64 = 8;
|
|
||||||
|
|
||||||
export const SINGLE_PRECISION_MANTISSA = 23;
|
|
||||||
|
|
||||||
export const DOUBLE_PRECISION_MANTISSA = 52;
|
|
||||||
|
|
||||||
export function encodeF32(v: number): Array<number> {
|
|
||||||
const buffer = [];
|
|
||||||
|
|
||||||
write(buffer, v, 0, true, SINGLE_PRECISION_MANTISSA, NUMBER_OF_BYTE_F32);
|
|
||||||
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function encodeF64(v: number): Array<number> {
|
|
||||||
const buffer = [];
|
|
||||||
|
|
||||||
write(buffer, v, 0, true, DOUBLE_PRECISION_MANTISSA, NUMBER_OF_BYTE_F64);
|
|
||||||
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function decodeF32(bytes: Array<Byte>): number {
|
|
||||||
const buffer = Buffer.from(bytes);
|
|
||||||
|
|
||||||
return read(buffer, 0, true, SINGLE_PRECISION_MANTISSA, NUMBER_OF_BYTE_F32);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function decodeF64(bytes: Array<Byte>): number {
|
|
||||||
const buffer = Buffer.from(bytes);
|
|
||||||
|
|
||||||
return read(buffer, 0, true, DOUBLE_PRECISION_MANTISSA, NUMBER_OF_BYTE_F64);
|
|
||||||
}
|
|
||||||
194
node_modules/@webassemblyjs/leb128/LICENSE.txt
generated
vendored
194
node_modules/@webassemblyjs/leb128/LICENSE.txt
generated
vendored
@@ -1,194 +0,0 @@
|
|||||||
Copyright 2012 The Obvious Corporation.
|
|
||||||
http://obvious.com/
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------
|
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
145
node_modules/@webassemblyjs/leb128/esm/bits.js
generated
vendored
145
node_modules/@webassemblyjs/leb128/esm/bits.js
generated
vendored
@@ -1,145 +0,0 @@
|
|||||||
// Copyright 2012 The Obvious Corporation.
|
|
||||||
|
|
||||||
/*
|
|
||||||
* bits: Bitwise buffer utilities. The utilities here treat a buffer
|
|
||||||
* as a little-endian bigint, so the lowest-order bit is bit #0 of
|
|
||||||
* `buffer[0]`, and the highest-order bit is bit #7 of
|
|
||||||
* `buffer[buffer.length - 1]`.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Modules used
|
|
||||||
*/
|
|
||||||
"use strict";
|
|
||||||
/*
|
|
||||||
* Exported bindings
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the given number of bits from the buffer at the indicated
|
|
||||||
* index, returning a simple number as the result. If bits are requested
|
|
||||||
* that aren't covered by the buffer, the `defaultBit` is used as their
|
|
||||||
* value.
|
|
||||||
*
|
|
||||||
* The `bitLength` must be no more than 32. The `defaultBit` if not
|
|
||||||
* specified is taken to be `0`.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function extract(buffer, bitIndex, bitLength, defaultBit) {
|
|
||||||
if (bitLength < 0 || bitLength > 32) {
|
|
||||||
throw new Error("Bad value for bitLength.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (defaultBit === undefined) {
|
|
||||||
defaultBit = 0;
|
|
||||||
} else if (defaultBit !== 0 && defaultBit !== 1) {
|
|
||||||
throw new Error("Bad value for defaultBit.");
|
|
||||||
}
|
|
||||||
|
|
||||||
var defaultByte = defaultBit * 0xff;
|
|
||||||
var result = 0; // All starts are inclusive. The {endByte, endBit} pair is exclusive, but
|
|
||||||
// if endBit !== 0, then endByte is inclusive.
|
|
||||||
|
|
||||||
var lastBit = bitIndex + bitLength;
|
|
||||||
var startByte = Math.floor(bitIndex / 8);
|
|
||||||
var startBit = bitIndex % 8;
|
|
||||||
var endByte = Math.floor(lastBit / 8);
|
|
||||||
var endBit = lastBit % 8;
|
|
||||||
|
|
||||||
if (endBit !== 0) {
|
|
||||||
// `(1 << endBit) - 1` is the mask of all bits up to but not including
|
|
||||||
// the endBit.
|
|
||||||
result = get(endByte) & (1 << endBit) - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (endByte > startByte) {
|
|
||||||
endByte--;
|
|
||||||
result = result << 8 | get(endByte);
|
|
||||||
}
|
|
||||||
|
|
||||||
result >>>= startBit;
|
|
||||||
return result;
|
|
||||||
|
|
||||||
function get(index) {
|
|
||||||
var result = buffer[index];
|
|
||||||
return result === undefined ? defaultByte : result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Injects the given bits into the given buffer at the given index. Any
|
|
||||||
* bits in the value beyond the length to set are ignored.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function inject(buffer, bitIndex, bitLength, value) {
|
|
||||||
if (bitLength < 0 || bitLength > 32) {
|
|
||||||
throw new Error("Bad value for bitLength.");
|
|
||||||
}
|
|
||||||
|
|
||||||
var lastByte = Math.floor((bitIndex + bitLength - 1) / 8);
|
|
||||||
|
|
||||||
if (bitIndex < 0 || lastByte >= buffer.length) {
|
|
||||||
throw new Error("Index out of range.");
|
|
||||||
} // Just keeping it simple, until / unless profiling shows that this
|
|
||||||
// is a problem.
|
|
||||||
|
|
||||||
|
|
||||||
var atByte = Math.floor(bitIndex / 8);
|
|
||||||
var atBit = bitIndex % 8;
|
|
||||||
|
|
||||||
while (bitLength > 0) {
|
|
||||||
if (value & 1) {
|
|
||||||
buffer[atByte] |= 1 << atBit;
|
|
||||||
} else {
|
|
||||||
buffer[atByte] &= ~(1 << atBit);
|
|
||||||
}
|
|
||||||
|
|
||||||
value >>= 1;
|
|
||||||
bitLength--;
|
|
||||||
atBit = (atBit + 1) % 8;
|
|
||||||
|
|
||||||
if (atBit === 0) {
|
|
||||||
atByte++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Gets the sign bit of the given buffer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function getSign(buffer) {
|
|
||||||
return buffer[buffer.length - 1] >>> 7;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Gets the zero-based bit number of the highest-order bit with the
|
|
||||||
* given value in the given buffer.
|
|
||||||
*
|
|
||||||
* If the buffer consists entirely of the other bit value, then this returns
|
|
||||||
* `-1`.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function highOrder(bit, buffer) {
|
|
||||||
var length = buffer.length;
|
|
||||||
var fullyWrongByte = (bit ^ 1) * 0xff; // the other-bit extended to a full byte
|
|
||||||
|
|
||||||
while (length > 0 && buffer[length - 1] === fullyWrongByte) {
|
|
||||||
length--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (length === 0) {
|
|
||||||
// Degenerate case. The buffer consists entirely of ~bit.
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
var byteToCheck = buffer[length - 1];
|
|
||||||
var result = length * 8 - 1;
|
|
||||||
|
|
||||||
for (var i = 7; i > 0; i--) {
|
|
||||||
if ((byteToCheck >> i & 1) === bit) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
result--;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
218
node_modules/@webassemblyjs/leb128/esm/bufs.js
generated
vendored
218
node_modules/@webassemblyjs/leb128/esm/bufs.js
generated
vendored
@@ -1,218 +0,0 @@
|
|||||||
// Copyright 2012 The Obvious Corporation.
|
|
||||||
|
|
||||||
/*
|
|
||||||
* bufs: Buffer utilities.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Module variables
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** Pool of buffers, where `bufPool[x].length === x`. */
|
|
||||||
var bufPool = [];
|
|
||||||
/** Maximum length of kept temporary buffers. */
|
|
||||||
|
|
||||||
var TEMP_BUF_MAXIMUM_LENGTH = 20;
|
|
||||||
/** Minimum exactly-representable 64-bit int. */
|
|
||||||
|
|
||||||
var MIN_EXACT_INT64 = -0x8000000000000000;
|
|
||||||
/** Maximum exactly-representable 64-bit int. */
|
|
||||||
|
|
||||||
var MAX_EXACT_INT64 = 0x7ffffffffffffc00;
|
|
||||||
/** Maximum exactly-representable 64-bit uint. */
|
|
||||||
|
|
||||||
var MAX_EXACT_UINT64 = 0xfffffffffffff800;
|
|
||||||
/**
|
|
||||||
* The int value consisting just of a 1 in bit #32 (that is, one more
|
|
||||||
* than the maximum 32-bit unsigned value).
|
|
||||||
*/
|
|
||||||
|
|
||||||
var BIT_32 = 0x100000000;
|
|
||||||
/**
|
|
||||||
* The int value consisting just of a 1 in bit #64 (that is, one more
|
|
||||||
* than the maximum 64-bit unsigned value).
|
|
||||||
*/
|
|
||||||
|
|
||||||
var BIT_64 = 0x10000000000000000;
|
|
||||||
/*
|
|
||||||
* Helper functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Masks off all but the lowest bit set of the given number.
|
|
||||||
*/
|
|
||||||
|
|
||||||
function lowestBit(num) {
|
|
||||||
return num & -num;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Gets whether trying to add the second number to the first is lossy
|
|
||||||
* (inexact). The first number is meant to be an accumulated result.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function isLossyToAdd(accum, num) {
|
|
||||||
if (num === 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
var lowBit = lowestBit(num);
|
|
||||||
var added = accum + lowBit;
|
|
||||||
|
|
||||||
if (added === accum) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (added - lowBit !== accum) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Exported functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allocates a buffer of the given length, which is initialized
|
|
||||||
* with all zeroes. This returns a buffer from the pool if it is
|
|
||||||
* available, or a freshly-allocated buffer if not.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
export function alloc(length) {
|
|
||||||
var result = bufPool[length];
|
|
||||||
|
|
||||||
if (result) {
|
|
||||||
bufPool[length] = undefined;
|
|
||||||
} else {
|
|
||||||
result = new Buffer(length);
|
|
||||||
}
|
|
||||||
|
|
||||||
result.fill(0);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Releases a buffer back to the pool.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function free(buffer) {
|
|
||||||
var length = buffer.length;
|
|
||||||
|
|
||||||
if (length < TEMP_BUF_MAXIMUM_LENGTH) {
|
|
||||||
bufPool[length] = buffer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Resizes a buffer, returning a new buffer. Returns the argument if
|
|
||||||
* the length wouldn't actually change. This function is only safe to
|
|
||||||
* use if the given buffer was allocated within this module (since
|
|
||||||
* otherwise the buffer might possibly be shared externally).
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function resize(buffer, length) {
|
|
||||||
if (length === buffer.length) {
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
var newBuf = alloc(length);
|
|
||||||
buffer.copy(newBuf);
|
|
||||||
free(buffer);
|
|
||||||
return newBuf;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Reads an arbitrary signed int from a buffer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function readInt(buffer) {
|
|
||||||
var length = buffer.length;
|
|
||||||
var positive = buffer[length - 1] < 0x80;
|
|
||||||
var result = positive ? 0 : -1;
|
|
||||||
var lossy = false; // Note: We can't use bit manipulation here, since that stops
|
|
||||||
// working if the result won't fit in a 32-bit int.
|
|
||||||
|
|
||||||
if (length < 7) {
|
|
||||||
// Common case which can't possibly be lossy (because the result has
|
|
||||||
// no more than 48 bits, and loss only happens with 54 or more).
|
|
||||||
for (var i = length - 1; i >= 0; i--) {
|
|
||||||
result = result * 0x100 + buffer[i];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (var _i = length - 1; _i >= 0; _i--) {
|
|
||||||
var one = buffer[_i];
|
|
||||||
result *= 0x100;
|
|
||||||
|
|
||||||
if (isLossyToAdd(result, one)) {
|
|
||||||
lossy = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
result += one;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
value: result,
|
|
||||||
lossy: lossy
|
|
||||||
};
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Reads an arbitrary unsigned int from a buffer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function readUInt(buffer) {
|
|
||||||
var length = buffer.length;
|
|
||||||
var result = 0;
|
|
||||||
var lossy = false; // Note: See above in re bit manipulation.
|
|
||||||
|
|
||||||
if (length < 7) {
|
|
||||||
// Common case which can't possibly be lossy (see above).
|
|
||||||
for (var i = length - 1; i >= 0; i--) {
|
|
||||||
result = result * 0x100 + buffer[i];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (var _i2 = length - 1; _i2 >= 0; _i2--) {
|
|
||||||
var one = buffer[_i2];
|
|
||||||
result *= 0x100;
|
|
||||||
|
|
||||||
if (isLossyToAdd(result, one)) {
|
|
||||||
lossy = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
result += one;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
value: result,
|
|
||||||
lossy: lossy
|
|
||||||
};
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Writes a little-endian 64-bit signed int into a buffer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function writeInt64(value, buffer) {
|
|
||||||
if (value < MIN_EXACT_INT64 || value > MAX_EXACT_INT64) {
|
|
||||||
throw new Error("Value out of range.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value < 0) {
|
|
||||||
value += BIT_64;
|
|
||||||
}
|
|
||||||
|
|
||||||
writeUInt64(value, buffer);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Writes a little-endian 64-bit unsigned int into a buffer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function writeUInt64(value, buffer) {
|
|
||||||
if (value < 0 || value > MAX_EXACT_UINT64) {
|
|
||||||
throw new Error("Value out of range.");
|
|
||||||
}
|
|
||||||
|
|
||||||
var lowWord = value % BIT_32;
|
|
||||||
var highWord = Math.floor(value / BIT_32);
|
|
||||||
buffer.writeUInt32LE(lowWord, 0);
|
|
||||||
buffer.writeUInt32LE(highWord, 4);
|
|
||||||
}
|
|
||||||
34
node_modules/@webassemblyjs/leb128/esm/index.js
generated
vendored
34
node_modules/@webassemblyjs/leb128/esm/index.js
generated
vendored
@@ -1,34 +0,0 @@
|
|||||||
import leb from "./leb";
|
|
||||||
/**
|
|
||||||
* According to https://webassembly.github.io/spec/core/binary/values.html#binary-int
|
|
||||||
* max = ceil(32/7)
|
|
||||||
*/
|
|
||||||
|
|
||||||
export var MAX_NUMBER_OF_BYTE_U32 = 5;
|
|
||||||
/**
|
|
||||||
* According to https://webassembly.github.io/spec/core/binary/values.html#binary-int
|
|
||||||
* max = ceil(64/7)
|
|
||||||
*/
|
|
||||||
|
|
||||||
export var MAX_NUMBER_OF_BYTE_U64 = 10;
|
|
||||||
export function decodeInt64(encodedBuffer, index) {
|
|
||||||
return leb.decodeInt64(encodedBuffer, index);
|
|
||||||
}
|
|
||||||
export function decodeUInt64(encodedBuffer, index) {
|
|
||||||
return leb.decodeUInt64(encodedBuffer, index);
|
|
||||||
}
|
|
||||||
export function decodeInt32(encodedBuffer, index) {
|
|
||||||
return leb.decodeInt32(encodedBuffer, index);
|
|
||||||
}
|
|
||||||
export function decodeUInt32(encodedBuffer, index) {
|
|
||||||
return leb.decodeUInt32(encodedBuffer, index);
|
|
||||||
}
|
|
||||||
export function encodeU32(v) {
|
|
||||||
return leb.encodeUInt32(v);
|
|
||||||
}
|
|
||||||
export function encodeI32(v) {
|
|
||||||
return leb.encodeInt32(v);
|
|
||||||
}
|
|
||||||
export function encodeI64(v) {
|
|
||||||
return leb.encodeInt64(v);
|
|
||||||
}
|
|
||||||
316
node_modules/@webassemblyjs/leb128/esm/leb.js
generated
vendored
316
node_modules/@webassemblyjs/leb128/esm/leb.js
generated
vendored
@@ -1,316 +0,0 @@
|
|||||||
// Copyright 2012 The Obvious Corporation.
|
|
||||||
|
|
||||||
/*
|
|
||||||
* leb: LEB128 utilities.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Modules used
|
|
||||||
*/
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
import Long from "@xtuc/long";
|
|
||||||
import * as bits from "./bits";
|
|
||||||
import * as bufs from "./bufs";
|
|
||||||
/*
|
|
||||||
* Module variables
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** The minimum possible 32-bit signed int. */
|
|
||||||
|
|
||||||
var MIN_INT32 = -0x80000000;
|
|
||||||
/** The maximum possible 32-bit signed int. */
|
|
||||||
|
|
||||||
var MAX_INT32 = 0x7fffffff;
|
|
||||||
/** The maximum possible 32-bit unsigned int. */
|
|
||||||
|
|
||||||
var MAX_UINT32 = 0xffffffff;
|
|
||||||
/** The minimum possible 64-bit signed int. */
|
|
||||||
// const MIN_INT64 = -0x8000000000000000;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The maximum possible 64-bit signed int that is representable as a
|
|
||||||
* JavaScript number.
|
|
||||||
*/
|
|
||||||
// const MAX_INT64 = 0x7ffffffffffffc00;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The maximum possible 64-bit unsigned int that is representable as a
|
|
||||||
* JavaScript number.
|
|
||||||
*/
|
|
||||||
// const MAX_UINT64 = 0xfffffffffffff800;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Helper functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determines the number of bits required to encode the number
|
|
||||||
* represented in the given buffer as a signed value. The buffer is
|
|
||||||
* taken to represent a signed number in little-endian form.
|
|
||||||
*
|
|
||||||
* The number of bits to encode is the (zero-based) bit number of the
|
|
||||||
* highest-order non-sign-matching bit, plus two. For example:
|
|
||||||
*
|
|
||||||
* 11111011 01110101
|
|
||||||
* high low
|
|
||||||
*
|
|
||||||
* The sign bit here is 1 (that is, it's a negative number). The highest
|
|
||||||
* bit number that doesn't match the sign is bit #10 (where the lowest-order
|
|
||||||
* bit is bit #0). So, we have to encode at least 12 bits total.
|
|
||||||
*
|
|
||||||
* As a special degenerate case, the numbers 0 and -1 each require just one bit.
|
|
||||||
*/
|
|
||||||
|
|
||||||
function signedBitCount(buffer) {
|
|
||||||
return bits.highOrder(bits.getSign(buffer) ^ 1, buffer) + 2;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Determines the number of bits required to encode the number
|
|
||||||
* represented in the given buffer as an unsigned value. The buffer is
|
|
||||||
* taken to represent an unsigned number in little-endian form.
|
|
||||||
*
|
|
||||||
* The number of bits to encode is the (zero-based) bit number of the
|
|
||||||
* highest-order 1 bit, plus one. For example:
|
|
||||||
*
|
|
||||||
* 00011000 01010011
|
|
||||||
* high low
|
|
||||||
*
|
|
||||||
* The highest-order 1 bit here is bit #12 (where the lowest-order bit
|
|
||||||
* is bit #0). So, we have to encode at least 13 bits total.
|
|
||||||
*
|
|
||||||
* As a special degenerate case, the number 0 requires 1 bit.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function unsignedBitCount(buffer) {
|
|
||||||
var result = bits.highOrder(1, buffer) + 1;
|
|
||||||
return result ? result : 1;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Common encoder for both signed and unsigned ints. This takes a
|
|
||||||
* bigint-ish buffer, returning an LEB128-encoded buffer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function encodeBufferCommon(buffer, signed) {
|
|
||||||
var signBit;
|
|
||||||
var bitCount;
|
|
||||||
|
|
||||||
if (signed) {
|
|
||||||
signBit = bits.getSign(buffer);
|
|
||||||
bitCount = signedBitCount(buffer);
|
|
||||||
} else {
|
|
||||||
signBit = 0;
|
|
||||||
bitCount = unsignedBitCount(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
var byteCount = Math.ceil(bitCount / 7);
|
|
||||||
var result = bufs.alloc(byteCount);
|
|
||||||
|
|
||||||
for (var i = 0; i < byteCount; i++) {
|
|
||||||
var payload = bits.extract(buffer, i * 7, 7, signBit);
|
|
||||||
result[i] = payload | 0x80;
|
|
||||||
} // Mask off the top bit of the last byte, to indicate the end of the
|
|
||||||
// encoding.
|
|
||||||
|
|
||||||
|
|
||||||
result[byteCount - 1] &= 0x7f;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Gets the byte-length of the value encoded in the given buffer at
|
|
||||||
* the given index.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function encodedLength(encodedBuffer, index) {
|
|
||||||
var result = 0;
|
|
||||||
|
|
||||||
while (encodedBuffer[index + result] >= 0x80) {
|
|
||||||
result++;
|
|
||||||
}
|
|
||||||
|
|
||||||
result++; // to account for the last byte
|
|
||||||
|
|
||||||
if (index + result > encodedBuffer.length) {// FIXME(sven): seems to cause false positives
|
|
||||||
// throw new Error("integer representation too long");
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Common decoder for both signed and unsigned ints. This takes an
|
|
||||||
* LEB128-encoded buffer, returning a bigint-ish buffer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function decodeBufferCommon(encodedBuffer, index, signed) {
|
|
||||||
index = index === undefined ? 0 : index;
|
|
||||||
var length = encodedLength(encodedBuffer, index);
|
|
||||||
var bitLength = length * 7;
|
|
||||||
var byteLength = Math.ceil(bitLength / 8);
|
|
||||||
var result = bufs.alloc(byteLength);
|
|
||||||
var outIndex = 0;
|
|
||||||
|
|
||||||
while (length > 0) {
|
|
||||||
bits.inject(result, outIndex, 7, encodedBuffer[index]);
|
|
||||||
outIndex += 7;
|
|
||||||
index++;
|
|
||||||
length--;
|
|
||||||
}
|
|
||||||
|
|
||||||
var signBit;
|
|
||||||
var signByte;
|
|
||||||
|
|
||||||
if (signed) {
|
|
||||||
// Sign-extend the last byte.
|
|
||||||
var lastByte = result[byteLength - 1];
|
|
||||||
var endBit = outIndex % 8;
|
|
||||||
|
|
||||||
if (endBit !== 0) {
|
|
||||||
var shift = 32 - endBit; // 32 because JS bit ops work on 32-bit ints.
|
|
||||||
|
|
||||||
lastByte = result[byteLength - 1] = lastByte << shift >> shift & 0xff;
|
|
||||||
}
|
|
||||||
|
|
||||||
signBit = lastByte >> 7;
|
|
||||||
signByte = signBit * 0xff;
|
|
||||||
} else {
|
|
||||||
signBit = 0;
|
|
||||||
signByte = 0;
|
|
||||||
} // Slice off any superfluous bytes, that is, ones that add no meaningful
|
|
||||||
// bits (because the value would be the same if they were removed).
|
|
||||||
|
|
||||||
|
|
||||||
while (byteLength > 1 && result[byteLength - 1] === signByte && (!signed || result[byteLength - 2] >> 7 === signBit)) {
|
|
||||||
byteLength--;
|
|
||||||
}
|
|
||||||
|
|
||||||
result = bufs.resize(result, byteLength);
|
|
||||||
return {
|
|
||||||
value: result,
|
|
||||||
nextIndex: index
|
|
||||||
};
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Exported bindings
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function encodeIntBuffer(buffer) {
|
|
||||||
return encodeBufferCommon(buffer, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
function decodeIntBuffer(encodedBuffer, index) {
|
|
||||||
return decodeBufferCommon(encodedBuffer, index, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
function encodeInt32(num) {
|
|
||||||
var buf = bufs.alloc(4);
|
|
||||||
buf.writeInt32LE(num, 0);
|
|
||||||
var result = encodeIntBuffer(buf);
|
|
||||||
bufs.free(buf);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function decodeInt32(encodedBuffer, index) {
|
|
||||||
var result = decodeIntBuffer(encodedBuffer, index);
|
|
||||||
var parsed = bufs.readInt(result.value);
|
|
||||||
var value = parsed.value;
|
|
||||||
bufs.free(result.value);
|
|
||||||
|
|
||||||
if (value < MIN_INT32 || value > MAX_INT32) {
|
|
||||||
throw new Error("integer too large");
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
value: value,
|
|
||||||
nextIndex: result.nextIndex
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function encodeInt64(num) {
|
|
||||||
var buf = bufs.alloc(8);
|
|
||||||
bufs.writeInt64(num, buf);
|
|
||||||
var result = encodeIntBuffer(buf);
|
|
||||||
bufs.free(buf);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function decodeInt64(encodedBuffer, index) {
|
|
||||||
var result = decodeIntBuffer(encodedBuffer, index);
|
|
||||||
var value = Long.fromBytesLE(result.value, false);
|
|
||||||
bufs.free(result.value);
|
|
||||||
return {
|
|
||||||
value: value,
|
|
||||||
nextIndex: result.nextIndex,
|
|
||||||
lossy: false
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function encodeUIntBuffer(buffer) {
|
|
||||||
return encodeBufferCommon(buffer, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
function decodeUIntBuffer(encodedBuffer, index) {
|
|
||||||
return decodeBufferCommon(encodedBuffer, index, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
function encodeUInt32(num) {
|
|
||||||
var buf = bufs.alloc(4);
|
|
||||||
buf.writeUInt32LE(num, 0);
|
|
||||||
var result = encodeUIntBuffer(buf);
|
|
||||||
bufs.free(buf);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function decodeUInt32(encodedBuffer, index) {
|
|
||||||
var result = decodeUIntBuffer(encodedBuffer, index);
|
|
||||||
var parsed = bufs.readUInt(result.value);
|
|
||||||
var value = parsed.value;
|
|
||||||
bufs.free(result.value);
|
|
||||||
|
|
||||||
if (value > MAX_UINT32) {
|
|
||||||
throw new Error("integer too large");
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
value: value,
|
|
||||||
nextIndex: result.nextIndex
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function encodeUInt64(num) {
|
|
||||||
var buf = bufs.alloc(8);
|
|
||||||
bufs.writeUInt64(num, buf);
|
|
||||||
var result = encodeUIntBuffer(buf);
|
|
||||||
bufs.free(buf);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function decodeUInt64(encodedBuffer, index) {
|
|
||||||
var result = decodeUIntBuffer(encodedBuffer, index);
|
|
||||||
var value = Long.fromBytesLE(result.value, true);
|
|
||||||
bufs.free(result.value);
|
|
||||||
return {
|
|
||||||
value: value,
|
|
||||||
nextIndex: result.nextIndex,
|
|
||||||
lossy: false
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export default {
|
|
||||||
decodeInt32: decodeInt32,
|
|
||||||
decodeInt64: decodeInt64,
|
|
||||||
decodeIntBuffer: decodeIntBuffer,
|
|
||||||
decodeUInt32: decodeUInt32,
|
|
||||||
decodeUInt64: decodeUInt64,
|
|
||||||
decodeUIntBuffer: decodeUIntBuffer,
|
|
||||||
encodeInt32: encodeInt32,
|
|
||||||
encodeInt64: encodeInt64,
|
|
||||||
encodeIntBuffer: encodeIntBuffer,
|
|
||||||
encodeUInt32: encodeUInt32,
|
|
||||||
encodeUInt64: encodeUInt64,
|
|
||||||
encodeUIntBuffer: encodeUIntBuffer
|
|
||||||
};
|
|
||||||
156
node_modules/@webassemblyjs/leb128/lib/bits.js
generated
vendored
156
node_modules/@webassemblyjs/leb128/lib/bits.js
generated
vendored
@@ -1,156 +0,0 @@
|
|||||||
// Copyright 2012 The Obvious Corporation.
|
|
||||||
|
|
||||||
/*
|
|
||||||
* bits: Bitwise buffer utilities. The utilities here treat a buffer
|
|
||||||
* as a little-endian bigint, so the lowest-order bit is bit #0 of
|
|
||||||
* `buffer[0]`, and the highest-order bit is bit #7 of
|
|
||||||
* `buffer[buffer.length - 1]`.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Modules used
|
|
||||||
*/
|
|
||||||
"use strict";
|
|
||||||
/*
|
|
||||||
* Exported bindings
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the given number of bits from the buffer at the indicated
|
|
||||||
* index, returning a simple number as the result. If bits are requested
|
|
||||||
* that aren't covered by the buffer, the `defaultBit` is used as their
|
|
||||||
* value.
|
|
||||||
*
|
|
||||||
* The `bitLength` must be no more than 32. The `defaultBit` if not
|
|
||||||
* specified is taken to be `0`.
|
|
||||||
*/
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.extract = extract;
|
|
||||||
exports.inject = inject;
|
|
||||||
exports.getSign = getSign;
|
|
||||||
exports.highOrder = highOrder;
|
|
||||||
|
|
||||||
function extract(buffer, bitIndex, bitLength, defaultBit) {
|
|
||||||
if (bitLength < 0 || bitLength > 32) {
|
|
||||||
throw new Error("Bad value for bitLength.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (defaultBit === undefined) {
|
|
||||||
defaultBit = 0;
|
|
||||||
} else if (defaultBit !== 0 && defaultBit !== 1) {
|
|
||||||
throw new Error("Bad value for defaultBit.");
|
|
||||||
}
|
|
||||||
|
|
||||||
var defaultByte = defaultBit * 0xff;
|
|
||||||
var result = 0; // All starts are inclusive. The {endByte, endBit} pair is exclusive, but
|
|
||||||
// if endBit !== 0, then endByte is inclusive.
|
|
||||||
|
|
||||||
var lastBit = bitIndex + bitLength;
|
|
||||||
var startByte = Math.floor(bitIndex / 8);
|
|
||||||
var startBit = bitIndex % 8;
|
|
||||||
var endByte = Math.floor(lastBit / 8);
|
|
||||||
var endBit = lastBit % 8;
|
|
||||||
|
|
||||||
if (endBit !== 0) {
|
|
||||||
// `(1 << endBit) - 1` is the mask of all bits up to but not including
|
|
||||||
// the endBit.
|
|
||||||
result = get(endByte) & (1 << endBit) - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (endByte > startByte) {
|
|
||||||
endByte--;
|
|
||||||
result = result << 8 | get(endByte);
|
|
||||||
}
|
|
||||||
|
|
||||||
result >>>= startBit;
|
|
||||||
return result;
|
|
||||||
|
|
||||||
function get(index) {
|
|
||||||
var result = buffer[index];
|
|
||||||
return result === undefined ? defaultByte : result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Injects the given bits into the given buffer at the given index. Any
|
|
||||||
* bits in the value beyond the length to set are ignored.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function inject(buffer, bitIndex, bitLength, value) {
|
|
||||||
if (bitLength < 0 || bitLength > 32) {
|
|
||||||
throw new Error("Bad value for bitLength.");
|
|
||||||
}
|
|
||||||
|
|
||||||
var lastByte = Math.floor((bitIndex + bitLength - 1) / 8);
|
|
||||||
|
|
||||||
if (bitIndex < 0 || lastByte >= buffer.length) {
|
|
||||||
throw new Error("Index out of range.");
|
|
||||||
} // Just keeping it simple, until / unless profiling shows that this
|
|
||||||
// is a problem.
|
|
||||||
|
|
||||||
|
|
||||||
var atByte = Math.floor(bitIndex / 8);
|
|
||||||
var atBit = bitIndex % 8;
|
|
||||||
|
|
||||||
while (bitLength > 0) {
|
|
||||||
if (value & 1) {
|
|
||||||
buffer[atByte] |= 1 << atBit;
|
|
||||||
} else {
|
|
||||||
buffer[atByte] &= ~(1 << atBit);
|
|
||||||
}
|
|
||||||
|
|
||||||
value >>= 1;
|
|
||||||
bitLength--;
|
|
||||||
atBit = (atBit + 1) % 8;
|
|
||||||
|
|
||||||
if (atBit === 0) {
|
|
||||||
atByte++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Gets the sign bit of the given buffer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function getSign(buffer) {
|
|
||||||
return buffer[buffer.length - 1] >>> 7;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Gets the zero-based bit number of the highest-order bit with the
|
|
||||||
* given value in the given buffer.
|
|
||||||
*
|
|
||||||
* If the buffer consists entirely of the other bit value, then this returns
|
|
||||||
* `-1`.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function highOrder(bit, buffer) {
|
|
||||||
var length = buffer.length;
|
|
||||||
var fullyWrongByte = (bit ^ 1) * 0xff; // the other-bit extended to a full byte
|
|
||||||
|
|
||||||
while (length > 0 && buffer[length - 1] === fullyWrongByte) {
|
|
||||||
length--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (length === 0) {
|
|
||||||
// Degenerate case. The buffer consists entirely of ~bit.
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
var byteToCheck = buffer[length - 1];
|
|
||||||
var result = length * 8 - 1;
|
|
||||||
|
|
||||||
for (var i = 7; i > 0; i--) {
|
|
||||||
if ((byteToCheck >> i & 1) === bit) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
result--;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
236
node_modules/@webassemblyjs/leb128/lib/bufs.js
generated
vendored
236
node_modules/@webassemblyjs/leb128/lib/bufs.js
generated
vendored
@@ -1,236 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.alloc = alloc;
|
|
||||||
exports.free = free;
|
|
||||||
exports.resize = resize;
|
|
||||||
exports.readInt = readInt;
|
|
||||||
exports.readUInt = readUInt;
|
|
||||||
exports.writeInt64 = writeInt64;
|
|
||||||
exports.writeUInt64 = writeUInt64;
|
|
||||||
// Copyright 2012 The Obvious Corporation.
|
|
||||||
|
|
||||||
/*
|
|
||||||
* bufs: Buffer utilities.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Module variables
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** Pool of buffers, where `bufPool[x].length === x`. */
|
|
||||||
var bufPool = [];
|
|
||||||
/** Maximum length of kept temporary buffers. */
|
|
||||||
|
|
||||||
var TEMP_BUF_MAXIMUM_LENGTH = 20;
|
|
||||||
/** Minimum exactly-representable 64-bit int. */
|
|
||||||
|
|
||||||
var MIN_EXACT_INT64 = -0x8000000000000000;
|
|
||||||
/** Maximum exactly-representable 64-bit int. */
|
|
||||||
|
|
||||||
var MAX_EXACT_INT64 = 0x7ffffffffffffc00;
|
|
||||||
/** Maximum exactly-representable 64-bit uint. */
|
|
||||||
|
|
||||||
var MAX_EXACT_UINT64 = 0xfffffffffffff800;
|
|
||||||
/**
|
|
||||||
* The int value consisting just of a 1 in bit #32 (that is, one more
|
|
||||||
* than the maximum 32-bit unsigned value).
|
|
||||||
*/
|
|
||||||
|
|
||||||
var BIT_32 = 0x100000000;
|
|
||||||
/**
|
|
||||||
* The int value consisting just of a 1 in bit #64 (that is, one more
|
|
||||||
* than the maximum 64-bit unsigned value).
|
|
||||||
*/
|
|
||||||
|
|
||||||
var BIT_64 = 0x10000000000000000;
|
|
||||||
/*
|
|
||||||
* Helper functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Masks off all but the lowest bit set of the given number.
|
|
||||||
*/
|
|
||||||
|
|
||||||
function lowestBit(num) {
|
|
||||||
return num & -num;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Gets whether trying to add the second number to the first is lossy
|
|
||||||
* (inexact). The first number is meant to be an accumulated result.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function isLossyToAdd(accum, num) {
|
|
||||||
if (num === 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
var lowBit = lowestBit(num);
|
|
||||||
var added = accum + lowBit;
|
|
||||||
|
|
||||||
if (added === accum) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (added - lowBit !== accum) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Exported functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allocates a buffer of the given length, which is initialized
|
|
||||||
* with all zeroes. This returns a buffer from the pool if it is
|
|
||||||
* available, or a freshly-allocated buffer if not.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function alloc(length) {
|
|
||||||
var result = bufPool[length];
|
|
||||||
|
|
||||||
if (result) {
|
|
||||||
bufPool[length] = undefined;
|
|
||||||
} else {
|
|
||||||
result = new Buffer(length);
|
|
||||||
}
|
|
||||||
|
|
||||||
result.fill(0);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Releases a buffer back to the pool.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function free(buffer) {
|
|
||||||
var length = buffer.length;
|
|
||||||
|
|
||||||
if (length < TEMP_BUF_MAXIMUM_LENGTH) {
|
|
||||||
bufPool[length] = buffer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Resizes a buffer, returning a new buffer. Returns the argument if
|
|
||||||
* the length wouldn't actually change. This function is only safe to
|
|
||||||
* use if the given buffer was allocated within this module (since
|
|
||||||
* otherwise the buffer might possibly be shared externally).
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function resize(buffer, length) {
|
|
||||||
if (length === buffer.length) {
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
var newBuf = alloc(length);
|
|
||||||
buffer.copy(newBuf);
|
|
||||||
free(buffer);
|
|
||||||
return newBuf;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Reads an arbitrary signed int from a buffer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function readInt(buffer) {
|
|
||||||
var length = buffer.length;
|
|
||||||
var positive = buffer[length - 1] < 0x80;
|
|
||||||
var result = positive ? 0 : -1;
|
|
||||||
var lossy = false; // Note: We can't use bit manipulation here, since that stops
|
|
||||||
// working if the result won't fit in a 32-bit int.
|
|
||||||
|
|
||||||
if (length < 7) {
|
|
||||||
// Common case which can't possibly be lossy (because the result has
|
|
||||||
// no more than 48 bits, and loss only happens with 54 or more).
|
|
||||||
for (var i = length - 1; i >= 0; i--) {
|
|
||||||
result = result * 0x100 + buffer[i];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (var _i = length - 1; _i >= 0; _i--) {
|
|
||||||
var one = buffer[_i];
|
|
||||||
result *= 0x100;
|
|
||||||
|
|
||||||
if (isLossyToAdd(result, one)) {
|
|
||||||
lossy = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
result += one;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
value: result,
|
|
||||||
lossy: lossy
|
|
||||||
};
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Reads an arbitrary unsigned int from a buffer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function readUInt(buffer) {
|
|
||||||
var length = buffer.length;
|
|
||||||
var result = 0;
|
|
||||||
var lossy = false; // Note: See above in re bit manipulation.
|
|
||||||
|
|
||||||
if (length < 7) {
|
|
||||||
// Common case which can't possibly be lossy (see above).
|
|
||||||
for (var i = length - 1; i >= 0; i--) {
|
|
||||||
result = result * 0x100 + buffer[i];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (var _i2 = length - 1; _i2 >= 0; _i2--) {
|
|
||||||
var one = buffer[_i2];
|
|
||||||
result *= 0x100;
|
|
||||||
|
|
||||||
if (isLossyToAdd(result, one)) {
|
|
||||||
lossy = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
result += one;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
value: result,
|
|
||||||
lossy: lossy
|
|
||||||
};
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Writes a little-endian 64-bit signed int into a buffer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function writeInt64(value, buffer) {
|
|
||||||
if (value < MIN_EXACT_INT64 || value > MAX_EXACT_INT64) {
|
|
||||||
throw new Error("Value out of range.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value < 0) {
|
|
||||||
value += BIT_64;
|
|
||||||
}
|
|
||||||
|
|
||||||
writeUInt64(value, buffer);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Writes a little-endian 64-bit unsigned int into a buffer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function writeUInt64(value, buffer) {
|
|
||||||
if (value < 0 || value > MAX_EXACT_UINT64) {
|
|
||||||
throw new Error("Value out of range.");
|
|
||||||
}
|
|
||||||
|
|
||||||
var lowWord = value % BIT_32;
|
|
||||||
var highWord = Math.floor(value / BIT_32);
|
|
||||||
buffer.writeUInt32LE(lowWord, 0);
|
|
||||||
buffer.writeUInt32LE(highWord, 4);
|
|
||||||
}
|
|
||||||
59
node_modules/@webassemblyjs/leb128/lib/index.js
generated
vendored
59
node_modules/@webassemblyjs/leb128/lib/index.js
generated
vendored
@@ -1,59 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
exports.decodeInt64 = decodeInt64;
|
|
||||||
exports.decodeUInt64 = decodeUInt64;
|
|
||||||
exports.decodeInt32 = decodeInt32;
|
|
||||||
exports.decodeUInt32 = decodeUInt32;
|
|
||||||
exports.encodeU32 = encodeU32;
|
|
||||||
exports.encodeI32 = encodeI32;
|
|
||||||
exports.encodeI64 = encodeI64;
|
|
||||||
exports.MAX_NUMBER_OF_BYTE_U64 = exports.MAX_NUMBER_OF_BYTE_U32 = void 0;
|
|
||||||
|
|
||||||
var _leb = _interopRequireDefault(require("./leb"));
|
|
||||||
|
|
||||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* According to https://webassembly.github.io/spec/core/binary/values.html#binary-int
|
|
||||||
* max = ceil(32/7)
|
|
||||||
*/
|
|
||||||
var MAX_NUMBER_OF_BYTE_U32 = 5;
|
|
||||||
/**
|
|
||||||
* According to https://webassembly.github.io/spec/core/binary/values.html#binary-int
|
|
||||||
* max = ceil(64/7)
|
|
||||||
*/
|
|
||||||
|
|
||||||
exports.MAX_NUMBER_OF_BYTE_U32 = MAX_NUMBER_OF_BYTE_U32;
|
|
||||||
var MAX_NUMBER_OF_BYTE_U64 = 10;
|
|
||||||
exports.MAX_NUMBER_OF_BYTE_U64 = MAX_NUMBER_OF_BYTE_U64;
|
|
||||||
|
|
||||||
function decodeInt64(encodedBuffer, index) {
|
|
||||||
return _leb.default.decodeInt64(encodedBuffer, index);
|
|
||||||
}
|
|
||||||
|
|
||||||
function decodeUInt64(encodedBuffer, index) {
|
|
||||||
return _leb.default.decodeUInt64(encodedBuffer, index);
|
|
||||||
}
|
|
||||||
|
|
||||||
function decodeInt32(encodedBuffer, index) {
|
|
||||||
return _leb.default.decodeInt32(encodedBuffer, index);
|
|
||||||
}
|
|
||||||
|
|
||||||
function decodeUInt32(encodedBuffer, index) {
|
|
||||||
return _leb.default.decodeUInt32(encodedBuffer, index);
|
|
||||||
}
|
|
||||||
|
|
||||||
function encodeU32(v) {
|
|
||||||
return _leb.default.encodeUInt32(v);
|
|
||||||
}
|
|
||||||
|
|
||||||
function encodeI32(v) {
|
|
||||||
return _leb.default.encodeInt32(v);
|
|
||||||
}
|
|
||||||
|
|
||||||
function encodeI64(v) {
|
|
||||||
return _leb.default.encodeInt64(v);
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user