@ploaness/config 1.11.0 → 1.12.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eslint-immutability.d.ts","sourceRoot":"","sources":["../src/eslint-immutability.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"eslint-immutability.d.ts","sourceRoot":"","sources":["../src/eslint-immutability.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,QAAQ,CAAA;AAsIjD,oGAAoG;AACpG,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAGvC,CAAA"}
|
|
@@ -27,15 +27,48 @@ const exportObject = (target) => {
|
|
|
27
27
|
}
|
|
28
28
|
return undefined;
|
|
29
29
|
};
|
|
30
|
-
const
|
|
30
|
+
const UNDEFINED_TYPE = 'undefined';
|
|
31
|
+
// `typeof module !== 'undefined'`, in either order: the test a file that also runs outside CommonJS, such as
|
|
32
|
+
// an edge function a test loads in Node, places around its export.
|
|
33
|
+
const isPresenceTest = (test, binding) => test.type === 'BinaryExpression' &&
|
|
34
|
+
(test.operator === '!==' || test.operator === '!=') &&
|
|
35
|
+
[
|
|
36
|
+
[test.left, test.right],
|
|
37
|
+
[test.right, test.left],
|
|
38
|
+
].some(([operand, literal]) => operand?.type === 'UnaryExpression' &&
|
|
39
|
+
operand.operator === 'typeof' &&
|
|
40
|
+
operand.argument.type === 'Identifier' &&
|
|
41
|
+
operand.argument.name === binding &&
|
|
42
|
+
literal?.type === 'Literal' &&
|
|
43
|
+
literal.value === UNDEFINED_TYPE);
|
|
44
|
+
const isGuardOf = (guard, consequent, binding) => guard.type === 'IfStatement' && guard.consequent === consequent && isPresenceTest(guard.test, binding);
|
|
45
|
+
// The node an export statement initializes the module from: the statement itself, or the block holding it.
|
|
46
|
+
const consequentOf = (ancestors) => {
|
|
47
|
+
const [statement, block] = ancestors.toReversed();
|
|
48
|
+
if (statement?.type !== 'ExpressionStatement') {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
return block?.type === 'BlockStatement' ? block : statement;
|
|
52
|
+
};
|
|
53
|
+
// Module initialization is a statement of the program, or the consequent, alone or in a block, of a presence
|
|
54
|
+
// test of the export's binding that is one.
|
|
55
|
+
const isInitialization = (ancestors, binding) => {
|
|
56
|
+
const consequent = consequentOf(ancestors);
|
|
57
|
+
if (consequent === undefined) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
const [program, guard, ...deeper] = ancestors.slice(0, ancestors.lastIndexOf(consequent));
|
|
61
|
+
return (program?.type === 'Program' &&
|
|
62
|
+
deeper.length === 0 &&
|
|
63
|
+
(guard === undefined ? consequent === ancestors.at(-1) : isGuardOf(guard, consequent, binding)));
|
|
64
|
+
};
|
|
31
65
|
const isExportAssignment = (node, context) => {
|
|
32
66
|
const target = node.left;
|
|
33
|
-
if (target.type !== 'MemberExpression'
|
|
34
|
-
context.sourceCode.getAncestors(node).length !== TOP_LEVEL_ASSIGNMENT_DEPTH) {
|
|
67
|
+
if (target.type !== 'MemberExpression') {
|
|
35
68
|
return false;
|
|
36
69
|
}
|
|
37
70
|
const object = exportObject(target);
|
|
38
|
-
if (object === undefined) {
|
|
71
|
+
if (object === undefined || !isInitialization(context.sourceCode.getAncestors(node), object.binding)) {
|
|
39
72
|
return false;
|
|
40
73
|
}
|
|
41
74
|
return isCommonJsExport(node.operator, object.name, propertyName(target), isRuntimeBinding(context.sourceCode.getScope(node), object.binding));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eslint-immutability.js","sourceRoot":"","sources":["../src/eslint-immutability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,OAAO,UAAU,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"eslint-immutability.js","sourceRoot":"","sources":["../src/eslint-immutability.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ploaness/config",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0",
|
|
4
4
|
"description": "Analyzer and tool configurations owned by ploaness: ESLint, Biome, TypeScript, Vitest, Stylelint, dependency-cruiser, knip.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Herman Ciechanowiec <herman@ciechanowiec.eu>",
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
"@eslint/js": "10.0.1",
|
|
94
94
|
"@next/eslint-plugin-next": "16.4.2",
|
|
95
95
|
"@playwright/test": "1.64.1",
|
|
96
|
-
"@ploaness/governance": "1.
|
|
96
|
+
"@ploaness/governance": "1.12.0",
|
|
97
97
|
"@testing-library/jest-dom": "7.0.1",
|
|
98
98
|
"@testing-library/react": "16.3.3",
|
|
99
99
|
"@testing-library/user-event": "14.6.8",
|