@thethracian/oxlint-config 0.3.1 → 0.3.2

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.
Files changed (204) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/codemods/arrow-body-style.d.ts.map +1 -1
  3. package/dist/codemods/arrow-body-style.js +29 -68
  4. package/dist/codemods/arrow-body-style.js.map +1 -1
  5. package/dist/codemods/comment-format.d.ts.map +1 -1
  6. package/dist/codemods/comment-format.js +22 -32
  7. package/dist/codemods/comment-format.js.map +1 -1
  8. package/dist/codemods/explicit-return-types.d.ts.map +1 -1
  9. package/dist/codemods/explicit-return-types.js +58 -167
  10. package/dist/codemods/explicit-return-types.js.map +1 -1
  11. package/dist/codemods/format-file-header.d.ts.map +1 -1
  12. package/dist/codemods/format-file-header.js +33 -72
  13. package/dist/codemods/format-file-header.js.map +1 -1
  14. package/dist/codemods/format-jsdoc-comments.d.ts.map +1 -1
  15. package/dist/codemods/format-jsdoc-comments.js +58 -66
  16. package/dist/codemods/format-jsdoc-comments.js.map +1 -1
  17. package/dist/codemods/function-declarations.d.ts.map +1 -1
  18. package/dist/codemods/function-declarations.js +45 -80
  19. package/dist/codemods/function-declarations.js.map +1 -1
  20. package/dist/codemods/inline-export-lists.d.ts.map +1 -1
  21. package/dist/codemods/inline-export-lists.js +60 -108
  22. package/dist/codemods/inline-export-lists.js.map +1 -1
  23. package/dist/codemods/internal-export-docs.d.ts.map +1 -1
  24. package/dist/codemods/internal-export-docs.js +21 -59
  25. package/dist/codemods/internal-export-docs.js.map +1 -1
  26. package/dist/codemods/no-ternary-branch-initializers.d.ts.map +1 -1
  27. package/dist/codemods/no-ternary-branch-initializers.js +72 -144
  28. package/dist/codemods/no-ternary-branch-initializers.js.map +1 -1
  29. package/dist/codemods/no-ternary-variable-initializers.d.ts.map +1 -1
  30. package/dist/codemods/no-ternary-variable-initializers.js +69 -152
  31. package/dist/codemods/no-ternary-variable-initializers.js.map +1 -1
  32. package/dist/codemods/no-ternary.d.ts.map +1 -1
  33. package/dist/codemods/no-ternary.js +44 -108
  34. package/dist/codemods/no-ternary.js.map +1 -1
  35. package/dist/codemods/rename-acronyms.d.ts.map +1 -1
  36. package/dist/codemods/rename-acronyms.js +73 -99
  37. package/dist/codemods/rename-acronyms.js.map +1 -1
  38. package/dist/codemods/run.d.ts.map +1 -1
  39. package/dist/codemods/run.js +15 -7
  40. package/dist/codemods/run.js.map +1 -1
  41. package/dist/codemods/sort-imports.d.ts.map +1 -1
  42. package/dist/codemods/sort-imports.js +52 -94
  43. package/dist/codemods/sort-imports.js.map +1 -1
  44. package/dist/rules/acronym-case.d.ts.map +1 -1
  45. package/dist/rules/acronym-case.js +68 -141
  46. package/dist/rules/acronym-case.js.map +1 -1
  47. package/dist/rules/acronyms-1.d.ts +1 -1
  48. package/dist/rules/acronyms-1.d.ts.map +1 -1
  49. package/dist/rules/acronyms-1.js +2 -402
  50. package/dist/rules/acronyms-1.js.map +1 -1
  51. package/dist/rules/acronyms-2.d.ts +1 -1
  52. package/dist/rules/acronyms-2.d.ts.map +1 -1
  53. package/dist/rules/acronyms-2.js +2 -402
  54. package/dist/rules/acronyms-2.js.map +1 -1
  55. package/dist/rules/acronyms-3.d.ts +1 -1
  56. package/dist/rules/acronyms-3.d.ts.map +1 -1
  57. package/dist/rules/acronyms-3.js +2 -402
  58. package/dist/rules/acronyms-3.js.map +1 -1
  59. package/dist/rules/acronyms-4.d.ts +1 -1
  60. package/dist/rules/acronyms-4.d.ts.map +1 -1
  61. package/dist/rules/acronyms-4.js +2 -372
  62. package/dist/rules/acronyms-4.js.map +1 -1
  63. package/dist/rules/acronyms.d.ts.map +1 -1
  64. package/dist/rules/acronyms.js +3 -6
  65. package/dist/rules/acronyms.js.map +1 -1
  66. package/dist/rules/boolean-prefix.d.ts.map +1 -1
  67. package/dist/rules/boolean-prefix.js +25 -71
  68. package/dist/rules/boolean-prefix.js.map +1 -1
  69. package/dist/rules/camel-case-identifiers.d.ts.map +1 -1
  70. package/dist/rules/camel-case-identifiers.js +15 -54
  71. package/dist/rules/camel-case-identifiers.js.map +1 -1
  72. package/dist/rules/char-class.d.ts +1 -1
  73. package/dist/rules/char-class.d.ts.map +1 -1
  74. package/dist/rules/char-class.js +16 -16
  75. package/dist/rules/char-class.js.map +1 -1
  76. package/dist/rules/diagnostic-guidance.d.ts.map +1 -1
  77. package/dist/rules/diagnostic-guidance.js +11 -20
  78. package/dist/rules/diagnostic-guidance.js.map +1 -1
  79. package/dist/rules/effect-default-ast.d.ts.map +1 -1
  80. package/dist/rules/effect-default-ast.js +35 -116
  81. package/dist/rules/effect-default-ast.js.map +1 -1
  82. package/dist/rules/effect-default-compat-rules.d.ts.map +1 -1
  83. package/dist/rules/effect-default-compat-rules.js +41 -79
  84. package/dist/rules/effect-default-compat-rules.js.map +1 -1
  85. package/dist/rules/effect-default-env-rules.d.ts.map +1 -1
  86. package/dist/rules/effect-default-env-rules.js +23 -29
  87. package/dist/rules/effect-default-env-rules.js.map +1 -1
  88. package/dist/rules/effect-default-fiber-helpers.d.ts.map +1 -1
  89. package/dist/rules/effect-default-fiber-helpers.js +12 -26
  90. package/dist/rules/effect-default-fiber-helpers.js.map +1 -1
  91. package/dist/rules/effect-default-floating-helpers.d.ts.map +1 -1
  92. package/dist/rules/effect-default-floating-helpers.js +59 -67
  93. package/dist/rules/effect-default-floating-helpers.js.map +1 -1
  94. package/dist/rules/effect-default-resource-helpers.d.ts.map +1 -1
  95. package/dist/rules/effect-default-resource-helpers.js +36 -44
  96. package/dist/rules/effect-default-resource-helpers.js.map +1 -1
  97. package/dist/rules/effect-default-safety-helpers.d.ts.map +1 -1
  98. package/dist/rules/effect-default-safety-helpers.js +29 -68
  99. package/dist/rules/effect-default-safety-helpers.js.map +1 -1
  100. package/dist/rules/effect-default-scan-helpers.d.ts.map +1 -1
  101. package/dist/rules/effect-default-scan-helpers.js +51 -70
  102. package/dist/rules/effect-default-scan-helpers.js.map +1 -1
  103. package/dist/rules/effect-default-schema-helpers.d.ts.map +1 -1
  104. package/dist/rules/effect-default-schema-helpers.js +32 -43
  105. package/dist/rules/effect-default-schema-helpers.js.map +1 -1
  106. package/dist/rules/effect-default-test-helpers.d.ts.map +1 -1
  107. package/dist/rules/effect-default-test-helpers.js +13 -25
  108. package/dist/rules/effect-default-test-helpers.js.map +1 -1
  109. package/dist/rules/effect-default-workflow-helpers.d.ts.map +1 -1
  110. package/dist/rules/effect-default-workflow-helpers.js +53 -113
  111. package/dist/rules/effect-default-workflow-helpers.js.map +1 -1
  112. package/dist/rules/effect-exported-declarations.d.ts.map +1 -1
  113. package/dist/rules/effect-exported-declarations.js +90 -177
  114. package/dist/rules/effect-exported-declarations.js.map +1 -1
  115. package/dist/rules/effect-path-options.d.ts.map +1 -1
  116. package/dist/rules/effect-path-options.js +48 -58
  117. package/dist/rules/effect-path-options.js.map +1 -1
  118. package/dist/rules/effect-rule-aliases.d.ts.map +1 -1
  119. package/dist/rules/effect-rule-aliases.js +43 -101
  120. package/dist/rules/effect-rule-aliases.js.map +1 -1
  121. package/dist/rules/effect-rule-core.d.ts.map +1 -1
  122. package/dist/rules/effect-rule-core.js +42 -78
  123. package/dist/rules/effect-rule-core.js.map +1 -1
  124. package/dist/rules/effect-rule-names.d.ts +2 -2
  125. package/dist/rules/effect-rule-names.d.ts.map +1 -1
  126. package/dist/rules/effect-rule-names.js +3 -145
  127. package/dist/rules/effect-rule-names.js.map +1 -1
  128. package/dist/rules/effect-source-comments.d.ts.map +1 -1
  129. package/dist/rules/effect-source-comments.js +112 -167
  130. package/dist/rules/effect-source-comments.js.map +1 -1
  131. package/dist/rules/effect-source-navigation.d.ts.map +1 -1
  132. package/dist/rules/effect-source-navigation.js +103 -185
  133. package/dist/rules/effect-source-navigation.js.map +1 -1
  134. package/dist/rules/effect-source-regex-scan.d.ts +13 -0
  135. package/dist/rules/effect-source-regex-scan.d.ts.map +1 -0
  136. package/dist/rules/effect-source-regex-scan.js +126 -0
  137. package/dist/rules/effect-source-regex-scan.js.map +1 -0
  138. package/dist/rules/effect-source-scan.d.ts +1 -12
  139. package/dist/rules/effect-source-scan.d.ts.map +1 -1
  140. package/dist/rules/effect-source-scan.js +93 -239
  141. package/dist/rules/effect-source-scan.js.map +1 -1
  142. package/dist/rules/effect-strict-ast-specs.d.ts.map +1 -1
  143. package/dist/rules/effect-strict-ast-specs.js +11 -8
  144. package/dist/rules/effect-strict-ast-specs.js.map +1 -1
  145. package/dist/rules/effect-strict-boundary-helpers.d.ts.map +1 -1
  146. package/dist/rules/effect-strict-boundary-helpers.js +51 -87
  147. package/dist/rules/effect-strict-boundary-helpers.js.map +1 -1
  148. package/dist/rules/effect-strict-core-specs.d.ts.map +1 -1
  149. package/dist/rules/effect-strict-core-specs.js +8 -6
  150. package/dist/rules/effect-strict-core-specs.js.map +1 -1
  151. package/dist/rules/effect-strict-external-helpers.d.ts.map +1 -1
  152. package/dist/rules/effect-strict-external-helpers.js +20 -40
  153. package/dist/rules/effect-strict-external-helpers.js.map +1 -1
  154. package/dist/rules/effect-strict-helpers.d.ts.map +1 -1
  155. package/dist/rules/effect-strict-helpers.js +47 -72
  156. package/dist/rules/effect-strict-helpers.js.map +1 -1
  157. package/dist/rules/effect-strict-internals.d.ts.map +1 -1
  158. package/dist/rules/effect-strict-internals.js +46 -101
  159. package/dist/rules/effect-strict-internals.js.map +1 -1
  160. package/dist/rules/effect-strict-segment-helpers.d.ts.map +1 -1
  161. package/dist/rules/effect-strict-segment-helpers.js +103 -174
  162. package/dist/rules/effect-strict-segment-helpers.js.map +1 -1
  163. package/dist/rules/effect-strict.d.ts.map +1 -1
  164. package/dist/rules/effect-strict.js +3 -2
  165. package/dist/rules/effect-strict.js.map +1 -1
  166. package/dist/rules/max-import-depth.d.ts +2 -1
  167. package/dist/rules/max-import-depth.d.ts.map +1 -1
  168. package/dist/rules/max-import-depth.js +13 -15
  169. package/dist/rules/max-import-depth.js.map +1 -1
  170. package/dist/rules/max-line-length.d.ts.map +1 -1
  171. package/dist/rules/max-line-length.js +26 -39
  172. package/dist/rules/max-line-length.js.map +1 -1
  173. package/dist/rules/no-commented-out-code.d.ts.map +1 -1
  174. package/dist/rules/no-commented-out-code.js +53 -156
  175. package/dist/rules/no-commented-out-code.js.map +1 -1
  176. package/dist/rules/pascal-case-types.d.ts.map +1 -1
  177. package/dist/rules/pascal-case-types.js +16 -70
  178. package/dist/rules/pascal-case-types.js.map +1 -1
  179. package/dist/rules/plugin-commented-out-code-rule.d.ts.map +1 -1
  180. package/dist/rules/plugin-commented-out-code-rule.js +50 -77
  181. package/dist/rules/plugin-commented-out-code-rule.js.map +1 -1
  182. package/dist/rules/plugin.d.ts.map +1 -1
  183. package/dist/rules/plugin.js +14 -35
  184. package/dist/rules/plugin.js.map +1 -1
  185. package/dist/rules/private-underscore.d.ts +3 -1
  186. package/dist/rules/private-underscore.d.ts.map +1 -1
  187. package/dist/rules/private-underscore.js +7 -9
  188. package/dist/rules/private-underscore.js.map +1 -1
  189. package/dist/rules/require-file-doc.d.ts.map +1 -1
  190. package/dist/rules/require-file-doc.js +28 -94
  191. package/dist/rules/require-file-doc.js.map +1 -1
  192. package/dist/rules/require-function-doc-ignored-text.d.ts.map +1 -1
  193. package/dist/rules/require-function-doc-ignored-text.js +6 -9
  194. package/dist/rules/require-function-doc-ignored-text.js.map +1 -1
  195. package/dist/rules/require-function-doc-local-exports.d.ts.map +1 -1
  196. package/dist/rules/require-function-doc-local-exports.js +16 -58
  197. package/dist/rules/require-function-doc-local-exports.js.map +1 -1
  198. package/dist/rules/require-function-doc.d.ts.map +1 -1
  199. package/dist/rules/require-function-doc.js +87 -196
  200. package/dist/rules/require-function-doc.js.map +1 -1
  201. package/dist/rules/source-cache.d.ts.map +1 -1
  202. package/dist/rules/source-cache.js +23 -33
  203. package/dist/rules/source-cache.js.map +1 -1
  204. package/package.json +3 -1
