@meng-xi/vite-plugin 0.1.3 → 0.1.4
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-en.md +48 -774
- package/README.md +45 -769
- package/dist/common/html/index.cjs +2 -2
- package/dist/common/html/index.d.cts +268 -19
- package/dist/common/html/index.d.mts +268 -19
- package/dist/common/html/index.d.ts +268 -19
- package/dist/common/html/index.mjs +2 -2
- package/dist/common/index.cjs +1 -1
- package/dist/common/index.d.cts +4 -1
- package/dist/common/index.d.mts +4 -1
- package/dist/common/index.d.ts +4 -1
- package/dist/common/index.mjs +1 -1
- package/dist/common/ui/index.cjs +1 -0
- package/dist/common/ui/index.d.cts +132 -0
- package/dist/common/ui/index.d.mts +132 -0
- package/dist/common/ui/index.d.ts +132 -0
- package/dist/common/ui/index.mjs +1 -0
- package/dist/common/validation/index.cjs +1 -1
- package/dist/common/validation/index.d.cts +1 -0
- package/dist/common/validation/index.d.mts +1 -0
- package/dist/common/validation/index.d.ts +1 -0
- package/dist/common/validation/index.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +6 -2
- package/dist/index.d.mts +6 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.mjs +1 -1
- package/dist/plugins/buildProgress/index.cjs +2 -2
- package/dist/plugins/buildProgress/index.mjs +2 -2
- package/dist/plugins/copyFile/index.d.cts +20 -2
- package/dist/plugins/copyFile/index.d.mts +20 -2
- package/dist/plugins/copyFile/index.d.ts +20 -2
- package/dist/plugins/envGuard/index.cjs +67 -0
- package/dist/plugins/envGuard/index.d.cts +156 -0
- package/dist/plugins/envGuard/index.d.mts +156 -0
- package/dist/plugins/envGuard/index.d.ts +156 -0
- package/dist/plugins/envGuard/index.mjs +67 -0
- package/dist/plugins/faviconManager/index.cjs +1 -1
- package/dist/plugins/faviconManager/index.d.cts +43 -5
- package/dist/plugins/faviconManager/index.d.mts +43 -5
- package/dist/plugins/faviconManager/index.d.ts +43 -5
- package/dist/plugins/faviconManager/index.mjs +1 -1
- package/dist/plugins/generateRouter/index.d.cts +61 -14
- package/dist/plugins/generateRouter/index.d.mts +61 -14
- package/dist/plugins/generateRouter/index.d.ts +61 -14
- package/dist/plugins/generateVersion/index.d.cts +12 -0
- package/dist/plugins/generateVersion/index.d.mts +12 -0
- package/dist/plugins/generateVersion/index.d.ts +12 -0
- package/dist/plugins/htmlInject/index.cjs +1 -7
- package/dist/plugins/htmlInject/index.d.cts +49 -194
- package/dist/plugins/htmlInject/index.d.mts +49 -194
- package/dist/plugins/htmlInject/index.d.ts +49 -194
- package/dist/plugins/htmlInject/index.mjs +1 -7
- package/dist/plugins/index.cjs +1 -1
- package/dist/plugins/index.d.cts +4 -1
- package/dist/plugins/index.d.mts +4 -1
- package/dist/plugins/index.d.ts +4 -1
- package/dist/plugins/index.mjs +1 -1
- package/dist/plugins/loadingManager/index.cjs +2 -2
- package/dist/plugins/loadingManager/index.mjs +1 -1
- package/dist/plugins/versionUpdateChecker/index.cjs +2 -2
- package/dist/plugins/versionUpdateChecker/index.mjs +3 -3
- package/dist/shared/vite-plugin.BCuhU1au.mjs +7 -0
- package/dist/shared/vite-plugin.BrI73DHA.cjs +7 -0
- package/dist/shared/vite-plugin.CmtcnItg.d.cts +261 -0
- package/dist/shared/vite-plugin.CmtcnItg.d.mts +261 -0
- package/dist/shared/vite-plugin.CmtcnItg.d.ts +261 -0
- package/dist/shared/vite-plugin.DnFDPjNf.mjs +1 -0
- package/dist/shared/vite-plugin.Dumot0up.mjs +1 -0
- package/dist/shared/vite-plugin.FfJ-Wwfu.d.cts +143 -0
- package/dist/shared/vite-plugin.FfJ-Wwfu.d.mts +143 -0
- package/dist/shared/vite-plugin.FfJ-Wwfu.d.ts +143 -0
- package/dist/shared/vite-plugin.soT9a-KD.cjs +1 -0
- package/dist/shared/vite-plugin.vwox4bU0.cjs +1 -0
- package/package.json +11 -1
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 终端 UI 工具模块
|
|
3
|
+
*
|
|
4
|
+
* @module common/ui/terminal
|
|
5
|
+
* @description 提供终端 ANSI 转义码处理、Spinner 动画帧和字符串清理等工具函数,
|
|
6
|
+
* 用于在终端中实现彩色输出、光标控制和进度动画等功能。
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Spinner 动画帧序列
|
|
10
|
+
*
|
|
11
|
+
* @description 根据操作系统平台自动选择合适的动画帧:
|
|
12
|
+
* - Windows:使用 ASCII 字符 `|`, `/`, `-`, `\`,确保在传统终端中正常显示
|
|
13
|
+
* - 其他平台:使用 Unicode Braille 字符 `⠋`-`⠏`,视觉效果更流畅
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* let frameIndex = 0
|
|
18
|
+
* setInterval(() => {
|
|
19
|
+
* process.stdout.write(`\r${SPINNER_FRAMES[frameIndex]} Loading...`)
|
|
20
|
+
* frameIndex = (frameIndex + 1) % SPINNER_FRAMES.length
|
|
21
|
+
* }, 80)
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
declare const SPINNER_FRAMES: string[];
|
|
25
|
+
/**
|
|
26
|
+
* ANSI 转义码工具集
|
|
27
|
+
*
|
|
28
|
+
* @description 提供常用的终端 ANSI 转义码常量和彩色文本包装函数,
|
|
29
|
+
* 用于在终端中实现文本着色、光标控制和行清理等操作。
|
|
30
|
+
*
|
|
31
|
+
* @property reset - 将光标重置到行首(`\x1b[0G`)
|
|
32
|
+
* @property clearLine - 清除当前行内容(`\x1b[2K`)
|
|
33
|
+
* @property hideCursor - 隐藏终端光标(`\x1b[?25l`)
|
|
34
|
+
* @property showCursor - 显示终端光标(`\x1b[?25h`)
|
|
35
|
+
* @property green - 将文本包装为绿色
|
|
36
|
+
* @property cyan - 将文本包装为青色
|
|
37
|
+
* @property gray - 将文本包装为灰色
|
|
38
|
+
* @property bold - 将文本包装为粗体
|
|
39
|
+
* @property red - 将文本包装为红色
|
|
40
|
+
* @property yellow - 将文本包装为黄色
|
|
41
|
+
* @property magenta - 将文本包装为品红色
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* // 彩色输出
|
|
46
|
+
* console.log(ANSI.green('✓') + ' 构建成功')
|
|
47
|
+
* console.log(ANSI.red('✗') + ' 构建失败')
|
|
48
|
+
* console.log(ANSI.bold(ANSI.cyan('信息:')) + ' 正在处理...')
|
|
49
|
+
*
|
|
50
|
+
* // 光标控制
|
|
51
|
+
* process.stdout.write(ANSI.hideCursor)
|
|
52
|
+
* // ... 动画逻辑 ...
|
|
53
|
+
* process.stdout.write(ANSI.showCursor)
|
|
54
|
+
*
|
|
55
|
+
* // 行清理与重写
|
|
56
|
+
* process.stdout.write(ANSI.clearLine + ANSI.reset + ANSI.green('完成'))
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
declare const ANSI: {
|
|
60
|
+
/** 将光标重置到行首 */
|
|
61
|
+
reset: string;
|
|
62
|
+
/** 清除当前行内容 */
|
|
63
|
+
clearLine: string;
|
|
64
|
+
/** 隐藏终端光标 */
|
|
65
|
+
hideCursor: string;
|
|
66
|
+
/** 显示终端光标 */
|
|
67
|
+
showCursor: string;
|
|
68
|
+
/**
|
|
69
|
+
* 将文本包装为绿色
|
|
70
|
+
* @param t - 要着色的文本
|
|
71
|
+
* @returns 包含绿色 ANSI 转义码的字符串
|
|
72
|
+
*/
|
|
73
|
+
green: (t: string) => string;
|
|
74
|
+
/**
|
|
75
|
+
* 将文本包装为青色
|
|
76
|
+
* @param t - 要着色的文本
|
|
77
|
+
* @returns 包含青色 ANSI 转义码的字符串
|
|
78
|
+
*/
|
|
79
|
+
cyan: (t: string) => string;
|
|
80
|
+
/**
|
|
81
|
+
* 将文本包装为灰色
|
|
82
|
+
* @param t - 要着色的文本
|
|
83
|
+
* @returns 包含灰色 ANSI 转义码的字符串
|
|
84
|
+
*/
|
|
85
|
+
gray: (t: string) => string;
|
|
86
|
+
/**
|
|
87
|
+
* 将文本包装为粗体
|
|
88
|
+
* @param t - 要加粗的文本
|
|
89
|
+
* @returns 包含粗体 ANSI 转义码的字符串
|
|
90
|
+
*/
|
|
91
|
+
bold: (t: string) => string;
|
|
92
|
+
/**
|
|
93
|
+
* 将文本包装为红色
|
|
94
|
+
* @param t - 要着色的文本
|
|
95
|
+
* @returns 包含红色 ANSI 转义码的字符串
|
|
96
|
+
*/
|
|
97
|
+
red: (t: string) => string;
|
|
98
|
+
/**
|
|
99
|
+
* 将文本包装为黄色
|
|
100
|
+
* @param t - 要着色的文本
|
|
101
|
+
* @returns 包含黄色 ANSI 转义码的字符串
|
|
102
|
+
*/
|
|
103
|
+
yellow: (t: string) => string;
|
|
104
|
+
/**
|
|
105
|
+
* 将文本包装为品红色
|
|
106
|
+
* @param t - 要着色的文本
|
|
107
|
+
* @returns 包含品红色 ANSI 转义码的字符串
|
|
108
|
+
*/
|
|
109
|
+
magenta: (t: string) => string;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* 移除字符串中的所有 ANSI 转义码
|
|
113
|
+
*
|
|
114
|
+
* @param str - 可能包含 ANSI 转义码的字符串
|
|
115
|
+
* @returns 不包含任何 ANSI 转义码的纯文本字符串
|
|
116
|
+
*
|
|
117
|
+
* @description 使用正则表达式匹配并移除所有形如 `\x1b[...m` 的 ANSI 转义序列,
|
|
118
|
+
* 常用于计算文本实际显示宽度或将彩色输出转为纯文本。
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```typescript
|
|
122
|
+
* const colored = ANSI.green('hello') + ' ' + ANSI.red('world')
|
|
123
|
+
* stripAnsi(colored) // 'hello world'
|
|
124
|
+
*
|
|
125
|
+
* // 计算终端显示宽度
|
|
126
|
+
* const text = ANSI.bold(ANSI.cyan('状态:')) + ' 完成'
|
|
127
|
+
* stripAnsi(text).length // 7 (不含转义码的实际字符数)
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
declare function stripAnsi(str: string): string;
|
|
131
|
+
|
|
132
|
+
export { ANSI, SPINNER_FRAMES, stripAnsi };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const B=process.platform==="win32"?["|","/","-","\\"]:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],m={reset:"\x1B[0G",clearLine:"\x1B[2K",hideCursor:"\x1B[?25l",showCursor:"\x1B[?25h",green:x=>`\x1B[32m${x}\x1B[39m`,cyan:x=>`\x1B[36m${x}\x1B[39m`,gray:x=>`\x1B[90m${x}\x1B[39m`,bold:x=>`\x1B[1m${x}\x1B[22m`,red:x=>`\x1B[31m${x}\x1B[39m`,yellow:x=>`\x1B[33m${x}\x1B[39m`,magenta:x=>`\x1B[35m${x}\x1B[39m`},r=/\x1b\[[0-9;]*m/g;function e(x){return x.replace(r,"")}export{m as ANSI,B as SPINNER_FRAMES,e as stripAnsi};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const validator=require("../../shared/vite-plugin.Bcg6RW2N.cjs"),
|
|
1
|
+
"use strict";const validator=require("../../shared/vite-plugin.Bcg6RW2N.cjs"),validators=require("../../shared/vite-plugin.soT9a-KD.cjs"),env=require("../../shared/vite-plugin.vwox4bU0.cjs");require("../script/index.cjs"),exports.Validator=validator.Validator,exports.validateCallbackFields=validators.validateCallbackFields,exports.validateEnumValue=validators.validateEnumValue,exports.validateGlobalName=validators.validateGlobalName,exports.validateNestedDuration=validators.validateNestedDuration,exports.validateNoScriptInTemplate=validators.validateNoScriptInTemplate,exports.validateNonNegativeNumber=validators.validateNonNegativeNumber,exports.STRING_LIKE_TYPES=env.STRING_LIKE_TYPES,exports.validateEnvironment=env.validateEnvironment,exports.validateLength=env.validateLength,exports.validateRange=env.validateRange,exports.validateType=env.validateType,exports.validateValue=env.validateValue;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { V as Validator } from '../../shared/vite-plugin.DRRlWY8P.cjs';
|
|
2
|
+
export { E as EnvFieldRule, a as EnvType, b as EnvValidationResult, S as STRING_LIKE_TYPES, v as validateEnvironment, c as validateLength, d as validateRange, e as validateType, f as validateValue } from '../../shared/vite-plugin.CmtcnItg.cjs';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* 验证全局变量名的合法性(包装 validateIdentifierName,附加字段上下文信息)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { V as Validator } from '../../shared/vite-plugin.DRRlWY8P.mjs';
|
|
2
|
+
export { E as EnvFieldRule, a as EnvType, b as EnvValidationResult, S as STRING_LIKE_TYPES, v as validateEnvironment, c as validateLength, d as validateRange, e as validateType, f as validateValue } from '../../shared/vite-plugin.CmtcnItg.mjs';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* 验证全局变量名的合法性(包装 validateIdentifierName,附加字段上下文信息)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { V as Validator } from '../../shared/vite-plugin.DRRlWY8P.js';
|
|
2
|
+
export { E as EnvFieldRule, a as EnvType, b as EnvValidationResult, S as STRING_LIKE_TYPES, v as validateEnvironment, c as validateLength, d as validateRange, e as validateType, f as validateValue } from '../../shared/vite-plugin.CmtcnItg.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* 验证全局变量名的合法性(包装 validateIdentifierName,附加字段上下文信息)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{V as Validator}from"../../shared/vite-plugin.DcExl6jd.mjs";
|
|
1
|
+
export{V as Validator}from"../../shared/vite-plugin.DcExl6jd.mjs";export{v as validateCallbackFields,a as validateEnumValue,b as validateGlobalName,c as validateNestedDuration,d as validateNoScriptInTemplate,e as validateNonNegativeNumber}from"../../shared/vite-plugin.Dumot0up.mjs";export{S as STRING_LIKE_TYPES,v as validateEnvironment,a as validateLength,b as validateRange,c as validateType,d as validateValue}from"../../shared/vite-plugin.DnFDPjNf.mjs";import"../script/index.mjs";
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const common_compress_index=require("./common/compress/index.cjs"),common_format_index=require("./common/format/index.cjs"),common_fs_index=require("./common/fs/index.cjs"),common_html_index=require("./common/html/index.cjs"),common_object_index=require("./common/object/index.cjs"),common_path_index=require("./common/path/index.cjs"),common_script_index=require("./common/script/index.cjs"),validator=require("./shared/vite-plugin.Bcg6RW2N.cjs"),
|
|
1
|
+
"use strict";const common_compress_index=require("./common/compress/index.cjs"),common_format_index=require("./common/format/index.cjs"),common_fs_index=require("./common/fs/index.cjs"),common_html_index=require("./common/html/index.cjs"),common_object_index=require("./common/object/index.cjs"),common_path_index=require("./common/path/index.cjs"),common_script_index=require("./common/script/index.cjs"),common_ui_index=require("./common/ui/index.cjs"),validator=require("./shared/vite-plugin.Bcg6RW2N.cjs"),validators=require("./shared/vite-plugin.soT9a-KD.cjs"),env=require("./shared/vite-plugin.vwox4bU0.cjs"),factory_index=require("./factory/index.cjs"),logger_index=require("./logger/index.cjs"),plugins_buildProgress_index=require("./plugins/buildProgress/index.cjs"),plugins_bundleAnalyzer_index=require("./plugins/bundleAnalyzer/index.cjs"),plugins_compressAssets_index=require("./plugins/compressAssets/index.cjs"),plugins_copyFile_index=require("./plugins/copyFile/index.cjs"),plugins_envGuard_index=require("./plugins/envGuard/index.cjs"),plugins_faviconManager_index=require("./plugins/faviconManager/index.cjs"),plugins_generateRouter_index=require("./plugins/generateRouter/index.cjs"),plugins_generateVersion_index=require("./plugins/generateVersion/index.cjs"),plugins_htmlInject_index=require("./plugins/htmlInject/index.cjs"),plugins_loadingManager_index=require("./plugins/loadingManager/index.cjs"),plugins_versionUpdateChecker_index=require("./plugins/versionUpdateChecker/index.cjs"),security=require("./shared/vite-plugin.BrI73DHA.cjs");require("node:zlib"),require("node:stream/promises"),require("node:stream"),require("crypto"),require("node:path"),require("fs"),require("path"),require("node:fs"),exports.calculateGzipSize=common_compress_index.calculateGzipSize,exports.escapeHtmlAttr=common_format_index.escapeHtmlAttr,exports.formatDate=common_format_index.formatDate,exports.formatFileSize=common_format_index.formatFileSize,exports.generateRandomHash=common_format_index.generateRandomHash,exports.getDateFormatParams=common_format_index.getDateFormatParams,exports.getExtension=common_format_index.getExtension,exports.padNumber=common_format_index.padNumber,exports.parseTemplate=common_format_index.parseTemplate,exports.stripJsonComments=common_format_index.stripJsonComments,exports.toCamelCase=common_format_index.toCamelCase,exports.toPascalCase=common_format_index.toPascalCase,exports.checkSourceExists=common_fs_index.checkSourceExists,exports.copySourceToTarget=common_fs_index.copySourceToTarget,exports.ensureTargetDir=common_fs_index.ensureTargetDir,exports.fileExists=common_fs_index.fileExists,exports.readDirRecursive=common_fs_index.readDirRecursive,exports.readFileContent=common_fs_index.readFileContent,exports.readFileSync=common_fs_index.readFileSync,exports.runWithConcurrency=common_fs_index.runWithConcurrency,exports.scanDirectory=common_fs_index.scanDirectory,exports.shouldUpdateFile=common_fs_index.shouldUpdateFile,exports.writeFileContent=common_fs_index.writeFileContent,exports.writeJsonReport=common_fs_index.writeJsonReport,exports.injectBeforeTag=common_html_index.injectBeforeTag,exports.injectBeforeTagWithFallback=common_html_index.injectBeforeTagWithFallback,exports.injectHeadAndBody=common_html_index.injectHeadAndBody,exports.injectHtmlByPriority=common_html_index.injectHtmlByPriority,exports.deepMerge=common_object_index.deepMerge,exports.isNodeModule=common_path_index.isNodeModule,exports.containsScriptTag=common_script_index.containsScriptTag,exports.makeCallback=common_script_index.makeCallback,exports.validateIdentifierName=common_script_index.validateIdentifierName,exports.ANSI=common_ui_index.ANSI,exports.SPINNER_FRAMES=common_ui_index.SPINNER_FRAMES,exports.stripAnsi=common_ui_index.stripAnsi,exports.Validator=validator.Validator,exports.validateCallbackFields=validators.validateCallbackFields,exports.validateEnumValue=validators.validateEnumValue,exports.validateGlobalName=validators.validateGlobalName,exports.validateNestedDuration=validators.validateNestedDuration,exports.validateNoScriptInTemplate=validators.validateNoScriptInTemplate,exports.validateNonNegativeNumber=validators.validateNonNegativeNumber,exports.STRING_LIKE_TYPES=env.STRING_LIKE_TYPES,exports.validateEnvironment=env.validateEnvironment,exports.validateLength=env.validateLength,exports.validateRange=env.validateRange,exports.validateType=env.validateType,exports.validateValue=env.validateValue,exports.BasePlugin=factory_index.BasePlugin,exports.createPluginFactory=factory_index.createPluginFactory,exports.Logger=logger_index.Logger,exports.buildProgress=plugins_buildProgress_index.buildProgress,exports.bundleAnalyzer=plugins_bundleAnalyzer_index.bundleAnalyzer,exports.compressAssets=plugins_compressAssets_index.compressAssets,exports.copyFile=plugins_copyFile_index.copyFile,exports.envGuard=plugins_envGuard_index.envGuard,exports.faviconManager=plugins_faviconManager_index.faviconManager,exports.generateRouter=plugins_generateRouter_index.generateRouter,exports.generateVersion=plugins_generateVersion_index.generateVersion,exports.htmlInject=plugins_htmlInject_index.htmlInject,exports.loadingManager=plugins_loadingManager_index.loadingManager,exports.versionUpdateChecker=plugins_versionUpdateChecker_index.versionUpdateChecker,exports.DEFAULT_BLOCKED_ATTRIBUTES=security.DEFAULT_BLOCKED_ATTRIBUTES,exports.DEFAULT_BLOCKED_TAGS=security.DEFAULT_BLOCKED_TAGS,exports.applyTemplateVars=security.applyTemplateVars,exports.evaluateCondition=security.evaluateCondition,exports.findSelectorMatch=security.findSelectorMatch,exports.injectAtPosition=security.injectAtPosition,exports.sanitizeContent=security.sanitizeContent,exports.sortRulesByPriority=security.sortRulesByPriority,exports.validateSecurityConfig=security.validateSecurityConfig;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
export { calculateGzipSize } from './common/compress/index.cjs';
|
|
2
2
|
export { DateFormatOptions, escapeHtmlAttr, formatDate, formatFileSize, generateRandomHash, getDateFormatParams, getExtension, padNumber, parseTemplate, stripJsonComments, toCamelCase, toPascalCase } from './common/format/index.cjs';
|
|
3
3
|
export { CopyOptions, CopyResult, ScanDirectoryOptions, ScannedFile, checkSourceExists, copySourceToTarget, ensureTargetDir, fileExists, readDirRecursive, readFileContent, readFileSync, runWithConcurrency, scanDirectory, shouldUpdateFile, writeFileContent, writeJsonReport } from './common/fs/index.cjs';
|
|
4
|
-
export {
|
|
4
|
+
export { DEFAULT_BLOCKED_ATTRIBUTES, DEFAULT_BLOCKED_TAGS, SanitizeRuleOptions, applyTemplateVars, evaluateCondition, findSelectorMatch, injectAtPosition, injectBeforeTag, injectBeforeTagWithFallback, injectHeadAndBody, injectHtmlByPriority, sanitizeContent, sortRulesByPriority, validateSecurityConfig } from './common/html/index.cjs';
|
|
5
5
|
export { deepMerge } from './common/object/index.cjs';
|
|
6
6
|
export { isNodeModule } from './common/path/index.cjs';
|
|
7
7
|
export { containsScriptTag, makeCallback, validateIdentifierName } from './common/script/index.cjs';
|
|
8
|
+
export { ANSI, SPINNER_FRAMES, stripAnsi } from './common/ui/index.cjs';
|
|
8
9
|
export { V as Validator } from './shared/vite-plugin.DRRlWY8P.cjs';
|
|
9
10
|
export { validateCallbackFields, validateEnumValue, validateGlobalName, validateNestedDuration, validateNoScriptInTemplate, validateNonNegativeNumber } from './common/validation/index.cjs';
|
|
11
|
+
export { E as EnvFieldRule, a as EnvType, b as EnvValidationResult, S as STRING_LIKE_TYPES, v as validateEnvironment, c as validateLength, d as validateRange, e as validateType, f as validateValue } from './shared/vite-plugin.CmtcnItg.cjs';
|
|
10
12
|
export { BasePlugin, BasePluginOptions, OptionsNormalizer, PluginFactory, PluginWithInstance, createPluginFactory } from './factory/index.cjs';
|
|
11
13
|
export { L as Logger, P as PluginLogger } from './shared/vite-plugin.CLr0ttuO.cjs';
|
|
12
14
|
export { BuildPhase, BuildProgressOptions, ProgressFormat, ProgressTheme, buildProgress } from './plugins/buildProgress/index.cjs';
|
|
13
15
|
export { BundleAnalysisResult, BundleAnalyzerOptions, BundleOutputFormat, ChunkStats, ComparisonDiff, FileTypeDistribution, ModuleStats, SizeWarning, bundleAnalyzer } from './plugins/bundleAnalyzer/index.cjs';
|
|
14
16
|
export { CompressAlgorithm, CompressAssetsOptions, CompressStats, CompressSummary, compressAssets } from './plugins/compressAssets/index.cjs';
|
|
15
17
|
export { CopyFileOptions, copyFile } from './plugins/copyFile/index.cjs';
|
|
18
|
+
export { EnvFailAction, EnvGuardOptions, EnvGuardResult, RuntimeGuardMode, envGuard } from './plugins/envGuard/index.cjs';
|
|
16
19
|
export { FaviconManagerOptions, Icon, faviconManager } from './plugins/faviconManager/index.cjs';
|
|
17
20
|
export { GenerateRouterOptions, NameStrategy, OutputFormat, RouteConfig, RouteMeta, UniAppPageConfig, UniAppPagesJson, UniAppTabBarConfig, generateRouter } from './plugins/generateRouter/index.cjs';
|
|
18
21
|
export { GenerateVersionOptions, OutputType, VersionFormat, VersionInfo, generateVersion } from './plugins/generateVersion/index.cjs';
|
|
19
|
-
export {
|
|
22
|
+
export { HtmlInjectOptions, InjectRule, InjectionLogEntry, htmlInject } from './plugins/htmlInject/index.cjs';
|
|
20
23
|
export { AutoBindMode, AutoHideOn, DebounceHide, DelayShow, LoadingCallbacks, LoadingManager, LoadingManagerOptions, LoadingPosition, LoadingStyle, MinDisplayTime, RequestFilter, SpinnerType, TransitionConfig, loadingManager } from './plugins/loadingManager/index.cjs';
|
|
21
24
|
export { PromptStyle, VersionSource, VersionUpdateCheckerOptions, versionUpdateChecker } from './plugins/versionUpdateChecker/index.cjs';
|
|
25
|
+
export { C as ConditionType, D as DualInjectResult, H as HtmlInjectResult, I as InjectCondition, a as InjectPosition, P as PositionInjectResult, S as SecurityConfig, b as SelectorMatch } from './shared/vite-plugin.FfJ-Wwfu.cjs';
|
|
22
26
|
import 'vite';
|
package/dist/index.d.mts
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
export { calculateGzipSize } from './common/compress/index.mjs';
|
|
2
2
|
export { DateFormatOptions, escapeHtmlAttr, formatDate, formatFileSize, generateRandomHash, getDateFormatParams, getExtension, padNumber, parseTemplate, stripJsonComments, toCamelCase, toPascalCase } from './common/format/index.mjs';
|
|
3
3
|
export { CopyOptions, CopyResult, ScanDirectoryOptions, ScannedFile, checkSourceExists, copySourceToTarget, ensureTargetDir, fileExists, readDirRecursive, readFileContent, readFileSync, runWithConcurrency, scanDirectory, shouldUpdateFile, writeFileContent, writeJsonReport } from './common/fs/index.mjs';
|
|
4
|
-
export {
|
|
4
|
+
export { DEFAULT_BLOCKED_ATTRIBUTES, DEFAULT_BLOCKED_TAGS, SanitizeRuleOptions, applyTemplateVars, evaluateCondition, findSelectorMatch, injectAtPosition, injectBeforeTag, injectBeforeTagWithFallback, injectHeadAndBody, injectHtmlByPriority, sanitizeContent, sortRulesByPriority, validateSecurityConfig } from './common/html/index.mjs';
|
|
5
5
|
export { deepMerge } from './common/object/index.mjs';
|
|
6
6
|
export { isNodeModule } from './common/path/index.mjs';
|
|
7
7
|
export { containsScriptTag, makeCallback, validateIdentifierName } from './common/script/index.mjs';
|
|
8
|
+
export { ANSI, SPINNER_FRAMES, stripAnsi } from './common/ui/index.mjs';
|
|
8
9
|
export { V as Validator } from './shared/vite-plugin.DRRlWY8P.mjs';
|
|
9
10
|
export { validateCallbackFields, validateEnumValue, validateGlobalName, validateNestedDuration, validateNoScriptInTemplate, validateNonNegativeNumber } from './common/validation/index.mjs';
|
|
11
|
+
export { E as EnvFieldRule, a as EnvType, b as EnvValidationResult, S as STRING_LIKE_TYPES, v as validateEnvironment, c as validateLength, d as validateRange, e as validateType, f as validateValue } from './shared/vite-plugin.CmtcnItg.mjs';
|
|
10
12
|
export { BasePlugin, BasePluginOptions, OptionsNormalizer, PluginFactory, PluginWithInstance, createPluginFactory } from './factory/index.mjs';
|
|
11
13
|
export { L as Logger, P as PluginLogger } from './shared/vite-plugin.CLr0ttuO.mjs';
|
|
12
14
|
export { BuildPhase, BuildProgressOptions, ProgressFormat, ProgressTheme, buildProgress } from './plugins/buildProgress/index.mjs';
|
|
13
15
|
export { BundleAnalysisResult, BundleAnalyzerOptions, BundleOutputFormat, ChunkStats, ComparisonDiff, FileTypeDistribution, ModuleStats, SizeWarning, bundleAnalyzer } from './plugins/bundleAnalyzer/index.mjs';
|
|
14
16
|
export { CompressAlgorithm, CompressAssetsOptions, CompressStats, CompressSummary, compressAssets } from './plugins/compressAssets/index.mjs';
|
|
15
17
|
export { CopyFileOptions, copyFile } from './plugins/copyFile/index.mjs';
|
|
18
|
+
export { EnvFailAction, EnvGuardOptions, EnvGuardResult, RuntimeGuardMode, envGuard } from './plugins/envGuard/index.mjs';
|
|
16
19
|
export { FaviconManagerOptions, Icon, faviconManager } from './plugins/faviconManager/index.mjs';
|
|
17
20
|
export { GenerateRouterOptions, NameStrategy, OutputFormat, RouteConfig, RouteMeta, UniAppPageConfig, UniAppPagesJson, UniAppTabBarConfig, generateRouter } from './plugins/generateRouter/index.mjs';
|
|
18
21
|
export { GenerateVersionOptions, OutputType, VersionFormat, VersionInfo, generateVersion } from './plugins/generateVersion/index.mjs';
|
|
19
|
-
export {
|
|
22
|
+
export { HtmlInjectOptions, InjectRule, InjectionLogEntry, htmlInject } from './plugins/htmlInject/index.mjs';
|
|
20
23
|
export { AutoBindMode, AutoHideOn, DebounceHide, DelayShow, LoadingCallbacks, LoadingManager, LoadingManagerOptions, LoadingPosition, LoadingStyle, MinDisplayTime, RequestFilter, SpinnerType, TransitionConfig, loadingManager } from './plugins/loadingManager/index.mjs';
|
|
21
24
|
export { PromptStyle, VersionSource, VersionUpdateCheckerOptions, versionUpdateChecker } from './plugins/versionUpdateChecker/index.mjs';
|
|
25
|
+
export { C as ConditionType, D as DualInjectResult, H as HtmlInjectResult, I as InjectCondition, a as InjectPosition, P as PositionInjectResult, S as SecurityConfig, b as SelectorMatch } from './shared/vite-plugin.FfJ-Wwfu.mjs';
|
|
22
26
|
import 'vite';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
export { calculateGzipSize } from './common/compress/index.js';
|
|
2
2
|
export { DateFormatOptions, escapeHtmlAttr, formatDate, formatFileSize, generateRandomHash, getDateFormatParams, getExtension, padNumber, parseTemplate, stripJsonComments, toCamelCase, toPascalCase } from './common/format/index.js';
|
|
3
3
|
export { CopyOptions, CopyResult, ScanDirectoryOptions, ScannedFile, checkSourceExists, copySourceToTarget, ensureTargetDir, fileExists, readDirRecursive, readFileContent, readFileSync, runWithConcurrency, scanDirectory, shouldUpdateFile, writeFileContent, writeJsonReport } from './common/fs/index.js';
|
|
4
|
-
export {
|
|
4
|
+
export { DEFAULT_BLOCKED_ATTRIBUTES, DEFAULT_BLOCKED_TAGS, SanitizeRuleOptions, applyTemplateVars, evaluateCondition, findSelectorMatch, injectAtPosition, injectBeforeTag, injectBeforeTagWithFallback, injectHeadAndBody, injectHtmlByPriority, sanitizeContent, sortRulesByPriority, validateSecurityConfig } from './common/html/index.js';
|
|
5
5
|
export { deepMerge } from './common/object/index.js';
|
|
6
6
|
export { isNodeModule } from './common/path/index.js';
|
|
7
7
|
export { containsScriptTag, makeCallback, validateIdentifierName } from './common/script/index.js';
|
|
8
|
+
export { ANSI, SPINNER_FRAMES, stripAnsi } from './common/ui/index.js';
|
|
8
9
|
export { V as Validator } from './shared/vite-plugin.DRRlWY8P.js';
|
|
9
10
|
export { validateCallbackFields, validateEnumValue, validateGlobalName, validateNestedDuration, validateNoScriptInTemplate, validateNonNegativeNumber } from './common/validation/index.js';
|
|
11
|
+
export { E as EnvFieldRule, a as EnvType, b as EnvValidationResult, S as STRING_LIKE_TYPES, v as validateEnvironment, c as validateLength, d as validateRange, e as validateType, f as validateValue } from './shared/vite-plugin.CmtcnItg.js';
|
|
10
12
|
export { BasePlugin, BasePluginOptions, OptionsNormalizer, PluginFactory, PluginWithInstance, createPluginFactory } from './factory/index.js';
|
|
11
13
|
export { L as Logger, P as PluginLogger } from './shared/vite-plugin.CLr0ttuO.js';
|
|
12
14
|
export { BuildPhase, BuildProgressOptions, ProgressFormat, ProgressTheme, buildProgress } from './plugins/buildProgress/index.js';
|
|
13
15
|
export { BundleAnalysisResult, BundleAnalyzerOptions, BundleOutputFormat, ChunkStats, ComparisonDiff, FileTypeDistribution, ModuleStats, SizeWarning, bundleAnalyzer } from './plugins/bundleAnalyzer/index.js';
|
|
14
16
|
export { CompressAlgorithm, CompressAssetsOptions, CompressStats, CompressSummary, compressAssets } from './plugins/compressAssets/index.js';
|
|
15
17
|
export { CopyFileOptions, copyFile } from './plugins/copyFile/index.js';
|
|
18
|
+
export { EnvFailAction, EnvGuardOptions, EnvGuardResult, RuntimeGuardMode, envGuard } from './plugins/envGuard/index.js';
|
|
16
19
|
export { FaviconManagerOptions, Icon, faviconManager } from './plugins/faviconManager/index.js';
|
|
17
20
|
export { GenerateRouterOptions, NameStrategy, OutputFormat, RouteConfig, RouteMeta, UniAppPageConfig, UniAppPagesJson, UniAppTabBarConfig, generateRouter } from './plugins/generateRouter/index.js';
|
|
18
21
|
export { GenerateVersionOptions, OutputType, VersionFormat, VersionInfo, generateVersion } from './plugins/generateVersion/index.js';
|
|
19
|
-
export {
|
|
22
|
+
export { HtmlInjectOptions, InjectRule, InjectionLogEntry, htmlInject } from './plugins/htmlInject/index.js';
|
|
20
23
|
export { AutoBindMode, AutoHideOn, DebounceHide, DelayShow, LoadingCallbacks, LoadingManager, LoadingManagerOptions, LoadingPosition, LoadingStyle, MinDisplayTime, RequestFilter, SpinnerType, TransitionConfig, loadingManager } from './plugins/loadingManager/index.js';
|
|
21
24
|
export { PromptStyle, VersionSource, VersionUpdateCheckerOptions, versionUpdateChecker } from './plugins/versionUpdateChecker/index.js';
|
|
25
|
+
export { C as ConditionType, D as DualInjectResult, H as HtmlInjectResult, I as InjectCondition, a as InjectPosition, P as PositionInjectResult, S as SecurityConfig, b as SelectorMatch } from './shared/vite-plugin.FfJ-Wwfu.js';
|
|
22
26
|
import 'vite';
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{calculateGzipSize}from"./common/compress/index.mjs";export{escapeHtmlAttr,formatDate,formatFileSize,generateRandomHash,getDateFormatParams,getExtension,padNumber,parseTemplate,stripJsonComments,toCamelCase,toPascalCase}from"./common/format/index.mjs";export{checkSourceExists,copySourceToTarget,ensureTargetDir,fileExists,readDirRecursive,readFileContent,readFileSync,runWithConcurrency,scanDirectory,shouldUpdateFile,writeFileContent,writeJsonReport}from"./common/fs/index.mjs";export{injectBeforeTag,injectBeforeTagWithFallback,injectHeadAndBody,injectHtmlByPriority}from"./common/html/index.mjs";export{deepMerge}from"./common/object/index.mjs";export{isNodeModule}from"./common/path/index.mjs";export{containsScriptTag,makeCallback,validateIdentifierName}from"./common/script/index.mjs";export{V as Validator}from"./shared/vite-plugin.DcExl6jd.mjs";export{validateCallbackFields,validateEnumValue,validateGlobalName,validateNestedDuration,validateNoScriptInTemplate,validateNonNegativeNumber}from"./
|
|
1
|
+
export{calculateGzipSize}from"./common/compress/index.mjs";export{escapeHtmlAttr,formatDate,formatFileSize,generateRandomHash,getDateFormatParams,getExtension,padNumber,parseTemplate,stripJsonComments,toCamelCase,toPascalCase}from"./common/format/index.mjs";export{checkSourceExists,copySourceToTarget,ensureTargetDir,fileExists,readDirRecursive,readFileContent,readFileSync,runWithConcurrency,scanDirectory,shouldUpdateFile,writeFileContent,writeJsonReport}from"./common/fs/index.mjs";export{injectBeforeTag,injectBeforeTagWithFallback,injectHeadAndBody,injectHtmlByPriority}from"./common/html/index.mjs";export{deepMerge}from"./common/object/index.mjs";export{isNodeModule}from"./common/path/index.mjs";export{containsScriptTag,makeCallback,validateIdentifierName}from"./common/script/index.mjs";export{ANSI,SPINNER_FRAMES,stripAnsi}from"./common/ui/index.mjs";export{V as Validator}from"./shared/vite-plugin.DcExl6jd.mjs";export{v as validateCallbackFields,a as validateEnumValue,b as validateGlobalName,c as validateNestedDuration,d as validateNoScriptInTemplate,e as validateNonNegativeNumber}from"./shared/vite-plugin.Dumot0up.mjs";export{S as STRING_LIKE_TYPES,v as validateEnvironment,a as validateLength,b as validateRange,c as validateType,d as validateValue}from"./shared/vite-plugin.DnFDPjNf.mjs";export{BasePlugin,createPluginFactory}from"./factory/index.mjs";export{Logger}from"./logger/index.mjs";export{buildProgress}from"./plugins/buildProgress/index.mjs";export{bundleAnalyzer}from"./plugins/bundleAnalyzer/index.mjs";export{compressAssets}from"./plugins/compressAssets/index.mjs";export{copyFile}from"./plugins/copyFile/index.mjs";export{envGuard}from"./plugins/envGuard/index.mjs";export{faviconManager}from"./plugins/faviconManager/index.mjs";export{generateRouter}from"./plugins/generateRouter/index.mjs";export{generateVersion}from"./plugins/generateVersion/index.mjs";export{htmlInject}from"./plugins/htmlInject/index.mjs";export{loadingManager}from"./plugins/loadingManager/index.mjs";export{versionUpdateChecker}from"./plugins/versionUpdateChecker/index.mjs";export{D as DEFAULT_BLOCKED_ATTRIBUTES,a as DEFAULT_BLOCKED_TAGS,b as applyTemplateVars,e as evaluateCondition,f as findSelectorMatch,i as injectAtPosition,s as sanitizeContent,c as sortRulesByPriority,v as validateSecurityConfig}from"./shared/vite-plugin.BCuhU1au.mjs";import"node:zlib";import"node:stream/promises";import"node:stream";import"crypto";import"node:path";import"fs";import"path";import"node:fs";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const factory_index=require("../../factory/index.cjs");require("../../logger/index.cjs"),require("../../common/object/index.cjs"),require("../../shared/vite-plugin.Bcg6RW2N.cjs");const
|
|
2
|
-
`)},"\u8F93\u51FA\u5B8C\u6210\u8FDB\u5EA6")}this.safeExecuteSync(()=>{process.stdout.write(ANSI.showCursor)},"\u6062\u590D\u5149\u6807\u663E\u793A")}addPluginHooks(e){e.config=(t,{command:s})=>(this.isDev=s==="serve",null),e.configResolved=()=>{this.options.enabled&&(this.phase="config",process.stdout.isTTY&&this.safeExecuteSync(()=>{process.stdout.write(ANSI.hideCursor)},"\u9690\u85CF\u5149\u6807"),this.startSpinner())},e.buildStart=()=>{this.options.enabled&&(this.phase="resolve",this.totalModules=0,this.transformedModules=0)},e.resolveId={handler:t=>{this.options.enabled&&(t.includes("node_modules")||t.includes(".virtual")||this.totalModules++)}},e.transform={handler:(t,s)=>{this.options.enabled&&(s.includes("node_modules")||s.includes(".virtual")||(this.phase="transform",this.transformedModules++,this.currentModule=s))}},e.writeBundle=()=>{this.options.enabled&&(this.phase="write",this.update())},e.closeBundle=()=>{this.options.enabled&&this.complete()},e.buildEnd=()=>{this.options.enabled&&(this.isDev||(this.phase="bundle",this.update()))},e.configureServer=()=>{this.options.enabled&&this.isDev&&this.complete()}}destroy(){super.destroy(),this.stopSpinner(),process.stdout.isTTY&&this.safeExecuteSync(()=>{process.stdout.write(ANSI.showCursor)},"\u6062\u590D\u5149\u6807\u663E\u793A")}}const buildProgress=factory_index.createPluginFactory(
|
|
1
|
+
"use strict";const factory_index=require("../../factory/index.cjs"),common_ui_index=require("../../common/ui/index.cjs");require("../../logger/index.cjs"),require("../../common/object/index.cjs"),require("../../shared/vite-plugin.Bcg6RW2N.cjs");const DEFAULT_THEME={completeColor:common_ui_index.ANSI.green,incompleteColor:common_ui_index.ANSI.gray,percentageColor:common_ui_index.ANSI.bold,phaseColor:common_ui_index.ANSI.cyan,moduleColor:common_ui_index.ANSI.gray},PHASE_LABELS={idle:"\u7B49\u5F85\u4E2D",config:"\u8BFB\u53D6\u914D\u7F6E",resolve:"\u89E3\u6790\u6A21\u5757",transform:"\u8F6C\u6362\u6A21\u5757",bundle:"\u6253\u5305\u4E2D",write:"\u5199\u5165\u6587\u4EF6",done:"\u6784\u5EFA\u5B8C\u6210"};class f extends factory_index.BasePlugin{totalModules=0;transformedModules=0;currentModule="";phase="idle";spinnerIndex=0;spinnerTimer=null;isDev=!1;theme=DEFAULT_THEME;lastPercentage=0;getDefaultOptions(){return{width:30,format:"bar",completeChar:"\u2588",incompleteChar:"\u2591",clearOnComplete:!0,showModuleName:!0}}validateOptions(){this.validator.field("width").number().minValue(1).field("format").enum(["bar","spinner","minimal"]).field("completeChar").string().field("incompleteChar").string().field("clearOnComplete").boolean().field("showModuleName").boolean().validate()}getPluginName(){return"build-progress"}onConfigResolved(e){super.onConfigResolved(e),this.theme=this.options.theme||DEFAULT_THEME}getPercentage(){if(this.phase==="done")return this.lastPercentage=100;if(this.phase==="config")return this.lastPercentage=5;if(this.phase==="resolve")return this.lastPercentage=10;if(this.totalModules===0)return this.lastPercentage=15;const e=Math.min(this.transformedModules/this.totalModules*70,70),t=this.phase==="bundle"?10:0,s=this.phase==="write"?5:0,i=Math.min(Math.floor(15+e+t+s),99);return this.lastPercentage=Math.max(i,this.lastPercentage),this.lastPercentage}renderBar(e){const t=this.options.width||30,s=this.options.completeChar||"\u2588",i=this.options.incompleteChar||"\u2591",r=Math.round(e/100*t),o=t-r;return this.theme.completeColor(s.repeat(r))+this.theme.incompleteColor(i.repeat(o))}renderSpinner(){const e=common_ui_index.SPINNER_FRAMES[this.spinnerIndex%common_ui_index.SPINNER_FRAMES.length];return this.spinnerIndex++,this.theme.phaseColor(e)}render(e){const t=this.options.format||"bar",s=this.theme.phaseColor(PHASE_LABELS[this.phase]),i=this.theme.percentageColor(`${e}%`);let r="";if(t==="bar"?r=`${this.renderSpinner()} ${s} ${this.renderBar(e)} ${i}`:t==="spinner"?r=`${this.renderSpinner()} ${s} ${i}`:r=`${s} ${i}`,this.options.showModuleName&&this.currentModule&&this.phase==="transform"){const o=common_ui_index.stripAnsi(r).length,n=Math.max((process.stdout.columns||80)-o-3,20),u=this.currentModule.length>n?"..."+this.currentModule.slice(-n+3):this.currentModule;r+=` ${this.theme.moduleColor(u)}`}return r}update(){if(!process.stdout.isTTY)return;const e=this.getPercentage(),t=this.render(e);this.safeExecuteSync(()=>{process.stdout.write(common_ui_index.ANSI.clearLine+common_ui_index.ANSI.reset+t)},"\u66F4\u65B0\u8FDB\u5EA6\u663E\u793A")}startSpinner(){this.spinnerTimer||process.stdout.isTTY&&(this.spinnerTimer=setInterval(()=>this.update(),80))}stopSpinner(){this.spinnerTimer&&(clearInterval(this.spinnerTimer),this.spinnerTimer=null)}complete(){if(this.phase="done",this.stopSpinner(),!process.stdout.isTTY){this.logger.success("\u6784\u5EFA\u5B8C\u6210");return}if(this.options.clearOnComplete)this.safeExecuteSync(()=>{process.stdout.write(common_ui_index.ANSI.clearLine+common_ui_index.ANSI.reset)},"\u6E05\u9664\u8FDB\u5EA6\u884C");else{const e=this.render(100);this.safeExecuteSync(()=>{process.stdout.write(common_ui_index.ANSI.clearLine+common_ui_index.ANSI.reset+e+`
|
|
2
|
+
`)},"\u8F93\u51FA\u5B8C\u6210\u8FDB\u5EA6")}this.safeExecuteSync(()=>{process.stdout.write(common_ui_index.ANSI.showCursor)},"\u6062\u590D\u5149\u6807\u663E\u793A")}addPluginHooks(e){e.config=(t,{command:s})=>(this.isDev=s==="serve",null),e.configResolved=()=>{this.options.enabled&&(this.phase="config",process.stdout.isTTY&&this.safeExecuteSync(()=>{process.stdout.write(common_ui_index.ANSI.hideCursor)},"\u9690\u85CF\u5149\u6807"),this.startSpinner())},e.buildStart=()=>{this.options.enabled&&(this.phase="resolve",this.totalModules=0,this.transformedModules=0)},e.resolveId={handler:t=>{this.options.enabled&&(t.includes("node_modules")||t.includes(".virtual")||this.totalModules++)}},e.transform={handler:(t,s)=>{this.options.enabled&&(s.includes("node_modules")||s.includes(".virtual")||(this.phase="transform",this.transformedModules++,this.currentModule=s))}},e.writeBundle=()=>{this.options.enabled&&(this.phase="write",this.update())},e.closeBundle=()=>{this.options.enabled&&this.complete()},e.buildEnd=()=>{this.options.enabled&&(this.isDev||(this.phase="bundle",this.update()))},e.configureServer=()=>{this.options.enabled&&this.isDev&&this.complete()}}destroy(){super.destroy(),this.stopSpinner(),process.stdout.isTTY&&this.safeExecuteSync(()=>{process.stdout.write(common_ui_index.ANSI.showCursor)},"\u6062\u590D\u5149\u6807\u663E\u793A")}}const buildProgress=factory_index.createPluginFactory(f);exports.buildProgress=buildProgress;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createPluginFactory as
|
|
2
|
-
`)},"\u8F93\u51FA\u5B8C\u6210\u8FDB\u5EA6")}this.safeExecuteSync(()=>{process.stdout.write(s.showCursor)},"\u6062\u590D\u5149\u6807\u663E\u793A")}addPluginHooks(e){e.config=(t,{command:r})=>(this.isDev=r==="serve",null),e.configResolved=()=>{this.options.enabled&&(this.phase="config",process.stdout.isTTY&&this.safeExecuteSync(()=>{process.stdout.write(s.hideCursor)},"\u9690\u85CF\u5149\u6807"),this.startSpinner())},e.buildStart=()=>{this.options.enabled&&(this.phase="resolve",this.totalModules=0,this.transformedModules=0)},e.resolveId={handler:t=>{this.options.enabled&&(t.includes("node_modules")||t.includes(".virtual")||this.totalModules++)}},e.transform={handler:(t,r)=>{this.options.enabled&&(r.includes("node_modules")||r.includes(".virtual")||(this.phase="transform",this.transformedModules++,this.currentModule=r))}},e.writeBundle=()=>{this.options.enabled&&(this.phase="write",this.update())},e.closeBundle=()=>{this.options.enabled&&this.complete()},e.buildEnd=()=>{this.options.enabled&&(this.isDev||(this.phase="bundle",this.update()))},e.configureServer=()=>{this.options.enabled&&this.isDev&&this.complete()}}destroy(){super.destroy(),this.stopSpinner(),process.stdout.isTTY&&this.safeExecuteSync(()=>{process.stdout.write(s.showCursor)},"\u6062\u590D\u5149\u6807\u663E\u793A")}}const g=
|
|
1
|
+
import{createPluginFactory as d,BasePlugin as p}from"../../factory/index.mjs";import{ANSI as s,SPINNER_FRAMES as l,stripAnsi as c}from"../../common/ui/index.mjs";import"../../logger/index.mjs";import"../../common/object/index.mjs";import"../../shared/vite-plugin.DcExl6jd.mjs";const h={completeColor:s.green,incompleteColor:s.gray,percentageColor:s.bold,phaseColor:s.cyan,moduleColor:s.gray},m={idle:"\u7B49\u5F85\u4E2D",config:"\u8BFB\u53D6\u914D\u7F6E",resolve:"\u89E3\u6790\u6A21\u5757",transform:"\u8F6C\u6362\u6A21\u5757",bundle:"\u6253\u5305\u4E2D",write:"\u5199\u5165\u6587\u4EF6",done:"\u6784\u5EFA\u5B8C\u6210"};class f extends p{totalModules=0;transformedModules=0;currentModule="";phase="idle";spinnerIndex=0;spinnerTimer=null;isDev=!1;theme=h;lastPercentage=0;getDefaultOptions(){return{width:30,format:"bar",completeChar:"\u2588",incompleteChar:"\u2591",clearOnComplete:!0,showModuleName:!0}}validateOptions(){this.validator.field("width").number().minValue(1).field("format").enum(["bar","spinner","minimal"]).field("completeChar").string().field("incompleteChar").string().field("clearOnComplete").boolean().field("showModuleName").boolean().validate()}getPluginName(){return"build-progress"}onConfigResolved(e){super.onConfigResolved(e),this.theme=this.options.theme||h}getPercentage(){if(this.phase==="done")return this.lastPercentage=100;if(this.phase==="config")return this.lastPercentage=5;if(this.phase==="resolve")return this.lastPercentage=10;if(this.totalModules===0)return this.lastPercentage=15;const e=Math.min(this.transformedModules/this.totalModules*70,70),t=this.phase==="bundle"?10:0,r=this.phase==="write"?5:0,o=Math.min(Math.floor(15+e+t+r),99);return this.lastPercentage=Math.max(o,this.lastPercentage),this.lastPercentage}renderBar(e){const t=this.options.width||30,r=this.options.completeChar||"\u2588",o=this.options.incompleteChar||"\u2591",i=Math.round(e/100*t),n=t-i;return this.theme.completeColor(r.repeat(i))+this.theme.incompleteColor(o.repeat(n))}renderSpinner(){const e=l[this.spinnerIndex%l.length];return this.spinnerIndex++,this.theme.phaseColor(e)}render(e){const t=this.options.format||"bar",r=this.theme.phaseColor(m[this.phase]),o=this.theme.percentageColor(`${e}%`);let i="";if(t==="bar"?i=`${this.renderSpinner()} ${r} ${this.renderBar(e)} ${o}`:t==="spinner"?i=`${this.renderSpinner()} ${r} ${o}`:i=`${r} ${o}`,this.options.showModuleName&&this.currentModule&&this.phase==="transform"){const n=c(i).length,u=Math.max((process.stdout.columns||80)-n-3,20),a=this.currentModule.length>u?"..."+this.currentModule.slice(-u+3):this.currentModule;i+=` ${this.theme.moduleColor(a)}`}return i}update(){if(!process.stdout.isTTY)return;const e=this.getPercentage(),t=this.render(e);this.safeExecuteSync(()=>{process.stdout.write(s.clearLine+s.reset+t)},"\u66F4\u65B0\u8FDB\u5EA6\u663E\u793A")}startSpinner(){this.spinnerTimer||process.stdout.isTTY&&(this.spinnerTimer=setInterval(()=>this.update(),80))}stopSpinner(){this.spinnerTimer&&(clearInterval(this.spinnerTimer),this.spinnerTimer=null)}complete(){if(this.phase="done",this.stopSpinner(),!process.stdout.isTTY){this.logger.success("\u6784\u5EFA\u5B8C\u6210");return}if(this.options.clearOnComplete)this.safeExecuteSync(()=>{process.stdout.write(s.clearLine+s.reset)},"\u6E05\u9664\u8FDB\u5EA6\u884C");else{const e=this.render(100);this.safeExecuteSync(()=>{process.stdout.write(s.clearLine+s.reset+e+`
|
|
2
|
+
`)},"\u8F93\u51FA\u5B8C\u6210\u8FDB\u5EA6")}this.safeExecuteSync(()=>{process.stdout.write(s.showCursor)},"\u6062\u590D\u5149\u6807\u663E\u793A")}addPluginHooks(e){e.config=(t,{command:r})=>(this.isDev=r==="serve",null),e.configResolved=()=>{this.options.enabled&&(this.phase="config",process.stdout.isTTY&&this.safeExecuteSync(()=>{process.stdout.write(s.hideCursor)},"\u9690\u85CF\u5149\u6807"),this.startSpinner())},e.buildStart=()=>{this.options.enabled&&(this.phase="resolve",this.totalModules=0,this.transformedModules=0)},e.resolveId={handler:t=>{this.options.enabled&&(t.includes("node_modules")||t.includes(".virtual")||this.totalModules++)}},e.transform={handler:(t,r)=>{this.options.enabled&&(r.includes("node_modules")||r.includes(".virtual")||(this.phase="transform",this.transformedModules++,this.currentModule=r))}},e.writeBundle=()=>{this.options.enabled&&(this.phase="write",this.update())},e.closeBundle=()=>{this.options.enabled&&this.complete()},e.buildEnd=()=>{this.options.enabled&&(this.isDev||(this.phase="bundle",this.update()))},e.configureServer=()=>{this.options.enabled&&this.isDev&&this.complete()}}destroy(){super.destroy(),this.stopSpinner(),process.stdout.isTTY&&this.safeExecuteSync(()=>{process.stdout.write(s.showCursor)},"\u6062\u590D\u5149\u6807\u663E\u793A")}}const g=d(f);export{g as buildProgress};
|
|
@@ -7,6 +7,21 @@ import '../../shared/vite-plugin.DRRlWY8P.cjs';
|
|
|
7
7
|
* 复制文件插件的配置选项接口
|
|
8
8
|
*
|
|
9
9
|
* @interface CopyFileOptions
|
|
10
|
+
* @extends {BasePluginOptions}
|
|
11
|
+
*
|
|
12
|
+
* @description 定义文件复制插件的所有可配置项,包括源目录、目标目录、
|
|
13
|
+
* 覆盖策略、递归复制和增量复制等选项。
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* copyFile({
|
|
18
|
+
* sourceDir: 'src/assets',
|
|
19
|
+
* targetDir: 'dist/assets',
|
|
20
|
+
* overwrite: true,
|
|
21
|
+
* recursive: true,
|
|
22
|
+
* incremental: true
|
|
23
|
+
* })
|
|
24
|
+
* ```
|
|
10
25
|
*/
|
|
11
26
|
interface CopyFileOptions extends BasePluginOptions {
|
|
12
27
|
/**
|
|
@@ -28,13 +43,16 @@ interface CopyFileOptions extends BasePluginOptions {
|
|
|
28
43
|
*/
|
|
29
44
|
overwrite?: boolean;
|
|
30
45
|
/**
|
|
31
|
-
*
|
|
46
|
+
* 是否支持递归复制子目录
|
|
32
47
|
*
|
|
33
48
|
* @default true
|
|
34
49
|
*/
|
|
35
50
|
recursive?: boolean;
|
|
36
51
|
/**
|
|
37
|
-
*
|
|
52
|
+
* 是否启用增量复制,仅复制有变动的文件
|
|
53
|
+
*
|
|
54
|
+
* @description 启用后,插件会比较源文件和目标文件的大小和修改时间,
|
|
55
|
+
* 仅复制有差异的文件,跳过未变化的文件以提高构建速度。
|
|
38
56
|
*
|
|
39
57
|
* @default true
|
|
40
58
|
*/
|
|
@@ -7,6 +7,21 @@ import '../../shared/vite-plugin.DRRlWY8P.mjs';
|
|
|
7
7
|
* 复制文件插件的配置选项接口
|
|
8
8
|
*
|
|
9
9
|
* @interface CopyFileOptions
|
|
10
|
+
* @extends {BasePluginOptions}
|
|
11
|
+
*
|
|
12
|
+
* @description 定义文件复制插件的所有可配置项,包括源目录、目标目录、
|
|
13
|
+
* 覆盖策略、递归复制和增量复制等选项。
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* copyFile({
|
|
18
|
+
* sourceDir: 'src/assets',
|
|
19
|
+
* targetDir: 'dist/assets',
|
|
20
|
+
* overwrite: true,
|
|
21
|
+
* recursive: true,
|
|
22
|
+
* incremental: true
|
|
23
|
+
* })
|
|
24
|
+
* ```
|
|
10
25
|
*/
|
|
11
26
|
interface CopyFileOptions extends BasePluginOptions {
|
|
12
27
|
/**
|
|
@@ -28,13 +43,16 @@ interface CopyFileOptions extends BasePluginOptions {
|
|
|
28
43
|
*/
|
|
29
44
|
overwrite?: boolean;
|
|
30
45
|
/**
|
|
31
|
-
*
|
|
46
|
+
* 是否支持递归复制子目录
|
|
32
47
|
*
|
|
33
48
|
* @default true
|
|
34
49
|
*/
|
|
35
50
|
recursive?: boolean;
|
|
36
51
|
/**
|
|
37
|
-
*
|
|
52
|
+
* 是否启用增量复制,仅复制有变动的文件
|
|
53
|
+
*
|
|
54
|
+
* @description 启用后,插件会比较源文件和目标文件的大小和修改时间,
|
|
55
|
+
* 仅复制有差异的文件,跳过未变化的文件以提高构建速度。
|
|
38
56
|
*
|
|
39
57
|
* @default true
|
|
40
58
|
*/
|
|
@@ -7,6 +7,21 @@ import '../../shared/vite-plugin.DRRlWY8P.js';
|
|
|
7
7
|
* 复制文件插件的配置选项接口
|
|
8
8
|
*
|
|
9
9
|
* @interface CopyFileOptions
|
|
10
|
+
* @extends {BasePluginOptions}
|
|
11
|
+
*
|
|
12
|
+
* @description 定义文件复制插件的所有可配置项,包括源目录、目标目录、
|
|
13
|
+
* 覆盖策略、递归复制和增量复制等选项。
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* copyFile({
|
|
18
|
+
* sourceDir: 'src/assets',
|
|
19
|
+
* targetDir: 'dist/assets',
|
|
20
|
+
* overwrite: true,
|
|
21
|
+
* recursive: true,
|
|
22
|
+
* incremental: true
|
|
23
|
+
* })
|
|
24
|
+
* ```
|
|
10
25
|
*/
|
|
11
26
|
interface CopyFileOptions extends BasePluginOptions {
|
|
12
27
|
/**
|
|
@@ -28,13 +43,16 @@ interface CopyFileOptions extends BasePluginOptions {
|
|
|
28
43
|
*/
|
|
29
44
|
overwrite?: boolean;
|
|
30
45
|
/**
|
|
31
|
-
*
|
|
46
|
+
* 是否支持递归复制子目录
|
|
32
47
|
*
|
|
33
48
|
* @default true
|
|
34
49
|
*/
|
|
35
50
|
recursive?: boolean;
|
|
36
51
|
/**
|
|
37
|
-
*
|
|
52
|
+
* 是否启用增量复制,仅复制有变动的文件
|
|
53
|
+
*
|
|
54
|
+
* @description 启用后,插件会比较源文件和目标文件的大小和修改时间,
|
|
55
|
+
* 仅复制有差异的文件,跳过未变化的文件以提高构建速度。
|
|
38
56
|
*
|
|
39
57
|
* @default true
|
|
40
58
|
*/
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";const factory_index=require("../../factory/index.cjs"),env=require("../../shared/vite-plugin.vwox4bU0.cjs"),common_html_index=require("../../common/html/index.cjs"),common_fs_index=require("../../common/fs/index.cjs"),common_format_index=require("../../common/format/index.cjs"),a=require("node:path"),a$1=require("node:fs");require("../../logger/index.cjs"),require("../../common/object/index.cjs"),require("../../shared/vite-plugin.Bcg6RW2N.cjs"),require("../../shared/vite-plugin.BrI73DHA.cjs"),require("../../common/script/index.cjs"),require("fs"),require("path"),require("crypto");function _interopDefaultCompat(n){return n&&typeof n=="object"&&"default"in n?n.default:n}const a__default=_interopDefaultCompat(a),a__default$1=_interopDefaultCompat(a$1);function generateTemplate(n){const i=new Map,s=[];for(const[e,t]of Object.entries(n)){const l={type:"string",required:!0,...t};if(l.group){const r=i.get(l.group)||[];r.push({key:e,rule:l}),i.set(l.group,r)}else s.push({key:e,rule:l})}const u=[];u.push("# \u73AF\u5883\u53D8\u91CF\u6A21\u677F\u6587\u4EF6"),u.push(`# \u751F\u6210\u65F6\u95F4: ${new Date().toISOString()}`),u.push("# \u7531 @meng-xi/vite-plugin envGuard \u81EA\u52A8\u751F\u6210"),u.push(""),s.length>0&&o(u,"\u901A\u7528\u914D\u7F6E",s);for(const[e,t]of i)o(u,e,t);return u.join(`
|
|
2
|
+
`)}function o(n,i,s){n.push("# =============================="),n.push(`# ${i}`),n.push("# =============================="),n.push("");for(const{key:u,rule:e}of s){e.description&&n.push(`# ${e.description}`);const t=[];t.push(`\u7C7B\u578B: ${e.type||"string"}`),t.push(e.required!==!1?"\u5FC5\u9700":"\u53EF\u9009"),e.enumValues&&e.enumValues.length>0&&t.push(`\u679A\u4E3E\u503C: ${e.enumValues.join(" | ")}`),e.minValue!==void 0&&t.push(`\u6700\u5C0F\u503C: ${e.minValue}`),e.maxValue!==void 0&&t.push(`\u6700\u5927\u503C: ${e.maxValue}`),e.minLength!==void 0&&t.push(`\u6700\u5C0F\u957F\u5EA6: ${e.minLength}`),e.maxLength!==void 0&&t.push(`\u6700\u5927\u957F\u5EA6: ${e.maxLength}`),e.sensitive&&t.push("\u26A0\uFE0F \u654F\u611F\u4FE1\u606F"),n.push(`# [${t.join(" | ")}]`),e.default!==void 0?n.push(`${u}=${e.sensitive?"********":e.default}`):n.push(`${u}=`),n.push("")}}function generateRuntimeGuard(n,i,s,u){const e=[];for(const[d,h]of Object.entries(n))h.required!==!1&&e.push({key:d,rule:{type:"string",required:!0,...h}});if(e.length===0)return"";const t=u.filter(d=>d.status!=="pass"),l=e.map(({key:d,rule:h})=>({key:d,type:h.type||"string",description:h.description||""})),r=JSON.stringify(l,null,2),c=t.map(d=>d.key),p=JSON.stringify(c),g=m(s);return`<script>
|
|
3
|
+
${`
|
|
4
|
+
(function() {
|
|
5
|
+
'use strict';
|
|
6
|
+
var GUARD_NAME = ${JSON.stringify(i)};
|
|
7
|
+
var GUARD_DATA = ${r};
|
|
8
|
+
var FAILED_KEYS = ${p};
|
|
9
|
+
var MODE = ${JSON.stringify(s)};
|
|
10
|
+
|
|
11
|
+
var missing = [];
|
|
12
|
+
var invalid = [];
|
|
13
|
+
|
|
14
|
+
for (var i = 0; i < GUARD_DATA.length; i++) {
|
|
15
|
+
var item = GUARD_DATA[i];
|
|
16
|
+
var el = document.querySelector('meta[name="env:' + item.key + '"]');
|
|
17
|
+
if (!el) {
|
|
18
|
+
var attr = document.querySelector('[' + item.key + ']');
|
|
19
|
+
if (!attr) {
|
|
20
|
+
missing.push(item.key);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
for (var j = 0; j < FAILED_KEYS.length; j++) {
|
|
26
|
+
if (invalid.indexOf(FAILED_KEYS[j]) === -1 && missing.indexOf(FAILED_KEYS[j]) === -1) {
|
|
27
|
+
invalid.push(FAILED_KEYS[j]);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
var hasIssues = missing.length > 0 || invalid.length > 0;
|
|
32
|
+
|
|
33
|
+
var guard = {
|
|
34
|
+
missing: missing,
|
|
35
|
+
invalid: invalid,
|
|
36
|
+
allPassed: !hasIssues,
|
|
37
|
+
data: GUARD_DATA
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
if (typeof window !== 'undefined') {
|
|
41
|
+
window[GUARD_NAME] = guard;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (hasIssues) {
|
|
45
|
+
${g}
|
|
46
|
+
}
|
|
47
|
+
})();
|
|
48
|
+
`.trim()}
|
|
49
|
+
<\/script>`}function m(n){switch(n){case"console":return`
|
|
50
|
+
var msgs = [];
|
|
51
|
+
if (missing.length > 0) msgs.push('[EnvGuard] \u7F3A\u5C11\u73AF\u5883\u53D8\u91CF: ' + missing.join(', '));
|
|
52
|
+
if (invalid.length > 0) msgs.push('[EnvGuard] \u73AF\u5883\u53D8\u91CF\u6821\u9A8C\u5931\u8D25: ' + invalid.join(', '));
|
|
53
|
+
for (var k = 0; k < msgs.length; k++) console.warn(msgs[k]);`;case"throw":return`
|
|
54
|
+
var errMsg = '';
|
|
55
|
+
if (missing.length > 0) errMsg += '\u7F3A\u5C11\u73AF\u5883\u53D8\u91CF: ' + missing.join(', ') + '; ';
|
|
56
|
+
if (invalid.length > 0) errMsg += '\u73AF\u5883\u53D8\u91CF\u6821\u9A8C\u5931\u8D25: ' + invalid.join(', ');
|
|
57
|
+
throw new Error('[EnvGuard] ' + errMsg);`;case"overlay":return`
|
|
58
|
+
var overlay = document.createElement('div');
|
|
59
|
+
overlay.id = '__env_guard_overlay__';
|
|
60
|
+
overlay.style.cssText = 'position:fixed;top:0;left:0;right:0;z-index:99999;background:#fff3cd;color:#856404;padding:12px 20px;font-size:14px;font-family:monospace;border-bottom:3px solid #ffc107;box-shadow:0 2px 8px rgba(0,0,0,0.15);';
|
|
61
|
+
var html = '<strong>\u26A0\uFE0F EnvGuard \u8B66\u544A</strong><br>';
|
|
62
|
+
if (missing.length > 0) html += '\u7F3A\u5C11: ' + missing.join(', ') + '<br>';
|
|
63
|
+
if (invalid.length > 0) html += '\u6821\u9A8C\u5931\u8D25: ' + invalid.join(', ');
|
|
64
|
+
overlay.innerHTML = html;
|
|
65
|
+
document.addEventListener('DOMContentLoaded', function() { document.body.appendChild(overlay); });`;default:return""}}class R extends factory_index.BasePlugin{validationResults=[];guardResult=null;getDefaultOptions(){return{required:{},failAction:"error",generateTemplate:!0,templateOutput:".env.template",runtimeGuard:!1,runtimeGlobalName:"__ENV_GUARD__",runtimeGuardMode:"console",envFiles:[".env",".env.local",".env.production",".env.development"],autoLoadEnv:!0,reportOutput:!1,validateBeforeBuild:!0,showSummary:!0}}validateOptions(){this.validator.field("failAction").enum(["error","warn","ignore"]).field("generateTemplate").boolean().field("runtimeGuard").boolean().field("runtimeGuardMode").enum(["console","throw","overlay"]).field("autoLoadEnv").boolean().field("reportOutput").custom(i=>i===!1||typeof i=="string","reportOutput \u5FC5\u987B\u4E3A false \u6216\u5B57\u7B26\u4E32\u8DEF\u5F84").field("validateBeforeBuild").boolean().field("showSummary").boolean().validate()}getPluginName(){return"env-guard"}addPluginHooks(i){this.options.validateBeforeBuild&&(i.configResolved=s=>{this.viteConfig=s,this.runValidation()}),this.options.runtimeGuard&&(i.transformIndexHtml={order:"post",handler:s=>this.safeExecuteSync(()=>this.injectRuntimeGuard(s),"\u6CE8\u5165\u8FD0\u884C\u65F6\u5B88\u536B")||s})}runValidation(){this.options.autoLoadEnv&&this.loadEnvFiles(),this.validationResults=env.validateEnvironment(process.env,this.options.required),this.guardResult=this.buildResult(),this.options.generateTemplate&&this.writeEnvTemplate(),this.options.reportOutput&&this.writeReport(),this.options.showSummary&&this.logSummary(),this.handleResults()}loadEnvFiles(){if(!this.viteConfig)return;const i=this.viteConfig.root||process.cwd();for(const s of this.options.envFiles){const u=a__default.resolve(i,s);if(a__default$1.existsSync(u))try{this.parseAndLoadEnvFile(u)}catch{this.logger.warn(`\u52A0\u8F7D .env \u6587\u4EF6\u5931\u8D25: ${u}`)}}}parseAndLoadEnvFile(i){const s=a__default$1.readFileSync(i,"utf-8").split(`
|
|
66
|
+
`);for(const u of s){const e=u.trim();if(!e||e.startsWith("#"))continue;const t=e.indexOf("=");if(t===-1)continue;const l=e.slice(0,t).trim();let r=e.slice(t+1).trim();(r.startsWith('"')&&r.endsWith('"')||r.startsWith("'")&&r.endsWith("'"))&&(r=r.slice(1,-1)),l.startsWith("VITE_")&&process.env[l]===void 0&&(process.env[l]=r)}}buildResult(){const i=this.validationResults.length,s=this.validationResults.filter(t=>t.status==="pass").length,u=this.validationResults.filter(t=>t.status==="missing").length,e=this.validationResults.filter(t=>t.status!=="pass"&&t.status!=="missing").length;return{timestamp:common_format_index.formatDate(new Date,"{YYYY}-{MM}-{DD}T{HH}:{mm}:{ss}"),total:i,passed:s,missing:u,invalid:e,results:this.validationResults,allPassed:u===0&&e===0}}handleResults(){if(!this.guardResult||this.guardResult.allPassed)return;const i=this.validationResults.filter(t=>t.status==="missing").map(t=>t.key),s=this.validationResults.filter(t=>t.status!=="pass"&&t.status!=="missing"),u=[];i.length>0&&u.push(`\u7F3A\u5C11\u5FC5\u9700\u7684\u73AF\u5883\u53D8\u91CF: ${i.join(", ")}`);for(const t of s)u.push(`${t.key}: ${t.message}`);const e=u.join(`
|
|
67
|
+
`);switch(this.options.failAction){case"error":throw new Error(e);case"warn":this.logger.warn(e);break}}writeEnvTemplate(){const i=this.viteConfig?.root||process.cwd(),s=a__default.resolve(i,this.options.templateOutput),u=generateTemplate(this.options.required);this.safeExecuteSync(()=>{common_fs_index.writeFileContent(s,u),this.logger.info(`\u73AF\u5883\u53D8\u91CF\u6A21\u677F\u5DF2\u751F\u6210: ${this.options.templateOutput}`)},"\u751F\u6210 .env \u6A21\u677F")}writeReport(){if(!this.guardResult||!this.options.reportOutput)return;const i=this.viteConfig?.build?.outDir||"dist",s=a__default.resolve(i,this.options.reportOutput);this.safeExecuteSync(()=>{const u=JSON.stringify(this.guardResult,(e,t)=>t instanceof RegExp?t.toString():typeof t=="function"?"[Function]":t,2);common_fs_index.writeFileContent(s,u),this.logger.info(`\u6821\u9A8C\u62A5\u544A\u5DF2\u751F\u6210: ${this.options.reportOutput}`)},"\u751F\u6210\u6821\u9A8C\u62A5\u544A")}logSummary(){if(!this.guardResult)return;const{total:i,passed:s,missing:u,invalid:e,allPassed:t}=this.guardResult;if(t){this.logger.success(`\u73AF\u5883\u53D8\u91CF\u6821\u9A8C\u901A\u8FC7: ${i} \u4E2A\u53D8\u91CF\u5168\u90E8\u5408\u6CD5`);return}this.logger.info(`\u73AF\u5883\u53D8\u91CF\u6821\u9A8C\u7ED3\u679C: \u603B\u8BA1 ${i} | \u901A\u8FC7 ${s} | \u7F3A\u5931 ${u} | \u5931\u8D25 ${e}`);const l=this.validationResults.filter(r=>r.status!=="pass");for(const r of l){const c=r.status==="missing"?"\u7F3A\u5931":"\u5931\u8D25";this.logger.warn(` [${c}] ${r.key}: ${r.message}`)}}injectRuntimeGuard(i){const s=generateRuntimeGuard(this.options.required,this.options.runtimeGlobalName,this.options.runtimeGuardMode,this.validationResults);if(!s)return i;const u=common_html_index.injectBeforeTag(i,"</head>",s);return u.injected?u.html:(this.logger.warn("\u672A\u627E\u5230 </head> \u6807\u7B7E\uFF0C\u8FD0\u884C\u65F6\u5B88\u536B\u4EE3\u7801\u672A\u80FD\u6CE8\u5165"),i)}getResult(){return this.guardResult}getValidationResults(){return[...this.validationResults]}}const envGuard=factory_index.createPluginFactory(R);exports.envGuard=envGuard;
|