veryfront 0.1.782 → 0.1.784
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/html/html-shell-generator.js +1 -1
- package/esm/src/html/hydration-script-builder/hydration-data-generator.d.ts +6 -1
- package/esm/src/html/hydration-script-builder/hydration-data-generator.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/hydration-data-generator.js +11 -0
- package/esm/src/html/hydration-script-builder/templates/loader.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/templates/loader.js +36 -0
- package/esm/src/html/hydration-script-builder/templates/renderer.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/templates/renderer.js +3 -0
- package/esm/src/html/hydration-script-builder/templates/router.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/templates/router.js +4 -0
- package/esm/src/html/hydration-script-builder/templates/spa-renderer.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/templates/spa-renderer.js +3 -0
- package/esm/src/html/hydration-script-builder/types.d.ts +2 -0
- package/esm/src/html/hydration-script-builder/types.d.ts.map +1 -1
- package/esm/src/html/utils.d.ts.map +1 -1
- package/esm/src/html/utils.js +5 -12
- package/esm/src/release-assets/build-executor.d.ts.map +1 -1
- package/esm/src/release-assets/build-executor.js +57 -11
- package/esm/src/release-assets/manifest-schema.d.ts.map +1 -1
- package/esm/src/release-assets/manifest-schema.js +3 -2
- 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
|
@@ -142,7 +142,7 @@ async function generateHTMLShellPartsImpl(meta, options, params, props, contentF
|
|
|
142
142
|
pretty: useDevScripts,
|
|
143
143
|
releaseAssetManifest: releaseManifest,
|
|
144
144
|
});
|
|
145
|
-
const hydrationDataJson = generateHydrationData(meta.slug || "", params ?? {}, props ?? {}, options, { pretty: useDevScripts });
|
|
145
|
+
const hydrationDataJson = generateHydrationData(meta.slug || "", params ?? {}, props ?? {}, { ...options, releaseAssetManifest: releaseManifest }, { pretty: useDevScripts });
|
|
146
146
|
const nonce = options.nonce ?? "";
|
|
147
147
|
const modeScripts = useDevScripts
|
|
148
148
|
? getDevScripts(meta.slug || "", options.config, params, props, nonce, {
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { ComponentProps } from "../../types/index.js";
|
|
2
|
+
import type { ReleaseAssetManifest } from "../../release-assets/manifest-schema.js";
|
|
2
3
|
import type { HTMLGenerationOptions } from "../types.js";
|
|
3
|
-
|
|
4
|
+
type HydrationOptions = HTMLGenerationOptions & {
|
|
5
|
+
releaseAssetManifest?: ReleaseAssetManifest | null;
|
|
6
|
+
};
|
|
7
|
+
export declare function generateHydrationData(slug: string, params: Record<string, string | string[]>, props: ComponentProps, options: HydrationOptions, serializeOptions?: {
|
|
4
8
|
pretty?: boolean;
|
|
5
9
|
}): string;
|
|
10
|
+
export {};
|
|
6
11
|
//# sourceMappingURL=hydration-data-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydration-data-generator.d.ts","sourceRoot":"","sources":["../../../../src/src/html/hydration-script-builder/hydration-data-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"hydration-data-generator.d.ts","sourceRoot":"","sources":["../../../../src/src/html/hydration-script-builder/hydration-data-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AA8BzD,KAAK,gBAAgB,GAAG,qBAAqB,GAAG;IAC9C,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACpD,CAAC;AAcF,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EACzC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,gBAAgB,EACzB,gBAAgB,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACtC,MAAM,CAiDR"}
|
|
@@ -2,6 +2,7 @@ import { resolveRelativePath } from "../../modules/react-loader/path-resolver.js
|
|
|
2
2
|
import { getExtensionName } from "../../utils/path-utils.js";
|
|
3
3
|
import { determineClientModuleStrategy } from "../../rendering/rsc/client-module-strategy.js";
|
|
4
4
|
import { jsonForInlineScript } from "../../security/client/html-sanitizer.js";
|
|
5
|
+
import { releaseAssetUrl } from "../../release-assets/constants.js";
|
|
5
6
|
function toProjectRelativePath(absolutePath, projectDir) {
|
|
6
7
|
if (!absolutePath)
|
|
7
8
|
return "";
|
|
@@ -19,6 +20,15 @@ function inferPageType(pagePath) {
|
|
|
19
20
|
return undefined;
|
|
20
21
|
return PAGE_TYPE_EXTENSIONS.has(ext) ? ext : undefined;
|
|
21
22
|
}
|
|
23
|
+
function buildReleaseAssetModules(manifest) {
|
|
24
|
+
if (!manifest)
|
|
25
|
+
return undefined;
|
|
26
|
+
const modules = {};
|
|
27
|
+
for (const [path, entry] of Object.entries(manifest.modules)) {
|
|
28
|
+
modules[path] = releaseAssetUrl(entry.contentHash, "js");
|
|
29
|
+
}
|
|
30
|
+
return Object.keys(modules).length > 0 ? modules : undefined;
|
|
31
|
+
}
|
|
22
32
|
export function generateHydrationData(slug, params, props, options, serializeOptions) {
|
|
23
33
|
const layouts = (options.nestedLayouts ?? [])
|
|
24
34
|
.map((layout) => {
|
|
@@ -51,6 +61,7 @@ export function generateHydrationData(slug, params, props, options, serializeOpt
|
|
|
51
61
|
isLocalProject: options.isLocalProject,
|
|
52
62
|
environment: options.environment,
|
|
53
63
|
}),
|
|
64
|
+
releaseAssetModules: buildReleaseAssetModules(options.releaseAssetManifest),
|
|
54
65
|
frontmatter: options.frontmatter,
|
|
55
66
|
layoutProps: options.layoutProps,
|
|
56
67
|
// In dev mode, client uses createRoot instead of hydrateRoot to avoid
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../src/src/html/hydration-script-builder/templates/loader.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,QAAO,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../src/src/html/hydration-script-builder/templates/loader.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,QAAO,MA8IlC,CAAC"}
|
|
@@ -22,7 +22,41 @@ export const getLoaderScript = () => `
|
|
|
22
22
|
return url + (url.includes('?') ? '&' : '?') + key + '=' + value;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
let __releaseAssetModules = null;
|
|
26
|
+
function setReleaseAssetModules(value) {
|
|
27
|
+
__releaseAssetModules =
|
|
28
|
+
value && typeof value === 'object' && !Array.isArray(value) ? value : null;
|
|
29
|
+
window.__veryfrontReleaseAssetModules = __releaseAssetModules;
|
|
30
|
+
}
|
|
31
|
+
window.__veryfrontSetReleaseAssetModules = setReleaseAssetModules;
|
|
32
|
+
|
|
33
|
+
function normalizeReleaseAssetModulePath(path) {
|
|
34
|
+
return String(path || '')
|
|
35
|
+
.replace(/^\\/?_vf_modules\\//, '')
|
|
36
|
+
.replace(/^\\/+/, '')
|
|
37
|
+
.replace(/[?#].*$/, '');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function resolveReleaseAssetModuleUrl(path) {
|
|
41
|
+
if (!__releaseAssetModules || __studioEmbed || __hmrRefreshTimestamp) return null;
|
|
42
|
+
|
|
43
|
+
const key = normalizeReleaseAssetModulePath(path);
|
|
44
|
+
if (__releaseAssetModules[key]) return __releaseAssetModules[key];
|
|
45
|
+
|
|
46
|
+
const withoutExt = key.replace(/\\.(tsx|ts|jsx|mdx|js|mjs)$/, '');
|
|
47
|
+
const extensions = ['.tsx', '.ts', '.jsx', '.mdx', '.js'];
|
|
48
|
+
for (const ext of extensions) {
|
|
49
|
+
const candidate = withoutExt + ext;
|
|
50
|
+
if (__releaseAssetModules[candidate]) return __releaseAssetModules[candidate];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
|
|
25
56
|
function pathToModuleUrl(path, studioEmbed) {
|
|
57
|
+
const releaseAssetUrl = resolveReleaseAssetModuleUrl(path);
|
|
58
|
+
if (releaseAssetUrl) return releaseAssetUrl;
|
|
59
|
+
|
|
26
60
|
const pattern = /(pages|components|app|lib|layouts|shared|features)\\/(.+)\\.(tsx|ts|jsx|mdx)$/;
|
|
27
61
|
|
|
28
62
|
const match =
|
|
@@ -49,12 +83,14 @@ export const getLoaderScript = () => `
|
|
|
49
83
|
let __studioEmbed = false;
|
|
50
84
|
function setStudioEmbed(value) {
|
|
51
85
|
__studioEmbed = value;
|
|
86
|
+
window.__veryfrontStudioEmbed = value;
|
|
52
87
|
}
|
|
53
88
|
window.__veryfrontSetStudioEmbed = setStudioEmbed;
|
|
54
89
|
|
|
55
90
|
let __hmrRefreshTimestamp = null;
|
|
56
91
|
function setHMRRefreshTimestamp(timestamp) {
|
|
57
92
|
__hmrRefreshTimestamp = timestamp;
|
|
93
|
+
window.__veryfrontHMRRefreshTimestamp = timestamp;
|
|
58
94
|
}
|
|
59
95
|
window.__veryfrontSetHMRRefreshTimestamp = setHMRRefreshTimestamp;
|
|
60
96
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../../../src/src/html/hydration-script-builder/templates/renderer.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../../../src/src/html/hydration-script-builder/templates/renderer.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,cAqN7B,CAAC"}
|
|
@@ -33,6 +33,9 @@ export const getRendererScript = () => `
|
|
|
33
33
|
if (data.studioEmbed && window.__veryfrontSetStudioEmbed) {
|
|
34
34
|
window.__veryfrontSetStudioEmbed(true);
|
|
35
35
|
}
|
|
36
|
+
if (data.releaseAssetModules && window.__veryfrontSetReleaseAssetModules) {
|
|
37
|
+
window.__veryfrontSetReleaseAssetModules(data.releaseAssetModules);
|
|
38
|
+
}
|
|
36
39
|
|
|
37
40
|
try {
|
|
38
41
|
let pageModule;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../../../src/src/html/hydration-script-builder/templates/router.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../../../src/src/html/hydration-script-builder/templates/router.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,cAmrB3B,CAAC"}
|
|
@@ -401,6 +401,10 @@ export const getRouterScript = () => `
|
|
|
401
401
|
// Render page from page data
|
|
402
402
|
// ============================================
|
|
403
403
|
async function renderPageFromData(pageData, targetPath) {
|
|
404
|
+
if (pageData.releaseAssetModules && window.__veryfrontSetReleaseAssetModules) {
|
|
405
|
+
window.__veryfrontSetReleaseAssetModules(pageData.releaseAssetModules);
|
|
406
|
+
}
|
|
407
|
+
|
|
404
408
|
perfStart('render:loadAll');
|
|
405
409
|
const layoutPaths = (pageData.layouts || []).map((l) => l.path);
|
|
406
410
|
const allPaths = [pageData.pagePath, ...layoutPaths];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spa-renderer.d.ts","sourceRoot":"","sources":["../../../../../src/src/html/hydration-script-builder/templates/spa-renderer.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,QAAO,
|
|
1
|
+
{"version":3,"file":"spa-renderer.d.ts","sourceRoot":"","sources":["../../../../../src/src/html/hydration-script-builder/templates/spa-renderer.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,QAAO,MAmEvC,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,MAoCrC,CAAC"}
|
|
@@ -19,6 +19,9 @@ export const getSpaRendererScript = () => `
|
|
|
19
19
|
if (initialData.studioEmbed && window.__veryfrontSetStudioEmbed) {
|
|
20
20
|
window.__veryfrontSetStudioEmbed(true);
|
|
21
21
|
}
|
|
22
|
+
if (initialData.releaseAssetModules && window.__veryfrontSetReleaseAssetModules) {
|
|
23
|
+
window.__veryfrontSetReleaseAssetModules(initialData.releaseAssetModules);
|
|
24
|
+
}
|
|
22
25
|
|
|
23
26
|
try {
|
|
24
27
|
const pageComponent = await loadComponent(initialData.pagePath);
|
|
@@ -12,6 +12,8 @@ export interface HydrationDataStructure {
|
|
|
12
12
|
pagePath?: string;
|
|
13
13
|
pageType?: "mdx" | "md" | "tsx" | "jsx" | "ts" | "js";
|
|
14
14
|
clientModuleStrategy?: ClientModuleStrategy;
|
|
15
|
+
/** Production release asset URLs keyed by logical source path. */
|
|
16
|
+
releaseAssetModules?: Record<string, string>;
|
|
15
17
|
frontmatter?: Record<string, unknown>;
|
|
16
18
|
layoutProps?: Record<string, Record<string, unknown>>;
|
|
17
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/html/hydration-script-builder/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAE1F,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC1C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;IACtD,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/html/hydration-script-builder/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAE1F,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC1C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;IACtD,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/src/html/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAcjF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAQR;AAaD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AA4DD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGrD,CAAC;AA6JF,UAAU,qBAAqB;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACpD;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/src/html/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAcjF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAQR;AAaD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AA4DD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGrD,CAAC;AA6JF,UAAU,qBAAqB;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACpD;AA2CD,wBAAsB,cAAc,CAClC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvD,OAAO,CAAC,cAAc,CAAC,CA8DzB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvD,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAElF"}
|
package/esm/src/html/utils.js
CHANGED
|
@@ -196,18 +196,11 @@ function stableManifestDependencyKey(manifest) {
|
|
|
196
196
|
})
|
|
197
197
|
: "";
|
|
198
198
|
}
|
|
199
|
-
function applyManifestDependencies(imports,
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
const entry = manifest.dependencies[specifier];
|
|
205
|
-
if (!entry || entry.contentType !== "text/javascript")
|
|
206
|
-
continue;
|
|
207
|
-
rewritten ??= { ...imports };
|
|
208
|
-
rewritten[specifier] = `${manifest.assetBasePath}/${entry.contentHash}.js`;
|
|
209
|
-
}
|
|
210
|
-
return rewritten ?? imports;
|
|
199
|
+
function applyManifestDependencies(imports, _manifest) {
|
|
200
|
+
// Framework dependency assets are recorded for future S7 vendoring, but they
|
|
201
|
+
// are not browser-safe until their own relative import closures are rewritten
|
|
202
|
+
// and uploaded. Keep import-map entries on their existing module URLs.
|
|
203
|
+
return imports;
|
|
211
204
|
}
|
|
212
205
|
function isImportMapOnlyOptions(options) {
|
|
213
206
|
return !("projectDir" in options) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-executor.d.ts","sourceRoot":"","sources":["../../../src/src/release-assets/build-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAiCH,MAAM,WAAW,sBAAsB;IACrC,yDAAyD;IACzD,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,MAAM,EAAE,uBAAuB,CAAC;IAChC,sDAAsD;IAEtD,OAAO,EAAE,GAAG,CAAC;IACb;;;;OAIG;IACH,SAAS,CAAC,EAAE,qBAAqB,CAAC;CACnC;AAED,MAAM,MAAM,qBAAqB,GAAG,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAElB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,KAC9E,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,oEAAoE;AACpE,MAAM,WAAW,uBAAuB;IACtC,8BAA8B,CAC5B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,mBAAmB,CACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACtD,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAClD,uBAAuB,CACrB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,+BAA+B,CAC7B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,GAAG,QAAQ,EAC3B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB;;;;;;;OAOG;IACH,iBAAiB,CAAC,CAChB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkCD,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM/D;
|
|
1
|
+
{"version":3,"file":"build-executor.d.ts","sourceRoot":"","sources":["../../../src/src/release-assets/build-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -162,23 +162,23 @@ function rewriteVfModuleImports(code, moduleAssets, knownPaths, dependencyUrls)
|
|
|
162
162
|
return `${quote}${releaseAssetUrl(asset.contentHash, "js")}${quote}`;
|
|
163
163
|
});
|
|
164
164
|
}
|
|
165
|
-
function buildDependencyUrlMap(
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
continue;
|
|
171
|
-
urls.set(moduleUrl, releaseAssetUrl(entry.contentHash, "js"));
|
|
172
|
-
}
|
|
173
|
-
return urls;
|
|
165
|
+
function buildDependencyUrlMap(_dependencies) {
|
|
166
|
+
// Framework barrels can contain their own relative import closure. Keep those
|
|
167
|
+
// URLs on the module server until the builder rewrites and uploads the full
|
|
168
|
+
// framework closure, otherwise the browser resolves relatives under /_vf/assets.
|
|
169
|
+
return new Map();
|
|
174
170
|
}
|
|
175
171
|
async function finalizeProjectModules(transformedModules, knownPaths, dependencyUrls, uploadQueue, pendingBytes, gaps) {
|
|
176
172
|
const finalized = new Map();
|
|
177
173
|
const unresolvedCycles = new Set();
|
|
174
|
+
const cyclicModules = collectCyclicProjectModules(transformedModules, knownPaths, gaps);
|
|
175
|
+
const skippedModules = new Set(cyclicModules);
|
|
178
176
|
async function finalize(logicalPath, stack) {
|
|
179
177
|
const existing = finalized.get(logicalPath);
|
|
180
178
|
if (existing)
|
|
181
179
|
return existing;
|
|
180
|
+
if (cyclicModules.has(logicalPath))
|
|
181
|
+
return null;
|
|
182
182
|
if (stack.includes(logicalPath)) {
|
|
183
183
|
const cycle = [...stack.slice(stack.indexOf(logicalPath)), logicalPath].join("->");
|
|
184
184
|
const gap = `cycle:${cycle}`;
|
|
@@ -204,14 +204,58 @@ async function finalizeProjectModules(transformedModules, knownPaths, dependency
|
|
|
204
204
|
return entry;
|
|
205
205
|
}
|
|
206
206
|
for (const logicalPath of transformedModules.keys()) {
|
|
207
|
+
if (cyclicModules.has(logicalPath))
|
|
208
|
+
continue;
|
|
207
209
|
const entry = await finalize(logicalPath, []);
|
|
208
210
|
if (!entry) {
|
|
211
|
+
skippedModules.add(logicalPath);
|
|
209
212
|
const gap = `oversized:${logicalPath}`;
|
|
210
213
|
if (!gaps.includes(gap))
|
|
211
214
|
gaps.push(gap);
|
|
212
215
|
}
|
|
213
216
|
}
|
|
214
|
-
return Object.fromEntries(finalized);
|
|
217
|
+
return { modules: Object.fromEntries(finalized), skippedModules };
|
|
218
|
+
}
|
|
219
|
+
function collectCyclicProjectModules(transformedModules, knownPaths, gaps) {
|
|
220
|
+
const cyclic = new Set();
|
|
221
|
+
const visiting = new Set();
|
|
222
|
+
const visited = new Set();
|
|
223
|
+
const stack = [];
|
|
224
|
+
const recordedCycles = new Set();
|
|
225
|
+
function visit(logicalPath) {
|
|
226
|
+
if (visited.has(logicalPath))
|
|
227
|
+
return;
|
|
228
|
+
if (visiting.has(logicalPath)) {
|
|
229
|
+
const index = stack.indexOf(logicalPath);
|
|
230
|
+
if (index < 0)
|
|
231
|
+
return;
|
|
232
|
+
const cycleMembers = stack.slice(index);
|
|
233
|
+
for (const member of cycleMembers)
|
|
234
|
+
cyclic.add(member);
|
|
235
|
+
const gap = `cycle:${[...cycleMembers, logicalPath].join("->")}`;
|
|
236
|
+
if (!recordedCycles.has(gap)) {
|
|
237
|
+
recordedCycles.add(gap);
|
|
238
|
+
gaps.push(gap);
|
|
239
|
+
}
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
const transformed = transformedModules.get(logicalPath);
|
|
243
|
+
if (!transformed)
|
|
244
|
+
return;
|
|
245
|
+
visiting.add(logicalPath);
|
|
246
|
+
stack.push(logicalPath);
|
|
247
|
+
const imports = collectVfModuleImports(transformed.code, knownPaths);
|
|
248
|
+
for (const importedPath of imports.values()) {
|
|
249
|
+
if (transformedModules.has(importedPath))
|
|
250
|
+
visit(importedPath);
|
|
251
|
+
}
|
|
252
|
+
stack.pop();
|
|
253
|
+
visiting.delete(logicalPath);
|
|
254
|
+
visited.add(logicalPath);
|
|
255
|
+
}
|
|
256
|
+
for (const logicalPath of transformedModules.keys())
|
|
257
|
+
visit(logicalPath);
|
|
258
|
+
return cyclic;
|
|
215
259
|
}
|
|
216
260
|
async function addPreparedJavaScriptAsset(logicalPath, code, uploadQueue, pendingBytes) {
|
|
217
261
|
const bytes = new TextEncoder().encode(code);
|
|
@@ -404,10 +448,12 @@ async function runBuildInner(input, tempDir, client, transform) {
|
|
|
404
448
|
}
|
|
405
449
|
const dependencies = await buildFrameworkDependencies(input, tempDir, transform, uploadQueue, pendingBytes, gaps);
|
|
406
450
|
const dependencyUrls = buildDependencyUrlMap(dependencies);
|
|
407
|
-
const modules = await finalizeProjectModules(transformedModules, knownPaths, dependencyUrls, uploadQueue, pendingBytes, gaps);
|
|
451
|
+
const { modules, skippedModules } = await finalizeProjectModules(transformedModules, knownPaths, dependencyUrls, uploadQueue, pendingBytes, gaps);
|
|
408
452
|
for (const logicalPath of transformedModules.keys()) {
|
|
409
453
|
if (modules[logicalPath])
|
|
410
454
|
continue;
|
|
455
|
+
if (skippedModules.has(logicalPath))
|
|
456
|
+
continue;
|
|
411
457
|
logger.warn("Module exceeds max size, skipping", {
|
|
412
458
|
path: logicalPath,
|
|
413
459
|
limit: RELEASE_ASSET_MAX_SIZE_BYTES,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-schema.d.ts","sourceRoot":"","sources":["../../../src/src/release-assets/manifest-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,+BAA+B,CAAC;AAkClF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"manifest-schema.d.ts","sourceRoot":"","sources":["../../../src/src/release-assets/manifest-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,+BAA+B,CAAC;AAkClF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoBzC,CAAC;AAMF,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAC5C,UAAU,CAAC,OAAO,6BAA6B,CAAC,CACjD,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AACxE,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AACvE,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,8EAA8E;AAC9E,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,UAAU,GACV,SAAS,GACT,OAAO,GACP,QAAQ,GACR,YAAY,CAAC;AAEjB,0DAA0D;AAC1D,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,yBAAyB,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACvC;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,GAAG,IAAI,CAuBrF"}
|
|
@@ -51,8 +51,9 @@ export const getReleaseAssetManifestSchema = defineSchema((v) => v.object({
|
|
|
51
51
|
modules: v.record(v.string(), v.object(assetEntryShape(v))),
|
|
52
52
|
css: v.array(v.object(cssEntryShape(v))),
|
|
53
53
|
routes: v.record(v.string(), v.object(routeEntryShape(v))),
|
|
54
|
-
// `dependencies`
|
|
55
|
-
//
|
|
54
|
+
// `dependencies` records framework dependency artifacts for future S7
|
|
55
|
+
// vendoring. HTML keeps import-map entries on module URLs until those
|
|
56
|
+
// artifacts include their own rewritten import closures.
|
|
56
57
|
dependencies: v.record(v.string(), v.object(assetEntryShape(v))),
|
|
57
58
|
fallback: v.object(fallbackShape(v)),
|
|
58
59
|
}));
|