@wular/pnext 0.1.6 → 0.1.8
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/bin/pnext +9 -2
- package/dist/server/_chunks/aliases-pycbtjt1.js +46 -0
- package/dist/server/_chunks/analyze-4d9e00g9.js +449 -0
- package/dist/server/_chunks/boot-bhemypxz.js +38 -0
- package/dist/server/_chunks/build-c991dv65.js +86 -0
- package/dist/server/_chunks/build-kh5e3x48.js +3341 -0
- package/dist/server/_chunks/build-tier-0a96kmx3.js +2456 -0
- package/dist/server/_chunks/compile-040r79gj.js +22 -0
- package/dist/server/_chunks/config-0tvz03a6.js +24 -0
- package/dist/server/_chunks/config-27rj7830.js +36 -0
- package/dist/server/_chunks/create-9rvwshsp.js +135 -0
- package/dist/server/_chunks/dev-ex9exynt.js +220 -0
- package/dist/server/_chunks/esbuild-yyktfrtt.js +15 -0
- package/dist/server/_chunks/generate-myw9hef7.js +22 -0
- package/dist/server/_chunks/index-0r5eqfc7.js +279 -0
- package/dist/server/_chunks/index-0yjv5v47.js +105 -0
- package/dist/server/_chunks/index-11xpbfej.js +17 -0
- package/dist/server/_chunks/index-141vcwk6.js +109 -0
- package/dist/server/_chunks/index-1pzm1hdy.js +4130 -0
- package/dist/server/_chunks/index-29pq0kax.js +590 -0
- package/dist/server/_chunks/index-2vz0wzdn.js +59 -0
- package/dist/server/_chunks/index-2wfv4kvx.js +182 -0
- package/dist/server/_chunks/index-38xpdxwd.js +194 -0
- package/dist/server/_chunks/index-3e075kny.js +128 -0
- package/dist/server/_chunks/index-3ycf5ckv.js +472 -0
- package/dist/server/_chunks/index-4399bvd2.js +18 -0
- package/dist/server/_chunks/index-4da76t62.js +297 -0
- package/dist/server/_chunks/index-4t92hdxd.js +172 -0
- package/dist/server/_chunks/index-4zzebszd.js +10 -0
- package/dist/server/_chunks/index-52k54ykj.js +95 -0
- package/dist/server/_chunks/index-5hr4062s.js +70 -0
- package/dist/server/_chunks/index-68m3mwbd.js +84 -0
- package/dist/server/_chunks/index-6b009mt0.js +56 -0
- package/dist/server/_chunks/index-6gex3pfa.js +15 -0
- package/dist/server/_chunks/index-6kp9r0d9.js +11 -0
- package/dist/server/_chunks/index-6q7zvrap.js +134 -0
- package/dist/server/_chunks/index-71885zaq.js +284 -0
- package/dist/server/_chunks/index-73z4esab.js +38 -0
- package/dist/server/_chunks/index-79ngvam8.js +60 -0
- package/dist/server/_chunks/index-7wc9n8be.js +25 -0
- package/dist/server/_chunks/index-8ct7rqy3.js +198 -0
- package/dist/server/_chunks/index-8kcxdfya.js +206 -0
- package/dist/server/_chunks/index-9ch50vtq.js +18 -0
- package/dist/server/_chunks/index-9f49w76j.js +213 -0
- package/dist/server/_chunks/index-9hz3s0m8.js +851 -0
- package/dist/server/_chunks/index-akkrvjn6.js +535 -0
- package/dist/server/_chunks/index-b6wtkdp4.js +24 -0
- package/dist/server/_chunks/index-b7j671dj.js +207 -0
- package/dist/server/_chunks/index-bcws5eh2.js +35 -0
- package/dist/server/_chunks/index-bzd2ef7t.js +10 -0
- package/dist/server/_chunks/index-cjgqs13g.js +65 -0
- package/dist/server/_chunks/index-ckkdpht5.js +41 -0
- package/dist/server/_chunks/index-cn86z041.js +296 -0
- package/dist/server/_chunks/index-cvr4z22m.js +92 -0
- package/dist/server/_chunks/index-cyfednwb.js +87 -0
- package/dist/server/_chunks/index-d158y67j.js +152 -0
- package/dist/server/_chunks/index-d1jsmhhk.js +955 -0
- package/dist/server/_chunks/index-dg0f05zs.js +199 -0
- package/dist/server/_chunks/index-dgr390q7.js +9438 -0
- package/dist/server/_chunks/index-drwv61cc.js +185 -0
- package/dist/server/_chunks/index-e3a6yx84.js +18 -0
- package/dist/server/_chunks/index-e88tyv35.js +45 -0
- package/dist/server/_chunks/index-en7n9f7m.js +22 -0
- package/dist/server/_chunks/index-entm8bmz.js +28 -0
- package/dist/server/_chunks/index-evhd413j.js +57 -0
- package/dist/server/_chunks/index-ezgj0tr1.js +88 -0
- package/dist/server/_chunks/index-fjv96re1.js +5295 -0
- package/dist/server/_chunks/index-fn1chkkd.js +214 -0
- package/dist/server/_chunks/index-fp8r0sqs.js +64 -0
- package/dist/server/_chunks/index-gcmj16xy.js +92 -0
- package/dist/server/_chunks/index-gkndxkxf.js +736 -0
- package/dist/server/_chunks/index-grta8ap3.js +238 -0
- package/dist/server/_chunks/index-h2a70tg4.js +7 -0
- package/dist/server/_chunks/index-h4xy648y.js +51 -0
- package/dist/server/_chunks/index-hdbwtdv2.js +352 -0
- package/dist/server/_chunks/index-he6n2bvp.js +1270 -0
- package/dist/server/_chunks/index-j0m1jxqa.js +1253 -0
- package/dist/server/_chunks/index-j2zrcp1k.js +66 -0
- package/dist/server/_chunks/index-j681c48a.js +2530 -0
- package/dist/server/_chunks/index-jbj7ehef.js +50 -0
- package/dist/server/_chunks/index-jcsjq3d1.js +20 -0
- package/dist/server/_chunks/index-jks0x0a1.js +14 -0
- package/dist/server/_chunks/index-jn9rbhrx.js +1599 -0
- package/dist/server/_chunks/index-jt8e1pje.js +12 -0
- package/dist/server/_chunks/index-kdhxpwyq.js +483 -0
- package/dist/server/_chunks/index-knp0s912.js +7 -0
- package/dist/server/_chunks/index-kqyy1d4f.js +50 -0
- package/dist/server/_chunks/index-kresp2n8.js +445 -0
- package/dist/server/_chunks/index-m63czgq5.js +590 -0
- package/dist/server/_chunks/index-ms9v9tnx.js +31 -0
- package/dist/server/_chunks/index-n4hxpng2.js +11 -0
- package/dist/server/_chunks/index-n629dy38.js +1071 -0
- package/dist/server/_chunks/index-nf3df4jy.js +266 -0
- package/dist/server/_chunks/index-nqh3xhdc.js +57 -0
- package/dist/server/_chunks/index-pym1cezq.js +39 -0
- package/dist/server/_chunks/index-q3r9z8mq.js +213 -0
- package/dist/server/_chunks/index-q738kkhj.js +100 -0
- package/dist/server/_chunks/index-qcrvt6er.js +112 -0
- package/dist/server/_chunks/index-qjj6gddn.js +54 -0
- package/dist/server/_chunks/index-qpwsgt3a.js +158 -0
- package/dist/server/_chunks/index-r97ptz1q.js +97 -0
- package/dist/server/_chunks/index-ras0sdab.js +26 -0
- package/dist/server/_chunks/index-rcs322t1.js +19 -0
- package/dist/server/_chunks/index-rgj5mx84.js +101 -0
- package/dist/server/_chunks/index-rjegyfx4.js +1435 -0
- package/dist/server/_chunks/index-rt9qq1va.js +4 -0
- package/dist/server/_chunks/index-rthrsed5.js +356 -0
- package/dist/server/_chunks/index-sq3kvz3g.js +200 -0
- package/dist/server/_chunks/index-stbk3jhn.js +31 -0
- package/dist/server/_chunks/index-tf4j19ge.js +130 -0
- package/dist/server/_chunks/index-tgcakdxc.js +125 -0
- package/dist/server/_chunks/index-tgsfjmep.js +74 -0
- package/dist/server/_chunks/index-tq1f96v7.js +51 -0
- package/dist/server/_chunks/index-tq3b39a5.js +107 -0
- package/dist/server/_chunks/index-typcbcsv.js +819 -0
- package/dist/server/_chunks/index-v1ags1na.js +132 -0
- package/dist/server/_chunks/index-vmr35jjw.js +170 -0
- package/dist/server/_chunks/index-vvq7rqtn.js +329 -0
- package/dist/server/_chunks/index-vz0km5qk.js +33 -0
- package/dist/server/_chunks/index-w6h8m6vp.js +138 -0
- package/dist/server/_chunks/index-web361b8.js +138 -0
- package/dist/server/_chunks/index-wm36rj4v.js +311 -0
- package/dist/server/_chunks/index-x0y005nh.js +283 -0
- package/dist/server/_chunks/index-x2m17v9c.js +6166 -0
- package/dist/server/_chunks/index-x3yn4ywm.js +22 -0
- package/dist/server/_chunks/index-x9c55pzy.js +871 -0
- package/dist/server/_chunks/index-xh1nbk46.js +1299 -0
- package/dist/server/_chunks/index-xvj80c3a.js +30 -0
- package/dist/server/_chunks/index-xywjg2vc.js +100 -0
- package/dist/server/_chunks/index-y4d02znn.js +66 -0
- package/dist/server/_chunks/index-y7mzvq2q.js +110 -0
- package/dist/server/_chunks/index-ye9hmsvf.js +47 -0
- package/dist/server/_chunks/index-yhxkxghe.js +56 -0
- package/dist/server/_chunks/index-yrjkqtfj.js +86 -0
- package/dist/server/_chunks/index-z88qv16t.js +11 -0
- package/dist/server/_chunks/index-zfrwq472.js +154 -0
- package/dist/server/_chunks/index-zqpqyg8p.js +666 -0
- package/dist/server/_chunks/loader-5en7wpt5.js +80 -0
- package/dist/server/_chunks/modules-t92favpj.js +76 -0
- package/dist/server/_chunks/pipeline-4t9q43ht.js +836 -0
- package/dist/server/_chunks/production-385bw8df.js +55 -0
- package/dist/server/_chunks/proxy-config-60gprphe.js +23 -0
- package/dist/server/_chunks/proxy-gfhmktbk.js +35 -0
- package/dist/server/_chunks/router-xnrva921.js +501 -0
- package/dist/server/_chunks/routes-ht868pdc.js +66 -0
- package/dist/server/_chunks/run-d40d63ag.js +697 -0
- package/dist/server/_chunks/server-2p8fgqq2.js +1839 -0
- package/dist/server/_chunks/tsconfig-defaults-bcn34eqb.js +21 -0
- package/dist/server/_chunks/typegen-dvtcjtaw.js +37 -0
- package/dist/server/api/client-cache.js +14 -0
- package/dist/server/cli/index.js +375 -0
- package/dist/server/cli/start.js +158 -0
- package/dist/server/client/reference.js +16 -0
- package/dist/server/compat/next/cache.js +56 -0
- package/dist/server/compat/next/canonical-url.js +13 -0
- package/dist/server/compat/next/client-cache.js +57 -0
- package/dist/server/compat/next/client-navigation.js +232 -0
- package/dist/server/compat/next/client-only.js +1 -0
- package/dist/server/compat/next/client-script.js +178 -0
- package/dist/server/compat/next/client-server.js +34 -0
- package/dist/server/compat/next/config-headers.js +34 -0
- package/dist/server/compat/next/config-loader.js +25 -0
- package/dist/server/compat/next/config.js +10 -0
- package/dist/server/compat/next/constants.js +18 -0
- package/dist/server/compat/next/custom-server.js +10 -0
- package/dist/server/compat/next/dist/client/components/app-router-headers.js +48 -0
- package/dist/server/compat/next/dist/server/web/spec-extension/revalidate.js +27 -0
- package/dist/server/compat/next/dist/server/web/spec-extension/unstable-cache.js +25 -0
- package/dist/server/compat/next/dist/server/web/spec-extension/unstable-no-store.js +25 -0
- package/dist/server/compat/next/dynamic.js +21 -0
- package/dist/server/compat/next/error.js +112 -0
- package/dist/server/compat/next/font/cache.js +16 -0
- package/dist/server/compat/next/font/google.js +3 -0
- package/dist/server/compat/next/font/index.js +1 -0
- package/dist/server/compat/next/font/local.js +24 -0
- package/dist/server/compat/next/font/runtime-client.js +33 -0
- package/dist/server/compat/next/font/runtime.js +43 -0
- package/dist/server/compat/next/font/shared.js +22 -0
- package/dist/server/compat/next/form.js +129 -0
- package/dist/server/compat/next/head.js +10 -0
- package/dist/server/compat/next/headers.js +30 -0
- package/dist/server/compat/next/image/client.js +11 -0
- package/dist/server/compat/next/image/config.js +18 -0
- package/dist/server/compat/next/image/optimizer.js +25 -0
- package/dist/server/compat/next/image/patterns.js +12 -0
- package/dist/server/compat/next/image/props.js +16 -0
- package/dist/server/compat/next/image/shared.js +86 -0
- package/dist/server/compat/next/image/static-metadata.js +32 -0
- package/dist/server/compat/next/image/validate.js +8 -0
- package/dist/server/compat/next/image.js +59 -0
- package/dist/server/compat/next/index.js +1 -0
- package/dist/server/compat/next/legacy-image.js +78 -0
- package/dist/server/compat/next/legacy-request-apis.js +24 -0
- package/dist/server/compat/next/link-transform.js +15 -0
- package/dist/server/compat/next/link.js +14 -0
- package/dist/server/compat/next/navigation.js +191 -0
- package/dist/server/compat/next/offline.js +45 -0
- package/dist/server/compat/next/og.js +8 -0
- package/dist/server/compat/next/preferred-region.js +8 -0
- package/dist/server/compat/next/redirects.js +32 -0
- package/dist/server/compat/next/resource-hints.js +30 -0
- package/dist/server/compat/next/rewrites.js +43 -0
- package/dist/server/compat/next/root-params.js +121 -0
- package/dist/server/compat/next/route-state.js +23 -0
- package/dist/server/compat/next/router.js +103 -0
- package/dist/server/compat/next/script.js +37 -0
- package/dist/server/compat/next/server-only.js +1 -0
- package/dist/server/compat/next/server.js +131 -0
- package/dist/server/compat/next/svgr.js +14 -0
- package/dist/server/compat/next/telemetry.js +10 -0
- package/dist/server/compat/next/usage.js +13 -0
- package/dist/server/compat/next/user-agent.js +12 -0
- package/dist/server/compat/next/web-vitals.js +35 -0
- package/dist/server/compat/react/action-state.js +11 -0
- package/dist/server/compat/react/client-lite.js +83 -0
- package/dist/server/compat/react/client.js +131 -0
- package/dist/server/compat/react/compiler-runtime.js +42 -0
- package/dist/server/compat/react/dom-client.js +106 -0
- package/dist/server/compat/react/dom-react-server.js +37 -0
- package/dist/server/compat/react/dom-server.js +40 -0
- package/dist/server/compat/react/dom.js +52 -0
- package/dist/server/compat/react/hooks-extra.js +12 -0
- package/dist/server/compat/react/internals.js +14 -0
- package/dist/server/compat/react/parity.js +11 -0
- package/dist/server/compat/react/preact.js +113 -0
- package/dist/server/compat/react/react-server.js +133 -0
- package/dist/server/compat/react/router-shim.js +8 -0
- package/dist/server/compat/react/server-component-use.js +14 -0
- package/dist/server/compat/react/server-inserted-html.js +14 -0
- package/dist/server/compat/react/server.js +194 -0
- package/dist/server/compat/react/style-values.js +10 -0
- package/dist/server/compat/react/use.js +10 -0
- package/dist/server/compat/react/view-transition.js +12 -0
- package/dist/server/generation.json +1 -0
- package/package.json +4 -1
- package/reference/compat.md +1 -1
- package/reference/config.md +2 -2
- package/reference/dev.md +1 -1
- package/reference/getting-started.md +1 -1
- package/reference/rendering.md +4 -4
- package/src/api/dynamic.tsx +86 -4
- package/src/api/server.ts +24 -6
- package/src/cli/adapters/vercel-warm.ts +327 -62
- package/src/cli/adapters/vercel.ts +164 -1054
- package/src/cli/analyze.ts +3 -2
- package/src/cli/build/cache.ts +6 -6
- package/src/cli/build.ts +78 -45
- package/src/cli/index.ts +21 -3
- package/src/cli/serve/immutable.ts +31 -0
- package/src/cli/serve/pipeline.ts +97 -93
- package/src/cli/serve/standalone-worker.ts +8 -0
- package/src/cli/serve/standalone.ts +703 -0
- package/src/cli/start.ts +31 -8
- package/src/client/build.ts +1 -1
- package/src/client/chunk-fold.ts +19 -6
- package/src/client/react-tier.ts +3 -2
- package/src/client/reference-stub.ts +23 -36
- package/src/compat/actions/client-plugin.ts +4 -2
- package/src/compat/actions/config.ts +6 -5
- package/src/compat/actions/extensions.ts +5 -5
- package/src/compat/aliases.ts +8 -1
- package/src/compat/bundler/config.ts +88 -0
- package/src/compat/bundler/optimize-package-imports.ts +86 -26
- package/src/compat/bundler/relay-transform.ts +15 -3
- package/src/compat/bundler/require-context.ts +2 -1
- package/src/compat/bundler/webpack-loaders.ts +3 -2
- package/src/compat/bundler/worker.ts +2 -2
- package/src/compat/cache-control.ts +16 -8
- package/src/compat/css/inline-css.ts +1 -1
- package/src/compat/css/modules.ts +18 -5
- package/src/compat/export/build-complete.ts +1 -1
- package/src/compat/export/emit.ts +4 -4
- package/src/compat/export/standalone.ts +30 -65
- package/src/compat/image-optimizer/optimize.ts +1 -1
- package/src/compat/lifecycle/error-funnel.ts +1 -1
- package/src/compat/lifecycle/instrumentation-client.ts +4 -3
- package/src/compat/lifecycle/instrumentation.ts +117 -24
- package/src/compat/lifecycle/testmode.ts +3 -2
- package/src/compat/metadata-artifacts.ts +1 -1
- package/src/compat/next/config-loader.ts +140 -13
- package/src/compat/next/dynamic.tsx +10 -23
- package/src/compat/next/font/cache.ts +2 -1
- package/src/compat/next/font/runtime.ts +23 -3
- package/src/compat/next/og.ts +3 -3
- package/src/compat/next/usage.ts +3 -2
- package/src/compat/pages/api.ts +83 -14
- package/src/compat/pages/router.ts +30 -14
- package/src/compat/register/bundler.ts +3 -1
- package/src/compat/register/image.ts +1 -1
- package/src/compat/register/middleware.ts +1 -1
- package/src/compat/register/otel.ts +5 -9
- package/src/compat/register/render.ts +3 -1
- package/src/compat/register/use-cache.ts +3 -1
- package/src/compat/release.ts +46 -0
- package/src/compat/segment/serve.ts +1 -1
- package/src/compat/typecheck/check.ts +6 -4
- package/src/compat/validation/validate.ts +10 -7
- package/src/config.ts +76 -9
- package/src/css/assets.ts +213 -0
- package/src/css/build.ts +190 -247
- package/src/dev/client-chunk-store.ts +2 -1
- package/src/dev/restart/client-key.ts +2 -1
- package/src/dev/restart/global-css.ts +2 -1
- package/src/dev/restart/route-bundle-key.ts +2 -1
- package/src/dev/restart/route-facts.ts +2 -1
- package/src/dev/server.ts +34 -14
- package/src/extensions.ts +4 -0
- package/src/out-paths.ts +10 -0
- package/src/render/hooks.ts +13 -0
- package/src/render/renderer.ts +53 -33
- package/src/request/context.ts +9 -0
- package/src/resolve/dynamic.ts +7 -1
- package/src/resolve/engine.ts +2 -12
- package/src/resolve/imports.ts +12 -52
- package/src/resolve/package-json.ts +56 -0
- package/src/resolve/scan-facts.ts +250 -1
- package/src/routing/href.ts +10 -3
- package/src/routing/match.ts +287 -0
- package/src/routing/metadata-files.ts +20 -6
- package/src/routing/proxy-config.ts +137 -0
- package/src/routing/proxy.ts +35 -134
- package/src/routing/routes.ts +22 -281
- package/src/runtime/fingerprint.ts +23 -8
- package/src/runtime/load.ts +170 -0
- package/src/runtime/loader.ts +218 -44
- package/src/runtime/module-cache.ts +15 -1
- package/src/runtime/modules.ts +405 -82
- package/src/runtime/prebundle.ts +101 -0
- package/src/runtime/production.ts +456 -0
- package/src/runtime/release-graph.ts +342 -0
- package/src/runtime/vendor-build.ts +750 -17
- package/src/runtime/vendor.ts +16 -3
- package/src/types.ts +4 -3
- package/src/utils/directive.ts +40 -0
- package/src/utils/fs.ts +95 -4
- package/src/utils/resource-query.ts +12 -0
- package/src/cli/serve/entry.ts +0 -45
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/utils/resource-query.ts
|
|
3
|
+
function splitResourceQuery(specifier) {
|
|
4
|
+
const offset = specifier.startsWith("#") ? 1 : 0;
|
|
5
|
+
const match = /[?#]/.exec(specifier.slice(offset));
|
|
6
|
+
if (!match)
|
|
7
|
+
return { path: specifier, query: "" };
|
|
8
|
+
const index = offset + match.index;
|
|
9
|
+
return { path: specifier.slice(0, index), query: specifier.slice(index) };
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { splitResourceQuery };
|
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import { join as __pnextJoin } from "node:path";
|
|
3
|
+
const __PNEXT_PACKAGE_ROOT__ = __pnextJoin(import.meta.dirname, "../../..");
|
|
4
|
+
import {
|
|
5
|
+
isReleaseCompile
|
|
6
|
+
} from "./index-0yjv5v47.js";
|
|
7
|
+
import {
|
|
8
|
+
actionId,
|
|
9
|
+
moduleActionExports,
|
|
10
|
+
moduleLevelUseCache,
|
|
11
|
+
moduleLevelUseServer
|
|
12
|
+
} from "./index-6q7zvrap.js";
|
|
13
|
+
import {
|
|
14
|
+
readText,
|
|
15
|
+
toPosixPath
|
|
16
|
+
} from "./index-4da76t62.js";
|
|
17
|
+
import {
|
|
18
|
+
frameworkRuntimeAliasEntries,
|
|
19
|
+
pnextAliases
|
|
20
|
+
} from "./index-71885zaq.js";
|
|
21
|
+
import {
|
|
22
|
+
escapeRegex,
|
|
23
|
+
isIdentifier,
|
|
24
|
+
uniqueIdentifier
|
|
25
|
+
} from "./index-qjj6gddn.js";
|
|
26
|
+
import {
|
|
27
|
+
__require
|
|
28
|
+
} from "./index-rt9qq1va.js";
|
|
29
|
+
|
|
30
|
+
// src/compat/aliases.ts
|
|
31
|
+
import path2 from "path";
|
|
32
|
+
import { createRequire } from "module";
|
|
33
|
+
|
|
34
|
+
// src/compat/actions/client-plugin.ts
|
|
35
|
+
import path from "path";
|
|
36
|
+
import { realpathSync } from "fs";
|
|
37
|
+
|
|
38
|
+
// src/compat/actions/client-stub.ts
|
|
39
|
+
function clientStubSource(module) {
|
|
40
|
+
const lines = [];
|
|
41
|
+
lines.push(`// Generated pnext server-action client stub.`);
|
|
42
|
+
lines.push(`// Module: ${sanitizeComment(module.modulePath)}`);
|
|
43
|
+
lines.push(RUNTIME);
|
|
44
|
+
for (const name of module.exports) {
|
|
45
|
+
const id = module.actionIds[name];
|
|
46
|
+
if (!id)
|
|
47
|
+
continue;
|
|
48
|
+
const decl = name === "default" ? "export default" : `export const ${name} =`;
|
|
49
|
+
lines.push(`${decl} __pnextAction(${JSON.stringify(id)});`);
|
|
50
|
+
}
|
|
51
|
+
return lines.join(`
|
|
52
|
+
`) + `
|
|
53
|
+
`;
|
|
54
|
+
}
|
|
55
|
+
var RUNTIME = `
|
|
56
|
+
function __pnextAction(id) {
|
|
57
|
+
const action = async function (...args) {
|
|
58
|
+
const runtime = (process.browser || typeof window !== 'undefined') ? window.__PNEXT_ACTIONS__ : undefined;
|
|
59
|
+
if (runtime) {
|
|
60
|
+
return runtime.call(id, args);
|
|
61
|
+
}
|
|
62
|
+
// Called on the SERVER: a client-imported 'use server' function invoked during a server
|
|
63
|
+
// render/action (a bound action a client page's useActionState registered, dispatched in the no-JS
|
|
64
|
+
// progressive path). Route it through the endpoint's server-side dispatcher, which resolves the id
|
|
65
|
+
// to the real compiled action and runs it in the active request scope, instead of throwing as if
|
|
66
|
+
// the browser runtime were missing.
|
|
67
|
+
const server =
|
|
68
|
+
typeof globalThis !== 'undefined' ? globalThis.__PNEXT_SERVER_ACTIONS__ : undefined;
|
|
69
|
+
if (server) {
|
|
70
|
+
return server.call(id, args);
|
|
71
|
+
}
|
|
72
|
+
throw new Error('pnext action runtime is not installed (is Next compat enabled?)');
|
|
73
|
+
};
|
|
74
|
+
action.$$pnextActionId = id;
|
|
75
|
+
return action;
|
|
76
|
+
}
|
|
77
|
+
`;
|
|
78
|
+
function sanitizeComment(value) {
|
|
79
|
+
return value.replace(/\*\//g, "*\\/").replace(/[\r\n]/g, " ");
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// src/compat/actions/client-plugin.ts
|
|
83
|
+
var clientActionState;
|
|
84
|
+
function setClientActionModules(root, files) {
|
|
85
|
+
const originals = new Set;
|
|
86
|
+
const canonicalFiles = new Set;
|
|
87
|
+
for (const file of files) {
|
|
88
|
+
originals.add(path.resolve(file));
|
|
89
|
+
canonicalFiles.add(canonical(file));
|
|
90
|
+
}
|
|
91
|
+
clientActionState = originals.size > 0 ? { root, files: originals, canonicalFiles } : undefined;
|
|
92
|
+
}
|
|
93
|
+
function canonical(file) {
|
|
94
|
+
const abs = path.resolve(file);
|
|
95
|
+
try {
|
|
96
|
+
return realpathSync.native(abs);
|
|
97
|
+
} catch {
|
|
98
|
+
return abs;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function clearClientActionModules() {
|
|
102
|
+
clientActionState = undefined;
|
|
103
|
+
}
|
|
104
|
+
function hasClientActionModules() {
|
|
105
|
+
return clientActionState !== undefined && clientActionState.files.size > 0;
|
|
106
|
+
}
|
|
107
|
+
function isActionModule(file) {
|
|
108
|
+
if (!clientActionState)
|
|
109
|
+
return false;
|
|
110
|
+
return clientActionState.files.has(path.resolve(file)) || clientActionState.canonicalFiles.has(canonical(file));
|
|
111
|
+
}
|
|
112
|
+
function isClientActionModule(file) {
|
|
113
|
+
return isActionModule(file);
|
|
114
|
+
}
|
|
115
|
+
function clientActionModulesRoot() {
|
|
116
|
+
return clientActionState?.root;
|
|
117
|
+
}
|
|
118
|
+
function clientActionModuleFiles() {
|
|
119
|
+
return clientActionState ? [...clientActionState.files] : [];
|
|
120
|
+
}
|
|
121
|
+
function actionStubSourceFor(file, root) {
|
|
122
|
+
return stubSourceFor(file, root ?? clientActionState?.root);
|
|
123
|
+
}
|
|
124
|
+
function actionClientStubPlugin() {
|
|
125
|
+
const paths = clientActionState ? [...clientActionState.files, ...clientActionState.canonicalFiles] : [];
|
|
126
|
+
const filter = new RegExp(`^(?:${[...new Set(paths)].map(escapeRegex).join("|")})$`);
|
|
127
|
+
return {
|
|
128
|
+
name: "pnext-action-client-stub",
|
|
129
|
+
setup(build) {
|
|
130
|
+
if (paths.length === 0)
|
|
131
|
+
return;
|
|
132
|
+
build.onLoad({ filter, namespace: "file" }, async (args) => {
|
|
133
|
+
if (!isActionModule(args.path))
|
|
134
|
+
return;
|
|
135
|
+
return {
|
|
136
|
+
contents: await stubSourceFor(args.path, clientActionState?.root),
|
|
137
|
+
loader: "js"
|
|
138
|
+
};
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
async function stubSourceFor(file, root) {
|
|
144
|
+
const source = await readText(file);
|
|
145
|
+
return stubSourceFromSource(file, source, root);
|
|
146
|
+
}
|
|
147
|
+
function stubSourceFromSource(file, source, root) {
|
|
148
|
+
if (!moduleLevelUseServer(source) && !moduleLevelUseCache(source))
|
|
149
|
+
return "export {};";
|
|
150
|
+
const exports = moduleActionExports(source);
|
|
151
|
+
const actionIds = {};
|
|
152
|
+
for (const name of exports)
|
|
153
|
+
actionIds[name] = canonicalActionId(file, name, root);
|
|
154
|
+
const modulePath = root ? toPosixPath(path.relative(root, file)) : file;
|
|
155
|
+
return clientStubSource({ modulePath, exports, actionIds });
|
|
156
|
+
}
|
|
157
|
+
async function loadClientActionSource(file, root) {
|
|
158
|
+
const source = await readText(file);
|
|
159
|
+
if (!moduleLevelUseServer(source) && !moduleLevelUseCache(source))
|
|
160
|
+
return { source };
|
|
161
|
+
return { source, stubSource: stubSourceFromSource(file, source, root) };
|
|
162
|
+
}
|
|
163
|
+
function canonicalActionId(file, exportName, root) {
|
|
164
|
+
return actionId(canonical(file), exportName, root ? canonical(root) : undefined);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// src/compat/ppr/root-params-transform.ts
|
|
168
|
+
var ROOT_PARAMS_SPECIFIER = /['"]next\/root-params['"]/;
|
|
169
|
+
var IMPORT_RE = /^[ \t]*import\s+\{([^}]*)\}\s+from\s+['"]next\/root-params['"]\s*;?[ \t]*(?:\r?\n)?/gm;
|
|
170
|
+
function parseBindings(clause) {
|
|
171
|
+
return clause.split(",").map((part) => part.trim()).filter(Boolean).flatMap((part) => {
|
|
172
|
+
if (part.startsWith("type "))
|
|
173
|
+
return [];
|
|
174
|
+
const [importedRaw, localRaw] = part.split(/\s+as\s+/);
|
|
175
|
+
const imported = importedRaw?.trim();
|
|
176
|
+
const local = (localRaw ?? importedRaw)?.trim();
|
|
177
|
+
if (!imported || !local || !isIdentifier(imported) || !isIdentifier(local))
|
|
178
|
+
return [];
|
|
179
|
+
return [{ imported, local }];
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
function rewriteRootParamsSource(source) {
|
|
183
|
+
if (!ROOT_PARAMS_SPECIFIER.test(source))
|
|
184
|
+
return source;
|
|
185
|
+
const proxyName = uniqueIdentifier(source, "__pnextRootParams");
|
|
186
|
+
const declarations = [];
|
|
187
|
+
let importedProxy = false;
|
|
188
|
+
const rewritten = source.replace(IMPORT_RE, (_statement, clause) => {
|
|
189
|
+
const bindings = parseBindings(clause);
|
|
190
|
+
if (bindings.length === 0)
|
|
191
|
+
return "";
|
|
192
|
+
importedProxy = true;
|
|
193
|
+
for (const { imported, local } of bindings) {
|
|
194
|
+
declarations.push(`const ${local} = ${proxyName}[${JSON.stringify(imported)}];`);
|
|
195
|
+
}
|
|
196
|
+
return "";
|
|
197
|
+
});
|
|
198
|
+
if (!importedProxy)
|
|
199
|
+
return source;
|
|
200
|
+
return [
|
|
201
|
+
`import ${proxyName} from ${JSON.stringify("next/root-params")};`,
|
|
202
|
+
...declarations,
|
|
203
|
+
rewritten
|
|
204
|
+
].join(`
|
|
205
|
+
`);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// src/compat/aliases.ts
|
|
209
|
+
function reactCompatEnabled(config) {
|
|
210
|
+
return Boolean(config.compat?.next || config.compat?.react || reactCompilerOptions(config));
|
|
211
|
+
}
|
|
212
|
+
function reactCompilerOptions(config) {
|
|
213
|
+
if (!config.compat?.reactCompiler)
|
|
214
|
+
return;
|
|
215
|
+
return { target: "18" };
|
|
216
|
+
}
|
|
217
|
+
function nextCompatEnabled(config) {
|
|
218
|
+
return Boolean(config.compat?.next);
|
|
219
|
+
}
|
|
220
|
+
var SHIMMED_NEXT_DIST_PATHS = [
|
|
221
|
+
"next/dist/client/components/app-router-headers",
|
|
222
|
+
"next/dist/server/web/spec-extension/unstable-cache",
|
|
223
|
+
"next/dist/server/web/spec-extension/unstable-no-store",
|
|
224
|
+
"next/dist/server/web/spec-extension/revalidate",
|
|
225
|
+
"next/dist/server/app-render/work-unit-async-storage.external"
|
|
226
|
+
];
|
|
227
|
+
function missingCompatImportError(config, specifier) {
|
|
228
|
+
if (/^next(\/|$)/.test(specifier)) {
|
|
229
|
+
if (!nextCompatEnabled(config)) {
|
|
230
|
+
return `'${specifier}' requires Next compatibility. Enable compat.next in pnext.config.ts.`;
|
|
231
|
+
}
|
|
232
|
+
if (specifier.startsWith("next/dist/")) {
|
|
233
|
+
const bare = specifier.replace(/\.js$/, "");
|
|
234
|
+
if (!SHIMMED_NEXT_DIST_PATHS.includes(bare)) {
|
|
235
|
+
return `'${specifier}' is not a supported import: next/dist internals are not part of the ` + `public surface pnext shims. Only these next/dist/* paths are shimmed:
|
|
236
|
+
` + SHIMMED_NEXT_DIST_PATHS.map((path3) => ` - ${path3}`).join(`
|
|
237
|
+
`) + `
|
|
238
|
+
See https://pnext.dev/docs/compat ("Smaller surfaces") and report the library that needs a new shim.`;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
if (/^react(-dom)?(\/|$)/.test(specifier) && !reactCompatEnabled(config)) {
|
|
244
|
+
return `'${specifier}' requires React compatibility. Enable compat.react (or compat.next) in pnext.config.ts.`;
|
|
245
|
+
}
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
function compatAliases(config, target) {
|
|
249
|
+
return {
|
|
250
|
+
...frameworkRuntimeAliasEntries(),
|
|
251
|
+
...pnextAliases(target),
|
|
252
|
+
...reactCompatAliases(config, target),
|
|
253
|
+
...nextCompatAliases(config, target)
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
function reactServerLayerAliases(config) {
|
|
257
|
+
if (!reactCompatEnabled(config))
|
|
258
|
+
return {};
|
|
259
|
+
const reactRoot = path2.resolve(__PNEXT_PACKAGE_ROOT__ + "/src/compat", "react");
|
|
260
|
+
return {
|
|
261
|
+
react: path2.join(reactRoot, "react-server.ts"),
|
|
262
|
+
"react-dom": path2.join(reactRoot, "dom-react-server.ts")
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
function reactCompatAliases(config, target) {
|
|
266
|
+
if (!reactCompatEnabled(config))
|
|
267
|
+
return {};
|
|
268
|
+
const reactRoot = path2.resolve(__PNEXT_PACKAGE_ROOT__ + "/src/compat", "react");
|
|
269
|
+
const runtime = frameworkRuntimeAliasEntries();
|
|
270
|
+
return {
|
|
271
|
+
react: path2.join(reactRoot, target === "client" ? "client.ts" : "server.ts"),
|
|
272
|
+
"react-dom": path2.join(reactRoot, "dom.ts"),
|
|
273
|
+
"react-dom/client": runtime["preact/compat/client"],
|
|
274
|
+
"react-dom/server": path2.join(reactRoot, "dom-server.ts"),
|
|
275
|
+
"react-dom/server.edge": path2.join(reactRoot, "dom-server.ts"),
|
|
276
|
+
"react-dom/server.browser": path2.join(reactRoot, "dom-server.ts"),
|
|
277
|
+
"react/jsx-runtime": runtime["preact/jsx-runtime"],
|
|
278
|
+
"react/jsx-dev-runtime": runtime["preact/jsx-dev-runtime"],
|
|
279
|
+
"react/compiler-runtime": path2.join(reactRoot, "compiler-runtime.ts"),
|
|
280
|
+
"react-compiler-runtime": path2.join(reactRoot, "compiler-runtime.ts")
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
function nextCompatAliases(config, target) {
|
|
284
|
+
if (!nextCompatEnabled(config))
|
|
285
|
+
return {};
|
|
286
|
+
return nextCompatAliasEntries(target);
|
|
287
|
+
}
|
|
288
|
+
function nextCompatAliasEntries(target) {
|
|
289
|
+
const nextRoot = path2.resolve(__PNEXT_PACKAGE_ROOT__ + "/src/compat", "next");
|
|
290
|
+
return withJsExtensionAliases({
|
|
291
|
+
next: path2.join(nextRoot, "index.ts"),
|
|
292
|
+
"next/cache": path2.join(nextRoot, target === "client" ? "client-cache.ts" : "cache.ts"),
|
|
293
|
+
"next/config": path2.join(nextRoot, "config.ts"),
|
|
294
|
+
"next/constants": path2.join(nextRoot, "constants.cjs"),
|
|
295
|
+
"next/dynamic": path2.join(nextRoot, "dynamic.tsx"),
|
|
296
|
+
"next/error": path2.join(nextRoot, "error.tsx"),
|
|
297
|
+
"next/font": path2.join(nextRoot, "font", "index.ts"),
|
|
298
|
+
"next/font/google": path2.join(nextRoot, "font", "google.ts"),
|
|
299
|
+
"next/font/local": path2.join(nextRoot, "font", "local.ts"),
|
|
300
|
+
"next/form": path2.join(nextRoot, "form.tsx"),
|
|
301
|
+
"next/head": path2.join(nextRoot, "head.tsx"),
|
|
302
|
+
"next/headers": path2.join(nextRoot, "headers.ts"),
|
|
303
|
+
"next/image": path2.join(nextRoot, "image.tsx"),
|
|
304
|
+
"next/legacy/image": path2.join(nextRoot, "legacy-image.tsx"),
|
|
305
|
+
"next/link": path2.join(nextRoot, "link.tsx"),
|
|
306
|
+
"next/navigation": path2.join(nextRoot, target === "client" ? "client-navigation.ts" : "navigation.ts"),
|
|
307
|
+
"next/offline": path2.join(nextRoot, "offline.ts"),
|
|
308
|
+
"next/og": path2.join(nextRoot, "og.ts"),
|
|
309
|
+
"@vercel/og": path2.join(nextRoot, "og.ts"),
|
|
310
|
+
"next/root-params": path2.join(nextRoot, "root-params.ts"),
|
|
311
|
+
"next/router": path2.join(nextRoot, "router.ts"),
|
|
312
|
+
"next/script": path2.join(nextRoot, target === "client" ? "client-script.tsx" : "script.tsx"),
|
|
313
|
+
"next/web-vitals": path2.join(nextRoot, "web-vitals.ts"),
|
|
314
|
+
"next/server": path2.join(nextRoot, target === "client" ? "client-server.ts" : "server.ts"),
|
|
315
|
+
...target === "server" ? { "server-only": path2.join(nextRoot, "server-only.ts") } : {},
|
|
316
|
+
"client-only": path2.join(nextRoot, "client-only.ts"),
|
|
317
|
+
"styled-jsx": path2.join(nextRoot, "..", "css", "styled-jsx-runtime.ts"),
|
|
318
|
+
"next/dist/client/components/app-router-headers": path2.join(nextRoot, "dist", "client", "components", "app-router-headers.ts"),
|
|
319
|
+
"next/dist/server/web/spec-extension/unstable-cache": path2.join(nextRoot, "dist", "server", "web", "spec-extension", "unstable-cache.ts"),
|
|
320
|
+
"next/dist/server/web/spec-extension/unstable-no-store": path2.join(nextRoot, "dist", "server", "web", "spec-extension", "unstable-no-store.ts"),
|
|
321
|
+
"next/dist/server/web/spec-extension/revalidate": path2.join(nextRoot, "dist", "server", "web", "spec-extension", "revalidate.ts"),
|
|
322
|
+
...target === "server" ? {
|
|
323
|
+
"next/dist/server/app-render/work-unit-async-storage.external": path2.join(nextRoot, "dist", "server", "app-render", "work-unit-async-storage.external.cjs")
|
|
324
|
+
} : {}
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
function withJsExtensionAliases(aliases) {
|
|
328
|
+
const entries = { ...aliases };
|
|
329
|
+
for (const [specifier, target] of Object.entries(aliases)) {
|
|
330
|
+
if (specifier !== "next")
|
|
331
|
+
entries[`${specifier}.js`] = target;
|
|
332
|
+
}
|
|
333
|
+
return entries;
|
|
334
|
+
}
|
|
335
|
+
function compatAliasPlugin(config) {
|
|
336
|
+
const aliases = compatAliases(config, "client");
|
|
337
|
+
const specifiers = Object.keys(aliases);
|
|
338
|
+
return {
|
|
339
|
+
name: "pnext-compat-alias",
|
|
340
|
+
setup(build) {
|
|
341
|
+
if (nextCompatEnabled(config) && hasClientActionModules()) {
|
|
342
|
+
actionClientStubPlugin().setup(build);
|
|
343
|
+
}
|
|
344
|
+
build.onResolve({ filter: /^(?:react(?:-dom)?|next)(?:\/|$)/ }, (args) => {
|
|
345
|
+
if (aliases[args.path])
|
|
346
|
+
return;
|
|
347
|
+
const message = missingCompatImportError(config, args.path);
|
|
348
|
+
return message ? { errors: [{ text: message }] } : undefined;
|
|
349
|
+
});
|
|
350
|
+
if (specifiers.length === 0)
|
|
351
|
+
return;
|
|
352
|
+
build.onResolve({ filter: new RegExp(`^(${specifiers.map(escapeRegex).join("|")})$`) }, async (args) => {
|
|
353
|
+
const target = aliases[args.path];
|
|
354
|
+
if (!target)
|
|
355
|
+
return;
|
|
356
|
+
if (path2.isAbsolute(target))
|
|
357
|
+
return { path: target };
|
|
358
|
+
return build.resolve(target, {
|
|
359
|
+
kind: args.kind,
|
|
360
|
+
importer: args.importer,
|
|
361
|
+
namespace: args.namespace,
|
|
362
|
+
resolveDir: args.resolveDir
|
|
363
|
+
});
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
var compatSuspense;
|
|
369
|
+
async function ensureCompatSuspense(config) {
|
|
370
|
+
if (compatSuspense !== undefined || !reactCompatEnabled(config))
|
|
371
|
+
return;
|
|
372
|
+
compatSuspense = (await import("preact/compat")).Suspense;
|
|
373
|
+
}
|
|
374
|
+
function compatSuspenseType() {
|
|
375
|
+
return compatSuspense;
|
|
376
|
+
}
|
|
377
|
+
var fontRuntimePaths = {
|
|
378
|
+
server: path2.join(__PNEXT_PACKAGE_ROOT__ + "/src/compat", "next", "font", "runtime.ts"),
|
|
379
|
+
client: path2.join(__PNEXT_PACKAGE_ROOT__ + "/src/compat", "next", "font", "runtime-client.ts")
|
|
380
|
+
};
|
|
381
|
+
function rewriteNextFontSource(source, file, target = "server", root) {
|
|
382
|
+
if (!source.includes("next/font") && !source.includes("next/root-params"))
|
|
383
|
+
return source;
|
|
384
|
+
source = rewriteRootParamsSource(source);
|
|
385
|
+
const runtimePath = fontRuntimePaths[target];
|
|
386
|
+
let next = rewriteNextGoogleFontImports(source, runtimePath);
|
|
387
|
+
const localFontNames = nextLocalFontImportNames(next);
|
|
388
|
+
if (localFontNames.size === 0)
|
|
389
|
+
return next;
|
|
390
|
+
const absoluteCaller = localFontCallerFile(file, root);
|
|
391
|
+
const callerFile = isReleaseCompile() && root && path2.isAbsolute(absoluteCaller) ? toPosixPath(path2.relative(root, absoluteCaller)) : absoluteCaller;
|
|
392
|
+
for (const name of localFontNames) {
|
|
393
|
+
next = next.replace(new RegExp(`(?<![.$\\w])${escapeRegex(name)}\\s*\\(`, "g"), `${name}.withFile(${JSON.stringify(callerFile)})(`);
|
|
394
|
+
}
|
|
395
|
+
for (const name of localFontNames) {
|
|
396
|
+
next = next.replace(new RegExp(`((?:export\\s+)?(?:const|let|var)\\s+)([A-Za-z_$][\\w$]*)(\\s*=\\s*)${escapeRegex(name)}\\.withFile\\(([^)]*)\\)\\(`, "g"), (_statement, declaration, binding, equals, caller) => `${declaration}${binding}${equals}${name}.withFile(${caller}, ${JSON.stringify(binding)})(`);
|
|
397
|
+
}
|
|
398
|
+
next = next.replace(/^[ \t]*import\s+([A-Za-z_$][\w$]*)\s+from\s+(['"])([^'"]+)\2\s*;?[ \t]*$/gm, (statement, name, _quote, specifier) => {
|
|
399
|
+
if (!isNextLocalFontSpecifier(specifier))
|
|
400
|
+
return statement;
|
|
401
|
+
return `import { localFont as ${name} } from ${JSON.stringify(runtimePath)};`;
|
|
402
|
+
});
|
|
403
|
+
return next;
|
|
404
|
+
}
|
|
405
|
+
function rewriteNextGoogleFontImports(source, runtimePath) {
|
|
406
|
+
const statements = [];
|
|
407
|
+
const helperName = uniqueIdentifier(source, "__pnextGoogleFont");
|
|
408
|
+
const namespaceHelperName = uniqueIdentifier(source, "__pnextGoogleFonts", helperName);
|
|
409
|
+
const rewritten = source.replace(/^[ \t]*import\s+(?!type\b)((?:[^\n;]|\n(?![ \t]*(?:import|export)\b))*?)\s+from\s+['"]next\/font\/google['"]\s*;?[ \t]*(?:\r?\n)?/gm, (_statement, clause) => {
|
|
410
|
+
const bindings = nextGoogleFontBindings(clause);
|
|
411
|
+
if (bindings.length === 0)
|
|
412
|
+
return "";
|
|
413
|
+
statements.push(...bindings.map((binding) => googleFontBindingSource(binding, helperName, namespaceHelperName)));
|
|
414
|
+
return "";
|
|
415
|
+
});
|
|
416
|
+
if (statements.length === 0)
|
|
417
|
+
return source;
|
|
418
|
+
return [
|
|
419
|
+
`import { googleFont as ${helperName} } from ${JSON.stringify(runtimePath)};`,
|
|
420
|
+
`const ${namespaceHelperName} = new Proxy({}, { get: (_target, key) => typeof key === 'string' ? ${helperName}(key.replace(/_/g, ' ')) : undefined });`,
|
|
421
|
+
...statements,
|
|
422
|
+
rewritten
|
|
423
|
+
].join(`
|
|
424
|
+
`);
|
|
425
|
+
}
|
|
426
|
+
function nextGoogleFontBindings(clause) {
|
|
427
|
+
const trimmed = clause.trim();
|
|
428
|
+
const namespace = /^\*\s+as\s+([A-Za-z_$][\w$]*)$/.exec(trimmed)?.[1];
|
|
429
|
+
if (namespace)
|
|
430
|
+
return [{ imported: namespace, local: namespace, namespace: true }];
|
|
431
|
+
const named = /\{([\s\S]*)\}/.exec(trimmed)?.[1];
|
|
432
|
+
if (!named)
|
|
433
|
+
return [];
|
|
434
|
+
return named.split(",").map((part) => part.trim()).filter(Boolean).flatMap((part) => {
|
|
435
|
+
if (part.startsWith("type "))
|
|
436
|
+
return [];
|
|
437
|
+
const [importedRaw, localRaw] = part.split(/\s+as\s+/);
|
|
438
|
+
const imported = importedRaw?.trim();
|
|
439
|
+
const local = (localRaw ?? importedRaw)?.trim();
|
|
440
|
+
if (!imported || !local || !isIdentifier(imported) || !isIdentifier(local))
|
|
441
|
+
return [];
|
|
442
|
+
return [{ imported, local }];
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
function googleFontBindingSource(binding, helperName, namespaceHelperName) {
|
|
446
|
+
if (binding.namespace)
|
|
447
|
+
return `const ${binding.local} = ${namespaceHelperName};`;
|
|
448
|
+
return `const ${binding.local} = ${helperName}(${JSON.stringify(googleFontFamily(binding.imported))});`;
|
|
449
|
+
}
|
|
450
|
+
function googleFontFamily(exportName) {
|
|
451
|
+
return exportName.replace(/_/g, " ");
|
|
452
|
+
}
|
|
453
|
+
function nextLocalFontImportNames(source) {
|
|
454
|
+
const names = new Set;
|
|
455
|
+
const pattern = /\bimport\s+([A-Za-z_$][\w$]*)\s+from\s+(['"])([^'"]+)\2/g;
|
|
456
|
+
let match;
|
|
457
|
+
while (match = pattern.exec(source)) {
|
|
458
|
+
if (match[1] && match[3] && isNextLocalFontSpecifier(match[3]))
|
|
459
|
+
names.add(match[1]);
|
|
460
|
+
}
|
|
461
|
+
return names;
|
|
462
|
+
}
|
|
463
|
+
function isNextLocalFontSpecifier(specifier) {
|
|
464
|
+
if (specifier === "next/font/local" || specifier === "next/font/local.js")
|
|
465
|
+
return true;
|
|
466
|
+
const normalized = specifier.replace(/^file:\/\//, "").replace(/\\/g, "/");
|
|
467
|
+
return /\/compat\/next\/font\/local\.[jt]s$/.test(normalized);
|
|
468
|
+
}
|
|
469
|
+
function localFontCallerFile(file, root) {
|
|
470
|
+
if (path2.isAbsolute(file))
|
|
471
|
+
return file;
|
|
472
|
+
if (file.startsWith("."))
|
|
473
|
+
return path2.resolve(root ?? process.cwd(), file);
|
|
474
|
+
if (!root)
|
|
475
|
+
return file;
|
|
476
|
+
try {
|
|
477
|
+
return createRequire(path2.join(root, "pnext-resolve.cjs")).resolve(file);
|
|
478
|
+
} catch {
|
|
479
|
+
return file;
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
export { setClientActionModules, canonical, clearClientActionModules, isClientActionModule, clientActionModulesRoot, clientActionModuleFiles, actionStubSourceFor, actionClientStubPlugin, loadClientActionSource, canonicalActionId, reactCompatEnabled, reactCompilerOptions, nextCompatEnabled, SHIMMED_NEXT_DIST_PATHS, missingCompatImportError, compatAliases, reactServerLayerAliases, reactCompatAliases, nextCompatAliases, nextCompatAliasEntries, compatAliasPlugin, ensureCompatSuspense, compatSuspenseType, rewriteNextFontSource };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/compat/react/style-values.ts
|
|
3
|
+
import { options } from "preact";
|
|
4
|
+
var UNITLESS = " animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex" + " boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative" + " flexOrder fontWeight gridArea gridColumn gridColumnEnd gridColumnSpan gridColumnStart gridRow" + " gridRowEnd gridRowSpan gridRowStart lineClamp lineHeight opacity order orphans scale tabSize widows" + " zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit" + " strokeOpacity strokeWidth ";
|
|
5
|
+
var VENDOR_PREFIX = /^(?:Webkit|Moz|ms|O)(?=[A-Z])/;
|
|
6
|
+
function unitless(name) {
|
|
7
|
+
if (UNITLESS.includes(` ${name} `))
|
|
8
|
+
return true;
|
|
9
|
+
const base = name.replace(VENDOR_PREFIX, "");
|
|
10
|
+
return base !== name && UNITLESS.includes(` ${base[0].toLowerCase()}${base.slice(1)} `);
|
|
11
|
+
}
|
|
12
|
+
function reactStyleValue(name, value) {
|
|
13
|
+
if (typeof value === "boolean")
|
|
14
|
+
return "";
|
|
15
|
+
if (typeof value !== "number")
|
|
16
|
+
return;
|
|
17
|
+
if (value !== 0 && !name.startsWith("--") && !unitless(name))
|
|
18
|
+
return;
|
|
19
|
+
return String(value);
|
|
20
|
+
}
|
|
21
|
+
function applyReactStyleValues(vnode) {
|
|
22
|
+
if (typeof vnode.type !== "string")
|
|
23
|
+
return;
|
|
24
|
+
const props = vnode.props;
|
|
25
|
+
const style = props?.style;
|
|
26
|
+
if (!style || typeof style !== "object" || Array.isArray(style))
|
|
27
|
+
return;
|
|
28
|
+
let normalized;
|
|
29
|
+
for (const name in style) {
|
|
30
|
+
const resolved = reactStyleValue(name, style[name]);
|
|
31
|
+
if (resolved === undefined)
|
|
32
|
+
continue;
|
|
33
|
+
normalized ??= { ...style };
|
|
34
|
+
normalized[name] = resolved;
|
|
35
|
+
}
|
|
36
|
+
if (normalized)
|
|
37
|
+
props.style = normalized;
|
|
38
|
+
}
|
|
39
|
+
var installed = Symbol.for("pnext.react-style-values-installed");
|
|
40
|
+
var styleOptions = options;
|
|
41
|
+
if (!styleOptions[installed]) {
|
|
42
|
+
const previousVNode = options.vnode?.bind(options);
|
|
43
|
+
options.vnode = (vnode) => {
|
|
44
|
+
previousVNode?.(vnode);
|
|
45
|
+
applyReactStyleValues(vnode);
|
|
46
|
+
};
|
|
47
|
+
styleOptions[installed] = true;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { reactStyleValue, applyReactStyleValues };
|