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 CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.824",
3
+ "version": "0.1.826",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "minimumDependencyAge": {
@@ -0,0 +1,2 @@
1
+ export declare function ensureFilenameDefaultExport(normalizedPath: string, moduleCode: string): string;
2
+ //# sourceMappingURL=filename-default-export.d.ts.map
@@ -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;AAsCtE;;;;;;;;;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,CA6XzF;AAwWD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAGrD"}
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 whose modules are part of the browser closure. */
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 isBrowserModule(path) {
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
- for (const [logicalPath, source] of sourceByPath) {
1041
- if (!isBrowserModule(logicalPath))
1042
- continue;
1043
- // M2: enforce client-side size limit before transform (source is a proxy;
1044
- // transformed output is checked after encoding below).
1045
- const sourceFile = join(tempDir, logicalPath);
1046
- let code;
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
- code = await transform(source, sourceFile, tempDir, input.adapter, {
1049
- projectId: input.projectId,
1050
- dev: false,
1051
- ssr: false,
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
- const vendored = await vendorHttpImports(code, {
1076
- tempDir,
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("HTTP dependency vendoring failed during release asset build", {
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
- transformedModules.set(logicalPath, { logicalPath, code });
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;AAkEjE,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAa9F;AAED;;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"}
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
- const IDENTIFIER_PATTERN = /^[A-Za-z_$][\w$]*$/;
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;AAEjE,OAAO,EAAE,WAAW,EAA+B,MAAM,mBAAmB,CAAC;AAC7E,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"}
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 { cacheModule, ensureFilenameDefaultExport } from "./module-cache.js";
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.
@@ -1,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.824";
2
+ export declare const VERSION = "0.1.826";
3
3
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
3
  /** Shared version value. */
4
- export const VERSION = "0.1.824";
4
+ export const VERSION = "0.1.826";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.824",
3
+ "version": "0.1.826",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",