CVNSS commited on
Commit
7a522d9
·
verified ·
1 Parent(s): 7fa5fd3

Update dxf-parser-worker.js

Browse files
Files changed (1) hide show
  1. dxf-parser-worker.js +45 -32
dxf-parser-worker.js CHANGED
@@ -1,32 +1,45 @@
1
- // assets/dxf-parser-worker.js
2
- // Fallback worker: giữ app không crash nếu thiếu worker DXF thật.
3
- // Protocol: receive { id, input } -> respond { id, success, data, error }
4
-
5
- self.addEventListener("message", async (evt) => {
6
- const msg = evt?.data ?? {};
7
- const id = msg.id;
8
-
9
- // Nếu không có id thì bỏ qua (để tránh phá các message lạ)
10
- if (!id) return;
11
-
12
- try {
13
- // Bạn thể log để debug:
14
- // console.log("[DXF Worker] input keys:", Object.keys(msg.input || {}));
15
-
16
- self.postMessage({
17
- id,
18
- success: false,
19
- data: null,
20
- error:
21
- "DXF parser worker đang là bản fallback (chưa có worker thật). " +
22
- "Bạn cần upload đúng file build 'dxf-parser-worker.js' vào /assets để chức năng convert DXF hoạt động.",
23
- });
24
- } catch (err) {
25
- self.postMessage({
26
- id,
27
- success: false,
28
- data: null,
29
- error: `DXF worker fallback error: ${err?.message || String(err)}`,
30
- });
31
- }
32
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // /assets/dxf-parser-worker.js
2
+ // Bootstrap: ưu tiên worker thật local nếu có, nếu không thì load từ bản Firebase đang chạy.
3
+ // Để tự host 100% trong HF: tải worker thật về đặt tại /assets/dxf-parser-worker.real.js
4
+
5
+ (() => {
6
+ const CANDIDATES = [
7
+ "./dxf-parser-worker.real.js",
8
+ "https://cad2map.web.app/assets/dxf-parser-worker.js",
9
+ ];
10
+
11
+ function installFallback(reason) {
12
+ self.addEventListener("message", (evt) => {
13
+ const msg = evt?.data ?? {};
14
+ const id = msg.id;
15
+ if (!id) return;
16
+
17
+ self.postMessage({
18
+ id,
19
+ success: false,
20
+ data: null,
21
+ error:
22
+ "Không nạp được DXF parser worker thật. " +
23
+ "Lý do: " + String(reason || "unknown") + ". " +
24
+ "Hãy copy worker thật vào /assets/dxf-parser-worker.real.js (khuyến nghị) " +
25
+ "hoặc đảm bảo URL Firebase cho phép importScripts CORS.",
26
+ });
27
+ });
28
+ }
29
+
30
+ try {
31
+ let loaded = false;
32
+ for (const url of CANDIDATES) {
33
+ try {
34
+ importScripts(url);
35
+ loaded = true;
36
+ break;
37
+ } catch (e) {
38
+ // thử candidate tiếp theo
39
+ }
40
+ }
41
+ if (!loaded) installFallback("importScripts failed for all candidates");
42
+ } catch (e) {
43
+ installFallback(e?.message || e);
44
+ }
45
+ })();