@fluixi/dom 1.0.0-alpha.82 → 1.0.0-alpha.84

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 (183) hide show
  1. package/dist/cdn/dom-client.cjs +1427 -1
  2. package/dist/cdn/dom-client.d.ts +2 -2
  3. package/dist/cdn/dom-client.global.js +2 -1
  4. package/dist/cdn/dom-client.js +3 -3
  5. package/dist/cdn/dom-client.mjs +1430 -1
  6. package/dist/cdn/dom.cjs +3127 -1
  7. package/dist/cdn/dom.d.ts +2 -2
  8. package/dist/cdn/dom.global.js +2 -1
  9. package/dist/cdn/dom.js +4 -4
  10. package/dist/cdn/dom.mjs +3133 -1
  11. package/dist/index.cjs +3155 -1
  12. package/dist/index.js +2 -2
  13. package/dist/index.mjs +3149 -1
  14. package/dist/lib/component/index.cjs +128 -1
  15. package/dist/lib/component/index.mjs +105 -1
  16. package/dist/lib/component/modifiers.cjs +126 -1
  17. package/dist/lib/component/modifiers.d.ts +12 -0
  18. package/dist/lib/component/modifiers.d.ts.map +1 -1
  19. package/dist/lib/component/modifiers.js +12 -84
  20. package/dist/lib/component/modifiers.mjs +105 -1
  21. package/dist/lib/dom/delegate.cjs +60 -1
  22. package/dist/lib/dom/delegate.js +1 -1
  23. package/dist/lib/dom/delegate.mjs +39 -1
  24. package/dist/lib/dom/dynamic-element.cjs +949 -1
  25. package/dist/lib/dom/dynamic-element.d.ts +3 -3
  26. package/dist/lib/dom/dynamic-element.js +3 -3
  27. package/dist/lib/dom/dynamic-element.mjs +928 -1
  28. package/dist/lib/dom/hydration-state.cjs +93 -1
  29. package/dist/lib/dom/hydration-state.d.ts +1 -1
  30. package/dist/lib/dom/hydration-state.js +1 -1
  31. package/dist/lib/dom/hydration-state.mjs +72 -1
  32. package/dist/lib/dom/hydration.cjs +685 -1
  33. package/dist/lib/dom/hydration.js +8 -8
  34. package/dist/lib/dom/hydration.mjs +664 -1
  35. package/dist/lib/dom/index.cjs +2040 -1
  36. package/dist/lib/dom/index.js +1 -1
  37. package/dist/lib/dom/index.mjs +2020 -1
  38. package/dist/lib/dom/integration.cjs +71 -1
  39. package/dist/lib/dom/integration.d.ts.map +1 -1
  40. package/dist/lib/dom/integration.js +15 -6
  41. package/dist/lib/dom/integration.mjs +51 -1
  42. package/dist/lib/dom/island.cjs +790 -1
  43. package/dist/lib/dom/island.d.ts +1 -1
  44. package/dist/lib/dom/island.js +12 -12
  45. package/dist/lib/dom/island.mjs +769 -1
  46. package/dist/lib/dom/runtime.cjs +1432 -1
  47. package/dist/lib/dom/runtime.d.ts +71 -19
  48. package/dist/lib/dom/runtime.d.ts.map +1 -1
  49. package/dist/lib/dom/runtime.js +261 -100
  50. package/dist/lib/dom/runtime.mjs +1414 -1
  51. package/dist/lib/dom/server/fx-data.cjs +53 -1
  52. package/dist/lib/dom/server/fx-data.d.ts +5 -5
  53. package/dist/lib/dom/server/fx-data.js +6 -6
  54. package/dist/lib/dom/server/fx-data.mjs +32 -1
  55. package/dist/lib/dom/server/host.cjs +66 -1
  56. package/dist/lib/dom/server/host.d.ts +14 -2
  57. package/dist/lib/dom/server/host.d.ts.map +1 -1
  58. package/dist/lib/dom/server/host.js +38 -10
  59. package/dist/lib/dom/server/host.mjs +45 -1
  60. package/dist/lib/dom/server/index.cjs +759 -1
  61. package/dist/lib/dom/server/index.d.ts +1 -1
  62. package/dist/lib/dom/server/index.js +1 -1
  63. package/dist/lib/dom/server/index.mjs +743 -1
  64. package/dist/lib/dom/server/nodes.cjs +302 -1
  65. package/dist/lib/dom/server/nodes.d.ts +2 -2
  66. package/dist/lib/dom/server/nodes.d.ts.map +1 -1
  67. package/dist/lib/dom/server/nodes.js +4 -4
  68. package/dist/lib/dom/server/nodes.mjs +279 -1
  69. package/dist/lib/dom/server/parse-template.cjs +395 -1
  70. package/dist/lib/dom/server/parse-template.d.ts +1 -1
  71. package/dist/lib/dom/server/parse-template.js +4 -4
  72. package/dist/lib/dom/server/parse-template.mjs +372 -1
  73. package/dist/lib/dom/server/render.cjs +691 -1
  74. package/dist/lib/dom/server/render.d.ts +9 -1
  75. package/dist/lib/dom/server/render.d.ts.map +1 -1
  76. package/dist/lib/dom/server/render.js +25 -17
  77. package/dist/lib/dom/server/render.mjs +677 -1
  78. package/dist/lib/dom/server/request-context.cjs +110 -1
  79. package/dist/lib/dom/server/request-context.d.ts +29 -9
  80. package/dist/lib/dom/server/request-context.d.ts.map +1 -1
  81. package/dist/lib/dom/server/request-context.js +28 -8
  82. package/dist/lib/dom/server/request-context.mjs +89 -1
  83. package/dist/lib/dom/server/serialize.cjs +187 -1
  84. package/dist/lib/dom/server/serialize.js +3 -3
  85. package/dist/lib/dom/server/serialize.mjs +164 -1
  86. package/dist/lib/dom/server-renderer.cjs +760 -1
  87. package/dist/lib/dom/server-renderer.js +1 -1
  88. package/dist/lib/dom/server-renderer.mjs +745 -1
  89. package/dist/lib/dom/types.cjs +18 -1
  90. package/dist/lib/dom/utils.cjs +381 -1
  91. package/dist/lib/dom/utils.d.ts +1 -88
  92. package/dist/lib/dom/utils.d.ts.map +1 -1
  93. package/dist/lib/dom/utils.js +2 -99
  94. package/dist/lib/dom/utils.mjs +361 -1
  95. package/dist/lib/dom/versions.cjs +60 -1
  96. package/dist/lib/dom/versions.d.ts +3 -3
  97. package/dist/lib/dom/versions.d.ts.map +1 -1
  98. package/dist/lib/dom/versions.js +17 -5
  99. package/dist/lib/dom/versions.mjs +37 -1
  100. package/dist/lib/element/attributes.cjs +19 -1
  101. package/dist/lib/element/attributes.d.ts +7 -7
  102. package/dist/lib/element/attributes.js +1 -1
  103. package/dist/lib/element/attributes.mjs +1 -0
  104. package/dist/lib/element/index.cjs +19 -1
  105. package/dist/lib/element/index.mjs +1 -0
  106. package/dist/lib/element/types.cjs +18 -1
  107. package/dist/lib/element/types.d.ts +4 -5
  108. package/dist/lib/element/types.d.ts.map +1 -1
  109. package/dist/lib/element/types.js +0 -1
  110. package/dist/lib/flow/class-map.cjs +38 -1
  111. package/dist/lib/flow/class-map.d.ts +3 -3
  112. package/dist/lib/flow/class-map.js +3 -3
  113. package/dist/lib/flow/class-map.mjs +17 -1
  114. package/dist/lib/flow/client-only.cjs +57 -1
  115. package/dist/lib/flow/client-only.d.ts +4 -4
  116. package/dist/lib/flow/client-only.js +4 -4
  117. package/dist/lib/flow/client-only.mjs +36 -1
  118. package/dist/lib/flow/dynamic.cjs +53 -1
  119. package/dist/lib/flow/dynamic.d.ts +2 -2
  120. package/dist/lib/flow/dynamic.js +4 -4
  121. package/dist/lib/flow/dynamic.mjs +32 -1
  122. package/dist/lib/flow/error-boundary.cjs +43 -1
  123. package/dist/lib/flow/error-boundary.d.ts +2 -2
  124. package/dist/lib/flow/error-boundary.js +4 -4
  125. package/dist/lib/flow/error-boundary.mjs +22 -1
  126. package/dist/lib/flow/for.cjs +66 -1
  127. package/dist/lib/flow/for.d.ts +9 -9
  128. package/dist/lib/flow/for.d.ts.map +1 -1
  129. package/dist/lib/flow/for.js +2 -2
  130. package/dist/lib/flow/for.mjs +45 -1
  131. package/dist/lib/flow/index-flow.cjs +67 -1
  132. package/dist/lib/flow/index-flow.d.ts +5 -5
  133. package/dist/lib/flow/index-flow.js +4 -4
  134. package/dist/lib/flow/index-flow.mjs +46 -1
  135. package/dist/lib/flow/index.cjs +805 -1
  136. package/dist/lib/flow/index.mjs +792 -1
  137. package/dist/lib/flow/portal.cjs +538 -1
  138. package/dist/lib/flow/portal.mjs +519 -1
  139. package/dist/lib/flow/show.cjs +81 -1
  140. package/dist/lib/flow/show.d.ts +1 -1
  141. package/dist/lib/flow/show.d.ts.map +1 -1
  142. package/dist/lib/flow/show.js +12 -118
  143. package/dist/lib/flow/show.mjs +67 -1
  144. package/dist/lib/flow/style-map.cjs +43 -1
  145. package/dist/lib/flow/style-map.d.ts +3 -3
  146. package/dist/lib/flow/style-map.js +4 -4
  147. package/dist/lib/flow/style-map.mjs +22 -1
  148. package/dist/lib/flow/switch.cjs +91 -1
  149. package/dist/lib/flow/switch.d.ts +3 -3
  150. package/dist/lib/flow/switch.d.ts.map +1 -1
  151. package/dist/lib/flow/switch.js +7 -7
  152. package/dist/lib/flow/switch.mjs +70 -1
  153. package/dist/lib/flow/utils.cjs +44 -1
  154. package/dist/lib/flow/utils.d.ts +1 -1
  155. package/dist/lib/flow/utils.js +1 -1
  156. package/dist/lib/flow/utils.mjs +23 -1
  157. package/dist/lib/html.cjs +32 -1
  158. package/dist/lib/html.d.ts +6 -6
  159. package/dist/lib/html.js +5 -5
  160. package/dist/lib/html.mjs +11 -1
  161. package/dist/lib/index.cjs +3104 -1
  162. package/dist/lib/index.d.ts +0 -1
  163. package/dist/lib/index.d.ts.map +1 -1
  164. package/dist/lib/index.js +2 -3
  165. package/dist/lib/index.mjs +3097 -1
  166. package/dist/lib/shared/types.cjs +18 -1
  167. package/dist/lib/shared/types.d.ts +8 -8
  168. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  169. package/dist/version.generated.cjs +26 -1
  170. package/dist/version.generated.d.ts +1 -1
  171. package/dist/version.generated.js +2 -2
  172. package/dist/version.generated.mjs +5 -1
  173. package/package.json +7 -6
  174. package/dist/lib/jsx/control-flow/flow.cjs +0 -1
  175. package/dist/lib/jsx/control-flow/flow.d.ts +0 -2
  176. package/dist/lib/jsx/control-flow/flow.d.ts.map +0 -1
  177. package/dist/lib/jsx/control-flow/flow.js +0 -627
  178. package/dist/lib/jsx/control-flow/flow.mjs +0 -0
  179. package/dist/lib/jsx/control-flow/for-flow.cjs +0 -1
  180. package/dist/lib/jsx/control-flow/for-flow.d.ts +0 -2
  181. package/dist/lib/jsx/control-flow/for-flow.d.ts.map +0 -1
  182. package/dist/lib/jsx/control-flow/for-flow.js +0 -1
  183. package/dist/lib/jsx/control-flow/for-flow.mjs +0 -0
