@thi.ng/wasm-api 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -1
- package/README.md +132 -5
- package/api.d.ts +10 -10
- package/bridge.d.ts +15 -15
- package/bridge.js +20 -19
- package/dev/custom.zig +11 -0
- package/dev/hello.zig +2 -1
- package/dev/zig-cache/o/9e1187e9310422c9c2330ebceeaecce7/builtin.zig +39 -0
- package/object-index.d.ts +66 -11
- package/object-index.js +60 -17
- package/package.json +5 -2
- package/zig/core.zig +21 -21
- package/doc/assets/main.js +0 -52
- package/doc/assets/search.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
- **Last updated**: 2022-08-
|
|
3
|
+
- **Last updated**: 2022-08-01T22:09:32Z
|
|
4
4
|
- **Generator**: [thi.ng/monopub](https://thi.ng/monopub)
|
|
5
5
|
|
|
6
6
|
All notable changes to this project will be documented in this file.
|
|
@@ -9,6 +9,17 @@ See [Conventional Commits](https://conventionalcommits.org/) for commit guidelin
|
|
|
9
9
|
**Note:** Unlisted _patch_ versions only involve non-code or otherwise excluded changes
|
|
10
10
|
and/or version bumps of transitive dependencies.
|
|
11
11
|
|
|
12
|
+
## [0.2.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/wasm-api@0.2.0) (2022-08-01)
|
|
13
|
+
|
|
14
|
+
#### 🚀 Features
|
|
15
|
+
|
|
16
|
+
- major update ObjectIndex ([4547f1f](https://github.com/thi-ng/umbrella/commit/4547f1f))
|
|
17
|
+
- add ObjectIndexOpts ctor options
|
|
18
|
+
- add IDGen for internal ID generation/recycling
|
|
19
|
+
- add iterators
|
|
20
|
+
- rename existing methods
|
|
21
|
+
- fix zig slice pointer handling, use named child modules ([bd7905a](https://github.com/thi-ng/umbrella/commit/bd7905a))
|
|
22
|
+
|
|
12
23
|
## [0.1.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/wasm-api@0.1.0) (2022-08-01)
|
|
13
24
|
|
|
14
25
|
#### 🚀 Features
|
package/README.md
CHANGED
|
@@ -10,6 +10,8 @@ This project is part of the
|
|
|
10
10
|
[@thi.ng/umbrella](https://github.com/thi-ng/umbrella/) monorepo.
|
|
11
11
|
|
|
12
12
|
- [About](#about)
|
|
13
|
+
- [Custom API modules](#custom-api-modules)
|
|
14
|
+
- [Object indices & handles](#object-indices--handles)
|
|
13
15
|
- [Status](#status)
|
|
14
16
|
- [Installation](#installation)
|
|
15
17
|
- [Dependencies](#dependencies)
|
|
@@ -31,6 +33,124 @@ manipulation, WebGL, WebGPU, WebAudio etc.
|
|
|
31
33
|
In general, all languages with a WebAssembly target are supported, however
|
|
32
34
|
currently only bindings for [Zig](https://ziglang.org) are included.
|
|
33
35
|
|
|
36
|
+
### Custom API modules
|
|
37
|
+
|
|
38
|
+
On the JS side, custom API modules can be easily integrated via the [`IWasmAPI`
|
|
39
|
+
interface](https://docs.thi.ng/umbrella/wasm-api/interfaces/IWasmAPI.html). The
|
|
40
|
+
following example provides a brief overview:
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
import { IWasmAPI, WasmBridge } from "@thi.ng/wasm-api";
|
|
44
|
+
|
|
45
|
+
export class CustomAPI implements IWasmAPI {
|
|
46
|
+
parent!: WasmBridge;
|
|
47
|
+
|
|
48
|
+
async init(parent: WasmBridge) {
|
|
49
|
+
this.parent = parent;
|
|
50
|
+
this.parent.logger.debug("initializing custom API");
|
|
51
|
+
|
|
52
|
+
// any other tasks you might need to do...
|
|
53
|
+
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Returns object of functions to import as externals into
|
|
59
|
+
* the WASM module. These imports are merged with the bridge's
|
|
60
|
+
* core API and hence should use naming prefixes...
|
|
61
|
+
*/
|
|
62
|
+
getImports(): WebAssembly.Imports {
|
|
63
|
+
return {
|
|
64
|
+
/**
|
|
65
|
+
* Writes 2 random float32 numbers to given address
|
|
66
|
+
*/
|
|
67
|
+
custom_randomVec2: (addr: number) => {
|
|
68
|
+
this.parent.f32.set(
|
|
69
|
+
[Math.random(), Math.random()],
|
|
70
|
+
addr >> 2
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Now we can supply this custom API when creating the main WASM bridge:
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
export const bridge = new WasmBridge({ custom: new CustomAPI() });
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
In Zig (or any other language of your choice) we can then utilize this custom
|
|
85
|
+
API like so (also see example further below in this readme):
|
|
86
|
+
|
|
87
|
+
```zig
|
|
88
|
+
const js = @import("wasmapi");
|
|
89
|
+
|
|
90
|
+
/// JS external to fill vec2 w/ random values
|
|
91
|
+
extern fn custom_randomVec2(addr: usize) void;
|
|
92
|
+
|
|
93
|
+
export fn test_randomVec2() void {
|
|
94
|
+
var foo = [2]f32{ 0, 0 };
|
|
95
|
+
|
|
96
|
+
// print original
|
|
97
|
+
js.printF32Array(foo[0..]);
|
|
98
|
+
|
|
99
|
+
// populate foo with random numbers
|
|
100
|
+
custom_randomVec2(@ptrToInt(&foo));
|
|
101
|
+
|
|
102
|
+
// print result
|
|
103
|
+
js.printF32Array(foo[0..]);
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Object indices & handles
|
|
108
|
+
|
|
109
|
+
Since only numeric values can be exchanged between the WASM module and the JS
|
|
110
|
+
host, any JS native objects the WASM side might want to be working with must be
|
|
111
|
+
managed in JS. For this purpose the [`ObjectIndex`
|
|
112
|
+
class](https://docs.thi.ng/umbrella/wasm-api/classes/ObjectIndex.html) can be
|
|
113
|
+
used by API modules to handle ID generation (incl. recycling, using
|
|
114
|
+
[@thi.ng/idgen](https://github.com/thi-ng/umbrella/tree/develop/packages/idgen))
|
|
115
|
+
& indexing of different types of JS objects/values. Only the numeric IDs will
|
|
116
|
+
then need to be exchanged with the WASM module...
|
|
117
|
+
|
|
118
|
+
```ts
|
|
119
|
+
import { ObjectIndex } from "@thi.ng/wasm-api";
|
|
120
|
+
|
|
121
|
+
const canvases = new ObjectIndex<HTMLCanvasElement>({ name: "canvas" });
|
|
122
|
+
|
|
123
|
+
// index item and assign new ID
|
|
124
|
+
canvases.add(document.createElement("canvas"));
|
|
125
|
+
// 0
|
|
126
|
+
|
|
127
|
+
// look up item by ID
|
|
128
|
+
canvases.get(0);
|
|
129
|
+
// <canvas ...>
|
|
130
|
+
|
|
131
|
+
// work w/ retrieved item
|
|
132
|
+
canvases.get(0).id = "foo";
|
|
133
|
+
|
|
134
|
+
// check if item for ID exists (O(1))
|
|
135
|
+
canvases.has(1)
|
|
136
|
+
// false
|
|
137
|
+
|
|
138
|
+
// by default invalid IDs throw error
|
|
139
|
+
canvases.get(1)
|
|
140
|
+
// Uncaught Error: Assertion failed: missing canvas for ID: 2
|
|
141
|
+
|
|
142
|
+
// error can be disabled via 2nd arg
|
|
143
|
+
canvases.get(1, false)
|
|
144
|
+
// undefined
|
|
145
|
+
|
|
146
|
+
// find ID using custom predicate (same failure behavior as .get())
|
|
147
|
+
canvases.find((x) => x.id == "bar")
|
|
148
|
+
// Uncaught Error: Assertion failed: given predicate matched no canvas
|
|
149
|
+
|
|
150
|
+
canvases.delete(0);
|
|
151
|
+
// true
|
|
152
|
+
```
|
|
153
|
+
|
|
34
154
|
### Status
|
|
35
155
|
|
|
36
156
|
**ALPHA** - bleeding edge / work-in-progress
|
|
@@ -60,13 +180,14 @@ node --experimental-repl-await
|
|
|
60
180
|
> const wasmApi = await import("@thi.ng/wasm-api");
|
|
61
181
|
```
|
|
62
182
|
|
|
63
|
-
Package sizes (gzipped, pre-treeshake): ESM: 1.
|
|
183
|
+
Package sizes (gzipped, pre-treeshake): ESM: 1.21 KB
|
|
64
184
|
|
|
65
185
|
## Dependencies
|
|
66
186
|
|
|
67
187
|
- [@thi.ng/api](https://github.com/thi-ng/umbrella/tree/develop/packages/api)
|
|
68
188
|
- [@thi.ng/errors](https://github.com/thi-ng/umbrella/tree/develop/packages/errors)
|
|
69
189
|
- [@thi.ng/hex](https://github.com/thi-ng/umbrella/tree/develop/packages/hex)
|
|
190
|
+
- [@thi.ng/idgen](https://github.com/thi-ng/umbrella/tree/develop/packages/idgen)
|
|
70
191
|
- [@thi.ng/logger](https://github.com/thi-ng/umbrella/tree/develop/packages/logger)
|
|
71
192
|
|
|
72
193
|
## API
|
|
@@ -84,18 +205,23 @@ interface App {
|
|
|
84
205
|
}
|
|
85
206
|
|
|
86
207
|
(async () => {
|
|
208
|
+
// new API bridge with defaults
|
|
209
|
+
// (i.e. no child API modules and using console logger)
|
|
87
210
|
const bridge = new WasmBridge();
|
|
211
|
+
|
|
88
212
|
// instantiate WASM module using imports provided by the bridge
|
|
89
213
|
const wasm = await WebAssembly.instantiate(
|
|
90
214
|
readFileSync("hello.wasm"),
|
|
91
215
|
bridge.getImports()
|
|
92
216
|
);
|
|
217
|
+
|
|
93
218
|
// cast WASM exports to our defined interface
|
|
94
219
|
const app: App = <any>wasm.instance.exports;
|
|
220
|
+
|
|
95
221
|
// init bindings & child APIs (if any)
|
|
96
222
|
await bridge.init(app.memory);
|
|
97
223
|
|
|
98
|
-
// call WASM function
|
|
224
|
+
// call a WASM function
|
|
99
225
|
app.start();
|
|
100
226
|
})();
|
|
101
227
|
```
|
|
@@ -112,7 +238,8 @@ export fn start() void {
|
|
|
112
238
|
}
|
|
113
239
|
```
|
|
114
240
|
|
|
115
|
-
The WASM binary can be built via
|
|
241
|
+
The WASM binary can be built via (for more complex scenarios add the supplied
|
|
242
|
+
.zig file(s) to your `build.zig` and/or source folder):
|
|
116
243
|
|
|
117
244
|
```bash
|
|
118
245
|
# compile WASM binary
|
|
@@ -135,12 +262,12 @@ The resulting WASM:
|
|
|
135
262
|
(import "env" "_printStr" (func $fimport$0 (param i32 i32)))
|
|
136
263
|
(global $global$0 (mut i32) (i32.const 65536))
|
|
137
264
|
(memory $0 2)
|
|
138
|
-
(data (i32.const 65536) "hello world!\00
|
|
265
|
+
(data (i32.const 65536) "hello world!\00")
|
|
139
266
|
(export "memory" (memory $0))
|
|
140
267
|
(export "start" (func $0))
|
|
141
268
|
(func $0
|
|
142
269
|
(call $fimport$0
|
|
143
|
-
(i32.const
|
|
270
|
+
(i32.const 65536)
|
|
144
271
|
(i32.const 12)
|
|
145
272
|
)
|
|
146
273
|
)
|
package/api.d.ts
CHANGED
|
@@ -32,15 +32,15 @@ export interface CoreAPI {
|
|
|
32
32
|
printU32Hex: Fn<number, void>;
|
|
33
33
|
printF32: Fn<number, void>;
|
|
34
34
|
printF64: Fn<number, void>;
|
|
35
|
-
_printI8Array: (
|
|
36
|
-
_printU8Array: (
|
|
37
|
-
_printI16Array: (
|
|
38
|
-
_printU16Array: (
|
|
39
|
-
_printI32Array: (
|
|
40
|
-
_printU32Array: (
|
|
41
|
-
_printF32Array: (
|
|
42
|
-
_printF64Array: (
|
|
43
|
-
_printStr0: (
|
|
44
|
-
_printStr: (
|
|
35
|
+
_printI8Array: (addr: number, len: number) => void;
|
|
36
|
+
_printU8Array: (addr: number, len: number) => void;
|
|
37
|
+
_printI16Array: (addr: number, len: number) => void;
|
|
38
|
+
_printU16Array: (addr: number, len: number) => void;
|
|
39
|
+
_printI32Array: (addr: number, len: number) => void;
|
|
40
|
+
_printU32Array: (addr: number, len: number) => void;
|
|
41
|
+
_printF32Array: (addr: number, len: number) => void;
|
|
42
|
+
_printF64Array: (addr: number, len: number) => void;
|
|
43
|
+
_printStr0: (addr: number) => void;
|
|
44
|
+
_printStr: (addr: number, len: number) => void;
|
|
45
45
|
}
|
|
46
46
|
//# sourceMappingURL=api.d.ts.map
|
package/bridge.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ILogger } from "@thi.ng/logger";
|
|
2
2
|
import type { CoreAPI, IWasmAPI } from "./api.js";
|
|
3
3
|
export declare class WasmBridge {
|
|
4
|
+
modules: Record<string, IWasmAPI>;
|
|
4
5
|
logger: ILogger;
|
|
5
|
-
protected children: IWasmAPI[];
|
|
6
6
|
i8: Int8Array;
|
|
7
7
|
u8: Uint8Array;
|
|
8
8
|
i16: Int16Array;
|
|
@@ -14,7 +14,7 @@ export declare class WasmBridge {
|
|
|
14
14
|
utf8Decoder: TextDecoder;
|
|
15
15
|
utf8Encoder: TextEncoder;
|
|
16
16
|
core: CoreAPI;
|
|
17
|
-
constructor(
|
|
17
|
+
constructor(modules?: Record<string, IWasmAPI>, logger?: ILogger);
|
|
18
18
|
init(mem: WebAssembly.Memory): Promise<boolean>;
|
|
19
19
|
/**
|
|
20
20
|
* Returns object of all WASM imports declared in the bridge core API and
|
|
@@ -33,16 +33,16 @@ export declare class WasmBridge {
|
|
|
33
33
|
printU32Hex: import("@thi.ng/api").Fn<number, void>;
|
|
34
34
|
printF32: import("@thi.ng/api").Fn<number, void>;
|
|
35
35
|
printF64: import("@thi.ng/api").Fn<number, void>;
|
|
36
|
-
_printI8Array: (
|
|
37
|
-
_printU8Array: (
|
|
38
|
-
_printI16Array: (
|
|
39
|
-
_printU16Array: (
|
|
40
|
-
_printI32Array: (
|
|
41
|
-
_printU32Array: (
|
|
42
|
-
_printF32Array: (
|
|
43
|
-
_printF64Array: (
|
|
44
|
-
_printStr0: (
|
|
45
|
-
_printStr: (
|
|
36
|
+
_printI8Array: (addr: number, len: number) => void;
|
|
37
|
+
_printU8Array: (addr: number, len: number) => void;
|
|
38
|
+
_printI16Array: (addr: number, len: number) => void;
|
|
39
|
+
_printU16Array: (addr: number, len: number) => void;
|
|
40
|
+
_printI32Array: (addr: number, len: number) => void;
|
|
41
|
+
_printU32Array: (addr: number, len: number) => void;
|
|
42
|
+
_printF32Array: (addr: number, len: number) => void;
|
|
43
|
+
_printF64Array: (addr: number, len: number) => void;
|
|
44
|
+
_printStr0: (addr: number) => void;
|
|
45
|
+
_printStr: (addr: number, len: number) => void;
|
|
46
46
|
};
|
|
47
47
|
};
|
|
48
48
|
getI8Array(ptr: number, len: number): Int8Array;
|
|
@@ -61,8 +61,8 @@ export declare class WasmBridge {
|
|
|
61
61
|
derefU32(ptr: number): number;
|
|
62
62
|
derefF32(ptr: number): number;
|
|
63
63
|
derefF64(ptr: number): number;
|
|
64
|
-
getString(
|
|
65
|
-
getElementById(
|
|
66
|
-
setString(str: string,
|
|
64
|
+
getString(addr: number, len?: number): string;
|
|
65
|
+
getElementById(addr: number, len?: number): HTMLElement | null;
|
|
66
|
+
setString(str: string, addr: number, maxBytes: number, terminate?: boolean): number;
|
|
67
67
|
}
|
|
68
68
|
//# sourceMappingURL=bridge.d.ts.map
|
package/bridge.js
CHANGED
|
@@ -2,13 +2,13 @@ import { assert } from "@thi.ng/errors/assert";
|
|
|
2
2
|
import { U16, U32, U8 } from "@thi.ng/hex";
|
|
3
3
|
import { ConsoleLogger } from "@thi.ng/logger/console";
|
|
4
4
|
export class WasmBridge {
|
|
5
|
-
constructor(logger = new ConsoleLogger("wasm")
|
|
5
|
+
constructor(modules = {}, logger = new ConsoleLogger("wasm")) {
|
|
6
|
+
this.modules = modules;
|
|
6
7
|
this.logger = logger;
|
|
7
|
-
this.children = children;
|
|
8
8
|
this.utf8Decoder = new TextDecoder();
|
|
9
9
|
this.utf8Encoder = new TextEncoder();
|
|
10
10
|
const logN = (x) => this.logger.debug(x);
|
|
11
|
-
const logA = (method) => (
|
|
11
|
+
const logA = (method) => (addr, len) => this.logger.debug(method(addr, len).join(", "));
|
|
12
12
|
this.core = {
|
|
13
13
|
printI8: logN,
|
|
14
14
|
printU8: logN,
|
|
@@ -29,8 +29,8 @@ export class WasmBridge {
|
|
|
29
29
|
_printU32Array: logA(this.getU32Array.bind(this)),
|
|
30
30
|
_printF32Array: logA(this.getF32Array.bind(this)),
|
|
31
31
|
_printF64Array: logA(this.getF64Array.bind(this)),
|
|
32
|
-
_printStr0: (
|
|
33
|
-
_printStr: (
|
|
32
|
+
_printStr0: (addr) => this.logger.debug(this.getString(addr, 0)),
|
|
33
|
+
_printStr: (addr, len) => this.logger.debug(this.getString(addr, len)),
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
36
|
async init(mem) {
|
|
@@ -42,8 +42,9 @@ export class WasmBridge {
|
|
|
42
42
|
this.u32 = new Uint32Array(mem.buffer);
|
|
43
43
|
this.f32 = new Float32Array(mem.buffer);
|
|
44
44
|
this.f64 = new Float64Array(mem.buffer);
|
|
45
|
-
for (let
|
|
46
|
-
|
|
45
|
+
for (let id in this.modules) {
|
|
46
|
+
this.logger.debug(`initializing API module: ${id}`);
|
|
47
|
+
const status = await this.modules[id].init(this);
|
|
47
48
|
if (!status)
|
|
48
49
|
return false;
|
|
49
50
|
}
|
|
@@ -55,8 +56,9 @@ export class WasmBridge {
|
|
|
55
56
|
*/
|
|
56
57
|
getImports() {
|
|
57
58
|
const env = { ...this.core };
|
|
58
|
-
for (let
|
|
59
|
-
Object.assign(env,
|
|
59
|
+
for (let id in this.modules) {
|
|
60
|
+
Object.assign(env, this.modules[id].getImports());
|
|
61
|
+
}
|
|
60
62
|
return { env };
|
|
61
63
|
}
|
|
62
64
|
getI8Array(ptr, len) {
|
|
@@ -113,22 +115,21 @@ export class WasmBridge {
|
|
|
113
115
|
derefF64(ptr) {
|
|
114
116
|
return this.f64[ptr >> 3];
|
|
115
117
|
}
|
|
116
|
-
getString(
|
|
117
|
-
|
|
118
|
-
return this.utf8Decoder.decode(this.u8.subarray(start, len > 0 ? start + len : this.u8.indexOf(0, start)));
|
|
118
|
+
getString(addr, len = 0) {
|
|
119
|
+
return this.utf8Decoder.decode(this.u8.subarray(addr, len > 0 ? addr + len : this.u8.indexOf(0, addr)));
|
|
119
120
|
}
|
|
120
|
-
getElementById(
|
|
121
|
-
const id = this.getString(
|
|
121
|
+
getElementById(addr, len = 0) {
|
|
122
|
+
const id = this.getString(addr, len);
|
|
122
123
|
const el = document.getElementById(id);
|
|
123
124
|
assert(!!el, `missing DOM element #${id}`);
|
|
124
125
|
return el;
|
|
125
126
|
}
|
|
126
|
-
setString(str,
|
|
127
|
-
maxBytes = Math.min(maxBytes, this.u8.length -
|
|
128
|
-
const len = this.utf8Encoder.encodeInto(str, this.u8.subarray(
|
|
129
|
-
assert(len != null && len < maxBytes + (terminate ? 0 : 1), `error writing string to 0x${U32(
|
|
127
|
+
setString(str, addr, maxBytes, terminate = true) {
|
|
128
|
+
maxBytes = Math.min(maxBytes, this.u8.length - addr);
|
|
129
|
+
const len = this.utf8Encoder.encodeInto(str, this.u8.subarray(addr, addr + maxBytes)).written;
|
|
130
|
+
assert(len != null && len < maxBytes + (terminate ? 0 : 1), `error writing string to 0x${U32(addr)}`);
|
|
130
131
|
if (terminate) {
|
|
131
|
-
this.u8[
|
|
132
|
+
this.u8[addr + len] = 0;
|
|
132
133
|
return len + 1;
|
|
133
134
|
}
|
|
134
135
|
return len;
|
package/dev/custom.zig
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const js = @import("wasmapi");
|
|
2
|
+
|
|
3
|
+
/// Fill vec2 with random values
|
|
4
|
+
extern fn custom_randomVec2(addr: usize) void;
|
|
5
|
+
|
|
6
|
+
export fn test_random_vec2() void {
|
|
7
|
+
var foo = [2]f32{ 0, 0 };
|
|
8
|
+
js.printF32Array(foo[0..]);
|
|
9
|
+
custom_randomVec2(@ptrToInt(&foo));
|
|
10
|
+
js.printF32Array(foo[0..]);
|
|
11
|
+
}
|
package/dev/hello.zig
CHANGED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const std = @import("std");
|
|
2
|
+
/// Zig version. When writing code that supports multiple versions of Zig, prefer
|
|
3
|
+
/// feature detection (i.e. with `@hasDecl` or `@hasField`) over version checks.
|
|
4
|
+
pub const zig_version = std.SemanticVersion.parse("0.10.0-dev.3034+6fab6c3e4") catch unreachable;
|
|
5
|
+
pub const zig_backend = std.builtin.CompilerBackend.stage1;
|
|
6
|
+
/// Temporary until self-hosted supports the `cpu.arch` value.
|
|
7
|
+
pub const stage2_arch: std.Target.Cpu.Arch = .wasm32;
|
|
8
|
+
|
|
9
|
+
pub const output_mode = std.builtin.OutputMode.Lib;
|
|
10
|
+
pub const link_mode = std.builtin.LinkMode.Dynamic;
|
|
11
|
+
pub const is_test = false;
|
|
12
|
+
pub const single_threaded = true;
|
|
13
|
+
pub const abi = std.Target.Abi.musl;
|
|
14
|
+
pub const cpu: std.Target.Cpu = .{
|
|
15
|
+
.arch = .wasm32,
|
|
16
|
+
.model = &std.Target.wasm.cpu.generic,
|
|
17
|
+
.features = std.Target.wasm.featureSet(&[_]std.Target.wasm.Feature{
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
pub const os = std.Target.Os{
|
|
21
|
+
.tag = .freestanding,
|
|
22
|
+
.version_range = .{ .none = {} },
|
|
23
|
+
};
|
|
24
|
+
pub const target = std.Target{
|
|
25
|
+
.cpu = cpu,
|
|
26
|
+
.os = os,
|
|
27
|
+
.abi = abi,
|
|
28
|
+
};
|
|
29
|
+
pub const object_format = std.Target.ObjectFormat.wasm;
|
|
30
|
+
pub const mode = std.builtin.Mode.ReleaseSmall;
|
|
31
|
+
pub const link_libc = false;
|
|
32
|
+
pub const link_libcpp = false;
|
|
33
|
+
pub const have_error_return_tracing = false;
|
|
34
|
+
pub const valgrind_support = false;
|
|
35
|
+
pub const sanitize_thread = false;
|
|
36
|
+
pub const position_independent_code = true;
|
|
37
|
+
pub const position_independent_executable = false;
|
|
38
|
+
pub const strip_debug_info = true;
|
|
39
|
+
pub const code_model = std.builtin.CodeModel.default;
|
package/object-index.d.ts
CHANGED
|
@@ -1,15 +1,70 @@
|
|
|
1
|
-
import type { Predicate } from "@thi.ng/api";
|
|
1
|
+
import type { Predicate, Range1_32 } from "@thi.ng/api";
|
|
2
|
+
import { IDGen } from "@thi.ng/idgen";
|
|
2
3
|
import type { ILogger } from "@thi.ng/logger";
|
|
3
|
-
export
|
|
4
|
+
export interface ObjectIndexOpts {
|
|
5
|
+
/**
|
|
6
|
+
* Human-readable name for index (used for logging, if any)
|
|
7
|
+
*/
|
|
4
8
|
name: string;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Optional logger instance
|
|
11
|
+
*/
|
|
12
|
+
logger?: ILogger;
|
|
13
|
+
/**
|
|
14
|
+
* Number of bits for IDs, [1..32] range.
|
|
15
|
+
*
|
|
16
|
+
* @defaultValue 32
|
|
17
|
+
*/
|
|
18
|
+
bits?: Range1_32;
|
|
19
|
+
}
|
|
20
|
+
export declare class ObjectIndex<T> {
|
|
21
|
+
readonly name: string;
|
|
22
|
+
logger?: ILogger;
|
|
23
|
+
protected idgen: IDGen;
|
|
24
|
+
protected items: T[];
|
|
25
|
+
constructor(opts: ObjectIndexOpts);
|
|
26
|
+
keys(): Generator<number, void, unknown>;
|
|
27
|
+
values(): Generator<T, void, unknown>;
|
|
28
|
+
/**
|
|
29
|
+
* Indexes given `item` and assigns it to the next available ID (which might
|
|
30
|
+
* be a previously freed ID) and returns it.
|
|
31
|
+
*
|
|
32
|
+
* @param item
|
|
33
|
+
*/
|
|
34
|
+
add(item: T): number;
|
|
35
|
+
/**
|
|
36
|
+
* Returns true if the given `id` is valid/active.
|
|
37
|
+
*
|
|
38
|
+
* @param id
|
|
39
|
+
*/
|
|
40
|
+
has(id: number): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* First checks if given `id` is valid and if so frees it (for recycling)
|
|
43
|
+
* and deletes its corresponding item. If `ensure` is true (default), throws
|
|
44
|
+
* an error if the ID is invalid (otherwise returns false for invalid IDs).
|
|
45
|
+
*
|
|
46
|
+
* @param id
|
|
47
|
+
* @param ensure
|
|
48
|
+
*/
|
|
49
|
+
delete(id: number, ensure?: boolean): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* First checks if given `id` is valid and if so returns corresponding item.
|
|
52
|
+
* If `ensure` is true (default), throws an error if the ID is invalid
|
|
53
|
+
* (otherwise returns undefined for invalid IDs)
|
|
54
|
+
*
|
|
55
|
+
* @param id
|
|
56
|
+
*/
|
|
57
|
+
get(id: number): T;
|
|
58
|
+
get(id: number, ensure: true): T;
|
|
59
|
+
get(id: number, ensure: false): T | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Applies given predicate to all active items and returns ID of first
|
|
62
|
+
* matching. If `ensure` is true (default), throws an error if the `pred`
|
|
63
|
+
* didn't match anything (otherwise returns undefined).
|
|
64
|
+
*
|
|
65
|
+
* @param pred
|
|
66
|
+
* @param ensure
|
|
67
|
+
*/
|
|
68
|
+
find(pred: Predicate<T>, ensure?: boolean): number | undefined;
|
|
14
69
|
}
|
|
15
70
|
//# sourceMappingURL=object-index.d.ts.map
|
package/object-index.js
CHANGED
|
@@ -1,33 +1,76 @@
|
|
|
1
1
|
import { assert } from "@thi.ng/errors/assert";
|
|
2
|
+
import { IDGen } from "@thi.ng/idgen";
|
|
2
3
|
export class ObjectIndex {
|
|
3
|
-
constructor(
|
|
4
|
-
this.
|
|
5
|
-
this.
|
|
6
|
-
this.logger = logger;
|
|
4
|
+
constructor(opts) {
|
|
5
|
+
this.items = [];
|
|
6
|
+
this.name = opts.name;
|
|
7
|
+
this.logger = opts.logger;
|
|
8
|
+
this.idgen = new IDGen(opts.bits || 32, 0);
|
|
7
9
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
keys() {
|
|
11
|
+
return this.idgen[Symbol.iterator]();
|
|
12
|
+
}
|
|
13
|
+
*values() {
|
|
14
|
+
for (let id of this.idgen) {
|
|
15
|
+
yield this.items[id];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Indexes given `item` and assigns it to the next available ID (which might
|
|
20
|
+
* be a previously freed ID) and returns it.
|
|
21
|
+
*
|
|
22
|
+
* @param item
|
|
23
|
+
*/
|
|
24
|
+
add(item) {
|
|
25
|
+
const id = this.idgen.next();
|
|
10
26
|
this.logger && this.logger.debug(`adding ${this.name} ID: ${id}`);
|
|
11
|
-
this.items[id] =
|
|
27
|
+
this.items[id] = item;
|
|
12
28
|
return id;
|
|
13
29
|
}
|
|
14
|
-
|
|
15
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Returns true if the given `id` is valid/active.
|
|
32
|
+
*
|
|
33
|
+
* @param id
|
|
34
|
+
*/
|
|
35
|
+
has(id) {
|
|
36
|
+
return this.idgen.has(id);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* First checks if given `id` is valid and if so frees it (for recycling)
|
|
40
|
+
* and deletes its corresponding item. If `ensure` is true (default), throws
|
|
41
|
+
* an error if the ID is invalid (otherwise returns false for invalid IDs).
|
|
42
|
+
*
|
|
43
|
+
* @param id
|
|
44
|
+
* @param ensure
|
|
45
|
+
*/
|
|
46
|
+
delete(id, ensure = true) {
|
|
47
|
+
if (this.idgen.has(id)) {
|
|
16
48
|
this.logger && this.logger.debug(`deleting ${this.name} ID: ${id}`);
|
|
49
|
+
this.idgen.free(id);
|
|
17
50
|
delete this.items[id];
|
|
18
51
|
return true;
|
|
19
52
|
}
|
|
53
|
+
assert(!ensure, `can't delete missing ${this.name} ID: ${id}`);
|
|
20
54
|
return false;
|
|
21
55
|
}
|
|
22
|
-
|
|
23
|
-
const obj = this.items[id];
|
|
56
|
+
get(id, ensure = true) {
|
|
24
57
|
ensure &&
|
|
25
|
-
assert(
|
|
26
|
-
return
|
|
58
|
+
assert(this.idgen.has(id), `missing ${this.name} for ID: ${id}`);
|
|
59
|
+
return this.items[id];
|
|
27
60
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Applies given predicate to all active items and returns ID of first
|
|
63
|
+
* matching. If `ensure` is true (default), throws an error if the `pred`
|
|
64
|
+
* didn't match anything (otherwise returns undefined).
|
|
65
|
+
*
|
|
66
|
+
* @param pred
|
|
67
|
+
* @param ensure
|
|
68
|
+
*/
|
|
69
|
+
find(pred, ensure = true) {
|
|
70
|
+
for (let id of this.idgen) {
|
|
71
|
+
if (pred(this.items[id]))
|
|
72
|
+
return id;
|
|
73
|
+
}
|
|
74
|
+
assert(!ensure, `given predicate matched no ${this.name}`);
|
|
32
75
|
}
|
|
33
76
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thi.ng/wasm-api",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Modular, extensible API bridge and generic glue code between JS & WebAssembly",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "./index.js",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"@thi.ng/api": "^8.3.9",
|
|
38
38
|
"@thi.ng/errors": "^2.1.9",
|
|
39
39
|
"@thi.ng/hex": "^2.1.9",
|
|
40
|
+
"@thi.ng/idgen": "^2.1.9",
|
|
40
41
|
"@thi.ng/logger": "^1.1.9"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
@@ -49,6 +50,8 @@
|
|
|
49
50
|
},
|
|
50
51
|
"keywords": [
|
|
51
52
|
"api",
|
|
53
|
+
"id",
|
|
54
|
+
"logger",
|
|
52
55
|
"memory",
|
|
53
56
|
"typescript",
|
|
54
57
|
"wasm",
|
|
@@ -89,5 +92,5 @@
|
|
|
89
92
|
"status": "alpha",
|
|
90
93
|
"year": 2022
|
|
91
94
|
},
|
|
92
|
-
"gitHead": "
|
|
95
|
+
"gitHead": "24ec2749982f4193e6bc50173a238f336854bb1c\n"
|
|
93
96
|
}
|
package/zig/core.zig
CHANGED
|
@@ -24,65 +24,65 @@ pub extern fn printF32(x: f32) void;
|
|
|
24
24
|
pub extern fn printF64(x: f64) void;
|
|
25
25
|
|
|
26
26
|
/// Prints pointer as hex number using configured JS logger
|
|
27
|
-
pub fn printPtr(
|
|
28
|
-
printU32Hex(@ptrToInt(
|
|
27
|
+
pub fn printPtr(ptr: *const anyopaque) void {
|
|
28
|
+
printU32Hex(@ptrToInt(ptr));
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
/// Prints number array using configured JS logger
|
|
32
|
-
pub extern fn _printI8Array(
|
|
32
|
+
pub extern fn _printI8Array(addr: usize, len: usize) void;
|
|
33
33
|
/// Prints number array using configured JS logger
|
|
34
|
-
pub extern fn _printU8Array(
|
|
34
|
+
pub extern fn _printU8Array(addr: usize, len: usize) void;
|
|
35
35
|
/// Prints number array using configured JS logger
|
|
36
|
-
pub extern fn _printI16Array(
|
|
36
|
+
pub extern fn _printI16Array(addr: usize, len: usize) void;
|
|
37
37
|
/// Prints number array using configured JS logger
|
|
38
|
-
pub extern fn _printU16Array(
|
|
38
|
+
pub extern fn _printU16Array(addr: usize, len: usize) void;
|
|
39
39
|
/// Prints number array using configured JS logger
|
|
40
|
-
pub extern fn _printI32Array(
|
|
40
|
+
pub extern fn _printI32Array(addr: usize, len: usize) void;
|
|
41
41
|
/// Prints number array using configured JS logger
|
|
42
|
-
pub extern fn _printU32Array(
|
|
42
|
+
pub extern fn _printU32Array(addr: usize, len: usize) void;
|
|
43
43
|
/// Prints number array using configured JS logger
|
|
44
|
-
pub extern fn _printF32Array(
|
|
44
|
+
pub extern fn _printF32Array(addr: usize, len: usize) void;
|
|
45
45
|
/// Prints number array using configured JS logger
|
|
46
|
-
pub extern fn _printF64Array(
|
|
46
|
+
pub extern fn _printF64Array(addr: usize, len: usize) void;
|
|
47
47
|
|
|
48
48
|
/// Prints number array using configured JS logger
|
|
49
49
|
pub fn printI8Array(buf: []const i8) void {
|
|
50
|
-
_printI8Array(@ptrToInt(
|
|
50
|
+
_printI8Array(@ptrToInt(buf.ptr), buf.len);
|
|
51
51
|
}
|
|
52
52
|
/// Prints number array using configured JS logger
|
|
53
53
|
pub fn printU8Array(buf: []const u8) void {
|
|
54
|
-
_printU8Array(@ptrToInt(
|
|
54
|
+
_printU8Array(@ptrToInt(buf.ptr), buf.len);
|
|
55
55
|
}
|
|
56
56
|
/// Prints number array using configured JS logger
|
|
57
57
|
pub fn printI16Array(buf: []const i16) void {
|
|
58
|
-
_printI16Array(@ptrToInt(
|
|
58
|
+
_printI16Array(@ptrToInt(buf.ptr), buf.len);
|
|
59
59
|
}
|
|
60
60
|
/// Prints number array using configured JS logger
|
|
61
61
|
pub fn printU16Array(buf: []const u16) void {
|
|
62
|
-
_printU16Array(@ptrToInt(
|
|
62
|
+
_printU16Array(@ptrToInt(buf.ptr), buf.len);
|
|
63
63
|
}
|
|
64
64
|
/// Prints number array using configured JS logger
|
|
65
65
|
pub fn printI32Array(buf: []const i32) void {
|
|
66
|
-
_printI32Array(@ptrToInt(
|
|
66
|
+
_printI32Array(@ptrToInt(buf.ptr), buf.len);
|
|
67
67
|
}
|
|
68
68
|
/// Prints number array using configured JS logger
|
|
69
69
|
pub fn printU32Array(buf: []const u32) void {
|
|
70
|
-
_printU32Array(@ptrToInt(
|
|
70
|
+
_printU32Array(@ptrToInt(buf.ptr), buf.len);
|
|
71
71
|
}
|
|
72
72
|
/// Prints number array using configured JS logger
|
|
73
73
|
pub fn printF32Array(buf: []const f32) void {
|
|
74
|
-
_printF32Array(@ptrToInt(
|
|
74
|
+
_printF32Array(@ptrToInt(buf.ptr), buf.len);
|
|
75
75
|
}
|
|
76
76
|
/// Prints number array using configured JS logger
|
|
77
77
|
pub fn printF64Array(buf: []const f64) void {
|
|
78
|
-
_printF64Array(@ptrToInt(
|
|
78
|
+
_printF64Array(@ptrToInt(buf.ptr), buf.len);
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
/// Prints a zero-terminated string using configured JS logger
|
|
82
|
-
extern fn _printStr0(
|
|
82
|
+
extern fn _printStr0(addr: usize) void;
|
|
83
83
|
/// Prints a string of given length using configured JS logger
|
|
84
|
-
extern fn _printStr(
|
|
84
|
+
extern fn _printStr(addr: usize, len: usize) void;
|
|
85
85
|
|
|
86
86
|
pub fn printStr(msg: []const u8) void {
|
|
87
|
-
_printStr(@ptrToInt(
|
|
87
|
+
_printStr(@ptrToInt(msg.ptr), msg.len);
|
|
88
88
|
}
|
package/doc/assets/main.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
(()=>{var Ce=Object.create;var ue=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,_e=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!_e.call(t,i)&&i!==r&&ue(t,i,{get:()=>e[i],enumerable:!(n=Pe(e,i))||n.enumerable});return t};var Fe=(t,e,r)=>(r=t!=null?Ce(Re(t)):{},De(e||!t||!t.__esModule?ue(r,"default",{value:t,enumerable:!0}):r,t));var pe=Me((de,fe)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i<n.length;i++){var s=n[i],o=e[s];if(Array.isArray(o)){r[s]=o.slice();continue}if(typeof o=="string"||typeof o=="number"||typeof o=="boolean"){r[s]=o;continue}throw new TypeError("clone is not deep and does not support nested objects")}return r},t.FieldRef=function(e,r,n){this.docRef=e,this.fieldName=r,this._stringValue=n},t.FieldRef.joiner="/",t.FieldRef.fromString=function(e){var r=e.indexOf(t.FieldRef.joiner);if(r===-1)throw"malformed field ref string";var n=e.slice(0,r),i=e.slice(r+1);return new t.FieldRef(i,n,e)},t.FieldRef.prototype.toString=function(){return this._stringValue==null&&(this._stringValue=this.fieldName+t.FieldRef.joiner+this.docRef),this._stringValue};t.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var r=0;r<this.length;r++)this.elements[e[r]]=!0}else this.length=0},t.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},t.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},t.Set.prototype.contains=function(e){return!!this.elements[e]},t.Set.prototype.intersect=function(e){var r,n,i,s=[];if(e===t.Set.complete)return this;if(e===t.Set.empty)return e;this.length<e.length?(r=this,n=e):(r=e,n=this),i=Object.keys(r.elements);for(var o=0;o<i.length;o++){var a=i[o];a in n.elements&&s.push(a)}return new t.Set(s)},t.Set.prototype.union=function(e){return e===t.Set.complete?t.Set.complete:e===t.Set.empty?this:new t.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},t.idf=function(e,r){var n=0;for(var i in e)i!="_index"&&(n+=Object.keys(e[i]).length);var s=(r-n+.5)/(n+.5);return Math.log(1+Math.abs(s))},t.Token=function(e,r){this.str=e||"",this.metadata=r||{}},t.Token.prototype.toString=function(){return this.str},t.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},t.Token.prototype.clone=function(e){return e=e||function(r){return r},new t.Token(e(this.str,this.metadata),this.metadata)};t.tokenizer=function(e,r){if(e==null||e==null)return[];if(Array.isArray(e))return e.map(function(f){return new t.Token(t.utils.asString(f).toLowerCase(),t.utils.clone(r))});for(var n=e.toString().toLowerCase(),i=n.length,s=[],o=0,a=0;o<=i;o++){var l=n.charAt(o),u=o-a;if(l.match(t.tokenizer.separator)||o==i){if(u>0){var h=t.utils.clone(r)||{};h.position=[a,u],h.index=s.length,s.push(new t.Token(n.slice(a,o),h))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index.
|
|
2
|
-
`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n<r;n++){for(var i=this._stack[n],s=[],o=0;o<e.length;o++){var a=i(e[o],o,e);if(!(a==null||a===""))if(Array.isArray(a))for(var l=0;l<a.length;l++)s.push(a[l]);else s.push(a)}e=s}return e},t.Pipeline.prototype.runString=function(e,r){var n=new t.Token(e,r);return this.run([n]).map(function(i){return i.toString()})},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})};t.Vector=function(e){this._magnitude=0,this.elements=e||[]},t.Vector.prototype.positionForIndex=function(e){if(this.elements.length==0)return 0;for(var r=0,n=this.elements.length/2,i=n-r,s=Math.floor(i/2),o=this.elements[s*2];i>1&&(o<e&&(r=s),o>e&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(o<e)return(s+1)*2},t.Vector.prototype.insert=function(e,r){this.upsert(e,r,function(){throw"duplicate index"})},t.Vector.prototype.upsert=function(e,r,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],r):this.elements.splice(i,0,e,r)},t.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,r=this.elements.length,n=1;n<r;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},t.Vector.prototype.dot=function(e){for(var r=0,n=this.elements,i=e.elements,s=n.length,o=i.length,a=0,l=0,u=0,h=0;u<s&&h<o;)a=n[u],l=i[h],a<l?u+=2:a>l?h+=2:a==l&&(r+=n[u+1]*i[h+1],u+=2,h+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r<this.elements.length;r+=2,n++)e[n]=this.elements[r];return e},t.Vector.prototype.toJSON=function(){return this.elements};t.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},r={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",s=n+"[^aeiouy]*",o=i+"[aeiou]*",a="^("+s+")?"+o+s,l="^("+s+")?"+o+s+"("+o+")?$",u="^("+s+")?"+o+s+o+s,h="^("+s+")?"+i,f=new RegExp(a),p=new RegExp(u),E=new RegExp(l),y=new RegExp(h),b=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,v=/^(.+?)eed$/,T=/^(.+?)(ed|ing)$/,w=/.$/,I=/(at|bl|iz)$/,M=new RegExp("([^aeiouylsz])\\1$"),B=new RegExp("^"+s+i+"[^aeiouwxy]$"),V=/^(.+?[^aeiou])y$/,q=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,$=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,H=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,W=/^(.+?)(s|t)(ion)$/,P=/^(.+?)e$/,U=/ll$/,G=new RegExp("^"+s+i+"[^aeiouwxy]$"),z=function(c){var g,O,S,d,x,R,F;if(c.length<3)return c;if(S=c.substr(0,1),S=="y"&&(c=S.toUpperCase()+c.substr(1)),d=b,x=m,d.test(c)?c=c.replace(d,"$1$2"):x.test(c)&&(c=c.replace(x,"$1$2")),d=v,x=T,d.test(c)){var L=d.exec(c);d=f,d.test(L[1])&&(d=w,c=c.replace(d,""))}else if(x.test(c)){var L=x.exec(c);g=L[1],x=y,x.test(g)&&(c=g,x=I,R=M,F=B,x.test(c)?c=c+"e":R.test(c)?(d=w,c=c.replace(d,"")):F.test(c)&&(c=c+"e"))}if(d=V,d.test(c)){var L=d.exec(c);g=L[1],c=g+"i"}if(d=q,d.test(c)){var L=d.exec(c);g=L[1],O=L[2],d=f,d.test(g)&&(c=g+e[O])}if(d=$,d.test(c)){var L=d.exec(c);g=L[1],O=L[2],d=f,d.test(g)&&(c=g+r[O])}if(d=H,x=W,d.test(c)){var L=d.exec(c);g=L[1],d=p,d.test(g)&&(c=g)}else if(x.test(c)){var L=x.exec(c);g=L[1]+L[2],x=p,x.test(g)&&(c=g)}if(d=P,d.test(c)){var L=d.exec(c);g=L[1],d=p,x=E,R=G,(d.test(g)||x.test(g)&&!R.test(g))&&(c=g)}return d=U,x=p,d.test(c)&&x.test(c)&&(d=w,c=c.replace(d,"")),S=="y"&&(c=S.toLowerCase()+c.substr(1)),c};return function(D){return D.update(z)}}(),t.Pipeline.registerFunction(t.stemmer,"stemmer");t.generateStopWordFilter=function(e){var r=e.reduce(function(n,i){return n[i]=i,n},{});return function(n){if(n&&r[n.toString()]!==n.toString())return n}},t.stopWordFilter=t.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter");t.trimmer=function(e){return e.update(function(r){return r.replace(/^\W+/,"").replace(/\W+$/,"")})},t.Pipeline.registerFunction(t.trimmer,"trimmer");t.TokenSet=function(){this.final=!1,this.edges={},this.id=t.TokenSet._nextId,t.TokenSet._nextId+=1},t.TokenSet._nextId=1,t.TokenSet.fromArray=function(e){for(var r=new t.TokenSet.Builder,n=0,i=e.length;n<i;n++)r.insert(e[n]);return r.finish(),r.root},t.TokenSet.fromClause=function(e){return"editDistance"in e?t.TokenSet.fromFuzzyString(e.term,e.editDistance):t.TokenSet.fromString(e.term)},t.TokenSet.fromFuzzyString=function(e,r){for(var n=new t.TokenSet,i=[{node:n,editsRemaining:r,str:e}];i.length;){var s=i.pop();if(s.str.length>0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var h=s.str.charAt(0),f=s.str.charAt(1),p;f in s.node.edges?p=s.node.edges[f]:(p=new t.TokenSet,s.node.edges[f]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i<s;i++){var o=e[i],a=i==s-1;if(o=="*")r.edges[o]=r,r.final=a;else{var l=new t.TokenSet;l.final=a,r.edges[o]=l,r=l}}return n},t.TokenSet.prototype.toArray=function(){for(var e=[],r=[{prefix:"",node:this}];r.length;){var n=r.pop(),i=Object.keys(n.node.edges),s=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<s;o++){var a=i[o];r.push({prefix:n.prefix.concat(a),node:n.node.edges[a]})}}return e},t.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",r=Object.keys(this.edges).sort(),n=r.length,i=0;i<n;i++){var s=r[i],o=this.edges[s];e=e+s+o.id}return e},t.TokenSet.prototype.intersect=function(e){for(var r=new t.TokenSet,n=void 0,i=[{qNode:e,output:r,node:this}];i.length;){n=i.pop();for(var s=Object.keys(n.qNode.edges),o=s.length,a=Object.keys(n.node.edges),l=a.length,u=0;u<o;u++)for(var h=s[u],f=0;f<l;f++){var p=a[f];if(p==h||h=="*"){var E=n.node.edges[p],y=n.qNode.edges[h],b=E.final&&y.final,m=void 0;p in n.output.edges?(m=n.output.edges[p],m.final=m.final||b):(m=new t.TokenSet,m.final=b,n.output.edges[p]=m),i.push({qNode:y,output:m,node:E})}}}return r},t.TokenSet.Builder=function(){this.previousWord="",this.root=new t.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},t.TokenSet.Builder.prototype.insert=function(e){var r,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),this.uncheckedNodes.length==0?r=this.root:r=this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(var i=n;i<e.length;i++){var s=new t.TokenSet,o=e[i];r.edges[o]=s,this.uncheckedNodes.push({parent:r,char:o,child:s}),r=s}r.final=!0,this.previousWord=e},t.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},t.TokenSet.Builder.prototype.minimize=function(e){for(var r=this.uncheckedNodes.length-1;r>=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l<this.fields.length;l++)i[this.fields[l]]=new t.Vector;e.call(r,r);for(var l=0;l<r.clauses.length;l++){var u=r.clauses[l],h=null,f=t.Set.empty;u.usePipeline?h=this.pipeline.runString(u.term,{fields:u.fields}):h=[u.term];for(var p=0;p<h.length;p++){var E=h[p];u.term=E;var y=t.TokenSet.fromClause(u),b=this.tokenSet.intersect(y).toArray();if(b.length===0&&u.presence===t.Query.presence.REQUIRED){for(var m=0;m<u.fields.length;m++){var v=u.fields[m];o[v]=t.Set.empty}break}for(var T=0;T<b.length;T++)for(var w=b[T],I=this.invertedIndex[w],M=I._index,m=0;m<u.fields.length;m++){var v=u.fields[m],B=I[v],V=Object.keys(B),q=w+"/"+v,$=new t.Set(V);if(u.presence==t.Query.presence.REQUIRED&&(f=f.union($),o[v]===void 0&&(o[v]=t.Set.complete)),u.presence==t.Query.presence.PROHIBITED){a[v]===void 0&&(a[v]=t.Set.empty),a[v]=a[v].union($);continue}if(i[v].upsert(M,u.boost,function(Qe,Ie){return Qe+Ie}),!s[q]){for(var H=0;H<V.length;H++){var W=V[H],P=new t.FieldRef(W,v),U=B[W],G;(G=n[P])===void 0?n[P]=new t.MatchData(w,v,U):G.add(w,v,U)}s[q]=!0}}}if(u.presence===t.Query.presence.REQUIRED)for(var m=0;m<u.fields.length;m++){var v=u.fields[m];o[v]=o[v].intersect(f)}}for(var z=t.Set.complete,D=t.Set.empty,l=0;l<this.fields.length;l++){var v=this.fields[l];o[v]&&(z=z.intersect(o[v])),a[v]&&(D=D.union(a[v]))}var c=Object.keys(n),g=[],O=Object.create(null);if(r.isNegated()){c=Object.keys(this.fieldVectors);for(var l=0;l<c.length;l++){var P=c[l],S=t.FieldRef.fromString(P);n[P]=new t.MatchData}}for(var l=0;l<c.length;l++){var S=t.FieldRef.fromString(c[l]),d=S.docRef;if(!!z.contains(d)&&!D.contains(d)){var x=this.fieldVectors[S],R=i[S.fieldName].similarity(x),F;if((F=O[d])!==void 0)F.score+=R,F.matchData.combine(n[S]);else{var L={ref:d,score:R,matchData:n[S]};O[d]=L,g.push(L)}}}return g.sort(function(Se,ke){return ke.score-Se.score})},t.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(n){return[n,this.invertedIndex[n]]},this),r=Object.keys(this.fieldVectors).map(function(n){return[n,this.fieldVectors[n].toJSON()]},this);return{version:t.version,fields:this.fields,fieldVectors:r,invertedIndex:e,pipeline:this.pipeline.toJSON()}},t.Index.load=function(e){var r={},n={},i=e.fieldVectors,s=Object.create(null),o=e.invertedIndex,a=new t.TokenSet.Builder,l=t.Pipeline.load(e.pipeline);e.version!=t.version&&t.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+t.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var h=i[u],f=h[0],p=h[1];n[f]=new t.Vector(p)}for(var u=0;u<o.length;u++){var h=o[u],E=h[0],y=h[1];a.insert(E),s[E]=y}return a.finish(),r.fields=e.fields,r.fieldVectors=n,r.invertedIndex=s,r.tokenSet=a.root,r.pipeline=l,new t.Index(r)};t.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=t.tokenizer,this.pipeline=new t.Pipeline,this.searchPipeline=new t.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},t.Builder.prototype.ref=function(e){this._ref=e},t.Builder.prototype.field=function(e,r){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=r||{}},t.Builder.prototype.b=function(e){e<0?this._b=0:e>1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s<i.length;s++){var o=i[s],a=this._fields[o].extractor,l=a?a(e):e[o],u=this.tokenizer(l,{fields:[o]}),h=this.pipeline.run(u),f=new t.FieldRef(n,o),p=Object.create(null);this.fieldTermFrequencies[f]=p,this.fieldLengths[f]=0,this.fieldLengths[f]+=h.length;for(var E=0;E<h.length;E++){var y=h[E];if(p[y]==null&&(p[y]=0),p[y]+=1,this.invertedIndex[y]==null){var b=Object.create(null);b._index=this.termIndex,this.termIndex+=1;for(var m=0;m<i.length;m++)b[i[m]]=Object.create(null);this.invertedIndex[y]=b}this.invertedIndex[y][o][n]==null&&(this.invertedIndex[y][o][n]=Object.create(null));for(var v=0;v<this.metadataWhitelist.length;v++){var T=this.metadataWhitelist[v],w=y.metadata[T];this.invertedIndex[y][o][n][T]==null&&(this.invertedIndex[y][o][n][T]=[]),this.invertedIndex[y][o][n][T].push(w)}}}},t.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),r=e.length,n={},i={},s=0;s<r;s++){var o=t.FieldRef.fromString(e[s]),a=o.fieldName;i[a]||(i[a]=0),i[a]+=1,n[a]||(n[a]=0),n[a]+=this.fieldLengths[o]}for(var l=Object.keys(this._fields),s=0;s<l.length;s++){var u=l[s];n[u]=n[u]/i[u]}this.averageFieldLength=n},t.Builder.prototype.createFieldVectors=function(){for(var e={},r=Object.keys(this.fieldTermFrequencies),n=r.length,i=Object.create(null),s=0;s<n;s++){for(var o=t.FieldRef.fromString(r[s]),a=o.fieldName,l=this.fieldLengths[o],u=new t.Vector,h=this.fieldTermFrequencies[o],f=Object.keys(h),p=f.length,E=this._fields[a].boost||1,y=this._documents[o.docRef].boost||1,b=0;b<p;b++){var m=f[b],v=h[m],T=this.invertedIndex[m]._index,w,I,M;i[m]===void 0?(w=t.idf(this.invertedIndex[m],this.documentCount),i[m]=w):w=i[m],I=w*((this._k1+1)*v)/(this._k1*(1-this._b+this._b*(l/this.averageFieldLength[a]))+v),I*=E,I*=y,M=Math.round(I*1e3)/1e3,u.insert(T,M)}e[o]=u}this.fieldVectors=e},t.Builder.prototype.createTokenSet=function(){this.tokenSet=t.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},t.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new t.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},t.Builder.prototype.use=function(e){var r=Array.prototype.slice.call(arguments,1);r.unshift(this),e.apply(this,r)},t.MatchData=function(e,r,n){for(var i=Object.create(null),s=Object.keys(n||{}),o=0;o<s.length;o++){var a=s[o];i[a]=n[a].slice()}this.metadata=Object.create(null),e!==void 0&&(this.metadata[e]=Object.create(null),this.metadata[e][r]=i)},t.MatchData.prototype.combine=function(e){for(var r=Object.keys(e.metadata),n=0;n<r.length;n++){var i=r[n],s=Object.keys(e.metadata[i]);this.metadata[i]==null&&(this.metadata[i]=Object.create(null));for(var o=0;o<s.length;o++){var a=s[o],l=Object.keys(e.metadata[i][a]);this.metadata[i][a]==null&&(this.metadata[i][a]=Object.create(null));for(var u=0;u<l.length;u++){var h=l[u];this.metadata[i][a][h]==null?this.metadata[i][a][h]=e.metadata[i][a][h]:this.metadata[i][a][h]=this.metadata[i][a][h].concat(e.metadata[i][a][h])}}}},t.MatchData.prototype.add=function(e,r,n){if(!(e in this.metadata)){this.metadata[e]=Object.create(null),this.metadata[e][r]=n;return}if(!(r in this.metadata[e])){this.metadata[e][r]=n;return}for(var i=Object.keys(n),s=0;s<i.length;s++){var o=i[s];o in this.metadata[e][r]?this.metadata[e][r][o]=this.metadata[e][r][o].concat(n[o]):this.metadata[e][r][o]=n[o]}},t.Query=function(e){this.clauses=[],this.allFields=e},t.Query.wildcard=new String("*"),t.Query.wildcard.NONE=0,t.Query.wildcard.LEADING=1,t.Query.wildcard.TRAILING=2,t.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},t.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=t.Query.wildcard.NONE),e.wildcard&t.Query.wildcard.LEADING&&e.term.charAt(0)!=t.Query.wildcard&&(e.term="*"+e.term),e.wildcard&t.Query.wildcard.TRAILING&&e.term.slice(-1)!=t.Query.wildcard&&(e.term=""+e.term+"*"),"presence"in e||(e.presence=t.Query.presence.OPTIONAL),this.clauses.push(e),this},t.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=t.Query.presence.PROHIBITED)return!1;return!0},t.Query.prototype.term=function(e,r){if(Array.isArray(e))return e.forEach(function(i){this.term(i,t.utils.clone(r))},this),this;var n=r||{};return n.term=e.toString(),this.clause(n),this},t.QueryParseError=function(e,r,n){this.name="QueryParseError",this.message=e,this.start=r,this.end=n},t.QueryParseError.prototype=new Error,t.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},t.QueryLexer.prototype.run=function(){for(var e=t.QueryLexer.lexText;e;)e=e(this)},t.QueryLexer.prototype.sliceString=function(){for(var e=[],r=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(r,n)),r=n+1;return e.push(this.str.slice(r,this.pos)),this.escapeCharPositions.length=0,e.join("")},t.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},t.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},t.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos<this.length},t.QueryLexer.EOS="EOS",t.QueryLexer.FIELD="FIELD",t.QueryLexer.TERM="TERM",t.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",t.QueryLexer.BOOST="BOOST",t.QueryLexer.PRESENCE="PRESENCE",t.QueryLexer.lexField=function(e){return e.backup(),e.emit(t.QueryLexer.FIELD),e.ignore(),t.QueryLexer.lexText},t.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof de=="object"?fe.exports=r():e.lunr=r()}(this,function(){return t})})()});var ce=[];function N(t,e){ce.push({selector:e,constructor:t})}var Y=class{constructor(){this.createComponents(document.body)}createComponents(e){ce.forEach(r=>{e.querySelectorAll(r.selector).forEach(n=>{n.dataset.hasInstance||(new r.constructor({el:n}),n.dataset.hasInstance=String(!0))})})}};var k=class{constructor(e){this.el=e.el}};var J=class{constructor(){this.listeners={}}addEventListener(e,r){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push(r)}removeEventListener(e,r){if(!(e in this.listeners))return;let n=this.listeners[e];for(let i=0,s=n.length;i<s;i++)if(n[i]===r){n.splice(i,1);return}}dispatchEvent(e){if(!(e.type in this.listeners))return!0;let r=this.listeners[e.type].slice();for(let n=0,i=r.length;n<i;n++)r[n].call(this,e);return!e.defaultPrevented}};var ne=(t,e=100)=>{let r=Date.now();return(...n)=>{r+e-Date.now()<0&&(t(...n),r=Date.now())}};var ie=class extends J{constructor(){super();this.scrollTop=0;this.lastY=0;this.width=0;this.height=0;this.showToolbar=!0;this.toolbar=document.querySelector(".tsd-page-toolbar"),this.secondaryNav=document.querySelector(".tsd-navigation.secondary"),window.addEventListener("scroll",ne(()=>this.onScroll(),10)),window.addEventListener("resize",ne(()=>this.onResize(),10)),this.onResize(),this.onScroll()}triggerResize(){let r=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(r)}onResize(){this.width=window.innerWidth||0,this.height=window.innerHeight||0;let r=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(r)}onScroll(){this.scrollTop=window.scrollY||0;let r=new CustomEvent("scroll",{detail:{scrollTop:this.scrollTop}});this.dispatchEvent(r),this.hideShowToolbar()}hideShowToolbar(){var n;let r=this.showToolbar;this.showToolbar=this.lastY>=this.scrollTop||this.scrollTop<=0,r!==this.showToolbar&&(this.toolbar.classList.toggle("tsd-page-toolbar--hide"),(n=this.secondaryNav)==null||n.classList.toggle("tsd-navigation--toolbar-hide")),this.lastY=this.scrollTop}},Q=ie;Q.instance=new ie;var X=class extends k{constructor(r){super(r);this.anchors=[];this.index=-1;Q.instance.addEventListener("resize",()=>this.onResize()),Q.instance.addEventListener("scroll",n=>this.onScroll(n)),this.createAnchors()}createAnchors(){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substr(0,r.indexOf("#"))),this.el.querySelectorAll("a").forEach(n=>{let i=n.href;if(i.indexOf("#")==-1||i.substr(0,r.length)!=r)return;let s=i.substr(i.indexOf("#")+1),o=document.querySelector("a.tsd-anchor[name="+s+"]"),a=n.parentNode;!o||!a||this.anchors.push({link:a,anchor:o,position:0})}),this.onResize()}onResize(){let r;for(let i=0,s=this.anchors.length;i<s;i++){r=this.anchors[i];let o=r.anchor.getBoundingClientRect();r.position=o.top+document.body.scrollTop}this.anchors.sort((i,s)=>i.position-s.position);let n=new CustomEvent("scroll",{detail:{scrollTop:Q.instance.scrollTop}});this.onScroll(n)}onScroll(r){let n=r.detail.scrollTop+5,i=this.anchors,s=i.length-1,o=this.index;for(;o>-1&&i[o].position>n;)o-=1;for(;o<s&&i[o+1].position<n;)o+=1;this.index!=o&&(this.index>-1&&this.anchors[this.index].link.classList.remove("focus"),this.index=o,this.index>-1&&this.anchors[this.index].link.classList.add("focus"))}};var he=(t,e=100)=>{let r;return(...n)=>{clearTimeout(r),r=setTimeout(()=>t(n),e)}};var ge=Fe(pe());function ye(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let r=document.querySelector("#tsd-search input"),n=document.querySelector("#tsd-search .results");if(!r||!n)throw new Error("The input field or the result list wrapper was not found");let i=!1;n.addEventListener("mousedown",()=>i=!0),n.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Ae(t,n,r,s)}function Ae(t,e,r,n){r.addEventListener("input",he(()=>{He(t,e,r,n)},200));let i=!1;r.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?ze(e,r):s.key=="Escape"?r.blur():s.key=="ArrowUp"?me(e,-1):s.key==="ArrowDown"?me(e,1):i=!1}),r.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!r.matches(":focus")&&s.key==="/"&&(r.focus(),s.preventDefault())})}function Ve(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=ge.Index.load(window.searchData.index))}function He(t,e,r,n){var o,a;if(Ve(n,t),!n.index||!n.data)return;e.textContent="";let i=r.value.trim(),s=i?n.index.search(`*${i}*`):[];for(let l=0;l<s.length;l++){let u=s[l],h=n.data.rows[Number(u.ref)],f=1;h.name.toLowerCase().startsWith(i.toLowerCase())&&(f*=1+1/(Math.abs(h.name.length-i.length)*10)),f*=(o=h.boost)!=null?o:1,u.score*=f}s.sort((l,u)=>u.score-l.score);for(let l=0,u=Math.min(10,s.length);l<u;l++){let h=n.data.rows[Number(s[l].ref)],f=ve(h.name,i);h.parent&&(f=`<span class="parent">${ve(h.parent,i)}.</span>${f}`);let p=document.createElement("li");p.classList.value=(a=h.classes)!=null?a:"";let E=document.createElement("a");E.href=n.base+h.url,E.classList.add("tsd-kind-icon"),E.innerHTML=f,p.append(E),e.appendChild(p)}}function me(t,e){var n,i;let r=t.querySelector(".current");if(!r)r=t.querySelector(e==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let s=r;if(e===1)do s=(n=s.nextElementSibling)!=null?n:void 0;while(s instanceof HTMLElement&&s.offsetParent==null);else do s=(i=s.previousElementSibling)!=null?i:void 0;while(s instanceof HTMLElement&&s.offsetParent==null);s&&(r.classList.remove("current"),s.classList.add("current"))}}function ze(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelector("li:first-child")),r){let n=r.querySelector("a");n&&(window.location.href=n.href),e.blur()}}function ve(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLocaleLowerCase(),i=[],s=0,o=r.indexOf(n);for(;o!=-1;)i.push(se(t.substring(s,o)),`<b>${se(t.substring(o,o+n.length))}</b>`),s=o+n.length,o=r.indexOf(n,s);return i.push(se(t.substring(s))),i.join("")}var Ne={"&":"&","<":"<",">":">","'":"'",'"':"""};function se(t){return t.replace(/[&<>"'"]/g,e=>Ne[e])}var oe=class{constructor(e,r){this.signature=e,this.description=r}addClass(e){return this.signature.classList.add(e),this.description.classList.add(e),this}removeClass(e){return this.signature.classList.remove(e),this.description.classList.remove(e),this}},Z=class extends k{constructor(r){super(r);this.groups=[];this.index=-1;this.createGroups(),this.container&&(this.el.classList.add("active"),Array.from(this.el.children).forEach(n=>{n.addEventListener("touchstart",i=>this.onClick(i)),n.addEventListener("click",i=>this.onClick(i))}),this.container.classList.add("active"),this.setIndex(0))}setIndex(r){if(r<0&&(r=0),r>this.groups.length-1&&(r=this.groups.length-1),this.index==r)return;let n=this.groups[r];if(this.index>-1){let i=this.groups[this.index];i.removeClass("current").addClass("fade-out"),n.addClass("current"),n.addClass("fade-in"),Q.instance.triggerResize(),setTimeout(()=>{i.removeClass("fade-out"),n.removeClass("fade-in")},300)}else n.addClass("current"),Q.instance.triggerResize();this.index=r}createGroups(){let r=this.el.children;if(r.length<2)return;this.container=this.el.nextElementSibling;let n=this.container.children;this.groups=[];for(let i=0;i<r.length;i++)this.groups.push(new oe(r[i],n[i]))}onClick(r){this.groups.forEach((n,i)=>{n.signature===r.currentTarget&&this.setIndex(i)})}};var C="mousedown",Le="mousemove",_="mouseup",K={x:0,y:0},xe=!1,ae=!1,je=!1,A=!1,Ee=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(Ee?"is-mobile":"not-mobile");Ee&&"ontouchstart"in document.documentElement&&(je=!0,C="touchstart",Le="touchmove",_="touchend");document.addEventListener(C,t=>{ae=!0,A=!1;let e=C=="touchstart"?t.targetTouches[0]:t;K.y=e.pageY||0,K.x=e.pageX||0});document.addEventListener(Le,t=>{if(!!ae&&!A){let e=C=="touchstart"?t.targetTouches[0]:t,r=K.x-(e.pageX||0),n=K.y-(e.pageY||0);A=Math.sqrt(r*r+n*n)>10}});document.addEventListener(_,()=>{ae=!1});document.addEventListener("click",t=>{xe&&(t.preventDefault(),t.stopImmediatePropagation(),xe=!1)});var ee=class extends k{constructor(r){super(r);this.className=this.el.dataset.toggle||"",this.el.addEventListener(_,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(C,n=>this.onDocumentPointerDown(n)),document.addEventListener(_,n=>this.onDocumentPointerUp(n))}setActive(r){if(this.active==r)return;this.active=r,document.documentElement.classList.toggle("has-"+this.className,r),this.el.classList.toggle("active",r);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(r){A||(this.setActive(!0),r.preventDefault())}onDocumentPointerDown(r){if(this.active){if(r.target.closest(".col-menu, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(r){if(!A&&this.active&&r.target.closest(".col-menu")){let n=r.target.closest("a");if(n){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substr(0,i.indexOf("#"))),n.href.substr(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te=class{constructor(e,r){this.key=e,this.value=r,this.defaultValue=r,this.initialize(),window.localStorage[this.key]&&this.setValue(this.fromLocalStorage(window.localStorage[this.key]))}initialize(){}setValue(e){if(this.value==e)return;let r=this.value;this.value=e,window.localStorage[this.key]=this.toLocalStorage(e),this.handleValueChange(r,e)}},re=class extends te{initialize(){let r=document.querySelector("#tsd-filter-"+this.key);!r||(this.checkbox=r,this.checkbox.addEventListener("change",()=>{this.setValue(this.checkbox.checked)}))}handleValueChange(r,n){!this.checkbox||(this.checkbox.checked=this.value,document.documentElement.classList.toggle("toggle-"+this.key,this.value!=this.defaultValue))}fromLocalStorage(r){return r=="true"}toLocalStorage(r){return r?"true":"false"}},le=class extends te{initialize(){document.documentElement.classList.add("toggle-"+this.key+this.value);let r=document.querySelector("#tsd-filter-"+this.key);if(!r)return;this.select=r;let n=()=>{this.select.classList.add("active")},i=()=>{this.select.classList.remove("active")};this.select.addEventListener(C,n),this.select.addEventListener("mouseover",n),this.select.addEventListener("mouseleave",i),this.select.querySelectorAll("li").forEach(s=>{s.addEventListener(_,o=>{r.classList.remove("active"),this.setValue(o.target.dataset.value||"")})}),document.addEventListener(C,s=>{this.select.contains(s.target)||this.select.classList.remove("active")})}handleValueChange(r,n){this.select.querySelectorAll("li.selected").forEach(o=>{o.classList.remove("selected")});let i=this.select.querySelector('li[data-value="'+n+'"]'),s=this.select.querySelector(".tsd-select-label");i&&s&&(i.classList.add("selected"),s.textContent=i.textContent),document.documentElement.classList.remove("toggle-"+r),document.documentElement.classList.add("toggle-"+n)}fromLocalStorage(r){return r}toLocalStorage(r){return r}},j=class extends k{constructor(r){super(r);this.optionVisibility=new le("visibility","private"),this.optionInherited=new re("inherited",!0),this.optionExternals=new re("externals",!0)}static isSupported(){try{return typeof window.localStorage!="undefined"}catch{return!1}}};function we(t){let e=localStorage.getItem("tsd-theme")||"os";t.value=e,be(e),t.addEventListener("change",()=>{localStorage.setItem("tsd-theme",t.value),be(t.value)})}function be(t){switch(t){case"os":document.body.classList.remove("light","dark");break;case"light":document.body.classList.remove("dark"),document.body.classList.add("light");break;case"dark":document.body.classList.remove("light"),document.body.classList.add("dark");break}}ye();N(X,".menu-highlight");N(Z,".tsd-signatures");N(ee,"a[data-toggle]");j.isSupported()?N(j,"#tsd-filter"):document.documentElement.classList.add("no-filter");var Te=document.getElementById("theme");Te&&we(Te);var Be=new Y;Object.defineProperty(window,"app",{value:Be});})();
|
|
3
|
-
/*!
|
|
4
|
-
* lunr.Builder
|
|
5
|
-
* Copyright (C) 2020 Oliver Nightingale
|
|
6
|
-
*/
|
|
7
|
-
/*!
|
|
8
|
-
* lunr.Index
|
|
9
|
-
* Copyright (C) 2020 Oliver Nightingale
|
|
10
|
-
*/
|
|
11
|
-
/*!
|
|
12
|
-
* lunr.Pipeline
|
|
13
|
-
* Copyright (C) 2020 Oliver Nightingale
|
|
14
|
-
*/
|
|
15
|
-
/*!
|
|
16
|
-
* lunr.Set
|
|
17
|
-
* Copyright (C) 2020 Oliver Nightingale
|
|
18
|
-
*/
|
|
19
|
-
/*!
|
|
20
|
-
* lunr.TokenSet
|
|
21
|
-
* Copyright (C) 2020 Oliver Nightingale
|
|
22
|
-
*/
|
|
23
|
-
/*!
|
|
24
|
-
* lunr.Vector
|
|
25
|
-
* Copyright (C) 2020 Oliver Nightingale
|
|
26
|
-
*/
|
|
27
|
-
/*!
|
|
28
|
-
* lunr.stemmer
|
|
29
|
-
* Copyright (C) 2020 Oliver Nightingale
|
|
30
|
-
* Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
|
|
31
|
-
*/
|
|
32
|
-
/*!
|
|
33
|
-
* lunr.stopWordFilter
|
|
34
|
-
* Copyright (C) 2020 Oliver Nightingale
|
|
35
|
-
*/
|
|
36
|
-
/*!
|
|
37
|
-
* lunr.tokenizer
|
|
38
|
-
* Copyright (C) 2020 Oliver Nightingale
|
|
39
|
-
*/
|
|
40
|
-
/*!
|
|
41
|
-
* lunr.trimmer
|
|
42
|
-
* Copyright (C) 2020 Oliver Nightingale
|
|
43
|
-
*/
|
|
44
|
-
/*!
|
|
45
|
-
* lunr.utils
|
|
46
|
-
* Copyright (C) 2020 Oliver Nightingale
|
|
47
|
-
*/
|
|
48
|
-
/**
|
|
49
|
-
* lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
|
|
50
|
-
* Copyright (C) 2020 Oliver Nightingale
|
|
51
|
-
* @license MIT
|
|
52
|
-
*/
|
package/doc/assets/search.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
window.searchData = JSON.parse("{\"kinds\":{\"128\":\"Class\",\"256\":\"Interface\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\"},\"rows\":[{\"id\":0,\"kind\":256,\"name\":\"IWasmAPI\",\"url\":\"interfaces/IWasmAPI.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":1,\"kind\":2048,\"name\":\"init\",\"url\":\"interfaces/IWasmAPI.html#init\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"IWasmAPI\"},{\"id\":2,\"kind\":2048,\"name\":\"getImports\",\"url\":\"interfaces/IWasmAPI.html#getImports\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"IWasmAPI\"},{\"id\":3,\"kind\":256,\"name\":\"CoreAPI\",\"url\":\"interfaces/CoreAPI.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":4,\"kind\":1024,\"name\":\"printI8\",\"url\":\"interfaces/CoreAPI.html#printI8\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":5,\"kind\":1024,\"name\":\"printU8\",\"url\":\"interfaces/CoreAPI.html#printU8\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":6,\"kind\":1024,\"name\":\"printU8Hex\",\"url\":\"interfaces/CoreAPI.html#printU8Hex\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":7,\"kind\":1024,\"name\":\"printI16\",\"url\":\"interfaces/CoreAPI.html#printI16\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":8,\"kind\":1024,\"name\":\"printU16\",\"url\":\"interfaces/CoreAPI.html#printU16\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":9,\"kind\":1024,\"name\":\"printU16Hex\",\"url\":\"interfaces/CoreAPI.html#printU16Hex\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":10,\"kind\":1024,\"name\":\"printI32\",\"url\":\"interfaces/CoreAPI.html#printI32\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":11,\"kind\":1024,\"name\":\"printU32\",\"url\":\"interfaces/CoreAPI.html#printU32\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":12,\"kind\":1024,\"name\":\"printU32Hex\",\"url\":\"interfaces/CoreAPI.html#printU32Hex\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":13,\"kind\":1024,\"name\":\"printF32\",\"url\":\"interfaces/CoreAPI.html#printF32\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":14,\"kind\":1024,\"name\":\"printF64\",\"url\":\"interfaces/CoreAPI.html#printF64\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":15,\"kind\":2048,\"name\":\"_printI8Array\",\"url\":\"interfaces/CoreAPI.html#_printI8Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":16,\"kind\":2048,\"name\":\"_printU8Array\",\"url\":\"interfaces/CoreAPI.html#_printU8Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":17,\"kind\":2048,\"name\":\"_printI16Array\",\"url\":\"interfaces/CoreAPI.html#_printI16Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":18,\"kind\":2048,\"name\":\"_printU16Array\",\"url\":\"interfaces/CoreAPI.html#_printU16Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":19,\"kind\":2048,\"name\":\"_printI32Array\",\"url\":\"interfaces/CoreAPI.html#_printI32Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":20,\"kind\":2048,\"name\":\"_printU32Array\",\"url\":\"interfaces/CoreAPI.html#_printU32Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":21,\"kind\":2048,\"name\":\"_printF32Array\",\"url\":\"interfaces/CoreAPI.html#_printF32Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":22,\"kind\":2048,\"name\":\"_printF64Array\",\"url\":\"interfaces/CoreAPI.html#_printF64Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":23,\"kind\":2048,\"name\":\"_printStr0\",\"url\":\"interfaces/CoreAPI.html#_printStr0\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":24,\"kind\":2048,\"name\":\"_printStr\",\"url\":\"interfaces/CoreAPI.html#_printStr\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"CoreAPI\"},{\"id\":25,\"kind\":128,\"name\":\"WasmBridge\",\"url\":\"classes/WasmBridge.html\",\"classes\":\"tsd-kind-class\"},{\"id\":26,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/WasmBridge.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":27,\"kind\":1024,\"name\":\"i8\",\"url\":\"classes/WasmBridge.html#i8\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":28,\"kind\":1024,\"name\":\"u8\",\"url\":\"classes/WasmBridge.html#u8\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":29,\"kind\":1024,\"name\":\"i16\",\"url\":\"classes/WasmBridge.html#i16\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":30,\"kind\":1024,\"name\":\"u16\",\"url\":\"classes/WasmBridge.html#u16\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":31,\"kind\":1024,\"name\":\"i32\",\"url\":\"classes/WasmBridge.html#i32\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":32,\"kind\":1024,\"name\":\"u32\",\"url\":\"classes/WasmBridge.html#u32\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":33,\"kind\":1024,\"name\":\"f32\",\"url\":\"classes/WasmBridge.html#f32\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":34,\"kind\":1024,\"name\":\"f64\",\"url\":\"classes/WasmBridge.html#f64\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":35,\"kind\":1024,\"name\":\"utf8Decoder\",\"url\":\"classes/WasmBridge.html#utf8Decoder\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":36,\"kind\":1024,\"name\":\"utf8Encoder\",\"url\":\"classes/WasmBridge.html#utf8Encoder\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":37,\"kind\":1024,\"name\":\"core\",\"url\":\"classes/WasmBridge.html#core\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":38,\"kind\":1024,\"name\":\"logger\",\"url\":\"classes/WasmBridge.html#logger\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":39,\"kind\":1024,\"name\":\"children\",\"url\":\"classes/WasmBridge.html#children\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"WasmBridge\"},{\"id\":40,\"kind\":2048,\"name\":\"init\",\"url\":\"classes/WasmBridge.html#init\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":41,\"kind\":2048,\"name\":\"getImports\",\"url\":\"classes/WasmBridge.html#getImports\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":42,\"kind\":2048,\"name\":\"getI8Array\",\"url\":\"classes/WasmBridge.html#getI8Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":43,\"kind\":2048,\"name\":\"getU8Array\",\"url\":\"classes/WasmBridge.html#getU8Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":44,\"kind\":2048,\"name\":\"getI16Array\",\"url\":\"classes/WasmBridge.html#getI16Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":45,\"kind\":2048,\"name\":\"getU16Array\",\"url\":\"classes/WasmBridge.html#getU16Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":46,\"kind\":2048,\"name\":\"getI32Array\",\"url\":\"classes/WasmBridge.html#getI32Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":47,\"kind\":2048,\"name\":\"getU32Array\",\"url\":\"classes/WasmBridge.html#getU32Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":48,\"kind\":2048,\"name\":\"getF32Array\",\"url\":\"classes/WasmBridge.html#getF32Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":49,\"kind\":2048,\"name\":\"getF64Array\",\"url\":\"classes/WasmBridge.html#getF64Array\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":50,\"kind\":2048,\"name\":\"derefI8\",\"url\":\"classes/WasmBridge.html#derefI8\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":51,\"kind\":2048,\"name\":\"derefU8\",\"url\":\"classes/WasmBridge.html#derefU8\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":52,\"kind\":2048,\"name\":\"derefI16\",\"url\":\"classes/WasmBridge.html#derefI16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":53,\"kind\":2048,\"name\":\"derefU16\",\"url\":\"classes/WasmBridge.html#derefU16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":54,\"kind\":2048,\"name\":\"derefI32\",\"url\":\"classes/WasmBridge.html#derefI32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":55,\"kind\":2048,\"name\":\"derefU32\",\"url\":\"classes/WasmBridge.html#derefU32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":56,\"kind\":2048,\"name\":\"derefF32\",\"url\":\"classes/WasmBridge.html#derefF32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":57,\"kind\":2048,\"name\":\"derefF64\",\"url\":\"classes/WasmBridge.html#derefF64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":58,\"kind\":2048,\"name\":\"getString\",\"url\":\"classes/WasmBridge.html#getString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":59,\"kind\":2048,\"name\":\"getElementById\",\"url\":\"classes/WasmBridge.html#getElementById\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":60,\"kind\":2048,\"name\":\"setString\",\"url\":\"classes/WasmBridge.html#setString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WasmBridge\"},{\"id\":61,\"kind\":128,\"name\":\"ObjectIndex\",\"url\":\"classes/ObjectIndex.html\",\"classes\":\"tsd-kind-class tsd-has-type-parameter\"},{\"id\":62,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/ObjectIndex.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"ObjectIndex\"},{\"id\":63,\"kind\":1024,\"name\":\"name\",\"url\":\"classes/ObjectIndex.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"ObjectIndex\"},{\"id\":64,\"kind\":1024,\"name\":\"items\",\"url\":\"classes/ObjectIndex.html#items\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"ObjectIndex\"},{\"id\":65,\"kind\":1024,\"name\":\"logger\",\"url\":\"classes/ObjectIndex.html#logger\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"ObjectIndex\"},{\"id\":66,\"kind\":2048,\"name\":\"add\",\"url\":\"classes/ObjectIndex.html#add\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ObjectIndex\"},{\"id\":67,\"kind\":2048,\"name\":\"removeID\",\"url\":\"classes/ObjectIndex.html#removeID\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ObjectIndex\"},{\"id\":68,\"kind\":2048,\"name\":\"getID\",\"url\":\"classes/ObjectIndex.html#getID\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ObjectIndex\"},{\"id\":69,\"kind\":2048,\"name\":\"findID\",\"url\":\"classes/ObjectIndex.html#findID\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ObjectIndex\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"parent\"],\"fieldVectors\":[[\"name/0\",[0,30.099]],[\"parent/0\",[]],[\"name/1\",[1,33.464]],[\"parent/1\",[0,2.937]],[\"name/2\",[2,33.464]],[\"parent/2\",[0,2.937]],[\"name/3\",[3,11.492]],[\"parent/3\",[]],[\"name/4\",[4,38.572]],[\"parent/4\",[3,1.121]],[\"name/5\",[5,38.572]],[\"parent/5\",[3,1.121]],[\"name/6\",[6,38.572]],[\"parent/6\",[3,1.121]],[\"name/7\",[7,38.572]],[\"parent/7\",[3,1.121]],[\"name/8\",[8,38.572]],[\"parent/8\",[3,1.121]],[\"name/9\",[9,38.572]],[\"parent/9\",[3,1.121]],[\"name/10\",[10,38.572]],[\"parent/10\",[3,1.121]],[\"name/11\",[11,38.572]],[\"parent/11\",[3,1.121]],[\"name/12\",[12,38.572]],[\"parent/12\",[3,1.121]],[\"name/13\",[13,38.572]],[\"parent/13\",[3,1.121]],[\"name/14\",[14,38.572]],[\"parent/14\",[3,1.121]],[\"name/15\",[15,38.572]],[\"parent/15\",[3,1.121]],[\"name/16\",[16,38.572]],[\"parent/16\",[3,1.121]],[\"name/17\",[17,38.572]],[\"parent/17\",[3,1.121]],[\"name/18\",[18,38.572]],[\"parent/18\",[3,1.121]],[\"name/19\",[19,38.572]],[\"parent/19\",[3,1.121]],[\"name/20\",[20,38.572]],[\"parent/20\",[3,1.121]],[\"name/21\",[21,38.572]],[\"parent/21\",[3,1.121]],[\"name/22\",[22,38.572]],[\"parent/22\",[3,1.121]],[\"name/23\",[23,38.572]],[\"parent/23\",[3,1.121]],[\"name/24\",[24,38.572]],[\"parent/24\",[3,1.121]],[\"name/25\",[25,6.654]],[\"parent/25\",[]],[\"name/26\",[26,33.464]],[\"parent/26\",[25,0.649]],[\"name/27\",[27,38.572]],[\"parent/27\",[25,0.649]],[\"name/28\",[28,38.572]],[\"parent/28\",[25,0.649]],[\"name/29\",[29,38.572]],[\"parent/29\",[25,0.649]],[\"name/30\",[30,38.572]],[\"parent/30\",[25,0.649]],[\"name/31\",[31,38.572]],[\"parent/31\",[25,0.649]],[\"name/32\",[32,38.572]],[\"parent/32\",[25,0.649]],[\"name/33\",[33,38.572]],[\"parent/33\",[25,0.649]],[\"name/34\",[34,38.572]],[\"parent/34\",[25,0.649]],[\"name/35\",[35,38.572]],[\"parent/35\",[25,0.649]],[\"name/36\",[36,38.572]],[\"parent/36\",[25,0.649]],[\"name/37\",[37,38.572]],[\"parent/37\",[25,0.649]],[\"name/38\",[38,33.464]],[\"parent/38\",[25,0.649]],[\"name/39\",[39,38.572]],[\"parent/39\",[25,0.649]],[\"name/40\",[1,33.464]],[\"parent/40\",[25,0.649]],[\"name/41\",[2,33.464]],[\"parent/41\",[25,0.649]],[\"name/42\",[40,38.572]],[\"parent/42\",[25,0.649]],[\"name/43\",[41,38.572]],[\"parent/43\",[25,0.649]],[\"name/44\",[42,38.572]],[\"parent/44\",[25,0.649]],[\"name/45\",[43,38.572]],[\"parent/45\",[25,0.649]],[\"name/46\",[44,38.572]],[\"parent/46\",[25,0.649]],[\"name/47\",[45,38.572]],[\"parent/47\",[25,0.649]],[\"name/48\",[46,38.572]],[\"parent/48\",[25,0.649]],[\"name/49\",[47,38.572]],[\"parent/49\",[25,0.649]],[\"name/50\",[48,38.572]],[\"parent/50\",[25,0.649]],[\"name/51\",[49,38.572]],[\"parent/51\",[25,0.649]],[\"name/52\",[50,38.572]],[\"parent/52\",[25,0.649]],[\"name/53\",[51,38.572]],[\"parent/53\",[25,0.649]],[\"name/54\",[52,38.572]],[\"parent/54\",[25,0.649]],[\"name/55\",[53,38.572]],[\"parent/55\",[25,0.649]],[\"name/56\",[54,38.572]],[\"parent/56\",[25,0.649]],[\"name/57\",[55,38.572]],[\"parent/57\",[25,0.649]],[\"name/58\",[56,38.572]],[\"parent/58\",[25,0.649]],[\"name/59\",[57,38.572]],[\"parent/59\",[25,0.649]],[\"name/60\",[58,38.572]],[\"parent/60\",[25,0.649]],[\"name/61\",[59,20.114]],[\"parent/61\",[]],[\"name/62\",[26,33.464]],[\"parent/62\",[59,1.963]],[\"name/63\",[60,38.572]],[\"parent/63\",[59,1.963]],[\"name/64\",[61,38.572]],[\"parent/64\",[59,1.963]],[\"name/65\",[38,33.464]],[\"parent/65\",[59,1.963]],[\"name/66\",[62,38.572]],[\"parent/66\",[59,1.963]],[\"name/67\",[63,38.572]],[\"parent/67\",[59,1.963]],[\"name/68\",[64,38.572]],[\"parent/68\",[59,1.963]],[\"name/69\",[65,38.572]],[\"parent/69\",[59,1.963]]],\"invertedIndex\":[[\"_printf32array\",{\"_index\":21,\"name\":{\"21\":{}},\"parent\":{}}],[\"_printf64array\",{\"_index\":22,\"name\":{\"22\":{}},\"parent\":{}}],[\"_printi16array\",{\"_index\":17,\"name\":{\"17\":{}},\"parent\":{}}],[\"_printi32array\",{\"_index\":19,\"name\":{\"19\":{}},\"parent\":{}}],[\"_printi8array\",{\"_index\":15,\"name\":{\"15\":{}},\"parent\":{}}],[\"_printstr\",{\"_index\":24,\"name\":{\"24\":{}},\"parent\":{}}],[\"_printstr0\",{\"_index\":23,\"name\":{\"23\":{}},\"parent\":{}}],[\"_printu16array\",{\"_index\":18,\"name\":{\"18\":{}},\"parent\":{}}],[\"_printu32array\",{\"_index\":20,\"name\":{\"20\":{}},\"parent\":{}}],[\"_printu8array\",{\"_index\":16,\"name\":{\"16\":{}},\"parent\":{}}],[\"add\",{\"_index\":62,\"name\":{\"66\":{}},\"parent\":{}}],[\"children\",{\"_index\":39,\"name\":{\"39\":{}},\"parent\":{}}],[\"constructor\",{\"_index\":26,\"name\":{\"26\":{},\"62\":{}},\"parent\":{}}],[\"core\",{\"_index\":37,\"name\":{\"37\":{}},\"parent\":{}}],[\"coreapi\",{\"_index\":3,\"name\":{\"3\":{}},\"parent\":{\"4\":{},\"5\":{},\"6\":{},\"7\":{},\"8\":{},\"9\":{},\"10\":{},\"11\":{},\"12\":{},\"13\":{},\"14\":{},\"15\":{},\"16\":{},\"17\":{},\"18\":{},\"19\":{},\"20\":{},\"21\":{},\"22\":{},\"23\":{},\"24\":{}}}],[\"dereff32\",{\"_index\":54,\"name\":{\"56\":{}},\"parent\":{}}],[\"dereff64\",{\"_index\":55,\"name\":{\"57\":{}},\"parent\":{}}],[\"derefi16\",{\"_index\":50,\"name\":{\"52\":{}},\"parent\":{}}],[\"derefi32\",{\"_index\":52,\"name\":{\"54\":{}},\"parent\":{}}],[\"derefi8\",{\"_index\":48,\"name\":{\"50\":{}},\"parent\":{}}],[\"derefu16\",{\"_index\":51,\"name\":{\"53\":{}},\"parent\":{}}],[\"derefu32\",{\"_index\":53,\"name\":{\"55\":{}},\"parent\":{}}],[\"derefu8\",{\"_index\":49,\"name\":{\"51\":{}},\"parent\":{}}],[\"f32\",{\"_index\":33,\"name\":{\"33\":{}},\"parent\":{}}],[\"f64\",{\"_index\":34,\"name\":{\"34\":{}},\"parent\":{}}],[\"findid\",{\"_index\":65,\"name\":{\"69\":{}},\"parent\":{}}],[\"getelementbyid\",{\"_index\":57,\"name\":{\"59\":{}},\"parent\":{}}],[\"getf32array\",{\"_index\":46,\"name\":{\"48\":{}},\"parent\":{}}],[\"getf64array\",{\"_index\":47,\"name\":{\"49\":{}},\"parent\":{}}],[\"geti16array\",{\"_index\":42,\"name\":{\"44\":{}},\"parent\":{}}],[\"geti32array\",{\"_index\":44,\"name\":{\"46\":{}},\"parent\":{}}],[\"geti8array\",{\"_index\":40,\"name\":{\"42\":{}},\"parent\":{}}],[\"getid\",{\"_index\":64,\"name\":{\"68\":{}},\"parent\":{}}],[\"getimports\",{\"_index\":2,\"name\":{\"2\":{},\"41\":{}},\"parent\":{}}],[\"getstring\",{\"_index\":56,\"name\":{\"58\":{}},\"parent\":{}}],[\"getu16array\",{\"_index\":43,\"name\":{\"45\":{}},\"parent\":{}}],[\"getu32array\",{\"_index\":45,\"name\":{\"47\":{}},\"parent\":{}}],[\"getu8array\",{\"_index\":41,\"name\":{\"43\":{}},\"parent\":{}}],[\"i16\",{\"_index\":29,\"name\":{\"29\":{}},\"parent\":{}}],[\"i32\",{\"_index\":31,\"name\":{\"31\":{}},\"parent\":{}}],[\"i8\",{\"_index\":27,\"name\":{\"27\":{}},\"parent\":{}}],[\"init\",{\"_index\":1,\"name\":{\"1\":{},\"40\":{}},\"parent\":{}}],[\"items\",{\"_index\":61,\"name\":{\"64\":{}},\"parent\":{}}],[\"iwasmapi\",{\"_index\":0,\"name\":{\"0\":{}},\"parent\":{\"1\":{},\"2\":{}}}],[\"logger\",{\"_index\":38,\"name\":{\"38\":{},\"65\":{}},\"parent\":{}}],[\"name\",{\"_index\":60,\"name\":{\"63\":{}},\"parent\":{}}],[\"objectindex\",{\"_index\":59,\"name\":{\"61\":{}},\"parent\":{\"62\":{},\"63\":{},\"64\":{},\"65\":{},\"66\":{},\"67\":{},\"68\":{},\"69\":{}}}],[\"printf32\",{\"_index\":13,\"name\":{\"13\":{}},\"parent\":{}}],[\"printf64\",{\"_index\":14,\"name\":{\"14\":{}},\"parent\":{}}],[\"printi16\",{\"_index\":7,\"name\":{\"7\":{}},\"parent\":{}}],[\"printi32\",{\"_index\":10,\"name\":{\"10\":{}},\"parent\":{}}],[\"printi8\",{\"_index\":4,\"name\":{\"4\":{}},\"parent\":{}}],[\"printu16\",{\"_index\":8,\"name\":{\"8\":{}},\"parent\":{}}],[\"printu16hex\",{\"_index\":9,\"name\":{\"9\":{}},\"parent\":{}}],[\"printu32\",{\"_index\":11,\"name\":{\"11\":{}},\"parent\":{}}],[\"printu32hex\",{\"_index\":12,\"name\":{\"12\":{}},\"parent\":{}}],[\"printu8\",{\"_index\":5,\"name\":{\"5\":{}},\"parent\":{}}],[\"printu8hex\",{\"_index\":6,\"name\":{\"6\":{}},\"parent\":{}}],[\"removeid\",{\"_index\":63,\"name\":{\"67\":{}},\"parent\":{}}],[\"setstring\",{\"_index\":58,\"name\":{\"60\":{}},\"parent\":{}}],[\"u16\",{\"_index\":30,\"name\":{\"30\":{}},\"parent\":{}}],[\"u32\",{\"_index\":32,\"name\":{\"32\":{}},\"parent\":{}}],[\"u8\",{\"_index\":28,\"name\":{\"28\":{}},\"parent\":{}}],[\"utf8decoder\",{\"_index\":35,\"name\":{\"35\":{}},\"parent\":{}}],[\"utf8encoder\",{\"_index\":36,\"name\":{\"36\":{}},\"parent\":{}}],[\"wasmbridge\",{\"_index\":25,\"name\":{\"25\":{}},\"parent\":{\"26\":{},\"27\":{},\"28\":{},\"29\":{},\"30\":{},\"31\":{},\"32\":{},\"33\":{},\"34\":{},\"35\":{},\"36\":{},\"37\":{},\"38\":{},\"39\":{},\"40\":{},\"41\":{},\"42\":{},\"43\":{},\"44\":{},\"45\":{},\"46\":{},\"47\":{},\"48\":{},\"49\":{},\"50\":{},\"51\":{},\"52\":{},\"53\":{},\"54\":{},\"55\":{},\"56\":{},\"57\":{},\"58\":{},\"59\":{},\"60\":{}}}]],\"pipeline\":[]}}");
|