@weapp-vite/web 1.3.15 → 1.3.17
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 +2 -2
- package/dist/_virtual/_rolldown/runtime.mjs +18 -0
- package/dist/compiler/wxml/attributes.mjs +93 -0
- package/dist/compiler/wxml/attributes.mjs.map +1 -0
- package/dist/compiler/wxml/compile.mjs +158 -0
- package/dist/compiler/wxml/compile.mjs.map +1 -0
- package/dist/compiler/wxml/dependency.mjs +31 -0
- package/dist/compiler/wxml/dependency.mjs.map +1 -0
- package/dist/compiler/wxml/interpolation.mjs +142 -0
- package/dist/compiler/wxml/interpolation.mjs.map +1 -0
- package/dist/compiler/wxml/navigation.mjs +85 -0
- package/dist/compiler/wxml/navigation.mjs.map +1 -0
- package/dist/compiler/wxml/parser.mjs +41 -0
- package/dist/compiler/wxml/parser.mjs.map +1 -0
- package/dist/compiler/wxml/renderer.mjs +114 -0
- package/dist/compiler/wxml/renderer.mjs.map +1 -0
- package/dist/compiler/wxml/specialNodes.mjs +85 -0
- package/dist/compiler/wxml/specialNodes.mjs.map +1 -0
- package/dist/compiler/wxs.mjs +83 -0
- package/dist/compiler/wxs.mjs.map +1 -0
- package/dist/css/wxss.d.mts +25 -0
- package/dist/css/wxss.mjs +17 -0
- package/dist/css/wxss.mjs.map +1 -0
- package/dist/index.d.mts +18 -2
- package/dist/index.mjs +18 -3
- package/dist/plugin/constants.mjs +43 -0
- package/dist/plugin/constants.mjs.map +1 -0
- package/dist/plugin/entry.mjs +29 -0
- package/dist/plugin/entry.mjs.map +1 -0
- package/dist/plugin/files.mjs +58 -0
- package/dist/plugin/files.mjs.map +1 -0
- package/dist/plugin/index.d.mts +33 -0
- package/dist/plugin/index.mjs +188 -0
- package/dist/plugin/index.mjs.map +1 -0
- package/dist/plugin/navigation.mjs +20 -0
- package/dist/plugin/navigation.mjs.map +1 -0
- package/dist/plugin/path.mjs +85 -0
- package/dist/plugin/path.mjs.map +1 -0
- package/dist/plugin/register.mjs +83 -0
- package/dist/plugin/register.mjs.map +1 -0
- package/dist/plugin/scan.mjs +195 -0
- package/dist/plugin/scan.mjs.map +1 -0
- package/dist/plugin/scanConfig.mjs +45 -0
- package/dist/plugin/scanConfig.mjs.map +1 -0
- package/dist/plugin/state.mjs +22 -0
- package/dist/plugin/state.mjs.map +1 -0
- package/dist/plugin/types.d.mts +46 -0
- package/dist/plugin.d.mts +3 -2
- package/dist/plugin.mjs +3 -2
- package/dist/runtime/button/helpers.mjs +92 -0
- package/dist/runtime/button/helpers.mjs.map +1 -0
- package/dist/runtime/button/index.d.mts +9 -0
- package/dist/runtime/button/index.mjs +198 -0
- package/dist/runtime/button/index.mjs.map +1 -0
- package/dist/runtime/button/style.mjs +168 -0
- package/dist/runtime/button/style.mjs.map +1 -0
- package/dist/runtime/component/behavior.mjs +98 -0
- package/dist/runtime/component/behavior.mjs.map +1 -0
- package/dist/runtime/component/constants.mjs +13 -0
- package/dist/runtime/component/constants.mjs.map +1 -0
- package/dist/runtime/component/dom.mjs +32 -0
- package/dist/runtime/component/dom.mjs.map +1 -0
- package/dist/runtime/component/element.mjs +208 -0
- package/dist/runtime/component/element.mjs.map +1 -0
- package/dist/runtime/component/events.mjs +49 -0
- package/dist/runtime/component/events.mjs.map +1 -0
- package/dist/runtime/component/index.d.mts +7 -0
- package/dist/runtime/component/index.mjs +44 -0
- package/dist/runtime/component/index.mjs.map +1 -0
- package/dist/runtime/component/state.mjs +63 -0
- package/dist/runtime/component/state.mjs.map +1 -0
- package/dist/runtime/component/types.d.mts +49 -0
- package/dist/runtime/component/utils.mjs +39 -0
- package/dist/runtime/component/utils.mjs.map +1 -0
- package/dist/runtime/execution.d.mts +7 -0
- package/dist/runtime/execution.mjs +37 -0
- package/dist/runtime/execution.mjs.map +1 -0
- package/dist/runtime/index.d.mts +16 -2
- package/dist/runtime/index.mjs +16 -2
- package/dist/runtime/legacyTemplate/dom.mjs +76 -0
- package/dist/runtime/legacyTemplate/dom.mjs.map +1 -0
- package/dist/runtime/legacyTemplate/expression.mjs +113 -0
- package/dist/runtime/legacyTemplate/expression.mjs.map +1 -0
- package/dist/runtime/legacyTemplate/index.d.mts +9 -0
- package/dist/runtime/legacyTemplate/index.mjs +132 -0
- package/dist/runtime/legacyTemplate/index.mjs.map +1 -0
- package/dist/runtime/legacyTemplate/types.d.mts +6 -0
- package/dist/runtime/navigationBar/index.d.mts +10 -0
- package/dist/runtime/navigationBar/index.mjs +162 -0
- package/dist/runtime/navigationBar/index.mjs.map +1 -0
- package/dist/runtime/navigationBar/style.mjs +108 -0
- package/dist/runtime/navigationBar/style.mjs.map +1 -0
- package/dist/runtime/polyfill/ad.mjs +150 -0
- package/dist/runtime/polyfill/ad.mjs.map +1 -0
- package/dist/runtime/polyfill/appState.mjs +31 -0
- package/dist/runtime/polyfill/appState.mjs.map +1 -0
- package/dist/runtime/polyfill/async.mjs +31 -0
- package/dist/runtime/polyfill/async.mjs.map +1 -0
- package/dist/runtime/polyfill/auth.mjs +120 -0
- package/dist/runtime/polyfill/auth.mjs.map +1 -0
- package/dist/runtime/polyfill/authApi.mjs +101 -0
- package/dist/runtime/polyfill/authApi.mjs.map +1 -0
- package/dist/runtime/polyfill/background.mjs +31 -0
- package/dist/runtime/polyfill/background.mjs.map +1 -0
- package/dist/runtime/polyfill/canvasContext.mjs +115 -0
- package/dist/runtime/polyfill/canvasContext.mjs.map +1 -0
- package/dist/runtime/polyfill/capability.mjs +20 -0
- package/dist/runtime/polyfill/capability.mjs.map +1 -0
- package/dist/runtime/polyfill/cloud.mjs +39 -0
- package/dist/runtime/polyfill/cloud.mjs.map +1 -0
- package/dist/runtime/polyfill/device.mjs +44 -0
- package/dist/runtime/polyfill/device.mjs.map +1 -0
- package/dist/runtime/polyfill/deviceApi.mjs +31 -0
- package/dist/runtime/polyfill/deviceApi.mjs.map +1 -0
- package/dist/runtime/polyfill/deviceAuthSystemApi.d.mts +102 -0
- package/dist/runtime/polyfill/deviceAuthSystemApi.mjs +144 -0
- package/dist/runtime/polyfill/deviceAuthSystemApi.mjs.map +1 -0
- package/dist/runtime/polyfill/filePicker.mjs +158 -0
- package/dist/runtime/polyfill/filePicker.mjs.map +1 -0
- package/dist/runtime/polyfill/fileSystemManager.mjs +45 -0
- package/dist/runtime/polyfill/fileSystemManager.mjs.map +1 -0
- package/dist/runtime/polyfill/files.mjs +118 -0
- package/dist/runtime/polyfill/files.mjs.map +1 -0
- package/dist/runtime/polyfill/index.d.mts +40 -0
- package/dist/runtime/polyfill/index.mjs +110 -0
- package/dist/runtime/polyfill/index.mjs.map +1 -0
- package/dist/runtime/polyfill/interaction.mjs +38 -0
- package/dist/runtime/polyfill/interaction.mjs.map +1 -0
- package/dist/runtime/polyfill/interactionApi.mjs +54 -0
- package/dist/runtime/polyfill/interactionApi.mjs.map +1 -0
- package/dist/runtime/polyfill/location.mjs +106 -0
- package/dist/runtime/polyfill/location.mjs.map +1 -0
- package/dist/runtime/polyfill/locationApi.mjs +120 -0
- package/dist/runtime/polyfill/locationApi.mjs.map +1 -0
- package/dist/runtime/polyfill/mediaActions.mjs +52 -0
- package/dist/runtime/polyfill/mediaActions.mjs.map +1 -0
- package/dist/runtime/polyfill/mediaApi/file.mjs +63 -0
- package/dist/runtime/polyfill/mediaApi/file.mjs.map +1 -0
- package/dist/runtime/polyfill/mediaApi/info.mjs +59 -0
- package/dist/runtime/polyfill/mediaApi/info.mjs.map +1 -0
- package/dist/runtime/polyfill/mediaApi/picker.mjs +82 -0
- package/dist/runtime/polyfill/mediaApi/picker.mjs.map +1 -0
- package/dist/runtime/polyfill/mediaApi/preview.mjs +39 -0
- package/dist/runtime/polyfill/mediaApi/preview.mjs.map +1 -0
- package/dist/runtime/polyfill/mediaApi/process.mjs +46 -0
- package/dist/runtime/polyfill/mediaApi/process.mjs.map +1 -0
- package/dist/runtime/polyfill/mediaInfo.mjs +136 -0
- package/dist/runtime/polyfill/mediaInfo.mjs.map +1 -0
- package/dist/runtime/polyfill/mediaPicker.mjs +213 -0
- package/dist/runtime/polyfill/mediaPicker.mjs.map +1 -0
- package/dist/runtime/polyfill/mediaProcess.mjs +65 -0
- package/dist/runtime/polyfill/mediaProcess.mjs.map +1 -0
- package/dist/runtime/polyfill/menuApi.mjs +70 -0
- package/dist/runtime/polyfill/menuApi.mjs.map +1 -0
- package/dist/runtime/polyfill/navigationBarRuntime.mjs +66 -0
- package/dist/runtime/polyfill/navigationBarRuntime.mjs.map +1 -0
- package/dist/runtime/polyfill/network/request.mjs +162 -0
- package/dist/runtime/polyfill/network/request.mjs.map +1 -0
- package/dist/runtime/polyfill/network/requestBridge.mjs +49 -0
- package/dist/runtime/polyfill/network/requestBridge.mjs.map +1 -0
- package/dist/runtime/polyfill/network/status.mjs +55 -0
- package/dist/runtime/polyfill/network/status.mjs.map +1 -0
- package/dist/runtime/polyfill/platformApi.mjs +33 -0
- package/dist/runtime/polyfill/platformApi.mjs.map +1 -0
- package/dist/runtime/polyfill/platformRuntime.mjs +120 -0
- package/dist/runtime/polyfill/platformRuntime.mjs.map +1 -0
- package/dist/runtime/polyfill/routeRuntime/dom.mjs +36 -0
- package/dist/runtime/polyfill/routeRuntime/dom.mjs.map +1 -0
- package/dist/runtime/polyfill/routeRuntime/lifecycle.mjs +83 -0
- package/dist/runtime/polyfill/routeRuntime/lifecycle.mjs.map +1 -0
- package/dist/runtime/polyfill/routeRuntime/options.d.mts +33 -0
- package/dist/runtime/polyfill/routeRuntime/options.mjs +76 -0
- package/dist/runtime/polyfill/routeRuntime/options.mjs.map +1 -0
- package/dist/runtime/polyfill/routeRuntime/url.mjs +35 -0
- package/dist/runtime/polyfill/routeRuntime/url.mjs.map +1 -0
- package/dist/runtime/polyfill/routeRuntime.d.mts +43 -0
- package/dist/runtime/polyfill/routeRuntime.mjs +202 -0
- package/dist/runtime/polyfill/routeRuntime.mjs.map +1 -0
- package/dist/runtime/polyfill/runtimeCapabilityApi.mjs +26 -0
- package/dist/runtime/polyfill/runtimeCapabilityApi.mjs.map +1 -0
- package/dist/runtime/polyfill/runtimeDataApi.d.mts +79 -0
- package/dist/runtime/polyfill/runtimeDataApi.mjs +134 -0
- package/dist/runtime/polyfill/runtimeDataApi.mjs.map +1 -0
- package/dist/runtime/polyfill/runtimeInfra.mjs +40 -0
- package/dist/runtime/polyfill/runtimeInfra.mjs.map +1 -0
- package/dist/runtime/polyfill/runtimeOps.mjs +62 -0
- package/dist/runtime/polyfill/runtimeOps.mjs.map +1 -0
- package/dist/runtime/polyfill/selectorQuery.mjs +204 -0
- package/dist/runtime/polyfill/selectorQuery.mjs.map +1 -0
- package/dist/runtime/polyfill/storage.mjs +103 -0
- package/dist/runtime/polyfill/storage.mjs.map +1 -0
- package/dist/runtime/polyfill/storageAsync.mjs +62 -0
- package/dist/runtime/polyfill/storageAsync.mjs.map +1 -0
- package/dist/runtime/polyfill/subscribe.mjs +30 -0
- package/dist/runtime/polyfill/subscribe.mjs.map +1 -0
- package/dist/runtime/polyfill/system.mjs +111 -0
- package/dist/runtime/polyfill/system.mjs.map +1 -0
- package/dist/runtime/polyfill/systemApi.mjs +65 -0
- package/dist/runtime/polyfill/systemApi.mjs.map +1 -0
- package/dist/runtime/polyfill/types/base.d.mts +12 -0
- package/dist/runtime/polyfill/types/common.d.mts +126 -0
- package/dist/runtime/polyfill/types/locationRuntime.d.mts +151 -0
- package/dist/runtime/polyfill/types/mediaAuth.d.mts +152 -0
- package/dist/runtime/polyfill/types/platformRuntime.d.mts +141 -0
- package/dist/runtime/polyfill/types/systemAuth.d.mts +122 -0
- package/dist/runtime/polyfill/ui.mjs +135 -0
- package/dist/runtime/polyfill/ui.mjs.map +1 -0
- package/dist/runtime/polyfill/uiFeedback.mjs +35 -0
- package/dist/runtime/polyfill/uiFeedback.mjs.map +1 -0
- package/dist/runtime/polyfill/uiMediaApi.d.mts +172 -0
- package/dist/runtime/polyfill/uiMediaApi.mjs +162 -0
- package/dist/runtime/polyfill/uiMediaApi.mjs.map +1 -0
- package/dist/runtime/polyfill/videoContext.mjs +56 -0
- package/dist/runtime/polyfill/videoContext.mjs.map +1 -0
- package/dist/runtime/polyfill/vkSession.mjs +58 -0
- package/dist/runtime/polyfill/vkSession.mjs.map +1 -0
- package/dist/runtime/polyfill/windowResize.mjs +39 -0
- package/dist/runtime/polyfill/windowResize.mjs.map +1 -0
- package/dist/runtime/polyfill/worker.mjs +77 -0
- package/dist/runtime/polyfill/worker.mjs.map +1 -0
- package/dist/runtime/polyfill.d.mts +5 -0
- package/dist/runtime/renderContext.d.mts +21 -0
- package/dist/runtime/renderContext.mjs +147 -0
- package/dist/runtime/renderContext.mjs.map +1 -0
- package/dist/runtime/rpx.d.mts +9 -0
- package/dist/runtime/rpx.mjs +27 -0
- package/dist/runtime/rpx.mjs.map +1 -0
- package/dist/runtime/style.d.mts +6 -0
- package/dist/runtime/style.mjs +37 -0
- package/dist/runtime/style.mjs.map +1 -0
- package/dist/runtime/template.d.mts +10 -0
- package/dist/runtime/warning.d.mts +10 -0
- package/dist/runtime/warning.mjs +43 -0
- package/dist/runtime/warning.mjs.map +1 -0
- package/dist/{slugify-B4l45KNs.mjs → shared/slugify.mjs} +3 -1
- package/dist/shared/slugify.mjs.map +1 -0
- package/dist/shared/wxml.mjs +83 -0
- package/dist/shared/wxml.mjs.map +1 -0
- package/package.json +2 -2
- package/dist/index-w9xxIH-l.d.mts +0 -1229
- package/dist/plugin-BARxSPO8.mjs +0 -1567
- package/dist/plugin-DP2iPVmw.d.mts +0 -96
- package/dist/runtime-D6j2_x_N.mjs +0 -6251
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { normalizePath, toPosixId } from "./path.mjs";
|
|
2
|
+
import { slugify } from "../shared/slugify.mjs";
|
|
3
|
+
import { isRecord, readJsonFile, resolveJsonPath, resolveScriptFile, resolveStyleFile, resolveTemplateFile } from "./files.mjs";
|
|
4
|
+
import { mergeNavigationConfig, pickNavigationConfig } from "./navigation.mjs";
|
|
5
|
+
import { collectComponentTagsFromConfig, collectComponentTagsFromJson, mergeComponentTags } from "./scanConfig.mjs";
|
|
6
|
+
import process from "node:process";
|
|
7
|
+
import { dirname, extname, join, posix, relative, resolve } from "pathe";
|
|
8
|
+
|
|
9
|
+
//#region src/plugin/scan.ts
|
|
10
|
+
async function scanProject({ srcRoot, warn, state }) {
|
|
11
|
+
state.moduleMeta.clear();
|
|
12
|
+
state.pageNavigationMap.clear();
|
|
13
|
+
state.templateComponentMap.clear();
|
|
14
|
+
state.templatePathSet.clear();
|
|
15
|
+
state.componentTagMap.clear();
|
|
16
|
+
state.componentIdMap.clear();
|
|
17
|
+
let appNavigationDefaults = {};
|
|
18
|
+
let appComponentTags = {};
|
|
19
|
+
const pages = /* @__PURE__ */ new Map();
|
|
20
|
+
const components = /* @__PURE__ */ new Map();
|
|
21
|
+
const reportWarning = (message) => {
|
|
22
|
+
if (warn) {
|
|
23
|
+
warn(message);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (typeof process !== "undefined" && typeof process.emitWarning === "function") process.emitWarning(message);
|
|
27
|
+
};
|
|
28
|
+
const appScript = await resolveScriptFile(join(srcRoot, "app"));
|
|
29
|
+
if (appScript) state.moduleMeta.set(normalizePath(appScript), {
|
|
30
|
+
kind: "app",
|
|
31
|
+
id: "app",
|
|
32
|
+
scriptPath: appScript,
|
|
33
|
+
stylePath: await resolveStyleFile(appScript)
|
|
34
|
+
});
|
|
35
|
+
const resolveComponentScript = async (raw, importerDir) => {
|
|
36
|
+
const base = resolveComponentBase(raw, importerDir, srcRoot);
|
|
37
|
+
if (!base) return;
|
|
38
|
+
return resolveScriptFile(base);
|
|
39
|
+
};
|
|
40
|
+
const getComponentId = (script) => {
|
|
41
|
+
const cached = state.componentIdMap.get(script);
|
|
42
|
+
if (cached) return cached;
|
|
43
|
+
const componentIdPosix = toPosixId(relative(srcRoot, script).replace(new RegExp(`${extname(script)}$`), ""));
|
|
44
|
+
state.componentIdMap.set(script, componentIdPosix);
|
|
45
|
+
return componentIdPosix;
|
|
46
|
+
};
|
|
47
|
+
const getComponentTag = (script) => {
|
|
48
|
+
const cached = state.componentTagMap.get(script);
|
|
49
|
+
if (cached) return cached;
|
|
50
|
+
const tag = slugify(getComponentId(script), "wv-component");
|
|
51
|
+
state.componentTagMap.set(script, tag);
|
|
52
|
+
return tag;
|
|
53
|
+
};
|
|
54
|
+
const collectComponent = async (componentId, importerDir) => {
|
|
55
|
+
const base = resolveComponentBase(componentId, importerDir, srcRoot);
|
|
56
|
+
const script = base ? await resolveScriptFile(base) : void 0;
|
|
57
|
+
if (!script || components.has(script)) return;
|
|
58
|
+
const componentIdPosix = toPosixId(relative(srcRoot, script).replace(new RegExp(`${extname(script)}$`), ""));
|
|
59
|
+
const template = await resolveTemplateFile(script);
|
|
60
|
+
const style = await resolveStyleFile(script);
|
|
61
|
+
if (template) state.templatePathSet.add(normalizePath(template));
|
|
62
|
+
state.moduleMeta.set(normalizePath(script), {
|
|
63
|
+
kind: "component",
|
|
64
|
+
id: componentIdPosix,
|
|
65
|
+
scriptPath: script,
|
|
66
|
+
templatePath: template,
|
|
67
|
+
stylePath: style
|
|
68
|
+
});
|
|
69
|
+
components.set(script, {
|
|
70
|
+
script,
|
|
71
|
+
id: componentIdPosix
|
|
72
|
+
});
|
|
73
|
+
const componentTags = await collectComponentTagsFromJson({
|
|
74
|
+
jsonBasePath: `${script.replace(new RegExp(`${extname(script)}$`), "")}.json`,
|
|
75
|
+
importerDir: dirname(script),
|
|
76
|
+
warn: reportWarning,
|
|
77
|
+
collectFromConfig: (json, nextImporterDir, jsonPath, nextWarn) => collectComponentTagsFromConfig({
|
|
78
|
+
json,
|
|
79
|
+
importerDir: nextImporterDir,
|
|
80
|
+
jsonPath,
|
|
81
|
+
warn: nextWarn,
|
|
82
|
+
resolveComponentScript,
|
|
83
|
+
getComponentTag,
|
|
84
|
+
collectComponent
|
|
85
|
+
})
|
|
86
|
+
});
|
|
87
|
+
if (!template) return;
|
|
88
|
+
const mergedTags = mergeComponentTags(appComponentTags, componentTags);
|
|
89
|
+
if (Object.keys(mergedTags).length > 0) {
|
|
90
|
+
state.templateComponentMap.set(normalizePath(template), mergedTags);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
state.templateComponentMap.delete(normalizePath(template));
|
|
94
|
+
};
|
|
95
|
+
const appJsonPath = await resolveJsonPath(join(srcRoot, "app.json"));
|
|
96
|
+
if (appJsonPath) {
|
|
97
|
+
const appJson = await readJsonFile(appJsonPath);
|
|
98
|
+
if (appJson) appComponentTags = await collectComponentTagsFromConfig({
|
|
99
|
+
json: appJson,
|
|
100
|
+
importerDir: srcRoot,
|
|
101
|
+
jsonPath: appJsonPath,
|
|
102
|
+
warn: reportWarning,
|
|
103
|
+
resolveComponentScript,
|
|
104
|
+
getComponentTag,
|
|
105
|
+
collectComponent,
|
|
106
|
+
onResolved: (tags) => {
|
|
107
|
+
appComponentTags = tags;
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
if (appJson?.pages && Array.isArray(appJson.pages)) {
|
|
111
|
+
for (const page of appJson.pages) if (typeof page === "string") await collectPage(page);
|
|
112
|
+
}
|
|
113
|
+
if (appJson?.subPackages && Array.isArray(appJson.subPackages)) for (const pkg of appJson.subPackages) {
|
|
114
|
+
if (!pkg || typeof pkg !== "object" || !Array.isArray(pkg.pages)) continue;
|
|
115
|
+
const root = typeof pkg.root === "string" ? pkg.root : "";
|
|
116
|
+
for (const page of pkg.pages) {
|
|
117
|
+
if (typeof page !== "string") continue;
|
|
118
|
+
await collectPage(posix.join(root, page));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
appNavigationDefaults = pickNavigationConfig(isRecord(appJson?.window) ? appJson.window : void 0);
|
|
122
|
+
}
|
|
123
|
+
state.appNavigationDefaults = appNavigationDefaults;
|
|
124
|
+
state.appComponentTags = appComponentTags;
|
|
125
|
+
state.scanResult = {
|
|
126
|
+
app: appScript,
|
|
127
|
+
pages: Array.from(pages.values()),
|
|
128
|
+
components: Array.from(components.values())
|
|
129
|
+
};
|
|
130
|
+
async function collectPage(pageId) {
|
|
131
|
+
const base = join(srcRoot, pageId);
|
|
132
|
+
const script = await resolveScriptFile(base);
|
|
133
|
+
if (!script) return;
|
|
134
|
+
const template = await resolveTemplateFile(base);
|
|
135
|
+
if (template) state.templatePathSet.add(normalizePath(template));
|
|
136
|
+
const style = await resolveStyleFile(base);
|
|
137
|
+
const pageJsonBasePath = join(srcRoot, `${pageId}.json`);
|
|
138
|
+
const pageJsonPath = await resolveJsonPath(pageJsonBasePath);
|
|
139
|
+
const pageJson = pageJsonPath ? await readJsonFile(pageJsonPath) : void 0;
|
|
140
|
+
state.moduleMeta.set(normalizePath(script), {
|
|
141
|
+
kind: "page",
|
|
142
|
+
id: toPosixId(pageId),
|
|
143
|
+
scriptPath: script,
|
|
144
|
+
templatePath: template,
|
|
145
|
+
stylePath: style
|
|
146
|
+
});
|
|
147
|
+
pages.set(script, {
|
|
148
|
+
script,
|
|
149
|
+
id: toPosixId(pageId)
|
|
150
|
+
});
|
|
151
|
+
const pageComponentTags = pageJson && pageJsonPath ? await collectComponentTagsFromConfig({
|
|
152
|
+
json: pageJson,
|
|
153
|
+
importerDir: dirname(script),
|
|
154
|
+
jsonPath: pageJsonPath,
|
|
155
|
+
warn: reportWarning,
|
|
156
|
+
resolveComponentScript,
|
|
157
|
+
getComponentTag,
|
|
158
|
+
collectComponent
|
|
159
|
+
}) : await collectComponentTagsFromJson({
|
|
160
|
+
jsonBasePath: pageJsonBasePath,
|
|
161
|
+
importerDir: dirname(script),
|
|
162
|
+
warn: reportWarning,
|
|
163
|
+
collectFromConfig: (json, importerDir, jsonPath, nextWarn) => collectComponentTagsFromConfig({
|
|
164
|
+
json,
|
|
165
|
+
importerDir,
|
|
166
|
+
jsonPath,
|
|
167
|
+
warn: nextWarn,
|
|
168
|
+
resolveComponentScript,
|
|
169
|
+
getComponentTag,
|
|
170
|
+
collectComponent
|
|
171
|
+
})
|
|
172
|
+
});
|
|
173
|
+
if (template) {
|
|
174
|
+
const mergedTags = mergeComponentTags(appComponentTags, pageComponentTags);
|
|
175
|
+
if (Object.keys(mergedTags).length > 0) state.templateComponentMap.set(normalizePath(template), mergedTags);
|
|
176
|
+
else state.templateComponentMap.delete(normalizePath(template));
|
|
177
|
+
}
|
|
178
|
+
if (!template) return;
|
|
179
|
+
if (pageJson) {
|
|
180
|
+
state.pageNavigationMap.set(normalizePath(template), mergeNavigationConfig(appNavigationDefaults, pickNavigationConfig(pageJson)));
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
state.pageNavigationMap.set(normalizePath(template), { ...appNavigationDefaults });
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function resolveComponentBase(raw, importerDir, srcRoot) {
|
|
187
|
+
if (!raw) return;
|
|
188
|
+
if (raw.startsWith(".")) return resolve(importerDir, raw);
|
|
189
|
+
if (raw.startsWith("/")) return resolve(srcRoot, raw.slice(1));
|
|
190
|
+
return resolve(srcRoot, raw);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
//#endregion
|
|
194
|
+
export { scanProject };
|
|
195
|
+
//# sourceMappingURL=scan.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.mjs","names":[],"sources":["../../src/plugin/scan.ts"],"sourcesContent":["import type { ComponentEntry, PageEntry, ScanState, WarnFn } from './types'\nimport process from 'node:process'\n\nimport { dirname, extname, join, posix, relative, resolve } from 'pathe'\nimport { slugify } from '../shared/slugify'\nimport { isRecord, readJsonFile, resolveJsonPath, resolveScriptFile, resolveStyleFile, resolveTemplateFile } from './files'\nimport { mergeNavigationConfig, pickNavigationConfig } from './navigation'\nimport { normalizePath, toPosixId } from './path'\nimport { collectComponentTagsFromConfig, collectComponentTagsFromJson, mergeComponentTags } from './scanConfig'\n\ninterface ScanProjectOptions {\n srcRoot: string\n warn?: WarnFn\n state: ScanState\n}\n\nexport async function scanProject({ srcRoot, warn, state }: ScanProjectOptions) {\n state.moduleMeta.clear()\n state.pageNavigationMap.clear()\n state.templateComponentMap.clear()\n state.templatePathSet.clear()\n state.componentTagMap.clear()\n state.componentIdMap.clear()\n\n let appNavigationDefaults = {}\n let appComponentTags: Record<string, string> = {}\n\n const pages = new Map<string, PageEntry>()\n const components = new Map<string, ComponentEntry>()\n\n const reportWarning = (message: string) => {\n if (warn) {\n warn(message)\n return\n }\n if (typeof process !== 'undefined' && typeof process.emitWarning === 'function') {\n process.emitWarning(message)\n }\n }\n\n const appScript = await resolveScriptFile(join(srcRoot, 'app'))\n if (appScript) {\n state.moduleMeta.set(normalizePath(appScript), {\n kind: 'app',\n id: 'app',\n scriptPath: appScript,\n stylePath: await resolveStyleFile(appScript),\n })\n }\n\n const resolveComponentScript = async (raw: string, importerDir: string) => {\n const base = resolveComponentBase(raw, importerDir, srcRoot)\n if (!base) {\n return undefined\n }\n return resolveScriptFile(base)\n }\n\n const getComponentId = (script: string) => {\n const cached = state.componentIdMap.get(script)\n if (cached) {\n return cached\n }\n const idRelative = relative(srcRoot, script).replace(new RegExp(`${extname(script)}$`), '')\n const componentIdPosix = toPosixId(idRelative)\n state.componentIdMap.set(script, componentIdPosix)\n return componentIdPosix\n }\n\n const getComponentTag = (script: string) => {\n const cached = state.componentTagMap.get(script)\n if (cached) {\n return cached\n }\n const id = getComponentId(script)\n const tag = slugify(id, 'wv-component')\n state.componentTagMap.set(script, tag)\n return tag\n }\n\n const collectComponent = async (componentId: string, importerDir: string) => {\n const base = resolveComponentBase(componentId, importerDir, srcRoot)\n const script = base ? await resolveScriptFile(base) : undefined\n if (!script || components.has(script)) {\n return\n }\n\n const idRelative = relative(srcRoot, script).replace(new RegExp(`${extname(script)}$`), '')\n const componentIdPosix = toPosixId(idRelative)\n const template = await resolveTemplateFile(script)\n const style = await resolveStyleFile(script)\n\n if (template) {\n state.templatePathSet.add(normalizePath(template))\n }\n\n state.moduleMeta.set(normalizePath(script), {\n kind: 'component',\n id: componentIdPosix,\n scriptPath: script,\n templatePath: template,\n stylePath: style,\n })\n\n components.set(script, { script, id: componentIdPosix })\n\n const componentJsonBasePath = `${script.replace(new RegExp(`${extname(script)}$`), '')}.json`\n const componentTags = await collectComponentTagsFromJson({\n jsonBasePath: componentJsonBasePath,\n importerDir: dirname(script),\n warn: reportWarning,\n collectFromConfig: (json, nextImporterDir, jsonPath, nextWarn) => collectComponentTagsFromConfig({\n json,\n importerDir: nextImporterDir,\n jsonPath,\n warn: nextWarn,\n resolveComponentScript,\n getComponentTag,\n collectComponent,\n }),\n })\n\n if (!template) {\n return\n }\n\n const mergedTags = mergeComponentTags(appComponentTags, componentTags)\n if (Object.keys(mergedTags).length > 0) {\n state.templateComponentMap.set(normalizePath(template), mergedTags)\n return\n }\n state.templateComponentMap.delete(normalizePath(template))\n }\n\n const appJsonBasePath = join(srcRoot, 'app.json')\n const appJsonPath = await resolveJsonPath(appJsonBasePath)\n if (appJsonPath) {\n const appJson = await readJsonFile(appJsonPath)\n\n if (appJson) {\n appComponentTags = await collectComponentTagsFromConfig({\n json: appJson,\n importerDir: srcRoot,\n jsonPath: appJsonPath,\n warn: reportWarning,\n resolveComponentScript,\n getComponentTag,\n collectComponent,\n onResolved: (tags) => {\n appComponentTags = tags\n },\n })\n }\n\n if (appJson?.pages && Array.isArray(appJson.pages)) {\n for (const page of appJson.pages) {\n if (typeof page === 'string') {\n await collectPage(page)\n }\n }\n }\n\n if (appJson?.subPackages && Array.isArray(appJson.subPackages)) {\n for (const pkg of appJson.subPackages) {\n if (!pkg || typeof pkg !== 'object' || !Array.isArray(pkg.pages)) {\n continue\n }\n const root = typeof pkg.root === 'string' ? pkg.root : ''\n for (const page of pkg.pages) {\n if (typeof page !== 'string') {\n continue\n }\n await collectPage(posix.join(root, page))\n }\n }\n }\n\n const windowConfig = isRecord(appJson?.window) ? appJson.window : undefined\n appNavigationDefaults = pickNavigationConfig(windowConfig)\n }\n\n state.appNavigationDefaults = appNavigationDefaults\n state.appComponentTags = appComponentTags\n state.scanResult = {\n app: appScript,\n pages: Array.from(pages.values()),\n components: Array.from(components.values()),\n }\n\n async function collectPage(pageId: string) {\n const base = join(srcRoot, pageId)\n const script = await resolveScriptFile(base)\n if (!script) {\n return\n }\n\n const template = await resolveTemplateFile(base)\n if (template) {\n state.templatePathSet.add(normalizePath(template))\n }\n\n const style = await resolveStyleFile(base)\n const pageJsonBasePath = join(srcRoot, `${pageId}.json`)\n const pageJsonPath = await resolveJsonPath(pageJsonBasePath)\n const pageJson = pageJsonPath ? await readJsonFile(pageJsonPath) : undefined\n\n state.moduleMeta.set(normalizePath(script), {\n kind: 'page',\n id: toPosixId(pageId),\n scriptPath: script,\n templatePath: template,\n stylePath: style,\n })\n\n pages.set(script, {\n script,\n id: toPosixId(pageId),\n })\n\n const pageComponentTags = pageJson && pageJsonPath\n ? await collectComponentTagsFromConfig({\n json: pageJson,\n importerDir: dirname(script),\n jsonPath: pageJsonPath,\n warn: reportWarning,\n resolveComponentScript,\n getComponentTag,\n collectComponent,\n })\n : await collectComponentTagsFromJson({\n jsonBasePath: pageJsonBasePath,\n importerDir: dirname(script),\n warn: reportWarning,\n collectFromConfig: (json, importerDir, jsonPath, nextWarn) => collectComponentTagsFromConfig({\n json,\n importerDir,\n jsonPath,\n warn: nextWarn,\n resolveComponentScript,\n getComponentTag,\n collectComponent,\n }),\n })\n\n if (template) {\n const mergedTags = mergeComponentTags(appComponentTags, pageComponentTags)\n if (Object.keys(mergedTags).length > 0) {\n state.templateComponentMap.set(normalizePath(template), mergedTags)\n }\n else {\n state.templateComponentMap.delete(normalizePath(template))\n }\n }\n\n if (!template) {\n return\n }\n\n if (pageJson) {\n state.pageNavigationMap.set(\n normalizePath(template),\n mergeNavigationConfig(appNavigationDefaults, pickNavigationConfig(pageJson)),\n )\n return\n }\n\n state.pageNavigationMap.set(normalizePath(template), { ...appNavigationDefaults })\n }\n}\n\nfunction resolveComponentBase(raw: string, importerDir: string, srcRoot: string) {\n if (!raw) {\n return undefined\n }\n if (raw.startsWith('.')) {\n return resolve(importerDir, raw)\n }\n if (raw.startsWith('/')) {\n return resolve(srcRoot, raw.slice(1))\n }\n return resolve(srcRoot, raw)\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { readJsonFile, resolveJsonPath } from "./files.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/plugin/scanConfig.ts
|
|
4
|
+
async function collectComponentTagsFromConfig({ json, importerDir, jsonPath, warn, resolveComponentScript, getComponentTag, collectComponent, onResolved }) {
|
|
5
|
+
const usingComponents = json.usingComponents;
|
|
6
|
+
if (!usingComponents || typeof usingComponents !== "object") return {};
|
|
7
|
+
const tags = {};
|
|
8
|
+
const resolved = [];
|
|
9
|
+
for (const [rawKey, rawValue] of Object.entries(usingComponents)) {
|
|
10
|
+
if (typeof rawValue !== "string") continue;
|
|
11
|
+
const key = normalizeComponentKey(rawKey);
|
|
12
|
+
if (!key) continue;
|
|
13
|
+
const script = await resolveComponentScript(rawValue, importerDir);
|
|
14
|
+
if (!script) {
|
|
15
|
+
warn(`[@weapp-vite/web] usingComponents entry "${rawKey}" not found: ${rawValue} (${jsonPath})`);
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
tags[key] = getComponentTag(script);
|
|
19
|
+
resolved.push({ rawValue });
|
|
20
|
+
}
|
|
21
|
+
onResolved?.(tags);
|
|
22
|
+
for (const entry of resolved) await collectComponent(entry.rawValue, importerDir);
|
|
23
|
+
return tags;
|
|
24
|
+
}
|
|
25
|
+
async function collectComponentTagsFromJson({ jsonBasePath, importerDir, warn, collectFromConfig }) {
|
|
26
|
+
const resolvedPath = await resolveJsonPath(jsonBasePath);
|
|
27
|
+
if (!resolvedPath) return {};
|
|
28
|
+
const json = await readJsonFile(resolvedPath);
|
|
29
|
+
if (!json) return {};
|
|
30
|
+
return collectFromConfig(json, importerDir, resolvedPath, warn);
|
|
31
|
+
}
|
|
32
|
+
function mergeComponentTags(base, overrides) {
|
|
33
|
+
if (!Object.keys(base).length && !Object.keys(overrides).length) return {};
|
|
34
|
+
return {
|
|
35
|
+
...base,
|
|
36
|
+
...overrides
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function normalizeComponentKey(raw) {
|
|
40
|
+
return raw.trim().toLowerCase();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
//#endregion
|
|
44
|
+
export { collectComponentTagsFromConfig, collectComponentTagsFromJson, mergeComponentTags };
|
|
45
|
+
//# sourceMappingURL=scanConfig.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanConfig.mjs","names":[],"sources":["../../src/plugin/scanConfig.ts"],"sourcesContent":["import type { WarnFn } from './types'\nimport { readJsonFile, resolveJsonPath } from './files'\n\ninterface CollectComponentTagsFromConfigOptions {\n json: Record<string, unknown>\n importerDir: string\n jsonPath: string\n warn: WarnFn\n resolveComponentScript: (raw: string, importerDir: string) => Promise<string | undefined>\n getComponentTag: (script: string) => string\n collectComponent: (componentId: string, importerDir: string) => Promise<void>\n onResolved?: (tags: Record<string, string>) => void\n}\n\nexport async function collectComponentTagsFromConfig({\n json,\n importerDir,\n jsonPath,\n warn,\n resolveComponentScript,\n getComponentTag,\n collectComponent,\n onResolved,\n}: CollectComponentTagsFromConfigOptions) {\n const usingComponents = json.usingComponents\n if (!usingComponents || typeof usingComponents !== 'object') {\n return {}\n }\n\n const tags: Record<string, string> = {}\n const resolved: Array<{ rawValue: string }> = []\n\n for (const [rawKey, rawValue] of Object.entries(usingComponents)) {\n if (typeof rawValue !== 'string') {\n continue\n }\n const key = normalizeComponentKey(rawKey)\n if (!key) {\n continue\n }\n const script = await resolveComponentScript(rawValue, importerDir)\n if (!script) {\n warn(`[@weapp-vite/web] usingComponents entry \"${rawKey}\" not found: ${rawValue} (${jsonPath})`)\n continue\n }\n const tag = getComponentTag(script)\n tags[key] = tag\n resolved.push({ rawValue })\n }\n\n onResolved?.(tags)\n for (const entry of resolved) {\n await collectComponent(entry.rawValue, importerDir)\n }\n\n return tags\n}\n\ninterface CollectComponentTagsFromJsonOptions {\n jsonBasePath: string\n importerDir: string\n warn: WarnFn\n collectFromConfig: (json: Record<string, unknown>, importerDir: string, jsonPath: string, warn: WarnFn) => Promise<Record<string, string>>\n}\n\nexport async function collectComponentTagsFromJson({\n jsonBasePath,\n importerDir,\n warn,\n collectFromConfig,\n}: CollectComponentTagsFromJsonOptions) {\n const resolvedPath = await resolveJsonPath(jsonBasePath)\n if (!resolvedPath) {\n return {}\n }\n const json = await readJsonFile(resolvedPath)\n if (!json) {\n return {}\n }\n return collectFromConfig(json, importerDir, resolvedPath, warn)\n}\n\nexport function mergeComponentTags(base: Record<string, string>, overrides: Record<string, string>) {\n if (!Object.keys(base).length && !Object.keys(overrides).length) {\n return {}\n }\n return {\n ...base,\n ...overrides,\n }\n}\n\nfunction normalizeComponentKey(raw: string) {\n return raw.trim().toLowerCase()\n}\n"],"mappings":";;;AAcA,eAAsB,+BAA+B,EACnD,MACA,aACA,UACA,MACA,wBACA,iBACA,kBACA,cACwC;CACxC,MAAM,kBAAkB,KAAK;AAC7B,KAAI,CAAC,mBAAmB,OAAO,oBAAoB,SACjD,QAAO,EAAE;CAGX,MAAM,OAA+B,EAAE;CACvC,MAAM,WAAwC,EAAE;AAEhD,MAAK,MAAM,CAAC,QAAQ,aAAa,OAAO,QAAQ,gBAAgB,EAAE;AAChE,MAAI,OAAO,aAAa,SACtB;EAEF,MAAM,MAAM,sBAAsB,OAAO;AACzC,MAAI,CAAC,IACH;EAEF,MAAM,SAAS,MAAM,uBAAuB,UAAU,YAAY;AAClE,MAAI,CAAC,QAAQ;AACX,QAAK,4CAA4C,OAAO,eAAe,SAAS,IAAI,SAAS,GAAG;AAChG;;AAGF,OAAK,OADO,gBAAgB,OAAO;AAEnC,WAAS,KAAK,EAAE,UAAU,CAAC;;AAG7B,cAAa,KAAK;AAClB,MAAK,MAAM,SAAS,SAClB,OAAM,iBAAiB,MAAM,UAAU,YAAY;AAGrD,QAAO;;AAUT,eAAsB,6BAA6B,EACjD,cACA,aACA,MACA,qBACsC;CACtC,MAAM,eAAe,MAAM,gBAAgB,aAAa;AACxD,KAAI,CAAC,aACH,QAAO,EAAE;CAEX,MAAM,OAAO,MAAM,aAAa,aAAa;AAC7C,KAAI,CAAC,KACH,QAAO,EAAE;AAEX,QAAO,kBAAkB,MAAM,aAAa,cAAc,KAAK;;AAGjE,SAAgB,mBAAmB,MAA8B,WAAmC;AAClG,KAAI,CAAC,OAAO,KAAK,KAAK,CAAC,UAAU,CAAC,OAAO,KAAK,UAAU,CAAC,OACvD,QAAO,EAAE;AAEX,QAAO;EACL,GAAG;EACH,GAAG;EACJ;;AAGH,SAAS,sBAAsB,KAAa;AAC1C,QAAO,IAAI,MAAM,CAAC,aAAa"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/plugin/state.ts
|
|
2
|
+
function createEmptyScanState() {
|
|
3
|
+
return {
|
|
4
|
+
moduleMeta: /* @__PURE__ */ new Map(),
|
|
5
|
+
pageNavigationMap: /* @__PURE__ */ new Map(),
|
|
6
|
+
templateComponentMap: /* @__PURE__ */ new Map(),
|
|
7
|
+
templatePathSet: /* @__PURE__ */ new Set(),
|
|
8
|
+
componentTagMap: /* @__PURE__ */ new Map(),
|
|
9
|
+
componentIdMap: /* @__PURE__ */ new Map(),
|
|
10
|
+
appNavigationDefaults: {},
|
|
11
|
+
appComponentTags: {},
|
|
12
|
+
scanResult: {
|
|
13
|
+
app: void 0,
|
|
14
|
+
pages: [],
|
|
15
|
+
components: []
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
export { createEmptyScanState };
|
|
22
|
+
//# sourceMappingURL=state.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.mjs","names":[],"sources":["../../src/plugin/state.ts"],"sourcesContent":["import type { ScanState } from './types'\n\nexport function createEmptyScanState(): ScanState {\n return {\n moduleMeta: new Map(),\n pageNavigationMap: new Map(),\n templateComponentMap: new Map(),\n templatePathSet: new Set(),\n componentTagMap: new Map(),\n componentIdMap: new Map(),\n appNavigationDefaults: {},\n appComponentTags: {},\n scanResult: {\n app: undefined,\n pages: [],\n components: [],\n },\n }\n}\n"],"mappings":";AAEA,SAAgB,uBAAkC;AAChD,QAAO;EACL,4BAAY,IAAI,KAAK;EACrB,mCAAmB,IAAI,KAAK;EAC5B,sCAAsB,IAAI,KAAK;EAC/B,iCAAiB,IAAI,KAAK;EAC1B,iCAAiB,IAAI,KAAK;EAC1B,gCAAgB,IAAI,KAAK;EACzB,uBAAuB,EAAE;EACzB,kBAAkB,EAAE;EACpB,YAAY;GACV,KAAK;GACL,OAAO,EAAE;GACT,YAAY,EAAE;GACf;EACF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { WxssTransformOptions } from "../css/wxss.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/plugin/types.d.ts
|
|
4
|
+
interface WeappWebPluginOptions {
|
|
5
|
+
wxss?: WxssTransformOptions;
|
|
6
|
+
/**
|
|
7
|
+
* 小程序项目的源代码根目录,默认 `<root>/src`。
|
|
8
|
+
*/
|
|
9
|
+
srcDir?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Web 运行时的表单行为配置。
|
|
12
|
+
*/
|
|
13
|
+
form?: {
|
|
14
|
+
/**
|
|
15
|
+
* 为 true 时阻止浏览器默认的表单提交,默认 true。
|
|
16
|
+
*/
|
|
17
|
+
preventDefault?: boolean;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Web 运行时执行策略。
|
|
21
|
+
*/
|
|
22
|
+
runtime?: {
|
|
23
|
+
/**
|
|
24
|
+
* 表达式与 WXS 执行模式:
|
|
25
|
+
* - compat: 保持当前行为(默认)
|
|
26
|
+
* - safe: 忽略解析/执行异常并告警
|
|
27
|
+
* - strict: 解析/执行异常直接抛错
|
|
28
|
+
*/
|
|
29
|
+
executionMode?: 'compat' | 'safe' | 'strict';
|
|
30
|
+
/**
|
|
31
|
+
* 运行时告警策略:
|
|
32
|
+
* - warn: 使用 console.warn 输出(默认)
|
|
33
|
+
* - error: 使用 console.error 输出
|
|
34
|
+
* - off: 关闭告警输出
|
|
35
|
+
*
|
|
36
|
+
* dedupe 为 true 时同 key 告警仅输出一次(默认)。
|
|
37
|
+
*/
|
|
38
|
+
warnings?: {
|
|
39
|
+
level?: 'off' | 'warn' | 'error';
|
|
40
|
+
dedupe?: boolean;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { WeappWebPluginOptions };
|
|
46
|
+
//# sourceMappingURL=types.d.mts.map
|
package/dist/plugin.d.mts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { WeappWebPluginOptions } from "./plugin/types.mjs";
|
|
2
|
+
import { weappWebPlugin } from "./plugin/index.mjs";
|
|
3
|
+
export { type WeappWebPluginOptions, weappWebPlugin };
|
package/dist/plugin.mjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { weappWebPlugin } from "./plugin/index.mjs";
|
|
2
|
+
|
|
3
|
+
export { weappWebPlugin };
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
//#region src/runtime/button/helpers.ts
|
|
2
|
+
const DEFAULT_HOVER_CLASS = "button-hover";
|
|
3
|
+
function toBoolean(value) {
|
|
4
|
+
if (value === null) return false;
|
|
5
|
+
const normalized = value.trim().toLowerCase();
|
|
6
|
+
if (normalized === "" || normalized === "true") return true;
|
|
7
|
+
return normalized !== "false" && normalized !== "0";
|
|
8
|
+
}
|
|
9
|
+
function parseNumber(value, fallback) {
|
|
10
|
+
if (value === null || value === "") return fallback;
|
|
11
|
+
const numeric = Number(value);
|
|
12
|
+
return Number.isFinite(numeric) ? numeric : fallback;
|
|
13
|
+
}
|
|
14
|
+
function isDisabled(element) {
|
|
15
|
+
return toBoolean(element.getAttribute("disabled")) || toBoolean(element.getAttribute("loading"));
|
|
16
|
+
}
|
|
17
|
+
function normalizeType(value) {
|
|
18
|
+
if (!value) return "default";
|
|
19
|
+
const normalized = value.toLowerCase();
|
|
20
|
+
if (normalized === "primary" || normalized === "warn") return normalized;
|
|
21
|
+
return "default";
|
|
22
|
+
}
|
|
23
|
+
function getHoverClass(element) {
|
|
24
|
+
const hoverClass = element.getAttribute("hover-class");
|
|
25
|
+
if (!hoverClass) return DEFAULT_HOVER_CLASS;
|
|
26
|
+
if (hoverClass === "none") return "";
|
|
27
|
+
return hoverClass;
|
|
28
|
+
}
|
|
29
|
+
function isInternalNode(node) {
|
|
30
|
+
return node instanceof HTMLElement && node.dataset?.weappInternal === "true";
|
|
31
|
+
}
|
|
32
|
+
function collectFormValues(form) {
|
|
33
|
+
const values = {};
|
|
34
|
+
const appendValue = (name, value, multiple = false) => {
|
|
35
|
+
if (multiple) {
|
|
36
|
+
if (!Array.isArray(values[name])) values[name] = values[name] === void 0 ? [] : [values[name]];
|
|
37
|
+
values[name].push(value);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
values[name] = value;
|
|
41
|
+
};
|
|
42
|
+
const formElements = Array.from(form.elements ?? []);
|
|
43
|
+
for (const element of formElements) {
|
|
44
|
+
if (!(element instanceof HTMLElement)) continue;
|
|
45
|
+
const name = element.getAttribute("name")?.trim();
|
|
46
|
+
if (!name) continue;
|
|
47
|
+
if ("disabled" in element ? element.disabled : toBoolean(element.getAttribute("disabled"))) continue;
|
|
48
|
+
if (element instanceof HTMLInputElement) {
|
|
49
|
+
const type = element.type?.toLowerCase();
|
|
50
|
+
if (type === "checkbox") {
|
|
51
|
+
if (element.checked) appendValue(name, element.value, true);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (type === "radio") {
|
|
55
|
+
if (element.checked) appendValue(name, element.value);
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
appendValue(name, element.value);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (element instanceof HTMLTextAreaElement || element instanceof HTMLSelectElement) {
|
|
62
|
+
appendValue(name, element.value);
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const customControls = form.querySelectorAll("switch, checkbox, radio, picker, slider, weapp-switch, weapp-checkbox, weapp-radio, weapp-picker, weapp-slider");
|
|
67
|
+
for (const element of Array.from(customControls)) {
|
|
68
|
+
const name = element.getAttribute("name")?.trim();
|
|
69
|
+
if (!name) continue;
|
|
70
|
+
if (toBoolean(element.getAttribute("disabled"))) continue;
|
|
71
|
+
const tag = element.tagName.toLowerCase();
|
|
72
|
+
const rawValue = element.value ?? element.getAttribute("value");
|
|
73
|
+
if (tag.includes("checkbox")) {
|
|
74
|
+
if (element.checked ?? toBoolean(element.getAttribute("checked"))) appendValue(name, rawValue ?? true, true);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (tag.includes("radio")) {
|
|
78
|
+
if (element.checked ?? toBoolean(element.getAttribute("checked"))) appendValue(name, rawValue ?? true);
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (tag.includes("switch")) {
|
|
82
|
+
appendValue(name, element.checked ?? toBoolean(element.getAttribute("checked")));
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
appendValue(name, rawValue ?? "");
|
|
86
|
+
}
|
|
87
|
+
return values;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
//#endregion
|
|
91
|
+
export { collectFormValues, getHoverClass, isDisabled, isInternalNode, normalizeType, parseNumber, toBoolean };
|
|
92
|
+
//# sourceMappingURL=helpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.mjs","names":[],"sources":["../../../src/runtime/button/helpers.ts"],"sourcesContent":["const DEFAULT_HOVER_CLASS = 'button-hover'\n\nexport const DEFAULT_HOVER_START = 20\nexport const DEFAULT_HOVER_STAY = 70\n\nexport function toBoolean(value: string | null) {\n if (value === null) {\n return false\n }\n const normalized = value.trim().toLowerCase()\n if (normalized === '' || normalized === 'true') {\n return true\n }\n return normalized !== 'false' && normalized !== '0'\n}\n\nexport function parseNumber(value: string | null, fallback: number) {\n if (value === null || value === '') {\n return fallback\n }\n const numeric = Number(value)\n return Number.isFinite(numeric) ? numeric : fallback\n}\n\nexport function isDisabled(element: HTMLElement) {\n return toBoolean(element.getAttribute('disabled')) || toBoolean(element.getAttribute('loading'))\n}\n\nexport function normalizeType(value: string | null) {\n if (!value) {\n return 'default'\n }\n const normalized = value.toLowerCase()\n if (normalized === 'primary' || normalized === 'warn') {\n return normalized\n }\n return 'default'\n}\n\nexport function getHoverClass(element: HTMLElement) {\n const hoverClass = element.getAttribute('hover-class')\n if (!hoverClass) {\n return DEFAULT_HOVER_CLASS\n }\n if (hoverClass === 'none') {\n return ''\n }\n return hoverClass\n}\n\nexport function isInternalNode(node: Node) {\n return node instanceof HTMLElement && node.dataset?.weappInternal === 'true'\n}\n\nexport function collectFormValues(form: HTMLFormElement) {\n const values: Record<string, any> = {}\n\n const appendValue = (name: string, value: any, multiple = false) => {\n if (multiple) {\n if (!Array.isArray(values[name])) {\n values[name] = values[name] === undefined ? [] : [values[name]]\n }\n values[name].push(value)\n return\n }\n values[name] = value\n }\n\n const formElements = Array.from(form.elements ?? [])\n for (const element of formElements) {\n if (!(element instanceof HTMLElement)) {\n continue\n }\n const name = element.getAttribute('name')?.trim()\n if (!name) {\n continue\n }\n const disabled = 'disabled' in element ? (element as any).disabled : toBoolean(element.getAttribute('disabled'))\n if (disabled) {\n continue\n }\n if (element instanceof HTMLInputElement) {\n const type = element.type?.toLowerCase()\n if (type === 'checkbox') {\n if (element.checked) {\n appendValue(name, element.value, true)\n }\n continue\n }\n if (type === 'radio') {\n if (element.checked) {\n appendValue(name, element.value)\n }\n continue\n }\n appendValue(name, element.value)\n continue\n }\n if (element instanceof HTMLTextAreaElement || element instanceof HTMLSelectElement) {\n appendValue(name, (element as HTMLTextAreaElement | HTMLSelectElement).value)\n continue\n }\n }\n\n const customControls = form.querySelectorAll('switch, checkbox, radio, picker, slider, weapp-switch, weapp-checkbox, weapp-radio, weapp-picker, weapp-slider')\n for (const element of Array.from(customControls)) {\n const name = element.getAttribute('name')?.trim()\n if (!name) {\n continue\n }\n const disabled = toBoolean(element.getAttribute('disabled'))\n if (disabled) {\n continue\n }\n const tag = element.tagName.toLowerCase()\n const rawValue = (element as any).value ?? element.getAttribute('value')\n if (tag.includes('checkbox')) {\n const checked = (element as any).checked ?? toBoolean(element.getAttribute('checked'))\n if (checked) {\n appendValue(name, rawValue ?? true, true)\n }\n continue\n }\n if (tag.includes('radio')) {\n const checked = (element as any).checked ?? toBoolean(element.getAttribute('checked'))\n if (checked) {\n appendValue(name, rawValue ?? true)\n }\n continue\n }\n if (tag.includes('switch')) {\n const checked = (element as any).checked ?? toBoolean(element.getAttribute('checked'))\n appendValue(name, checked)\n continue\n }\n appendValue(name, rawValue ?? '')\n }\n\n return values\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/runtime/button/index.d.ts
|
|
2
|
+
interface ButtonFormConfig {
|
|
3
|
+
preventDefault?: boolean;
|
|
4
|
+
}
|
|
5
|
+
declare function ensureButtonDefined(): void;
|
|
6
|
+
declare function setButtonFormConfig(next: ButtonFormConfig): void;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { type ButtonFormConfig, ensureButtonDefined, setButtonFormConfig };
|
|
9
|
+
//# sourceMappingURL=index.d.mts.map
|