mates-fullstack 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +311 -0
- package/dist/arctic-auth.d.ts +101 -0
- package/dist/arctic-auth.d.ts.map +1 -0
- package/dist/arctic-auth.js +538 -0
- package/dist/arctic-auth.js.map +1 -0
- package/dist/asset-manifest.d.ts +14 -0
- package/dist/asset-manifest.d.ts.map +1 -0
- package/dist/asset-manifest.js +102 -0
- package/dist/asset-manifest.js.map +1 -0
- package/dist/browser.d.ts +18 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +25 -0
- package/dist/browser.js.map +1 -0
- package/dist/build-esbuild.d.ts +29 -0
- package/dist/build-esbuild.d.ts.map +1 -0
- package/dist/build-esbuild.js +699 -0
- package/dist/build-esbuild.js.map +1 -0
- package/dist/build-prod.d.ts +126 -0
- package/dist/build-prod.d.ts.map +1 -0
- package/dist/build-prod.js +1014 -0
- package/dist/build-prod.js.map +1 -0
- package/dist/cli-new.d.ts +14 -0
- package/dist/cli-new.d.ts.map +1 -0
- package/dist/cli-new.js +637 -0
- package/dist/cli-new.js.map +1 -0
- package/dist/client.d.ts +43 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +130 -0
- package/dist/client.js.map +1 -0
- package/dist/cors.d.ts +16 -0
- package/dist/cors.d.ts.map +1 -0
- package/dist/cors.js +60 -0
- package/dist/cors.js.map +1 -0
- package/dist/ctx.d.ts +78 -0
- package/dist/ctx.d.ts.map +1 -0
- package/dist/ctx.js +280 -0
- package/dist/ctx.js.map +1 -0
- package/dist/dev-watcher.d.ts +23 -0
- package/dist/dev-watcher.d.ts.map +1 -0
- package/dist/dev-watcher.js +136 -0
- package/dist/dev-watcher.js.map +1 -0
- package/dist/docs-generator.d.ts +69 -0
- package/dist/docs-generator.d.ts.map +1 -0
- package/dist/docs-generator.js +557 -0
- package/dist/docs-generator.js.map +1 -0
- package/dist/docs-page.d.ts +20 -0
- package/dist/docs-page.d.ts.map +1 -0
- package/dist/docs-page.js +1152 -0
- package/dist/docs-page.js.map +1 -0
- package/dist/download.d.ts +78 -0
- package/dist/download.d.ts.map +1 -0
- package/dist/download.js +202 -0
- package/dist/download.js.map +1 -0
- package/dist/env-loader.d.ts +76 -0
- package/dist/env-loader.d.ts.map +1 -0
- package/dist/env-loader.js +213 -0
- package/dist/env-loader.js.map +1 -0
- package/dist/errors.d.ts +146 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +386 -0
- package/dist/errors.js.map +1 -0
- package/dist/head.d.ts +31 -0
- package/dist/head.d.ts.map +1 -0
- package/dist/head.js +245 -0
- package/dist/head.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/internal-prefixes.d.ts +16 -0
- package/dist/internal-prefixes.d.ts.map +1 -0
- package/dist/internal-prefixes.js +16 -0
- package/dist/internal-prefixes.js.map +1 -0
- package/dist/internal.d.ts +25 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +25 -0
- package/dist/internal.js.map +1 -0
- package/dist/jwt.d.ts +166 -0
- package/dist/jwt.d.ts.map +1 -0
- package/dist/jwt.js +261 -0
- package/dist/jwt.js.map +1 -0
- package/dist/log.d.ts +44 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +66 -0
- package/dist/log.js.map +1 -0
- package/dist/logger.d.ts +76 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +138 -0
- package/dist/logger.js.map +1 -0
- package/dist/main-runner.d.ts +59 -0
- package/dist/main-runner.d.ts.map +1 -0
- package/dist/main-runner.js +157 -0
- package/dist/main-runner.js.map +1 -0
- package/dist/mates-auth.d.ts +82 -0
- package/dist/mates-auth.d.ts.map +1 -0
- package/dist/mates-auth.js +323 -0
- package/dist/mates-auth.js.map +1 -0
- package/dist/middleware.d.ts +30 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/middleware.js +67 -0
- package/dist/middleware.js.map +1 -0
- package/dist/project-resolver.d.ts +102 -0
- package/dist/project-resolver.d.ts.map +1 -0
- package/dist/project-resolver.js +271 -0
- package/dist/project-resolver.js.map +1 -0
- package/dist/rate-limit.d.ts +37 -0
- package/dist/rate-limit.d.ts.map +1 -0
- package/dist/rate-limit.js +109 -0
- package/dist/rate-limit.js.map +1 -0
- package/dist/redirect.d.ts +84 -0
- package/dist/redirect.d.ts.map +1 -0
- package/dist/redirect.js +105 -0
- package/dist/redirect.js.map +1 -0
- package/dist/renderer.d.ts +91 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +630 -0
- package/dist/renderer.js.map +1 -0
- package/dist/request-logger.d.ts +12 -0
- package/dist/request-logger.d.ts.map +1 -0
- package/dist/request-logger.js +55 -0
- package/dist/request-logger.js.map +1 -0
- package/dist/rest.d.ts +25 -0
- package/dist/rest.d.ts.map +1 -0
- package/dist/rest.js +93 -0
- package/dist/rest.js.map +1 -0
- package/dist/router.d.ts +71 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +222 -0
- package/dist/router.js.map +1 -0
- package/dist/rpc-registry.d.ts +84 -0
- package/dist/rpc-registry.d.ts.map +1 -0
- package/dist/rpc-registry.js +271 -0
- package/dist/rpc-registry.js.map +1 -0
- package/dist/rpc-runner.d.ts +82 -0
- package/dist/rpc-runner.d.ts.map +1 -0
- package/dist/rpc-runner.js +564 -0
- package/dist/rpc-runner.js.map +1 -0
- package/dist/sanitize.d.ts +61 -0
- package/dist/sanitize.d.ts.map +1 -0
- package/dist/sanitize.js +193 -0
- package/dist/sanitize.js.map +1 -0
- package/dist/security-headers.d.ts +114 -0
- package/dist/security-headers.d.ts.map +1 -0
- package/dist/security-headers.js +121 -0
- package/dist/security-headers.js.map +1 -0
- package/dist/server-fn.d.ts +323 -0
- package/dist/server-fn.d.ts.map +1 -0
- package/dist/server-fn.js +373 -0
- package/dist/server-fn.js.map +1 -0
- package/dist/server-public.d.ts +13 -0
- package/dist/server-public.d.ts.map +1 -0
- package/dist/server-public.js +12 -0
- package/dist/server-public.js.map +1 -0
- package/dist/server-timeout.d.ts +38 -0
- package/dist/server-timeout.d.ts.map +1 -0
- package/dist/server-timeout.js +46 -0
- package/dist/server-timeout.js.map +1 -0
- package/dist/server.d.ts +100 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +1218 -0
- package/dist/server.js.map +1 -0
- package/dist/socket-router.d.ts +153 -0
- package/dist/socket-router.d.ts.map +1 -0
- package/dist/socket-router.js +612 -0
- package/dist/socket-router.js.map +1 -0
- package/dist/sso.d.ts +90 -0
- package/dist/sso.d.ts.map +1 -0
- package/dist/sso.js +261 -0
- package/dist/sso.js.map +1 -0
- package/dist/ssr-context.d.ts +49 -0
- package/dist/ssr-context.d.ts.map +1 -0
- package/dist/ssr-context.js +85 -0
- package/dist/ssr-context.js.map +1 -0
- package/dist/ssr-globals.d.ts +32 -0
- package/dist/ssr-globals.d.ts.map +1 -0
- package/dist/ssr-globals.js +1010 -0
- package/dist/ssr-globals.js.map +1 -0
- package/dist/ssr-template.d.ts +73 -0
- package/dist/ssr-template.d.ts.map +1 -0
- package/dist/ssr-template.js +507 -0
- package/dist/ssr-template.js.map +1 -0
- package/dist/stack-mapper.d.ts +25 -0
- package/dist/stack-mapper.d.ts.map +1 -0
- package/dist/stack-mapper.js +139 -0
- package/dist/stack-mapper.js.map +1 -0
- package/dist/stream.d.ts +89 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +299 -0
- package/dist/stream.js.map +1 -0
- package/dist/upload.d.ts +69 -0
- package/dist/upload.d.ts.map +1 -0
- package/dist/upload.js +110 -0
- package/dist/upload.js.map +1 -0
- package/dist/validate.d.ts +58 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +89 -0
- package/dist/validate.js.map +1 -0
- package/dist/verify-package.d.ts +3 -0
- package/dist/verify-package.d.ts.map +1 -0
- package/dist/verify-package.js +128 -0
- package/dist/verify-package.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssr-globals.js","sourceRoot":"","sources":["../src/ssr-globals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mates-fullstack — ssr-template.ts
|
|
3
|
+
*
|
|
4
|
+
* Serialize a lit-html TemplateResult tree directly to an HTML string.
|
|
5
|
+
*
|
|
6
|
+
* No DOM. No happy-dom. No global patching. Concurrent-safe.
|
|
7
|
+
*
|
|
8
|
+
* How lit-html TemplateResult works (v3.x):
|
|
9
|
+
* html`<p class=${cls}>${text}</p>`
|
|
10
|
+
* → { _$litType$: 1, strings: ["<p class=", ">", "</p>"], values: [cls, text] }
|
|
11
|
+
*
|
|
12
|
+
* strings — the literal template parts (safe HTML from source code)
|
|
13
|
+
* values — the evaluated expressions (must be sanitized)
|
|
14
|
+
*
|
|
15
|
+
* The serializer interleaves strings and values, detecting the binding type
|
|
16
|
+
* (child / attribute / property / boolean / event / element) from the end of
|
|
17
|
+
* each string, and handles each type accordingly.
|
|
18
|
+
*
|
|
19
|
+
* Special handling:
|
|
20
|
+
* - <x-view .view=${fn} .props=${p}> — Mates component embedding.
|
|
21
|
+
* Detected by tag name. Collects .view/.props, runs the component
|
|
22
|
+
* function, serializes the child TemplateResult recursively.
|
|
23
|
+
* - DirectiveResult — instantiated with a mock PartInfo, render() called.
|
|
24
|
+
* - Boolean attributes (?attr) — backtrack and remove if falsy.
|
|
25
|
+
* - Event handlers (@event) — always stripped.
|
|
26
|
+
* - Property bindings (.prop, except .view/.props on x-view) — always stripped.
|
|
27
|
+
* - Element directives (eleHook, portal, etc.) — silently skipped.
|
|
28
|
+
*/
|
|
29
|
+
/** lit-html 3.x TemplateResult shape (verified from source). */
|
|
30
|
+
export interface TemplateResult {
|
|
31
|
+
_$litType$: 1 | 2 | 3;
|
|
32
|
+
strings: readonly string[];
|
|
33
|
+
values: readonly unknown[];
|
|
34
|
+
}
|
|
35
|
+
/** Context passed from renderer to serializer. */
|
|
36
|
+
export interface SsrTemplateCtx {
|
|
37
|
+
/** The mates module (withHost, pathAtom, etc.). */
|
|
38
|
+
mates: any;
|
|
39
|
+
/** Factory for SSR fake hosts (for nested x-view components). */
|
|
40
|
+
makeFakeHost: () => any;
|
|
41
|
+
/**
|
|
42
|
+
* The root component's fake host.
|
|
43
|
+
* When set, child x-view components push their async work
|
|
44
|
+
* (onMount queues, asyncAction promises) into this host so
|
|
45
|
+
* the outer async drain loop can process them.
|
|
46
|
+
*/
|
|
47
|
+
rootHost?: any;
|
|
48
|
+
/**
|
|
49
|
+
* Cache for already-initialized child component template functions.
|
|
50
|
+
* Keyed by a stable identifier derived from the view function reference.
|
|
51
|
+
* Prevents re-running outer functions on re-render iterations.
|
|
52
|
+
* Each SSR request gets its own cache.
|
|
53
|
+
*/
|
|
54
|
+
componentCache?: Map<any, {
|
|
55
|
+
templateFn: () => any;
|
|
56
|
+
host: any;
|
|
57
|
+
}>;
|
|
58
|
+
}
|
|
59
|
+
/** Escape for text content (child nodes). */
|
|
60
|
+
export declare function escapeHtml(str: string): string;
|
|
61
|
+
/** Escape for attribute values (inside quotes). */
|
|
62
|
+
export declare function escapeAttr(str: string): string;
|
|
63
|
+
/**
|
|
64
|
+
* Serialize a lit-html TemplateResult to an HTML string.
|
|
65
|
+
*
|
|
66
|
+
* Pure function — no side effects, no globals modified, concurrent-safe.
|
|
67
|
+
*
|
|
68
|
+
* @param tpl The TemplateResult returned by html`...`
|
|
69
|
+
* @param ctx SSR context with mates module and fake host factory
|
|
70
|
+
* @returns HTML string ready to inject into the page shell
|
|
71
|
+
*/
|
|
72
|
+
export declare function ssrTemplate(tpl: TemplateResult, ctx: SsrTemplateCtx): string;
|
|
73
|
+
//# sourceMappingURL=ssr-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssr-template.d.ts","sourceRoot":"","sources":["../src/ssr-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;CAC5B;AAqBD,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,KAAK,EAAE,GAAG,CAAC;IACX,iEAAiE;IACjE,YAAY,EAAE,MAAM,GAAG,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf;;;;;OAKG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;CACjE;AAiDD,6CAA6C;AAC7C,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO9C;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO9C;AAkFD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,CAY5E"}
|
|
@@ -0,0 +1,507 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mates-fullstack — ssr-template.ts
|
|
3
|
+
*
|
|
4
|
+
* Serialize a lit-html TemplateResult tree directly to an HTML string.
|
|
5
|
+
*
|
|
6
|
+
* No DOM. No happy-dom. No global patching. Concurrent-safe.
|
|
7
|
+
*
|
|
8
|
+
* How lit-html TemplateResult works (v3.x):
|
|
9
|
+
* html`<p class=${cls}>${text}</p>`
|
|
10
|
+
* → { _$litType$: 1, strings: ["<p class=", ">", "</p>"], values: [cls, text] }
|
|
11
|
+
*
|
|
12
|
+
* strings — the literal template parts (safe HTML from source code)
|
|
13
|
+
* values — the evaluated expressions (must be sanitized)
|
|
14
|
+
*
|
|
15
|
+
* The serializer interleaves strings and values, detecting the binding type
|
|
16
|
+
* (child / attribute / property / boolean / event / element) from the end of
|
|
17
|
+
* each string, and handles each type accordingly.
|
|
18
|
+
*
|
|
19
|
+
* Special handling:
|
|
20
|
+
* - <x-view .view=${fn} .props=${p}> — Mates component embedding.
|
|
21
|
+
* Detected by tag name. Collects .view/.props, runs the component
|
|
22
|
+
* function, serializes the child TemplateResult recursively.
|
|
23
|
+
* - DirectiveResult — instantiated with a mock PartInfo, render() called.
|
|
24
|
+
* - Boolean attributes (?attr) — backtrack and remove if falsy.
|
|
25
|
+
* - Event handlers (@event) — always stripped.
|
|
26
|
+
* - Property bindings (.prop, except .view/.props on x-view) — always stripped.
|
|
27
|
+
* - Element directives (eleHook, portal, etc.) — silently skipped.
|
|
28
|
+
*/
|
|
29
|
+
// ─── lit-html symbols ─────────────────────────────────────────────────────────
|
|
30
|
+
// Verified from lit-html.js source: Symbol.for('lit-nothing') and Symbol.for('lit-noChange')
|
|
31
|
+
const LIT_NOTHING = Symbol.for("lit-nothing");
|
|
32
|
+
const LIT_NO_CHANGE = Symbol.for("lit-noChange");
|
|
33
|
+
// PartType constants (from directive.js)
|
|
34
|
+
const PART_TYPE_ATTRIBUTE = 1;
|
|
35
|
+
const PART_TYPE_CHILD = 2;
|
|
36
|
+
// ─── Type guards ──────────────────────────────────────────────────────────────
|
|
37
|
+
function isTemplateResult(v) {
|
|
38
|
+
return (typeof v === "object" &&
|
|
39
|
+
v !== null &&
|
|
40
|
+
"_$litType$" in v &&
|
|
41
|
+
"strings" in v &&
|
|
42
|
+
"values" in v);
|
|
43
|
+
}
|
|
44
|
+
function isDirectiveResult(v) {
|
|
45
|
+
return (typeof v === "object" &&
|
|
46
|
+
v !== null &&
|
|
47
|
+
"_$litDirective$" in v &&
|
|
48
|
+
"values" in v);
|
|
49
|
+
}
|
|
50
|
+
function isNothing(v) {
|
|
51
|
+
return (v === LIT_NOTHING || v === LIT_NO_CHANGE || v === null || v === undefined);
|
|
52
|
+
}
|
|
53
|
+
// ─── HTML escaping ────────────────────────────────────────────────────────────
|
|
54
|
+
/** Escape for text content (child nodes). */
|
|
55
|
+
export function escapeHtml(str) {
|
|
56
|
+
return str
|
|
57
|
+
.replace(/&/g, "&")
|
|
58
|
+
.replace(/</g, "<")
|
|
59
|
+
.replace(/>/g, ">")
|
|
60
|
+
.replace(/"/g, """)
|
|
61
|
+
.replace(/'/g, "'");
|
|
62
|
+
}
|
|
63
|
+
/** Escape for attribute values (inside quotes). */
|
|
64
|
+
export function escapeAttr(str) {
|
|
65
|
+
return str
|
|
66
|
+
.replace(/&/g, "&")
|
|
67
|
+
.replace(/"/g, """)
|
|
68
|
+
.replace(/'/g, "'")
|
|
69
|
+
.replace(/</g, "<")
|
|
70
|
+
.replace(/>/g, ">");
|
|
71
|
+
}
|
|
72
|
+
// ─── Attribute context state machine ─────────────────────────────────────────
|
|
73
|
+
//
|
|
74
|
+
// Determines the binding type for each values[i] by scanning through
|
|
75
|
+
// strings[0..i] and tracking open-tag state.
|
|
76
|
+
//
|
|
77
|
+
// For each string[i], we scan character-by-character to update:
|
|
78
|
+
// inTag: boolean — are we currently between < and > of an open tag?
|
|
79
|
+
// inQuote: string — are we inside a quoted attribute value?
|
|
80
|
+
//
|
|
81
|
+
// After scanning string[i], the state tells us the context for values[i].
|
|
82
|
+
// Within the tag, the end of string[i] reveals the attribute prefix.
|
|
83
|
+
function computePartContexts(strings) {
|
|
84
|
+
const n = strings.length - 1; // number of values
|
|
85
|
+
const contexts = new Array(n);
|
|
86
|
+
let inTag = false;
|
|
87
|
+
let inQuote = ""; // '' | '"' | "'"
|
|
88
|
+
for (let i = 0; i < n; i++) {
|
|
89
|
+
const str = strings[i];
|
|
90
|
+
// Walk through str updating inTag / inQuote state
|
|
91
|
+
for (let j = 0; j < str.length; j++) {
|
|
92
|
+
const ch = str[j];
|
|
93
|
+
if (inQuote) {
|
|
94
|
+
if (ch === inQuote)
|
|
95
|
+
inQuote = "";
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
if (!inTag) {
|
|
99
|
+
if (ch === "<") {
|
|
100
|
+
const next = j + 1 < str.length ? str[j + 1] : "";
|
|
101
|
+
// Only opening tags (not </ closing, <! declaration/comment)
|
|
102
|
+
if (next !== "/" && next !== "!" && next !== "?") {
|
|
103
|
+
inTag = true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
if (ch === ">") {
|
|
109
|
+
inTag = false;
|
|
110
|
+
}
|
|
111
|
+
else if (ch === '"' || ch === "'") {
|
|
112
|
+
inQuote = ch;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// After scanning, determine context for values[i]
|
|
117
|
+
if (!inTag) {
|
|
118
|
+
contexts[i] = "child";
|
|
119
|
+
}
|
|
120
|
+
else if (inQuote) {
|
|
121
|
+
// Expression inside a quoted attribute value (e.g. class="todo-item ${x}")
|
|
122
|
+
// Treat as regular attribute context — the value is between quotes.
|
|
123
|
+
contexts[i] = "attr";
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
// Inside an open tag but NOT inside quotes — inspect the end of the string
|
|
127
|
+
// for an attribute name with prefix.
|
|
128
|
+
const attrMatch = str.match(/(?:^|[\s])([.?@]?)([a-zA-Z_:][\w:.-]*)\s*=\s*(?:"[^"]*"|'[^']*')*\s*$/);
|
|
129
|
+
if (attrMatch) {
|
|
130
|
+
const prefix = attrMatch[1];
|
|
131
|
+
if (prefix === "@")
|
|
132
|
+
contexts[i] = "event";
|
|
133
|
+
else if (prefix === ".")
|
|
134
|
+
contexts[i] = "prop";
|
|
135
|
+
else if (prefix === "?")
|
|
136
|
+
contexts[i] = "bool";
|
|
137
|
+
else
|
|
138
|
+
contexts[i] = "attr";
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
// Inside a tag but no trailing attribute assignment — element directive
|
|
142
|
+
contexts[i] = "element";
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return contexts;
|
|
147
|
+
}
|
|
148
|
+
// ─── Main serializer ──────────────────────────────────────────────────────────
|
|
149
|
+
/**
|
|
150
|
+
* Serialize a lit-html TemplateResult to an HTML string.
|
|
151
|
+
*
|
|
152
|
+
* Pure function — no side effects, no globals modified, concurrent-safe.
|
|
153
|
+
*
|
|
154
|
+
* @param tpl The TemplateResult returned by html`...`
|
|
155
|
+
* @param ctx SSR context with mates module and fake host factory
|
|
156
|
+
* @returns HTML string ready to inject into the page shell
|
|
157
|
+
*/
|
|
158
|
+
export function ssrTemplate(tpl, ctx) {
|
|
159
|
+
if (!isTemplateResult(tpl))
|
|
160
|
+
return "";
|
|
161
|
+
// lit-html uses _$litType$ to distinguish template types:
|
|
162
|
+
// 1 = html, 2 = svg, 3 = mathml
|
|
163
|
+
// During DOM rendering, lit-html wraps svg/mathml content in root elements.
|
|
164
|
+
// We do the same for SSR so the output is valid HTML.
|
|
165
|
+
const litType = tpl._$litType$;
|
|
166
|
+
let out = _serializeTemplate(tpl, ctx);
|
|
167
|
+
if (litType === 2)
|
|
168
|
+
out = `<svg>${out}</svg>`;
|
|
169
|
+
else if (litType === 3)
|
|
170
|
+
out = `<math>${out}</math>`;
|
|
171
|
+
return out;
|
|
172
|
+
}
|
|
173
|
+
function _serializeTemplate(tpl, ctx) {
|
|
174
|
+
const { strings, values } = tpl;
|
|
175
|
+
const n = strings.length - 1; // number of values = strings.length - 1
|
|
176
|
+
if (n === 0) {
|
|
177
|
+
// No expressions — just the static string
|
|
178
|
+
return strings[0] ?? "";
|
|
179
|
+
}
|
|
180
|
+
const contexts = computePartContexts(strings);
|
|
181
|
+
let out = "";
|
|
182
|
+
// x-view collection state
|
|
183
|
+
let inXView = false;
|
|
184
|
+
let xViewFn = null;
|
|
185
|
+
let xViewProps = {};
|
|
186
|
+
for (let i = 0; i <= n; i++) {
|
|
187
|
+
const str = strings[i] ?? "";
|
|
188
|
+
if (inXView) {
|
|
189
|
+
// We're collecting x-view properties — don't emit strings until
|
|
190
|
+
// the open tag closes
|
|
191
|
+
const gtIdx = str.indexOf(">");
|
|
192
|
+
if (gtIdx !== -1) {
|
|
193
|
+
// The x-view open tag is closed — run the component
|
|
194
|
+
inXView = false;
|
|
195
|
+
_serializeXView(xViewFn, xViewProps, ctx, (html) => {
|
|
196
|
+
out += html;
|
|
197
|
+
});
|
|
198
|
+
// Emit content after the x-view open tag close
|
|
199
|
+
// The rest of str after > may be the start of child content
|
|
200
|
+
// or contain </x-view>. Strip the </x-view> if present.
|
|
201
|
+
const afterGt = str.slice(gtIdx + 1);
|
|
202
|
+
const closeTagIdx = afterGt.indexOf("</x-view>");
|
|
203
|
+
if (closeTagIdx !== -1) {
|
|
204
|
+
// Emit whatever comes after </x-view>
|
|
205
|
+
out += afterGt.slice(closeTagIdx + "</x-view>".length);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
out += afterGt;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Still collecting — don't emit anything from this string
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
// Check if this string starts (or contains) an <x-view opening
|
|
215
|
+
const xviewIdx = str.search(/<x-view[\s>]/);
|
|
216
|
+
if (xviewIdx !== -1 && i < n) {
|
|
217
|
+
// Emit everything before <x-view
|
|
218
|
+
out += str.slice(0, xviewIdx);
|
|
219
|
+
// Enter x-view collection mode
|
|
220
|
+
inXView = true;
|
|
221
|
+
xViewFn = null;
|
|
222
|
+
xViewProps = {};
|
|
223
|
+
// Don't emit the rest of the string (it's the tag opening)
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
out += str;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (i >= n)
|
|
230
|
+
break; // no more values
|
|
231
|
+
const value = values[i];
|
|
232
|
+
const partCtx = contexts[i];
|
|
233
|
+
if (inXView) {
|
|
234
|
+
// Collect x-view property values
|
|
235
|
+
if (partCtx === "prop") {
|
|
236
|
+
// Extract property name from the preceding string's tail
|
|
237
|
+
const precedingStr = strings[i] ?? "";
|
|
238
|
+
const propMatch = precedingStr.match(/\.([a-zA-Z][a-zA-Z0-9-]*)\s*=\s*$/);
|
|
239
|
+
if (propMatch) {
|
|
240
|
+
const propName = propMatch[1];
|
|
241
|
+
if (propName === "view")
|
|
242
|
+
xViewFn = value;
|
|
243
|
+
else if (propName === "props")
|
|
244
|
+
xViewProps = value ?? {};
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// Skip non-prop values in x-view collection mode
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
const backtrackFn = (suffix) => {
|
|
251
|
+
// Remove suffix from the end of out.
|
|
252
|
+
// IMPORTANT: must be a separate statement — not inside +=
|
|
253
|
+
// so that out is read AFTER the mutation.
|
|
254
|
+
if (out.endsWith(suffix)) {
|
|
255
|
+
out = out.slice(0, out.length - suffix.length);
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
// Fallback: regex replace
|
|
259
|
+
out = out.replace(new RegExp(suffix.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + "$"), "");
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
// CRITICAL: two separate statements — not out += _serializeValue(...)
|
|
263
|
+
// because += captures the old value of `out` before evaluating the RHS,
|
|
264
|
+
// which means the backtrack mutation would be overwritten.
|
|
265
|
+
const serialized = _serializeValue(value, partCtx, strings[i] ?? "", ctx, backtrackFn);
|
|
266
|
+
out += serialized;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return out;
|
|
270
|
+
}
|
|
271
|
+
// ─── x-view component runner ─────────────────────────────────────────────────
|
|
272
|
+
function _serializeXView(viewFn, props, ctx, emit) {
|
|
273
|
+
if (!viewFn || typeof viewFn !== "function")
|
|
274
|
+
return;
|
|
275
|
+
if (!ctx.mates?.withHost)
|
|
276
|
+
return;
|
|
277
|
+
try {
|
|
278
|
+
// Component caching: prevent re-running the outer function on re-render
|
|
279
|
+
// iterations. The outer function creates atoms, effects, and asyncAction
|
|
280
|
+
// instances — running it again creates NEW instances that lose the data
|
|
281
|
+
// resolved by the previous iteration.
|
|
282
|
+
let templateFn = null;
|
|
283
|
+
let componentHost;
|
|
284
|
+
if (ctx.componentCache?.has(viewFn)) {
|
|
285
|
+
const cached = ctx.componentCache.get(viewFn);
|
|
286
|
+
templateFn = cached.templateFn;
|
|
287
|
+
componentHost = cached.host;
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
const fakeHost = ctx.makeFakeHost();
|
|
291
|
+
templateFn = ctx.mates.withHost(fakeHost, () => viewFn(() => props));
|
|
292
|
+
componentHost = fakeHost;
|
|
293
|
+
if (ctx.componentCache && typeof templateFn === "function") {
|
|
294
|
+
ctx.componentCache.set(viewFn, { templateFn, host: fakeHost });
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
if (typeof templateFn !== "function")
|
|
298
|
+
return;
|
|
299
|
+
const result = templateFn();
|
|
300
|
+
if (!result)
|
|
301
|
+
return;
|
|
302
|
+
if (isTemplateResult(result)) {
|
|
303
|
+
emit(_serializeTemplate(result, ctx));
|
|
304
|
+
}
|
|
305
|
+
// Push child component's async work into the root host
|
|
306
|
+
if (ctx.rootHost && componentHost) {
|
|
307
|
+
if (componentHost._asyncMountQueue?.length) {
|
|
308
|
+
ctx.rootHost._asyncMountQueue.push(...componentHost._asyncMountQueue.splice(0));
|
|
309
|
+
}
|
|
310
|
+
if (componentHost._ssrPromiseQueue?.length) {
|
|
311
|
+
ctx.rootHost._ssrPromiseQueue.push(...componentHost._ssrPromiseQueue.splice(0));
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
catch (err) {
|
|
316
|
+
// Component failed to render — silently emit nothing in production.
|
|
317
|
+
// In dev mode, log the error so the developer knows about the failure.
|
|
318
|
+
if (process.env.NODE_ENV !== "production") {
|
|
319
|
+
const name = typeof viewFn === "function" ? viewFn.name || "Anonymous" : "unknown";
|
|
320
|
+
console.error(`[mates-ssr] Component "${name}" failed during SSR render:`, err);
|
|
321
|
+
}
|
|
322
|
+
// The client will hydrate and render the correct output.
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
// ─── Value serialization ──────────────────────────────────────────────────────
|
|
326
|
+
function _serializeValue(value, partCtx, precedingStr, ctx, backtrack) {
|
|
327
|
+
// ── Always skip ────────────────────────────────────────────────────────────
|
|
328
|
+
// lit's nothing/noChange, JS null/undefined → produce no output.
|
|
329
|
+
if (isNothing(value)) {
|
|
330
|
+
// For boolean/event/prop, remove the attribute prefix from output
|
|
331
|
+
_handleSkippedBinding(partCtx, precedingStr, backtrack);
|
|
332
|
+
return "";
|
|
333
|
+
}
|
|
334
|
+
// ── Event handlers (@event=) ──────────────────────────────────────────────
|
|
335
|
+
if (partCtx === "event") {
|
|
336
|
+
// Remove @eventname= that was already emitted
|
|
337
|
+
const m = precedingStr.match(/(\s+@[\w:.-]+\s*=\s*)$/);
|
|
338
|
+
if (m)
|
|
339
|
+
backtrack(m[1]);
|
|
340
|
+
return "";
|
|
341
|
+
}
|
|
342
|
+
// ── Property bindings (.prop=) ────────────────────────────────────────────
|
|
343
|
+
// (x-view .view/.props are handled before this point in _serializeTemplate)
|
|
344
|
+
if (partCtx === "prop") {
|
|
345
|
+
const m = precedingStr.match(/(\s+\.[\w:.-]+\s*=\s*)$/);
|
|
346
|
+
if (m)
|
|
347
|
+
backtrack(m[1]);
|
|
348
|
+
return "";
|
|
349
|
+
}
|
|
350
|
+
// ── Element directives ────────────────────────────────────────────────────
|
|
351
|
+
// eleHook, lifecycleDirectives, portal, popup, etc. — skip silently.
|
|
352
|
+
if (partCtx === "element") {
|
|
353
|
+
return "";
|
|
354
|
+
}
|
|
355
|
+
// ── Boolean attributes (?attr=) ───────────────────────────────────────────
|
|
356
|
+
if (partCtx === "bool") {
|
|
357
|
+
const m = precedingStr.match(/(\s+\?)([\w:.-]+)(\s*=\s*)$/);
|
|
358
|
+
if (m) {
|
|
359
|
+
// Remove ?attrname= from output
|
|
360
|
+
backtrack(m[1] + m[2] + m[3]);
|
|
361
|
+
if (value) {
|
|
362
|
+
// Re-emit attrname (without ? and =)
|
|
363
|
+
return " " + m[2];
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return "";
|
|
367
|
+
}
|
|
368
|
+
// ── TemplateResult — recurse ──────────────────────────────────────────────
|
|
369
|
+
if (isTemplateResult(value)) {
|
|
370
|
+
if (partCtx === "child")
|
|
371
|
+
return _serializeTemplate(value, ctx);
|
|
372
|
+
// TemplateResult in attribute context — unusual but handle safely
|
|
373
|
+
return escapeAttr(_serializeTemplate(value, ctx));
|
|
374
|
+
}
|
|
375
|
+
// ── Arrays — map each element ─────────────────────────────────────────────
|
|
376
|
+
if (Array.isArray(value)) {
|
|
377
|
+
return value
|
|
378
|
+
.map((item) => {
|
|
379
|
+
if (isNothing(item))
|
|
380
|
+
return "";
|
|
381
|
+
if (isTemplateResult(item))
|
|
382
|
+
return _serializeTemplate(item, ctx);
|
|
383
|
+
if (isDirectiveResult(item))
|
|
384
|
+
return _serializeDirective(item, partCtx, ctx);
|
|
385
|
+
if (item === null || item === undefined)
|
|
386
|
+
return "";
|
|
387
|
+
return partCtx === "child"
|
|
388
|
+
? escapeHtml(String(item))
|
|
389
|
+
: escapeAttr(String(item));
|
|
390
|
+
})
|
|
391
|
+
.join("");
|
|
392
|
+
}
|
|
393
|
+
// ── DirectiveResult — instantiate and call render() ───────────────────────
|
|
394
|
+
if (isDirectiveResult(value)) {
|
|
395
|
+
// Extract attribute name from preceding string so directives that validate
|
|
396
|
+
// their attribute context (styleMap requires style=, classMap requires class=)
|
|
397
|
+
// get the correct name.
|
|
398
|
+
let attrName;
|
|
399
|
+
if (partCtx === "attr") {
|
|
400
|
+
const m = precedingStr.match(/([a-zA-Z_:][-\w:.]*)\s*=\s*$/);
|
|
401
|
+
attrName = m?.[1];
|
|
402
|
+
}
|
|
403
|
+
return _serializeDirective(value, partCtx, ctx, attrName);
|
|
404
|
+
}
|
|
405
|
+
// ── Functions — event handlers not caught by partCtx ─────────────────────
|
|
406
|
+
// In some template patterns, a function may appear in child context.
|
|
407
|
+
// The function is an event handler or callback — skip.
|
|
408
|
+
if (typeof value === "function")
|
|
409
|
+
return "";
|
|
410
|
+
// ── Boolean in child context ──────────────────────────────────────────────
|
|
411
|
+
// `${show && html`...`}` produces false when show is false — render nothing.
|
|
412
|
+
if (typeof value === "boolean")
|
|
413
|
+
return "";
|
|
414
|
+
// ── Promise — drain loop handles data, return empty placeholder ───────────
|
|
415
|
+
if (value &&
|
|
416
|
+
typeof value === "object" &&
|
|
417
|
+
typeof value.then === "function") {
|
|
418
|
+
return "";
|
|
419
|
+
}
|
|
420
|
+
// ── Primitive — escape and emit ───────────────────────────────────────────
|
|
421
|
+
const str = String(value);
|
|
422
|
+
return partCtx === "child" ? escapeHtml(str) : escapeAttr(str);
|
|
423
|
+
}
|
|
424
|
+
/** Strip already-emitted attribute prefix for bindings that produce no output. */
|
|
425
|
+
function _handleSkippedBinding(partCtx, precedingStr, backtrack) {
|
|
426
|
+
if (partCtx === "event") {
|
|
427
|
+
const m = precedingStr.match(/(\s+@[\w:.-]+\s*=\s*)$/);
|
|
428
|
+
if (m)
|
|
429
|
+
backtrack(m[1]);
|
|
430
|
+
}
|
|
431
|
+
else if (partCtx === "prop") {
|
|
432
|
+
const m = precedingStr.match(/(\s+\.[\w:.-]+\s*=\s*)$/);
|
|
433
|
+
if (m)
|
|
434
|
+
backtrack(m[1]);
|
|
435
|
+
}
|
|
436
|
+
else if (partCtx === "bool") {
|
|
437
|
+
const m = precedingStr.match(/(\s+\?[\w:.-]+\s*=\s*)$/);
|
|
438
|
+
if (m)
|
|
439
|
+
backtrack(m[1]);
|
|
440
|
+
}
|
|
441
|
+
else if (partCtx === "attr") {
|
|
442
|
+
// nothing/noChange in a regular attribute: remove the attribute entirely:
|
|
443
|
+
// html`<div class=${nothing}></div>` → <div></div>
|
|
444
|
+
const m = precedingStr.match(/(\s+[a-zA-Z_:][-\w:.]*\s*=\s*)$/);
|
|
445
|
+
if (m)
|
|
446
|
+
backtrack(m[1]);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
// ─── Directive serialization ──────────────────────────────────────────────────
|
|
450
|
+
/** Mock PartInfo used to construct directive instances. */
|
|
451
|
+
const CHILD_PART_INFO = { type: PART_TYPE_CHILD };
|
|
452
|
+
function _makeAttrPartInfo(name) {
|
|
453
|
+
return { type: PART_TYPE_ATTRIBUTE, name, strings: ["", ""] };
|
|
454
|
+
}
|
|
455
|
+
function _serializeDirective(dr, partCtx, ctx, attrName) {
|
|
456
|
+
try {
|
|
457
|
+
const cls = dr._$litDirective$;
|
|
458
|
+
const args = dr.values;
|
|
459
|
+
// Choose PartInfo based on context
|
|
460
|
+
const partInfo = partCtx === "child"
|
|
461
|
+
? CHILD_PART_INFO
|
|
462
|
+
: _makeAttrPartInfo(attrName ?? "class");
|
|
463
|
+
const instance = new cls(partInfo);
|
|
464
|
+
const result = instance.render(...args);
|
|
465
|
+
if (isNothing(result))
|
|
466
|
+
return "";
|
|
467
|
+
if (result === LIT_NO_CHANGE)
|
|
468
|
+
return "";
|
|
469
|
+
// unsafeHTML returns a TemplateResult with one string and no values —
|
|
470
|
+
// the single string IS the raw HTML. ssrTemplate emits it unescaped.
|
|
471
|
+
if (isTemplateResult(result)) {
|
|
472
|
+
return _serializeTemplate(result, ctx);
|
|
473
|
+
}
|
|
474
|
+
// classMap returns " class1 class2 " — trim and emit
|
|
475
|
+
// styleMap returns "color:red;display:flex;" — emit as-is
|
|
476
|
+
if (typeof result === "string") {
|
|
477
|
+
if (partCtx === "child")
|
|
478
|
+
return escapeHtml(result);
|
|
479
|
+
return result; // attribute values from directives are already formatted
|
|
480
|
+
}
|
|
481
|
+
// repeat() returns an array of TemplateResults
|
|
482
|
+
if (Array.isArray(result)) {
|
|
483
|
+
return result
|
|
484
|
+
.map((item) => {
|
|
485
|
+
if (isNothing(item))
|
|
486
|
+
return "";
|
|
487
|
+
if (isTemplateResult(item))
|
|
488
|
+
return _serializeTemplate(item, ctx);
|
|
489
|
+
return partCtx === "child"
|
|
490
|
+
? escapeHtml(String(item))
|
|
491
|
+
: escapeAttr(String(item));
|
|
492
|
+
})
|
|
493
|
+
.join("");
|
|
494
|
+
}
|
|
495
|
+
if (typeof result === "boolean")
|
|
496
|
+
return "";
|
|
497
|
+
return partCtx === "child"
|
|
498
|
+
? escapeHtml(String(result))
|
|
499
|
+
: escapeAttr(String(result));
|
|
500
|
+
}
|
|
501
|
+
catch {
|
|
502
|
+
// Directive failed (e.g. needs real DOM, wrong PartType, etc.) — skip.
|
|
503
|
+
// Never crash SSR due to a directive.
|
|
504
|
+
return "";
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
//# sourceMappingURL=ssr-template.js.map
|