@madojs/mado 0.11.1 → 0.12.0
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/AGENTS.md +102 -25
- package/CHANGELOG.md +158 -1
- package/README.md +135 -172
- package/dist/src/component.d.ts +3 -2
- package/dist/src/component.js +98 -6
- package/dist/src/component.js.map +1 -1
- package/dist/src/css.js +34 -5
- package/dist/src/css.js.map +1 -1
- package/dist/src/head.d.ts +6 -6
- package/dist/src/head.js +6 -6
- package/dist/src/html/parser.d.ts +1 -1
- package/dist/src/html/parser.js +1 -1
- package/dist/src/html/template.js +24 -10
- package/dist/src/html/template.js.map +1 -1
- package/dist/src/index.d.ts +8 -4
- package/dist/src/index.js +13 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/page.d.ts +62 -28
- package/dist/src/page.js +5 -0
- package/dist/src/page.js.map +1 -1
- package/dist/src/resource.js +2 -1
- package/dist/src/resource.js.map +1 -1
- package/dist/src/router/base.d.ts +65 -0
- package/dist/src/router/base.js +168 -0
- package/dist/src/router/base.js.map +1 -0
- package/dist/src/router/manifest.js +75 -31
- package/dist/src/router/manifest.js.map +1 -1
- package/dist/src/router/match.d.ts +16 -2
- package/dist/src/router/match.js +41 -1
- package/dist/src/router/match.js.map +1 -1
- package/dist/src/router/navigation.js +58 -9
- package/dist/src/router/navigation.js.map +1 -1
- package/dist/src/static-runtime.d.ts +81 -0
- package/dist/src/static-runtime.js +209 -0
- package/dist/src/static-runtime.js.map +1 -0
- package/dist/src/vite/index.d.ts +31 -3
- package/dist/src/vite/index.js +49 -18
- package/dist/src/vite/index.js.map +1 -1
- package/docs/README.md +5 -8
- package/docs/architecture/adr/0001-browser-static-snapshots.md +132 -0
- package/docs/en/00-the-mado-way.md +1 -1
- package/docs/en/01-quickstart.md +183 -0
- package/docs/en/10-pages-and-components.md +271 -0
- package/docs/en/11-templates-and-signals.md +211 -0
- package/docs/en/12-routing.md +229 -0
- package/docs/en/13-data.md +225 -0
- package/docs/en/14-forms.md +244 -0
- package/docs/en/15-static-snapshots.md +181 -0
- package/docs/en/{10-app-architecture.md → 16-app-architecture.md} +53 -2
- package/docs/en/{13-deployment.md → 20-deployment.md} +59 -10
- package/docs/en/{14-testing.md → 22-testing.md} +6 -5
- package/docs/en/23-cookbook.md +292 -0
- package/docs/en/{18-api-freeze-map.md → 30-api-freeze-map.md} +12 -3
- package/docs/en/{20-v1-stability.md → 32-v1-stability.md} +3 -3
- package/docs/en/40-llm-guide.md +776 -0
- package/docs/en/{06-for-backenders.md → 41-for-backenders.md} +15 -16
- package/docs/en/{05-why-mado.md → 42-why-mado.md} +1 -1
- package/docs/en/README.md +97 -27
- package/docs/recipes/nginx/Containerfile +26 -0
- package/docs/recipes/nginx/nginx.conf +42 -0
- package/llms.txt +246 -211
- package/package.json +17 -10
- package/scripts/bake.mjs +4 -569
- package/scripts/cli/generate.mjs +55 -5
- package/scripts/cli/help.mjs +11 -5
- package/scripts/cli/index.mjs +20 -4
- package/scripts/cli/init.mjs +7 -2
- package/scripts/cli/release.mjs +20 -68
- package/scripts/docs-lint.mjs +170 -0
- package/scripts/package-smoke.mjs +67 -9
- package/scripts/preview.mjs +95 -6
- package/scripts/size-budget.mjs +5 -1
- package/scripts/static/browser.mjs +654 -0
- package/scripts/static/discover.mjs +281 -0
- package/scripts/static/output.mjs +141 -0
- package/scripts/static/serialize.mjs +212 -0
- package/scripts/static/server.mjs +167 -0
- package/scripts/static.mjs +191 -0
- package/starters/default/README.md +57 -55
- package/starters/default/package.json +3 -9
- package/starters/default/src/app.routes.ts +20 -33
- package/starters/default/src/components/feature-card.component.ts +40 -0
- package/starters/default/src/components/live-counter.component.ts +57 -0
- package/starters/default/src/content/guides.ts +55 -0
- package/starters/default/src/main.ts +9 -13
- package/starters/default/src/pages/app.page.ts +41 -0
- package/starters/default/src/pages/guide.page.ts +40 -0
- package/starters/default/src/pages/home.page.ts +49 -0
- package/starters/default/src/pages/not-found.page.ts +18 -0
- package/starters/default/src/styles/document.css +39 -0
- package/starters/default/src/styles/reset.css +37 -0
- package/starters/default/src/styles/tokens.css +30 -0
- package/starters/default/src/styles.d.ts +3 -1
- package/starters/default/src/vite-env.d.ts +1 -1
- package/starters/default/vite.config.ts +14 -1
- package/starters/modular/README.md +142 -0
- package/starters/modular/index.html +13 -0
- package/starters/modular/package.json +30 -0
- package/starters/modular/src/app.routes.ts +39 -0
- package/starters/{default → modular}/src/layouts/app-shell.layout.ts +8 -5
- package/starters/{default → modular}/src/layouts/auth-shell.layout.ts +3 -3
- package/starters/modular/src/main.ts +16 -0
- package/starters/{default → modular}/src/modules/billing/pages/invoices-list.page.ts +3 -3
- package/starters/{default → modular}/src/modules/home/home.page.ts +5 -7
- package/starters/modular/src/modules/home/not-found.page.ts +14 -0
- package/starters/modular/src/styles.d.ts +1 -0
- package/starters/modular/src/vite-env.d.ts +1 -0
- package/starters/modular/tsconfig.json +24 -0
- package/starters/modular/vite.config.ts +131 -0
- package/TODO.md +0 -79
- package/docs/en/01-routing.md +0 -152
- package/docs/en/02-project-layout.md +0 -124
- package/docs/en/03-static-bake.md +0 -249
- package/docs/en/04-ide-setup.md +0 -162
- package/docs/en/07-llm-pitfalls.md +0 -724
- package/docs/en/08-llm-zero-history-test.md +0 -56
- package/docs/en/09-shadow-vs-light-dom.md +0 -174
- package/docs/en/11-layouts.md +0 -113
- package/docs/en/12-auth-and-api.md +0 -124
- package/docs/en/16-bake-cookbook.md +0 -100
- package/docs/en/17-shadow-dom-forms.md +0 -192
- package/docs/fr/00-the-mado-way.md +0 -85
- package/docs/fr/01-routing.md +0 -120
- package/docs/fr/02-project-layout.md +0 -84
- package/docs/fr/03-static-bake.md +0 -289
- package/docs/fr/04-ide-setup.md +0 -162
- package/docs/fr/05-why-mado.md +0 -193
- package/docs/fr/06-for-backenders.md +0 -438
- package/docs/fr/07-llm-pitfalls.md +0 -625
- package/docs/fr/08-llm-zero-history-test.md +0 -38
- package/docs/fr/09-shadow-vs-light-dom.md +0 -65
- package/docs/fr/10-app-architecture.md +0 -138
- package/docs/fr/11-layouts.md +0 -47
- package/docs/fr/12-auth-and-api.md +0 -76
- package/docs/fr/13-deployment.md +0 -57
- package/docs/fr/14-testing.md +0 -41
- package/docs/fr/15-error-handling.md +0 -50
- package/docs/fr/16-bake-cookbook.md +0 -88
- package/docs/fr/17-shadow-dom-forms.md +0 -196
- package/docs/fr/18-api-freeze-map.md +0 -63
- package/docs/fr/19-reactivity-ordering.md +0 -97
- package/docs/fr/20-v1-stability.md +0 -88
- package/docs/fr/README.md +0 -27
- package/docs/ru/00-the-mado-way.md +0 -84
- package/docs/ru/01-routing.md +0 -119
- package/docs/ru/02-project-layout.md +0 -84
- package/docs/ru/03-static-bake.md +0 -250
- package/docs/ru/04-ide-setup.md +0 -144
- package/docs/ru/05-why-mado.md +0 -193
- package/docs/ru/06-for-backenders.md +0 -428
- package/docs/ru/07-llm-pitfalls.md +0 -624
- package/docs/ru/08-llm-zero-history-test.md +0 -57
- package/docs/ru/09-shadow-vs-light-dom.md +0 -63
- package/docs/ru/10-app-architecture.md +0 -152
- package/docs/ru/11-layouts.md +0 -47
- package/docs/ru/12-auth-and-api.md +0 -75
- package/docs/ru/13-deployment.md +0 -66
- package/docs/ru/14-testing.md +0 -50
- package/docs/ru/15-error-handling.md +0 -56
- package/docs/ru/16-bake-cookbook.md +0 -95
- package/docs/ru/17-shadow-dom-forms.md +0 -193
- package/docs/ru/18-api-freeze-map.md +0 -64
- package/docs/ru/19-reactivity-ordering.md +0 -95
- package/docs/ru/20-v1-stability.md +0 -82
- package/docs/ru/README.md +0 -25
- package/docs/uk/00-the-mado-way.md +0 -82
- package/docs/uk/01-routing.md +0 -76
- package/docs/uk/02-project-layout.md +0 -73
- package/docs/uk/03-static-bake.md +0 -48
- package/docs/uk/04-ide-setup.md +0 -26
- package/docs/uk/05-why-mado.md +0 -34
- package/docs/uk/06-for-backenders.md +0 -55
- package/docs/uk/07-llm-pitfalls.md +0 -145
- package/docs/uk/08-llm-zero-history-test.md +0 -34
- package/docs/uk/09-shadow-vs-light-dom.md +0 -58
- package/docs/uk/10-app-architecture.md +0 -97
- package/docs/uk/11-layouts.md +0 -47
- package/docs/uk/12-auth-and-api.md +0 -70
- package/docs/uk/13-deployment.md +0 -40
- package/docs/uk/14-testing.md +0 -34
- package/docs/uk/15-error-handling.md +0 -32
- package/docs/uk/16-bake-cookbook.md +0 -36
- package/docs/uk/17-shadow-dom-forms.md +0 -193
- package/docs/uk/18-api-freeze-map.md +0 -61
- package/docs/uk/19-reactivity-ordering.md +0 -95
- package/docs/uk/20-v1-stability.md +0 -83
- package/docs/uk/README.md +0 -27
- package/starters/default/src/modules/home/not-found.page.ts +0 -11
- /package/docs/en/{15-error-handling.md → 21-error-handling.md} +0 -0
- /package/docs/en/{19-reactivity-ordering.md → 31-reactivity-ordering.md} +0 -0
- /package/starters/{default → modular}/.editorconfig +0 -0
- /package/starters/{default → modular}/eslint.config.mjs +0 -0
- /package/starters/{default → modular}/public/favicon.svg +0 -0
- /package/starters/{default → modular}/src/modules/auth/_contracts/auth-api.types.ts +0 -0
- /package/starters/{default → modular}/src/modules/auth/auth.connector.ts +0 -0
- /package/starters/{default → modular}/src/modules/auth/auth.guard.ts +0 -0
- /package/starters/{default → modular}/src/modules/auth/auth.public.ts +0 -0
- /package/starters/{default → modular}/src/modules/auth/auth.routes.ts +0 -0
- /package/starters/{default → modular}/src/modules/auth/auth.service.ts +0 -0
- /package/starters/{default → modular}/src/modules/auth/auth.types.ts +0 -0
- /package/starters/{default → modular}/src/modules/auth/login.page.ts +0 -0
- /package/starters/{default → modular}/src/modules/billing/_contracts/stripe.types.ts +0 -0
- /package/starters/{default → modular}/src/modules/billing/api/stripe.connector.ts +0 -0
- /package/starters/{default → modular}/src/modules/billing/billing.public.ts +0 -0
- /package/starters/{default → modular}/src/modules/billing/billing.routes.ts +0 -0
- /package/starters/{default → modular}/src/modules/billing/billing.types.ts +0 -0
- /package/starters/{default → modular}/src/modules/billing/components/invoice-status-badge.component.ts +0 -0
- /package/starters/{default → modular}/src/modules/billing/data/invoices.resource.ts +0 -0
- /package/starters/{default → modular}/src/modules/billing/pages/invoice-detail.page.ts +0 -0
- /package/starters/{default → modular}/src/shared/http/http-client.ts +0 -0
- /package/starters/{default → modular}/src/shared/http/http-error.ts +0 -0
- /package/starters/{default → modular}/src/shared/http/interceptors.ts +0 -0
- /package/starters/{default → modular}/src/shared/lib/format-date.ts +0 -0
- /package/starters/{default → modular}/src/shared/styles/content.css +0 -0
- /package/starters/{default → modular}/src/shared/styles/reset.css +0 -0
- /package/starters/{default → modular}/src/shared/styles/shell.css +0 -0
- /package/starters/{default → modular}/src/shared/styles/tokens.css +0 -0
- /package/starters/{default → modular}/src/shared/ui/x-button.component.ts +0 -0
- /package/starters/{default → modular}/src/shared/ui/x-spinner.component.ts +0 -0
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { signal } from "./../signal.js";
|
|
9
9
|
import { html } from "../html/template.js";
|
|
10
10
|
import { compile, matchRoute, } from "./match.js";
|
|
11
|
+
import { appBase, stripBase, withBase } from "./base.js";
|
|
11
12
|
/**
|
|
12
13
|
* Minimal History API router.
|
|
13
14
|
*
|
|
@@ -30,7 +31,10 @@ export function router(routes, options = {}) {
|
|
|
30
31
|
const useFocusManagement = options.focusManagement !== false;
|
|
31
32
|
const compiled = Object.entries(routes).map(([p, h]) => compile(p, h));
|
|
32
33
|
const fallback = compiled.find((r) => r.pattern === "*") ?? defaultFallback();
|
|
33
|
-
|
|
34
|
+
// Route pathname = browser pathname with the active Vite base stripped.
|
|
35
|
+
// The route matcher, route signal and any `path()` consumer always see
|
|
36
|
+
// base-free paths; `withBase()` re-adds it when we touch history.
|
|
37
|
+
const path = signal(stripBase(location.pathname));
|
|
34
38
|
const cleanups = [];
|
|
35
39
|
const scrollPositions = new Map();
|
|
36
40
|
let currentScrollKey = locationKey();
|
|
@@ -55,7 +59,7 @@ export function router(routes, options = {}) {
|
|
|
55
59
|
if (useScrollRestoration)
|
|
56
60
|
saveScroll(scrollPositions, currentScrollKey);
|
|
57
61
|
currentScrollKey = locationKey();
|
|
58
|
-
path.set(location.pathname);
|
|
62
|
+
path.set(stripBase(location.pathname));
|
|
59
63
|
if (useScrollRestoration)
|
|
60
64
|
restoreScroll(scrollPositions, currentScrollKey);
|
|
61
65
|
if (useFocusManagement)
|
|
@@ -87,8 +91,16 @@ export function router(routes, options = {}) {
|
|
|
87
91
|
const url = new URL(a.href, location.href);
|
|
88
92
|
if (url.origin !== location.origin)
|
|
89
93
|
return;
|
|
94
|
+
// Foreign-base links escape SPA navigation entirely so the browser
|
|
95
|
+
// performs a real document load (avoids matching "/other/..." against
|
|
96
|
+
// routes registered under base "/mado/").
|
|
97
|
+
const b = appBase;
|
|
98
|
+
if (b !== "/" && !(url.pathname === b.slice(0, -1) || url.pathname.startsWith(b))) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
90
101
|
e.preventDefault();
|
|
91
|
-
|
|
102
|
+
const routePath = stripBase(url.pathname);
|
|
103
|
+
api.navigate(routePath + url.search + url.hash);
|
|
92
104
|
};
|
|
93
105
|
document.addEventListener("click", onClick);
|
|
94
106
|
cleanups.push(() => document.removeEventListener("click", onClick));
|
|
@@ -109,7 +121,16 @@ export function router(routes, options = {}) {
|
|
|
109
121
|
const url = new URL(a.href, location.href);
|
|
110
122
|
if (url.origin !== location.origin)
|
|
111
123
|
return;
|
|
112
|
-
|
|
124
|
+
// Foreign-base links escape SPA prefetch entirely — the manifest
|
|
125
|
+
// only knows base-free route paths and would never match
|
|
126
|
+
// "/mado/docs". Mirrors the click-interception check above.
|
|
127
|
+
const b = appBase;
|
|
128
|
+
if (b !== "/" && !(url.pathname === b.slice(0, -1) || url.pathname.startsWith(b))) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
// The prefetch hook is fed manifest-shaped paths (no base),
|
|
132
|
+
// matching the route signal and loader registry.
|
|
133
|
+
options.prefetch(stripBase(url.pathname));
|
|
113
134
|
}
|
|
114
135
|
catch {
|
|
115
136
|
/* noop */
|
|
@@ -140,15 +161,18 @@ export function router(routes, options = {}) {
|
|
|
140
161
|
},
|
|
141
162
|
path,
|
|
142
163
|
navigate(to, opts) {
|
|
164
|
+
// `to` is a ROUTE path (no base). Re-add the active base before we
|
|
165
|
+
// touch history so the browser URL has the correct prefix.
|
|
166
|
+
const url = toBrowserUrl(to);
|
|
143
167
|
const apply = () => {
|
|
144
168
|
if (useScrollRestoration)
|
|
145
169
|
saveScroll(scrollPositions, currentScrollKey);
|
|
146
170
|
if (opts?.replace)
|
|
147
|
-
history.replaceState(null, "",
|
|
171
|
+
history.replaceState(null, "", url);
|
|
148
172
|
else
|
|
149
|
-
history.pushState(null, "",
|
|
173
|
+
history.pushState(null, "", url);
|
|
150
174
|
currentScrollKey = locationKey();
|
|
151
|
-
path.set(location.pathname);
|
|
175
|
+
path.set(stripBase(location.pathname));
|
|
152
176
|
// An in-page #hash must scroll to its target even when the pathname is
|
|
153
177
|
// unchanged (signal dedup would otherwise swallow the navigation and
|
|
154
178
|
// leave anchor links dead). (FABLE_REPORT.md finding #9)
|
|
@@ -228,10 +252,11 @@ function defaultFallback() {
|
|
|
228
252
|
export function navigate(to, opts) {
|
|
229
253
|
if (typeof history === "undefined" || typeof window === "undefined")
|
|
230
254
|
return;
|
|
255
|
+
const url = toBrowserUrl(to);
|
|
231
256
|
if (opts?.replace)
|
|
232
|
-
history.replaceState(null, "",
|
|
257
|
+
history.replaceState(null, "", url);
|
|
233
258
|
else
|
|
234
|
-
history.pushState(null, "",
|
|
259
|
+
history.pushState(null, "", url);
|
|
235
260
|
// popstate is NOT dispatched automatically on pushState/replaceState,
|
|
236
261
|
// so we dispatch it manually — all active routers will hear and update.
|
|
237
262
|
window.dispatchEvent(new PopStateEvent("popstate"));
|
|
@@ -244,6 +269,30 @@ export function navigate(to, opts) {
|
|
|
244
269
|
function locationKey() {
|
|
245
270
|
return `${location.pathname}${location.search}${location.hash}`;
|
|
246
271
|
}
|
|
272
|
+
/**
|
|
273
|
+
* Convert a route path + optional query/hash into a full browser URL with
|
|
274
|
+
* the active Vite base re-applied. Pure: no DOM access beyond the
|
|
275
|
+
* resolved `appBase` constant.
|
|
276
|
+
*/
|
|
277
|
+
function toBrowserUrl(to) {
|
|
278
|
+
if (!to)
|
|
279
|
+
return withBase("/");
|
|
280
|
+
let path = to;
|
|
281
|
+
let suffix = "";
|
|
282
|
+
const hashAt = path.indexOf("#");
|
|
283
|
+
if (hashAt >= 0) {
|
|
284
|
+
suffix = path.slice(hashAt) + suffix;
|
|
285
|
+
path = path.slice(0, hashAt);
|
|
286
|
+
}
|
|
287
|
+
const queryAt = path.indexOf("?");
|
|
288
|
+
if (queryAt >= 0) {
|
|
289
|
+
suffix = path.slice(queryAt) + suffix;
|
|
290
|
+
path = path.slice(0, queryAt);
|
|
291
|
+
}
|
|
292
|
+
if (!path)
|
|
293
|
+
path = "/";
|
|
294
|
+
return withBase(path) + suffix;
|
|
295
|
+
}
|
|
247
296
|
function saveScroll(positions, key) {
|
|
248
297
|
const maybeWindow = window;
|
|
249
298
|
positions.set(key, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../src/router/navigation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../src/router/navigation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { JsonValue } from "./page.js";
|
|
2
|
+
export interface StaticDiagnostics {
|
|
3
|
+
routeReady: boolean;
|
|
4
|
+
pending: string[];
|
|
5
|
+
lastRouterState: string | null;
|
|
6
|
+
errors: string[];
|
|
7
|
+
expectedPathname: string | null;
|
|
8
|
+
}
|
|
9
|
+
export interface WhenStableOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Cap on time to wait for the route to call `routeReady()`. Defaults
|
|
12
|
+
* to 15s — long enough to load and render even a slow code-split
|
|
13
|
+
* route, short enough that a deadlocked one fails loudly.
|
|
14
|
+
*/
|
|
15
|
+
routeReadyMs?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Cap on time to wait for tracked resources (initial fetches, lazy
|
|
18
|
+
* imports created before `routeReady()`) to settle once the route is
|
|
19
|
+
* ready. Defaults to 15s.
|
|
20
|
+
*/
|
|
21
|
+
resourcesMs?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Cap on time to wait for `document.fonts.ready`. Web fonts that
|
|
24
|
+
* never resolve must not block the snapshot pipeline indefinitely.
|
|
25
|
+
* Defaults to 5s. We log a diagnostic and proceed on timeout.
|
|
26
|
+
*/
|
|
27
|
+
fontsMs?: number;
|
|
28
|
+
/**
|
|
29
|
+
* Cap on time to wait for two paint frames so async style or layout
|
|
30
|
+
* effects can flush before serialization. Defaults to 1s.
|
|
31
|
+
*/
|
|
32
|
+
paintMs?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface MadoStaticRuntime {
|
|
35
|
+
beginRoute(pathname: string): void;
|
|
36
|
+
routeReady(state?: string): void;
|
|
37
|
+
track<T>(promise: Promise<T>, label: string): Promise<T>;
|
|
38
|
+
whenStable(options?: WhenStableOptions): Promise<void>;
|
|
39
|
+
diagnostics(): StaticDiagnostics;
|
|
40
|
+
setRouterState(state: string): void;
|
|
41
|
+
recordError(error: unknown): void;
|
|
42
|
+
}
|
|
43
|
+
declare global {
|
|
44
|
+
interface Window {
|
|
45
|
+
/**
|
|
46
|
+
* Build-time signal that this document is being rendered by the static
|
|
47
|
+
* snapshot capture harness. Set by Mado runtime when the document
|
|
48
|
+
* carries the `data-mado-static-capture` attribute. CSP-safe: it does
|
|
49
|
+
* NOT come from an inline script.
|
|
50
|
+
*/
|
|
51
|
+
__MADO_STATIC_MODE__?: boolean;
|
|
52
|
+
__MADO_STATIC__?: MadoStaticRuntime;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Consume the build-time seed for the active route exactly once.
|
|
57
|
+
*
|
|
58
|
+
* Lifecycle: discovery encodes the seed into the snapshot as a
|
|
59
|
+
* `<script type="application/json" data-mado-static-data>` element. On the
|
|
60
|
+
* first client boot of a static route the router calls
|
|
61
|
+
* `consumeStaticSeed(pathname)` from a single place.
|
|
62
|
+
*
|
|
63
|
+
* - In production (no capture marker): the script element is removed
|
|
64
|
+
* after parsing so subsequent SPA navigations cannot resurrect a stale
|
|
65
|
+
* seed.
|
|
66
|
+
* - During build-time capture (data-mado-static-capture present): the
|
|
67
|
+
* script element is preserved so the serializer can keep it in the
|
|
68
|
+
* final snapshot HTML — that way the real client boot receives the
|
|
69
|
+
* same seed once again.
|
|
70
|
+
*
|
|
71
|
+
* Returns `undefined` if no seed is present, the JSON is malformed, or the
|
|
72
|
+
* pathname does not match. The router passes the result into both
|
|
73
|
+
* `page.head(params, seed)` and `page.load(params, seed)`.
|
|
74
|
+
*/
|
|
75
|
+
export declare function consumeStaticSeed(pathname: string): JsonValue | undefined;
|
|
76
|
+
export declare function getStaticRuntime(): MadoStaticRuntime | null;
|
|
77
|
+
export declare function trackStatic<T>(promise: Promise<T>, label: string): Promise<T>;
|
|
78
|
+
export declare function beginStaticRoute(pathname: string): void;
|
|
79
|
+
export declare function markStaticRouteReady(state?: string): void;
|
|
80
|
+
export declare function setStaticRouterState(state: string): void;
|
|
81
|
+
export declare function recordStaticError(error: unknown): void;
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { flushSync } from "./signal.js";
|
|
2
|
+
import { stripBase } from "./router/base.js";
|
|
3
|
+
/**
|
|
4
|
+
* Consume the build-time seed for the active route exactly once.
|
|
5
|
+
*
|
|
6
|
+
* Lifecycle: discovery encodes the seed into the snapshot as a
|
|
7
|
+
* `<script type="application/json" data-mado-static-data>` element. On the
|
|
8
|
+
* first client boot of a static route the router calls
|
|
9
|
+
* `consumeStaticSeed(pathname)` from a single place.
|
|
10
|
+
*
|
|
11
|
+
* - In production (no capture marker): the script element is removed
|
|
12
|
+
* after parsing so subsequent SPA navigations cannot resurrect a stale
|
|
13
|
+
* seed.
|
|
14
|
+
* - During build-time capture (data-mado-static-capture present): the
|
|
15
|
+
* script element is preserved so the serializer can keep it in the
|
|
16
|
+
* final snapshot HTML — that way the real client boot receives the
|
|
17
|
+
* same seed once again.
|
|
18
|
+
*
|
|
19
|
+
* Returns `undefined` if no seed is present, the JSON is malformed, or the
|
|
20
|
+
* pathname does not match. The router passes the result into both
|
|
21
|
+
* `page.head(params, seed)` and `page.load(params, seed)`.
|
|
22
|
+
*/
|
|
23
|
+
export function consumeStaticSeed(pathname) {
|
|
24
|
+
if (typeof document === "undefined")
|
|
25
|
+
return undefined;
|
|
26
|
+
const el = document.querySelector('script[type="application/json"][data-mado-static-data]');
|
|
27
|
+
if (!el || el.textContent == null)
|
|
28
|
+
return undefined;
|
|
29
|
+
// The attribute MAY carry the pathname it was emitted for; an empty or
|
|
30
|
+
// missing value means "the only seed in this document", and we accept it
|
|
31
|
+
// for the active route. A non-empty mismatch indicates a stale fragment
|
|
32
|
+
// from a previous route — drop it.
|
|
33
|
+
const elPath = el.getAttribute("data-mado-static-data");
|
|
34
|
+
if (elPath && elPath !== pathname)
|
|
35
|
+
return undefined;
|
|
36
|
+
const preserve = document.documentElement.hasAttribute("data-mado-static-capture");
|
|
37
|
+
try {
|
|
38
|
+
const value = JSON.parse(el.textContent);
|
|
39
|
+
if (!preserve)
|
|
40
|
+
el.remove();
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
if (!preserve)
|
|
45
|
+
el.remove();
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function detectCaptureMode() {
|
|
50
|
+
if (typeof document === "undefined")
|
|
51
|
+
return false;
|
|
52
|
+
return document.documentElement.hasAttribute("data-mado-static-capture");
|
|
53
|
+
}
|
|
54
|
+
export function getStaticRuntime() {
|
|
55
|
+
if (typeof window === "undefined")
|
|
56
|
+
return null;
|
|
57
|
+
if (window.__MADO_STATIC__)
|
|
58
|
+
return window.__MADO_STATIC__;
|
|
59
|
+
const enabled = window.__MADO_STATIC_MODE__ === true || detectCaptureMode();
|
|
60
|
+
if (!enabled)
|
|
61
|
+
return null;
|
|
62
|
+
window.__MADO_STATIC_MODE__ = true;
|
|
63
|
+
window.__MADO_STATIC__ = createStaticRuntime();
|
|
64
|
+
return window.__MADO_STATIC__;
|
|
65
|
+
}
|
|
66
|
+
export function trackStatic(promise, label) {
|
|
67
|
+
return getStaticRuntime()?.track(promise, label) ?? promise;
|
|
68
|
+
}
|
|
69
|
+
export function beginStaticRoute(pathname) {
|
|
70
|
+
getStaticRuntime()?.beginRoute(pathname);
|
|
71
|
+
}
|
|
72
|
+
export function markStaticRouteReady(state = "ready") {
|
|
73
|
+
getStaticRuntime()?.routeReady(state);
|
|
74
|
+
}
|
|
75
|
+
export function setStaticRouterState(state) {
|
|
76
|
+
getStaticRuntime()?.setRouterState(state);
|
|
77
|
+
}
|
|
78
|
+
export function recordStaticError(error) {
|
|
79
|
+
getStaticRuntime()?.recordError(error);
|
|
80
|
+
}
|
|
81
|
+
function createStaticRuntime() {
|
|
82
|
+
let nextId = 1;
|
|
83
|
+
let routeReady = false;
|
|
84
|
+
let lastRouterState = null;
|
|
85
|
+
let expectedPathname = null;
|
|
86
|
+
const pending = new Map();
|
|
87
|
+
const errors = [];
|
|
88
|
+
const diagnostics = () => ({
|
|
89
|
+
routeReady,
|
|
90
|
+
pending: [...pending.values()].sort(),
|
|
91
|
+
lastRouterState,
|
|
92
|
+
errors: [...errors],
|
|
93
|
+
expectedPathname,
|
|
94
|
+
});
|
|
95
|
+
// Both `beginRoute()` callers and the `routeReady()` comparison live on
|
|
96
|
+
// the BASE-FREE pathname (the route key the matcher uses). Strip the
|
|
97
|
+
// active Vite base so capture under any deployment shape compares
|
|
98
|
+
// apples to apples.
|
|
99
|
+
const currentPathname = () => typeof location !== "undefined" ? stripBase(location.pathname) : null;
|
|
100
|
+
const runtime = {
|
|
101
|
+
beginRoute(pathname) {
|
|
102
|
+
expectedPathname = pathname;
|
|
103
|
+
routeReady = false;
|
|
104
|
+
lastRouterState = "begin";
|
|
105
|
+
},
|
|
106
|
+
routeReady(state = "ready") {
|
|
107
|
+
// If the runtime moved to a different pathname (effect-driven redirect,
|
|
108
|
+
// guard verdict), only acknowledge readiness for the active path; the
|
|
109
|
+
// capture harness compares pathname before serialization.
|
|
110
|
+
const here = currentPathname();
|
|
111
|
+
if (expectedPathname != null && here != null && here !== expectedPathname) {
|
|
112
|
+
// Stale completion of an old route; do not mark as ready.
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
routeReady = true;
|
|
116
|
+
lastRouterState = state;
|
|
117
|
+
},
|
|
118
|
+
track(promise, label) {
|
|
119
|
+
const id = nextId++;
|
|
120
|
+
pending.set(id, label);
|
|
121
|
+
return Promise.resolve(promise).finally(() => {
|
|
122
|
+
pending.delete(id);
|
|
123
|
+
});
|
|
124
|
+
},
|
|
125
|
+
async whenStable(options = {}) {
|
|
126
|
+
const routeReadyMs = options.routeReadyMs ?? 15_000;
|
|
127
|
+
const resourcesMs = options.resourcesMs ?? 15_000;
|
|
128
|
+
// 1) Route ready: wait until the router calls `markStaticRouteReady`
|
|
129
|
+
// for the active pathname. Resources, fonts and paint frames are
|
|
130
|
+
// irrelevant until the route itself has committed.
|
|
131
|
+
await waitFor(() => routeReady && errors.length === 0, routeReadyMs, () => {
|
|
132
|
+
const d = diagnostics();
|
|
133
|
+
return (`[mado:static] route did not become ready in ${routeReadyMs}ms. ` +
|
|
134
|
+
`state=${d.lastRouterState ?? "unknown"} ` +
|
|
135
|
+
`pending=${d.pending.join(", ") || "none"} ` +
|
|
136
|
+
`errors=${d.errors.join(" | ") || "none"}`);
|
|
137
|
+
});
|
|
138
|
+
// 2) Tracked resources: any `resource()` created before route ready
|
|
139
|
+
// is part of the initial render contract; the snapshot waits for
|
|
140
|
+
// it. Resources created after `routeReady` count as background
|
|
141
|
+
// work and are NOT awaited — they would otherwise let a stray
|
|
142
|
+
// `setInterval` keep capture pinned forever.
|
|
143
|
+
await waitFor(() => pending.size === 0 && errors.length === 0, resourcesMs, () => {
|
|
144
|
+
const d = diagnostics();
|
|
145
|
+
return (`[mado:static] route ready but resources did not settle in ${resourcesMs}ms. ` +
|
|
146
|
+
`pending=${d.pending.join(", ") || "none"} ` +
|
|
147
|
+
`errors=${d.errors.join(" | ") || "none"}`);
|
|
148
|
+
});
|
|
149
|
+
// 3) One last quiet pass: flushSync + microtask drain to ensure
|
|
150
|
+
// any final reactive effect committed during step 2 has
|
|
151
|
+
// rendered before the caller serializes the document.
|
|
152
|
+
try {
|
|
153
|
+
flushSync();
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
/* best effort; diagnostics already capture page errors */
|
|
157
|
+
}
|
|
158
|
+
await microtask();
|
|
159
|
+
},
|
|
160
|
+
diagnostics,
|
|
161
|
+
setRouterState(state) {
|
|
162
|
+
lastRouterState = state;
|
|
163
|
+
},
|
|
164
|
+
recordError(error) {
|
|
165
|
+
errors.push(error instanceof Error ? error.message : String(error));
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
return runtime;
|
|
169
|
+
}
|
|
170
|
+
function microtask() {
|
|
171
|
+
return Promise.resolve();
|
|
172
|
+
}
|
|
173
|
+
function delay(ms) {
|
|
174
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Poll `predicate` until it returns true or `timeoutMs` elapses. Calls
|
|
178
|
+
* `flushSync()` once per pass so reactive effects scheduled during the
|
|
179
|
+
* tick get a chance to commit before the next check. On timeout throws
|
|
180
|
+
* the message returned by `describe()` so each phase of `whenStable`
|
|
181
|
+
* produces a phase-specific diagnostic.
|
|
182
|
+
*/
|
|
183
|
+
async function waitFor(predicate, timeoutMs, describe) {
|
|
184
|
+
const started = Date.now();
|
|
185
|
+
// Two consecutive quiet ticks before we declare success: the predicate
|
|
186
|
+
// can transition transiently while a microtask flush rebuilds the
|
|
187
|
+
// route view.
|
|
188
|
+
let quietPasses = 0;
|
|
189
|
+
while (Date.now() - started < timeoutMs) {
|
|
190
|
+
try {
|
|
191
|
+
flushSync();
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
/* page errors surface separately via recordError */
|
|
195
|
+
}
|
|
196
|
+
await microtask();
|
|
197
|
+
if (predicate()) {
|
|
198
|
+
quietPasses++;
|
|
199
|
+
if (quietPasses >= 2)
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
quietPasses = 0;
|
|
204
|
+
}
|
|
205
|
+
await delay(10);
|
|
206
|
+
}
|
|
207
|
+
throw new Error(describe());
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=static-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-runtime.js","sourceRoot":"","sources":["../../src/static-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/src/vite/index.d.ts
CHANGED
|
@@ -1,10 +1,38 @@
|
|
|
1
1
|
import type { Plugin } from "vite";
|
|
2
2
|
export interface MadoVitePluginOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Public origin used to build absolute URLs for static snapshots
|
|
5
|
+
* (sitemap entries, canonical links, OpenGraph URLs).
|
|
6
|
+
*
|
|
7
|
+
* mado({ site: "https://madojs.dev" })
|
|
8
|
+
*
|
|
9
|
+
* Combined with Vite's `base`, the canonical URL for a route is
|
|
10
|
+
* `site + base + pathname`. Required when at least one page declares
|
|
11
|
+
* `static`; otherwise the build emits absolute URLs that point
|
|
12
|
+
* nowhere.
|
|
13
|
+
*/
|
|
14
|
+
site?: string;
|
|
3
15
|
}
|
|
4
16
|
/**
|
|
5
17
|
* Vite integration for Mado apps.
|
|
6
18
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
19
|
+
* Intentionally minimal: Vite owns dev serving, HTML processing, assets
|
|
20
|
+
* and bundling. This plugin is the bridge that hands the snapshot CLI the
|
|
21
|
+
* three pieces of resolved Vite config it needs and asks Vite for a
|
|
22
|
+
* Mado-flavoured full reload on TypeScript/JavaScript changes.
|
|
23
|
+
*
|
|
24
|
+
* What it owns:
|
|
25
|
+
* 1. a small `build.target` default (matches what the runtime relies on);
|
|
26
|
+
* 2. forcing a full page reload when a `.ts` / `.js` module updates,
|
|
27
|
+
* so signals / components do not have to track HMR state;
|
|
28
|
+
* 3. emitting `_mado/build.json` into the output so
|
|
29
|
+
* `scripts/static.mjs` can read the resolved Vite `base`, `assetsDir`
|
|
30
|
+
* and the user-declared `site` without parsing `vite.config.ts`.
|
|
31
|
+
*
|
|
32
|
+
* What it does NOT own:
|
|
33
|
+
* - HTML ownership (Vite keeps that),
|
|
34
|
+
* - publicDir / outDir / assetsDir defaults (Vite already supplies them),
|
|
35
|
+
* - snapshot orchestration (CLI keeps that),
|
|
36
|
+
* - SSR or hydration.
|
|
9
37
|
*/
|
|
10
|
-
export declare function mado(
|
|
38
|
+
export declare function mado(options?: MadoVitePluginOptions): Plugin;
|
package/dist/src/vite/index.js
CHANGED
|
@@ -1,32 +1,63 @@
|
|
|
1
|
-
import { resolve } from "node:path";
|
|
2
1
|
/**
|
|
3
2
|
* Vite integration for Mado apps.
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Intentionally minimal: Vite owns dev serving, HTML processing, assets
|
|
5
|
+
* and bundling. This plugin is the bridge that hands the snapshot CLI the
|
|
6
|
+
* three pieces of resolved Vite config it needs and asks Vite for a
|
|
7
|
+
* Mado-flavoured full reload on TypeScript/JavaScript changes.
|
|
8
|
+
*
|
|
9
|
+
* What it owns:
|
|
10
|
+
* 1. a small `build.target` default (matches what the runtime relies on);
|
|
11
|
+
* 2. forcing a full page reload when a `.ts` / `.js` module updates,
|
|
12
|
+
* so signals / components do not have to track HMR state;
|
|
13
|
+
* 3. emitting `_mado/build.json` into the output so
|
|
14
|
+
* `scripts/static.mjs` can read the resolved Vite `base`, `assetsDir`
|
|
15
|
+
* and the user-declared `site` without parsing `vite.config.ts`.
|
|
16
|
+
*
|
|
17
|
+
* What it does NOT own:
|
|
18
|
+
* - HTML ownership (Vite keeps that),
|
|
19
|
+
* - publicDir / outDir / assetsDir defaults (Vite already supplies them),
|
|
20
|
+
* - snapshot orchestration (CLI keeps that),
|
|
21
|
+
* - SSR or hydration.
|
|
7
22
|
*/
|
|
8
|
-
export function mado(
|
|
9
|
-
let
|
|
23
|
+
export function mado(options = {}) {
|
|
24
|
+
let resolved = null;
|
|
10
25
|
return {
|
|
11
26
|
name: "mado",
|
|
12
|
-
config(
|
|
13
|
-
root = resolve(process.cwd(), userConfig.root ?? ".");
|
|
27
|
+
config() {
|
|
14
28
|
return {
|
|
15
|
-
|
|
16
|
-
publicDir: "public",
|
|
17
|
-
build: {
|
|
18
|
-
outDir: "out",
|
|
19
|
-
assetsDir: "assets",
|
|
20
|
-
target: "es2022",
|
|
21
|
-
},
|
|
29
|
+
build: { target: "es2022" },
|
|
22
30
|
};
|
|
23
31
|
},
|
|
32
|
+
configResolved(config) {
|
|
33
|
+
resolved = config;
|
|
34
|
+
},
|
|
24
35
|
handleHotUpdate(ctx) {
|
|
25
|
-
if (
|
|
26
|
-
|
|
27
|
-
|
|
36
|
+
if (!/\.[cm]?[jt]s$/.test(ctx.file))
|
|
37
|
+
return;
|
|
38
|
+
// Invalidate the module graph first; otherwise the reload would
|
|
39
|
+
// serve cached modules and miss the change. Mirrors the canonical
|
|
40
|
+
// Vite "force full reload" recipe.
|
|
41
|
+
const invalidated = new Set();
|
|
42
|
+
for (const mod of ctx.modules) {
|
|
43
|
+
ctx.server.moduleGraph.invalidateModule(mod, invalidated, ctx.timestamp, true);
|
|
28
44
|
}
|
|
29
|
-
|
|
45
|
+
ctx.server.ws.send({ type: "full-reload" });
|
|
46
|
+
return [];
|
|
47
|
+
},
|
|
48
|
+
generateBundle() {
|
|
49
|
+
if (!resolved)
|
|
50
|
+
return;
|
|
51
|
+
this.emitFile({
|
|
52
|
+
type: "asset",
|
|
53
|
+
fileName: "_mado/build.json",
|
|
54
|
+
source: JSON.stringify({
|
|
55
|
+
site: options.site ?? null,
|
|
56
|
+
base: resolved.base,
|
|
57
|
+
assetsDir: resolved.build.assetsDir,
|
|
58
|
+
outDir: resolved.build.outDir,
|
|
59
|
+
}),
|
|
60
|
+
});
|
|
30
61
|
},
|
|
31
62
|
};
|
|
32
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vite/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vite/index.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,IAAI,CAAC,UAAiC,EAAE;IACtD,IAAI,QAAQ,GAA0B,IAAI,CAAC;IAE3C,OAAO;QACL,IAAI,EAAE,MAAM;QAEZ,MAAM;YACJ,OAAO;gBACL,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;aAC5B,CAAC;QACJ,CAAC;QAED,cAAc,CAAC,MAAM;YACnB,QAAQ,GAAG,MAAM,CAAC;QACpB,CAAC;QAED,eAAe,CAAC,GAAG;YACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO;YAC5C,gEAAgE;YAChE,kEAAkE;YAClE,mCAAmC;YACnC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAW,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC9B,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CACrC,GAAG,EACH,WAAyB,EACzB,GAAG,CAAC,SAAS,EACb,IAAI,CACL,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,cAAc;YACZ,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,IAAI,CAAC,QAAQ,CAAC;gBACZ,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;oBAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS;oBACnC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;iBAC9B,CAAC;aACH,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/docs/README.md
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# Mado docs
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Canonical project documentation is maintained in English only.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|---|---|
|
|
7
|
-
| [Français](./fr/README.md) | translated |
|
|
8
|
-
| [English](./en/README.md) | translated |
|
|
9
|
-
| [Ukrainian](./uk/README.md) | translated |
|
|
10
|
-
| [Russian](./ru/README.md) | translated |
|
|
5
|
+
- [English documentation](./en/README.md)
|
|
11
6
|
|
|
12
|
-
|
|
7
|
+
Older translations (`fr/`, `uk/`, `ru/`) were removed at v0.12. They
|
|
8
|
+
remain available in git history and the `v0.11.1` tag for any
|
|
9
|
+
external links that still need them.
|