sibujs 1.4.0 → 2.0.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.
Files changed (190) hide show
  1. package/README.md +105 -119
  2. package/dist/browser.cjs +288 -80
  3. package/dist/browser.d.cts +19 -9
  4. package/dist/browser.d.ts +19 -9
  5. package/dist/browser.js +6 -6
  6. package/dist/build.cjs +1019 -313
  7. package/dist/build.d.cts +1 -1
  8. package/dist/build.d.ts +1 -1
  9. package/dist/build.js +15 -13
  10. package/dist/cdn.global.js +17 -16
  11. package/dist/chunk-2RA7SHDA.js +65 -0
  12. package/dist/chunk-2UPRY23K.js +80 -0
  13. package/dist/chunk-3JHCYHWN.js +125 -0
  14. package/dist/{chunk-ZWKZCBO6.js → chunk-3LR7GLWQ.js} +154 -33
  15. package/dist/{chunk-3AIRKM3B.js → chunk-3NSGB5JN.js} +115 -34
  16. package/dist/{chunk-3ARAQO7B.js → chunk-52YJLLRO.js} +29 -6
  17. package/dist/chunk-54EDRCEF.js +93 -0
  18. package/dist/chunk-7JDB7I65.js +1327 -0
  19. package/dist/{chunk-WZSPOOER.js → chunk-CC65Y57T.js} +8 -5
  20. package/dist/{chunk-23VV7YD3.js → chunk-DFPFITST.js} +25 -30
  21. package/dist/{chunk-WR5D4EGH.js → chunk-GTBNNBJ6.js} +14 -2
  22. package/dist/chunk-HB24TBAF.js +121 -0
  23. package/dist/{chunk-CZUGLNJS.js → chunk-ITX6OO3F.js} +3 -3
  24. package/dist/{chunk-JAKHTMQU.js → chunk-JA6667UN.js} +206 -46
  25. package/dist/{chunk-77L6NL3X.js → chunk-JXMMDLBY.js} +306 -183
  26. package/dist/{chunk-3X2YG6YM.js → chunk-JYD2PWXH.js} +59 -28
  27. package/dist/{chunk-F3FA4F32.js → chunk-KLRMB5ZS.js} +135 -79
  28. package/dist/{chunk-5X6PP2UK.js → chunk-LMLD24FC.js} +2 -2
  29. package/dist/{chunk-M4NLBH4I.js → chunk-LYTCUZ7H.js} +3 -2
  30. package/dist/{chunk-TSOKIX5Z.js → chunk-MIUAXB7K.js} +126 -74
  31. package/dist/{chunk-QWZG56ET.js → chunk-ND2664SF.js} +558 -190
  32. package/dist/{chunk-JCI5M6U6.js → chunk-O2MNQFLP.js} +261 -79
  33. package/dist/{chunk-EWFVA3TJ.js → chunk-R73P76YZ.js} +1 -1
  34. package/dist/{chunk-2BYQDGN3.js → chunk-SAHNHTFC.js} +234 -63
  35. package/dist/chunk-UCS6AMJ7.js +79 -0
  36. package/dist/{chunk-ZD6OAMTH.js → chunk-VLPPXTYG.js} +90 -35
  37. package/dist/{chunk-OUZZEE4S.js → chunk-WOMYAHHI.js} +17 -11
  38. package/dist/{contracts-xo5ckdRP.d.cts → contracts-ey_Qh8ef.d.cts} +7 -8
  39. package/dist/{contracts-xo5ckdRP.d.ts → contracts-ey_Qh8ef.d.ts} +7 -8
  40. package/dist/{customElement-D2DJp_xn.d.cts → customElement-CPfIrbvg.d.cts} +18 -9
  41. package/dist/{customElement-D2DJp_xn.d.ts → customElement-CPfIrbvg.d.ts} +18 -9
  42. package/dist/data.cjs +452 -100
  43. package/dist/data.d.cts +20 -2
  44. package/dist/data.d.ts +20 -2
  45. package/dist/data.js +11 -9
  46. package/dist/devtools.cjs +535 -247
  47. package/dist/devtools.d.cts +1 -1
  48. package/dist/devtools.d.ts +1 -1
  49. package/dist/devtools.js +34 -30
  50. package/dist/ecosystem.cjs +499 -143
  51. package/dist/ecosystem.d.cts +13 -11
  52. package/dist/ecosystem.d.ts +13 -11
  53. package/dist/ecosystem.js +12 -11
  54. package/dist/extras.cjs +3639 -1629
  55. package/dist/extras.d.cts +11 -11
  56. package/dist/extras.d.ts +11 -11
  57. package/dist/extras.js +58 -45
  58. package/dist/index.cjs +1023 -313
  59. package/dist/index.d.cts +128 -55
  60. package/dist/index.d.ts +128 -55
  61. package/dist/index.js +28 -16
  62. package/dist/{introspect-BumjnBKr.d.cts → introspect-BWNjNw64.d.cts} +22 -2
  63. package/dist/{introspect-CZrlcaYy.d.ts → introspect-cY2pg9pW.d.ts} +22 -2
  64. package/dist/motion.cjs +90 -36
  65. package/dist/motion.d.cts +1 -1
  66. package/dist/motion.d.ts +1 -1
  67. package/dist/motion.js +4 -4
  68. package/dist/patterns.cjs +414 -81
  69. package/dist/patterns.d.cts +53 -20
  70. package/dist/patterns.d.ts +53 -20
  71. package/dist/patterns.js +7 -7
  72. package/dist/performance.cjs +364 -108
  73. package/dist/performance.d.cts +29 -17
  74. package/dist/performance.d.ts +29 -17
  75. package/dist/performance.js +13 -6
  76. package/dist/plugin-D30wlGW5.d.cts +71 -0
  77. package/dist/plugin-D30wlGW5.d.ts +71 -0
  78. package/dist/plugins.cjs +652 -271
  79. package/dist/plugins.d.cts +13 -6
  80. package/dist/plugins.d.ts +13 -6
  81. package/dist/plugins.js +116 -50
  82. package/dist/{ssr-Do_SiVoL.d.cts → ssr-CrVNy6Pa.d.cts} +9 -15
  83. package/dist/{ssr-Do_SiVoL.d.ts → ssr-CrVNy6Pa.d.ts} +9 -15
  84. package/dist/{ssr-4PBXAOO3.js → ssr-FXD2PPMC.js} +4 -3
  85. package/dist/ssr.cjs +648 -219
  86. package/dist/ssr.d.cts +27 -7
  87. package/dist/ssr.d.ts +27 -7
  88. package/dist/ssr.js +12 -11
  89. package/dist/{tagFactory-DaJ0YWX6.d.ts → tagFactory-S17H2qxu.d.cts} +9 -1
  90. package/dist/{tagFactory-DaJ0YWX6.d.cts → tagFactory-S17H2qxu.d.ts} +9 -1
  91. package/dist/testing.cjs +252 -63
  92. package/dist/testing.d.cts +17 -4
  93. package/dist/testing.d.ts +17 -4
  94. package/dist/testing.js +100 -44
  95. package/dist/ui.cjs +576 -168
  96. package/dist/ui.d.cts +13 -16
  97. package/dist/ui.d.ts +13 -16
  98. package/dist/ui.js +20 -17
  99. package/dist/widgets.cjs +1001 -93
  100. package/dist/widgets.d.cts +104 -2
  101. package/dist/widgets.d.ts +104 -2
  102. package/dist/widgets.js +9 -7
  103. package/package.json +8 -2
  104. package/dist/chunk-32DY64NT.js +0 -282
  105. package/dist/chunk-3CRQALYP.js +0 -877
  106. package/dist/chunk-4EI4AG32.js +0 -482
  107. package/dist/chunk-4MYMUBRS.js +0 -21
  108. package/dist/chunk-6HLLIF3K.js +0 -398
  109. package/dist/chunk-6LSNVCS2.js +0 -937
  110. package/dist/chunk-6SA3QQES.js +0 -61
  111. package/dist/chunk-7BF6TK55.js +0 -1097
  112. package/dist/chunk-7TQKR4PP.js +0 -294
  113. package/dist/chunk-7V26P53V.js +0 -712
  114. package/dist/chunk-AZ3ISID5.js +0 -298
  115. package/dist/chunk-B7SWRFUT.js +0 -332
  116. package/dist/chunk-BGN5ZMP4.js +0 -26
  117. package/dist/chunk-BTU3TJDS.js +0 -365
  118. package/dist/chunk-BW3WT46K.js +0 -937
  119. package/dist/chunk-C6KFWOFV.js +0 -616
  120. package/dist/chunk-CHF5OHIA.js +0 -61
  121. package/dist/chunk-CHJ27IGK.js +0 -26
  122. package/dist/chunk-CMBFNA7L.js +0 -27
  123. package/dist/chunk-DAHRH4ON.js +0 -331
  124. package/dist/chunk-DKOHBI74.js +0 -924
  125. package/dist/chunk-DTCOOBMX.js +0 -725
  126. package/dist/chunk-EBGIRKQY.js +0 -616
  127. package/dist/chunk-EUZND3CB.js +0 -27
  128. package/dist/chunk-EVCZO745.js +0 -365
  129. package/dist/chunk-FGOEVHY3.js +0 -60
  130. package/dist/chunk-G3BOQPVO.js +0 -365
  131. package/dist/chunk-GCOK2LC3.js +0 -282
  132. package/dist/chunk-HGMJFBC7.js +0 -654
  133. package/dist/chunk-K5ZUMYVS.js +0 -89
  134. package/dist/chunk-KQPDEVVS.js +0 -398
  135. package/dist/chunk-L6JRBDNS.js +0 -60
  136. package/dist/chunk-LA6KQEDU.js +0 -712
  137. package/dist/chunk-MDVXJWFN.js +0 -304
  138. package/dist/chunk-MEZVEBPN.js +0 -2008
  139. package/dist/chunk-MK4ERFYL.js +0 -2249
  140. package/dist/chunk-MLKGABMK.js +0 -9
  141. package/dist/chunk-MQ5GOYPH.js +0 -2249
  142. package/dist/chunk-N6IZB6KJ.js +0 -567
  143. package/dist/chunk-NEKUBFPT.js +0 -60
  144. package/dist/chunk-NHUC2QWH.js +0 -282
  145. package/dist/chunk-NMRUZALC.js +0 -1097
  146. package/dist/chunk-NYVAC6P5.js +0 -37
  147. package/dist/chunk-OF7UZIVB.js +0 -725
  148. package/dist/chunk-P6W3STU4.js +0 -2249
  149. package/dist/chunk-PBHF5WKN.js +0 -616
  150. package/dist/chunk-PTQJDMRT.js +0 -146
  151. package/dist/chunk-PZEGYCF5.js +0 -61
  152. package/dist/chunk-QBMDLBU2.js +0 -975
  153. package/dist/chunk-RQGQSLQK.js +0 -725
  154. package/dist/chunk-SDLZDHKP.js +0 -107
  155. package/dist/chunk-TNQWPPE6.js +0 -37
  156. package/dist/chunk-UHNL42EF.js +0 -2730
  157. package/dist/chunk-UNXCEF6S.js +0 -21
  158. package/dist/chunk-V2XTI523.js +0 -347
  159. package/dist/chunk-VAU366PN.js +0 -2241
  160. package/dist/chunk-VMVDTCXB.js +0 -712
  161. package/dist/chunk-VRW3FULF.js +0 -725
  162. package/dist/chunk-WADYRCO2.js +0 -304
  163. package/dist/chunk-WILQZRO4.js +0 -282
  164. package/dist/chunk-WUHJISPP.js +0 -298
  165. package/dist/chunk-XYU6TZOW.js +0 -182
  166. package/dist/chunk-Y6GP4QGG.js +0 -276
  167. package/dist/chunk-YECR7UIA.js +0 -347
  168. package/dist/chunk-YUTWTI4B.js +0 -654
  169. package/dist/chunk-Z65KYU7I.js +0 -26
  170. package/dist/chunk-Z6POF5YC.js +0 -975
  171. package/dist/chunk-ZBJP6WFL.js +0 -482
  172. package/dist/contracts-DDrwxvJ-.d.cts +0 -245
  173. package/dist/contracts-DDrwxvJ-.d.ts +0 -245
  174. package/dist/contracts-DOrhwbke.d.cts +0 -245
  175. package/dist/contracts-DOrhwbke.d.ts +0 -245
  176. package/dist/customElement-BKQfbSZQ.d.cts +0 -262
  177. package/dist/customElement-BKQfbSZQ.d.ts +0 -262
  178. package/dist/customElement-yz8uyk-0.d.cts +0 -308
  179. package/dist/customElement-yz8uyk-0.d.ts +0 -308
  180. package/dist/introspect-Cb0zgpi2.d.cts +0 -477
  181. package/dist/introspect-Y2xNXGSf.d.ts +0 -477
  182. package/dist/plugin-Bek4RhJY.d.cts +0 -43
  183. package/dist/plugin-Bek4RhJY.d.ts +0 -43
  184. package/dist/ssr-3RXHP5ES.js +0 -38
  185. package/dist/ssr-6GIMY5MX.js +0 -38
  186. package/dist/ssr-BA6sxxUd.d.cts +0 -135
  187. package/dist/ssr-BA6sxxUd.d.ts +0 -135
  188. package/dist/ssr-WKUPVSSK.js +0 -36
  189. package/dist/tagFactory-Dl8QCLga.d.cts +0 -23
  190. package/dist/tagFactory-Dl8QCLga.d.ts +0 -23