@@ -1 +1,53 @@
1
- "use strict";var u=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var _=Object.prototype.hasOwnProperty;var a=(e,n)=>{for(var t in n)u(e,t,{get:n[t],enumerable:!0})},l=(e,n,t,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of s(n))!_.call(e,r)&&r!==t&&u(e,r,{get:()=>n[r],enumerable:!(i=d(n,r))||i.enumerable});return e};var g=e=>l(u({},"__esModule",{value:!0}),e);var x={};a(x,{FX_DATA_ID:()=>c,escapeFxJson:()=>f,getServerData:()=>A,resetServerDataCache:()=>p});module.exports=g(x);var c="__FX_DATA__";function f(e){return e.replace(/[<>&\u2028\u2029]/g,n=>"\\u"+n.charCodeAt(0).toString(16).padStart(4,"0"))}var o;function p(){o=void 0}function A(){let e=globalThis.__FX_DATA__;if(e)return e;if(o!==void 0)return o;let n=null;if(typeof document<"u"){let t=document.getElementById(c)?.textContent;if(t)try{n=JSON.parse(t)}catch{n=null}}return o=n}
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/dom/server/fx-data.ts
21
+ var fx_data_exports = {};
22
+ __export(fx_data_exports, {
23
+ FX_DATA_ID: () => FX_DATA_ID,
24
+ escapeFxJson: () => escapeFxJson,
25
+ getServerData: () => getServerData,
26
+ resetServerDataCache: () => resetServerDataCache
27
+ });
28
+ module.exports = __toCommonJS(fx_data_exports);
29
+ var FX_DATA_ID = "__FX_DATA__";
30
+ function escapeFxJson(json) {
31
+ return json.replace(/[<>&\u2028\u2029]/g, (c) => "\\u" + c.charCodeAt(0).toString(16).padStart(4, "0"));
32
+ }
33
+ var _scriptCache;
34
+ function resetServerDataCache() {
35
+ _scriptCache = void 0;
36
+ }
37
+ function getServerData() {
38
+ const g = globalThis.__FX_DATA__;
39
+ if (g) return g;
40
+ if (_scriptCache !== void 0) return _scriptCache;
41
+ let parsed = null;
42
+ if (typeof document !== "undefined") {
43
+ const text = document.getElementById(FX_DATA_ID)?.textContent;
44
+ if (text) {
45
+ try {
46
+ parsed = JSON.parse(text);
47
+ } catch {
48
+ parsed = null;
49
+ }
50
+ }
51
+ }
52
+ return _scriptCache = parsed;
53
+ }
@@ -1,15 +1,15 @@
1
1
  /**
2
- * The SSR data transport (`__FX_DATA__`) emission escaping + client reader.
2
+ * The SSR data transport (`__FX_DATA__`): emission escaping + client reader.
3
3
  *
4
4
  * The server collects resolved resource values + seeds (i18n locale, isomorphic state) and
5
5
  * embeds them in the page so the client hydrates without refetching. SECURITY MODEL:
6
6
  *
7
- * - It is NON-SECRET BY DESIGN it's in the page, readable by the user. Encrypting it buys
7
+ * - It is NON-SECRET BY DESIGN, it's in the page, readable by the user. Encrypting it buys
8
8
  * nothing (the client would need the key). Keep server-only fields OUT via setDataRedactor;
9
9
  * fetch truly sensitive data through a `"use server"` function instead. Don't obfuscate.
10
10
  *
11
11
  * - Emitted as a NON-EXECUTABLE `<script type="application/json">`, read via `JSON.parse` of
12
- * its `textContent`. So (a) a value can never execute as JS, and (b) it's CSP-friendly
12
+ * its `textContent`. So (a) a value can never execute as JS, and (b) it's CSP-friendly:
13
13
  * it works under a strict `script-src` that forbids inline executable scripts.
14
14
  *
15
15
  * - The JSON is escaped with the standard SSR-JSON set (`<`, `>`, `&`, U+2028, U+2029) so no
@@ -20,8 +20,8 @@
20
20
  export declare const FX_DATA_ID = "__FX_DATA__";
21
21
  /**
22
22
  * Escape a JSON string for safe embedding inside a `<script>` element.
23
- * `<`/`>` can't form `</script>`, `<!--` or `-->`; `&` no HTML-entity surprises;
24
- * U+2028/U+2029 JS line terminators that would break an inline-script read.
23
+ * `<`/`>` -> can't form `</script>`, `<!--` or `-->`; `&` -> no HTML-entity surprises;
24
+ * U+2028/U+2029 -> JS line terminators that would break an inline-script read.
25
25
  * JSON.parse decodes every `\uXXXX` back to the original character.
26
26
  */
