@vmz/core 0.2.4 → 0.2.6
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/browser/client-nav.d.ts +5 -55
- package/dist/browser/client-nav.js +5 -769
- package/dist/browser/diagnostics/precision-trace.d.ts +47 -0
- package/dist/browser/diagnostics/precision-trace.js +86 -0
- package/dist/browser/dom/attributes.d.ts +5 -0
- package/dist/browser/dom/attributes.js +102 -0
- package/dist/browser/dom/component.d.ts +11 -0
- package/dist/browser/dom/component.js +255 -0
- package/dist/browser/dom/direct-api.d.ts +66 -0
- package/dist/browser/dom/direct-api.js +446 -0
- package/dist/browser/dom/lifecycle.d.ts +9 -0
- package/dist/browser/dom/lifecycle.js +161 -0
- package/dist/browser/dom/registry.d.ts +5 -0
- package/dist/browser/dom/registry.js +16 -0
- package/dist/browser/dom-core.d.ts +51 -249
- package/dist/browser/dom-core.js +51 -2521
- package/dist/browser/navigation/client-navigation.d.ts +44 -0
- package/dist/browser/navigation/client-navigation.js +277 -0
- package/dist/browser/navigation/extract-html.d.ts +1 -0
- package/dist/browser/navigation/extract-html.js +5 -0
- package/dist/browser/navigation/layout-retain.d.ts +3 -0
- package/dist/browser/navigation/layout-retain.js +34 -0
- package/dist/browser/navigation/locale-transition.d.ts +24 -0
- package/dist/browser/navigation/locale-transition.js +323 -0
- package/dist/browser/navigation/scroll-focus.d.ts +14 -0
- package/dist/browser/navigation/scroll-focus.js +87 -0
- package/dist/browser/reactivity/patch-scheduler.d.ts +12 -0
- package/dist/browser/reactivity/patch-scheduler.js +720 -0
- package/dist/browser/reactivity/write-barrier.d.ts +16 -0
- package/dist/browser/reactivity/write-barrier.js +546 -0
- package/dist/browser/resume/adopt.d.ts +1 -0
- package/dist/browser/resume/adopt.js +168 -0
- package/dist/browser/resume/hydrate.d.ts +4 -0
- package/dist/browser/resume/hydrate.js +107 -0
- package/dist/browser/resume/resume.d.ts +3 -0
- package/dist/browser/resume/resume.js +102 -0
- package/dist/faces/dom.browser.d.ts +2 -1
- package/dist/faces/dom.browser.js +2 -1
- package/dist/host/{deployment-registry.d.ts → deployment/deployment-registry.d.ts} +1 -1
- package/dist/host/{deployment-registry.js → deployment/deployment-registry.js} +1 -1
- package/dist/host/list-client-components.d.ts +2 -2
- package/dist/host/list-client-components.js +4 -4
- package/dist/host/{render-host.d.ts → render/render-host.d.ts} +2 -2
- package/dist/host/{render-host.js → render/render-host.js} +1 -1
- package/dist/host/{route-layout-chain.js → render/route-layout-chain.js} +1 -1
- package/dist/host/serve/bootstrap.d.ts +1 -0
- package/dist/host/serve/bootstrap.js +25 -0
- package/dist/host/serve/constants.d.ts +6 -0
- package/dist/host/serve/constants.js +6 -0
- package/dist/host/serve/hmr-dev.d.ts +34 -0
- package/dist/host/serve/hmr-dev.js +294 -0
- package/dist/host/serve/http.d.ts +1 -0
- package/dist/host/serve/http.js +124 -0
- package/dist/host/serve/locale-theme.d.ts +19 -0
- package/dist/host/serve/locale-theme.js +169 -0
- package/dist/host/serve/page-catalog.d.ts +14 -0
- package/dist/host/serve/page-catalog.js +105 -0
- package/dist/host/serve/page-render.d.ts +17 -0
- package/dist/host/serve/page-render.js +419 -0
- package/dist/host/serve/paths.d.ts +3 -0
- package/dist/host/serve/paths.js +74 -0
- package/dist/host/serve/route-catalog.d.ts +6 -0
- package/dist/host/serve/route-catalog.js +108 -0
- package/dist/host/serve/state.d.ts +30 -0
- package/dist/host/serve/state.js +36 -0
- package/dist/host/serve-host.d.ts +0 -17
- package/dist/host/serve-host.mjs +4 -1420
- package/dist/ssr/document.d.ts +2 -0
- package/dist/ssr/document.js +71 -0
- package/dist/ssr/dom-ssr.d.ts +10 -47
- package/dist/ssr/dom-ssr.js +10 -1284
- package/dist/ssr/render.d.ts +2 -0
- package/dist/ssr/render.js +78 -0
- package/dist/ssr/serialize.d.ts +3 -0
- package/dist/ssr/serialize.js +678 -0
- package/package.json +11 -11
- /package/dist/host/{route-layout-chain.d.ts → render/route-layout-chain.d.ts} +0 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export let _ssrDocumentLastError = null;
|
|
2
|
+
export function ensureSsrDocument() {
|
|
3
|
+
if (typeof globalThis.document !== 'undefined' && typeof globalThis.document.createElement === 'function') {
|
|
4
|
+
return true;
|
|
5
|
+
}
|
|
6
|
+
const proc = globalThis.process;
|
|
7
|
+
if (!proc?.versions?.node) {
|
|
8
|
+
_ssrDocumentLastError = new Error('vmz:dom SSR document: not running on Node');
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
// Node 20.16+ / 22.3+: sync builtin load without a static `node:` import.
|
|
13
|
+
const mod = typeof proc.getBuiltinModule === 'function' ? proc.getBuiltinModule('module') : null;
|
|
14
|
+
if (!mod?.createRequire) {
|
|
15
|
+
_ssrDocumentLastError = new Error('vmz:dom SSR document: createRequire unavailable');
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
const pathMod = typeof proc.getBuiltinModule === 'function' ? proc.getBuiltinModule('path') : null;
|
|
19
|
+
const createRequire = mod.createRequire;
|
|
20
|
+
const bases = [];
|
|
21
|
+
bases.push(import.meta.url);
|
|
22
|
+
if (pathMod && typeof proc.cwd === 'function') {
|
|
23
|
+
bases.push(pathMod.join(proc.cwd(), 'package.json'));
|
|
24
|
+
}
|
|
25
|
+
const errors = [];
|
|
26
|
+
let parseHTML = null;
|
|
27
|
+
for (const base of bases) {
|
|
28
|
+
let req;
|
|
29
|
+
try {
|
|
30
|
+
req = createRequire(base);
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
errors.push(`${base}: createRequire failed: ${e && e.message ? e.message : e}`);
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
parseHTML = req('linkedom').parseHTML;
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
errors.push(`${base} ??linkedom: ${e && e.message ? e.message : e}`);
|
|
42
|
+
}
|
|
43
|
+
// Walk into @vmz/core's dependency tree (linkedom is declared there).
|
|
44
|
+
for (const coreId of ['@vmz/core', '@vmz/core/dom', '@vmz/core/server']) {
|
|
45
|
+
try {
|
|
46
|
+
const coreEntry = req.resolve(coreId);
|
|
47
|
+
parseHTML = createRequire(coreEntry)('linkedom').parseHTML;
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
errors.push(`${base} ??${coreId}/linkedom: ${e && e.message ? e.message : e}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (parseHTML)
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
if (typeof parseHTML !== 'function') {
|
|
58
|
+
const detail = errors.length ? `\n${errors.join('\n')}` : '';
|
|
59
|
+
throw new Error(`linkedom unresolved for SSR document${detail}`);
|
|
60
|
+
}
|
|
61
|
+
const { window, document } = parseHTML('<!DOCTYPE html><html><body></body></html>');
|
|
62
|
+
globalThis.window = window;
|
|
63
|
+
globalThis.document = document;
|
|
64
|
+
_ssrDocumentLastError = null;
|
|
65
|
+
return typeof document.createElement === 'function';
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
_ssrDocumentLastError = err instanceof Error ? err : new Error(String(err));
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
package/dist/ssr/dom-ssr.d.ts
CHANGED
|
@@ -1,47 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
*/
|
|
12
|
-
export declare function renderToStream(Component: any, props?: any, opts?: any): AsyncGenerator<any, void, unknown>;
|
|
13
|
-
/**
|
|
14
|
-
* Live-DOM counterpart: first default `<slot>` owned by this tree, not by a nested
|
|
15
|
-
* `[data-vmz]` component (Button/Link labels, etc.).
|
|
16
|
-
* Re-exported from dom-core (single implementation).
|
|
17
|
-
*/
|
|
18
|
-
export { findOwnedDefaultSlot };
|
|
19
|
-
/**
|
|
20
|
-
* Hydrate/mount a file-route page inside an optional layout chain (outer ??inner).
|
|
21
|
-
* Mirrors SSR `slotHtml` wrapping: each layout's owned default slot becomes the
|
|
22
|
-
* outlet for the next layout or the page. Retains layout instances on `container`
|
|
23
|
-
* so SPA transitions can dispose only the page host.
|
|
24
|
-
*/
|
|
25
|
-
export declare function hydrateRoute(Page: any, container: any, props?: {}, layoutCtors?: any[], opts?: {}): Promise<any>;
|
|
26
|
-
/**
|
|
27
|
-
* SPA same-layout transition: dispose only the page host, keep layout instances.
|
|
28
|
-
* Callers must verify `data-vmz-layout` is unchanged before using this.
|
|
29
|
-
*/
|
|
30
|
-
export declare function hydrateRoutePage(Page: any, container: any, props?: any, opts?: any): Promise<any>;
|
|
31
|
-
/**
|
|
32
|
-
* resume: attach to existing Island DOM without re-running construct structure or onMount.
|
|
33
|
-
* Consumes ResumeEntry product (`data-vmz-resume`) derived from the same Execution Plan.
|
|
34
|
-
*/
|
|
35
|
-
export declare function resume(Component: any, container: any, slice?: any): Promise<any>;
|
|
36
|
-
/**
|
|
37
|
-
* Resume all `[data-vmz-island]` hosts (prefer ResumeEntry / EventEntry over mount).
|
|
38
|
-
* Event strategy islands wait for the DOM event before attach (lazy EventEntry).
|
|
39
|
-
*/
|
|
40
|
-
export declare function resumeIslands(root?: Document): void;
|
|
41
|
-
/**
|
|
42
|
-
* EventEntry attach: only wire `client:event` / `client:event:*` islands.
|
|
43
|
-
* Idle/load/visible ResumeEntries are left alone (static shell can defer framework work).
|
|
44
|
-
*/
|
|
45
|
-
export declare function attachEventEntries(root?: Document): void;
|
|
46
|
-
export declare function hydrate(Component: any, container: any, props?: any, opts?: any): Promise<any>;
|
|
47
|
-
export declare function hydrateIslands(root?: Document): void;
|
|
1
|
+
/** SSR and resume barrel. */
|
|
2
|
+
export { renderToString } from './render.js';
|
|
3
|
+
export { renderToStream } from './render.js';
|
|
4
|
+
export { hydrateRoute } from '../browser/resume/hydrate.js';
|
|
5
|
+
export { hydrateRoutePage } from '../browser/resume/hydrate.js';
|
|
6
|
+
export { hydrate } from '../browser/resume/hydrate.js';
|
|
7
|
+
export { hydrateIslands } from '../browser/resume/hydrate.js';
|
|
8
|
+
export { resume } from '../browser/resume/resume.js';
|
|
9
|
+
export { resumeIslands } from '../browser/resume/resume.js';
|
|
10
|
+
export { attachEventEntries } from '../browser/resume/resume.js';
|