eslint-plugin-ts-data-forge 0.1.0 → 0.1.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 (105) hide show
  1. package/dist/index.d.mts +5 -0
  2. package/dist/index.d.mts.map +1 -0
  3. package/dist/index.mjs +3 -0
  4. package/dist/index.mjs.map +1 -0
  5. package/dist/plugin.d.mts +3 -0
  6. package/dist/plugin.d.mts.map +1 -0
  7. package/dist/plugin.mjs +11 -0
  8. package/dist/plugin.mjs.map +1 -0
  9. package/dist/rule-types.d.mts +279 -0
  10. package/dist/rule-types.d.mts.map +1 -0
  11. package/dist/rule-types.mjs +2 -0
  12. package/dist/rule-types.mjs.map +1 -0
  13. package/dist/rules/ast-utils.d.mts +29 -0
  14. package/dist/rules/ast-utils.d.mts.map +1 -0
  15. package/dist/rules/ast-utils.mjs +54 -0
  16. package/dist/rules/ast-utils.mjs.map +1 -0
  17. package/dist/rules/branded-number-types.d.mts +5 -0
  18. package/dist/rules/branded-number-types.d.mts.map +1 -0
  19. package/dist/rules/branded-number-types.mjs +40 -0
  20. package/dist/rules/branded-number-types.mjs.map +1 -0
  21. package/dist/rules/constants.d.mts +2 -0
  22. package/dist/rules/constants.d.mts.map +1 -0
  23. package/dist/rules/constants.mjs +4 -0
  24. package/dist/rules/constants.mjs.map +1 -0
  25. package/dist/rules/import-utils.d.mts +30 -0
  26. package/dist/rules/import-utils.d.mts.map +1 -0
  27. package/dist/rules/import-utils.mjs +61 -0
  28. package/dist/rules/import-utils.mjs.map +1 -0
  29. package/dist/rules/index.d.mts +2 -0
  30. package/dist/rules/index.d.mts.map +1 -0
  31. package/dist/rules/index.mjs +2 -0
  32. package/dist/rules/index.mjs.map +1 -0
  33. package/dist/rules/no-unnecessary-type-guard.d.mts +11 -0
  34. package/dist/rules/no-unnecessary-type-guard.d.mts.map +1 -0
  35. package/dist/rules/no-unnecessary-type-guard.mjs +278 -0
  36. package/dist/rules/no-unnecessary-type-guard.mjs.map +1 -0
  37. package/dist/rules/prefer-arr-is-array.d.mts +6 -0
  38. package/dist/rules/prefer-arr-is-array.d.mts.map +1 -0
  39. package/dist/rules/prefer-arr-is-array.mjs +57 -0
  40. package/dist/rules/prefer-arr-is-array.mjs.map +1 -0
  41. package/dist/rules/prefer-arr-is-bounded-length-array.d.mts +6 -0
  42. package/dist/rules/prefer-arr-is-bounded-length-array.d.mts.map +1 -0
  43. package/dist/rules/prefer-arr-is-bounded-length-array.mjs +89 -0
  44. package/dist/rules/prefer-arr-is-bounded-length-array.mjs.map +1 -0
  45. package/dist/rules/prefer-arr-is-fixed-length-array.d.mts +6 -0
  46. package/dist/rules/prefer-arr-is-fixed-length-array.d.mts.map +1 -0
  47. package/dist/rules/prefer-arr-is-fixed-length-array.mjs +87 -0
  48. package/dist/rules/prefer-arr-is-fixed-length-array.mjs.map +1 -0
  49. package/dist/rules/prefer-arr-is-max-length-array.d.mts +6 -0
  50. package/dist/rules/prefer-arr-is-max-length-array.d.mts.map +1 -0
  51. package/dist/rules/prefer-arr-is-max-length-array.mjs +83 -0
  52. package/dist/rules/prefer-arr-is-max-length-array.mjs.map +1 -0
  53. package/dist/rules/prefer-arr-is-min-length-array.d.mts +6 -0
  54. package/dist/rules/prefer-arr-is-min-length-array.d.mts.map +1 -0
  55. package/dist/rules/prefer-arr-is-min-length-array.mjs +83 -0
  56. package/dist/rules/prefer-arr-is-min-length-array.mjs.map +1 -0
  57. package/dist/rules/prefer-arr-is-non-empty.d.mts +6 -0
  58. package/dist/rules/prefer-arr-is-non-empty.d.mts.map +1 -0
  59. package/dist/rules/prefer-arr-is-non-empty.mjs +80 -0
  60. package/dist/rules/prefer-arr-is-non-empty.mjs.map +1 -0
  61. package/dist/rules/prefer-arr-sum.d.mts +6 -0
  62. package/dist/rules/prefer-arr-sum.d.mts.map +1 -0
  63. package/dist/rules/prefer-arr-sum.mjs +136 -0
  64. package/dist/rules/prefer-arr-sum.mjs.map +1 -0
  65. package/dist/rules/prefer-as-int.d.mts +6 -0
  66. package/dist/rules/prefer-as-int.d.mts.map +1 -0
  67. package/dist/rules/prefer-as-int.mjs +77 -0
  68. package/dist/rules/prefer-as-int.mjs.map +1 -0
  69. package/dist/rules/prefer-canonical-array-slicing.d.mts +6 -0
  70. package/dist/rules/prefer-canonical-array-slicing.d.mts.map +1 -0
  71. package/dist/rules/prefer-canonical-array-slicing.mjs +362 -0
  72. package/dist/rules/prefer-canonical-array-slicing.mjs.map +1 -0
  73. package/dist/rules/prefer-comparison-over-nullish-guard.d.mts +6 -0
  74. package/dist/rules/prefer-comparison-over-nullish-guard.d.mts.map +1 -0
  75. package/dist/rules/prefer-comparison-over-nullish-guard.mjs +80 -0
  76. package/dist/rules/prefer-comparison-over-nullish-guard.mjs.map +1 -0
  77. package/dist/rules/prefer-is-non-null-object.d.mts +6 -0
  78. package/dist/rules/prefer-is-non-null-object.d.mts.map +1 -0
  79. package/dist/rules/prefer-is-non-null-object.mjs +81 -0
  80. package/dist/rules/prefer-is-non-null-object.mjs.map +1 -0
  81. package/dist/rules/prefer-is-record-and-has-key.d.mts +6 -0
  82. package/dist/rules/prefer-is-record-and-has-key.d.mts.map +1 -0
  83. package/dist/rules/prefer-is-record-and-has-key.mjs +97 -0
  84. package/dist/rules/prefer-is-record-and-has-key.mjs.map +1 -0
  85. package/dist/rules/prefer-num-safe-parse-float.d.mts +14 -0
  86. package/dist/rules/prefer-num-safe-parse-float.d.mts.map +1 -0
  87. package/dist/rules/prefer-num-safe-parse-float.mjs +84 -0
  88. package/dist/rules/prefer-num-safe-parse-float.mjs.map +1 -0
  89. package/dist/rules/prefer-num-safe-parse-int.d.mts +14 -0
  90. package/dist/rules/prefer-num-safe-parse-int.d.mts.map +1 -0
  91. package/dist/rules/prefer-num-safe-parse-int.mjs +88 -0
  92. package/dist/rules/prefer-num-safe-parse-int.mjs.map +1 -0
  93. package/dist/rules/prefer-range-for-loop.d.mts +6 -0
  94. package/dist/rules/prefer-range-for-loop.d.mts.map +1 -0
  95. package/dist/rules/prefer-range-for-loop.mjs +103 -0
  96. package/dist/rules/prefer-range-for-loop.mjs.map +1 -0
  97. package/dist/rules/rules.d.mts +21 -0
  98. package/dist/rules/rules.d.mts.map +1 -0
  99. package/dist/rules/rules.mjs +38 -0
  100. package/dist/rules/rules.mjs.map +1 -0
  101. package/dist/types.d.mts +4 -0
  102. package/dist/types.d.mts.map +1 -0
  103. package/dist/types.mjs +2 -0
  104. package/dist/types.mjs.map +1 -0
  105. package/package.json +20 -20
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefer-range-for-loop.mjs","sources":["../../src/rules/prefer-range-for-loop.mts"],"sourcesContent":["import {\n AST_NODE_TYPES,\n type TSESLint,\n type TSESTree,\n} from '@typescript-eslint/utils';\nimport { Arr } from 'ts-data-forge';\nimport {\n buildImportFixes,\n getNamedImports,\n getTsDataForgeImport,\n} from './import-utils.mjs';\n\ntype Options = readonly [];\n\ntype MessageIds = 'useRangeForLoop';\n\nexport const preferRangeForLoop: TSESLint.RuleModule<MessageIds, Options> = {\n meta: {\n type: 'suggestion',\n docs: {\n description:\n 'Replace `for (let i = begin; i < end; ++i)` with `for (const i of range(begin, end))` from ts-data-forge.',\n },\n fixable: 'code',\n schema: [],\n messages: {\n useRangeForLoop:\n 'Replace with `for (const {{varName}} of range({{begin}}, {{end}}))` from ts-data-forge.',\n },\n },\n\n create: (context) => {\n const sourceCode = context.sourceCode;\n\n const program = sourceCode.ast;\n\n const tsDataForgeImport = getTsDataForgeImport(program);\n\n const mut_nodesToFix: {\n node: TSESTree.ForStatement;\n varName: string;\n begin: string;\n end: string;\n step?: string;\n }[] = [];\n\n return {\n ForStatement: (node) => {\n // Check init: let i = begin\n if (\n node.init?.type !== AST_NODE_TYPES.VariableDeclaration ||\n node.init.kind !== 'let' ||\n !Arr.isFixedLengthTuple(node.init.declarations, 1)\n ) {\n return;\n }\n\n const declaration = node.init.declarations[0];\n\n if (\n declaration.id.type !== AST_NODE_TYPES.Identifier ||\n declaration.init === null\n ) {\n return;\n }\n\n const varName = declaration.id.name;\n\n const beginExpr = declaration.init;\n\n // Check test: i < end\n if (\n node.test?.type !== AST_NODE_TYPES.BinaryExpression ||\n node.test.operator !== '<' ||\n node.test.left.type !== AST_NODE_TYPES.Identifier ||\n node.test.left.name !== varName\n ) {\n return;\n }\n\n const endExpr = node.test.right;\n\n // Check update: ++i, i++, i += 1, or i += step\n if (node.update === null) return;\n\n let mut_step: string | undefined;\n\n if (node.update.type === AST_NODE_TYPES.UpdateExpression) {\n // ++i or i++\n if (\n node.update.operator === '++' &&\n node.update.argument.type === AST_NODE_TYPES.Identifier &&\n node.update.argument.name === varName\n ) {\n mut_step = undefined; // step defaults to 1\n } else {\n return;\n }\n } else if (\n node.update.type === AST_NODE_TYPES.AssignmentExpression &&\n node.update.operator === '+=' &&\n node.update.left.type === AST_NODE_TYPES.Identifier &&\n node.update.left.name === varName\n ) {\n // i += step\n const stepValue = node.update.right;\n\n if (stepValue.type === AST_NODE_TYPES.Literal) {\n const stepNum = stepValue.value;\n\n // Only support positive integer steps\n if (typeof stepNum === 'number' && stepNum > 0) {\n mut_step = stepNum === 1 ? undefined : String(stepNum);\n } else {\n return;\n }\n } else {\n // Variable step like i += step\n mut_step = sourceCode.getText(stepValue);\n }\n } else {\n return;\n }\n\n const beginText = sourceCode.getText(beginExpr);\n\n const endText = sourceCode.getText(endExpr);\n\n mut_nodesToFix.push({\n node,\n varName,\n begin: beginText,\n end: endText,\n step: mut_step,\n });\n },\n 'Program:exit': () => {\n const namedImports = getNamedImports(tsDataForgeImport);\n\n const hasRangeImport = namedImports.includes('range');\n\n for (const [\n index,\n { node, varName, begin, end, step },\n ] of mut_nodesToFix.entries()) {\n context.report({\n node: node.init ?? node,\n messageId: 'useRangeForLoop',\n data: {\n varName,\n begin,\n end,\n },\n fix: (fixer) => {\n const bodyText = sourceCode.getText(node.body);\n\n const rangeArgs =\n step === undefined\n ? `${begin}, ${end}`\n : `${begin}, ${end}, ${step}`;\n\n const replacement = `for (const ${varName} of range(${rangeArgs})) ${bodyText}`;\n\n const importFixes =\n index === 0 && !hasRangeImport\n ? buildImportFixes(fixer, program, tsDataForgeImport, [\n 'range',\n ])\n : [];\n\n return [...importFixes, fixer.replaceText(node, replacement)];\n },\n });\n }\n },\n };\n },\n defaultOptions: [],\n} as const;\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export declare const tsDataForgeRules: {
2
+ readonly 'prefer-canonical-array-slicing': import("@typescript-eslint/utils/ts-eslint").RuleModule<"preferCanonicalArraySlicing", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
3
+ readonly 'prefer-arr-is-min-length-array': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useIsMinLengthArray", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
4
+ readonly 'prefer-arr-is-max-length-array': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useIsMaxLengthArray", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
5
+ readonly 'prefer-arr-is-bounded-length-array': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useIsBoundedLengthArray", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
6
+ readonly 'prefer-arr-is-fixed-length-array': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useIsFixedLengthArray", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
7
+ readonly 'prefer-arr-is-array': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useArrIsArray", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
8
+ readonly 'prefer-arr-is-non-empty': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useIsNonEmpty", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
9
+ readonly 'prefer-arr-sum': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useArrSum" | "useArrSumBy", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
10
+ readonly 'prefer-as-int': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useBrandedNumberCastFunction", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
11
+ readonly 'prefer-is-non-null-object': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useIsNonNullObject", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
12
+ readonly 'prefer-range-for-loop': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useRangeForLoop", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
13
+ readonly 'prefer-is-record-and-has-key': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useIsRecordAndHasKey", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
14
+ readonly 'prefer-num-safe-parse-int': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useSafeParseInt", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
15
+ readonly 'prefer-num-safe-parse-float': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useSafeParseFloat", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
16
+ readonly 'no-unnecessary-type-guard': import("@typescript-eslint/utils/ts-eslint").RuleModule<"alwaysFalse" | "alwaysTrue" | "replaceTypeGuard", readonly [(Readonly<{
17
+ ignore?: readonly string[];
18
+ }> | undefined)?], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
19
+ readonly 'prefer-comparison-over-nullish-guard': import("@typescript-eslint/utils/ts-eslint").RuleModule<"preferComparison", readonly [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
20
+ };
21
+ //# sourceMappingURL=rules.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.mts","sourceRoot":"","sources":["../../src/rules/rules.mts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;CAiBa,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { noUnnecessaryTypeGuard } from './no-unnecessary-type-guard.mjs';
2
+ import { preferArrIsArray } from './prefer-arr-is-array.mjs';
3
+ import { preferArrIsBoundedLengthArray } from './prefer-arr-is-bounded-length-array.mjs';
4
+ import { preferArrIsFixedLengthArray } from './prefer-arr-is-fixed-length-array.mjs';
5
+ import { preferArrIsMaxLengthArray } from './prefer-arr-is-max-length-array.mjs';
6
+ import { preferArrIsMinLengthArray } from './prefer-arr-is-min-length-array.mjs';
7
+ import { preferArrIsNonEmpty } from './prefer-arr-is-non-empty.mjs';
8
+ import { preferArrSum } from './prefer-arr-sum.mjs';
9
+ import { preferAsInt } from './prefer-as-int.mjs';
10
+ import { preferCanonicalArraySlicing } from './prefer-canonical-array-slicing.mjs';
11
+ import { preferComparisonOverNullishGuard } from './prefer-comparison-over-nullish-guard.mjs';
12
+ import { preferIsNonNullObject } from './prefer-is-non-null-object.mjs';
13
+ import { preferIsRecordAndHasKey } from './prefer-is-record-and-has-key.mjs';
14
+ import { preferNumSafeParseFloat } from './prefer-num-safe-parse-float.mjs';
15
+ import { preferNumSafeParseInt } from './prefer-num-safe-parse-int.mjs';
16
+ import { preferRangeForLoop } from './prefer-range-for-loop.mjs';
17
+
18
+ const tsDataForgeRules = {
19
+ "prefer-canonical-array-slicing": preferCanonicalArraySlicing,
20
+ "prefer-arr-is-min-length-array": preferArrIsMinLengthArray,
21
+ "prefer-arr-is-max-length-array": preferArrIsMaxLengthArray,
22
+ "prefer-arr-is-bounded-length-array": preferArrIsBoundedLengthArray,
23
+ "prefer-arr-is-fixed-length-array": preferArrIsFixedLengthArray,
24
+ "prefer-arr-is-array": preferArrIsArray,
25
+ "prefer-arr-is-non-empty": preferArrIsNonEmpty,
26
+ "prefer-arr-sum": preferArrSum,
27
+ "prefer-as-int": preferAsInt,
28
+ "prefer-is-non-null-object": preferIsNonNullObject,
29
+ "prefer-range-for-loop": preferRangeForLoop,
30
+ "prefer-is-record-and-has-key": preferIsRecordAndHasKey,
31
+ "prefer-num-safe-parse-int": preferNumSafeParseInt,
32
+ "prefer-num-safe-parse-float": preferNumSafeParseFloat,
33
+ "no-unnecessary-type-guard": noUnnecessaryTypeGuard,
34
+ "prefer-comparison-over-nullish-guard": preferComparisonOverNullishGuard
35
+ };
36
+
37
+ export { tsDataForgeRules };
38
+ //# sourceMappingURL=rules.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.mjs","sources":["../../src/rules/rules.mts"],"sourcesContent":["import { type ESLintPlugin } from '../types.mjs';\nimport { noUnnecessaryTypeGuard } from './no-unnecessary-type-guard.mjs';\nimport { preferArrIsArray } from './prefer-arr-is-array.mjs';\nimport { preferArrIsBoundedLengthArray } from './prefer-arr-is-bounded-length-array.mjs';\nimport { preferArrIsFixedLengthArray } from './prefer-arr-is-fixed-length-array.mjs';\nimport { preferArrIsMaxLengthArray } from './prefer-arr-is-max-length-array.mjs';\nimport { preferArrIsMinLengthArray } from './prefer-arr-is-min-length-array.mjs';\nimport { preferArrIsNonEmpty } from './prefer-arr-is-non-empty.mjs';\nimport { preferArrSum } from './prefer-arr-sum.mjs';\nimport { preferAsInt } from './prefer-as-int.mjs';\nimport { preferCanonicalArraySlicing } from './prefer-canonical-array-slicing.mjs';\nimport { preferComparisonOverNullishGuard } from './prefer-comparison-over-nullish-guard.mjs';\nimport { preferIsNonNullObject } from './prefer-is-non-null-object.mjs';\nimport { preferIsRecordAndHasKey } from './prefer-is-record-and-has-key.mjs';\nimport { preferNumSafeParseFloat } from './prefer-num-safe-parse-float.mjs';\nimport { preferNumSafeParseInt } from './prefer-num-safe-parse-int.mjs';\nimport { preferRangeForLoop } from './prefer-range-for-loop.mjs';\n\nexport const tsDataForgeRules = {\n 'prefer-canonical-array-slicing': preferCanonicalArraySlicing,\n 'prefer-arr-is-min-length-array': preferArrIsMinLengthArray,\n 'prefer-arr-is-max-length-array': preferArrIsMaxLengthArray,\n 'prefer-arr-is-bounded-length-array': preferArrIsBoundedLengthArray,\n 'prefer-arr-is-fixed-length-array': preferArrIsFixedLengthArray,\n 'prefer-arr-is-array': preferArrIsArray,\n 'prefer-arr-is-non-empty': preferArrIsNonEmpty,\n 'prefer-arr-sum': preferArrSum,\n 'prefer-as-int': preferAsInt,\n 'prefer-is-non-null-object': preferIsNonNullObject,\n 'prefer-range-for-loop': preferRangeForLoop,\n 'prefer-is-record-and-has-key': preferIsRecordAndHasKey,\n 'prefer-num-safe-parse-int': preferNumSafeParseInt,\n 'prefer-num-safe-parse-float': preferNumSafeParseFloat,\n 'no-unnecessary-type-guard': noUnnecessaryTypeGuard,\n 'prefer-comparison-over-nullish-guard': preferComparisonOverNullishGuard,\n} as const satisfies ESLintPlugin['rules'];\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAkBO,MAAM,gBAAA,GAAmB;AAAA,EAC9B,gCAAA,EAAkC,2BAAA;AAAA,EAClC,gCAAA,EAAkC,yBAAA;AAAA,EAClC,gCAAA,EAAkC,yBAAA;AAAA,EAClC,oCAAA,EAAsC,6BAAA;AAAA,EACtC,kCAAA,EAAoC,2BAAA;AAAA,EACpC,qBAAA,EAAuB,gBAAA;AAAA,EACvB,yBAAA,EAA2B,mBAAA;AAAA,EAC3B,gBAAA,EAAkB,YAAA;AAAA,EAClB,eAAA,EAAiB,WAAA;AAAA,EACjB,2BAAA,EAA6B,qBAAA;AAAA,EAC7B,uBAAA,EAAyB,kBAAA;AAAA,EACzB,8BAAA,EAAgC,uBAAA;AAAA,EAChC,2BAAA,EAA6B,qBAAA;AAAA,EAC7B,6BAAA,EAA+B,uBAAA;AAAA,EAC/B,2BAAA,EAA6B,sBAAA;AAAA,EAC7B,sCAAA,EAAwC;AAC1C;;;;"}
@@ -0,0 +1,4 @@
1
+ import { type TSESLint } from '@typescript-eslint/utils';
2
+ import { type DeepReadonly } from 'ts-type-forge';
3
+ export type ESLintPlugin = DeepReadonly<TSESLint.FlatConfig.Plugin>;
4
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC"}
package/dist/types.mjs ADDED
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-ts-data-forge",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "private": false,
5
5
  "description": "ESLint rules that steer code toward ts-data-forge idioms.",
6
6
  "keywords": [
@@ -33,6 +33,24 @@
33
33
  "README.md",
34
34
  "LICENSE"
35
35
  ],
36
+ "dependencies": {
37
+ "@typescript-eslint/utils": "8.63.0",
38
+ "ts-type-forge": "^7.0.0",
39
+ "ts-data-forge": "11.0.1"
40
+ },
41
+ "devDependencies": {
42
+ "@typescript-eslint/parser": "8.63.0",
43
+ "@typescript-eslint/rule-tester": "8.63.0",
44
+ "dedent": "1.7.2"
45
+ },
46
+ "peerDependencies": {
47
+ "eslint": ">=9.0.0",
48
+ "typescript": ">=5.0.0"
49
+ },
50
+ "engines": {
51
+ "node": ">=22.22.2",
52
+ "pnpm": ">=9.0.0"
53
+ },
36
54
  "scripts": {
37
55
  "build": "tsx ./scripts/cmd/build.mts",
38
56
  "build:min": "tsx ./scripts/cmd/build.mts --skip-check",
@@ -52,23 +70,5 @@
52
70
  "type-check": "node ../../node_modules/typescript-native/bin/tsc --noEmit",
53
71
  "z:prettier": "prettier --config ../../.prettierrc --ignore-path ../../.prettierignore --ignore-path ../../.gitignore --ignore-unknown --no-error-on-unmatched-pattern --write",
54
72
  "z:vitest": "vitest --config ./configs/vitest.config.mts"
55
- },
56
- "dependencies": {
57
- "@typescript-eslint/utils": "8.63.0",
58
- "ts-data-forge": "workspace:*",
59
- "ts-type-forge": "^7.0.0"
60
- },
61
- "devDependencies": {
62
- "@typescript-eslint/parser": "8.63.0",
63
- "@typescript-eslint/rule-tester": "8.63.0",
64
- "dedent": "1.7.2"
65
- },
66
- "peerDependencies": {
67
- "eslint": ">=9.0.0",
68
- "typescript": ">=5.0.0"
69
- },
70
- "engines": {
71
- "node": ">=22.22.2",
72
- "pnpm": ">=9.0.0"
73
73
  }
74
- }
74
+ }