fuzor 0.5.1 → 0.5.3

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 (314) hide show
  1. package/dist/browser.d.ts +2 -0
  2. package/dist/browser.d.ts.map +1 -1
  3. package/dist/browser.js +1 -0
  4. package/dist/browser.js.map +1 -1
  5. package/dist/cli.js +10 -0
  6. package/dist/cli.js.map +1 -1
  7. package/dist/compiler/data-document.d.ts +20 -1
  8. package/dist/compiler/data-document.d.ts.map +1 -1
  9. package/dist/compiler/data-document.js +80 -7
  10. package/dist/compiler/data-document.js.map +1 -1
  11. package/dist/compiler/docs.d.ts.map +1 -1
  12. package/dist/compiler/docs.js +49 -11
  13. package/dist/compiler/docs.js.map +1 -1
  14. package/dist/compiler/index.d.ts +2 -0
  15. package/dist/compiler/index.d.ts.map +1 -1
  16. package/dist/compiler/index.js +23 -6
  17. package/dist/compiler/index.js.map +1 -1
  18. package/dist/compiler/islands.d.ts +1 -0
  19. package/dist/compiler/islands.d.ts.map +1 -1
  20. package/dist/compiler/native-authoring.d.ts +45 -0
  21. package/dist/compiler/native-authoring.d.ts.map +1 -0
  22. package/dist/compiler/native-authoring.js +569 -0
  23. package/dist/compiler/native-authoring.js.map +1 -0
  24. package/dist/compiler/native-manifest.d.ts +33 -0
  25. package/dist/compiler/native-manifest.d.ts.map +1 -0
  26. package/dist/compiler/native-manifest.js +53 -0
  27. package/dist/compiler/native-manifest.js.map +1 -0
  28. package/dist/compiler/native-ranges.d.ts +8 -0
  29. package/dist/compiler/native-ranges.d.ts.map +1 -0
  30. package/dist/compiler/native-ranges.js +92 -0
  31. package/dist/compiler/native-ranges.js.map +1 -0
  32. package/dist/compiler/native-scripts.js +2 -2
  33. package/dist/compiler/native-scripts.js.map +1 -1
  34. package/dist/compiler/page-scripts.d.ts +6 -0
  35. package/dist/compiler/page-scripts.d.ts.map +1 -1
  36. package/dist/compiler/page-scripts.js +25 -6
  37. package/dist/compiler/page-scripts.js.map +1 -1
  38. package/dist/compiler/route-policy.d.ts +1 -0
  39. package/dist/compiler/route-policy.d.ts.map +1 -1
  40. package/dist/compiler/route-policy.js +4 -1
  41. package/dist/compiler/route-policy.js.map +1 -1
  42. package/dist/compiler/select-options.d.ts +7 -0
  43. package/dist/compiler/select-options.d.ts.map +1 -0
  44. package/dist/compiler/select-options.js +22 -0
  45. package/dist/compiler/select-options.js.map +1 -0
  46. package/dist/compiler/server-actions.d.ts +9 -0
  47. package/dist/compiler/server-actions.d.ts.map +1 -0
  48. package/dist/compiler/server-actions.js +65 -0
  49. package/dist/compiler/server-actions.js.map +1 -0
  50. package/dist/data-bindings.d.ts +4 -0
  51. package/dist/data-bindings.d.ts.map +1 -0
  52. package/dist/data-bindings.js +18 -0
  53. package/dist/data-bindings.js.map +1 -0
  54. package/dist/dom-ownership.d.ts +5 -0
  55. package/dist/dom-ownership.d.ts.map +1 -0
  56. package/dist/dom-ownership.js +49 -0
  57. package/dist/dom-ownership.js.map +1 -0
  58. package/dist/index.d.ts +2 -0
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +1 -0
  61. package/dist/index.js.map +1 -1
  62. package/dist/internal-specifiers.d.ts +3 -0
  63. package/dist/internal-specifiers.d.ts.map +1 -0
  64. package/dist/internal-specifiers.js +22 -0
  65. package/dist/internal-specifiers.js.map +1 -0
  66. package/dist/islands/react.d.ts +0 -6
  67. package/dist/islands/react.d.ts.map +1 -1
  68. package/dist/islands/react.js +9 -26
  69. package/dist/islands/react.js.map +1 -1
  70. package/dist/json-value.d.ts +4 -0
  71. package/dist/json-value.d.ts.map +1 -0
  72. package/dist/json-value.js +10 -0
  73. package/dist/json-value.js.map +1 -0
  74. package/dist/native-expressions.d.ts +34 -0
  75. package/dist/native-expressions.d.ts.map +1 -0
  76. package/dist/native-expressions.js +118 -0
  77. package/dist/native-expressions.js.map +1 -0
  78. package/dist/native-manifest.d.ts +7 -0
  79. package/dist/native-manifest.d.ts.map +1 -0
  80. package/dist/native-manifest.js +4 -0
  81. package/dist/native-manifest.js.map +1 -0
  82. package/dist/native-ranges.d.ts +25 -0
  83. package/dist/native-ranges.d.ts.map +1 -0
  84. package/dist/native-ranges.js +51 -0
  85. package/dist/native-ranges.js.map +1 -0
  86. package/dist/native-state.d.ts +14 -0
  87. package/dist/native-state.d.ts.map +1 -0
  88. package/dist/native-state.js +27 -0
  89. package/dist/native-state.js.map +1 -0
  90. package/dist/route-path.d.ts +2 -0
  91. package/dist/route-path.d.ts.map +1 -1
  92. package/dist/route-path.js +2 -0
  93. package/dist/route-path.js.map +1 -1
  94. package/dist/runtime/binding-updates.d.ts +11 -0
  95. package/dist/runtime/binding-updates.d.ts.map +1 -0
  96. package/dist/runtime/binding-updates.js +45 -0
  97. package/dist/runtime/binding-updates.js.map +1 -0
  98. package/dist/runtime/data.d.ts +28 -1
  99. package/dist/runtime/data.d.ts.map +1 -1
  100. package/dist/runtime/data.js +101 -25
  101. package/dist/runtime/data.js.map +1 -1
  102. package/dist/runtime/docs-search.d.ts +20 -4
  103. package/dist/runtime/docs-search.d.ts.map +1 -1
  104. package/dist/runtime/docs-search.js +135 -159
  105. package/dist/runtime/docs-search.js.map +1 -1
  106. package/dist/runtime/docs-ui.d.ts +3 -1
  107. package/dist/runtime/docs-ui.d.ts.map +1 -1
  108. package/dist/runtime/docs-ui.js +19 -29
  109. package/dist/runtime/docs-ui.js.map +1 -1
  110. package/dist/runtime/index.d.ts +1 -0
  111. package/dist/runtime/index.d.ts.map +1 -1
  112. package/dist/runtime/islands.d.ts.map +1 -1
  113. package/dist/runtime/islands.js +2 -1
  114. package/dist/runtime/islands.js.map +1 -1
  115. package/dist/runtime/native-graph.d.ts +15 -0
  116. package/dist/runtime/native-graph.d.ts.map +1 -0
  117. package/dist/runtime/native-graph.js +103 -0
  118. package/dist/runtime/native-graph.js.map +1 -0
  119. package/dist/runtime/native-manifest.d.ts +17 -0
  120. package/dist/runtime/native-manifest.d.ts.map +1 -0
  121. package/dist/runtime/native-manifest.js +111 -0
  122. package/dist/runtime/native-manifest.js.map +1 -0
  123. package/dist/runtime/native-ranges.d.ts +8 -0
  124. package/dist/runtime/native-ranges.d.ts.map +1 -0
  125. package/dist/runtime/native-ranges.js +100 -0
  126. package/dist/runtime/native-ranges.js.map +1 -0
  127. package/dist/runtime/native-stream-reader.d.ts +7 -0
  128. package/dist/runtime/native-stream-reader.d.ts.map +1 -0
  129. package/dist/runtime/native-stream-reader.js +79 -0
  130. package/dist/runtime/native-stream-reader.js.map +1 -0
  131. package/dist/runtime/native-stream.d.ts +5 -0
  132. package/dist/runtime/native-stream.d.ts.map +1 -0
  133. package/dist/runtime/native-stream.js +14 -0
  134. package/dist/runtime/native-stream.js.map +1 -0
  135. package/dist/runtime/native.d.ts +41 -0
  136. package/dist/runtime/native.d.ts.map +1 -1
  137. package/dist/runtime/native.js +176 -55
  138. package/dist/runtime/native.js.map +1 -1
  139. package/dist/runtime/page-scripts.d.ts.map +1 -1
  140. package/dist/runtime/page-scripts.js +8 -3
  141. package/dist/runtime/page-scripts.js.map +1 -1
  142. package/dist/runtime/route-views.d.ts +15 -0
  143. package/dist/runtime/route-views.d.ts.map +1 -0
  144. package/dist/runtime/route-views.js +133 -0
  145. package/dist/runtime/route-views.js.map +1 -0
  146. package/dist/runtime/router-embedded.d.ts +1 -0
  147. package/dist/runtime/router-embedded.d.ts.map +1 -1
  148. package/dist/runtime/router-navigation-api.d.ts +1 -0
  149. package/dist/runtime/router-navigation-api.d.ts.map +1 -1
  150. package/dist/runtime/router.d.ts +1 -0
  151. package/dist/runtime/router.d.ts.map +1 -1
  152. package/dist/runtime/router.js +11 -2
  153. package/dist/runtime/router.js.map +1 -1
  154. package/dist/runtime/server-actions.d.ts +5 -0
  155. package/dist/runtime/server-actions.d.ts.map +1 -0
  156. package/dist/runtime/server-actions.js +79 -0
  157. package/dist/runtime/server-actions.js.map +1 -0
  158. package/dist/server-actions.d.ts +18 -0
  159. package/dist/server-actions.d.ts.map +1 -0
  160. package/dist/server-actions.js +138 -0
  161. package/dist/server-actions.js.map +1 -0
  162. package/dist/server-components/closures.d.ts +1 -12
  163. package/dist/server-components/closures.d.ts.map +1 -1
  164. package/dist/server-components/closures.js +0 -75
  165. package/dist/server-components/closures.js.map +1 -1
  166. package/dist/server-components/continuation.d.ts +7 -0
  167. package/dist/server-components/continuation.d.ts.map +1 -0
  168. package/dist/server-components/continuation.js +17 -0
  169. package/dist/server-components/continuation.js.map +1 -0
  170. package/dist/server-components/environment.js +1 -1
  171. package/dist/server-components/environment.js.map +1 -1
  172. package/dist/server-components/protocol.d.ts +5 -1
  173. package/dist/server-components/protocol.d.ts.map +1 -1
  174. package/dist/server-components/protocol.js +9 -1
  175. package/dist/server-components/protocol.js.map +1 -1
  176. package/dist/server-components/server.d.ts +4 -7
  177. package/dist/server-components/server.d.ts.map +1 -1
  178. package/dist/server-components/server.js +2 -185
  179. package/dist/server-components/server.js.map +1 -1
  180. package/dist/server-components/stream-server.d.ts +6 -0
  181. package/dist/server-components/stream-server.d.ts.map +1 -0
  182. package/dist/server-components/stream-server.js +197 -0
  183. package/dist/server-components/stream-server.js.map +1 -0
  184. package/dist/server-components/stream.d.ts +16 -3
  185. package/dist/server-components/stream.d.ts.map +1 -1
  186. package/dist/server-components/stream.js +31 -4
  187. package/dist/server-components/stream.js.map +1 -1
  188. package/dist/server-components/transport.d.ts +20 -0
  189. package/dist/server-components/transport.d.ts.map +1 -0
  190. package/dist/server-components/transport.js +2 -0
  191. package/dist/server-components/transport.js.map +1 -0
  192. package/dist/server-components/updates.d.ts +56 -0
  193. package/dist/server-components/updates.d.ts.map +1 -0
  194. package/dist/server-components/updates.js +319 -0
  195. package/dist/server-components/updates.js.map +1 -0
  196. package/dist/server-data-protocol.d.ts +14 -0
  197. package/dist/server-data-protocol.d.ts.map +1 -0
  198. package/dist/server-data-protocol.js +15 -0
  199. package/dist/server-data-protocol.js.map +1 -0
  200. package/dist/server-data.d.ts +18 -0
  201. package/dist/server-data.d.ts.map +1 -1
  202. package/dist/server-data.js.map +1 -1
  203. package/dist/server-document.d.ts +21 -0
  204. package/dist/server-document.d.ts.map +1 -0
  205. package/dist/server-document.js +3 -0
  206. package/dist/server-document.js.map +1 -0
  207. package/dist/server-native-document.d.ts +13 -0
  208. package/dist/server-native-document.d.ts.map +1 -0
  209. package/dist/server-native-document.js +154 -0
  210. package/dist/server-native-document.js.map +1 -0
  211. package/dist/server-native-stream.d.ts +5 -0
  212. package/dist/server-native-stream.d.ts.map +1 -0
  213. package/dist/server-native-stream.js +39 -0
  214. package/dist/server-native-stream.js.map +1 -0
  215. package/dist/server-native.d.ts +24 -0
  216. package/dist/server-native.d.ts.map +1 -0
  217. package/dist/server-native.js +70 -0
  218. package/dist/server-native.js.map +1 -0
  219. package/dist/server-reactivity.d.ts +13 -0
  220. package/dist/server-reactivity.d.ts.map +1 -0
  221. package/dist/server-reactivity.js +49 -0
  222. package/dist/server-reactivity.js.map +1 -0
  223. package/dist/server.d.ts +11 -5
  224. package/dist/server.d.ts.map +1 -1
  225. package/dist/server.js +68 -16
  226. package/dist/server.js.map +1 -1
  227. package/dist/ui/behaviors/accordion.d.ts.map +1 -1
  228. package/dist/ui/behaviors/accordion.js +4 -3
  229. package/dist/ui/behaviors/accordion.js.map +1 -1
  230. package/dist/ui/behaviors/collapsible.d.ts.map +1 -1
  231. package/dist/ui/behaviors/collapsible.js +2 -1
  232. package/dist/ui/behaviors/collapsible.js.map +1 -1
  233. package/dist/ui/behaviors/dialog.d.ts.map +1 -1
  234. package/dist/ui/behaviors/dialog.js +5 -4
  235. package/dist/ui/behaviors/dialog.js.map +1 -1
  236. package/dist/ui/behaviors/menu.d.ts.map +1 -1
  237. package/dist/ui/behaviors/menu.js +4 -3
  238. package/dist/ui/behaviors/menu.js.map +1 -1
  239. package/dist/ui/behaviors/select.d.ts +23 -1
  240. package/dist/ui/behaviors/select.d.ts.map +1 -1
  241. package/dist/ui/behaviors/select.js +81 -11
  242. package/dist/ui/behaviors/select.js.map +1 -1
  243. package/dist/ui/behaviors/switch.d.ts.map +1 -1
  244. package/dist/ui/behaviors/switch.js +2 -1
  245. package/dist/ui/behaviors/switch.js.map +1 -1
  246. package/dist/ui/behaviors/toolbar.d.ts.map +1 -1
  247. package/dist/ui/behaviors/toolbar.js +2 -1
  248. package/dist/ui/behaviors/toolbar.js.map +1 -1
  249. package/dist/ui/catalogue.d.ts +1 -1
  250. package/dist/ui/components/accordion/accordion.d.ts.map +1 -1
  251. package/dist/ui/components/accordion/accordion.js +3 -2
  252. package/dist/ui/components/accordion/accordion.js.map +1 -1
  253. package/dist/ui/components/collapsible/collapsible.d.ts.map +1 -1
  254. package/dist/ui/components/collapsible/collapsible.js +2 -1
  255. package/dist/ui/components/collapsible/collapsible.js.map +1 -1
  256. package/dist/ui/components/dialog/dialog.d.ts.map +1 -1
  257. package/dist/ui/components/dialog/dialog.js +4 -3
  258. package/dist/ui/components/dialog/dialog.js.map +1 -1
  259. package/dist/ui/components/navigation/breadcrumbs.d.ts.map +1 -1
  260. package/dist/ui/components/navigation/breadcrumbs.js +2 -1
  261. package/dist/ui/components/navigation/breadcrumbs.js.map +1 -1
  262. package/dist/ui/components/select/select.d.ts +20 -0
  263. package/dist/ui/components/select/select.d.ts.map +1 -1
  264. package/dist/ui/components/select/select.js +20 -0
  265. package/dist/ui/components/select/select.js.map +1 -1
  266. package/dist/ui/components/tabs/tabs.d.ts.map +1 -1
  267. package/dist/ui/components/tabs/tabs.js +6 -5
  268. package/dist/ui/components/tabs/tabs.js.map +1 -1
  269. package/dist/ui/core/brand.d.ts +33 -0
  270. package/dist/ui/core/brand.d.ts.map +1 -0
  271. package/dist/ui/core/brand.js +96 -0
  272. package/dist/ui/core/brand.js.map +1 -0
  273. package/dist/ui/core/component-styles.d.ts.map +1 -1
  274. package/dist/ui/core/component-styles.js +14 -8
  275. package/dist/ui/core/component-styles.js.map +1 -1
  276. package/dist/ui/core/element.d.ts.map +1 -1
  277. package/dist/ui/core/element.js +2 -3
  278. package/dist/ui/core/element.js.map +1 -1
  279. package/dist/ui/core/index.d.ts +1 -0
  280. package/dist/ui/core/index.d.ts.map +1 -1
  281. package/dist/ui/core/index.js +1 -0
  282. package/dist/ui/core/index.js.map +1 -1
  283. package/dist/ui/core/layout-styles.d.ts.map +1 -1
  284. package/dist/ui/core/layout-styles.js +12 -6
  285. package/dist/ui/core/layout-styles.js.map +1 -1
  286. package/dist/ui/core/parts.d.ts.map +1 -1
  287. package/dist/ui/core/parts.js +5 -4
  288. package/dist/ui/core/parts.js.map +1 -1
  289. package/dist/ui/core/portal.d.ts.map +1 -1
  290. package/dist/ui/core/portal.js +17 -1
  291. package/dist/ui/core/portal.js.map +1 -1
  292. package/dist/ui/machine-state.d.ts +11 -11
  293. package/dist/ui/state.d.ts +1 -1
  294. package/dist/vite.d.ts +5 -10
  295. package/dist/vite.d.ts.map +1 -1
  296. package/dist/vite.js +119 -116
  297. package/dist/vite.js.map +1 -1
  298. package/package.json +2 -12
  299. package/dist/server-components/browser.d.ts +0 -75
  300. package/dist/server-components/browser.d.ts.map +0 -1
  301. package/dist/server-components/browser.js +0 -558
  302. package/dist/server-components/browser.js.map +0 -1
  303. package/dist/server-components/compiler.d.ts +0 -6
  304. package/dist/server-components/compiler.d.ts.map +0 -1
  305. package/dist/server-components/compiler.js +0 -118
  306. package/dist/server-components/compiler.js.map +0 -1
  307. package/dist/server-components/navigation.d.ts +0 -10
  308. package/dist/server-components/navigation.d.ts.map +0 -1
  309. package/dist/server-components/navigation.js +0 -105
  310. package/dist/server-components/navigation.js.map +0 -1
  311. package/dist/server-components/references.d.ts +0 -22
  312. package/dist/server-components/references.d.ts.map +0 -1
  313. package/dist/server-components/references.js +0 -94
  314. package/dist/server-components/references.js.map +0 -1
