@wular/pnext 0.0.3 → 0.0.6
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/README.md +11 -11
- package/bin/pnext +1 -1
- package/config/lint/base.js +7 -7
- package/config/ts/base.json +2 -4
- package/config/ts/react.json +2 -6
- package/package.json +23 -2
- package/reference/compat.md +1 -1
- package/reference/config.md +2 -2
- package/reference/css.md +13 -9
- package/reference/dev.md +1 -1
- package/reference/metadata.md +7 -7
- package/reference/navigation.md +35 -28
- package/reference/performance.md +70 -70
- package/reference/rendering.md +17 -17
- package/reference/routing.md +17 -17
- package/reference/typegen.md +12 -8
- package/src/api/cache.ts +36 -37
- package/src/api/client-cache.ts +2 -2
- package/src/api/client-navigation.ts +113 -109
- package/src/api/dynamic.tsx +58 -55
- package/src/api/link.tsx +49 -52
- package/src/api/navigation.ts +59 -58
- package/src/api/server.ts +152 -144
- package/src/api/suspense.ts +4 -4
- package/src/cli/adapters/vercel-warm.ts +126 -121
- package/src/cli/adapters/vercel.ts +437 -443
- package/src/cli/analyze.ts +333 -144
- package/src/cli/{named-bin.ts → boot/named-bin.ts} +37 -37
- package/src/cli/{boot-trace.ts → boot/trace.ts} +10 -10
- package/src/cli/build.ts +976 -978
- package/src/cli/create.ts +71 -63
- package/src/cli/dev.ts +116 -116
- package/src/cli/index.ts +88 -85
- package/src/cli/migrate/package-json.ts +73 -71
- package/src/cli/migrate/report.ts +32 -33
- package/src/cli/migrate/{index.ts → run.ts} +48 -49
- package/src/cli/migrate/scan.ts +46 -46
- package/src/cli/migrate/spinner.ts +9 -9
- package/src/cli/migrate/tsconfig.ts +35 -35
- package/src/cli/{server-entry.ts → serve/entry.ts} +57 -57
- package/src/cli/{request-pipeline.ts → serve/pipeline.ts} +386 -394
- package/src/cli/{serve-ui.ts → serve/ui.ts} +47 -47
- package/src/cli/start.ts +65 -66
- package/src/{typegen.ts → cli/typegen.ts} +59 -59
- package/src/client/build.ts +794 -768
- package/src/client/chunk-fold.ts +245 -240
- package/src/client/{paths.ts → chunk-name.ts} +6 -6
- package/src/client/entry.ts +162 -147
- package/src/client/prebuilt.ts +231 -223
- package/src/client/profile.ts +29 -29
- package/src/client/react-compiler.ts +20 -15
- package/src/client/{compat-surface.ts → react-tier.ts} +64 -64
- package/src/client/reference-stub.ts +51 -51
- package/src/client/reference.ts +19 -19
- package/src/{api → client}/router/events.ts +17 -17
- package/src/{api → client}/router/history.ts +16 -16
- package/src/{api → client}/router/hub.ts +52 -53
- package/src/{api/router.ts → client/router/index.ts} +61 -60
- package/src/{api → client}/router/policies.ts +24 -24
- package/src/{api → client}/router/runtime.ts +1988 -1961
- package/src/{api → client}/router/types.ts +93 -98
- package/src/compat/actions/client-plugin.ts +42 -43
- package/src/compat/actions/client-stub.ts +14 -14
- package/src/compat/actions/{action-client.ts → client.ts} +194 -193
- package/src/compat/actions/config.ts +63 -64
- package/src/compat/actions/detect.ts +68 -68
- package/src/compat/actions/discovery.ts +105 -105
- package/src/compat/actions/{action-dispatch.ts → dispatch.ts} +277 -274
- package/src/compat/actions/early-submit.ts +1 -1
- package/src/compat/actions/endpoint.ts +198 -198
- package/src/compat/actions/extensions.ts +811 -0
- package/src/compat/actions/flight.ts +23 -23
- package/src/compat/actions/form-state.ts +34 -34
- package/src/compat/actions/hoist.ts +382 -236
- package/src/compat/actions/ids.ts +7 -12
- package/src/compat/actions/index.ts +8 -8
- package/src/compat/actions/instances.ts +46 -46
- package/src/compat/actions/origin.ts +47 -48
- package/src/compat/actions/protocol.ts +22 -22
- package/src/compat/actions/registry.ts +19 -19
- package/src/compat/{misc/action-return.ts → actions/return.ts} +60 -57
- package/src/compat/actions/rewrite.ts +125 -125
- package/src/compat/actions/{action-router.ts → router.ts} +10 -10
- package/src/compat/actions/serve.ts +132 -136
- package/src/compat/actions/server-tag.ts +4 -4
- package/src/compat/actions/{action-shared.ts → shared.ts} +34 -34
- package/src/compat/actions/unrecognized-error.ts +4 -4
- package/src/compat/{index.ts → aliases.ts} +112 -109
- package/src/compat/bundler/bun-externals.ts +18 -18
- package/src/compat/bundler/cjs-exports.ts +271 -223
- package/src/compat/bundler/config.ts +116 -111
- package/src/compat/bundler/externals.ts +12 -12
- package/src/compat/bundler/import-meta-url.ts +19 -19
- package/src/compat/bundler/modularize-imports.ts +36 -33
- package/src/compat/bundler/new-url-asset.ts +22 -24
- package/src/compat/bundler/optimize-package-imports.ts +111 -107
- package/src/compat/bundler/polyfill.ts +28 -28
- package/src/compat/bundler/react-compiler.ts +35 -29
- package/src/compat/bundler/react-profiler.tsx +11 -11
- package/src/compat/bundler/relay-transform.ts +48 -47
- package/src/compat/bundler/require-context.ts +119 -113
- package/src/compat/bundler/resolve-extensions.ts +19 -19
- package/src/compat/bundler/source-cache.ts +25 -25
- package/src/compat/bundler/static-imports.ts +7 -7
- package/src/compat/bundler/symlink-imports.ts +46 -46
- package/src/compat/bundler/tsconfig-paths.ts +13 -15
- package/src/compat/bundler/wasm.ts +58 -60
- package/src/compat/bundler/webpack-loaders.ts +254 -241
- package/src/compat/bundler/worker.ts +101 -104
- package/src/compat/cache/build-flags.ts +29 -29
- package/src/compat/cache/build-prerender-errors.ts +40 -44
- package/src/compat/cache/custom-handler.ts +60 -53
- package/src/compat/cache/fetch-patch.ts +240 -240
- package/src/compat/cache/handler.ts +27 -31
- package/src/compat/cache/modern-handler.ts +148 -126
- package/src/compat/cache/resume-data-cache.ts +47 -45
- package/src/compat/cache/revalidate.ts +233 -232
- package/src/compat/cache/runtime-error.ts +35 -35
- package/src/compat/cache/use-cache-transform.ts +442 -417
- package/src/compat/cache/use-cache.ts +650 -614
- package/src/compat/cache-control.ts +140 -142
- package/src/compat/client/base-path.ts +21 -20
- package/src/compat/client/css-order.ts +18 -18
- package/src/compat/client/errors/bare-boundary.ts +11 -11
- package/src/compat/client/errors/control-flow.ts +23 -23
- package/src/compat/client/errors/error-boundary.ts +61 -61
- package/src/compat/client/errors/global-error.ts +101 -91
- package/src/compat/client/errors/install.ts +71 -72
- package/src/compat/client/errors/lazy.ts +23 -23
- package/src/compat/client/errors/primitive-throw.ts +47 -45
- package/src/compat/client/errors/soft-refresh.ts +4 -4
- package/src/compat/client/link-status.ts +33 -33
- package/src/compat/client/{nav-compat-runtime.ts → nav-runtime.ts} +20 -20
- package/src/compat/client/{nav-compat.ts → nav.ts} +12 -13
- package/src/compat/client/navigation-scroll.ts +63 -63
- package/src/compat/client/optimistic-routing.ts +93 -88
- package/src/compat/client/prefetch-cache.ts +23 -24
- package/src/compat/client/route-announcer.ts +35 -35
- package/src/compat/client/segment-cache-policy.ts +20 -20
- package/src/compat/client/segment-cache.ts +309 -315
- package/src/compat/client/segment-prefetch.ts +127 -132
- package/src/compat/client/trailing-slash.ts +5 -4
- package/src/compat/css/chunking.ts +113 -116
- package/src/compat/css/inline-css.ts +21 -21
- package/src/compat/css/lightningcss.ts +37 -38
- package/src/compat/css/modules.ts +161 -175
- package/src/compat/css/nonce.ts +7 -7
- package/src/compat/css/sass-plugin.ts +18 -21
- package/src/compat/css/sass.ts +150 -152
- package/src/compat/css/styled-jsx-runtime.ts +27 -27
- package/src/compat/css/styled-jsx.ts +21 -21
- package/src/compat/edge-runtime.ts +27 -27
- package/src/compat/{adapter → export}/build-complete.ts +72 -75
- package/src/compat/export/client.ts +29 -31
- package/src/compat/export/{index.ts → emit.ts} +111 -110
- package/src/compat/export/standalone.ts +62 -54
- package/src/compat/image-optimizer/cache.ts +51 -49
- package/src/compat/image-optimizer/detect.ts +52 -52
- package/src/compat/image-optimizer/{index.ts → optimize.ts} +189 -194
- package/src/compat/image-optimizer/source.ts +77 -80
- package/src/compat/lifecycle/after-scope.ts +26 -26
- package/src/compat/lifecycle/after.ts +48 -45
- package/src/compat/lifecycle/error-funnel.ts +98 -102
- package/src/compat/lifecycle/error-serialize.ts +30 -26
- package/src/compat/lifecycle/error-ui.ts +67 -32
- package/src/compat/lifecycle/instrumentation-client.ts +36 -38
- package/src/compat/lifecycle/instrumentation.ts +85 -85
- package/src/compat/lifecycle/node-console.ts +11 -11
- package/src/compat/lifecycle/testmode.ts +160 -132
- package/src/compat/mdx/compile.ts +60 -57
- package/src/compat/mdx/plugin.ts +11 -11
- package/src/compat/mdx/{next-mdx-stub.ts → stub.ts} +5 -5
- package/src/compat/{metadata-route-artifacts.ts → metadata-artifacts.ts} +195 -191
- package/src/compat/metadata.ts +75 -81
- package/src/compat/next/cache.ts +68 -69
- package/src/compat/next/canonical-url.ts +9 -9
- package/src/compat/next/client-cache.ts +19 -19
- package/src/compat/next/client-navigation.ts +112 -116
- package/src/compat/next/client-only.ts +1 -1
- package/src/compat/next/client-script.tsx +99 -93
- package/src/compat/next/client-server.ts +10 -10
- package/src/compat/next/config-loader.ts +176 -173
- package/src/compat/next/config.ts +7 -7
- package/src/compat/next/constants.cjs +6 -6
- package/src/compat/next/constants.ts +6 -6
- package/src/compat/next/custom-server.ts +26 -24
- package/src/compat/next/dist/client/components/app-router-headers.ts +21 -21
- package/src/compat/next/dist/server/app-render/work-unit-async-storage.external.cjs +3 -4
- package/src/compat/next/dist/server/web/spec-extension/revalidate.ts +1 -1
- package/src/compat/next/dist/server/web/spec-extension/unstable-cache.ts +1 -1
- package/src/compat/next/dist/server/web/spec-extension/unstable-no-store.ts +1 -1
- package/src/compat/next/dynamic.tsx +21 -18
- package/src/compat/next/error.tsx +52 -52
- package/src/compat/next/font/cache.ts +74 -74
- package/src/compat/next/font/google.ts +2 -2
- package/src/compat/next/font/index.ts +1 -1
- package/src/compat/next/font/local.ts +3 -3
- package/src/compat/next/font/runtime-client.ts +17 -15
- package/src/compat/next/font/runtime.ts +443 -408
- package/src/compat/next/font/shared.ts +120 -108
- package/src/compat/next/form.tsx +63 -63
- package/src/compat/next/head.tsx +2 -2
- package/src/compat/next/headers.ts +103 -95
- package/src/compat/next/image/client.tsx +220 -0
- package/src/compat/next/image/config.ts +56 -58
- package/src/compat/next/image/optimizer.ts +40 -36
- package/src/compat/next/image/patterns.ts +37 -40
- package/src/compat/next/{image-props.ts → image/props.ts} +208 -202
- package/src/compat/next/image/shared.ts +65 -57
- package/src/compat/next/image/static-metadata.ts +98 -107
- package/src/compat/next/image/validate.ts +79 -88
- package/src/compat/next/image.tsx +19 -23
- package/src/compat/next/index.ts +1 -1
- package/src/compat/next/legacy-image.tsx +59 -60
- package/src/compat/next/{link-validation-transform.ts → link-transform.ts} +95 -96
- package/src/compat/next/link.tsx +158 -158
- package/src/compat/next/navigation.cjs +12 -3
- package/src/compat/next/navigation.ts +48 -50
- package/src/compat/next/offline.ts +27 -27
- package/src/compat/next/og.ts +121 -124
- package/src/compat/next/preferred-region.ts +13 -14
- package/src/compat/next/redirects.ts +58 -56
- package/src/compat/next/resource-hints.ts +73 -76
- package/src/compat/next/rewrites.ts +130 -133
- package/src/compat/next/root-params.ts +45 -45
- package/src/compat/next/{optimistic-route-state.ts → route-state.ts} +52 -52
- package/src/compat/next/router.cjs +4 -2
- package/src/compat/next/router.ts +58 -61
- package/src/compat/next/script.tsx +108 -108
- package/src/compat/next/server-only.ts +1 -1
- package/src/compat/next/server.ts +19 -19
- package/src/compat/next/svgr.ts +18 -17
- package/src/compat/next/telemetry.ts +24 -24
- package/src/compat/next/{image-usage.ts → usage.ts} +70 -39
- package/src/compat/next/user-agent.ts +53 -49
- package/src/compat/next/web-vitals.ts +22 -24
- package/src/compat/otel/api.ts +41 -41
- package/src/compat/otel/client-trace-metadata.ts +25 -27
- package/src/compat/otel/fetch-span.ts +29 -29
- package/src/compat/otel/tracer.ts +331 -331
- package/src/compat/pages/api.ts +456 -0
- package/src/compat/pages/client-plugin.ts +36 -36
- package/src/compat/pages/router-state.ts +34 -34
- package/src/compat/pages/{index.ts → router.ts} +130 -135
- package/src/compat/ppr/io.ts +12 -12
- package/src/compat/ppr/missing-root-params.ts +34 -38
- package/src/compat/ppr/root-params-scan.ts +66 -66
- package/src/compat/ppr/root-params-transform.ts +24 -26
- package/src/compat/ppr/root-params.ts +30 -30
- package/src/compat/ppr/segment-config-incompat.ts +6 -7
- package/src/compat/protocol.ts +71 -70
- package/src/compat/react/action-state.ts +47 -48
- package/src/compat/react/client-lite.ts +15 -15
- package/src/compat/react/client.ts +4 -4
- package/src/compat/react/compiler-runtime.ts +11 -11
- package/src/compat/react/dom-client.ts +44 -44
- package/src/compat/react/dom-react-server.ts +10 -16
- package/src/compat/react/dom-server.ts +10 -10
- package/src/compat/react/dom.ts +52 -52
- package/src/compat/react/hooks-extra.ts +34 -35
- package/src/compat/react/parity.ts +64 -61
- package/src/compat/react/preact.ts +81 -82
- package/src/compat/react/react-server.ts +28 -28
- package/src/compat/react/router-shim.ts +1 -1
- package/src/compat/react/server-component-use.ts +8 -8
- package/src/compat/react/server-inserted-html.ts +30 -31
- package/src/compat/react/server.ts +53 -55
- package/src/compat/react/use.ts +32 -32
- package/src/compat/react/view-transition.ts +20 -20
- package/src/compat/register/actions.ts +35 -824
- package/src/compat/register/boot.ts +41 -41
- package/src/compat/register/build-tier.ts +5 -5
- package/src/compat/register/build.ts +74 -70
- package/src/compat/register/bundler.ts +161 -156
- package/src/compat/register/cache.ts +20 -20
- package/src/compat/register/client-errors.ts +3 -3
- package/src/compat/register/config.ts +6 -6
- package/src/compat/register/css-extras.ts +30 -34
- package/src/compat/register/edge-runtime.ts +3 -3
- package/src/compat/register/errors.ts +10 -12
- package/src/compat/register/export.ts +16 -16
- package/src/compat/register/font.ts +11 -11
- package/src/compat/register/hooks.ts +2 -2
- package/src/compat/register/image.ts +40 -40
- package/src/compat/register/index.ts +59 -62
- package/src/compat/register/instrumentation-client.ts +10 -10
- package/src/compat/register/lifecycle.ts +25 -28
- package/src/compat/register/mdx.ts +10 -10
- package/src/compat/register/middleware.ts +226 -16
- package/src/compat/register/otel.ts +80 -88
- package/src/compat/register/pages-api.ts +10 -463
- package/src/compat/register/ppr.ts +16 -16
- package/src/compat/register/protocol.ts +17 -18
- package/src/compat/register/proxy.ts +49 -51
- package/src/compat/register/render.ts +79 -76
- package/src/compat/register/routing.ts +162 -159
- package/src/compat/register/segment.ts +24 -1887
- package/src/compat/register/static-image.ts +3 -3
- package/src/compat/register/{misc.ts → taint.ts} +9 -9
- package/src/compat/register/typed-routes.ts +14 -14
- package/src/compat/register/{usecache.ts → use-cache.ts} +39 -39
- package/src/compat/register/validation.ts +18 -18
- package/src/compat/segment/loading-boundary.ts +43 -45
- package/src/compat/segment/page-slot.ts +69 -69
- package/src/compat/segment/serve.ts +1884 -0
- package/src/compat/segment/tree.ts +113 -112
- package/src/compat/segment/vary-key.ts +38 -38
- package/src/compat/segment/vary-params.ts +138 -142
- package/src/compat/static-params.ts +14 -12
- package/src/compat/tsconfig-defaults.ts +87 -91
- package/src/compat/typecheck/{index.ts → check.ts} +234 -212
- package/src/compat/typecheck/worker.ts +15 -12
- package/src/compat/typed-routes/{index.ts → generate.ts} +36 -36
- package/src/compat/typed-routes/manifest.ts +174 -170
- package/src/compat/typed-routes/typegen.ts +127 -110
- package/src/compat/validation/errors.ts +16 -19
- package/src/compat/validation/prerender-diagnostics.ts +521 -504
- package/src/compat/validation/{index.ts → validate.ts} +647 -648
- package/src/compat-bootstrap.ts +16 -16
- package/src/config.ts +69 -69
- package/src/css/build.ts +230 -227
- package/src/css/postcss.ts +79 -80
- package/src/css/worker.ts +14 -15
- package/src/dev/client-actions.ts +10 -10
- package/src/dev/client-chunk-store.ts +27 -27
- package/src/dev/{client-key-cache.ts → restart/client-key.ts} +76 -76
- package/src/dev/{restart-cache.ts → restart/enabled.ts} +1 -1
- package/src/dev/{global-css-cache.ts → restart/global-css.ts} +91 -83
- package/src/dev/{node-module-bundle-cache.ts → restart/node-modules.ts} +24 -24
- package/src/dev/{route-bundle-key-cache.ts → restart/route-bundle-key.ts} +53 -53
- package/src/dev/{route-facts-cache.ts → restart/route-facts.ts} +82 -82
- package/src/dev/server.ts +804 -820
- package/src/env.ts +46 -43
- package/src/extensions.ts +491 -478
- package/src/index.ts +8 -8
- package/src/internal.ts +20 -23
- package/src/{islands → render}/boundary-error.ts +3 -3
- package/src/render/hooks.ts +71 -71
- package/src/render/island-context.ts +14 -14
- package/src/render/metadata.ts +310 -310
- package/src/{ppr-postpone.ts → render/postpone.ts} +5 -5
- package/src/{ppr.ts → render/ppr.ts} +244 -245
- package/src/render/renderer.ts +2076 -2082
- package/src/render/resource-hints.ts +16 -17
- package/src/render/slots.tsx +224 -235
- package/src/{islands → render}/static-children.ts +9 -12
- package/src/{islands → render}/static-slots.ts +37 -37
- package/src/{cache/context.ts → request/cache.ts} +20 -20
- package/src/request/context.ts +107 -107
- package/src/{dynamic/source.ts → resolve/dynamic.ts} +152 -143
- package/src/resolve/engine.ts +90 -77
- package/src/resolve/imports.ts +475 -463
- package/src/resolve/scan-facts.ts +442 -186
- package/src/resolve/source-text.ts +37 -37
- package/src/{dynamic → resolve}/tree-shake.ts +132 -128
- package/src/routing/forwarded.ts +19 -19
- package/src/routing/handler.ts +84 -91
- package/src/routing/href.ts +69 -70
- package/src/routing/{metadata.ts → metadata-files.ts} +403 -401
- package/src/{proxy.ts → routing/proxy.ts} +306 -312
- package/src/routing/{request-runtime.ts → request-environment.ts} +10 -10
- package/src/routing/routes.ts +833 -848
- package/src/routing/slots.ts +164 -160
- package/src/runtime/loader.ts +952 -0
- package/src/{dev → runtime}/module-cache.ts +309 -287
- package/src/{dev → runtime}/module-generations.ts +9 -9
- package/src/{dev → runtime}/module-transform.ts +81 -72
- package/src/{dev/imports.ts → runtime/modules.ts} +934 -847
- package/src/runtime/{server.ts → vendor-build.ts} +848 -1696
- package/src/runtime/vendor.ts +425 -404
- package/src/styles.d.ts +9 -0
- package/src/types.ts +320 -335
- package/src/utils/ansi.ts +5 -5
- package/src/utils/{source.ts → code.ts} +15 -12
- package/src/utils/content-type.ts +3 -3
- package/src/utils/decode.ts +2 -2
- package/src/utils/dev-profile.ts +13 -13
- package/src/utils/error-log.ts +6 -6
- package/src/utils/esbuild.ts +18 -18
- package/src/utils/fs-cache.ts +13 -13
- package/src/utils/fs.ts +57 -49
- package/src/utils/html.ts +20 -24
- package/src/utils/native-require.ts +8 -8
- package/src/utils/serialize.ts +139 -146
- package/src/utils/verbose.ts +18 -18
- package/src/cli/analyze-print.ts +0 -181
- package/src/compat/middleware/manifest.ts +0 -210
- package/src/compat/next/image-client.tsx +0 -215
- package/src/compat/next/link-usage.ts +0 -29
- package/src/css/index.ts +0 -2
- package/src/render/index.ts +0 -1
- package/src/style-modules.d.ts +0 -9
package/src/index.ts
CHANGED
|
@@ -16,12 +16,12 @@ export type {
|
|
|
16
16
|
ServerComponent,
|
|
17
17
|
StaticParams,
|
|
18
18
|
Viewport,
|
|
19
|
-
} from './types'
|
|
20
|
-
export type { PNextMetadataExport, PNextViewportExport } from './internal'
|
|
19
|
+
} from './types'
|
|
20
|
+
export type { PNextMetadataExport, PNextViewportExport } from './internal'
|
|
21
21
|
|
|
22
|
-
export { Link } from './api/link'
|
|
23
|
-
export { dynamic } from './api/dynamic'
|
|
24
|
-
export { Suspense, type SuspenseProps } from './api/suspense'
|
|
22
|
+
export { Link } from './api/link'
|
|
23
|
+
export { dynamic } from './api/dynamic'
|
|
24
|
+
export { Suspense, type SuspenseProps } from './api/suspense'
|
|
25
25
|
export {
|
|
26
26
|
href,
|
|
27
27
|
notFound,
|
|
@@ -29,6 +29,6 @@ export {
|
|
|
29
29
|
PNextNotFoundError,
|
|
30
30
|
PNextRedirectError,
|
|
31
31
|
redirect,
|
|
32
|
-
} from './api/navigation'
|
|
33
|
-
export type { HrefOptions, RedirectOptions, RedirectStatus } from './api/navigation'
|
|
34
|
-
export { NextResponse } from './api/server'
|
|
32
|
+
} from './api/navigation'
|
|
33
|
+
export type { HrefOptions, RedirectOptions, RedirectStatus } from './api/navigation'
|
|
34
|
+
export { NextResponse } from './api/server'
|
package/src/internal.ts
CHANGED
|
@@ -6,38 +6,35 @@ import type {
|
|
|
6
6
|
ServerComponent,
|
|
7
7
|
StaticParams,
|
|
8
8
|
Viewport,
|
|
9
|
-
} from './types'
|
|
9
|
+
} from './types'
|
|
10
10
|
|
|
11
|
-
export type PNextMetadataExport = Metadata | (() => Metadata | Promise<Metadata>)
|
|
12
|
-
export type PNextViewportExport = Viewport | (() => Viewport | Promise<Viewport>)
|
|
11
|
+
export type PNextMetadataExport = Metadata | (() => Metadata | Promise<Metadata>)
|
|
12
|
+
export type PNextViewportExport = Viewport | (() => Viewport | Promise<Viewport>)
|
|
13
13
|
|
|
14
14
|
export interface PNextPageModule<Route extends RoutePath> {
|
|
15
|
-
default: ServerComponent<PageProps<Route
|
|
16
|
-
params?: () => StaticParams<Route
|
|
17
|
-
metadata?: PNextMetadataExport
|
|
18
|
-
viewport?: PNextViewportExport
|
|
15
|
+
default: ServerComponent<PageProps<Route>>
|
|
16
|
+
params?: () => StaticParams<Route>
|
|
17
|
+
metadata?: PNextMetadataExport
|
|
18
|
+
viewport?: PNextViewportExport
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export interface PNextLayoutModule {
|
|
22
|
-
default?: ServerComponent<LayoutProps
|
|
23
|
-
metadata?: PNextMetadataExport
|
|
24
|
-
viewport?: PNextViewportExport
|
|
22
|
+
default?: ServerComponent<LayoutProps>
|
|
23
|
+
metadata?: PNextMetadataExport
|
|
24
|
+
viewport?: PNextViewportExport
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
type NextHandler = {
|
|
28
|
-
bivarianceHack(
|
|
29
|
-
|
|
30
|
-
context: never,
|
|
31
|
-
): Response | Promise<Response>;
|
|
32
|
-
}['bivarianceHack'];
|
|
28
|
+
bivarianceHack(request: never, context: never): Response | Promise<Response>
|
|
29
|
+
}['bivarianceHack']
|
|
33
30
|
|
|
34
31
|
export interface PNextRouteHandlerModule<Route extends RoutePath> {
|
|
35
|
-
GET?: NextHandler
|
|
36
|
-
POST?: NextHandler
|
|
37
|
-
PUT?: NextHandler
|
|
38
|
-
PATCH?: NextHandler
|
|
39
|
-
DELETE?: NextHandler
|
|
40
|
-
OPTIONS?: NextHandler
|
|
41
|
-
HEAD?: NextHandler
|
|
42
|
-
params?: () => StaticParams<Route
|
|
32
|
+
GET?: NextHandler
|
|
33
|
+
POST?: NextHandler
|
|
34
|
+
PUT?: NextHandler
|
|
35
|
+
PATCH?: NextHandler
|
|
36
|
+
DELETE?: NextHandler
|
|
37
|
+
OPTIONS?: NextHandler
|
|
38
|
+
HEAD?: NextHandler
|
|
39
|
+
params?: () => StaticParams<Route>
|
|
43
40
|
}
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
* boundary: the client entry turns it back into a throw at hydration, so the
|
|
4
4
|
* island's own error boundary catches it.
|
|
5
5
|
*/
|
|
6
|
-
export const ISLAND_BOUNDARY_ERROR_ELEMENT = 'pnext-boundary-error'
|
|
7
|
-
export const ISLAND_BOUNDARY_ERROR_MESSAGE_ATTRIBUTE = 'data-pnext-error-message'
|
|
8
|
-
export const ISLAND_BOUNDARY_ERROR_DIGEST_ATTRIBUTE = 'data-pnext-error-digest'
|
|
6
|
+
export const ISLAND_BOUNDARY_ERROR_ELEMENT = 'pnext-boundary-error'
|
|
7
|
+
export const ISLAND_BOUNDARY_ERROR_MESSAGE_ATTRIBUTE = 'data-pnext-error-message'
|
|
8
|
+
export const ISLAND_BOUNDARY_ERROR_DIGEST_ATTRIBUTE = 'data-pnext-error-digest'
|
package/src/render/hooks.ts
CHANGED
|
@@ -10,25 +10,25 @@
|
|
|
10
10
|
// inverted - core never imports compat. Types stay structural so core carries no type dependency on any
|
|
11
11
|
// compat module.
|
|
12
12
|
|
|
13
|
-
import type { ResolvedConfig } from '../config'
|
|
14
|
-
import type { Metadata, MetadataLink, PageProps, Viewport } from '../types'
|
|
15
|
-
import { restoreWithExtensionHost } from '../extensions'
|
|
13
|
+
import type { ResolvedConfig } from '../config'
|
|
14
|
+
import type { Metadata, MetadataLink, PageProps, Viewport } from '../types'
|
|
15
|
+
import { restoreWithExtensionHost } from '../extensions'
|
|
16
16
|
|
|
17
17
|
// ---------------------------------------------------------------------------
|
|
18
18
|
// Compat enablement gates (pure config reads; kept in core so render never
|
|
19
|
-
// imports compat/
|
|
20
|
-
// compat/
|
|
19
|
+
// imports compat/aliases just to branch on the mode). MUST stay in sync with
|
|
20
|
+
// compat/aliases.ts reactCompatEnabled / nextCompatEnabled and the inlined gate
|
|
21
21
|
// in compat-bootstrap.ts.
|
|
22
22
|
// ---------------------------------------------------------------------------
|
|
23
23
|
|
|
24
24
|
/** Next compat is on (server actions, next/* modules, authInterrupts). */
|
|
25
25
|
export function nextCompatEnabled(config: ResolvedConfig): boolean {
|
|
26
|
-
return Boolean(config.compat?.next)
|
|
26
|
+
return Boolean(config.compat?.next)
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
/** React compat is on (next implies react; react/react-dom aliasing, use() replay). */
|
|
30
30
|
export function reactCompatEnabled(config: ResolvedConfig): boolean {
|
|
31
|
-
return Boolean(config.compat?.next || config.compat?.react || config.compat?.reactCompiler)
|
|
31
|
+
return Boolean(config.compat?.next || config.compat?.react || config.compat?.reactCompiler)
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
// ---------------------------------------------------------------------------
|
|
@@ -38,8 +38,8 @@ export function reactCompatEnabled(config: ResolvedConfig): boolean {
|
|
|
38
38
|
|
|
39
39
|
/** Resolved next/font CSS + preload links for a render (mirrors ResolvedFontAssets). */
|
|
40
40
|
export interface RenderFontAssets {
|
|
41
|
-
css: string
|
|
42
|
-
preloads: MetadataLink[]
|
|
41
|
+
css: string
|
|
42
|
+
preloads: MetadataLink[]
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
export interface FontExtensions {
|
|
@@ -48,7 +48,7 @@ export interface FontExtensions {
|
|
|
48
48
|
* register their definitions. Compat installs the AsyncLocalStorage scope
|
|
49
49
|
* (compat/next/font/runtime runWithFontScope). Default: run untouched.
|
|
50
50
|
*/
|
|
51
|
-
runWithFontScope: <T>(callback: () => T) => T
|
|
51
|
+
runWithFontScope: <T>(callback: () => T) => T
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
54
|
* Emit the CSS + preload links for the fonts registered during the current
|
|
@@ -57,7 +57,7 @@ export interface FontExtensions {
|
|
|
57
57
|
collectFontAssets: (
|
|
58
58
|
config: ResolvedConfig,
|
|
59
59
|
options: { dev?: boolean },
|
|
60
|
-
) => Promise<RenderFontAssets
|
|
60
|
+
) => Promise<RenderFontAssets>
|
|
61
61
|
|
|
62
62
|
/**
|
|
63
63
|
* Resolve every font declared by modules loaded so far, without waiting for a render to register
|
|
@@ -65,21 +65,21 @@ export interface FontExtensions {
|
|
|
65
65
|
* render, so it serializes behind everything. Called off the request's critical path, it lands in
|
|
66
66
|
* the same memo the render reads. Default: none.
|
|
67
67
|
*/
|
|
68
|
-
prewarmFontAssets: (config: ResolvedConfig, options: { dev?: boolean }) => Promise<void
|
|
68
|
+
prewarmFontAssets: (config: ResolvedConfig, options: { dev?: boolean }) => Promise<void>
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
const fontExtensions: FontExtensions = {
|
|
72
72
|
runWithFontScope: callback => callback(),
|
|
73
73
|
collectFontAssets: () => Promise.resolve({ css: '', preloads: [] }),
|
|
74
74
|
prewarmFontAssets: () => Promise.resolve(),
|
|
75
|
-
}
|
|
75
|
+
}
|
|
76
76
|
|
|
77
77
|
export function getFontExtensions(): FontExtensions {
|
|
78
|
-
return fontExtensions
|
|
78
|
+
return fontExtensions
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
export function setFontExtensions(overrides: Partial<FontExtensions>): void {
|
|
82
|
-
Object.assign(fontExtensions, overrides)
|
|
82
|
+
Object.assign(fontExtensions, overrides)
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
// Suspense identity - compat apps render React's Suspense (preact/compat), which streaming must recognize
|
|
@@ -91,29 +91,29 @@ export interface SuspenseExtensions {
|
|
|
91
91
|
* Lazily resolve the compat Suspense component type (preact/compat) once, so the streaming tree walker can
|
|
92
92
|
* treat it as a boundary. Default is a noop - core streaming uses its own Suspense marker only.
|
|
93
93
|
*/
|
|
94
|
-
ensureCompatSuspense: (config: ResolvedConfig) => Promise<void
|
|
94
|
+
ensureCompatSuspense: (config: ResolvedConfig) => Promise<void>
|
|
95
95
|
/** The resolved compat Suspense type, or undefined for a pure-core render. */
|
|
96
|
-
compatSuspenseType: () => unknown
|
|
96
|
+
compatSuspenseType: () => unknown
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
const suspenseExtensions: SuspenseExtensions = {
|
|
100
100
|
ensureCompatSuspense: () => Promise.resolve(),
|
|
101
101
|
compatSuspenseType: () => undefined,
|
|
102
|
-
}
|
|
102
|
+
}
|
|
103
103
|
|
|
104
104
|
export function getSuspenseExtensions(): SuspenseExtensions {
|
|
105
|
-
return suspenseExtensions
|
|
105
|
+
return suspenseExtensions
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
export function setSuspenseExtensions(overrides: Partial<SuspenseExtensions>): void {
|
|
109
|
-
Object.assign(suspenseExtensions, overrides)
|
|
109
|
+
Object.assign(suspenseExtensions, overrides)
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
export interface StreamRouteExtensions {
|
|
113
113
|
canStreamRoute: (input: {
|
|
114
|
-
config: ResolvedConfig
|
|
115
|
-
route: { client?: boolean; stream?: unknown }
|
|
116
|
-
}) => boolean
|
|
114
|
+
config: ResolvedConfig
|
|
115
|
+
route: { client?: boolean; stream?: unknown }
|
|
116
|
+
}) => boolean
|
|
117
117
|
/**
|
|
118
118
|
* True when the route must stream through a SINGLE preact render (suspending
|
|
119
119
|
* in place) rather than the out-of-order resolve walk, because an ancestor
|
|
@@ -121,88 +121,88 @@ export interface StreamRouteExtensions {
|
|
|
121
121
|
* rendered replacement chunk would lose. See renderClientPageStreamShell.
|
|
122
122
|
*/
|
|
123
123
|
inlineSuspenseStream: (input: {
|
|
124
|
-
config: ResolvedConfig
|
|
125
|
-
route: { client?: boolean; stream?: unknown }
|
|
126
|
-
}) => boolean
|
|
124
|
+
config: ResolvedConfig
|
|
125
|
+
route: { client?: boolean; stream?: unknown }
|
|
126
|
+
}) => boolean
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
const streamRouteExtensions: StreamRouteExtensions = {
|
|
130
130
|
canStreamRoute: () => true,
|
|
131
131
|
inlineSuspenseStream: () => false,
|
|
132
|
-
}
|
|
132
|
+
}
|
|
133
133
|
|
|
134
134
|
export function getStreamRouteExtensions(): StreamRouteExtensions {
|
|
135
|
-
return streamRouteExtensions
|
|
135
|
+
return streamRouteExtensions
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
export function setStreamRouteExtensions(overrides: Partial<StreamRouteExtensions>): void {
|
|
139
|
-
Object.assign(streamRouteExtensions, overrides)
|
|
139
|
+
Object.assign(streamRouteExtensions, overrides)
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
export interface StreamBoundaryExtensions {
|
|
143
|
-
onStreamBoundaryError: (error: unknown) => void | Promise<void
|
|
143
|
+
onStreamBoundaryError: (error: unknown) => void | Promise<void>
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
const streamBoundaryExtensions: StreamBoundaryExtensions = {
|
|
147
147
|
onStreamBoundaryError: () => undefined,
|
|
148
|
-
}
|
|
148
|
+
}
|
|
149
149
|
|
|
150
150
|
export function getStreamBoundaryExtensions(): StreamBoundaryExtensions {
|
|
151
|
-
return streamBoundaryExtensions
|
|
151
|
+
return streamBoundaryExtensions
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
export function setStreamBoundaryExtensions(overrides: Partial<StreamBoundaryExtensions>): void {
|
|
155
|
-
Object.assign(streamBoundaryExtensions, overrides)
|
|
155
|
+
Object.assign(streamBoundaryExtensions, overrides)
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
export function reportStreamBoundaryError(error: unknown): void {
|
|
159
159
|
try {
|
|
160
|
-
const result = streamBoundaryExtensions.onStreamBoundaryError(error)
|
|
160
|
+
const result = streamBoundaryExtensions.onStreamBoundaryError(error)
|
|
161
161
|
if (isThenable(result)) {
|
|
162
162
|
void Promise.resolve(result).catch(reportError => {
|
|
163
|
-
console.error('stream boundary error hook failed:', reportError)
|
|
164
|
-
})
|
|
163
|
+
console.error('stream boundary error hook failed:', reportError)
|
|
164
|
+
})
|
|
165
165
|
}
|
|
166
166
|
} catch (reportError) {
|
|
167
|
-
console.error('stream boundary error hook failed:', reportError)
|
|
167
|
+
console.error('stream boundary error hook failed:', reportError)
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
function isThenable(value: unknown): value is PromiseLike<unknown> {
|
|
172
|
-
return typeof (value as { then?: unknown } | null | undefined)?.then === 'function'
|
|
172
|
+
return typeof (value as { then?: unknown } | null | undefined)?.then === 'function'
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
// Metadata resolver - core handles static/build-time metadata. Compat registers request-time/streaming-
|
|
176
176
|
// compatible metadata resolvers here without adding a core-to-compat import edge.
|
|
177
177
|
|
|
178
178
|
export interface MetadataExtensions {
|
|
179
|
-
enabled: (config: ResolvedConfig) => boolean
|
|
180
|
-
hasRuntimeMetadata: (module: Record<string, unknown>) => boolean
|
|
179
|
+
enabled: (config: ResolvedConfig) => boolean
|
|
180
|
+
hasRuntimeMetadata: (module: Record<string, unknown>) => boolean
|
|
181
181
|
readModuleMetadata: (
|
|
182
182
|
module: Record<string, unknown>,
|
|
183
183
|
props: PageProps,
|
|
184
184
|
parent: Metadata,
|
|
185
185
|
modulePath?: string,
|
|
186
|
-
) => Promise<Metadata | undefined
|
|
186
|
+
) => Promise<Metadata | undefined>
|
|
187
187
|
readModuleViewport: (
|
|
188
188
|
module: Record<string, unknown>,
|
|
189
189
|
props: PageProps,
|
|
190
|
-
) => Promise<Viewport | undefined
|
|
191
|
-
shouldRenderMetadataInBody: (input: { config: ResolvedConfig; request?: Request }) => boolean
|
|
190
|
+
) => Promise<Viewport | undefined>
|
|
191
|
+
shouldRenderMetadataInBody: (input: { config: ResolvedConfig; request?: Request }) => boolean
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
-
const metadataExtensions: Partial<MetadataExtensions> = {}
|
|
194
|
+
const metadataExtensions: Partial<MetadataExtensions> = {}
|
|
195
195
|
|
|
196
196
|
export function getMetadataExtensions(): Partial<MetadataExtensions> {
|
|
197
|
-
return metadataExtensions
|
|
197
|
+
return metadataExtensions
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
export function getActiveMetadataExtensions(config: ResolvedConfig): Partial<MetadataExtensions> {
|
|
201
|
-
return metadataExtensions.enabled?.(config) ? metadataExtensions : {}
|
|
201
|
+
return metadataExtensions.enabled?.(config) ? metadataExtensions : {}
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
export function setMetadataExtensions(overrides: Partial<MetadataExtensions>): void {
|
|
205
|
-
Object.assign(metadataExtensions, overrides)
|
|
205
|
+
Object.assign(metadataExtensions, overrides)
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
// ---------------------------------------------------------------------------
|
|
@@ -212,14 +212,14 @@ export function setMetadataExtensions(overrides: Partial<MetadataExtensions>): v
|
|
|
212
212
|
|
|
213
213
|
export interface DocumentScriptExtensions {
|
|
214
214
|
/** Optional precedence assigned to renderer-managed stylesheet links. */
|
|
215
|
-
stylesheetPrecedence: (config: ResolvedConfig) => string | undefined
|
|
215
|
+
stylesheetPrecedence: (config: ResolvedConfig) => string | undefined
|
|
216
216
|
|
|
217
217
|
/**
|
|
218
218
|
* Inline scripts compat injects near the end of the document body, before the
|
|
219
219
|
* props/route/client scripts. Compat (react) returns Next's window.next router
|
|
220
220
|
* shim. Default: '' (core injects no compat scripts).
|
|
221
221
|
*/
|
|
222
|
-
documentBodyScripts: (config: ResolvedConfig) => string
|
|
222
|
+
documentBodyScripts: (config: ResolvedConfig) => string
|
|
223
223
|
|
|
224
224
|
/**
|
|
225
225
|
* Inline tags compat injects into the document `<head>` once per document
|
|
@@ -229,23 +229,23 @@ export interface DocumentScriptExtensions {
|
|
|
229
229
|
* (otel) composes clientTraceMetadata `<meta>` tags here. Default: '' (core
|
|
230
230
|
* injects no compat head tags).
|
|
231
231
|
*/
|
|
232
|
-
documentHeadTags?: (config: ResolvedConfig, ctx: { dynamic: boolean; rsc: boolean }) => string
|
|
232
|
+
documentHeadTags?: (config: ResolvedConfig, ctx: { dynamic: boolean; rsc: boolean }) => string
|
|
233
233
|
|
|
234
234
|
/** Tags collected after the document shell has flushed. */
|
|
235
|
-
streamInsertedHTML?: () => string
|
|
235
|
+
streamInsertedHTML?: () => string
|
|
236
236
|
}
|
|
237
237
|
|
|
238
238
|
const documentScriptExtensions: DocumentScriptExtensions = {
|
|
239
239
|
stylesheetPrecedence: () => undefined,
|
|
240
240
|
documentBodyScripts: () => '',
|
|
241
|
-
}
|
|
241
|
+
}
|
|
242
242
|
|
|
243
243
|
export function getDocumentScriptExtensions(): DocumentScriptExtensions {
|
|
244
|
-
return documentScriptExtensions
|
|
244
|
+
return documentScriptExtensions
|
|
245
245
|
}
|
|
246
246
|
|
|
247
247
|
export function setDocumentScriptExtensions(overrides: Partial<DocumentScriptExtensions>): void {
|
|
248
|
-
Object.assign(documentScriptExtensions, overrides)
|
|
248
|
+
Object.assign(documentScriptExtensions, overrides)
|
|
249
249
|
}
|
|
250
250
|
|
|
251
251
|
// ---------------------------------------------------------------------------
|
|
@@ -254,7 +254,7 @@ export function setDocumentScriptExtensions(overrides: Partial<DocumentScriptExt
|
|
|
254
254
|
// ---------------------------------------------------------------------------
|
|
255
255
|
|
|
256
256
|
export interface StaticParamsExtensions {
|
|
257
|
-
normalizeModule: (module: Record<string, unknown>) => Record<string, unknown
|
|
257
|
+
normalizeModule: (module: Record<string, unknown>) => Record<string, unknown>
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
const staticParamsExtensions: StaticParamsExtensions = {
|
|
@@ -262,14 +262,14 @@ const staticParamsExtensions: StaticParamsExtensions = {
|
|
|
262
262
|
typeof module.params === 'function' || typeof module.generateStaticParams !== 'function'
|
|
263
263
|
? module
|
|
264
264
|
: { ...module, params: module.generateStaticParams },
|
|
265
|
-
}
|
|
265
|
+
}
|
|
266
266
|
|
|
267
267
|
export function getStaticParamsExtensions(): StaticParamsExtensions {
|
|
268
|
-
return staticParamsExtensions
|
|
268
|
+
return staticParamsExtensions
|
|
269
269
|
}
|
|
270
270
|
|
|
271
271
|
export function setStaticParamsExtensions(overrides: Partial<StaticParamsExtensions>): void {
|
|
272
|
-
Object.assign(staticParamsExtensions, overrides)
|
|
272
|
+
Object.assign(staticParamsExtensions, overrides)
|
|
273
273
|
}
|
|
274
274
|
|
|
275
275
|
// Server-action module tagging - when a server render imports a 'use server' module, compat tags each
|
|
@@ -287,7 +287,7 @@ export interface ActionModuleExtensions {
|
|
|
287
287
|
tagActionModulesForRender: (
|
|
288
288
|
config: ResolvedConfig,
|
|
289
289
|
importModule: (file: string) => Promise<Record<string, unknown>>,
|
|
290
|
-
) => Promise<void
|
|
290
|
+
) => Promise<void>
|
|
291
291
|
|
|
292
292
|
/**
|
|
293
293
|
* Tag the exports of a freshly imported module when it is a discovered action
|
|
@@ -298,20 +298,20 @@ export interface ActionModuleExtensions {
|
|
|
298
298
|
config: ResolvedConfig,
|
|
299
299
|
file: string,
|
|
300
300
|
module: Record<string, unknown>,
|
|
301
|
-
) => void
|
|
301
|
+
) => void
|
|
302
302
|
}
|
|
303
303
|
|
|
304
304
|
const actionModuleExtensions: ActionModuleExtensions = {
|
|
305
305
|
tagActionModulesForRender: () => Promise.resolve(),
|
|
306
306
|
tagActionModuleExports: () => undefined,
|
|
307
|
-
}
|
|
307
|
+
}
|
|
308
308
|
|
|
309
309
|
export function getActionModuleExtensions(): ActionModuleExtensions {
|
|
310
|
-
return actionModuleExtensions
|
|
310
|
+
return actionModuleExtensions
|
|
311
311
|
}
|
|
312
312
|
|
|
313
313
|
export function setActionModuleExtensions(overrides: Partial<ActionModuleExtensions>): void {
|
|
314
|
-
Object.assign(actionModuleExtensions, overrides)
|
|
314
|
+
Object.assign(actionModuleExtensions, overrides)
|
|
315
315
|
}
|
|
316
316
|
|
|
317
317
|
// Render span seam - compat (otel) wraps the render-body and route-resolution phases in OpenTelemetry
|
|
@@ -325,14 +325,14 @@ export interface RenderSpanExtensions {
|
|
|
325
325
|
* `render route (app) <route>` span (`AppRender.getBodyResult`). `route` is
|
|
326
326
|
* the route PATTERN. Default: run `fn` untouched.
|
|
327
327
|
*/
|
|
328
|
-
withRenderBodySpan: <T>(route: string, fn: () => Promise<T>) => Promise<T
|
|
328
|
+
withRenderBodySpan: <T>(route: string, fn: () => Promise<T>) => Promise<T>
|
|
329
329
|
|
|
330
330
|
/**
|
|
331
331
|
* Wrap route-component resolution (page module import) so compat emits the
|
|
332
332
|
* `resolve page components` span (`NextNodeServer.findPageComponents`,
|
|
333
333
|
* sibling of the render-body span under the root). Default: run `fn`.
|
|
334
334
|
*/
|
|
335
|
-
withFindPageComponentsSpan: <T>(route: string, fn: () => Promise<T>) => Promise<T
|
|
335
|
+
withFindPageComponentsSpan: <T>(route: string, fn: () => Promise<T>) => Promise<T>
|
|
336
336
|
|
|
337
337
|
/**
|
|
338
338
|
* Emit a cheap leaf `resolve segment modules` span
|
|
@@ -341,14 +341,14 @@ export interface RenderSpanExtensions {
|
|
|
341
341
|
* `__PAGE__` for the leaf page or the dynamic/literal dir label for a layout.
|
|
342
342
|
* Default: noop.
|
|
343
343
|
*/
|
|
344
|
-
emitResolveSegmentSpan: (segment: string) => void
|
|
344
|
+
emitResolveSegmentSpan: (segment: string) => void
|
|
345
345
|
|
|
346
346
|
/**
|
|
347
347
|
* Wrap a route-handler invocation so compat emits the
|
|
348
348
|
* `executing api route (app) <route>` span (`AppRouteRouteHandlers.
|
|
349
349
|
* runHandler`). `route` is the core route PATTERN. Default: run `fn`.
|
|
350
350
|
*/
|
|
351
|
-
withRouteHandlerSpan: <T>(route: string, fn: () => Promise<T>) => Promise<T
|
|
351
|
+
withRouteHandlerSpan: <T>(route: string, fn: () => Promise<T>) => Promise<T>
|
|
352
352
|
}
|
|
353
353
|
|
|
354
354
|
const renderSpanExtensions: RenderSpanExtensions = {
|
|
@@ -356,14 +356,14 @@ const renderSpanExtensions: RenderSpanExtensions = {
|
|
|
356
356
|
withFindPageComponentsSpan: (_route, fn) => fn(),
|
|
357
357
|
emitResolveSegmentSpan: () => undefined,
|
|
358
358
|
withRouteHandlerSpan: (_route, fn) => fn(),
|
|
359
|
-
}
|
|
359
|
+
}
|
|
360
360
|
|
|
361
361
|
export function getRenderSpanExtensions(): RenderSpanExtensions {
|
|
362
|
-
return renderSpanExtensions
|
|
362
|
+
return renderSpanExtensions
|
|
363
363
|
}
|
|
364
364
|
|
|
365
365
|
export function setRenderSpanExtensions(overrides: Partial<RenderSpanExtensions>): void {
|
|
366
|
-
Object.assign(renderSpanExtensions, overrides)
|
|
366
|
+
Object.assign(renderSpanExtensions, overrides)
|
|
367
367
|
}
|
|
368
368
|
|
|
369
369
|
// Compat populates every registry above at the bootstrap seam, exactly as it
|
|
@@ -380,5 +380,5 @@ for (const registry of [
|
|
|
380
380
|
actionModuleExtensions,
|
|
381
381
|
renderSpanExtensions,
|
|
382
382
|
]) {
|
|
383
|
-
restoreWithExtensionHost(registry)
|
|
383
|
+
restoreWithExtensionHost(registry)
|
|
384
384
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { createContext, type Context } from 'preact'
|
|
1
|
+
import { createContext, type Context } from 'preact'
|
|
2
2
|
|
|
3
3
|
// Island SSR runs prebundled client chunks — a separate module graph with its own copy of this file, so
|
|
4
4
|
// a plain createContext() would mint two identity-mismatched contexts. Resolve one shared instance.
|
|
5
5
|
function sharedContext<T>(key: string, defaultValue: T): Context<T> {
|
|
6
|
-
const registry = globalThis as typeof globalThis & Record<symbol, Context<unknown
|
|
7
|
-
const symbol = Symbol.for(key)
|
|
8
|
-
const existing = registry[symbol]
|
|
9
|
-
if (existing) return existing as Context<T
|
|
10
|
-
const context = createContext<T>(defaultValue)
|
|
11
|
-
registry[symbol] = context as Context<unknown
|
|
12
|
-
return context
|
|
6
|
+
const registry = globalThis as typeof globalThis & Record<symbol, Context<unknown>>
|
|
7
|
+
const symbol = Symbol.for(key)
|
|
8
|
+
const existing = registry[symbol]
|
|
9
|
+
if (existing) return existing as Context<T>
|
|
10
|
+
const context = createContext<T>(defaultValue)
|
|
11
|
+
registry[symbol] = context as Context<unknown>
|
|
12
|
+
return context
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
// ---------------------------------------------------------------------------
|
|
@@ -33,17 +33,17 @@ function sharedContext<T>(key: string, defaultValue: T): Context<T> {
|
|
|
33
33
|
|
|
34
34
|
export interface LayoutSegmentSnapshot {
|
|
35
35
|
/** Segments consumed AT or ABOVE the owning layout's directory. */
|
|
36
|
-
depth: number
|
|
36
|
+
depth: number
|
|
37
37
|
/** Resolved URL segments below the owning layout (server-side truth). */
|
|
38
|
-
segments: string[]
|
|
38
|
+
segments: string[]
|
|
39
39
|
/** Resolved segments per parallel-route slot key (server-side truth). */
|
|
40
|
-
slots: Record<string, string[]
|
|
40
|
+
slots: Record<string, string[]>
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
export const LayoutSegmentContext = sharedContext<LayoutSegmentSnapshot | null>(
|
|
44
44
|
'pnext.layoutSegmentContext',
|
|
45
45
|
null,
|
|
46
|
-
)
|
|
46
|
+
)
|
|
47
47
|
|
|
48
48
|
// Per-island params snapshot (CORE seam for compat useParams).
|
|
49
49
|
//
|
|
@@ -57,9 +57,9 @@ export const LayoutSegmentContext = sharedContext<LayoutSegmentSnapshot | null>(
|
|
|
57
57
|
// Kept in core (imports only `preact`) so both the renderer's SSR wrap and the entry's client mount
|
|
58
58
|
// reference the SAME context object, exactly like LayoutSegmentContext above.
|
|
59
59
|
|
|
60
|
-
export type RouteParamsSnapshot = Record<string, string | string[]
|
|
60
|
+
export type RouteParamsSnapshot = Record<string, string | string[]>
|
|
61
61
|
|
|
62
62
|
export const RouteParamsContext = sharedContext<RouteParamsSnapshot | null>(
|
|
63
63
|
'pnext.routeParamsContext',
|
|
64
64
|
null,
|
|
65
|
-
)
|
|
65
|
+
)
|