@@ -1,23 +1,11 @@
1
+ /* -------------------------------------------------------------------------- */
2
+ /* Branch-initializer repairs for the no-ternary codemod only. */
3
+ /* -------------------------------------------------------------------------- */
4
+ import { Array, Option, Predicate, pipe } from 'effect';
1
5
  const INDENT_STEP = ' ';
2
- const isObjectRecord = (value) => typeof value === 'object' && value !== null;
3
- const nodeStart = (node) => {
4
- if (isObjectRecord(node)) {
5
- const { start } = node;
6
- if (typeof start === 'number') {
7
- return start;
8
- }
9
- }
10
- throw new Error('jscodeshift node is missing a start offset');
11
- };
12
- const nodeEnd = (node) => {
13
- if (isObjectRecord(node)) {
14
- const { end } = node;
15
- if (typeof end === 'number') {
16
- return end;
17
- }
18
- }
19
- throw new Error('jscodeshift node is missing an end offset');
20
- };
6
+ const isObjectRecord = (value) => Predicate.isObject(value);
7
+ const nodeStart = (node) => pipe(Option.some(node), Option.filter(isObjectRecord), Option.flatMapNullable((value) => value.start), Option.filter(Predicate.isNumber), Option.getOrThrowWith(() => new Error('jscodeshift node is missing a start offset')));
8
+ const nodeEnd = (node) => pipe(Option.some(node), Option.filter(isObjectRecord), Option.flatMapNullable((value) => value.end), Option.filter(Predicate.isNumber), Option.getOrThrowWith(() => new Error('jscodeshift node is missing an end offset')));
21
9
  const sourceForNode = (source, node) => source.slice(nodeStart(node), nodeEnd(node));