@@ -0,0 +1,118 @@
1
+ import { assertJson, assertName } from "./server-components/protocol.js";
2
+ const operators = new Set(["+", "-", "*", "/", "%", "**", "===", "!==", "<", "<=", ">", ">=", "&&", "||", "??"]);
3
+ export function evaluateNativeExpression(expression, read, depth = 0) {
4
+ if (depth > 64)
5
+ throw new Error("Native computation depth exceeded");
6
+ const evaluate = (value) => evaluateNativeExpression(value, read, depth + 1);
7
+ let result;
8
+ switch (expression.op) {
9
+ case "literal":
10
+ result = expression.value;
11
+ break;
12
+ case "read":
13
+ assertName(expression.name);
14
+ result = read(expression.name);
15
+ break;
16
+ case "property": {
17
+ assertName(expression.key);
18
+ const value = evaluate(expression.value);
19
+ if (expression.key === "length" && (Array.isArray(value) || typeof value === "string"))
20
+ result = value.length;
21
+ else if (value && typeof value === "object" && Object.hasOwn(value, expression.key))
22
+ result = value[expression.key];
23
+ else
24
+ throw new Error(`Missing computed property: ${expression.key}`);
25
+ break;
26
+ }
27
+ case "array":
28
+ result = expression.items.map(evaluate);
29
+ break;
30
+ case "choose":
31
+ result = evaluate(expression.test) ? evaluate(expression.yes) : evaluate(expression.no);
32
+ break;
33
+ case "!":
34
+ result = !evaluate(expression.value);
35
+ break;
36
+ case "+":
37
+ case "-": {
38
+ const value = evaluate(expression.value);
39
+ if (typeof value !== "number")
40
+ throw new Error("Computed arithmetic requires numbers");
41
+ result = expression.op === "+" ? value : -value;
42
+ break;
43
+ }
44
+ case "binary": {
45
+ if (!operators.has(expression.operator))
46
+ throw new Error("Unknown computed operator");
47
+ const left = evaluate(expression.left);
48
+ if (expression.operator === "&&")
49
+ return left ? evaluate(expression.right) : left;
50
+ if (expression.operator === "||")
51
+ return left || evaluate(expression.right);
52
+ if (expression.operator === "??")
53
+ return left ?? evaluate(expression.right);
54
+ const right = evaluate(expression.right);
55
+ if (expression.operator === "===" || expression.operator === "!==") {
56
+ if (left && right && typeof left === "object" && typeof right === "object")
57
+ throw new Error("Computed equality requires scalar values");
58
+ return expression.operator === "===" ? left === right : left !== right;
59
+ }
60
+ if (expression.operator === "+" && (typeof left === "string" || typeof right === "string") && typeof left !== "object" && typeof right !== "object")
61
+ return String(left) + String(right);
62
+ if (["<", "<=", ">", ">="].includes(expression.operator) && typeof left === "string" && typeof right === "string") {
63
+ return expression.operator === "<" ? left < right : expression.operator === "<=" ? left <= right : expression.operator === ">" ? left > right : left >= right;
64
+ }
65
+ if (typeof left !== "number" || typeof right !== "number")
66
+ throw new Error("Computed arithmetic requires numbers");
67
+ switch (expression.operator) {
68
+ case "+":
69
+ result = left + right;
70
+ break;
71
+ case "-":
72
+ result = left - right;
73
+ break;
74
+ case "*":
75
+ result = left * right;
76
+ break;
77
+ case "/":
78
+ result = left / right;
79
+ break;
80
+ case "%":
81
+ result = left % right;
82
+ break;
83
+ case "**":
84
+ result = left ** right;
85
+ break;
86
+ case "<": return left < right;
87
+ case "<=": return left <= right;
88
+ case ">": return left > right;
89
+ default: return left >= right;
90
+ }
91
+ break;
92
+ }
93
+ default: throw new Error("Unknown native computation");
94
+ }
95
+ assertJson(result);
96
+ return result;
97
+ }
98
+ /** The same expression semantics seed build/request HTML and resumed Atom reads. */
99
+ export function computeNativeValues(state, computations) {
100
+ const result = { ...state }, reading = new Set(), complete = new Set();
101
+ const read = (name) => {
102
+ if (!Object.hasOwn(result, name))
103
+ throw new Error(`Unknown computed dependency: ${name}`);
104
+ if (Object.hasOwn(computations, name) && !complete.has(name)) {
105
+ if (reading.has(name))
106
+ throw new Error(`Cyclic native computation: ${name}`);
107
+ reading.add(name);
108
+ result[name] = evaluateNativeExpression(computations[name], read);
109
+ reading.delete(name);
110
+ complete.add(name);
111
+ }
112
+ return result[name];
113
+ };
114
+ for (const name of Object.keys(computations))
115
+ read(name);
116
+ return result;
117
+ }
118
+ //# sourceMappingURL=native-expressions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-expressions.js","sourceRoot":"","sources":["../src/native-expressions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { NativeStateSeed } from "./native-state.js";
2
+ export declare const nativeBindingKinds: readonly ["text", "value", "checked", "attribute"];
3
+ export type NativeManifestDefinition = readonly [id: string, seeds: readonly NativeStateSeed[], bindings: readonly (readonly [state: number, kind: number, attribute?: string])[], events: readonly (readonly [type: string, handler: string, flags: number])[], graph?: string];
4
+ export type NativeManifestInstance = readonly [host: readonly number[], tag: string | null, key: string | null, definition: number, instance: string];
5
+ export type NativeManifestScript = readonly [host: readonly number[], tag: string | null, key: string | null, script: string];
6
+ export type NativeManifest = readonly [version: 2, build: string, route: string, admission: string, definitions: readonly NativeManifestDefinition[], instances: readonly (NativeManifestInstance | NativeManifestScript)[]];
7
+ //# sourceMappingURL=native-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-manifest.d.ts","sourceRoot":"","sources":["../src/native-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,eAAO,MAAM,kBAAkB,oDAAqD,CAAC;AACrF,MAAM,MAAM,wBAAwB,GAAG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,eAAe,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AACjR,MAAM,MAAM,sBAAsB,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACtJ,MAAM,MAAM,oBAAoB,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9H,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,wBAAwB,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,sBAAsB,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Compiler-owned, versioned wire format. Indexes refer only to local bindings and
2
+ // build-admitted modules; HTML never supplies a URL or executable source.
3
+ export const nativeBindingKinds = ["text", "value", "checked", "attribute"];
4
+ //# sourceMappingURL=native-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-manifest.js","sourceRoot":"","sources":["../src/native-manifest.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAClF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAU,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type Json, type Values } from "./server-components/protocol.js";
2
+ import type { DataBinding } from "./compiler/data-document.js";
3
+ export type NativeRangePart = string | {
4
+ readonly path: string;
5
+ readonly source: "item" | "state";
6
+ readonly attribute?: boolean;
7
+ readonly href?: true;
8
+ } | {
9
+ readonly row: true;
10
+ };
11
+ export type NativeRange = {
12
+ readonly id: string;
13
+ readonly state: string;
14
+ readonly key?: string;
15
+ readonly html: string;
16
+ readonly parts: readonly NativeRangePart[];
17
+ readonly reads: readonly string[];
18
+ };
19
+ /** Navigation holes admit only root-relative URLs. Never executable or external URLs. */
20
+ export declare function nativeRowHref(value: Json | undefined): string;
21
+ export declare function renderNativeBinding(binding: DataBinding, value: unknown): string | undefined;
22
+ export declare function itemValue(item: Json, path: string): Json;
23
+ export declare function rangeRows(range: NativeRange, value: Json): readonly (readonly [string, Json])[];
24
+ export declare function renderNativeRange(range: NativeRange, state: Values): string;
25
+ //# sourceMappingURL=native-ranges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-ranges.d.ts","sourceRoot":"","sources":["../src/native-ranges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAG7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAC;AACjL,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AACvM,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM,CAG7D;AACD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE5F;AACD,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQxD;AACD,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAY/F;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ3E"}
@@ -0,0 +1,51 @@
1
+ import { assertName, scalar } from "./server-components/protocol.js";
2
+ import { escapeAttribute, escapeText } from "./html-escape.js";
3
+ import { renderDataBinding } from "./data-bindings.js";
4
+ /** Navigation holes admit only root-relative URLs. Never executable or external URLs. */
5
+ export function nativeRowHref(value) {
6
+ if (typeof value !== "string" || !value.startsWith("/") || value.startsWith("//") || /[\\\u0000-\u0020\u007f]/.test(value))
7
+ throw new Error("Row href requires a root-relative URL without whitespace or backslashes");
8
+ return value;
9
+ }
10
+ export function renderNativeBinding(binding, value) {
11
+ return binding.range ? renderNativeRange(binding.range, value) : renderDataBinding(binding, value);
12
+ }
13
+ export function itemValue(item, path) {
14
+ let value = item;
15
+ for (const key of path.split(".")) {
16
+ assertName(key);
17
+ if (!value || typeof value !== "object" || !Object.hasOwn(value, key))
18
+ throw new Error(`Missing row property: ${path}`);
19
+ value = value[key];
20
+ }
21
+ return value;
22
+ }
23
+ export function rangeRows(range, value) {
24
+ if (!range.key) {
25
+ if (typeof value !== "boolean")
26
+ throw new Error("Conditional ranges require boolean state");
27
+ return value ? [["true", null]] : [];
28
+ }
29
+ if (!Array.isArray(value) || value.length > 2048)
30
+ throw new Error("Keyed ranges require at most 2048 JSON rows");
31
+ const seen = new Set();
32
+ return value.map(item => {
33
+ const key = itemValue(item, range.key), identity = JSON.stringify(key);
34
+ if (!(typeof key === "string" && key.length <= 256 || typeof key === "number" && Number.isFinite(key)) || seen.has(identity))
35
+ throw new Error("Rows require unique finite number or short string keys");
36
+ seen.add(identity);
37
+ return [identity, item];
38
+ });
39
+ }
40
+ export function renderNativeRange(range, state) {
41
+ return rangeRows(range, state[range.state]).map(([key, item]) => range.parts.map(part => {
42
+ if (typeof part === "string")
43
+ return part;
44
+ if ("row" in part)
45
+ return escapeAttribute(key);
46
+ const raw = part.source === "item" ? itemValue(item, part.path) : state[part.path];
47
+ const value = part.href ? nativeRowHref(raw) : scalar(raw);
48
+ return part.attribute ? escapeAttribute(value) : escapeText(value);
49
+ }).join("")).join("");
50
+ }
51
+ //# sourceMappingURL=native-ranges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-ranges.js","sourceRoot":"","sources":["../src/native-ranges.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type Json, type Values } from "./server-components/protocol.js";
2
+ /** A compiler-extracted JSON default, optionally initialized from explicit public server props. */
3
+ export type NativeStateSeed = {
4
+ readonly name: string;
5
+ readonly fallback: Json;
6
+ readonly from?: readonly string[];
7
+ readonly readonly?: boolean;
8
+ readonly binding?: "scalar" | "boolean";
9
+ };
10
+ export declare function nativeSeed(props: Values, states: readonly NativeStateSeed[]): {
11
+ props: Values;
12
+ state: Values;
13
+ };
14
+ //# sourceMappingURL=native-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-state.d.ts","sourceRoot":"","sources":["../src/native-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEzG,mGAAmG;AACnG,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CAAE,CAAC;AAC1L,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,eAAe,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAgB9G"}
@@ -0,0 +1,27 @@
1
+ import { assertJson, assertName, scalar } from "./server-components/protocol.js";
2
+ export function nativeSeed(props, states) {
3
+ assertJson(props);
4
+ if (!props || typeof props !== "object" || Array.isArray(props))
5
+ throw new Error("Native public props must be a JSON object");
6
+ const state = {};
7
+ for (const cell of states) {
8
+ assertName(cell.name);
9
+ let value = props;
10
+ for (const key of cell.from ?? []) {
11
+ assertName(key);
12
+ value = value && typeof value === "object" && Object.hasOwn(value, key) ? value[key] : undefined;
13
+ }
14
+ state[cell.name] = cell.from ? (value ?? cell.fallback) : cell.fallback;
15
+ if (cell.binding === "boolean" && typeof state[cell.name] !== "boolean")
16
+ throw new Error("Checked state must be boolean");
17
+ if (cell.binding === "scalar")
18
+ scalar(state[cell.name]);
19
+ }
20
+ const seed = { props, state };
21
+ assertJson(seed);
22
+ const json = JSON.stringify(seed);
23
+ if (new TextEncoder().encode(json).byteLength > 2 * 1024 * 1024)
24
+ throw new Error("Native public seed payload limit exceeded");
25
+ return JSON.parse(json);
26
+ }
27
+ //# sourceMappingURL=native-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-state.js","sourceRoot":"","sources":["../src/native-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAA0B,MAAM,iCAAiC,CAAC;AAIzG,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,MAAkC;IAC1E,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC9H,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,KAAK,GAAY,KAAK,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAAC,KAAK,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAAC,CAAC;QACtL,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC1H,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ;YAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC9H,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;AACzC,CAAC"}
@@ -26,6 +26,8 @@ export declare function withBase(href: string, base: string): string;
26
26
  export declare function nearestScope(route: string, scopes: Iterable<string>): string | undefined;