27
27
  export declare function escapeFxJson(json: string): string;
@@ -1,15 +1,15 @@
1
1
  /**
2
- * The SSR data transport (`__FX_DATA__`) emission escaping + client reader.
2
+ * The SSR data transport (`__FX_DATA__`): emission escaping + client reader.
3
3
  *
4
4
  * The server collects resolved resource values + seeds (i18n locale, isomorphic state) and
5
5
  * embeds them in the page so the client hydrates without refetching. SECURITY MODEL:
6
6
  *
7
- * - It is NON-SECRET BY DESIGN it's in the page, readable by the user. Encrypting it buys
7
+ * - It is NON-SECRET BY DESIGN, it's in the page, readable by the user. Encrypting it buys
8
8
  * nothing (the client would need the key). Keep server-only fields OUT via setDataRedactor;
9
9
  * fetch truly sensitive data through a `"use server"` function instead. Don't obfuscate.
10
10
  *
11
11
  * - Emitted as a NON-EXECUTABLE `<script type="application/json">`, read via `JSON.parse` of
12
- * its `textContent`. So (a) a value can never execute as JS, and (b) it's CSP-friendly
12
+ * its `textContent`. So (a) a value can never execute as JS, and (b) it's CSP-friendly:
13
13
  * it works under a strict `script-src` that forbids inline executable scripts.
14
14
  *
15
15
  * - The JSON is escaped with the standard SSR-JSON set (`<`, `>`, `&`, U+2028, U+2029) so no
@@ -20,8 +20,8 @@
20
20
  export const FX_DATA_ID = '__FX_DATA__';
21
21
  /**
22
22
  * Escape a JSON string for safe embedding inside a `<script>` element.
23
- * `<`/`>` can't form `</script>`, `<!--` or `-->`; `&` no HTML-entity surprises;
24
- * U+2028/U+2029 JS line terminators that would break an inline-script read.
23
+ * `<`/`>` -> can't form `</script>`, `<!--` or `-->`; `&` -> no HTML-entity surprises;
24
+ * U+2028/U+2029 -> JS line terminators that would break an inline-script read.
25
25
  * JSON.parse decodes every `\uXXXX` back to the original character.
26
26
  */
