@rsdoctor/utils 1.1.10 → 1.2.0-beta.1
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/dist/cjs/build/envinfo.js +107 -95
- package/dist/cjs/build/file/cache.js +65 -56
- package/dist/cjs/build/file/index.js +78 -41
- package/dist/cjs/build/file/sharding.js +90 -78
- package/dist/cjs/build/index.js +49 -47
- package/dist/cjs/build/json.js +91 -98
- package/dist/cjs/build/process.js +47 -42
- package/dist/cjs/build/server.js +110 -87
- package/dist/cjs/common/alerts.js +46 -44
- package/dist/cjs/common/algorithm.js +63 -54
- package/dist/cjs/common/bundle.js +52 -46
- package/dist/cjs/common/crypto.js +47 -46
- package/dist/cjs/common/data/index.js +381 -455
- package/dist/cjs/common/file.js +44 -0
- package/dist/cjs/common/global-config.js +72 -64
- package/dist/cjs/common/graph/assets.js +274 -308
- package/dist/cjs/common/graph/chunk.js +66 -63
- package/dist/cjs/common/graph/dependency.js +42 -32
- package/dist/cjs/common/graph/entrypoints.js +33 -25
- package/dist/cjs/common/graph/index.js +93 -27
- package/dist/cjs/common/graph/modules.js +113 -98
- package/dist/cjs/common/index.js +101 -83
- package/dist/cjs/common/loader.js +277 -273
- package/dist/cjs/common/lodash.js +73 -62
- package/dist/cjs/common/manifest.js +57 -59
- package/dist/cjs/common/package.js +79 -80
- package/dist/cjs/common/plugin.js +78 -73
- package/dist/cjs/common/resolver.js +79 -69
- package/dist/cjs/common/rspack.js +43 -34
- package/dist/cjs/common/summary.js +39 -31
- package/dist/cjs/common/time.js +73 -78
- package/dist/cjs/common/url.js +44 -36
- package/dist/cjs/error/error.js +183 -220
- package/dist/cjs/error/index.js +70 -28
- package/dist/cjs/error/transform.js +150 -143
- package/dist/cjs/error/utils.js +54 -58
- package/dist/cjs/index.js +37 -38
- package/dist/cjs/logger.js +99 -73
- package/dist/cjs/rule-utils/document/document.js +83 -82
- package/dist/cjs/rule-utils/document/index.js +75 -23
- package/dist/cjs/rule-utils/document/server.js +42 -35
- package/dist/cjs/rule-utils/document/types.js +17 -15
- package/dist/cjs/rule-utils/index.js +66 -21
- package/dist/cjs/rule-utils/parser/asserts.js +129 -147
- package/dist/cjs/rule-utils/parser/index.js +84 -25
- package/dist/cjs/rule-utils/parser/parser.js +50 -85
- package/dist/cjs/rule-utils/parser/types.js +38 -30
- package/dist/cjs/rule-utils/parser/utils.js +141 -168
- package/dist/esm/build/envinfo.mjs +57 -0
- package/dist/esm/build/file/cache.mjs +23 -0
- package/dist/esm/build/file/index.mjs +4 -0
- package/dist/esm/build/file/sharding.mjs +50 -0
- package/dist/esm/build/index.mjs +6 -0
- package/dist/esm/build/json.mjs +66 -0
- package/dist/esm/build/process.mjs +17 -0
- package/dist/esm/build/server.mjs +96 -0
- package/dist/esm/common/alerts.mjs +17 -0
- package/dist/esm/common/algorithm.mjs +32 -0
- package/dist/esm/common/bundle.mjs +22 -0
- package/dist/esm/common/crypto.mjs +17 -0
- package/dist/esm/common/data/index.mjs +354 -0
- package/dist/esm/common/file.mjs +7 -0
- package/dist/esm/common/global-config.mjs +32 -0
- package/dist/esm/common/graph/assets.mjs +238 -0
- package/dist/esm/common/graph/chunk.mjs +32 -0
- package/dist/esm/common/graph/dependency.mjs +10 -0
- package/dist/esm/common/graph/entrypoints.mjs +4 -0
- package/dist/esm/common/graph/index.mjs +5 -0
- package/dist/esm/common/graph/modules.mjs +78 -0
- package/dist/esm/common/index.mjs +19 -0
- package/dist/esm/common/loader.mjs +247 -0
- package/dist/esm/common/lodash.mjs +32 -0
- package/dist/esm/common/manifest.mjs +30 -0
- package/dist/esm/common/package.mjs +56 -0
- package/dist/esm/common/plugin.mjs +48 -0
- package/dist/esm/common/resolver.mjs +46 -0
- package/dist/esm/common/rspack.mjs +9 -0
- package/dist/esm/common/summary.mjs +8 -0
- package/dist/esm/common/time.mjs +43 -0
- package/dist/esm/common/url.mjs +14 -0
- package/dist/esm/error/error.mjs +154 -0
- package/dist/esm/error/index.mjs +3 -0
- package/dist/esm/error/transform.mjs +138 -0
- package/dist/esm/error/utils.mjs +22 -0
- package/dist/esm/index.mjs +3 -0
- package/dist/esm/logger.mjs +50 -0
- package/dist/esm/rule-utils/document/document.mjs +58 -0
- package/dist/esm/rule-utils/document/index.mjs +3 -0
- package/dist/esm/rule-utils/document/server.mjs +12 -0
- package/dist/esm/rule-utils/index.mjs +2 -0
- package/dist/esm/rule-utils/parser/asserts.mjs +104 -0
- package/dist/esm/rule-utils/parser/index.mjs +4 -0
- package/dist/esm/rule-utils/parser/parser.mjs +23 -0
- package/dist/esm/rule-utils/parser/types.mjs +7 -0
- package/dist/esm/rule-utils/parser/utils.mjs +109 -0
- package/dist/type/common/file.d.ts +3 -0
- package/dist/type/common/file.d.ts.map +1 -0
- package/dist/type/common/graph/modules.d.ts +1 -1
- package/dist/type/common/graph/modules.d.ts.map +1 -1
- package/dist/type/common/index.d.ts +1 -0
- package/dist/type/common/index.d.ts.map +1 -1
- package/dist/type/logger.d.ts +3 -1
- package/dist/type/logger.d.ts.map +1 -1
- package/package.json +13 -12
- package/dist/esm/build/envinfo.js +0 -75
- package/dist/esm/build/file/cache.js +0 -30
- package/dist/esm/build/file/index.js +0 -7
- package/dist/esm/build/file/sharding.js +0 -50
- package/dist/esm/build/index.js +0 -12
- package/dist/esm/build/json.js +0 -85
- package/dist/esm/build/process.js +0 -24
- package/dist/esm/build/server.js +0 -96
- package/dist/esm/common/alerts.js +0 -25
- package/dist/esm/common/algorithm.js +0 -39
- package/dist/esm/common/bundle.js +0 -30
- package/dist/esm/common/crypto.js +0 -28
- package/dist/esm/common/data/index.js +0 -428
- package/dist/esm/common/global-config.js +0 -38
- package/dist/esm/common/graph/assets.js +0 -310
- package/dist/esm/common/graph/chunk.js +0 -49
- package/dist/esm/common/graph/dependency.js +0 -14
- package/dist/esm/common/graph/entrypoints.js +0 -6
- package/dist/esm/common/graph/index.js +0 -5
- package/dist/esm/common/graph/modules.js +0 -90
- package/dist/esm/common/index.js +0 -36
- package/dist/esm/common/loader.js +0 -279
- package/dist/esm/common/lodash.js +0 -49
- package/dist/esm/common/manifest.js +0 -46
- package/dist/esm/common/package.js +0 -71
- package/dist/esm/common/plugin.js +0 -59
- package/dist/esm/common/resolver.js +0 -54
- package/dist/esm/common/rspack.js +0 -12
- package/dist/esm/common/summary.js +0 -10
- package/dist/esm/common/time.js +0 -64
- package/dist/esm/common/url.js +0 -20
- package/dist/esm/error/error.js +0 -202
- package/dist/esm/error/index.js +0 -5
- package/dist/esm/error/transform.js +0 -141
- package/dist/esm/error/utils.js +0 -40
- package/dist/esm/index.js +0 -6
- package/dist/esm/logger.js +0 -44
- package/dist/esm/rule-utils/document/document.js +0 -67
- package/dist/esm/rule-utils/document/index.js +0 -3
- package/dist/esm/rule-utils/document/server.js +0 -17
- package/dist/esm/rule-utils/index.js +0 -2
- package/dist/esm/rule-utils/parser/asserts.js +0 -132
- package/dist/esm/rule-utils/parser/index.js +0 -4
- package/dist/esm/rule-utils/parser/parser.js +0 -58
- package/dist/esm/rule-utils/parser/types.js +0 -9
- package/dist/esm/rule-utils/parser/utils.js +0 -164
- /package/dist/esm/rule-utils/document/{types.js → types.mjs} +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { LinesAndColumns } from "lines-and-columns";
|
|
2
|
+
import { isNumber, isUndefined } from "../../common/lodash.mjs";
|
|
3
|
+
function _define_property(obj, key, value) {
|
|
4
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
5
|
+
value: value,
|
|
6
|
+
enumerable: true,
|
|
7
|
+
configurable: true,
|
|
8
|
+
writable: true
|
|
9
|
+
});
|
|
10
|
+
else obj[key] = value;
|
|
11
|
+
return obj;
|
|
12
|
+
}
|
|
13
|
+
class Document {
|
|
14
|
+
createFinder() {
|
|
15
|
+
const find = new LinesAndColumns(this._text);
|
|
16
|
+
this.positionAt = (offset)=>{
|
|
17
|
+
if (offset >= this._text.length) offset = this._text.length - 1;
|
|
18
|
+
if (offset < 0) offset = 0;
|
|
19
|
+
const result = find.locationForIndex(offset);
|
|
20
|
+
if (!result) return;
|
|
21
|
+
return {
|
|
22
|
+
line: result.line + 1,
|
|
23
|
+
column: result.column
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
this.offsetAt = (position)=>find.indexForLocation({
|
|
27
|
+
line: position.line - 1,
|
|
28
|
+
column: position.column
|
|
29
|
+
}) ?? void 0;
|
|
30
|
+
}
|
|
31
|
+
getText(range) {
|
|
32
|
+
if (!range) return this._text;
|
|
33
|
+
const start = 'number' == typeof range.start ? range.start : this.offsetAt(range.start);
|
|
34
|
+
const end = 'number' == typeof range.end ? range.end : this.offsetAt(range.end);
|
|
35
|
+
if (isUndefined(start)) throw new Error(`Location ${JSON.stringify(start)} is illegal`);
|
|
36
|
+
if (isUndefined(end)) throw new Error(`Location ${JSON.stringify(end)} is illegal`);
|
|
37
|
+
return this._text.slice(start, end);
|
|
38
|
+
}
|
|
39
|
+
edit(data) {
|
|
40
|
+
let { _text: content } = this;
|
|
41
|
+
const startOffset = isNumber(data.start) ? data.start : this.offsetAt(data.start);
|
|
42
|
+
const endOffset = isNumber(data.end) ? data.end : this.offsetAt(data.end);
|
|
43
|
+
if (isUndefined(startOffset) || isUndefined(endOffset)) return;
|
|
44
|
+
const startTxt = content.substring(0, startOffset);
|
|
45
|
+
const endTxt = content.substring(endOffset, content.length);
|
|
46
|
+
content = startTxt + data.newText + endTxt;
|
|
47
|
+
return content;
|
|
48
|
+
}
|
|
49
|
+
constructor(content){
|
|
50
|
+
_define_property(this, "_text", '');
|
|
51
|
+
_define_property(this, "positionAt", void 0);
|
|
52
|
+
_define_property(this, "offsetAt", void 0);
|
|
53
|
+
this._text;
|
|
54
|
+
this._text = content;
|
|
55
|
+
this.createFinder();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export { Document };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Document } from "./document.mjs";
|
|
2
|
+
const store = new Map();
|
|
3
|
+
function getDocument(content) {
|
|
4
|
+
if (store.has(content)) return store.get(content);
|
|
5
|
+
const doc = new Document(content);
|
|
6
|
+
store.set(content, doc);
|
|
7
|
+
return doc;
|
|
8
|
+
}
|
|
9
|
+
function clearDocument() {
|
|
10
|
+
store.clear();
|
|
11
|
+
}
|
|
12
|
+
export { clearDocument, getDocument };
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { isObject } from "../../common/lodash.mjs";
|
|
2
|
+
function isSyntaxNode(node) {
|
|
3
|
+
return isObject(node) && 'type' in node;
|
|
4
|
+
}
|
|
5
|
+
function assertCreator(type) {
|
|
6
|
+
return (node)=>isSyntaxNode(node) && node.type === type;
|
|
7
|
+
}
|
|
8
|
+
const asserts = {
|
|
9
|
+
isProgram: assertCreator('Program'),
|
|
10
|
+
isEmptyStatement: assertCreator('EmptyStatement'),
|
|
11
|
+
isBlockStatement: assertCreator('BlockStatement'),
|
|
12
|
+
isStaticBlock: assertCreator('StaticBlock'),
|
|
13
|
+
isExpressionStatement: assertCreator('ExpressionStatement'),
|
|
14
|
+
isIfStatement: assertCreator('IfStatement'),
|
|
15
|
+
isLabeledStatement: assertCreator('LabeledStatement'),
|
|
16
|
+
isBreakStatement: assertCreator('BreakStatement'),
|
|
17
|
+
isContinueStatement: assertCreator('ContinueStatement'),
|
|
18
|
+
isWithStatement: assertCreator('WithStatement'),
|
|
19
|
+
isSwitchStatement: assertCreator('SwitchStatement'),
|
|
20
|
+
isReturnStatement: assertCreator('ReturnStatement'),
|
|
21
|
+
isThrowStatement: assertCreator('ThrowStatement'),
|
|
22
|
+
isTryStatement: assertCreator('TryStatement'),
|
|
23
|
+
isWhileStatement: assertCreator('WhileStatement'),
|
|
24
|
+
isDoWhileStatement: assertCreator('DoWhileStatement'),
|
|
25
|
+
isForStatement: assertCreator('ForStatement'),
|
|
26
|
+
isForInStatement: assertCreator('ForInStatement'),
|
|
27
|
+
isForOfStatement: assertCreator('ForOfStatement'),
|
|
28
|
+
isDebuggerStatement: assertCreator('DebuggerStatement'),
|
|
29
|
+
isFunctionDeclaration: assertCreator('FunctionDeclaration'),
|
|
30
|
+
isVariableDeclaration: assertCreator('VariableDeclaration'),
|
|
31
|
+
isVariableDeclarator: assertCreator('VariableDeclarator'),
|
|
32
|
+
isChainExpression: assertCreator('ChainExpression'),
|
|
33
|
+
isThisExpression: assertCreator('ThisExpression'),
|
|
34
|
+
isArrayExpression: assertCreator('ArrayExpression'),
|
|
35
|
+
isObjectExpression: assertCreator('ObjectExpression'),
|
|
36
|
+
isPrivateIdentifier: assertCreator('PrivateIdentifier'),
|
|
37
|
+
isProperty: assertCreator('Property'),
|
|
38
|
+
isPropertyDefinition: assertCreator('PropertyDefinition'),
|
|
39
|
+
isFunctionExpression: assertCreator('FunctionExpression'),
|
|
40
|
+
isSequenceExpression: assertCreator('SequenceExpression'),
|
|
41
|
+
isUnaryExpression: assertCreator('UnaryExpression'),
|
|
42
|
+
isBinaryExpression: assertCreator('BinaryExpression'),
|
|
43
|
+
isAssignmentExpression: assertCreator('AssignmentExpression'),
|
|
44
|
+
isUpdateExpression: assertCreator('UpdateExpression'),
|
|
45
|
+
isLogicalExpression: assertCreator('LogicalExpression'),
|
|
46
|
+
isConditionalExpression: assertCreator('ConditionalExpression'),
|
|
47
|
+
isNewExpression: assertCreator('NewExpression'),
|
|
48
|
+
isSwitchCase: assertCreator('SwitchCase'),
|
|
49
|
+
isCatchClause: assertCreator('CatchClause'),
|
|
50
|
+
isIdentifier: assertCreator('Identifier'),
|
|
51
|
+
isLiteral: assertCreator('Literal'),
|
|
52
|
+
isSuper: assertCreator('Super'),
|
|
53
|
+
isSpreadElement: assertCreator('SpreadElement'),
|
|
54
|
+
isArrowFunctionExpression: assertCreator('ArrowFunctionExpression'),
|
|
55
|
+
isYieldExpression: assertCreator('YieldExpression'),
|
|
56
|
+
isTemplateLiteral: assertCreator('TemplateLiteral'),
|
|
57
|
+
isTaggedTemplateExpression: assertCreator('TaggedTemplateExpression'),
|
|
58
|
+
isTemplateElement: assertCreator('TemplateElement'),
|
|
59
|
+
isObjectPattern: assertCreator('ObjectPattern'),
|
|
60
|
+
isArrayPattern: assertCreator('ArrayPattern'),
|
|
61
|
+
isRestElement: assertCreator('RestElement'),
|
|
62
|
+
isAssignmentPattern: assertCreator('AssignmentPattern'),
|
|
63
|
+
isClassBody: assertCreator('ClassBody'),
|
|
64
|
+
isClassDeclaration: assertCreator('ClassDeclaration'),
|
|
65
|
+
isClassExpression: assertCreator('ClassExpression'),
|
|
66
|
+
isMetaProperty: assertCreator('MetaProperty'),
|
|
67
|
+
isImportDeclaration: assertCreator('ImportDeclaration'),
|
|
68
|
+
isImportSpecifier: assertCreator('ImportSpecifier'),
|
|
69
|
+
isImportExpression: assertCreator('ImportExpression'),
|
|
70
|
+
isImportDefaultSpecifier: assertCreator('ImportDefaultSpecifier'),
|
|
71
|
+
isImportNamespaceSpecifier: assertCreator('ImportNamespaceSpecifier'),
|
|
72
|
+
isExportNamedDeclaration: assertCreator('ExportNamedDeclaration'),
|
|
73
|
+
isExportSpecifier: assertCreator('ExportSpecifier'),
|
|
74
|
+
isExportDefaultDeclaration: assertCreator('ExportDefaultDeclaration'),
|
|
75
|
+
isExportAllDeclaration: assertCreator('ExportAllDeclaration'),
|
|
76
|
+
isAwaitExpression: assertCreator('AwaitExpression'),
|
|
77
|
+
isMethodDefinition: assertCreator('MethodDefinition'),
|
|
78
|
+
isMemberExpression: assertCreator('MemberExpression'),
|
|
79
|
+
isComment (node) {
|
|
80
|
+
return isSyntaxNode(node) && ('Line' === node.type || 'Block' === node.type);
|
|
81
|
+
},
|
|
82
|
+
isDirective (node) {
|
|
83
|
+
return asserts.isExpressionStatement(node) && 'directive' in node;
|
|
84
|
+
},
|
|
85
|
+
isSimpleCallExpression (node) {
|
|
86
|
+
return isSyntaxNode(node) && 'CallExpression' === node.type;
|
|
87
|
+
},
|
|
88
|
+
isAssignmentProperty (node) {
|
|
89
|
+
return asserts.isProperty(node) && 'init' === node.kind;
|
|
90
|
+
},
|
|
91
|
+
isSimpleLiteral (node) {
|
|
92
|
+
return asserts.isLiteral(node) && !asserts.isRegExpLiteral(node) && !asserts.isBigIntLiteral(node);
|
|
93
|
+
},
|
|
94
|
+
isRegExpLiteral (node) {
|
|
95
|
+
return asserts.isLiteral(node) && 'regex' in node;
|
|
96
|
+
},
|
|
97
|
+
isBigIntLiteral (node) {
|
|
98
|
+
return asserts.isLiteral(node) && 'bigint' in node;
|
|
99
|
+
},
|
|
100
|
+
isExportStatement (node) {
|
|
101
|
+
return asserts.isExportAllDeclaration(node) || asserts.isExportDefaultDeclaration(node) || asserts.isExportNamedDeclaration(node);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
export { asserts };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Parser } from "acorn";
|
|
2
|
+
import { importAttributes } from "acorn-import-attributes";
|
|
3
|
+
import { asserts } from "./asserts.mjs";
|
|
4
|
+
import * as __WEBPACK_EXTERNAL_MODULE__utils_mjs_25ece7d1__ from "./utils.mjs";
|
|
5
|
+
import * as __WEBPACK_EXTERNAL_MODULE_acorn_walk_9c3ac672__ from "acorn-walk";
|
|
6
|
+
const acornParserInternal = Parser.extend(importAttributes);
|
|
7
|
+
let acornParserExport = Parser.extend(importAttributes);
|
|
8
|
+
const parser = {
|
|
9
|
+
walk: __WEBPACK_EXTERNAL_MODULE_acorn_walk_9c3ac672__,
|
|
10
|
+
parse: (input, options)=>acornParserExport.parse(input, options),
|
|
11
|
+
parseExpressionAt: (input, pos, options)=>acornParserExport.parseExpressionAt(input, pos, options),
|
|
12
|
+
extend (...args) {
|
|
13
|
+
acornParserExport = acornParserExport.extend(...args);
|
|
14
|
+
return acornParserExport;
|
|
15
|
+
},
|
|
16
|
+
asserts: asserts,
|
|
17
|
+
utils: __WEBPACK_EXTERNAL_MODULE__utils_mjs_25ece7d1__,
|
|
18
|
+
internal: {
|
|
19
|
+
parse: (input, options)=>acornParserInternal.parse(input, options),
|
|
20
|
+
parseExpressionAt: (input, pos, options)=>acornParserInternal.parseExpressionAt(input, pos, options)
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export { parser };
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { parse } from "acorn";
|
|
2
|
+
import { ECMAVersion } from "./types.mjs";
|
|
3
|
+
import { asserts } from "./asserts.mjs";
|
|
4
|
+
function isSameSemantics(node1, node2) {
|
|
5
|
+
if (node1.type !== node2.type) return false;
|
|
6
|
+
switch(node1.type){
|
|
7
|
+
case 'CallExpression':
|
|
8
|
+
{
|
|
9
|
+
const next = node2;
|
|
10
|
+
return node1.arguments.length === next.arguments.length && Boolean(node1.optional) === Boolean(next.optional) && isSameSemantics(node1.callee, next.callee) && node1.arguments.every((node, i)=>isSameSemantics(node, next.arguments[i]));
|
|
11
|
+
}
|
|
12
|
+
case 'MemberExpression':
|
|
13
|
+
{
|
|
14
|
+
const next = node2;
|
|
15
|
+
return node1.computed === next.computed && Boolean(node1.optional) === Boolean(next.optional) && isSameSemantics(node1.object, next.object) && isSameSemantics(node1.property, next.property);
|
|
16
|
+
}
|
|
17
|
+
case 'Identifier':
|
|
18
|
+
return node1.name === node2.name;
|
|
19
|
+
case 'Literal':
|
|
20
|
+
if (asserts.isSimpleLiteral(node1) && asserts.isSimpleLiteral(node2)) return node1.value === node2.value;
|
|
21
|
+
return node1.raw === node2.raw;
|
|
22
|
+
case 'ObjectExpression':
|
|
23
|
+
{
|
|
24
|
+
const next = node2;
|
|
25
|
+
return node1.properties.length === next.properties.length && node1.properties.every((prop, i)=>isSameSemantics(prop, next.properties[i]));
|
|
26
|
+
}
|
|
27
|
+
case 'Property':
|
|
28
|
+
{
|
|
29
|
+
const next = node2;
|
|
30
|
+
return node1.computed === next.computed && node1.kind === next.kind && node1.method === next.method && isSameSemantics(node1.key, next.key) && isSameSemantics(node1.value, next.value);
|
|
31
|
+
}
|
|
32
|
+
default:
|
|
33
|
+
throw new Error(`Unknown node type: ${node1.type}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function getDefaultImports(node) {
|
|
37
|
+
return node.body.filter((statement)=>{
|
|
38
|
+
var _statement_specifiers;
|
|
39
|
+
if ('ImportDeclaration' !== statement.type) return false;
|
|
40
|
+
const specifier = null == statement ? void 0 : null == (_statement_specifiers = statement.specifiers) ? void 0 : _statement_specifiers[0];
|
|
41
|
+
if ((null == specifier ? void 0 : specifier.type) === 'ImportDefaultSpecifier') return true;
|
|
42
|
+
return false;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function getIdentifierInPattern(name, node) {
|
|
46
|
+
if (asserts.isIdentifier(node) && node.name === name) return node;
|
|
47
|
+
if (asserts.isObjectPattern(node)) for (const prop of node.properties){
|
|
48
|
+
if (asserts.isAssignmentProperty(prop)) return getIdentifierInPattern(name, prop.value);
|
|
49
|
+
if (asserts.isRestElement(prop)) return getIdentifierInPattern(name, prop);
|
|
50
|
+
}
|
|
51
|
+
if (asserts.isArrayPattern(node)) {
|
|
52
|
+
for (const el of node.elements)if (el) {
|
|
53
|
+
const result = getIdentifierInPattern(name, el);
|
|
54
|
+
if (result) return result;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (asserts.isRestElement(node)) return getIdentifierInPattern(name, node.argument);
|
|
58
|
+
if (asserts.isAssignmentPattern(node)) return getIdentifierInPattern(name, node.left);
|
|
59
|
+
}
|
|
60
|
+
function getIdentifierInDeclaration(name, node) {
|
|
61
|
+
function getId(node) {
|
|
62
|
+
return asserts.isIdentifier(node.id) && node.id.name === name ? node.id : void 0;
|
|
63
|
+
}
|
|
64
|
+
if (asserts.isFunctionDeclaration(node)) return getId(node);
|
|
65
|
+
if (asserts.isClassDeclaration(node)) return getId(node);
|
|
66
|
+
if (asserts.isVariableDeclaration(node)) {
|
|
67
|
+
var _node_declarations_find;
|
|
68
|
+
return null == (_node_declarations_find = node.declarations.find((item)=>getIdentifierInPattern(name, item.id))) ? void 0 : _node_declarations_find.id;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function getIdentifierInImport(name, node) {
|
|
72
|
+
if (asserts.isImportDeclaration(node)) {
|
|
73
|
+
for (const specifier of node.specifiers ?? [])if (specifier.local.name === name) return specifier.local;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function getIdentifierInExport(name, node) {
|
|
77
|
+
if (asserts.isExportNamedDeclaration(node)) {
|
|
78
|
+
if (node.declaration) return getIdentifierInDeclaration(name, node.declaration);
|
|
79
|
+
for (const specifier of node.specifiers ?? [])if (specifier.exported.name === name) return specifier.exported;
|
|
80
|
+
}
|
|
81
|
+
if (asserts.isExportAllDeclaration(node) && node.exported) {
|
|
82
|
+
if (node.exported.name === name) return node.exported;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function canParse(code, ecmaVersion) {
|
|
86
|
+
try {
|
|
87
|
+
parse(code, {
|
|
88
|
+
ecmaVersion,
|
|
89
|
+
sourceType: 'number' == typeof ecmaVersion && ecmaVersion <= 5 ? "script" : 'module'
|
|
90
|
+
});
|
|
91
|
+
return true;
|
|
92
|
+
} catch (err) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function isES5(code) {
|
|
97
|
+
return canParse(code, 5);
|
|
98
|
+
}
|
|
99
|
+
function isES6(code) {
|
|
100
|
+
return canParse(code, 6);
|
|
101
|
+
}
|
|
102
|
+
function detectECMAVersion(code) {
|
|
103
|
+
if (isES6(code)) {
|
|
104
|
+
if (isES5(code)) return ECMAVersion.ES5;
|
|
105
|
+
return ECMAVersion.ES6;
|
|
106
|
+
}
|
|
107
|
+
return ECMAVersion.ES7P;
|
|
108
|
+
}
|
|
109
|
+
export { canParse, detectECMAVersion, getDefaultImports, getIdentifierInDeclaration, getIdentifierInExport, getIdentifierInImport, getIdentifierInPattern, isES5, isES6, isSameSemantics };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/common/file.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,WAEtC;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,WAEnC"}
|
|
@@ -3,7 +3,7 @@ export declare function getModulesByAsset(asset: SDK.AssetData, chunks: SDK.Chun
|
|
|
3
3
|
export declare function getModuleIdsByChunk(chunk: SDK.ChunkData): number[];
|
|
4
4
|
export declare function getModuleIdsByModulesIds(moduleIds: number[], modules: SDK.ModuleData[]): SDK.ModuleData[];
|
|
5
5
|
export declare function getModulesByChunk(chunk: SDK.ChunkData, modules: SDK.ModuleData[], filterModules?: (keyof SDK.ModuleData)[]): SDK.ModuleData[];
|
|
6
|
-
export declare function getModulesByChunks(chunks: SDK.ChunkData[], modules: SDK.ModuleData[], filterModules?: (keyof SDK.ModuleData)[]): SDK.ModuleData[];
|
|
6
|
+
export declare function getModulesByChunks(assetPath: string, chunks: SDK.ChunkData[], modules: SDK.ModuleData[], filterModules?: (keyof SDK.ModuleData)[]): SDK.ModuleData[];
|
|
7
7
|
export declare function getModuleByDependency(dep: SDK.DependencyData, modules: SDK.ModuleData[]): SDK.ModuleData | undefined;
|
|
8
8
|
export declare function filterModulesAndDependenciesByPackageDeps(deps: Rule.DependencyWithPackageData[], dependencies: SDK.DependencyData[], modules: SDK.ModuleData[]): Pick<SDK.ModuleGraphData, 'dependencies' | 'modules'>;
|
|
9
9
|
export declare function getModuleDetails(moduleId: number, modules: SDK.ModuleData[], dependencies: SDK.DependencyData[]): SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetModuleDetails>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../../../../src/common/graph/modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../../../../src/common/graph/modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAS5C,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,GAAG,CAAC,SAAS,EACpB,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,EACvB,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,EACzB,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,GACvC,GAAG,CAAC,UAAU,EAAE,CAKlB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,YAGvD;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,oBAK1B;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,GAAG,CAAC,SAAS,EACpB,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,EACzB,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,GACvC,GAAG,CAAC,UAAU,EAAE,CAoBlB;AAQD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,EACvB,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,EACzB,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,GACvC,GAAG,CAAC,UAAU,EAAE,CAmBlB;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,CAAC,cAAc,EACvB,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,8BAG1B;AAED,wBAAgB,yCAAyC,CACvD,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,EACtC,YAAY,EAAE,GAAG,CAAC,cAAc,EAAE,EAClC,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,GACxB,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,cAAc,GAAG,SAAS,CAAC,CAoBvD;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,EACzB,YAAY,EAAE,GAAG,CAAC,cAAc,EAAE,GACjC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAOrE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC"}
|
package/dist/type/logger.d.ts
CHANGED
|
@@ -4,5 +4,7 @@ import c from 'picocolors';
|
|
|
4
4
|
*/
|
|
5
5
|
export declare function debug(getMsg: () => string, prefix?: string): void;
|
|
6
6
|
declare const rsdoctorLogger: import("rslog").Logger;
|
|
7
|
-
|
|
7
|
+
declare function time(label: string): void;
|
|
8
|
+
declare function timeEnd(label: string): void;
|
|
9
|
+
export { time, timeEnd, c as chalk, rsdoctorLogger as logger };
|
|
8
10
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,YAAY,CAAC;AAI3B;;GAEG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,MAAM,EAAE,MAAM,SAAK,QAOtD;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,YAAY,CAAC;AAI3B;;GAEG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,MAAM,EAAE,MAAM,SAAK,QAOtD;AAED,QAAA,MAAM,cAAc,wBAAiB,CAAC;AAkCtC,iBAAS,IAAI,CAAC,KAAK,EAAE,MAAM,QAW1B;AAED,iBAAS,OAAO,CAAC,KAAK,EAAE,MAAM,QAe7B;AAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,KAAK,EAAE,cAAc,IAAI,MAAM,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsdoctor/utils",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.0-beta.1",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/web-infra-dev/rsdoctor",
|
|
@@ -11,32 +11,32 @@
|
|
|
11
11
|
".": {
|
|
12
12
|
"types": "./dist/type/index.d.ts",
|
|
13
13
|
"require": "./dist/cjs/index.js",
|
|
14
|
-
"import": "./dist/esm/index.
|
|
14
|
+
"import": "./dist/esm/index.mjs"
|
|
15
15
|
},
|
|
16
16
|
"./common": {
|
|
17
17
|
"types": "./dist/type/common/index.d.ts",
|
|
18
18
|
"require": "./dist/cjs/common/index.js",
|
|
19
|
-
"import": "./dist/esm/common/index.
|
|
19
|
+
"import": "./dist/esm/common/index.mjs"
|
|
20
20
|
},
|
|
21
21
|
"./build": {
|
|
22
22
|
"types": "./dist/type/build/index.d.ts",
|
|
23
23
|
"require": "./dist/cjs/build/index.js",
|
|
24
|
-
"import": "./dist/esm/build/index.
|
|
24
|
+
"import": "./dist/esm/build/index.mjs"
|
|
25
25
|
},
|
|
26
26
|
"./error": {
|
|
27
27
|
"types": "./dist/type/error/index.d.ts",
|
|
28
28
|
"require": "./dist/cjs/error/index.js",
|
|
29
|
-
"import": "./dist/esm/error/index.
|
|
29
|
+
"import": "./dist/esm/error/index.mjs"
|
|
30
30
|
},
|
|
31
31
|
"./ruleUtils": {
|
|
32
32
|
"types": "./dist/type/rule-utils/index.d.ts",
|
|
33
33
|
"require": "./dist/cjs/rule-utils/index.js",
|
|
34
|
-
"import": "./dist/esm/rule-utils/index.
|
|
34
|
+
"import": "./dist/esm/rule-utils/index.mjs"
|
|
35
35
|
},
|
|
36
36
|
"./logger": {
|
|
37
37
|
"types": "./dist/type/logger.d.ts",
|
|
38
38
|
"require": "./dist/cjs/logger.js",
|
|
39
|
-
"import": "./dist/esm/logger.
|
|
39
|
+
"import": "./dist/esm/logger.mjs"
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
"typesVersions": {
|
|
@@ -81,11 +81,12 @@
|
|
|
81
81
|
"json-stream-stringify": "3.0.1",
|
|
82
82
|
"lines-and-columns": "2.0.4",
|
|
83
83
|
"picocolors": "^1.1.1",
|
|
84
|
-
"rslog": "^1.2.
|
|
84
|
+
"rslog": "^1.2.9",
|
|
85
85
|
"strip-ansi": "^6.0.1",
|
|
86
|
-
"@rsdoctor/types": "1.1
|
|
86
|
+
"@rsdoctor/types": "1.2.0-beta.1"
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
|
+
"@rslib/core": "^0.11.0",
|
|
89
90
|
"@types/babel__code-frame": "7.0.6",
|
|
90
91
|
"@types/connect": "3.4.38",
|
|
91
92
|
"@types/deep-eql": "4.0.2",
|
|
@@ -101,9 +102,9 @@
|
|
|
101
102
|
"registry": "https://registry.npmjs.org/"
|
|
102
103
|
},
|
|
103
104
|
"scripts": {
|
|
104
|
-
"build": "
|
|
105
|
+
"build": "rslib build",
|
|
105
106
|
"dev": "npm run start",
|
|
106
|
-
"start": "
|
|
107
|
-
"test": "
|
|
107
|
+
"start": "rslib build -w",
|
|
108
|
+
"test": "rstest run"
|
|
108
109
|
}
|
|
109
110
|
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { helpers, run } from "envinfo";
|
|
2
|
-
import { exec } from "child_process";
|
|
3
|
-
const getCPUInfo = () => helpers.getCPUInfo().then((res) => res[1]);
|
|
4
|
-
const getOSInfo = () => helpers.getOSInfo().then((res) => res[1]);
|
|
5
|
-
const getMemoryInfo = () => helpers.getMemoryInfo().then((res) => res[1]);
|
|
6
|
-
const getNodeVersion = () => helpers.getNodeInfo().then((res) => res[1]);
|
|
7
|
-
const getYarnVersion = () => helpers.getYarnInfo().then((res) => res[1]);
|
|
8
|
-
const getNpmVersion = () => helpers.getnpmInfo().then((res) => res[1]);
|
|
9
|
-
const getPnpmVersion = () => helpers.getpnpmInfo().then((res) => res[1]);
|
|
10
|
-
function getNpmPackageVersion(pkg) {
|
|
11
|
-
const isArray = Array.isArray(pkg);
|
|
12
|
-
return run(
|
|
13
|
-
{
|
|
14
|
-
npmPackages: isArray ? pkg : [pkg]
|
|
15
|
-
},
|
|
16
|
-
{ json: true, showNotFound: true }
|
|
17
|
-
).then((res) => {
|
|
18
|
-
const { npmPackages = {} } = JSON.parse(res) || {};
|
|
19
|
-
return isArray ? pkg.map((e) => npmPackages[e] || "Not Found") : npmPackages[pkg];
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
function getGlobalNpmPackageVersion(pkg) {
|
|
23
|
-
const isArray = Array.isArray(pkg);
|
|
24
|
-
return run(
|
|
25
|
-
{
|
|
26
|
-
npmGlobalPackages: isArray ? pkg : [pkg]
|
|
27
|
-
},
|
|
28
|
-
{ json: true, showNotFound: true }
|
|
29
|
-
).then((res) => {
|
|
30
|
-
const { npmGlobalPackages = {} } = JSON.parse(res) || {};
|
|
31
|
-
return isArray ? pkg.map((e) => npmGlobalPackages[e] || "Not Found") : npmGlobalPackages[pkg];
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
function getGitBranch() {
|
|
35
|
-
return new Promise((resolve, reject) => {
|
|
36
|
-
exec("git branch --show-current", (err, stdout) => {
|
|
37
|
-
if (err) {
|
|
38
|
-
exec("git branch", (err2, stdout2) => {
|
|
39
|
-
if (err2) {
|
|
40
|
-
reject(err2);
|
|
41
|
-
} else {
|
|
42
|
-
resolve(
|
|
43
|
-
stdout2.split("\n").map((e) => e.replace("* ", "")).join("").trim()
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
} else {
|
|
48
|
-
resolve(stdout.trim());
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
function getGitRepo() {
|
|
54
|
-
return new Promise((resolve, reject) => {
|
|
55
|
-
exec("git config --get remote.origin.url", (err, stdout) => {
|
|
56
|
-
if (err)
|
|
57
|
-
reject(err);
|
|
58
|
-
else
|
|
59
|
-
resolve(stdout.trim());
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
export {
|
|
64
|
-
getCPUInfo,
|
|
65
|
-
getGitBranch,
|
|
66
|
-
getGitRepo,
|
|
67
|
-
getGlobalNpmPackageVersion,
|
|
68
|
-
getMemoryInfo,
|
|
69
|
-
getNodeVersion,
|
|
70
|
-
getNpmPackageVersion,
|
|
71
|
-
getNpmVersion,
|
|
72
|
-
getOSInfo,
|
|
73
|
-
getPnpmVersion,
|
|
74
|
-
getYarnVersion
|
|
75
|
-
};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import fse from "fs-extra";
|
|
2
|
-
const cache = /* @__PURE__ */ new Map();
|
|
3
|
-
async function readFile(path) {
|
|
4
|
-
if (cache.has(path))
|
|
5
|
-
return cache.get(path);
|
|
6
|
-
const res = await fse.readFile(path, "utf-8");
|
|
7
|
-
cache.set(path, res);
|
|
8
|
-
return res;
|
|
9
|
-
}
|
|
10
|
-
function readFileSync(path) {
|
|
11
|
-
if (cache.has(path))
|
|
12
|
-
return cache.get(path);
|
|
13
|
-
const res = fse.readFileSync(path, "utf-8");
|
|
14
|
-
cache.set(path, res);
|
|
15
|
-
return res;
|
|
16
|
-
}
|
|
17
|
-
async function readJSON(path) {
|
|
18
|
-
const str = await readFile(path);
|
|
19
|
-
return JSON.parse(str);
|
|
20
|
-
}
|
|
21
|
-
function readJSONSync(path) {
|
|
22
|
-
const str = readFileSync(path);
|
|
23
|
-
return JSON.parse(str);
|
|
24
|
-
}
|
|
25
|
-
export {
|
|
26
|
-
readFile,
|
|
27
|
-
readFileSync,
|
|
28
|
-
readJSON,
|
|
29
|
-
readJSONSync
|
|
30
|
-
};
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import fse from "fs-extra";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import path from "path";
|
|
4
|
-
class FileSharding {
|
|
5
|
-
constructor(content, limitBytes = 1024 * 1024 * 10, encoding = "utf-8") {
|
|
6
|
-
this.content = content;
|
|
7
|
-
this.limitBytes = limitBytes;
|
|
8
|
-
this.encoding = encoding;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* @param ext the extension name of the output file (must starts with ".")
|
|
12
|
-
*/
|
|
13
|
-
createVirtualShardingFiles(ext = "", index = 0) {
|
|
14
|
-
const bf = Buffer.from(this.content, this.encoding);
|
|
15
|
-
const res = [];
|
|
16
|
-
const threshold = this.limitBytes;
|
|
17
|
-
let tmpBytes = 0;
|
|
18
|
-
while (bf.byteLength > tmpBytes) {
|
|
19
|
-
res.push(bf.subarray(tmpBytes, tmpBytes + threshold));
|
|
20
|
-
tmpBytes += threshold;
|
|
21
|
-
}
|
|
22
|
-
return res.map((e, i) => ({ filename: `${i + index}${ext}`, content: e }));
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* @param folder absolute path of folder which used to save string sharding files.
|
|
26
|
-
* @param ext the extension name of the output file (must starts with ".")
|
|
27
|
-
*/
|
|
28
|
-
async writeStringToFolder(folder, ext = "", index) {
|
|
29
|
-
const dist = path.resolve(folder);
|
|
30
|
-
await fse.ensureDir(dist);
|
|
31
|
-
const res = this.createVirtualShardingFiles(ext, index);
|
|
32
|
-
await Promise.all(
|
|
33
|
-
res.map(
|
|
34
|
-
(e) => new Promise((resolve, reject) => {
|
|
35
|
-
const stream = fs.createWriteStream(
|
|
36
|
-
path.join(dist, e.filename),
|
|
37
|
-
this.encoding
|
|
38
|
-
);
|
|
39
|
-
stream.end(e.content);
|
|
40
|
-
stream.once("close", () => resolve(void 0));
|
|
41
|
-
stream.once("error", (err) => reject(err));
|
|
42
|
-
})
|
|
43
|
-
)
|
|
44
|
-
);
|
|
45
|
-
return res;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
export {
|
|
49
|
-
FileSharding
|
|
50
|
-
};
|
package/dist/esm/build/index.js
DELETED