@openheart/tavio-renderer 2.3.2-with-wasm → 2.3.4-with-wasm

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.
@@ -1,12 +1,12 @@
1
- declare module '*.vert?raw' {
1
+ declare module "*.vert?raw" {
2
2
  const content: string;
3
3
  export default content;
4
4
  }
5
- declare module '*.frag?raw' {
5
+ declare module "*.frag?raw" {
6
6
  const content: string;
7
7
  export default content;
8
8
  }
9
- declare module '*.glsl?raw' {
9
+ declare module "*.glsl?raw" {
10
10
  const content: string;
11
11
  export default content;
12
12
  }
@@ -15,13 +15,18 @@ declare module '*.glsl?raw' {
15
15
  type WorkerConstructor = {
16
16
  new (): Worker;
17
17
  };
18
- declare module '*?worker&inline' {
18
+ declare module "*?worker&inline" {
19
19
  const workerConstructor: WorkerConstructor;
20
20
  export default workerConstructor;
21
21
  }
22
- declare module '*?worker' {
22
+ declare module "*?worker" {
23
23
  const workerConstructor: WorkerConstructor;
24
24
  export default workerConstructor;
25
25
  }
26
26
 
27
27
  declare var PRODUCTION_BUILD: boolean;
28
+
29
+ declare var allocateSharedArrayBuffer: (
30
+ oldSharedArrayBuffer: SharedArrayBuffer | null,
31
+ newByteSize: number,
32
+ ) => SharedArrayBuffer;
@@ -0,0 +1,12 @@
1
+ export type TavioWasmThread = typeof import("@wasm/thread");
2
+ export type TavioWasmNoThread = typeof import("@wasm/no-thread");
3
+ export type TavioWasm = TavioWasmThread | TavioWasmNoThread;
4
+ export type TavioWasmModule = Omit<
5
+ TavioWasm,
6
+ | "default"
7
+ | "main"
8
+ | "initSync"
9
+ | "IntoUnderlyingByteSource"
10
+ | "IntoUnderlyingSink"
11
+ | "IntoUnderlyingSource"
12
+ >;
@@ -1,12 +1,9 @@
1
- /// <reference lib="webworker" />
2
- type TavioWasmThread = typeof import("@wasm/thread");
3
- type TavioWasmNoThread = typeof import("@wasm/no-thread");
4
- type WasmExports = TavioWasmThread | TavioWasmNoThread;
1
+ import { TavioWasm } from '../types/wasm';
5
2
  type WasmFnKeys = Exclude<keyof {
6
- [K in keyof WasmExports as WasmExports[K] extends (...args: any[]) => any ? K : never]: unknown;
3
+ [K in keyof TavioWasm as TavioWasm[K] extends (...args: any[]) => any ? K : never]: unknown;
7
4
  }, "default" | "initSync" | "main" | "IntoUnderlyingByteSource" | "IntoUnderlyingSink" | "IntoUnderlyingSource">;
8
5
  export type WasmFnMap = {
9
- [K in WasmFnKeys]: WasmExports[K];
6
+ [K in WasmFnKeys]: TavioWasm[K];
10
7
  };
11
8
  export type WasmWorkerInitRequest = {
12
9
  kind: "init";
@@ -1,5 +1,2 @@
1
- type TavioWasmThread = typeof import("@wasm/thread");
2
- type TavioWasmNoThread = typeof import("@wasm/no-thread");
3
- type TavioWasmModule = Omit<TavioWasmThread | TavioWasmNoThread, "default" | "main" | "initSync" | "IntoUnderlyingByteSource" | "IntoUnderlyingSink" | "IntoUnderlyingSource">;
4
- export declare const TavioWasm: () => Promise<TavioWasmModule>;
5
- export {};
1
+ import { TavioWasmModule } from '../types/wasm';
2
+ export declare const TavioWasm: (isThreadSupported: boolean) => Promise<TavioWasmModule>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openheart/tavio-renderer",
3
- "version": "2.3.2-with-wasm",
3
+ "version": "2.3.4-with-wasm",
4
4
  "author": "OpenHeart Inc.",
5
5
  "license": "UNLICENSED",
6
6
  "description": "Rendering Engine for Tavio Format 3D data",
@@ -23,7 +23,6 @@
23
23
  "build:iife": "vite build -c vite.config.iife.ts",
24
24
  "build:wasm": "wasm/build.sh $@",
25
25
  "start": "vite -c vite.config.demo.ts",
26
- "demo-esm": "vite -c demo-esm/vite.config.ts",
27
26
  "clean": "(test -d build && rm -r build) || true",
28
27
  "prepublishOnly": "cp README.md .README.md.bak && cp npm/README.md README.md",
29
28
  "postpublish": "mv .README.md.bak README.md"
@@ -45,5 +44,9 @@
45
44
  "vite": "7.1.10",
46
45
  "vite-plugin-dts": "4.5.4",
47
46
  "vite-plugin-string": "1.2.3"
48
- }
47
+ },
48
+ "engines": {
49
+ "yarn": "1.x"
50
+ },
51
+ "packageManager": "yarn@1.22.22"
49
52
  }
@@ -1,6 +0,0 @@
1
- /**
2
- * wasm/pkg のベース URL(末尾スラッシュ付き)。
3
- * - ライブラリ本番ビルド(build/esm/index.js): index と同階層の ./wasm/pkg/
4
- * - Vite 開発サーバ: ソースは src/wasm-bindings 配下のためリポジトリルートの ../../wasm/pkg/
5
- */
6
- export declare function getWasmPkgBaseUrl(): string;
@@ -1,117 +0,0 @@
1
- let wasm = null;
2
- globalThis.allocateSharedArrayBuffer = (oldSharedArrayBuffer, newByteSize) => {
3
- const newSharedArrayBuffer = new SharedArrayBuffer(newByteSize);
4
- if (oldSharedArrayBuffer) {
5
- new Uint8Array(newSharedArrayBuffer).set(
6
- new Uint8Array(oldSharedArrayBuffer)
7
- );
8
- }
9
- return newSharedArrayBuffer;
10
- };
11
- self.onmessage = async (e) => {
12
- switch (e.data.kind) {
13
- case "init":
14
- await init(e.data.options);
15
- break;
16
- case "registerEventHandler":
17
- wasm.registerEventHandler((e2) => {
18
- const message = {
19
- category: "wasmCallback",
20
- data: e2
21
- };
22
- postMessage(message, collectTransferables(e2));
23
- });
24
- break;
25
- default:
26
- if ("id" in e.data && "args" in e.data) {
27
- const { kind, id, args } = e.data;
28
- try {
29
- const fn = wasm[kind];
30
- const result = await fn(...args);
31
- const message = { kind, id, result };
32
- postMessage(message);
33
- } catch (error) {
34
- const message = {
35
- category: "wasmError",
36
- id,
37
- error
38
- };
39
- postMessage(message);
40
- }
41
- }
42
- break;
43
- }
44
- };
45
- async function importWasmBindings(useSharedArrayBuffer) {
46
- const href = useSharedArrayBuffer ? new URL(
47
- /* @vite-ignore */
48
- "./wasm/pkg/thread/tavio.js",
49
- import.meta.url
50
- ).href : new URL(
51
- /* @vite-ignore */
52
- "./wasm/pkg/no-thread/tavio.js",
53
- import.meta.url
54
- ).href;
55
- return await import(
56
- /* @vite-ignore */
57
- href
58
- );
59
- }
60
- async function init(options) {
61
- const useSharedArrayBuffer = options?.useSharedArrayBuffer == true;
62
- const threadCount = Math.min(
63
- options?.threadCount ?? 1,
64
- navigator.hardwareConcurrency
65
- );
66
- const isParallel = useSharedArrayBuffer && threadCount > 1;
67
- wasm = await importWasmBindings(useSharedArrayBuffer);
68
- try {
69
- await wasm.default();
70
- console.info(
71
- ` WASM${useSharedArrayBuffer ? " (thread)" : "(no-thread)"} initialized successfully`
72
- );
73
- } catch (e) {
74
- console.error("[WasmWorker] Failed to initialize WASM (tavio_bg.wasm):", e);
75
- console.error("[WasmWorker] This error typically occurs when:");
76
- console.error(
77
- " 1. The tavio_bg.wasm file is not deployed to the correct path"
78
- );
79
- console.error(" 2. CORS policy is blocking the WASM file");
80
- console.error(
81
- " 3. The WASM file has incorrect MIME type (should be application/wasm)"
82
- );
83
- throw e;
84
- }
85
- if (isParallel) {
86
- try {
87
- console.info(
88
- `[WasmWorker] Initializing thread pool with ${threadCount} threads...`
89
- );
90
- wasm.initThreadPool(threadCount);
91
- console.info("[WasmWorker] Thread pool initialized successfully");
92
- } catch (e) {
93
- console.error("[WasmWorker] Failed to initialize thread pool:", e);
94
- console.error("[WasmWorker] This error typically occurs when:");
95
- console.error(
96
- " 1. workerHelpers.js is not deployed to the correct path"
97
- );
98
- console.error(
99
- " 2. SharedArrayBuffer is not available (requires secure context and COOP/COEP headers)"
100
- );
101
- throw e;
102
- }
103
- }
104
- postMessage({ category: "wasmLoaded" });
105
- }
106
- function collectTransferables(value) {
107
- if (!value || typeof value !== "object") return [];
108
- const set = /* @__PURE__ */ new Set();
109
- for (const v of Object.values(value)) {
110
- if (v instanceof ArrayBuffer) {
111
- set.add(v);
112
- } else if (ArrayBuffer.isView(v)) {
113
- set.add(v.buffer);
114
- }
115
- }
116
- return Array.from(set);
117
- }