@timber-js/app 0.2.0-alpha.10 → 0.2.0-alpha.101
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/LICENSE +8 -0
- package/dist/_chunks/actions-BsfxK6yu.js +1061 -0
- package/dist/_chunks/actions-BsfxK6yu.js.map +1 -0
- package/dist/_chunks/build-output-helper-DXnW0qjz.js +61 -0
- package/dist/_chunks/build-output-helper-DXnW0qjz.js.map +1 -0
- package/dist/_chunks/chunk-Cfpv9whK.js +32 -0
- package/dist/_chunks/define-B-Q_UMOD.js +195 -0
- package/dist/_chunks/define-B-Q_UMOD.js.map +1 -0
- package/dist/_chunks/define-cookie-BjpIt4UC.js +194 -0
- package/dist/_chunks/define-cookie-BjpIt4UC.js.map +1 -0
- package/dist/_chunks/define-k32T6NL2.js +123 -0
- package/dist/_chunks/define-k32T6NL2.js.map +1 -0
- package/dist/_chunks/format-Bcn-Iv1x.js +14 -0
- package/dist/_chunks/format-Bcn-Iv1x.js.map +1 -0
- package/dist/_chunks/handler-store-B-lqaGyh.js +54 -0
- package/dist/_chunks/handler-store-B-lqaGyh.js.map +1 -0
- package/dist/_chunks/logger-0m8MsKdc.js +291 -0
- package/dist/_chunks/logger-0m8MsKdc.js.map +1 -0
- package/dist/_chunks/merge-search-params-BphMdht_.js +122 -0
- package/dist/_chunks/merge-search-params-BphMdht_.js.map +1 -0
- package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js → metadata-routes-BU684ls2.js} +1 -1
- package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js.map → metadata-routes-BU684ls2.js.map} +1 -1
- package/dist/_chunks/navigation-root-yx917rG0.js +96 -0
- package/dist/_chunks/navigation-root-yx917rG0.js.map +1 -0
- package/dist/_chunks/registry-I2ss-lvy.js +20 -0
- package/dist/_chunks/registry-I2ss-lvy.js.map +1 -0
- package/dist/_chunks/router-ref-h3-UaCQv.js +28 -0
- package/dist/_chunks/router-ref-h3-UaCQv.js.map +1 -0
- package/dist/_chunks/schema-bridge-Cxu4l-7p.js +86 -0
- package/dist/_chunks/schema-bridge-Cxu4l-7p.js.map +1 -0
- package/dist/_chunks/segment-classify-BjfuctV2.js +137 -0
- package/dist/_chunks/segment-classify-BjfuctV2.js.map +1 -0
- package/dist/_chunks/segment-context-Dx_OizxD.js +34 -0
- package/dist/_chunks/segment-context-Dx_OizxD.js.map +1 -0
- package/dist/_chunks/{ssr-data-MjmprTmO.js → ssr-data-B4CdH7rE.js} +1 -1
- package/dist/_chunks/ssr-data-B4CdH7rE.js.map +1 -0
- package/dist/_chunks/stale-reload-Bab885FO.js +64 -0
- package/dist/_chunks/stale-reload-Bab885FO.js.map +1 -0
- package/dist/_chunks/tracing-C8V-YGsP.js +329 -0
- package/dist/_chunks/tracing-C8V-YGsP.js.map +1 -0
- package/dist/_chunks/{use-query-states-D5KaffOK.js → use-query-states-B2XTqxDR.js} +7 -20
- package/dist/_chunks/use-query-states-B2XTqxDR.js.map +1 -0
- package/dist/_chunks/use-segment-params-DlsOX1YS.js +185 -0
- package/dist/_chunks/use-segment-params-DlsOX1YS.js.map +1 -0
- package/dist/_chunks/walkers-Tg0Alwcg.js +850 -0
- package/dist/_chunks/walkers-Tg0Alwcg.js.map +1 -0
- package/dist/_chunks/{format-DviM89f0.js → warnings-Cg47l5sk.js} +6 -45
- package/dist/_chunks/warnings-Cg47l5sk.js.map +1 -0
- package/dist/adapters/build-output-helper.d.ts +28 -0
- package/dist/adapters/build-output-helper.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.d.ts +109 -0
- package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.js +73 -0
- package/dist/adapters/cloudflare-dev.js.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts +64 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.js +95 -0
- package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
- package/dist/adapters/cloudflare.d.ts +148 -12
- package/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +142 -38
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/adapters/compress-module.d.ts.map +1 -1
- package/dist/adapters/nitro.d.ts +17 -1
- package/dist/adapters/nitro.d.ts.map +1 -1
- package/dist/adapters/nitro.js +143 -45
- package/dist/adapters/nitro.js.map +1 -1
- package/dist/adapters/shared.d.ts +16 -0
- package/dist/adapters/shared.d.ts.map +1 -0
- package/dist/cache/cache-api.d.ts +24 -0
- package/dist/cache/cache-api.d.ts.map +1 -0
- package/dist/cache/handler-store.d.ts +31 -0
- package/dist/cache/handler-store.d.ts.map +1 -0
- package/dist/cache/index.d.ts +23 -7
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +150 -81
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/singleflight.d.ts +18 -1
- package/dist/cache/singleflight.d.ts.map +1 -1
- package/dist/cache/sizeof.d.ts +22 -0
- package/dist/cache/sizeof.d.ts.map +1 -0
- package/dist/cache/timber-cache.d.ts +1 -1
- package/dist/cache/timber-cache.d.ts.map +1 -1
- package/dist/cli.d.ts +6 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +8 -3
- package/dist/cli.js.map +1 -1
- package/dist/client/browser-dev.d.ts +34 -1
- package/dist/client/browser-dev.d.ts.map +1 -1
- package/dist/client/browser-entry/action-dispatch.d.ts +17 -0
- package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
- package/dist/client/browser-entry/hmr.d.ts +21 -0
- package/dist/client/browser-entry/hmr.d.ts.map +1 -0
- package/dist/client/browser-entry/hydrate.d.ts +46 -0
- package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
- package/dist/client/browser-entry/index.d.ts +30 -0
- package/dist/client/browser-entry/index.d.ts.map +1 -0
- package/dist/client/browser-entry/post-hydration.d.ts +26 -0
- package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
- package/dist/client/browser-entry/router-init.d.ts +23 -0
- package/dist/client/browser-entry/router-init.d.ts.map +1 -0
- package/dist/client/browser-entry/rsc-stream.d.ts +24 -0
- package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
- package/dist/client/browser-entry/scroll.d.ts +19 -0
- package/dist/client/browser-entry/scroll.d.ts.map +1 -0
- package/dist/client/error-boundary.d.ts +12 -5
- package/dist/client/error-boundary.d.ts.map +1 -1
- package/dist/client/error-boundary.js +26 -5
- package/dist/client/error-boundary.js.map +1 -1
- package/dist/client/error-reconstituter.d.ts +54 -0
- package/dist/client/error-reconstituter.d.ts.map +1 -0
- package/dist/client/form.d.ts +16 -27
- package/dist/client/form.d.ts.map +1 -1
- package/dist/client/history.d.ts +19 -4
- package/dist/client/history.d.ts.map +1 -1
- package/dist/client/index.d.ts +9 -24
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +261 -1100
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal.d.ts +19 -0
- package/dist/client/internal.d.ts.map +1 -0
- package/dist/client/internal.js +964 -0
- package/dist/client/internal.js.map +1 -0
- package/dist/client/link-pending-store.d.ts +63 -0
- package/dist/client/link-pending-store.d.ts.map +1 -0
- package/dist/client/link.d.ts +62 -55
- package/dist/client/link.d.ts.map +1 -1
- package/dist/client/nav-link-store.d.ts +36 -0
- package/dist/client/nav-link-store.d.ts.map +1 -0
- package/dist/client/navigation-api-types.d.ts +90 -0
- package/dist/client/navigation-api-types.d.ts.map +1 -0
- package/dist/client/navigation-api.d.ts +115 -0
- package/dist/client/navigation-api.d.ts.map +1 -0
- package/dist/client/navigation-context.d.ts +13 -2
- package/dist/client/navigation-context.d.ts.map +1 -1
- package/dist/client/{transition-root.d.ts → navigation-root.d.ts} +42 -8
- package/dist/client/navigation-root.d.ts.map +1 -0
- package/dist/client/nuqs-adapter.d.ts.map +1 -1
- package/dist/client/router-ref.d.ts +1 -1
- package/dist/client/router.d.ts +70 -4
- package/dist/client/router.d.ts.map +1 -1
- package/dist/client/rsc-fetch.d.ts +38 -3
- package/dist/client/rsc-fetch.d.ts.map +1 -1
- package/dist/client/segment-cache.d.ts +1 -1
- package/dist/client/segment-cache.d.ts.map +1 -1
- package/dist/client/segment-outlet.d.ts +63 -0
- package/dist/client/segment-outlet.d.ts.map +1 -0
- package/dist/client/ssr-data.d.ts +13 -4
- package/dist/client/ssr-data.d.ts.map +1 -1
- package/dist/client/stale-reload.d.ts +15 -0
- package/dist/client/stale-reload.d.ts.map +1 -1
- package/dist/client/state.d.ts +1 -1
- package/dist/client/top-loader.d.ts +5 -5
- package/dist/client/top-loader.d.ts.map +1 -1
- package/dist/client/use-cookie.d.ts +8 -0
- package/dist/client/use-cookie.d.ts.map +1 -1
- package/dist/client/use-link-status.d.ts +5 -5
- package/dist/client/use-link-status.d.ts.map +1 -1
- package/dist/client/{use-navigation-pending.d.ts → use-pending-navigation.d.ts} +4 -4
- package/dist/client/use-pending-navigation.d.ts.map +1 -0
- package/dist/client/use-query-states.d.ts +1 -1
- package/dist/client/use-query-states.d.ts.map +1 -1
- package/dist/client/use-router.d.ts +1 -1
- package/dist/client/{use-params.d.ts → use-segment-params.d.ts} +7 -5
- package/dist/client/use-segment-params.d.ts.map +1 -0
- package/dist/codec.d.ts +33 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +2 -0
- package/dist/config-types.d.ts +294 -0
- package/dist/config-types.d.ts.map +1 -0
- package/dist/config-validation.d.ts +51 -0
- package/dist/config-validation.d.ts.map +1 -0
- package/dist/content/index.d.ts +1 -10
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +0 -2
- package/dist/cookies/define-cookie.d.ts +98 -25
- package/dist/cookies/define-cookie.d.ts.map +1 -1
- package/dist/cookies/index.d.ts +2 -1
- package/dist/cookies/index.d.ts.map +1 -1
- package/dist/cookies/index.js +36 -72
- package/dist/cookies/index.js.map +1 -1
- package/dist/cookies/json-cookie.d.ts +64 -0
- package/dist/cookies/json-cookie.d.ts.map +1 -0
- package/dist/cookies/validation.d.ts +46 -0
- package/dist/cookies/validation.d.ts.map +1 -0
- package/dist/dev-tools/404-page.d.ts +46 -0
- package/dist/dev-tools/404-page.d.ts.map +1 -0
- package/dist/dev-tools/browser-logs.d.ts +84 -0
- package/dist/dev-tools/browser-logs.d.ts.map +1 -0
- package/dist/dev-tools/error-page.d.ts +58 -0
- package/dist/dev-tools/error-page.d.ts.map +1 -0
- package/dist/dev-tools/holding-server.d.ts +54 -0
- package/dist/dev-tools/holding-server.d.ts.map +1 -0
- package/dist/dev-tools/index.d.ts +31 -0
- package/dist/dev-tools/index.d.ts.map +1 -0
- package/dist/{server/dev-span-processor.d.ts → dev-tools/instrumentation.d.ts} +26 -6
- package/dist/dev-tools/instrumentation.d.ts.map +1 -0
- package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
- package/dist/dev-tools/logger.d.ts.map +1 -0
- package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +2 -2
- package/dist/dev-tools/logs.d.ts.map +1 -0
- package/dist/dev-tools/overlay.d.ts +91 -0
- package/dist/dev-tools/overlay.d.ts.map +1 -0
- package/dist/dev-tools/stack-classifier.d.ts +34 -0
- package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
- package/dist/dev-tools/terminal.d.ts +28 -0
- package/dist/dev-tools/terminal.d.ts.map +1 -0
- package/dist/{server/dev-warnings.d.ts → dev-tools/warnings.d.ts} +2 -22
- package/dist/dev-tools/warnings.d.ts.map +1 -0
- package/dist/fonts/ast.d.ts +98 -6
- package/dist/fonts/ast.d.ts.map +1 -1
- package/dist/fonts/bundle.d.ts +48 -0
- package/dist/fonts/bundle.d.ts.map +1 -0
- package/dist/fonts/css.d.ts +1 -0
- package/dist/fonts/css.d.ts.map +1 -1
- package/dist/fonts/dev-middleware.d.ts +22 -0
- package/dist/fonts/dev-middleware.d.ts.map +1 -0
- package/dist/fonts/local.d.ts +1 -1
- package/dist/fonts/pipeline.d.ts +167 -0
- package/dist/fonts/pipeline.d.ts.map +1 -0
- package/dist/fonts/transform.d.ts +78 -0
- package/dist/fonts/transform.d.ts.map +1 -0
- package/dist/fonts/types.d.ts +45 -1
- package/dist/fonts/types.d.ts.map +1 -1
- package/dist/fonts/virtual-modules.d.ts +103 -0
- package/dist/fonts/virtual-modules.d.ts.map +1 -0
- package/dist/index.d.ts +46 -190
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5348 -13285
- package/dist/index.js.map +1 -1
- package/dist/plugin-context.d.ts +107 -0
- package/dist/plugin-context.d.ts.map +1 -0
- package/dist/plugins/adapter-build.d.ts +1 -1
- package/dist/plugins/adapter-build.d.ts.map +1 -1
- package/dist/plugins/build-manifest.d.ts +2 -2
- package/dist/plugins/build-manifest.d.ts.map +1 -1
- package/dist/plugins/build-report.d.ts +9 -7
- package/dist/plugins/build-report.d.ts.map +1 -1
- package/dist/plugins/client-chunks.d.ts +32 -0
- package/dist/plugins/client-chunks.d.ts.map +1 -0
- package/dist/plugins/content.d.ts +1 -1
- package/dist/plugins/content.d.ts.map +1 -1
- package/dist/plugins/dev-server.d.ts +1 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/plugins/entries.d.ts +1 -1
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/fonts.d.ts +17 -73
- package/dist/plugins/fonts.d.ts.map +1 -1
- package/dist/plugins/mdx.d.ts +1 -1
- package/dist/plugins/mdx.d.ts.map +1 -1
- package/dist/plugins/routing.d.ts +1 -1
- package/dist/plugins/routing.d.ts.map +1 -1
- package/dist/plugins/server-bundle.d.ts.map +1 -1
- package/dist/plugins/shims.d.ts +6 -5
- package/dist/plugins/shims.d.ts.map +1 -1
- package/dist/plugins/static-build.d.ts +5 -26
- package/dist/plugins/static-build.d.ts.map +1 -1
- package/dist/routing/codegen-shared.d.ts +55 -0
- package/dist/routing/codegen-shared.d.ts.map +1 -0
- package/dist/routing/codegen-types.d.ts +52 -0
- package/dist/routing/codegen-types.d.ts.map +1 -0
- package/dist/routing/codegen.d.ts +2 -2
- package/dist/routing/codegen.d.ts.map +1 -1
- package/dist/routing/convention-lint.d.ts +41 -0
- package/dist/routing/convention-lint.d.ts.map +1 -0
- package/dist/routing/index.d.ts +5 -1
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +3 -2
- package/dist/routing/link-codegen.d.ts +90 -0
- package/dist/routing/link-codegen.d.ts.map +1 -0
- package/dist/routing/scanner.d.ts +1 -10
- package/dist/routing/scanner.d.ts.map +1 -1
- package/dist/routing/segment-classify.d.ts +75 -0
- package/dist/routing/segment-classify.d.ts.map +1 -0
- package/dist/routing/types.d.ts +77 -25
- package/dist/routing/types.d.ts.map +1 -1
- package/dist/routing/walkers.d.ts +51 -0
- package/dist/routing/walkers.d.ts.map +1 -0
- package/dist/rsc-runtime/rsc.d.ts +1 -1
- package/dist/rsc-runtime/rsc.d.ts.map +1 -1
- package/dist/rsc-runtime/ssr.d.ts +12 -0
- package/dist/rsc-runtime/ssr.d.ts.map +1 -1
- package/dist/schema-bridge.d.ts +76 -0
- package/dist/schema-bridge.d.ts.map +1 -0
- package/dist/search-params/define.d.ts +157 -0
- package/dist/search-params/define.d.ts.map +1 -0
- package/dist/search-params/index.d.ts +4 -7
- package/dist/search-params/index.d.ts.map +1 -1
- package/dist/search-params/index.js +34 -441
- package/dist/search-params/index.js.map +1 -1
- package/dist/search-params/registry.d.ts +2 -2
- package/dist/search-params/registry.d.ts.map +1 -1
- package/dist/search-params/wrappers.d.ts +53 -0
- package/dist/search-params/wrappers.d.ts.map +1 -0
- package/dist/segment-params/define.d.ts +95 -0
- package/dist/segment-params/define.d.ts.map +1 -0
- package/dist/segment-params/index.d.ts +3 -0
- package/dist/segment-params/index.d.ts.map +1 -0
- package/dist/segment-params/index.js +2 -0
- package/dist/server/access-gate.d.ts +8 -3
- package/dist/server/access-gate.d.ts.map +1 -1
- package/dist/server/action-client.d.ts +41 -6
- package/dist/server/action-client.d.ts.map +1 -1
- package/dist/server/action-encryption.d.ts +76 -0
- package/dist/server/action-encryption.d.ts.map +1 -0
- package/dist/server/action-handler.d.ts +35 -1
- package/dist/server/action-handler.d.ts.map +1 -1
- package/dist/server/actions.d.ts +3 -6
- package/dist/server/actions.d.ts.map +1 -1
- package/dist/server/als-registry.d.ts +33 -5
- package/dist/server/als-registry.d.ts.map +1 -1
- package/dist/server/asset-headers.d.ts +1 -15
- package/dist/server/asset-headers.d.ts.map +1 -1
- package/dist/server/build-manifest.d.ts +2 -2
- package/dist/server/build-manifest.d.ts.map +1 -1
- package/dist/server/cookie-context.d.ts +170 -0
- package/dist/server/cookie-context.d.ts.map +1 -0
- package/dist/server/cookie-parsing.d.ts +51 -0
- package/dist/server/cookie-parsing.d.ts.map +1 -0
- package/dist/server/debug.d.ts +1 -1
- package/dist/server/default-logger.d.ts +22 -0
- package/dist/server/default-logger.d.ts.map +1 -0
- package/dist/server/deny-boundary.d.ts +90 -0
- package/dist/server/deny-boundary.d.ts.map +1 -0
- package/dist/server/deny-renderer.d.ts.map +1 -1
- package/dist/server/dev-source-map.d.ts +22 -0
- package/dist/server/dev-source-map.d.ts.map +1 -0
- package/dist/server/early-hints-sender.d.ts.map +1 -1
- package/dist/server/early-hints.d.ts +13 -5
- package/dist/server/early-hints.d.ts.map +1 -1
- package/dist/server/error-boundary-wrapper.d.ts +7 -1
- package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
- package/dist/server/fallback-error.d.ts +12 -7
- package/dist/server/fallback-error.d.ts.map +1 -1
- package/dist/server/flight-injection-state.d.ts +66 -0
- package/dist/server/flight-injection-state.d.ts.map +1 -0
- package/dist/server/flight-scripts.d.ts +42 -0
- package/dist/server/flight-scripts.d.ts.map +1 -0
- package/dist/server/flush.d.ts.map +1 -1
- package/dist/server/form-data.d.ts +29 -0
- package/dist/server/form-data.d.ts.map +1 -1
- package/dist/server/html-injector-core.d.ts +212 -0
- package/dist/server/html-injector-core.d.ts.map +1 -0
- package/dist/server/html-injectors.d.ts +81 -41
- package/dist/server/html-injectors.d.ts.map +1 -1
- package/dist/server/index.d.ts +9 -46
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +155 -2905
- package/dist/server/index.js.map +1 -1
- package/dist/server/internal.d.ts +48 -0
- package/dist/server/internal.d.ts.map +1 -0
- package/dist/server/internal.js +2900 -0
- package/dist/server/internal.js.map +1 -0
- package/dist/server/logger.d.ts +39 -7
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/middleware-runner.d.ts +36 -4
- package/dist/server/middleware-runner.d.ts.map +1 -1
- package/dist/server/node-stream-transforms.d.ts +110 -0
- package/dist/server/node-stream-transforms.d.ts.map +1 -0
- package/dist/server/param-coercion.d.ts +26 -0
- package/dist/server/param-coercion.d.ts.map +1 -0
- package/dist/server/pipeline-helpers.d.ts +95 -0
- package/dist/server/pipeline-helpers.d.ts.map +1 -0
- package/dist/server/pipeline-interception.d.ts +1 -1
- package/dist/server/pipeline-interception.d.ts.map +1 -1
- package/dist/server/pipeline-metadata.d.ts +6 -0
- package/dist/server/pipeline-metadata.d.ts.map +1 -1
- package/dist/server/pipeline-outcome.d.ts +49 -0
- package/dist/server/pipeline-outcome.d.ts.map +1 -0
- package/dist/server/pipeline-phases.d.ts +52 -0
- package/dist/server/pipeline-phases.d.ts.map +1 -0
- package/dist/server/pipeline.d.ts +93 -23
- package/dist/server/pipeline.d.ts.map +1 -1
- package/dist/server/port-resolution.d.ts +117 -0
- package/dist/server/port-resolution.d.ts.map +1 -0
- package/dist/server/primitives.d.ts +69 -18
- package/dist/server/primitives.d.ts.map +1 -1
- package/dist/server/render-timeout.d.ts +51 -0
- package/dist/server/render-timeout.d.ts.map +1 -0
- package/dist/server/request-context.d.ts +41 -109
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/route-element-builder.d.ts +27 -1
- package/dist/server/route-element-builder.d.ts.map +1 -1
- package/dist/server/route-handler.d.ts.map +1 -1
- package/dist/server/route-matcher.d.ts +21 -34
- package/dist/server/route-matcher.d.ts.map +1 -1
- package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
- package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
- package/dist/server/rsc-entry/api-handler.d.ts +2 -2
- package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
- package/dist/server/rsc-entry/error-renderer.d.ts +26 -13
- package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/helpers.d.ts +49 -6
- package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
- package/dist/server/rsc-entry/index.d.ts +20 -3
- package/dist/server/rsc-entry/index.d.ts.map +1 -1
- package/dist/server/rsc-entry/render-route.d.ts +50 -0
- package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
- package/dist/server/rsc-entry/rsc-payload.d.ts +3 -3
- package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
- package/dist/server/rsc-entry/rsc-stream.d.ts +14 -1
- package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts +1 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-renderer.d.ts +19 -4
- package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +119 -0
- package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
- package/dist/server/safe-load.d.ts +46 -0
- package/dist/server/safe-load.d.ts.map +1 -0
- package/dist/server/sensitive-fields.d.ts +74 -0
- package/dist/server/sensitive-fields.d.ts.map +1 -0
- package/dist/server/sitemap-generator.d.ts +129 -0
- package/dist/server/sitemap-generator.d.ts.map +1 -0
- package/dist/server/sitemap-handler.d.ts +22 -0
- package/dist/server/sitemap-handler.d.ts.map +1 -0
- package/dist/server/slot-resolver.d.ts +1 -1
- package/dist/server/slot-resolver.d.ts.map +1 -1
- package/dist/server/ssr-entry.d.ts +23 -0
- package/dist/server/ssr-entry.d.ts.map +1 -1
- package/dist/server/ssr-render.d.ts +39 -21
- package/dist/server/ssr-render.d.ts.map +1 -1
- package/dist/server/ssr-wrappers.d.ts +50 -0
- package/dist/server/ssr-wrappers.d.ts.map +1 -0
- package/dist/server/state-tree-diff.d.ts.map +1 -1
- package/dist/server/status-code-resolver.d.ts +16 -11
- package/dist/server/status-code-resolver.d.ts.map +1 -1
- package/dist/server/stream-utils.d.ts +36 -0
- package/dist/server/stream-utils.d.ts.map +1 -0
- package/dist/server/tracing.d.ts +5 -5
- package/dist/server/tracing.d.ts.map +1 -1
- package/dist/server/tree-builder.d.ts +62 -30
- package/dist/server/tree-builder.d.ts.map +1 -1
- package/dist/server/types.d.ts +49 -4
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/utils/escape-html.d.ts +14 -0
- package/dist/server/utils/escape-html.d.ts.map +1 -0
- package/dist/server/version-skew.d.ts +61 -0
- package/dist/server/version-skew.d.ts.map +1 -0
- package/dist/shared/merge-search-params.d.ts +22 -0
- package/dist/shared/merge-search-params.d.ts.map +1 -0
- package/dist/shims/font-google.d.ts +1 -1
- package/dist/shims/font-google.d.ts.map +1 -1
- package/dist/shims/font-google.js +42 -0
- package/dist/shims/font-google.js.map +1 -0
- package/dist/shims/font-local.d.ts +26 -0
- package/dist/shims/font-local.d.ts.map +1 -0
- package/dist/shims/font-local.js +20 -0
- package/dist/shims/font-local.js.map +1 -0
- package/dist/shims/headers.d.ts +2 -1
- package/dist/shims/headers.d.ts.map +1 -1
- package/dist/shims/navigation-client.d.ts +3 -1
- package/dist/shims/navigation-client.d.ts.map +1 -1
- package/dist/shims/navigation.d.ts +11 -5
- package/dist/shims/navigation.d.ts.map +1 -1
- package/dist/utils/state-machine.d.ts +80 -0
- package/dist/utils/state-machine.d.ts.map +1 -0
- package/package.json +57 -22
- package/src/adapters/build-output-helper.ts +77 -0
- package/src/adapters/cloudflare-dev.ts +177 -0
- package/src/adapters/cloudflare-kv-cache.ts +142 -0
- package/src/adapters/cloudflare.ts +350 -76
- package/src/adapters/compress-module.ts +24 -4
- package/src/adapters/nitro.ts +142 -59
- package/src/adapters/shared.ts +40 -0
- package/src/adapters/wrangler.d.ts +7 -0
- package/src/cache/cache-api.ts +38 -0
- package/src/cache/handler-store.ts +68 -0
- package/src/cache/index.ts +81 -18
- package/src/cache/singleflight.ts +62 -4
- package/src/cache/sizeof.ts +31 -0
- package/src/cache/timber-cache.ts +25 -20
- package/src/cli.ts +16 -6
- package/src/client/browser-dev.ts +153 -1
- package/src/client/browser-entry/action-dispatch.ts +116 -0
- package/src/client/browser-entry/hmr.ts +81 -0
- package/src/client/browser-entry/hydrate.ts +145 -0
- package/src/client/browser-entry/index.ts +143 -0
- package/src/client/browser-entry/post-hydration.ts +119 -0
- package/src/client/browser-entry/router-init.ts +193 -0
- package/src/client/browser-entry/rsc-stream.ts +157 -0
- package/src/client/browser-entry/scroll.ts +27 -0
- package/src/client/error-boundary.tsx +97 -20
- package/src/client/error-reconstituter.tsx +65 -0
- package/src/client/form.tsx +31 -32
- package/src/client/history.ts +26 -4
- package/src/client/index.ts +77 -43
- package/src/client/internal.ts +58 -0
- package/src/client/link-pending-store.ts +111 -0
- package/src/client/link.tsx +342 -113
- package/src/client/nav-link-store.ts +47 -0
- package/src/client/navigation-api-types.ts +112 -0
- package/src/client/navigation-api.ts +332 -0
- package/src/client/navigation-context.ts +31 -6
- package/src/client/navigation-root.tsx +342 -0
- package/src/client/nuqs-adapter.tsx +16 -3
- package/src/client/router-ref.ts +1 -1
- package/src/client/router.ts +300 -73
- package/src/client/rsc-fetch.ts +112 -8
- package/src/client/segment-cache.ts +1 -1
- package/src/client/segment-outlet.tsx +86 -0
- package/src/client/ssr-data.ts +13 -5
- package/src/client/stale-reload.ts +72 -3
- package/src/client/state.ts +2 -2
- package/src/client/top-loader.tsx +18 -6
- package/src/client/use-cookie.ts +29 -0
- package/src/client/use-link-status.ts +7 -7
- package/src/client/{use-navigation-pending.ts → use-pending-navigation.ts} +6 -6
- package/src/client/use-query-states.ts +9 -3
- package/src/client/use-router.ts +1 -1
- package/src/client/{use-params.ts → use-segment-params.ts} +7 -5
- package/src/codec.ts +45 -0
- package/src/config-types.ts +292 -0
- package/src/config-validation.ts +303 -0
- package/src/content/index.ts +5 -13
- package/src/cookies/define-cookie.ts +301 -55
- package/src/cookies/index.ts +12 -1
- package/src/cookies/json-cookie.ts +105 -0
- package/src/cookies/validation.ts +134 -0
- package/src/dev-tools/404-page.ts +387 -0
- package/src/dev-tools/browser-logs.ts +288 -0
- package/src/dev-tools/error-page.ts +509 -0
- package/src/dev-tools/holding-server.ts +187 -0
- package/src/dev-tools/index.ts +90 -0
- package/src/dev-tools/instrumentation.ts +176 -0
- package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +3 -3
- package/src/dev-tools/overlay.ts +456 -0
- package/src/dev-tools/stack-classifier.ts +75 -0
- package/src/dev-tools/terminal.ts +183 -0
- package/src/{server/dev-warnings.ts → dev-tools/warnings.ts} +5 -50
- package/src/fonts/ast.ts +488 -16
- package/src/fonts/bundle.ts +142 -0
- package/src/fonts/css.ts +2 -1
- package/src/fonts/dev-middleware.ts +74 -0
- package/src/fonts/local.ts +1 -1
- package/src/fonts/pipeline.ts +314 -0
- package/src/fonts/transform.ts +317 -0
- package/src/fonts/types.ts +50 -1
- package/src/fonts/virtual-modules.ts +227 -0
- package/src/index.ts +390 -358
- package/src/plugin-context.ts +240 -0
- package/src/plugins/adapter-build.ts +12 -4
- package/src/plugins/build-manifest.ts +13 -2
- package/src/plugins/build-report.ts +16 -25
- package/src/plugins/client-chunks.ts +65 -0
- package/src/plugins/content.ts +1 -1
- package/src/plugins/dev-server.ts +162 -30
- package/src/plugins/entries.ts +111 -10
- package/src/plugins/fonts.ts +155 -654
- package/src/plugins/mdx.ts +43 -10
- package/src/plugins/routing.ts +217 -44
- package/src/plugins/server-bundle.ts +32 -1
- package/src/plugins/shims.ts +136 -35
- package/src/plugins/static-build.ts +15 -89
- package/src/routing/codegen-shared.ts +98 -0
- package/src/routing/codegen-types.ts +53 -0
- package/src/routing/codegen.ts +143 -176
- package/src/routing/convention-lint.ts +357 -0
- package/src/routing/index.ts +5 -1
- package/src/routing/interception.ts +1 -1
- package/src/routing/link-codegen.ts +294 -0
- package/src/routing/scanner.ts +107 -110
- package/src/routing/segment-classify.ts +188 -0
- package/src/routing/types.ts +78 -25
- package/src/routing/walkers.ts +90 -0
- package/src/rsc-runtime/rsc.ts +2 -0
- package/src/rsc-runtime/ssr.ts +50 -0
- package/src/rsc-runtime/vendor-types.d.ts +7 -0
- package/src/{search-params/codecs.ts → schema-bridge.ts} +57 -20
- package/src/search-params/define.ts +538 -0
- package/src/search-params/index.ts +14 -20
- package/src/search-params/registry.ts +2 -2
- package/src/search-params/wrappers.ts +92 -0
- package/src/segment-params/define.ts +332 -0
- package/src/segment-params/index.ts +9 -0
- package/src/server/access-gate.tsx +76 -34
- package/src/server/action-client.ts +88 -15
- package/src/server/action-encryption.ts +144 -0
- package/src/server/action-handler.ts +112 -14
- package/src/server/actions.ts +10 -9
- package/src/server/als-registry.ts +35 -7
- package/src/server/asset-headers.ts +8 -34
- package/src/server/build-manifest.ts +10 -4
- package/src/server/compress.ts +25 -7
- package/src/server/cookie-context.ts +468 -0
- package/src/server/cookie-parsing.ts +135 -0
- package/src/server/debug.ts +1 -1
- package/src/server/default-logger.ts +99 -0
- package/src/server/deny-boundary.ts +218 -0
- package/src/server/deny-renderer.ts +31 -50
- package/src/server/dev-source-map.ts +31 -0
- package/src/server/early-hints-sender.ts +3 -2
- package/src/server/early-hints.ts +36 -15
- package/src/server/error-boundary-wrapper.ts +74 -22
- package/src/server/fallback-error.ts +74 -102
- package/src/server/flight-injection-state.ts +113 -0
- package/src/server/flight-scripts.ts +62 -0
- package/src/server/flush.ts +2 -1
- package/src/server/form-data.ts +76 -0
- package/src/server/html-injector-core.ts +403 -0
- package/src/server/html-injectors.ts +244 -223
- package/src/server/index.ts +31 -184
- package/src/server/internal.ts +176 -0
- package/src/server/logger.ts +67 -36
- package/src/server/middleware-runner.ts +75 -4
- package/src/server/node-stream-transforms.ts +369 -0
- package/src/server/param-coercion.ts +76 -0
- package/src/server/pipeline-helpers.ts +204 -0
- package/src/server/pipeline-interception.ts +17 -16
- package/src/server/pipeline-metadata.ts +13 -0
- package/src/server/pipeline-outcome.ts +167 -0
- package/src/server/pipeline-phases.ts +409 -0
- package/src/server/pipeline.ts +128 -394
- package/src/server/port-resolution.ts +215 -0
- package/src/server/primitives.ts +111 -28
- package/src/server/render-timeout.ts +108 -0
- package/src/server/request-context.ts +94 -338
- package/src/server/route-element-builder.ts +288 -192
- package/src/server/route-handler.ts +24 -4
- package/src/server/route-matcher.ts +44 -65
- package/src/server/rsc-entry/action-middleware-runner.ts +167 -0
- package/src/server/rsc-entry/api-handler.ts +16 -17
- package/src/server/rsc-entry/error-renderer.ts +305 -89
- package/src/server/rsc-entry/helpers.ts +136 -12
- package/src/server/rsc-entry/index.ts +312 -341
- package/src/server/rsc-entry/render-route.ts +304 -0
- package/src/server/rsc-entry/rsc-payload.ts +65 -18
- package/src/server/rsc-entry/rsc-stream.ts +81 -13
- package/src/server/rsc-entry/ssr-bridge.ts +14 -5
- package/src/server/rsc-entry/ssr-renderer.ts +171 -38
- package/src/server/rsc-entry/wrap-action-dispatch.ts +449 -0
- package/src/server/safe-load.ts +60 -0
- package/src/server/sensitive-fields.ts +230 -0
- package/src/server/sitemap-generator.ts +338 -0
- package/src/server/sitemap-handler.ts +126 -0
- package/src/server/slot-resolver.ts +245 -230
- package/src/server/ssr-entry.ts +215 -32
- package/src/server/ssr-render.ts +289 -67
- package/src/server/ssr-wrappers.tsx +139 -0
- package/src/server/state-tree-diff.ts +4 -1
- package/src/server/status-code-resolver.ts +112 -128
- package/src/server/stream-utils.ts +213 -0
- package/src/server/tracing.ts +21 -10
- package/src/server/tree-builder.ts +202 -90
- package/src/server/types.ts +55 -6
- package/src/server/utils/escape-html.ts +20 -0
- package/src/server/version-skew.ts +104 -0
- package/src/shared/merge-search-params.ts +55 -0
- package/src/shims/font-google.ts +1 -1
- package/src/shims/font-local.ts +34 -0
- package/src/shims/headers.ts +5 -1
- package/src/shims/navigation-client.ts +4 -3
- package/src/shims/navigation.ts +14 -7
- package/src/utils/state-machine.ts +111 -0
- package/dist/_chunks/als-registry-B7DbZ2hS.js +0 -41
- package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
- package/dist/_chunks/debug-gwlJkDuf.js +0 -108
- package/dist/_chunks/debug-gwlJkDuf.js.map +0 -1
- package/dist/_chunks/format-DviM89f0.js.map +0 -1
- package/dist/_chunks/interception-BOoWmLUA.js +0 -676
- package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
- package/dist/_chunks/request-context-DIkVh_jG.js +0 -330
- package/dist/_chunks/request-context-DIkVh_jG.js.map +0 -1
- package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
- package/dist/_chunks/tracing-CemImE6h.js +0 -187
- package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
- package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
- package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
- package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
- package/dist/cache/register-cached-function.d.ts +0 -17
- package/dist/cache/register-cached-function.d.ts.map +0 -1
- package/dist/client/browser-entry.d.ts +0 -21
- package/dist/client/browser-entry.d.ts.map +0 -1
- package/dist/client/link-status-provider.d.ts +0 -11
- package/dist/client/link-status-provider.d.ts.map +0 -1
- package/dist/client/transition-root.d.ts.map +0 -1
- package/dist/client/use-navigation-pending.d.ts.map +0 -1
- package/dist/client/use-params.d.ts.map +0 -1
- package/dist/plugins/cache-transform.d.ts +0 -36
- package/dist/plugins/cache-transform.d.ts.map +0 -1
- package/dist/plugins/dev-error-overlay.d.ts +0 -60
- package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
- package/dist/plugins/dev-logs.d.ts.map +0 -1
- package/dist/plugins/dynamic-transform.d.ts +0 -72
- package/dist/plugins/dynamic-transform.d.ts.map +0 -1
- package/dist/plugins/server-action-exports.d.ts +0 -26
- package/dist/plugins/server-action-exports.d.ts.map +0 -1
- package/dist/routing/status-file-lint.d.ts +0 -33
- package/dist/routing/status-file-lint.d.ts.map +0 -1
- package/dist/search-params/analyze.d.ts +0 -54
- package/dist/search-params/analyze.d.ts.map +0 -1
- package/dist/search-params/builtin-codecs.d.ts +0 -105
- package/dist/search-params/builtin-codecs.d.ts.map +0 -1
- package/dist/search-params/codecs.d.ts +0 -53
- package/dist/search-params/codecs.d.ts.map +0 -1
- package/dist/search-params/create.d.ts +0 -106
- package/dist/search-params/create.d.ts.map +0 -1
- package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
- package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
- package/dist/server/dev-logger.d.ts.map +0 -1
- package/dist/server/dev-span-processor.d.ts.map +0 -1
- package/dist/server/dev-warnings.d.ts.map +0 -1
- package/dist/server/manifest-status-resolver.d.ts +0 -58
- package/dist/server/manifest-status-resolver.d.ts.map +0 -1
- package/dist/server/prerender.d.ts +0 -77
- package/dist/server/prerender.d.ts.map +0 -1
- package/dist/server/response-cache.d.ts +0 -54
- package/dist/server/response-cache.d.ts.map +0 -1
- package/dist/utils/directive-parser.d.ts +0 -70
- package/dist/utils/directive-parser.d.ts.map +0 -1
- package/src/cache/register-cached-function.ts +0 -103
- package/src/client/browser-entry.ts +0 -678
- package/src/client/link-status-provider.tsx +0 -30
- package/src/client/transition-root.tsx +0 -166
- package/src/plugins/cache-transform.ts +0 -199
- package/src/plugins/dev-error-overlay.ts +0 -230
- package/src/plugins/dynamic-transform.ts +0 -161
- package/src/plugins/server-action-exports.ts +0 -220
- package/src/routing/status-file-lint.ts +0 -112
- package/src/search-params/analyze.ts +0 -192
- package/src/search-params/builtin-codecs.ts +0 -228
- package/src/search-params/create.ts +0 -321
- package/src/server/dev-fetch-instrumentation.ts +0 -96
- package/src/server/dev-span-processor.ts +0 -78
- package/src/server/manifest-status-resolver.ts +0 -215
- package/src/server/prerender.ts +0 -139
- package/src/server/response-cache.ts +0 -410
- package/src/utils/directive-parser.ts +0 -529
- /package/src/{server/dev-logger.ts → dev-tools/logger.ts} +0 -0
package/src/plugins/mdx.ts
CHANGED
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
import type { Plugin } from 'vite';
|
|
12
12
|
import { existsSync } from 'node:fs';
|
|
13
13
|
import { join } from 'node:path';
|
|
14
|
-
import
|
|
14
|
+
import { createRequire } from 'node:module';
|
|
15
|
+
import { pathToFileURL } from 'node:url';
|
|
16
|
+
import type { PluginContext } from '../plugin-context.js';
|
|
15
17
|
|
|
16
18
|
const MDX_EXTENSIONS = ['mdx', 'md'];
|
|
17
19
|
|
|
@@ -54,15 +56,45 @@ function shouldActivate(ctx: PluginContext): boolean {
|
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
/**
|
|
57
|
-
* Try to dynamically import a module by name
|
|
58
|
-
*
|
|
59
|
+
* Try to dynamically import a module by name, resolving from the user's
|
|
60
|
+
* project root rather than from `@timber-js/app`'s own location.
|
|
61
|
+
*
|
|
62
|
+
* Why this matters: pnpm only hoists declared (peer) dependencies into a
|
|
63
|
+
* package's resolution scope. The MDX integration's optional companions
|
|
64
|
+
* — `remark-frontmatter`, `remark-mdx-frontmatter`, `@mdx-js/rollup` — are
|
|
65
|
+
* installed as direct deps of the consumer (e.g. `packages/website`), not
|
|
66
|
+
* `@timber-js/app`. A bare `import('remark-frontmatter')` from inside this
|
|
67
|
+
* file resolves against `packages/timber-app/node_modules` and silently
|
|
68
|
+
* fails with `ERR_MODULE_NOT_FOUND`, which made `tryImport` return
|
|
69
|
+
* `undefined` and skipped frontmatter parsing entirely — leaving MDX to
|
|
70
|
+
* choke on YAML as JS expressions (TIM-840).
|
|
71
|
+
*
|
|
72
|
+
* Resolving relative to `projectRoot` (via `createRequire`) makes the
|
|
73
|
+
* lookup walk the consumer's `node_modules` tree first, which is where
|
|
74
|
+
* pnpm puts the user's deps.
|
|
75
|
+
*
|
|
76
|
+
* Returns the default export, the module itself, or undefined if the
|
|
77
|
+
* module is not installed.
|
|
59
78
|
*/
|
|
60
|
-
async function tryImport(name: string): Promise<unknown | undefined> {
|
|
79
|
+
async function tryImport(name: string, projectRoot: string): Promise<unknown | undefined> {
|
|
61
80
|
try {
|
|
62
|
-
|
|
81
|
+
// Anchor resolution at the consumer's package.json so we walk their
|
|
82
|
+
// node_modules tree, not @timber-js/app's. createRequire().resolve()
|
|
83
|
+
// returns an absolute file path that ESM dynamic import accepts when
|
|
84
|
+
// wrapped as a file:// URL.
|
|
85
|
+
const require = createRequire(join(projectRoot, 'package.json'));
|
|
86
|
+
const resolved = require.resolve(name);
|
|
87
|
+
const mod = await import(pathToFileURL(resolved).href);
|
|
63
88
|
return mod.default ?? mod;
|
|
64
89
|
} catch {
|
|
65
|
-
|
|
90
|
+
// Fall back to a bare import — covers the rare case where the package
|
|
91
|
+
// lives next to @timber-js/app (e.g. monorepo with hoisted deps).
|
|
92
|
+
try {
|
|
93
|
+
const mod = await import(name);
|
|
94
|
+
return mod.default ?? mod;
|
|
95
|
+
} catch {
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
66
98
|
}
|
|
67
99
|
}
|
|
68
100
|
|
|
@@ -80,7 +112,7 @@ export function timberMdx(ctx: PluginContext): Plugin {
|
|
|
80
112
|
async function activate(): Promise<void> {
|
|
81
113
|
if (innerPlugin !== null || !shouldActivate(ctx)) return;
|
|
82
114
|
|
|
83
|
-
const createMdxPlugin = (await tryImport('@mdx-js/rollup')) as
|
|
115
|
+
const createMdxPlugin = (await tryImport('@mdx-js/rollup', ctx.root)) as
|
|
84
116
|
| ((options?: Record<string, unknown>) => Plugin)
|
|
85
117
|
| undefined;
|
|
86
118
|
|
|
@@ -99,10 +131,11 @@ export function timberMdx(ctx: PluginContext): Plugin {
|
|
|
99
131
|
|
|
100
132
|
const mdxConfig = ctx.config.mdx ?? {};
|
|
101
133
|
|
|
102
|
-
// Auto-register frontmatter plugins
|
|
134
|
+
// Auto-register frontmatter plugins. Resolve from the consumer's root
|
|
135
|
+
// so pnpm finds packages declared in the user's package.json (TIM-840).
|
|
103
136
|
const remarkPlugins: unknown[] = [];
|
|
104
|
-
const remarkFrontmatter = await tryImport('remark-frontmatter');
|
|
105
|
-
const remarkMdxFrontmatter = await tryImport('remark-mdx-frontmatter');
|
|
137
|
+
const remarkFrontmatter = await tryImport('remark-frontmatter', ctx.root);
|
|
138
|
+
const remarkMdxFrontmatter = await tryImport('remark-mdx-frontmatter', ctx.root);
|
|
106
139
|
if (remarkFrontmatter) remarkPlugins.push(remarkFrontmatter);
|
|
107
140
|
if (remarkMdxFrontmatter) remarkPlugins.push(remarkMdxFrontmatter);
|
|
108
141
|
|
package/src/plugins/routing.ts
CHANGED
|
@@ -10,25 +10,43 @@
|
|
|
10
10
|
|
|
11
11
|
import type { Plugin, ViteDevServer } from 'vite';
|
|
12
12
|
import { writeFile, mkdir } from 'node:fs/promises';
|
|
13
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
13
14
|
import { join } from 'node:path';
|
|
14
|
-
import { scanRoutes } from '
|
|
15
|
-
import { generateRouteMap } from '
|
|
16
|
-
import { collectInterceptionRewrites } from '
|
|
15
|
+
import { scanRoutes } from '../routing/scanner.js';
|
|
16
|
+
import { generateRouteMap } from '../routing/codegen.js';
|
|
17
|
+
import { collectInterceptionRewrites } from '../routing/interception.js';
|
|
18
|
+
|
|
17
19
|
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
import type {
|
|
20
|
+
lintConventions,
|
|
21
|
+
checkAppDirExists,
|
|
22
|
+
formatConventionWarnings,
|
|
23
|
+
} from '../routing/convention-lint.js';
|
|
24
|
+
import type { RouteTree, SegmentNode, RouteFile } from '../routing/types.js';
|
|
25
|
+
import type { PluginContext } from '../plugin-context.js';
|
|
23
26
|
|
|
24
27
|
const VIRTUAL_MODULE_ID = 'virtual:timber-route-manifest';
|
|
25
28
|
const RESOLVED_VIRTUAL_ID = `\0${VIRTUAL_MODULE_ID}`;
|
|
26
29
|
|
|
30
|
+
// TIM-830: Search-params registry virtual module.
|
|
31
|
+
//
|
|
32
|
+
// Statically imports the `searchParams` named export from every page
|
|
33
|
+
// that exports one, and registers each definition into the shared
|
|
34
|
+
// search-params registry keyed by the un-interpolated route pattern
|
|
35
|
+
// (e.g. '/products/[id]'). This lets `<Link>` serialize flat
|
|
36
|
+
// `Partial<T>` values at runtime without callers importing the
|
|
37
|
+
// definition at the call site.
|
|
38
|
+
//
|
|
39
|
+
// The imports are STATIC (`import { searchParams as r0 } from '...'`)
|
|
40
|
+
// so Vite/Rolldown tree-shakes each page's component body out of the
|
|
41
|
+
// registry chunk — only the `searchParams` named export is pulled in.
|
|
42
|
+
const SEARCH_PARAMS_REGISTRY_ID = 'virtual:timber-search-params-registry';
|
|
43
|
+
const RESOLVED_SEARCH_PARAMS_REGISTRY_ID = `\0${SEARCH_PARAMS_REGISTRY_ID}`;
|
|
44
|
+
|
|
27
45
|
/**
|
|
28
46
|
* File convention names we track for changes that require manifest regeneration.
|
|
29
47
|
*/
|
|
30
48
|
const ROUTE_FILE_PATTERNS =
|
|
31
|
-
/\/(page|layout|middleware|access|route|error|default|denied|
|
|
49
|
+
/\/(page|layout|middleware|access|route|error|global-error|default|denied|params|\d{3}|[45]xx|not-found|forbidden|unauthorized|sitemap|robots|manifest|favicon|icon|opengraph-image|twitter-image|apple-icon)\./;
|
|
32
50
|
|
|
33
51
|
/**
|
|
34
52
|
* Create the timber-routing Vite plugin.
|
|
@@ -83,6 +101,24 @@ export function timberRouting(ctx: PluginContext): Plugin {
|
|
|
83
101
|
const warnedFiles = new Set<string>();
|
|
84
102
|
|
|
85
103
|
function rescan(): void {
|
|
104
|
+
// Check app/ directory exists before scanning
|
|
105
|
+
const appDirWarning = checkAppDirExists(ctx.appDir);
|
|
106
|
+
if (appDirWarning) {
|
|
107
|
+
const formatted = formatConventionWarnings([appDirWarning]);
|
|
108
|
+
if (formatted) process.stderr.write(`${formatted}\n`);
|
|
109
|
+
// Still create an empty tree so the rest of the pipeline doesn't crash
|
|
110
|
+
ctx.routeTree = {
|
|
111
|
+
root: {
|
|
112
|
+
segmentName: '',
|
|
113
|
+
segmentType: 'static',
|
|
114
|
+
urlPath: '/',
|
|
115
|
+
children: [],
|
|
116
|
+
slots: {},
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
86
122
|
ctx.timer.start('route-scan');
|
|
87
123
|
ctx.routeTree = scanRoutes(ctx.appDir, {
|
|
88
124
|
pageExtensions: ctx.config.pageExtensions,
|
|
@@ -90,12 +126,13 @@ export function timberRouting(ctx: PluginContext): Plugin {
|
|
|
90
126
|
ctx.timer.end('route-scan');
|
|
91
127
|
writeCodegen(ctx);
|
|
92
128
|
|
|
93
|
-
// Lint
|
|
94
|
-
const
|
|
95
|
-
const
|
|
96
|
-
if (
|
|
97
|
-
for (const w of
|
|
98
|
-
|
|
129
|
+
// Lint conventions (empty app, missing methods, missing root layout)
|
|
130
|
+
const conventionWarnings = lintConventions(ctx.routeTree, ctx.appDir);
|
|
131
|
+
const newConventionWarnings = conventionWarnings.filter((w) => !warnedFiles.has(w.id));
|
|
132
|
+
if (newConventionWarnings.length > 0) {
|
|
133
|
+
for (const w of newConventionWarnings) warnedFiles.add(w.id);
|
|
134
|
+
const formatted = formatConventionWarnings(newConventionWarnings);
|
|
135
|
+
if (formatted) process.stderr.write(`${formatted}\n`);
|
|
99
136
|
}
|
|
100
137
|
}
|
|
101
138
|
|
|
@@ -123,6 +160,14 @@ export function timberRouting(ctx: PluginContext): Plugin {
|
|
|
123
160
|
return RESOLVED_VIRTUAL_ID;
|
|
124
161
|
}
|
|
125
162
|
|
|
163
|
+
// TIM-830: Search-params registry virtual module
|
|
164
|
+
if (
|
|
165
|
+
cleanId === SEARCH_PARAMS_REGISTRY_ID ||
|
|
166
|
+
cleanId.endsWith(`/${SEARCH_PARAMS_REGISTRY_ID}`)
|
|
167
|
+
) {
|
|
168
|
+
return RESOLVED_SEARCH_PARAMS_REGISTRY_ID;
|
|
169
|
+
}
|
|
170
|
+
|
|
126
171
|
return null;
|
|
127
172
|
},
|
|
128
173
|
|
|
@@ -133,14 +178,22 @@ export function timberRouting(ctx: PluginContext): Plugin {
|
|
|
133
178
|
* with absolute import paths for all file references.
|
|
134
179
|
*/
|
|
135
180
|
load(id: string) {
|
|
136
|
-
if (id
|
|
181
|
+
if (id === RESOLVED_VIRTUAL_ID) {
|
|
182
|
+
// If routeTree hasn't been built yet (shouldn't happen), scan now
|
|
183
|
+
if (!ctx.routeTree) {
|
|
184
|
+
rescan();
|
|
185
|
+
}
|
|
186
|
+
return generateManifestModule(ctx.routeTree!, ctx.root);
|
|
187
|
+
}
|
|
137
188
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
189
|
+
if (id === RESOLVED_SEARCH_PARAMS_REGISTRY_ID) {
|
|
190
|
+
if (!ctx.routeTree) {
|
|
191
|
+
rescan();
|
|
192
|
+
}
|
|
193
|
+
return generateSearchParamsRegistryModule(ctx.routeTree!);
|
|
141
194
|
}
|
|
142
195
|
|
|
143
|
-
return
|
|
196
|
+
return null;
|
|
144
197
|
},
|
|
145
198
|
|
|
146
199
|
/**
|
|
@@ -168,20 +221,49 @@ export function timberRouting(ctx: PluginContext): Plugin {
|
|
|
168
221
|
// Watch the app directory
|
|
169
222
|
devServer.watcher.add(ctx.appDir);
|
|
170
223
|
|
|
171
|
-
|
|
172
|
-
|
|
224
|
+
/** Snapshot of the last generated manifest, used to detect structural changes. */
|
|
225
|
+
let lastManifest = ctx.routeTree ? generateManifestModule(ctx.routeTree, ctx.root) : '';
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Handle a route-significant file being added or removed.
|
|
229
|
+
* Always triggers a full-reload since the route tree structure changed.
|
|
230
|
+
*/
|
|
231
|
+
const handleStructuralChange = (filePath: string) => {
|
|
173
232
|
if (!filePath.startsWith(ctx.appDir)) return;
|
|
174
233
|
if (!ROUTE_FILE_PATTERNS.test(filePath)) return;
|
|
175
234
|
|
|
176
|
-
// Rescan the route tree
|
|
177
235
|
rescan();
|
|
178
|
-
|
|
179
|
-
// Invalidate the virtual module in all environments
|
|
236
|
+
lastManifest = ctx.routeTree ? generateManifestModule(ctx.routeTree, ctx.root) : '';
|
|
180
237
|
invalidateManifest(devServer);
|
|
181
238
|
};
|
|
182
239
|
|
|
183
|
-
|
|
184
|
-
|
|
240
|
+
/**
|
|
241
|
+
* Handle a route file's content changing.
|
|
242
|
+
*
|
|
243
|
+
* Most content edits (JSX changes, fixing typos) don't affect route
|
|
244
|
+
* metadata — Vite's React Fast Refresh handles those via normal HMR.
|
|
245
|
+
* Only rescan and full-reload when route metadata actually changed
|
|
246
|
+
* (e.g., searchParams export added/removed, metadata export changed).
|
|
247
|
+
*/
|
|
248
|
+
const handleContentChange = (filePath: string) => {
|
|
249
|
+
if (!filePath.startsWith(ctx.appDir)) return;
|
|
250
|
+
if (!ROUTE_FILE_PATTERNS.test(filePath)) return;
|
|
251
|
+
|
|
252
|
+
rescan();
|
|
253
|
+
const newManifest = ctx.routeTree ? generateManifestModule(ctx.routeTree, ctx.root) : '';
|
|
254
|
+
if (newManifest !== lastManifest) {
|
|
255
|
+
lastManifest = newManifest;
|
|
256
|
+
invalidateManifest(devServer);
|
|
257
|
+
}
|
|
258
|
+
// Otherwise: content edit didn't change route metadata — let Vite HMR handle it
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
devServer.watcher.on('add', handleStructuralChange);
|
|
262
|
+
devServer.watcher.on('unlink', handleStructuralChange);
|
|
263
|
+
// Watch content changes to page files — searchParams detection depends
|
|
264
|
+
// on file contents (export const searchParams), not just file presence.
|
|
265
|
+
// But only full-reload when route metadata actually changes.
|
|
266
|
+
devServer.watcher.on('change', handleContentChange);
|
|
185
267
|
// Also watch renames (which are add+unlink) — handled by the above
|
|
186
268
|
},
|
|
187
269
|
};
|
|
@@ -198,9 +280,11 @@ function invalidateManifest(server: ViteDevServer): void {
|
|
|
198
280
|
const env = server.environments[envName];
|
|
199
281
|
if (!env?.moduleGraph) continue;
|
|
200
282
|
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
|
|
283
|
+
for (const virtualId of [RESOLVED_VIRTUAL_ID, RESOLVED_SEARCH_PARAMS_REGISTRY_ID]) {
|
|
284
|
+
const mod = env.moduleGraph.getModuleById(virtualId);
|
|
285
|
+
if (mod) {
|
|
286
|
+
env.moduleGraph.invalidateModule(mod);
|
|
287
|
+
}
|
|
204
288
|
}
|
|
205
289
|
}
|
|
206
290
|
|
|
@@ -208,13 +292,88 @@ function invalidateManifest(server: ViteDevServer): void {
|
|
|
208
292
|
server.hot.send({ type: 'full-reload' });
|
|
209
293
|
}
|
|
210
294
|
|
|
295
|
+
/**
|
|
296
|
+
* TIM-830: Walk the route tree and collect every page that exports a
|
|
297
|
+
* `searchParams` definition, then emit a module that statically imports
|
|
298
|
+
* each export and registers it into the shared search-params registry.
|
|
299
|
+
*
|
|
300
|
+
* Keys use the un-interpolated route pattern (e.g. '/products/[id]') so
|
|
301
|
+
* <Link> can look up the definition from the original `href` prop before
|
|
302
|
+
* segmentParams are interpolated.
|
|
303
|
+
*/
|
|
304
|
+
function generateSearchParamsRegistryModule(tree: RouteTree): string {
|
|
305
|
+
const entries: Array<{ urlPath: string; filePath: string }> = [];
|
|
306
|
+
|
|
307
|
+
function walk(node: SegmentNode): void {
|
|
308
|
+
// params.ts is the canonical location for `export const searchParams`;
|
|
309
|
+
// page.tsx is the legacy fallback (see codegen.ts `collectRoutes`).
|
|
310
|
+
if (node.page) {
|
|
311
|
+
if (node.params && fileHasSearchParamsExport(node.params.filePath)) {
|
|
312
|
+
entries.push({ urlPath: node.urlPath, filePath: node.params.filePath });
|
|
313
|
+
} else if (fileHasSearchParamsExport(node.page.filePath)) {
|
|
314
|
+
entries.push({ urlPath: node.urlPath, filePath: node.page.filePath });
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
for (const child of node.children) walk(child);
|
|
318
|
+
for (const slot of Object.values(node.slots)) walk(slot);
|
|
319
|
+
}
|
|
320
|
+
walk(tree.root);
|
|
321
|
+
|
|
322
|
+
// Deterministic order for stable output / snapshots
|
|
323
|
+
entries.sort((a, b) => a.urlPath.localeCompare(b.urlPath));
|
|
324
|
+
|
|
325
|
+
const lines: string[] = [];
|
|
326
|
+
lines.push('// Auto-generated search-params registry — do not edit.');
|
|
327
|
+
lines.push('// Generated by timber-routing plugin (TIM-830).');
|
|
328
|
+
lines.push('');
|
|
329
|
+
lines.push("import { registerSearchParams } from '@timber-js/app/search-params';");
|
|
330
|
+
lines.push('');
|
|
331
|
+
|
|
332
|
+
// Static imports — Vite/Rolldown tree-shakes the page component body out
|
|
333
|
+
// of this chunk, leaving only the `searchParams` named export.
|
|
334
|
+
entries.forEach((entry, i) => {
|
|
335
|
+
lines.push(`import { searchParams as r${i} } from ${JSON.stringify(entry.filePath)};`);
|
|
336
|
+
});
|
|
337
|
+
lines.push('');
|
|
338
|
+
|
|
339
|
+
entries.forEach((entry, i) => {
|
|
340
|
+
lines.push(`registerSearchParams(${JSON.stringify(entry.urlPath)}, r${i});`);
|
|
341
|
+
});
|
|
342
|
+
lines.push('');
|
|
343
|
+
|
|
344
|
+
// Exporting an empty object keeps the module a real ESM module even
|
|
345
|
+
// when there are zero entries (no top-level imports in that case).
|
|
346
|
+
lines.push('export {};');
|
|
347
|
+
lines.push('');
|
|
348
|
+
|
|
349
|
+
return lines.join('\n');
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Lightweight check for a `searchParams` named export. Mirrors
|
|
354
|
+
* `fileHasExport('searchParams')` in routing/codegen.ts so we stay
|
|
355
|
+
* in sync with what the type codegen detects.
|
|
356
|
+
*/
|
|
357
|
+
function fileHasSearchParamsExport(filePath: string): boolean {
|
|
358
|
+
try {
|
|
359
|
+
if (!existsSync(filePath)) return false;
|
|
360
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
361
|
+
return (
|
|
362
|
+
/export\s+(const|let|var)\s+searchParams\b/.test(content) ||
|
|
363
|
+
/export\s*\{[^}]*\bsearchParams\b[^}]*\}/.test(content)
|
|
364
|
+
);
|
|
365
|
+
} catch {
|
|
366
|
+
return false;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
|
|
211
370
|
/**
|
|
212
371
|
* Generate the virtual module source code for the route manifest.
|
|
213
372
|
*
|
|
214
373
|
* The output is a default-exported object containing the serialized route tree.
|
|
215
374
|
* All file references use absolute paths (required for virtual modules).
|
|
216
375
|
*/
|
|
217
|
-
function generateManifestModule(tree: RouteTree): string {
|
|
376
|
+
function generateManifestModule(tree: RouteTree, viteRoot: string): string {
|
|
218
377
|
const imports: string[] = [];
|
|
219
378
|
let importIndex = 0;
|
|
220
379
|
|
|
@@ -301,17 +460,20 @@ function generateManifestModule(tree: RouteTree): string {
|
|
|
301
460
|
`${nextIndent}denied: { load: ${v}, filePath: ${JSON.stringify(node.denied.filePath)} },`
|
|
302
461
|
);
|
|
303
462
|
}
|
|
304
|
-
if (node.
|
|
305
|
-
const v = addImport(node.
|
|
463
|
+
if (node.params) {
|
|
464
|
+
const v = addImport(node.params);
|
|
306
465
|
parts.push(
|
|
307
|
-
`${nextIndent}
|
|
466
|
+
`${nextIndent}params: { load: ${v}, filePath: ${JSON.stringify(node.params.filePath)} },`
|
|
308
467
|
);
|
|
309
468
|
}
|
|
469
|
+
// searchParams is now a named export from page.tsx, not a separate file.
|
|
470
|
+
// The page module's searchParams export is loaded via the page's lazy import.
|
|
471
|
+
// Runtime registration happens in the route loader using the page module.
|
|
310
472
|
|
|
311
473
|
// Status-code files
|
|
312
|
-
if (node.statusFiles && node.statusFiles.
|
|
474
|
+
if (node.statusFiles && Object.keys(node.statusFiles).length > 0) {
|
|
313
475
|
const statusEntries: string[] = [];
|
|
314
|
-
for (const [code, file] of node.statusFiles) {
|
|
476
|
+
for (const [code, file] of Object.entries(node.statusFiles)) {
|
|
315
477
|
const v = addImport(file);
|
|
316
478
|
statusEntries.push(
|
|
317
479
|
`${nextIndent} ${JSON.stringify(code)}: { load: ${v}, filePath: ${JSON.stringify(file.filePath)} }`
|
|
@@ -321,9 +483,9 @@ function generateManifestModule(tree: RouteTree): string {
|
|
|
321
483
|
}
|
|
322
484
|
|
|
323
485
|
// JSON status-code files
|
|
324
|
-
if (node.jsonStatusFiles && node.jsonStatusFiles.
|
|
486
|
+
if (node.jsonStatusFiles && Object.keys(node.jsonStatusFiles).length > 0) {
|
|
325
487
|
const jsonEntries: string[] = [];
|
|
326
|
-
for (const [code, file] of node.jsonStatusFiles) {
|
|
488
|
+
for (const [code, file] of Object.entries(node.jsonStatusFiles)) {
|
|
327
489
|
const v = addImport(file);
|
|
328
490
|
jsonEntries.push(
|
|
329
491
|
`${nextIndent} ${JSON.stringify(code)}: { load: ${v}, filePath: ${JSON.stringify(file.filePath)} }`
|
|
@@ -333,9 +495,9 @@ function generateManifestModule(tree: RouteTree): string {
|
|
|
333
495
|
}
|
|
334
496
|
|
|
335
497
|
// Legacy status files
|
|
336
|
-
if (node.legacyStatusFiles && node.legacyStatusFiles.
|
|
498
|
+
if (node.legacyStatusFiles && Object.keys(node.legacyStatusFiles).length > 0) {
|
|
337
499
|
const legacyEntries: string[] = [];
|
|
338
|
-
for (const [name, file] of node.legacyStatusFiles) {
|
|
500
|
+
for (const [name, file] of Object.entries(node.legacyStatusFiles)) {
|
|
339
501
|
const v = addImport(file);
|
|
340
502
|
legacyEntries.push(
|
|
341
503
|
`${nextIndent} ${JSON.stringify(name)}: { load: ${v}, filePath: ${JSON.stringify(file.filePath)} }`
|
|
@@ -347,9 +509,9 @@ function generateManifestModule(tree: RouteTree): string {
|
|
|
347
509
|
}
|
|
348
510
|
|
|
349
511
|
// Metadata route files (sitemap.ts, robots.ts, icon.tsx, etc.)
|
|
350
|
-
if (node.metadataRoutes && node.metadataRoutes.
|
|
512
|
+
if (node.metadataRoutes && Object.keys(node.metadataRoutes).length > 0) {
|
|
351
513
|
const metaEntries: string[] = [];
|
|
352
|
-
for (const [name, file] of node.metadataRoutes) {
|
|
514
|
+
for (const [name, file] of Object.entries(node.metadataRoutes)) {
|
|
353
515
|
const v = addImport(file);
|
|
354
516
|
metaEntries.push(
|
|
355
517
|
`${nextIndent} ${JSON.stringify(name)}: { load: ${v}, filePath: ${JSON.stringify(file.filePath)} }`
|
|
@@ -367,9 +529,11 @@ function generateManifestModule(tree: RouteTree): string {
|
|
|
367
529
|
}
|
|
368
530
|
|
|
369
531
|
// Parallel slots
|
|
370
|
-
|
|
532
|
+
const slotKeys = Object.keys(node.slots);
|
|
533
|
+
if (slotKeys.length > 0) {
|
|
371
534
|
const slotEntries: string[] = [];
|
|
372
|
-
for (const
|
|
535
|
+
for (const slotName of slotKeys) {
|
|
536
|
+
const slotNode = node.slots[slotName]!;
|
|
373
537
|
slotEntries.push(
|
|
374
538
|
`${nextIndent} ${JSON.stringify(slotName)}: ${serializeNode(slotNode, nextIndent + ' ')}`
|
|
375
539
|
);
|
|
@@ -391,6 +555,13 @@ function generateManifestModule(tree: RouteTree): string {
|
|
|
391
555
|
proxyLine = ` proxy: { load: ${v}, filePath: ${JSON.stringify(tree.proxy.filePath)} },`;
|
|
392
556
|
}
|
|
393
557
|
|
|
558
|
+
// Global error page (Tier 2)
|
|
559
|
+
let globalErrorLine = '';
|
|
560
|
+
if (tree.globalError) {
|
|
561
|
+
const v = addImport(tree.globalError);
|
|
562
|
+
globalErrorLine = ` globalError: { load: ${v}, filePath: ${JSON.stringify(tree.globalError.filePath)} },`;
|
|
563
|
+
}
|
|
564
|
+
|
|
394
565
|
// Interception rewrites — computed at build time from the route tree.
|
|
395
566
|
// Only interceptedPattern and interceptingPrefix are needed at runtime.
|
|
396
567
|
const rewrites = collectInterceptionRewrites(tree.root);
|
|
@@ -406,7 +577,9 @@ function generateManifestModule(tree: RouteTree): string {
|
|
|
406
577
|
...imports,
|
|
407
578
|
'',
|
|
408
579
|
'const manifest = {',
|
|
580
|
+
` viteRoot: ${JSON.stringify(viteRoot)},`,
|
|
409
581
|
proxyLine,
|
|
582
|
+
globalErrorLine,
|
|
410
583
|
rewritesLine,
|
|
411
584
|
` root: ${rootSerialized},`,
|
|
412
585
|
'};',
|
|
@@ -137,5 +137,36 @@ export function timberServerBundle(): Plugin[] {
|
|
|
137
137
|
},
|
|
138
138
|
};
|
|
139
139
|
|
|
140
|
-
|
|
140
|
+
// Fix Rolldown's `createRequire(import.meta.url)` CJS interop shim for
|
|
141
|
+
// Cloudflare Workers. Rolldown emits this for CJS dependencies (e.g.
|
|
142
|
+
// @opentelemetry/context-async-hooks) that use `require()`. On Workers,
|
|
143
|
+
// `import.meta.url` is `undefined` for non-entry modules, causing:
|
|
144
|
+
// TypeError: The argument 'path' must be a file URL object, a file URL
|
|
145
|
+
// string, or an absolute path string. Received 'undefined'
|
|
146
|
+
//
|
|
147
|
+
// The fix: provide a fallback URL when `import.meta.url` is undefined.
|
|
148
|
+
// The actual URL doesn't matter — `createRequire` only needs it for
|
|
149
|
+
// resolving relative paths, but the only `__require()` calls are for
|
|
150
|
+
// Node built-ins (events, async_hooks) which resolve from any base.
|
|
151
|
+
//
|
|
152
|
+
// The top-level `ssr: { target: 'webworker' }` was supposed to prevent
|
|
153
|
+
// this, but it doesn't propagate to custom environments (rsc) in Vite's
|
|
154
|
+
// Environment API. See LOCAL-405.
|
|
155
|
+
const createRequireFixPlugin: Plugin = {
|
|
156
|
+
name: 'timber-create-require-fix',
|
|
157
|
+
applyToEnvironment(environment) {
|
|
158
|
+
return environment.name === 'rsc' || environment.name === 'ssr';
|
|
159
|
+
},
|
|
160
|
+
renderChunk(code) {
|
|
161
|
+
const pattern = 'createRequire(import.meta.url)';
|
|
162
|
+
if (!code.includes(pattern)) return null;
|
|
163
|
+
|
|
164
|
+
return {
|
|
165
|
+
code: code.replace(pattern, 'createRequire(import.meta.url || "file:///app")'),
|
|
166
|
+
map: null,
|
|
167
|
+
};
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
return [bundlePlugin, esmInitFixPlugin, createRequireFixPlugin];
|
|
141
172
|
}
|