27
27
  export function escapeFxJson(json) {
@@ -52,7 +52,7 @@ export function getServerData() {
52
52
  parsed = JSON.parse(text);
53
53
  }
54
54
  catch {
55
- parsed = null; // malformed transport behave as if not server-rendered (refetch)
55
+ parsed = null; // malformed transport -> behave as if not server-rendered (refetch)
56
56
  }
57
57
  }
58
58
  }
@@ -1 +1,32 @@
1
- var o="__FX_DATA__";function u(e){return e.replace(/[<>&\u2028\u2029]/g,n=>"\\u"+n.charCodeAt(0).toString(16).padStart(4,"0"))}var t;function i(){t=void 0}function c(){let e=globalThis.__FX_DATA__;if(e)return e;if(t!==void 0)return t;let n=null;if(typeof document<"u"){let r=document.getElementById(o)?.textContent;if(r)try{n=JSON.parse(r)}catch{n=null}}return t=n}export{o as FX_DATA_ID,u as escapeFxJson,c as getServerData,i as resetServerDataCache};
1
+ // src/lib/dom/server/fx-data.ts
2
+ var FX_DATA_ID = "__FX_DATA__";
3
+ function escapeFxJson(json) {
4
+ return json.replace(/[<>&\u2028\u2029]/g, (c) => "\\u" + c.charCodeAt(0).toString(16).padStart(4, "0"));
5
+ }
6
+ var _scriptCache;
7
+ function resetServerDataCache() {
8
+ _scriptCache = void 0;
9
+ }
10
+ function getServerData() {
11
+ const g = globalThis.__FX_DATA__;
12
+ if (g) return g;
13
+ if (_scriptCache !== void 0) return _scriptCache;
14
+ let parsed = null;
15
+ if (typeof document !== "undefined") {
16
+ const text = document.getElementById(FX_DATA_ID)?.textContent;
17
+ if (text) {
18
+ try {
19
+ parsed = JSON.parse(text);
20
+ } catch {
21
+ parsed = null;
22
+ }
23
+ }
24
+ }
25
+ return _scriptCache = parsed;
26
+ }
27
+ export {
28
+ FX_DATA_ID,
29
+ escapeFxJson,
30
+ getServerData,
31
+ resetServerDataCache
32
+ };
@@ -1 +1,66 @@
1
- "use strict";var i=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var c=(e,r)=>{for(var t in r)i(e,t,{get:r[t],enumerable:!0})},y=(e,r,t,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of s(r))!f.call(e,n)&&n!==t&&i(e,n,{get:()=>r[n],enumerable:!(a=d(r,n))||a.enumerable});return e};var m=e=>y(i({},"__esModule",{value:!0}),e);var g={};c(g,{SERVER_NODE:()=>o,getServerNodes:()=>x,isDomElement:()=>N,isDomNode:()=>S,isDomText:()=>E,isServer:()=>l,registerServerNodes:()=>v,setServerMode:()=>p});module.exports=m(g);var l=typeof document>"u";function p(e){l=e}var o=Symbol.for("fluixi.server-node"),u=null;function v(e){u=e}function x(){if(!u)throw new Error("[fluixi] server render ran before @fluixi/dom/server loaded");return u}function S(e){return e!=null&&e[o]===!0?!0:typeof Node<"u"&&e instanceof Node}function N(e){return e!=null&&e[o]===!0?e.nodeType===1:typeof Element<"u"&&e instanceof Element}function E(e){return e!=null&&e[o]===!0?e.nodeType===3:typeof Text<"u"&&e instanceof Text}
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/dom/server/host.ts
21
+ var host_exports = {};
22
+ __export(host_exports, {
23
+ SERVER_NODE: () => SERVER_NODE,
24
+ getServerNodes: () => getServerNodes,
25
+ isDomElement: () => isDomElement,
26
+ isDomNode: () => isDomNode,
27
+ isDomText: () => isDomText,
28
+ isServer: () => isServer,
29
+ registerServerNodes: () => registerServerNodes,
30
+ setServerMode: () => setServerMode
31
+ });
32
+ module.exports = __toCommonJS(host_exports);
33
+ var SERVER_NODE = /* @__PURE__ */ Symbol.for("fluixi.server-node");
34
+ var STATE = /* @__PURE__ */ Symbol.for("fluixi.dom.server-host");
35
+ var realm = globalThis;
36
+ var state = realm[STATE] ??= {
37
+ server: typeof document === "undefined",
38
+ nodes: null
39
+ };
40
+ function isServer() {
41
+ return state.server;
42
+ }
43
+ function setServerMode(on) {
44
+ state.server = on;
45
+ }
46
+ function registerServerNodes(factory) {
47
+ state.nodes = factory;
48
+ }
49
+ function getServerNodes() {
50
+ if (!state.nodes) {
51
+ throw new Error("[fluixi] server render ran before @fluixi/dom/server loaded");
52
+ }
53
+ return state.nodes;
54
+ }
55
+ function isDomNode(x) {
56
+ if (x != null && x[SERVER_NODE] === true) return true;
57
+ return typeof Node !== "undefined" && x instanceof Node;
58
+ }
59
+ function isDomElement(x) {
60
+ if (x != null && x[SERVER_NODE] === true) return x.nodeType === 1;
61
+ return typeof Element !== "undefined" && x instanceof Element;
62
+ }
63
+ function isDomText(x) {
64
+ if (x != null && x[SERVER_NODE] === true) return x.nodeType === 3;
65
+ return typeof Text !== "undefined" && x instanceof Text;
66
+ }
@@ -1,6 +1,18 @@
1
- export declare let isServer: boolean;
2
- export declare function setServerMode(on: boolean): void;
3
1
  export declare const SERVER_NODE: unique symbol;
