weapp-vite 7.4.0 → 7.6.0
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 +59 -3
- package/THIRD_PARTY_NOTICES.md +60 -0
- package/bin/bootstrap.js +14 -1
- package/dist/action-B3YZMA-h.mjs +255 -0
- package/dist/action-BELcDNNv.mjs +139 -0
- package/dist/action-BOk3vGI7.mjs +1110 -0
- package/dist/action-DlC6JYpt.mjs +95 -0
- package/dist/action-zEDY7oh_.mjs +247 -0
- package/dist/adapters-CcHrsYaj.mjs +1 -0
- package/dist/analyze-DN79YOAH.mjs +184 -0
- package/dist/artifacts-BOyC9Fy-.mjs +106 -0
- package/dist/assets-C5_YYXNk.mjs +637 -0
- package/dist/auto-import-components/resolvers.mjs +1 -2
- package/dist/auto-import-presets/wevu-router.mjs +1 -2
- package/dist/auto-import-presets/wevu.mjs +1 -2
- package/dist/auto-routes.mjs +2 -1
- package/dist/budget-CTLOHwgI.d.mts +177 -0
- package/dist/budget-EOeEycc_.mjs +65 -0
- package/dist/builtProject-C29udgXY.mjs +541 -0
- package/dist/chunkStrategy-DY_LZIIe.mjs +1448 -0
- package/dist/classifier-DBJY__kg.mjs +88 -0
- package/dist/cli-acceptance.d.mts +1 -0
- package/dist/cli-acceptance.mjs +21 -0
- package/dist/cli.mjs +519 -5049
- package/dist/compatibility.mjs +1 -2
- package/dist/{config-Dbvj5yK7.d.mts → config-Bf6DWhyb.d.mts} +220 -76
- package/dist/config.d.mts +3 -3
- package/dist/config.mjs +1 -1
- package/dist/{constants-WOsG3Eqd.mjs → constants-DEZdcsMn.mjs} +1 -1
- package/dist/{createContext-UOEgeYnA.mjs → createCompilerContextInstance-aYwi8wQt.mjs} +36862 -32020
- package/dist/createContext-tApLtII-.mjs +15 -0
- package/dist/dashboard/analyze.d.mts +48 -0
- package/dist/dashboard/analyze.mjs +3 -0
- package/dist/dashboard/vite.d.mts +1 -1
- package/dist/dashboard.d.mts +3 -2
- package/dist/dashboard.mjs +1748 -1
- package/dist/dashboardTransport-C_Y6jMp-.mjs +16 -0
- package/dist/dashboardViteBridge-DCGR43aM.mjs +302 -0
- package/dist/dev-C2fgr_Xd.mjs +67 -0
- package/dist/devProvider-D-hTfsEO.mjs +3027 -0
- package/dist/docs/README.md +59 -3
- package/dist/docs/ai-workflows.md +4 -0
- package/dist/docs/doctor.md +38 -0
- package/dist/docs/getting-started.md +3 -1
- package/dist/docs/index.md +3 -1
- package/dist/docs/mcp.md +104 -1
- package/dist/docs/testing.md +29 -2
- package/dist/docs/troubleshooting.md +16 -0
- package/dist/docs/uni-app-component-libraries.md +8 -7
- package/dist/docs/upload.md +40 -3
- package/dist/docs/vite-plugin.md +171 -0
- package/dist/docs/vue-sfc.md +42 -0
- package/dist/docs/weapp-config.md +54 -0
- package/dist/docs/wevu-authoring.md +10 -0
- package/dist/doctor-worker.d.mts +1 -0
- package/dist/doctor-worker.mjs +60 -0
- package/dist/doctor.d.mts +144 -0
- package/dist/doctor.mjs +850 -0
- package/dist/engine-C66J0HLz.mjs +54 -0
- package/dist/eslint.mjs +1 -2
- package/dist/{file-giE9UMZa.mjs → file-CcIOmqhC.mjs} +58 -24
- package/dist/file-DtcteQ4G.mjs +1 -0
- package/dist/files-BqxFIPRp.mjs +45 -0
- package/dist/forwardConsole-B0Reo8Lf.mjs +511 -0
- package/dist/getInstance-BAIaU2y9.mjs +1 -0
- package/dist/getInstance-Dt9IQDKr.mjs +28 -0
- package/dist/history-BIiRCzbq.mjs +784 -0
- package/dist/i18n.d.mts +1 -1
- package/dist/index-D5rgBzYZ.d.mts +740 -0
- package/dist/index.d.mts +12 -10
- package/dist/index.mjs +3 -2
- package/dist/json.d.mts +1 -1
- package/dist/json.mjs +1 -2
- package/dist/lib-DjccSI1B.mjs +143 -0
- package/dist/lifecycle-C36WSbQS.mjs +413 -0
- package/dist/loadConfig-BWIsDXR4.mjs +59 -0
- package/dist/loadConfig-D-BpBgsk.mjs +1 -0
- package/dist/logBuildAppFinish-ChjwATMv.mjs +57 -0
- package/dist/logger-DGn5iEVN.mjs +1 -0
- package/dist/mcp-CYgX9HpO.mjs +86 -0
- package/dist/{mcp-BG6TliEg.mjs → mcp-Cj8Maqo6.mjs} +16 -7
- package/dist/mcp.d.mts +6 -3
- package/dist/mcp.mjs +1 -2
- package/dist/mcpClient-DVLvFLZv.mjs +287 -0
- package/dist/metadata-hwF7QRcS.mjs +59 -0
- package/dist/nodeEnv-BmH8UZPR.mjs +7 -0
- package/dist/openIde-CroqOgk5.mjs +648 -0
- package/dist/options-jqFwfD1G.mjs +34 -0
- package/dist/package-Cmakyy3J.mjs +4 -0
- package/dist/path-CYYIQGS7.mjs +44 -0
- package/dist/{platform-DTWs5QRi.mjs → platform-CnkySBKz.mjs} +1 -1
- package/dist/processCleanup-BQn2kTcK.mjs +19 -0
- package/dist/protocol-Cg6Jdlvb.mjs +141 -0
- package/dist/reader-sh_POQ9-.mjs +93 -0
- package/dist/realpathScope-Tf9mz-fh.mjs +23 -0
- package/dist/report-hyonPGbZ.mjs +107 -0
- package/dist/resolvedId-CiDl7SC1.mjs +60 -0
- package/dist/{resolvers-icNxkpcy.mjs → resolvers-Dod-euqX.mjs} +4 -1
- package/dist/resolvers.mjs +1 -2
- package/dist/runtime-CLUhQsdA.mjs +43 -0
- package/dist/{runtime-Ee2HY6gR.d.mts → runtime-DpVf714f.d.mts} +1 -1
- package/dist/runtime.d.mts +1 -1
- package/dist/runtime.mjs +1 -2
- package/dist/schematics-kO26eQRT.mjs +91 -0
- package/dist/session-D3zsdzIy.mjs +452 -0
- package/dist/test.d.mts +1 -0
- package/dist/test.mjs +204 -45
- package/dist/{types-CgZn5X6j.d.mts → types-D-kfuyVa.d.mts} +1 -2
- package/dist/types-D0FFexRF.d.mts +39 -0
- package/dist/types.d.mts +3 -3
- package/dist/{upload-D0RcEWrq.mjs → upload-DozK8UdN.mjs} +278 -15
- package/dist/upload-worker.mjs +136 -3
- package/dist/utils-Dy51PYAC.mjs +1034 -0
- package/dist/vite.d.mts +9 -0
- package/dist/vite.mjs +309 -0
- package/dist/volar.d.mts +2 -2
- package/dist/web-apis.mjs +1 -2
- package/dist/wxs-BT8btflA.mjs +112 -0
- package/dist/wxs-Z4VQDeJ_.mjs +1 -0
- package/package.json +80 -48
- package/dist/adapters-BwnMMIZR.mjs +0 -2
- package/dist/dashboard-BzaVesmQ.mjs +0 -558
- package/dist/file-D19nbDoN.mjs +0 -2
- package/dist/getInstance-CYF1vl5l.mjs +0 -2
- package/dist/index-DbqVupg0.d.mts +0 -246
- package/dist/logger-mt4mSTqV.mjs +0 -2
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import path from "pathe";
|
|
2
|
+
import { normalize } from "node:path";
|
|
3
|
+
//#region src/utils/path.ts
|
|
4
|
+
const BACKSLASH_RE = /\\/g;
|
|
5
|
+
const LEADING_SLASH_RE = /^[\\/]+/;
|
|
6
|
+
const DUPLICATE_SLASH_RE = /\/{2,}/g;
|
|
7
|
+
const TRIM_SLASH_RE = /^\/+|\/+$/g;
|
|
8
|
+
const WINDOWS_DEVICE_RE = /^\\\\\?\\/;
|
|
9
|
+
const WINDOWS_UNC_PREFIX = /^\\\\\?\\UNC\\/;
|
|
10
|
+
function stripWindowsDevicePath(value) {
|
|
11
|
+
if (WINDOWS_UNC_PREFIX.test(value)) return `\\\\${value.slice(8)}`;
|
|
12
|
+
if (WINDOWS_DEVICE_RE.test(value)) return value.slice(4);
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
function toPosixPath(value) {
|
|
16
|
+
return value.replace(BACKSLASH_RE, "/");
|
|
17
|
+
}
|
|
18
|
+
function normalizePath(value) {
|
|
19
|
+
if (!value) return value;
|
|
20
|
+
const cleaned = stripWindowsDevicePath(value);
|
|
21
|
+
return toPosixPath(path.normalize(cleaned));
|
|
22
|
+
}
|
|
23
|
+
function normalizeRelativePath(value) {
|
|
24
|
+
if (value === "") return value;
|
|
25
|
+
return normalizePath(value);
|
|
26
|
+
}
|
|
27
|
+
function normalizeWatchPath(value) {
|
|
28
|
+
if (!value) return value;
|
|
29
|
+
const posix = toPosixPath(stripWindowsDevicePath(value));
|
|
30
|
+
return toPosixPath(normalize(posix));
|
|
31
|
+
}
|
|
32
|
+
function stripLeadingSlashes(value) {
|
|
33
|
+
return value.replace(LEADING_SLASH_RE, "");
|
|
34
|
+
}
|
|
35
|
+
function normalizeRoot(root) {
|
|
36
|
+
return toPosixPath(root).replace(DUPLICATE_SLASH_RE, "/").replace(TRIM_SLASH_RE, "");
|
|
37
|
+
}
|
|
38
|
+
function isPathInside(parent, target) {
|
|
39
|
+
if (!parent) return false;
|
|
40
|
+
const relative = path.relative(normalizePath(parent), normalizePath(target));
|
|
41
|
+
return relative === "" || relative !== ".." && !relative.startsWith("../") && !path.isAbsolute(relative);
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { normalizeWatchPath as a, normalizeRoot as i, normalizePath as n, stripLeadingSlashes as o, normalizeRelativePath as r, toPosixPath as s, isPathInside as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as MINI_PROGRAM_PLATFORM_ADAPTERS } from "./adapters-
|
|
1
|
+
import { t as MINI_PROGRAM_PLATFORM_ADAPTERS } from "./adapters-CcHrsYaj.mjs";
|
|
2
2
|
import { MINI_PROGRAM_PLATFORM_ALIASES, getDefaultMiniProgramPlatform, getMiniProgramAppTypesPackage, getMiniProgramDirectivePrefix, getSupportedMiniProgramPlatforms, normalizeMiniProgramPlatform, resolveMiniProgramPlatform } from "@weapp-core/shared";
|
|
3
3
|
//#region src/platform.ts
|
|
4
4
|
const DEFAULT_MP_PLATFORM = getDefaultMiniProgramPlatform();
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
//#region src/cli/processCleanup.ts
|
|
3
|
+
function isSassEmbeddedChild(handle) {
|
|
4
|
+
if (!handle || typeof handle !== "object") return false;
|
|
5
|
+
const child = handle;
|
|
6
|
+
const spawnfile = typeof child.spawnfile === "string" ? child.spawnfile : "";
|
|
7
|
+
const spawnargs = Array.isArray(child.spawnargs) ? child.spawnargs : [];
|
|
8
|
+
return Boolean("kill" in handle && "spawnfile" in handle && (spawnfile.includes("sass-embedded") || spawnfile.includes("dart-sass") && spawnargs.includes("--embedded")));
|
|
9
|
+
}
|
|
10
|
+
function terminateStaleSassEmbeddedProcess() {
|
|
11
|
+
const getHandles = process._getActiveHandles;
|
|
12
|
+
const handles = typeof getHandles === "function" ? getHandles() : void 0;
|
|
13
|
+
if (!Array.isArray(handles)) return;
|
|
14
|
+
for (const handle of handles) if (isSassEmbeddedChild(handle)) try {
|
|
15
|
+
handle.kill();
|
|
16
|
+
} catch {}
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { terminateStaleSassEmbeddedProcess as t };
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { t as resolveRealpath } from "./realpathScope-Tf9mz-fh.mjs";
|
|
2
|
+
import { WEAPP_VITE_LOGICAL_ENTRY_RESOLVED_PREFIX, WEAPP_VITE_LOGICAL_ENTRY_VIRTUAL_PREFIX, WEAPP_VITE_SIDECAR_OWNER_QUERY_MARKER, WEAPP_VITE_SIDECAR_QUERY_MARKER, WEAPP_VITE_SIDECAR_RESOLVED_PREFIX, WEAPP_VITE_SIDECAR_VIRTUAL_PREFIX } from "@weapp-core/constants";
|
|
3
|
+
import path from "pathe";
|
|
4
|
+
//#region src/moduleGraph/protocol.ts
|
|
5
|
+
const VIRTUAL_MODULE_SUFFIX = ":module.js";
|
|
6
|
+
const SIDECAR_SOURCE_JS_SUFFIX = "&lang.js";
|
|
7
|
+
const SIDECAR_SOURCE_STYLE_SUFFIX = "&lang.css";
|
|
8
|
+
function normalizeProtocolPath(id) {
|
|
9
|
+
const normalized = path.normalize(id.replaceAll("\\", "/"));
|
|
10
|
+
if (!path.isAbsolute(normalized)) return normalized;
|
|
11
|
+
try {
|
|
12
|
+
return path.normalize(resolveRealpath(normalized));
|
|
13
|
+
} catch {
|
|
14
|
+
return normalized;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function normalizeSidecarRequest(ownerId, sourceId, kind, dependencyOnly) {
|
|
18
|
+
const owner = normalizeProtocolPath(ownerId);
|
|
19
|
+
return {
|
|
20
|
+
kind,
|
|
21
|
+
ownerId: owner,
|
|
22
|
+
sourceId: sourceId === ownerId ? owner : normalizeProtocolPath(sourceId),
|
|
23
|
+
...dependencyOnly ? { dependencyOnly } : {}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function decodePath(id) {
|
|
27
|
+
return normalizeProtocolPath(decodeURIComponent(id));
|
|
28
|
+
}
|
|
29
|
+
function resolveProtocolPrefix(id, virtualPrefix, resolvedPrefix) {
|
|
30
|
+
if (id.startsWith(resolvedPrefix)) return id.slice(resolvedPrefix.length);
|
|
31
|
+
if (id.startsWith(virtualPrefix)) return id.slice(virtualPrefix.length);
|
|
32
|
+
}
|
|
33
|
+
function serializeLogicalEntry(request, prefix) {
|
|
34
|
+
return `${prefix}${request.type}:${encodeURIComponent(request.sourceId)}${VIRTUAL_MODULE_SUFFIX}`;
|
|
35
|
+
}
|
|
36
|
+
function createLogicalEntryId(sourceId, type) {
|
|
37
|
+
return serializeLogicalEntry({
|
|
38
|
+
sourceId: normalizeProtocolPath(sourceId),
|
|
39
|
+
type
|
|
40
|
+
}, WEAPP_VITE_LOGICAL_ENTRY_RESOLVED_PREFIX);
|
|
41
|
+
}
|
|
42
|
+
function parseLogicalEntryId(id) {
|
|
43
|
+
const request = resolveProtocolPrefix(id, WEAPP_VITE_LOGICAL_ENTRY_VIRTUAL_PREFIX, WEAPP_VITE_LOGICAL_ENTRY_RESOLVED_PREFIX);
|
|
44
|
+
if (!request) return;
|
|
45
|
+
if (!request.endsWith(VIRTUAL_MODULE_SUFFIX)) return;
|
|
46
|
+
const normalizedRequest = request.slice(0, -10);
|
|
47
|
+
const separator = normalizedRequest.indexOf(":");
|
|
48
|
+
if (separator < 0) return;
|
|
49
|
+
const type = normalizedRequest.slice(0, separator);
|
|
50
|
+
if (![
|
|
51
|
+
"app",
|
|
52
|
+
"page",
|
|
53
|
+
"component",
|
|
54
|
+
"layout"
|
|
55
|
+
].includes(type)) return;
|
|
56
|
+
return {
|
|
57
|
+
sourceId: decodePath(normalizedRequest.slice(separator + 1)),
|
|
58
|
+
type
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function serializeSidecarModule(request, prefix) {
|
|
62
|
+
return `${prefix}${request.kind}:${encodeURIComponent(request.ownerId)}:${encodeURIComponent(request.sourceId)}${VIRTUAL_MODULE_SUFFIX}`;
|
|
63
|
+
}
|
|
64
|
+
function createSidecarModuleId(ownerId, sourceId, kind) {
|
|
65
|
+
return serializeSidecarModule(normalizeSidecarRequest(ownerId, sourceId, kind), WEAPP_VITE_SIDECAR_RESOLVED_PREFIX);
|
|
66
|
+
}
|
|
67
|
+
function parseSidecarModuleId(id) {
|
|
68
|
+
const request = resolveProtocolPrefix(id, WEAPP_VITE_SIDECAR_VIRTUAL_PREFIX, WEAPP_VITE_SIDECAR_RESOLVED_PREFIX);
|
|
69
|
+
if (!request) return;
|
|
70
|
+
if (!request.endsWith(VIRTUAL_MODULE_SUFFIX)) return;
|
|
71
|
+
const [kind, ownerId, sourceId, ...rest] = request.slice(0, -10).split(":");
|
|
72
|
+
if (rest.length || !kind || !ownerId || !sourceId || ![
|
|
73
|
+
"json",
|
|
74
|
+
"jsx",
|
|
75
|
+
"layout",
|
|
76
|
+
"script",
|
|
77
|
+
"style",
|
|
78
|
+
"template",
|
|
79
|
+
"using-component",
|
|
80
|
+
"wxs"
|
|
81
|
+
].includes(kind)) return;
|
|
82
|
+
return normalizeSidecarRequest(decodeURIComponent(ownerId), decodeURIComponent(sourceId), kind);
|
|
83
|
+
}
|
|
84
|
+
function createSidecarSourceSpecifier(ownerId, sourceId, kind, dependencyOnly = false) {
|
|
85
|
+
const emitsStyle = kind === "style" && !dependencyOnly;
|
|
86
|
+
const queryPrefix = emitsStyle ? "?" : "?raw&";
|
|
87
|
+
const suffix = emitsStyle ? SIDECAR_SOURCE_STYLE_SUFFIX : SIDECAR_SOURCE_JS_SUFFIX;
|
|
88
|
+
const normalized = normalizeSidecarRequest(ownerId, sourceId, kind);
|
|
89
|
+
return `${normalized.sourceId}${queryPrefix}${WEAPP_VITE_SIDECAR_OWNER_QUERY_MARKER}=${encodeURIComponent(normalized.ownerId)}&${WEAPP_VITE_SIDECAR_QUERY_MARKER}=${kind}${suffix}`;
|
|
90
|
+
}
|
|
91
|
+
function readSidecarSourceRequest(id) {
|
|
92
|
+
const queryIndex = id.indexOf("?");
|
|
93
|
+
if (queryIndex < 0) return;
|
|
94
|
+
const query = new URLSearchParams(id.slice(queryIndex + 1));
|
|
95
|
+
const kind = query.get(WEAPP_VITE_SIDECAR_QUERY_MARKER);
|
|
96
|
+
const ownerId = query.get(WEAPP_VITE_SIDECAR_OWNER_QUERY_MARKER);
|
|
97
|
+
if (!kind || ![
|
|
98
|
+
"json",
|
|
99
|
+
"jsx",
|
|
100
|
+
"layout",
|
|
101
|
+
"script",
|
|
102
|
+
"style",
|
|
103
|
+
"template",
|
|
104
|
+
"using-component",
|
|
105
|
+
"wxs"
|
|
106
|
+
].includes(kind)) return;
|
|
107
|
+
if (!ownerId) return;
|
|
108
|
+
const isStyle = kind === "style";
|
|
109
|
+
const dependencyOnly = isStyle && query.has("raw");
|
|
110
|
+
const emitsStyle = isStyle && !dependencyOnly;
|
|
111
|
+
const hasExpectedLang = query.has(emitsStyle ? "lang.css" : "lang.js");
|
|
112
|
+
const hasUnexpectedLang = query.has(emitsStyle ? "lang.js" : "lang.css");
|
|
113
|
+
const hasExpectedRawMode = query.has("raw") !== emitsStyle;
|
|
114
|
+
if (!hasExpectedLang || hasUnexpectedLang || !hasExpectedRawMode) return;
|
|
115
|
+
return {
|
|
116
|
+
kind,
|
|
117
|
+
ownerId,
|
|
118
|
+
sourceId: id.slice(0, queryIndex),
|
|
119
|
+
...dependencyOnly ? { dependencyOnly: true } : {}
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function parseSidecarSourceRequest(id) {
|
|
123
|
+
const request = readSidecarSourceRequest(id);
|
|
124
|
+
if (request) return normalizeSidecarRequest(request.ownerId, request.sourceId, request.kind, request.dependencyOnly);
|
|
125
|
+
}
|
|
126
|
+
/** 仅校验协议及交付类型;需要文件身份的图操作仍使用完整路径解析。 */
|
|
127
|
+
function parseSidecarSourceMetadata(id) {
|
|
128
|
+
const request = readSidecarSourceRequest(id);
|
|
129
|
+
if (request) return {
|
|
130
|
+
kind: request.kind,
|
|
131
|
+
...request.dependencyOnly ? { dependencyOnly: true } : {}
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function resolveVirtualModuleId(id) {
|
|
135
|
+
const logicalEntry = parseLogicalEntryId(id);
|
|
136
|
+
if (logicalEntry) return serializeLogicalEntry(logicalEntry, WEAPP_VITE_LOGICAL_ENTRY_RESOLVED_PREFIX);
|
|
137
|
+
const sidecar = parseSidecarModuleId(id);
|
|
138
|
+
if (sidecar) return serializeSidecarModule(sidecar, WEAPP_VITE_SIDECAR_RESOLVED_PREFIX);
|
|
139
|
+
}
|
|
140
|
+
//#endregion
|
|
141
|
+
export { parseSidecarModuleId as a, resolveVirtualModuleId as c, parseLogicalEntryId as i, createSidecarModuleId as n, parseSidecarSourceMetadata as o, createSidecarSourceSpecifier as r, parseSidecarSourceRequest as s, createLogicalEntryId as t };
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
//#region src/analyze/hmr/reader.ts
|
|
2
|
+
const stringFields = [
|
|
3
|
+
"timestamp",
|
|
4
|
+
"eventId",
|
|
5
|
+
"event",
|
|
6
|
+
"file",
|
|
7
|
+
"relativeFile",
|
|
8
|
+
"sourceRootFile",
|
|
9
|
+
"sessionId",
|
|
10
|
+
"buildId",
|
|
11
|
+
"batchId"
|
|
12
|
+
];
|
|
13
|
+
const collectionFields = ["dirtyReasonSummary", "pendingReasonSummary"];
|
|
14
|
+
function isSourceEvent(value) {
|
|
15
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
16
|
+
const event = value;
|
|
17
|
+
return typeof event.eventId === "string" && (event.file === void 0 || typeof event.file === "string") && (event.event === void 0 || typeof event.event === "string" && [
|
|
18
|
+
"update",
|
|
19
|
+
"create",
|
|
20
|
+
"delete"
|
|
21
|
+
].includes(event.event)) && typeof event.receivedAtMs === "number" && Number.isFinite(event.receivedAtMs) && event.receivedAtMs >= 0;
|
|
22
|
+
}
|
|
23
|
+
function isSample(value) {
|
|
24
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
25
|
+
const sample = value;
|
|
26
|
+
for (const [key, values] of Object.entries({
|
|
27
|
+
pipeline: ["standard", "stateful"],
|
|
28
|
+
profileMode: [
|
|
29
|
+
"delivery",
|
|
30
|
+
"full",
|
|
31
|
+
"refresh"
|
|
32
|
+
],
|
|
33
|
+
completionBoundary: ["delivery-acknowledged", "output-published"]
|
|
34
|
+
})) if (sample[key] !== void 0 && (typeof sample[key] !== "string" || !values.includes(sample[key]))) return false;
|
|
35
|
+
if (typeof sample.totalMs !== "number" || !Number.isFinite(sample.totalMs) || sample.totalMs < 0) return false;
|
|
36
|
+
if (stringFields.some((key) => sample[key] !== void 0 && typeof sample[key] !== "string")) return false;
|
|
37
|
+
if (collectionFields.some((key) => {
|
|
38
|
+
const items = sample[key];
|
|
39
|
+
return items !== void 0 && (!Array.isArray(items) || items.some((item) => typeof item !== "string"));
|
|
40
|
+
})) return false;
|
|
41
|
+
if (sample.sourceEvents !== void 0 && (!Array.isArray(sample.sourceEvents) || !sample.sourceEvents.every(isSourceEvent))) return false;
|
|
42
|
+
return Object.entries(sample).every(([key, value]) => {
|
|
43
|
+
if (!key.endsWith("Ms") && !key.endsWith("Count")) return true;
|
|
44
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0 && (!key.endsWith("Count") || Number.isInteger(value));
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/** 旧版仍可读取;不兼容、失败和未完成记录不参与正常耗时统计,缺失阶段不补零。 */
|
|
48
|
+
function readHmrProfileLines(content) {
|
|
49
|
+
const samples = [];
|
|
50
|
+
const coverage = {
|
|
51
|
+
legacy: 0,
|
|
52
|
+
compatible: 0,
|
|
53
|
+
incompatible: 0,
|
|
54
|
+
incomplete: 0,
|
|
55
|
+
invalid: 0
|
|
56
|
+
};
|
|
57
|
+
for (const line of content.split(/\r?\n/)) {
|
|
58
|
+
if (!line.trim()) continue;
|
|
59
|
+
let value;
|
|
60
|
+
try {
|
|
61
|
+
value = JSON.parse(line);
|
|
62
|
+
} catch {
|
|
63
|
+
coverage.invalid += 1;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
67
|
+
coverage.invalid += 1;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const record = value;
|
|
71
|
+
if (record.schemaVersion !== void 0 && record.schemaVersion !== 1) {
|
|
72
|
+
coverage.incompatible += 1;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (record.status === "incomplete" || record.status === "failed") {
|
|
76
|
+
coverage.incomplete += 1;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (record.status !== void 0 && record.status !== "complete" || record.schemaVersion === 1 && record.status !== "complete" || !isSample(record)) {
|
|
80
|
+
coverage.invalid += 1;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
coverage[record.schemaVersion === void 0 ? "legacy" : "compatible"] += 1;
|
|
84
|
+
samples.push(record);
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
samples,
|
|
88
|
+
coverage,
|
|
89
|
+
skippedLineCount: coverage.incompatible + coverage.incomplete + coverage.invalid
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//#endregion
|
|
93
|
+
export { readHmrProfileLines as t };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { realpathSync } from "node:fs";
|
|
2
|
+
//#region src/utils/realpathScope.ts
|
|
3
|
+
let activePaths;
|
|
4
|
+
/** 仅在同步图遍历中复用成功的真实路径解析;不跨事件、构建或异步边界保留。 */
|
|
5
|
+
function withRealpathScope(read) {
|
|
6
|
+
const previous = activePaths;
|
|
7
|
+
activePaths ??= /* @__PURE__ */ new Map();
|
|
8
|
+
try {
|
|
9
|
+
return read();
|
|
10
|
+
} finally {
|
|
11
|
+
activePaths = previous;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/** 失败保持原始异常语义,避免缺失文件在随后创建后仍命中失败缓存。 */
|
|
15
|
+
function resolveRealpath(file) {
|
|
16
|
+
const cached = activePaths?.get(file);
|
|
17
|
+
if (cached !== void 0) return cached;
|
|
18
|
+
const resolved = realpathSync.native(file);
|
|
19
|
+
activePaths?.set(file, resolved);
|
|
20
|
+
return resolved;
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { withRealpathScope as n, resolveRealpath as t };
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { parseArgs } from "node:util";
|
|
3
|
+
//#region src/cli/upload/options.ts
|
|
4
|
+
function readUploadMetadata(cli) {
|
|
5
|
+
for (const name of [
|
|
6
|
+
"uv",
|
|
7
|
+
"desc",
|
|
8
|
+
"bump"
|
|
9
|
+
]) {
|
|
10
|
+
const value = cli.options[name];
|
|
11
|
+
if (typeof value === "boolean" || Array.isArray(value) && value.some((item) => typeof item === "boolean")) throw new Error(`--${name} 需要指定字符串参数。`);
|
|
12
|
+
}
|
|
13
|
+
const { values } = parseArgs({
|
|
14
|
+
args: cli.rawArgs.slice(2),
|
|
15
|
+
allowPositionals: true,
|
|
16
|
+
strict: false,
|
|
17
|
+
options: {
|
|
18
|
+
uv: { type: "string" },
|
|
19
|
+
desc: { type: "string" },
|
|
20
|
+
bump: { type: "string" }
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
uv: typeof values.uv === "string" ? values.uv : void 0,
|
|
25
|
+
desc: typeof values.desc === "string" ? values.desc : void 0,
|
|
26
|
+
bump: typeof values.bump === "string" ? values.bump : void 0
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** 超时只约束单个平台的 SDK 进程,不含构建;未指定时不改变原有等待行为。 */
|
|
30
|
+
function resolveUploadTimeout(value) {
|
|
31
|
+
if (value === void 0) return;
|
|
32
|
+
const seconds = typeof value === "number" ? value : Number(value);
|
|
33
|
+
const milliseconds = Math.round(seconds * 1e3);
|
|
34
|
+
if (typeof value !== "string" && typeof value !== "number" || !Number.isFinite(milliseconds) || milliseconds / 1e3 !== seconds || milliseconds <= 0 || milliseconds > 2147483647) throw new Error("--timeout 必须为正数秒,精度不超过毫秒且不能超过 2147483.647 秒。");
|
|
35
|
+
return milliseconds;
|
|
36
|
+
}
|
|
37
|
+
/** 普通构建不读取上传元数据;上传必须是显式的一次性构建操作。 */
|
|
38
|
+
function resolveBuildUploadOptions(cli, options) {
|
|
39
|
+
if (options.upload !== true) {
|
|
40
|
+
if (options.uv !== void 0 || options.desc !== void 0 || options.bump !== void 0 || options.gitDesc !== void 0 || options.dryRun !== void 0) throw new Error("--uv、--desc、--bump、--git-desc 和 --dry-run 仅能与 --upload 一起使用。");
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (options.watch) throw new Error("--upload 不能与 --watch 一起使用,请执行一次性构建。");
|
|
44
|
+
return {
|
|
45
|
+
...options,
|
|
46
|
+
...readUploadMetadata(cli)
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
//#region src/cli/upload/report.ts
|
|
51
|
+
var UploadCommandError = class extends Error {
|
|
52
|
+
report;
|
|
53
|
+
constructor(report) {
|
|
54
|
+
super(report.error);
|
|
55
|
+
this.report = report;
|
|
56
|
+
this.name = "UploadCommandError";
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
function createFailedUploadReport(error) {
|
|
60
|
+
return {
|
|
61
|
+
schemaVersion: 1,
|
|
62
|
+
action: "upload",
|
|
63
|
+
status: "failed",
|
|
64
|
+
results: [],
|
|
65
|
+
error: error instanceof Error ? error.message : String(error)
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function printUploadProgress(platform, event) {
|
|
69
|
+
const percent = event.percent === void 0 ? "" : ` ${event.percent}%`;
|
|
70
|
+
process.stderr.write(`[upload:${platform}] ${event.type}${percent}${event.message ? ` ${event.message}` : ""}\n`);
|
|
71
|
+
}
|
|
72
|
+
function printUploadSummary(report) {
|
|
73
|
+
const labels = {
|
|
74
|
+
"success": "上传成功",
|
|
75
|
+
"failed": "失败",
|
|
76
|
+
"not-run": "未执行",
|
|
77
|
+
"dry-run": "仅构建",
|
|
78
|
+
"unknown": "远端结果未确认"
|
|
79
|
+
};
|
|
80
|
+
for (const item of report.results) process.stderr.write(`[upload:${item.platform ?? "配置平台"}] ${labels[item.status]}${item.requestedVersion ? ` ${item.requestedVersion}` : ""} (${item.stage})\n`);
|
|
81
|
+
}
|
|
82
|
+
/** JSON 模式独占 stdout,构建配置及第三方工具的普通日志只进入 stderr。 */
|
|
83
|
+
async function outputUploadReport(json, run) {
|
|
84
|
+
const stdoutWrite = process.stdout.write;
|
|
85
|
+
if (json) process.stdout.write = process.stderr.write.bind(process.stderr);
|
|
86
|
+
try {
|
|
87
|
+
let report;
|
|
88
|
+
try {
|
|
89
|
+
report = await run();
|
|
90
|
+
} catch (error) {
|
|
91
|
+
report = error instanceof UploadCommandError ? error.report : createFailedUploadReport(error);
|
|
92
|
+
}
|
|
93
|
+
if (json) {
|
|
94
|
+
await new Promise((resolve, reject) => {
|
|
95
|
+
stdoutWrite.call(process.stdout, `${JSON.stringify(report)}\n`, "utf8", (error) => error ? reject(error) : resolve());
|
|
96
|
+
});
|
|
97
|
+
if (report.status === "failed") process.exitCode = 1;
|
|
98
|
+
} else {
|
|
99
|
+
printUploadSummary(report);
|
|
100
|
+
if (report.status === "failed") throw new UploadCommandError(report);
|
|
101
|
+
}
|
|
102
|
+
} finally {
|
|
103
|
+
process.stdout.write = stdoutWrite;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//#endregion
|
|
107
|
+
export { resolveBuildUploadOptions as a, readUploadMetadata as i, outputUploadReport as n, resolveUploadTimeout as o, printUploadProgress as r, UploadCommandError as t };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { fileURLToPath } from "node:url";
|
|
2
|
+
//#region src/utils/viteId.ts
|
|
3
|
+
const VUE_VIRTUAL_MODULE_PREFIX = "\0vue:";
|
|
4
|
+
const BACKSLASH_RE = /\\/g;
|
|
5
|
+
const WINDOWS_VITE_AT_FS_DRIVE_RE = /^\/[A-Z]:\//i;
|
|
6
|
+
function stripViteAtFsPrefix(id) {
|
|
7
|
+
if (!id.startsWith("/@fs/")) return id;
|
|
8
|
+
let clean = id.slice(4);
|
|
9
|
+
if (WINDOWS_VITE_AT_FS_DRIVE_RE.test(clean)) clean = clean.slice(1);
|
|
10
|
+
return clean;
|
|
11
|
+
}
|
|
12
|
+
function normalizeViteId(id, options) {
|
|
13
|
+
const stripQuery = options?.stripQuery !== false;
|
|
14
|
+
const fileProtocolToPathEnabled = options?.fileProtocolToPath !== false;
|
|
15
|
+
const stripAtFsPrefix = options?.stripAtFsPrefix !== false;
|
|
16
|
+
const stripVueVirtualPrefix = options?.stripVueVirtualPrefix === true;
|
|
17
|
+
const stripLeadingNullByte = options?.stripLeadingNullByte === true;
|
|
18
|
+
let clean = id;
|
|
19
|
+
if (stripVueVirtualPrefix && clean.startsWith(VUE_VIRTUAL_MODULE_PREFIX)) clean = clean.slice(5);
|
|
20
|
+
if (stripQuery) clean = clean.split("?", 1)[0];
|
|
21
|
+
if (fileProtocolToPathEnabled && clean.startsWith("file://")) try {
|
|
22
|
+
clean = fileURLToPath(clean);
|
|
23
|
+
} catch {
|
|
24
|
+
try {
|
|
25
|
+
clean = decodeURIComponent(new URL(clean).pathname);
|
|
26
|
+
} catch {}
|
|
27
|
+
}
|
|
28
|
+
if (stripAtFsPrefix) clean = stripViteAtFsPrefix(clean);
|
|
29
|
+
if (stripLeadingNullByte && clean.startsWith("\0")) clean = clean.slice(1);
|
|
30
|
+
if (clean.includes("\\")) clean = clean.replace(BACKSLASH_RE, "/");
|
|
31
|
+
return clean;
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region src/utils/resolvedId.ts
|
|
35
|
+
function isSkippableResolvedId(id) {
|
|
36
|
+
if (!id) return true;
|
|
37
|
+
return id.startsWith("\0") || id.startsWith("node:");
|
|
38
|
+
}
|
|
39
|
+
function resolveFsResolvedIdNormalizeOptions(options) {
|
|
40
|
+
const normalizeOptions = { stripVueVirtualPrefix: true };
|
|
41
|
+
if (options?.normalize) Object.assign(normalizeOptions, options.normalize);
|
|
42
|
+
if (options?.stripLeadingNullByte) normalizeOptions.stripLeadingNullByte = true;
|
|
43
|
+
return normalizeOptions;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 将 Vite/Rolldown resolve 出来的 id 归一化为可用于 fs 读取/判断的路径形式。
|
|
47
|
+
*
|
|
48
|
+
* 默认会:
|
|
49
|
+
* - 去掉 query(?xxx)
|
|
50
|
+
* - 处理 `file://` URL
|
|
51
|
+
* - 处理 `/@fs/` 前缀
|
|
52
|
+
* - 可选剥离 `\0vue:` 前缀(默认开启)
|
|
53
|
+
*
|
|
54
|
+
* 注意:默认不剥离 `\0`,因为 `\0` 常用作虚拟模块标记,通常应当直接跳过。
|
|
55
|
+
*/
|
|
56
|
+
function normalizeFsResolvedId(id, options) {
|
|
57
|
+
return normalizeViteId(id, resolveFsResolvedIdNormalizeOptions(options));
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
export { normalizeFsResolvedId as n, normalizeViteId as r, isSkippableResolvedId as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
|
+
import process from "node:process";
|
|
2
3
|
import path from "pathe";
|
|
3
4
|
import { defu } from "@weapp-core/shared";
|
|
4
|
-
import process from "node:process";
|
|
5
5
|
//#region src/auto-import-components/resolvers/json/tdesign.json
|
|
6
6
|
var tdesign_default = [
|
|
7
7
|
"action-sheet",
|
|
@@ -200,6 +200,7 @@ var uviewPlus_default = [
|
|
|
200
200
|
"u-dropdown",
|
|
201
201
|
"u-dropdown-item",
|
|
202
202
|
"u-empty",
|
|
203
|
+
"u-flex",
|
|
203
204
|
"u-float-button",
|
|
204
205
|
"u-form",
|
|
205
206
|
"u-form-item",
|
|
@@ -292,6 +293,7 @@ var uviewPlus_default = [
|
|
|
292
293
|
"u-transition",
|
|
293
294
|
"u-tree",
|
|
294
295
|
"u-upload",
|
|
296
|
+
"u-video",
|
|
295
297
|
"u-view",
|
|
296
298
|
"u-virtual-list",
|
|
297
299
|
"u-waterfall"
|
|
@@ -595,6 +597,7 @@ var wotUi_default = [
|
|
|
595
597
|
"wd-popover",
|
|
596
598
|
"wd-popup",
|
|
597
599
|
"wd-progress",
|
|
600
|
+
"wd-qr-code",
|
|
598
601
|
"wd-radio",
|
|
599
602
|
"wd-radio-group",
|
|
600
603
|
"wd-rate",
|
package/dist/resolvers.mjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { TDesignResolver, UviewPlusResolver, VantResolver, WeuiResolver, WotUiResolver };
|
|
1
|
+
export { a as TDesignResolver, i as UviewPlusResolver, r as VantResolver, n as WeuiResolver, t as WotUiResolver } from "./resolvers-Dod-euqX.mjs";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { l as resolveBackendExecution } from "./createCompilerContextInstance-aYwi8wQt.mjs";
|
|
2
|
+
import { r as logger_default, t as colors } from "./logger-DGn5iEVN.mjs";
|
|
3
|
+
import { defu } from "@weapp-core/shared";
|
|
4
|
+
//#region src/cli/runtime.ts
|
|
5
|
+
function logRuntimeTarget(targets, options = {}) {
|
|
6
|
+
if (options.silent) return;
|
|
7
|
+
if (targets.label === "config") {
|
|
8
|
+
const resolvedPlatform = targets.platform ?? options.resolvedConfigPlatform;
|
|
9
|
+
if (resolvedPlatform) {
|
|
10
|
+
logger_default.info(`目标平台:${colors.green(resolvedPlatform)}`);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
logger_default.info(`目标平台:使用配置文件中的 ${colors.bold(colors.green("weapp.platform"))}`);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
logger_default.info(`目标平台:${colors.green(targets.label)}`);
|
|
17
|
+
}
|
|
18
|
+
function resolveRuntimeTargets(options) {
|
|
19
|
+
const rawPlatform = typeof options.platform === "string" ? options.platform : typeof options.p === "string" ? options.p : void 0;
|
|
20
|
+
const execution = resolveBackendExecution(rawPlatform, { warn: (message) => logger_default.warn(message) });
|
|
21
|
+
const miniBackend = execution.get("miniprogram");
|
|
22
|
+
return {
|
|
23
|
+
...execution,
|
|
24
|
+
platform: miniBackend?.platform,
|
|
25
|
+
rawPlatform
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function resolveConfiguredRuntimeTargets(targets, platform) {
|
|
29
|
+
return targets.rawPlatform === void 0 && platform === "web" ? resolveRuntimeTargets({ platform: "web" }) : targets;
|
|
30
|
+
}
|
|
31
|
+
function createInlineConfig(execution, options = {}) {
|
|
32
|
+
const configs = execution.entries.map((entry) => entry.driver.createInlineConfig({
|
|
33
|
+
execution,
|
|
34
|
+
platform: entry.platform,
|
|
35
|
+
scope: options.scope,
|
|
36
|
+
host: options.host
|
|
37
|
+
})).filter((config) => Boolean(config));
|
|
38
|
+
if (configs.length === 0) return options.inlineConfig;
|
|
39
|
+
const merged = configs.slice(1).reduce((merged, config) => defu(merged, config), configs[0]);
|
|
40
|
+
return options.inlineConfig ? defu(options.inlineConfig, merged) : merged;
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { resolveRuntimeTargets as i, logRuntimeTarget as n, resolveConfiguredRuntimeTargets as r, createInlineConfig as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ComputedDefinitions, MethodDefinitions, WevuPageLayoutMap } from "wevu";
|
|
1
|
+
import { ComputedDefinitions, MethodDefinitions, WevuPageLayoutMap } from "wevu/types";
|
|
2
2
|
//#region src/plugins/vue/createWevuComponent.d.ts
|
|
3
3
|
interface WevuComponentOptions<D extends object = Record<string, any>, C extends ComputedDefinitions = ComputedDefinitions, M extends MethodDefinitions = MethodDefinitions> {
|
|
4
4
|
data?: () => D;
|
package/dist/runtime.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as LayoutHostContext, c as LayoutHostResolver, d as unregisterLayoutHosts, f as waitForLayoutHost, i as LayoutHostBridge, l as registerLayoutHosts, m as createWevuComponent, n as defineProps, o as LayoutHostEntry, p as WevuComponentOptions, r as setPageLayout, s as LayoutHostResolveOptions, t as defineEmits, u as resolveLayoutHost } from "./runtime-
|
|
1
|
+
import { a as LayoutHostContext, c as LayoutHostResolver, d as unregisterLayoutHosts, f as waitForLayoutHost, i as LayoutHostBridge, l as registerLayoutHosts, m as createWevuComponent, n as defineProps, o as LayoutHostEntry, p as WevuComponentOptions, r as setPageLayout, s as LayoutHostResolveOptions, t as defineEmits, u as resolveLayoutHost } from "./runtime-DpVf714f.mjs";
|
|
2
2
|
export { type LayoutHostBridge, type LayoutHostContext, type LayoutHostEntry, type LayoutHostResolveOptions, type LayoutHostResolver, type WevuComponentOptions, createWevuComponent, defineEmits, defineProps, registerLayoutHosts, resolveLayoutHost, setPageLayout, unregisterLayoutHosts, waitForLayoutHost };
|
package/dist/runtime.mjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { createWevuComponent, defineEmits, defineProps, registerLayoutHosts, resolveLayoutHost, setPageLayout, unregisterLayoutHosts, waitForLayoutHost };
|
|
1
|
+
export { c as createWevuComponent, t as defineEmits, n as defineProps, i as registerLayoutHosts, a as resolveLayoutHost, r as setPageLayout, o as unregisterLayoutHosts, s as waitForLayoutHost } from "./runtime-D6VCNhNY.mjs";
|