@sanox/sangine-core 0.2.5 → 0.2.6
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/dist/gen-types.d.ts +4 -0
- package/dist/gen-types.d.ts.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +60 -50
- package/dist/rendererService.d.ts +5 -0
- package/dist/rendererService.d.ts.map +1 -1
- package/dist/wasm/sangine/{sangine.77477298.js → sangine.2f6d6a9d.js} +1 -1
- package/dist/wasm/sangine/{sangine_bg.77477298.wasm → sangine_bg.2f6d6a9d.wasm} +0 -0
- package/dist/wasm-hashes/sangine.d.ts +1 -1
- package/package.json +1 -1
package/dist/gen-types.d.ts
CHANGED
package/dist/gen-types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gen-types.d.ts","sourceRoot":"","sources":["../src/gen-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gen-types.d.ts","sourceRoot":"","sources":["../src/gen-types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var f=Object.defineProperty;var y=(n,e,t)=>e in n?f(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var
|
|
1
|
+
"use strict";var f=Object.defineProperty;var y=(n,e,t)=>e in n?f(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var r=(n,e,t)=>y(n,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g="/static/sangine/wasm",_="2f6d6a9d";class R{constructor(e,t){r(this,"workers");r(this,"idle");r(this,"queue",[]);this.workers=Array.from({length:t},e),this.idle=[...this.workers]}run(e){return new Promise((t,s)=>{const a=this.idle.pop();a?this.dispatch(a,e,t,s):this.queue.push({request:e,resolve:t,reject:s})})}dispatch(e,t,s,a){const d=i=>{s(i.data),o(),this.release(e)},c=i=>{a(i),o(),this.release(e)},o=()=>{e.removeEventListener("message",d),e.removeEventListener("error",c)};e.addEventListener("message",d,{once:!0}),e.addEventListener("error",c,{once:!0}),e.postMessage(t)}release(e){const t=this.queue.shift();t?this.dispatch(e,t.request,t.resolve,t.reject):this.idle.push(e)}terminate(){for(const e of this.workers)e.terminate()}}class p{constructor(e){r(this,"wasm",null);r(this,"callbackRegistry",{});r(this,"userActionRegistry",{});r(this,"assetsDownloadingRegistry",{});r(this,"windowCreatedPromiseRegistry",{});r(this,"windowCreatedPromiseResolveRegistry",{});r(this,"_inited",!1);r(this,"decodePool");r(this,"_readyPromise");r(this,"_resolveReady");r(this,"_rejectReady");this.config=e,this._readyPromise=new Promise((t,s)=>{this._resolveReady=t,this._rejectReady=s}),this.config=e}async init(){if(!(typeof window>"u")){if(this._inited)return this._readyPromise;try{const t=await import(new URL(`${g}/sangine/sangine.${_}.js`,window.location.origin).toString());await t.default(),this.wasm=t,this._inited=!0;const s=this.config.numWorkers??(navigator.hardwareConcurrency||2)-1;this.decodePool=new R(()=>this.config.createDecodeWorker(),Math.max(s,1)),this.wasm.register_asset_decoder(this.decodeAsset.bind(this)),this.wasm.register_event_listener(this.handleSangineEvent.bind(this)),this._resolveReady()}catch(e){throw this._rejectReady(e),e}return this._readyPromise}}ready(){return this._readyPromise}get inited(){return this._inited}getWasm(){if(!this.wasm)throw new Error("RendererService not initialized");return this.wasm}handleActionChanged(e,t){this.userActionRegistry[e]=t;for(const s of this.callbackRegistry[e].actionChanged)s(t)}handleMeasurementCreated(e,t){for(const s of this.callbackRegistry[e].measurementCreated)s(t)}handleRouteUpdated(e,t){for(const s of this.callbackRegistry[e].routeUpdated)s(t)}handleAssetsDownloading(e,t){this.assetsDownloadingRegistry[e]=t;for(const s of this.callbackRegistry[e].assetsDownloading)s(t)}handleSangineEvent(e,t){t==="ready"?this.windowCreatedPromiseResolveRegistry[e]():"actionChanged"in t?this.handleActionChanged(e,t.actionChanged.action):"measurementCreated"in t?this.handleMeasurementCreated(e,t.measurementCreated.measurement):"routeUnderConstructionUpdated"in t?this.handleRouteUpdated(e,t.routeUnderConstructionUpdated.route):"assetsDownloading"in t&&this.handleAssetsDownloading(e,t.assetsDownloading.downloading)}createWindow(e,t){if(!this.wasm)throw new Error("WASM not initialized");let s;const a=new Promise(c=>{s=c}),d=this.wasm.create_window(e,t);return this.windowCreatedPromiseResolveRegistry[d]=s,this.callbackRegistry[d]={actionChanged:[],routeUpdated:[],measurementCreated:[],assetsDownloading:[]},this.userActionRegistry[d]="watching",this.windowCreatedPromiseRegistry[d]=a,d}getAssetsDownloading(e){return this.assetsDownloadingRegistry[e]||!1}readUserAction(e){return this.userActionRegistry[e]}windowReady(e){return this.windowCreatedPromiseRegistry[e]}registerCallback(e,t,s){this.callbackRegistry[e][t].push(s)}setWindowAction(e,t){if(!this.wasm)throw new Error("WASM not initialized");this.wasm.set_window_action(e,t)}destroyWindow(e){if(!this.wasm)throw new Error("WASM not initialized");this.wasm.destroy_window(e),delete this.callbackRegistry[e],delete this.userActionRegistry[e]}setRouteHighlight(e,t,s){if(!this.wasm)throw new Error("WASM not initialized");this.wasm.set_route_highlight(e,t,s)}setRouteVisible(e,t,s){if(!this.wasm)throw new Error("WASM not initialized");this.wasm.set_route_visible(e,t,s)}animateToRoute(e,t){if(!this.wasm)throw new Error("WASM not initialized");this.wasm.animate_to_route(e,t)}setSunProperties(e,t,s,a,d,c,o){if(!this.wasm)throw new Error("WASM not initialized");this.wasm.set_sun_properties(e,t,s,a,d,c,o)}setNorthCorrection(e,t){if(!this.wasm)throw new Error("WASM not initialized");this.wasm.set_north_correction(e,t)}setGpuMemoryBudgetMb(e,t){if(!this.wasm)throw new Error("WASM not initialized");this.wasm.set_gpu_memory_budget_mb(e,t)}setRenderQuality(e,t){if(!this.wasm)throw new Error("WASM not initialized");this.wasm.set_render_quality(e,t)}readCameraPos(e){if(!this.wasm)throw new Error("WASM not initialized");return this.wasm.read_camera_pos(e)}animateTo(e,t){if(!this.wasm)throw new Error("WASM not initialized");this.wasm.animate_to(e,t)}setScale(e,t){if(!this.wasm)throw new Error("WASM not initialized");this.wasm.set_window_scale(e,t)}async decodeAsset(e){if(!this.decodePool)throw new Error("Renderer not initialized");return this.decodePool.run(e)}destroy(){var e;(e=this.decodePool)==null||e.terminate()}}const b="fa5ceba1";function A(n,e){let t=!1,s=null,a=null;async function d(c,o){if(a){const i=`https://sangine-asset-cache/${c}`,w=await a.match(i);if(w)return w;const l=await o(),h=await fetch(l);return h.ok&&await a.put(i,h.clone()),h}return fetch(await o())}n.onmessage=async c=>{if(!t){const w=await import(new URL(`${g}/sbo-decode/wasm_sbo_decode.${b}.js`,n.location.origin).href);await w.default(),s=w,t=!0}!a&&typeof caches<"u"&&(a=await caches.open("sangine-assets-v1"));const{data:o}=c;if("texture-file"in o)try{const i=await d(o["texture-file"].pk,()=>e(o));if(!i.ok)throw new Error(`HTTP error! status: ${i.status}`);const w=await i.blob(),l=await createImageBitmap(w),h=new OffscreenCanvas(l.width,l.height),m=h.getContext("2d");if(m===null)throw new Error("Couldnt create canvas");m.drawImage(l,0,0);const u=m.getImageData(0,0,h.width,h.height);n.postMessage({success:!0,width:h.width,height:h.height,data:u.data.buffer},[u.data.buffer])}catch(i){n.postMessage({success:!1,error:i.message})}else if("model-part-mesh"in o){const i=await d(o["model-part-mesh"].pk,()=>e(o));if(!i.ok)throw new Error(`HTTP error! status: ${i.status}`);const w=await i.arrayBuffer(),l=new Uint8Array(w),h=s.decode_sbo(l);n.postMessage({success:!0,data:h.buffer},[h.buffer])}}}exports.RendererService=p;exports.registerDecodeWorker=A;
|
package/dist/index.es.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
var
|
|
2
|
-
var y = (n, e, t) => e in n ?
|
|
3
|
-
var
|
|
4
|
-
const
|
|
5
|
-
class
|
|
1
|
+
var f = Object.defineProperty;
|
|
2
|
+
var y = (n, e, t) => e in n ? f(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
|
|
3
|
+
var r = (n, e, t) => y(n, typeof e != "symbol" ? e + "" : e, t);
|
|
4
|
+
const g = "/static/sangine/wasm", _ = "2f6d6a9d";
|
|
5
|
+
class R {
|
|
6
6
|
constructor(e, t) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
r(this, "workers");
|
|
8
|
+
r(this, "idle");
|
|
9
|
+
r(this, "queue", []);
|
|
10
10
|
this.workers = Array.from({ length: t }, e), this.idle = [...this.workers];
|
|
11
11
|
}
|
|
12
12
|
run(e) {
|
|
13
13
|
return new Promise((t, s) => {
|
|
14
|
-
const
|
|
15
|
-
|
|
14
|
+
const a = this.idle.pop();
|
|
15
|
+
a ? this.dispatch(a, e, t, s) : this.queue.push({ request: e, resolve: t, reject: s });
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
|
-
dispatch(e, t, s,
|
|
18
|
+
dispatch(e, t, s, a) {
|
|
19
19
|
const d = (i) => {
|
|
20
|
-
s(i.data),
|
|
20
|
+
s(i.data), o(), this.release(e);
|
|
21
21
|
}, c = (i) => {
|
|
22
|
-
|
|
23
|
-
},
|
|
22
|
+
a(i), o(), this.release(e);
|
|
23
|
+
}, o = () => {
|
|
24
24
|
e.removeEventListener("message", d), e.removeEventListener("error", c);
|
|
25
25
|
};
|
|
26
26
|
e.addEventListener("message", d, { once: !0 }), e.addEventListener("error", c, { once: !0 }), e.postMessage(t);
|
|
@@ -34,18 +34,19 @@ class p {
|
|
|
34
34
|
e.terminate();
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
class
|
|
37
|
+
class b {
|
|
38
38
|
constructor(e) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
39
|
+
r(this, "wasm", null);
|
|
40
|
+
r(this, "callbackRegistry", {});
|
|
41
|
+
r(this, "userActionRegistry", {});
|
|
42
|
+
r(this, "assetsDownloadingRegistry", {});
|
|
43
|
+
r(this, "windowCreatedPromiseRegistry", {});
|
|
44
|
+
r(this, "windowCreatedPromiseResolveRegistry", {});
|
|
45
|
+
r(this, "_inited", !1);
|
|
46
|
+
r(this, "decodePool");
|
|
47
|
+
r(this, "_readyPromise");
|
|
48
|
+
r(this, "_resolveReady");
|
|
49
|
+
r(this, "_rejectReady");
|
|
49
50
|
this.config = e, this._readyPromise = new Promise((t, s) => {
|
|
50
51
|
this._resolveReady = t, this._rejectReady = s;
|
|
51
52
|
}), this.config = e;
|
|
@@ -55,12 +56,12 @@ class A {
|
|
|
55
56
|
if (this._inited) return this._readyPromise;
|
|
56
57
|
try {
|
|
57
58
|
const t = await import(new URL(
|
|
58
|
-
`${
|
|
59
|
+
`${g}/sangine/sangine.${_}.js`,
|
|
59
60
|
window.location.origin
|
|
60
61
|
).toString());
|
|
61
62
|
await t.default(), this.wasm = t, this._inited = !0;
|
|
62
63
|
const s = this.config.numWorkers ?? (navigator.hardwareConcurrency || 2) - 1;
|
|
63
|
-
this.decodePool = new
|
|
64
|
+
this.decodePool = new R(
|
|
64
65
|
() => this.config.createDecodeWorker(),
|
|
65
66
|
Math.max(s, 1)
|
|
66
67
|
), this.wasm.register_asset_decoder(this.decodeAsset.bind(this)), this.wasm.register_event_listener(this.handleSangineEvent.bind(this)), this._resolveReady();
|
|
@@ -94,20 +95,29 @@ class A {
|
|
|
94
95
|
for (const s of this.callbackRegistry[e].routeUpdated)
|
|
95
96
|
s(t);
|
|
96
97
|
}
|
|
98
|
+
handleAssetsDownloading(e, t) {
|
|
99
|
+
this.assetsDownloadingRegistry[e] = t;
|
|
100
|
+
for (const s of this.callbackRegistry[e].assetsDownloading)
|
|
101
|
+
s(t);
|
|
102
|
+
}
|
|
97
103
|
handleSangineEvent(e, t) {
|
|
98
|
-
t === "ready" ? this.windowCreatedPromiseResolveRegistry[e]() : "actionChanged" in t ? this.handleActionChanged(e, t.actionChanged.action) : "measurementCreated" in t ? this.handleMeasurementCreated(e, t.measurementCreated.measurement) : "routeUnderConstructionUpdated" in t
|
|
104
|
+
t === "ready" ? this.windowCreatedPromiseResolveRegistry[e]() : "actionChanged" in t ? this.handleActionChanged(e, t.actionChanged.action) : "measurementCreated" in t ? this.handleMeasurementCreated(e, t.measurementCreated.measurement) : "routeUnderConstructionUpdated" in t ? this.handleRouteUpdated(e, t.routeUnderConstructionUpdated.route) : "assetsDownloading" in t && this.handleAssetsDownloading(e, t.assetsDownloading.downloading);
|
|
99
105
|
}
|
|
100
106
|
createWindow(e, t) {
|
|
101
107
|
if (!this.wasm) throw new Error("WASM not initialized");
|
|
102
108
|
let s;
|
|
103
|
-
const
|
|
109
|
+
const a = new Promise((c) => {
|
|
104
110
|
s = c;
|
|
105
111
|
}), d = this.wasm.create_window(e, t);
|
|
106
112
|
return this.windowCreatedPromiseResolveRegistry[d] = s, this.callbackRegistry[d] = {
|
|
107
113
|
actionChanged: [],
|
|
108
114
|
routeUpdated: [],
|
|
109
|
-
measurementCreated: []
|
|
110
|
-
|
|
115
|
+
measurementCreated: [],
|
|
116
|
+
assetsDownloading: []
|
|
117
|
+
}, this.userActionRegistry[d] = "watching", this.windowCreatedPromiseRegistry[d] = a, d;
|
|
118
|
+
}
|
|
119
|
+
getAssetsDownloading(e) {
|
|
120
|
+
return this.assetsDownloadingRegistry[e] || !1;
|
|
111
121
|
}
|
|
112
122
|
readUserAction(e) {
|
|
113
123
|
return this.userActionRegistry[e];
|
|
@@ -138,16 +148,16 @@ class A {
|
|
|
138
148
|
if (!this.wasm) throw new Error("WASM not initialized");
|
|
139
149
|
this.wasm.animate_to_route(e, t);
|
|
140
150
|
}
|
|
141
|
-
setSunProperties(e, t, s,
|
|
151
|
+
setSunProperties(e, t, s, a, d, c, o) {
|
|
142
152
|
if (!this.wasm) throw new Error("WASM not initialized");
|
|
143
153
|
this.wasm.set_sun_properties(
|
|
144
154
|
e,
|
|
145
155
|
t,
|
|
146
156
|
s,
|
|
147
|
-
|
|
157
|
+
a,
|
|
148
158
|
d,
|
|
149
159
|
c,
|
|
150
|
-
|
|
160
|
+
o
|
|
151
161
|
);
|
|
152
162
|
}
|
|
153
163
|
setNorthCorrection(e, t) {
|
|
@@ -183,31 +193,31 @@ class A {
|
|
|
183
193
|
(e = this.decodePool) == null || e.terminate();
|
|
184
194
|
}
|
|
185
195
|
}
|
|
186
|
-
const
|
|
196
|
+
const p = "fa5ceba1";
|
|
187
197
|
function E(n, e) {
|
|
188
|
-
let t = !1, s = null,
|
|
189
|
-
async function d(c,
|
|
190
|
-
if (
|
|
191
|
-
const i = `https://sangine-asset-cache/${c}`, w = await
|
|
198
|
+
let t = !1, s = null, a = null;
|
|
199
|
+
async function d(c, o) {
|
|
200
|
+
if (a) {
|
|
201
|
+
const i = `https://sangine-asset-cache/${c}`, w = await a.match(i);
|
|
192
202
|
if (w) return w;
|
|
193
|
-
const l = await
|
|
194
|
-
return h.ok && await
|
|
203
|
+
const l = await o(), h = await fetch(l);
|
|
204
|
+
return h.ok && await a.put(i, h.clone()), h;
|
|
195
205
|
}
|
|
196
|
-
return fetch(await
|
|
206
|
+
return fetch(await o());
|
|
197
207
|
}
|
|
198
208
|
n.onmessage = async (c) => {
|
|
199
209
|
if (!t) {
|
|
200
210
|
const w = await import(new URL(
|
|
201
|
-
`${
|
|
211
|
+
`${g}/sbo-decode/wasm_sbo_decode.${p}.js`,
|
|
202
212
|
n.location.origin
|
|
203
213
|
).href);
|
|
204
214
|
await w.default(), s = w, t = !0;
|
|
205
215
|
}
|
|
206
|
-
!
|
|
207
|
-
const { data:
|
|
208
|
-
if ("texture-file" in
|
|
216
|
+
!a && typeof caches < "u" && (a = await caches.open("sangine-assets-v1"));
|
|
217
|
+
const { data: o } = c;
|
|
218
|
+
if ("texture-file" in o)
|
|
209
219
|
try {
|
|
210
|
-
const i = await d(
|
|
220
|
+
const i = await d(o["texture-file"].pk, () => e(o));
|
|
211
221
|
if (!i.ok)
|
|
212
222
|
throw new Error(`HTTP error! status: ${i.status}`);
|
|
213
223
|
const w = await i.blob(), l = await createImageBitmap(w), h = new OffscreenCanvas(l.width, l.height), m = h.getContext("2d");
|
|
@@ -227,8 +237,8 @@ function E(n, e) {
|
|
|
227
237
|
} catch (i) {
|
|
228
238
|
n.postMessage({ success: !1, error: i.message });
|
|
229
239
|
}
|
|
230
|
-
else if ("model-part-mesh" in
|
|
231
|
-
const i = await d(
|
|
240
|
+
else if ("model-part-mesh" in o) {
|
|
241
|
+
const i = await d(o["model-part-mesh"].pk, () => e(o));
|
|
232
242
|
if (!i.ok)
|
|
233
243
|
throw new Error(`HTTP error! status: ${i.status}`);
|
|
234
244
|
const w = await i.arrayBuffer(), l = new Uint8Array(w), h = s.decode_sbo(l);
|
|
@@ -243,6 +253,6 @@ function E(n, e) {
|
|
|
243
253
|
};
|
|
244
254
|
}
|
|
245
255
|
export {
|
|
246
|
-
|
|
256
|
+
b as RendererService,
|
|
247
257
|
E as registerDecodeWorker
|
|
248
258
|
};
|
|
@@ -3,16 +3,19 @@ import type * as SangineModule from './wasm-types/sangine';
|
|
|
3
3
|
type ActionChangedCallback = (action: UserAction) => void;
|
|
4
4
|
type RouteUpdatedCallback = (route: Route) => void;
|
|
5
5
|
type MeasurementCreatedCallback = (measurement: Measurement) => void;
|
|
6
|
+
type AssetsDownloadingCallback = (downloading: boolean) => void;
|
|
6
7
|
interface CallbackMap {
|
|
7
8
|
actionChanged: ActionChangedCallback;
|
|
8
9
|
routeUpdated: RouteUpdatedCallback;
|
|
9
10
|
measurementCreated: MeasurementCreatedCallback;
|
|
11
|
+
assetsDownloading: AssetsDownloadingCallback;
|
|
10
12
|
}
|
|
11
13
|
export declare class RendererService {
|
|
12
14
|
private config;
|
|
13
15
|
private wasm;
|
|
14
16
|
private callbackRegistry;
|
|
15
17
|
private userActionRegistry;
|
|
18
|
+
private assetsDownloadingRegistry;
|
|
16
19
|
private windowCreatedPromiseRegistry;
|
|
17
20
|
private windowCreatedPromiseResolveRegistry;
|
|
18
21
|
private _inited;
|
|
@@ -28,8 +31,10 @@ export declare class RendererService {
|
|
|
28
31
|
handleActionChanged(windowId: number, action: UserAction): void;
|
|
29
32
|
handleMeasurementCreated(windowId: number, measurement: Measurement): void;
|
|
30
33
|
handleRouteUpdated(windowId: number, route: Route): void;
|
|
34
|
+
handleAssetsDownloading(windowId: number, downloading: boolean): void;
|
|
31
35
|
handleSangineEvent(windowId: number, event: SangineEvent): void;
|
|
32
36
|
createWindow(containerId: string, scene: Scene): number;
|
|
37
|
+
getAssetsDownloading(containerId: number): boolean;
|
|
33
38
|
readUserAction(windowId: number): UserAction;
|
|
34
39
|
windowReady(windowId: number): Promise<void>;
|
|
35
40
|
registerCallback<K extends keyof CallbackMap>(windowId: number, event: K, callback: CallbackMap[K]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rendererService.d.ts","sourceRoot":"","sources":["../src/rendererService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,KAAK,EACL,YAAY,EACZ,KAAK,EACL,UAAU,EACX,MAAM,YAAY,CAAA;AAEnB,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAA;AAI1D,KAAK,qBAAqB,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;AACzD,KAAK,oBAAoB,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;AAClD,KAAK,0BAA0B,GAAG,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"rendererService.d.ts","sourceRoot":"","sources":["../src/rendererService.ts"],"names":[],"mappings":"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"}
|
|
@@ -3201,7 +3201,7 @@ async function __wbg_init(module_or_path) {
|
|
|
3201
3201
|
}
|
|
3202
3202
|
|
|
3203
3203
|
if (module_or_path === undefined) {
|
|
3204
|
-
module_or_path = new URL('sangine_bg.
|
|
3204
|
+
module_or_path = new URL('sangine_bg.2f6d6a9d.wasm', import.meta.url);
|
|
3205
3205
|
}
|
|
3206
3206
|
const imports = __wbg_get_imports();
|
|
3207
3207
|
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SANGINE_HASH = "
|
|
1
|
+
export declare const SANGINE_HASH = "2f6d6a9d";
|
|
2
2
|
//# sourceMappingURL=sangine.d.ts.map
|