@swf2es/codegen 0.0.0-stage → 0.1.1
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/LICENSE +202 -0
- package/LICENSE.third-party +142 -0
- package/README.md +26 -2
- package/dist/codegen.d.ts +289 -0
- package/dist/codegen.js +308 -0
- package/dist/codegen.wasm +0 -0
- package/dist/index.d.ts +315 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +406 -0
- package/dist/index.js.map +1 -0
- package/package.json +45 -3
- package/src/index.ts +738 -0
- package/src/webassembly.d.ts +30 -0
package/dist/codegen.js
ADDED
|
@@ -0,0 +1,308 @@
|
|
|
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
|
+
}, Object.assign(Object.create(globalThis), imports.env || {})),
|
|
16
|
+
};
|
|
17
|
+
const { exports } = await WebAssembly.instantiate(module, adaptedImports);
|
|
18
|
+
const memory = exports.memory || imports.env.memory;
|
|
19
|
+
const adaptedExports = Object.setPrototypeOf({
|
|
20
|
+
compilerVersion() {
|
|
21
|
+
// assembly/index/compilerVersion() => ~lib/string/String
|
|
22
|
+
return __liftString(exports.compilerVersion() >>> 0);
|
|
23
|
+
},
|
|
24
|
+
abcVersion(abc) {
|
|
25
|
+
// assembly/index/abcVersion(~lib/typedarray/Uint8Array) => i32
|
|
26
|
+
abc = __lowerTypedArray(Uint8Array, 27, 0, abc) || __notnull();
|
|
27
|
+
return exports.abcVersion(abc);
|
|
28
|
+
},
|
|
29
|
+
actionsEmitEach(swf, offsets, lengths, version, blocks, reuse) {
|
|
30
|
+
// assembly/avm1/compile/actionsEmitEach(~lib/typedarray/Uint8Array, ~lib/typedarray/Int32Array, ~lib/typedarray/Int32Array, i32, ~lib/string/String, bool) => ~lib/string/String
|
|
31
|
+
swf = __retain(__lowerTypedArray(Uint8Array, 27, 0, swf) || __notnull());
|
|
32
|
+
offsets = __retain(__lowerTypedArray(Int32Array, 31, 2, offsets) || __notnull());
|
|
33
|
+
lengths = __retain(__lowerTypedArray(Int32Array, 31, 2, lengths) || __notnull());
|
|
34
|
+
blocks = __lowerString(blocks) || __notnull();
|
|
35
|
+
reuse = reuse ? 1 : 0;
|
|
36
|
+
try {
|
|
37
|
+
return __liftString(exports.actionsEmitEach(swf, offsets, lengths, version, blocks, reuse) >>> 0);
|
|
38
|
+
} finally {
|
|
39
|
+
__release(swf);
|
|
40
|
+
__release(offsets);
|
|
41
|
+
__release(lengths);
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
actionsEmitEachBytes(swf, offsets, lengths, version, blocks, reuse) {
|
|
45
|
+
// assembly/avm1/compile/actionsEmitEachBytes(~lib/typedarray/Uint8Array, ~lib/typedarray/Int32Array, ~lib/typedarray/Int32Array, i32, ~lib/string/String, bool) => usize
|
|
46
|
+
swf = __retain(__lowerTypedArray(Uint8Array, 27, 0, swf) || __notnull());
|
|
47
|
+
offsets = __retain(__lowerTypedArray(Int32Array, 31, 2, offsets) || __notnull());
|
|
48
|
+
lengths = __retain(__lowerTypedArray(Int32Array, 31, 2, lengths) || __notnull());
|
|
49
|
+
blocks = __lowerString(blocks) || __notnull();
|
|
50
|
+
reuse = reuse ? 1 : 0;
|
|
51
|
+
try {
|
|
52
|
+
return exports.actionsEmitEachBytes(swf, offsets, lengths, version, blocks, reuse) >>> 0;
|
|
53
|
+
} finally {
|
|
54
|
+
__release(swf);
|
|
55
|
+
__release(offsets);
|
|
56
|
+
__release(lengths);
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
actionsHeldEmitEachBytes(handle, version, blocks) {
|
|
60
|
+
// assembly/avm1/compile/actionsHeldEmitEachBytes(i32, i32, ~lib/string/String) => usize
|
|
61
|
+
blocks = __lowerString(blocks) || __notnull();
|
|
62
|
+
return exports.actionsHeldEmitEachBytes(handle, version, blocks) >>> 0;
|
|
63
|
+
},
|
|
64
|
+
actionsHeldUnitBytes(handle, version, at, end, bound, five) {
|
|
65
|
+
// assembly/avm1/compile/actionsHeldUnitBytes(i32, i32, i32, i32, i32, bool) => usize
|
|
66
|
+
five = five ? 1 : 0;
|
|
67
|
+
return exports.actionsHeldUnitBytes(handle, version, at, end, bound, five) >>> 0;
|
|
68
|
+
},
|
|
69
|
+
actionsHold(handle, swf, offsets, lengths) {
|
|
70
|
+
// assembly/avm1/compile/actionsHold(i32, ~lib/typedarray/Uint8Array, ~lib/typedarray/Int32Array, ~lib/typedarray/Int32Array) => void
|
|
71
|
+
swf = __retain(__lowerTypedArray(Uint8Array, 27, 0, swf) || __notnull());
|
|
72
|
+
offsets = __retain(__lowerTypedArray(Int32Array, 31, 2, offsets) || __notnull());
|
|
73
|
+
lengths = __lowerTypedArray(Int32Array, 31, 2, lengths) || __notnull();
|
|
74
|
+
try {
|
|
75
|
+
exports.actionsHold(handle, swf, offsets, lengths);
|
|
76
|
+
} finally {
|
|
77
|
+
__release(swf);
|
|
78
|
+
__release(offsets);
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
actionsModuleBytes(swf, offsets, lengths, version, keep) {
|
|
82
|
+
// assembly/avm1/compile/actionsModuleBytes(~lib/typedarray/Uint8Array, ~lib/typedarray/Int32Array, ~lib/typedarray/Int32Array, i32, bool?) => usize
|
|
83
|
+
swf = __retain(__lowerTypedArray(Uint8Array, 27, 0, swf) || __notnull());
|
|
84
|
+
offsets = __retain(__lowerTypedArray(Int32Array, 31, 2, offsets) || __notnull());
|
|
85
|
+
lengths = __lowerTypedArray(Int32Array, 31, 2, lengths) || __notnull();
|
|
86
|
+
keep = keep ? 1 : 0;
|
|
87
|
+
try {
|
|
88
|
+
exports.__setArgumentsLength(arguments.length);
|
|
89
|
+
return exports.actionsModuleBytes(swf, offsets, lengths, version, keep) >>> 0;
|
|
90
|
+
} finally {
|
|
91
|
+
__release(swf);
|
|
92
|
+
__release(offsets);
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
actionsModuleEntries() {
|
|
96
|
+
// assembly/avm1/compile/actionsModuleEntries() => ~lib/string/String
|
|
97
|
+
return __liftString(exports.actionsModuleEntries() >>> 0);
|
|
98
|
+
},
|
|
99
|
+
actionsModuleUnits() {
|
|
100
|
+
// assembly/avm1/compile/actionsModuleUnits() => ~lib/string/String
|
|
101
|
+
return __liftString(exports.actionsModuleUnits() >>> 0);
|
|
102
|
+
},
|
|
103
|
+
actionsUnitBytes(swf, offsets, lengths, version, at, end, bound, five) {
|
|
104
|
+
// assembly/avm1/compile/actionsUnitBytes(~lib/typedarray/Uint8Array, ~lib/typedarray/Int32Array, ~lib/typedarray/Int32Array, i32, i32, i32, i32, bool) => usize
|
|
105
|
+
swf = __retain(__lowerTypedArray(Uint8Array, 27, 0, swf) || __notnull());
|
|
106
|
+
offsets = __retain(__lowerTypedArray(Int32Array, 31, 2, offsets) || __notnull());
|
|
107
|
+
lengths = __lowerTypedArray(Int32Array, 31, 2, lengths) || __notnull();
|
|
108
|
+
five = five ? 1 : 0;
|
|
109
|
+
try {
|
|
110
|
+
return exports.actionsUnitBytes(swf, offsets, lengths, version, at, end, bound, five) >>> 0;
|
|
111
|
+
} finally {
|
|
112
|
+
__release(swf);
|
|
113
|
+
__release(offsets);
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
actionsUnitLimits() {
|
|
117
|
+
// assembly/avm1/compile/actionsUnitLimits() => ~lib/typedarray/Float64Array
|
|
118
|
+
return __liftTypedArray(Float64Array, exports.actionsUnitLimits() >>> 0);
|
|
119
|
+
},
|
|
120
|
+
domainAdd(bytes, builtin, appDomain) {
|
|
121
|
+
// assembly/compile/domainAdd(~lib/typedarray/Uint8Array, bool, i32?) => i32
|
|
122
|
+
bytes = __lowerTypedArray(Uint8Array, 27, 0, bytes) || __notnull();
|
|
123
|
+
builtin = builtin ? 1 : 0;
|
|
124
|
+
exports.__setArgumentsLength(arguments.length);
|
|
125
|
+
return exports.domainAdd(bytes, builtin, appDomain);
|
|
126
|
+
},
|
|
127
|
+
domainCompact() {
|
|
128
|
+
// assembly/compile/domainCompact() => bool
|
|
129
|
+
return exports.domainCompact() != 0;
|
|
130
|
+
},
|
|
131
|
+
domainContext(index, after, upTo) {
|
|
132
|
+
// assembly/compile/domainContext(i32?, i32?, i32?) => ~lib/string/String
|
|
133
|
+
exports.__setArgumentsLength(arguments.length);
|
|
134
|
+
return __liftString(exports.domainContext(index, after, upTo) >>> 0);
|
|
135
|
+
},
|
|
136
|
+
domainEmitEach(bodies, reuse, which) {
|
|
137
|
+
// assembly/compile/domainEmitEach(~lib/string/String, bool, i32?) => ~lib/string/String
|
|
138
|
+
bodies = __lowerString(bodies) || __notnull();
|
|
139
|
+
reuse = reuse ? 1 : 0;
|
|
140
|
+
exports.__setArgumentsLength(arguments.length);
|
|
141
|
+
return __liftString(exports.domainEmitEach(bodies, reuse, which) >>> 0);
|
|
142
|
+
},
|
|
143
|
+
domainEmitEachBytes(bodies, reuse, which) {
|
|
144
|
+
// assembly/compile/domainEmitEachBytes(~lib/string/String, bool, i32?) => usize
|
|
145
|
+
bodies = __lowerString(bodies) || __notnull();
|
|
146
|
+
reuse = reuse ? 1 : 0;
|
|
147
|
+
exports.__setArgumentsLength(arguments.length);
|
|
148
|
+
return exports.domainEmitEachBytes(bodies, reuse, which) >>> 0;
|
|
149
|
+
},
|
|
150
|
+
domainFound(appDomain, nsKind, uri, name, abc, asType) {
|
|
151
|
+
// assembly/compile/domainFound(i32, i32, ~lib/string/String, ~lib/string/String, i32, bool) => void
|
|
152
|
+
uri = __retain(__lowerString(uri) || __notnull());
|
|
153
|
+
name = __lowerString(name) || __notnull();
|
|
154
|
+
asType = asType ? 1 : 0;
|
|
155
|
+
try {
|
|
156
|
+
exports.domainFound(appDomain, nsKind, uri, name, abc, asType);
|
|
157
|
+
} finally {
|
|
158
|
+
__release(uri);
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
domainLazyModuleBytes(hashes, index) {
|
|
162
|
+
// assembly/compile/domainLazyModuleBytes(~lib/string/String?, i32?) => usize
|
|
163
|
+
hashes = __lowerString(hashes) || __notnull();
|
|
164
|
+
exports.__setArgumentsLength(arguments.length);
|
|
165
|
+
return exports.domainLazyModuleBytes(hashes, index) >>> 0;
|
|
166
|
+
},
|
|
167
|
+
domainLinked(index) {
|
|
168
|
+
// assembly/compile/domainLinked(i32?) => ~lib/string/String
|
|
169
|
+
exports.__setArgumentsLength(arguments.length);
|
|
170
|
+
return __liftString(exports.domainLinked(index) >>> 0);
|
|
171
|
+
},
|
|
172
|
+
domainLogSince(mark, index) {
|
|
173
|
+
// assembly/compile/domainLogSince(i32, i32?) => ~lib/string/String
|
|
174
|
+
exports.__setArgumentsLength(arguments.length);
|
|
175
|
+
return __liftString(exports.domainLogSince(mark, index) >>> 0);
|
|
176
|
+
},
|
|
177
|
+
domainModule(hashes, index, keep, linkedOnly) {
|
|
178
|
+
// assembly/compile/domainModule(~lib/string/String?, i32?, bool?, bool?) => ~lib/string/String
|
|
179
|
+
hashes = __lowerString(hashes) || __notnull();
|
|
180
|
+
keep = keep ? 1 : 0;
|
|
181
|
+
linkedOnly = linkedOnly ? 1 : 0;
|
|
182
|
+
exports.__setArgumentsLength(arguments.length);
|
|
183
|
+
return __liftString(exports.domainModule(hashes, index, keep, linkedOnly) >>> 0);
|
|
184
|
+
},
|
|
185
|
+
domainModuleBytes(hashes, index, keep, linkedOnly) {
|
|
186
|
+
// assembly/compile/domainModuleBytes(~lib/string/String?, i32?, bool?, bool?) => usize
|
|
187
|
+
hashes = __lowerString(hashes) || __notnull();
|
|
188
|
+
keep = keep ? 1 : 0;
|
|
189
|
+
linkedOnly = linkedOnly ? 1 : 0;
|
|
190
|
+
exports.__setArgumentsLength(arguments.length);
|
|
191
|
+
return exports.domainModuleBytes(hashes, index, keep, linkedOnly) >>> 0;
|
|
192
|
+
},
|
|
193
|
+
domainModuleEntries() {
|
|
194
|
+
// assembly/compile/domainModuleEntries() => ~lib/string/String
|
|
195
|
+
return __liftString(exports.domainModuleEntries() >>> 0);
|
|
196
|
+
},
|
|
197
|
+
domainReplay(log, index) {
|
|
198
|
+
// assembly/compile/domainReplay(~lib/string/String, i32?) => bool
|
|
199
|
+
log = __lowerString(log) || __notnull();
|
|
200
|
+
exports.__setArgumentsLength(arguments.length);
|
|
201
|
+
return exports.domainReplay(log, index) != 0;
|
|
202
|
+
},
|
|
203
|
+
domainRestore(index, bytes) {
|
|
204
|
+
// assembly/compile/domainRestore(i32, ~lib/typedarray/Uint8Array) => i32
|
|
205
|
+
bytes = __lowerTypedArray(Uint8Array, 27, 0, bytes) || __notnull();
|
|
206
|
+
return exports.domainRestore(index, bytes);
|
|
207
|
+
},
|
|
208
|
+
domainRevision() {
|
|
209
|
+
// assembly/compile/domainRevision() => ~lib/string/String
|
|
210
|
+
return __liftString(exports.domainRevision() >>> 0);
|
|
211
|
+
},
|
|
212
|
+
domainSourceMap() {
|
|
213
|
+
// assembly/compile/domainSourceMap() => ~lib/string/String
|
|
214
|
+
return __liftString(exports.domainSourceMap() >>> 0);
|
|
215
|
+
},
|
|
216
|
+
domainUsage() {
|
|
217
|
+
// assembly/compile/domainUsage() => ~lib/string/String
|
|
218
|
+
return __liftString(exports.domainUsage() >>> 0);
|
|
219
|
+
},
|
|
220
|
+
domainWantsCompact() {
|
|
221
|
+
// assembly/compile/domainWantsCompact() => bool
|
|
222
|
+
return exports.domainWantsCompact() != 0;
|
|
223
|
+
},
|
|
224
|
+
outputLength() {
|
|
225
|
+
// assembly/output/outputLength() => u32
|
|
226
|
+
return exports.outputLength() >>> 0;
|
|
227
|
+
},
|
|
228
|
+
}, exports);
|
|
229
|
+
function __liftString(pointer) {
|
|
230
|
+
if (!pointer) return null;
|
|
231
|
+
const
|
|
232
|
+
end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1,
|
|
233
|
+
memoryU16 = new Uint16Array(memory.buffer);
|
|
234
|
+
let
|
|
235
|
+
start = pointer >>> 1,
|
|
236
|
+
string = "";
|
|
237
|
+
while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024));
|
|
238
|
+
return string + String.fromCharCode(...memoryU16.subarray(start, end));
|
|
239
|
+
}
|
|
240
|
+
function __lowerString(value) {
|
|
241
|
+
if (value == null) return 0;
|
|
242
|
+
const
|
|
243
|
+
length = value.length,
|
|
244
|
+
pointer = exports.__new(length << 1, 2) >>> 0,
|
|
245
|
+
memoryU16 = new Uint16Array(memory.buffer);
|
|
246
|
+
for (let i = 0; i < length; ++i) memoryU16[(pointer >>> 1) + i] = value.charCodeAt(i);
|
|
247
|
+
return pointer;
|
|
248
|
+
}
|
|
249
|
+
function __liftTypedArray(constructor, pointer) {
|
|
250
|
+
if (!pointer) return null;
|
|
251
|
+
return new constructor(
|
|
252
|
+
memory.buffer,
|
|
253
|
+
__getU32(pointer + 4),
|
|
254
|
+
__dataview.getUint32(pointer + 8, true) / constructor.BYTES_PER_ELEMENT
|
|
255
|
+
).slice();
|
|
256
|
+
}
|
|
257
|
+
function __lowerTypedArray(constructor, id, align, values) {
|
|
258
|
+
if (values == null) return 0;
|
|
259
|
+
const
|
|
260
|
+
length = values.length,
|
|
261
|
+
buffer = exports.__pin(exports.__new(length << align, 1)) >>> 0,
|
|
262
|
+
header = exports.__new(12, id) >>> 0;
|
|
263
|
+
__setU32(header + 0, buffer);
|
|
264
|
+
__dataview.setUint32(header + 4, buffer, true);
|
|
265
|
+
__dataview.setUint32(header + 8, length << align, true);
|
|
266
|
+
new constructor(memory.buffer, buffer, length).set(values);
|
|
267
|
+
exports.__unpin(buffer);
|
|
268
|
+
return header;
|
|
269
|
+
}
|
|
270
|
+
const refcounts = new Map();
|
|
271
|
+
function __retain(pointer) {
|
|
272
|
+
if (pointer) {
|
|
273
|
+
const refcount = refcounts.get(pointer);
|
|
274
|
+
if (refcount) refcounts.set(pointer, refcount + 1);
|
|
275
|
+
else refcounts.set(exports.__pin(pointer), 1);
|
|
276
|
+
}
|
|
277
|
+
return pointer;
|
|
278
|
+
}
|
|
279
|
+
function __release(pointer) {
|
|
280
|
+
if (pointer) {
|
|
281
|
+
const refcount = refcounts.get(pointer);
|
|
282
|
+
if (refcount === 1) exports.__unpin(pointer), refcounts.delete(pointer);
|
|
283
|
+
else if (refcount) refcounts.set(pointer, refcount - 1);
|
|
284
|
+
else throw Error(`invalid refcount '${refcount}' for reference '${pointer}'`);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
function __notnull() {
|
|
288
|
+
throw TypeError("value must not be null");
|
|
289
|
+
}
|
|
290
|
+
let __dataview = new DataView(memory.buffer);
|
|
291
|
+
function __setU32(pointer, value) {
|
|
292
|
+
try {
|
|
293
|
+
__dataview.setUint32(pointer, value, true);
|
|
294
|
+
} catch {
|
|
295
|
+
__dataview = new DataView(memory.buffer);
|
|
296
|
+
__dataview.setUint32(pointer, value, true);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
function __getU32(pointer) {
|
|
300
|
+
try {
|
|
301
|
+
return __dataview.getUint32(pointer, true);
|
|
302
|
+
} catch {
|
|
303
|
+
__dataview = new DataView(memory.buffer);
|
|
304
|
+
return __dataview.getUint32(pointer, true);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return adaptedExports;
|
|
308
|
+
}
|
|
Binary file
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compiles ABC and AVM1 bytecode to ES modules.
|
|
3
|
+
*
|
|
4
|
+
* The compiler itself is AssemblyScript (assembly/), built to codegen.wasm.
|
|
5
|
+
* This wrapper instantiates it and gives its exports their types. The same wasm runs as the browser JIT
|
|
6
|
+
* (a module per ABC as its SWF loads) and as the ahead-of-time compiler,
|
|
7
|
+
* so both produce identical output. See docs/architecture/overview.md.
|
|
8
|
+
*/
|
|
9
|
+
import { AIR_API_VERSION, API_VERSION } from "@swf2es/format";
|
|
10
|
+
/** Bumped whenever generated code or the runtime ABI it calls changes. */
|
|
11
|
+
export declare const COMPILER_VERSION = "0.0.0";
|
|
12
|
+
export { AIR_API_VERSION, API_VERSION };
|
|
13
|
+
/** The ABCs added to a compiler, by their indices: each one's hash, and whether it was added as a library. */
|
|
14
|
+
export interface AddedAbcs {
|
|
15
|
+
readonly hashes: readonly string[];
|
|
16
|
+
readonly builtins: readonly boolean[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The log's entries made while only the first `count` ABCs, the libraries,
|
|
20
|
+
* were added, as a key names them: by the SHA-256 of libraryLog's text,
|
|
21
|
+
* taken once, since they are the same in every later module's context.
|
|
22
|
+
*/
|
|
23
|
+
export interface LibraryDigest {
|
|
24
|
+
count: number;
|
|
25
|
+
digest: string;
|
|
26
|
+
}
|
|
27
|
+
/** The text whose SHA-256 is a LibraryDigest's, for ABC `index`, any added after the first `count`. */
|
|
28
|
+
export declare function libraryLog(codegen: Codegen, index: number, count: number): string;
|
|
29
|
+
/**
|
|
30
|
+
* The text of ABC `index`'s module cache key, whose UTF-8's SHA-256 is the
|
|
31
|
+
* key: what the module depends on, the compiler's identity, the API
|
|
32
|
+
* version, every ABC its domain sees, by hash and whether it is a library,
|
|
33
|
+
* those added after it included, its own place among them, and the
|
|
34
|
+
* compiler's log about them (see Codegen.context), the libraries' part by
|
|
35
|
+
* its digest once taken. The player's module cache and the swf2es command
|
|
36
|
+
* both key by it, so that the command's modules are the cache's. Null
|
|
37
|
+
* where there is no context.
|
|
38
|
+
*/
|
|
39
|
+
export declare function moduleKey(codegen: Codegen, index: number, abcs: AddedAbcs, libraries: LibraryDigest | null): string | null;
|
|
40
|
+
/**
|
|
41
|
+
* A SWF's AVM1 action blocks, as format's readActions lists them: the SWF's
|
|
42
|
+
* version and each block's range in its decompressed bytes.
|
|
43
|
+
*/
|
|
44
|
+
export interface ActionBlocks {
|
|
45
|
+
readonly version: number;
|
|
46
|
+
readonly blocks: readonly {
|
|
47
|
+
readonly offset: number;
|
|
48
|
+
readonly length: number;
|
|
49
|
+
}[];
|
|
50
|
+
}
|
|
51
|
+
/** What a SWF's action blocks compile to: one module, and each block's entry in it. */
|
|
52
|
+
export interface CompiledActions {
|
|
53
|
+
module: string;
|
|
54
|
+
/** By block index: the block's entry in the module, as it compiles alone. */
|
|
55
|
+
entries: string[];
|
|
56
|
+
/** By key, each unit in the module's units, as it compiles alone. */
|
|
57
|
+
units: Map<string, ModuleUnit>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Where control goes on in a unit, as V.far is called: an offset in the
|
|
61
|
+
* SWF's decompressed bytes, where the region it goes on in ends, where its
|
|
62
|
+
* actions' bytes end, and whether it runs as a SWF 5's function. The
|
|
63
|
+
* module's units are keyed by these, joined with commas.
|
|
64
|
+
*/
|
|
65
|
+
export interface ActionUnit {
|
|
66
|
+
readonly at: number;
|
|
67
|
+
readonly end: number;
|
|
68
|
+
readonly bound: number;
|
|
69
|
+
readonly five: boolean;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* A unit's code, and what it depends on: it runs as well for any region
|
|
73
|
+
* that ends at or past `high` whose actions' bytes end at or past `reach`,
|
|
74
|
+
* -1 for only the one it was compiled for.
|
|
75
|
+
*/
|
|
76
|
+
export interface CompiledUnit {
|
|
77
|
+
code: string;
|
|
78
|
+
high: number;
|
|
79
|
+
reach: number;
|
|
80
|
+
}
|
|
81
|
+
/** A unit of a module's units, and what it was compiled for. */
|
|
82
|
+
export interface ModuleUnit extends CompiledUnit {
|
|
83
|
+
unit: ActionUnit;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The text of the module cache key of a SWF's AVM1 module, whose UTF-8's
|
|
87
|
+
* SHA-256 is the key: the compiler's identity, the SWF's version, which
|
|
88
|
+
* picks the operations its code calls, and `hash`, the SHA-256 of the
|
|
89
|
+
* SWF's decompressed bytes, which hold its blocks. An AVM1 module links to
|
|
90
|
+
* nothing, so nothing else goes in.
|
|
91
|
+
*/
|
|
92
|
+
export declare function actionsKey(codegen: Codegen, hash: string, version: number): string;
|
|
93
|
+
/**
|
|
94
|
+
* A definition an application domain has found by name, or as a type,
|
|
95
|
+
* which is not the first one from the root down, as the runtime reports it:
|
|
96
|
+
* what the domain's later ABCs compile against (see Codegen.found).
|
|
97
|
+
*/
|
|
98
|
+
export interface FoundDefinition {
|
|
99
|
+
/** The application domain that found it. */
|
|
100
|
+
domain: number;
|
|
101
|
+
/** The name's namespace: its kind (0 public, 1 package-internal, ...) and URI. */
|
|
102
|
+
nsKind: number;
|
|
103
|
+
uri: string;
|
|
104
|
+
name: string;
|
|
105
|
+
/** The ABC that defines it, by its position among those added. */
|
|
106
|
+
abc: number;
|
|
107
|
+
/** Found as a type (avmplus' cached traits), else by name (cached scripts). */
|
|
108
|
+
asType: boolean;
|
|
109
|
+
}
|
|
110
|
+
export interface AbcVersion {
|
|
111
|
+
major: number;
|
|
112
|
+
minor: number;
|
|
113
|
+
}
|
|
114
|
+
/** What an ABC compiles to: its module, the module's source map, and each compiled method body's entry in it. */
|
|
115
|
+
export interface Compiled {
|
|
116
|
+
module: string;
|
|
117
|
+
/** JSON: the module's lines mapped to the AS3 lines debugline names. */
|
|
118
|
+
sourceMap: string;
|
|
119
|
+
/** By method body index: the body's entry in the module's F, as the JIT compiles it alone. */
|
|
120
|
+
entries: Map<number, string>;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* What ABC `index`'s module depends on in the domain beyond the ABCs'
|
|
124
|
+
* bytes (see Codegen.context).
|
|
125
|
+
*/
|
|
126
|
+
export interface ModuleContext {
|
|
127
|
+
/** The ABCs its application domain sees, by their positions among those added, in load order. */
|
|
128
|
+
abcs: number[];
|
|
129
|
+
/** Its own place in `abcs`. */
|
|
130
|
+
own: number;
|
|
131
|
+
/**
|
|
132
|
+
* The domain's log about those ABCs, in order: the lazy answers fixed so
|
|
133
|
+
* far and the findings recorded, each with how many of `abcs` there were.
|
|
134
|
+
*/
|
|
135
|
+
log: string;
|
|
136
|
+
}
|
|
137
|
+
/** A module compiled, and what compiling it fixed in the domain, to replay in its place (Codegen.replay); null where it cannot be. */
|
|
138
|
+
export interface LoggedModule {
|
|
139
|
+
module: string;
|
|
140
|
+
log: string | null;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* The compiler. ABCs are added to a domain in the order the SWF loads them
|
|
144
|
+
* (the builtins first), and the last one added compiles, whole or a method
|
|
145
|
+
* at a time, to code that is byte for byte the same either way.
|
|
146
|
+
*/
|
|
147
|
+
export interface Codegen {
|
|
148
|
+
/**
|
|
149
|
+
* The identity of this codegen.wasm, a hash of its bytes that its build
|
|
150
|
+
* stamps it with; null for one built without it.
|
|
151
|
+
*/
|
|
152
|
+
readonly identity: string | null;
|
|
153
|
+
/** The version at the start of an ABC block, or null if it is too short. */
|
|
154
|
+
abcVersion(abc: Uint8Array): AbcVersion | null;
|
|
155
|
+
/**
|
|
156
|
+
* Start a domain whose user ABCs have API version `apiVersion`: Flash
|
|
157
|
+
* Player's, API_VERSION, by default, or AIR's, AIR_API_VERSION; one
|
|
158
|
+
* that is neither series' (checkApiVersion) is a RangeError.
|
|
159
|
+
*/
|
|
160
|
+
reset(apiVersion?: number): void;
|
|
161
|
+
/** The API version of the last reset. */
|
|
162
|
+
readonly apiVersion: number;
|
|
163
|
+
/**
|
|
164
|
+
* Add an ABC, loaded into application domain `appDomain` (0, the root, by
|
|
165
|
+
* default), linking it against what that domain sees of those before it;
|
|
166
|
+
* 0, or the VerifyError it was rejected with (then it is not added).
|
|
167
|
+
* Throws for an application domain never made, or dropped.
|
|
168
|
+
*/
|
|
169
|
+
add(abc: Uint8Array, builtin?: boolean, appDomain?: number): number;
|
|
170
|
+
/** A new application domain, a child of `parent`: its number. Throws for a `parent` never made, or dropped. */
|
|
171
|
+
childDomain(parent: number): number;
|
|
172
|
+
/**
|
|
173
|
+
* Drop application domain `appDomain` and its descendants once nothing
|
|
174
|
+
* can run their code: no other sees their ABCs, which compile no more,
|
|
175
|
+
* and compact reuses the memory they took. The indices of the ABCs added
|
|
176
|
+
* after them do not change, and neither does what those compile to.
|
|
177
|
+
* Nothing, if `epoch` is given and the domain was reset since.
|
|
178
|
+
*/
|
|
179
|
+
dropDomain(appDomain: number, epoch?: number): void;
|
|
180
|
+
/**
|
|
181
|
+
* How many times `reset` has started a domain: a host that keeps the
|
|
182
|
+
* number a domain had passes it to dropDomain, which then drops nothing
|
|
183
|
+
* if the domain was reset since, as when another player took the Codegen
|
|
184
|
+
* over and its numbers are another domain's.
|
|
185
|
+
*/
|
|
186
|
+
readonly epoch: number;
|
|
187
|
+
/**
|
|
188
|
+
* Rebuild the domain without the ABCs of dropped and evicted domains, if
|
|
189
|
+
* memory would otherwise grow and they hold enough to keep it from
|
|
190
|
+
* growing: whether it did. A rebuild links every live ABC again, tens of
|
|
191
|
+
* milliseconds for a large application, so a host calls this when it has
|
|
192
|
+
* time, as when idle; nothing else does.
|
|
193
|
+
*/
|
|
194
|
+
compact(): boolean;
|
|
195
|
+
/**
|
|
196
|
+
* What the ABCs hold of codegen's memory, roughly, in bytes: the live
|
|
197
|
+
* ones', and the dropped and evicted domains' that compact would free;
|
|
198
|
+
* and the size of codegen's memory, which never shrinks.
|
|
199
|
+
*/
|
|
200
|
+
usage(): {
|
|
201
|
+
live: number;
|
|
202
|
+
dead: number;
|
|
203
|
+
memory: number;
|
|
204
|
+
};
|
|
205
|
+
/**
|
|
206
|
+
* Evict application domain `appDomain` and its descendants while the host
|
|
207
|
+
* has no use for them, as once their ABCs are compiled: as dropped, but
|
|
208
|
+
* reviveDomain makes one live again. compact reuses what they took
|
|
209
|
+
* meanwhile, all but their findings, what was first resolved of them,
|
|
210
|
+
* and their ABCs' places.
|
|
211
|
+
*/
|
|
212
|
+
evictDomain(appDomain: number): void;
|
|
213
|
+
/** Whether application domain `appDomain` is live: made, and neither evicted nor dropped. */
|
|
214
|
+
isLive(appDomain: number): boolean;
|
|
215
|
+
/**
|
|
216
|
+
* Make evicted application domain `appDomain` live again, with its evicted
|
|
217
|
+
* ancestors, the first of them a child of a live domain: given all their
|
|
218
|
+
* ABCs again by their indices, as they were added, their ABCs link as
|
|
219
|
+
* they did, by one rebuild at most, and what they found holds. Throws if
|
|
220
|
+
* they cannot be.
|
|
221
|
+
*/
|
|
222
|
+
reviveDomain(appDomain: number, abcs: Map<number, Uint8Array>): void;
|
|
223
|
+
/** Record a definition an application domain has found; it holds for the ABCs added after. */
|
|
224
|
+
found(definition: FoundDefinition): void;
|
|
225
|
+
/**
|
|
226
|
+
* ABC `index` compiled whole, the last added by default, against every ABC
|
|
227
|
+
* added so far, later ones included, so a SWF's DoABCs may all be added
|
|
228
|
+
* before any compiles; `hashes` are the ABCs' hashes in load order, as
|
|
229
|
+
* the cache key names them.
|
|
230
|
+
*/
|
|
231
|
+
compile(hashes?: string[], index?: number): Compiled;
|
|
232
|
+
/**
|
|
233
|
+
* ABC `index`'s module alone, as `compile` writes it, for a host that
|
|
234
|
+
* loads it and needs neither its source map nor its entries: writing
|
|
235
|
+
* those too would add a large ABC's worth to codegen's memory, which
|
|
236
|
+
* never shrinks.
|
|
237
|
+
*/
|
|
238
|
+
compileModule(hashes?: string[], index?: number): string;
|
|
239
|
+
/**
|
|
240
|
+
* An opt-in JIT module's tables and lazy factories. Its default export
|
|
241
|
+
* takes (rt, jit); jit(body, bindings) returns that body's factory.
|
|
242
|
+
* Verification still runs now to fix scopes against the current domain.
|
|
243
|
+
* This module is not an AOT module and must not enter the module cache.
|
|
244
|
+
*/
|
|
245
|
+
compileLazyModule(hashes?: string[], index?: number): string;
|
|
246
|
+
/**
|
|
247
|
+
* Method bodies of ABC `index` (the last added by default) compiled
|
|
248
|
+
* alone, as the optional lazy JIT compiles each on first factory use;
|
|
249
|
+
* a native, unverified or unknown one is left out. Each is byte for byte
|
|
250
|
+
* its entry in the whole module.
|
|
251
|
+
*/
|
|
252
|
+
compileMethods(bodies: number[], index?: number): Map<number, string>;
|
|
253
|
+
/**
|
|
254
|
+
* What ABC `index`'s module depends on beyond the ABCs' bytes, for a
|
|
255
|
+
* cache key: besides the ABCs its domain sees, what the domain has
|
|
256
|
+
* fixed of what resolves lazily, which a later ABC in an ancestor would
|
|
257
|
+
* change were it first asked now. Its log only of the entries made with
|
|
258
|
+
* more than `after` ABCs added, and `upTo` at most unless negative. Null
|
|
259
|
+
* for an ABC never added.
|
|
260
|
+
*/
|
|
261
|
+
context(index?: number, after?: number, upTo?: number): ModuleContext | null;
|
|
262
|
+
/**
|
|
263
|
+
* A string that changes whenever a context might: a host that took one
|
|
264
|
+
* and finds this the same since need not take it again.
|
|
265
|
+
*/
|
|
266
|
+
revision(): string;
|
|
267
|
+
/** compileModule, with what the compile fixed in the domain (see replay). */
|
|
268
|
+
compileModuleLogged(hashes?: string[], index?: number): LoggedModule;
|
|
269
|
+
/**
|
|
270
|
+
* Fix in the domain what compiling ABC `index` did, from the log
|
|
271
|
+
* compileModuleLogged gave with its module, in place of compiling it:
|
|
272
|
+
* the domain is then as the compile would have left it, if its context
|
|
273
|
+
* is the one that compile had. False if the log is malformed or an
|
|
274
|
+
* entry fails, after doing those before it.
|
|
275
|
+
*/
|
|
276
|
+
replay(log: string, index?: number): boolean;
|
|
277
|
+
/**
|
|
278
|
+
* A SWF's AVM1 action blocks compiled to one module, `bytes` the SWF's
|
|
279
|
+
* decompressed bytes, which the blocks' ranges are of (format's
|
|
280
|
+
* `Swf.bytes`), with each block's entry in it. Needs no domain: AVM1 code
|
|
281
|
+
* links to nothing.
|
|
282
|
+
*/
|
|
283
|
+
compileActions(bytes: Uint8Array, actions: ActionBlocks): CompiledActions;
|
|
284
|
+
/** compileActions' module alone. */
|
|
285
|
+
compileActionsModule(bytes: Uint8Array, actions: ActionBlocks): string;
|
|
286
|
+
/**
|
|
287
|
+
* Blocks of a SWF compiled alone, by index, as a JIT may compile each
|
|
288
|
+
* when it first runs: each byte for byte its entry in the SWF's module.
|
|
289
|
+
* An index with no block is left out.
|
|
290
|
+
*/
|
|
291
|
+
compileActionBlocks(bytes: Uint8Array, actions: ActionBlocks, blocks: number[]): Map<number, string>;
|
|
292
|
+
/**
|
|
293
|
+
* A unit of a SWF compiled alone, as V.far asks for it when control first
|
|
294
|
+
* goes on there: byte for byte its entry in the module's units.
|
|
295
|
+
*/
|
|
296
|
+
compileActionUnit(bytes: Uint8Array, actions: ActionBlocks, unit: ActionUnit): CompiledUnit;
|
|
297
|
+
/**
|
|
298
|
+
* Let go of the copy of a SWF compileActionBlocks and compileActionUnit
|
|
299
|
+
* keep, as the host lets the SWF go; it is let go too once `bytes` are
|
|
300
|
+
* collected, and when blocks or units of other SWFs are asked for since.
|
|
301
|
+
*/
|
|
302
|
+
releaseActions(bytes: Uint8Array): void;
|
|
303
|
+
/** How many SWFs compileActionBlocks and compileActionUnit keep a copy of, and how many times they have copied one in. */
|
|
304
|
+
heldActions(): {
|
|
305
|
+
held: number;
|
|
306
|
+
copies: number;
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Instantiate the compiler from a compiled codegen.wasm module. Loading the
|
|
311
|
+
* bytes is left to the caller (fetch in browsers, fs in node), which keeps
|
|
312
|
+
* this package free of I/O. The file ships as `@swf2es/codegen/codegen.wasm`.
|
|
313
|
+
*/
|
|
314
|
+
export declare function createCodegen(module: WebAssembly.Module): Promise<Codegen>;
|
|
315
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|