@trebired/code-discipline 2.3.0 → 3.1.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/CHANGELOG.md +20 -0
- package/README.md +49 -2
- package/dist/checks/fix-folderization.js +1 -1
- package/dist/checks/index.d.ts +1 -0
- package/dist/checks/index.d.ts.map +1 -1
- package/dist/checks/index.js +93 -70
- package/dist/checks/index.js.map +1 -1
- package/dist/checks/rule-slugs.d.ts +3 -3
- package/dist/checks/rule-slugs.d.ts.map +1 -1
- package/dist/checks/rule-slugs.js +12 -8
- package/dist/checks/rule-slugs.js.map +1 -1
- package/dist/checks/rules/comments/ranges.d.ts +10 -0
- package/dist/checks/rules/comments/ranges.d.ts.map +1 -0
- package/dist/checks/rules/{comment-stripping.js → comments/ranges.js} +51 -107
- package/dist/checks/rules/comments/ranges.js.map +1 -0
- package/dist/checks/rules/{comment-stripping.d.ts → comments/stripping.d.ts} +3 -2
- package/dist/checks/rules/comments/stripping.d.ts.map +1 -0
- package/dist/checks/rules/comments/stripping.js +81 -0
- package/dist/checks/rules/comments/stripping.js.map +1 -0
- package/dist/checks/rules/dry/candidates.d.ts +8 -0
- package/dist/checks/rules/dry/candidates.d.ts.map +1 -0
- package/dist/checks/rules/dry/candidates.js +98 -0
- package/dist/checks/rules/dry/candidates.js.map +1 -0
- package/dist/checks/rules/dry/fingerprint.d.ts +15 -0
- package/dist/checks/rules/dry/fingerprint.d.ts.map +1 -0
- package/dist/checks/rules/dry/fingerprint.js +80 -0
- package/dist/checks/rules/dry/fingerprint.js.map +1 -0
- package/dist/checks/rules/dry/fix.d.ts +5 -0
- package/dist/checks/rules/dry/fix.d.ts.map +1 -0
- package/dist/checks/rules/dry/fix.js +252 -0
- package/dist/checks/rules/dry/fix.js.map +1 -0
- package/dist/checks/rules/dry/helpers.d.ts +5 -0
- package/dist/checks/rules/dry/helpers.d.ts.map +1 -0
- package/dist/checks/rules/dry/helpers.js +99 -0
- package/dist/checks/rules/dry/helpers.js.map +1 -0
- package/dist/checks/rules/dry/index.d.ts +7 -0
- package/dist/checks/rules/dry/index.d.ts.map +1 -0
- package/dist/checks/rules/dry/index.js +14 -0
- package/dist/checks/rules/dry/index.js.map +1 -0
- package/dist/checks/rules/dry/model.d.ts +37 -0
- package/dist/checks/rules/dry/model.d.ts.map +1 -0
- package/dist/checks/rules/dry/model.js +16 -0
- package/dist/checks/rules/dry/model.js.map +1 -0
- package/dist/checks/rules/dry/serialize/bindings.d.ts +8 -0
- package/dist/checks/rules/dry/serialize/bindings.d.ts.map +1 -0
- package/dist/checks/rules/dry/serialize/bindings.js +62 -0
- package/dist/checks/rules/dry/serialize/bindings.js.map +1 -0
- package/dist/checks/rules/dry/serialize/context.d.ts +18 -0
- package/dist/checks/rules/dry/serialize/context.d.ts.map +1 -0
- package/dist/checks/rules/dry/serialize/context.js +103 -0
- package/dist/checks/rules/dry/serialize/context.js.map +1 -0
- package/dist/checks/rules/dry/serialize/expressions.d.ts +10 -0
- package/dist/checks/rules/dry/serialize/expressions.d.ts.map +1 -0
- package/dist/checks/rules/dry/serialize/expressions.js +161 -0
- package/dist/checks/rules/dry/serialize/expressions.js.map +1 -0
- package/dist/checks/rules/dry/serialize/node.d.ts +5 -0
- package/dist/checks/rules/dry/serialize/node.d.ts.map +1 -0
- package/dist/checks/rules/dry/serialize/node.js +43 -0
- package/dist/checks/rules/dry/serialize/node.js.map +1 -0
- package/dist/checks/rules/dry/serialize/statements.d.ts +7 -0
- package/dist/checks/rules/dry/serialize/statements.d.ts.map +1 -0
- package/dist/checks/rules/dry/serialize/statements.js +99 -0
- package/dist/checks/rules/dry/serialize/statements.js.map +1 -0
- package/dist/checks/rules/evasion-guards/functions.d.ts +14 -0
- package/dist/checks/rules/evasion-guards/functions.d.ts.map +1 -0
- package/dist/checks/rules/evasion-guards/functions.js +83 -0
- package/dist/checks/rules/evasion-guards/functions.js.map +1 -0
- package/dist/checks/rules/evasion-guards/index.d.ts +6 -0
- package/dist/checks/rules/evasion-guards/index.d.ts.map +1 -0
- package/dist/checks/rules/evasion-guards/index.js +126 -0
- package/dist/checks/rules/evasion-guards/index.js.map +1 -0
- package/dist/checks/rules/evasion-guards/runtime.d.ts +6 -0
- package/dist/checks/rules/evasion-guards/runtime.d.ts.map +1 -0
- package/dist/checks/rules/evasion-guards/runtime.js +51 -0
- package/dist/checks/rules/evasion-guards/runtime.js.map +1 -0
- package/dist/checks/rules/evasion-guards/strip.d.ts +11 -0
- package/dist/checks/rules/evasion-guards/strip.d.ts.map +1 -0
- package/dist/checks/rules/evasion-guards/strip.js +89 -0
- package/dist/checks/rules/evasion-guards/strip.js.map +1 -0
- package/dist/checks/rules/folderize/compound-files.d.ts +6 -0
- package/dist/checks/rules/folderize/compound-files.d.ts.map +1 -0
- package/dist/checks/rules/{folderize-compound-files.js → folderize/compound-files.js} +10 -2
- package/dist/checks/rules/folderize/compound-files.js.map +1 -0
- package/dist/checks/rules/{folderize-plan.d.ts → folderize/plan.d.ts} +3 -3
- package/dist/checks/rules/folderize/plan.d.ts.map +1 -0
- package/dist/checks/rules/{folderize-plan.js → folderize/plan.js} +2 -2
- package/dist/checks/rules/folderize/plan.js.map +1 -0
- package/dist/checks/rules/max/file-lines.d.ts +6 -0
- package/dist/checks/rules/max/file-lines.d.ts.map +1 -0
- package/dist/checks/rules/{max-file-lines.js → max/file-lines.js} +9 -1
- package/dist/checks/rules/max/file-lines.js.map +1 -0
- package/dist/checks/rules/max/function-lines.d.ts +6 -0
- package/dist/checks/rules/max/function-lines.d.ts.map +1 -0
- package/dist/checks/rules/{max-function-lines.js → max/function-lines.js} +79 -61
- package/dist/checks/rules/max/function-lines.js.map +1 -0
- package/dist/checks/rules/remove-comments.d.ts.map +1 -1
- package/dist/checks/rules/remove-comments.js +10 -1
- package/dist/checks/rules/remove-comments.js.map +1 -1
- package/dist/checks/types.d.ts +25 -2
- package/dist/checks/types.d.ts.map +1 -1
- package/dist/cli/progress.d.ts +11 -0
- package/dist/cli/progress.d.ts.map +1 -0
- package/dist/cli/progress.js +65 -0
- package/dist/cli/progress.js.map +1 -0
- package/dist/cli/run-cli.d.ts.map +1 -1
- package/dist/cli/run-cli.js +91 -66
- package/dist/cli/run-cli.js.map +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +68 -62
- package/dist/config/index.js.map +1 -1
- package/dist/config/{normalize-check-options.d.ts → normalize/check-options.d.ts} +2 -2
- package/dist/config/normalize/check-options.d.ts.map +1 -0
- package/dist/config/{normalize-check-options.js → normalize/check-options.js} +6 -5
- package/dist/config/normalize/check-options.js.map +1 -0
- package/dist/config/{normalize-rule-options.d.ts → normalize/rule-options.d.ts} +9 -8
- package/dist/config/normalize/rule-options.d.ts.map +1 -0
- package/dist/config/{normalize-rule-options.js → normalize/rule-options.js} +37 -4
- package/dist/config/normalize/rule-options.js.map +1 -0
- package/dist/config/{normalize-source-options.d.ts → normalize/source-options.d.ts} +4 -2
- package/dist/config/normalize/source-options.d.ts.map +1 -0
- package/dist/config/{normalize-source-options.js → normalize/source-options.js} +6 -5
- package/dist/config/normalize/source-options.js.map +1 -0
- package/dist/config/{normalize-sync-imports-options.d.ts → normalize/sync-imports-options.d.ts} +2 -2
- package/dist/config/normalize/sync-imports-options.d.ts.map +1 -0
- package/dist/config/{normalize-sync-imports-options.js → normalize/sync-imports-options.js} +5 -5
- package/dist/config/normalize/sync-imports-options.js.map +1 -0
- package/dist/imports/check-sync-imports.js +1 -1
- package/dist/imports/check-sync-imports.js.map +1 -1
- package/dist/imports/scan.d.ts.map +1 -1
- package/dist/imports/scan.js +127 -26
- package/dist/imports/scan.js.map +1 -1
- package/dist/imports/sync-imports.d.ts.map +1 -1
- package/dist/imports/sync-imports.js +59 -47
- package/dist/imports/sync-imports.js.map +1 -1
- package/dist/imports/types.d.ts +26 -1
- package/dist/imports/types.d.ts.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/native/native.d.ts +18 -0
- package/dist/native/native.d.ts.map +1 -0
- package/dist/native/native.js +78 -0
- package/dist/native/native.js.map +1 -0
- package/dist/run.d.ts +2 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +4 -0
- package/dist/run.js.map +1 -1
- package/dist/runtime/{runtime-imports-sync.d.ts → imports-sync.d.ts} +1 -1
- package/dist/runtime/imports-sync.d.ts.map +1 -0
- package/dist/runtime/{runtime-imports-sync.js → imports-sync.js} +33 -21
- package/dist/runtime/imports-sync.js.map +1 -0
- package/dist/shared/discipline-types.d.ts +1 -1
- package/dist/shared/discipline-types.d.ts.map +1 -1
- package/dist/shared/logging.d.ts.map +1 -1
- package/dist/shared/logging.js +28 -13
- package/dist/shared/logging.js.map +1 -1
- package/dist/shared/utils.d.ts +4 -4
- package/dist/shared/utils.d.ts.map +1 -1
- package/dist/shared/utils.js +4 -4
- package/dist/shared/utils.js.map +1 -1
- package/native/darwin-arm64.node +0 -0
- package/native/darwin-x64.node +0 -0
- package/native/linux-arm64-gnu.node +0 -0
- package/native/linux-x64-gnu.node +0 -0
- package/package.json +11 -4
- package/dist/checks/rules/comment-stripping.d.ts.map +0 -1
- package/dist/checks/rules/comment-stripping.js.map +0 -1
- package/dist/checks/rules/dry.d.ts +0 -7
- package/dist/checks/rules/dry.d.ts.map +0 -1
- package/dist/checks/rules/dry.js +0 -905
- package/dist/checks/rules/dry.js.map +0 -1
- package/dist/checks/rules/folderize-compound-files.d.ts +0 -6
- package/dist/checks/rules/folderize-compound-files.d.ts.map +0 -1
- package/dist/checks/rules/folderize-compound-files.js.map +0 -1
- package/dist/checks/rules/folderize-plan.d.ts.map +0 -1
- package/dist/checks/rules/folderize-plan.js.map +0 -1
- package/dist/checks/rules/max-file-lines.d.ts +0 -6
- package/dist/checks/rules/max-file-lines.d.ts.map +0 -1
- package/dist/checks/rules/max-file-lines.js.map +0 -1
- package/dist/checks/rules/max-function-lines.d.ts +0 -6
- package/dist/checks/rules/max-function-lines.d.ts.map +0 -1
- package/dist/checks/rules/max-function-lines.js.map +0 -1
- package/dist/config/normalize-check-options.d.ts.map +0 -1
- package/dist/config/normalize-check-options.js.map +0 -1
- package/dist/config/normalize-rule-options.d.ts.map +0 -1
- package/dist/config/normalize-rule-options.js.map +0 -1
- package/dist/config/normalize-source-options.d.ts.map +0 -1
- package/dist/config/normalize-source-options.js.map +0 -1
- package/dist/config/normalize-sync-imports-options.d.ts.map +0 -1
- package/dist/config/normalize-sync-imports-options.js.map +0 -1
- package/dist/runtime/runtime-imports-sync.d.ts.map +0 -1
- package/dist/runtime/runtime-imports-sync.js.map +0 -1
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
const SAFE_GLOBAL_IDENTIFIERS = new Set([
|
|
3
|
+
"Array",
|
|
4
|
+
"BigInt",
|
|
5
|
+
"Boolean",
|
|
6
|
+
"Date",
|
|
7
|
+
"Error",
|
|
8
|
+
"JSON",
|
|
9
|
+
"Map",
|
|
10
|
+
"Math",
|
|
11
|
+
"Number",
|
|
12
|
+
"Object",
|
|
13
|
+
"Promise",
|
|
14
|
+
"RangeError",
|
|
15
|
+
"RegExp",
|
|
16
|
+
"Set",
|
|
17
|
+
"String",
|
|
18
|
+
"Symbol",
|
|
19
|
+
"SyntaxError",
|
|
20
|
+
"TypeError",
|
|
21
|
+
"URL",
|
|
22
|
+
"URLSearchParams",
|
|
23
|
+
"WeakMap",
|
|
24
|
+
"WeakSet",
|
|
25
|
+
"console",
|
|
26
|
+
"decodeURI",
|
|
27
|
+
"decodeURIComponent",
|
|
28
|
+
"encodeURI",
|
|
29
|
+
"encodeURIComponent",
|
|
30
|
+
"isFinite",
|
|
31
|
+
"isNaN",
|
|
32
|
+
"parseFloat",
|
|
33
|
+
"parseInt",
|
|
34
|
+
]);
|
|
35
|
+
function createSerializeContext() {
|
|
36
|
+
return {
|
|
37
|
+
nextBindingIndex: 0,
|
|
38
|
+
scopes: [],
|
|
39
|
+
usesOuterScope: false,
|
|
40
|
+
usesRestrictedRuntime: false,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function pushScope(context) {
|
|
44
|
+
context.scopes.push(new Map());
|
|
45
|
+
}
|
|
46
|
+
function popScope(context) {
|
|
47
|
+
context.scopes.pop();
|
|
48
|
+
}
|
|
49
|
+
function declareBinding(context, name) {
|
|
50
|
+
const canonical = `v${context.nextBindingIndex}`;
|
|
51
|
+
context.nextBindingIndex += 1;
|
|
52
|
+
context.scopes[context.scopes.length - 1]?.set(name, canonical);
|
|
53
|
+
return canonical;
|
|
54
|
+
}
|
|
55
|
+
function lookupBinding(context, name) {
|
|
56
|
+
for (let index = context.scopes.length - 1; index >= 0; index -= 1) {
|
|
57
|
+
const match = context.scopes[index]?.get(name);
|
|
58
|
+
if (match)
|
|
59
|
+
return match;
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
function isDeclarationNameOfParent(node, parent) {
|
|
64
|
+
return (ts.isFunctionDeclaration(parent)
|
|
65
|
+
|| ts.isFunctionExpression(parent)
|
|
66
|
+
|| ts.isArrowFunction(parent)
|
|
67
|
+
|| ts.isMethodDeclaration(parent)
|
|
68
|
+
|| ts.isGetAccessorDeclaration(parent)
|
|
69
|
+
|| ts.isSetAccessorDeclaration(parent)
|
|
70
|
+
|| ts.isParameter(parent)
|
|
71
|
+
|| ts.isVariableDeclaration(parent)
|
|
72
|
+
|| ts.isBindingElement(parent))
|
|
73
|
+
&& parent.name === node;
|
|
74
|
+
}
|
|
75
|
+
function isImportOrExportName(node, parent) {
|
|
76
|
+
return (ts.isImportSpecifier(parent) && (parent.name === node || parent.propertyName === node))
|
|
77
|
+
|| (ts.isImportClause(parent) && parent.name === node)
|
|
78
|
+
|| (ts.isNamespaceImport(parent) && parent.name === node)
|
|
79
|
+
|| (ts.isExportSpecifier(parent) && (parent.name === node || parent.propertyName === node));
|
|
80
|
+
}
|
|
81
|
+
function isReferenceIdentifier(node) {
|
|
82
|
+
const parent = node.parent;
|
|
83
|
+
if (!parent)
|
|
84
|
+
return true;
|
|
85
|
+
if (isDeclarationNameOfParent(node, parent)) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
if ((ts.isPropertyAssignment(parent) || ts.isPropertyDeclaration(parent) || ts.isMethodDeclaration(parent)) && parent.name === node) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
if ((ts.isPropertyAccessExpression(parent) && parent.name === node) || (ts.isQualifiedName(parent) && parent.right === node)) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
if (ts.isShorthandPropertyAssignment(parent) && parent.name === node) {
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
if (isImportOrExportName(node, parent)) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
export { SAFE_GLOBAL_IDENTIFIERS, createSerializeContext, declareBinding, isReferenceIdentifier, lookupBinding, popScope, pushScope, };
|
|
103
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../../src/checks/rules/dry/serialize/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import type { SerializeContext, SerializeNodeFn } from "./context.js";
|
|
3
|
+
declare function serializeIdentifierExpression(node: ts.Node, context: SerializeContext): unknown | undefined;
|
|
4
|
+
declare function serializeLiteralExpression(node: ts.Node, context: SerializeContext, sourceFile: ts.SourceFile, serialize: SerializeNodeFn): unknown | undefined;
|
|
5
|
+
declare function serializeContainerExpression(node: ts.Node, context: SerializeContext, sourceFile: ts.SourceFile, serialize: SerializeNodeFn): unknown | undefined;
|
|
6
|
+
declare function serializeAccessOrCallExpression(node: ts.Node, context: SerializeContext, sourceFile: ts.SourceFile, serialize: SerializeNodeFn): unknown | undefined;
|
|
7
|
+
declare function serializeOperatorExpression(node: ts.Node, context: SerializeContext, sourceFile: ts.SourceFile, serialize: SerializeNodeFn): unknown | undefined;
|
|
8
|
+
declare function serializeWrapperExpression(node: ts.Node, context: SerializeContext, sourceFile: ts.SourceFile, serialize: SerializeNodeFn): unknown | undefined;
|
|
9
|
+
export { serializeAccessOrCallExpression, serializeContainerExpression, serializeIdentifierExpression, serializeLiteralExpression, serializeOperatorExpression, serializeWrapperExpression, };
|
|
10
|
+
//# sourceMappingURL=expressions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../../../src/checks/rules/dry/serialize/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGtE,iBAAS,6BAA6B,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,gBAAgB,GACxB,OAAO,GAAG,SAAS,CAsCrB;AAED,iBAAS,0BAA0B,CACjC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,eAAe,GACzB,OAAO,GAAG,SAAS,CAyBrB;AA+BD,iBAAS,4BAA4B,CACnC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,eAAe,GACzB,OAAO,GAAG,SAAS,CAoBrB;AAED,iBAAS,+BAA+B,CACtC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,eAAe,GACzB,OAAO,GAAG,SAAS,CA0BrB;AAED,iBAAS,2BAA2B,CAClC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,eAAe,GACzB,OAAO,GAAG,SAAS,CAoCrB;AAED,iBAAS,0BAA0B,CACjC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,eAAe,GACzB,OAAO,GAAG,SAAS,CAcrB;AAED,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,0BAA0B,GAC3B,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { serializeFunctionLike, serializePropertyName } from "./bindings.js";
|
|
3
|
+
import { SAFE_GLOBAL_IDENTIFIERS, isReferenceIdentifier, lookupBinding } from "./context.js";
|
|
4
|
+
function serializeIdentifierExpression(node, context) {
|
|
5
|
+
if (ts.isIdentifier(node)) {
|
|
6
|
+
if (node.text === "arguments") {
|
|
7
|
+
context.usesRestrictedRuntime = true;
|
|
8
|
+
}
|
|
9
|
+
if (!isReferenceIdentifier(node)) {
|
|
10
|
+
return node.text;
|
|
11
|
+
}
|
|
12
|
+
const local = lookupBinding(context, node.text);
|
|
13
|
+
if (local) {
|
|
14
|
+
return ["local", local];
|
|
15
|
+
}
|
|
16
|
+
if (node.text === "arguments") {
|
|
17
|
+
return ["restricted", "arguments"];
|
|
18
|
+
}
|
|
19
|
+
if (SAFE_GLOBAL_IDENTIFIERS.has(node.text)) {
|
|
20
|
+
return ["global", node.text];
|
|
21
|
+
}
|
|
22
|
+
context.usesOuterScope = true;
|
|
23
|
+
return ["outer", node.text];
|
|
24
|
+
}
|
|
25
|
+
if (node.kind === ts.SyntaxKind.ThisKeyword || node.kind === ts.SyntaxKind.SuperKeyword) {
|
|
26
|
+
context.usesRestrictedRuntime = true;
|
|
27
|
+
return ["restricted", ts.SyntaxKind[node.kind]];
|
|
28
|
+
}
|
|
29
|
+
if (ts.isMetaProperty(node) && node.keywordToken === ts.SyntaxKind.NewKeyword && node.name.text === "target") {
|
|
30
|
+
context.usesRestrictedRuntime = true;
|
|
31
|
+
return ["restricted", "new.target"];
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
function serializeLiteralExpression(node, context, sourceFile, serialize) {
|
|
36
|
+
if (ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node) || ts.isNumericLiteral(node)) {
|
|
37
|
+
return ["literal", node.text];
|
|
38
|
+
}
|
|
39
|
+
if (ts.isBigIntLiteral(node)) {
|
|
40
|
+
return ["literal", node.text];
|
|
41
|
+
}
|
|
42
|
+
if (node.kind === ts.SyntaxKind.TrueKeyword || node.kind === ts.SyntaxKind.FalseKeyword || node.kind === ts.SyntaxKind.NullKeyword) {
|
|
43
|
+
return ["literal", ts.tokenToString(node.kind) ?? ts.SyntaxKind[node.kind]];
|
|
44
|
+
}
|
|
45
|
+
if (ts.isTemplateExpression(node)) {
|
|
46
|
+
return [
|
|
47
|
+
"template",
|
|
48
|
+
node.head.text,
|
|
49
|
+
node.templateSpans.map((span) => [
|
|
50
|
+
serialize(span.expression, context, sourceFile),
|
|
51
|
+
span.literal.text,
|
|
52
|
+
]),
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
function serializeObjectProperty(property, context, sourceFile, serialize) {
|
|
58
|
+
if (ts.isPropertyAssignment(property)) {
|
|
59
|
+
return ["prop", serializePropertyName(property.name, context, sourceFile, serialize), serialize(property.initializer, context, sourceFile)];
|
|
60
|
+
}
|
|
61
|
+
if (ts.isShorthandPropertyAssignment(property)) {
|
|
62
|
+
return [
|
|
63
|
+
"shorthand",
|
|
64
|
+
property.name.text,
|
|
65
|
+
serialize(property.name, context, sourceFile),
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
if (ts.isSpreadAssignment(property)) {
|
|
69
|
+
return ["spread-assignment", serialize(property.expression, context, sourceFile)];
|
|
70
|
+
}
|
|
71
|
+
if (ts.isMethodDeclaration(property)) {
|
|
72
|
+
return ["method", serializePropertyName(property.name, context, sourceFile, serialize), serializeFunctionLike(property, context, sourceFile, serialize)];
|
|
73
|
+
}
|
|
74
|
+
return ["property", property.getText(sourceFile)];
|
|
75
|
+
}
|
|
76
|
+
function serializeContainerExpression(node, context, sourceFile, serialize) {
|
|
77
|
+
if (ts.isArrayLiteralExpression(node)) {
|
|
78
|
+
return [
|
|
79
|
+
"array",
|
|
80
|
+
node.elements.map((element) => (ts.isSpreadElement(element)
|
|
81
|
+
? ["spread", serialize(element.expression, context, sourceFile)]
|
|
82
|
+
: serialize(element, context, sourceFile))),
|
|
83
|
+
];
|
|
84
|
+
}
|
|
85
|
+
if (ts.isObjectLiteralExpression(node)) {
|
|
86
|
+
return [
|
|
87
|
+
"object",
|
|
88
|
+
node.properties.map((property) => serializeObjectProperty(property, context, sourceFile, serialize)),
|
|
89
|
+
];
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
function serializeAccessOrCallExpression(node, context, sourceFile, serialize) {
|
|
94
|
+
if (ts.isPropertyAccessExpression(node)) {
|
|
95
|
+
return ["property-access", serialize(node.expression, context, sourceFile), node.name.text];
|
|
96
|
+
}
|
|
97
|
+
if (ts.isElementAccessExpression(node)) {
|
|
98
|
+
return ["element-access", serialize(node.expression, context, sourceFile), serialize(node.argumentExpression, context, sourceFile)];
|
|
99
|
+
}
|
|
100
|
+
if (ts.isCallExpression(node)) {
|
|
101
|
+
return [
|
|
102
|
+
"call",
|
|
103
|
+
serialize(node.expression, context, sourceFile),
|
|
104
|
+
node.arguments.map((argument) => serialize(argument, context, sourceFile)),
|
|
105
|
+
];
|
|
106
|
+
}
|
|
107
|
+
if (ts.isNewExpression(node)) {
|
|
108
|
+
return [
|
|
109
|
+
"new",
|
|
110
|
+
serialize(node.expression, context, sourceFile),
|
|
111
|
+
(node.arguments ?? []).map((argument) => serialize(argument, context, sourceFile)),
|
|
112
|
+
];
|
|
113
|
+
}
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
function serializeOperatorExpression(node, context, sourceFile, serialize) {
|
|
117
|
+
if (ts.isAwaitExpression(node)) {
|
|
118
|
+
return ["await", serialize(node.expression, context, sourceFile)];
|
|
119
|
+
}
|
|
120
|
+
if (ts.isYieldExpression(node)) {
|
|
121
|
+
return ["yield", node.asteriskToken ? "*" : "", serialize(node.expression, context, sourceFile)];
|
|
122
|
+
}
|
|
123
|
+
if (ts.isConditionalExpression(node)) {
|
|
124
|
+
return [
|
|
125
|
+
"conditional",
|
|
126
|
+
serialize(node.condition, context, sourceFile),
|
|
127
|
+
serialize(node.whenTrue, context, sourceFile),
|
|
128
|
+
serialize(node.whenFalse, context, sourceFile),
|
|
129
|
+
];
|
|
130
|
+
}
|
|
131
|
+
if (ts.isPrefixUnaryExpression(node) || ts.isPostfixUnaryExpression(node)) {
|
|
132
|
+
return [
|
|
133
|
+
ts.isPrefixUnaryExpression(node) ? "prefix" : "postfix",
|
|
134
|
+
ts.tokenToString(node.operator) ?? String(node.operator),
|
|
135
|
+
serialize(node.operand, context, sourceFile),
|
|
136
|
+
];
|
|
137
|
+
}
|
|
138
|
+
if (ts.isBinaryExpression(node)) {
|
|
139
|
+
return [
|
|
140
|
+
"binary",
|
|
141
|
+
ts.tokenToString(node.operatorToken.kind) ?? String(node.operatorToken.kind),
|
|
142
|
+
serialize(node.left, context, sourceFile),
|
|
143
|
+
serialize(node.right, context, sourceFile),
|
|
144
|
+
];
|
|
145
|
+
}
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
function serializeWrapperExpression(node, context, sourceFile, serialize) {
|
|
149
|
+
if (ts.isFunctionDeclaration(node) || ts.isFunctionExpression(node) || ts.isArrowFunction(node)) {
|
|
150
|
+
return serializeFunctionLike(node, context, sourceFile, serialize);
|
|
151
|
+
}
|
|
152
|
+
if (ts.isAsExpression(node) || ts.isTypeAssertionExpression(node) || ts.isNonNullExpression(node) || ts.isSatisfiesExpression(node)) {
|
|
153
|
+
return serialize(node.expression, context, sourceFile);
|
|
154
|
+
}
|
|
155
|
+
if (ts.isClassExpression(node) || ts.isClassDeclaration(node)) {
|
|
156
|
+
return ["class", node.name?.text ?? null];
|
|
157
|
+
}
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
export { serializeAccessOrCallExpression, serializeContainerExpression, serializeIdentifierExpression, serializeLiteralExpression, serializeOperatorExpression, serializeWrapperExpression, };
|
|
161
|
+
//# sourceMappingURL=expressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../../../../src/checks/rules/dry/serialize/expressions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import type { SerializeContext } from "./context.js";
|
|
3
|
+
declare function serializeNode(node: ts.Node | undefined, context: SerializeContext, sourceFile: ts.SourceFile): unknown;
|
|
4
|
+
export { serializeNode };
|
|
5
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../../src/checks/rules/dry/serialize/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAkCrD,iBAAS,aAAa,CACpB,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS,EACzB,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,OAAO,CAoBT;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { serializeAccessOrCallExpression, serializeContainerExpression, serializeIdentifierExpression, serializeLiteralExpression, serializeOperatorExpression, serializeWrapperExpression, } from "./expressions.js";
|
|
3
|
+
import { serializeBranchStatement, serializeControlStatement, serializeScopeStatement, } from "./statements.js";
|
|
4
|
+
const NODE_SERIALIZERS = [
|
|
5
|
+
serializeScopeStatement,
|
|
6
|
+
serializeControlStatement,
|
|
7
|
+
serializeBranchStatement,
|
|
8
|
+
serializeLiteralExpression,
|
|
9
|
+
serializeContainerExpression,
|
|
10
|
+
serializeAccessOrCallExpression,
|
|
11
|
+
serializeOperatorExpression,
|
|
12
|
+
serializeWrapperExpression,
|
|
13
|
+
];
|
|
14
|
+
function isTypeOnlyNode(node) {
|
|
15
|
+
return ts.isTypeNode(node)
|
|
16
|
+
|| ts.isTypeParameterDeclaration(node)
|
|
17
|
+
|| ts.isTypeAliasDeclaration(node)
|
|
18
|
+
|| ts.isInterfaceDeclaration(node)
|
|
19
|
+
|| ts.isImportTypeNode(node);
|
|
20
|
+
}
|
|
21
|
+
function serializeNode(node, context, sourceFile) {
|
|
22
|
+
if (!node)
|
|
23
|
+
return null;
|
|
24
|
+
if (isTypeOnlyNode(node))
|
|
25
|
+
return null;
|
|
26
|
+
if (ts.isParenthesizedExpression(node)) {
|
|
27
|
+
return serializeNode(node.expression, context, sourceFile);
|
|
28
|
+
}
|
|
29
|
+
const identifier = serializeIdentifierExpression(node, context);
|
|
30
|
+
if (identifier !== undefined)
|
|
31
|
+
return identifier;
|
|
32
|
+
for (const serializer of NODE_SERIALIZERS) {
|
|
33
|
+
const result = serializer(node, context, sourceFile, serializeNode);
|
|
34
|
+
if (result !== undefined)
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
return [
|
|
38
|
+
ts.SyntaxKind[node.kind],
|
|
39
|
+
node.getChildren(sourceFile).map((child) => serializeNode(child, context, sourceFile)),
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
export { serializeNode };
|
|
43
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../../../src/checks/rules/dry/serialize/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,gBAAgB,GAAG;IACvB,uBAAuB;IACvB,yBAAyB;IACzB,wBAAwB;IACxB,0BAA0B;IAC1B,4BAA4B;IAC5B,+BAA+B;IAC/B,2BAA2B;IAC3B,0BAA0B;CAC3B,CAAC;AAEF,SAAS,cAAc,CAAC,IAAa;IACnC,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;WACrB,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC;WACnC,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC;WAC/B,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC;WAC/B,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,aAAa,CACpB,IAAyB,EACzB,OAAyB,EACzB,UAAyB;IAEzB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,UAAU,GAAG,6BAA6B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChE,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC;IAEhD,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACpE,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;IAC1C,CAAC;IAED,OAAO;QACL,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;KACvF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import type { SerializeContext, SerializeNodeFn } from "./context.js";
|
|
3
|
+
declare function serializeScopeStatement(node: ts.Node, context: SerializeContext, sourceFile: ts.SourceFile, serialize: SerializeNodeFn): unknown | undefined;
|
|
4
|
+
declare function serializeControlStatement(node: ts.Node, context: SerializeContext, sourceFile: ts.SourceFile, serialize: SerializeNodeFn): unknown | undefined;
|
|
5
|
+
declare function serializeBranchStatement(node: ts.Node, context: SerializeContext, sourceFile: ts.SourceFile, serialize: SerializeNodeFn): unknown | undefined;
|
|
6
|
+
export { serializeBranchStatement, serializeControlStatement, serializeScopeStatement };
|
|
7
|
+
//# sourceMappingURL=statements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../../../../../src/checks/rules/dry/serialize/statements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGtE,iBAAS,uBAAuB,CAC9B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,eAAe,GACzB,OAAO,GAAG,SAAS,CA6BrB;AAED,iBAAS,yBAAyB,CAChC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,eAAe,GACzB,OAAO,GAAG,SAAS,CA0CrB;AAwBD,iBAAS,wBAAwB,CAC/B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,eAAe,GACzB,OAAO,GAAG,SAAS,CAkBrB;AAED,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { serializeBindingName } from "./bindings.js";
|
|
3
|
+
import { popScope, pushScope } from "./context.js";
|
|
4
|
+
function serializeScopeStatement(node, context, sourceFile, serialize) {
|
|
5
|
+
if (ts.isBlock(node)) {
|
|
6
|
+
pushScope(context);
|
|
7
|
+
const result = ["block", node.statements.map((statement) => serialize(statement, context, sourceFile))];
|
|
8
|
+
popScope(context);
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
if (ts.isReturnStatement(node)) {
|
|
12
|
+
return ["return", serialize(node.expression, context, sourceFile)];
|
|
13
|
+
}
|
|
14
|
+
if (ts.isExpressionStatement(node)) {
|
|
15
|
+
return ["expr", serialize(node.expression, context, sourceFile)];
|
|
16
|
+
}
|
|
17
|
+
if (ts.isVariableStatement(node)) {
|
|
18
|
+
return ["vars", node.declarationList.flags, node.declarationList.declarations.map((declaration) => serialize(declaration, context, sourceFile))];
|
|
19
|
+
}
|
|
20
|
+
if (ts.isVariableDeclaration(node)) {
|
|
21
|
+
return [
|
|
22
|
+
"var",
|
|
23
|
+
serializeBindingName(node.name, context, sourceFile, serialize),
|
|
24
|
+
serialize(node.initializer, context, sourceFile),
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
function serializeControlStatement(node, context, sourceFile, serialize) {
|
|
30
|
+
if (ts.isIfStatement(node)) {
|
|
31
|
+
return [
|
|
32
|
+
"if",
|
|
33
|
+
serialize(node.expression, context, sourceFile),
|
|
34
|
+
serialize(node.thenStatement, context, sourceFile),
|
|
35
|
+
serialize(node.elseStatement, context, sourceFile),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
if (ts.isForStatement(node)) {
|
|
39
|
+
return [
|
|
40
|
+
"for",
|
|
41
|
+
serialize(node.initializer, context, sourceFile),
|
|
42
|
+
serialize(node.condition, context, sourceFile),
|
|
43
|
+
serialize(node.incrementor, context, sourceFile),
|
|
44
|
+
serialize(node.statement, context, sourceFile),
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
if (ts.isForOfStatement(node) || ts.isForInStatement(node)) {
|
|
48
|
+
return [
|
|
49
|
+
ts.isForOfStatement(node) ? "for-of" : "for-in",
|
|
50
|
+
serialize(node.initializer, context, sourceFile),
|
|
51
|
+
serialize(node.expression, context, sourceFile),
|
|
52
|
+
serialize(node.statement, context, sourceFile),
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
if (ts.isWhileStatement(node) || ts.isDoStatement(node)) {
|
|
56
|
+
return [
|
|
57
|
+
ts.isWhileStatement(node) ? "while" : "do",
|
|
58
|
+
serialize(node.expression, context, sourceFile),
|
|
59
|
+
serialize(node.statement, context, sourceFile),
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
if (ts.isThrowStatement(node)) {
|
|
63
|
+
return ["throw", serialize(node.expression, context, sourceFile)];
|
|
64
|
+
}
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
function serializeTryStatement(node, context, sourceFile, serialize) {
|
|
68
|
+
return [
|
|
69
|
+
"try",
|
|
70
|
+
serialize(node.tryBlock, context, sourceFile),
|
|
71
|
+
node.catchClause
|
|
72
|
+
? [
|
|
73
|
+
"catch",
|
|
74
|
+
node.catchClause.variableDeclaration
|
|
75
|
+
? serializeBindingName(node.catchClause.variableDeclaration.name, context, sourceFile, serialize)
|
|
76
|
+
: null,
|
|
77
|
+
serialize(node.catchClause.block, context, sourceFile),
|
|
78
|
+
]
|
|
79
|
+
: null,
|
|
80
|
+
serialize(node.finallyBlock, context, sourceFile),
|
|
81
|
+
];
|
|
82
|
+
}
|
|
83
|
+
function serializeBranchStatement(node, context, sourceFile, serialize) {
|
|
84
|
+
if (ts.isTryStatement(node)) {
|
|
85
|
+
return serializeTryStatement(node, context, sourceFile, serialize);
|
|
86
|
+
}
|
|
87
|
+
if (ts.isSwitchStatement(node)) {
|
|
88
|
+
return [
|
|
89
|
+
"switch",
|
|
90
|
+
serialize(node.expression, context, sourceFile),
|
|
91
|
+
node.caseBlock.clauses.map((clause) => (ts.isCaseClause(clause)
|
|
92
|
+
? ["case", serialize(clause.expression, context, sourceFile), clause.statements.map((statement) => serialize(statement, context, sourceFile))]
|
|
93
|
+
: ["default", clause.statements.map((statement) => serialize(statement, context, sourceFile))])),
|
|
94
|
+
];
|
|
95
|
+
}
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
export { serializeBranchStatement, serializeControlStatement, serializeScopeStatement };
|
|
99
|
+
//# sourceMappingURL=statements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statements.js","sourceRoot":"","sources":["../../../../../src/checks/rules/dry/serialize/statements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEnD,SAAS,uBAAuB,CAC9B,IAAa,EACb,OAAyB,EACzB,UAAyB,EACzB,SAA0B;IAE1B,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,OAAO,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACxG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACnJ,CAAC;IAED,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,KAAK;YACL,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC;YAC/D,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC;SACjD,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,yBAAyB,CAChC,IAAa,EACb,OAAyB,EACzB,UAAyB,EACzB,SAA0B;IAE1B,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI;YACJ,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC;YAC/C,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC;YAClD,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC;SACnD,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,KAAK;YACL,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC;YAChD,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC;YAChD,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC;SAC/C,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,OAAO;YACL,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;YAC/C,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC;YAChD,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC;YAC/C,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC;SAC/C,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,OAAO;YACL,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YAC1C,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC;YAC/C,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC;SAC/C,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAqB,EACrB,OAAyB,EACzB,UAAyB,EACzB,SAA0B;IAE1B,OAAO;QACL,KAAK;QACL,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC;QAC7C,IAAI,CAAC,WAAW;YACd,CAAC,CAAC;gBACA,OAAO;gBACP,IAAI,CAAC,WAAW,CAAC,mBAAmB;oBAClC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC;oBACjG,CAAC,CAAC,IAAI;gBACR,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC;aACvD;YACD,CAAC,CAAC,IAAI;QACR,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC;KAClD,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAa,EACb,OAAyB,EACzB,UAAyB,EACzB,SAA0B;IAE1B,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,QAAQ;YACR,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACrC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;gBACrB,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;gBAC9I,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CACjG,CAAC;SACH,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
type FunctionDescriptor = {
|
|
3
|
+
characterCount: number;
|
|
4
|
+
kind: string;
|
|
5
|
+
lineCount: number;
|
|
6
|
+
name: string;
|
|
7
|
+
startLine: number;
|
|
8
|
+
statementCount: number;
|
|
9
|
+
};
|
|
10
|
+
declare function getStartLine(sourceFile: ts.SourceFile, node: ts.Node): number;
|
|
11
|
+
declare function collectFunctionDescriptors(sourceFile: ts.SourceFile): FunctionDescriptor[];
|
|
12
|
+
export { collectFunctionDescriptors, getStartLine };
|
|
13
|
+
export type { FunctionDescriptor };
|
|
14
|
+
//# sourceMappingURL=functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/evasion-guards/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,KAAK,kBAAkB,GAAG;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,iBAAS,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,CAEtE;AAsED,iBAAS,0BAA0B,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,kBAAkB,EAAE,CAUnF;AAED,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
function getStartLine(sourceFile, node) {
|
|
3
|
+
return sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1;
|
|
4
|
+
}
|
|
5
|
+
function getLineCount(sourceFile, node) {
|
|
6
|
+
const start = node.getStart(sourceFile);
|
|
7
|
+
const end = node.getEnd();
|
|
8
|
+
const startLine = sourceFile.getLineAndCharacterOfPosition(start).line + 1;
|
|
9
|
+
const endLine = sourceFile.getLineAndCharacterOfPosition(end).line + 1;
|
|
10
|
+
return Math.max(1, endLine - startLine + 1);
|
|
11
|
+
}
|
|
12
|
+
function isFunctionLikeWithBody(node) {
|
|
13
|
+
return ((ts.isFunctionDeclaration(node) && node.body !== undefined)
|
|
14
|
+
|| (ts.isMethodDeclaration(node) && node.body !== undefined)
|
|
15
|
+
|| (ts.isConstructorDeclaration(node) && node.body !== undefined)
|
|
16
|
+
|| (ts.isGetAccessorDeclaration(node) && node.body !== undefined)
|
|
17
|
+
|| (ts.isSetAccessorDeclaration(node) && node.body !== undefined)
|
|
18
|
+
|| (ts.isFunctionExpression(node) && node.body !== undefined)
|
|
19
|
+
|| (ts.isArrowFunction(node) && node.body !== undefined));
|
|
20
|
+
}
|
|
21
|
+
function resolveFunctionKind(node) {
|
|
22
|
+
if (ts.isMethodDeclaration(node))
|
|
23
|
+
return "method";
|
|
24
|
+
if (ts.isConstructorDeclaration(node))
|
|
25
|
+
return "constructor";
|
|
26
|
+
if (ts.isGetAccessorDeclaration(node))
|
|
27
|
+
return "getter";
|
|
28
|
+
if (ts.isSetAccessorDeclaration(node))
|
|
29
|
+
return "setter";
|
|
30
|
+
if (ts.isArrowFunction(node))
|
|
31
|
+
return "arrow-function";
|
|
32
|
+
if (ts.isFunctionExpression(node))
|
|
33
|
+
return "function-expression";
|
|
34
|
+
return "function";
|
|
35
|
+
}
|
|
36
|
+
function resolveFunctionName(node, sourceFile) {
|
|
37
|
+
if ("name" in node && node.name)
|
|
38
|
+
return node.name.getText(sourceFile);
|
|
39
|
+
const parent = node.parent;
|
|
40
|
+
if (parent && ts.isVariableDeclaration(parent) && ts.isIdentifier(parent.name))
|
|
41
|
+
return parent.name.text;
|
|
42
|
+
if (parent && ts.isBinaryExpression(parent) && ts.isIdentifier(parent.left))
|
|
43
|
+
return parent.left.text;
|
|
44
|
+
if (parent && ts.isPropertyAssignment(parent))
|
|
45
|
+
return parent.name.getText(sourceFile);
|
|
46
|
+
return "anonymous";
|
|
47
|
+
}
|
|
48
|
+
function countExecutableStatements(node) {
|
|
49
|
+
let count = 0;
|
|
50
|
+
function visit(child) {
|
|
51
|
+
if (ts.isStatement(child) && !ts.isBlock(child))
|
|
52
|
+
count += 1;
|
|
53
|
+
ts.forEachChild(child, visit);
|
|
54
|
+
}
|
|
55
|
+
ts.forEachChild(node, visit);
|
|
56
|
+
return count;
|
|
57
|
+
}
|
|
58
|
+
function describeFunction(node, sourceFile) {
|
|
59
|
+
const body = node.body;
|
|
60
|
+
const statementCount = body && ts.isBlock(body)
|
|
61
|
+
? countExecutableStatements(body)
|
|
62
|
+
: 1;
|
|
63
|
+
return {
|
|
64
|
+
characterCount: node.getText(sourceFile).length,
|
|
65
|
+
kind: resolveFunctionKind(node),
|
|
66
|
+
lineCount: getLineCount(sourceFile, node),
|
|
67
|
+
name: resolveFunctionName(node, sourceFile),
|
|
68
|
+
startLine: getStartLine(sourceFile, node),
|
|
69
|
+
statementCount,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function collectFunctionDescriptors(sourceFile) {
|
|
73
|
+
const descriptors = [];
|
|
74
|
+
function visit(node) {
|
|
75
|
+
if (isFunctionLikeWithBody(node))
|
|
76
|
+
descriptors.push(describeFunction(node, sourceFile));
|
|
77
|
+
ts.forEachChild(node, visit);
|
|
78
|
+
}
|
|
79
|
+
visit(sourceFile);
|
|
80
|
+
return descriptors;
|
|
81
|
+
}
|
|
82
|
+
export { collectFunctionDescriptors, getStartLine };
|
|
83
|
+
//# sourceMappingURL=functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../../src/checks/rules/evasion-guards/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAW5B,SAAS,YAAY,CAAC,UAAyB,EAAE,IAAa;IAC5D,OAAO,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,YAAY,CAAC,UAAyB,EAAE,IAAa;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,UAAU,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAa;IAC3C,OAAO,CACL,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;WACxD,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;WACzD,CAAC,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;WAC9D,CAAC,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;WAC9D,CAAC,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;WAC9D,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;WAC1D,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAgC;IAC3D,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,IAAI,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC;QAAE,OAAO,aAAa,CAAC;IAC5D,IAAI,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvD,IAAI,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvD,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,gBAAgB,CAAC;IACtD,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAAE,OAAO,qBAAqB,CAAC;IAChE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAgC,EAAE,UAAyB;IACtF,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEtE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,MAAM,IAAI,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACxG,IAAI,MAAM,IAAI,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACrG,IAAI,MAAM,IAAI,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtF,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAa;IAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,SAAS,KAAK,CAAC,KAAc;QAC3B,IAAI,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,KAAK,IAAI,CAAC,CAAC;QAC5D,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAgC,EAAE,UAAyB;IACnF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,MAAM,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7C,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM;QAC/C,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC;QAC/B,SAAS,EAAE,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;QACzC,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC;QAC3C,SAAS,EAAE,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;QACzC,cAAc;KACf,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,UAAyB;IAC3D,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,SAAS,KAAK,CAAC,IAAa;QAC1B,IAAI,sBAAsB,CAAC,IAAI,CAAC;YAAE,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QACvF,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,CAAC;IAClB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ScannedSourceFile } from "../../../imports/types.js";
|
|
2
|
+
import type { CodeDisciplineViolation } from "../../../shared/discipline-types.js";
|
|
3
|
+
import type { NormalizedCheckCodeDisciplineOptions } from "../../types.js";
|
|
4
|
+
declare function runEvasionGuardsRule(sourceFiles: ScannedSourceFile[], options: NormalizedCheckCodeDisciplineOptions): Promise<CodeDisciplineViolation[]>;
|
|
5
|
+
export { runEvasionGuardsRule };
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/evasion-guards/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAEnF,OAAO,KAAK,EAAE,oCAAoC,EAAoC,MAAM,gBAAgB,CAAC;AAkJ7G,iBAAe,oBAAoB,CACjC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAiBpC;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|