sibujs 1.5.0 → 2.1.0
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/browser.cjs +332 -121
- package/dist/browser.d.cts +5 -0
- package/dist/browser.d.ts +5 -0
- package/dist/browser.js +6 -6
- package/dist/build.cjs +1049 -344
- package/dist/build.js +15 -13
- package/dist/cdn.global.js +17 -16
- package/dist/chunk-2RA7SHDA.js +65 -0
- package/dist/chunk-2UPRY23K.js +80 -0
- package/dist/{chunk-BMPL52BF.js → chunk-3DZP6OIT.js} +118 -66
- package/dist/chunk-3JHCYHWN.js +125 -0
- package/dist/{chunk-CZUGLNJS.js → chunk-45YP72ZQ.js} +3 -3
- package/dist/{chunk-JCDUJN2F.js → chunk-AMK2TYNW.js} +490 -153
- package/dist/{chunk-NHUC2QWH.js → chunk-CWBVQML6.js} +1 -1
- package/dist/{chunk-XHK6BDAJ.js → chunk-DRUZZAK4.js} +25 -8
- package/dist/{chunk-RJ46C3CS.js → chunk-GWWURC5M.js} +71 -20
- package/dist/{chunk-3X2YG6YM.js → chunk-JYD2PWXH.js} +59 -28
- package/dist/{chunk-2BYQDGN3.js → chunk-KGYT6UO6.js} +234 -63
- package/dist/{chunk-5X6PP2UK.js → chunk-LMLD24FC.js} +2 -2
- package/dist/{chunk-M4NLBH4I.js → chunk-LYTCUZ7H.js} +3 -2
- package/dist/{chunk-XUEEGU5O.js → chunk-NASX6ST2.js} +16 -4
- package/dist/{chunk-VQDZK23A.js → chunk-O6EFQ3KT.js} +181 -66
- package/dist/{chunk-BGN5ZMP4.js → chunk-OJ3P4ECI.js} +14 -2
- package/dist/chunk-ON5MMR2J.js +1327 -0
- package/dist/{chunk-SFKNRVCU.js → chunk-P2HSJDDN.js} +135 -79
- package/dist/chunk-QO3WC6FS.js +384 -0
- package/dist/{chunk-WZSPOOER.js → chunk-RDTDJCAB.js} +8 -5
- package/dist/{chunk-7GRNSCFT.js → chunk-TH2ILCYW.js} +312 -185
- package/dist/chunk-UCS6AMJ7.js +79 -0
- package/dist/{chunk-VAPYJN4X.js → chunk-V6C4FADE.js} +93 -23
- package/dist/{chunk-OUZZEE4S.js → chunk-WANSMF2L.js} +17 -11
- package/dist/{chunk-23VV7YD3.js → chunk-WIPZPFBQ.js} +25 -30
- package/dist/chunk-WZA53FXU.js +149 -0
- package/dist/{chunk-BGTHZHJ5.js → chunk-ZAQSMOED.js} +188 -44
- package/dist/{customElement-BL3Uo8dL.d.cts → customElement-CPfIrbvg.d.cts} +14 -10
- package/dist/{customElement-BL3Uo8dL.d.ts → customElement-CPfIrbvg.d.ts} +14 -10
- package/dist/data.cjs +536 -151
- package/dist/data.d.cts +20 -2
- package/dist/data.d.ts +20 -2
- package/dist/data.js +11 -9
- package/dist/devtools.cjs +613 -266
- package/dist/devtools.d.cts +1 -1
- package/dist/devtools.d.ts +1 -1
- package/dist/devtools.js +12 -6
- package/dist/ecosystem.cjs +602 -197
- package/dist/ecosystem.d.cts +9 -7
- package/dist/ecosystem.d.ts +9 -7
- package/dist/ecosystem.js +12 -11
- package/dist/extras.cjs +3500 -1608
- package/dist/extras.d.cts +9 -9
- package/dist/extras.d.ts +9 -9
- package/dist/extras.js +58 -45
- package/dist/index.cjs +1055 -344
- package/dist/index.d.cts +85 -8
- package/dist/index.d.ts +85 -8
- package/dist/index.js +32 -16
- package/dist/{introspect-BumjnBKr.d.cts → introspect-2TOlQ7oa.d.cts} +25 -3
- package/dist/{introspect-CZrlcaYy.d.ts → introspect-DnIpHQQz.d.ts} +25 -3
- package/dist/motion.cjs +122 -63
- package/dist/motion.js +4 -4
- package/dist/patterns.cjs +450 -110
- package/dist/patterns.d.cts +11 -12
- package/dist/patterns.d.ts +11 -12
- package/dist/patterns.js +7 -7
- package/dist/performance.cjs +373 -149
- package/dist/performance.d.cts +23 -16
- package/dist/performance.d.ts +23 -16
- package/dist/performance.js +13 -8
- package/dist/plugin-D30wlGW5.d.cts +71 -0
- package/dist/plugin-D30wlGW5.d.ts +71 -0
- package/dist/plugins.cjs +729 -301
- package/dist/plugins.d.cts +10 -3
- package/dist/plugins.d.ts +10 -3
- package/dist/plugins.js +106 -38
- package/dist/{ssr-Do_SiVoL.d.cts → ssr-CrVNy6Pa.d.cts} +9 -15
- package/dist/{ssr-Do_SiVoL.d.ts → ssr-CrVNy6Pa.d.ts} +9 -15
- package/dist/{ssr-4PBXAOO3.js → ssr-FXD2PPMC.js} +4 -3
- package/dist/ssr.cjs +736 -274
- package/dist/ssr.d.cts +26 -6
- package/dist/ssr.d.ts +26 -6
- package/dist/ssr.js +12 -11
- package/dist/{tagFactory-DaJ0YWX6.d.cts → tagFactory-S17H2qxu.d.cts} +9 -1
- package/dist/{tagFactory-DaJ0YWX6.d.ts → tagFactory-S17H2qxu.d.ts} +9 -1
- package/dist/testing.cjs +303 -76
- package/dist/testing.d.cts +17 -4
- package/dist/testing.d.ts +17 -4
- package/dist/testing.js +100 -44
- package/dist/ui.cjs +589 -178
- package/dist/ui.d.cts +1 -1
- package/dist/ui.d.ts +1 -1
- package/dist/ui.js +20 -17
- package/dist/widgets.cjs +1103 -146
- package/dist/widgets.d.cts +104 -2
- package/dist/widgets.d.ts +104 -2
- package/dist/widgets.js +9 -7
- package/package.json +8 -2
- package/dist/chunk-32DY64NT.js +0 -282
- package/dist/chunk-3AIRKM3B.js +0 -1263
- package/dist/chunk-3ARAQO7B.js +0 -398
- package/dist/chunk-3CRQALYP.js +0 -877
- package/dist/chunk-4EI4AG32.js +0 -482
- package/dist/chunk-4MYMUBRS.js +0 -21
- package/dist/chunk-5ZYQ6KDD.js +0 -154
- package/dist/chunk-6BMPXPUW.js +0 -26
- package/dist/chunk-6HLLIF3K.js +0 -398
- package/dist/chunk-6LSNVCS2.js +0 -937
- package/dist/chunk-6SA3QQES.js +0 -61
- package/dist/chunk-77L6NL3X.js +0 -1097
- package/dist/chunk-7BF6TK55.js +0 -1097
- package/dist/chunk-7TQKR4PP.js +0 -294
- package/dist/chunk-7V26P53V.js +0 -712
- package/dist/chunk-AZ3ISID5.js +0 -298
- package/dist/chunk-B7SWRFUT.js +0 -332
- package/dist/chunk-BTU3TJDS.js +0 -365
- package/dist/chunk-BW3WT46K.js +0 -937
- package/dist/chunk-C6KFWOFV.js +0 -616
- package/dist/chunk-CHF5OHIA.js +0 -61
- package/dist/chunk-CHJ27IGK.js +0 -26
- package/dist/chunk-CMBFNA7L.js +0 -27
- package/dist/chunk-DAHRH4ON.js +0 -331
- package/dist/chunk-DKOHBI74.js +0 -924
- package/dist/chunk-DTCOOBMX.js +0 -725
- package/dist/chunk-EBGIRKQY.js +0 -616
- package/dist/chunk-EUZND3CB.js +0 -27
- package/dist/chunk-EVCZO745.js +0 -365
- package/dist/chunk-EWFVA3TJ.js +0 -282
- package/dist/chunk-F3FA4F32.js +0 -292
- package/dist/chunk-FGOEVHY3.js +0 -60
- package/dist/chunk-G3BOQPVO.js +0 -365
- package/dist/chunk-GCOK2LC3.js +0 -282
- package/dist/chunk-GJPXRJ45.js +0 -37
- package/dist/chunk-HGMJFBC7.js +0 -654
- package/dist/chunk-JAKHTMQU.js +0 -1000
- package/dist/chunk-JCI5M6U6.js +0 -956
- package/dist/chunk-K4G4ZQNR.js +0 -286
- package/dist/chunk-K5ZUMYVS.js +0 -89
- package/dist/chunk-KQPDEVVS.js +0 -398
- package/dist/chunk-L6JRBDNS.js +0 -60
- package/dist/chunk-LA6KQEDU.js +0 -712
- package/dist/chunk-MB6QFH3I.js +0 -2776
- package/dist/chunk-MDVXJWFN.js +0 -304
- package/dist/chunk-MEZVEBPN.js +0 -2008
- package/dist/chunk-MK4ERFYL.js +0 -2249
- package/dist/chunk-MLKGABMK.js +0 -9
- package/dist/chunk-MQ5GOYPH.js +0 -2249
- package/dist/chunk-MYRV7VDM.js +0 -742
- package/dist/chunk-N6IZB6KJ.js +0 -567
- package/dist/chunk-NEKUBFPT.js +0 -60
- package/dist/chunk-NMRUZALC.js +0 -1097
- package/dist/chunk-NYVAC6P5.js +0 -37
- package/dist/chunk-NZIIMDWI.js +0 -84
- package/dist/chunk-OF7UZIVB.js +0 -725
- package/dist/chunk-P3XWXJZU.js +0 -282
- package/dist/chunk-P6W3STU4.js +0 -2249
- package/dist/chunk-PBHF5WKN.js +0 -616
- package/dist/chunk-PDZQY43A.js +0 -616
- package/dist/chunk-PTQJDMRT.js +0 -146
- package/dist/chunk-PZEGYCF5.js +0 -61
- package/dist/chunk-QBMDLBU2.js +0 -975
- package/dist/chunk-QWZG56ET.js +0 -2744
- package/dist/chunk-RQGQSLQK.js +0 -725
- package/dist/chunk-SDLZDHKP.js +0 -107
- package/dist/chunk-TDGZL5CU.js +0 -365
- package/dist/chunk-TNQWPPE6.js +0 -37
- package/dist/chunk-TSOKIX5Z.js +0 -654
- package/dist/chunk-UHNL42EF.js +0 -2730
- package/dist/chunk-UNXCEF6S.js +0 -21
- package/dist/chunk-V2XTI523.js +0 -347
- package/dist/chunk-VAU366PN.js +0 -2241
- package/dist/chunk-VMVDTCXB.js +0 -712
- package/dist/chunk-VQNQZCWJ.js +0 -61
- package/dist/chunk-VRW3FULF.js +0 -725
- package/dist/chunk-WADYRCO2.js +0 -304
- package/dist/chunk-WILQZRO4.js +0 -282
- package/dist/chunk-WR5D4EGH.js +0 -26
- package/dist/chunk-WUHJISPP.js +0 -298
- package/dist/chunk-XYU6TZOW.js +0 -182
- package/dist/chunk-Y6GP4QGG.js +0 -276
- package/dist/chunk-YECR7UIA.js +0 -347
- package/dist/chunk-YUTWTI4B.js +0 -654
- package/dist/chunk-Z65KYU7I.js +0 -26
- package/dist/chunk-Z6POF5YC.js +0 -975
- package/dist/chunk-ZBJP6WFL.js +0 -482
- package/dist/chunk-ZD6OAMTH.js +0 -277
- package/dist/chunk-ZWKZCBO6.js +0 -317
- package/dist/contracts-DDrwxvJ-.d.cts +0 -245
- package/dist/contracts-DDrwxvJ-.d.ts +0 -245
- package/dist/contracts-DOrhwbke.d.cts +0 -245
- package/dist/contracts-DOrhwbke.d.ts +0 -245
- package/dist/contracts-xo5ckdRP.d.cts +0 -240
- package/dist/contracts-xo5ckdRP.d.ts +0 -240
- package/dist/customElement-BKQfbSZQ.d.cts +0 -262
- package/dist/customElement-BKQfbSZQ.d.ts +0 -262
- package/dist/customElement-D2DJp_xn.d.cts +0 -313
- package/dist/customElement-D2DJp_xn.d.ts +0 -313
- package/dist/customElement-yz8uyk-0.d.cts +0 -308
- package/dist/customElement-yz8uyk-0.d.ts +0 -308
- package/dist/introspect-Cb0zgpi2.d.cts +0 -477
- package/dist/introspect-Y2xNXGSf.d.ts +0 -477
- package/dist/plugin-Bek4RhJY.d.cts +0 -43
- package/dist/plugin-Bek4RhJY.d.ts +0 -43
- package/dist/ssr-3RXHP5ES.js +0 -38
- package/dist/ssr-6GIMY5MX.js +0 -38
- package/dist/ssr-BA6sxxUd.d.cts +0 -135
- package/dist/ssr-BA6sxxUd.d.ts +0 -135
- package/dist/ssr-WKUPVSSK.js +0 -36
- package/dist/tagFactory-Dl8QCLga.d.cts +0 -23
- package/dist/tagFactory-Dl8QCLga.d.ts +0 -23
package/dist/chunk-LA6KQEDU.js
DELETED
|
@@ -1,712 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
div,
|
|
3
|
-
span
|
|
4
|
-
} from "./chunk-NHUC2QWH.js";
|
|
5
|
-
import {
|
|
6
|
-
sanitizeUrl
|
|
7
|
-
} from "./chunk-23VV7YD3.js";
|
|
8
|
-
import {
|
|
9
|
-
effect
|
|
10
|
-
} from "./chunk-6SA3QQES.js";
|
|
11
|
-
import {
|
|
12
|
-
batch,
|
|
13
|
-
signal
|
|
14
|
-
} from "./chunk-V2XTI523.js";
|
|
15
|
-
|
|
16
|
-
// src/platform/head.ts
|
|
17
|
-
var HEAD_URL_ATTRS = /* @__PURE__ */ new Set(["href", "src", "content"]);
|
|
18
|
-
function sanitizeHeadAttr(key, value) {
|
|
19
|
-
if (HEAD_URL_ATTRS.has(key)) return sanitizeUrl(value);
|
|
20
|
-
return value;
|
|
21
|
-
}
|
|
22
|
-
function Head(props) {
|
|
23
|
-
const anchor = document.createComment("sibu-head");
|
|
24
|
-
const managedElements = [];
|
|
25
|
-
const effectCleanups = [];
|
|
26
|
-
const cleanup = () => {
|
|
27
|
-
for (const el of managedElements) {
|
|
28
|
-
if (el.parentNode) el.parentNode.removeChild(el);
|
|
29
|
-
}
|
|
30
|
-
managedElements.length = 0;
|
|
31
|
-
for (const cleanupFn of effectCleanups) cleanupFn();
|
|
32
|
-
effectCleanups.length = 0;
|
|
33
|
-
};
|
|
34
|
-
const apply = () => {
|
|
35
|
-
cleanup();
|
|
36
|
-
if (props.title) {
|
|
37
|
-
if (typeof props.title === "function") {
|
|
38
|
-
const cleanupFn = effect(() => {
|
|
39
|
-
document.title = props.title();
|
|
40
|
-
});
|
|
41
|
-
effectCleanups.push(cleanupFn);
|
|
42
|
-
} else {
|
|
43
|
-
document.title = props.title;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
if (props.meta) {
|
|
47
|
-
for (const metaProps of props.meta) {
|
|
48
|
-
const el = document.createElement("meta");
|
|
49
|
-
for (const [key, value] of Object.entries(metaProps)) {
|
|
50
|
-
if (typeof value === "function") {
|
|
51
|
-
const cleanupFn = effect(() => {
|
|
52
|
-
el.setAttribute(key, value());
|
|
53
|
-
});
|
|
54
|
-
effectCleanups.push(cleanupFn);
|
|
55
|
-
} else {
|
|
56
|
-
el.setAttribute(key, value);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
document.head.appendChild(el);
|
|
60
|
-
managedElements.push(el);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
if (props.link) {
|
|
64
|
-
for (const linkProps of props.link) {
|
|
65
|
-
const el = document.createElement("link");
|
|
66
|
-
for (const [key, value] of Object.entries(linkProps)) {
|
|
67
|
-
el.setAttribute(key, sanitizeHeadAttr(key, value));
|
|
68
|
-
}
|
|
69
|
-
document.head.appendChild(el);
|
|
70
|
-
managedElements.push(el);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
if (props.script) {
|
|
74
|
-
for (const scriptProps of props.script) {
|
|
75
|
-
const el = document.createElement("script");
|
|
76
|
-
for (const [key, value] of Object.entries(scriptProps)) {
|
|
77
|
-
el.setAttribute(key, sanitizeHeadAttr(key, value));
|
|
78
|
-
}
|
|
79
|
-
document.head.appendChild(el);
|
|
80
|
-
managedElements.push(el);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (props.base) {
|
|
84
|
-
const existing = document.head.querySelector("base");
|
|
85
|
-
if (existing) existing.remove();
|
|
86
|
-
const el = document.createElement("base");
|
|
87
|
-
if (props.base.href) el.href = props.base.href;
|
|
88
|
-
if (props.base.target) el.target = props.base.target;
|
|
89
|
-
document.head.appendChild(el);
|
|
90
|
-
managedElements.push(el);
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
apply();
|
|
94
|
-
return anchor;
|
|
95
|
-
}
|
|
96
|
-
function setStructuredData(data) {
|
|
97
|
-
const existing = document.head.querySelector('script[type="application/ld+json"][data-sibu]');
|
|
98
|
-
if (existing) existing.remove();
|
|
99
|
-
const script = document.createElement("script");
|
|
100
|
-
script.type = "application/ld+json";
|
|
101
|
-
script.setAttribute("data-sibu", "true");
|
|
102
|
-
script.textContent = JSON.stringify(data);
|
|
103
|
-
document.head.appendChild(script);
|
|
104
|
-
}
|
|
105
|
-
function setCanonical(url) {
|
|
106
|
-
let link = document.head.querySelector('link[rel="canonical"]');
|
|
107
|
-
if (!link) {
|
|
108
|
-
link = document.createElement("link");
|
|
109
|
-
link.rel = "canonical";
|
|
110
|
-
document.head.appendChild(link);
|
|
111
|
-
}
|
|
112
|
-
link.href = sanitizeUrl(url);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// src/platform/worker.ts
|
|
116
|
-
function worker(workerFn2) {
|
|
117
|
-
const [result, setResult] = signal(null);
|
|
118
|
-
const [error, setError] = signal(null);
|
|
119
|
-
const [loading, setLoading] = signal(false);
|
|
120
|
-
let worker2 = null;
|
|
121
|
-
try {
|
|
122
|
-
if (typeof Worker === "undefined") {
|
|
123
|
-
throw new Error("Web Workers are not supported in this environment");
|
|
124
|
-
}
|
|
125
|
-
const fnBody = workerFn2.toString();
|
|
126
|
-
const blob = new Blob([`self.onmessage = ${fnBody};`], { type: "application/javascript" });
|
|
127
|
-
const url = URL.createObjectURL(blob);
|
|
128
|
-
worker2 = new Worker(url);
|
|
129
|
-
URL.revokeObjectURL(url);
|
|
130
|
-
worker2.onmessage = (e) => {
|
|
131
|
-
setResult(e.data);
|
|
132
|
-
setLoading(false);
|
|
133
|
-
};
|
|
134
|
-
worker2.onerror = (e) => {
|
|
135
|
-
setError(new Error(e.message || "Worker error"));
|
|
136
|
-
setLoading(false);
|
|
137
|
-
};
|
|
138
|
-
} catch (err) {
|
|
139
|
-
setError(err instanceof Error ? err : new Error(String(err)));
|
|
140
|
-
}
|
|
141
|
-
function post(data) {
|
|
142
|
-
if (!worker2) return;
|
|
143
|
-
setLoading(true);
|
|
144
|
-
setError(null);
|
|
145
|
-
setResult(null);
|
|
146
|
-
worker2.postMessage(data);
|
|
147
|
-
}
|
|
148
|
-
function terminate() {
|
|
149
|
-
if (!worker2) return;
|
|
150
|
-
worker2.terminate();
|
|
151
|
-
worker2 = null;
|
|
152
|
-
setLoading(false);
|
|
153
|
-
}
|
|
154
|
-
return { post, result, error, loading, terminate };
|
|
155
|
-
}
|
|
156
|
-
function workerFn(fn) {
|
|
157
|
-
const [loading, setLoading] = signal(false);
|
|
158
|
-
let worker2 = null;
|
|
159
|
-
try {
|
|
160
|
-
if (typeof Worker === "undefined") {
|
|
161
|
-
throw new Error("Web Workers are not supported in this environment");
|
|
162
|
-
}
|
|
163
|
-
const fnStr = fn.toString();
|
|
164
|
-
const blob = new Blob(
|
|
165
|
-
[
|
|
166
|
-
`self.onmessage = function(e) {
|
|
167
|
-
var fn = ${fnStr};
|
|
168
|
-
var result = fn.apply(null, e.data);
|
|
169
|
-
postMessage(result);
|
|
170
|
-
};`
|
|
171
|
-
],
|
|
172
|
-
{ type: "application/javascript" }
|
|
173
|
-
);
|
|
174
|
-
const url = URL.createObjectURL(blob);
|
|
175
|
-
worker2 = new Worker(url);
|
|
176
|
-
URL.revokeObjectURL(url);
|
|
177
|
-
} catch {
|
|
178
|
-
}
|
|
179
|
-
function run(...args) {
|
|
180
|
-
return new Promise((resolve, reject) => {
|
|
181
|
-
if (!worker2) {
|
|
182
|
-
reject(new Error("Worker is not available"));
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
setLoading(true);
|
|
186
|
-
worker2.onmessage = (e) => {
|
|
187
|
-
setLoading(false);
|
|
188
|
-
resolve(e.data);
|
|
189
|
-
};
|
|
190
|
-
worker2.onerror = (e) => {
|
|
191
|
-
setLoading(false);
|
|
192
|
-
reject(new Error(e.message || "Worker error"));
|
|
193
|
-
};
|
|
194
|
-
worker2.postMessage(args);
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
function terminate() {
|
|
198
|
-
if (!worker2) return;
|
|
199
|
-
worker2.terminate();
|
|
200
|
-
worker2 = null;
|
|
201
|
-
setLoading(false);
|
|
202
|
-
}
|
|
203
|
-
return { run, loading, terminate };
|
|
204
|
-
}
|
|
205
|
-
function createWorkerPool(workerFn2, poolSize) {
|
|
206
|
-
const size = poolSize || typeof navigator !== "undefined" && navigator.hardwareConcurrency || 4;
|
|
207
|
-
const workers = [];
|
|
208
|
-
let currentIndex = 0;
|
|
209
|
-
let alive = true;
|
|
210
|
-
try {
|
|
211
|
-
if (typeof Worker === "undefined") {
|
|
212
|
-
throw new Error("Web Workers are not supported in this environment");
|
|
213
|
-
}
|
|
214
|
-
const fnBody = workerFn2.toString();
|
|
215
|
-
const blob = new Blob([`self.onmessage = ${fnBody};`], { type: "application/javascript" });
|
|
216
|
-
const url = URL.createObjectURL(blob);
|
|
217
|
-
for (let i = 0; i < size; i++) {
|
|
218
|
-
workers.push(new Worker(url));
|
|
219
|
-
}
|
|
220
|
-
URL.revokeObjectURL(url);
|
|
221
|
-
} catch {
|
|
222
|
-
}
|
|
223
|
-
function execute(data) {
|
|
224
|
-
return new Promise((resolve, reject) => {
|
|
225
|
-
if (!alive || workers.length === 0) {
|
|
226
|
-
reject(new Error("Worker pool is not available"));
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
const worker2 = workers[currentIndex % workers.length];
|
|
230
|
-
currentIndex++;
|
|
231
|
-
worker2.onmessage = (e) => {
|
|
232
|
-
resolve(e.data);
|
|
233
|
-
};
|
|
234
|
-
worker2.onerror = (e) => {
|
|
235
|
-
reject(new Error(e.message || "Worker error"));
|
|
236
|
-
};
|
|
237
|
-
worker2.postMessage(data);
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
function terminate() {
|
|
241
|
-
alive = false;
|
|
242
|
-
for (const w of workers) {
|
|
243
|
-
w.terminate();
|
|
244
|
-
}
|
|
245
|
-
workers.length = 0;
|
|
246
|
-
}
|
|
247
|
-
return { execute, terminate };
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
// src/platform/wasm.ts
|
|
251
|
-
var moduleCache = /* @__PURE__ */ new Map();
|
|
252
|
-
var instanceCache = /* @__PURE__ */ new Map();
|
|
253
|
-
function wasm(source, config = {}) {
|
|
254
|
-
const [instance, setInstance] = signal(null);
|
|
255
|
-
const [loading, setLoading] = signal(true);
|
|
256
|
-
const [error, setError] = signal(null);
|
|
257
|
-
const cacheKey = config.cacheKey || (typeof source === "string" ? source : void 0);
|
|
258
|
-
async function load() {
|
|
259
|
-
setLoading(true);
|
|
260
|
-
setError(null);
|
|
261
|
-
setInstance(null);
|
|
262
|
-
try {
|
|
263
|
-
const wasmInstance = await loadWasmModule(source, config.imports, cacheKey);
|
|
264
|
-
setInstance(wasmInstance.exports);
|
|
265
|
-
} catch (err) {
|
|
266
|
-
setError(err instanceof Error ? err : new Error(String(err)));
|
|
267
|
-
} finally {
|
|
268
|
-
setLoading(false);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
load();
|
|
272
|
-
return {
|
|
273
|
-
instance,
|
|
274
|
-
loading,
|
|
275
|
-
error,
|
|
276
|
-
ready: () => instance() !== null,
|
|
277
|
-
reload: load
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
async function loadWasmModule(source, imports, cacheKey) {
|
|
281
|
-
const key = cacheKey || (typeof source === "string" ? source : void 0);
|
|
282
|
-
if (key) {
|
|
283
|
-
const cachedInstance = instanceCache.get(key);
|
|
284
|
-
if (cachedInstance) {
|
|
285
|
-
return cachedInstance;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
let module;
|
|
289
|
-
const cachedModule = key ? moduleCache.get(key) : void 0;
|
|
290
|
-
if (cachedModule) {
|
|
291
|
-
module = cachedModule;
|
|
292
|
-
} else {
|
|
293
|
-
let bytes;
|
|
294
|
-
if (typeof source === "string") {
|
|
295
|
-
if (typeof WebAssembly.instantiateStreaming === "function") {
|
|
296
|
-
const response2 = fetch(source);
|
|
297
|
-
const result = await WebAssembly.instantiateStreaming(response2, imports || {});
|
|
298
|
-
if (key) {
|
|
299
|
-
moduleCache.set(key, result.module);
|
|
300
|
-
instanceCache.set(key, result.instance);
|
|
301
|
-
}
|
|
302
|
-
return result.instance;
|
|
303
|
-
}
|
|
304
|
-
const response = await fetch(source);
|
|
305
|
-
bytes = await response.arrayBuffer();
|
|
306
|
-
} else if (source instanceof Uint8Array) {
|
|
307
|
-
bytes = source.buffer.slice(source.byteOffset, source.byteOffset + source.byteLength);
|
|
308
|
-
} else {
|
|
309
|
-
bytes = source;
|
|
310
|
-
}
|
|
311
|
-
module = await WebAssembly.compile(bytes);
|
|
312
|
-
if (key) moduleCache.set(key, module);
|
|
313
|
-
}
|
|
314
|
-
const instance = await WebAssembly.instantiate(module, imports || {});
|
|
315
|
-
if (key) instanceCache.set(key, instance);
|
|
316
|
-
return instance;
|
|
317
|
-
}
|
|
318
|
-
async function preloadWasm(url) {
|
|
319
|
-
if (moduleCache.has(url)) return;
|
|
320
|
-
let module;
|
|
321
|
-
if (typeof WebAssembly.compileStreaming === "function") {
|
|
322
|
-
module = await WebAssembly.compileStreaming(fetch(url));
|
|
323
|
-
} else {
|
|
324
|
-
const response = await fetch(url);
|
|
325
|
-
const bytes = await response.arrayBuffer();
|
|
326
|
-
module = await WebAssembly.compile(bytes);
|
|
327
|
-
}
|
|
328
|
-
moduleCache.set(url, module);
|
|
329
|
-
}
|
|
330
|
-
function createWasmBridge(instance) {
|
|
331
|
-
const exports = instance.exports;
|
|
332
|
-
const memory = exports.memory || instance.exports.memory;
|
|
333
|
-
return {
|
|
334
|
-
exports: instance.exports,
|
|
335
|
-
memory,
|
|
336
|
-
alloc(size) {
|
|
337
|
-
if (!exports.malloc) throw new Error("WASM module does not export malloc");
|
|
338
|
-
return exports.malloc(size);
|
|
339
|
-
},
|
|
340
|
-
free(ptr) {
|
|
341
|
-
if (!exports.free) throw new Error("WASM module does not export free");
|
|
342
|
-
exports.free(ptr);
|
|
343
|
-
},
|
|
344
|
-
writeString(str) {
|
|
345
|
-
const encoder = new TextEncoder();
|
|
346
|
-
const bytes = encoder.encode(str);
|
|
347
|
-
if (!exports.malloc) throw new Error("WASM module does not export malloc");
|
|
348
|
-
const ptr = exports.malloc(bytes.length);
|
|
349
|
-
new Uint8Array(memory.buffer, ptr, bytes.length).set(bytes);
|
|
350
|
-
return { ptr, len: bytes.length };
|
|
351
|
-
},
|
|
352
|
-
readString(ptr, len) {
|
|
353
|
-
const decoder = new TextDecoder();
|
|
354
|
-
return decoder.decode(new Uint8Array(memory.buffer, ptr, len));
|
|
355
|
-
},
|
|
356
|
-
writeArray(arr) {
|
|
357
|
-
if (!exports.malloc) throw new Error("WASM module does not export malloc");
|
|
358
|
-
const ptr = exports.malloc(arr.length * 8);
|
|
359
|
-
new Float64Array(memory.buffer, ptr, arr.length).set(Array.from(arr));
|
|
360
|
-
return { ptr, len: arr.length };
|
|
361
|
-
},
|
|
362
|
-
readF64Array(ptr, len) {
|
|
363
|
-
return new Float64Array(memory.buffer, ptr, len);
|
|
364
|
-
}
|
|
365
|
-
};
|
|
366
|
-
}
|
|
367
|
-
function clearWasmCache() {
|
|
368
|
-
moduleCache.clear();
|
|
369
|
-
instanceCache.clear();
|
|
370
|
-
}
|
|
371
|
-
function isWasmCached(key) {
|
|
372
|
-
return moduleCache.has(key);
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
// src/platform/microfrontend.ts
|
|
376
|
-
var moduleCache2 = /* @__PURE__ */ new Map();
|
|
377
|
-
function createMicroApp(config) {
|
|
378
|
-
const host = config.container ?? document.createElement("div");
|
|
379
|
-
host.setAttribute("data-micro-app", config.name);
|
|
380
|
-
let root;
|
|
381
|
-
if (config.shadow) {
|
|
382
|
-
root = host.attachShadow({ mode: "open" });
|
|
383
|
-
} else {
|
|
384
|
-
root = host;
|
|
385
|
-
}
|
|
386
|
-
let mounted = false;
|
|
387
|
-
function mount(component) {
|
|
388
|
-
if (root instanceof ShadowRoot) {
|
|
389
|
-
root.innerHTML = "";
|
|
390
|
-
} else {
|
|
391
|
-
while (root.firstChild) {
|
|
392
|
-
root.removeChild(root.firstChild);
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
const el = component();
|
|
396
|
-
root.appendChild(el);
|
|
397
|
-
mounted = true;
|
|
398
|
-
}
|
|
399
|
-
function unmount() {
|
|
400
|
-
if (!mounted) return;
|
|
401
|
-
if (root instanceof ShadowRoot) {
|
|
402
|
-
root.innerHTML = "";
|
|
403
|
-
} else {
|
|
404
|
-
while (root.firstChild) {
|
|
405
|
-
root.removeChild(root.firstChild);
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
mounted = false;
|
|
409
|
-
}
|
|
410
|
-
return { mount, unmount, element: host };
|
|
411
|
-
}
|
|
412
|
-
function loadRemoteModule(url) {
|
|
413
|
-
const cached = moduleCache2.get(url);
|
|
414
|
-
if (cached) return cached;
|
|
415
|
-
const promise = import(
|
|
416
|
-
/* @vite-ignore */
|
|
417
|
-
url
|
|
418
|
-
);
|
|
419
|
-
moduleCache2.set(url, promise);
|
|
420
|
-
promise.catch(() => {
|
|
421
|
-
moduleCache2.delete(url);
|
|
422
|
-
});
|
|
423
|
-
return promise;
|
|
424
|
-
}
|
|
425
|
-
function defineRemoteComponent(name, loader) {
|
|
426
|
-
let cached = null;
|
|
427
|
-
return function RemoteComponent() {
|
|
428
|
-
if (cached) {
|
|
429
|
-
return cached();
|
|
430
|
-
}
|
|
431
|
-
const container = div({
|
|
432
|
-
class: "sibu-remote",
|
|
433
|
-
"data-remote-component": name
|
|
434
|
-
});
|
|
435
|
-
container.appendChild(span({ class: "sibu-remote-loading", nodes: "Loading..." }));
|
|
436
|
-
loader().then((mod) => {
|
|
437
|
-
cached = mod.default;
|
|
438
|
-
const rendered = cached();
|
|
439
|
-
container.replaceChildren(rendered);
|
|
440
|
-
}).catch((err) => {
|
|
441
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
442
|
-
container.replaceChildren(
|
|
443
|
-
div({
|
|
444
|
-
class: "sibu-remote-error",
|
|
445
|
-
nodes: `Failed to load remote component "${name}": ${message}`
|
|
446
|
-
})
|
|
447
|
-
);
|
|
448
|
-
});
|
|
449
|
-
return container;
|
|
450
|
-
};
|
|
451
|
-
}
|
|
452
|
-
function createSharedScope(initialState) {
|
|
453
|
-
const signals = /* @__PURE__ */ new Map();
|
|
454
|
-
const subscribers = /* @__PURE__ */ new Map();
|
|
455
|
-
for (const key of Object.keys(initialState)) {
|
|
456
|
-
const [get2, set2] = signal(initialState[key]);
|
|
457
|
-
signals.set(key, { get: get2, set: set2 });
|
|
458
|
-
subscribers.set(key, /* @__PURE__ */ new Set());
|
|
459
|
-
}
|
|
460
|
-
function ensureSignal(key) {
|
|
461
|
-
if (!signals.has(key)) {
|
|
462
|
-
const [get2, set2] = signal(void 0);
|
|
463
|
-
signals.set(key, { get: get2, set: set2 });
|
|
464
|
-
subscribers.set(key, /* @__PURE__ */ new Set());
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
function get(key) {
|
|
468
|
-
ensureSignal(key);
|
|
469
|
-
return signals.get(key)?.get();
|
|
470
|
-
}
|
|
471
|
-
function set(key, value) {
|
|
472
|
-
ensureSignal(key);
|
|
473
|
-
signals.get(key)?.set(value);
|
|
474
|
-
const subs = subscribers.get(key);
|
|
475
|
-
if (subs) {
|
|
476
|
-
for (const cb of subs) {
|
|
477
|
-
cb(value);
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
function subscribe(key, callback) {
|
|
482
|
-
ensureSignal(key);
|
|
483
|
-
const subs = subscribers.get(key);
|
|
484
|
-
if (!subs) {
|
|
485
|
-
return () => {
|
|
486
|
-
};
|
|
487
|
-
}
|
|
488
|
-
subs.add(callback);
|
|
489
|
-
return () => {
|
|
490
|
-
subs.delete(callback);
|
|
491
|
-
};
|
|
492
|
-
}
|
|
493
|
-
return { get, set, subscribe };
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
// src/platform/serviceWorker.ts
|
|
497
|
-
function serviceWorker(scriptUrl, options) {
|
|
498
|
-
const [registration, setRegistration] = signal(null);
|
|
499
|
-
const [isReady, setIsReady] = signal(false);
|
|
500
|
-
const [isUpdateAvailable, setIsUpdateAvailable] = signal(false);
|
|
501
|
-
const [error, setError] = signal(null);
|
|
502
|
-
if ("serviceWorker" in navigator) {
|
|
503
|
-
navigator.serviceWorker.register(scriptUrl, options).then((reg) => {
|
|
504
|
-
setRegistration(reg);
|
|
505
|
-
setIsReady(true);
|
|
506
|
-
reg.addEventListener("updatefound", () => {
|
|
507
|
-
const newWorker = reg.installing;
|
|
508
|
-
if (newWorker) {
|
|
509
|
-
newWorker.addEventListener("statechange", () => {
|
|
510
|
-
if (newWorker.state === "installed" && navigator.serviceWorker.controller) {
|
|
511
|
-
setIsUpdateAvailable(true);
|
|
512
|
-
}
|
|
513
|
-
});
|
|
514
|
-
}
|
|
515
|
-
});
|
|
516
|
-
}).catch((err) => {
|
|
517
|
-
setError(err instanceof Error ? err : new Error(String(err)));
|
|
518
|
-
});
|
|
519
|
-
}
|
|
520
|
-
async function update() {
|
|
521
|
-
const reg = registration();
|
|
522
|
-
if (reg) {
|
|
523
|
-
await reg.update();
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
async function unregister() {
|
|
527
|
-
const reg = registration();
|
|
528
|
-
if (reg) {
|
|
529
|
-
const result = await reg.unregister();
|
|
530
|
-
if (result) {
|
|
531
|
-
setRegistration(null);
|
|
532
|
-
setIsReady(false);
|
|
533
|
-
}
|
|
534
|
-
return result;
|
|
535
|
-
}
|
|
536
|
-
return false;
|
|
537
|
-
}
|
|
538
|
-
return { registration, isReady, isUpdateAvailable, error, update, unregister };
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
// src/platform/staticSiteGenerator.ts
|
|
542
|
-
async function generateStaticSite(options) {
|
|
543
|
-
const { routes, renderFn } = options;
|
|
544
|
-
const pages = [];
|
|
545
|
-
const errors = [];
|
|
546
|
-
for (const route of routes) {
|
|
547
|
-
try {
|
|
548
|
-
const html = await renderFn(route);
|
|
549
|
-
pages.push({ path: route, html });
|
|
550
|
-
} catch (err) {
|
|
551
|
-
errors.push({
|
|
552
|
-
path: route,
|
|
553
|
-
error: err instanceof Error ? err : new Error(String(err))
|
|
554
|
-
});
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
return { pages, errors };
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
// src/platform/incrementalRegeneration.ts
|
|
561
|
-
function createISR(options) {
|
|
562
|
-
const { revalidateAfter, fetcher, initialData } = options;
|
|
563
|
-
const [data, setData] = signal(initialData);
|
|
564
|
-
const [timestamp, setTimestamp] = signal(initialData !== void 0 ? Date.now() : 0);
|
|
565
|
-
const isStale = () => {
|
|
566
|
-
const ts = timestamp();
|
|
567
|
-
if (ts === 0) return true;
|
|
568
|
-
return Date.now() - ts >= revalidateAfter;
|
|
569
|
-
};
|
|
570
|
-
const revalidate = async () => {
|
|
571
|
-
const result = await fetcher();
|
|
572
|
-
setData(result);
|
|
573
|
-
setTimestamp(Date.now());
|
|
574
|
-
};
|
|
575
|
-
if (initialData === void 0) {
|
|
576
|
-
revalidate();
|
|
577
|
-
}
|
|
578
|
-
const intervalId = setInterval(() => {
|
|
579
|
-
revalidate();
|
|
580
|
-
}, revalidateAfter);
|
|
581
|
-
const dispose = () => {
|
|
582
|
-
clearInterval(intervalId);
|
|
583
|
-
};
|
|
584
|
-
return { data, isStale, revalidate, dispose };
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
// src/platform/routeActions.ts
|
|
588
|
-
function createAction(actionFn) {
|
|
589
|
-
const [data, setData] = signal(void 0);
|
|
590
|
-
const [error, setError] = signal(void 0);
|
|
591
|
-
const [loading, setLoading] = signal(false);
|
|
592
|
-
const submit = async (input) => {
|
|
593
|
-
batch(() => {
|
|
594
|
-
setLoading(true);
|
|
595
|
-
setError(void 0);
|
|
596
|
-
});
|
|
597
|
-
try {
|
|
598
|
-
const result = await actionFn(input);
|
|
599
|
-
batch(() => {
|
|
600
|
-
setData(result);
|
|
601
|
-
setLoading(false);
|
|
602
|
-
});
|
|
603
|
-
return result;
|
|
604
|
-
} catch (err) {
|
|
605
|
-
const actionError = err instanceof Error ? err : new Error(String(err));
|
|
606
|
-
batch(() => {
|
|
607
|
-
setError(actionError);
|
|
608
|
-
setLoading(false);
|
|
609
|
-
});
|
|
610
|
-
throw actionError;
|
|
611
|
-
}
|
|
612
|
-
};
|
|
613
|
-
return { data, error, loading, submit };
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
// src/platform/scrollRestoration.ts
|
|
617
|
-
function scrollRestoration(options) {
|
|
618
|
-
const mode = options?.mode ?? "auto";
|
|
619
|
-
const positions = /* @__PURE__ */ new Map();
|
|
620
|
-
let popstateHandler = null;
|
|
621
|
-
let currentKey = null;
|
|
622
|
-
const save = (key) => {
|
|
623
|
-
positions.set(key, {
|
|
624
|
-
x: window.scrollX,
|
|
625
|
-
y: window.scrollY
|
|
626
|
-
});
|
|
627
|
-
currentKey = key;
|
|
628
|
-
};
|
|
629
|
-
const restore = (key) => {
|
|
630
|
-
const pos = positions.get(key);
|
|
631
|
-
if (pos) {
|
|
632
|
-
window.scrollTo(pos.x, pos.y);
|
|
633
|
-
}
|
|
634
|
-
currentKey = key;
|
|
635
|
-
};
|
|
636
|
-
const getPosition = (key) => {
|
|
637
|
-
return positions.get(key);
|
|
638
|
-
};
|
|
639
|
-
if (mode === "auto") {
|
|
640
|
-
popstateHandler = () => {
|
|
641
|
-
if (currentKey) {
|
|
642
|
-
save(currentKey);
|
|
643
|
-
}
|
|
644
|
-
};
|
|
645
|
-
window.addEventListener("popstate", popstateHandler);
|
|
646
|
-
}
|
|
647
|
-
const dispose = () => {
|
|
648
|
-
if (popstateHandler) {
|
|
649
|
-
window.removeEventListener("popstate", popstateHandler);
|
|
650
|
-
popstateHandler = null;
|
|
651
|
-
}
|
|
652
|
-
positions.clear();
|
|
653
|
-
};
|
|
654
|
-
return { save, restore, getPosition, dispose };
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
// src/platform/routeMiddleware.ts
|
|
658
|
-
function composeMiddleware(...fns) {
|
|
659
|
-
return async (context, next) => {
|
|
660
|
-
let index = -1;
|
|
661
|
-
const dispatch = async (i) => {
|
|
662
|
-
if (i <= index) {
|
|
663
|
-
throw new Error("next() called multiple times");
|
|
664
|
-
}
|
|
665
|
-
index = i;
|
|
666
|
-
if (i < fns.length) {
|
|
667
|
-
await fns[i](context, () => dispatch(i + 1));
|
|
668
|
-
} else {
|
|
669
|
-
await next();
|
|
670
|
-
}
|
|
671
|
-
};
|
|
672
|
-
await dispatch(0);
|
|
673
|
-
};
|
|
674
|
-
}
|
|
675
|
-
function createMiddlewareChain() {
|
|
676
|
-
const middlewares = [];
|
|
677
|
-
const use = (fn) => {
|
|
678
|
-
middlewares.push(fn);
|
|
679
|
-
};
|
|
680
|
-
const run = async (context) => {
|
|
681
|
-
const composed = composeMiddleware(...middlewares);
|
|
682
|
-
await composed(context, () => {
|
|
683
|
-
});
|
|
684
|
-
};
|
|
685
|
-
return { use, run };
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
export {
|
|
689
|
-
Head,
|
|
690
|
-
setStructuredData,
|
|
691
|
-
setCanonical,
|
|
692
|
-
worker,
|
|
693
|
-
workerFn,
|
|
694
|
-
createWorkerPool,
|
|
695
|
-
wasm,
|
|
696
|
-
loadWasmModule,
|
|
697
|
-
preloadWasm,
|
|
698
|
-
createWasmBridge,
|
|
699
|
-
clearWasmCache,
|
|
700
|
-
isWasmCached,
|
|
701
|
-
createMicroApp,
|
|
702
|
-
loadRemoteModule,
|
|
703
|
-
defineRemoteComponent,
|
|
704
|
-
createSharedScope,
|
|
705
|
-
serviceWorker,
|
|
706
|
-
generateStaticSite,
|
|
707
|
-
createISR,
|
|
708
|
-
createAction,
|
|
709
|
-
scrollRestoration,
|
|
710
|
-
composeMiddleware,
|
|
711
|
-
createMiddlewareChain
|
|
712
|
-
};
|