22
10
  const isIdentifier = (node) => isObjectRecord(node) && node.type === 'Identifier' && typeof node.name === 'string';
23
11
  const isStatement = (node) => isObjectRecord(node) && typeof node.type === 'string';
@@ -37,49 +25,36 @@ const lineIndent = (source, index) => {
37
25
  }
38
26
  return source.slice(lineStart, cursor);
39
27
  };
40
- const primitiveTypeOf = (expression) => {
41
- if (expression.type === 'StringLiteral') {
42
- return 'string';
43
- }
44
- if (expression.type === 'NumericLiteral') {
45
- return 'number';
28
+ const primitiveTypeOf = (expression) => pipe(Option.some(expression.type), Option.flatMap((type) => {
29
+ if (type === 'StringLiteral') {
30
+ return Option.some('string');
46
31
  }
47
- if (expression.type === 'BooleanLiteral') {
48
- return 'boolean';
32
+ if (type === 'NumericLiteral') {
33
+ return Option.some('number');
49
34
  }
50
- if (expression.type === 'NullLiteral') {
51
- return 'null';
35
+ if (type === 'BooleanLiteral') {
36
+ return Option.some('boolean');
52
37
  }
53
- return undefined;
54
- };
55
- const declaredTypeText = (source, declaration) => {
56
- if (!isIdentifier(declaration.id) || !declaration.id.typeAnnotation) {
57
- return undefined;
38
+ if (type === 'NullLiteral') {
39
+ return Option.some('null');
58
40
  }
59
- const raw = sourceForNode(source, declaration.id.typeAnnotation).trim();
41
+ return Option.none();
42
+ }), Option.getOrUndefined);
43
+ const declaredTypeText = (source, declaration) => pipe(Option.some(declaration.id), Option.filter(isIdentifier), Option.flatMapNullable((identifier) => identifier.typeAnnotation), Option.map((annotation) => {
44
+ const raw = sourceForNode(source, annotation).trim();
60
45
  if (raw.startsWith(':')) {
61
46
  return raw.slice(1).trim();
62
47
  }
63
48
  return raw;
64
- };
65
- const initializerReturnType = (source, declaration, whenTrue, whenFalse) => {
66
- const declared = declaredTypeText(source, declaration);
67
- if (declared) {
68
- return declared;
69
- }
70
- const trueType = primitiveTypeOf(whenTrue);
71
- const falseType = primitiveTypeOf(whenFalse);
72
- if (trueType && trueType === falseType) {
73
- return trueType;
74
- }
75
- return undefined;
76
- };
77
- const optionalTypeText = (source, declaration, returnType) => {
78
- if (declaredTypeText(source, declaration)) {
79
- return `: ${returnType}`;
80
- }
81
- return '';
82
- };
49
+ }), Option.getOrUndefined);
50
+ const initializerReturnType = (source, declaration, whenTrue, whenFalse) => pipe(Option.fromNullable(declaredTypeText(source, declaration)), Option.orElse(() => pipe(Option.all({
51
+ falseType: Option.fromNullable(primitiveTypeOf(whenFalse)),
52
+ trueType: Option.fromNullable(primitiveTypeOf(whenTrue)),
53
+ }), Option.filter(({ falseType, trueType }) => trueType === falseType), Option.map(({ trueType }) => trueType))), Option.getOrUndefined);
54
+ const optionalTypeText = (source, declaration, returnType) => pipe(Option.fromNullable(declaredTypeText(source, declaration)), Option.match({
55
+ onNone: () => '',
56
+ onSome: () => `: ${returnType}`,
57
+ }));
83
58
  const branchInitializerText = (input) => {
84
59
  const bodyIndent = `${input.indent}${INDENT_STEP}`;
85
60
  const returnIndent = `${bodyIndent}${INDENT_STEP}`;
@@ -92,36 +67,12 @@ const branchInitializerText = (input) => {
92
67
  `${input.indent}})();`,
93
68
  ].join('\n');
94
69
  };
95
- const statementFromBlock = (statement) => {
96
- if (!isObjectRecord(statement) || statement.type !== 'BlockStatement') {
97
- return undefined;
98
- }
99
- const { body } = statement;
100
- if (!Array.isArray(body) || body.length !== 1 || !isStatement(body[0])) {
101
- return undefined;
102
- }
103
- return body[0];
104
- };
70
+ const statementFromBlock = (statement) => pipe(Option.some(statement), Option.filter(isObjectRecord), Option.filter((value) => value.type === 'BlockStatement'), Option.flatMapNullable((value) => value.body), Option.filter(globalThis.Array.isArray), Option.filter((body) => body.length === 1), Option.flatMap(Array.head), Option.filter(isStatement), Option.getOrUndefined);
105
71
  const normalizedStatement = (statement) => statementFromBlock(statement) ?? statement;
106
- const assignmentExpression = (statement) => {
107
- if (!isObjectRecord(statement) || statement.type !== 'ExpressionStatement') {
108
- return undefined;
109
- }
110
- const { expression } = statement;
111
- if (!isAssignmentExpression(expression)) {
112
- return undefined;
113
- }
114
- if (expression.operator !== '=') {
115
- return undefined;
116
- }
117
- return expression;
118
- };
72
+ const assignmentExpression = (statement) => pipe(Option.fromNullable(statement), Option.filter(isObjectRecord), Option.filter((value) => value.type === 'ExpressionStatement'), Option.flatMapNullable((value) => value.expression), Option.filter(isAssignmentExpression), Option.filter((expression) => expression.operator === '='), Option.getOrUndefined);
119
73
  const assignedExpression = (statement, name) => {
120
74
  const expression = assignmentExpression(normalizedStatement(statement));
121
- if (!expression || !isIdentifier(expression.left) || expression.left.name !== name) {
122
- return undefined;
123
- }
124
- return expression.right;
75
+ return pipe(Option.fromNullable(expression), Option.filter((value) => isIdentifier(value.left) && value.left.name === name), Option.map((value) => value.right), Option.getOrUndefined);
125
76
  };
126
77
  const writesIdentifierInRecord = (node, search) => {
127
78
  if (search.seen.has(node)) {
@@ -134,11 +85,11 @@ const writesIdentifierInRecord = (node, search) => {
134
85
  if (node.type === 'UpdateExpression' && isIdentifier(node.argument)) {
135
86
  return node.argument.name === search.name;
136
87
  }
137
- return Object.values(node).some((value) => writesIdentifierInValue(value, search));
88
+ return pipe(Object.values(node), Array.some((value) => writesIdentifierInValue(value, search)));
138
89
  };
139
90
  const writesIdentifierInValue = (node, search) => {
140
- if (Array.isArray(node)) {
141
- return node.some((entry) => writesIdentifierInValue(entry, search));
91
+ if (globalThis.Array.isArray(node)) {
92
+ return pipe(node, Array.some((entry) => writesIdentifierInValue(entry, search)));
142
93
  }
143
94
  if (!isObjectRecord(node)) {
144
95
  return false;
@@ -146,69 +97,41 @@ const writesIdentifierInValue = (node, search) => {
146
97
  return writesIdentifierInRecord(node, search);
147
98
  };
148
99
  const writesIdentifier = (node, name) => writesIdentifierInValue(node, { name, seen: new WeakSet() });
149
- const hasLaterWrite = (statements, startIndex, name) => {
150
- for (let idx = startIndex; idx < statements.length; idx += 1) {
151
- if (writesIdentifier(statements[idx], name)) {
152
- return true;
153
- }
154
- }
155
- return false;
156
- };
157
- const branchAssignmentExpressions = (ifStatement, declaration) => {
158
- if (!isIdentifier(declaration.id) || !ifStatement.alternate) {
159
- return undefined;
160
- }
161
- const { name } = declaration.id;
162
- const whenTrue = assignedExpression(ifStatement.consequent, name);
163
- const whenFalse = assignedExpression(ifStatement.alternate, name);
164
- if (!whenTrue || !whenFalse) {
165
- return undefined;
166
- }
167
- return { name, whenFalse, whenTrue };
168
- };
169
- const declarationKeyword = (statements, index, name) => {
170
- if (hasLaterWrite(statements, index + 2, name)) {
171
- return 'let';
172
- }
173
- return 'const';
174
- };
175
- const singleEmptyDeclarator = (node) => {
176
- const [declaration] = node.declarations;
177
- if (node.declarations.length !== 1 || !isVariableDeclarator(declaration) || declaration.init) {
178
- return undefined;
179
- }
180
- return declaration;
181
- };
100
+ const hasLaterWrite = (statements, startIndex, name) => pipe(statements, Array.drop(startIndex), Array.some((statement) => writesIdentifier(statement, name)));
101
+ const branchAssignmentExpressions = (ifStatement, declaration) => pipe(Option.all({
102
+ alternate: Option.fromNullable(ifStatement.alternate),
103
+ identifier: pipe(Option.some(declaration.id), Option.filter(isIdentifier)),
104
+ }), Option.flatMap(({ alternate, identifier }) => pipe(Option.all({
105
+ whenFalse: Option.fromNullable(assignedExpression(alternate, identifier.name)),
106
+ whenTrue: Option.fromNullable(assignedExpression(ifStatement.consequent, identifier.name)),
107
+ }), Option.map(({ whenFalse, whenTrue }) => ({
108
+ name: identifier.name,
109
+ whenFalse,
110
+ whenTrue,
111
+ })))), Option.getOrUndefined);
112
+ const declarationKeyword = (statements, index, name) => pipe(Option.some(hasLaterWrite(statements, index + 2, name)), Option.filter(Boolean), Option.match({
113
+ onNone: () => 'const',
114
+ onSome: () => 'let',
115
+ }));
116
+ const singleEmptyDeclarator = (node) => pipe(node.declarations, Option.liftPredicate((declarations) => declarations.length === 1), Option.flatMap(Array.head), Option.filter(isVariableDeclarator), Option.filter((declaration) => !declaration.init), Option.getOrUndefined);
182
117
  const branchInitializerReplacement = (source, statements, index) => {
183
118
  const declarationStatement = statements[index];
184
119
  const ifStatement = statements[index + 1];
185
- if (!isVariableDeclaration(declarationStatement) || !isIfStatement(ifStatement)) {
186
- return undefined;
187
- }
188
- const declaration = singleEmptyDeclarator(declarationStatement);
189
- if (!declaration) {
190
- return undefined;
191
- }
192
- return replacementFromBranches({
120
+ return pipe(Option.all({
121
+ declarationStatement: pipe(Option.fromNullable(declarationStatement), Option.filter(isVariableDeclaration)),
122
+ ifStatement: pipe(Option.fromNullable(ifStatement), Option.filter(isIfStatement)),
123
+ }), Option.flatMap(({ declarationStatement: checkedDeclarationStatement, ifStatement: checkedIfStatement }) => pipe(Option.fromNullable(singleEmptyDeclarator(checkedDeclarationStatement)), Option.flatMap((declaration) => Option.fromNullable(replacementFromBranches({
193
124
  declaration,
194
- declarationStatement,
195
- ifStatement,
125
+ declarationStatement: checkedDeclarationStatement,
126
+ ifStatement: checkedIfStatement,
196
127
  index,
197
128
  source,
198
129
  statements,
199
- });
130
+ }))))), Option.getOrUndefined);
200
131
  };
201
132
  const replacementFromBranches = (input) => {
202
133
  const { declaration, declarationStatement, ifStatement, source } = input;
203
- const branches = branchAssignmentExpressions(ifStatement, declaration);
204
- if (!branches) {
205
- return undefined;
206
- }
207
- const returnType = initializerReturnType(source, declaration, branches.whenTrue, branches.whenFalse);
208
- if (!returnType) {
209
- return undefined;
210
- }
211
- return {
134
+ return pipe(Option.fromNullable(branchAssignmentExpressions(ifStatement, declaration)), Option.flatMap((branches) => pipe(Option.fromNullable(initializerReturnType(source, declaration, branches.whenTrue, branches.whenFalse)), Option.map((returnType) => ({
212
135
  end: nodeEnd(ifStatement),
213
136
  start: nodeStart(declarationStatement),
214
137
  text: branchInitializerText({
@@ -221,7 +144,7 @@ const replacementFromBranches = (input) => {
221
144
  trueText: sourceForNode(source, branches.whenTrue),
222
145
  typeText: optionalTypeText(source, declaration, returnType),
223
146
  }),
224
- };
147
+ })))), Option.getOrUndefined);
225
148
  };
226
149
  /**
227
150
  * Internal helper exported for the no-ternary codemod composition.
@@ -229,12 +152,17 @@ const replacementFromBranches = (input) => {
229
152
  * @internal
230
153
  */
231
154
  export const collectBranchInitializerRepairs = (source, statements, replacements) => {
232
- for (let idx = 0; idx < statements.length - 1; idx += 1) {
233
- const replacement = branchInitializerReplacement(source, statements, idx);
234
- if (replacement) {
235
- replacements.push(replacement);
236
- idx += 1;
155
+ pipe(Array.range(0, Math.max(0, statements.length - 2)), Array.reduce(0, (skipUntil, idx) => {
156
+ if (idx < skipUntil) {
157
+ return skipUntil;
237
158
  }
238
- }
159
+ return pipe(Option.fromNullable(branchInitializerReplacement(source, statements, idx)), Option.match({
160
+ onNone: () => skipUntil,
161
+ onSome: (replacement) => {
162
+ replacements.push(replacement);
163
+ return idx + 2;
164
+ },
165
+ }));
166
+ }));
239
167
  };
240
168
  //# sourceMappingURL=no-ternary-branch-initializers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-ternary-branch-initializers.js","sourceRoot":"","sources":["../../src/codemods/no-ternary-branch-initializers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-ternary-branch-initializers.js","sourceRoot":"","sources":["../../src/codemods/no-ternary-branch-initializers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"no-ternary-variable-initializers.d.ts","sourceRoot":"","sources":["../../src/codemods/no-ternary-variable-initializers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAOV,mBAAmB,EAEpB,MAAM,aAAa,CAAC;AAGrB,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAqTD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,MAAM,EACd,MAAM,mBAAmB,KACxB,WAAW,GAAG,SAUhB,CAAC"}
1
+ {"version":3,"file":"no-ternary-variable-initializers.d.ts","sourceRoot":"","sources":["../../src/codemods/no-ternary-variable-initializers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAOV,mBAAmB,EAEpB,MAAM,aAAa,CAAC;AAGrB,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAoVD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,MAAM,EACd,MAAM,mBAAmB,KACxB,WAAW,GAAG,SAWd,CAAC"}
@@ -1,26 +1,14 @@
1
+ /* -------------------------------------------------------------------------- */
2
+ /* Variable-initializer repairs for the no-ternary codemod only. */
3
+ /* -------------------------------------------------------------------------- */
4
+ import { Array, Option, Predicate, pipe } from 'effect';
1
5
  import jscodeshift from 'jscodeshift';
2
6
  const INDENT_STEP = ' ';
3
7
  const NOT_FOUND_INDEX = -1;
4
8
  const codemodAPI = jscodeshift.withParser('ts');
5
- const isObjectRecord = (value) => typeof value === 'object' && value !== null;
6
- const nodeStart = (node) => {
7
- if (isObjectRecord(node)) {
8
- const { start } = node;
9
- if (typeof start === 'number') {
10
- return start;
11
- }
12
- }
13
- throw new Error('jscodeshift node is missing a start offset');
14
- };
15
- const nodeEnd = (node) => {
16
- if (isObjectRecord(node)) {
17
- const { end } = node;
18
- if (typeof end === 'number') {
19
- return end;
20
- }
21
- }
22
- throw new Error('jscodeshift node is missing an end offset');
23
- };
9
+ const isObjectRecord = (value) => Predicate.isObject(value);
10
+ const nodeStart = (node) => pipe(Option.some(node), Option.filter(isObjectRecord), Option.flatMapNullable((value) => value.start), Option.filter(Predicate.isNumber), Option.getOrThrowWith(() => new Error('jscodeshift node is missing a start offset')));
11
+ const nodeEnd = (node) => pipe(Option.some(node), Option.filter(isObjectRecord), Option.flatMapNullable((value) => value.end), Option.filter(Predicate.isNumber), Option.getOrThrowWith(() => new Error('jscodeshift node is missing an end offset')));
24
12
  const sourceForNode = (source, node) => source.slice(nodeStart(node), nodeEnd(node));
25
13
  const isIdentifier = (node) => node?.type === 'Identifier';
26
14
  const lineIndent = (source, index) => {
@@ -36,8 +24,8 @@ const lineIndent = (source, index) => {
36
24
  return source.slice(lineStart, cursor);
37
25
  };
38
26
  const containsConditionalExpressionInValue = (node, seen) => {
39
- if (Array.isArray(node)) {
40
- return node.some((entry) => containsConditionalExpressionInValue(entry, seen));
27
+ if (globalThis.Array.isArray(node)) {
28
+ return pipe(node, Array.some((entry) => containsConditionalExpressionInValue(entry, seen)));
41
29
  }
42
30
  if (!isObjectRecord(node)) {
43
31
  return false;
@@ -49,54 +37,41 @@ const containsConditionalExpressionInValue = (node, seen) => {
49
37
  if (node.type === 'ConditionalExpression') {
50
38
  return true;
51
39
  }
52
- return Object.values(node).some((entry) => containsConditionalExpressionInValue(entry, seen));
40
+ return pipe(Object.values(node), Array.some((entry) => containsConditionalExpressionInValue(entry, seen)));
53
41
  };
54
42
  const containsConditionalExpression = (node) => containsConditionalExpressionInValue(node, new WeakSet());
55
43
  const hasUnsafeBranches = (expression) => containsConditionalExpression(expression.consequent) ||
56
44
  containsConditionalExpression(expression.alternate);
57
- const primitiveTypeOf = (expression) => {
58
- if (expression.type === 'StringLiteral') {
59
- return 'string';
45
+ const primitiveTypeOf = (expression) => pipe(Option.some(expression.type), Option.flatMap((type) => {
46
+ if (type === 'StringLiteral') {
47
+ return Option.some('string');
60
48
  }
61
- if (expression.type === 'NumericLiteral') {
62
- return 'number';
49
+ if (type === 'NumericLiteral') {
50
+ return Option.some('number');
63
51
  }
64
- if (expression.type === 'BooleanLiteral') {
65
- return 'boolean';
52
+ if (type === 'BooleanLiteral') {
53
+ return Option.some('boolean');
66
54
  }
67
- if (expression.type === 'NullLiteral') {
68
- return 'null';
55
+ if (type === 'NullLiteral') {
56
+ return Option.some('null');
69
57
  }
70
- return undefined;
71
- };
72
- const declaredTypeText = (source, declaration) => {
73
- if (!isIdentifier(declaration.id) || !declaration.id.typeAnnotation) {
74
- return undefined;
75
- }
76
- const raw = sourceForNode(source, declaration.id.typeAnnotation).trim();
58
+ return Option.none();
59
+ }), Option.getOrUndefined);
60
+ const declaredTypeText = (source, declaration) => pipe(Option.some(declaration.id), Option.filter(isIdentifier), Option.flatMapNullable((identifier) => identifier.typeAnnotation), Option.map((annotation) => {
61
+ const raw = sourceForNode(source, annotation).trim();
77
62
  if (raw.startsWith(':')) {
78
63
  return raw.slice(1).trim();
79
64
  }
80
65
  return raw;
81
- };
82
- const initializerReturnType = (source, declaration, whenTrue, whenFalse) => {
83
- const declared = declaredTypeText(source, declaration);
84
- if (declared) {
85
- return declared;
86
- }
87
- const trueType = primitiveTypeOf(whenTrue);
88
- const falseType = primitiveTypeOf(whenFalse);
89
- if (trueType && trueType === falseType) {
90
- return trueType;
91
- }
92
- return undefined;
93
- };
94
- const optionalTypeText = (source, declaration, returnType) => {
95
- if (declaredTypeText(source, declaration)) {
96
- return `: ${returnType}`;
97
- }
98
- return '';
99
- };
66
+ }), Option.getOrUndefined);
67
+ const initializerReturnType = (source, declaration, whenTrue, whenFalse) => pipe(Option.fromNullable(declaredTypeText(source, declaration)), Option.orElse(() => pipe(Option.all({
68
+ falseType: Option.fromNullable(primitiveTypeOf(whenFalse)),
69
+ trueType: Option.fromNullable(primitiveTypeOf(whenTrue)),
70
+ }), Option.filter(({ falseType, trueType }) => trueType === falseType), Option.map(({ trueType }) => trueType))), Option.getOrUndefined);
71
+ const optionalTypeText = (source, declaration, returnType) => pipe(Option.fromNullable(declaredTypeText(source, declaration)), Option.match({
72
+ onNone: () => '',
73
+ onSome: () => `: ${returnType}`,
74
+ }));
100
75
  const branchInitializerText = (input) => {
101
76
  const bodyIndent = `${input.indent}${INDENT_STEP}`;
102
77
  const returnIndent = `${bodyIndent}${INDENT_STEP}`;
@@ -109,31 +84,20 @@ const branchInitializerText = (input) => {
109
84
  `${input.indent}})();`,
110
85
  ].join('\n');
111
86
  };
112
- const declarationKeyword = (statement) => {
113
- if (statement.kind === 'const') {
114
- return 'const';
115
- }
116
- return 'let';
117
- };
118
- const explicitInitializerText = (source, statement, declaration, expression, indent) => {
119
- if (!isIdentifier(declaration.id) || hasUnsafeBranches(expression)) {
120
- return undefined;
121
- }
122
- const returnType = initializerReturnType(source, declaration, expression.consequent, expression.alternate);
123
- if (!returnType) {
124
- return undefined;
125
- }
126
- return branchInitializerText({
127
- condition: sourceForNode(source, expression.test),
128
- falseText: sourceForNode(source, expression.alternate),
129
- indent,
130
- keyword: declarationKeyword(statement),
131
- name: declaration.id.name,
132
- returnType,
133
- trueText: sourceForNode(source, expression.consequent),
134
- typeText: optionalTypeText(source, declaration, returnType),
135
- });
136
- };
87
+ const declarationKeyword = (statement) => pipe(Option.some(statement.kind), Option.filter((kind) => kind === 'const'), Option.match({
88
+ onNone: () => 'let',
89
+ onSome: () => 'const',
90
+ }));
91
+ const explicitInitializerText = (source, statement, declaration, expression, indent) => pipe(Option.some(declaration.id), Option.filter(isIdentifier), Option.filter(() => !hasUnsafeBranches(expression)), Option.flatMap((identifier) => pipe(Option.fromNullable(initializerReturnType(source, declaration, expression.consequent, expression.alternate)), Option.map((returnType) => branchInitializerText({
92
+ condition: sourceForNode(source, expression.test),
93
+ falseText: sourceForNode(source, expression.alternate),
94
+ indent,
95
+ keyword: declarationKeyword(statement),
96
+ name: identifier.name,
97
+ returnType,
98
+ trueText: sourceForNode(source, expression.consequent),
99
+ typeText: optionalTypeText(source, declaration, returnType),
100
+ })))), Option.getOrUndefined);
137
101
  const isWhitespaceChar = (char) => char === ' ' || char === '\n' || char === '\r' || char === '\t';
138
102
  const arrowReturnTypeInsertPosition = (source, arrow) => {
139
103
  const bodyStart = nodeStart(arrow.body);
@@ -147,89 +111,42 @@ const arrowReturnTypeInsertPosition = (source, arrow) => {
147
111
  }
148
112
  return insertAt;
149
113
  };
150
- const returnExpressions = (body) => codemodAPI(body)
151
- .find(codemodAPI.ReturnStatement)
152
- .paths()
153
- .flatMap((path) => {
154
- if (path.value.argument) {
155
- return [path.value.argument];
156
- }
157
- return [];
158
- });
114
+ const returnExpressions = (body) => pipe(codemodAPI(body).find(codemodAPI.ReturnStatement).paths(), Array.filterMap((path) => Option.fromNullable(path.value.argument)));
159
115
  const commonPrimitiveReturnType = (body) => {
160
116
  const expressions = returnExpressions(body);
161
- const [firstExpression] = expressions;
162
- if (!firstExpression) {
163
- return undefined;
164
- }
165
- const firstType = primitiveTypeOf(firstExpression);
166
- if (!firstType) {
167
- return undefined;
168
- }
169
- if (expressions.every((expression) => primitiveTypeOf(expression) === firstType)) {
170
- return firstType;
171
- }
172
- return undefined;
117
+ return pipe(expressions, Array.head, Option.flatMap((firstExpression) => pipe(Option.fromNullable(primitiveTypeOf(firstExpression)), Option.filter((firstType) => pipe(expressions, Array.every((expression) => primitiveTypeOf(expression) === firstType))))), Option.getOrUndefined);
173
118
  };
174
- const arrowIIFEReturnType = (source, declaration, arrow) => {
175
- const declared = declaredTypeText(source, declaration);
176
- if (declared) {
177
- return declared;
178
- }
119
+ const arrowIIFEReturnType = (source, declaration, arrow) => pipe(Option.fromNullable(declaredTypeText(source, declaration)), Option.orElse(() => {
179
120
  if (arrow.body.type === 'BlockStatement') {
180
- return commonPrimitiveReturnType(arrow.body);
181
- }
182
- return primitiveTypeOf(arrow.body);
183
- };
184
- const zeroArgArrowIIFE = (declaration) => {
185
- if (declaration.init?.type !== 'CallExpression') {
186
- return undefined;
187
- }
188
- const { callee } = declaration.init;
189
- if (callee.type !== 'ArrowFunctionExpression' || callee.params.length > 0 || callee.returnType) {
190
- return undefined;
121
+ return Option.fromNullable(commonPrimitiveReturnType(arrow.body));
191
122
  }
192
- return callee;
193
- };
194
- const arrowIIFEReturnTypeReplacement = (source, declaration) => {
195
- const arrow = zeroArgArrowIIFE(declaration);
196
- if (!arrow) {
197
- return undefined;
198
- }
199
- const returnType = arrowIIFEReturnType(source, declaration, arrow);
200
- if (!returnType) {
201
- return undefined;
123
+ return Option.fromNullable(primitiveTypeOf(arrow.body));
124
+ }), Option.getOrUndefined);
125
+ const zeroArgArrowIIFE = (declaration) => pipe(Option.fromNullable(declaration.init), Option.filter((init) => init.type === 'CallExpression'), Option.flatMapNullable((init) => {
126
+ if (isObjectRecord(init)) {
127
+ return init.callee;
202
128
  }
129
+ return undefined;
130
+ }), Option.filter((callee) => isObjectRecord(callee) &&
131
+ callee.type === 'ArrowFunctionExpression' &&
132
+ globalThis.Array.isArray(callee.params) &&
133
+ callee.params.length === 0 &&
134
+ !callee.returnType), Option.getOrUndefined);
135
+ const arrowIIFEReturnTypeReplacement = (source, declaration) => pipe(Option.fromNullable(zeroArgArrowIIFE(declaration)), Option.flatMap((arrow) => pipe(Option.fromNullable(arrowIIFEReturnType(source, declaration, arrow)), Option.map((returnType) => {
203
136
  const insertAt = arrowReturnTypeInsertPosition(source, arrow);
204
137
  return { end: insertAt, start: insertAt, text: `: ${returnType}` };
205
- };
206
- const initializerReplacement = (source, node, declaration) => {
207
- if (!declaration.init) {
208
- return undefined;
209
- }
210
- if (declaration.init.type !== 'ConditionalExpression') {
211
- return arrowIIFEReturnTypeReplacement(source, declaration);
138
+ }))), Option.getOrUndefined);
139
+ const initializerReplacement = (source, node, declaration) => pipe(Option.fromNullable(declaration.init), Option.flatMap((init) => {
140
+ if (init.type !== 'ConditionalExpression') {
141
+ return Option.fromNullable(arrowIIFEReturnTypeReplacement(source, declaration));
212
142
  }
213
- const text = explicitInitializerText(source, node, declaration, declaration.init, lineIndent(source, nodeStart(node)));
214
- if (!text) {
215
- return undefined;
216
- }
217
- return { end: nodeEnd(node), start: nodeStart(node), text };
218
- };
143
+ return pipe(Option.fromNullable(explicitInitializerText(source, node, declaration, init, lineIndent(source, nodeStart(node)))), Option.map((text) => ({ end: nodeEnd(node), start: nodeStart(node), text })));
144
+ }), Option.getOrUndefined);
219
145
  const isVariableDeclarator = (node) => isObjectRecord(node) && node.type === 'VariableDeclarator';
220
146
  /**
221
147
  * Internal helper exported for the no-ternary codemod composition.
222
148
  *
223
149
  * @internal
224
150
  */
225
- export const variableReplacement = (source, node) => {
226
- if (node.declarations.length !== 1) {
227
- return undefined;
228
- }
229
- const [declaration] = node.declarations;
230
- if (!isVariableDeclarator(declaration) || !declaration.init) {
231
- return undefined;
232
- }
233
- return initializerReplacement(source, node, declaration);
234
- };
151
+ export const variableReplacement = (source, node) => pipe(node.declarations, Option.liftPredicate((declarations) => declarations.length === 1), Option.flatMap(Array.head), Option.filter(isVariableDeclarator), Option.filter((declaration) => Boolean(declaration.init)), Option.flatMap((declaration) => Option.fromNullable(initializerReplacement(source, node, declaration))), Option.getOrUndefined);
235
152
  //# sourceMappingURL=no-ternary-variable-initializers.js.map