@@ -1,3 +1,6 @@
1
+ import { T as TrustedHTML } from './ssr-CrVNy6Pa.cjs';
2
+ export { t as trustHTML } from './ssr-CrVNy6Pa.cjs';
3
+
1
4
  declare const Priority: {
2
5
  readonly IMMEDIATE: 0;
3
6
  readonly USER_BLOCKING: 1;
@@ -56,6 +59,11 @@ declare function startTransition(callback: () => void): void;
56
59
  * The deferred value mirrors the source but updates at LOW priority,
57
60
  * allowing the UI to remain responsive while expensive derived state
58
61
  * catches up.
62
+ *
63
+ * Uses an effect to subscribe to the source getter. When the source
64
+ * changes, a LOW-priority update is scheduled. The deferred signal
65
+ * only updates when the scheduler flushes, so fast bursts of source
66
+ * changes collapse into a single deferred update.
59
67
  */
60
68
  declare function deferredValue<T>(getter: () => T): () => T;
61
69
  /**
@@ -89,7 +97,7 @@ declare function setIdPrefix(prefix: string): void;
89
97
  * @example
90
98
  * ```ts
91
99
  * const id = id();
92
- * label({ htmlFor: id, nodes: "Name" });
100
+ * label({ htmlFor: id }, "Name");
93
101
  * input({ id, type: "text" });
94
102
  * ```
95
103
  */
@@ -109,6 +117,11 @@ declare class DOMPool {
109
117
  /**
110
118
  * Return an element to the pool for reuse.
111
119
  * Clears attributes, children, and event listeners.
120
+ *
121
+ * Contract: the caller MUST detach the element from the DOM (and run any
122
+ * `dispose()` on bound reactive subscriptions) BEFORE calling `release()`.
123
+ * Releasing a connected element leaves it visible while it is mutated and
124
+ * is almost certainly a bug.
112
125
  */
113
126
  release(element: HTMLElement): void;
114
127
  /**
@@ -120,8 +133,7 @@ declare class DOMPool {
120
133
  */
121
134
  stats(): Record<string, number>;
122
135
  }
123
- /** Default global pool instance */
124
- declare const domPool: DOMPool;
136
+ declare function getDOMPool(): DOMPool;
125
137
  /**
126
138
  * Preloads a resource (script, style, or generic fetch).
127
139
  */
@@ -140,9 +152,11 @@ declare function preloadImage(src: string): Promise<HTMLImageElement>;
140
152
  * Provides markers and utilities for tree-shaking and dead code elimination.
141
153
  */
142
154
  /**
143
- * Mark a function as pure for tree-shaking.
144
- * Bundlers (Rollup, esbuild, webpack) use this to eliminate unused code.
145
- * Wraps a factory function with the PURE annotation.
155
+ * Invoke a factory and return its result. The PURE annotation that enables
156
+ * tree-shaking is only honoured at the call site, not inside the function
157
+ * declaration. Annotate call sites like this:
158
+ *
159
+ * const x = /\* @__PURE__ *\/ pure(() => expensive());
146
160
  */
147
161
  declare function pure<T>(fn: () => T): T;
148
162
  /**
@@ -176,12 +190,16 @@ declare function noSideEffect<T extends (...args: unknown[]) => unknown>(fn: T):
176
190
  * Provides markers and utilities for Svelte-style compile-time optimizations.
177
191
  * These are hints for build tools and static analyzers.
178
192
  */
193
+
179
194
  /**
180
195
  * Marks a component's template as static (no reactive bindings).
181
196
  * A build tool can pre-render this to a static HTML string and
182
197
  * skip reactive setup entirely.
198
+ *
199
+ * Accepts only `TrustedHTML` (mint via `trustHTML(...)`) to keep the
200
+ * `innerHTML` write from becoming a silent XSS sink (CWE-79).
183
201
  */
184
- declare function staticTemplate(html: string): HTMLElement;
202
+ declare function staticTemplate(html: TrustedHTML): HTMLElement;
185
203
  /**
186
204
  * Clone a static template for efficient repeated rendering.
187
205
  * Uses template.content.cloneNode(true) which is faster than createElement.
@@ -191,7 +209,7 @@ declare function cloneTemplate(template: HTMLTemplateElement): DocumentFragment;
191
209
  * Pre-compile a component factory.
192
210
  * Caches the template and only applies dynamic bindings on each call.
193
211
  */
194
- declare function precompile<Props>(templateHtml: string, hydrate: (el: HTMLElement, props: Props) => void): (props: Props) => HTMLElement;
212
+ declare function precompile<Props>(templateHtml: TrustedHTML, hydrate: (el: HTMLElement, props: Props) => void): (props: Props) => HTMLElement;
195
213
  /**
196
214
  * Marker for static expressions that can be hoisted out of reactive scopes.
197
215
  * A compiler pass would extract these to module scope.
@@ -355,14 +373,8 @@ interface ChunkConfig {
355
373
  * Central registry for managing dynamic chunks with caching and lifecycle callbacks.
356
374
  */
357
375
  declare function createChunkRegistry(config?: ChunkConfig): {
358
- /**
359
- * Load a chunk by ID. Uses cache if available, otherwise loads via the provided loader.
360
- */
361
- load<T>(id: string, loader: () => Promise<T>): Promise<T>;
362
- /**
363
- * Preload a chunk without blocking. Silently caches for later use.
364
- */
365
- preload<T>(id: string, loader: () => Promise<T>): void;
376
+ load: <T>(id: string, loader: () => Promise<T>) => Promise<T>;
377
+ preload: <T>(id: string, loader: () => Promise<T>) => void;
366
378
  /**
367
379
  * Preload multiple chunks in parallel.
368
380
  */
@@ -413,4 +425,4 @@ declare function preloadModule(url: string): void;
413
425
  */
414
426
  declare function preloadModules(urls: string[]): void;
415
427
 
416
- export { type ChunkConfig, DOMPool, Features, type NormalizeResult, type NormalizedEntities, type NormalizedSchema, type NormalizedState, type NormalizedStoreActions, Priority, type PriorityLevel, block, cloneTemplate, conditional, createChunkRegistry, deferredValue, denormalize, devOnly, domPool, flushScheduler, hoistable, lazyChunk, noSideEffect, normalize, normalizedStore, pendingTasks, precompile, prefetch, preloadImage, preloadModule, preloadModules, preloadResource, processInChunks, pure, resetIdCounter, scheduleUpdate, setIdPrefix, startTransition, staticTemplate, transitionState, uniqueId, yieldToMain };
428
+ export { type ChunkConfig, DOMPool, Features, type NormalizeResult, type NormalizedEntities, type NormalizedSchema, type NormalizedState, type NormalizedStoreActions, Priority, type PriorityLevel, TrustedHTML, block, cloneTemplate, conditional, createChunkRegistry, deferredValue, denormalize, devOnly, flushScheduler, getDOMPool, hoistable, lazyChunk, noSideEffect, normalize, normalizedStore, pendingTasks, precompile, prefetch, preloadImage, preloadModule, preloadModules, preloadResource, processInChunks, pure, resetIdCounter, scheduleUpdate, setIdPrefix, startTransition, staticTemplate, transitionState, uniqueId, yieldToMain };
@@ -1,3 +1,6 @@
1
+ import { T as TrustedHTML } from './ssr-CrVNy6Pa.js';
2
+ export { t as trustHTML } from './ssr-CrVNy6Pa.js';
3
+
1
4
  declare const Priority: {
2
5
  readonly IMMEDIATE: 0;
3
6
  readonly USER_BLOCKING: 1;
@@ -56,6 +59,11 @@ declare function startTransition(callback: () => void): void;
56
59
  * The deferred value mirrors the source but updates at LOW priority,
57
60
  * allowing the UI to remain responsive while expensive derived state
58
61
  * catches up.
62
+ *
63
+ * Uses an effect to subscribe to the source getter. When the source
64
+ * changes, a LOW-priority update is scheduled. The deferred signal
65
+ * only updates when the scheduler flushes, so fast bursts of source
66
+ * changes collapse into a single deferred update.
59
67
  */
60
68
  declare function deferredValue<T>(getter: () => T): () => T;
61
69
  /**
@@ -89,7 +97,7 @@ declare function setIdPrefix(prefix: string): void;
89
97
  * @example
90
98
  * ```ts
91
99
  * const id = id();
92
- * label({ htmlFor: id, nodes: "Name" });
100
+ * label({ htmlFor: id }, "Name");
93
101
  * input({ id, type: "text" });
94
102
  * ```
95
103
  */
@@ -109,6 +117,11 @@ declare class DOMPool {
109
117
  /**
110
118
  * Return an element to the pool for reuse.
111
119
  * Clears attributes, children, and event listeners.
120
+ *
121
+ * Contract: the caller MUST detach the element from the DOM (and run any
122
+ * `dispose()` on bound reactive subscriptions) BEFORE calling `release()`.
123
+ * Releasing a connected element leaves it visible while it is mutated and
124
+ * is almost certainly a bug.
112
125
  */
113
126
  release(element: HTMLElement): void;
114
127
  /**
@@ -120,8 +133,7 @@ declare class DOMPool {
120
133
  */
121
134
  stats(): Record<string, number>;
122
135
  }
123
- /** Default global pool instance */
124
- declare const domPool: DOMPool;
136
+ declare function getDOMPool(): DOMPool;
125
137
  /**
126
138
  * Preloads a resource (script, style, or generic fetch).
127
139
  */
@@ -140,9 +152,11 @@ declare function preloadImage(src: string): Promise<HTMLImageElement>;
140
152
  * Provides markers and utilities for tree-shaking and dead code elimination.
141
153
  */
142
154
  /**
143
- * Mark a function as pure for tree-shaking.
144
- * Bundlers (Rollup, esbuild, webpack) use this to eliminate unused code.
145
- * Wraps a factory function with the PURE annotation.
155
+ * Invoke a factory and return its result. The PURE annotation that enables
156
+ * tree-shaking is only honoured at the call site, not inside the function
157
+ * declaration. Annotate call sites like this:
158
+ *
159
+ * const x = /\* @__PURE__ *\/ pure(() => expensive());
146
160
  */
147
161
  declare function pure<T>(fn: () => T): T;
148
162
  /**
@@ -176,12 +190,16 @@ declare function noSideEffect<T extends (...args: unknown[]) => unknown>(fn: T):
176
190
  * Provides markers and utilities for Svelte-style compile-time optimizations.
177
191
  * These are hints for build tools and static analyzers.
178
192
  */
193
+
179
194
  /**
180
195
  * Marks a component's template as static (no reactive bindings).
181
196
  * A build tool can pre-render this to a static HTML string and
182
197
  * skip reactive setup entirely.
198
+ *
199
+ * Accepts only `TrustedHTML` (mint via `trustHTML(...)`) to keep the
200
+ * `innerHTML` write from becoming a silent XSS sink (CWE-79).
183
201
  */
184
- declare function staticTemplate(html: string): HTMLElement;
202
+ declare function staticTemplate(html: TrustedHTML): HTMLElement;
185
203
  /**
186
204
  * Clone a static template for efficient repeated rendering.
187
205
  * Uses template.content.cloneNode(true) which is faster than createElement.
@@ -191,7 +209,7 @@ declare function cloneTemplate(template: HTMLTemplateElement): DocumentFragment;
191
209
  * Pre-compile a component factory.
192
210
  * Caches the template and only applies dynamic bindings on each call.
193
211
  */
194
- declare function precompile<Props>(templateHtml: string, hydrate: (el: HTMLElement, props: Props) => void): (props: Props) => HTMLElement;
212
+ declare function precompile<Props>(templateHtml: TrustedHTML, hydrate: (el: HTMLElement, props: Props) => void): (props: Props) => HTMLElement;
195
213
  /**
196
214
  * Marker for static expressions that can be hoisted out of reactive scopes.
197
215
  * A compiler pass would extract these to module scope.
@@ -355,14 +373,8 @@ interface ChunkConfig {
355
373
  * Central registry for managing dynamic chunks with caching and lifecycle callbacks.
356
374
  */
357
375
  declare function createChunkRegistry(config?: ChunkConfig): {
358
- /**
359
- * Load a chunk by ID. Uses cache if available, otherwise loads via the provided loader.
360
- */
361
- load<T>(id: string, loader: () => Promise<T>): Promise<T>;
362
- /**
363
- * Preload a chunk without blocking. Silently caches for later use.
364
- */
365
- preload<T>(id: string, loader: () => Promise<T>): void;
376
+ load: <T>(id: string, loader: () => Promise<T>) => Promise<T>;
377
+ preload: <T>(id: string, loader: () => Promise<T>) => void;
366
378
  /**
367
379
  * Preload multiple chunks in parallel.
368
380
  */
@@ -413,4 +425,4 @@ declare function preloadModule(url: string): void;
413
425
  */
414
426
  declare function preloadModules(urls: string[]): void;
415
427
 
416
- export { type ChunkConfig, DOMPool, Features, type NormalizeResult, type NormalizedEntities, type NormalizedSchema, type NormalizedState, type NormalizedStoreActions, Priority, type PriorityLevel, block, cloneTemplate, conditional, createChunkRegistry, deferredValue, denormalize, devOnly, domPool, flushScheduler, hoistable, lazyChunk, noSideEffect, normalize, normalizedStore, pendingTasks, precompile, prefetch, preloadImage, preloadModule, preloadModules, preloadResource, processInChunks, pure, resetIdCounter, scheduleUpdate, setIdPrefix, startTransition, staticTemplate, transitionState, uniqueId, yieldToMain };
428
+ export { type ChunkConfig, DOMPool, Features, type NormalizeResult, type NormalizedEntities, type NormalizedSchema, type NormalizedState, type NormalizedStoreActions, Priority, type PriorityLevel, TrustedHTML, block, cloneTemplate, conditional, createChunkRegistry, deferredValue, denormalize, devOnly, flushScheduler, getDOMPool, hoistable, lazyChunk, noSideEffect, normalize, normalizedStore, pendingTasks, precompile, prefetch, preloadImage, preloadModule, preloadModules, preloadResource, processInChunks, pure, resetIdCounter, scheduleUpdate, setIdPrefix, startTransition, staticTemplate, transitionState, uniqueId, yieldToMain };
@@ -9,8 +9,8 @@ import {
9
9
  deferredValue,
10
10
  denormalize,
11
11
  devOnly,
12
- domPool,
13
12
  flushScheduler,
13
+ getDOMPool,
14
14
  hoistable,
15
15
  lazyChunk,
16
16
  noSideEffect,
@@ -33,10 +33,16 @@ import {
33
33
  transitionState,
34
34
  uniqueId,
35
35
  yieldToMain
36
- } from "./chunk-TSOKIX5Z.js";
37
- import "./chunk-WZSPOOER.js";
38
- import "./chunk-ZD6OAMTH.js";
39
- import "./chunk-5X6PP2UK.js";
36
+ } from "./chunk-MIUAXB7K.js";
37
+ import {
38
+ trustHTML
39
+ } from "./chunk-JYD2PWXH.js";
40
+ import "./chunk-UCS6AMJ7.js";
41
+ import "./chunk-HB24TBAF.js";
42
+ import "./chunk-2RA7SHDA.js";
43
+ import "./chunk-CC65Y57T.js";
44
+ import "./chunk-VLPPXTYG.js";
45
+ import "./chunk-LMLD24FC.js";
40
46
  export {
41
47
  DOMPool,
42
48
  Features,
@@ -48,8 +54,8 @@ export {
48
54
  deferredValue,
49
55
  denormalize,
50
56
  devOnly,
51
- domPool,
52
57
  flushScheduler,
58
+ getDOMPool,
53
59
  hoistable,
54
60
  lazyChunk,
55
61
  noSideEffect,
@@ -70,6 +76,7 @@ export {
70
76
  startTransition,
71
77
  staticTemplate,
72
78
  transitionState,
79
+ trustHTML,
73
80
  uniqueId,
74
81
  yieldToMain
75
82
  };
@@ -0,0 +1,71 @@
1
+ interface PluginContext {
2
+ /** Register a global hook */
3
+ onInit: (callback: () => void) => void;
4
+ onMount: (callback: (element: HTMLElement) => void) => void;
5
+ onUnmount: (callback: (element: HTMLElement) => void) => void;
6
+ onError: (callback: (error: Error) => void) => void;
7
+ /** Provide a value globally */
8
+ provide: (key: string, value: unknown) => void;
9
+ }
10
+ interface SibuPlugin {
11
+ name: string;
12
+ install: (ctx: PluginContext, options?: unknown) => void;
13
+ }
14
+ interface PluginHooks {
15
+ init: Array<() => void>;
16
+ mount: Array<(element: HTMLElement) => void>;
17
+ unmount: Array<(element: HTMLElement) => void>;
18
+ error: Array<(error: Error) => void>;
19
+ }
20
+ interface PluginRegistry {
21
+ readonly installedPlugins: Set<string>;
22
+ readonly hooks: PluginHooks;
23
+ readonly provided: Map<string, unknown>;
24
+ plugin: (p: SibuPlugin, options?: unknown) => void;
25
+ inject: <T = unknown>(key: string, defaultValue?: T) => T;
26
+ triggerMount: (element: HTMLElement) => void;
27
+ triggerUnmount: (element: HTMLElement) => void;
28
+ triggerError: (error: Error) => void;
29
+ reset: () => void;
30
+ }
31
+ /**
32
+ * Create an isolated plugin registry. Useful for tests, SSR per-request
33
+ * isolation, or embedding multiple independent SibuJS apps on one page.
34
+ */
35
+ declare function createPluginRegistry(): PluginRegistry;
36
+ /**
37
+ * Creates a plugin definition.
38
+ */
39
+ declare function createPlugin(name: string, install: (ctx: PluginContext, options?: unknown) => void): SibuPlugin;
40
+ /**
41
+ * Installs a plugin into the default (singleton) registry.
42
+ */
43
+ declare function plugin(plugin: SibuPlugin, options?: unknown): void;
44
+ /**
45
+ * Retrieve a value provided by a plugin (from the default registry).
46
+ */
47
+ declare function inject<T = unknown>(key: string, defaultValue?: T): T;
48
+ /**
49
+ * Trigger mount hooks for an element (default registry).
50
+ */
51
+ declare function triggerPluginMount(element: HTMLElement): void;
52
+ /**
53
+ * Trigger unmount hooks for an element (default registry).
54
+ */
55
+ declare function triggerPluginUnmount(element: HTMLElement): void;
56
+ /**
57
+ * Trigger error hooks (default registry).
58
+ */
59
+ declare function triggerPluginError(error: Error): void;
60
+ /**
61
+ * Reset the default plugin registry (useful for testing).
62
+ */
63
+ declare function resetPlugins(): void;
64
+ /**
65
+ * Replace the default registry with an isolated one. Emits a dev warning
66
+ * if the default singleton already had plugins installed (to surface
67
+ * accidental interleaving of singleton + registry use).
68
+ */
69
+ declare function setDefaultPluginRegistry(registry: PluginRegistry): void;
70
+
71
+ export { type PluginContext as P, type SibuPlugin as S, type PluginRegistry as a, createPluginRegistry as b, createPlugin as c, triggerPluginMount as d, triggerPluginUnmount as e, inject as i, plugin as p, resetPlugins as r, setDefaultPluginRegistry as s, triggerPluginError as t };
@@ -0,0 +1,71 @@
1
+ interface PluginContext {
2
+ /** Register a global hook */
3
+ onInit: (callback: () => void) => void;
4
+ onMount: (callback: (element: HTMLElement) => void) => void;
5
+ onUnmount: (callback: (element: HTMLElement) => void) => void;
6
+ onError: (callback: (error: Error) => void) => void;
7
+ /** Provide a value globally */
8
+ provide: (key: string, value: unknown) => void;
9
+ }
10
+ interface SibuPlugin {
11
+ name: string;
12
+ install: (ctx: PluginContext, options?: unknown) => void;
13
+ }
14
+ interface PluginHooks {
15
+ init: Array<() => void>;
16
+ mount: Array<(element: HTMLElement) => void>;
17
+ unmount: Array<(element: HTMLElement) => void>;
18
+ error: Array<(error: Error) => void>;
19
+ }
20
+ interface PluginRegistry {
21
+ readonly installedPlugins: Set<string>;
22
+ readonly hooks: PluginHooks;
23
+ readonly provided: Map<string, unknown>;
24
+ plugin: (p: SibuPlugin, options?: unknown) => void;
25
+ inject: <T = unknown>(key: string, defaultValue?: T) => T;
26
+ triggerMount: (element: HTMLElement) => void;
27
+ triggerUnmount: (element: HTMLElement) => void;
28
+ triggerError: (error: Error) => void;
29
+ reset: () => void;
30
+ }
31
+ /**
32
+ * Create an isolated plugin registry. Useful for tests, SSR per-request
33
+ * isolation, or embedding multiple independent SibuJS apps on one page.
34
+ */
35
+ declare function createPluginRegistry(): PluginRegistry;
36
+ /**
37
+ * Creates a plugin definition.
38
+ */
39
+ declare function createPlugin(name: string, install: (ctx: PluginContext, options?: unknown) => void): SibuPlugin;
40
+ /**
41
+ * Installs a plugin into the default (singleton) registry.
42
+ */
43
+ declare function plugin(plugin: SibuPlugin, options?: unknown): void;
44
+ /**
45
+ * Retrieve a value provided by a plugin (from the default registry).
46
+ */
47
+ declare function inject<T = unknown>(key: string, defaultValue?: T): T;
48
+ /**
49
+ * Trigger mount hooks for an element (default registry).
50
+ */
51
+ declare function triggerPluginMount(element: HTMLElement): void;
52
+ /**
53
+ * Trigger unmount hooks for an element (default registry).
54
+ */
55
+ declare function triggerPluginUnmount(element: HTMLElement): void;
56
+ /**
57
+ * Trigger error hooks (default registry).
58
+ */
59
+ declare function triggerPluginError(error: Error): void;
60
+ /**
61
+ * Reset the default plugin registry (useful for testing).
62
+ */
63
+ declare function resetPlugins(): void;
64
+ /**
65
+ * Replace the default registry with an isolated one. Emits a dev warning
66
+ * if the default singleton already had plugins installed (to surface
67
+ * accidental interleaving of singleton + registry use).
68
+ */
69
+ declare function setDefaultPluginRegistry(registry: PluginRegistry): void;
70
+
71
+ export { type PluginContext as P, type SibuPlugin as S, type PluginRegistry as a, createPluginRegistry as b, createPlugin as c, triggerPluginMount as d, triggerPluginUnmount as e, inject as i, plugin as p, resetPlugins as r, setDefaultPluginRegistry as s, triggerPluginError as t };