aboutsummaryrefslogtreecommitdiff
path: root/src/api/demo
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-05-07 14:12:56 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-05-07 14:12:56 -0700
commitcaa747ba717e28791089d2db22ee9300f11b4d25 (patch)
tree0cc00b1815befb269132c26cdbe73a3a507b4d94 /src/api/demo
parentfad34bb4abfe1715d4febec6e7de2809bfffb4e2 (diff)
downloadbun-caa747ba717e28791089d2db22ee9300f11b4d25.tar.gz
bun-caa747ba717e28791089d2db22ee9300f11b4d25.tar.zst
bun-caa747ba717e28791089d2db22ee9300f11b4d25.zip
wip
Former-commit-id: f4267e2d1fee0d885630dc2a87be0a5699bf526f
Diffstat (limited to 'src/api/demo')
-rw-r--r--src/api/demo/lib/api.ts73
-rw-r--r--src/api/demo/package.json2
-rw-r--r--src/api/demo/pnpm-lock.yaml8
3 files changed, 54 insertions, 29 deletions
diff --git a/src/api/demo/lib/api.ts b/src/api/demo/lib/api.ts
index e09eec51b..1619e2c46 100644
--- a/src/api/demo/lib/api.ts
+++ b/src/api/demo/lib/api.ts
@@ -2,7 +2,7 @@ import * as Schema from "../../schema";
import { ByteBuffer } from "peechy";
export interface WebAssemblyModule {
- init(): number;
+ init(starting_memory: number): number;
transform(a: number): number;
malloc(a: number): number;
calloc(a: number): number;
@@ -10,38 +10,62 @@ export interface WebAssemblyModule {
free(a: number): number;
}
+const wasm_imports_sym: symbol | string =
+ process.env.NODE_ENV === "development"
+ ? "wasm_imports"
+ : Symbol("wasm_imports");
+
export class ESDev {
static has_initialized = false;
static wasm_source: WebAssembly.WebAssemblyInstantiatedSource = null;
- static wasm_exports: WebAssemblyModule;
- static memory: WebAssembly.Memory;
+ static get wasm_exports(): WebAssemblyModule {
+ return ESDev.wasm_source.instance.exports as any;
+ }
+ static get memory() {
+ return ESDev.wasm_exports.memory as WebAssembly.Memory;
+ }
static memory_array: Uint8Array;
- static async init(url) {
- if (typeof SharedArrayBuffer !== "undefined") {
- ESDev.memory = new WebAssembly.Memory({
- initial: 1500,
- maximum: 3000,
- shared: true,
- });
- } else {
- ESDev.memory = new WebAssembly.Memory({
- initial: 1500,
- maximum: 3000,
- });
+
+ static _decoder: TextDecoder;
+
+ static _wasmPtrLenToString(ptr: number, len: number) {
+ if (!ESDev._decoder) {
+ ESDev._decoder = new TextDecoder();
}
- ESDev.memory_array = new Uint8Array(ESDev.memory.buffer);
+ const region = ESDev.memory_array.subarray(ptr, ptr + len + 1);
+ return ESDev._decoder.decode(region);
+ }
+
+ // We don't want people to be calling these manually
+ static [wasm_imports_sym] = {
+ console_log(ptr: number, len: number) {
+ console.log(ESDev._wasmPtrLenToString(ptr, len));
+ },
+ console_error(ptr: number, len: number) {
+ console.error(ESDev._wasmPtrLenToString(ptr, len));
+ },
+ console_warn(ptr: number, len: number) {
+ console.warn(ESDev._wasmPtrLenToString(ptr, len));
+ },
+ console_info(ptr: number, len: number) {
+ console.info(ESDev._wasmPtrLenToString(ptr, len));
+ },
+ };
+
+ static async init(url) {
ESDev.wasm_source = await globalThis.WebAssembly.instantiateStreaming(
fetch(url),
- {
- js: {
- mem: ESDev.memory,
- },
- }
+ { env: ESDev[wasm_imports_sym] }
);
- ESDev.wasm_exports = ESDev.wasm_source.instance.exports as any;
- ESDev.wasm_exports.init();
- console.log("WASM loaded.");
+ const res = ESDev.wasm_exports.init(1500);
+ if (res < 0) {
+ throw `[ESDev] Failed to initialize WASM module: code ${res}`;
+ } else {
+ console.log("WASM loaded.");
+ }
+ ESDev.memory_array = new Uint8Array(ESDev.memory.buffer);
+
ESDev.has_initialized = true;
}
@@ -63,6 +87,7 @@ export class ESDev {
bb
);
const data = bb.toUint8Array();
+
const ptr = ESDev.wasm_exports.malloc(data.byteLength);
ESDev.memory_array.set(data, ptr);
debugger;
diff --git a/src/api/demo/package.json b/src/api/demo/package.json
index 27c8c943e..8576b2bc9 100644
--- a/src/api/demo/package.json
+++ b/src/api/demo/package.json
@@ -9,7 +9,7 @@
},
"dependencies": {
"next": "10.2.0",
- "peechy": "0.3.6",
+ "peechy": "0.4.0",
"react": "17.0.2",
"react-dom": "17.0.2"
}
diff --git a/src/api/demo/pnpm-lock.yaml b/src/api/demo/pnpm-lock.yaml
index cd3dfa28b..3e6b4c6cc 100644
--- a/src/api/demo/pnpm-lock.yaml
+++ b/src/api/demo/pnpm-lock.yaml
@@ -2,13 +2,13 @@ lockfileVersion: 5.3
specifiers:
next: 10.2.0
- peechy: 0.3.6
+ peechy: 0.4.0
react: 17.0.2
react-dom: 17.0.2
dependencies:
next: 10.2.0_react-dom@17.0.2+react@17.0.2
- peechy: 0.3.6
+ peechy: 0.4.0
react: 17.0.2
react-dom: 17.0.2_react@17.0.2
@@ -1327,8 +1327,8 @@ packages:
sha.js: 2.4.11
dev: false
- /peechy/0.3.6:
- resolution: {integrity: sha512-CUtPbzX8W4wlhHwZhPWhD9iK8q9BX09JfmKzXFUsMkbi49MGPH2X/tnRQJQaCwHiPqYUijzLLcRYmZQOLmo7Nw==}
+ /peechy/0.4.0:
+ resolution: {integrity: sha512-dIOZl4mEZGN91WYxrBv1/QOA/R6tNf10FFo4rrCSPfPGPz3gzsvkrXIT8K46XBBlZbSNYS4xUJZ6TZMrptcJIA==}
hasBin: true
dependencies:
change-case: 4.1.2
etro' width='13' height='13' alt='Gravatar' /> Bjorn Lu 11-27/+34 2023-08-01[ci] formatGravatar natemoo-re 1-1/+0 2023-08-01Fix astro/app import (#7821)Gravatar ottomated 4-1/+25 * core -> core.js * changeset * test --------- Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> 2023-08-01[ci] formatGravatar natemoo-re 1-1/+1 2023-08-01feat: add cache headers to assets in Vercel adapter (#7729)Gravatar Hee 10-3/+144 * feat: cache assets in Vercel adapter * Update tidy-tips-doubt.md * chore: update lockfile * Update packages/integrations/vercel/test/static-assets.test.js * Update packages/integrations/vercel/test/static-assets.test.js * Update packages/integrations/vercel/test/static-assets.test.js * chore: update split test --------- Co-authored-by: Kid <44045911+kidonng@users.noreply.github.com> Co-authored-by: Nate Moore <nate@astro.build> Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> 2023-08-01Fix "res.writeHead is not a function" in Express/node middleware (#7708)Gravatar DixCouleur 3-8/+34 * fix: res.writeHead is not a function * fix: handler params type added * fix: handler function params error * Update packages/integrations/node/src/nodeMiddleware.ts --------- Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> 2023-08-01Fix: Content Collections - Ignore `.json` files nested in non-underscored ↵Gravatar Tony Dang 3-1/+6 subdirectories within underscored directories (#7909) * test: add test file so tests fail before fix * fix: ignore files nested in underscore directories * chore: add changeset --------- Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> 2023-08-01chore: address feedback from #7754 (#7906)Gravatar Nate Moore 1-2/+4 2023-08-01[ci] release (#7877)astro@2.9.7@astrojs/vercel@3.7.5@astrojs/node@5.3.1@astrojs/netlify@2.5.2Gravatar Houston (Bot) 52-129/+128 Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> 2023-08-01feat: add logging for when hydrate's JSON parse fails (#7887)Gravatar Sam Hulick 2-3/+28 Co-authored-by: Emanuele Stoppa <my.burning@gmail.com> Co-authored-by: Bjorn Lu <bjornlu.dev@gmail.com> 2023-08-01Fix prefetch test fail (#7902)Gravatar Bjorn Lu 1-0/+2 2023-08-01[ci] formatGravatar bluwy 4-13/+28