@checkdigit/eslint-plugin 6.5.0-PR.66-4fb9 → 6.5.0-PR.73-b5a9
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 +1 -1
- package/dist-cjs/index.cjs +70 -64
- package/dist-cjs/metafile.json +24 -18
- package/dist-mjs/index.mjs +8 -8
- package/dist-mjs/no-promise-instance-method.mjs +67 -0
- package/dist-types/index.d.ts +3 -5
- package/dist-types/no-promise-instance-method.d.ts +6 -0
- package/package.json +1 -1
- package/src/index.ts +4 -4
- package/src/no-promise-instance-method.ts +96 -0
- package/dist-mjs/no-side-effects.mjs +0 -57
- package/dist-types/no-side-effects.d.ts +0 -3
- package/src/no-side-effects.ts +0 -120
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ Copyright (c) 2021-2023 [Check Digit, LLC](https://checkdigit.com)
|
|
|
13
13
|
- `@checkdigit/require-assert-predicate-rejects-throws`
|
|
14
14
|
- `@checkdigit/object-literal-response`
|
|
15
15
|
- `@checkdigit/no-test-import`
|
|
16
|
-
- `@checkdigit/no-
|
|
16
|
+
- `@checkdigit/no-promise-instance-method`
|
|
17
17
|
|
|
18
18
|
## Configurations
|
|
19
19
|
|
package/dist-cjs/index.cjs
CHANGED
|
@@ -25,11 +25,11 @@ __export(src_exports, {
|
|
|
25
25
|
module.exports = __toCommonJS(src_exports);
|
|
26
26
|
|
|
27
27
|
// package.json
|
|
28
|
-
var package_default = { name: "@checkdigit/eslint-plugin", version: "6.5.0-PR.
|
|
28
|
+
var package_default = { name: "@checkdigit/eslint-plugin", version: "6.5.0-PR.73-b5a9", description: "Check Digit eslint plugins", keywords: ["eslint", "eslintplugin"], homepage: "https://github.com/checkdigit/eslint-plugin#readme", bugs: { url: "https://github.com/checkdigit/eslint-plugin/issues" }, repository: { type: "git", url: "https://github.com/checkdigit/eslint-plugin" }, license: "MIT", author: "Check Digit, LLC", sideEffects: false, type: "module", exports: { ".": { types: "./dist-types/index.d.ts", require: "./dist-cjs/index.cjs", import: "./dist-mjs/index.mjs", default: "./dist-mjs/index.mjs" } }, files: ["src", "dist-types", "dist-cjs", "dist-mjs", "!src/**/*.test.ts", "!src/**/*.spec.ts", "!dist-types/**/*.test.d.ts", "!dist-types/**/*.spec.d.ts", "!dist-cjs/**/*.test.cjs", "!dist-cjs/**/*.spec.cjs", "!dist-mjs/**/*.test.mjs", "!dist-mjs/**/*.spec.mjs", "SECURITY.md"], scripts: { "build:dist-cjs": 'rimraf dist-cjs && npx builder --type=commonjs --sourceMap --entryPoint=index.ts --outDir=dist-cjs --outFile=index.cjs && echo "module.exports = module.exports.default;" >> dist-cjs/index.cjs && node dist-cjs/index.cjs', "build:dist-mjs": "rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs", "build:dist-types": "rimraf dist-types && npx builder --type=types --outDir=dist-types", "ci:compile": "tsc --noEmit", "ci:coverage": 'NODE_OPTIONS="--disable-warning ExperimentalWarning --experimental-vm-modules" jest --coverage=true', "ci:lint": "npm run lint", "ci:style": "npm run prettier", "ci:test": 'NODE_OPTIONS="--disable-warning ExperimentalWarning --experimental-vm-modules" jest --coverage=false', lint: "eslint --max-warnings 0 --ignore-path .gitignore .", "lint:fix": "eslint --ignore-path .gitignore . --fix", prepublishOnly: "npm run build:dist-types && npm run build:dist-cjs && npm run build:dist-mjs", prettier: "prettier --ignore-path .gitignore --list-different .", "prettier:fix": "prettier --ignore-path .gitignore --write .", test: "npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style" }, prettier: "@checkdigit/prettier-config", jest: { preset: "@checkdigit/jest-config" }, devDependencies: { "@checkdigit/jest-config": "^6.0.2", "@checkdigit/prettier-config": "^5.5.0", "@checkdigit/typescript-config": "6.0.0", "@types/eslint": "^8.56.10", "@typescript-eslint/eslint-plugin": "^7.16.0", "@typescript-eslint/parser": "^7.16.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-eslint-plugin": "^6.2.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-no-secrets": "^1.0.2", "eslint-plugin-node": "^11.1.0", "eslint-plugin-sonarjs": "0.24.0" }, peerDependencies: { eslint: ">=8 <9" }, engines: { node: ">=20.13" } };
|
|
29
29
|
|
|
30
30
|
// src/get-documentation-url.ts
|
|
31
|
-
function getDocumentationUrl(
|
|
32
|
-
return `${package_default.repository.url}/blob/v${package_default.version}/docs/rules/${
|
|
31
|
+
function getDocumentationUrl(ruleId3) {
|
|
32
|
+
return `${package_default.repository.url}/blob/v${package_default.version}/docs/rules/${ruleId3}.md`;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
// src/invalid-json-stringify.ts
|
|
@@ -98,6 +98,66 @@ var invalid_json_stringify_default = {
|
|
|
98
98
|
}
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
+
// src/no-promise-instance-method.ts
|
|
102
|
+
var ruleId2 = "no-promise-instance-method";
|
|
103
|
+
var NO_PROMISE_INSTANCE_METHOD_THEN = "NO_PROMISE_INSTANCE_METHOD_THEN";
|
|
104
|
+
var NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY = "NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY";
|
|
105
|
+
function isPromise(context, node) {
|
|
106
|
+
if (node.type === "NewExpression" && node.callee.type === "Identifier" && node.callee.name === "Promise") {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
if (node.type === "MemberExpression" && node.object.type === "Identifier" && node.object.name === "Promise") {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
if (node.type === "CallExpression") {
|
|
113
|
+
return isPromise(context, node.callee);
|
|
114
|
+
}
|
|
115
|
+
if (node.type === "Identifier") {
|
|
116
|
+
const variableDeclaration = context.getScope().variables.find((variable) => variable.name === node.name);
|
|
117
|
+
if (variableDeclaration) {
|
|
118
|
+
return variableDeclaration.defs.some((variableDefinition) => {
|
|
119
|
+
if (variableDefinition.type === "Variable") {
|
|
120
|
+
const variableInitialization = variableDefinition.node.init;
|
|
121
|
+
if (!variableInitialization) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
return variableInitialization.type === "NewExpression" && variableInitialization.callee.type === "Identifier" && variableInitialization.callee.name === "Promise" || variableInitialization.type === "CallExpression" && isPromise(context, variableInitialization.callee) || variableInitialization.type === "AwaitExpression" && isPromise(context, variableInitialization.argument);
|
|
125
|
+
}
|
|
126
|
+
if (variableDefinition.type === "FunctionName" && variableDefinition.node.type === "FunctionDeclaration") {
|
|
127
|
+
return variableDefinition.node.async;
|
|
128
|
+
}
|
|
129
|
+
return false;
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
var no_promise_instance_method_default = {
|
|
136
|
+
meta: {
|
|
137
|
+
type: "suggestion",
|
|
138
|
+
docs: {
|
|
139
|
+
description: 'To be consistent of handling Promises, this rule suggest replacing the usage of methods like "then"/"catch"/"finally" of a Promise instance with "await" or regular try/catch/finally block.',
|
|
140
|
+
url: getDocumentationUrl(ruleId2)
|
|
141
|
+
},
|
|
142
|
+
messages: {
|
|
143
|
+
[NO_PROMISE_INSTANCE_METHOD_THEN]: `To be consistent, please replace "then" method of a Promise instance with "await"`,
|
|
144
|
+
[NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY]: `To be consistent, please replace "catch"/"finally" methods of a Promise instance with regular try/catch/finally block`
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
create(context) {
|
|
148
|
+
return {
|
|
149
|
+
MemberExpression(node) {
|
|
150
|
+
if (node.property.type === "Identifier" && ["then", "catch", "finally"].includes(node.property.name) && isPromise(context, node.object)) {
|
|
151
|
+
context.report({
|
|
152
|
+
node,
|
|
153
|
+
messageId: node.property.name === "then" ? NO_PROMISE_INSTANCE_METHOD_THEN : NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
|
|
101
161
|
// src/file-path-comment.ts
|
|
102
162
|
var file_path_comment_default = {
|
|
103
163
|
meta: {
|
|
@@ -301,60 +361,6 @@ var no_card_numbers_default = {
|
|
|
301
361
|
}
|
|
302
362
|
};
|
|
303
363
|
|
|
304
|
-
// src/no-side-effects.ts
|
|
305
|
-
function isAwaitExpression(statement) {
|
|
306
|
-
return statement.type === "ExpressionStatement" && statement.expression.type === "AwaitExpression";
|
|
307
|
-
}
|
|
308
|
-
function isCallExpressionCalleeMemberExpression(statement, excludedIdentifiers) {
|
|
309
|
-
return statement.type === "ExpressionStatement" && statement.expression.type === "CallExpression" && statement.expression.callee.type === "MemberExpression" && statement.expression.callee.object.type === "Identifier" && !excludedIdentifiers.includes(statement.expression.callee.object.name);
|
|
310
|
-
}
|
|
311
|
-
function isVariableDeclarationAwaitExpression(node) {
|
|
312
|
-
return node.type === "VariableDeclaration" && node.declarations.length > 0 && node.declarations[0]?.id !== void 0 && node.declarations[0].id.type === "Identifier" && node.declarations[0].init !== void 0 && node.declarations[0].init !== null && node.declarations[0].init.type === "AwaitExpression";
|
|
313
|
-
}
|
|
314
|
-
function isVariableDeclarationIdentifier(node, excludedIdentifiers) {
|
|
315
|
-
return node.type === "VariableDeclaration" && node.declarations.length > 0 && node.declarations[0]?.id !== void 0 && node.declarations[0].id.type === "Identifier" && node.declarations[0].init !== void 0 && node.declarations[0].init !== null && node.declarations[0].init.type === "CallExpression" && node.declarations[0].init.callee.type === "Identifier" && !excludedIdentifiers.includes(node.declarations[0].init.callee.name);
|
|
316
|
-
}
|
|
317
|
-
function isVariableDeclarationMemberExpression(node) {
|
|
318
|
-
return node.type === "VariableDeclaration" && node.declarations.length > 0 && node.declarations[0]?.id !== void 0 && node.declarations[0].id.type === "Identifier" && node.declarations[0].init !== void 0 && node.declarations[0].init !== null && node.declarations[0].init.type === "CallExpression" && node.declarations[0].init.callee.type === "MemberExpression" && (node.declarations[0].init.callee.object.type === "NewExpression" && node.declarations[0].init.callee.object.callee.type === "Identifier" || node.declarations[0].init.callee.object.type === "Identifier");
|
|
319
|
-
}
|
|
320
|
-
var no_side_effects_default = {
|
|
321
|
-
meta: {
|
|
322
|
-
type: "problem",
|
|
323
|
-
docs: {
|
|
324
|
-
description: "Ensure no side effects can occur at the module-level",
|
|
325
|
-
url: "https://github.com/checkdigit/eslint-plugin"
|
|
326
|
-
},
|
|
327
|
-
schema: [
|
|
328
|
-
{
|
|
329
|
-
type: "object",
|
|
330
|
-
properties: {
|
|
331
|
-
excludedIdentifiers: {
|
|
332
|
-
type: "array",
|
|
333
|
-
items: { type: "string" }
|
|
334
|
-
}
|
|
335
|
-
},
|
|
336
|
-
additionalProperties: false
|
|
337
|
-
}
|
|
338
|
-
]
|
|
339
|
-
},
|
|
340
|
-
create(context) {
|
|
341
|
-
const options = context.options[0] ?? {};
|
|
342
|
-
const excludedIdentifiers = options.excludedIdentifiers.length > 0 ? options.excludedIdentifiers : [];
|
|
343
|
-
return {
|
|
344
|
-
Program(node) {
|
|
345
|
-
node.body.forEach((statement) => {
|
|
346
|
-
if (isAwaitExpression(statement) || isCallExpressionCalleeMemberExpression(statement, excludedIdentifiers) || isVariableDeclarationAwaitExpression(statement) || isVariableDeclarationIdentifier(statement, excludedIdentifiers) || isVariableDeclarationMemberExpression(statement)) {
|
|
347
|
-
context.report({
|
|
348
|
-
node: statement,
|
|
349
|
-
message: "No side effects can occur at the module-level"
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
});
|
|
353
|
-
}
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
|
-
};
|
|
357
|
-
|
|
358
364
|
// src/no-test-import.ts
|
|
359
365
|
var DEFAULT_OPTIONS2 = { testFilePattern: "\\.(test|spec)(\\.\\w+)?$" };
|
|
360
366
|
var NO_TEST_IMPORT = "NO_TEST_IMPORT";
|
|
@@ -823,11 +829,11 @@ var src_default = {
|
|
|
823
829
|
"require-strict-assert": require_strict_assert_default,
|
|
824
830
|
"no-test-import": no_test_import_default,
|
|
825
831
|
"no-wallaby-comment": no_wallaby_comment_default,
|
|
826
|
-
"no-side-effects": no_side_effects_default,
|
|
827
832
|
"regular-expression-comment": regular_expression_comment_default,
|
|
828
833
|
"require-assert-predicate-rejects-throws": require_assert_predicate_rejects_throws_default,
|
|
829
834
|
"object-literal-response": object_literal_response_default,
|
|
830
|
-
[ruleId]: invalid_json_stringify_default
|
|
835
|
+
[ruleId]: invalid_json_stringify_default,
|
|
836
|
+
[ruleId2]: no_promise_instance_method_default
|
|
831
837
|
},
|
|
832
838
|
configs: {
|
|
833
839
|
all: {
|
|
@@ -837,12 +843,12 @@ var src_default = {
|
|
|
837
843
|
"@checkdigit/no-uuid": "error",
|
|
838
844
|
"@checkdigit/require-strict-assert": "error",
|
|
839
845
|
"@checkdigit/no-wallaby-comment": "error",
|
|
840
|
-
"@checkdigit/no-side-effects": ["error", { excludedIdentifiers: ["assert", "debug", "log", "promisify"] }],
|
|
841
846
|
"@checkdigit/regular-expression-comment": "error",
|
|
842
847
|
"@checkdigit/require-assert-predicate-rejects-throws": "error",
|
|
843
848
|
"@checkdigit/object-literal-response": "error",
|
|
844
849
|
"@checkdigit/no-test-import": "error",
|
|
845
|
-
[`@checkdigit/${ruleId}`]: "error"
|
|
850
|
+
[`@checkdigit/${ruleId}`]: "error",
|
|
851
|
+
[`@checkdigit/${ruleId2}`]: "error"
|
|
846
852
|
}
|
|
847
853
|
},
|
|
848
854
|
recommended: {
|
|
@@ -852,15 +858,15 @@ var src_default = {
|
|
|
852
858
|
"@checkdigit/no-uuid": "error",
|
|
853
859
|
"@checkdigit/require-strict-assert": "error",
|
|
854
860
|
"@checkdigit/no-wallaby-comment": "off",
|
|
855
|
-
"@checkdigit/no-side-effects": "error",
|
|
856
861
|
"@checkdigit/regular-expression-comment": "error",
|
|
857
862
|
"@checkdigit/require-assert-predicate-rejects-throws": "error",
|
|
858
863
|
"@checkdigit/object-literal-response": "error",
|
|
859
864
|
"@checkdigit/no-test-import": "error",
|
|
860
|
-
[`@checkdigit/${ruleId}`]: "error"
|
|
865
|
+
[`@checkdigit/${ruleId}`]: "error",
|
|
866
|
+
[`@checkdigit/${ruleId2}`]: "error"
|
|
861
867
|
}
|
|
862
868
|
}
|
|
863
869
|
}
|
|
864
870
|
};
|
|
865
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3BhY2thZ2UuanNvbiIsICIuLi9zcmMvZ2V0LWRvY3VtZW50YXRpb24tdXJsLnRzIiwgIi4uL3NyYy9pbnZhbGlkLWpzb24tc3RyaW5naWZ5LnRzIiwgIi4uL3NyYy9maWxlLXBhdGgtY29tbWVudC50cyIsICIuLi9zcmMvbm8tY2FyZC1udW1iZXJzLnRzIiwgIi4uL3NyYy9uby1zaWRlLWVmZmVjdHMudHMiLCAiLi4vc3JjL25vLXRlc3QtaW1wb3J0LnRzIiwgIi4uL3NyYy9uby11dWlkLnRzIiwgIi4uL3NyYy9uby13YWxsYWJ5LWNvbW1lbnQudHMiLCAiLi4vc3JjL29iamVjdC1saXRlcmFsLXJlc3BvbnNlLnRzIiwgIi4uL3NyYy9yZWd1bGFyLWV4cHJlc3Npb24tY29tbWVudC50cyIsICIuLi9zcmMvcmVxdWlyZS1hc3NlcnQtcHJlZGljYXRlLXJlamVjdHMtdGhyb3dzLnRzIiwgIi4uL3NyYy9yZXF1aXJlLXN0cmljdC1hc3NlcnQudHMiXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBLHdCQUFDLE1BQU8sNkJBQTRCLFNBQVUsb0JBQW1CLGFBQWMsOEJBQTZCLFVBQVcsQ0FBQyxVQUFTLGNBQWMsR0FBRSxVQUFXLHNEQUFxRCxNQUFPLEVBQUMsS0FBTSxxREFBb0QsR0FBRSxZQUFhLEVBQUMsTUFBTyxPQUFNLEtBQU0sOENBQTZDLEdBQUUsU0FBVSxPQUFNLFFBQVMsb0JBQW1CLGFBQWMsT0FBTSxNQUFPLFVBQVMsU0FBVSxFQUFDLEtBQUksRUFBQyxPQUFRLDJCQUEwQixTQUFVLHdCQUF1QixRQUFTLHdCQUF1QixTQUFVLHVCQUFzQixFQUFDLEdBQUUsT0FBUSxDQUFDLE9BQU0sY0FBYSxZQUFXLFlBQVcscUJBQW9CLHFCQUFvQiw4QkFBNkIsOEJBQTZCLDJCQUEwQiwyQkFBMEIsMkJBQTBCLDJCQUEwQixhQUFhLEdB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QUFDLENBQUM7QUFDekYsc0NBQXdCLEdBQUcsT0FBTyxPQUFPLElBQUksSUFBSSxpQkFBaUI7QUFBQSxZQUNwRTtBQUNBLG9CQUFRLE9BQU87QUFBQSxjQUNiO0FBQUEsY0FDQSxTQUFTO0FBQUEsY0FDVCxLQUFLLENBQUMsVUFBVSxNQUFNLFlBQVksUUFBUSxxQkFBcUI7QUFBQSxZQUNqRSxDQUFDO0FBQUEsVUFDSDtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjs7O0FiMUVBLElBQU8sY0FBUTtBQUFBLEVBQ2IsT0FBTztBQUFBLElBQ0wscUJBQXFCO0FBQUEsSUFDckIsbUJBQW1CO0FBQUEsSUFDbkIsV0FBVztBQUFBLElBQ1gseUJBQXlCO0FBQUEsSUFDekIsa0JBQWtCO0FBQUEsSUFDbEIsc0JBQXNCO0FBQUEsSUFDdEIsbUJBQW1CO0FBQUEsSUFDbkIsOEJBQThCO0FBQUEsSUFDOUIsMkNBQTJDO0FBQUEsSUFDM0MsMkJBQTJCO0FBQUEsSUFDM0IsQ0FBQyxNQUEwQixHQUFHO0FBQUEsRUFDaEM7QUFBQSxFQUNBLFNBQVM7QUFBQSxJQUNQLEtBQUs7QUFBQSxNQUNILE9BQU87QUFBQSxRQUNMLCtCQUErQjtBQUFBLFFBQy9CLGlDQUFpQztBQUFBLFFBQ2pDLHVCQUF1QjtBQUFBLFFBQ3ZCLHFDQUFxQztBQUFBLFFBQ3JDLGtDQUFrQztBQUFBLFFBQ2xDLCtCQUErQixDQUFDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxVQUFVLFNBQVMsT0FBTyxXQUFXLEVBQUUsQ0FBQztBQUFBLFFBQ3pHLDBDQUEwQztBQUFBLFFBQzFDLHVEQUF1RDtBQUFBLFFBQ3ZELHVDQUF1QztBQUFBLFFBQ3ZDLDhCQUE4QjtBQUFBLFFBQzlCLENBQUMsZUFBZSxNQUEwQixFQUFFLEdBQUc7QUFBQSxNQUNqRDtBQUFBLElBQ0Y7QUFBQSxJQUNBLGFBQWE7QUFBQSxNQUNYLE9BQU87QUFBQSxRQUNMLCtCQUErQjtBQUFBLFFBQy9CLGlDQUFpQztBQUFBLFFBQ2pDLHVCQUF1QjtBQUFBLFFBQ3ZCLHFDQUFxQztBQUFBLFFBQ3JDLGtDQUFrQztBQUFBLFFBQ2xDLCtCQUErQjtBQUFBLFFBQy9CLDBDQUEwQztBQUFBLFFBQzFDLHVEQUF1RDtBQUFBLFFBQ3ZELHVDQUF1QztBQUFBLFFBQ3ZDLDhCQUE4QjtBQUFBLFFBQzlCLENBQUMsZUFBZSxNQUEwQixFQUFFLEdBQUc7QUFBQSxNQUNqRDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbInJ1bGVJZCIsICJERUZBVUxUX09QVElPTlMiXQp9Cg==
|
|
871
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3BhY2thZ2UuanNvbiIsICIuLi9zcmMvZ2V0LWRvY3VtZW50YXRpb24tdXJsLnRzIiwgIi4uL3NyYy9pbnZhbGlkLWpzb24tc3RyaW5naWZ5LnRzIiwgIi4uL3NyYy9uby1wcm9taXNlLWluc3RhbmNlLW1ldGhvZC50cyIsICIuLi9zcmMvZmlsZS1wYXRoLWNvbW1lbnQudHMiLCAiLi4vc3JjL25vLWNhcmQtbnVtYmVycy50cyIsICIuLi9zcmMvbm8tdGVzdC1pbXBvcnQudHMiLCAiLi4vc3JjL25vLXV1aWQudHMiLCAiLi4vc3JjL25vLXdhbGxhYnktY29tbWVudC50cyIsICIuLi9zcmMvb2JqZWN0LWxpdGVyYWwtcmVzcG9uc2UudHMiLCAiLi4vc3JjL3JlZ3VsYXItZXhwcmVzc2lvbi1jb21tZW50LnRzIiwgIi4uL3NyYy9yZXF1aXJlLWFzc2VydC1wcmVkaWNhdGUtcmVqZWN0cy10aHJvd3MudHMiLCAiLi4vc3JjL3JlcXVpcmUtc3RyaWN0LWFzc2VydC50cyJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDQUEsd0JBQUMsTUFBTyw2QkFBNEIsU0FBVSxvQkFBbUIsYUFBYyw4QkFBNkIsVUFBVyxDQUFDLFVBQVMsY0FBYyxHQUFFLFVBQVcsc0RBQXFELE1BQU8sRUFBQyxLQUFNLHFEQUFvRCxHQUFFLFlBQWEsRUFBQyxNQUFPLE9BQU0sS0FBTSw4Q0FBNkMsR0FBRSxTQUFVLE9BQU0sUUFBUyxvQkFBbUIsYUFBYyxPQUFNLE1BQU8sVUFBUyxTQUFVLEVBQUMsS0FBSSxFQUFDLE9BQVEsMkJBQTBCLFNBQVUsd0JBQXVCLFFBQVMsd0JBQXVCLFNBQVUsdUJBQXNCLEVBQUMsR0FBRSxPQUFRLENBQUMsT0FBTSxjQUFhLFlBQVcsWUFBVyxxQkFBb0IscUJBQW9CLDhCQUE2Qiw4QkFBNkIsMkJBQTBCLDJCQUEwQiwyQkFBMEIsMkJB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O0FBQUEsUUFDakMsdUJBQXVCO0FBQUEsUUFDdkIscUNBQXFDO0FBQUEsUUFDckMsa0NBQWtDO0FBQUEsUUFDbEMsMENBQTBDO0FBQUEsUUFDMUMsdURBQXVEO0FBQUEsUUFDdkQsdUNBQXVDO0FBQUEsUUFDdkMsOEJBQThCO0FBQUEsUUFDOUIsQ0FBQyxlQUFlLE1BQTBCLEVBQUUsR0FBRztBQUFBLFFBQy9DLENBQUMsZUFBZUEsT0FBNkIsRUFBRSxHQUFHO0FBQUEsTUFDcEQ7QUFBQSxJQUNGO0FBQUEsSUFDQSxhQUFhO0FBQUEsTUFDWCxPQUFPO0FBQUEsUUFDTCwrQkFBK0I7QUFBQSxRQUMvQixpQ0FBaUM7QUFBQSxRQUNqQyx1QkFBdUI7QUFBQSxRQUN2QixxQ0FBcUM7QUFBQSxRQUNyQyxrQ0FBa0M7QUFBQSxRQUNsQywwQ0FBMEM7QUFBQSxRQUMxQyx1REFBdUQ7QUFBQSxRQUN2RCx1Q0FBdUM7QUFBQSxRQUN2Qyw4QkFBOEI7QUFBQSxRQUM5QixDQUFDLGVBQWUsTUFBMEIsRUFBRSxHQUFHO0FBQUEsUUFDL0MsQ0FBQyxlQUFlQSxPQUE2QixFQUFFLEdBQUc7QUFBQSxNQUNwRDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbInJ1bGVJZCIsICJydWxlSWQiLCAiREVGQVVMVF9PUFRJT05TIiwgInJ1bGVJZCJdCn0K
|
|
866
872
|
module.exports = module.exports.default;
|
package/dist-cjs/metafile.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"inputs": {
|
|
3
3
|
"package.json": {
|
|
4
|
-
"bytes":
|
|
4
|
+
"bytes": 2694,
|
|
5
5
|
"imports": [],
|
|
6
6
|
"format": "esm",
|
|
7
7
|
"with": {
|
|
@@ -33,6 +33,17 @@
|
|
|
33
33
|
],
|
|
34
34
|
"format": "esm"
|
|
35
35
|
},
|
|
36
|
+
"src/no-promise-instance-method.ts": {
|
|
37
|
+
"bytes": 3512,
|
|
38
|
+
"imports": [
|
|
39
|
+
{
|
|
40
|
+
"path": "src/get-documentation-url.ts",
|
|
41
|
+
"kind": "import-statement",
|
|
42
|
+
"original": "./get-documentation-url"
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"format": "esm"
|
|
46
|
+
},
|
|
36
47
|
"src/file-path-comment.ts": {
|
|
37
48
|
"bytes": 2234,
|
|
38
49
|
"imports": [],
|
|
@@ -43,11 +54,6 @@
|
|
|
43
54
|
"imports": [],
|
|
44
55
|
"format": "esm"
|
|
45
56
|
},
|
|
46
|
-
"src/no-side-effects.ts": {
|
|
47
|
-
"bytes": 4327,
|
|
48
|
-
"imports": [],
|
|
49
|
-
"format": "esm"
|
|
50
|
-
},
|
|
51
57
|
"src/no-test-import.ts": {
|
|
52
58
|
"bytes": 1874,
|
|
53
59
|
"imports": [],
|
|
@@ -84,13 +90,18 @@
|
|
|
84
90
|
"format": "esm"
|
|
85
91
|
},
|
|
86
92
|
"src/index.ts": {
|
|
87
|
-
"bytes":
|
|
93
|
+
"bytes": 2758,
|
|
88
94
|
"imports": [
|
|
89
95
|
{
|
|
90
96
|
"path": "src/invalid-json-stringify.ts",
|
|
91
97
|
"kind": "import-statement",
|
|
92
98
|
"original": "./invalid-json-stringify"
|
|
93
99
|
},
|
|
100
|
+
{
|
|
101
|
+
"path": "src/no-promise-instance-method.ts",
|
|
102
|
+
"kind": "import-statement",
|
|
103
|
+
"original": "./no-promise-instance-method"
|
|
104
|
+
},
|
|
94
105
|
{
|
|
95
106
|
"path": "src/file-path-comment.ts",
|
|
96
107
|
"kind": "import-statement",
|
|
@@ -101,11 +112,6 @@
|
|
|
101
112
|
"kind": "import-statement",
|
|
102
113
|
"original": "./no-card-numbers"
|
|
103
114
|
},
|
|
104
|
-
{
|
|
105
|
-
"path": "src/no-side-effects.ts",
|
|
106
|
-
"kind": "import-statement",
|
|
107
|
-
"original": "./no-side-effects"
|
|
108
|
-
},
|
|
109
115
|
{
|
|
110
116
|
"path": "src/no-test-import.ts",
|
|
111
117
|
"kind": "import-statement",
|
|
@@ -152,10 +158,10 @@
|
|
|
152
158
|
"entryPoint": "src/index.ts",
|
|
153
159
|
"inputs": {
|
|
154
160
|
"src/index.ts": {
|
|
155
|
-
"bytesInOutput":
|
|
161
|
+
"bytesInOutput": 2012
|
|
156
162
|
},
|
|
157
163
|
"package.json": {
|
|
158
|
-
"bytesInOutput":
|
|
164
|
+
"bytesInOutput": 2783
|
|
159
165
|
},
|
|
160
166
|
"src/get-documentation-url.ts": {
|
|
161
167
|
"bytesInOutput": 146
|
|
@@ -163,15 +169,15 @@
|
|
|
163
169
|
"src/invalid-json-stringify.ts": {
|
|
164
170
|
"bytesInOutput": 2471
|
|
165
171
|
},
|
|
172
|
+
"src/no-promise-instance-method.ts": {
|
|
173
|
+
"bytesInOutput": 2779
|
|
174
|
+
},
|
|
166
175
|
"src/file-path-comment.ts": {
|
|
167
176
|
"bytesInOutput": 1961
|
|
168
177
|
},
|
|
169
178
|
"src/no-card-numbers.ts": {
|
|
170
179
|
"bytesInOutput": 3356
|
|
171
180
|
},
|
|
172
|
-
"src/no-side-effects.ts": {
|
|
173
|
-
"bytesInOutput": 3198
|
|
174
|
-
},
|
|
175
181
|
"src/no-test-import.ts": {
|
|
176
182
|
"bytesInOutput": 1458
|
|
177
183
|
},
|
|
@@ -194,7 +200,7 @@
|
|
|
194
200
|
"bytesInOutput": 3362
|
|
195
201
|
}
|
|
196
202
|
},
|
|
197
|
-
"bytes":
|
|
203
|
+
"bytes": 59039
|
|
198
204
|
}
|
|
199
205
|
}
|
|
200
206
|
}
|
package/dist-mjs/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
2
|
import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from "./invalid-json-stringify.mjs";
|
|
3
|
+
import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from "./no-promise-instance-method.mjs";
|
|
3
4
|
import filePathComment from "./file-path-comment.mjs";
|
|
4
5
|
import noCardNumbers from "./no-card-numbers.mjs";
|
|
5
|
-
import noSideEffects from "./no-side-effects.mjs";
|
|
6
6
|
import noTestImport from "./no-test-import.mjs";
|
|
7
7
|
import noUuid from "./no-uuid.mjs";
|
|
8
8
|
import noWallabyComment from "./no-wallaby-comment.mjs";
|
|
@@ -18,11 +18,11 @@ var src_default = {
|
|
|
18
18
|
"require-strict-assert": requireStrictAssert,
|
|
19
19
|
"no-test-import": noTestImport,
|
|
20
20
|
"no-wallaby-comment": noWallabyComment,
|
|
21
|
-
"no-side-effects": noSideEffects,
|
|
22
21
|
"regular-expression-comment": regexComment,
|
|
23
22
|
"require-assert-predicate-rejects-throws": requireAssertPredicateRejectsThrows,
|
|
24
23
|
"object-literal-response": objectLiteralResponse,
|
|
25
|
-
[invalidJsonStringifyRuleId]: invalidJsonStringify
|
|
24
|
+
[invalidJsonStringifyRuleId]: invalidJsonStringify,
|
|
25
|
+
[noPromiseInstanceMethodRuleId]: noPromiseInstanceMethod
|
|
26
26
|
},
|
|
27
27
|
configs: {
|
|
28
28
|
all: {
|
|
@@ -32,12 +32,12 @@ var src_default = {
|
|
|
32
32
|
"@checkdigit/no-uuid": "error",
|
|
33
33
|
"@checkdigit/require-strict-assert": "error",
|
|
34
34
|
"@checkdigit/no-wallaby-comment": "error",
|
|
35
|
-
"@checkdigit/no-side-effects": ["error", { excludedIdentifiers: ["assert", "debug", "log", "promisify"] }],
|
|
36
35
|
"@checkdigit/regular-expression-comment": "error",
|
|
37
36
|
"@checkdigit/require-assert-predicate-rejects-throws": "error",
|
|
38
37
|
"@checkdigit/object-literal-response": "error",
|
|
39
38
|
"@checkdigit/no-test-import": "error",
|
|
40
|
-
[`@checkdigit/${invalidJsonStringifyRuleId}`]: "error"
|
|
39
|
+
[`@checkdigit/${invalidJsonStringifyRuleId}`]: "error",
|
|
40
|
+
[`@checkdigit/${noPromiseInstanceMethodRuleId}`]: "error"
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
recommended: {
|
|
@@ -47,12 +47,12 @@ var src_default = {
|
|
|
47
47
|
"@checkdigit/no-uuid": "error",
|
|
48
48
|
"@checkdigit/require-strict-assert": "error",
|
|
49
49
|
"@checkdigit/no-wallaby-comment": "off",
|
|
50
|
-
"@checkdigit/no-side-effects": "error",
|
|
51
50
|
"@checkdigit/regular-expression-comment": "error",
|
|
52
51
|
"@checkdigit/require-assert-predicate-rejects-throws": "error",
|
|
53
52
|
"@checkdigit/object-literal-response": "error",
|
|
54
53
|
"@checkdigit/no-test-import": "error",
|
|
55
|
-
[`@checkdigit/${invalidJsonStringifyRuleId}`]: "error"
|
|
54
|
+
[`@checkdigit/${invalidJsonStringifyRuleId}`]: "error",
|
|
55
|
+
[`@checkdigit/${noPromiseInstanceMethodRuleId}`]: "error"
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -60,4 +60,4 @@ var src_default = {
|
|
|
60
60
|
export {
|
|
61
61
|
src_default as default
|
|
62
62
|
};
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLE9BQU8sd0JBQXdCLFVBQVUsa0NBQWtDO0FBQzNFLE9BQU8sMkJBQTJCLFVBQVUscUNBQXFDO0FBQ2pGLE9BQU8scUJBQXFCO0FBQzVCLE9BQU8sbUJBQW1CO0FBQzFCLE9BQU8sa0JBQWtCO0FBQ3pCLE9BQU8sWUFBWTtBQUNuQixPQUFPLHNCQUFzQjtBQUM3QixPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLGtCQUFrQjtBQUN6QixPQUFPLHlDQUF5QztBQUNoRCxPQUFPLHlCQUF5QjtBQUVoQyxJQUFPLGNBQVE7QUFBQSxFQUNiLE9BQU87QUFBQSxJQUNMLHFCQUFxQjtBQUFBLElBQ3JCLG1CQUFtQjtBQUFBLElBQ25CLFdBQVc7QUFBQSxJQUNYLHlCQUF5QjtBQUFBLElBQ3pCLGtCQUFrQjtBQUFBLElBQ2xCLHNCQUFzQjtBQUFBLElBQ3RCLDhCQUE4QjtBQUFBLElBQzlCLDJDQUEyQztBQUFBLElBQzNDLDJCQUEyQjtBQUFBLElBQzNCLENBQUMsMEJBQTBCLEdBQUc7QUFBQSxJQUM5QixDQUFDLDZCQUE2QixHQUFHO0FBQUEsRUFDbkM7QUFBQSxFQUNBLFNBQVM7QUFBQSxJQUNQLEtBQUs7QUFBQSxNQUNILE9BQU87QUFBQSxRQUNMLCtCQUErQjtBQUFBLFFBQy9CLGlDQUFpQztBQUFBLFFBQ2pDLHVCQUF1QjtBQUFBLFFBQ3ZCLHFDQUFxQztBQUFBLFFBQ3JDLGtDQUFrQztBQUFBLFFBQ2xDLDBDQUEwQztBQUFBLFFBQzFDLHVEQUF1RDtBQUFBLFFBQ3ZELHVDQUF1QztBQUFBLFFBQ3ZDLDhCQUE4QjtBQUFBLFFBQzlCLENBQUMsZUFBZSwwQkFBMEIsRUFBRSxHQUFHO0FBQUEsUUFDL0MsQ0FBQyxlQUFlLDZCQUE2QixFQUFFLEdBQUc7QUFBQSxNQUNwRDtBQUFBLElBQ0Y7QUFBQSxJQUNBLGFBQWE7QUFBQSxNQUNYLE9BQU87QUFBQSxRQUNMLCtCQUErQjtBQUFBLFFBQy9CLGlDQUFpQztBQUFBLFFBQ2pDLHVCQUF1QjtBQUFBLFFBQ3ZCLHFDQUFxQztBQUFBLFFBQ3JDLGtDQUFrQztBQUFBLFFBQ2xDLDBDQUEwQztBQUFBLFFBQzFDLHVEQUF1RDtBQUFBLFFBQ3ZELHVDQUF1QztBQUFBLFFBQ3ZDLDhCQUE4QjtBQUFBLFFBQzlCLENBQUMsZUFBZSwwQkFBMEIsRUFBRSxHQUFHO0FBQUEsUUFDL0MsQ0FBQyxlQUFlLDZCQUE2QixFQUFFLEdBQUc7QUFBQSxNQUNwRDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// src/no-promise-instance-method.ts
|
|
2
|
+
import getDocumentationUrl from "./get-documentation-url.mjs";
|
|
3
|
+
var ruleId = "no-promise-instance-method";
|
|
4
|
+
var NO_PROMISE_INSTANCE_METHOD_THEN = "NO_PROMISE_INSTANCE_METHOD_THEN";
|
|
5
|
+
var NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY = "NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY";
|
|
6
|
+
function isPromise(context, node) {
|
|
7
|
+
if (node.type === "NewExpression" && node.callee.type === "Identifier" && node.callee.name === "Promise") {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
if (node.type === "MemberExpression" && node.object.type === "Identifier" && node.object.name === "Promise") {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
if (node.type === "CallExpression") {
|
|
14
|
+
return isPromise(context, node.callee);
|
|
15
|
+
}
|
|
16
|
+
if (node.type === "Identifier") {
|
|
17
|
+
const variableDeclaration = context.getScope().variables.find((variable) => variable.name === node.name);
|
|
18
|
+
if (variableDeclaration) {
|
|
19
|
+
return variableDeclaration.defs.some((variableDefinition) => {
|
|
20
|
+
if (variableDefinition.type === "Variable") {
|
|
21
|
+
const variableInitialization = variableDefinition.node.init;
|
|
22
|
+
if (!variableInitialization) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return variableInitialization.type === "NewExpression" && variableInitialization.callee.type === "Identifier" && variableInitialization.callee.name === "Promise" || variableInitialization.type === "CallExpression" && isPromise(context, variableInitialization.callee) || variableInitialization.type === "AwaitExpression" && isPromise(context, variableInitialization.argument);
|
|
26
|
+
}
|
|
27
|
+
if (variableDefinition.type === "FunctionName" && variableDefinition.node.type === "FunctionDeclaration") {
|
|
28
|
+
return variableDefinition.node.async;
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
var no_promise_instance_method_default = {
|
|
37
|
+
meta: {
|
|
38
|
+
type: "suggestion",
|
|
39
|
+
docs: {
|
|
40
|
+
description: 'To be consistent of handling Promises, this rule suggest replacing the usage of methods like "then"/"catch"/"finally" of a Promise instance with "await" or regular try/catch/finally block.',
|
|
41
|
+
url: getDocumentationUrl(ruleId)
|
|
42
|
+
},
|
|
43
|
+
messages: {
|
|
44
|
+
[NO_PROMISE_INSTANCE_METHOD_THEN]: `To be consistent, please replace "then" method of a Promise instance with "await"`,
|
|
45
|
+
[NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY]: `To be consistent, please replace "catch"/"finally" methods of a Promise instance with regular try/catch/finally block`
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
create(context) {
|
|
49
|
+
return {
|
|
50
|
+
MemberExpression(node) {
|
|
51
|
+
if (node.property.type === "Identifier" && ["then", "catch", "finally"].includes(node.property.name) && isPromise(context, node.object)) {
|
|
52
|
+
context.report({
|
|
53
|
+
node,
|
|
54
|
+
messageId: node.property.name === "then" ? NO_PROMISE_INSTANCE_METHOD_THEN : NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
export {
|
|
62
|
+
NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY,
|
|
63
|
+
NO_PROMISE_INSTANCE_METHOD_THEN,
|
|
64
|
+
no_promise_instance_method_default as default,
|
|
65
|
+
ruleId
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLXByb21pc2UtaW5zdGFuY2UtbWV0aG9kLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQUlBLE9BQU8seUJBQXlCO0FBUXpCLElBQU0sU0FBUztBQUNmLElBQU0sa0NBQWtDO0FBQ3hDLElBQU0sMkNBQTJDO0FBRXhELFNBQVMsVUFBVSxTQUEyQixNQUFxQjtBQUVqRSxNQUFJLEtBQUssU0FBUyxtQkFBbUIsS0FBSyxPQUFPLFNBQVMsZ0JBQWdCLEtBQUssT0FBTyxTQUFTLFdBQVc7QUFDeEcsV0FBTztBQUFBLEVBQ1Q7QUFHQSxNQUFJLEtBQUssU0FBUyxzQkFBc0IsS0FBSyxPQUFPLFNBQVMsZ0JBQWdCLEtBQUssT0FBTyxTQUFTLFdBQVc7QUFDM0csV0FBTztBQUFBLEVBQ1Q7QUFHQSxNQUFJLEtBQUssU0FBUyxrQkFBa0I7QUFDbEMsV0FBTyxVQUFVLFNBQVMsS0FBSyxNQUFNO0FBQUEsRUFDdkM7QUFHQSxNQUFJLEtBQUssU0FBUyxjQUFjO0FBQzlCLFVBQU0sc0JBQXNCLFFBQVEsU0FBUyxFQUFFLFVBQVUsS0FBSyxDQUFDLGFBQWEsU0FBUyxTQUFTLEtBQUssSUFBSTtBQUN2RyxRQUFJLHFCQUFxQjtBQUN2QixhQUFPLG9CQUFvQixLQUFLLEtBQUssQ0FBQyx1QkFBdUI7QUFDM0QsWUFBSSxtQkFBbUIsU0FBUyxZQUFZO0FBQzFDLGdCQUFNLHlCQUF5QixtQkFBbUIsS0FBSztBQUN2RCxjQUFJLENBQUMsd0JBQXdCO0FBQzNCLG1CQUFPO0FBQUEsVUFDVDtBQUNBLGlCQUNHLHVCQUF1QixTQUFTLG1CQUMvQix1QkFBdUIsT0FBTyxTQUFTLGdCQUN2Qyx1QkFBdUIsT0FBTyxTQUFTLGFBQ3hDLHVCQUF1QixTQUFTLG9CQUFvQixVQUFVLFNBQVMsdUJBQXVCLE1BQU0sS0FDcEcsdUJBQXVCLFNBQVMscUJBQXFCLFVBQVUsU0FBUyx1QkFBdUIsUUFBUTtBQUFBLFFBRTVHO0FBRUEsWUFBSSxtQkFBbUIsU0FBUyxrQkFBa0IsbUJBQW1CLEtBQUssU0FBUyx1QkFBdUI7QUFDeEcsaUJBQU8sbUJBQW1CLEtBQUs7QUFBQSxRQUNqQztBQUVBLGVBQU87QUFBQSxNQUNULENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQUVBLElBQU8scUNBQVE7QUFBQSxFQUNiLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQ0U7QUFBQSxNQUNGLEtBQUssb0JBQW9CLE1BQU07QUFBQSxJQUNqQztBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsQ0FBQywrQkFBK0IsR0FBRztBQUFBLE1BQ25DLENBQUMsd0NBQXdDLEdBQUc7QUFBQSxJQUM5QztBQUFBLEVBQ0Y7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLGlCQUFpQixNQUFNO0FBQ3JCLFlBQ0UsS0FBSyxTQUFTLFNBQVMsZ0JBQ3ZCLENBQUMsUUFBUSxTQUFTLFNBQVMsRUFBRSxTQUFTLEtBQUssU0FBUyxJQUFJLEtBQ3hELFVBQVUsU0FBUyxLQUFLLE1BQU0sR0FDOUI7QUFDQSxrQkFBUSxPQUFPO0FBQUEsWUFDYjtBQUFBLFlBQ0EsV0FDRSxLQUFLLFNBQVMsU0FBUyxTQUNuQixrQ0FDQTtBQUFBLFVBQ1IsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist-types/index.d.ts
CHANGED
|
@@ -6,11 +6,11 @@ declare const _default: {
|
|
|
6
6
|
'require-strict-assert': import("eslint").Rule.RuleModule;
|
|
7
7
|
'no-test-import': import("eslint").Rule.RuleModule;
|
|
8
8
|
'no-wallaby-comment': import("eslint").Rule.RuleModule;
|
|
9
|
-
'no-side-effects': import("eslint").Rule.RuleModule;
|
|
10
9
|
'regular-expression-comment': import("eslint").Rule.RuleModule;
|
|
11
10
|
'require-assert-predicate-rejects-throws': import("eslint").Rule.RuleModule;
|
|
12
11
|
'object-literal-response': import("eslint").Rule.RuleModule;
|
|
13
12
|
"invalid-json-stringify": import("eslint").Rule.RuleModule;
|
|
13
|
+
"no-promise-instance-method": import("eslint").Rule.RuleModule;
|
|
14
14
|
};
|
|
15
15
|
configs: {
|
|
16
16
|
all: {
|
|
@@ -20,14 +20,12 @@ declare const _default: {
|
|
|
20
20
|
'@checkdigit/no-uuid': string;
|
|
21
21
|
'@checkdigit/require-strict-assert': string;
|
|
22
22
|
'@checkdigit/no-wallaby-comment': string;
|
|
23
|
-
'@checkdigit/no-side-effects': (string | {
|
|
24
|
-
excludedIdentifiers: string[];
|
|
25
|
-
})[];
|
|
26
23
|
'@checkdigit/regular-expression-comment': string;
|
|
27
24
|
'@checkdigit/require-assert-predicate-rejects-throws': string;
|
|
28
25
|
'@checkdigit/object-literal-response': string;
|
|
29
26
|
'@checkdigit/no-test-import': string;
|
|
30
27
|
"@checkdigit/invalid-json-stringify": string;
|
|
28
|
+
"@checkdigit/no-promise-instance-method": string;
|
|
31
29
|
};
|
|
32
30
|
};
|
|
33
31
|
recommended: {
|
|
@@ -37,12 +35,12 @@ declare const _default: {
|
|
|
37
35
|
'@checkdigit/no-uuid': string;
|
|
38
36
|
'@checkdigit/require-strict-assert': string;
|
|
39
37
|
'@checkdigit/no-wallaby-comment': string;
|
|
40
|
-
'@checkdigit/no-side-effects': string;
|
|
41
38
|
'@checkdigit/regular-expression-comment': string;
|
|
42
39
|
'@checkdigit/require-assert-predicate-rejects-throws': string;
|
|
43
40
|
'@checkdigit/object-literal-response': string;
|
|
44
41
|
'@checkdigit/no-test-import': string;
|
|
45
42
|
"@checkdigit/invalid-json-stringify": string;
|
|
43
|
+
"@checkdigit/no-promise-instance-method": string;
|
|
46
44
|
};
|
|
47
45
|
};
|
|
48
46
|
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Rule } from 'eslint';
|
|
2
|
+
export declare const ruleId = "no-promise-instance-method";
|
|
3
|
+
export declare const NO_PROMISE_INSTANCE_METHOD_THEN = "NO_PROMISE_INSTANCE_METHOD_THEN";
|
|
4
|
+
export declare const NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY = "NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY";
|
|
5
|
+
declare const _default: Rule.RuleModule;
|
|
6
|
+
export default _default;
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@checkdigit/eslint-plugin","version":"6.5.0-PR.
|
|
1
|
+
{"name":"@checkdigit/eslint-plugin","version":"6.5.0-PR.73-b5a9","description":"Check Digit eslint plugins","keywords":["eslint","eslintplugin"],"homepage":"https://github.com/checkdigit/eslint-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-plugin"},"license":"MIT","author":"Check Digit, LLC","sideEffects":false,"type":"module","exports":{".":{"types":"./dist-types/index.d.ts","require":"./dist-cjs/index.cjs","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-cjs","dist-mjs","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-cjs/**/*.test.cjs","!dist-cjs/**/*.spec.cjs","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-cjs":"rimraf dist-cjs && npx builder --type=commonjs --sourceMap --entryPoint=index.ts --outDir=dist-cjs --outFile=index.cjs && echo \"module.exports = module.exports.default;\" >> dist-cjs/index.cjs && node dist-cjs/index.cjs","build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","ci:compile":"tsc --noEmit","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","lint":"eslint --max-warnings 0 --ignore-path .gitignore .","lint:fix":"eslint --ignore-path .gitignore . --fix","prepublishOnly":"npm run build:dist-types && npm run build:dist-cjs && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"},"prettier":"@checkdigit/prettier-config","jest":{"preset":"@checkdigit/jest-config"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.0","@checkdigit/typescript-config":"6.0.0","@types/eslint":"^8.56.10","@typescript-eslint/eslint-plugin":"^7.16.0","@typescript-eslint/parser":"^7.16.0","eslint-config-prettier":"^9.1.0","eslint-plugin-eslint-plugin":"^6.2.0","eslint-plugin-import":"^2.29.1","eslint-plugin-no-only-tests":"^3.1.0","eslint-plugin-no-secrets":"^1.0.2","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"0.24.0"},"peerDependencies":{"eslint":">=8 <9"},"engines":{"node":">=20.13"}}
|
package/src/index.ts
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from './invalid-json-stringify';
|
|
10
|
+
import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from './no-promise-instance-method';
|
|
10
11
|
import filePathComment from './file-path-comment';
|
|
11
12
|
import noCardNumbers from './no-card-numbers';
|
|
12
|
-
import noSideEffects from './no-side-effects';
|
|
13
13
|
import noTestImport from './no-test-import';
|
|
14
14
|
import noUuid from './no-uuid';
|
|
15
15
|
import noWallabyComment from './no-wallaby-comment';
|
|
@@ -26,11 +26,11 @@ export default {
|
|
|
26
26
|
'require-strict-assert': requireStrictAssert,
|
|
27
27
|
'no-test-import': noTestImport,
|
|
28
28
|
'no-wallaby-comment': noWallabyComment,
|
|
29
|
-
'no-side-effects': noSideEffects,
|
|
30
29
|
'regular-expression-comment': regexComment,
|
|
31
30
|
'require-assert-predicate-rejects-throws': requireAssertPredicateRejectsThrows,
|
|
32
31
|
'object-literal-response': objectLiteralResponse,
|
|
33
32
|
[invalidJsonStringifyRuleId]: invalidJsonStringify,
|
|
33
|
+
[noPromiseInstanceMethodRuleId]: noPromiseInstanceMethod,
|
|
34
34
|
},
|
|
35
35
|
configs: {
|
|
36
36
|
all: {
|
|
@@ -40,12 +40,12 @@ export default {
|
|
|
40
40
|
'@checkdigit/no-uuid': 'error',
|
|
41
41
|
'@checkdigit/require-strict-assert': 'error',
|
|
42
42
|
'@checkdigit/no-wallaby-comment': 'error',
|
|
43
|
-
'@checkdigit/no-side-effects': ['error', { excludedIdentifiers: ['assert', 'debug', 'log', 'promisify'] }],
|
|
44
43
|
'@checkdigit/regular-expression-comment': 'error',
|
|
45
44
|
'@checkdigit/require-assert-predicate-rejects-throws': 'error',
|
|
46
45
|
'@checkdigit/object-literal-response': 'error',
|
|
47
46
|
'@checkdigit/no-test-import': 'error',
|
|
48
47
|
[`@checkdigit/${invalidJsonStringifyRuleId}`]: 'error',
|
|
48
|
+
[`@checkdigit/${noPromiseInstanceMethodRuleId}`]: 'error',
|
|
49
49
|
},
|
|
50
50
|
},
|
|
51
51
|
recommended: {
|
|
@@ -55,12 +55,12 @@ export default {
|
|
|
55
55
|
'@checkdigit/no-uuid': 'error',
|
|
56
56
|
'@checkdigit/require-strict-assert': 'error',
|
|
57
57
|
'@checkdigit/no-wallaby-comment': 'off',
|
|
58
|
-
'@checkdigit/no-side-effects': 'error',
|
|
59
58
|
'@checkdigit/regular-expression-comment': 'error',
|
|
60
59
|
'@checkdigit/require-assert-predicate-rejects-throws': 'error',
|
|
61
60
|
'@checkdigit/object-literal-response': 'error',
|
|
62
61
|
'@checkdigit/no-test-import': 'error',
|
|
63
62
|
[`@checkdigit/${invalidJsonStringifyRuleId}`]: 'error',
|
|
63
|
+
[`@checkdigit/${noPromiseInstanceMethodRuleId}`]: 'error',
|
|
64
64
|
},
|
|
65
65
|
},
|
|
66
66
|
},
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// no-promise-instance-method.ts
|
|
2
|
+
|
|
3
|
+
import type { Node } from 'estree';
|
|
4
|
+
import type { Rule } from 'eslint';
|
|
5
|
+
import getDocumentationUrl from './get-documentation-url';
|
|
6
|
+
|
|
7
|
+
/*
|
|
8
|
+
* Copyright (c) 2021-2024 Check Digit, LLC
|
|
9
|
+
*
|
|
10
|
+
* This code is licensed under the MIT license (see LICENSE.txt for details).
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
export const ruleId = 'no-promise-instance-method';
|
|
14
|
+
export const NO_PROMISE_INSTANCE_METHOD_THEN = 'NO_PROMISE_INSTANCE_METHOD_THEN';
|
|
15
|
+
export const NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY = 'NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY';
|
|
16
|
+
|
|
17
|
+
function isPromise(context: Rule.RuleContext, node: Node): boolean {
|
|
18
|
+
// new Promise(...)
|
|
19
|
+
if (node.type === 'NewExpression' && node.callee.type === 'Identifier' && node.callee.name === 'Promise') {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Promise.resolve(...), Promise.all(...), etc.
|
|
24
|
+
if (node.type === 'MemberExpression' && node.object.type === 'Identifier' && node.object.name === 'Promise') {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// recursively check for async function call
|
|
29
|
+
if (node.type === 'CallExpression') {
|
|
30
|
+
return isPromise(context, node.callee);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// recursively check for reference of Promise with the variable scope
|
|
34
|
+
if (node.type === 'Identifier') {
|
|
35
|
+
const variableDeclaration = context.getScope().variables.find((variable) => variable.name === node.name);
|
|
36
|
+
if (variableDeclaration) {
|
|
37
|
+
return variableDeclaration.defs.some((variableDefinition) => {
|
|
38
|
+
if (variableDefinition.type === 'Variable') {
|
|
39
|
+
const variableInitialization = variableDefinition.node.init;
|
|
40
|
+
if (!variableInitialization) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
return (
|
|
44
|
+
(variableInitialization.type === 'NewExpression' &&
|
|
45
|
+
variableInitialization.callee.type === 'Identifier' &&
|
|
46
|
+
variableInitialization.callee.name === 'Promise') ||
|
|
47
|
+
(variableInitialization.type === 'CallExpression' && isPromise(context, variableInitialization.callee)) ||
|
|
48
|
+
(variableInitialization.type === 'AwaitExpression' && isPromise(context, variableInitialization.argument))
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (variableDefinition.type === 'FunctionName' && variableDefinition.node.type === 'FunctionDeclaration') {
|
|
53
|
+
return variableDefinition.node.async;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return false;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export default {
|
|
65
|
+
meta: {
|
|
66
|
+
type: 'suggestion',
|
|
67
|
+
docs: {
|
|
68
|
+
description:
|
|
69
|
+
'To be consistent of handling Promises, this rule suggest replacing the usage of methods like "then"/"catch"/"finally" of a Promise instance with "await" or regular try/catch/finally block.',
|
|
70
|
+
url: getDocumentationUrl(ruleId),
|
|
71
|
+
},
|
|
72
|
+
messages: {
|
|
73
|
+
[NO_PROMISE_INSTANCE_METHOD_THEN]: `To be consistent, please replace "then" method of a Promise instance with "await"`,
|
|
74
|
+
[NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY]: `To be consistent, please replace "catch"/"finally" methods of a Promise instance with regular try/catch/finally block`,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
create(context) {
|
|
78
|
+
return {
|
|
79
|
+
MemberExpression(node) {
|
|
80
|
+
if (
|
|
81
|
+
node.property.type === 'Identifier' &&
|
|
82
|
+
['then', 'catch', 'finally'].includes(node.property.name) &&
|
|
83
|
+
isPromise(context, node.object)
|
|
84
|
+
) {
|
|
85
|
+
context.report({
|
|
86
|
+
node,
|
|
87
|
+
messageId:
|
|
88
|
+
node.property.name === 'then'
|
|
89
|
+
? NO_PROMISE_INSTANCE_METHOD_THEN
|
|
90
|
+
: NO_PROMISE_INSTANCE_METHOD_CATCH_FINALLY,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
},
|
|
96
|
+
} as Rule.RuleModule;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
// src/no-side-effects.ts
|
|
2
|
-
function isAwaitExpression(statement) {
|
|
3
|
-
return statement.type === "ExpressionStatement" && statement.expression.type === "AwaitExpression";
|
|
4
|
-
}
|
|
5
|
-
function isCallExpressionCalleeMemberExpression(statement, excludedIdentifiers) {
|
|
6
|
-
return statement.type === "ExpressionStatement" && statement.expression.type === "CallExpression" && statement.expression.callee.type === "MemberExpression" && statement.expression.callee.object.type === "Identifier" && !excludedIdentifiers.includes(statement.expression.callee.object.name);
|
|
7
|
-
}
|
|
8
|
-
function isVariableDeclarationAwaitExpression(node) {
|
|
9
|
-
return node.type === "VariableDeclaration" && node.declarations.length > 0 && node.declarations[0]?.id !== void 0 && node.declarations[0].id.type === "Identifier" && node.declarations[0].init !== void 0 && node.declarations[0].init !== null && node.declarations[0].init.type === "AwaitExpression";
|
|
10
|
-
}
|
|
11
|
-
function isVariableDeclarationIdentifier(node, excludedIdentifiers) {
|
|
12
|
-
return node.type === "VariableDeclaration" && node.declarations.length > 0 && node.declarations[0]?.id !== void 0 && node.declarations[0].id.type === "Identifier" && node.declarations[0].init !== void 0 && node.declarations[0].init !== null && node.declarations[0].init.type === "CallExpression" && node.declarations[0].init.callee.type === "Identifier" && !excludedIdentifiers.includes(node.declarations[0].init.callee.name);
|
|
13
|
-
}
|
|
14
|
-
function isVariableDeclarationMemberExpression(node) {
|
|
15
|
-
return node.type === "VariableDeclaration" && node.declarations.length > 0 && node.declarations[0]?.id !== void 0 && node.declarations[0].id.type === "Identifier" && node.declarations[0].init !== void 0 && node.declarations[0].init !== null && node.declarations[0].init.type === "CallExpression" && node.declarations[0].init.callee.type === "MemberExpression" && (node.declarations[0].init.callee.object.type === "NewExpression" && node.declarations[0].init.callee.object.callee.type === "Identifier" || node.declarations[0].init.callee.object.type === "Identifier");
|
|
16
|
-
}
|
|
17
|
-
var no_side_effects_default = {
|
|
18
|
-
meta: {
|
|
19
|
-
type: "problem",
|
|
20
|
-
docs: {
|
|
21
|
-
description: "Ensure no side effects can occur at the module-level",
|
|
22
|
-
url: "https://github.com/checkdigit/eslint-plugin"
|
|
23
|
-
},
|
|
24
|
-
schema: [
|
|
25
|
-
{
|
|
26
|
-
type: "object",
|
|
27
|
-
properties: {
|
|
28
|
-
excludedIdentifiers: {
|
|
29
|
-
type: "array",
|
|
30
|
-
items: { type: "string" }
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
additionalProperties: false
|
|
34
|
-
}
|
|
35
|
-
]
|
|
36
|
-
},
|
|
37
|
-
create(context) {
|
|
38
|
-
const options = context.options[0] ?? {};
|
|
39
|
-
const excludedIdentifiers = options.excludedIdentifiers.length > 0 ? options.excludedIdentifiers : [];
|
|
40
|
-
return {
|
|
41
|
-
Program(node) {
|
|
42
|
-
node.body.forEach((statement) => {
|
|
43
|
-
if (isAwaitExpression(statement) || isCallExpressionCalleeMemberExpression(statement, excludedIdentifiers) || isVariableDeclarationAwaitExpression(statement) || isVariableDeclarationIdentifier(statement, excludedIdentifiers) || isVariableDeclarationMemberExpression(statement)) {
|
|
44
|
-
context.report({
|
|
45
|
-
node: statement,
|
|
46
|
-
message: "No side effects can occur at the module-level"
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
export {
|
|
55
|
-
no_side_effects_default as default
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLXNpZGUtZWZmZWN0cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFnQkEsU0FBUyxrQkFBa0IsV0FBMEI7QUFDbkQsU0FBTyxVQUFVLFNBQVMseUJBQXlCLFVBQVUsV0FBVyxTQUFTO0FBQ25GO0FBR0EsU0FBUyx1Q0FBdUMsV0FBaUIscUJBQXdDO0FBQ3ZHLFNBQ0UsVUFBVSxTQUFTLHlCQUNuQixVQUFVLFdBQVcsU0FBUyxvQkFDOUIsVUFBVSxXQUFXLE9BQU8sU0FBUyxzQkFDckMsVUFBVSxXQUFXLE9BQU8sT0FBTyxTQUFTLGdCQUM1QyxDQUFDLG9CQUFvQixTQUFTLFVBQVUsV0FBVyxPQUFPLE9BQU8sSUFBSTtBQUV6RTtBQUdBLFNBQVMscUNBQXFDLE1BQXFCO0FBQ2pFLFNBQ0UsS0FBSyxTQUFTLHlCQUNkLEtBQUssYUFBYSxTQUFTLEtBQzNCLEtBQUssYUFBYSxDQUFDLEdBQUcsT0FBTyxVQUM3QixLQUFLLGFBQWEsQ0FBQyxFQUFFLEdBQUcsU0FBUyxnQkFDakMsS0FBSyxhQUFhLENBQUMsRUFBRSxTQUFTLFVBQzlCLEtBQUssYUFBYSxDQUFDLEVBQUUsU0FBUyxRQUM5QixLQUFLLGFBQWEsQ0FBQyxFQUFFLEtBQUssU0FBUztBQUV2QztBQUdBLFNBQVMsZ0NBQWdDLE1BQVkscUJBQXdDO0FBQzNGLFNBQ0UsS0FBSyxTQUFTLHlCQUNkLEtBQUssYUFBYSxTQUFTLEtBQzNCLEtBQUssYUFBYSxDQUFDLEdBQUcsT0FBTyxVQUM3QixLQUFLLGFBQWEsQ0FBQyxFQUFFLEdBQUcsU0FBUyxnQkFDakMsS0FBSyxhQUFhLENBQUMsRUFBRSxTQUFTLFVBQzlCLEtBQUssYUFBYSxDQUFDLEVBQUUsU0FBUyxRQUM5QixLQUFLLGFBQWEsQ0FBQyxFQUFFLEtBQUssU0FBUyxvQkFDbkMsS0FBSyxhQUFhLENBQUMsRUFBRSxLQUFLLE9BQU8sU0FBUyxnQkFDMUMsQ0FBQyxvQkFBb0IsU0FBUyxLQUFLLGFBQWEsQ0FBQyxFQUFFLEtBQUssT0FBTyxJQUFJO0FBRXZFO0FBR0EsU0FBUyxzQ0FBc0MsTUFBcUI7QUFDbEUsU0FDRSxLQUFLLFNBQVMseUJBQ2QsS0FBSyxhQUFhLFNBQVMsS0FDM0IsS0FBSyxhQUFhLENBQUMsR0FBRyxPQUFPLFVBQzdCLEtBQUssYUFBYSxDQUFDLEVBQUUsR0FBRyxTQUFTLGdCQUNqQyxLQUFLLGFBQWEsQ0FBQyxFQUFFLFNBQVMsVUFDOUIsS0FBSyxhQUFhLENBQUMsRUFBRSxTQUFTLFFBQzlCLEtBQUssYUFBYSxDQUFDLEVBQUUsS0FBSyxTQUFTLG9CQUNuQyxLQUFLLGFBQWEsQ0FBQyxFQUFFLEtBQUssT0FBTyxTQUFTLHVCQUN4QyxLQUFLLGFBQWEsQ0FBQyxFQUFFLEtBQUssT0FBTyxPQUFPLFNBQVMsbUJBQ2pELEtBQUssYUFBYSxDQUFDLEVBQUUsS0FBSyxPQUFPLE9BQU8sT0FBTyxTQUFTLGdCQUN4RCxLQUFLLGFBQWEsQ0FBQyxFQUFFLEtBQUssT0FBTyxPQUFPLFNBQVM7QUFFdkQ7QUFFQSxJQUFPLDBCQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsUUFBUTtBQUFBLE1BQ047QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxVQUNWLHFCQUFxQjtBQUFBLFlBQ25CLE1BQU07QUFBQSxZQUNOLE9BQU8sRUFBRSxNQUFNLFNBQVM7QUFBQSxVQUMxQjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLHNCQUFzQjtBQUFBLE1BQ3hCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFVBQU0sVUFBd0IsUUFBUSxRQUFRLENBQUMsS0FBSyxDQUFDO0FBQ3JELFVBQU0sc0JBQXNCLFFBQVEsb0JBQW9CLFNBQVMsSUFBSSxRQUFRLHNCQUFzQixDQUFDO0FBRXBHLFdBQU87QUFBQSxNQUNMLFFBQVEsTUFBTTtBQUNaLGFBQUssS0FBSyxRQUFRLENBQUMsY0FBYztBQUMvQixjQUNFLGtCQUFrQixTQUFTLEtBQzNCLHVDQUF1QyxXQUFXLG1CQUFtQixLQUNyRSxxQ0FBcUMsU0FBUyxLQUM5QyxnQ0FBZ0MsV0FBVyxtQkFBbUIsS0FDOUQsc0NBQXNDLFNBQVMsR0FDL0M7QUFDQSxvQkFBUSxPQUFPO0FBQUEsY0FDYixNQUFNO0FBQUEsY0FDTixTQUFTO0FBQUEsWUFDWCxDQUFDO0FBQUEsVUFDSDtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/src/no-side-effects.ts
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
// no-side-effects.ts
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* Copyright (c) 2022-2024 Check Digit, LLC
|
|
5
|
-
*
|
|
6
|
-
* This code is licensed under the MIT license (see LICENSE.txt for details).
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { Node } from 'estree';
|
|
10
|
-
import type { Rule } from 'eslint';
|
|
11
|
-
|
|
12
|
-
interface RuleOptions {
|
|
13
|
-
excludedIdentifiers: string[];
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// To check if it is an await expression i.e await someFunction()
|
|
17
|
-
function isAwaitExpression(statement: Node): boolean {
|
|
18
|
-
return statement.type === 'ExpressionStatement' && statement.expression.type === 'AwaitExpression';
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// To check if it is a call expression with a member expression i.e module.method()
|
|
22
|
-
function isCallExpressionCalleeMemberExpression(statement: Node, excludedIdentifiers: string[]): boolean {
|
|
23
|
-
return (
|
|
24
|
-
statement.type === 'ExpressionStatement' &&
|
|
25
|
-
statement.expression.type === 'CallExpression' &&
|
|
26
|
-
statement.expression.callee.type === 'MemberExpression' &&
|
|
27
|
-
statement.expression.callee.object.type === 'Identifier' &&
|
|
28
|
-
!excludedIdentifiers.includes(statement.expression.callee.object.name)
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// To check if it is a variable declaration with an await expression i.e const configuration = await someFunction();
|
|
33
|
-
function isVariableDeclarationAwaitExpression(node: Node): boolean {
|
|
34
|
-
return (
|
|
35
|
-
node.type === 'VariableDeclaration' &&
|
|
36
|
-
node.declarations.length > 0 &&
|
|
37
|
-
node.declarations[0]?.id !== undefined &&
|
|
38
|
-
node.declarations[0].id.type === 'Identifier' &&
|
|
39
|
-
node.declarations[0].init !== undefined &&
|
|
40
|
-
node.declarations[0].init !== null &&
|
|
41
|
-
node.declarations[0].init.type === 'AwaitExpression'
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// To check if it is a variable declaration with an identifier i.e function()
|
|
46
|
-
function isVariableDeclarationIdentifier(node: Node, excludedIdentifiers: string[]): boolean {
|
|
47
|
-
return (
|
|
48
|
-
node.type === 'VariableDeclaration' &&
|
|
49
|
-
node.declarations.length > 0 &&
|
|
50
|
-
node.declarations[0]?.id !== undefined &&
|
|
51
|
-
node.declarations[0].id.type === 'Identifier' &&
|
|
52
|
-
node.declarations[0].init !== undefined &&
|
|
53
|
-
node.declarations[0].init !== null &&
|
|
54
|
-
node.declarations[0].init.type === 'CallExpression' &&
|
|
55
|
-
node.declarations[0].init.callee.type === 'Identifier' &&
|
|
56
|
-
!excludedIdentifiers.includes(node.declarations[0].init.callee.name)
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// To check if it is a variable declaration with a member expression i.e const test = module.method()
|
|
61
|
-
function isVariableDeclarationMemberExpression(node: Node): boolean {
|
|
62
|
-
return (
|
|
63
|
-
node.type === 'VariableDeclaration' &&
|
|
64
|
-
node.declarations.length > 0 &&
|
|
65
|
-
node.declarations[0]?.id !== undefined &&
|
|
66
|
-
node.declarations[0].id.type === 'Identifier' &&
|
|
67
|
-
node.declarations[0].init !== undefined &&
|
|
68
|
-
node.declarations[0].init !== null &&
|
|
69
|
-
node.declarations[0].init.type === 'CallExpression' &&
|
|
70
|
-
node.declarations[0].init.callee.type === 'MemberExpression' &&
|
|
71
|
-
((node.declarations[0].init.callee.object.type === 'NewExpression' &&
|
|
72
|
-
node.declarations[0].init.callee.object.callee.type === 'Identifier') ||
|
|
73
|
-
node.declarations[0].init.callee.object.type === 'Identifier')
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export default {
|
|
78
|
-
meta: {
|
|
79
|
-
type: 'problem',
|
|
80
|
-
docs: {
|
|
81
|
-
description: 'Ensure no side effects can occur at the module-level',
|
|
82
|
-
url: 'https://github.com/checkdigit/eslint-plugin',
|
|
83
|
-
},
|
|
84
|
-
schema: [
|
|
85
|
-
{
|
|
86
|
-
type: 'object',
|
|
87
|
-
properties: {
|
|
88
|
-
excludedIdentifiers: {
|
|
89
|
-
type: 'array',
|
|
90
|
-
items: { type: 'string' },
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
additionalProperties: false,
|
|
94
|
-
},
|
|
95
|
-
],
|
|
96
|
-
},
|
|
97
|
-
create(context) {
|
|
98
|
-
const options: RuleOptions = (context.options[0] ?? {}) as RuleOptions;
|
|
99
|
-
const excludedIdentifiers = options.excludedIdentifiers.length > 0 ? options.excludedIdentifiers : [];
|
|
100
|
-
|
|
101
|
-
return {
|
|
102
|
-
Program(node) {
|
|
103
|
-
node.body.forEach((statement) => {
|
|
104
|
-
if (
|
|
105
|
-
isAwaitExpression(statement) ||
|
|
106
|
-
isCallExpressionCalleeMemberExpression(statement, excludedIdentifiers) ||
|
|
107
|
-
isVariableDeclarationAwaitExpression(statement) ||
|
|
108
|
-
isVariableDeclarationIdentifier(statement, excludedIdentifiers) ||
|
|
109
|
-
isVariableDeclarationMemberExpression(statement)
|
|
110
|
-
) {
|
|
111
|
-
context.report({
|
|
112
|
-
node: statement,
|
|
113
|
-
message: 'No side effects can occur at the module-level',
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
},
|
|
118
|
-
};
|
|
119
|
-
},
|
|
120
|
-
} as Rule.RuleModule;
|