vinext 1.1.0 → 1.2.1
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 +22 -10
- package/dist/build/client-build-config.d.ts +10 -0
- package/dist/build/client-build-config.js +18 -2
- package/dist/build/output-root-externals.d.ts +21 -0
- package/dist/build/output-root-externals.js +40 -0
- package/dist/build/pages-client-assets-module.d.ts +8 -0
- package/dist/build/pages-client-assets-module.js +21 -1
- package/dist/build/prerender-paths.js +6 -4
- package/dist/build/prerender.js +1 -1
- package/dist/build/run-prerender.js +1 -1
- package/dist/build/ssr-manifest.d.ts +2 -0
- package/dist/build/ssr-manifest.js +6 -2
- package/dist/check.js +12 -12
- package/dist/cli-dev-config.js +3 -3
- package/dist/cli.js +3 -2
- package/dist/client/client-redirect-matcher.d.ts +14 -0
- package/dist/client/client-redirect-matcher.js +37 -0
- package/dist/client/client-redirects.d.ts +27 -0
- package/dist/client/client-redirects.js +28 -0
- package/dist/client/client-rewrites.d.ts +2 -1
- package/dist/client/client-rewrites.js +1 -1
- package/dist/config/config-matchers.d.ts +26 -11
- package/dist/config/config-matchers.js +90 -88
- package/dist/config/destination-params.d.ts +47 -0
- package/dist/config/destination-params.js +116 -0
- package/dist/config/next-config.d.ts +7 -0
- package/dist/config/next-config.js +3 -0
- package/dist/entries/app-rsc-entry.d.ts +4 -0
- package/dist/entries/app-rsc-entry.js +20 -6
- package/dist/entries/pages-client-entry.js +3 -1
- package/dist/entries/pages-server-entry.js +13 -37
- package/dist/index.d.ts +3 -1
- package/dist/index.js +246 -136
- package/dist/init-cloudflare.d.ts +9 -0
- package/dist/init-cloudflare.js +107 -31
- package/dist/init-platform.d.ts +4 -0
- package/dist/init-platform.js +27 -2
- package/dist/init.d.ts +2 -1
- package/dist/init.js +153 -9
- package/dist/plugins/ast-scope.d.ts +7 -0
- package/dist/plugins/ast-scope.js +59 -3
- package/dist/plugins/ast-utils.d.ts +53 -2
- package/dist/plugins/ast-utils.js +90 -2
- package/dist/plugins/cloudflare-dev-module-urls.d.ts +41 -0
- package/dist/plugins/cloudflare-dev-module-urls.js +271 -0
- package/dist/plugins/commonjs-esm-facade.js +2 -2
- package/dist/plugins/css-module-imports.js +13 -20
- package/dist/plugins/dynamic-preload-metadata.d.ts +1 -1
- package/dist/plugins/dynamic-preload-metadata.js +11 -11
- package/dist/plugins/extensionless-dynamic-import.js +2 -3
- package/dist/plugins/fonts.d.ts +1 -1
- package/dist/plugins/fonts.js +3 -3
- package/dist/plugins/ignore-dynamic-requests.d.ts +1 -1
- package/dist/plugins/ignore-dynamic-requests.js +5 -7
- package/dist/plugins/import-meta-url.js +3 -4
- package/dist/plugins/instrumentation-client.js +3 -2
- package/dist/plugins/middleware-export-validation.js +2 -3
- package/dist/plugins/middleware-server-only.d.ts +5 -4
- package/dist/plugins/middleware-server-only.js +8 -5
- package/dist/plugins/og-harfbuzz.js +2 -3
- package/dist/plugins/optimize-imports.js +3 -4
- package/dist/plugins/pages-node-externals.js +3 -4
- package/dist/plugins/remove-console.js +2 -18
- package/dist/plugins/require-condition-resolution.js +3 -3
- package/dist/plugins/require-context.js +2 -3
- package/dist/plugins/rsc-scan-glob-imports.d.ts +19 -0
- package/dist/plugins/rsc-scan-glob-imports.js +50 -0
- package/dist/plugins/strip-server-exports.js +265 -102
- package/dist/plugins/styled-jsx.js +2 -3
- package/dist/plugins/transform-result.d.ts +9 -5
- package/dist/plugins/transitive-externals.js +1 -1
- package/dist/plugins/typeof-window.d.ts +2 -2
- package/dist/plugins/use-cache-callable.d.ts +21 -2
- package/dist/plugins/use-cache-callable.js +84 -35
- package/dist/plugins/worker-image-imports.js +30 -33
- package/dist/plugins/worker-server-only-imports.d.ts +20 -0
- package/dist/plugins/worker-server-only-imports.js +31 -0
- package/dist/plugins/worker-use-server.d.ts +25 -0
- package/dist/plugins/worker-use-server.js +153 -0
- package/dist/server/api-handler.d.ts +1 -0
- package/dist/server/api-handler.js +3 -2
- package/dist/server/app-action-forwarding.js +2 -2
- package/dist/server/app-browser-action-result.d.ts +1 -1
- package/dist/server/app-browser-action-result.js +9 -2
- package/dist/server/app-browser-entry.js +3 -3
- package/dist/server/app-browser-interception-context.js +1 -1
- package/dist/server/app-browser-navigation-controller.js +1 -1
- package/dist/server/app-browser-prefetch-response.js +2 -2
- package/dist/server/app-browser-server-action-client.js +1 -1
- package/dist/server/app-browser-state.js +1 -1
- package/dist/server/app-browser-supplemental-refresh.js +1 -1
- package/dist/server/app-middleware.d.ts +11 -0
- package/dist/server/app-middleware.js +17 -2
- package/dist/server/app-optimistic-routing.js +1 -1
- package/dist/server/app-page-cache.d.ts +1 -1
- package/dist/server/app-page-cache.js +1 -1
- package/dist/server/app-page-dispatch.d.ts +3 -1
- package/dist/server/app-page-dispatch.js +5 -4
- package/dist/server/app-page-ppr-runtime.js +1 -1
- package/dist/server/app-page-render-observation.js +1 -1
- package/dist/server/app-page-render.js +1 -1
- package/dist/server/app-page-request.js +53 -15
- package/dist/server/app-page-route-wiring.js +2 -2
- package/dist/server/app-pages-bridge.d.ts +1 -1
- package/dist/server/app-pages-bridge.js +3 -4
- package/dist/server/app-prerender-endpoints.js +9 -6
- package/dist/server/app-render-abort-error.d.ts +19 -0
- package/dist/server/app-render-abort-error.js +31 -1
- package/dist/server/app-request-stage-dispatch.js +6 -2
- package/dist/server/app-request-stage-independent-entry.js +29 -9
- package/dist/server/app-response-stage-entry.js +11 -3
- package/dist/server/app-route-handler-cache.d.ts +1 -0
- package/dist/server/app-route-handler-cache.js +1 -0
- package/dist/server/app-route-handler-dispatch.d.ts +1 -0
- package/dist/server/app-route-handler-dispatch.js +5 -2
- package/dist/server/app-route-handler-execution.d.ts +1 -0
- package/dist/server/app-route-handler-execution.js +1 -0
- package/dist/server/app-route-handler-runtime.d.ts +4 -1
- package/dist/server/app-route-handler-runtime.js +46 -25
- package/dist/server/app-router-entry.js +29 -10
- package/dist/server/app-rsc-cache-busting.d.ts +16 -0
- package/dist/server/app-rsc-cache-busting.js +30 -13
- package/dist/server/app-rsc-errors.js +20 -16
- package/dist/server/app-rsc-handler.d.ts +7 -0
- package/dist/server/app-rsc-handler.js +89 -39
- package/dist/server/app-rsc-request-normalization.js +3 -3
- package/dist/server/app-rsc-response-stage.js +5 -3
- package/dist/server/app-segment-config.d.ts +2 -1
- package/dist/server/app-server-action-execution.d.ts +2 -1
- package/dist/server/app-server-action-execution.js +62 -23
- package/dist/server/app-ssr-entry.js +7 -5
- package/dist/server/app-visited-response-cache.js +2 -2
- package/dist/server/app-worker-stages.d.ts +5 -0
- package/dist/server/app-worker-stages.js +1 -1
- package/dist/server/cacheability-request.js +2 -2
- package/dist/server/client-build-files.d.ts +16 -0
- package/dist/server/client-build-files.js +36 -0
- package/dist/server/client-reuse-manifest.js +1 -1
- package/dist/server/config-headers.js +1 -1
- package/dist/server/defer-until-stream-consumed.d.ts +2 -1
- package/dist/server/defer-until-stream-consumed.js +3 -1
- package/dist/server/dev-server.js +39 -28
- package/dist/server/dev-stack-sourcemap.js +18 -23
- package/dist/server/document-initial-head.d.ts +0 -11
- package/dist/server/document-initial-head.js +1 -1
- package/dist/server/forwarded-middleware-context.d.ts +5 -0
- package/dist/server/forwarded-middleware-context.js +22 -0
- package/dist/server/headers.d.ts +4 -1
- package/dist/server/headers.js +4 -1
- package/dist/server/http-conditional.d.ts +11 -0
- package/dist/server/http-conditional.js +10 -1
- package/dist/server/http-error-responses.d.ts +1 -1
- package/dist/server/image-optimization.d.ts +38 -0
- package/dist/server/image-optimization.js +94 -4
- package/dist/server/isr-cache.d.ts +10 -0
- package/dist/server/isr-cache.js +41 -6
- package/dist/server/metadata-route-response.js +11 -10
- package/dist/server/middleware-matcher.d.ts +2 -0
- package/dist/server/middleware-matcher.js +23 -2
- package/dist/server/middleware-path-to-regexp.js +1 -1
- package/dist/server/middleware-runtime.d.ts +13 -0
- package/dist/server/middleware-runtime.js +38 -25
- package/dist/server/middleware.d.ts +1 -1
- package/dist/server/middleware.js +3 -1
- package/dist/server/multi-stage.d.ts +11 -0
- package/dist/server/navigation-planner.js +1 -1
- package/dist/server/normalize-path.d.ts +0 -13
- package/dist/server/normalize-path.js +1 -34
- package/dist/server/open-redirect.d.ts +11 -4
- package/dist/server/open-redirect.js +11 -4
- package/dist/server/pages-api-route.d.ts +3 -2
- package/dist/server/pages-api-route.js +6 -5
- package/dist/server/pages-cache-tag.d.ts +12 -0
- package/dist/server/pages-cache-tag.js +19 -0
- package/dist/server/pages-client-assets.d.ts +2 -0
- package/dist/server/pages-data-route.d.ts +10 -0
- package/dist/server/pages-data-route.js +21 -3
- package/dist/server/pages-document-asset-props.d.ts +5 -1
- package/dist/server/pages-document-asset-props.js +13 -5
- package/dist/server/pages-document-splice.d.ts +19 -0
- package/dist/server/pages-document-splice.js +55 -0
- package/dist/server/pages-i18n.d.ts +12 -1
- package/dist/server/pages-i18n.js +18 -4
- package/dist/server/pages-node-compat.d.ts +16 -5
- package/dist/server/pages-node-compat.js +20 -12
- package/dist/server/pages-page-data.d.ts +32 -24
- package/dist/server/pages-page-data.js +51 -121
- package/dist/server/pages-page-handler.d.ts +0 -6
- package/dist/server/pages-page-handler.js +189 -127
- package/dist/server/pages-page-response.d.ts +12 -6
- package/dist/server/pages-page-response.js +42 -35
- package/dist/server/pages-request-pipeline.d.ts +10 -2
- package/dist/server/pages-request-pipeline.js +41 -22
- package/dist/server/pages-request-stage-entry.d.ts +6 -0
- package/dist/server/pages-request-stage-entry.js +75 -16
- package/dist/server/pages-response-stage-entry.js +4 -0
- package/dist/server/pages-revalidate.js +3 -3
- package/dist/server/pages-router-entry.js +5 -4
- package/dist/server/prerender-manifest.d.ts +3 -3
- package/dist/server/prerender-manifest.js +4 -3
- package/dist/server/prerender-work-unit-setup.js +4 -0
- package/dist/server/prod-server.d.ts +12 -0
- package/dist/server/prod-server.js +204 -74
- package/dist/server/proper-error.d.ts +4 -0
- package/dist/server/proper-error.js +31 -0
- package/dist/server/request-pipeline.d.ts +4 -1
- package/dist/server/request-pipeline.js +3 -2
- package/dist/server/revalidation-request.d.ts +1 -0
- package/dist/server/revalidation-request.js +1 -1
- package/dist/server/rsc-stream-hints.d.ts +1 -1
- package/dist/server/rsc-stream-hints.js +52 -5
- package/dist/server/seed-cache.d.ts +1 -0
- package/dist/server/seed-cache.js +5 -4
- package/dist/server/server-reference-loader.d.ts +4 -0
- package/dist/server/server-reference-loader.js +29 -0
- package/dist/server/socket-error-backstop.d.ts +9 -1
- package/dist/server/socket-error-backstop.js +46 -17
- package/dist/server/static-file-signal.d.ts +15 -4
- package/dist/server/static-file-signal.js +46 -12
- package/dist/server/worker-image-optimization.d.ts +34 -0
- package/dist/server/worker-image-optimization.js +99 -0
- package/dist/server/worker-stages.d.ts +1 -1
- package/dist/server/worker-stages.js +2 -2
- package/dist/server/worker-utils.d.ts +8 -3
- package/dist/server/worker-utils.js +12 -7
- package/dist/shims/app-router-scroll.js +4 -1
- package/dist/shims/app-router-tree-context.d.ts +5 -0
- package/dist/shims/app-router-tree-context.js +27 -0
- package/dist/shims/cache-callable-runtime.d.ts +4 -2
- package/dist/shims/cache-callable-runtime.js +21 -12
- package/dist/shims/cache-handler.js +1 -9
- package/dist/shims/cache-runtime.d.ts +6 -1
- package/dist/shims/cache-runtime.js +2 -1
- package/dist/shims/cache.d.ts +2 -2
- package/dist/shims/cache.js +40 -13
- package/dist/shims/cdn-cache.d.ts +8 -0
- package/dist/shims/cdn-cache.js +17 -1
- package/dist/shims/disable-smooth-scroll.d.ts +3 -0
- package/dist/shims/disable-smooth-scroll.js +36 -0
- package/dist/shims/document-placeholders.d.ts +19 -0
- package/dist/shims/document-placeholders.js +45 -0
- package/dist/shims/document.js +21 -5
- package/dist/shims/dynamic-preload-chunks.d.ts +1 -0
- package/dist/shims/dynamic-preload-chunks.js +13 -9
- package/dist/shims/dynamic.d.ts +1 -1
- package/dist/shims/dynamic.js +60 -8
- package/dist/shims/fetch-cache-state.d.ts +66 -0
- package/dist/shims/fetch-cache-state.js +92 -0
- package/dist/shims/fetch-cache.d.ts +3 -67
- package/dist/shims/fetch-cache.js +160 -125
- package/dist/shims/head.d.ts +10 -6
- package/dist/shims/head.js +16 -14
- package/dist/shims/headers.js +2 -2
- package/dist/shims/image.js +2 -1
- package/dist/shims/internal/hybrid-client-route-owner-direct.js +1 -1
- package/dist/shims/internal/hybrid-client-route-owner.js +1 -0
- package/dist/shims/internal/work-store-scope.d.ts +5 -0
- package/dist/shims/internal/work-store-scope.js +24 -0
- package/dist/shims/link-prefetch.js +5 -4
- package/dist/shims/link.js +2 -2
- package/dist/shims/navigation.js +34 -9
- package/dist/shims/request-context.d.ts +2 -0
- package/dist/shims/request-state-types.d.ts +2 -1
- package/dist/shims/router.js +21 -32
- package/dist/shims/server.d.ts +27 -4
- package/dist/shims/server.js +65 -9
- package/dist/shims/unified-request-context.d.ts +1 -1
- package/dist/shims/url-utils.d.ts +9 -0
- package/dist/shims/url-utils.js +15 -4
- package/dist/utils/client-runtime-metadata.js +1 -1
- package/dist/utils/domain-locale.js +1 -1
- package/dist/utils/hash.d.ts +7 -0
- package/dist/utils/hash.js +11 -1
- package/dist/utils/package-name.d.ts +6 -0
- package/dist/utils/package-name.js +12 -1
- package/dist/utils/plugin-rsc-version.d.ts +6 -0
- package/dist/utils/plugin-rsc-version.js +41 -0
- package/dist/utils/prerender-output-paths.js +15 -4
- package/dist/utils/public-file-path.d.ts +10 -2
- package/dist/utils/public-file-path.js +13 -9
- package/dist/utils/public-routes.js +2 -2
- package/dist/utils/react-version.d.ts +10 -0
- package/dist/utils/react-version.js +39 -16
- package/package.json +11 -7
- package/dist/build/nitro-route-rules.d.ts +0 -47
- package/dist/build/nitro-route-rules.js +0 -79
- package/dist/plugins/cache-flight-codec.d.ts +0 -19
- package/dist/plugins/cache-flight-codec.js +0 -68
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import path, { toSlash } from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
|
|
2
2
|
import { escapeRegExp } from "../utils/regex.js";
|
|
3
|
-
import { collectBindingNames, getAstName } from "./ast-utils.js";
|
|
3
|
+
import { collectBindingNames, getAstName, parseProgram } from "./ast-utils.js";
|
|
4
4
|
import { magicStringTransformResult } from "./transform-result.js";
|
|
5
5
|
import { VIRTUAL_MODULE_ID_RE } from "../utils/virtual-module.js";
|
|
6
6
|
import { createRequire } from "node:module";
|
|
7
7
|
import fsp from "node:fs/promises";
|
|
8
|
-
import { parseAst } from "vite";
|
|
9
8
|
import MagicString from "magic-string";
|
|
10
9
|
//#region src/plugins/optimize-imports.ts
|
|
11
10
|
/**
|
|
@@ -234,7 +233,7 @@ async function buildExportMapFromFile(filePath, readFile, cache, visited, initia
|
|
|
234
233
|
if (!content) return /* @__PURE__ */ new Map();
|
|
235
234
|
let ast;
|
|
236
235
|
try {
|
|
237
|
-
ast =
|
|
236
|
+
ast = parseProgram(content);
|
|
238
237
|
} catch {
|
|
239
238
|
return /* @__PURE__ */ new Map();
|
|
240
239
|
}
|
|
@@ -456,7 +455,7 @@ function createOptimizeImportsPlugin(getNextConfig, getRoot) {
|
|
|
456
455
|
if (!hasOptimizedImportSource(code)) return null;
|
|
457
456
|
let ast;
|
|
458
457
|
try {
|
|
459
|
-
ast =
|
|
458
|
+
ast = parseProgram(code);
|
|
460
459
|
} catch {
|
|
461
460
|
return null;
|
|
462
461
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
|
|
2
|
-
import { SCRIPT_MODULE_ID_RE, mayContainDynamicImport, scriptParserLanguage, staticStringValue, walkAst } from "./ast-utils.js";
|
|
2
|
+
import { SCRIPT_MODULE_ID_RE, mayContainDynamicImport, parseProgram, scriptParserLanguage, staticStringValue, walkAst } from "./ast-utils.js";
|
|
3
3
|
import { canonicalizeFilePath, isPathInsideOrEqual, stripViteModuleQuery } from "../utils/path.js";
|
|
4
|
-
import { packageNameFromSpecifier } from "../utils/package-name.js";
|
|
5
4
|
import { isServerEnvironment } from "./environment.js";
|
|
5
|
+
import { packageNameFromSpecifier } from "../utils/package-name.js";
|
|
6
6
|
import fs from "node:fs";
|
|
7
|
-
import { parseAst } from "vite";
|
|
8
7
|
//#region src/plugins/pages-node-externals.ts
|
|
9
8
|
const FRAMEWORK_PACKAGES = /* @__PURE__ */ new Set([
|
|
10
9
|
"@vitejs/plugin-react",
|
|
@@ -47,7 +46,7 @@ function matchesAlias(id, aliases) {
|
|
|
47
46
|
function moduleDependencySpecifiers(code, id) {
|
|
48
47
|
let ast;
|
|
49
48
|
try {
|
|
50
|
-
ast =
|
|
49
|
+
ast = parseProgram(code, { lang: scriptParserLanguage(id) ?? "jsx" });
|
|
51
50
|
} catch {
|
|
52
51
|
return [];
|
|
53
52
|
}
|
|
@@ -1,23 +1,7 @@
|
|
|
1
|
+
import { parseProgram } from "./ast-utils.js";
|
|
1
2
|
import { magicStringTransformResult } from "./transform-result.js";
|
|
2
|
-
import { parseAst } from "vite";
|
|
3
3
|
import MagicString from "magic-string";
|
|
4
4
|
//#region src/plugins/remove-console.ts
|
|
5
|
-
/**
|
|
6
|
-
* Strip `console.*` calls from client bundle code.
|
|
7
|
-
*
|
|
8
|
-
* Mirrors Next.js's SWC `remove_console` transform:
|
|
9
|
-
* - Strips all `console.<method>()` calls regardless of context (top-level,
|
|
10
|
-
* JSX expressions, function arguments, return values, ternary branches)
|
|
11
|
-
* - Replaces removed calls with `void 0` to keep the AST valid in every
|
|
12
|
-
* position a CallExpression can appear
|
|
13
|
-
* - Respects `exclude: ["error"]` to preserve certain methods (case-insensitive)
|
|
14
|
-
* - Preserves calls when `console` is shadowed (local variable, function
|
|
15
|
-
* parameter, or destructured binding)
|
|
16
|
-
* - Preserves computed property access `console[prop]()`
|
|
17
|
-
*
|
|
18
|
-
* Uses Vite's `parseAst` (OXC/acorn) for parsing and `MagicString` for
|
|
19
|
-
* surgical source replacement. Returns `null` when no changes are made.
|
|
20
|
-
*/
|
|
21
5
|
const SCOPE_ENTERING_TYPES = /* @__PURE__ */ new Set([
|
|
22
6
|
"FunctionDeclaration",
|
|
23
7
|
"FunctionExpression",
|
|
@@ -36,7 +20,7 @@ function removeConsoleCalls(code, config) {
|
|
|
36
20
|
if (!code.match(/\bconsole\b/)) return null;
|
|
37
21
|
let ast;
|
|
38
22
|
try {
|
|
39
|
-
ast =
|
|
23
|
+
ast = parseProgram(code);
|
|
40
24
|
} catch {
|
|
41
25
|
return null;
|
|
42
26
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
|
|
2
|
-
import { SCRIPT_MODULE_ID_RE, collectBindingNames, forEachAstChild, isIdentifierNamed, scriptParserLanguage, staticStringValue, unwrapExpression } from "./ast-utils.js";
|
|
2
|
+
import { SCRIPT_MODULE_ID_RE, collectBindingNames, forEachAstChild, isIdentifierNamed, parseProgram, scriptParserLanguage, staticStringValue, unwrapExpression } from "./ast-utils.js";
|
|
3
3
|
import { magicStringTransformResult } from "./transform-result.js";
|
|
4
4
|
import { stripViteModuleQuery } from "../utils/path.js";
|
|
5
5
|
import { collectDirectScopeBindings, collectLoopScopeBindings, collectSwitchScopeBindings, collectVarScopeBindings, createAstScope, hasAstBinding, isFunctionNode } from "./ast-scope.js";
|
|
6
6
|
import { readFile } from "node:fs/promises";
|
|
7
|
-
import { createIdResolver
|
|
7
|
+
import { createIdResolver } from "vite";
|
|
8
8
|
import MagicString from "magic-string";
|
|
9
9
|
//#region src/plugins/require-condition-resolution.ts
|
|
10
10
|
const LITERAL_REQUIRE_RE = /\brequire\s*\(/;
|
|
@@ -30,7 +30,7 @@ function isPackageSpecifier(specifier) {
|
|
|
30
30
|
function collectLiteralRequires(code, id) {
|
|
31
31
|
let ast;
|
|
32
32
|
try {
|
|
33
|
-
ast =
|
|
33
|
+
ast = parseProgram(code, { lang: scriptParserLanguage(id) ?? "jsx" });
|
|
34
34
|
} catch {
|
|
35
35
|
return [];
|
|
36
36
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import path, { toSlash } from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
|
|
2
|
-
import { SCRIPT_MODULE_ID_RE, booleanLiteralValue, scriptParserLanguage, stringLiteralValue, walkAst } from "./ast-utils.js";
|
|
2
|
+
import { SCRIPT_MODULE_ID_RE, booleanLiteralValue, parseProgram, scriptParserLanguage, stringLiteralValue, walkAst } from "./ast-utils.js";
|
|
3
3
|
import { magicStringTransformResult } from "./transform-result.js";
|
|
4
4
|
import { stripViteModuleQuery } from "../utils/path.js";
|
|
5
5
|
import { readdir, realpath, stat } from "node:fs/promises";
|
|
6
|
-
import { parseAst } from "vite";
|
|
7
6
|
import MagicString from "magic-string";
|
|
8
7
|
//#region src/plugins/require-context.ts
|
|
9
8
|
function createRequireContextPlugin() {
|
|
@@ -82,7 +81,7 @@ async function transformRequireContext(code, id) {
|
|
|
82
81
|
const lang = scriptParserLanguage(id);
|
|
83
82
|
let ast;
|
|
84
83
|
try {
|
|
85
|
-
ast =
|
|
84
|
+
ast = parseProgram(code, { lang });
|
|
86
85
|
} catch {
|
|
87
86
|
return null;
|
|
88
87
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Plugin, ResolvedConfig } from "vite";
|
|
2
|
+
import { RscPluginManager } from "@vitejs/plugin-rsc";
|
|
3
|
+
//#region src/plugins/rsc-scan-glob-imports.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* @vitejs/plugin-rsc 0.5.36 and 0.5.37 reduce scan-build modules to their
|
|
6
|
+
* import specifiers with es-module-lexer v3, which reports template-literal
|
|
7
|
+
* dynamic imports as glob patterns (``import(`file://${p}`)`` becomes
|
|
8
|
+
* `"file://*"`). The scan then emits them as plain imports, which fail to
|
|
9
|
+
* resolve (e.g. in @module-federation/vite). Other versions skip these
|
|
10
|
+
* specifiers (0.5.38 via vitejs/vite-plugin-react#1506), so for the affected
|
|
11
|
+
* ones keep the specifiers that don't resolve external during the scan. A real
|
|
12
|
+
* module whose specifier contains `*` still resolves and stays in the scan
|
|
13
|
+
* graph. The scan's output is discarded, so nothing else changes.
|
|
14
|
+
*/
|
|
15
|
+
export declare function isRscScanGlobImportsAffected(version: string): boolean;
|
|
16
|
+
export declare function createRscScanGlobImportsPlugin(options: {
|
|
17
|
+
getManager: (config: ResolvedConfig) => Promise<RscPluginManager | undefined>;
|
|
18
|
+
}): Plugin;
|
|
19
|
+
//#endregion
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { isVersionBelow } from "../utils/react-version.js";
|
|
2
|
+
//#region src/plugins/rsc-scan-glob-imports.ts
|
|
3
|
+
/**
|
|
4
|
+
* @vitejs/plugin-rsc 0.5.36 and 0.5.37 reduce scan-build modules to their
|
|
5
|
+
* import specifiers with es-module-lexer v3, which reports template-literal
|
|
6
|
+
* dynamic imports as glob patterns (``import(`file://${p}`)`` becomes
|
|
7
|
+
* `"file://*"`). The scan then emits them as plain imports, which fail to
|
|
8
|
+
* resolve (e.g. in @module-federation/vite). Other versions skip these
|
|
9
|
+
* specifiers (0.5.38 via vitejs/vite-plugin-react#1506), so for the affected
|
|
10
|
+
* ones keep the specifiers that don't resolve external during the scan. A real
|
|
11
|
+
* module whose specifier contains `*` still resolves and stays in the scan
|
|
12
|
+
* graph. The scan's output is discarded, so nothing else changes.
|
|
13
|
+
*/
|
|
14
|
+
function isRscScanGlobImportsAffected(version) {
|
|
15
|
+
return !isVersionBelow(version, [
|
|
16
|
+
0,
|
|
17
|
+
5,
|
|
18
|
+
36
|
|
19
|
+
]) && isVersionBelow(version, [
|
|
20
|
+
0,
|
|
21
|
+
5,
|
|
22
|
+
38
|
|
23
|
+
]);
|
|
24
|
+
}
|
|
25
|
+
function createRscScanGlobImportsPlugin(options) {
|
|
26
|
+
return {
|
|
27
|
+
name: "vinext:rsc-scan-glob-imports",
|
|
28
|
+
apply: "build",
|
|
29
|
+
enforce: "pre",
|
|
30
|
+
resolveId: {
|
|
31
|
+
filter: { id: /\*/ },
|
|
32
|
+
async handler(source, importer, resolveOptions) {
|
|
33
|
+
if (!(await options.getManager(this.environment.config))?.isScanBuild) return;
|
|
34
|
+
try {
|
|
35
|
+
const resolved = await this.resolve(source, importer, {
|
|
36
|
+
...resolveOptions,
|
|
37
|
+
skipSelf: true
|
|
38
|
+
});
|
|
39
|
+
if (resolved) return resolved;
|
|
40
|
+
} catch {}
|
|
41
|
+
return {
|
|
42
|
+
id: source,
|
|
43
|
+
external: true
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
export { createRscScanGlobImportsPlugin, isRscScanGlobImportsAffected };
|