veryfront 0.1.824 → 0.1.826
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/esm/deno.js +1 -1
- package/esm/src/modules/loader-shared/filename-default-export.d.ts +2 -0
- package/esm/src/modules/loader-shared/filename-default-export.d.ts.map +1 -0
- package/esm/src/modules/loader-shared/filename-default-export.js +57 -0
- package/esm/src/modules/server/module-server.d.ts.map +1 -1
- package/esm/src/modules/server/module-server.js +2 -0
- package/esm/src/release-assets/build-executor.d.ts.map +1 -1
- package/esm/src/release-assets/build-executor.js +75 -43
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/module-cache.d.ts +0 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/module-cache.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/module-cache.js +1 -53
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/persistence.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/persistence.js +2 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +1 -1
package/esm/deno.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filename-default-export.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/loader-shared/filename-default-export.ts"],"names":[],"mappings":"AA8DA,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAa9F"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
const IDENTIFIER_PATTERN = /^[A-Za-z_$][\w$]*$/;
|
|
2
|
+
const DEFAULT_EXPORT_PATTERN = /\bexport\s+default\b|\bexport\s*\{[^}]*\bas\s+default\b[^}]*\}/;
|
|
3
|
+
function escapeRegex(value) {
|
|
4
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
5
|
+
}
|
|
6
|
+
function getModuleIdentifier(normalizedPath) {
|
|
7
|
+
const fileName = normalizedPath.replace(/\?.*$/, "").split("/").pop();
|
|
8
|
+
const identifier = fileName?.replace(/\.(?:[cm]?[jt]sx?|mdx)$/i, "");
|
|
9
|
+
if (!identifier || !IDENTIFIER_PATTERN.test(identifier))
|
|
10
|
+
return null;
|
|
11
|
+
return identifier;
|
|
12
|
+
}
|
|
13
|
+
function findExportMatch(moduleCode, exportName) {
|
|
14
|
+
const declarationPattern = new RegExp(`\\bexport\\s+(?:const|let|var|function|class)\\s+${escapeRegex(exportName)}\\b`);
|
|
15
|
+
if (declarationPattern.test(moduleCode))
|
|
16
|
+
return { localName: exportName, sourceClause: "" };
|
|
17
|
+
const exportListPattern = /\bexport\s*\{([^}]*)\}\s*(from\s*["'][^"']+["'])?\s*(?:;|$)/gm;
|
|
18
|
+
let match;
|
|
19
|
+
while ((match = exportListPattern.exec(moduleCode)) !== null) {
|
|
20
|
+
const specifiers = match[1]?.split(",") ?? [];
|
|
21
|
+
const sourceClause = match[2] ? ` ${match[2]}` : "";
|
|
22
|
+
for (const rawSpecifier of specifiers) {
|
|
23
|
+
const specifier = rawSpecifier.trim();
|
|
24
|
+
if (specifier === exportName)
|
|
25
|
+
return { localName: exportName, sourceClause };
|
|
26
|
+
const alias = specifier.match(/^([A-Za-z_$][\w$]*)\s+as\s+([A-Za-z_$][\w$]*)$/);
|
|
27
|
+
if (alias?.[2] === exportName && alias[1]) {
|
|
28
|
+
return { localName: alias[1], sourceClause };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
function appendExportBeforeSourceMap(moduleCode, exportStatement) {
|
|
35
|
+
const sourceMapMarker = "//# sourceMappingURL=";
|
|
36
|
+
let sourceMapIndex = moduleCode.lastIndexOf(`\n${sourceMapMarker}`);
|
|
37
|
+
if (sourceMapIndex < 0 && moduleCode.startsWith(sourceMapMarker)) {
|
|
38
|
+
sourceMapIndex = 0;
|
|
39
|
+
}
|
|
40
|
+
if (sourceMapIndex < 0) {
|
|
41
|
+
return `${moduleCode.trimEnd()}\n${exportStatement}\n`;
|
|
42
|
+
}
|
|
43
|
+
const beforeSourceMap = moduleCode.slice(0, sourceMapIndex).trimEnd();
|
|
44
|
+
const sourceMap = moduleCode.slice(sourceMapIndex);
|
|
45
|
+
return `${beforeSourceMap}\n${exportStatement}${sourceMap.endsWith("\n") ? sourceMap : `${sourceMap}\n`}`;
|
|
46
|
+
}
|
|
47
|
+
export function ensureFilenameDefaultExport(normalizedPath, moduleCode) {
|
|
48
|
+
if (DEFAULT_EXPORT_PATTERN.test(moduleCode))
|
|
49
|
+
return moduleCode;
|
|
50
|
+
const exportName = getModuleIdentifier(normalizedPath);
|
|
51
|
+
if (!exportName)
|
|
52
|
+
return moduleCode;
|
|
53
|
+
const exportMatch = findExportMatch(moduleCode, exportName);
|
|
54
|
+
if (!exportMatch)
|
|
55
|
+
return moduleCode;
|
|
56
|
+
return appendExportBeforeSourceMap(moduleCode, `export { ${exportMatch.localName} as default }${exportMatch.sourceClause};`);
|
|
57
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-server.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/server/module-server.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAG5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"module-server.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/server/module-server.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAG5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAuCtE;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwDrD,CAAC;AAiBF,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,uBAAuB;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA8XzF;AAwWD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAGrD"}
|
|
@@ -21,6 +21,7 @@ import { readLimitedCrossProjectSource } from "./cross-project-source-limit.js";
|
|
|
21
21
|
import { sha256Short } from "../../cache/hash.js";
|
|
22
22
|
import { rewriteReleaseDependencyImportsForModule } from "../../release-assets/module-consumption.js";
|
|
23
23
|
import { buildSourceMissCacheKey, hasSourceMiss, rememberSourceMiss, } from "./module-source-resolution-cache.js";
|
|
24
|
+
import { ensureFilenameDefaultExport } from "../loader-shared/filename-default-export.js";
|
|
24
25
|
const logger = serverLogger.component("module-server");
|
|
25
26
|
const PROJECT_FALLBACK_EMBEDDED_POLYFILLS = new Set(["deno"]);
|
|
26
27
|
/**
|
|
@@ -348,6 +349,7 @@ export function serveModule(req, options) {
|
|
|
348
349
|
reactVersion,
|
|
349
350
|
};
|
|
350
351
|
code = await profileModuleTransform(() => transformToESM(source, sourceFile, projectDir, adapter, transformOpts));
|
|
352
|
+
code = ensureFilenameDefaultExport(modulePath, code);
|
|
351
353
|
if (isSSR) {
|
|
352
354
|
code = await applySSRImportRewritesAsync(code, {
|
|
353
355
|
projectSlug,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-executor.d.ts","sourceRoot":"","sources":["../../../src/src/release-assets/build-executor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"build-executor.d.ts","sourceRoot":"","sources":["../../../src/src/release-assets/build-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ export { routeForPage } from "./route-path.js";
|
|
|
34
34
|
const logger = serverLogger.component("release-asset-build");
|
|
35
35
|
/** Browser module source extensions eligible for transform. */
|
|
36
36
|
const BROWSER_MODULE_EXTENSIONS = [".tsx", ".ts", ".jsx", ".js", ".mdx"];
|
|
37
|
-
/** Directories
|
|
37
|
+
/** Directories used as browser graph entry seeds. Imports may reach any project directory. */
|
|
38
38
|
const BROWSER_MODULE_DIRS = ["pages/", "components/", "layouts/", "lib/", "src/"];
|
|
39
39
|
const FRAMEWORK_MODULE_URL_PREFIX = "/_vf_modules/_veryfront/";
|
|
40
40
|
const REACT_IMPORT_MAP_DEPENDENCIES = [
|
|
@@ -74,11 +74,17 @@ function sanitizeError(error) {
|
|
|
74
74
|
return message.replace(/\/[^\s]+/g, "<path>").slice(0, 300);
|
|
75
75
|
}
|
|
76
76
|
/** True when a logical path is an eligible browser module. */
|
|
77
|
-
function
|
|
77
|
+
function isTransformableBrowserModule(path) {
|
|
78
78
|
if (!BROWSER_MODULE_EXTENSIONS.some((ext) => path.endsWith(ext)))
|
|
79
79
|
return false;
|
|
80
80
|
if (path.endsWith(".d.ts"))
|
|
81
81
|
return false;
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
/** True when a logical path should seed the browser module graph. */
|
|
85
|
+
function isBrowserModule(path) {
|
|
86
|
+
if (!isTransformableBrowserModule(path))
|
|
87
|
+
return false;
|
|
82
88
|
return BROWSER_MODULE_DIRS.some((dir) => path.startsWith(dir));
|
|
83
89
|
}
|
|
84
90
|
/**
|
|
@@ -1037,53 +1043,33 @@ async function runBuildInner(input, tempDir, client, transform) {
|
|
|
1037
1043
|
const knownPaths = new Set(sourceByPath.keys());
|
|
1038
1044
|
const vendorHttpImports = input.vendorHttpImports ?? vendorHttpImportsWithCache;
|
|
1039
1045
|
const vendorDependencies = isDependencyImportMapEnabled();
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1046
|
+
const transformingModules = new Set();
|
|
1047
|
+
async function transformProjectModule(logicalPath) {
|
|
1048
|
+
if (transformedModules.has(logicalPath) || transformingModules.has(logicalPath))
|
|
1049
|
+
return null;
|
|
1050
|
+
if (!isTransformableBrowserModule(logicalPath))
|
|
1051
|
+
return null;
|
|
1052
|
+
const source = sourceByPath.get(logicalPath);
|
|
1053
|
+
if (typeof source !== "string")
|
|
1054
|
+
return null;
|
|
1055
|
+
transformingModules.add(logicalPath);
|
|
1047
1056
|
try {
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
reactVersion: input.reactVersion,
|
|
1053
|
-
});
|
|
1054
|
-
}
|
|
1055
|
-
catch (error) {
|
|
1056
|
-
// Hard requirement: any module transform failure → report failed, stop.
|
|
1057
|
-
const sanitized = sanitizeError(error);
|
|
1058
|
-
logger.warn("Module transform failed during release asset build", {
|
|
1059
|
-
path: logicalPath,
|
|
1060
|
-
error: sanitized,
|
|
1061
|
-
});
|
|
1062
|
-
await client.reportReleaseAssetManifestState(input.releaseVersionRef, "failed", sanitized);
|
|
1063
|
-
return {
|
|
1064
|
-
success: false,
|
|
1065
|
-
state: "failed",
|
|
1066
|
-
moduleCount: 0,
|
|
1067
|
-
cssCount: 0,
|
|
1068
|
-
routeCount: 0,
|
|
1069
|
-
gaps,
|
|
1070
|
-
error: sanitized,
|
|
1071
|
-
};
|
|
1072
|
-
}
|
|
1073
|
-
if (vendorDependencies) {
|
|
1057
|
+
// M2: enforce client-side size limit before transform (source is a proxy;
|
|
1058
|
+
// transformed output is checked after encoding below).
|
|
1059
|
+
const sourceFile = join(tempDir, logicalPath);
|
|
1060
|
+
let code;
|
|
1074
1061
|
try {
|
|
1075
|
-
|
|
1076
|
-
|
|
1062
|
+
code = await transform(source, sourceFile, tempDir, input.adapter, {
|
|
1063
|
+
projectId: input.projectId,
|
|
1064
|
+
dev: false,
|
|
1065
|
+
ssr: false,
|
|
1077
1066
|
reactVersion: input.reactVersion,
|
|
1078
1067
|
});
|
|
1079
|
-
code = vendored.code;
|
|
1080
|
-
for (const dependency of vendored.dependencies) {
|
|
1081
|
-
addDependencyModule(dependencyModules, dependency);
|
|
1082
|
-
}
|
|
1083
1068
|
}
|
|
1084
1069
|
catch (error) {
|
|
1070
|
+
// Hard requirement: any module transform failure -> report failed, stop.
|
|
1085
1071
|
const sanitized = sanitizeError(error);
|
|
1086
|
-
logger.warn("
|
|
1072
|
+
logger.warn("Module transform failed during release asset build", {
|
|
1087
1073
|
path: logicalPath,
|
|
1088
1074
|
error: sanitized,
|
|
1089
1075
|
});
|
|
@@ -1098,8 +1084,54 @@ async function runBuildInner(input, tempDir, client, transform) {
|
|
|
1098
1084
|
error: sanitized,
|
|
1099
1085
|
};
|
|
1100
1086
|
}
|
|
1087
|
+
if (vendorDependencies) {
|
|
1088
|
+
try {
|
|
1089
|
+
const vendored = await vendorHttpImports(code, {
|
|
1090
|
+
tempDir,
|
|
1091
|
+
reactVersion: input.reactVersion,
|
|
1092
|
+
});
|
|
1093
|
+
code = vendored.code;
|
|
1094
|
+
for (const dependency of vendored.dependencies) {
|
|
1095
|
+
addDependencyModule(dependencyModules, dependency);
|
|
1096
|
+
}
|
|
1097
|
+
}
|
|
1098
|
+
catch (error) {
|
|
1099
|
+
const sanitized = sanitizeError(error);
|
|
1100
|
+
logger.warn("HTTP dependency vendoring failed during release asset build", {
|
|
1101
|
+
path: logicalPath,
|
|
1102
|
+
error: sanitized,
|
|
1103
|
+
});
|
|
1104
|
+
await client.reportReleaseAssetManifestState(input.releaseVersionRef, "failed", sanitized);
|
|
1105
|
+
return {
|
|
1106
|
+
success: false,
|
|
1107
|
+
state: "failed",
|
|
1108
|
+
moduleCount: 0,
|
|
1109
|
+
cssCount: 0,
|
|
1110
|
+
routeCount: 0,
|
|
1111
|
+
gaps,
|
|
1112
|
+
error: sanitized,
|
|
1113
|
+
};
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1116
|
+
transformedModules.set(logicalPath, { logicalPath, code });
|
|
1117
|
+
const imports = await collectProjectModuleImports(code, logicalPath, knownPaths);
|
|
1118
|
+
for (const importedPath of imports.values()) {
|
|
1119
|
+
const failure = await transformProjectModule(importedPath);
|
|
1120
|
+
if (failure)
|
|
1121
|
+
return failure;
|
|
1122
|
+
}
|
|
1101
1123
|
}
|
|
1102
|
-
|
|
1124
|
+
finally {
|
|
1125
|
+
transformingModules.delete(logicalPath);
|
|
1126
|
+
}
|
|
1127
|
+
return null;
|
|
1128
|
+
}
|
|
1129
|
+
for (const logicalPath of sourceByPath.keys()) {
|
|
1130
|
+
if (!isBrowserModule(logicalPath))
|
|
1131
|
+
continue;
|
|
1132
|
+
const failure = await transformProjectModule(logicalPath);
|
|
1133
|
+
if (failure)
|
|
1134
|
+
return failure;
|
|
1103
1135
|
}
|
|
1104
1136
|
if (vendorDependencies) {
|
|
1105
1137
|
try {
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
* @module transforms/mdx/esm-module-loader/module-fetcher/module-cache
|
|
8
8
|
*/
|
|
9
9
|
import type { Logger } from "../../../../utils/logger/logger.js";
|
|
10
|
-
export declare function ensureFilenameDefaultExport(normalizedPath: string, moduleCode: string): string;
|
|
11
10
|
/**
|
|
12
11
|
* Normalize a module path, resolving relative paths if a parent is provided.
|
|
13
12
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-cache.d.ts","sourceRoot":"","sources":["../../../../../../src/src/transforms/mdx/esm-module-loader/module-fetcher/module-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"module-cache.d.ts","sourceRoot":"","sources":["../../../../../../src/src/transforms/mdx/esm-module-loader/module-fetcher/module-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAUjE;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAanF;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,GAAG,EAAE,MAAM,EACX,YAAY,SAAwB,GACnC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqCxB"}
|
|
@@ -15,59 +15,7 @@ import { hashString } from "../utils/hash.js";
|
|
|
15
15
|
import { buildMdxEsmModuleFileName, buildMdxEsmPathCacheKey } from "../cache-format.js";
|
|
16
16
|
import { hasUnresolvedImports } from "./nested-imports.js";
|
|
17
17
|
import { recordModuleToSession } from "./render-sessions.js";
|
|
18
|
-
|
|
19
|
-
const DEFAULT_EXPORT_PATTERN = /\bexport\s+default\b|\bexport\s*\{[^}]*\bas\s+default\b[^}]*\}/;
|
|
20
|
-
function escapeRegex(value) {
|
|
21
|
-
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
22
|
-
}
|
|
23
|
-
function getModuleIdentifier(normalizedPath) {
|
|
24
|
-
const fileName = normalizedPath.replace(/\?.*$/, "").split("/").pop();
|
|
25
|
-
const identifier = fileName?.replace(/\.(?:[cm]?[jt]sx?|mdx)$/i, "");
|
|
26
|
-
if (!identifier || !IDENTIFIER_PATTERN.test(identifier))
|
|
27
|
-
return null;
|
|
28
|
-
return identifier;
|
|
29
|
-
}
|
|
30
|
-
function findExportMatch(moduleCode, exportName) {
|
|
31
|
-
const declarationPattern = new RegExp(`\\bexport\\s+(?:const|let|var|function|class)\\s+${escapeRegex(exportName)}\\b`);
|
|
32
|
-
if (declarationPattern.test(moduleCode))
|
|
33
|
-
return { localName: exportName, sourceClause: "" };
|
|
34
|
-
const exportListPattern = /\bexport\s*\{([^}]*)\}\s*(from\s*["'][^"']+["'])?\s*(?:;|$)/gm;
|
|
35
|
-
let match;
|
|
36
|
-
while ((match = exportListPattern.exec(moduleCode)) !== null) {
|
|
37
|
-
const specifiers = match[1]?.split(",") ?? [];
|
|
38
|
-
const sourceClause = match[2] ? ` ${match[2]}` : "";
|
|
39
|
-
for (const rawSpecifier of specifiers) {
|
|
40
|
-
const specifier = rawSpecifier.trim();
|
|
41
|
-
if (specifier === exportName)
|
|
42
|
-
return { localName: exportName, sourceClause };
|
|
43
|
-
const alias = specifier.match(/^([A-Za-z_$][\w$]*)\s+as\s+([A-Za-z_$][\w$]*)$/);
|
|
44
|
-
if (alias?.[2] === exportName && alias[1]) {
|
|
45
|
-
return { localName: alias[1], sourceClause };
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
function appendExportBeforeSourceMap(moduleCode, exportStatement) {
|
|
52
|
-
const sourceMapMatch = moduleCode.match(/\n\/\/# sourceMappingURL=.*$/);
|
|
53
|
-
if (sourceMapMatch?.index === undefined) {
|
|
54
|
-
return `${moduleCode.trimEnd()}\n${exportStatement}\n`;
|
|
55
|
-
}
|
|
56
|
-
const beforeSourceMap = moduleCode.slice(0, sourceMapMatch.index).trimEnd();
|
|
57
|
-
const sourceMap = moduleCode.slice(sourceMapMatch.index);
|
|
58
|
-
return `${beforeSourceMap}\n${exportStatement}${sourceMap.endsWith("\n") ? sourceMap : `${sourceMap}\n`}`;
|
|
59
|
-
}
|
|
60
|
-
export function ensureFilenameDefaultExport(normalizedPath, moduleCode) {
|
|
61
|
-
if (DEFAULT_EXPORT_PATTERN.test(moduleCode))
|
|
62
|
-
return moduleCode;
|
|
63
|
-
const exportName = getModuleIdentifier(normalizedPath);
|
|
64
|
-
if (!exportName)
|
|
65
|
-
return moduleCode;
|
|
66
|
-
const exportMatch = findExportMatch(moduleCode, exportName);
|
|
67
|
-
if (!exportMatch)
|
|
68
|
-
return moduleCode;
|
|
69
|
-
return appendExportBeforeSourceMap(moduleCode, `export { ${exportMatch.localName} as default }${exportMatch.sourceClause};`);
|
|
70
|
-
}
|
|
18
|
+
import { ensureFilenameDefaultExport } from "../../../../modules/loader-shared/filename-default-export.js";
|
|
71
19
|
/**
|
|
72
20
|
* Normalize a module path, resolving relative paths if a parent is provided.
|
|
73
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../../../../src/src/transforms/mdx/esm-module-loader/module-fetcher/persistence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../../../../src/src/transforms/mdx/esm-module-loader/module-fetcher/persistence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,KAAK,kBAAkB,GAAG,OAAO,WAAW,CAAC;AAC7C,KAAK,uBAAuB,GAAG,OAAO,qBAAqB,CAAC;AAC5D,KAAK,gBAAgB,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/D,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE;QACtB,gBAAgB,EAAE,gBAAgB,CAAC;QACnC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IACtC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;CACnD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqCxB"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* @module transforms/mdx/esm-module-loader/module-fetcher/persistence
|
|
5
5
|
*/
|
|
6
6
|
import { LOG_PREFIX_MDX_LOADER } from "../constants.js";
|
|
7
|
-
import {
|
|
7
|
+
import { ensureFilenameDefaultExport } from "../../../../modules/loader-shared/filename-default-export.js";
|
|
8
|
+
import { cacheModule } from "./module-cache.js";
|
|
8
9
|
import { writeDistributedCache } from "./distributed-cache.js";
|
|
9
10
|
/**
|
|
10
11
|
* Persist fully resolved module code to distributed and local caches.
|