aboutsummaryrefslogtreecommitdiff
path: root/src/api/demo/lib/api.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/demo/lib/api.ts')
-rw-r--r--src/api/demo/lib/api.ts65
1 files changed, 21 insertions, 44 deletions
diff --git a/src/api/demo/lib/api.ts b/src/api/demo/lib/api.ts
index 9f07939c0..d2e19218e 100644
--- a/src/api/demo/lib/api.ts
+++ b/src/api/demo/lib/api.ts
@@ -1,5 +1,6 @@
import * as Schema from "../../schema";
import { ByteBuffer } from "peechy";
+import { transform as sucraseTransform } from "sucrase";
export interface WebAssemblyModule {
init(): number;
@@ -8,6 +9,7 @@ export interface WebAssemblyModule {
calloc(a: number): number;
realloc(a: number): number;
free(a: number): number;
+ cycle(): void;
}
const wasm_imports_sym: symbol | string =
@@ -19,6 +21,8 @@ const ptr_converter = new ArrayBuffer(8);
const ptr_float = new Float64Array(ptr_converter);
const slice = new Uint32Array(ptr_converter);
+var scratch: Uint8Array;
+
export class ESDev {
static has_initialized = false;
static wasm_source: WebAssembly.WebAssemblyInstantiatedSource = null;
@@ -114,41 +118,18 @@ export class ESDev {
};
static async init(url) {
+ globalThis.sucraseTransform = sucraseTransform;
+ scratch = new Uint8Array(8096);
+
if (ESDev.has_initialized) {
return;
}
- try {
- ESDev[wasm_imports_sym].memory = new WebAssembly.Memory({
- initial: 1500,
- // shared: typeof SharedArrayBuffer !== "undefined",
- maximum: typeof SharedArrayBuffer !== "undefined" ? 5000 : undefined,
- });
- } catch {
- try {
- ESDev[wasm_imports_sym].memory = new WebAssembly.Memory({
- initial: 750,
- // shared: typeof SharedArrayBuffer !== "undefined",
- maximum: typeof SharedArrayBuffer !== "undefined" ? 5000 : undefined,
- });
- } catch {
- try {
- ESDev[wasm_imports_sym].memory = new WebAssembly.Memory({
- initial: 375,
- // shared: typeof SharedArrayBuffer !== "undefined",
- maximum:
- typeof SharedArrayBuffer !== "undefined" ? 5000 : undefined,
- });
- } catch {
- ESDev[wasm_imports_sym].memory = new WebAssembly.Memory({
- initial: 125,
- // shared: typeof SharedArrayBuffer !== "undefined",
- maximum:
- typeof SharedArrayBuffer !== "undefined" ? 5000 : undefined,
- });
- }
- }
- }
+ ESDev[wasm_imports_sym].memory = new WebAssembly.Memory({
+ initial: 18,
+ // shared: typeof SharedArrayBuffer !== "undefined",
+ maximum: typeof SharedArrayBuffer !== "undefined" ? 5000 : undefined,
+ });
ESDev.wasm_source = await globalThis.WebAssembly.instantiateStreaming(
fetch(url),
@@ -166,18 +147,16 @@ export class ESDev {
ESDev.has_initialized = true;
}
- static transform(content: string, file_name: string) {
+ static transform(content: Uint8Array, file_name: string) {
if (!ESDev.has_initialized) {
throw "Please run await ESDev.init(wasm_url) before using this.";
}
- if (process.env.NODE_ENV === "development") {
- console.time("[ESDev] Transform " + file_name);
- }
+ // if (process.env.NODE_ENV === "development") {
+ // console.time("[ESDev] Transform " + file_name);
+ // }
- const bb = new ByteBuffer(
- new Uint8Array(content.length + file_name.length)
- );
+ const bb = new ByteBuffer(scratch);
bb.length = 0;
Schema.encodeTransform(
@@ -188,18 +167,16 @@ export class ESDev {
bb
);
const data = bb.toUint8Array();
+ if (bb._data.buffer !== scratch.buffer) {
+ scratch = bb._data;
+ }
const ptr = ESDev.wasm_exports.malloc(data.byteLength);
this._wasmPtrToSlice(ptr).set(data);
const resp_ptr = ESDev.wasm_exports.transform(ptr);
var _bb = new ByteBuffer(this._wasmPtrToSlice(resp_ptr));
const response = Schema.decodeTransformResponse(_bb);
- ESDev.wasm_exports.free(resp_ptr);
-
- if (process.env.NODE_ENV === "development") {
- console.timeEnd("[ESDev] Transform " + file_name);
- }
- ESDev.wasm_exports.free(resp_ptr);
+ ESDev.wasm_exports.cycle();
return response;
}
}