@cosui/genui-toolkit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -0
- package/bin/genui +2 -0
- package/dist/auth.d.ts +3 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +132 -0
- package/dist/auth.js.map +1 -0
- package/dist/check/artifact.d.ts +16 -0
- package/dist/check/artifact.d.ts.map +1 -0
- package/dist/check/artifact.js +209 -0
- package/dist/check/artifact.js.map +1 -0
- package/dist/check/checker.d.ts +6 -0
- package/dist/check/checker.d.ts.map +1 -0
- package/dist/check/checker.js +79 -0
- package/dist/check/checker.js.map +1 -0
- package/dist/check/cli.d.ts +5 -0
- package/dist/check/cli.d.ts.map +1 -0
- package/dist/check/cli.js +110 -0
- package/dist/check/cli.js.map +1 -0
- package/dist/check/rules/artifact.d.ts +3 -0
- package/dist/check/rules/artifact.d.ts.map +1 -0
- package/dist/check/rules/artifact.js +96 -0
- package/dist/check/rules/artifact.js.map +1 -0
- package/dist/check/rules/common.d.ts +16 -0
- package/dist/check/rules/common.d.ts.map +1 -0
- package/dist/check/rules/common.js +60 -0
- package/dist/check/rules/common.js.map +1 -0
- package/dist/check/rules/file.d.ts +3 -0
- package/dist/check/rules/file.d.ts.map +1 -0
- package/dist/check/rules/file.js +157 -0
- package/dist/check/rules/file.js.map +1 -0
- package/dist/check/rules/html.d.ts +3 -0
- package/dist/check/rules/html.d.ts.map +1 -0
- package/dist/check/rules/html.js +414 -0
- package/dist/check/rules/html.js.map +1 -0
- package/dist/check/rules/index.d.ts +6 -0
- package/dist/check/rules/index.d.ts.map +1 -0
- package/dist/check/rules/index.js +59 -0
- package/dist/check/rules/index.js.map +1 -0
- package/dist/check/rules/javascript.d.ts +3 -0
- package/dist/check/rules/javascript.d.ts.map +1 -0
- package/dist/check/rules/javascript.js +541 -0
- package/dist/check/rules/javascript.js.map +1 -0
- package/dist/check/rules/svg.d.ts +8 -0
- package/dist/check/rules/svg.d.ts.map +1 -0
- package/dist/check/rules/svg.js +100 -0
- package/dist/check/rules/svg.js.map +1 -0
- package/dist/check/types.d.ts +50 -0
- package/dist/check/types.d.ts.map +1 -0
- package/dist/check/types.js +3 -0
- package/dist/check/types.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +62 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +64 -0
- package/dist/config.js.map +1 -0
- package/dist/env.d.ts +2 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +25 -0
- package/dist/env.js.map +1 -0
- package/dist/output.d.ts +8 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +42 -0
- package/dist/output.js.map +1 -0
- package/dist/preview.d.ts +21 -0
- package/dist/preview.d.ts.map +1 -0
- package/dist/preview.js +295 -0
- package/dist/preview.js.map +1 -0
- package/dist/project.d.ts +5 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.js +22 -0
- package/dist/project.js.map +1 -0
- package/dist/push.d.ts +2 -0
- package/dist/push.d.ts.map +1 -0
- package/dist/push.js +322 -0
- package/dist/push.js.map +1 -0
- package/dist/remote.d.ts +15 -0
- package/dist/remote.d.ts.map +1 -0
- package/dist/remote.js +73 -0
- package/dist/remote.js.map +1 -0
- package/package.json +27 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/check/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../../src/check/rules/artifact.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAW,IAAI,EAAC,MAAM,UAAU,CAAC;AA6F7C,eAAO,MAAM,YAAY,EAAE,IAY1B,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.artifactRule = void 0;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const artifact_1 = require("../artifact");
|
|
9
|
+
const common_1 = require("./common");
|
|
10
|
+
const ruleId = 'artifact';
|
|
11
|
+
const ALLOWED_FILE = new Set(['.html', '.zip']);
|
|
12
|
+
function artifactName(value) {
|
|
13
|
+
if (!/^https?:\/\//i.test(value)) {
|
|
14
|
+
return node_path_1.default.basename(value);
|
|
15
|
+
}
|
|
16
|
+
const name = node_path_1.default.posix.basename(new URL(value).pathname);
|
|
17
|
+
return /\.(html?|zip)$/i.test(name) ? name : 'index.html';
|
|
18
|
+
}
|
|
19
|
+
function artifactExtension(value) {
|
|
20
|
+
return /^https?:\/\//i.test(value)
|
|
21
|
+
? node_path_1.default.extname(artifactName(value)).toLowerCase()
|
|
22
|
+
: node_path_1.default.extname(value).toLowerCase();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 1、只允许 HTML 或 ZIP
|
|
26
|
+
* 2、要求扩展名与内容一致
|
|
27
|
+
* 3、ZIP 根目录必须有且只有一个 index.html,且内部文件类型受支持
|
|
28
|
+
*/
|
|
29
|
+
function checkFormat(artifact) {
|
|
30
|
+
const name = artifactName(artifact.path);
|
|
31
|
+
const extension = artifactExtension(artifact.path);
|
|
32
|
+
if (!ALLOWED_FILE.has(extension)) {
|
|
33
|
+
return [{
|
|
34
|
+
severity: 'error',
|
|
35
|
+
file: name,
|
|
36
|
+
message: '文件格式不符合要求,请使用 .html 文件或 .zip 文件',
|
|
37
|
+
}];
|
|
38
|
+
}
|
|
39
|
+
if (artifact.type === 'html') {
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
const files = [...new Set([
|
|
43
|
+
...artifact.files.keys(),
|
|
44
|
+
...artifact.zipEntries
|
|
45
|
+
.map(entry => entry.fileName)
|
|
46
|
+
.filter(file => !file.endsWith('/')),
|
|
47
|
+
])];
|
|
48
|
+
const problems = [];
|
|
49
|
+
const hasRootIndex = files.includes('index.html');
|
|
50
|
+
if (!hasRootIndex) {
|
|
51
|
+
problems.push({
|
|
52
|
+
severity: 'error',
|
|
53
|
+
file: name,
|
|
54
|
+
message: 'ZIP 根目录缺少 index.html,请将 index.html 放到 ZIP 根目录后重新压缩',
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
problems.push(...files.flatMap(file => {
|
|
58
|
+
const extension = node_path_1.default.posix.extname(file).toLowerCase();
|
|
59
|
+
if (artifact_1.ALLOWED_ARTIFACT_EXTENSIONS.has(extension) || (0, artifact_1.isMacOsMetadata)(file)) {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
return [{
|
|
63
|
+
severity: 'error',
|
|
64
|
+
file,
|
|
65
|
+
message: `代码包中包含不支持的文件类型,请删除该文件或转换为支持的格式:${[...artifact_1.ALLOWED_ARTIFACT_EXTENSIONS].join(', ')}`,
|
|
66
|
+
}];
|
|
67
|
+
}));
|
|
68
|
+
return problems;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 产物总大小不超过限定上限,ZIP 按解压后各文件字节数之和计算
|
|
72
|
+
*/
|
|
73
|
+
function checkSize(artifact, maxArtifactBytes) {
|
|
74
|
+
const size = artifact.type === 'html'
|
|
75
|
+
? artifact.bytes.byteLength
|
|
76
|
+
: [...artifact.files.values()]
|
|
77
|
+
.reduce((total, file) => total + file.bytes.byteLength, 0);
|
|
78
|
+
if (size <= maxArtifactBytes) {
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
return [{
|
|
82
|
+
severity: 'error',
|
|
83
|
+
file: node_path_1.default.basename(artifact.path),
|
|
84
|
+
message: `代码包大小超过 ${(0, artifact_1.formatMegabytes)(maxArtifactBytes)},请压缩或删除不必要资源后重新提交`,
|
|
85
|
+
}];
|
|
86
|
+
}
|
|
87
|
+
exports.artifactRule = {
|
|
88
|
+
id: ruleId,
|
|
89
|
+
check({ artifact, options }) {
|
|
90
|
+
return [
|
|
91
|
+
...(0, common_1.toDiagnostics)(ruleId, checkFormat(artifact)),
|
|
92
|
+
...(0, common_1.toDiagnostics)(ruleId, checkSize(artifact, options?.maxArtifactBytes ?? artifact_1.DEFAULT_MAX_ARTIFACT_BYTES)),
|
|
93
|
+
];
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=artifact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../../src/check/rules/artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ArtifactFile, Diagnostic } from '../types';
|
|
2
|
+
export type RuleProblem = Omit<Diagnostic, 'file' | 'ruleId'> & {
|
|
3
|
+
file: string;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* 将规则检测出的问题列表转换为统一的诊断结果列表
|
|
7
|
+
*
|
|
8
|
+
* @param ruleId 规则标识,用于标记诊断结果的来源规则
|
|
9
|
+
* @return 转换后的诊断结果数组
|
|
10
|
+
*/
|
|
11
|
+
export declare function toDiagnostics(ruleId: string, problems: readonly RuleProblem[]): Diagnostic[];
|
|
12
|
+
export declare function isInlineHandlerAttribute(name: string, tagName?: string): boolean;
|
|
13
|
+
export declare function toFile(file: ArtifactFile): File;
|
|
14
|
+
export declare function readFileBytes(file: File): Promise<Uint8Array>;
|
|
15
|
+
export declare function readUtf8(file: File): Promise<string>;
|
|
16
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/check/rules/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,YAAY,EACZ,UAAU,EACb,MAAM,UAAU,CAAC;AA+BlB,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG;IAC5D,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,WAAW,EAAE,GAAG,UAAU,EAAE,CAE5F;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAIhF;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAG/C;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAEnE;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAG1D"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toDiagnostics = toDiagnostics;
|
|
4
|
+
exports.isInlineHandlerAttribute = isInlineHandlerAttribute;
|
|
5
|
+
exports.toFile = toFile;
|
|
6
|
+
exports.readFileBytes = readFileBytes;
|
|
7
|
+
exports.readUtf8 = readUtf8;
|
|
8
|
+
const INLINE_HANDLER_ATTRIBUTES = new Set([
|
|
9
|
+
'onabort', 'onanimationcancel', 'onanimationend', 'onanimationiteration',
|
|
10
|
+
'onanimationstart', 'onauxclick', 'onbeforeinput', 'onbeforematch', 'onbeforetoggle',
|
|
11
|
+
'onblur', 'oncancel', 'oncanplay', 'oncanplaythrough', 'onchange', 'onclick',
|
|
12
|
+
'onclose', 'oncontextlost', 'oncontextmenu', 'oncontextrestored', 'oncopy',
|
|
13
|
+
'oncuechange', 'oncut', 'ondblclick', 'ondrag', 'ondragend', 'ondragenter',
|
|
14
|
+
'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'ondurationchange', 'onemptied',
|
|
15
|
+
'onended', 'onerror', 'onfocus', 'onfocusin', 'onfocusout', 'onformdata',
|
|
16
|
+
'onfullscreenchange', 'onfullscreenerror', 'ongotpointercapture', 'oninput',
|
|
17
|
+
'oninvalid', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onloadeddata',
|
|
18
|
+
'onloadedmetadata', 'onloadstart', 'onlostpointercapture', 'onmousedown',
|
|
19
|
+
'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover',
|
|
20
|
+
'onmouseup', 'onpaste', 'onpause', 'onplay', 'onplaying', 'onpointercancel',
|
|
21
|
+
'onpointerdown', 'onpointerenter', 'onpointerleave', 'onpointermove', 'onpointerout',
|
|
22
|
+
'onpointerover', 'onpointerrawupdate', 'onpointerup', 'onprogress', 'onratechange',
|
|
23
|
+
'onreset', 'onresize', 'onscroll', 'onscrollend', 'onsecuritypolicyviolation',
|
|
24
|
+
'onseeked', 'onseeking', 'onselect', 'onselectionchange', 'onselectstart', 'onslotchange',
|
|
25
|
+
'onstalled', 'onsubmit', 'onsuspend', 'ontimeupdate', 'ontoggle', 'ontouchcancel',
|
|
26
|
+
'ontouchend', 'ontouchmove', 'ontouchstart', 'ontransitioncancel', 'ontransitionend',
|
|
27
|
+
'ontransitionrun', 'ontransitionstart', 'onvolumechange', 'onwaiting', 'onwebkitanimationend',
|
|
28
|
+
'onwebkitanimationiteration', 'onwebkitanimationstart', 'onwebkittransitionend', 'onwheel',
|
|
29
|
+
]);
|
|
30
|
+
const WINDOW_HANDLER_ATTRIBUTES = new Set([
|
|
31
|
+
'onafterprint', 'onbeforeprint', 'onbeforeunload', 'onhashchange', 'onlanguagechange',
|
|
32
|
+
'onmessage', 'onmessageerror', 'onoffline', 'ononline', 'onpagehide', 'onpageshow',
|
|
33
|
+
'onpopstate', 'onrejectionhandled', 'onstorage', 'onunhandledrejection', 'onunload',
|
|
34
|
+
]);
|
|
35
|
+
/**
|
|
36
|
+
* 将规则检测出的问题列表转换为统一的诊断结果列表
|
|
37
|
+
*
|
|
38
|
+
* @param ruleId 规则标识,用于标记诊断结果的来源规则
|
|
39
|
+
* @return 转换后的诊断结果数组
|
|
40
|
+
*/
|
|
41
|
+
function toDiagnostics(ruleId, problems) {
|
|
42
|
+
return problems.map(problem => ({ ...problem, ruleId }));
|
|
43
|
+
}
|
|
44
|
+
function isInlineHandlerAttribute(name, tagName) {
|
|
45
|
+
const normalized = name.toLowerCase();
|
|
46
|
+
return INLINE_HANDLER_ATTRIBUTES.has(normalized)
|
|
47
|
+
|| (['body', 'frameset'].includes(tagName ?? '') && WINDOW_HANDLER_ATTRIBUTES.has(normalized));
|
|
48
|
+
}
|
|
49
|
+
function toFile(file) {
|
|
50
|
+
const bytes = new Uint8Array(file.bytes);
|
|
51
|
+
return new File([bytes.buffer], file.path);
|
|
52
|
+
}
|
|
53
|
+
async function readFileBytes(file) {
|
|
54
|
+
return new Uint8Array(await file.arrayBuffer());
|
|
55
|
+
}
|
|
56
|
+
async function readUtf8(file) {
|
|
57
|
+
const bytes = await readFileBytes(file);
|
|
58
|
+
return new TextDecoder('utf-8', { fatal: true }).decode(bytes);
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/check/rules/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/check/rules/file.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAW,IAAI,EAAC,MAAM,UAAU,CAAC;AA4H7C,eAAO,MAAM,QAAQ,EAAE,IAWtB,CAAC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.fileRule = void 0;
|
|
40
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
41
|
+
const postcss_1 = __importDefault(require("postcss"));
|
|
42
|
+
const ts = __importStar(require("typescript"));
|
|
43
|
+
const common_1 = require("./common");
|
|
44
|
+
const ruleId = 'file';
|
|
45
|
+
function decode(file) {
|
|
46
|
+
return new TextDecoder('utf-8', { fatal: true }).decode(file.bytes);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 校验文件是否可解析
|
|
50
|
+
*/
|
|
51
|
+
function checkParse(file) {
|
|
52
|
+
const extension = node_path_1.default.posix.extname(file.path).toLowerCase();
|
|
53
|
+
if (!['.css', '.html', '.js', '.json', '.svg'].includes(extension)) {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const source = decode(file);
|
|
58
|
+
if (extension === '.css') {
|
|
59
|
+
postcss_1.default.parse(source, {
|
|
60
|
+
from: file.path,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
else if (extension === '.json') {
|
|
64
|
+
JSON.parse(source);
|
|
65
|
+
}
|
|
66
|
+
else if (extension === '.js') {
|
|
67
|
+
const sourceFile = ts.createSourceFile(file.path, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.JS);
|
|
68
|
+
return (sourceFile.parseDiagnostics ?? []).map(diagnostic => {
|
|
69
|
+
const position = sourceFile.getLineAndCharacterOfPosition(diagnostic.start ?? 0);
|
|
70
|
+
return {
|
|
71
|
+
severity: 'error',
|
|
72
|
+
file: file.path,
|
|
73
|
+
line: position.line + 1,
|
|
74
|
+
column: position.character + 1,
|
|
75
|
+
message: 'JavaScript 语法错误,请修正后重新提交',
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
const location = error instanceof postcss_1.default.CssSyntaxError && error.line
|
|
82
|
+
? {
|
|
83
|
+
line: error.line,
|
|
84
|
+
column: error.column,
|
|
85
|
+
}
|
|
86
|
+
: undefined;
|
|
87
|
+
return [{
|
|
88
|
+
severity: 'error',
|
|
89
|
+
file: file.path,
|
|
90
|
+
message: '文件内容无法解析,请检查文件编码和语法后重新提交',
|
|
91
|
+
line: location?.line,
|
|
92
|
+
column: location?.column,
|
|
93
|
+
}];
|
|
94
|
+
}
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* ZIP 条目使用规范的产物内相对路径
|
|
99
|
+
*/
|
|
100
|
+
function checkPath(artifact) {
|
|
101
|
+
return artifact.zipEntries.flatMap(entry => {
|
|
102
|
+
const entryPath = entry.fileName;
|
|
103
|
+
if (entryPath.includes('\0')
|
|
104
|
+
|| entryPath.includes('\\')
|
|
105
|
+
|| entryPath.startsWith('/')
|
|
106
|
+
|| /^[A-Za-z]:/.test(entryPath)
|
|
107
|
+
|| entryPath.split('/').includes('..')) {
|
|
108
|
+
return [{
|
|
109
|
+
severity: 'error',
|
|
110
|
+
file: entryPath,
|
|
111
|
+
message: 'ZIP 文件路径不符合要求,请将所有文件放在项目根目录下并使用相对路径,然后重新打包上传',
|
|
112
|
+
}];
|
|
113
|
+
}
|
|
114
|
+
return [];
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* ZIP 中不含软链接、设备文件、加密条目
|
|
119
|
+
*/
|
|
120
|
+
function checkSpecialEntry(artifact) {
|
|
121
|
+
return artifact.zipEntries.flatMap(entry => {
|
|
122
|
+
const fileType = entry.versionMadeBy >>> 8 === 3
|
|
123
|
+
? (entry.externalFileAttributes >>> 16) & 0xffff
|
|
124
|
+
: 0;
|
|
125
|
+
const isSymbolicLink = (fileType & 0xf000) === 0xa000;
|
|
126
|
+
const isFifo = (fileType & 0xf000) === 0x1000;
|
|
127
|
+
const isCharacterDevice = (fileType & 0xf000) === 0x2000;
|
|
128
|
+
const isBlockDevice = (fileType & 0xf000) === 0x6000;
|
|
129
|
+
const isSocket = (fileType & 0xf000) === 0xc000;
|
|
130
|
+
const isEncrypted = (entry.generalPurposeBitFlag & 0x1) !== 0;
|
|
131
|
+
if (isSymbolicLink
|
|
132
|
+
|| isFifo
|
|
133
|
+
|| isCharacterDevice
|
|
134
|
+
|| isBlockDevice
|
|
135
|
+
|| isSocket
|
|
136
|
+
|| isEncrypted) {
|
|
137
|
+
return [{
|
|
138
|
+
severity: 'error',
|
|
139
|
+
file: entry.fileName,
|
|
140
|
+
message: 'ZIP 中不能包含软链接、设备文件或加密条目,请移除后重新打包',
|
|
141
|
+
}];
|
|
142
|
+
}
|
|
143
|
+
return [];
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
exports.fileRule = {
|
|
147
|
+
id: ruleId,
|
|
148
|
+
check({ artifact }) {
|
|
149
|
+
const files = [...artifact.files.values()];
|
|
150
|
+
return [
|
|
151
|
+
...(0, common_1.toDiagnostics)(ruleId, files.flatMap(file => checkParse(file))),
|
|
152
|
+
...(0, common_1.toDiagnostics)(ruleId, checkPath(artifact)),
|
|
153
|
+
...(0, common_1.toDiagnostics)(ruleId, checkSpecialEntry(artifact)),
|
|
154
|
+
];
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
//# sourceMappingURL=file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/check/rules/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../../src/check/rules/html.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,IAAI,EAAC,MAAM,UAAU,CAAC;AAic/C,eAAO,MAAM,QAAQ,EAAE,IAWtB,CAAC"}
|