@timber-js/app 0.2.0-alpha.98 → 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/LICENSE +8 -0
- 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/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-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/{walkers-VOXgavMF.js → walkers-Tg0Alwcg.js} +6 -3
- 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 +8 -26
- 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 +40 -90
- 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} +1 -1
- 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} +1 -1
- 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 +97 -72
- 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/routing/convention-lint.d.ts.map +1 -1
- package/dist/routing/index.js +1 -1
- package/dist/routing/scanner.d.ts.map +1 -1
- package/dist/routing/status-file-lint.d.ts.map +1 -1
- 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/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 +261 -408
- 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/param-coercion.d.ts +26 -0
- package/dist/server/param-coercion.d.ts.map +1 -0
- package/dist/server/pipeline-helpers.d.ts +14 -7
- package/dist/server/pipeline-helpers.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 +4 -49
- package/dist/server/pipeline-phases.d.ts.map +1 -1
- package/dist/server/pipeline.d.ts +0 -2
- package/dist/server/pipeline.d.ts.map +1 -1
- 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/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 +59 -14
- package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -1
- package/dist/server/state-tree-diff.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/package.json +6 -7
- package/src/adapters/build-output-helper.ts +77 -0
- package/src/adapters/cloudflare.ts +10 -50
- package/src/adapters/nitro.ts +11 -45
- package/src/adapters/shared.ts +40 -0
- package/src/cache/timber-cache.ts +3 -2
- package/src/cli.ts +0 -0
- 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} +2 -7
- package/src/{plugins/dev-error-page.ts → dev-tools/error-page.ts} +5 -32
- 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 +11 -3
- package/src/plugin-context.ts +1 -1
- package/src/plugins/adapter-build.ts +3 -1
- package/src/plugins/dev-server.ts +3 -3
- package/src/plugins/shims.ts +1 -1
- package/src/plugins/static-build.ts +1 -1
- package/src/routing/convention-lint.ts +5 -4
- package/src/routing/scanner.ts +5 -2
- package/src/routing/status-file-lint.ts +4 -2
- 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 +28 -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 +2 -7
- package/src/server/early-hints-sender.ts +3 -2
- package/src/server/fallback-error.ts +1 -1
- 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/param-coercion.ts +76 -0
- package/src/server/pipeline-helpers.ts +37 -13
- package/src/server/pipeline-outcome.ts +167 -0
- package/src/server/pipeline-phases.ts +27 -209
- package/src/server/pipeline.ts +2 -9
- package/src/server/request-context.ts +46 -451
- package/src/server/route-element-builder.ts +7 -3
- package/src/server/rsc-entry/action-middleware-runner.ts +167 -0
- package/src/server/rsc-entry/error-renderer.ts +1 -1
- package/src/server/rsc-entry/helpers.ts +2 -7
- package/src/server/rsc-entry/index.ts +34 -273
- 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 +316 -23
- package/src/server/ssr-entry.ts +1 -1
- package/src/server/state-tree-diff.ts +4 -1
- package/src/server/tracing.ts +3 -3
- package/src/server/tree-builder.ts +128 -52
- 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/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/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/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/_chunks/walkers-VOXgavMF.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/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/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-holding-server.ts → dev-tools/holding-server.ts} +0 -0
- /package/src/{server/dev-logger.ts → dev-tools/logger.ts} +0 -0
|
@@ -19,15 +19,7 @@ import type { ViteDevServer } from 'vite';
|
|
|
19
19
|
export type ErrorPhase = 'module-transform' | 'proxy' | 'middleware' | 'access' | 'render' | 'handler';
|
|
20
20
|
/** Labels for terminal output. */
|
|
21
21
|
export declare const PHASE_LABELS: Record<ErrorPhase, string>;
|
|
22
|
-
export type FrameType
|
|
23
|
-
/**
|
|
24
|
-
* Classify a stack frame line by origin.
|
|
25
|
-
*
|
|
26
|
-
* - 'app': user application code (in project root, not node_modules)
|
|
27
|
-
* - 'framework': timber-app internal code
|
|
28
|
-
* - 'internal': node_modules, Node.js internals
|
|
29
|
-
*/
|
|
30
|
-
export declare function classifyFrame(frameLine: string, projectRoot: string): FrameType;
|
|
22
|
+
export { classifyFrame, classifyStack, type FrameType, type ClassifiedFrame } from './stack-classifier.js';
|
|
31
23
|
/**
|
|
32
24
|
* Extract the React component stack from an error, if present.
|
|
33
25
|
* React attaches this as `componentStack` during renderToReadableStream errors.
|
|
@@ -48,7 +40,7 @@ export declare function parseFirstAppFrame(stack: string, projectRoot: string):
|
|
|
48
40
|
* Falls back to 'render' if no specific phase can be determined.
|
|
49
41
|
*/
|
|
50
42
|
export declare function classifyErrorPhase(error: Error, projectRoot: string): ErrorPhase;
|
|
51
|
-
import { formatTerminalError as _formatTerminalError } from './
|
|
43
|
+
import { formatTerminalError as _formatTerminalError } from './terminal.js';
|
|
52
44
|
export declare const formatTerminalError: typeof _formatTerminalError;
|
|
53
45
|
/**
|
|
54
46
|
* Component info extracted from the RSC debug channel.
|
|
@@ -96,5 +88,4 @@ export declare function fixErrorStacktrace(server: ViteDevServer, error: Error,
|
|
|
96
88
|
* The dev server remains running — errors are handled, not fatal.
|
|
97
89
|
*/
|
|
98
90
|
export declare function sendErrorToOverlay(server: ViteDevServer, error: Error, phase: ErrorPhase, projectRoot: string, rscDebugComponents?: RscDebugComponentInfo[]): void;
|
|
99
|
-
|
|
100
|
-
//# sourceMappingURL=dev-error-overlay.d.ts.map
|
|
91
|
+
//# sourceMappingURL=overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/dev-tools/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,MAAM,CAAC;AAqC1D,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAClB,kBAAkB,GAClB,OAAO,GACP,YAAY,GACZ,QAAQ,GACR,QAAQ,GACR,SAAS,CAAC;AAEd,kCAAkC;AAClC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAOnD,CAAC;AAIF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI3G;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAUnE;AAID,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAqB5F;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,CAehF;AAOD,OAAO,EAAE,mBAAmB,IAAI,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,eAAO,MAAM,mBAAmB,6BAAuB,CAAC;AAIxD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAiCjF;AAkBD,wBAAgB,2BAA2B,IAAI,MAAM,CAyBpD;AAmHD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAMhG;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,EACnB,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,GAC3C,IAAI,CA0CN"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stack trace frame classifier — categorizes stack frames by origin.
|
|
3
|
+
*
|
|
4
|
+
* Provides `classifyFrame` (single frame) and `classifyStack` (full stack
|
|
5
|
+
* string) as the shared primitives used by the error page, terminal
|
|
6
|
+
* formatter, and overlay.
|
|
7
|
+
*
|
|
8
|
+
* Dev-only: this module is only imported by other dev-tools modules.
|
|
9
|
+
*/
|
|
10
|
+
export type FrameType = 'app' | 'framework' | 'internal';
|
|
11
|
+
export interface ClassifiedFrame {
|
|
12
|
+
raw: string;
|
|
13
|
+
type: FrameType;
|
|
14
|
+
file?: string;
|
|
15
|
+
line?: number;
|
|
16
|
+
col?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Classify a single stack frame line by origin.
|
|
20
|
+
*
|
|
21
|
+
* - 'app': user application code (in project root, not node_modules)
|
|
22
|
+
* - 'framework': timber-app internal code
|
|
23
|
+
* - 'internal': node_modules, Node.js internals
|
|
24
|
+
*/
|
|
25
|
+
export declare function classifyFrame(frameLine: string, projectRoot: string): FrameType;
|
|
26
|
+
/**
|
|
27
|
+
* Classify all frames in a full stack trace string.
|
|
28
|
+
*
|
|
29
|
+
* Parses the stack, skips the first line (error message), filters to
|
|
30
|
+
* lines starting with "at ", and returns classified frames with optional
|
|
31
|
+
* file/line/col metadata.
|
|
32
|
+
*/
|
|
33
|
+
export declare function classifyStack(stack: string, projectRoot: string): ClassifiedFrame[];
|
|
34
|
+
//# sourceMappingURL=stack-classifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-classifier.d.ts","sourceRoot":"","sources":["../../src/dev-tools/stack-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAmBD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,CAS/E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe,EAAE,CAUnF"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* Design doc: 21-dev-server.md §"Error Overlay"
|
|
15
15
|
*/
|
|
16
|
-
import { type ErrorPhase } from './
|
|
16
|
+
import { type ErrorPhase } from './overlay.js';
|
|
17
17
|
/**
|
|
18
18
|
* Format an error for terminal output with a boxed layout.
|
|
19
19
|
*
|
|
@@ -25,4 +25,4 @@ import { type ErrorPhase } from './dev-error-overlay.js';
|
|
|
25
25
|
* 5. Component stack (if present)
|
|
26
26
|
*/
|
|
27
27
|
export declare function formatTerminalError(error: Error, phase: ErrorPhase, projectRoot: string): string;
|
|
28
|
-
//# sourceMappingURL=
|
|
28
|
+
//# sourceMappingURL=terminal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/dev-tools/terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AA4EtB;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAkEhG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../../src/dev-tools/warnings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAK1C,eAAO,MAAM,SAAS;;;;;;;CAOZ,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAInE,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AASD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAEhE;AA0CD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CASrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAUpE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CASxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAU5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQnF;AAKD;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAQtF;AAID;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,CAEjD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import type { PluginOption } from 'vite';
|
|
13
13
|
import type { TimberUserConfig } from './config-types.js';
|
|
14
14
|
export type { TimberUserConfig } from './config-types.js';
|
|
15
|
+
export type { Metadata, MetadataRoute, MetadataHandler, MetadataResult } from './server/types.js';
|
|
15
16
|
/**
|
|
16
17
|
* Route map interface — augmented by the generated timber-routes.d.ts.
|
|
17
18
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,MAAM,CAAC;AA0BjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAc1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,MAAM,CAAC;AA0BjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAc1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQ1D,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAElG;;;;;;;;;GASG;AAEH,MAAM,WAAW,MAAM;CAAG;AAE1B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAEvE;AAgGD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CA+ShE;AAED,eAAe,MAAM,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM, r as __exportAll, t as __commonJSMin } from "./_chunks/chunk-BYIpzuS7.js";
|
|
2
|
-
import { n as setViteServer } from "./_chunks/
|
|
3
|
-
import {
|
|
4
|
-
import { t as
|
|
2
|
+
import { n as setViteServer } from "./_chunks/warnings-Cg47l5sk.js";
|
|
3
|
+
import { h as swallow } from "./_chunks/logger-0m8MsKdc.js";
|
|
4
|
+
import { i as scanRoutes, n as collectInterceptionRewrites, r as generateRouteMap, t as collectLeafRoutes } from "./_chunks/walkers-Tg0Alwcg.js";
|
|
5
|
+
import { t as formatSize } from "./_chunks/format-Bcn-Iv1x.js";
|
|
5
6
|
import { dirname, extname, join, normalize, resolve } from "node:path";
|
|
6
7
|
import { createRequire } from "node:module";
|
|
7
8
|
import react, { reactCompilerPreset } from "@vitejs/plugin-react";
|
|
@@ -98,7 +99,60 @@ function timberContent(ctx) {
|
|
|
98
99
|
};
|
|
99
100
|
}
|
|
100
101
|
//#endregion
|
|
101
|
-
//#region src/
|
|
102
|
+
//#region src/dev-tools/stack-classifier.ts
|
|
103
|
+
/** Parse file/line/col from a stack frame line. */
|
|
104
|
+
function parseFrame(frameLine) {
|
|
105
|
+
const parenMatch = /\(([^)]+):(\d+):(\d+)\)/.exec(frameLine);
|
|
106
|
+
if (parenMatch) return {
|
|
107
|
+
file: parenMatch[1],
|
|
108
|
+
line: Number(parenMatch[2]),
|
|
109
|
+
col: Number(parenMatch[3])
|
|
110
|
+
};
|
|
111
|
+
const bareMatch = /at (\/[^:]+):(\d+):(\d+)/.exec(frameLine);
|
|
112
|
+
if (bareMatch) return {
|
|
113
|
+
file: bareMatch[1],
|
|
114
|
+
line: Number(bareMatch[2]),
|
|
115
|
+
col: Number(bareMatch[3])
|
|
116
|
+
};
|
|
117
|
+
return {};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Classify a single stack frame line by origin.
|
|
121
|
+
*
|
|
122
|
+
* - 'app': user application code (in project root, not node_modules)
|
|
123
|
+
* - 'framework': timber-app internal code
|
|
124
|
+
* - 'internal': node_modules, Node.js internals
|
|
125
|
+
*/
|
|
126
|
+
function classifyFrame(frameLine, projectRoot) {
|
|
127
|
+
const trimmed = frameLine.trim();
|
|
128
|
+
if (trimmed.includes("packages/timber-app/")) return "framework";
|
|
129
|
+
if (trimmed.includes("node_modules/")) return "internal";
|
|
130
|
+
if (trimmed.startsWith("at node:") || trimmed.includes("(node:")) return "internal";
|
|
131
|
+
if (trimmed.includes(projectRoot)) return "app";
|
|
132
|
+
return "internal";
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Classify all frames in a full stack trace string.
|
|
136
|
+
*
|
|
137
|
+
* Parses the stack, skips the first line (error message), filters to
|
|
138
|
+
* lines starting with "at ", and returns classified frames with optional
|
|
139
|
+
* file/line/col metadata.
|
|
140
|
+
*/
|
|
141
|
+
function classifyStack(stack, projectRoot) {
|
|
142
|
+
return stack.split("\n").slice(1).filter((line) => line.trim().startsWith("at ")).map((raw) => {
|
|
143
|
+
const type = classifyFrame(raw, projectRoot);
|
|
144
|
+
const { file, line, col } = parseFrame(raw);
|
|
145
|
+
return {
|
|
146
|
+
raw,
|
|
147
|
+
type,
|
|
148
|
+
file,
|
|
149
|
+
line,
|
|
150
|
+
col
|
|
151
|
+
};
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
//#endregion
|
|
155
|
+
//#region src/dev-tools/terminal.ts
|
|
102
156
|
/**
|
|
103
157
|
* Terminal error formatting — boxed, color-coded error output for dev mode.
|
|
104
158
|
*
|
|
@@ -165,35 +219,6 @@ function box(lines, borderColor, width = 80) {
|
|
|
165
219
|
output.push(`${borderColor}${BOX.bottomLeft}${bar}${BOX.bottomRight}${RESET$2}`);
|
|
166
220
|
return output.join("\n");
|
|
167
221
|
}
|
|
168
|
-
/** Parse file/line/col from a stack frame line. */
|
|
169
|
-
function parseFrame(frameLine) {
|
|
170
|
-
const parenMatch = /\(([^)]+):(\d+):(\d+)\)/.exec(frameLine);
|
|
171
|
-
if (parenMatch) return {
|
|
172
|
-
file: parenMatch[1],
|
|
173
|
-
line: Number(parenMatch[2]),
|
|
174
|
-
col: Number(parenMatch[3])
|
|
175
|
-
};
|
|
176
|
-
const bareMatch = /at (\/[^:]+):(\d+):(\d+)/.exec(frameLine);
|
|
177
|
-
if (bareMatch) return {
|
|
178
|
-
file: bareMatch[1],
|
|
179
|
-
line: Number(bareMatch[2]),
|
|
180
|
-
col: Number(bareMatch[3])
|
|
181
|
-
};
|
|
182
|
-
return {};
|
|
183
|
-
}
|
|
184
|
-
function classifyFrames(stack, projectRoot) {
|
|
185
|
-
return stack.split("\n").slice(1).filter((l) => l.trim().startsWith("at ")).map((raw) => {
|
|
186
|
-
const type = classifyFrame(raw, projectRoot);
|
|
187
|
-
const { file, line, col } = parseFrame(raw);
|
|
188
|
-
return {
|
|
189
|
-
raw,
|
|
190
|
-
type,
|
|
191
|
-
file,
|
|
192
|
-
line,
|
|
193
|
-
col
|
|
194
|
-
};
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
222
|
/**
|
|
198
223
|
* Format an error for terminal output with a boxed layout.
|
|
199
224
|
*
|
|
@@ -208,7 +233,7 @@ function formatTerminalError$1(error, phase, projectRoot) {
|
|
|
208
233
|
const sections = [];
|
|
209
234
|
const componentStack = extractComponentStack(error);
|
|
210
235
|
const loc = parseFirstAppFrame(error.stack ?? "", projectRoot);
|
|
211
|
-
const frames = error.stack ?
|
|
236
|
+
const frames = error.stack ? classifyStack(error.stack, projectRoot) : [];
|
|
212
237
|
const appFrames = frames.filter((f) => f.type === "app");
|
|
213
238
|
const internalCount = frames.filter((f) => f.type !== "app").length;
|
|
214
239
|
const boxLines = [];
|
|
@@ -247,7 +272,7 @@ function extractFnName(frameLine) {
|
|
|
247
272
|
return match ? match[1] : "";
|
|
248
273
|
}
|
|
249
274
|
//#endregion
|
|
250
|
-
//#region src/
|
|
275
|
+
//#region src/dev-tools/overlay.ts
|
|
251
276
|
var _traceMapping = null;
|
|
252
277
|
/**
|
|
253
278
|
* Lazy-load @jridgewell/trace-mapping from Vite's dependency tree.
|
|
@@ -269,21 +294,6 @@ var PHASE_LABELS$1 = {
|
|
|
269
294
|
"handler": "Route Handler"
|
|
270
295
|
};
|
|
271
296
|
/**
|
|
272
|
-
* Classify a stack frame line by origin.
|
|
273
|
-
*
|
|
274
|
-
* - 'app': user application code (in project root, not node_modules)
|
|
275
|
-
* - 'framework': timber-app internal code
|
|
276
|
-
* - 'internal': node_modules, Node.js internals
|
|
277
|
-
*/
|
|
278
|
-
function classifyFrame(frameLine, projectRoot) {
|
|
279
|
-
const trimmed = frameLine.trim();
|
|
280
|
-
if (trimmed.includes("packages/timber-app/")) return "framework";
|
|
281
|
-
if (trimmed.includes("node_modules/")) return "internal";
|
|
282
|
-
if (trimmed.startsWith("at node:") || trimmed.includes("(node:")) return "internal";
|
|
283
|
-
if (trimmed.includes(projectRoot)) return "app";
|
|
284
|
-
return "internal";
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
297
|
* Extract the React component stack from an error, if present.
|
|
288
298
|
* React attaches this as `componentStack` during renderToReadableStream errors.
|
|
289
299
|
*/
|
|
@@ -528,7 +538,24 @@ function sendErrorToOverlay(server, error, phase, projectRoot, rscDebugComponent
|
|
|
528
538
|
} catch {}
|
|
529
539
|
}
|
|
530
540
|
//#endregion
|
|
531
|
-
//#region src/
|
|
541
|
+
//#region src/server/utils/escape-html.ts
|
|
542
|
+
/**
|
|
543
|
+
* Shared HTML escaping utility.
|
|
544
|
+
*
|
|
545
|
+
* Used by both dev-only paths (error pages, 404 page) and production
|
|
546
|
+
* paths (deny-renderer, RSC helpers). Lives in server/utils/ because
|
|
547
|
+
* it's not dev-only.
|
|
548
|
+
*/
|
|
549
|
+
/**
|
|
550
|
+
* Escape a string for safe embedding in HTML content or attributes.
|
|
551
|
+
*
|
|
552
|
+
* Replaces `&`, `<`, `>`, and `"` with their HTML entity equivalents.
|
|
553
|
+
*/
|
|
554
|
+
function escapeHtml(str) {
|
|
555
|
+
return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
556
|
+
}
|
|
557
|
+
//#endregion
|
|
558
|
+
//#region src/dev-tools/error-page.ts
|
|
532
559
|
/**
|
|
533
560
|
* Dev error page — self-contained HTML error page for dev server 500s.
|
|
534
561
|
*
|
|
@@ -560,12 +587,6 @@ var PHASE_HINTS = {
|
|
|
560
587
|
"render": "This error occurred while rendering a server component. Check the component for runtime errors.",
|
|
561
588
|
"handler": "This error occurred in a route handler (route.ts). Check the handler function."
|
|
562
589
|
};
|
|
563
|
-
function classifyStack(stack, projectRoot) {
|
|
564
|
-
return stack.split("\n").slice(1).filter((line) => line.trim().startsWith("at ")).map((line) => ({
|
|
565
|
-
raw: line,
|
|
566
|
-
type: classifyFrame(line, projectRoot)
|
|
567
|
-
}));
|
|
568
|
-
}
|
|
569
590
|
/**
|
|
570
591
|
* Try to read a few lines of source code around the error location.
|
|
571
592
|
* Returns null if the file can't be read (e.g., virtual modules).
|
|
@@ -588,9 +609,7 @@ function readSourceContext(filePath, line, contextLines = 3) {
|
|
|
588
609
|
return null;
|
|
589
610
|
}
|
|
590
611
|
}
|
|
591
|
-
|
|
592
|
-
return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
593
|
-
}
|
|
612
|
+
var esc = escapeHtml;
|
|
594
613
|
/**
|
|
595
614
|
* Escape a JSON string for safe embedding in an HTML `<script>` block.
|
|
596
615
|
*
|
|
@@ -12856,7 +12875,8 @@ function checkFile(filePath, extension, fileType, warnings) {
|
|
|
12856
12875
|
let code;
|
|
12857
12876
|
try {
|
|
12858
12877
|
code = readFileSync(filePath, "utf-8");
|
|
12859
|
-
} catch {
|
|
12878
|
+
} catch (err) {
|
|
12879
|
+
swallow(err, `status-file-lint: unreadable file ${filePath}`);
|
|
12860
12880
|
return;
|
|
12861
12881
|
}
|
|
12862
12882
|
if (!detectFileDirective(code, ["use client"])) warnings.push({
|
|
@@ -12988,7 +13008,9 @@ function checkRouteExports(node, warnings) {
|
|
|
12988
13008
|
level: "warn"
|
|
12989
13009
|
});
|
|
12990
13010
|
}
|
|
12991
|
-
} catch {
|
|
13011
|
+
} catch (err) {
|
|
13012
|
+
swallow(err, `convention-lint: unreadable route.ts ${filePath}`);
|
|
13013
|
+
}
|
|
12992
13014
|
}
|
|
12993
13015
|
for (const child of node.children) checkRouteExports(child, warnings);
|
|
12994
13016
|
for (const slot of Object.values(node.slots)) checkRouteExports(slot, warnings);
|
|
@@ -13046,7 +13068,9 @@ function checkFileDefaultExport(filePath, fileType, warnings) {
|
|
|
13046
13068
|
details: ` File: ${filePath}\n\n ${fileType}.tsx files must export a default React component.\n Without a default export, the ${fileType === "page" ? "page renders nothing" : "layout has no component to wrap children"}.\n\n To fix: Add a default export:\n\n export default function My${fileType === "page" ? "Page" : "Layout"}(${fileType === "layout" ? "{ children }" : ""}) {\n return ${fileType === "layout" ? "<div>{children}</div>" : "<h1>Hello</h1>"};\n }\n`,
|
|
13047
13069
|
level: "warn"
|
|
13048
13070
|
});
|
|
13049
|
-
} catch {
|
|
13071
|
+
} catch (err) {
|
|
13072
|
+
swallow(err, `convention-lint: unreadable ${fileType} file ${filePath}`);
|
|
13073
|
+
}
|
|
13050
13074
|
}
|
|
13051
13075
|
/**
|
|
13052
13076
|
* Check if the app/ directory exists. Called before scanning.
|
|
@@ -13590,7 +13614,7 @@ export const headers = stub;
|
|
|
13590
13614
|
export const cookies = stub;
|
|
13591
13615
|
export const getHeaders = stub;
|
|
13592
13616
|
export const getHeader = stub;
|
|
13593
|
-
export const
|
|
13617
|
+
export const getCookieJar = stub;
|
|
13594
13618
|
export const getCookie = stub;
|
|
13595
13619
|
export const getSearchParams = stub;
|
|
13596
13620
|
export const getSegmentParams = stub;
|
|
@@ -15214,8 +15238,8 @@ function timberFonts(ctx) {
|
|
|
15214
15238
|
*/
|
|
15215
15239
|
var DYNAMIC_API_PATTERNS = [
|
|
15216
15240
|
{
|
|
15217
|
-
pattern: /\
|
|
15218
|
-
name: "
|
|
15241
|
+
pattern: /\bgetCookieJar\s*\(/,
|
|
15242
|
+
name: "getCookieJar()"
|
|
15219
15243
|
},
|
|
15220
15244
|
{
|
|
15221
15245
|
pattern: /\bgetHeaders\s*\(/,
|
|
@@ -15592,7 +15616,7 @@ function timberBuildManifest(ctx) {
|
|
|
15592
15616
|
};
|
|
15593
15617
|
}
|
|
15594
15618
|
//#endregion
|
|
15595
|
-
//#region src/
|
|
15619
|
+
//#region src/dev-tools/logs.ts
|
|
15596
15620
|
var LOG_LEVELS = [
|
|
15597
15621
|
"log",
|
|
15598
15622
|
"warn",
|
|
@@ -15671,7 +15695,7 @@ function extractCallerLocation(projectRoot) {
|
|
|
15671
15695
|
const lines = stack.split("\n");
|
|
15672
15696
|
for (let i = 1; i < lines.length; i++) {
|
|
15673
15697
|
const line = lines[i].trim();
|
|
15674
|
-
if (line.includes("dev-logs")) continue;
|
|
15698
|
+
if (line.includes("dev-tools/logs")) continue;
|
|
15675
15699
|
if (line.includes("node:") || line.includes("node_modules")) continue;
|
|
15676
15700
|
const match = line.match(/\((.+?):(\d+):(\d+)\)/) ?? line.match(/at (.+?):(\d+):(\d+)/);
|
|
15677
15701
|
if (match) {
|
|
@@ -15699,7 +15723,7 @@ function isFrameworkInternalCaller() {
|
|
|
15699
15723
|
const lines = stack.split("\n");
|
|
15700
15724
|
for (let i = 1; i < lines.length; i++) {
|
|
15701
15725
|
const line = lines[i].trim();
|
|
15702
|
-
if (line.includes("dev-logs")) continue;
|
|
15726
|
+
if (line.includes("dev-tools/logs")) continue;
|
|
15703
15727
|
if (line.includes("node:")) continue;
|
|
15704
15728
|
if (!(line.includes("timber-app/") || line.includes("@timber-js/app/"))) return false;
|
|
15705
15729
|
return line.includes("/plugins/") || line.includes("/adapters/");
|
|
@@ -15757,7 +15781,7 @@ function timberDevLogs(_ctx) {
|
|
|
15757
15781
|
};
|
|
15758
15782
|
}
|
|
15759
15783
|
//#endregion
|
|
15760
|
-
//#region src/
|
|
15784
|
+
//#region src/dev-tools/browser-logs.ts
|
|
15761
15785
|
/** Max message size in bytes before truncation. */
|
|
15762
15786
|
var MAX_MESSAGE_BYTES = 2048;
|
|
15763
15787
|
/** HMR event name for browser→server log forwarding. */
|
|
@@ -16163,7 +16187,8 @@ async function stripJsFromRscAssetsManifests(buildDir) {
|
|
|
16163
16187
|
let manifest;
|
|
16164
16188
|
try {
|
|
16165
16189
|
manifest = JSON.parse(jsonStr);
|
|
16166
|
-
} catch {
|
|
16190
|
+
} catch (err) {
|
|
16191
|
+
swallow(err, `corrupted RSC assets manifest: ${path}`, { level: "warn" });
|
|
16167
16192
|
continue;
|
|
16168
16193
|
}
|
|
16169
16194
|
const deps = manifest.clientReferenceDeps;
|
|
@@ -16534,7 +16559,7 @@ function validateKeyFormat(key) {
|
|
|
16534
16559
|
}
|
|
16535
16560
|
}
|
|
16536
16561
|
//#endregion
|
|
16537
|
-
//#region src/
|
|
16562
|
+
//#region src/dev-tools/holding-server.ts
|
|
16538
16563
|
/**
|
|
16539
16564
|
* Dev holding server — serves a loading page while Vite initializes.
|
|
16540
16565
|
*
|