@weasel-js/headless 1.15.0 → 1.15.2
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 +42 -69
- package/dist/chunk-36DNDFOQ.js +15 -0
- package/dist/chunk-36DNDFOQ.js.map +1 -0
- package/dist/index.d.ts +70 -319
- package/dist/index.js +63 -312
- package/dist/index.js.map +1 -1
- package/dist/page.d.ts +2 -0
- package/dist/page.global.js +456 -0
- package/dist/page.js +32 -0
- package/dist/page.js.map +1 -0
- package/package.json +14 -6
package/dist/page.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { PAGE_GLOBAL, sceneFromWire } from './chunk-36DNDFOQ.js';
|
|
2
|
+
import { createRasterSession, sceneFromJSON, warmRender, rasterToPng } from '@weasel-js/core';
|
|
3
|
+
|
|
4
|
+
var session = createRasterSession();
|
|
5
|
+
function toBase64(bytes) {
|
|
6
|
+
let binary = "";
|
|
7
|
+
for (let i = 0; i < bytes.length; i += 32768) {
|
|
8
|
+
binary += String.fromCharCode(...bytes.subarray(i, i + 32768));
|
|
9
|
+
}
|
|
10
|
+
return btoa(binary);
|
|
11
|
+
}
|
|
12
|
+
async function render(req) {
|
|
13
|
+
const { scene, screen, format, overlay, ...rest } = req;
|
|
14
|
+
const args = {
|
|
15
|
+
...rest,
|
|
16
|
+
scene: sceneFromJSON(sceneFromWire(scene)),
|
|
17
|
+
...overlay ? { overlay } : {},
|
|
18
|
+
...screen ? { screen: Float64Array.from(screen) } : {}
|
|
19
|
+
};
|
|
20
|
+
await warmRender({ render: args });
|
|
21
|
+
const image = session.render(args);
|
|
22
|
+
if (format === "png") {
|
|
23
|
+
const blob = await rasterToPng(image);
|
|
24
|
+
return { width: image.width, height: image.height, base64: toBase64(new Uint8Array(await blob.arrayBuffer())) };
|
|
25
|
+
}
|
|
26
|
+
const bytes = new Uint8Array(image.data.buffer, image.data.byteOffset, image.data.byteLength);
|
|
27
|
+
return { width: image.width, height: image.height, base64: toBase64(bytes) };
|
|
28
|
+
}
|
|
29
|
+
var api = { render };
|
|
30
|
+
globalThis[PAGE_GLOBAL] = api;
|
|
31
|
+
//# sourceMappingURL=page.js.map
|
|
32
|
+
//# sourceMappingURL=page.js.map
|
package/dist/page.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/page.ts"],"names":[],"mappings":";;;AAQA,IAAM,UAAU,mBAAA,EAAoB;AAEpC,SAAS,SAAS,KAAA,EAA2B;AAC3C,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,KAAK,KAAA,EAAQ;AAC7C,IAAA,MAAA,IAAU,MAAA,CAAO,aAAa,GAAG,KAAA,CAAM,SAAS,CAAA,EAAG,CAAA,GAAI,KAAM,CAAC,CAAA;AAAA,EAChE;AACA,EAAA,OAAO,KAAK,MAAM,CAAA;AACpB;AAEA,eAAe,OAAO,GAAA,EAAuC;AAC3D,EAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,QAAQ,OAAA,EAAS,GAAG,MAAK,GAAI,GAAA;AACpD,EAAA,MAAM,IAAA,GAAmD;AAAA,IACvD,GAAG,IAAA;AAAA,IACH,KAAA,EAAO,aAAA,CAAc,aAAA,CAAc,KAAK,CAAyC,CAAA;AAAA,IACjF,GAAI,OAAA,GAAU,EAAE,OAAA,KAA+C,EAAC;AAAA,IAChE,GAAI,SAAS,EAAE,MAAA,EAAQ,aAAa,IAAA,CAAK,MAAM,CAAA,EAAE,GAAI;AAAC,GACxD;AACA,EAAA,MAAM,UAAA,CAAW,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA;AACjC,EAAA,IAAI,WAAW,KAAA,EAAO;AACpB,IAAA,MAAM,IAAA,GAAO,MAAM,WAAA,CAAY,KAAK,CAAA;AACpC,IAAA,OAAO,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,MAAA,EAAQ,MAAM,MAAA,EAAQ,MAAA,EAAQ,QAAA,CAAS,IAAI,WAAW,MAAM,IAAA,CAAK,WAAA,EAAa,CAAC,CAAA,EAAE;AAAA,EAChH;AACA,EAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,KAAA,CAAM,IAAA,CAAK,UAAA,EAAY,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA;AAC5F,EAAA,OAAO,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,MAAA,EAAQ,MAAM,MAAA,EAAQ,MAAA,EAAQ,QAAA,CAAS,KAAK,CAAA,EAAE;AAC7E;AAEA,IAAM,GAAA,GAAe,EAAE,MAAA,EAAO;AAC7B,UAAA,CAAuC,WAAW,CAAA,GAAI,GAAA","file":"page.js","sourcesContent":["// Runs inside the host's Chromium page, bundled with everything it imports into one classic script:\n// the page is `about:blank`, which cannot load modules.\nimport {\n createRasterSession, rasterToPng, sceneFromJSON, warmRender, type RasterRenderArgs, type SavedScene,\n} from '@weasel-js/core';\nimport type { DrawCommand } from '@weasel-js/core/renderer';\nimport { PAGE_GLOBAL, sceneFromWire, type PageApi, type PageRequest, type PageResult } from './protocol';\n\nconst session = createRasterSession();\n\nfunction toBase64(bytes: Uint8Array): string {\n let binary = '';\n for (let i = 0; i < bytes.length; i += 0x8000) {\n binary += String.fromCharCode(...bytes.subarray(i, i + 0x8000));\n }\n return btoa(binary);\n}\n\nasync function render(req: PageRequest): Promise<PageResult> {\n const { scene, screen, format, overlay, ...rest } = req;\n const args: RasterRenderArgs<unknown, string, unknown> = {\n ...rest,\n scene: sceneFromJSON(sceneFromWire(scene) as SavedScene<unknown, string, unknown>),\n ...(overlay ? { overlay: overlay as readonly DrawCommand[] } : {}),\n ...(screen ? { screen: Float64Array.from(screen) } : {}),\n };\n await warmRender({ render: args });\n const image = session.render(args);\n if (format === 'png') {\n const blob = await rasterToPng(image);\n return { width: image.width, height: image.height, base64: toBase64(new Uint8Array(await blob.arrayBuffer())) };\n }\n const bytes = new Uint8Array(image.data.buffer, image.data.byteOffset, image.data.byteLength);\n return { width: image.width, height: image.height, base64: toBase64(bytes) };\n}\n\nconst api: PageApi = { render };\n(globalThis as Record<string, unknown>)[PAGE_GLOBAL] = api;\n"]}
|
package/package.json
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weasel-js/headless",
|
|
3
|
-
"version": "1.15.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.15.2",
|
|
4
|
+
"description": "Render a scene to pixels from Node: renderSceneToPixels in a headless Chromium page, kept open across renders.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"sideEffects":
|
|
7
|
+
"sideEffects": [
|
|
8
|
+
"./dist/page.js",
|
|
9
|
+
"./dist/page.global.js"
|
|
10
|
+
],
|
|
8
11
|
"main": "./dist/index.js",
|
|
9
12
|
"module": "./dist/index.js",
|
|
10
13
|
"types": "./dist/index.d.ts",
|
|
@@ -13,6 +16,10 @@
|
|
|
13
16
|
"import": "./dist/index.js",
|
|
14
17
|
"types": "./dist/index.d.ts"
|
|
15
18
|
},
|
|
19
|
+
"./page": {
|
|
20
|
+
"import": "./dist/page.js",
|
|
21
|
+
"types": "./dist/page.d.ts"
|
|
22
|
+
},
|
|
16
23
|
"./package.json": "./package.json"
|
|
17
24
|
},
|
|
18
25
|
"author": "orochi235",
|
|
@@ -34,11 +41,12 @@
|
|
|
34
41
|
"LICENSE"
|
|
35
42
|
],
|
|
36
43
|
"scripts": {
|
|
37
|
-
"build": "tsup"
|
|
44
|
+
"build": "tsup && tsup --config tsup.page.config.ts"
|
|
38
45
|
},
|
|
39
46
|
"dependencies": {
|
|
40
|
-
"@weasel-js/
|
|
41
|
-
"@weasel-js/
|
|
47
|
+
"@weasel-js/core": "1.15.2",
|
|
48
|
+
"@weasel-js/geom": "1.15.2",
|
|
49
|
+
"playwright-core": "^1.63.0"
|
|
42
50
|
},
|
|
43
51
|
"publishConfig": {
|
|
44
52
|
"access": "public",
|