2
+ /**
3
+ * Whether nodes should be built as strings rather than DOM.
4
+ *
5
+ * A function rather than a live binding: a second copy of this module would keep its own
6
+ * binding, and the two would disagree for the whole of a render.
7
+ */
8
+ export declare function isServer(): boolean;
9
+ /**
10
+ * Turn server mode on or off for this realm.
11
+ *
12
+ * `renderToString` owns this and restores the previous value, so it is rarely called
13
+ * directly. A test that needs to exercise a server path is the exception.
14
+ */
15
+ export declare function setServerMode(on: boolean): void;
4
16
  export interface ServerNodeFactory {
5
17
  createElement(tag: string, isSVG: boolean): any;
6
18
  createText(value: string): any;
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../../src/lib/dom/server/host.ts"],"names":[],"mappings":"AAKA,eAAO,IAAI,QAAQ,SAAkC,CAAC;AACtD,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAE/C;AAID,eAAO,MAAM,WAAW,EAAE,OAAO,MAAyC,CAAC;AAE3E,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC;IAChD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;IAC/B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;IAClC,0DAA0D;IAC1D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;IAC7B,gFAAgF;IAChF,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC;CAClD;AAID,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAEpE;AAED,wBAAgB,cAAc,IAAI,iBAAiB,CAKlD;AAID,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,CAG3C;AACD,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,OAAO,CAGjD;AACD,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,CAG3C"}
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../../src/lib/dom/server/host.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,EAAE,OAAO,MAAyC,CAAC;AAuB3E;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAE/C;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC;IAChD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;IAC/B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;IAClC,0DAA0D;IAC1D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;IAC7B,gFAAgF;IAChF,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC;CAClD;AAID,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAEpE;AAED,wBAAgB,cAAc,IAAI,iBAAiB,CAKlD;AAID,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,CAG3C;AACD,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,OAAO,CAGjD;AACD,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,CAG3C"}
@@ -1,23 +1,51 @@
1
1
  // The server seam the runtime imports from. Deliberately class-free so the
2
- // ServerNode classes in ./nodes.ts stay out of client bundles they get pulled
2
+ // ServerNode classes in ./nodes.ts stay out of client bundles, they get pulled
3
3
  // in (and registered) only when @fluixi/dom/server loads.
4
- // Live binding; renderToString and jsdom tests flip it via setServerMode.
5
- export let isServer = typeof document === 'undefined';
6
- export function setServerMode(on) {
7
- isServer = on;
8
- }
9
4
  // Stamped on every server node so the guards below can spot one without an
10
5
  // instanceof against the (unbundled) classes.
11
6
  export const SERVER_NODE = Symbol.for('fluixi.server-node');
12
- let _nodes = null;
7
+ // The mode and the node factory hang off the realm, not off this module.
8
+ //
9
+ // This file can exist twice. Each dist entry is bundled on its own, so `index.mjs` and
10
+ // `lib/dom/server-renderer.mjs` both carry a copy, and a bundler pulling in `@fluixi/dom`
11
+ // and `@fluixi/dom/server` gets two. With the flag as a module variable, renderToString
12
+ // flipped one and createNativeElement read the other, so a string render built real DOM
13
+ // and the serializer walked a NamedNodeMap expecting a Map. It only showed in a build:
14
+ // a dev server resolves both specifiers to the same source file.
15
+ const STATE = Symbol.for('fluixi.dom.server-host');
16
+ const realm = globalThis;
17
+ const state = (realm[STATE] ??= {
18
+ server: typeof document === 'undefined',
19
+ nodes: null,
20
+ });
21
+ /**
22
+ * Whether nodes should be built as strings rather than DOM.
23
+ *
24
+ * A function rather than a live binding: a second copy of this module would keep its own
25
+ * binding, and the two would disagree for the whole of a render.
26
+ */
27
+ export function isServer() {
28
+ return state.server;
29
+ }
30
+ /**
31
+ * Turn server mode on or off for this realm.
32
+ *
33
+ * `renderToString` owns this and restores the previous value, so it is rarely called
34
+ * directly. A test that needs to exercise a server path is the exception.
35
+ */
36
+ export function setServerMode(on) {
37
+ state.server = on;
38
+ }
39
+ // Shared for the same reason as the mode: the subpath registers the factory and the main
40
+ // entry is the one that asks for it, and those can be two copies of this file.
13
41
  export function registerServerNodes(factory) {
14
- _nodes = factory;
42
+ state.nodes = factory;
15
43
  }
16
44
  export function getServerNodes() {
17
- if (!_nodes) {
45
+ if (!state.nodes) {
18
46
  throw new Error('[fluixi] server render ran before @fluixi/dom/server loaded');
19
47
  }
20
- return _nodes;
48
+ return state.nodes;
21
49
  }
22
50
  // Brand check for server nodes, instanceof for real DOM. On the client the brand
23
51
  // branch just misses.
@@ -1 +1,45 @@
1
- var t=typeof document>"u";function o(e){t=e}var n=Symbol.for("fluixi.server-node"),r=null;function i(e){r=e}function u(){if(!r)throw new Error("[fluixi] server render ran before @fluixi/dom/server loaded");return r}function a(e){return e!=null&&e[n]===!0?!0:typeof Node<"u"&&e instanceof Node}function l(e){return e!=null&&e[n]===!0?e.nodeType===1:typeof Element<"u"&&e instanceof Element}function d(e){return e!=null&&e[n]===!0?e.nodeType===3:typeof Text<"u"&&e instanceof Text}export{n as SERVER_NODE,u as getServerNodes,l as isDomElement,a as isDomNode,d as isDomText,t as isServer,i as registerServerNodes,o as setServerMode};
1
+ // src/lib/dom/server/host.ts
2
+ var SERVER_NODE = /* @__PURE__ */ Symbol.for("fluixi.server-node");
3
+ var STATE = /* @__PURE__ */ Symbol.for("fluixi.dom.server-host");
4
+ var realm = globalThis;
5
+ var state = realm[STATE] ??= {
6
+ server: typeof document === "undefined",
7
+ nodes: null
8
+ };
9
+ function isServer() {
10
+ return state.server;
11
+ }
12
+ function setServerMode(on) {
13
+ state.server = on;
14
+ }
15
+ function registerServerNodes(factory) {
16
+ state.nodes = factory;
17
+ }
18
+ function getServerNodes() {
19
+ if (!state.nodes) {
20
+ throw new Error("[fluixi] server render ran before @fluixi/dom/server loaded");
21
+ }
22
+ return state.nodes;
23
+ }
24
+ function isDomNode(x) {
25
+ if (x != null && x[SERVER_NODE] === true) return true;
26
+ return typeof Node !== "undefined" && x instanceof Node;
27
+ }
28
+ function isDomElement(x) {
29
+ if (x != null && x[SERVER_NODE] === true) return x.nodeType === 1;
30
+ return typeof Element !== "undefined" && x instanceof Element;
31
+ }
32
+ function isDomText(x) {
33
+ if (x != null && x[SERVER_NODE] === true) return x.nodeType === 3;
34
+ return typeof Text !== "undefined" && x instanceof Text;
35
+ }
36
+ export {
37
+ SERVER_NODE,
38
+ getServerNodes,
39
+ isDomElement,
40
+ isDomNode,
41
+ isDomText,
42
+ isServer,
43
+ registerServerNodes,
44
+ setServerMode
45
+ };