sibujs 1.0.0-beta.1
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/LICENSE +21 -0
- package/README.md +1630 -0
- package/dist/browser.cjs +815 -0
- package/dist/browser.d.cts +174 -0
- package/dist/browser.d.ts +174 -0
- package/dist/browser.js +458 -0
- package/dist/build.cjs +4970 -0
- package/dist/build.d.cts +630 -0
- package/dist/build.d.ts +630 -0
- package/dist/build.js +2478 -0
- package/dist/cdn.global.js +115 -0
- package/dist/chunk-27QC4FPL.js +67 -0
- package/dist/chunk-2ABBWCGC.js +65 -0
- package/dist/chunk-2MUNQYZ7.js +26 -0
- package/dist/chunk-2PSPKNUI.js +1711 -0
- package/dist/chunk-35CDLDX5.js +1758 -0
- package/dist/chunk-36MU4CFV.js +41 -0
- package/dist/chunk-3FIQOFI6.js +182 -0
- package/dist/chunk-3GHNC2BN.js +28 -0
- package/dist/chunk-3HLWWEPU.js +909 -0
- package/dist/chunk-3IVI3J54.js +252 -0
- package/dist/chunk-3KZ72WNW.js +944 -0
- package/dist/chunk-4AU64SQV.js +182 -0
- package/dist/chunk-4MOK7HAR.js +84 -0
- package/dist/chunk-4QK6FBDH.js +1429 -0
- package/dist/chunk-566Z7HXB.js +737 -0
- package/dist/chunk-5CRBB7XP.js +358 -0
- package/dist/chunk-5G67D3IZ.js +168 -0
- package/dist/chunk-5NCPAWBE.js +99 -0
- package/dist/chunk-5O2RKXR3.js +1444 -0
- package/dist/chunk-6BTBDO6A.js +633 -0
- package/dist/chunk-6IWEHW57.js +43 -0
- package/dist/chunk-6JGMNCD6.js +282 -0
- package/dist/chunk-6QRLJNXR.js +1425 -0
- package/dist/chunk-7HM5UE5T.js +270 -0
- package/dist/chunk-7JOLTGUH.js +58 -0
- package/dist/chunk-7MCWJCQK.js +909 -0
- package/dist/chunk-7RIIFP3E.js +1758 -0
- package/dist/chunk-7UASYN3G.js +254 -0
- package/dist/chunk-7W2WYHDI.js +741 -0
- package/dist/chunk-7Y35RDSJ.js +872 -0
- package/dist/chunk-A65GFJBL.js +65 -0
- package/dist/chunk-AD6ZIEDK.js +67 -0
- package/dist/chunk-AK5Y72F3.js +1426 -0
- package/dist/chunk-APOMMWH4.js +282 -0
- package/dist/chunk-ARZVTWIQ.js +1750 -0
- package/dist/chunk-AWWBM2BI.js +664 -0
- package/dist/chunk-AX5VEQTY.js +58 -0
- package/dist/chunk-AYTXVOW3.js +1708 -0
- package/dist/chunk-BG4A246G.js +1746 -0
- package/dist/chunk-BNFJJA2L.js +1425 -0
- package/dist/chunk-BPKPBVU5.js +59 -0
- package/dist/chunk-BPKPPSXC.js +282 -0
- package/dist/chunk-BPWKKK7F.js +1711 -0
- package/dist/chunk-CCKX6YTC.js +1735 -0
- package/dist/chunk-CIF5Z3MP.js +58 -0
- package/dist/chunk-CSXYU7IO.js +457 -0
- package/dist/chunk-D6JD4FDC.js +26 -0
- package/dist/chunk-E7NGA7X2.js +59 -0
- package/dist/chunk-EEPPJKAE.js +443 -0
- package/dist/chunk-EJMYGAGQ.js +717 -0
- package/dist/chunk-EL6Z5MDY.js +55 -0
- package/dist/chunk-EP7VRLEB.js +41 -0
- package/dist/chunk-ETMEC6FH.js +99 -0
- package/dist/chunk-EZ2WHYVL.js +65 -0
- package/dist/chunk-EZRVMSZK.js +67 -0
- package/dist/chunk-F2TRGINX.js +254 -0
- package/dist/chunk-F5JCIH3Q.js +642 -0
- package/dist/chunk-FGK3JKMN.js +909 -0
- package/dist/chunk-FQWPKSTD.js +1437 -0
- package/dist/chunk-FWHVLMCI.js +26 -0
- package/dist/chunk-GBEYQRO2.js +303 -0
- package/dist/chunk-GBLES3NK.js +248 -0
- package/dist/chunk-GQVGUQW6.js +1436 -0
- package/dist/chunk-HCV2T76T.js +457 -0
- package/dist/chunk-HS7ZKVPR.js +182 -0
- package/dist/chunk-HXDVV7HZ.js +909 -0
- package/dist/chunk-IB23VMO3.js +1746 -0
- package/dist/chunk-IEMZ7RTT.js +99 -0
- package/dist/chunk-IPGRSN42.js +1750 -0
- package/dist/chunk-IVMOK2QN.js +1750 -0
- package/dist/chunk-JCLGQO7T.js +443 -0
- package/dist/chunk-JDXL7KDB.js +1436 -0
- package/dist/chunk-JIIFW636.js +270 -0
- package/dist/chunk-JWGEEH7H.js +944 -0
- package/dist/chunk-K2BESAG7.js +1688 -0
- package/dist/chunk-K2U5YGF4.js +877 -0
- package/dist/chunk-K45FQ4Y4.js +175 -0
- package/dist/chunk-K7BPE427.js +1432 -0
- package/dist/chunk-KL3266RS.js +26 -0
- package/dist/chunk-KNN4P7DZ.js +84 -0
- package/dist/chunk-KP2DZH5Q.js +254 -0
- package/dist/chunk-KZHAJSQR.js +1636 -0
- package/dist/chunk-LBKGHMQV.js +1750 -0
- package/dist/chunk-LBTEPL7A.js +1731 -0
- package/dist/chunk-LEBBPTDB.js +1444 -0
- package/dist/chunk-LLH63WVQ.js +98 -0
- package/dist/chunk-LWVR2C4G.js +1711 -0
- package/dist/chunk-M3MDTVV2.js +896 -0
- package/dist/chunk-M5GNLDEO.js +303 -0
- package/dist/chunk-MFHVGKET.js +267 -0
- package/dist/chunk-MGWSG3PM.js +358 -0
- package/dist/chunk-MJNB47HB.js +19 -0
- package/dist/chunk-MLKGABMK.js +9 -0
- package/dist/chunk-MQWTY3JY.js +944 -0
- package/dist/chunk-MZZOQHNI.js +642 -0
- package/dist/chunk-NIHWGZS4.js +1426 -0
- package/dist/chunk-NSVVHQK5.js +41 -0
- package/dist/chunk-NVI2WE7D.js +443 -0
- package/dist/chunk-O7QBO3PH.js +58 -0
- package/dist/chunk-OAUPQBO2.js +270 -0
- package/dist/chunk-OB2LMD7C.js +297 -0
- package/dist/chunk-OHEYBWQU.js +58 -0
- package/dist/chunk-OI6OXUHJ.js +443 -0
- package/dist/chunk-OX2VMRMV.js +633 -0
- package/dist/chunk-P4FYE5TX.js +866 -0
- package/dist/chunk-P5KFWM4H.js +98 -0
- package/dist/chunk-PUMLE7RJ.js +1711 -0
- package/dist/chunk-Q4MFANBF.js +282 -0
- package/dist/chunk-QLEKZMMU.js +282 -0
- package/dist/chunk-RGGNGVO3.js +98 -0
- package/dist/chunk-RKJDRVV6.js +443 -0
- package/dist/chunk-S5BHU353.js +43 -0
- package/dist/chunk-SHQUSFH7.js +1426 -0
- package/dist/chunk-SMB4DBMD.js +182 -0
- package/dist/chunk-SNYHQP3D.js +743 -0
- package/dist/chunk-T24L3TBF.js +1717 -0
- package/dist/chunk-TAQNSOKT.js +692 -0
- package/dist/chunk-TDNY4SUA.js +41 -0
- package/dist/chunk-TNNF56IQ.js +1750 -0
- package/dist/chunk-TR7E6LYX.js +457 -0
- package/dist/chunk-URWUFH45.js +98 -0
- package/dist/chunk-UUSIH3XH.js +1429 -0
- package/dist/chunk-UYFNXLKR.js +1436 -0
- package/dist/chunk-V6F7KUWD.js +270 -0
- package/dist/chunk-VCZLXRMR.js +254 -0
- package/dist/chunk-VDHXSSBT.js +1426 -0
- package/dist/chunk-VM4QMKVK.js +254 -0
- package/dist/chunk-VWGYKYL2.js +737 -0
- package/dist/chunk-VX2OFBJN.js +1426 -0
- package/dist/chunk-VXVIE6DG.js +84 -0
- package/dist/chunk-W4OH7HG4.js +40 -0
- package/dist/chunk-WBVJX4GZ.js +98 -0
- package/dist/chunk-WDU2ZV4I.js +1426 -0
- package/dist/chunk-X6VUCICU.js +457 -0
- package/dist/chunk-XAY7FM7Y.js +618 -0
- package/dist/chunk-XJZ5Z2CM.js +642 -0
- package/dist/chunk-XKVFQTJJ.js +254 -0
- package/dist/chunk-XRLFASCY.js +22 -0
- package/dist/chunk-XYU6TZOW.js +182 -0
- package/dist/chunk-Y745CBVB.js +944 -0
- package/dist/chunk-YLBJSXYY.js +944 -0
- package/dist/chunk-YQJIKVPZ.js +1429 -0
- package/dist/chunk-YRM2VCZF.js +457 -0
- package/dist/chunk-YS33KBVJ.js +944 -0
- package/dist/chunk-Z27DZPDG.js +41 -0
- package/dist/chunk-ZXQ5NAEN.js +32 -0
- package/dist/contracts-B552GopR.d.cts +245 -0
- package/dist/contracts-B552GopR.d.ts +245 -0
- package/dist/contracts-Bg1ECISC.d.cts +245 -0
- package/dist/contracts-Bg1ECISC.d.ts +245 -0
- package/dist/contracts-CMriKJ6P.d.cts +245 -0
- package/dist/contracts-CMriKJ6P.d.ts +245 -0
- package/dist/contracts-DOrhwbke.d.cts +245 -0
- package/dist/contracts-DOrhwbke.d.ts +245 -0
- package/dist/data.cjs +1373 -0
- package/dist/data.d.cts +434 -0
- package/dist/data.d.ts +434 -0
- package/dist/data.js +945 -0
- package/dist/devtools.cjs +1357 -0
- package/dist/devtools.d.cts +473 -0
- package/dist/devtools.d.ts +473 -0
- package/dist/devtools.js +1084 -0
- package/dist/ecosystem.cjs +1046 -0
- package/dist/ecosystem.d.cts +247 -0
- package/dist/ecosystem.d.ts +247 -0
- package/dist/ecosystem.js +369 -0
- package/dist/extras.cjs +8457 -0
- package/dist/extras.d.cts +2356 -0
- package/dist/extras.d.ts +2356 -0
- package/dist/extras.js +5152 -0
- package/dist/index.cjs +2648 -0
- package/dist/index.d.cts +869 -0
- package/dist/index.d.ts +869 -0
- package/dist/index.js +386 -0
- package/dist/motion.cjs +604 -0
- package/dist/motion.d.cts +146 -0
- package/dist/motion.d.ts +146 -0
- package/dist/motion.js +346 -0
- package/dist/patterns.cjs +815 -0
- package/dist/patterns.d.cts +163 -0
- package/dist/patterns.d.ts +163 -0
- package/dist/patterns.js +296 -0
- package/dist/performance.cjs +927 -0
- package/dist/performance.d.cts +416 -0
- package/dist/performance.d.ts +416 -0
- package/dist/performance.js +654 -0
- package/dist/plugins.cjs +2487 -0
- package/dist/plugins.d.cts +393 -0
- package/dist/plugins.d.ts +393 -0
- package/dist/plugins.js +1504 -0
- package/dist/signal-BnWpq6WB.d.cts +5 -0
- package/dist/signal-BnWpq6WB.d.ts +5 -0
- package/dist/src/components/ErrorBoundary.d.ts +15 -0
- package/dist/src/components/ErrorBoundary.js +119 -0
- package/dist/src/core/catch.d.ts +11 -0
- package/dist/src/core/catch.js +28 -0
- package/dist/src/core/each.d.ts +13 -0
- package/dist/src/core/each.js +68 -0
- package/dist/src/core/for.d.ts +12 -0
- package/dist/src/core/for.js +67 -0
- package/dist/src/core/html.d.ts +137 -0
- package/dist/src/core/html.js +155 -0
- package/dist/src/core/htmlIf.d.ts +11 -0
- package/dist/src/core/htmlIf.js +18 -0
- package/dist/src/core/lazy.d.ts +7 -0
- package/dist/src/core/lazy.js +16 -0
- package/dist/src/core/mount.d.ts +7 -0
- package/dist/src/core/mount.js +12 -0
- package/dist/src/core/slots.d.ts +3 -0
- package/dist/src/core/slots.js +3 -0
- package/dist/src/core/suspense.d.ts +10 -0
- package/dist/src/core/suspense.js +33 -0
- package/dist/src/core/tagFactory.d.ts +13 -0
- package/dist/src/core/tagFactory.js +86 -0
- package/dist/src/core/test.d.ts +11 -0
- package/dist/src/core/test.js +28 -0
- package/dist/src/core/types.d.ts +2 -0
- package/dist/src/core/types.js +1 -0
- package/dist/src/core/useComputed.d.ts +6 -0
- package/dist/src/core/useComputed.js +30 -0
- package/dist/src/core/useEffect.d.ts +6 -0
- package/dist/src/core/useEffect.js +23 -0
- package/dist/src/core/useState.d.ts +10 -0
- package/dist/src/core/useState.js +34 -0
- package/dist/src/core/useStore.d.ts +19 -0
- package/dist/src/core/useStore.js +53 -0
- package/dist/src/core/useWatch.d.ts +8 -0
- package/dist/src/core/useWatch.js +23 -0
- package/dist/src/plugins/i18n.d.ts +6 -0
- package/dist/src/plugins/i18n.js +16 -0
- package/dist/src/plugins/router.d.ts +188 -0
- package/dist/src/plugins/router.js +1178 -0
- package/dist/src/reactivity/bindAttribute.d.ts +5 -0
- package/dist/src/reactivity/bindAttribute.js +31 -0
- package/dist/src/reactivity/bindChildNode.d.ts +10 -0
- package/dist/src/reactivity/bindChildNode.js +46 -0
- package/dist/src/reactivity/bindTextNode.d.ts +10 -0
- package/dist/src/reactivity/bindTextNode.js +27 -0
- package/dist/src/reactivity/signal.d.ts +3 -0
- package/dist/src/reactivity/signal.js +1 -0
- package/dist/src/reactivity/track.d.ts +18 -0
- package/dist/src/reactivity/track.js +73 -0
- package/dist/src/reactivity/useComputed.d.ts +6 -0
- package/dist/src/reactivity/useComputed.js +30 -0
- package/dist/src/reactivity/useEffect.d.ts +6 -0
- package/dist/src/reactivity/useEffect.js +23 -0
- package/dist/src/reactivity/useState.d.ts +10 -0
- package/dist/src/reactivity/useState.js +34 -0
- package/dist/src/reactivity/useStore.d.ts +19 -0
- package/dist/src/reactivity/useStore.js +53 -0
- package/dist/src/reactivity/useWatch.d.ts +8 -0
- package/dist/src/reactivity/useWatch.js +23 -0
- package/dist/src/utils/sanitize.d.ts +1 -0
- package/dist/src/utils/sanitize.js +8 -0
- package/dist/ssr-27FOM46T.js +35 -0
- package/dist/ssr-GFUTTSJD.js +22 -0
- package/dist/ssr-K7DCR6BZ.js +35 -0
- package/dist/ssr-O6LFMRFP.js +35 -0
- package/dist/ssr-QZEVGMMK.js +35 -0
- package/dist/ssr-SGVBCAGC.js +35 -0
- package/dist/ssr-UB2IXCYX.js +35 -0
- package/dist/ssr-XBZQNV4O.js +22 -0
- package/dist/ssr-Y76FSXDU.js +35 -0
- package/dist/ssr-YQJ4AYBD.js +35 -0
- package/dist/ssr.cjs +1757 -0
- package/dist/ssr.d.cts +478 -0
- package/dist/ssr.d.ts +478 -0
- package/dist/ssr.js +743 -0
- package/dist/tagFactory-CZPO4RXF.d.cts +34 -0
- package/dist/tagFactory-CZPO4RXF.d.ts +34 -0
- package/dist/tagFactory-CgImPVMY.d.cts +22 -0
- package/dist/tagFactory-CgImPVMY.d.ts +22 -0
- package/dist/tagFactory-Cw1iv5if.d.cts +22 -0
- package/dist/tagFactory-Cw1iv5if.d.ts +22 -0
- package/dist/tagFactory-DeAXq9ef.d.cts +30 -0
- package/dist/tagFactory-DeAXq9ef.d.ts +30 -0
- package/dist/tagFactory-SkY0a7L1.d.cts +22 -0
- package/dist/tagFactory-SkY0a7L1.d.ts +22 -0
- package/dist/testing.cjs +1919 -0
- package/dist/testing.d.cts +491 -0
- package/dist/testing.d.ts +491 -0
- package/dist/testing.js +1862 -0
- package/dist/ui.cjs +1497 -0
- package/dist/ui.d.cts +264 -0
- package/dist/ui.d.ts +264 -0
- package/dist/ui.js +900 -0
- package/dist/widgets.cjs +919 -0
- package/dist/widgets.d.cts +165 -0
- package/dist/widgets.d.ts +165 -0
- package/dist/widgets.js +545 -0
- package/package.json +134 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
// src/core/patterns/hoc.ts
|
|
2
|
+
function withWrapper(WrappedComponent, wrapper) {
|
|
3
|
+
return (props) => wrapper(WrappedComponent, props);
|
|
4
|
+
}
|
|
5
|
+
function withDefaults(component, defaults) {
|
|
6
|
+
return (props) => component({ ...defaults, ...props });
|
|
7
|
+
}
|
|
8
|
+
function compose(...wrappers) {
|
|
9
|
+
return (component) => wrappers.reduceRight((comp, wrapper) => wrapper(comp), component);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// src/core/patterns/composable.ts
|
|
13
|
+
function createComposable(setup) {
|
|
14
|
+
return setup;
|
|
15
|
+
}
|
|
16
|
+
function RenderProp(props) {
|
|
17
|
+
return props.render(props.data());
|
|
18
|
+
}
|
|
19
|
+
function withBoundary(name, component) {
|
|
20
|
+
return (props) => {
|
|
21
|
+
const wrapper = document.createElement("div");
|
|
22
|
+
wrapper.setAttribute("data-sibu-boundary", name);
|
|
23
|
+
try {
|
|
24
|
+
const el = component(props);
|
|
25
|
+
wrapper.appendChild(el);
|
|
26
|
+
} catch (error) {
|
|
27
|
+
const errorEl = document.createElement("div");
|
|
28
|
+
errorEl.setAttribute("data-sibu-boundary-error", name);
|
|
29
|
+
errorEl.style.cssText = "color: red; border: 1px solid red; padding: 8px; margin: 4px;";
|
|
30
|
+
errorEl.textContent = `[${name}] ${error instanceof Error ? error.message : String(error)}`;
|
|
31
|
+
wrapper.appendChild(errorEl);
|
|
32
|
+
}
|
|
33
|
+
return wrapper;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function createSlots(slots) {
|
|
37
|
+
return {
|
|
38
|
+
renderSlot(name, fallback) {
|
|
39
|
+
const slotFn = slots[name];
|
|
40
|
+
if (slotFn) {
|
|
41
|
+
const result = slotFn();
|
|
42
|
+
if (Array.isArray(result)) {
|
|
43
|
+
const fragment = document.createElement("div");
|
|
44
|
+
fragment.style.display = "contents";
|
|
45
|
+
for (const el of result) fragment.appendChild(el);
|
|
46
|
+
return fragment;
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
return fallback ? fallback() : null;
|
|
51
|
+
},
|
|
52
|
+
hasSlot(name) {
|
|
53
|
+
return name in slots;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// src/core/patterns/componentProps.ts
|
|
59
|
+
function defineComponent(config) {
|
|
60
|
+
const { defaults, setup } = config;
|
|
61
|
+
return (props) => {
|
|
62
|
+
const merged = defaults ? { ...defaults, ...props } : props;
|
|
63
|
+
return setup(merged);
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function defineSlottedComponent(config) {
|
|
67
|
+
const { defaults, setup } = config;
|
|
68
|
+
return (props) => {
|
|
69
|
+
const merged = defaults ? { ...defaults, ...props } : props;
|
|
70
|
+
return setup(merged);
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function withProps(component, mapProps) {
|
|
74
|
+
return (props) => component(mapProps(props));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// src/core/patterns/contracts.ts
|
|
78
|
+
var validators = {
|
|
79
|
+
string: ((value, name) => typeof value === "string" || `${name} must be a string, got ${typeof value}`),
|
|
80
|
+
number: ((value, name) => typeof value === "number" || `${name} must be a number, got ${typeof value}`),
|
|
81
|
+
boolean: ((value, name) => typeof value === "boolean" || `${name} must be a boolean, got ${typeof value}`),
|
|
82
|
+
function: ((value, name) => typeof value === "function" || `${name} must be a function, got ${typeof value}`),
|
|
83
|
+
object: ((value, name) => typeof value === "object" && value !== null || `${name} must be an object`),
|
|
84
|
+
array: ((value, name) => Array.isArray(value) || `${name} must be an array`),
|
|
85
|
+
required: ((value, name) => value != null || `${name} is required`),
|
|
86
|
+
oneOf: (...values) => (value, name) => values.includes(value) || `${name} must be one of: ${values.join(", ")}`,
|
|
87
|
+
instanceOf: (ctor) => (value, name) => value instanceof ctor || `${name} must be an instance of ${ctor.name}`,
|
|
88
|
+
arrayOf: (itemValidator) => (value, name) => {
|
|
89
|
+
if (!Array.isArray(value)) return `${name} must be an array`;
|
|
90
|
+
for (let i = 0; i < value.length; i++) {
|
|
91
|
+
const result = itemValidator(value[i], `${name}[${i}]`);
|
|
92
|
+
if (result !== true) return result;
|
|
93
|
+
}
|
|
94
|
+
return true;
|
|
95
|
+
},
|
|
96
|
+
shape: (schema) => (value, name) => {
|
|
97
|
+
if (typeof value !== "object" || value === null) return `${name} must be an object`;
|
|
98
|
+
for (const [key, validator] of Object.entries(schema)) {
|
|
99
|
+
const result = validator(value[key], `${name}.${key}`);
|
|
100
|
+
if (result !== true) return result;
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
},
|
|
104
|
+
optional: (validator) => (value, name) => {
|
|
105
|
+
if (value == null) return true;
|
|
106
|
+
return validator(value, name);
|
|
107
|
+
},
|
|
108
|
+
range: (min, max) => (value, name) => {
|
|
109
|
+
if (typeof value !== "number") return `${name} must be a number`;
|
|
110
|
+
return value >= min && value <= max || `${name} must be between ${min} and ${max}`;
|
|
111
|
+
},
|
|
112
|
+
pattern: (regex) => (value, name) => {
|
|
113
|
+
if (typeof value !== "string") return `${name} must be a string`;
|
|
114
|
+
return regex.test(value) || `${name} must match pattern ${regex}`;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
function validateProps(props, schema) {
|
|
118
|
+
const result = { ...props };
|
|
119
|
+
const errors = [];
|
|
120
|
+
const isDev = typeof process === "undefined" || process?.env?.NODE_ENV !== "production";
|
|
121
|
+
for (const [key, def] of Object.entries(schema)) {
|
|
122
|
+
const propDef = typeof def === "function" ? { type: def } : def;
|
|
123
|
+
if (result[key] == null && propDef.default !== void 0) {
|
|
124
|
+
result[key] = typeof propDef.default === "function" ? propDef.default() : propDef.default;
|
|
125
|
+
}
|
|
126
|
+
if (!isDev) continue;
|
|
127
|
+
if (propDef.required && result[key] == null) {
|
|
128
|
+
errors.push(`Prop '${key}' is required`);
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
if (result[key] == null) continue;
|
|
132
|
+
if (propDef.type) {
|
|
133
|
+
const typeResult = propDef.type(result[key], key);
|
|
134
|
+
if (typeResult !== true) errors.push(typeResult);
|
|
135
|
+
}
|
|
136
|
+
if (propDef.validator) {
|
|
137
|
+
const validResult = propDef.validator(result[key], key);
|
|
138
|
+
if (validResult !== true) errors.push(validResult);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (errors.length > 0 && isDev) {
|
|
142
|
+
console.warn(`[SibuJS] Prop validation errors:
|
|
143
|
+
${errors.map((e) => ` - ${e}`).join("\n")}`);
|
|
144
|
+
}
|
|
145
|
+
return result;
|
|
146
|
+
}
|
|
147
|
+
function defineStrictComponent(config) {
|
|
148
|
+
return (props) => {
|
|
149
|
+
const validated = validateProps(props, config.props);
|
|
150
|
+
return config.setup(validated);
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function assertType(value, validator, label) {
|
|
154
|
+
if (typeof process !== "undefined" && process?.env?.NODE_ENV === "production") return;
|
|
155
|
+
const result = validator(value, label || "value");
|
|
156
|
+
if (result !== true) {
|
|
157
|
+
throw new TypeError(`[SibuJS Contract] ${result}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function createGuard(validator) {
|
|
161
|
+
return (value) => {
|
|
162
|
+
return validator(value, "value") === true;
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export {
|
|
167
|
+
withWrapper,
|
|
168
|
+
withDefaults,
|
|
169
|
+
compose,
|
|
170
|
+
createComposable,
|
|
171
|
+
RenderProp,
|
|
172
|
+
withBoundary,
|
|
173
|
+
createSlots,
|
|
174
|
+
defineComponent,
|
|
175
|
+
defineSlottedComponent,
|
|
176
|
+
withProps,
|
|
177
|
+
validators,
|
|
178
|
+
validateProps,
|
|
179
|
+
defineStrictComponent,
|
|
180
|
+
assertType,
|
|
181
|
+
createGuard
|
|
182
|
+
};
|