@fluixi/dom 1.0.0-alpha.83 → 1.0.0-alpha.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/dom-client.cjs +1427 -1
- package/dist/cdn/dom-client.d.ts +2 -2
- package/dist/cdn/dom-client.global.js +2 -1
- package/dist/cdn/dom-client.js +3 -3
- package/dist/cdn/dom-client.mjs +1430 -1
- package/dist/cdn/dom.cjs +3127 -1
- package/dist/cdn/dom.d.ts +2 -2
- package/dist/cdn/dom.global.js +2 -1
- package/dist/cdn/dom.js +4 -4
- package/dist/cdn/dom.mjs +3133 -1
- package/dist/index.cjs +3155 -1
- package/dist/index.js +2 -2
- package/dist/index.mjs +3149 -1
- package/dist/lib/component/index.cjs +128 -1
- package/dist/lib/component/index.mjs +105 -1
- package/dist/lib/component/modifiers.cjs +126 -1
- package/dist/lib/component/modifiers.d.ts +12 -0
- package/dist/lib/component/modifiers.d.ts.map +1 -1
- package/dist/lib/component/modifiers.js +12 -84
- package/dist/lib/component/modifiers.mjs +105 -1
- package/dist/lib/dom/delegate.cjs +60 -1
- package/dist/lib/dom/delegate.js +1 -1
- package/dist/lib/dom/delegate.mjs +39 -1
- package/dist/lib/dom/dynamic-element.cjs +949 -1
- package/dist/lib/dom/dynamic-element.d.ts +3 -3
- package/dist/lib/dom/dynamic-element.js +2 -2
- package/dist/lib/dom/dynamic-element.mjs +928 -1
- package/dist/lib/dom/hydration-state.cjs +93 -1
- package/dist/lib/dom/hydration-state.d.ts +1 -1
- package/dist/lib/dom/hydration-state.js +1 -1
- package/dist/lib/dom/hydration-state.mjs +72 -1
- package/dist/lib/dom/hydration.cjs +685 -1
- package/dist/lib/dom/hydration.js +8 -8
- package/dist/lib/dom/hydration.mjs +664 -1
- package/dist/lib/dom/index.cjs +2040 -1
- package/dist/lib/dom/index.js +1 -1
- package/dist/lib/dom/index.mjs +2020 -1
- package/dist/lib/dom/integration.cjs +71 -1
- package/dist/lib/dom/integration.js +3 -3
- package/dist/lib/dom/integration.mjs +51 -1
- package/dist/lib/dom/island.cjs +790 -1
- package/dist/lib/dom/island.d.ts +1 -1
- package/dist/lib/dom/island.js +11 -11
- package/dist/lib/dom/island.mjs +769 -1
- package/dist/lib/dom/runtime.cjs +1432 -1
- package/dist/lib/dom/runtime.d.ts +60 -17
- package/dist/lib/dom/runtime.d.ts.map +1 -1
- package/dist/lib/dom/runtime.js +122 -79
- package/dist/lib/dom/runtime.mjs +1414 -1
- package/dist/lib/dom/server/fx-data.cjs +53 -1
- package/dist/lib/dom/server/fx-data.d.ts +5 -5
- package/dist/lib/dom/server/fx-data.js +6 -6
- package/dist/lib/dom/server/fx-data.mjs +32 -1
- package/dist/lib/dom/server/host.cjs +66 -1
- package/dist/lib/dom/server/host.d.ts +6 -0
- package/dist/lib/dom/server/host.d.ts.map +1 -1
- package/dist/lib/dom/server/host.js +7 -1
- package/dist/lib/dom/server/host.mjs +45 -1
- package/dist/lib/dom/server/index.cjs +759 -1
- package/dist/lib/dom/server/index.d.ts +1 -1
- package/dist/lib/dom/server/index.js +1 -1
- package/dist/lib/dom/server/index.mjs +743 -1
- package/dist/lib/dom/server/nodes.cjs +302 -1
- package/dist/lib/dom/server/nodes.d.ts +2 -2
- package/dist/lib/dom/server/nodes.d.ts.map +1 -1
- package/dist/lib/dom/server/nodes.js +4 -4
- package/dist/lib/dom/server/nodes.mjs +279 -1
- package/dist/lib/dom/server/parse-template.cjs +395 -1
- package/dist/lib/dom/server/parse-template.d.ts +1 -1
- package/dist/lib/dom/server/parse-template.js +4 -4
- package/dist/lib/dom/server/parse-template.mjs +372 -1
- package/dist/lib/dom/server/render.cjs +691 -1
- package/dist/lib/dom/server/render.d.ts +9 -1
- package/dist/lib/dom/server/render.d.ts.map +1 -1
- package/dist/lib/dom/server/render.js +23 -15
- package/dist/lib/dom/server/render.mjs +677 -1
- package/dist/lib/dom/server/request-context.cjs +110 -1
- package/dist/lib/dom/server/request-context.d.ts +29 -9
- package/dist/lib/dom/server/request-context.d.ts.map +1 -1
- package/dist/lib/dom/server/request-context.js +28 -8
- package/dist/lib/dom/server/request-context.mjs +89 -1
- package/dist/lib/dom/server/serialize.cjs +187 -1
- package/dist/lib/dom/server/serialize.js +3 -3
- package/dist/lib/dom/server/serialize.mjs +164 -1
- package/dist/lib/dom/server-renderer.cjs +760 -1
- package/dist/lib/dom/server-renderer.js +1 -1
- package/dist/lib/dom/server-renderer.mjs +745 -1
- package/dist/lib/dom/types.cjs +18 -1
- package/dist/lib/dom/utils.cjs +381 -1
- package/dist/lib/dom/utils.d.ts +1 -88
- package/dist/lib/dom/utils.d.ts.map +1 -1
- package/dist/lib/dom/utils.js +2 -99
- package/dist/lib/dom/utils.mjs +361 -1
- package/dist/lib/dom/versions.cjs +60 -1
- package/dist/lib/dom/versions.d.ts +3 -3
- package/dist/lib/dom/versions.d.ts.map +1 -1
- package/dist/lib/dom/versions.js +17 -5
- package/dist/lib/dom/versions.mjs +37 -1
- package/dist/lib/element/attributes.cjs +19 -1
- package/dist/lib/element/attributes.d.ts +7 -7
- package/dist/lib/element/attributes.js +1 -1
- package/dist/lib/element/attributes.mjs +1 -0
- package/dist/lib/element/index.cjs +19 -1
- package/dist/lib/element/index.mjs +1 -0
- package/dist/lib/element/types.cjs +18 -1
- package/dist/lib/element/types.d.ts +4 -5
- package/dist/lib/element/types.d.ts.map +1 -1
- package/dist/lib/element/types.js +0 -1
- package/dist/lib/flow/class-map.cjs +38 -1
- package/dist/lib/flow/class-map.d.ts +3 -3
- package/dist/lib/flow/class-map.js +2 -2
- package/dist/lib/flow/class-map.mjs +17 -1
- package/dist/lib/flow/client-only.cjs +57 -1
- package/dist/lib/flow/client-only.d.ts +4 -4
- package/dist/lib/flow/client-only.js +3 -3
- package/dist/lib/flow/client-only.mjs +36 -1
- package/dist/lib/flow/dynamic.cjs +53 -1
- package/dist/lib/flow/dynamic.d.ts +2 -2
- package/dist/lib/flow/dynamic.js +3 -3
- package/dist/lib/flow/dynamic.mjs +32 -1
- package/dist/lib/flow/error-boundary.cjs +43 -1
- package/dist/lib/flow/error-boundary.d.ts +2 -2
- package/dist/lib/flow/error-boundary.js +3 -3
- package/dist/lib/flow/error-boundary.mjs +22 -1
- package/dist/lib/flow/for.cjs +66 -1
- package/dist/lib/flow/for.d.ts +9 -9
- package/dist/lib/flow/for.d.ts.map +1 -1
- package/dist/lib/flow/for.js +2 -2
- package/dist/lib/flow/for.mjs +45 -1
- package/dist/lib/flow/index-flow.cjs +67 -1
- package/dist/lib/flow/index-flow.d.ts +5 -5
- package/dist/lib/flow/index-flow.js +4 -4
- package/dist/lib/flow/index-flow.mjs +46 -1
- package/dist/lib/flow/index.cjs +805 -1
- package/dist/lib/flow/index.mjs +792 -1
- package/dist/lib/flow/portal.cjs +538 -1
- package/dist/lib/flow/portal.mjs +519 -1
- package/dist/lib/flow/show.cjs +81 -1
- package/dist/lib/flow/show.d.ts +1 -1
- package/dist/lib/flow/show.d.ts.map +1 -1
- package/dist/lib/flow/show.js +4 -115
- package/dist/lib/flow/show.mjs +67 -1
- package/dist/lib/flow/style-map.cjs +43 -1
- package/dist/lib/flow/style-map.d.ts +3 -3
- package/dist/lib/flow/style-map.js +3 -3
- package/dist/lib/flow/style-map.mjs +22 -1
- package/dist/lib/flow/switch.cjs +91 -1
- package/dist/lib/flow/switch.d.ts +3 -3
- package/dist/lib/flow/switch.d.ts.map +1 -1
- package/dist/lib/flow/switch.js +6 -6
- package/dist/lib/flow/switch.mjs +70 -1
- package/dist/lib/flow/utils.cjs +44 -1
- package/dist/lib/flow/utils.d.ts +1 -1
- package/dist/lib/flow/utils.js +1 -1
- package/dist/lib/flow/utils.mjs +23 -1
- package/dist/lib/html.cjs +32 -1
- package/dist/lib/html.d.ts +6 -6
- package/dist/lib/html.js +5 -5
- package/dist/lib/html.mjs +11 -1
- package/dist/lib/index.cjs +3104 -1
- package/dist/lib/index.d.ts +0 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +2 -3
- package/dist/lib/index.mjs +3097 -1
- package/dist/lib/shared/types.cjs +18 -1
- package/dist/lib/shared/types.d.ts +8 -8
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/version.generated.cjs +26 -1
- package/dist/version.generated.d.ts +1 -1
- package/dist/version.generated.js +2 -2
- package/dist/version.generated.mjs +5 -1
- package/package.json +7 -6
- package/dist/lib/jsx/control-flow/flow.cjs +0 -1
- package/dist/lib/jsx/control-flow/flow.d.ts +0 -2
- package/dist/lib/jsx/control-flow/flow.d.ts.map +0 -1
- package/dist/lib/jsx/control-flow/flow.js +0 -627
- package/dist/lib/jsx/control-flow/flow.mjs +0 -0
- package/dist/lib/jsx/control-flow/for-flow.cjs +0 -1
- package/dist/lib/jsx/control-flow/for-flow.d.ts +0 -2
- package/dist/lib/jsx/control-flow/for-flow.d.ts.map +0 -1
- package/dist/lib/jsx/control-flow/for-flow.js +0 -1
- package/dist/lib/jsx/control-flow/for-flow.mjs +0 -0
|
@@ -1 +1,53 @@
|
|
|
1
|
-
"use strict";
|
|
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__`)
|
|
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
|
|
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
|
-
* `<`/`>`
|
|
24
|
-
* U+2028/U+2029
|
|
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__`)
|
|
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
|
|
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
|
-
* `<`/`>`
|
|
24
|
-
* U+2028/U+2029
|
|
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
|
|
55
|
+
parsed = null; // malformed transport -> behave as if not server-rendered (refetch)
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -1 +1,32 @@
|
|
|
1
|
-
|
|
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";
|
|
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
|
+
}
|
|
@@ -6,6 +6,12 @@ export declare const SERVER_NODE: unique symbol;
|
|
|
6
6
|
* binding, and the two would disagree for the whole of a render.
|
|
7
7
|
*/
|
|
8
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
|
+
*/
|
|
9
15
|
export declare function setServerMode(on: boolean): void;
|
|
10
16
|
export interface ServerNodeFactory {
|
|
11
17
|
createElement(tag: string, isSVG: boolean): any;
|
|
@@ -1 +1 @@
|
|
|
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,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
|
+
{"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,5 +1,5 @@
|
|
|
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
|
|
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
4
|
// Stamped on every server node so the guards below can spot one without an
|
|
5
5
|
// instanceof against the (unbundled) classes.
|
|
@@ -27,6 +27,12 @@ const state = (realm[STATE] ??= {
|
|
|
27
27
|
export function isServer() {
|
|
28
28
|
return state.server;
|
|
29
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
|
+
*/
|
|
30
36
|
export function setServerMode(on) {
|
|
31
37
|
state.server = on;
|
|
32
38
|
}
|
|
@@ -1 +1,45 @@
|
|
|
1
|
-
|
|
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
|
+
};
|