@wular/pnext 0.0.4 → 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 -1992
- 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 -1897
- 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} +139 -139
- package/src/resolve/engine.ts +90 -77
- package/src/resolve/imports.ts +475 -463
- package/src/resolve/scan-facts.ts +318 -296
- 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 +827 -815
- 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
|
@@ -6,7 +6,7 @@ export {
|
|
|
6
6
|
PNextRedirectError,
|
|
7
7
|
PNextUnauthorizedError,
|
|
8
8
|
unauthorized,
|
|
9
|
-
} from '../../api/navigation'
|
|
9
|
+
} from '../../api/navigation'
|
|
10
10
|
import {
|
|
11
11
|
permanentRedirect as pnextPermanentRedirect,
|
|
12
12
|
PNextForbiddenError,
|
|
@@ -15,33 +15,33 @@ import {
|
|
|
15
15
|
PNextUnauthorizedError,
|
|
16
16
|
ReadonlyURLSearchParams,
|
|
17
17
|
redirect as pnextRedirect,
|
|
18
|
-
} from '../../api/navigation'
|
|
19
|
-
import { isPostpone } from '../../
|
|
20
|
-
import { currentParams, currentRequest } from '../../request/context'
|
|
21
|
-
import { useContext } from 'preact/hooks'
|
|
18
|
+
} from '../../api/navigation'
|
|
19
|
+
import { isPostpone } from '../../render/postpone'
|
|
20
|
+
import { currentParams, currentRequest } from '../../request/context'
|
|
21
|
+
import { useContext } from 'preact/hooks'
|
|
22
22
|
import {
|
|
23
23
|
currentLayoutSegments,
|
|
24
24
|
currentParamsSnapshot,
|
|
25
25
|
hasLayoutSegmentScope,
|
|
26
|
-
} from '../../render/slots'
|
|
27
|
-
import { LayoutSegmentContext, RouteParamsContext } from '../../render/island-context'
|
|
28
|
-
import { canonicalUrlHref } from './canonical-url'
|
|
29
|
-
import { isUnrecognizedActionError } from '../actions/unrecognized-error'
|
|
30
|
-
import { stripBasePath } from '../client/base-path'
|
|
31
|
-
import { addBasePath } from '../client/base-path'
|
|
32
|
-
import type { CurrentRoute, PNextRouter } from '../../api/client-navigation'
|
|
33
|
-
import type { RouteParams, RoutePath } from '../../types'
|
|
34
|
-
|
|
35
|
-
export type { RedirectStatus } from '../../api/navigation'
|
|
36
|
-
export type { CurrentRoute, PNextRouter } from '../../api/client-navigation'
|
|
37
|
-
export { ReadonlyURLSearchParams }
|
|
26
|
+
} from '../../render/slots'
|
|
27
|
+
import { LayoutSegmentContext, RouteParamsContext } from '../../render/island-context'
|
|
28
|
+
import { canonicalUrlHref } from './canonical-url'
|
|
29
|
+
import { isUnrecognizedActionError } from '../actions/unrecognized-error'
|
|
30
|
+
import { stripBasePath } from '../client/base-path'
|
|
31
|
+
import { addBasePath } from '../client/base-path'
|
|
32
|
+
import type { CurrentRoute, PNextRouter } from '../../api/client-navigation'
|
|
33
|
+
import type { RouteParams, RoutePath } from '../../types'
|
|
34
|
+
|
|
35
|
+
export type { RedirectStatus } from '../../api/navigation'
|
|
36
|
+
export type { CurrentRoute, PNextRouter } from '../../api/client-navigation'
|
|
37
|
+
export { ReadonlyURLSearchParams }
|
|
38
38
|
|
|
39
39
|
export const RedirectType = {
|
|
40
40
|
push: 'push',
|
|
41
41
|
replace: 'replace',
|
|
42
|
-
} as const
|
|
42
|
+
} as const
|
|
43
43
|
|
|
44
|
-
export type RedirectType = (typeof RedirectType)[keyof typeof RedirectType]
|
|
44
|
+
export type RedirectType = (typeof RedirectType)[keyof typeof RedirectType]
|
|
45
45
|
|
|
46
46
|
export function redirect(location: string, type?: RedirectType): never {
|
|
47
47
|
try {
|
|
@@ -49,19 +49,19 @@ export function redirect(location: string, type?: RedirectType): never {
|
|
|
49
49
|
// targets outside the basePath) are left as-is. Normalizing here means every downstream consumer -
|
|
50
50
|
// the page-GET redirect response and the server-action redirect envelope - sees a basePath-space
|
|
51
51
|
// location uniformly.
|
|
52
|
-
pnextRedirect(addBasePath(location))
|
|
52
|
+
pnextRedirect(addBasePath(location))
|
|
53
53
|
} catch (error) {
|
|
54
54
|
// Server actions honor push/replace history semantics on the client;
|
|
55
55
|
// carry the requested type on the control-flow error.
|
|
56
56
|
if (type && error instanceof PNextRedirectError) {
|
|
57
|
-
(error as PNextRedirectError & { redirectType?: RedirectType }).redirectType = type
|
|
57
|
+
;(error as PNextRedirectError & { redirectType?: RedirectType }).redirectType = type
|
|
58
58
|
}
|
|
59
|
-
throw error
|
|
59
|
+
throw error
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
export function permanentRedirect(location: string, _type?: RedirectType): never {
|
|
64
|
-
pnextPermanentRedirect(addBasePath(location))
|
|
64
|
+
pnextPermanentRedirect(addBasePath(location))
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
/** Rethrow framework control-flow errors so user catch blocks don't swallow them. */
|
|
@@ -73,7 +73,7 @@ export function unstable_rethrow(error: unknown): void {
|
|
|
73
73
|
error instanceof PNextUnauthorizedError ||
|
|
74
74
|
isPostpone(error)
|
|
75
75
|
) {
|
|
76
|
-
throw error
|
|
76
|
+
throw error
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
|
|
@@ -85,22 +85,22 @@ const serverRouter: PNextRouter = {
|
|
|
85
85
|
back: () => undefined,
|
|
86
86
|
forward: () => undefined,
|
|
87
87
|
bfcacheId: '',
|
|
88
|
-
}
|
|
88
|
+
}
|
|
89
89
|
|
|
90
90
|
export function useRouter(): PNextRouter {
|
|
91
|
-
return serverRouter
|
|
91
|
+
return serverRouter
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
export function usePathname() {
|
|
95
|
-
return stripBasePath(currentUrl().pathname)
|
|
95
|
+
return stripBasePath(currentUrl().pathname)
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
export function useSearchParams(): ReadonlyURLSearchParams {
|
|
99
|
-
return new ReadonlyURLSearchParams(currentUrl().search)
|
|
99
|
+
return new ReadonlyURLSearchParams(currentUrl().search)
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
export function useParams<Route extends RoutePath = RoutePath>() {
|
|
103
|
-
return resolveParams() as RouteParams<Route
|
|
103
|
+
return resolveParams() as RouteParams<Route>
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
/**
|
|
@@ -112,41 +112,39 @@ export function useParams<Route extends RoutePath = RoutePath>() {
|
|
|
112
112
|
* runs during a preact render.
|
|
113
113
|
*/
|
|
114
114
|
function resolveParams(): Record<string, string | string[]> {
|
|
115
|
-
const scope = currentParamsSnapshot()
|
|
116
|
-
if (scope) return scope
|
|
115
|
+
const scope = currentParamsSnapshot()
|
|
116
|
+
if (scope) return scope
|
|
117
117
|
// Island SSR (a `'use client'` component in a slot) reads the snapshot from
|
|
118
118
|
// the RouteParamsContext the renderer wraps around it. useContext is only
|
|
119
119
|
// valid inside a preact render; a plain server component resolved by direct
|
|
120
120
|
// call has no hook context, so guard it and fall back to the global params.
|
|
121
121
|
try {
|
|
122
|
-
const snapshot = useContext(RouteParamsContext)
|
|
123
|
-
if (snapshot) return snapshot
|
|
122
|
+
const snapshot = useContext(RouteParamsContext)
|
|
123
|
+
if (snapshot) return snapshot
|
|
124
124
|
} catch {
|
|
125
125
|
// not in a preact render — fall through to global route params
|
|
126
126
|
}
|
|
127
|
-
return currentParams()
|
|
127
|
+
return currentParams()
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
export function useRoute<Route extends RoutePath = RoutePath>(): CurrentRoute<Route> {
|
|
131
|
-
const url = currentUrl()
|
|
131
|
+
const url = currentUrl()
|
|
132
132
|
return {
|
|
133
133
|
route: null,
|
|
134
134
|
pathname: url.pathname,
|
|
135
135
|
params: resolveParams() as RouteParams<Route>,
|
|
136
136
|
searchParams: new ReadonlyURLSearchParams(url.search),
|
|
137
|
-
}
|
|
137
|
+
}
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
export function useSelectedLayoutSegment(
|
|
141
|
-
parallelRoutesKey
|
|
142
|
-
|
|
143
|
-
const segments = selectedLayoutSegments(parallelRoutesKey);
|
|
144
|
-
return segments[parallelRoutesKey ? segments.length - 1 : 0] ?? null;
|
|
140
|
+
export function useSelectedLayoutSegment(parallelRoutesKey?: string): string | null {
|
|
141
|
+
const segments = selectedLayoutSegments(parallelRoutesKey)
|
|
142
|
+
return segments[parallelRoutesKey ? segments.length - 1 : 0] ?? null
|
|
145
143
|
}
|
|
146
144
|
|
|
147
145
|
export function useSelectedLayoutSegments(parallelRoutesKey?: string): string[] {
|
|
148
146
|
// A defensive copy so callers can't mutate the render-scoped array.
|
|
149
|
-
return [...selectedLayoutSegments(parallelRoutesKey)]
|
|
147
|
+
return [...selectedLayoutSegments(parallelRoutesKey)]
|
|
150
148
|
}
|
|
151
149
|
|
|
152
150
|
/**
|
|
@@ -156,14 +154,14 @@ export function useSelectedLayoutSegments(parallelRoutesKey?: string): string[]
|
|
|
156
154
|
* re-provides at mount. useContext is safe: the no-scope branch only runs during a preact render.
|
|
157
155
|
*/
|
|
158
156
|
function selectedLayoutSegments(parallelRoutesKey?: string): string[] {
|
|
159
|
-
if (hasLayoutSegmentScope()) return currentLayoutSegments(parallelRoutesKey)
|
|
160
|
-
const snapshot = useContext(LayoutSegmentContext)
|
|
161
|
-
if (!snapshot) return []
|
|
162
|
-
return parallelRoutesKey ? (snapshot.slots[parallelRoutesKey] ?? []) : snapshot.segments
|
|
157
|
+
if (hasLayoutSegmentScope()) return currentLayoutSegments(parallelRoutesKey)
|
|
158
|
+
const snapshot = useContext(LayoutSegmentContext)
|
|
159
|
+
if (!snapshot) return []
|
|
160
|
+
return parallelRoutesKey ? (snapshot.slots[parallelRoutesKey] ?? []) : snapshot.segments
|
|
163
161
|
}
|
|
164
162
|
|
|
165
163
|
export function useLinkStatus() {
|
|
166
|
-
return { pending: false }
|
|
164
|
+
return { pending: false }
|
|
167
165
|
}
|
|
168
166
|
|
|
169
167
|
/**
|
|
@@ -172,7 +170,7 @@ export function useLinkStatus() {
|
|
|
172
170
|
* asked for read the recorded canonical URL first (see canonical-url.ts).
|
|
173
171
|
*/
|
|
174
172
|
function currentUrl() {
|
|
175
|
-
return new URL(canonicalUrlHref() ?? currentRequest()?.url ?? 'http://pnext.local/')
|
|
173
|
+
return new URL(canonicalUrlHref() ?? currentRequest()?.url ?? 'http://pnext.local/')
|
|
176
174
|
}
|
|
177
175
|
|
|
178
176
|
/**
|
|
@@ -181,8 +179,8 @@ function currentUrl() {
|
|
|
181
179
|
* action endpoint sends for an unknown id.
|
|
182
180
|
*/
|
|
183
181
|
export function unstable_isUnrecognizedActionError(error: unknown): boolean {
|
|
184
|
-
return isUnrecognizedActionError(error)
|
|
182
|
+
return isUnrecognizedActionError(error)
|
|
185
183
|
}
|
|
186
184
|
|
|
187
185
|
// CSS-in-JS SSR insertion hook (Next exports it from next/navigation).
|
|
188
|
-
export { useServerInsertedHTML } from '../react/server-inserted-html'
|
|
186
|
+
export { useServerInsertedHTML } from '../react/server-inserted-html'
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
// `next/offline` - the useOffline() hook. Reports whether the app is currently offline: false on the
|
|
2
2
|
// server and during hydration; in the browser it tracks the native online/offline events. The router's
|
|
3
|
-
// own offline handling (soft-nav retry on reconnect) lives in
|
|
3
|
+
// own offline handling (soft-nav retry on reconnect) lives in client/router/index.ts; this hook is only the
|
|
4
4
|
// UI-facing subscription.
|
|
5
5
|
|
|
6
|
-
import { useEffect, useState } from 'preact/hooks'
|
|
6
|
+
import { useEffect, useState } from 'preact/hooks'
|
|
7
7
|
|
|
8
|
-
type Listener = () => void
|
|
8
|
+
type Listener = () => void
|
|
9
9
|
|
|
10
|
-
const listeners = new Set<Listener>()
|
|
11
|
-
let installed = false
|
|
12
|
-
let offline = false
|
|
10
|
+
const listeners = new Set<Listener>()
|
|
11
|
+
let installed = false
|
|
12
|
+
let offline = false
|
|
13
13
|
|
|
14
14
|
function currentOffline(): boolean {
|
|
15
|
-
if (typeof navigator === 'undefined') return false
|
|
16
|
-
return navigator.onLine === false
|
|
15
|
+
if (typeof navigator === 'undefined') return false
|
|
16
|
+
return navigator.onLine === false
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
function install() {
|
|
20
|
-
if (installed || (!process.browser && typeof window === 'undefined')) return
|
|
21
|
-
installed = true
|
|
22
|
-
offline = currentOffline()
|
|
20
|
+
if (installed || (!process.browser && typeof window === 'undefined')) return
|
|
21
|
+
installed = true
|
|
22
|
+
offline = currentOffline()
|
|
23
23
|
const update = () => {
|
|
24
|
-
const next = currentOffline()
|
|
25
|
-
if (next === offline) return
|
|
26
|
-
offline = next
|
|
27
|
-
for (const listener of [...listeners]) listener()
|
|
28
|
-
}
|
|
29
|
-
window.addEventListener('offline', update)
|
|
30
|
-
window.addEventListener('online', update)
|
|
24
|
+
const next = currentOffline()
|
|
25
|
+
if (next === offline) return
|
|
26
|
+
offline = next
|
|
27
|
+
for (const listener of [...listeners]) listener()
|
|
28
|
+
}
|
|
29
|
+
window.addEventListener('offline', update)
|
|
30
|
+
window.addEventListener('online', update)
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
/**
|
|
@@ -36,16 +36,16 @@ function install() {
|
|
|
36
36
|
* client-side signal only).
|
|
37
37
|
*/
|
|
38
38
|
export function useOffline(): boolean {
|
|
39
|
-
const [value, setValue] = useState(false)
|
|
39
|
+
const [value, setValue] = useState(false)
|
|
40
40
|
useEffect(() => {
|
|
41
|
-
install()
|
|
42
|
-
const listener = () => setValue(offline)
|
|
43
|
-
listeners.add(listener)
|
|
41
|
+
install()
|
|
42
|
+
const listener = () => setValue(offline)
|
|
43
|
+
listeners.add(listener)
|
|
44
44
|
// The state may have flipped between render and subscription.
|
|
45
|
-
listener()
|
|
45
|
+
listener()
|
|
46
46
|
return () => {
|
|
47
|
-
listeners.delete(listener)
|
|
48
|
-
}
|
|
49
|
-
}, [])
|
|
50
|
-
return value
|
|
47
|
+
listeners.delete(listener)
|
|
48
|
+
}
|
|
49
|
+
}, [])
|
|
50
|
+
return value
|
|
51
51
|
}
|