27
27
  /** Server data for a page is served below this path, inside the deployment base. */
28
28
  export declare const serverDataPrefix = "/_fuzor/data";
29
+ /** Compiler-generated server actions, with the same route and deployment-base mapping. */
30
+ export declare const serverActionPrefix = "/_fuzor/action";
29
31
  /** Data endpoint URL for a route key, for example `/docs-site/_fuzor/data/notes/hello/`. */
30
32
  export declare function serverDataUrl(route: string, base: string): string;
31
33
  /** Same logical URL policy for parser-time selection and the hash navigation adapter. */
@@ -1 +1 @@
1
- {"version":3,"file":"route-path.d.ts","sourceRoot":"","sources":["../src/route-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAW7D;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAGxE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI9D;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI5E;AAED,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAMxF;AAED,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,GAAG,CAGjF"}
1
+ {"version":3,"file":"route-path.d.ts","sourceRoot":"","sources":["../src/route-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAW7D;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAGxE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI9D;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI5E;AAED,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAMxF;AAED,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAC/C,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,GAAG,CAGjF"}
@@ -69,6 +69,8 @@ export function nearestScope(route, scopes) {
69
69
  }
70
70
  /** Server data for a page is served below this path, inside the deployment base. */
71
71
  export const serverDataPrefix = "/_fuzor/data";
72
+ /** Compiler-generated server actions, with the same route and deployment-base mapping. */
73
+ export const serverActionPrefix = "/_fuzor/action";
72
74
  /** Data endpoint URL for a route key, for example `/docs-site/_fuzor/data/notes/hello/`. */
73
75
  export function serverDataUrl(route, base) {
74
76
  return withBase(`${serverDataPrefix}${route}`, base);
@@ -1 +1 @@
1
- {"version":3,"file":"route-path.js","sourceRoot":"","sources":["../src/route-path.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-path.js","sourceRoot":"","sources":["../src/route-path.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Json } from "../server-components/protocol.js";
2
+ /** Closed DOM properties selected by validated bindings, with equal writes suppressed. */
3
+ export declare function writeBindingProperty<K extends "textContent" | "value" | "checked">(element: Pick<HTMLInputElement, K>, property: K, value: HTMLInputElement[K]): void;
4
+ /** Atom remains authoritative; keep only the before/after values of pending edits. */
5
+ export declare function createBindingUpdates(active: () => boolean, apply: (key: string, value: Json, preserveFields: boolean) => void, onError: (error: unknown) => void): {
6
+ enqueue(key: string, previous: Json, value: Json, preserveFields?: boolean): void;
7
+ flush: () => void;
8
+ dispose(): void;
9
+ };
10
+ export type BindingUpdates = ReturnType<typeof createBindingUpdates>;
11
+ //# sourceMappingURL=binding-updates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-updates.d.ts","sourceRoot":"","sources":["../../src/runtime/binding-updates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AAE7D,0FAA0F;AAC1F,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,OAAO,GAAG,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAErK;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,OAAO,EACrB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,KAAK,IAAI,EAClE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;iBAalB,MAAM,YAAY,IAAI,SAAS,IAAI;;;EAenD;AACD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,45 @@
1
+ /** Closed DOM properties selected by validated bindings, with equal writes suppressed. */
2
+ export function writeBindingProperty(element, property, value) {
3
+ if (element[property] !== value)
4
+ element[property] = value;
5
+ }
6
+ /** Atom remains authoritative; keep only the before/after values of pending edits. */
7
+ export function createBindingUpdates(active, apply, onError) {
8
+ const pending = new Map();
9
+ let scheduled = false;
10
+ const flush = () => {
11
+ const changes = [...pending];
12
+ pending.clear();
13
+ for (const [key, [previous, value, preserveFields]] of changes) {
14
+ if (!active())
15
+ return;
16
+ // Both renderers validate bound values as scalar; opaque JSON cells never queue DOM work.
17
+ if (previous !== value)
18
+ apply(key, value, preserveFields);
19
+ }
20
+ };
21
+ return {
22
+ enqueue(key, previous, value, preserveFields = false) {
23
+ if (!active())
24
+ return;
25
+ const change = pending.get(key);
26
+ // An explicit local write takes precedence over server field preservation.
27
+ pending.set(key, [change ? change[0] : previous, value, preserveFields && change?.[2] !== false]);
28
+ if (scheduled)
29
+ return;
30
+ scheduled = true;
31
+ queueMicrotask(() => {
32
+ scheduled = false;
33
+ try {
34
+ flush();
35
+ }
36
+ catch (error) {
37
+ onError(error);
38
+ }
39
+ });
40
+ },
41
+ flush,
42
+ dispose() { pending.clear(); },
43
+ };
44
+ }
45
+ //# sourceMappingURL=binding-updates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-updates.js","sourceRoot":"","sources":["../../src/runtime/binding-updates.ts"],"names":[],"mappings":"AAEA,0FAA0F;AAC1F,MAAM,UAAU,oBAAoB,CAAgD,OAAkC,EAAE,QAAW,EAAE,KAA0B;IAC7J,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,KAAK;QAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AAC7D,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,oBAAoB,CAClC,MAAqB,EACrB,KAAkE,EAClE,OAAiC;IAEjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0C,CAAC;IAClE,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;YAC/D,IAAI,CAAC,MAAM,EAAE;gBAAE,OAAO;YACtB,0FAA0F;YAC1F,IAAI,QAAQ,KAAK,KAAK;gBAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC;IACF,OAAO;QACL,OAAO,CAAC,GAAW,EAAE,QAAc,EAAE,KAAW,EAAE,cAAc,GAAG,KAAK;YACtE,IAAI,CAAC,MAAM,EAAE;gBAAE,OAAO;YACtB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,2EAA2E;YAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;YAClG,IAAI,SAAS;gBAAE,OAAO;YACtB,SAAS,GAAG,IAAI,CAAC;YACjB,cAAc,CAAC,GAAG,EAAE;gBAClB,SAAS,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC;oBAAC,KAAK,EAAE,CAAC;gBAAC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK;QACL,OAAO,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KAC/B,CAAC;AACJ,CAAC"}
@@ -1,3 +1,25 @@
1
+ import { type RouteDataPatch } from "../server-data-protocol.js";
2
+ import * as Effect from "effect/Effect";
3
+ export type DataPublication = {
4
+ readonly data: unknown;
5
+ readonly nativeKeys?: ReadonlySet<string>;
6
+ };
7
+ export type RouteDataTransport = {
8
+ readonly headers: Readonly<Record<string, string>>;
9
+ readonly open: (response: Response, context: {
10
+ readonly outlet: Element;
11
+ readonly scope: string;
12
+ readonly signal: AbortSignal;
13
+ readonly previous?: unknown;
14
+ }) => Effect.Effect<{
15
+ readonly data: unknown;
16
+ readonly follow?: (publish: (update: DataPublication) => void) => Effect.Effect<void, unknown>;
17
+ }, unknown>;
18
+ };
19
+ /** The page's path below the deployment base its data endpoint carries, so a stream's scope does not depend on where the app is mounted. */
20
+ export declare function appRelative(page: string, endpoint: string): string;
21
+ /** Installed only by compiler output containing request-time HTML owners. */
22
+ export declare function setRouteDataTransport(value: RouteDataTransport | undefined): void;
1
23
  export declare class RouteDataError extends Error {
2
24
  readonly status: number | undefined;
3
25
  readonly _tag = "RouteDataError";
@@ -7,9 +29,12 @@ export type LoadRouteDataOptions = {
7
29
  /** Query string forwarded to the loader; defaults to the document's current search. */
8
30
  readonly search?: string;
9
31
  readonly fetch?: typeof fetch;
32
+ /** Ignore the document's already-adopted SSR seed after a mutation. */
33
+ readonly force?: boolean;
34
+ readonly signal?: AbortSignal;
10
35
  };
11
36
  /** Fills `<fuzor-data name="a.b">` slots with text. Missing or non-text values keep the fallback content. */
12
- export declare function fillDataSlots(root: ParentNode, data: unknown): void;
37
+ export declare function fillDataSlots(root: ParentNode, data: unknown, accepts?: (name: string, slot: Element) => boolean): void;
13
38
  /**
14
39
  * Requests the data of the page rendered in `outlet` (`data-fuzor-data` holds the endpoint), fills its
15
40
  * slots and dispatches `fuzor:data` or `fuzor:data-error` on the outlet. A newer load or `abortRouteData`
@@ -17,6 +42,8 @@ export declare function fillDataSlots(root: ParentNode, data: unknown): void;
17
42
  */
18
43
  export declare function loadRouteData(outlet: Element, options?: LoadRouteDataOptions): Promise<unknown>;
19
44
  export declare function abortRouteData(outlet: Element): void;
45
+ /** Apply server-owned complete seeds; omitted instances retain their current data and are not notified. */
46
+ export declare function patchRouteData(outlet: Element, patch: RouteDataPatch, search: string, signal: AbortSignal): void;
20
47
  /**
21
48
  * Data for the page containing `element`, for islands. Shares the outlet's current request and starts one
22
49
  * if none is running.
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/runtime/data.ts"],"names":[],"mappings":"AAGA,qBAAa,cAAe,SAAQ,KAAK;IAE3B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAD/C,QAAQ,CAAC,IAAI,oBAAoB;gBACZ,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM;CACjE;AAKD,MAAM,MAAM,oBAAoB,GAAG;IACjC,uFAAuF;IACvF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CAC/B,CAAC;AAWF,6GAA6G;AAC7G,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAUnE;AAMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,CA0CnG;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAGpD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAW5D"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/runtime/data.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AACpG,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC;QAC7K,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAChG,EAAE,OAAO,CAAC,CAAC;CACb,CAAC;AACF,4IAA4I;AAC5I,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED,6EAA6E;AAC7E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI,CAAuB;AAEzG,qBAAa,cAAe,SAAQ,KAAK;IAE3B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAD/C,QAAQ,CAAC,IAAI,oBAAoB;gBACZ,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM;CACjE;AAMD,MAAM,MAAM,oBAAoB,GAAG;IACjC,uFAAuF;IACvF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,CAAC;AAWF,6GAA6G;AAC7G,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAoB,GAAG,IAAI,CAYnI;AAMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,CAsEnG;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAIpD;AAED,2GAA2G;AAC3G,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAgBhH;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAW5D"}