@timber-js/app 0.2.0-alpha.97 → 0.2.0-alpha.99
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-CQ8Z8VGL.js +1061 -0
- package/dist/_chunks/actions-CQ8Z8VGL.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/{define-Itxvcd7F.js → define-B-Q_UMOD.js} +19 -23
- package/dist/_chunks/define-B-Q_UMOD.js.map +1 -0
- package/dist/_chunks/{define-C77ScO0m.js → define-CfBPoJb0.js} +24 -7
- package/dist/_chunks/define-CfBPoJb0.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/{format-CYBGxKtc.js → format-Bcn-Iv1x.js} +1 -1
- package/dist/_chunks/{format-CYBGxKtc.js.map → format-Bcn-Iv1x.js.map} +1 -1
- 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-DS3eKNmf.js → metadata-routes-BU684ls2.js} +1 -1
- package/dist/_chunks/{metadata-routes-DS3eKNmf.js.map → metadata-routes-BU684ls2.js.map} +1 -1
- package/dist/_chunks/navigation-root-BCYczjml.js +96 -0
- package/dist/_chunks/navigation-root-BCYczjml.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-C3xl_vfb.js → schema-bridge-Cxu4l-7p.js} +1 -1
- package/dist/_chunks/{schema-bridge-C3xl_vfb.js.map → schema-bridge-Cxu4l-7p.js.map} +1 -1
- package/dist/_chunks/segment-classify-BjfuctV2.js +137 -0
- package/dist/_chunks/segment-classify-BjfuctV2.js.map +1 -0
- package/dist/_chunks/{segment-context-fHFLF1PE.js → segment-context-Dx_OizxD.js} +1 -1
- package/dist/_chunks/{segment-context-fHFLF1PE.js.map → segment-context-Dx_OizxD.js.map} +1 -1
- package/dist/_chunks/{router-ref-C8OCm7g7.js → ssr-data-B4CdH7rE.js} +2 -26
- package/dist/_chunks/ssr-data-B4CdH7rE.js.map +1 -0
- package/dist/_chunks/{stale-reload-BX5gL1r-.js → stale-reload-Bab885FO.js} +1 -1
- package/dist/_chunks/{stale-reload-BX5gL1r-.js.map → stale-reload-Bab885FO.js.map} +1 -1
- 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-BiV5GJgm.js → use-query-states-B2XTqxDR.js} +3 -19
- package/dist/_chunks/use-query-states-B2XTqxDR.js.map +1 -0
- package/dist/_chunks/{use-params-IOPu7E8t.js → use-segment-params-BkpKAQ7D.js} +9 -95
- package/dist/_chunks/use-segment-params-BkpKAQ7D.js.map +1 -0
- package/dist/_chunks/{interception-BbqMCVXa.js → walkers-Tg0Alwcg.js} +66 -87
- package/dist/_chunks/walkers-Tg0Alwcg.js.map +1 -0
- package/dist/_chunks/{dev-warnings-DpGRGoDi.js → warnings-Cg47l5sk.js} +3 -3
- 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.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +8 -28
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/adapters/nitro.d.ts.map +1 -1
- package/dist/adapters/nitro.js +63 -31
- 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/index.js +9 -2
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/timber-cache.d.ts.map +1 -1
- package/dist/client/error-boundary.js +2 -1
- package/dist/client/error-boundary.js.map +1 -1
- package/dist/client/form.d.ts +10 -24
- package/dist/client/form.d.ts.map +1 -1
- package/dist/client/index.d.ts +1 -5
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +41 -91
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal.d.ts +2 -1
- package/dist/client/internal.d.ts.map +1 -1
- package/dist/client/internal.js +81 -7
- package/dist/client/internal.js.map +1 -1
- package/dist/client/rsc-fetch.d.ts.map +1 -1
- package/dist/client/state.d.ts +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-params.d.ts → use-segment-params.d.ts} +1 -1
- package/dist/client/use-segment-params.d.ts.map +1 -0
- package/dist/codec.d.ts +1 -1
- package/dist/codec.d.ts.map +1 -1
- package/dist/codec.js +2 -2
- package/dist/config-types.d.ts +28 -0
- package/dist/config-types.d.ts.map +1 -1
- package/dist/cookies/define-cookie.d.ts +87 -35
- 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 +48 -2
- package/dist/cookies/index.js.map +1 -0
- 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/{plugins/dev-404-page.d.ts → dev-tools/404-page.d.ts} +9 -19
- package/dist/dev-tools/404-page.d.ts.map +1 -0
- package/dist/{plugins/dev-browser-logs.d.ts → dev-tools/browser-logs.d.ts} +1 -1
- package/dist/dev-tools/browser-logs.d.ts.map +1 -0
- package/dist/{plugins/dev-error-page.d.ts → dev-tools/error-page.d.ts} +2 -2
- package/dist/dev-tools/error-page.d.ts.map +1 -0
- package/dist/{server/dev-holding-server.d.ts → dev-tools/holding-server.d.ts} +5 -3
- 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} +1 -1
- package/dist/dev-tools/logs.d.ts.map +1 -0
- package/dist/{plugins/dev-error-overlay.d.ts → dev-tools/overlay.d.ts} +3 -12
- 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/{plugins/dev-terminal-error.d.ts → dev-tools/terminal.d.ts} +2 -2
- package/dist/dev-tools/terminal.d.ts.map +1 -0
- package/dist/{server/dev-warnings.d.ts → dev-tools/warnings.d.ts} +1 -1
- package/dist/dev-tools/warnings.d.ts.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +285 -133
- package/dist/index.js.map +1 -1
- package/dist/plugin-context.d.ts +1 -1
- package/dist/plugin-context.d.ts.map +1 -1
- package/dist/plugins/adapter-build.d.ts.map +1 -1
- package/dist/plugins/build-report.d.ts +6 -4
- package/dist/plugins/build-report.d.ts.map +1 -1
- package/dist/routing/convention-lint.d.ts.map +1 -1
- package/dist/routing/index.d.ts +5 -3
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +3 -3
- package/dist/routing/scanner.d.ts +1 -10
- package/dist/routing/scanner.d.ts.map +1 -1
- package/dist/routing/segment-classify.d.ts +37 -8
- package/dist/routing/segment-classify.d.ts.map +1 -1
- package/dist/routing/status-file-lint.d.ts.map +1 -1
- package/dist/routing/types.d.ts +63 -23
- 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/search-params/define.d.ts +25 -7
- package/dist/search-params/define.d.ts.map +1 -1
- package/dist/search-params/index.js +5 -3
- package/dist/search-params/index.js.map +1 -1
- package/dist/search-params/wrappers.d.ts +2 -2
- package/dist/search-params/wrappers.d.ts.map +1 -1
- package/dist/segment-params/define.d.ts +23 -6
- package/dist/segment-params/define.d.ts.map +1 -1
- package/dist/segment-params/index.js +1 -1
- package/dist/server/access-gate.d.ts +4 -3
- package/dist/server/access-gate.d.ts.map +1 -1
- package/dist/server/action-handler.d.ts +15 -6
- package/dist/server/action-handler.d.ts.map +1 -1
- package/dist/server/als-registry.d.ts +5 -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/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/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/early-hints-sender.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 +59 -59
- package/dist/server/html-injectors.d.ts.map +1 -1
- package/dist/server/index.d.ts +5 -4
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +4 -149
- package/dist/server/index.js.map +1 -1
- package/dist/server/internal.d.ts +6 -4
- package/dist/server/internal.d.ts.map +1 -1
- package/dist/server/internal.js +852 -852
- package/dist/server/internal.js.map +1 -1
- package/dist/server/logger.d.ts +14 -0
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/middleware-runner.d.ts +17 -0
- package/dist/server/middleware-runner.d.ts.map +1 -1
- package/dist/server/node-stream-transforms.d.ts +46 -49
- package/dist/server/node-stream-transforms.d.ts.map +1 -1
- 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-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 +51 -32
- 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/request-context.d.ts +22 -159
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/route-element-builder.d.ts.map +1 -1
- package/dist/server/route-matcher.d.ts +20 -47
- 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/helpers.d.ts +1 -1
- package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
- 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/wrap-action-dispatch.d.ts +119 -0
- package/dist/server/rsc-entry/wrap-action-dispatch.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/tracing.d.ts +1 -1
- package/dist/server/tracing.d.ts.map +1 -1
- package/dist/server/tree-builder.d.ts +45 -16
- package/dist/server/tree-builder.d.ts.map +1 -1
- package/dist/server/types.d.ts +48 -0
- 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/shims/headers.d.ts +2 -2
- 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 +9 -4
- package/dist/shims/navigation.d.ts.map +1 -1
- package/dist/utils/directive-parser.d.ts +0 -45
- package/dist/utils/directive-parser.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/adapters/build-output-helper.ts +77 -0
- package/src/adapters/cloudflare.ts +10 -50
- package/src/adapters/nitro.ts +66 -50
- package/src/adapters/shared.ts +40 -0
- package/src/cache/timber-cache.ts +3 -2
- package/src/client/form.tsx +17 -25
- package/src/client/index.ts +16 -9
- package/src/client/internal.ts +3 -2
- package/src/client/router.ts +1 -1
- package/src/client/rsc-fetch.ts +15 -0
- package/src/client/state.ts +2 -2
- package/src/client/use-cookie.ts +29 -0
- package/src/codec.ts +3 -7
- package/src/config-types.ts +28 -0
- package/src/cookies/define-cookie.ts +271 -78
- package/src/cookies/index.ts +11 -8
- package/src/cookies/json-cookie.ts +105 -0
- package/src/cookies/validation.ts +134 -0
- package/src/{plugins/dev-404-page.ts → dev-tools/404-page.ts} +17 -48
- package/src/{plugins/dev-error-page.ts → dev-tools/error-page.ts} +5 -32
- package/src/{server/dev-holding-server.ts → dev-tools/holding-server.ts} +4 -2
- 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} +2 -2
- package/src/{plugins/dev-error-overlay.ts → dev-tools/overlay.ts} +5 -23
- package/src/dev-tools/stack-classifier.ts +75 -0
- package/src/{plugins/dev-terminal-error.ts → dev-tools/terminal.ts} +4 -38
- package/src/{server/dev-warnings.ts → dev-tools/warnings.ts} +1 -1
- package/src/index.ts +95 -34
- package/src/plugin-context.ts +1 -1
- package/src/plugins/adapter-build.ts +3 -1
- package/src/plugins/build-report.ts +13 -22
- package/src/plugins/dev-server.ts +3 -3
- package/src/plugins/routing.ts +14 -12
- package/src/plugins/shims.ts +1 -1
- package/src/plugins/static-build.ts +1 -1
- package/src/routing/codegen.ts +1 -1
- package/src/routing/convention-lint.ts +9 -8
- package/src/routing/index.ts +5 -3
- package/src/routing/interception.ts +1 -1
- package/src/routing/scanner.ts +22 -95
- package/src/routing/segment-classify.ts +107 -8
- package/src/routing/status-file-lint.ts +7 -5
- package/src/routing/types.ts +63 -23
- package/src/routing/walkers.ts +90 -0
- package/src/search-params/define.ts +71 -15
- package/src/search-params/wrappers.ts +9 -2
- package/src/segment-params/define.ts +66 -13
- package/src/server/access-gate.tsx +9 -8
- package/src/server/action-handler.ts +34 -38
- package/src/server/als-registry.ts +5 -5
- package/src/server/asset-headers.ts +8 -34
- package/src/server/cookie-context.ts +468 -0
- package/src/server/cookie-parsing.ts +135 -0
- package/src/server/{deny-page-resolver.ts → deny-boundary.ts} +78 -14
- package/src/server/deny-renderer.ts +7 -12
- package/src/server/early-hints-sender.ts +3 -2
- package/src/server/fallback-error.ts +2 -2
- package/src/server/html-injector-core.ts +403 -0
- package/src/server/html-injectors.ts +158 -297
- package/src/server/index.ts +13 -14
- package/src/server/internal.ts +10 -3
- package/src/server/logger.ts +23 -0
- package/src/server/middleware-runner.ts +44 -0
- package/src/server/node-stream-transforms.ts +108 -248
- package/src/server/param-coercion.ts +76 -0
- package/src/server/pipeline-helpers.ts +204 -0
- package/src/server/pipeline-outcome.ts +167 -0
- package/src/server/pipeline-phases.ts +409 -0
- package/src/server/pipeline.ts +70 -540
- package/src/server/port-resolution.ts +215 -0
- package/src/server/request-context.ts +46 -451
- package/src/server/route-element-builder.ts +8 -4
- package/src/server/route-matcher.ts +28 -60
- package/src/server/rsc-entry/action-middleware-runner.ts +167 -0
- package/src/server/rsc-entry/api-handler.ts +2 -2
- package/src/server/rsc-entry/error-renderer.ts +2 -2
- package/src/server/rsc-entry/helpers.ts +2 -7
- package/src/server/rsc-entry/index.ts +81 -366
- package/src/server/rsc-entry/render-route.ts +304 -0
- package/src/server/rsc-entry/rsc-payload.ts +1 -1
- package/src/server/rsc-entry/ssr-renderer.ts +2 -2
- package/src/server/rsc-entry/wrap-action-dispatch.ts +449 -0
- package/src/server/sitemap-generator.ts +1 -1
- package/src/server/slot-resolver.ts +1 -1
- package/src/server/ssr-entry.ts +1 -1
- package/src/server/state-tree-diff.ts +4 -1
- package/src/server/status-code-resolver.ts +112 -128
- package/src/server/tracing.ts +3 -3
- package/src/server/tree-builder.ts +134 -56
- package/src/server/types.ts +52 -0
- package/src/server/utils/escape-html.ts +20 -0
- package/src/shims/headers.ts +3 -3
- package/src/shims/navigation-client.ts +4 -3
- package/src/shims/navigation.ts +9 -7
- package/src/utils/directive-parser.ts +0 -392
- package/dist/_chunks/actions-DLnUaR65.js +0 -421
- package/dist/_chunks/actions-DLnUaR65.js.map +0 -1
- package/dist/_chunks/als-registry-HS0LGUl2.js +0 -41
- package/dist/_chunks/als-registry-HS0LGUl2.js.map +0 -1
- package/dist/_chunks/debug-ECi_61pb.js +0 -108
- package/dist/_chunks/debug-ECi_61pb.js.map +0 -1
- package/dist/_chunks/define-C77ScO0m.js.map +0 -1
- package/dist/_chunks/define-Itxvcd7F.js.map +0 -1
- package/dist/_chunks/define-cookie-BowvzoP0.js +0 -94
- package/dist/_chunks/define-cookie-BowvzoP0.js.map +0 -1
- package/dist/_chunks/dev-warnings-DpGRGoDi.js.map +0 -1
- package/dist/_chunks/interception-BbqMCVXa.js.map +0 -1
- package/dist/_chunks/merge-search-params-Cm_KIWDX.js +0 -41
- package/dist/_chunks/merge-search-params-Cm_KIWDX.js.map +0 -1
- package/dist/_chunks/request-context-CK5tZqIP.js +0 -478
- package/dist/_chunks/request-context-CK5tZqIP.js.map +0 -1
- package/dist/_chunks/router-ref-C8OCm7g7.js.map +0 -1
- package/dist/_chunks/segment-classify-BDNn6EzD.js +0 -65
- package/dist/_chunks/segment-classify-BDNn6EzD.js.map +0 -1
- package/dist/_chunks/tracing-CCYbKn5n.js +0 -238
- package/dist/_chunks/tracing-CCYbKn5n.js.map +0 -1
- package/dist/_chunks/use-params-IOPu7E8t.js.map +0 -1
- package/dist/_chunks/use-query-states-BiV5GJgm.js.map +0 -1
- package/dist/client/use-params.d.ts.map +0 -1
- package/dist/plugins/dev-404-page.d.ts.map +0 -1
- package/dist/plugins/dev-browser-logs.d.ts.map +0 -1
- package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
- package/dist/plugins/dev-error-page.d.ts.map +0 -1
- package/dist/plugins/dev-logs.d.ts.map +0 -1
- package/dist/plugins/dev-terminal-error.d.ts.map +0 -1
- package/dist/server/deny-page-resolver.d.ts +0 -52
- package/dist/server/deny-page-resolver.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-holding-server.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/page-deny-boundary.d.ts +0 -31
- package/dist/server/page-deny-boundary.d.ts.map +0 -1
- 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/page-deny-boundary.tsx +0 -56
- /package/src/client/{use-params.ts → use-segment-params.ts} +0 -0
- /package/src/{plugins/dev-browser-logs.ts → dev-tools/browser-logs.ts} +0 -0
- /package/src/{server/dev-logger.ts → dev-tools/logger.ts} +0 -0
|
@@ -5,10 +5,6 @@
|
|
|
5
5
|
* avoiding false positives from regex matching inside string literals,
|
|
6
6
|
* comments, or template expressions.
|
|
7
7
|
*
|
|
8
|
-
* The function-body directive detection (findFunctionsWithDirective) is a
|
|
9
|
-
* general-purpose utility kept for future use. Custom directives like
|
|
10
|
-
* 'use cache' are not currently implemented — see design/06-caching.md.
|
|
11
|
-
*
|
|
12
8
|
* @module
|
|
13
9
|
*/
|
|
14
10
|
|
|
@@ -29,31 +25,6 @@ export interface FileDirective {
|
|
|
29
25
|
line: number;
|
|
30
26
|
}
|
|
31
27
|
|
|
32
|
-
export interface FunctionWithDirective {
|
|
33
|
-
/** Function name (or 'default' for anonymous default exports) */
|
|
34
|
-
name: string;
|
|
35
|
-
/** The directive found in the function body */
|
|
36
|
-
directive: string;
|
|
37
|
-
/** 1-based line number of the directive */
|
|
38
|
-
directiveLine: number;
|
|
39
|
-
/** Start offset of the function in the source */
|
|
40
|
-
start: number;
|
|
41
|
-
/** End offset of the function in the source */
|
|
42
|
-
end: number;
|
|
43
|
-
/** Start offset of the function body block (after the '{') */
|
|
44
|
-
bodyStart: number;
|
|
45
|
-
/** End offset of the function body block (the '}') */
|
|
46
|
-
bodyEnd: number;
|
|
47
|
-
/** Content between { and } of the function body */
|
|
48
|
-
bodyContent: string;
|
|
49
|
-
/** 'export ', 'export default ', or '' */
|
|
50
|
-
prefix: string;
|
|
51
|
-
/** Whether this is an arrow function */
|
|
52
|
-
isArrow: boolean;
|
|
53
|
-
/** The function signature (everything before the body '{') */
|
|
54
|
-
declaration: string;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
28
|
// ---------------------------------------------------------------------------
|
|
58
29
|
// File-level directive detection
|
|
59
30
|
// ---------------------------------------------------------------------------
|
|
@@ -167,366 +138,3 @@ function detectFileDirectiveFallback(code: string, directives: string[]): FileDi
|
|
|
167
138
|
|
|
168
139
|
return null;
|
|
169
140
|
}
|
|
170
|
-
|
|
171
|
-
// ---------------------------------------------------------------------------
|
|
172
|
-
// Function-body directive detection
|
|
173
|
-
// ---------------------------------------------------------------------------
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* Find all functions in the source code that contain a directive
|
|
177
|
-
* (e.g. 'use cache', 'use dynamic') as their first body statement.
|
|
178
|
-
*
|
|
179
|
-
* Parses the source with acorn and walks the AST looking for function
|
|
180
|
-
* declarations and arrow function expressions whose body is a
|
|
181
|
-
* BlockStatement with a directive prologue.
|
|
182
|
-
*
|
|
183
|
-
* Returns an array of function info objects, sorted by position
|
|
184
|
-
* (descending) for safe end-to-start replacement.
|
|
185
|
-
*/
|
|
186
|
-
export function findFunctionsWithDirective(
|
|
187
|
-
code: string,
|
|
188
|
-
directive: string
|
|
189
|
-
): FunctionWithDirective[] {
|
|
190
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
191
|
-
let ast: any;
|
|
192
|
-
try {
|
|
193
|
-
ast = jsxParser.parse(code, {
|
|
194
|
-
ecmaVersion: 'latest',
|
|
195
|
-
sourceType: 'module',
|
|
196
|
-
locations: true,
|
|
197
|
-
});
|
|
198
|
-
} catch {
|
|
199
|
-
// TypeScript fallback: return empty — callers should use the quick
|
|
200
|
-
// regex check first and skip non-matching files anyway
|
|
201
|
-
return findFunctionsWithDirectiveFallback(code, directive);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
const results: FunctionWithDirective[] = [];
|
|
205
|
-
walkAst(ast, code, directive, results, []);
|
|
206
|
-
|
|
207
|
-
// Sort descending by start position for safe end-to-start replacement
|
|
208
|
-
results.sort((a, b) => b.start - a.start);
|
|
209
|
-
return results;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Recursive AST walker that finds functions with a directive in their body.
|
|
214
|
-
*/
|
|
215
|
-
function walkAst(
|
|
216
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
217
|
-
node: any,
|
|
218
|
-
code: string,
|
|
219
|
-
directive: string,
|
|
220
|
-
results: FunctionWithDirective[],
|
|
221
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
222
|
-
ancestors: any[]
|
|
223
|
-
): void {
|
|
224
|
-
if (!node || typeof node !== 'object') return;
|
|
225
|
-
|
|
226
|
-
if (Array.isArray(node)) {
|
|
227
|
-
for (const child of node) {
|
|
228
|
-
walkAst(child, code, directive, results, ancestors);
|
|
229
|
-
}
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
if (!node.type) return;
|
|
234
|
-
|
|
235
|
-
// Check function declarations and expressions
|
|
236
|
-
if (node.type === 'FunctionDeclaration' || node.type === 'FunctionExpression') {
|
|
237
|
-
checkFunctionBody(node, code, directive, results, ancestors);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
// Check arrow functions with block bodies
|
|
241
|
-
if (node.type === 'ArrowFunctionExpression' && node.body && node.body.type === 'BlockStatement') {
|
|
242
|
-
checkFunctionBody(node, code, directive, results, ancestors);
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
// Walk children
|
|
246
|
-
const newAncestors = [...ancestors, node];
|
|
247
|
-
for (const key of Object.keys(node)) {
|
|
248
|
-
if (key === 'type' || key === 'loc' || key === 'start' || key === 'end') continue;
|
|
249
|
-
const child = node[key];
|
|
250
|
-
if (child && typeof child === 'object') {
|
|
251
|
-
walkAst(child, code, directive, results, newAncestors);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* Check if a function's body starts with the target directive.
|
|
258
|
-
*/
|
|
259
|
-
function checkFunctionBody(
|
|
260
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
261
|
-
node: any,
|
|
262
|
-
code: string,
|
|
263
|
-
directive: string,
|
|
264
|
-
results: FunctionWithDirective[],
|
|
265
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
266
|
-
ancestors: any[]
|
|
267
|
-
): void {
|
|
268
|
-
const body = node.type === 'ArrowFunctionExpression' ? node.body : node.body;
|
|
269
|
-
if (!body || body.type !== 'BlockStatement' || body.body.length === 0) return;
|
|
270
|
-
|
|
271
|
-
// Check the first statement for a directive
|
|
272
|
-
const firstStmt = body.body[0];
|
|
273
|
-
if (
|
|
274
|
-
firstStmt.type !== 'ExpressionStatement' ||
|
|
275
|
-
firstStmt.expression.type !== 'Literal' ||
|
|
276
|
-
firstStmt.expression.value !== directive
|
|
277
|
-
) {
|
|
278
|
-
return;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
// Determine function metadata from AST context
|
|
282
|
-
const parent = ancestors[ancestors.length - 1];
|
|
283
|
-
const grandparent = ancestors.length >= 2 ? ancestors[ancestors.length - 2] : null;
|
|
284
|
-
|
|
285
|
-
let name = '';
|
|
286
|
-
let prefix = '';
|
|
287
|
-
const isArrow = node.type === 'ArrowFunctionExpression';
|
|
288
|
-
let funcStart = node.start;
|
|
289
|
-
let funcEnd = node.end;
|
|
290
|
-
|
|
291
|
-
if (node.type === 'FunctionDeclaration') {
|
|
292
|
-
name = node.id?.name || 'default';
|
|
293
|
-
|
|
294
|
-
// Check for export
|
|
295
|
-
if (parent?.type === 'ExportNamedDeclaration') {
|
|
296
|
-
prefix = 'export ';
|
|
297
|
-
funcStart = parent.start;
|
|
298
|
-
funcEnd = parent.end;
|
|
299
|
-
} else if (parent?.type === 'ExportDefaultDeclaration') {
|
|
300
|
-
prefix = 'export default ';
|
|
301
|
-
funcStart = parent.start;
|
|
302
|
-
funcEnd = parent.end;
|
|
303
|
-
}
|
|
304
|
-
} else if (node.type === 'ArrowFunctionExpression') {
|
|
305
|
-
// Arrow in variable declaration: const name = async () => {}
|
|
306
|
-
if (parent?.type === 'VariableDeclarator' && parent.id?.name) {
|
|
307
|
-
name = parent.id.name;
|
|
308
|
-
// Include the full variable declaration
|
|
309
|
-
if (grandparent?.type === 'VariableDeclaration') {
|
|
310
|
-
funcStart = grandparent.start;
|
|
311
|
-
funcEnd = grandparent.end;
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
} else if (node.type === 'FunctionExpression') {
|
|
315
|
-
// Function expression in variable: const name = async function() {}
|
|
316
|
-
name = node.id?.name || '';
|
|
317
|
-
if (parent?.type === 'VariableDeclarator' && parent.id?.name) {
|
|
318
|
-
name = parent.id.name;
|
|
319
|
-
if (grandparent?.type === 'VariableDeclaration') {
|
|
320
|
-
funcStart = grandparent.start;
|
|
321
|
-
funcEnd = grandparent.end;
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
if (!name) return; // Skip anonymous functions we can't name
|
|
327
|
-
|
|
328
|
-
// Extract the body content (between the braces)
|
|
329
|
-
const bodyStart = body.start + 1; // after '{'
|
|
330
|
-
const bodyEnd = body.end - 1; // before '}'
|
|
331
|
-
const bodyContent = code.slice(bodyStart, bodyEnd);
|
|
332
|
-
|
|
333
|
-
// Extract declaration (everything before the body '{')
|
|
334
|
-
const declaration = code.slice(funcStart, body.start).trim();
|
|
335
|
-
|
|
336
|
-
results.push({
|
|
337
|
-
name,
|
|
338
|
-
directive,
|
|
339
|
-
directiveLine: firstStmt.loc.start.line,
|
|
340
|
-
start: funcStart,
|
|
341
|
-
end: funcEnd,
|
|
342
|
-
bodyStart,
|
|
343
|
-
bodyEnd,
|
|
344
|
-
bodyContent,
|
|
345
|
-
prefix,
|
|
346
|
-
isArrow,
|
|
347
|
-
declaration,
|
|
348
|
-
});
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
// ---------------------------------------------------------------------------
|
|
352
|
-
// TypeScript fallback for function-body directives
|
|
353
|
-
// ---------------------------------------------------------------------------
|
|
354
|
-
|
|
355
|
-
/**
|
|
356
|
-
* Fallback that uses regex to find functions with directives when acorn
|
|
357
|
-
* cannot parse the file (TypeScript with type annotations).
|
|
358
|
-
*
|
|
359
|
-
* This is less precise but handles common patterns. The regex approach
|
|
360
|
-
* is only used as a fallback — pure JS/JSX files always use the AST path.
|
|
361
|
-
*/
|
|
362
|
-
function findFunctionsWithDirectiveFallback(
|
|
363
|
-
code: string,
|
|
364
|
-
directive: string
|
|
365
|
-
): FunctionWithDirective[] {
|
|
366
|
-
const results: FunctionWithDirective[] = [];
|
|
367
|
-
const directivePattern = new RegExp(`['"]${escapeRegex(directive)}['"]`);
|
|
368
|
-
|
|
369
|
-
// Quick bail-out
|
|
370
|
-
if (!directivePattern.test(code)) return results;
|
|
371
|
-
|
|
372
|
-
// Pattern 1: function declarations
|
|
373
|
-
const fnDeclPattern =
|
|
374
|
-
/(?:(export\s+default\s+|export\s+))?async\s+function\s+(\w+)\s*\([^)]*\)\s*\{/g;
|
|
375
|
-
let match: RegExpExecArray | null;
|
|
376
|
-
|
|
377
|
-
while ((match = fnDeclPattern.exec(code)) !== null) {
|
|
378
|
-
const prefix = match[1]?.trim() || '';
|
|
379
|
-
const name = match[2];
|
|
380
|
-
const bodyStart = match.index + match[0].length;
|
|
381
|
-
const bodyEnd = findMatchingBraceFallback(code, bodyStart - 1);
|
|
382
|
-
if (bodyEnd === -1) continue;
|
|
383
|
-
|
|
384
|
-
const bodyContent = code.slice(bodyStart, bodyEnd);
|
|
385
|
-
// Check that the directive is the first meaningful statement
|
|
386
|
-
const trimmedBody = bodyContent.trimStart();
|
|
387
|
-
if (!trimmedBody.startsWith(`'${directive}'`) && !trimmedBody.startsWith(`"${directive}"`))
|
|
388
|
-
continue;
|
|
389
|
-
|
|
390
|
-
const directiveLine =
|
|
391
|
-
code.slice(0, bodyStart).split('\n').length +
|
|
392
|
-
bodyContent.slice(0, bodyContent.indexOf(directive)).split('\n').length -
|
|
393
|
-
1;
|
|
394
|
-
|
|
395
|
-
results.push({
|
|
396
|
-
name,
|
|
397
|
-
directive,
|
|
398
|
-
directiveLine,
|
|
399
|
-
start: match.index,
|
|
400
|
-
end: bodyEnd + 1,
|
|
401
|
-
bodyStart,
|
|
402
|
-
bodyEnd,
|
|
403
|
-
bodyContent,
|
|
404
|
-
prefix: prefix ? prefix + ' ' : '',
|
|
405
|
-
isArrow: false,
|
|
406
|
-
declaration: code.slice(match.index, bodyStart - 1).trimEnd(),
|
|
407
|
-
});
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
// Pattern 2: arrow functions
|
|
411
|
-
const arrowPattern = /(?:const|let|var)\s+(\w+)\s*=\s*async\s*(\([^)]*\)|[^=]*?)\s*=>\s*\{/g;
|
|
412
|
-
while ((match = arrowPattern.exec(code)) !== null) {
|
|
413
|
-
const name = match[1];
|
|
414
|
-
const bodyStart = match.index + match[0].length;
|
|
415
|
-
const bodyEnd = findMatchingBraceFallback(code, bodyStart - 1);
|
|
416
|
-
if (bodyEnd === -1) continue;
|
|
417
|
-
|
|
418
|
-
const bodyContent = code.slice(bodyStart, bodyEnd);
|
|
419
|
-
const trimmedBody = bodyContent.trimStart();
|
|
420
|
-
if (!trimmedBody.startsWith(`'${directive}'`) && !trimmedBody.startsWith(`"${directive}"`))
|
|
421
|
-
continue;
|
|
422
|
-
|
|
423
|
-
const directiveLine =
|
|
424
|
-
code.slice(0, bodyStart).split('\n').length +
|
|
425
|
-
bodyContent.slice(0, bodyContent.indexOf(directive)).split('\n').length -
|
|
426
|
-
1;
|
|
427
|
-
|
|
428
|
-
results.push({
|
|
429
|
-
name,
|
|
430
|
-
directive,
|
|
431
|
-
directiveLine,
|
|
432
|
-
start: match.index,
|
|
433
|
-
end: bodyEnd + 1,
|
|
434
|
-
bodyStart,
|
|
435
|
-
bodyEnd,
|
|
436
|
-
bodyContent,
|
|
437
|
-
prefix: '',
|
|
438
|
-
isArrow: true,
|
|
439
|
-
declaration: code.slice(match.index, bodyStart - 1).trimEnd(),
|
|
440
|
-
});
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
results.sort((a, b) => b.start - a.start);
|
|
444
|
-
return results;
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
function escapeRegex(s: string): string {
|
|
448
|
-
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
/**
|
|
452
|
-
* Find matching closing brace — same algorithm as cache-transform.ts
|
|
453
|
-
* but kept here for the fallback path only.
|
|
454
|
-
*/
|
|
455
|
-
function findMatchingBraceFallback(code: string, openPos: number): number {
|
|
456
|
-
let depth = 1;
|
|
457
|
-
let i = openPos + 1;
|
|
458
|
-
|
|
459
|
-
while (i < code.length && depth > 0) {
|
|
460
|
-
const ch = code[i];
|
|
461
|
-
|
|
462
|
-
if (ch === "'" || ch === '"') {
|
|
463
|
-
i = skipStringFallback(code, i);
|
|
464
|
-
continue;
|
|
465
|
-
}
|
|
466
|
-
if (ch === '`') {
|
|
467
|
-
i = skipTemplateFallback(code, i);
|
|
468
|
-
continue;
|
|
469
|
-
}
|
|
470
|
-
if (ch === '/' && code[i + 1] === '/') {
|
|
471
|
-
i = code.indexOf('\n', i);
|
|
472
|
-
if (i === -1) return -1;
|
|
473
|
-
i++;
|
|
474
|
-
continue;
|
|
475
|
-
}
|
|
476
|
-
if (ch === '/' && code[i + 1] === '*') {
|
|
477
|
-
i = code.indexOf('*/', i + 2);
|
|
478
|
-
if (i === -1) return -1;
|
|
479
|
-
i += 2;
|
|
480
|
-
continue;
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
if (ch === '{') depth++;
|
|
484
|
-
else if (ch === '}') depth--;
|
|
485
|
-
i++;
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
return depth === 0 ? i - 1 : -1;
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
function skipStringFallback(code: string, start: number): number {
|
|
492
|
-
const quote = code[start];
|
|
493
|
-
let i = start + 1;
|
|
494
|
-
while (i < code.length) {
|
|
495
|
-
if (code[i] === '\\') {
|
|
496
|
-
i += 2;
|
|
497
|
-
continue;
|
|
498
|
-
}
|
|
499
|
-
if (code[i] === quote) return i + 1;
|
|
500
|
-
i++;
|
|
501
|
-
}
|
|
502
|
-
return i;
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
function skipTemplateFallback(code: string, start: number): number {
|
|
506
|
-
let i = start + 1;
|
|
507
|
-
while (i < code.length) {
|
|
508
|
-
if (code[i] === '\\') {
|
|
509
|
-
i += 2;
|
|
510
|
-
continue;
|
|
511
|
-
}
|
|
512
|
-
if (code[i] === '`') return i + 1;
|
|
513
|
-
if (code[i] === '$' && code[i + 1] === '{') {
|
|
514
|
-
i = findMatchingBraceFallback(code, i + 1) + 1;
|
|
515
|
-
continue;
|
|
516
|
-
}
|
|
517
|
-
i++;
|
|
518
|
-
}
|
|
519
|
-
return i;
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
// ---------------------------------------------------------------------------
|
|
523
|
-
// Convenience: quick regex check (for fast bail-out before AST parsing)
|
|
524
|
-
// ---------------------------------------------------------------------------
|
|
525
|
-
|
|
526
|
-
/**
|
|
527
|
-
* Quick regex check for whether code contains a directive string.
|
|
528
|
-
* Use as a fast bail-out before calling the AST-based functions.
|
|
529
|
-
*/
|
|
530
|
-
export function containsDirective(code: string, directive: string): boolean {
|
|
531
|
-
return code.includes(directive);
|
|
532
|
-
}
|