@pyreon/zero 0.12.12 → 0.12.14
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/lib/client.js +41 -5
- package/lib/client.js.map +1 -1
- package/lib/env.js +6 -6
- package/lib/env.js.map +1 -1
- package/lib/favicon.js +2 -2
- package/lib/favicon.js.map +1 -1
- package/lib/font.js +2 -2
- package/lib/font.js.map +1 -1
- package/lib/i18n-routing.js.map +1 -1
- package/lib/image-plugin.js +1 -1
- package/lib/image-plugin.js.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/link.js +1 -0
- package/lib/link.js.map +1 -1
- package/lib/meta.js.map +1 -1
- package/lib/og-image.js +2 -2
- package/lib/og-image.js.map +1 -1
- package/lib/script.js +1 -0
- package/lib/script.js.map +1 -1
- package/lib/server.js +105 -10
- package/lib/server.js.map +1 -1
- package/lib/types/client.d.ts +26 -0
- package/lib/types/client.d.ts.map +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/link.d.ts.map +1 -1
- package/lib/types/server.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/adapters/index.ts +1 -1
- package/src/adapters/validate.ts +2 -2
- package/src/client.ts +84 -6
- package/src/env.ts +6 -6
- package/src/favicon.ts +3 -3
- package/src/font.ts +2 -2
- package/src/i18n-routing.ts +1 -1
- package/src/image-plugin.ts +1 -1
- package/src/link.tsx +3 -0
- package/src/og-image.ts +2 -2
- package/src/script.tsx +4 -0
- package/src/vite-plugin.ts +204 -2
package/lib/types/client.d.ts
CHANGED
|
@@ -11,6 +11,32 @@ interface StartClientOptions {
|
|
|
11
11
|
/**
|
|
12
12
|
* Start the client-side app — hydrates SSR content or mounts fresh for SPA.
|
|
13
13
|
*
|
|
14
|
+
* ## Loader data flow
|
|
15
|
+
*
|
|
16
|
+
* Direct navigation to a route with a `loader` function needs data to be
|
|
17
|
+
* available on the VERY FIRST render. This is handled in two modes:
|
|
18
|
+
*
|
|
19
|
+
* - **SSR mode (zero's default)**: the server pre-runs loaders, renders the
|
|
20
|
+
* HTML with loader data already applied, and embeds a JSON blob in the
|
|
21
|
+
* HTML as `window.__PYREON_LOADER_DATA__`. On the client we read that
|
|
22
|
+
* blob and call `hydrateLoaderData(router, data)` BEFORE hydrating — so
|
|
23
|
+
* the hydration pass sees the same data the SSR render produced
|
|
24
|
+
* (avoids hydration mismatches and the flash of "not found" fallback).
|
|
25
|
+
*
|
|
26
|
+
* - **SPA cold start (no SSR content)**: no `__PYREON_LOADER_DATA__` was
|
|
27
|
+
* embedded, so we call `router.replace(currentPath)` after mount to
|
|
28
|
+
* trigger the loader pipeline for the initial route. The first render
|
|
29
|
+
* shows whatever the component displays for `useLoaderData() === undefined`
|
|
30
|
+
* (typically a loading state or fallback); once loaders resolve, the
|
|
31
|
+
* reactive `useLoaderData` re-renders with the data. This matches
|
|
32
|
+
* standard SPA loading behavior.
|
|
33
|
+
*
|
|
34
|
+
* Without this wiring, direct URL navigation to a loader-backed route
|
|
35
|
+
* (e.g. `/posts/3`) showed the "Post not found" fallback indefinitely
|
|
36
|
+
* because `useLoaderData()` returned `undefined` forever. The router
|
|
37
|
+
* only ran loaders on in-app navigation (push/replace), not on initial
|
|
38
|
+
* mount.
|
|
39
|
+
*
|
|
14
40
|
* @example
|
|
15
41
|
* import { routes } from "virtual:zero/routes"
|
|
16
42
|
* import { startClient } from "@pyreon/zero/client"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client2.d.ts","names":[],"sources":["../../../src/client.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"client2.d.ts","names":[],"sources":["../../../src/client.ts"],"mappings":";;;;UASiB,kBAAA;;EAEf,MAAA,EAAQ,WAAA;EAFyB;EAIjC,MAAA,GAAS,WAAA;AAAA;;;;;;;AAsCX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,WAAA,CAAY,OAAA,EAAS,kBAAA"}
|
package/lib/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index2.d.ts","names":[],"sources":["../../../src/image-plugin.ts","../../../src/image.tsx","../../../src/link.tsx","../../../src/script.tsx","../../../src/i18n-routing.ts","../../../src/meta.tsx","../../../src/theme.tsx","../../../src/types.ts","../../../src/index.ts"],"mappings":";;;;;;;;UAgHiB,YAAA;EE/EA;EFiFf,IAAA;EEjFyB;EFmFzB,MAAA;AAAA;;;UCpGe,UAAA;;EAEf,GAAA;;EAEA,GAAA;;EAEA,KAAA;ED0F2B;ECxF3B,MAAA;ED0FA;ECxFA,KAAA;;EAEA,MAAA,YAAkB,WAAA;;EAElB,OAAA,GAAU,YAAA;EAde;EAgBzB,OAAA;EAFsB;EAItB,QAAA;EAdA;EAgBA,WAAA;EAZA;EAcA,KAAA;EAVA;EAYA,KAAA;EAVA;EAYA,GAAA;EAVA;EAYA,QAAA;EARA;;;;;EAcA,GAAA;AAAA;AAAA,UAGe,WAAA;EACf,GAAA;EACA,KAAA;AAAA;;;AAgBF;;;;;;;;;;;iBAAgB,KAAA,CAAM,KAAA,EAAO,UAAA,GAAa,UAAA;;;UC1DzB,SAAA;;EAEf,IAAA;;EAEA,QAAA;;EAEA,KAAA;;EAEA,WAAA;EF2F2B;EEzF3B,gBAAA;EF2FA;EEzFA,QAAA;;EAEA,QAAA;;EAEA,KAAA;EDbyB;ECezB,YAAA;EDDsB;ECGtB,OAAA,KAAY,CAAA,EAAG,UAAA;AAAA;;UAIA,eAAA;EACf,IAAA;EACA,GAAA,EAAiD,aAAA,CAArB,GAAA,CAAI,iBAAA;EAChC,OAAA,GAAU,CAAA,EAAG,UAAA;EACb,YAAA;EACA,YAAA;EACA,QAAA;EACA,aAAA;EDRA;ECUA,KAAA;EACA,KAAA;EACA,MAAA;EACA,GAAA;EACA,YAAA;EACA,QAAA;AAAA;ADEF;AAAA,UCEiB,aAAA;;EAEf,GAAA,EAAiD,aAAA,CAArB,GAAA,CAAI,iBAAA;EDF3B;ECIL,WAAA,GAAc,CAAA,EAAG,UAAA;EDYE;ECVnB,gBAAA;EDUkD;ECRlD,gBAAA;EDQoB;ECNpB,QAAA;EDMkD;ECJlD,aAAA;;EAEA,OAAA;AAAA;AAxDF;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index2.d.ts","names":[],"sources":["../../../src/image-plugin.ts","../../../src/image.tsx","../../../src/link.tsx","../../../src/script.tsx","../../../src/i18n-routing.ts","../../../src/meta.tsx","../../../src/theme.tsx","../../../src/types.ts","../../../src/index.ts"],"mappings":"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"}
|
package/lib/types/link.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link2.d.ts","names":[],"sources":["../../../src/link.tsx"],"mappings":";;;UAaiB,SAAA;;EAEf,IAAA;EAFe;EAIf,QAAA;;EAEA,KAAA;EAJA;EAMA,WAAA;EAFA;EAIA,gBAAA;EAAA;EAEA,QAAA;EAEA;EAAA,QAAA;EAIA;EAFA,KAAA;EAIe;EAFf,YAAA;EAEyB;EAAzB,OAAA,KAAY,CAAA,EAAG,UAAA;AAAA;;UAIA,eAAA;EACf,IAAA;EACA,GAAA,EAAiD,aAAA,CAArB,GAAA,CAAI,iBAAA;EAChC,OAAA,GAAU,CAAA,EAAG,UAAA;EACb,YAAA;EACA,YAAA;EACA,QAAA;EACA,aAAA;EALG;EAOH,KAAA;EACA,KAAA;EACA,MAAA;EACA,GAAA;EACA,YAAA;EACA,QAAA;AAAA;;UAIe,aAAA;EARf;EAUA,GAAA,EAAiD,aAAA,CAArB,GAAA,CAAI,iBAAA;EARhC;EAUA,WAAA,GAAc,CAAA,EAAG,UAAA;EARjB;EAUA,gBAAA;EAVQ;EAYR,gBAAA;EAR4B;EAU5B,QAAA;EARgC;EAUhC,aAAA;EARiB;EAUjB,OAAA;AAAA;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"link2.d.ts","names":[],"sources":["../../../src/link.tsx"],"mappings":";;;UAaiB,SAAA;;EAEf,IAAA;EAFe;EAIf,QAAA;;EAEA,KAAA;EAJA;EAMA,WAAA;EAFA;EAIA,gBAAA;EAAA;EAEA,QAAA;EAEA;EAAA,QAAA;EAIA;EAFA,KAAA;EAIe;EAFf,YAAA;EAEyB;EAAzB,OAAA,KAAY,CAAA,EAAG,UAAA;AAAA;;UAIA,eAAA;EACf,IAAA;EACA,GAAA,EAAiD,aAAA,CAArB,GAAA,CAAI,iBAAA;EAChC,OAAA,GAAU,CAAA,EAAG,UAAA;EACb,YAAA;EACA,YAAA;EACA,QAAA;EACA,aAAA;EALG;EAOH,KAAA;EACA,KAAA;EACA,MAAA;EACA,GAAA;EACA,YAAA;EACA,QAAA;AAAA;;UAIe,aAAA;EARf;EAUA,GAAA,EAAiD,aAAA,CAArB,GAAA,CAAI,iBAAA;EARhC;EAUA,WAAA,GAAc,CAAA,EAAG,UAAA;EARjB;EAUA,gBAAA;EAVQ;EAYR,gBAAA;EAR4B;EAU5B,QAAA;EARgC;EAUhC,aAAA;EARiB;EAUjB,OAAA;AAAA;;;;;;;;;iBA0Cc,aAAA,CAAc,IAAA;;;;;AAA9B;;;;;AAoBA;;;;;;;iBAAgB,OAAA,CAAQ,KAAA,EAAO,SAAA,GAAY,aAAA;;AAiH3C;;;;;;;;;;;AA8BA;;;;;;;;;;;;;;;;;;;;;;;iBA9BgB,UAAA,CAAW,SAAA,GAAY,KAAA,EAAO,eAAA,YAA2B,KAAA,EAAO,SAAA;;;;;;;;cA8BnE,IAAA,GAAI,KAAA,EA9B+D,SAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server2.d.ts","names":[],"sources":["../../../src/app.ts","../../../src/api-routes.ts","../../../src/types.ts","../../../src/entry-server.ts","../../../src/config.ts","../../../src/fs-router.ts","../../../src/isr.ts","../../../src/adapters/bun.ts","../../../src/adapters/cloudflare.ts","../../../src/adapters/netlify.ts","../../../src/adapters/node.ts","../../../src/adapters/static.ts","../../../src/adapters/vercel.ts","../../../src/adapters/index.ts","../../../src/not-found.ts","../../../src/middleware.ts","../../../src/vite-plugin.ts","../../../src/favicon.ts","../../../src/seo.ts","../../../src/og-image.ts","../../../src/ai.ts","../../../src/i18n-routing.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server2.d.ts","names":[],"sources":["../../../src/app.ts","../../../src/api-routes.ts","../../../src/types.ts","../../../src/entry-server.ts","../../../src/config.ts","../../../src/fs-router.ts","../../../src/isr.ts","../../../src/adapters/bun.ts","../../../src/adapters/cloudflare.ts","../../../src/adapters/netlify.ts","../../../src/adapters/node.ts","../../../src/adapters/static.ts","../../../src/adapters/vercel.ts","../../../src/adapters/index.ts","../../../src/not-found.ts","../../../src/middleware.ts","../../../src/vite-plugin.ts","../../../src/favicon.ts","../../../src/seo.ts","../../../src/og-image.ts","../../../src/ai.ts","../../../src/i18n-routing.ts"],"mappings":";;;;;;;UAQiB,gBAAA;;EAEf,MAAA,EAAQ,WAAA;;EAGR,UAAA;;EAGA,GAAA;EARe;EAWf,MAAA,GAAS,WAAA;;EAGT,cAAA,GAAiB,WAAA;AAAA;;;;;;iBAQH,SAAA,CAAU,OAAA,EAAS,gBAAA;aAAgB,aAAA,CAAA,KAAA;;;;;;UCtBlC,UAAA;;EAEf,OAAA,EAAS,OAAA;;EAET,GAAA,EAAK,GAAA;EDJU;ECMf,IAAA;;EAEA,MAAA,EAAQ,MAAA;EDGC;ECDT,OAAA,EAAS,OAAA;AAAA;;KAIC,UAAA,IAAc,GAAA,EAAK,UAAA,KAAe,QAAA,GAAW,OAAA,CAAQ,QAAA;;UAGhD,cAAA;EACf,GAAA,GAAM,UAAA;EACN,IAAA,GAAO,UAAA;EACP,GAAA,GAAM,UAAA;EACN,KAAA,GAAQ,UAAA;EACR,MAAA,GAAS,UAAA;EACT,IAAA,GAAO,UAAA;EACP,OAAA,GAAU,UAAA;AAAA;;UAIK,aAAA;EDNkB;ECQjC,OAAA;;EAEA,MAAA,EAAQ,cAAA;AAAA;;;KCKE,UAAA;AAAA,UAEK,SAAA;;EAEf,UAAA;AAAA;AAAA,UAKe,UAAA;;EAEf,IAAA,GAAO,UAAA;;EAGP,IAAA,GAAO,MAAA;EDnDkB;ECsDzB,GAAA;IDpDS,wCCsDP,IAAA;EAAA;ED9CO;ECkDT,GAAA;IDlDgB,wDCoDd,KAAA,gCAAqC,OAAA;EAAA;ED1DvC;EC8DA,GAAA,GAAM,SAAA;ED5DN;EC+DA,OAAA;ED7DQ;ECgER,IAAA;ED9DS;ECiET,UAAA,GAAa,UAAA;EDjEG;ECoEhB,IAAA;AAAA;;;;;;;;UAYe,gBAAA;ED5ES;EC8ExB,SAAA;ED9EuD;ECgFvD,QAAA;EDhFuE;ECkFvE,OAAA;ED/Ee;ECiFf,aAAA;;EAEA,QAAA;EDjFO;ECmFP,aAAA;EDjFQ;;;;;;;;;;;;;EC+FR,WAAA;ED9FA;;;;ECmGA,iBAAA;AAAA;;UAIe,SAAA;EDjGA;ECmGf,QAAA;;EAEA,OAAA;EDnGA;ECqGA,OAAA;EDnGQ;ECqGR,KAAA;EDrGsB;ECuGtB,QAAA;;EAEA,OAAA;EApGU;EAsGV,SAAA;;EAEA,UAAA;EAxGoB;EA0GpB,UAAA;EAxGwB;EA0GxB,UAAA,EAAY,UAAA;EAxGZ;;AAKF;;;;;;EA4GE,OAAA,GAAU,gBAAA;AAAA;;UAMK,oBAAA;EACf,OAAA;EACA,UAAA,EAAY,UAAA,GAAa,UAAA;AAAA;AAAA,UAKV,OAAA;EACf,IAAA;EAhHE;EAkHF,KAAA,CAAM,OAAA,EAAS,mBAAA,GAAsB,OAAA;AAAA;AAAA,UAGtB,mBAAA;EA3Gf;EA6GA,WAAA;EA1GA;EA4GA,YAAA;EAtGA;EAwGA,MAAA;EACA,MAAA,EAAQ,UAAA;AAAA;;;UChLO,mBAAA;;EAEhB,MAAA,EAAQ,WAAA;;EAER,MAAA,GAAS,UAAA;EHRuB;EGUhC,UAAA,GAAa,UAAA;EHRJ;EGUT,eAAA,GAAkB,oBAAA;EHEA;EGAlB,SAAA,GAAY,aAAA;EHAiB;EGE7B,QAAA;EHdS;EGgBT,WAAA;EHVC;EGYD,iBAAA,GAAoB,WAAA;AAAA;;;;;;;;;;;iBAyEL,YAAA,CAAa,OAAA,EAAS,mBAAA,IAAmB,GAAA,EAAA,OAAA,KAAA,OAAA,CAAA,QAAA;;;;;;;;;;;AH7FzD;;;;;iBIOgB,YAAA,CAAa,MAAA,EAAQ,UAAA,GAAa,UAAA;;iBAKlC,aAAA,CACd,UAAA,GAAY,UAAA,GACX,QAAA,CAAS,IAAA,CAAK,UAAA,2CAAqD,UAAA;;;;;;;;;;AHdtE;;;iBI+vBgB,eAAA,CACd,KAAA,YACA,WAAA,GAAa,UAAA,EACb,UAAA,GAAa,GAAA,SAAY,gBAAA,IACxB,SAAA;;;;;;;;;;;;;iBA+Da,iBAAA,CAAkB,QAAA;;;;AJpzBlC;;UIu6BiB,0BAAA;EJv6Bc;;;;;EI66B7B,aAAA;AAAA;AAAA,iBAGc,mBAAA,CACd,KAAA,YACA,SAAA,UACA,OAAA,GAAU,0BAAA;;;;;iBAqVI,wBAAA,CAAyB,KAAA,YAAiB,SAAA;;;;;iBA2BpC,cAAA,CAAe,SAAA,WAAoB,OAAA;;;;;;;;;iBCzyCzC,gBAAA,CACd,OAAA,GAAU,GAAA,EAAK,OAAA,KAAY,OAAA,CAAQ,QAAA,GACnC,MAAA,EAAQ,SAAA,IACN,GAAA,EAAK,OAAA,KAAY,OAAA,CAAQ,QAAA;;;;;;iBCbb,UAAA,CAAA,GAAc,OAAA;;;;;;;;;;;APE9B;;;;;;;;;;;;;;;iBQkBgB,iBAAA,CAAA,GAAqB,OAAA;;;;;;;;;;;ARlBrC;;;;;;;;;;iBSagB,cAAA,CAAA,GAAkB,OAAA;;;;;;iBCflB,WAAA,CAAA,GAAe,OAAA;;;;;;;iBCAf,aAAA,CAAA,GAAiB,OAAA;;;;;;;;;;;AXEjC;;;;;;;;;;iBYagB,aAAA,CAAA,GAAiB,OAAA;;;;;AZbjC;;iBaWgB,cAAA,CAAe,MAAA,EAAQ,UAAA,GAAa,OAAA;;;;;;;iBCF9B,aAAA,CACrB,SAAA,EAAW,WAAA,cACX,QAAA,YACE,OAAA;;;;;;;;;;;AdZH;;;;;;;iBegBgB,OAAA,CAAA,GAAW,WAAA,EAAa,UAAA,KAAe,UAAA;;;;;;;;;;;AfMvD;;;;;;iBe2BgB,UAAA,CAAW,GAAA,EAAK,iBAAA,GAAoB,MAAA;;;;;;;;;;AfjDpD;;;;;;iBgB+DgB,UAAA,CAAW,UAAA,GAAY,UAAA,GAAkB,MAAA;;;UC1CxC,mBAAA;;EAEf,MAAA;;EAEA,UAAA;AAAA;AAAA,UAGe,mBAAA;;EAEf,MAAA;EjB9B+B;EiBgC/B,UAAA;EjB9BQ;EiBgCR,eAAA;EjBpBiB;EiBsBjB,IAAA;EjBtB4B;EiBwB5B,QAAA;EjBpCQ;;;;;EiB0CR,UAAA;EjB9BiB;;;AAQnB;;;;;;;;;;;;;;;;EiB0CE,OAAA,GAAU,MAAA,SAAe,mBAAA;;;AhBhE3B;;;;;;;;;;;;;;EgBiFE,SAAA;AAAA;;;;;AhBnEF;;;;;;;;;;;;iBgBmGgB,aAAA,CAAc,MAAA,EAAQ,mBAAA,GAAsB,MAAA;;;;AhBhG5D;;;;;;;iBgB2egB,YAAA,CACd,MAAA,sBACA,MAAA,EAAQ,mBAAA,GACP,KAAA;EAAQ,GAAA;EAAa,IAAA;EAAe,KAAA;EAAgB,IAAA;AAAA;;;UC5ftC,aAAA;;EAEf,MAAA;;EAEA,OAAA;;EAEA,UAAA,GAAa,UAAA;ElBTE;EkBWf,QAAA;;EAEA,eAAA,GAAkB,YAAA;AAAA;AAAA,UAGH,YAAA;EACf,IAAA;EACA,UAAA,GAAa,UAAA;EACb,QAAA;EACA,OAAA;AAAA;AAAA,KAGU,UAAA;;;;iBAKI,eAAA,CAAgB,UAAA,YAAsB,MAAA,EAAQ,aAAA;AAAA,UAgE7C,YAAA;ElB9Ea;EkBgF5B,KAAA,GAAQ,UAAA;ElBxEe;EkB0EvB,OAAA;ElB1EiC;EkB4EjC,IAAA;AAAA;AAAA,UAGe,UAAA;EACf,SAAA;EACA,KAAA;EACA,QAAA;EACA,UAAA;AAAA;;;;iBAMc,cAAA,CAAe,MAAA,GAAQ,YAAA;;;AjB/GvC;;;;;;;;;;iBiB+JgB,MAAA,CAAO,IAAA,EAAM,MAAA;AAAA,UAUZ,eAAA;EjBrKV;EiBuKL,OAAA,GAAU,aAAA;EjBnKV;EiBqKA,MAAA,GAAS,YAAA;AAAA;;;;AjB/JX;;;;;;;;;;;;;;;iBiBoLgB,SAAA,CAAU,MAAA,GAAQ,eAAA,GAAuB,MAAA;AjBjLzD;;;;AAAA,iBiB8NgB,aAAA,CAAc,MAAA,GAAQ,eAAA,GAAuB,UAAA;;;UCzM5C,YAAA;;;;;;;EAOf,IAAA,WAAe,MAAA,qBAA2B,MAAA;EnB7C3B;EmB+Cf,CAAA;;EAEA,CAAA;EnBtCS;EmBwCT,QAAA;EnBrC4B;EmBuC5B,UAAA;EnBnDA;EmBqDA,UAAA;EnBlDA;EmBoDA,KAAA;EnB9CA;EmBgDA,UAAA;EnB7CA;EmB+CA,QAAA;AAAA;AAAA,UAGe,eAAA;EnB1CD;EmB4Cd,IAAA;;;;;;;EAOA,UAAA;IAAuB,KAAA;IAAe,KAAA;IAAgB,MAAA;EAAA;;EAEtD,KAAA;;EAEA,MAAA;;EAEA,MAAA;ElB/Ee;EkBiFf,OAAA;;EAEA,MAAA,GAAS,YAAA;AAAA;AAAA,UAGM,mBAAA;ElB5EN;EkB8ET,SAAA,EAAW,eAAA;ElB9EK;EkBgFhB,OAAA;ElBxFS;EkB0FT,MAAA;AAAA;;;;;;;;;;;iBA6Jc,WAAA,CACd,YAAA,UACA,MAAA,WACA,MAAA,WACA,MAAA;;;AlB5OF;;;;;;;;;;;;;;;;;;;;;;;iBkB8QgB,aAAA,CAAc,MAAA,EAAQ,mBAAA,GAAsB,MAAA;;;UC3Q3C,cAAA;EpBNa;EoBQ5B,IAAA;EpBAc;EoBEd,WAAA;;EAEA,MAAA;EpBJiD;EoBMjD,YAAA;;EAEA,QAAA;EpBRiC;EoBUjC,OAAA;;EAEA,SAAA;;EAEA,MAAA;;;;;;AnBpCF;;;;;;;;EmBkDE,eAAA,GAAkB,MAAA;EnBhDlB;;;;EmBqDA,gBAAA,GAAmB,MAAA;EnB/CnB;;;;EmBoDA,SAAA;AAAA;AnB9CF;;;;;;;;;;;;;;;;AAGA;AAHA,iBmBoEgB,eAAA,CACd,UAAA,YACA,QAAA,YACA,MAAA,EAAQ,cAAA;;;;;;;iBA0FM,mBAAA,CACd,UAAA,YACA,QAAA,YACA,MAAA,EAAQ,cAAA;AAAA,UAsDO,kBAAA;EnBhNK;EmBkNpB,GAAA;EnBxNA;EmB0NA,KAAA;EnBzNA;EmB2NA,WAAA;EnB1NA;EmB4NA,KAAA;EnB3NA;EmB6NA,QAAA;EnB5NA;EmB8NA,IAAA;EnB7NA;EmB+NA,aAAA;EnB9NA;EmBgOA,MAAA;EnBhOoB;EmBkOpB,IAAA;EnB9Ne;EmBgOf,WAAA,GAAc,KAAA;IAAQ,IAAA;IAAc,GAAA;EAAA;AAAA;;;;;;;AlBvNtC;;;;;AAEA;;;;;AAOA;;;iBkBoOgB,WAAA,CAAY,OAAA,EAAS,kBAAA,GAAqB,MAAA;;;;;;;;;;;AlBxL1D;;;;;;;;;;;;;;AAmCA;;;;;;iBkB+VgB,QAAA,CAAS,MAAA,EAAQ,cAAA,GAAiB,MAAA;;;UCndjC,iBAAA;;EAEf,OAAA;;EAEA,aAAA;;EAEA,YAAA;;EAEA,UAAA;ErBjB+B;EqBmB/B,QAAA;AAAA;AAAA,UAGe,aAAA;ErBRE;EqBUjB,MAAA;ErBV4B;EqBY5B,OAAA;ErBxBQ;EqB0BR,aAAA;ErBpBA;EqBsBA,UAAA,GAAa,IAAA,UAAc,MAAA;ErBnBlB;EqBqBT,UAAA,QAAkB,KAAA;IAAQ,MAAA;IAAgB,GAAA;EAAA;AAAA;;;;iBAM5B,sBAAA,CACd,cAAA,6BACA,OAAA,YACA,aAAA;;;ApBzCF;iBoByGgB,mBAAA,CACd,MAAA,UACA,IAAA,UACA,MAAA,EAAQ,iBAAA,GACP,aAAA;;;;;;;;;;;;;;;;;;;ApB/FH;;;;iBoBoJgB,WAAA,CAAY,MAAA,EAAQ,iBAAA,GAAoB,MAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pyreon/zero",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.14",
|
|
4
4
|
"description": "Pyreon Zero — zero-config full-stack framework powered by Pyreon and Vite",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Vit Bokisch",
|
|
@@ -166,18 +166,18 @@
|
|
|
166
166
|
"lint": "oxlint ."
|
|
167
167
|
},
|
|
168
168
|
"dependencies": {
|
|
169
|
-
"@pyreon/core": "^0.12.
|
|
170
|
-
"@pyreon/head": "^0.12.
|
|
171
|
-
"@pyreon/meta": "^0.12.
|
|
172
|
-
"@pyreon/router": "^0.12.
|
|
173
|
-
"@pyreon/runtime-dom": "^0.12.
|
|
174
|
-
"@pyreon/runtime-server": "^0.12.
|
|
175
|
-
"@pyreon/server": "^0.12.
|
|
176
|
-
"@pyreon/vite-plugin": "^0.12.
|
|
169
|
+
"@pyreon/core": "^0.12.14",
|
|
170
|
+
"@pyreon/head": "^0.12.14",
|
|
171
|
+
"@pyreon/meta": "^0.12.14",
|
|
172
|
+
"@pyreon/router": "^0.12.14",
|
|
173
|
+
"@pyreon/runtime-dom": "^0.12.14",
|
|
174
|
+
"@pyreon/runtime-server": "^0.12.14",
|
|
175
|
+
"@pyreon/server": "^0.12.14",
|
|
176
|
+
"@pyreon/vite-plugin": "^0.12.14",
|
|
177
177
|
"vite": "^8.0.0"
|
|
178
178
|
},
|
|
179
179
|
"peerDependencies": {
|
|
180
|
-
"@pyreon/reactivity": "^0.12.
|
|
180
|
+
"@pyreon/reactivity": "^0.12.14",
|
|
181
181
|
"sharp": "^0.33.0"
|
|
182
182
|
},
|
|
183
183
|
"peerDependenciesMeta": {
|
package/src/adapters/index.ts
CHANGED
|
@@ -34,6 +34,6 @@ export function resolveAdapter(config: ZeroConfig): Adapter {
|
|
|
34
34
|
case 'netlify':
|
|
35
35
|
return netlifyAdapter()
|
|
36
36
|
default:
|
|
37
|
-
throw new Error(`[
|
|
37
|
+
throw new Error(`[Pyreon] Unknown adapter: "${name}". Use "node", "bun", "static", "vercel", "cloudflare", or "netlify".`)
|
|
38
38
|
}
|
|
39
39
|
}
|
package/src/adapters/validate.ts
CHANGED
|
@@ -8,9 +8,9 @@ import type { AdapterBuildOptions } from '../types'
|
|
|
8
8
|
export async function validateBuildInputs(options: AdapterBuildOptions): Promise<void> {
|
|
9
9
|
const { existsSync } = await import('node:fs')
|
|
10
10
|
if (!existsSync(options.clientOutDir)) {
|
|
11
|
-
throw new Error(`[
|
|
11
|
+
throw new Error(`[Pyreon] Client build output not found: ${options.clientOutDir}. Run "vite build" first.`)
|
|
12
12
|
}
|
|
13
13
|
if (!existsSync(options.serverEntry)) {
|
|
14
|
-
throw new Error(`[
|
|
14
|
+
throw new Error(`[Pyreon] Server entry not found: ${options.serverEntry}. Run "vite build --ssr" first.`)
|
|
15
15
|
}
|
|
16
16
|
}
|
package/src/client.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ComponentFn } from '@pyreon/core'
|
|
2
2
|
import { h } from '@pyreon/core'
|
|
3
3
|
import type { RouteRecord } from '@pyreon/router'
|
|
4
|
+
import { hydrateLoaderData } from '@pyreon/router'
|
|
4
5
|
import { hydrateRoot, mount } from '@pyreon/runtime-dom'
|
|
5
6
|
import { createApp } from './app'
|
|
6
7
|
|
|
@@ -16,6 +17,32 @@ export interface StartClientOptions {
|
|
|
16
17
|
/**
|
|
17
18
|
* Start the client-side app — hydrates SSR content or mounts fresh for SPA.
|
|
18
19
|
*
|
|
20
|
+
* ## Loader data flow
|
|
21
|
+
*
|
|
22
|
+
* Direct navigation to a route with a `loader` function needs data to be
|
|
23
|
+
* available on the VERY FIRST render. This is handled in two modes:
|
|
24
|
+
*
|
|
25
|
+
* - **SSR mode (zero's default)**: the server pre-runs loaders, renders the
|
|
26
|
+
* HTML with loader data already applied, and embeds a JSON blob in the
|
|
27
|
+
* HTML as `window.__PYREON_LOADER_DATA__`. On the client we read that
|
|
28
|
+
* blob and call `hydrateLoaderData(router, data)` BEFORE hydrating — so
|
|
29
|
+
* the hydration pass sees the same data the SSR render produced
|
|
30
|
+
* (avoids hydration mismatches and the flash of "not found" fallback).
|
|
31
|
+
*
|
|
32
|
+
* - **SPA cold start (no SSR content)**: no `__PYREON_LOADER_DATA__` was
|
|
33
|
+
* embedded, so we call `router.replace(currentPath)` after mount to
|
|
34
|
+
* trigger the loader pipeline for the initial route. The first render
|
|
35
|
+
* shows whatever the component displays for `useLoaderData() === undefined`
|
|
36
|
+
* (typically a loading state or fallback); once loaders resolve, the
|
|
37
|
+
* reactive `useLoaderData` re-renders with the data. This matches
|
|
38
|
+
* standard SPA loading behavior.
|
|
39
|
+
*
|
|
40
|
+
* Without this wiring, direct URL navigation to a loader-backed route
|
|
41
|
+
* (e.g. `/posts/3`) showed the "Post not found" fallback indefinitely
|
|
42
|
+
* because `useLoaderData()` returned `undefined` forever. The router
|
|
43
|
+
* only ran loaders on in-app navigation (push/replace), not on initial
|
|
44
|
+
* mount.
|
|
45
|
+
*
|
|
19
46
|
* @example
|
|
20
47
|
* import { routes } from "virtual:zero/routes"
|
|
21
48
|
* import { startClient } from "@pyreon/zero/client"
|
|
@@ -23,21 +50,72 @@ export interface StartClientOptions {
|
|
|
23
50
|
* startClient({ routes })
|
|
24
51
|
*/
|
|
25
52
|
export function startClient(options: StartClientOptions) {
|
|
53
|
+
// `startClient` is the browser entry point — only ever called from a
|
|
54
|
+
// user's `client.ts` mounted in the browser. Explicit guard documents
|
|
55
|
+
// that contract and gives a clearer error than `document is not defined`.
|
|
56
|
+
if (typeof document === 'undefined') {
|
|
57
|
+
throw new Error('[Pyreon] startClient() can only be called in the browser.')
|
|
58
|
+
}
|
|
26
59
|
const container = document.getElementById('app')
|
|
27
|
-
if (!container) throw new Error('[
|
|
60
|
+
if (!container) throw new Error('[Pyreon] Missing #app container element')
|
|
28
61
|
|
|
29
|
-
const { App } = createApp({
|
|
62
|
+
const { App, router } = createApp({
|
|
30
63
|
routes: options.routes,
|
|
31
64
|
routerMode: 'history',
|
|
32
65
|
...(options.layout ? { layout: options.layout } : {}),
|
|
33
66
|
})
|
|
34
67
|
|
|
68
|
+
// ── Loader data hydration (SSR path) ───────────────────────────────────────
|
|
69
|
+
// If the server embedded loader data, hydrate it BEFORE mounting so the
|
|
70
|
+
// initial render sees the same data the SSR pass produced. This avoids
|
|
71
|
+
// hydration mismatches and eliminates the flash-of-fallback.
|
|
72
|
+
const ssrLoaderData = (window as unknown as Record<string, unknown>)
|
|
73
|
+
.__PYREON_LOADER_DATA__
|
|
74
|
+
const hasSSRLoaderData =
|
|
75
|
+
ssrLoaderData !== undefined &&
|
|
76
|
+
typeof ssrLoaderData === 'object' &&
|
|
77
|
+
ssrLoaderData !== null
|
|
78
|
+
if (hasSSRLoaderData) {
|
|
79
|
+
// `router` is the public Router<> type; hydrateLoaderData uses the
|
|
80
|
+
// internal RouterInstance shape. The cast is safe because they're
|
|
81
|
+
// the same object at runtime — just narrower/wider type views.
|
|
82
|
+
hydrateLoaderData(router as never, ssrLoaderData as Record<string, unknown>)
|
|
83
|
+
}
|
|
84
|
+
|
|
35
85
|
const vnode = h(App, null)
|
|
36
86
|
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
|
|
87
|
+
// ── Mount vs hydrate ───────────────────────────────────────────────────────
|
|
88
|
+
const hasSSRContent = container.childNodes.length > 0
|
|
89
|
+
const cleanup = hasSSRContent ? hydrateRoot(container, vnode) : mount(vnode, container)
|
|
90
|
+
|
|
91
|
+
// ── Loader run (SPA cold-start path) ───────────────────────────────────────
|
|
92
|
+
// If we had no SSR loader data AND no SSR content, this is a true SPA
|
|
93
|
+
// cold start. Trigger the router's loader pipeline for the current route
|
|
94
|
+
// via `replace()` with the same path — doesn't change the URL, just kicks
|
|
95
|
+
// off the loader batch. Guards, middleware, and redirects run too, which
|
|
96
|
+
// matches what any other route navigation would do.
|
|
97
|
+
//
|
|
98
|
+
// If we DID have SSR content but NO loader data — that's an unusual case
|
|
99
|
+
// (SSR disabled for this route but loader defined). Run loaders anyway so
|
|
100
|
+
// the client catches up.
|
|
101
|
+
if (!hasSSRLoaderData) {
|
|
102
|
+
const currentPath = router.currentRoute().path
|
|
103
|
+
router.replace(currentPath).catch((err: unknown) => {
|
|
104
|
+
// Loader failures are already reported via the route's error handling
|
|
105
|
+
// pipeline. We swallow the promise rejection here to prevent unhandled
|
|
106
|
+
// rejection warnings — the route's `errorComponent` (if any) already
|
|
107
|
+
// handled the display.
|
|
108
|
+
// @ts-ignore — `import.meta.env.DEV` is provided by Vite/Rolldown at build time
|
|
109
|
+
if (import.meta.env?.DEV === true) {
|
|
110
|
+
// oxlint-disable-next-line no-console
|
|
111
|
+
console.warn(
|
|
112
|
+
'[Pyreon] Initial loader run failed for route:',
|
|
113
|
+
currentPath,
|
|
114
|
+
err,
|
|
115
|
+
)
|
|
116
|
+
}
|
|
117
|
+
})
|
|
40
118
|
}
|
|
41
119
|
|
|
42
|
-
return
|
|
120
|
+
return cleanup
|
|
43
121
|
}
|
package/src/env.ts
CHANGED
|
@@ -160,7 +160,7 @@ export function oneOf<T extends string>(
|
|
|
160
160
|
class EnvError extends Error {
|
|
161
161
|
constructor(key: string, message: string, description?: string) {
|
|
162
162
|
const desc = description ? ` (${description})` : ''
|
|
163
|
-
super(`[
|
|
163
|
+
super(`[Pyreon] ${key}${desc}: ${message}`)
|
|
164
164
|
this.name = 'EnvError'
|
|
165
165
|
}
|
|
166
166
|
}
|
|
@@ -193,7 +193,7 @@ function toValidator(value: unknown): EnvValidator<unknown> {
|
|
|
193
193
|
if (typeof value === 'boolean') return bool({ default: value })
|
|
194
194
|
if (typeof value === 'string') return str({ default: value })
|
|
195
195
|
|
|
196
|
-
throw new Error(`[
|
|
196
|
+
throw new Error(`[Pyreon] Invalid schema value: ${String(value)}. Use a default value, String/Number/Boolean, or a validator like url().`)
|
|
197
197
|
}
|
|
198
198
|
|
|
199
199
|
// ─── Type inference ─────────────────────────────────────────────────────────
|
|
@@ -261,8 +261,8 @@ export function validateEnv<T extends Record<string, SchemaEntry>>(
|
|
|
261
261
|
}
|
|
262
262
|
|
|
263
263
|
if (errors.length > 0) {
|
|
264
|
-
const header = `\n[
|
|
265
|
-
const body = errors.map((e) => ` ✗ ${e.replace('[
|
|
264
|
+
const header = `\n[Pyreon] Environment validation failed (${errors.length} error${errors.length > 1 ? 's' : ''}):\n`
|
|
265
|
+
const body = errors.map((e) => ` ✗ ${e.replace('[Pyreon] ', '')}`).join('\n')
|
|
266
266
|
throw new Error(header + body + '\n')
|
|
267
267
|
}
|
|
268
268
|
|
|
@@ -331,13 +331,13 @@ export function schema<T>(parse: (raw: string) => T): EnvValidator<T> {
|
|
|
331
331
|
defaultValue: undefined,
|
|
332
332
|
parse(raw: string | undefined, key: string) {
|
|
333
333
|
if (raw === undefined || raw === '') {
|
|
334
|
-
throw new Error(`[
|
|
334
|
+
throw new Error(`[Pyreon] ${key}: is required but not set`)
|
|
335
335
|
}
|
|
336
336
|
try {
|
|
337
337
|
return parse(raw)
|
|
338
338
|
} catch (e) {
|
|
339
339
|
const msg = e instanceof Error ? e.message : String(e)
|
|
340
|
-
throw new Error(`[
|
|
340
|
+
throw new Error(`[Pyreon] ${key}: ${msg}`)
|
|
341
341
|
}
|
|
342
342
|
},
|
|
343
343
|
}
|
package/src/favicon.ts
CHANGED
|
@@ -9,7 +9,7 @@ function warnSharpMissing() {
|
|
|
9
9
|
sharpWarned = true
|
|
10
10
|
// oxlint-disable-next-line no-console
|
|
11
11
|
console.warn(
|
|
12
|
-
'\n[
|
|
12
|
+
'\n[Pyreon] sharp not installed — favicons will not be generated. Install for full support: bun add -D sharp\n',
|
|
13
13
|
)
|
|
14
14
|
}
|
|
15
15
|
|
|
@@ -25,7 +25,7 @@ function warnSharpMissing() {
|
|
|
25
25
|
//
|
|
26
26
|
// Usage:
|
|
27
27
|
// import { faviconPlugin } from "@pyreon/zero"
|
|
28
|
-
// export default { plugins: [
|
|
28
|
+
// export default { plugins: [Pyreon] }
|
|
29
29
|
|
|
30
30
|
export interface FaviconLocaleConfig {
|
|
31
31
|
/** Locale-specific source icon (SVG or PNG). */
|
|
@@ -404,7 +404,7 @@ async function generateFaviconSet(
|
|
|
404
404
|
const sourcePath = join(rootDir, source)
|
|
405
405
|
if (!existsSync(sourcePath)) {
|
|
406
406
|
// oxlint-disable-next-line no-console
|
|
407
|
-
console.warn(`[
|
|
407
|
+
console.warn(`[Pyreon] Source not found: ${sourcePath}`)
|
|
408
408
|
return
|
|
409
409
|
}
|
|
410
410
|
|
package/src/font.ts
CHANGED
|
@@ -282,7 +282,7 @@ async function downloadGoogleFontsCSS(url: string): Promise<string> {
|
|
|
282
282
|
},
|
|
283
283
|
})
|
|
284
284
|
if (!response.ok) {
|
|
285
|
-
throw new Error(`Failed to fetch Google Fonts CSS: ${response.status}`)
|
|
285
|
+
throw new Error(`[Pyreon] Failed to fetch Google Fonts CSS: ${response.status}`)
|
|
286
286
|
}
|
|
287
287
|
return response.text()
|
|
288
288
|
}
|
|
@@ -292,7 +292,7 @@ async function downloadGoogleFontsCSS(url: string): Promise<string> {
|
|
|
292
292
|
*/
|
|
293
293
|
async function downloadFontFile(url: string): Promise<Buffer> {
|
|
294
294
|
const response = await fetch(url)
|
|
295
|
-
if (!response.ok) throw new Error(`Failed to download font: ${url}`)
|
|
295
|
+
if (!response.ok) throw new Error(`[Pyreon] Failed to download font: ${url}`)
|
|
296
296
|
const arrayBuffer = await response.arrayBuffer()
|
|
297
297
|
return Buffer.from(arrayBuffer)
|
|
298
298
|
}
|
package/src/i18n-routing.ts
CHANGED
|
@@ -13,7 +13,7 @@ import type { Plugin } from 'vite'
|
|
|
13
13
|
//
|
|
14
14
|
// Usage:
|
|
15
15
|
// import { i18nRouting } from "@pyreon/zero"
|
|
16
|
-
// export default { plugins: [
|
|
16
|
+
// export default { plugins: [Pyreon], defaultLocale: "en" })] }
|
|
17
17
|
|
|
18
18
|
export interface I18nRoutingConfig {
|
|
19
19
|
/** Supported locales. e.g. ["en", "de", "cs"] */
|
package/src/image-plugin.ts
CHANGED
|
@@ -9,7 +9,7 @@ function warnSharpMissing() {
|
|
|
9
9
|
sharpWarned = true
|
|
10
10
|
// oxlint-disable-next-line no-console
|
|
11
11
|
console.warn(
|
|
12
|
-
'\n[
|
|
12
|
+
'\n[Pyreon] sharp not installed — images will not be optimized. Install for full support: bun add -D sharp\n',
|
|
13
13
|
)
|
|
14
14
|
}
|
|
15
15
|
|
package/src/link.tsx
CHANGED
|
@@ -74,6 +74,9 @@ const MAX_PREFETCH_CACHE = 200
|
|
|
74
74
|
const prefetched = new Set<string>()
|
|
75
75
|
|
|
76
76
|
function doPrefetch(href: string) {
|
|
77
|
+
// Prefetch only fires from browser-mounted Link interactions (hover /
|
|
78
|
+
// click intent). Explicit guard documents the SSR-safety contract.
|
|
79
|
+
if (typeof document === 'undefined') return
|
|
77
80
|
if (prefetched.has(href)) return
|
|
78
81
|
// Evict oldest entries when cache is full
|
|
79
82
|
if (prefetched.size >= MAX_PREFETCH_CACHE) {
|
package/src/og-image.ts
CHANGED
|
@@ -38,7 +38,7 @@ function warnSharpMissing() {
|
|
|
38
38
|
sharpWarned = true
|
|
39
39
|
// oxlint-disable-next-line no-console
|
|
40
40
|
console.warn(
|
|
41
|
-
'\n[
|
|
41
|
+
'\n[Pyreon] sharp not installed — OG images will not be generated. Install for full support: bun add -D sharp\n',
|
|
42
42
|
)
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -357,7 +357,7 @@ export function ogImagePlugin(config: OgImagePluginConfig): Plugin {
|
|
|
357
357
|
const bgPath = join(root, template.background)
|
|
358
358
|
if (!existsSync(bgPath)) {
|
|
359
359
|
// oxlint-disable-next-line no-console
|
|
360
|
-
console.warn(`[
|
|
360
|
+
console.warn(`[Pyreon] Background not found: ${bgPath}`)
|
|
361
361
|
continue
|
|
362
362
|
}
|
|
363
363
|
}
|
package/src/script.tsx
CHANGED
|
@@ -52,6 +52,10 @@ export type ScriptStrategy =
|
|
|
52
52
|
*/
|
|
53
53
|
export function Script(props: ScriptProps): VNodeChild {
|
|
54
54
|
function loadScript() {
|
|
55
|
+
// Only invoked from `onMount` — explicit guard documents the
|
|
56
|
+
// SSR-safety contract at the callsite (the rule can't AST-trace the
|
|
57
|
+
// indirect call).
|
|
58
|
+
if (typeof document === 'undefined') return
|
|
55
59
|
// Deduplication
|
|
56
60
|
if (props.id && document.getElementById(props.id)) return
|
|
57
61
|
|