@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/compat-bootstrap.ts
CHANGED
|
@@ -16,38 +16,38 @@
|
|
|
16
16
|
//
|
|
17
17
|
// The enablement gate is inlined here (a pure read of config.compat) rather than imported from
|
|
18
18
|
// compat, so this file carries no static edge into compat. It must stay in sync with
|
|
19
|
-
// compat/
|
|
19
|
+
// compat/aliases.ts reactCompatEnabled/nextCompatEnabled.
|
|
20
20
|
|
|
21
|
-
import type { ResolvedConfig } from './config'
|
|
22
|
-
import { onExtensionHostReset } from './extensions'
|
|
21
|
+
import type { ResolvedConfig } from './config'
|
|
22
|
+
import { onExtensionHostReset } from './extensions'
|
|
23
23
|
|
|
24
24
|
/** True when either Next or React compatibility (or the React compiler) is on. */
|
|
25
25
|
function compatEnabled(config: ResolvedConfig): boolean {
|
|
26
|
-
const compat = config.compat
|
|
27
|
-
return Boolean(compat?.next || compat?.react || compat?.reactCompiler)
|
|
26
|
+
const compat = config.compat
|
|
27
|
+
return Boolean(compat?.next || compat?.react || compat?.reactCompiler)
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
let bootRegistration: Promise<void> | undefined
|
|
31
|
-
let registration: Promise<void> | undefined
|
|
30
|
+
let bootRegistration: Promise<void> | undefined
|
|
31
|
+
let registration: Promise<void> | undefined
|
|
32
32
|
|
|
33
33
|
// A fresh host has none of compat's registrations, so the "already registered"
|
|
34
34
|
// memo has to go with it — otherwise the next bootstrap call is a no-op and the
|
|
35
35
|
// host stays empty for the rest of the process.
|
|
36
36
|
onExtensionHostReset(() => {
|
|
37
|
-
bootRegistration = undefined
|
|
38
|
-
registration = undefined
|
|
39
|
-
})
|
|
37
|
+
bootRegistration = undefined
|
|
38
|
+
registration = undefined
|
|
39
|
+
})
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
42
|
* Register the boot tier: the compat facts core consults before the first
|
|
43
43
|
* compile. No-op (and no compat code loaded) for a pure-core app.
|
|
44
44
|
*/
|
|
45
45
|
export function bootstrapCompatBoot(config: ResolvedConfig): Promise<void> {
|
|
46
|
-
if (!compatEnabled(config)) return Promise.resolve()
|
|
46
|
+
if (!compatEnabled(config)) return Promise.resolve()
|
|
47
47
|
bootRegistration ??= import('./compat/register/boot').then(module =>
|
|
48
48
|
module.registerCompatBootExtensions(config),
|
|
49
|
-
)
|
|
50
|
-
return bootRegistration
|
|
49
|
+
)
|
|
50
|
+
return bootRegistration
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
/**
|
|
@@ -59,9 +59,9 @@ export function bootstrapCompat(
|
|
|
59
59
|
config: ResolvedConfig,
|
|
60
60
|
options: { serve?: boolean } = {},
|
|
61
61
|
): Promise<void> {
|
|
62
|
-
if (!compatEnabled(config)) return Promise.resolve()
|
|
62
|
+
if (!compatEnabled(config)) return Promise.resolve()
|
|
63
63
|
registration ??= bootstrapCompatBoot(config)
|
|
64
64
|
.then(() => import('./compat/register/index'))
|
|
65
|
-
.then(module => module.registerCompatExtensions(config, options))
|
|
66
|
-
return registration
|
|
65
|
+
.then(module => module.registerCompatExtensions(config, options))
|
|
66
|
+
return registration
|
|
67
67
|
}
|
package/src/config.ts
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { existsSync, realpathSync } from 'node:fs'
|
|
2
|
-
import { fileURLToPath, pathToFileURL } from 'node:url'
|
|
3
|
-
import path from 'node:path'
|
|
4
|
-
import { loadEnv } from './env'
|
|
5
|
-
import { findWorkspaceRoot } from './resolve/imports'
|
|
6
|
-
import type { PNextConfig } from './types'
|
|
7
|
-
import { setCacheComponents } from './ppr'
|
|
1
|
+
import { existsSync, realpathSync } from 'node:fs'
|
|
2
|
+
import { fileURLToPath, pathToFileURL } from 'node:url'
|
|
3
|
+
import path from 'node:path'
|
|
4
|
+
import { loadEnv } from './env'
|
|
5
|
+
import { findWorkspaceRoot } from './resolve/imports'
|
|
6
|
+
import type { PNextConfig } from './types'
|
|
7
|
+
import { setCacheComponents } from './render/ppr'
|
|
8
8
|
|
|
9
9
|
export type ResolvedConfig = Required<Pick<PNextConfig, 'outDir' | 'basePath'>> &
|
|
10
10
|
Omit<PNextConfig, 'outDir' | 'basePath'> & {
|
|
11
|
-
root: string
|
|
12
|
-
workspaceRoot: string
|
|
13
|
-
appDir: string
|
|
14
|
-
publicDir: 'public'
|
|
15
|
-
appPath: string
|
|
16
|
-
publicPath: string
|
|
11
|
+
root: string
|
|
12
|
+
workspaceRoot: string
|
|
13
|
+
appDir: string
|
|
14
|
+
publicDir: 'public'
|
|
15
|
+
appPath: string
|
|
16
|
+
publicPath: string
|
|
17
17
|
/** Where this process writes and serves from: the out root, or `<outRoot>/dev` in dev. */
|
|
18
|
-
outPath: string
|
|
18
|
+
outPath: string
|
|
19
19
|
/** The out root itself (`.pnext`), identical in dev and build. */
|
|
20
|
-
outRootPath: string
|
|
20
|
+
outRootPath: string
|
|
21
21
|
/** Generated types — always under the out root, because tsconfig points at it. */
|
|
22
|
-
typesPath: string
|
|
23
|
-
}
|
|
22
|
+
typesPath: string
|
|
23
|
+
}
|
|
24
24
|
|
|
25
25
|
const defaultConfig = {
|
|
26
26
|
outDir: '.pnext',
|
|
27
27
|
basePath: '',
|
|
28
|
-
} satisfies Required<Pick<PNextConfig, 'outDir' | 'basePath'
|
|
28
|
+
} satisfies Required<Pick<PNextConfig, 'outDir' | 'basePath'>>
|
|
29
29
|
|
|
30
30
|
// configSources seam. Core owns the shape; compat populates it.
|
|
31
31
|
//
|
|
@@ -38,22 +38,22 @@ const defaultConfig = {
|
|
|
38
38
|
// dynamic import when compat.next is enabled - mirroring the compat-bootstrap gate so core keeps no static
|
|
39
39
|
// edge into compat.
|
|
40
40
|
export interface ConfigSourceOverrides {
|
|
41
|
-
basePath?: string
|
|
42
|
-
trailingSlash?: boolean
|
|
43
|
-
skipTrailingSlashRedirect?: boolean
|
|
44
|
-
outDir?: string
|
|
45
|
-
assetPrefix?: string
|
|
46
|
-
productionBrowserSourceMaps?: boolean
|
|
41
|
+
basePath?: string
|
|
42
|
+
trailingSlash?: boolean
|
|
43
|
+
skipTrailingSlashRedirect?: boolean
|
|
44
|
+
outDir?: string
|
|
45
|
+
assetPrefix?: string
|
|
46
|
+
productionBrowserSourceMaps?: boolean
|
|
47
47
|
}
|
|
48
48
|
export type ConfigSource = (
|
|
49
49
|
root: string,
|
|
50
50
|
options: { dev?: boolean },
|
|
51
|
-
) => Promise<ConfigSourceOverrides
|
|
51
|
+
) => Promise<ConfigSourceOverrides>
|
|
52
52
|
|
|
53
|
-
let configSource: ConfigSource | undefined
|
|
53
|
+
let configSource: ConfigSource | undefined
|
|
54
54
|
|
|
55
55
|
export function registerConfigSource(source: ConfigSource): void {
|
|
56
|
-
configSource = source
|
|
56
|
+
configSource = source
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
async function resolveConfigSource(
|
|
@@ -61,44 +61,44 @@ async function resolveConfigSource(
|
|
|
61
61
|
root: string,
|
|
62
62
|
options: { dev?: boolean },
|
|
63
63
|
): Promise<ConfigSourceOverrides> {
|
|
64
|
-
if (!config.compat?.next) return {}
|
|
64
|
+
if (!config.compat?.next) return {}
|
|
65
65
|
if (!configSource) {
|
|
66
|
-
await import('./compat/register/config').then(module => module.registerConfigSource())
|
|
66
|
+
await import('./compat/register/config').then(module => module.registerConfigSource())
|
|
67
67
|
}
|
|
68
|
-
if (!configSource) return {}
|
|
69
|
-
return configSource(root, options)
|
|
68
|
+
if (!configSource) return {}
|
|
69
|
+
return configSource(root, options)
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
export async function loadConfig(
|
|
73
73
|
rootInput = process.cwd(),
|
|
74
74
|
options: { dev?: boolean } = {},
|
|
75
75
|
): Promise<ResolvedConfig> {
|
|
76
|
-
const root = canonicalRoot(path.resolve(rootInput))
|
|
77
|
-
await loadEnv(root, options)
|
|
78
|
-
const configPath = path.join(root, 'pnext.config.ts')
|
|
76
|
+
const root = canonicalRoot(path.resolve(rootInput))
|
|
77
|
+
await loadEnv(root, options)
|
|
78
|
+
const configPath = path.join(root, 'pnext.config.ts')
|
|
79
79
|
const loadedConfig = existsSync(configPath)
|
|
80
80
|
? ((await import(pathToFileHref(configPath))) as { default?: PNextConfig })
|
|
81
|
-
: {}
|
|
81
|
+
: {}
|
|
82
82
|
const config: PNextConfig = {
|
|
83
83
|
...(loadedConfig.default ?? {}),
|
|
84
84
|
// eslint-disable-next-line turbo/no-undeclared-env-vars
|
|
85
85
|
...(process.env.PNEXT_COMPAT === 'next'
|
|
86
86
|
? { compat: { ...(loadedConfig.default?.compat ?? {}), next: true } }
|
|
87
87
|
: {}),
|
|
88
|
-
}
|
|
88
|
+
}
|
|
89
89
|
// cacheComponents is a per-app flag on a process-global cell: clear it before
|
|
90
90
|
// the next.config source re-derives it, so a pure-core (or flag-off) app
|
|
91
91
|
// loaded after a cacheComponents app never inherits the previous build's flag.
|
|
92
|
-
setCacheComponents(false)
|
|
93
|
-
const sourceOverrides = stripUndefined(await resolveConfigSource(config, root, options))
|
|
94
|
-
const merged = { ...defaultConfig, ...config, ...sourceOverrides }
|
|
95
|
-
const appPath = await resolveAppPath(root, config)
|
|
96
|
-
const outRootPath = path.resolve(root, merged.outDir)
|
|
92
|
+
setCacheComponents(false)
|
|
93
|
+
const sourceOverrides = stripUndefined(await resolveConfigSource(config, root, options))
|
|
94
|
+
const merged = { ...defaultConfig, ...config, ...sourceOverrides }
|
|
95
|
+
const appPath = await resolveAppPath(root, config)
|
|
96
|
+
const outRootPath = path.resolve(root, merged.outDir)
|
|
97
97
|
const workspaceRoot = canonicalRoot(
|
|
98
98
|
config.workspaceRoot
|
|
99
99
|
? path.resolve(root, config.workspaceRoot)
|
|
100
100
|
: (findWorkspaceRoot(root) ?? root),
|
|
101
|
-
)
|
|
101
|
+
)
|
|
102
102
|
|
|
103
103
|
return {
|
|
104
104
|
...config,
|
|
@@ -125,11 +125,11 @@ export async function loadConfig(
|
|
|
125
125
|
outPath: options.dev ? path.join(outRootPath, devOutSegment) : outRootPath,
|
|
126
126
|
outRootPath,
|
|
127
127
|
typesPath: path.join(outRootPath, 'types'),
|
|
128
|
-
}
|
|
128
|
+
}
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
/** Dev's private subtree under the out root. Build never touches it. */
|
|
132
|
-
export const devOutSegment = 'dev'
|
|
132
|
+
export const devOutSegment = 'dev'
|
|
133
133
|
|
|
134
134
|
// Relative-import resolution realpaths the importing file (so a materialized shim resolves `./sibling`
|
|
135
135
|
// against real source), so every containment check against root/workspaceRoot compares realpaths.
|
|
@@ -138,21 +138,21 @@ export const devOutSegment = 'dev';
|
|
|
138
138
|
// resolving. A no-op when the path holds no symlinks.
|
|
139
139
|
function canonicalRoot(dir: string) {
|
|
140
140
|
try {
|
|
141
|
-
return realpathSync(dir)
|
|
141
|
+
return realpathSync(dir)
|
|
142
142
|
} catch {
|
|
143
|
-
return dir
|
|
143
|
+
return dir
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
function stripUndefined<T extends object>(value: T): T {
|
|
148
|
-
return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined)) as T
|
|
148
|
+
return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined)) as T
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
export function pathToFileHref(filePath: string) {
|
|
152
152
|
// pathToFileURL percent-encodes literal special characters (notably `%`, so a
|
|
153
153
|
// directory physically named `%5Ffoo` on disk stays `%255Ffoo` in the href and
|
|
154
154
|
// import() decodes it back to the literal `%5Ffoo` rather than to `_foo`).
|
|
155
|
-
return pathToFileURL(path.resolve(filePath)).href
|
|
155
|
+
return pathToFileURL(path.resolve(filePath)).href
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
export function publicEnvDefines() {
|
|
@@ -167,7 +167,7 @@ export function publicEnvDefines() {
|
|
|
167
167
|
`process.env.${key}`,
|
|
168
168
|
value === undefined ? 'undefined' : JSON.stringify(value),
|
|
169
169
|
]),
|
|
170
|
-
)
|
|
170
|
+
)
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
type FrameworkRuntimeAlias =
|
|
@@ -177,15 +177,15 @@ type FrameworkRuntimeAlias =
|
|
|
177
177
|
| 'preact/compat/client'
|
|
178
178
|
| 'preact/jsx-runtime'
|
|
179
179
|
| 'preact/jsx-dev-runtime'
|
|
180
|
-
| 'react-compiler-runtime'
|
|
180
|
+
| 'react-compiler-runtime'
|
|
181
181
|
|
|
182
|
-
export type CompatAliasTarget = 'server' | 'client'
|
|
182
|
+
export type CompatAliasTarget = 'server' | 'client'
|
|
183
183
|
|
|
184
184
|
/**
|
|
185
185
|
* Seven `import.meta.resolve` calls against the framework's OWN install - the answer cannot change for the
|
|
186
186
|
* life of the process, and every esbuild build builds an alias map (a vendor pass runs hundreds of those).
|
|
187
187
|
*/
|
|
188
|
-
let frameworkRuntimeAliases: Record<FrameworkRuntimeAlias, string> | undefined
|
|
188
|
+
let frameworkRuntimeAliases: Record<FrameworkRuntimeAlias, string> | undefined
|
|
189
189
|
|
|
190
190
|
export function frameworkRuntimeAliasEntries(): Record<FrameworkRuntimeAlias, string> {
|
|
191
191
|
frameworkRuntimeAliases ??= {
|
|
@@ -196,37 +196,37 @@ export function frameworkRuntimeAliasEntries(): Record<FrameworkRuntimeAlias, st
|
|
|
196
196
|
'preact/jsx-runtime': resolveRuntimeModule('preact/jsx-runtime'),
|
|
197
197
|
'preact/jsx-dev-runtime': resolveRuntimeModule('preact/jsx-dev-runtime'),
|
|
198
198
|
'react-compiler-runtime': resolveRuntimeModule('react-compiler-runtime'),
|
|
199
|
-
}
|
|
200
|
-
return frameworkRuntimeAliases
|
|
199
|
+
}
|
|
200
|
+
return frameworkRuntimeAliases
|
|
201
201
|
}
|
|
202
202
|
|
|
203
203
|
function resolveRuntimeModule(specifier: string) {
|
|
204
|
-
return fileURLToPath(import.meta.resolve(specifier))
|
|
204
|
+
return fileURLToPath(import.meta.resolve(specifier))
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
export function pnextAliases(target: CompatAliasTarget): Record<string, string> {
|
|
208
|
-
if (target !== 'client') return {}
|
|
208
|
+
if (target !== 'client') return {}
|
|
209
209
|
return {
|
|
210
210
|
'@wular/pnext/cache': path.resolve(import.meta.dirname, 'api/client-cache.ts'),
|
|
211
|
-
}
|
|
211
|
+
}
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
async function resolveAppPath(root: string, config: PNextConfig) {
|
|
215
|
-
const rootApp = path.join(root, 'app')
|
|
215
|
+
const rootApp = path.join(root, 'app')
|
|
216
216
|
if (config.compat?.next) {
|
|
217
|
-
const pagesPath = path.join(root, 'pages')
|
|
218
|
-
const hasPages = existsSync(pagesPath)
|
|
217
|
+
const pagesPath = path.join(root, 'pages')
|
|
218
|
+
const hasPages = existsSync(pagesPath)
|
|
219
219
|
if (existsSync(rootApp)) {
|
|
220
220
|
if (hasPages) {
|
|
221
|
-
const { materializePagesApp } = await import('./compat/pages')
|
|
222
|
-
const hybrid = await materializePagesApp(root)
|
|
223
|
-
if (hybrid) return hybrid
|
|
221
|
+
const { materializePagesApp } = await import('./compat/pages/router')
|
|
222
|
+
const hybrid = await materializePagesApp(root)
|
|
223
|
+
if (hybrid) return hybrid
|
|
224
224
|
}
|
|
225
|
-
return rootApp
|
|
225
|
+
return rootApp
|
|
226
226
|
}
|
|
227
|
-
const { materializePagesApp } = await import('./compat/pages')
|
|
228
|
-
const pagesApp = await materializePagesApp(root)
|
|
229
|
-
if (pagesApp) return pagesApp
|
|
230
|
-
} else if (existsSync(rootApp)) return rootApp
|
|
231
|
-
return path.join(root, 'src', 'app')
|
|
227
|
+
const { materializePagesApp } = await import('./compat/pages/router')
|
|
228
|
+
const pagesApp = await materializePagesApp(root)
|
|
229
|
+
if (pagesApp) return pagesApp
|
|
230
|
+
} else if (existsSync(rootApp)) return rootApp
|
|
231
|
+
return path.join(root, 'src', 'app')
|
|
232
232
|
}
|