@fluffylabs/anan-as 1.0.0-791e5e1 → 1.0.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/README.md CHANGED
@@ -96,7 +96,7 @@ $ npm ci
96
96
  To build the WASM modules (in `./build/{release,debug}.wasm`):
97
97
 
98
98
  ```
99
- $ npm run build
99
+ $ npm build
100
100
  ```
101
101
 
102
102
  To run the example in the browser at [http://localhost:3000](http://localhost:3000).
@@ -0,0 +1,210 @@
1
+ declare namespace __AdaptedExports {
2
+ /** Exported memory */
3
+ export const memory: WebAssembly.Memory;
4
+ /**
5
+ * assembly/api-internal/getAssembly
6
+ * @param p `assembly/program/Program`
7
+ * @returns `~lib/string/String`
8
+ */
9
+ export function getAssembly(p: __Internref26): string;
10
+ /**
11
+ * assembly/program-build/wrapAsProgram
12
+ * @param bytecode `~lib/typedarray/Uint8Array`
13
+ * @returns `~lib/typedarray/Uint8Array`
14
+ */
15
+ export function wrapAsProgram(bytecode: Uint8Array): Uint8Array;
16
+ /**
17
+ * assembly/api-debugger/resetJAM
18
+ * @param program `~lib/array/Array<u8>`
19
+ * @param pc `f64`
20
+ * @param initialGas `i64`
21
+ * @param args `~lib/array/Array<u8>`
22
+ * @param hasMetadata `bool`
23
+ */
24
+ export function resetJAM(program: Array<number>, pc: number, initialGas: bigint, args: Array<number>, hasMetadata?: boolean): void;
25
+ /**
26
+ * assembly/api-debugger/resetGeneric
27
+ * @param program `~lib/array/Array<u8>`
28
+ * @param flatRegisters `~lib/array/Array<u8>`
29
+ * @param initialGas `i64`
30
+ * @param hasMetadata `bool`
31
+ */
32
+ export function resetGeneric(program: Array<number>, flatRegisters: Array<number>, initialGas: bigint, hasMetadata?: boolean): void;
33
+ /**
34
+ * assembly/api-debugger/resetGenericWithMemory
35
+ * @param program `~lib/array/Array<u8>`
36
+ * @param flatRegisters `~lib/array/Array<u8>`
37
+ * @param pageMap `~lib/typedarray/Uint8Array`
38
+ * @param chunks `~lib/typedarray/Uint8Array`
39
+ * @param initialGas `i64`
40
+ * @param hasMetadata `bool`
41
+ */
42
+ export function resetGenericWithMemory(program: Array<number>, flatRegisters: Array<number>, pageMap: Uint8Array, chunks: Uint8Array, initialGas: bigint, hasMetadata?: boolean): void;
43
+ /**
44
+ * assembly/api-debugger/nextStep
45
+ * @returns `bool`
46
+ */
47
+ export function nextStep(): boolean;
48
+ /**
49
+ * assembly/api-debugger/nSteps
50
+ * @param steps `u32`
51
+ * @returns `bool`
52
+ */
53
+ export function nSteps(steps: number): boolean;
54
+ /**
55
+ * assembly/api-debugger/getProgramCounter
56
+ * @returns `u32`
57
+ */
58
+ export function getProgramCounter(): number;
59
+ /**
60
+ * assembly/api-debugger/setNextProgramCounter
61
+ * @param pc `u32`
62
+ */
63
+ export function setNextProgramCounter(pc: number): void;
64
+ /**
65
+ * assembly/api-debugger/getStatus
66
+ * @returns `u8`
67
+ */
68
+ export function getStatus(): number;
69
+ /**
70
+ * assembly/api-debugger/getExitArg
71
+ * @returns `u32`
72
+ */
73
+ export function getExitArg(): number;
74
+ /**
75
+ * assembly/api-debugger/getGasLeft
76
+ * @returns `i64`
77
+ */
78
+ export function getGasLeft(): bigint;
79
+ /**
80
+ * assembly/api-debugger/setGasLeft
81
+ * @param gas `i64`
82
+ */
83
+ export function setGasLeft(gas: bigint): void;
84
+ /**
85
+ * assembly/api-debugger/getRegisters
86
+ * @returns `~lib/typedarray/Uint8Array`
87
+ */
88
+ export function getRegisters(): Uint8Array;
89
+ /**
90
+ * assembly/api-debugger/setRegisters
91
+ * @param flatRegisters `~lib/array/Array<u8>`
92
+ */
93
+ export function setRegisters(flatRegisters: Array<number>): void;
94
+ /**
95
+ * assembly/api-debugger/getPageDump
96
+ * @param index `u32`
97
+ * @returns `~lib/typedarray/Uint8Array`
98
+ */
99
+ export function getPageDump(index: number): Uint8Array;
100
+ /**
101
+ * assembly/api-debugger/setMemory
102
+ * @param address `u32`
103
+ * @param data `~lib/typedarray/Uint8Array`
104
+ */
105
+ export function setMemory(address: number, data: Uint8Array): void;
106
+ /** assembly/api-utils/InputKind */
107
+ export enum InputKind {
108
+ /** @type `i32` */
109
+ Generic,
110
+ /** @type `i32` */
111
+ SPI,
112
+ }
113
+ /** assembly/api-utils/HasMetadata */
114
+ export enum HasMetadata {
115
+ /** @type `i32` */
116
+ Yes,
117
+ /** @type `i32` */
118
+ No,
119
+ }
120
+ /**
121
+ * assembly/api-utils/getGasCosts
122
+ * @param input `~lib/array/Array<u8>`
123
+ * @param kind `i32`
124
+ * @param withMetadata `i32`
125
+ * @returns `~lib/array/Array<assembly/gas-costs/BlockGasCost>`
126
+ */
127
+ export function getGasCosts(input: Array<number>, kind: number, withMetadata: number): Array<__Record50<never>>;
128
+ /**
129
+ * assembly/api-utils/disassemble
130
+ * @param input `~lib/array/Array<u8>`
131
+ * @param kind `i32`
132
+ * @param withMetadata `i32`
133
+ * @returns `~lib/string/String`
134
+ */
135
+ export function disassemble(input: Array<number>, kind: number, withMetadata: number): string;
136
+ /**
137
+ * assembly/api-utils/prepareProgram
138
+ * @param kind `i32`
139
+ * @param hasMetadata `i32`
140
+ * @param program `~lib/array/Array<u8>`
141
+ * @param initialRegisters `~lib/array/Array<u64>`
142
+ * @param initialPageMap `~lib/array/Array<assembly/api-internal/InitialPage>`
143
+ * @param initialMemory `~lib/array/Array<assembly/api-internal/InitialChunk>`
144
+ * @param args `~lib/array/Array<u8>`
145
+ * @returns `assembly/spi/StandardProgram`
146
+ */
147
+ export function prepareProgram(kind: number, hasMetadata: number, program: Array<number>, initialRegisters: Array<bigint>, initialPageMap: Array<__Record46<undefined>>, initialMemory: Array<__Record48<undefined>>, args: Array<number>): __Internref42;
148
+ /**
149
+ * assembly/api-utils/runProgram
150
+ * @param program `assembly/spi/StandardProgram`
151
+ * @param initialGas `i64`
152
+ * @param programCounter `u32`
153
+ * @param logs `bool`
154
+ * @param useSbrkGas `bool`
155
+ * @returns `assembly/api-internal/VmOutput`
156
+ */
157
+ export function runProgram(program: __Internref42, initialGas?: bigint, programCounter?: number, logs?: boolean, useSbrkGas?: boolean): __Record55<never>;
158
+ }
159
+ /** assembly/program/Program */
160
+ declare class __Internref26 extends Number {
161
+ private __nominal26: symbol;
162
+ private __nominal0: symbol;
163
+ }
164
+ /** assembly/gas-costs/BlockGasCost */
165
+ declare interface __Record50<TOmittable> {
166
+ /** @type `u32` */
167
+ pc: number | TOmittable;
168
+ /** @type `u64` */
169
+ gas: bigint | TOmittable;
170
+ }
171
+ /** assembly/api-internal/InitialPage */
172
+ declare interface __Record46<TOmittable> {
173
+ /** @type `u32` */
174
+ address: number | TOmittable;
175
+ /** @type `u32` */
176
+ length: number | TOmittable;
177
+ /** @type `i32` */
178
+ access: number | TOmittable;
179
+ }
180
+ /** assembly/api-internal/InitialChunk */
181
+ declare interface __Record48<TOmittable> {
182
+ /** @type `u32` */
183
+ address: number | TOmittable;
184
+ /** @type `~lib/array/Array<u8>` */
185
+ data: Array<number>;
186
+ }
187
+ /** assembly/spi/StandardProgram */
188
+ declare class __Internref42 extends Number {
189
+ private __nominal42: symbol;
190
+ private __nominal0: symbol;
191
+ }
192
+ /** assembly/api-internal/VmOutput */
193
+ declare interface __Record55<TOmittable> {
194
+ /** @type `i32` */
195
+ status: number | TOmittable;
196
+ /** @type `~lib/array/Array<u64>` */
197
+ registers: Array<bigint>;
198
+ /** @type `u32` */
199
+ pc: number | TOmittable;
200
+ /** @type `~lib/array/Array<assembly/api-internal/InitialChunk>` */
201
+ memory: Array<__Record48<never>>;
202
+ /** @type `i64` */
203
+ gas: bigint | TOmittable;
204
+ /** @type `u32` */
205
+ exitCode: number | TOmittable;
206
+ }
207
+ /** Instantiates the compiled WebAssembly module with the given imports. */
208
+ export declare function instantiate(module: WebAssembly.Module, imports: {
209
+ env: unknown,
210
+ }): Promise<typeof __AdaptedExports>;
@@ -0,0 +1,372 @@
1
+ export async function instantiate(module, imports = {}) {
2
+ const adaptedImports = {
3
+ env: Object.setPrototypeOf({
4
+ abort(message, fileName, lineNumber, columnNumber) {
5
+ // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void
6
+ message = __liftString(message >>> 0);
7
+ fileName = __liftString(fileName >>> 0);
8
+ lineNumber = lineNumber >>> 0;
9
+ columnNumber = columnNumber >>> 0;
10
+ (() => {
11
+ // @external.js
12
+ throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`);
13
+ })();
14
+ },
15
+ "console.log"(text) {
16
+ // ~lib/bindings/dom/console.log(~lib/string/String) => void
17
+ text = __liftString(text >>> 0);
18
+ console.log(text);
19
+ },
20
+ }, Object.assign(Object.create(globalThis), imports.env || {})),
21
+ };
22
+ const { exports } = await WebAssembly.instantiate(module, adaptedImports);
23
+ const memory = exports.memory || imports.env.memory;
24
+ const adaptedExports = Object.setPrototypeOf({
25
+ getAssembly(p) {
26
+ // assembly/api-internal/getAssembly(assembly/program/Program) => ~lib/string/String
27
+ p = __lowerInternref(p) || __notnull();
28
+ return __liftString(exports.getAssembly(p) >>> 0);
29
+ },
30
+ wrapAsProgram(bytecode) {
31
+ // assembly/program-build/wrapAsProgram(~lib/typedarray/Uint8Array) => ~lib/typedarray/Uint8Array
32
+ bytecode = __lowerTypedArray(Uint8Array, 10, 0, bytecode) || __notnull();
33
+ return __liftTypedArray(Uint8Array, exports.wrapAsProgram(bytecode) >>> 0);
34
+ },
35
+ resetJAM(program, pc, initialGas, args, hasMetadata) {
36
+ // assembly/api-debugger/resetJAM(~lib/array/Array<u8>, f64, i64, ~lib/array/Array<u8>, bool?) => void
37
+ program = __retain(__lowerArray(__setU8, 6, 0, program) || __notnull());
38
+ initialGas = initialGas || 0n;
39
+ args = __lowerArray(__setU8, 6, 0, args) || __notnull();
40
+ hasMetadata = hasMetadata ? 1 : 0;
41
+ try {
42
+ exports.__setArgumentsLength(arguments.length);
43
+ exports.resetJAM(program, pc, initialGas, args, hasMetadata);
44
+ } finally {
45
+ __release(program);
46
+ }
47
+ },
48
+ resetGeneric(program, flatRegisters, initialGas, hasMetadata) {
49
+ // assembly/api-debugger/resetGeneric(~lib/array/Array<u8>, ~lib/array/Array<u8>, i64, bool?) => void
50
+ program = __retain(__lowerArray(__setU8, 6, 0, program) || __notnull());
51
+ flatRegisters = __lowerArray(__setU8, 6, 0, flatRegisters) || __notnull();
52
+ initialGas = initialGas || 0n;
53
+ hasMetadata = hasMetadata ? 1 : 0;
54
+ try {
55
+ exports.__setArgumentsLength(arguments.length);
56
+ exports.resetGeneric(program, flatRegisters, initialGas, hasMetadata);
57
+ } finally {
58
+ __release(program);
59
+ }
60
+ },
61
+ resetGenericWithMemory(program, flatRegisters, pageMap, chunks, initialGas, hasMetadata) {
62
+ // assembly/api-debugger/resetGenericWithMemory(~lib/array/Array<u8>, ~lib/array/Array<u8>, ~lib/typedarray/Uint8Array, ~lib/typedarray/Uint8Array, i64, bool?) => void
63
+ program = __retain(__lowerArray(__setU8, 6, 0, program) || __notnull());
64
+ flatRegisters = __retain(__lowerArray(__setU8, 6, 0, flatRegisters) || __notnull());
65
+ pageMap = __retain(__lowerTypedArray(Uint8Array, 10, 0, pageMap) || __notnull());
66
+ chunks = __lowerTypedArray(Uint8Array, 10, 0, chunks) || __notnull();
67
+ initialGas = initialGas || 0n;
68
+ hasMetadata = hasMetadata ? 1 : 0;
69
+ try {
70
+ exports.__setArgumentsLength(arguments.length);
71
+ exports.resetGenericWithMemory(program, flatRegisters, pageMap, chunks, initialGas, hasMetadata);
72
+ } finally {
73
+ __release(program);
74
+ __release(flatRegisters);
75
+ __release(pageMap);
76
+ }
77
+ },
78
+ nextStep() {
79
+ // assembly/api-debugger/nextStep() => bool
80
+ return exports.nextStep() != 0;
81
+ },
82
+ nSteps(steps) {
83
+ // assembly/api-debugger/nSteps(u32) => bool
84
+ return exports.nSteps(steps) != 0;
85
+ },
86
+ getProgramCounter() {
87
+ // assembly/api-debugger/getProgramCounter() => u32
88
+ return exports.getProgramCounter() >>> 0;
89
+ },
90
+ getExitArg() {
91
+ // assembly/api-debugger/getExitArg() => u32
92
+ return exports.getExitArg() >>> 0;
93
+ },
94
+ setGasLeft(gas) {
95
+ // assembly/api-debugger/setGasLeft(i64) => void
96
+ gas = gas || 0n;
97
+ exports.setGasLeft(gas);
98
+ },
99
+ getRegisters() {
100
+ // assembly/api-debugger/getRegisters() => ~lib/typedarray/Uint8Array
101
+ return __liftTypedArray(Uint8Array, exports.getRegisters() >>> 0);
102
+ },
103
+ setRegisters(flatRegisters) {
104
+ // assembly/api-debugger/setRegisters(~lib/array/Array<u8>) => void
105
+ flatRegisters = __lowerArray(__setU8, 6, 0, flatRegisters) || __notnull();
106
+ exports.setRegisters(flatRegisters);
107
+ },
108
+ getPageDump(index) {
109
+ // assembly/api-debugger/getPageDump(u32) => ~lib/typedarray/Uint8Array
110
+ return __liftTypedArray(Uint8Array, exports.getPageDump(index) >>> 0);
111
+ },
112
+ setMemory(address, data) {
113
+ // assembly/api-debugger/setMemory(u32, ~lib/typedarray/Uint8Array) => void
114
+ data = __lowerTypedArray(Uint8Array, 10, 0, data) || __notnull();
115
+ exports.setMemory(address, data);
116
+ },
117
+ InputKind: (values => (
118
+ // assembly/api-utils/InputKind
119
+ values[values.Generic = exports["InputKind.Generic"].valueOf()] = "Generic",
120
+ values[values.SPI = exports["InputKind.SPI"].valueOf()] = "SPI",
121
+ values
122
+ ))({}),
123
+ HasMetadata: (values => (
124
+ // assembly/api-utils/HasMetadata
125
+ values[values.Yes = exports["HasMetadata.Yes"].valueOf()] = "Yes",
126
+ values[values.No = exports["HasMetadata.No"].valueOf()] = "No",
127
+ values
128
+ ))({}),
129
+ getGasCosts(input, kind, withMetadata) {
130
+ // assembly/api-utils/getGasCosts(~lib/array/Array<u8>, i32, i32) => ~lib/array/Array<assembly/gas-costs/BlockGasCost>
131
+ input = __lowerArray(__setU8, 6, 0, input) || __notnull();
132
+ return __liftArray(pointer => __liftRecord50(__getU32(pointer)), 2, exports.getGasCosts(input, kind, withMetadata) >>> 0);
133
+ },
134
+ disassemble(input, kind, withMetadata) {
135
+ // assembly/api-utils/disassemble(~lib/array/Array<u8>, i32, i32) => ~lib/string/String
136
+ input = __lowerArray(__setU8, 6, 0, input) || __notnull();
137
+ return __liftString(exports.disassemble(input, kind, withMetadata) >>> 0);
138
+ },
139
+ prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args) {
140
+ // assembly/api-utils/prepareProgram(i32, i32, ~lib/array/Array<u8>, ~lib/array/Array<u64>, ~lib/array/Array<assembly/api-internal/InitialPage>, ~lib/array/Array<assembly/api-internal/InitialChunk>, ~lib/array/Array<u8>) => assembly/spi/StandardProgram
141
+ program = __retain(__lowerArray(__setU8, 6, 0, program) || __notnull());
142
+ initialRegisters = __retain(__lowerArray(__setU64, 52, 3, initialRegisters) || __notnull());
143
+ initialPageMap = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord46(value) || __notnull()); }, 47, 2, initialPageMap) || __notnull());
144
+ initialMemory = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord48(value) || __notnull()); }, 49, 2, initialMemory) || __notnull());
145
+ args = __lowerArray(__setU8, 6, 0, args) || __notnull();
146
+ try {
147
+ return __liftInternref(exports.prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args) >>> 0);
148
+ } finally {
149
+ __release(program);
150
+ __release(initialRegisters);
151
+ __release(initialPageMap);
152
+ __release(initialMemory);
153
+ }
154
+ },
155
+ runProgram(program, initialGas, programCounter, logs, useSbrkGas) {
156
+ // assembly/api-utils/runProgram(assembly/spi/StandardProgram, i64?, u32?, bool?, bool?) => assembly/api-internal/VmOutput
157
+ program = __lowerInternref(program) || __notnull();
158
+ initialGas = initialGas || 0n;
159
+ logs = logs ? 1 : 0;
160
+ useSbrkGas = useSbrkGas ? 1 : 0;
161
+ exports.__setArgumentsLength(arguments.length);
162
+ return __liftRecord55(exports.runProgram(program, initialGas, programCounter, logs, useSbrkGas) >>> 0);
163
+ },
164
+ }, exports);
165
+ function __liftRecord50(pointer) {
166
+ // assembly/gas-costs/BlockGasCost
167
+ // Hint: Opt-out from lifting as a record by providing an empty constructor
168
+ if (!pointer) return null;
169
+ return {
170
+ pc: __getU32(pointer + 0),
171
+ gas: __getU64(pointer + 8),
172
+ };
173
+ }
174
+ function __lowerRecord46(value) {
175
+ // assembly/api-internal/InitialPage
176
+ // Hint: Opt-out from lowering as a record by providing an empty constructor
177
+ if (value == null) return 0;
178
+ const pointer = exports.__pin(exports.__new(12, 46));
179
+ __setU32(pointer + 0, value.address);
180
+ __setU32(pointer + 4, value.length);
181
+ __setU32(pointer + 8, value.access);
182
+ exports.__unpin(pointer);
183
+ return pointer;
184
+ }
185
+ function __lowerRecord48(value) {
186
+ // assembly/api-internal/InitialChunk
187
+ // Hint: Opt-out from lowering as a record by providing an empty constructor
188
+ if (value == null) return 0;
189
+ const pointer = exports.__pin(exports.__new(8, 48));
190
+ __setU32(pointer + 0, value.address);
191
+ __setU32(pointer + 4, __lowerArray(__setU8, 6, 0, value.data) || __notnull());
192
+ exports.__unpin(pointer);
193
+ return pointer;
194
+ }
195
+ function __liftRecord48(pointer) {
196
+ // assembly/api-internal/InitialChunk
197
+ // Hint: Opt-out from lifting as a record by providing an empty constructor
198
+ if (!pointer) return null;
199
+ return {
200
+ address: __getU32(pointer + 0),
201
+ data: __liftArray(__getU8, 0, __getU32(pointer + 4)),
202
+ };
203
+ }
204
+ function __liftRecord55(pointer) {
205
+ // assembly/api-internal/VmOutput
206
+ // Hint: Opt-out from lifting as a record by providing an empty constructor
207
+ if (!pointer) return null;
208
+ return {
209
+ status: __getI32(pointer + 0),
210
+ registers: __liftArray(pointer => BigInt.asUintN(64, __getU64(pointer)), 3, __getU32(pointer + 4)),
211
+ pc: __getU32(pointer + 8),
212
+ memory: __liftArray(pointer => __liftRecord48(__getU32(pointer)), 2, __getU32(pointer + 12)),
213
+ gas: __getI64(pointer + 16),
214
+ exitCode: __getU32(pointer + 24),
215
+ };
216
+ }
217
+ function __liftString(pointer) {
218
+ if (!pointer) return null;
219
+ const
220
+ end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1,
221
+ memoryU16 = new Uint16Array(memory.buffer);
222
+ let
223
+ start = pointer >>> 1,
224
+ string = "";
225
+ while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024));
226
+ return string + String.fromCharCode(...memoryU16.subarray(start, end));
227
+ }
228
+ function __liftArray(liftElement, align, pointer) {
229
+ if (!pointer) return null;
230
+ const
231
+ dataStart = __getU32(pointer + 4),
232
+ length = __dataview.getUint32(pointer + 12, true),
233
+ values = new Array(length);
234
+ for (let i = 0; i < length; ++i) values[i] = liftElement(dataStart + (i << align >>> 0));
235
+ return values;
236
+ }
237
+ function __lowerArray(lowerElement, id, align, values) {
238
+ if (values == null) return 0;
239
+ const
240
+ length = values.length,
241
+ buffer = exports.__pin(exports.__new(length << align, 1)) >>> 0,
242
+ header = exports.__pin(exports.__new(16, id)) >>> 0;
243
+ __setU32(header + 0, buffer);
244
+ __dataview.setUint32(header + 4, buffer, true);
245
+ __dataview.setUint32(header + 8, length << align, true);
246
+ __dataview.setUint32(header + 12, length, true);
247
+ for (let i = 0; i < length; ++i) lowerElement(buffer + (i << align >>> 0), values[i]);
248
+ exports.__unpin(buffer);
249
+ exports.__unpin(header);
250
+ return header;
251
+ }
252
+ function __liftTypedArray(constructor, pointer) {
253
+ if (!pointer) return null;
254
+ return new constructor(
255
+ memory.buffer,
256
+ __getU32(pointer + 4),
257
+ __dataview.getUint32(pointer + 8, true) / constructor.BYTES_PER_ELEMENT
258
+ ).slice();
259
+ }
260
+ function __lowerTypedArray(constructor, id, align, values) {
261
+ if (values == null) return 0;
262
+ const
263
+ length = values.length,
264
+ buffer = exports.__pin(exports.__new(length << align, 1)) >>> 0,
265
+ header = exports.__new(12, id) >>> 0;
266
+ __setU32(header + 0, buffer);
267
+ __dataview.setUint32(header + 4, buffer, true);
268
+ __dataview.setUint32(header + 8, length << align, true);
269
+ new constructor(memory.buffer, buffer, length).set(values);
270
+ exports.__unpin(buffer);
271
+ return header;
272
+ }
273
+ class Internref extends Number {}
274
+ const registry = new FinalizationRegistry(__release);
275
+ function __liftInternref(pointer) {
276
+ if (!pointer) return null;
277
+ const sentinel = new Internref(__retain(pointer));
278
+ registry.register(sentinel, pointer);
279
+ return sentinel;
280
+ }
281
+ function __lowerInternref(value) {
282
+ if (value == null) return 0;
283
+ if (value instanceof Internref) return value.valueOf();
284
+ throw TypeError("internref expected");
285
+ }
286
+ const refcounts = new Map();
287
+ function __retain(pointer) {
288
+ if (pointer) {
289
+ const refcount = refcounts.get(pointer);
290
+ if (refcount) refcounts.set(pointer, refcount + 1);
291
+ else refcounts.set(exports.__pin(pointer), 1);
292
+ }
293
+ return pointer;
294
+ }
295
+ function __release(pointer) {
296
+ if (pointer) {
297
+ const refcount = refcounts.get(pointer);
298
+ if (refcount === 1) exports.__unpin(pointer), refcounts.delete(pointer);
299
+ else if (refcount) refcounts.set(pointer, refcount - 1);
300
+ else throw Error(`invalid refcount '${refcount}' for reference '${pointer}'`);
301
+ }
302
+ }
303
+ function __notnull() {
304
+ throw TypeError("value must not be null");
305
+ }
306
+ let __dataview = new DataView(memory.buffer);
307
+ function __setU8(pointer, value) {
308
+ try {
309
+ __dataview.setUint8(pointer, value, true);
310
+ } catch {
311
+ __dataview = new DataView(memory.buffer);
312
+ __dataview.setUint8(pointer, value, true);
313
+ }
314
+ }
315
+ function __setU32(pointer, value) {
316
+ try {
317
+ __dataview.setUint32(pointer, value, true);
318
+ } catch {
319
+ __dataview = new DataView(memory.buffer);
320
+ __dataview.setUint32(pointer, value, true);
321
+ }
322
+ }
323
+ function __setU64(pointer, value) {
324
+ try {
325
+ __dataview.setBigUint64(pointer, value, true);
326
+ } catch {
327
+ __dataview = new DataView(memory.buffer);
328
+ __dataview.setBigUint64(pointer, value, true);
329
+ }
330
+ }
331
+ function __getU8(pointer) {
332
+ try {
333
+ return __dataview.getUint8(pointer, true);
334
+ } catch {
335
+ __dataview = new DataView(memory.buffer);
336
+ return __dataview.getUint8(pointer, true);
337
+ }
338
+ }
339
+ function __getI32(pointer) {
340
+ try {
341
+ return __dataview.getInt32(pointer, true);
342
+ } catch {
343
+ __dataview = new DataView(memory.buffer);
344
+ return __dataview.getInt32(pointer, true);
345
+ }
346
+ }
347
+ function __getU32(pointer) {
348
+ try {
349
+ return __dataview.getUint32(pointer, true);
350
+ } catch {
351
+ __dataview = new DataView(memory.buffer);
352
+ return __dataview.getUint32(pointer, true);
353
+ }
354
+ }
355
+ function __getI64(pointer) {
356
+ try {
357
+ return __dataview.getBigInt64(pointer, true);
358
+ } catch {
359
+ __dataview = new DataView(memory.buffer);
360
+ return __dataview.getBigInt64(pointer, true);
361
+ }
362
+ }
363
+ function __getU64(pointer) {
364
+ try {
365
+ return __dataview.getBigUint64(pointer, true);
366
+ } catch {
367
+ __dataview = new DataView(memory.buffer);
368
+ return __dataview.getBigUint64(pointer, true);
369
+ }
370
+ }
371
+ return adaptedExports;
372
+ }
Binary file
@@ -0,0 +1,24 @@
1
+ /** Exported memory */
2
+ export declare const memory: WebAssembly.Memory;
3
+ /**
4
+ * assembly/tests/test
5
+ * @param name `~lib/string/String`
6
+ * @param cb `() => void`
7
+ */
8
+ export declare function test(name: string, cb: __Internref21): void;
9
+ /**
10
+ * assembly/tests/assertEqual<u64>
11
+ * @param a `u64`
12
+ * @param b `u64`
13
+ * @param msg `~lib/string/String`
14
+ */
15
+ export declare function assertEqual(a: bigint, b: bigint, msg?: string): void;
16
+ /**
17
+ * assembly/tests/runTests
18
+ */
19
+ export declare function runTests(): void;
20
+ /** ~lib/function/Function<%28%29=>void> */
21
+ declare class __Internref21 extends Number {
22
+ private __nominal21: symbol;
23
+ private __nominal0: symbol;
24
+ }
package/build/tests.js ADDED
@@ -0,0 +1,104 @@
1
+ async function instantiate(module, imports = {}) {
2
+ const adaptedImports = {
3
+ env: Object.assign(Object.create(globalThis), imports.env || {}, {
4
+ abort(message, fileName, lineNumber, columnNumber) {
5
+ // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void
6
+ message = __liftString(message >>> 0);
7
+ fileName = __liftString(fileName >>> 0);
8
+ lineNumber = lineNumber >>> 0;
9
+ columnNumber = columnNumber >>> 0;
10
+ (() => {
11
+ // @external.js
12
+ throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`);
13
+ })();
14
+ },
15
+ "console.log"(text) {
16
+ // ~lib/bindings/dom/console.log(~lib/string/String) => void
17
+ text = __liftString(text >>> 0);
18
+ console.log(text);
19
+ },
20
+ }),
21
+ };
22
+ const { exports } = await WebAssembly.instantiate(module, adaptedImports);
23
+ const memory = exports.memory || imports.env.memory;
24
+ const adaptedExports = Object.setPrototypeOf({
25
+ test(name, cb) {
26
+ // assembly/tests/test(~lib/string/String, () => void) => void
27
+ name = __retain(__lowerString(name) || __notnull());
28
+ cb = __lowerInternref(cb) || __notnull();
29
+ try {
30
+ exports.test(name, cb);
31
+ } finally {
32
+ __release(name);
33
+ }
34
+ },
35
+ assertEqual(a, b, msg) {
36
+ // assembly/tests/assertEqual<u64>(u64, u64, ~lib/string/String?) => void
37
+ a = a || 0n;
38
+ b = b || 0n;
39
+ msg = __lowerString(msg) || __notnull();
40
+ exports.__setArgumentsLength(arguments.length);
41
+ exports.assertEqual(a, b, msg);
42
+ },
43
+ }, exports);
44
+ function __liftString(pointer) {
45
+ if (!pointer) return null;
46
+ const
47
+ end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1,
48
+ memoryU16 = new Uint16Array(memory.buffer);
49
+ let
50
+ start = pointer >>> 1,
51
+ string = "";
52
+ while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024));
53
+ return string + String.fromCharCode(...memoryU16.subarray(start, end));
54
+ }
55
+ function __lowerString(value) {
56
+ if (value == null) return 0;
57
+ const
58
+ length = value.length,
59
+ pointer = exports.__new(length << 1, 2) >>> 0,
60
+ memoryU16 = new Uint16Array(memory.buffer);
61
+ for (let i = 0; i < length; ++i) memoryU16[(pointer >>> 1) + i] = value.charCodeAt(i);
62
+ return pointer;
63
+ }
64
+ class Internref extends Number {}
65
+ function __lowerInternref(value) {
66
+ if (value == null) return 0;
67
+ if (value instanceof Internref) return value.valueOf();
68
+ throw TypeError("internref expected");
69
+ }
70
+ const refcounts = new Map();
71
+ function __retain(pointer) {
72
+ if (pointer) {
73
+ const refcount = refcounts.get(pointer);
74
+ if (refcount) refcounts.set(pointer, refcount + 1);
75
+ else refcounts.set(exports.__pin(pointer), 1);
76
+ }
77
+ return pointer;
78
+ }
79
+ function __release(pointer) {
80
+ if (pointer) {
81
+ const refcount = refcounts.get(pointer);
82
+ if (refcount === 1) exports.__unpin(pointer), refcounts.delete(pointer);
83
+ else if (refcount) refcounts.set(pointer, refcount - 1);
84
+ else throw Error(`invalid refcount '${refcount}' for reference '${pointer}'`);
85
+ }
86
+ }
87
+ function __notnull() {
88
+ throw TypeError("value must not be null");
89
+ }
90
+ return adaptedExports;
91
+ }
92
+ export const {
93
+ memory,
94
+ test,
95
+ assertEqual,
96
+ runTests,
97
+ } = await (async url => instantiate(
98
+ await (async () => {
99
+ const isNodeOrBun = typeof process != "undefined" && process.versions != null && (process.versions.node != null || process.versions.bun != null);
100
+ if (isNodeOrBun) { return globalThis.WebAssembly.compile(await (await import("node:fs/promises")).readFile(url)); }
101
+ else { return await globalThis.WebAssembly.compileStreaming(globalThis.fetch(url)); }
102
+ })(), {
103
+ }
104
+ ))(new URL("tests.wasm", import.meta.url));
Binary file
package/package.json CHANGED
@@ -1,11 +1,8 @@
1
1
  {
2
2
  "name": "@fluffylabs/anan-as",
3
3
  "description": "AssemblyScript PVM interpreter.",
4
- "version": "1.0.0-791e5e1",
4
+ "version": "1.0.0",
5
5
  "main": "./bin/index.js",
6
- "repository": {
7
- "url": "https://github.com/tomusdrw/anan-as"
8
- },
9
6
  "scripts": {
10
7
  "asbuild": "npm run asbuild:debug && npm run asbuild:release && npm run asbuild:raw && npm run asbuild:release-mini",
11
8
  "asbuild:debug": "asc assembly/index.ts --target debug",
@@ -60,8 +57,8 @@
60
57
  "types": "./build/release.d.ts"
61
58
  },
62
59
  "./release-mini": {
63
- "import": "./build/release-mini.js",
64
- "types": "./build/release-mini.d.ts"
60
+ "import": "./build/release.js",
61
+ "types": "./build/release.d.ts"
65
62
  },
66
63
  "./raw": {
67
64
  "import": "./build/debug-raw.js",