@timber-js/app 0.2.0-alpha.196 → 0.2.0-alpha.198
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/_chunks/{actions-CWYtq6ii.js → actions-BS-m5SLv.js} +3 -3
- package/dist/_chunks/{actions-CWYtq6ii.js.map → actions-BS-m5SLv.js.map} +1 -1
- package/dist/_chunks/als-registry-C6kcfprT.js.map +1 -1
- package/dist/_chunks/{build-manifest-DWppEdLB.js → build-manifest-DTmSGLRz.js} +51 -2
- package/dist/_chunks/build-manifest-DTmSGLRz.js.map +1 -0
- package/dist/_chunks/{cache-api-CQeYzA5g.js → cache-api-DqzgTEqk.js} +4 -49
- package/dist/_chunks/cache-api-DqzgTEqk.js.map +1 -0
- package/dist/_chunks/{chains-h7EO-u3n.js → chains-CZG7E5zg.js} +2 -2
- package/dist/_chunks/{chains-h7EO-u3n.js.map → chains-CZG7E5zg.js.map} +1 -1
- package/dist/_chunks/{cli-check-BVthpfLS.js → cli-check-dVDi1GQz.js} +3 -3
- package/dist/_chunks/{cli-check-BVthpfLS.js.map → cli-check-dVDi1GQz.js.map} +1 -1
- package/dist/_chunks/{cli-schema-sync-3Wutm8pH.js → cli-schema-sync-DTy_-Msq.js} +2 -2
- package/dist/_chunks/{cli-schema-sync-3Wutm8pH.js.map → cli-schema-sync-DTy_-Msq.js.map} +1 -1
- package/dist/_chunks/{cloudflare-BKJC3SC_.js → cloudflare-BFb__LYG.js} +2 -2
- package/dist/_chunks/{cloudflare-BKJC3SC_.js.map → cloudflare-BFb__LYG.js.map} +1 -1
- package/dist/_chunks/{convention-lint-DO10_pVl.js → convention-lint-Ph6luW4c.js} +4 -2
- package/dist/_chunks/convention-lint-Ph6luW4c.js.map +1 -0
- package/dist/_chunks/{error-boundary-D-lkwyaD.js → error-boundary-BvRCCmbN.js} +3 -3
- package/dist/_chunks/{error-boundary-D-lkwyaD.js.map → error-boundary-BvRCCmbN.js.map} +1 -1
- package/dist/_chunks/{href-validation-CMc5JRls.js → href-validation-BIrxavIy.js} +74 -2
- package/dist/_chunks/href-validation-BIrxavIy.js.map +1 -0
- package/dist/_chunks/{live-graph-Bx4HodF1.js → live-graph-BXDsdzBv.js} +3 -3
- package/dist/_chunks/{live-graph-Bx4HodF1.js.map → live-graph-BXDsdzBv.js.map} +1 -1
- package/dist/_chunks/{logger-pumCm3Il.js → logger-DDirEsn7.js} +3 -4
- package/dist/_chunks/{logger-pumCm3Il.js.map → logger-DDirEsn7.js.map} +1 -1
- package/dist/_chunks/navigation-root-B00jjGd5.js +233 -0
- package/dist/_chunks/navigation-root-B00jjGd5.js.map +1 -0
- package/dist/_chunks/{segment-context-CjOlyB8Y.js → param-value-C8TNYchQ.js} +2 -33
- package/dist/_chunks/param-value-C8TNYchQ.js.map +1 -0
- package/dist/_chunks/{poison-scan-BAxfTT5L.js → poison-scan-BoDLgbix.js} +2 -2
- package/dist/_chunks/{poison-scan-BAxfTT5L.js.map → poison-scan-BoDLgbix.js.map} +1 -1
- package/dist/_chunks/{router-ref-BzqbPwYC.js → router-ref-8gr8qsxN.js} +2 -2
- package/dist/_chunks/{router-ref-BzqbPwYC.js.map → router-ref-8gr8qsxN.js.map} +1 -1
- package/dist/_chunks/{rsc-cache-key-DD0fl_-s.js → rsc-cache-key-ClUiXQnK.js} +2 -2
- package/dist/_chunks/{rsc-cache-key-DD0fl_-s.js.map → rsc-cache-key-ClUiXQnK.js.map} +1 -1
- package/dist/_chunks/{scanner-BRIOmHE2.js → scanner-tdFPvDYi.js} +174 -7
- package/dist/_chunks/scanner-tdFPvDYi.js.map +1 -0
- package/dist/_chunks/segment-context-D9_89u34.js +34 -0
- package/dist/_chunks/segment-context-D9_89u34.js.map +1 -0
- package/dist/_chunks/singleflight-2lUWfcAk.js +54 -0
- package/dist/_chunks/singleflight-2lUWfcAk.js.map +1 -0
- package/dist/_chunks/{ssr-data-Ya2HJPFp.js → ssr-data-BQGhTPAK.js} +2 -17
- package/dist/_chunks/ssr-data-BQGhTPAK.js.map +1 -0
- package/dist/_chunks/{walkers-BU6z9xRV.js → walkers-DNX05dC0.js} +2 -2
- package/dist/_chunks/{walkers-BU6z9xRV.js.map → walkers-DNX05dC0.js.map} +1 -1
- package/dist/adapters/cloudflare-dev.js +1 -1
- package/dist/adapters/cloudflare-kv-cache.js +1 -1
- package/dist/adapters/cloudflare.js +1 -1
- package/dist/adapters/nitro.d.ts +1 -1
- package/dist/adapters/nitro.d.ts.map +1 -1
- package/dist/adapters/nitro.js.map +1 -1
- package/dist/analyze/crawl-entry.js +2 -2
- package/dist/analyze/graph-command.js +2 -2
- package/dist/cache/index.js +1 -1
- package/dist/cache/singleflight.d.ts +2 -0
- package/dist/cache/singleflight.d.ts.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/client/browser-entry/hydrate.d.ts +21 -15
- package/dist/client/browser-entry/hydrate.d.ts.map +1 -1
- package/dist/client/browser-entry/index.d.ts +4 -3
- package/dist/client/browser-entry/index.d.ts.map +1 -1
- package/dist/client/browser-entry/post-hydration.d.ts.map +1 -1
- package/dist/client/browser-entry/router-init.d.ts +17 -1
- package/dist/client/browser-entry/router-init.d.ts.map +1 -1
- package/dist/client/error-boundary.js +1 -1
- package/dist/client/global-context.d.ts +15 -0
- package/dist/client/global-context.d.ts.map +1 -0
- package/dist/client/index.js +138 -35
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal.d.ts +0 -1
- package/dist/client/internal.d.ts.map +1 -1
- package/dist/client/internal.js +206 -55
- package/dist/client/internal.js.map +1 -1
- package/dist/client/link.d.ts.map +1 -1
- package/dist/client/location-search.d.ts +12 -0
- package/dist/client/location-search.d.ts.map +1 -0
- package/dist/client/navigation-api.d.ts.map +1 -1
- package/dist/client/navigation-commit.d.ts +18 -0
- package/dist/client/navigation-commit.d.ts.map +1 -1
- package/dist/client/navigation-context.d.ts +13 -11
- package/dist/client/navigation-context.d.ts.map +1 -1
- package/dist/client/navigation-root.d.ts +47 -108
- package/dist/client/navigation-root.d.ts.map +1 -1
- package/dist/client/navigation-transition.d.ts +136 -0
- package/dist/client/navigation-transition.d.ts.map +1 -0
- package/dist/client/nuqs-adapter.d.ts.map +1 -1
- package/dist/client/params-context.d.ts +4 -5
- package/dist/client/params-context.d.ts.map +1 -1
- package/dist/client/react-root.d.ts +44 -0
- package/dist/client/react-root.d.ts.map +1 -0
- package/dist/client/router-pipeline.d.ts +2 -2
- package/dist/client/router-pipeline.d.ts.map +1 -1
- package/dist/client/router-types.d.ts +12 -2
- package/dist/client/router-types.d.ts.map +1 -1
- package/dist/client/router.d.ts.map +1 -1
- package/dist/client/segment-cache.d.ts +39 -0
- package/dist/client/segment-cache.d.ts.map +1 -1
- package/dist/client/segment-context.d.ts.map +1 -1
- package/dist/client/segment-outlet.d.ts +25 -14
- package/dist/client/segment-outlet.d.ts.map +1 -1
- package/dist/client/segment-update-context.d.ts +3 -9
- package/dist/client/segment-update-context.d.ts.map +1 -1
- package/dist/client/slot-content-cache-context.d.ts +35 -0
- package/dist/client/slot-content-cache-context.d.ts.map +1 -0
- package/dist/client/ssr-data.d.ts +8 -2
- package/dist/client/ssr-data.d.ts.map +1 -1
- package/dist/client/state.d.ts +0 -15
- package/dist/client/state.d.ts.map +1 -1
- package/dist/client/use-pathname.d.ts +13 -11
- package/dist/client/use-pathname.d.ts.map +1 -1
- package/dist/client/use-search-params.d.ts +13 -13
- package/dist/client/use-search-params.d.ts.map +1 -1
- package/dist/client/use-segment-params.d.ts +18 -68
- package/dist/client/use-segment-params.d.ts.map +1 -1
- package/dist/config-types.d.ts +17 -0
- package/dist/config-types.d.ts.map +1 -1
- package/dist/config-validation.d.ts.map +1 -1
- package/dist/cookies/index.js +1 -1
- package/dist/dev-tools/holding-server.d.ts +15 -10
- package/dist/dev-tools/holding-server.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -43
- package/dist/index.js.map +1 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/shims.d.ts.map +1 -1
- package/dist/plugins/static-build.d.ts +2 -2
- package/dist/plugins/static-build.d.ts.map +1 -1
- package/dist/routing/codegen-write.d.ts.map +1 -1
- package/dist/routing/index.js +2 -2
- package/dist/routing/interception-overlap.d.ts +35 -0
- package/dist/routing/interception-overlap.d.ts.map +1 -0
- package/dist/routing/interception.d.ts.map +1 -1
- package/dist/rsc-runtime/ssr.d.ts +3 -1
- package/dist/rsc-runtime/ssr.d.ts.map +1 -1
- package/dist/server/als-registry.d.ts +6 -0
- package/dist/server/als-registry.d.ts.map +1 -1
- package/dist/server/csp-nonce.d.ts +45 -0
- package/dist/server/csp-nonce.d.ts.map +1 -0
- package/dist/server/default-status-page.d.ts.map +1 -1
- package/dist/server/deny-renderer.d.ts.map +1 -1
- package/dist/server/flight-scripts.d.ts +5 -2
- package/dist/server/flight-scripts.d.ts.map +1 -1
- package/dist/server/html-injector-core.d.ts +17 -2
- package/dist/server/html-injector-core.d.ts.map +1 -1
- package/dist/server/html-injectors.d.ts +3 -2
- package/dist/server/html-injectors.d.ts.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/internal.js +86 -37
- package/dist/server/internal.js.map +1 -1
- package/dist/server/metadata-render.d.ts.map +1 -1
- package/dist/server/node-stream-transforms.d.ts +3 -17
- package/dist/server/node-stream-transforms.d.ts.map +1 -1
- package/dist/server/nuqs-ssr-provider.d.ts +7 -3
- package/dist/server/nuqs-ssr-provider.d.ts.map +1 -1
- package/dist/server/pipeline-phases.d.ts.map +1 -1
- package/dist/server/prebuilt/key-discipline.d.ts +32 -3
- package/dist/server/prebuilt/key-discipline.d.ts.map +1 -1
- package/dist/server/primitives.d.ts.map +1 -1
- package/dist/server/render-utils.d.ts +4 -3
- package/dist/server/render-utils.d.ts.map +1 -1
- package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -1
- package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/index.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
- package/dist/server/ssr-bridge-types.d.ts +22 -2
- package/dist/server/ssr-bridge-types.d.ts.map +1 -1
- package/dist/server/ssr-entry.d.ts.map +1 -1
- package/dist/server/ssr-render.d.ts +5 -1
- package/dist/server/ssr-render.d.ts.map +1 -1
- package/dist/server/ssr-wrappers.d.ts +59 -27
- package/dist/server/ssr-wrappers.d.ts.map +1 -1
- package/dist/server/types.d.ts +10 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/shims/navigation-rsc.d.ts +21 -0
- package/dist/shims/navigation-rsc.d.ts.map +1 -0
- package/docs/api/30-api-server.mdx +1 -0
- package/docs/api/35-api-typescript.mdx +4 -83
- package/docs/learn/03-fetching-data.mdx +1 -1
- package/docs/learn/{03b-access-control.mdx → 04-access-control.mdx} +2 -17
- package/docs/learn/05-the-flush-point.mdx +175 -0
- package/docs/learn/{05-typed-params.mdx → 06-typed-params.mdx} +1 -1
- package/docs/learn/07-typed-routes.mdx +25 -49
- package/docs/learn/{08-streaming.mdx → 09-streaming.mdx} +1 -7
- package/docs/learn/{10-middleware.mdx → 11-middleware.mdx} +1 -0
- package/package.json +3 -3
- package/src/adapters/nitro.ts +7 -7
- package/src/cache/singleflight.ts +5 -0
- package/src/client/browser-entry/hydrate.ts +54 -104
- package/src/client/browser-entry/index.ts +16 -6
- package/src/client/browser-entry/post-hydration.ts +3 -2
- package/src/client/browser-entry/router-init.ts +84 -33
- package/src/client/global-context.ts +31 -0
- package/src/client/internal.ts +1 -2
- package/src/client/link.tsx +18 -18
- package/src/client/location-search.ts +15 -0
- package/src/client/navigation-api.ts +4 -2
- package/src/client/navigation-commit.ts +48 -2
- package/src/client/navigation-context.ts +25 -37
- package/src/client/navigation-root.tsx +55 -411
- package/src/client/navigation-transition.ts +278 -0
- package/src/client/nuqs-adapter.tsx +4 -5
- package/src/client/params-context.ts +13 -18
- package/src/client/react-root.ts +72 -0
- package/src/client/router-lifecycle.ts +1 -1
- package/src/client/router-pipeline.ts +96 -22
- package/src/client/router-types.ts +12 -2
- package/src/client/router.ts +48 -36
- package/src/client/segment-cache.ts +70 -2
- package/src/client/segment-context.ts +7 -4
- package/src/client/segment-outlet.tsx +41 -86
- package/src/client/segment-update-context.ts +7 -26
- package/src/client/slot-content-cache-context.ts +43 -0
- package/src/client/ssr-data.ts +8 -2
- package/src/client/state.ts +0 -26
- package/src/client/use-pathname.ts +21 -31
- package/src/client/use-search-params.ts +31 -29
- package/src/client/use-segment-params.ts +27 -126
- package/src/config-types.ts +17 -0
- package/src/config-validation.ts +17 -0
- package/src/dev-tools/holding-server.ts +23 -12
- package/src/index.ts +26 -11
- package/src/plugins/dev-server.ts +9 -12
- package/src/plugins/entries.ts +3 -0
- package/src/plugins/shims.ts +8 -7
- package/src/plugins/static-build.ts +9 -5
- package/src/react-canary.d.ts +2 -0
- package/src/routing/codegen-write.ts +2 -0
- package/src/routing/interception-overlap.ts +141 -0
- package/src/routing/interception.ts +118 -5
- package/src/rsc-runtime/ssr.ts +3 -2
- package/src/server/als-registry.ts +6 -0
- package/src/server/csp-nonce.ts +70 -0
- package/src/server/default-status-page.ts +1 -0
- package/src/server/deny-renderer.ts +7 -3
- package/src/server/flight-scripts.ts +9 -4
- package/src/server/html-injector-core.ts +26 -9
- package/src/server/html-injectors.ts +8 -8
- package/src/server/metadata-render.ts +26 -4
- package/src/server/node-stream-transforms.ts +7 -20
- package/src/server/nuqs-ssr-provider.tsx +8 -7
- package/src/server/pipeline-phases.ts +5 -0
- package/src/server/prebuilt/key-discipline.ts +82 -13
- package/src/server/prebuilt-runtime.ts +2 -2
- package/src/server/primitives.ts +4 -4
- package/src/server/render-utils.ts +8 -4
- package/src/server/rsc-entry/action-middleware-runner.ts +7 -0
- package/src/server/rsc-entry/error-renderer.ts +5 -2
- package/src/server/rsc-entry/index.ts +8 -0
- package/src/server/rsc-entry/ssr-renderer.ts +11 -4
- package/src/server/ssr-bridge-types.ts +22 -2
- package/src/server/ssr-entry.ts +35 -28
- package/src/server/ssr-render.ts +13 -4
- package/src/server/ssr-wrappers.tsx +81 -61
- package/src/server/types.ts +10 -0
- package/src/shared/slot-params.ts +3 -4
- package/src/shims/navigation-rsc.ts +47 -0
- package/dist/_chunks/build-manifest-DWppEdLB.js.map +0 -1
- package/dist/_chunks/cache-api-CQeYzA5g.js.map +0 -1
- package/dist/_chunks/convention-lint-DO10_pVl.js.map +0 -1
- package/dist/_chunks/href-validation-CMc5JRls.js.map +0 -1
- package/dist/_chunks/scanner-BRIOmHE2.js.map +0 -1
- package/dist/_chunks/segment-context-CjOlyB8Y.js.map +0 -1
- package/dist/_chunks/slot-params-BCTmZkQB.js +0 -76
- package/dist/_chunks/slot-params-BCTmZkQB.js.map +0 -1
- package/dist/_chunks/ssr-data-Ya2HJPFp.js.map +0 -1
- package/dist/_chunks/use-segment-params-DzTBpkvj.js +0 -398
- package/dist/_chunks/use-segment-params-DzTBpkvj.js.map +0 -1
- package/docs/learn/04-loading-states.mdx +0 -67
- package/docs/learn/04b-the-flush-point.mdx +0 -115
- package/docs/learn/12-client-navigation.mdx +0 -176
- package/docs/learn/13-configuration.mdx +0 -166
- package/docs/more/01-advanced-routing.mdx +0 -344
- package/docs/more/02-advanced-forms.mdx +0 -137
- package/docs/more/03-coming-from-nextjs.mdx +0 -186
- package/docs/more/04-metadata-and-fonts.mdx +0 -193
- package/docs/more/04b-mdx.mdx +0 -229
- package/docs/more/05-content-collections.mdx +0 -90
- package/docs/more/06-instrumentation.mdx +0 -214
- package/docs/more/07-security.mdx +0 -129
- package/docs/more/08-developer-experience.mdx +0 -134
- package/docs/more/40-why-timber.mdx +0 -50
- package/docs/more/41-timber-vs-nextjs.mdx +0 -81
- package/docs/more/42-timber-vs-others.mdx +0 -68
- package/docs/more/50-ai-agent-instructions.mdx +0 -171
- /package/docs/learn/{06-forms-and-actions.mdx → 08-forms-and-actions.mdx} +0 -0
- /package/docs/learn/{09-caching.mdx → 10-caching.mdx} +0 -0
- /package/docs/learn/{11-error-handling.mdx → 12-error-handling.mdx} +0 -0
- /package/docs/learn/{14-deploying.mdx → 13-deploying.mdx} +0 -0
|
@@ -13,8 +13,10 @@
|
|
|
13
13
|
*
|
|
14
14
|
* The holding server is started in rootSync's config() hook (the
|
|
15
15
|
* earliest Vite plugin lifecycle point where we know the port) and
|
|
16
|
-
* closed in timber-dev-server's configureServer() hook
|
|
17
|
-
* plugin,
|
|
16
|
+
* closed directly in timber-dev-server's configureServer() hook
|
|
17
|
+
* (the last plugin, fire-and-forget). configureServer runs during
|
|
18
|
+
* createServer(), well before Vite's port probe and bind, so the
|
|
19
|
+
* port is free by the time httpServerStart() runs. (TIM-1419)
|
|
18
20
|
*
|
|
19
21
|
* Browser requests (Accept: text/html) get the HTML holding page.
|
|
20
22
|
* API requests (Accept: application/json) get a 503 JSON response.
|
|
@@ -24,10 +26,12 @@
|
|
|
24
26
|
*/
|
|
25
27
|
export interface HoldingServer {
|
|
26
28
|
/**
|
|
27
|
-
* Start listening on the given port.
|
|
29
|
+
* Start listening on the given port and host.
|
|
30
|
+
* The host must match Vite's resolved `server.host` so the probe
|
|
31
|
+
* faithfully detects conflicts on the same address Vite will bind.
|
|
28
32
|
* Returns the actual bound port (useful when port is 0 for OS assignment).
|
|
29
33
|
*/
|
|
30
|
-
listen(port: number): Promise<number>;
|
|
34
|
+
listen(port: number, host?: string): Promise<number>;
|
|
31
35
|
/** Gracefully close the server and stop accepting connections. */
|
|
32
36
|
close(): Promise<void>;
|
|
33
37
|
}
|
|
@@ -42,12 +46,13 @@ export interface HoldingServer {
|
|
|
42
46
|
* const holding = createHoldingServer();
|
|
43
47
|
* await bindWithBump((p) => holding.listen(p), { startPort: 3000, autoBump: true });
|
|
44
48
|
*
|
|
45
|
-
* // In last plugin's configureServer() —
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
49
|
+
* // In last plugin's configureServer() — close directly so Vite 8's
|
|
50
|
+
* // isPortAvailable() probe and httpServer.listen() both see a free
|
|
51
|
+
* // port. SO_REUSEADDR allows immediate rebind. (TIM-1419)
|
|
52
|
+
* if (ctx.holdingServer) {
|
|
53
|
+
* ctx.holdingServer.close().catch(() => {});
|
|
54
|
+
* ctx.holdingServer = null;
|
|
55
|
+
* }
|
|
51
56
|
* ```
|
|
52
57
|
*/
|
|
53
58
|
export declare function createHoldingServer(): HoldingServer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"holding-server.d.ts","sourceRoot":"","sources":["../../src/dev-tools/holding-server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"holding-server.d.ts","sourceRoot":"","sources":["../../src/dev-tools/holding-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAErD,kEAAkE;IAClE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AA8ED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAyDnD"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,MAAM,CAAC;AAyCjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAa1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQ1D,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAElG;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,MAAM;CAAG;AAE1B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAEvE;AAyGD,wBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,MAAM,CAAC;AAyCjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAa1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQ1D,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAElG;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,MAAM;CAAG;AAE1B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAEvE;AAyGD,wBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAqYhE;eAEc,MAAM"}
|
package/dist/index.js
CHANGED
|
@@ -2,17 +2,17 @@ import { l as registerDevDiscovery } from "./_chunks/graph-cache-CP4GEmf9.js";
|
|
|
2
2
|
import { n as isScannableSourceFile, t as buildSourceExtensions } from "./_chunks/scan-BoP17W3w.js";
|
|
3
3
|
import { t as RSC_CONTENT_TYPE } from "./_chunks/rsc-media-type-DDc7duTD.js";
|
|
4
4
|
import { a as canonicalize, d as isMetadataRouteServePath, u as isDynamicMetadataExtension } from "./_chunks/segment-keys-BhqoHiLc.js";
|
|
5
|
-
import { i as matchUrlParts, n as scanRoutes, r as collectInterceptionRewrites } from "./_chunks/scanner-
|
|
5
|
+
import { i as matchUrlParts, n as scanRoutes, r as collectInterceptionRewrites } from "./_chunks/scanner-tdFPvDYi.js";
|
|
6
6
|
import { t as MDX_EXTENSIONS } from "./_chunks/mdx-file-CXyHGUpS.js";
|
|
7
|
-
import { h as swallow } from "./_chunks/logger-
|
|
8
|
-
import { c as writeRouteCodegen, i as getPrerenderExport, l as buildDirToRouteMap, n as formatConventionWarnings, r as lintConventions, s as flushCodegenWrites, t as checkAppDirExists } from "./_chunks/convention-lint-
|
|
7
|
+
import { h as swallow } from "./_chunks/logger-DDirEsn7.js";
|
|
8
|
+
import { c as writeRouteCodegen, i as getPrerenderExport, l as buildDirToRouteMap, n as formatConventionWarnings, r as lintConventions, s as flushCodegenWrites, t as checkAppDirExists } from "./_chunks/convention-lint-Ph6luW4c.js";
|
|
9
9
|
import { c as resolveClientJavascript, i as mergeFileConfig, l as createNoopTimer, o as resolveAppDir, r as loadTimberConfigFile, s as resolveBuildDir, t as createPluginContext } from "./_chunks/plugin-context-8idfR3UZ.js";
|
|
10
|
-
import { r as validateSchemaAgainstRoutes, t as collectLeafRoutes } from "./_chunks/walkers-
|
|
10
|
+
import { r as validateSchemaAgainstRoutes, t as collectLeafRoutes } from "./_chunks/walkers-DNX05dC0.js";
|
|
11
11
|
import { i as poisonPillSource, r as markerFor, t as EXPLICIT_MARKERS } from "./_chunks/poison-rules-DoEhbqaY.js";
|
|
12
12
|
import { i as withBasePath, n as normalizeBasePath, t as isRelativeBase } from "./_chunks/base-path-DaQrzbez.js";
|
|
13
|
+
import { t as EMPTY_BUILD_MANIFEST } from "./_chunks/build-manifest-DTmSGLRz.js";
|
|
13
14
|
import { t as rscPayloadPath } from "./_chunks/rsc-payload-path-B_LBodc2.js";
|
|
14
15
|
import { a as REDIRECTS_FILE, n as detectFsIdentity, o as RESERVED_OUTPUT_PATHS, r as fsKey, t as EXACT_FS_IDENTITY } from "./_chunks/fs-identity-D7vb6GdI.js";
|
|
15
|
-
import { t as EMPTY_BUILD_MANIFEST } from "./_chunks/build-manifest-DWppEdLB.js";
|
|
16
16
|
import { t as fnv1aHash } from "./_chunks/fast-hash-C-tVYrLb.js";
|
|
17
17
|
import { t as formatSize } from "./_chunks/format-BKclgVbk.js";
|
|
18
18
|
import { createLogger, normalizePath, parseAst } from "vite";
|
|
@@ -1193,6 +1193,7 @@ var knownKeys = new Set(Object.keys({
|
|
|
1193
1193
|
reactCompiler: true,
|
|
1194
1194
|
sitemap: true,
|
|
1195
1195
|
buildDir: true,
|
|
1196
|
+
cache: true,
|
|
1196
1197
|
clientSegmentCache: true,
|
|
1197
1198
|
topLoader: true,
|
|
1198
1199
|
budget: true
|
|
@@ -1296,6 +1297,14 @@ function validateConfig(config) {
|
|
|
1296
1297
|
suggestion: "Example: budget: { firstLoadJs: 150_000 } for a ~150 kB limit."
|
|
1297
1298
|
});
|
|
1298
1299
|
}
|
|
1300
|
+
if (config.cache != null && typeof config.cache === "object") {
|
|
1301
|
+
if (config.cache.strictKeyDiscipline !== void 0 && typeof config.cache.strictKeyDiscipline !== "boolean") errors.push({
|
|
1302
|
+
field: "cache.strictKeyDiscipline",
|
|
1303
|
+
message: `cache.strictKeyDiscipline must be a boolean (got ${JSON.stringify(config.cache.strictKeyDiscipline)}).`,
|
|
1304
|
+
value: config.cache.strictKeyDiscipline,
|
|
1305
|
+
suggestion: "Use cache: { strictKeyDiscipline: true } to promote key-discipline warnings to errors."
|
|
1306
|
+
});
|
|
1307
|
+
}
|
|
1299
1308
|
const MOVED_TO_CACHE_FILE = /* @__PURE__ */ new Set(["cacheHandler", "cdnPurge"]);
|
|
1300
1309
|
for (const key of Object.keys(config)) if (!knownKeys.has(key)) errors.push({
|
|
1301
1310
|
field: key,
|
|
@@ -1515,7 +1524,7 @@ function createGraphEndpointMiddleware(server, ctx) {
|
|
|
1515
1524
|
}
|
|
1516
1525
|
reflectCors(res, origin);
|
|
1517
1526
|
try {
|
|
1518
|
-
const { classifyLiveFile, classifyLiveProject } = await import("./_chunks/live-graph-
|
|
1527
|
+
const { classifyLiveFile, classifyLiveProject } = await import("./_chunks/live-graph-BXDsdzBv.js");
|
|
1519
1528
|
const preserveSymlinks = server.config.resolve.preserveSymlinks;
|
|
1520
1529
|
const root = normalizePath(preserveSymlinks ? ctx.root : await realpath(ctx.root));
|
|
1521
1530
|
const appDir = normalizePath(preserveSymlinks ? ctx.appDir : await realpath(ctx.appDir).catch(() => join(root, relative(ctx.root, ctx.appDir))));
|
|
@@ -1894,7 +1903,7 @@ function timberDevServer(ctx) {
|
|
|
1894
1903
|
* rewritten /index.html. Vite-internal and asset requests are
|
|
1895
1904
|
* filtered out explicitly and passed through to Vite.
|
|
1896
1905
|
*/
|
|
1897
|
-
configureServer(server) {
|
|
1906
|
+
async configureServer(server) {
|
|
1898
1907
|
const configPaths = CONFIG_FILE_NAMES.map((name) => join(ctx.root, name));
|
|
1899
1908
|
server.watcher.add(configPaths);
|
|
1900
1909
|
listenForClientErrors(server, ctx.root);
|
|
@@ -1923,13 +1932,8 @@ function timberDevServer(ctx) {
|
|
|
1923
1932
|
server.middlewares.use(createTimberMiddleware(server, ctx));
|
|
1924
1933
|
registerDevDiscovery(server.httpServer, ctx.root, server.config);
|
|
1925
1934
|
if (ctx.holdingServer) {
|
|
1926
|
-
|
|
1927
|
-
const holdingRef = ctx.holdingServer;
|
|
1935
|
+
await ctx.holdingServer.close().catch(() => {});
|
|
1928
1936
|
ctx.holdingServer = null;
|
|
1929
|
-
server.listen = async (port, isRestart) => {
|
|
1930
|
-
await holdingRef.close().catch(() => {});
|
|
1931
|
-
return originalListen(port, isRestart);
|
|
1932
|
-
};
|
|
1933
1937
|
}
|
|
1934
1938
|
ctx.timer.end("dev-server-setup");
|
|
1935
1939
|
const summary = ctx.timer.formatSummary();
|
|
@@ -2302,6 +2306,7 @@ function generateConfigModule(ctx) {
|
|
|
2302
2306
|
forms: serializeFormsConfig(ctx.config.forms),
|
|
2303
2307
|
deploymentId: ctx.deploymentId ?? null,
|
|
2304
2308
|
clientSegmentCache: ctx.config.clientSegmentCache ?? false,
|
|
2309
|
+
cache: { strictKeyDiscipline: ctx.config.cache?.strictKeyDiscipline ?? false },
|
|
2305
2310
|
devBrowserLogs: ctx.config.devBrowserLogs
|
|
2306
2311
|
};
|
|
2307
2312
|
return [
|
|
@@ -3158,7 +3163,11 @@ function timberShims(_ctx) {
|
|
|
3158
3163
|
for (const marker of EXPLICIT_MARKERS) if (id === marker.specifier) return marker.virtualId;
|
|
3159
3164
|
const cleanId = stripJsExtension(id);
|
|
3160
3165
|
if (cleanId in SHIM_MAP) {
|
|
3161
|
-
if (
|
|
3166
|
+
if (cleanId === "next/navigation") {
|
|
3167
|
+
const env = envName(this);
|
|
3168
|
+
if (env === "client") return resolve(SHIMS_DIR, "navigation-client.ts");
|
|
3169
|
+
if (env === "rsc") return resolve(SHIMS_DIR, "navigation-rsc.ts");
|
|
3170
|
+
}
|
|
3162
3171
|
return SHIM_MAP[cleanId];
|
|
3163
3172
|
}
|
|
3164
3173
|
if (cleanId === "#server-only-guard") {
|
|
@@ -6695,19 +6704,6 @@ async function stripJsFromRscAssetsManifests(buildDir) {
|
|
|
6695
6704
|
//#endregion
|
|
6696
6705
|
//#region src/server/flight-scripts.ts
|
|
6697
6706
|
/**
|
|
6698
|
-
* Shared Flight data script generation.
|
|
6699
|
-
*
|
|
6700
|
-
* Both html-injectors.ts (Web Streams / dev) and node-stream-transforms.ts
|
|
6701
|
-
* (Node streams / production) use this module to generate inline `<script>`
|
|
6702
|
-
* tags for RSC Flight data injection.
|
|
6703
|
-
*
|
|
6704
|
-
* The init script goes in `<head>` as part of the HTML shell (guaranteed
|
|
6705
|
-
* to execute before any streaming chunk scripts). Push scripts are emitted
|
|
6706
|
-
* as RSC chunks arrive during streaming.
|
|
6707
|
-
*
|
|
6708
|
-
* See design/02-rendering-pipeline.md, LOCAL-415
|
|
6709
|
-
*/
|
|
6710
|
-
/**
|
|
6711
6707
|
* Escape a JSON string for safe embedding inside an HTML `<script>` tag.
|
|
6712
6708
|
*
|
|
6713
6709
|
* Prevents XSS via `<\/script>` injection and handles Unicode line/paragraph
|
|
@@ -6843,7 +6839,6 @@ function staticOutputPath(entry) {
|
|
|
6843
6839
|
* @internal Exported for testing.
|
|
6844
6840
|
*/
|
|
6845
6841
|
var StaticOutputPaths = class {
|
|
6846
|
-
identity;
|
|
6847
6842
|
claimed = /* @__PURE__ */ new Map();
|
|
6848
6843
|
/** Every ancestor directory of a claimed path, mapped to its claimant. */
|
|
6849
6844
|
directories = /* @__PURE__ */ new Map();
|
|
@@ -6855,6 +6850,7 @@ var StaticOutputPaths = class {
|
|
|
6855
6850
|
* asked, not assumed. Folding unconditionally would reject `/Foo` beside
|
|
6856
6851
|
* `/foo` on Linux, where both are perfectly servable files.
|
|
6857
6852
|
*/
|
|
6853
|
+
identity;
|
|
6858
6854
|
constructor(identity = EXACT_FS_IDENTITY) {
|
|
6859
6855
|
this.identity = identity;
|
|
6860
6856
|
}
|
|
@@ -6905,10 +6901,10 @@ function ancestors(relPath) {
|
|
|
6905
6901
|
* @internal Exported for testing.
|
|
6906
6902
|
*/
|
|
6907
6903
|
var StaticSiteWriter = class {
|
|
6908
|
-
staticDir;
|
|
6909
6904
|
/** Content-Type per URL path for extensionless API routes (TIM-1241). */
|
|
6910
6905
|
contentTypes = {};
|
|
6911
6906
|
paths;
|
|
6907
|
+
staticDir;
|
|
6912
6908
|
constructor(staticDir, identity = EXACT_FS_IDENTITY) {
|
|
6913
6909
|
this.staticDir = staticDir;
|
|
6914
6910
|
this.paths = new StaticOutputPaths(identity);
|
|
@@ -10800,8 +10796,10 @@ function validateKeyFormat(key) {
|
|
|
10800
10796
|
*
|
|
10801
10797
|
* The holding server is started in rootSync's config() hook (the
|
|
10802
10798
|
* earliest Vite plugin lifecycle point where we know the port) and
|
|
10803
|
-
* closed in timber-dev-server's configureServer() hook
|
|
10804
|
-
* plugin,
|
|
10799
|
+
* closed directly in timber-dev-server's configureServer() hook
|
|
10800
|
+
* (the last plugin, fire-and-forget). configureServer runs during
|
|
10801
|
+
* createServer(), well before Vite's port probe and bind, so the
|
|
10802
|
+
* port is free by the time httpServerStart() runs. (TIM-1419)
|
|
10805
10803
|
*
|
|
10806
10804
|
* Browser requests (Accept: text/html) get the HTML holding page.
|
|
10807
10805
|
* API requests (Accept: application/json) get a 503 JSON response.
|
|
@@ -10891,12 +10889,13 @@ var HOLDING_PAGE_HTML = [
|
|
|
10891
10889
|
* const holding = createHoldingServer();
|
|
10892
10890
|
* await bindWithBump((p) => holding.listen(p), { startPort: 3000, autoBump: true });
|
|
10893
10891
|
*
|
|
10894
|
-
* // In last plugin's configureServer() —
|
|
10895
|
-
*
|
|
10896
|
-
*
|
|
10897
|
-
*
|
|
10898
|
-
*
|
|
10899
|
-
*
|
|
10892
|
+
* // In last plugin's configureServer() — close directly so Vite 8's
|
|
10893
|
+
* // isPortAvailable() probe and httpServer.listen() both see a free
|
|
10894
|
+
* // port. SO_REUSEADDR allows immediate rebind. (TIM-1419)
|
|
10895
|
+
* if (ctx.holdingServer) {
|
|
10896
|
+
* ctx.holdingServer.close().catch(() => {});
|
|
10897
|
+
* ctx.holdingServer = null;
|
|
10898
|
+
* }
|
|
10900
10899
|
* ```
|
|
10901
10900
|
*/
|
|
10902
10901
|
function createHoldingServer() {
|
|
@@ -10922,10 +10921,10 @@ function createHoldingServer() {
|
|
|
10922
10921
|
res.end(HOLDING_PAGE_HTML);
|
|
10923
10922
|
});
|
|
10924
10923
|
return {
|
|
10925
|
-
listen(port) {
|
|
10924
|
+
listen(port, host) {
|
|
10926
10925
|
return new Promise((resolve, reject) => {
|
|
10927
10926
|
server.once("error", reject);
|
|
10928
|
-
server.listen(port, () => {
|
|
10927
|
+
server.listen(port, host, () => {
|
|
10929
10928
|
server.removeListener("error", reject);
|
|
10930
10929
|
const addr = server.address();
|
|
10931
10930
|
resolve(typeof addr === "object" && addr ? addr.port : port);
|
|
@@ -10933,6 +10932,7 @@ function createHoldingServer() {
|
|
|
10933
10932
|
});
|
|
10934
10933
|
},
|
|
10935
10934
|
close() {
|
|
10935
|
+
server.closeAllConnections();
|
|
10936
10936
|
return new Promise((resolve, reject) => {
|
|
10937
10937
|
server.close((err) => {
|
|
10938
10938
|
if (err) reject(err);
|
|
@@ -11176,19 +11176,20 @@ function timber(config) {
|
|
|
11176
11176
|
let resolvedDevPort = null;
|
|
11177
11177
|
let resolvedDevPortExplicit = false;
|
|
11178
11178
|
const isMiddlewareMode = Boolean(userConfig.server?.middlewareMode);
|
|
11179
|
+
const resolvedHost = typeof userConfig.server?.host === "string" ? userConfig.server.host : userConfig.server?.host === true ? void 0 : "localhost";
|
|
11179
11180
|
if (command === "serve" && !isPreview && !isMiddlewareMode) {
|
|
11180
11181
|
ctx.holdingServer = createHoldingServer();
|
|
11181
11182
|
const holdingRef = ctx.holdingServer;
|
|
11182
11183
|
const result = await startDevServerPort({
|
|
11183
11184
|
configPort: typeof userConfig.server?.port === "number" ? userConfig.server.port : void 0,
|
|
11184
11185
|
envPort: process.env.PORT,
|
|
11185
|
-
listen: (p) => holdingRef.listen(p)
|
|
11186
|
+
listen: (p) => holdingRef.listen(p, resolvedHost)
|
|
11186
11187
|
});
|
|
11187
11188
|
if (!result.bound) ctx.holdingServer = null;
|
|
11188
|
-
if (result.bound
|
|
11189
|
+
if (result.bound) {
|
|
11189
11190
|
resolvedDevPort = result.port;
|
|
11190
11191
|
resolvedDevPortExplicit = result.explicit;
|
|
11191
|
-
}
|
|
11192
|
+
} else if (result.explicit) resolvedDevPort = result.port;
|
|
11192
11193
|
} else if (command === "serve" && isPreview) {
|
|
11193
11194
|
const start = resolveStartPort({
|
|
11194
11195
|
configPort: typeof userConfig.preview?.port === "number" ? userConfig.preview.port : typeof userConfig.server?.port === "number" ? userConfig.server.port : void 0,
|
|
@@ -11225,7 +11226,7 @@ function timber(config) {
|
|
|
11225
11226
|
if (resolvedDevPort != null) {
|
|
11226
11227
|
if (!isPreview) {
|
|
11227
11228
|
serverConfig.port = resolvedDevPort;
|
|
11228
|
-
serverConfig.strictPort =
|
|
11229
|
+
serverConfig.strictPort = resolvedDevPortExplicit;
|
|
11229
11230
|
}
|
|
11230
11231
|
previewConfig.port = resolvedDevPort;
|
|
11231
11232
|
previewConfig.strictPort = resolvedDevPortExplicit;
|