@futdevpro/dynamo-eslint 1.14.2 → 1.14.4

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 (100) hide show
  1. package/.eslintrc.json +4 -0
  2. package/.vscode/settings.json +13 -0
  3. package/README.md +279 -29
  4. package/build/configs/base.d.ts +6 -81
  5. package/build/configs/base.d.ts.map +1 -1
  6. package/build/configs/base.js +90 -54
  7. package/build/configs/base.js.map +1 -1
  8. package/build/configs/fsm.d.ts +1 -85
  9. package/build/configs/fsm.d.ts.map +1 -1
  10. package/build/configs/fsm.js +3 -6
  11. package/build/configs/fsm.js.map +1 -1
  12. package/build/configs/ngx-package.d.ts +1 -85
  13. package/build/configs/ngx-package.d.ts.map +1 -1
  14. package/build/configs/ngx-package.js +3 -6
  15. package/build/configs/ngx-package.js.map +1 -1
  16. package/build/configs/ngx.d.ts +4 -85
  17. package/build/configs/ngx.d.ts.map +1 -1
  18. package/build/configs/ngx.js +67 -11
  19. package/build/configs/ngx.js.map +1 -1
  20. package/build/configs/nts-package.d.ts +1 -87
  21. package/build/configs/nts-package.d.ts.map +1 -1
  22. package/build/configs/nts-package.js +12 -10
  23. package/build/configs/nts-package.js.map +1 -1
  24. package/build/configs/nts.d.ts +1 -86
  25. package/build/configs/nts.d.ts.map +1 -1
  26. package/build/configs/nts.js +26 -11
  27. package/build/configs/nts.js.map +1 -1
  28. package/build/plugin/index.d.ts +2 -0
  29. package/build/plugin/index.d.ts.map +1 -1
  30. package/build/plugin/index.js +3 -0
  31. package/build/plugin/index.js.map +1 -1
  32. package/build/plugin/rules/explicit-types.d.ts +4 -0
  33. package/build/plugin/rules/explicit-types.d.ts.map +1 -0
  34. package/build/plugin/rules/explicit-types.js +165 -0
  35. package/build/plugin/rules/explicit-types.js.map +1 -0
  36. package/build/plugin/rules/explicit-types.spec.d.ts +2 -0
  37. package/build/plugin/rules/explicit-types.spec.d.ts.map +1 -0
  38. package/build/plugin/rules/explicit-types.spec.js +162 -0
  39. package/build/plugin/rules/explicit-types.spec.js.map +1 -0
  40. package/build/plugin/rules/import/no-import-type.d.ts.map +1 -1
  41. package/build/plugin/rules/import/no-import-type.js +23 -12
  42. package/build/plugin/rules/import/no-import-type.js.map +1 -1
  43. package/build/plugin/rules/import/no-js-import.d.ts.map +1 -1
  44. package/build/plugin/rules/import/no-js-import.js +22 -11
  45. package/build/plugin/rules/import/no-js-import.js.map +1 -1
  46. package/build/plugin/rules/naming-patterns.d.ts.map +1 -1
  47. package/build/plugin/rules/naming-patterns.js +7 -2
  48. package/build/plugin/rules/naming-patterns.js.map +1 -1
  49. package/build/scripts/dynamo-fix.d.ts +24 -0
  50. package/build/scripts/dynamo-fix.d.ts.map +1 -1
  51. package/build/scripts/dynamo-fix.js +57 -2
  52. package/build/scripts/dynamo-fix.js.map +1 -1
  53. package/build/scripts/eslintrc-audit.d.ts +24 -0
  54. package/build/scripts/eslintrc-audit.d.ts.map +1 -1
  55. package/build/scripts/eslintrc-audit.js +65 -0
  56. package/build/scripts/eslintrc-audit.js.map +1 -1
  57. package/build/scripts/fix-return-types.d.ts +25 -0
  58. package/build/scripts/fix-return-types.d.ts.map +1 -1
  59. package/build/scripts/fix-return-types.js +80 -9
  60. package/build/scripts/fix-return-types.js.map +1 -1
  61. package/build/scripts/validate-imports.d.ts +24 -0
  62. package/build/scripts/validate-imports.d.ts.map +1 -1
  63. package/build/scripts/validate-imports.js +62 -1
  64. package/build/scripts/validate-imports.js.map +1 -1
  65. package/build/scripts/validate-naming.d.ts +24 -0
  66. package/build/scripts/validate-naming.d.ts.map +1 -1
  67. package/build/scripts/validate-naming.js +72 -9
  68. package/build/scripts/validate-naming.js.map +1 -1
  69. package/eslint.config.js +9 -49
  70. package/futdevpro-dynamo-eslint-01.14.4.tgz +0 -0
  71. package/package.json +1 -1
  72. package/samples/.vscode/settings.json +13 -0
  73. package/samples/base/eslint.config.js +3 -0
  74. package/samples/fsm/.eslintrc.json +4 -0
  75. package/samples/fsm/eslint.config.js +3 -0
  76. package/samples/ngx/eslint.config.js +3 -0
  77. package/samples/ngx-package/.eslintrc.json +4 -0
  78. package/samples/ngx-package/eslint.config.js +3 -0
  79. package/samples/nts/eslint.config.js +3 -0
  80. package/samples/nts-package/.eslintrc.json +4 -0
  81. package/samples/nts-package/eslint.config.js +3 -0
  82. package/samples/package.json.example +26 -0
  83. package/src/configs/base.ts +90 -54
  84. package/src/configs/fsm.ts +3 -6
  85. package/src/configs/ngx-package.ts +3 -6
  86. package/src/configs/ngx.ts +67 -11
  87. package/src/configs/nts-package.ts +12 -10
  88. package/src/configs/nts.ts +26 -11
  89. package/src/plugin/index.ts +3 -0
  90. package/src/plugin/rules/explicit-types.spec.ts +190 -0
  91. package/src/plugin/rules/explicit-types.ts +169 -0
  92. package/src/plugin/rules/import/no-import-type.ts +21 -12
  93. package/src/plugin/rules/import/no-js-import.ts +21 -13
  94. package/src/plugin/rules/naming-patterns.ts +6 -2
  95. package/src/scripts/dynamo-fix.ts +66 -2
  96. package/src/scripts/eslintrc-audit.ts +73 -2
  97. package/src/scripts/fix-return-types.ts +93 -9
  98. package/src/scripts/validate-imports.ts +71 -2
  99. package/src/scripts/validate-naming.ts +108 -17
  100. package/futdevpro-dynamo-eslint-01.14.2.tgz +0 -0
@@ -1,17 +1,32 @@
1
- "use strict";
2
- const base = require("./base");
1
+ const ntsBaseConfig = require('./base');
3
2
  /**
4
3
  * Rulesets For Dynamo Based Systems
5
4
  * NTS: Node TypeScript
5
+ * ESLint v9 Flat Config Format
6
6
  */
7
- const config = {
8
- ...base,
9
- env: { node: true, es2021: true },
10
- parserOptions: { ...base.parserOptions, sourceType: 'module' },
11
- rules: {
12
- ...base.rules,
13
- 'max-lines': ['warn', 1500],
7
+ module.exports = [
8
+ ...ntsBaseConfig,
9
+ {
10
+ files: ['**/*.ts', '**/*.tsx'],
11
+ languageOptions: {
12
+ ...ntsBaseConfig[1].languageOptions,
13
+ globals: {
14
+ // Node.js globals
15
+ process: 'readonly',
16
+ Buffer: 'readonly',
17
+ global: 'readonly',
18
+ __dirname: 'readonly',
19
+ __filename: 'readonly',
20
+ module: 'readonly',
21
+ require: 'readonly',
22
+ exports: 'readonly',
23
+ console: 'readonly'
24
+ }
25
+ },
26
+ rules: {
27
+ ...ntsBaseConfig[1].rules,
28
+ 'max-lines': ['warn', 1500],
29
+ },
14
30
  },
15
- };
16
- module.exports = config;
31
+ ];
17
32
  //# sourceMappingURL=nts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nts.js","sourceRoot":"","sources":["../../src/configs/nts.ts"],"names":[],"mappings":";AAAA,+BAAgC;AAEhC;;;GAGG;AACH,MAAM,MAAM,GAAG;IACb,GAAG,IAAI;IACP,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACjC,aAAa,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE;IAC9D,KAAK,EAAE;QACL,GAAG,IAAI,CAAC,KAAK;QACb,WAAW,EAAE,CAAE,MAAM,EAAE,IAAI,CAAE;KAC9B;CACF,CAAC;AAEF,iBAAS,MAAM,CAAC"}
1
+ {"version":3,"file":"nts.js","sourceRoot":"","sources":["../../src/configs/nts.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,aAAa;IAChB;QACE,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;QAC9B,eAAe,EAAE;YACf,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe;YACnC,OAAO,EAAE;gBACP,kBAAkB;gBAClB,OAAO,EAAE,UAAU;gBACnB,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,UAAU;gBACtB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;aACpB;SACF;QACD,KAAK,EAAE;YACL,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK;YACzB,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;SAC5B;KACF;CACF,CAAC"}
@@ -1,5 +1,6 @@
1
1
  declare const _default: {
2
2
  rules: {
3
+ 'explicit-types': import("eslint").Rule.RuleModule;
3
4
  'import-order': import("eslint").Rule.RuleModule;
4
5
  'no-import-type': import("eslint").Rule.RuleModule;
5
6
  'no-js-import': import("eslint").Rule.RuleModule;
@@ -8,6 +9,7 @@ declare const _default: {
8
9
  configs: {
9
10
  recommended: {
10
11
  rules: {
12
+ '@futdevpro/dynamo/explicit-types': string;
11
13
  '@futdevpro/dynamo/import-order': string;
12
14
  '@futdevpro/dynamo/no-import-type': string;
13
15
  '@futdevpro/dynamo/no-js-import': string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAKA,kBAmBE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA,kBAqBE"}
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  const tslib_1 = require("tslib");
3
+ const explicit_types_1 = tslib_1.__importDefault(require("./rules/explicit-types"));
3
4
  const import_order_1 = tslib_1.__importDefault(require("./rules/import/import-order"));
4
5
  const naming_patterns_1 = tslib_1.__importDefault(require("./rules/naming-patterns"));
5
6
  const no_import_type_1 = tslib_1.__importDefault(require("./rules/import/no-import-type"));
6
7
  const no_js_import_1 = tslib_1.__importDefault(require("./rules/import/no-js-import"));
7
8
  module.exports = {
8
9
  rules: {
10
+ 'explicit-types': explicit_types_1.default,
9
11
  'import-order': import_order_1.default,
10
12
  'no-import-type': no_import_type_1.default,
11
13
  'no-js-import': no_js_import_1.default,
@@ -14,6 +16,7 @@ module.exports = {
14
16
  configs: {
15
17
  recommended: {
16
18
  rules: {
19
+ '@futdevpro/dynamo/explicit-types': 'warn',
17
20
  '@futdevpro/dynamo/import-order': 'warn',
18
21
  '@futdevpro/dynamo/no-import-type': 'warn',
19
22
  '@futdevpro/dynamo/no-js-import': 'warn',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":";;AAAA,uFAA0D;AAC1D,sFAAyD;AACzD,2FAA6D;AAC7D,uFAA4D;AAE5D,iBAAS;IACP,KAAK,EAAE;QACL,cAAc,EAAE,sBAAe;QAC/B,gBAAgB,EAAE,wBAAgB;QAClC,cAAc,EAAE,sBAAiB;QAEjC,iBAAiB,EAAE,yBAAkB;KACtC;IACD,OAAO,EAAE;QACP,WAAW,EAAE;YACX,KAAK,EAAE;gBACL,gCAAgC,EAAE,MAAM;gBACxC,kCAAkC,EAAE,MAAM;gBAC1C,gCAAgC,EAAE,MAAM;gBAExC,mCAAmC,EAAE,MAAM;aAC5C;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":";;AAAA,oFAAuD;AACvD,uFAA0D;AAC1D,sFAAyD;AACzD,2FAA6D;AAC7D,uFAA4D;AAE5D,iBAAS;IACP,KAAK,EAAE;QACL,gBAAgB,EAAE,wBAAiB;QACnC,cAAc,EAAE,sBAAe;QAC/B,gBAAgB,EAAE,wBAAgB;QAClC,cAAc,EAAE,sBAAiB;QAEjC,iBAAiB,EAAE,yBAAkB;KACtC;IACD,OAAO,EAAE;QACP,WAAW,EAAE;YACX,KAAK,EAAE;gBACL,kCAAkC,EAAE,MAAM;gBAC1C,gCAAgC,EAAE,MAAM;gBACxC,kCAAkC,EAAE,MAAM;gBAC1C,gCAAgC,EAAE,MAAM;gBAExC,mCAAmC,EAAE,MAAM;aAC5C;SACF;KACF;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Rule } from 'eslint';
2
+ declare const rule: Rule.RuleModule;
3
+ export default rule;
4
+ //# sourceMappingURL=explicit-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explicit-types.d.ts","sourceRoot":"","sources":["../../../src/plugin/rules/explicit-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UAoKhB,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const rule = {
4
+ meta: {
5
+ type: 'suggestion',
6
+ docs: {
7
+ description: 'Enforce explicit type annotations on all TypeScript declarations',
8
+ recommended: true,
9
+ },
10
+ schema: [],
11
+ messages: {
12
+ missingReturnType: 'Function "{{name}}" must have an explicit return type annotation.',
13
+ missingArrowReturnType: 'Arrow function must have an explicit return type annotation.',
14
+ missingVariableType: 'Variable "{{name}}" must have an explicit type annotation.',
15
+ missingParameterType: 'Parameter "{{name}}" must have an explicit type annotation.',
16
+ missingPropertyType: 'Class property "{{name}}" must have an explicit type annotation.',
17
+ missingDestructuringType: 'Destructuring assignment must have explicit type annotations.',
18
+ },
19
+ },
20
+ create(context) {
21
+ return {
22
+ // Function declarations
23
+ FunctionDeclaration(node) {
24
+ try {
25
+ // Check return type
26
+ if (!node.returnType) {
27
+ context.report({
28
+ node,
29
+ messageId: 'missingReturnType',
30
+ data: { name: node.id?.name || 'anonymous' },
31
+ });
32
+ }
33
+ // Check function parameters with defensive checks
34
+ if (node.params && Array.isArray(node.params)) {
35
+ node.params.forEach((param) => {
36
+ try {
37
+ if (param && param.type === 'Identifier' && !param.typeAnnotation) {
38
+ context.report({
39
+ node: param,
40
+ messageId: 'missingParameterType',
41
+ data: { name: param.name || 'unknown' },
42
+ });
43
+ }
44
+ }
45
+ catch (paramError) {
46
+ console.error('[explicit-types] Error processing function parameter:', paramError);
47
+ }
48
+ });
49
+ }
50
+ }
51
+ catch (error) {
52
+ console.error('[explicit-types] Error in FunctionDeclaration visitor:', error);
53
+ }
54
+ },
55
+ // Arrow functions
56
+ ArrowFunctionExpression(node) {
57
+ try {
58
+ // Check return type
59
+ if (!node.returnType) {
60
+ context.report({
61
+ node,
62
+ messageId: 'missingArrowReturnType',
63
+ });
64
+ }
65
+ // Check arrow function parameters with defensive checks
66
+ if (node.params && Array.isArray(node.params)) {
67
+ node.params.forEach((param) => {
68
+ try {
69
+ if (param && param.type === 'Identifier' && !param.typeAnnotation) {
70
+ context.report({
71
+ node: param,
72
+ messageId: 'missingParameterType',
73
+ data: { name: param.name || 'unknown' },
74
+ });
75
+ }
76
+ }
77
+ catch (paramError) {
78
+ console.error('[explicit-types] Error processing arrow function parameter:', paramError);
79
+ }
80
+ });
81
+ }
82
+ }
83
+ catch (error) {
84
+ console.error('[explicit-types] Error in ArrowFunctionExpression visitor:', error);
85
+ }
86
+ },
87
+ // Variable declarations
88
+ VariableDeclarator(node) {
89
+ try {
90
+ // Defensive check for node.id
91
+ if (!node.id) {
92
+ return;
93
+ }
94
+ if (!node.id.typeAnnotation) {
95
+ // Skip if variable is initialized with a typed value that can be inferred
96
+ const hasTypedInitializer = node.init && (node.init.type === 'CallExpression' ||
97
+ node.init.type === 'NewExpression' ||
98
+ node.init.type === 'ArrayExpression' ||
99
+ node.init.type === 'ObjectExpression' ||
100
+ node.init.type === 'Literal');
101
+ if (!hasTypedInitializer) {
102
+ context.report({
103
+ node: node.id,
104
+ messageId: 'missingVariableType',
105
+ data: { name: node.id?.name || 'destructured' },
106
+ });
107
+ }
108
+ }
109
+ }
110
+ catch (error) {
111
+ console.error('[explicit-types] Error in VariableDeclarator visitor:', error);
112
+ }
113
+ },
114
+ // Class properties
115
+ PropertyDefinition(node) {
116
+ try {
117
+ // Defensive check for node.key
118
+ if (!node.key) {
119
+ return;
120
+ }
121
+ if (!node.typeAnnotation && !node.value) {
122
+ context.report({
123
+ node: node.key,
124
+ messageId: 'missingPropertyType',
125
+ data: { name: node.key?.name || 'computed' },
126
+ });
127
+ }
128
+ }
129
+ catch (error) {
130
+ console.error('[explicit-types] Error in PropertyDefinition visitor:', error);
131
+ }
132
+ },
133
+ // Object destructuring
134
+ ObjectPattern(node) {
135
+ try {
136
+ if (!node.typeAnnotation) {
137
+ context.report({
138
+ node,
139
+ messageId: 'missingDestructuringType',
140
+ });
141
+ }
142
+ }
143
+ catch (error) {
144
+ console.error('[explicit-types] Error in ObjectPattern visitor:', error);
145
+ }
146
+ },
147
+ // Array destructuring
148
+ ArrayPattern(node) {
149
+ try {
150
+ if (!node.typeAnnotation) {
151
+ context.report({
152
+ node,
153
+ messageId: 'missingDestructuringType',
154
+ });
155
+ }
156
+ }
157
+ catch (error) {
158
+ console.error('[explicit-types] Error in ArrayPattern visitor:', error);
159
+ }
160
+ },
161
+ };
162
+ },
163
+ };
164
+ exports.default = rule;
165
+ //# sourceMappingURL=explicit-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explicit-types.js","sourceRoot":"","sources":["../../../src/plugin/rules/explicit-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=explicit-types.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explicit-types.spec.d.ts","sourceRoot":"","sources":["../../../src/plugin/rules/explicit-types.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const explicit_types_1 = tslib_1.__importDefault(require("./explicit-types"));
5
+ describe('| explicit-types', () => {
6
+ it('| should be a valid ESLint rule', () => {
7
+ expect(explicit_types_1.default.meta?.type).toBe('suggestion');
8
+ expect(explicit_types_1.default.meta?.docs?.description).toContain('explicit type annotations');
9
+ });
10
+ it('| should have create function that returns visitor object', () => {
11
+ const mockContext = {
12
+ report: () => { },
13
+ };
14
+ const result = explicit_types_1.default.create(mockContext);
15
+ expect(typeof result).toBe('object');
16
+ expect(typeof result.FunctionDeclaration).toBe('function');
17
+ expect(typeof result.ArrowFunctionExpression).toBe('function');
18
+ expect(typeof result.VariableDeclarator).toBe('function');
19
+ expect(typeof result.PropertyDefinition).toBe('function');
20
+ });
21
+ it('| should report missing return types on function declarations', () => {
22
+ const mockContext = {
23
+ report: (options) => {
24
+ expect(options.messageId).toBe('missingReturnType');
25
+ expect(options.data.name).toBe('testFunction');
26
+ },
27
+ };
28
+ const mockNode = {
29
+ type: 'FunctionDeclaration',
30
+ id: { name: 'testFunction' },
31
+ returnType: null,
32
+ params: [],
33
+ };
34
+ const rule = explicit_types_1.default.create(mockContext);
35
+ rule.FunctionDeclaration(mockNode);
36
+ });
37
+ it('| should not report when function has return type', () => {
38
+ const mockContext = {
39
+ report: (options) => {
40
+ fail('Should not report when function has return type');
41
+ },
42
+ };
43
+ const mockNode = {
44
+ type: 'FunctionDeclaration',
45
+ id: { name: 'testFunction' },
46
+ returnType: { type: 'TSTypeAnnotation' },
47
+ params: [],
48
+ };
49
+ const rule = explicit_types_1.default.create(mockContext);
50
+ rule.FunctionDeclaration(mockNode);
51
+ });
52
+ it('| should report missing return types on arrow functions', () => {
53
+ const mockContext = {
54
+ report: (options) => {
55
+ expect(options.messageId).toBe('missingArrowReturnType');
56
+ },
57
+ };
58
+ const mockNode = {
59
+ type: 'ArrowFunctionExpression',
60
+ returnType: null,
61
+ params: [],
62
+ };
63
+ const rule = explicit_types_1.default.create(mockContext);
64
+ rule.ArrowFunctionExpression(mockNode);
65
+ });
66
+ it('| should report missing types on variable declarations', () => {
67
+ const mockContext = {
68
+ report: (options) => {
69
+ expect(options.messageId).toBe('missingVariableType');
70
+ expect(options.data.name).toBe('testVar');
71
+ },
72
+ };
73
+ const mockNode = {
74
+ type: 'VariableDeclarator',
75
+ id: { name: 'testVar', typeAnnotation: null },
76
+ init: null,
77
+ };
78
+ const rule = explicit_types_1.default.create(mockContext);
79
+ rule.VariableDeclarator(mockNode);
80
+ });
81
+ it('| should not report when variable has type annotation', () => {
82
+ const mockContext = {
83
+ report: (options) => {
84
+ fail('Should not report when variable has type annotation');
85
+ },
86
+ };
87
+ const mockNode = {
88
+ type: 'VariableDeclarator',
89
+ id: { name: 'testVar', typeAnnotation: { type: 'TSTypeAnnotation' } },
90
+ init: null,
91
+ };
92
+ const rule = explicit_types_1.default.create(mockContext);
93
+ rule.VariableDeclarator(mockNode);
94
+ });
95
+ it('| should not report when variable has typed initializer', () => {
96
+ const mockContext = {
97
+ report: (options) => {
98
+ fail('Should not report when variable has typed initializer');
99
+ },
100
+ };
101
+ const mockNode = {
102
+ type: 'VariableDeclarator',
103
+ id: { name: 'testVar', typeAnnotation: null },
104
+ init: { type: 'CallExpression' },
105
+ };
106
+ const rule = explicit_types_1.default.create(mockContext);
107
+ rule.VariableDeclarator(mockNode);
108
+ });
109
+ it('| should report missing parameter types', () => {
110
+ const mockContext = {
111
+ report: (options) => {
112
+ expect(options.messageId).toBe('missingParameterType');
113
+ expect(options.data.name).toBe('param');
114
+ },
115
+ };
116
+ const mockNode = {
117
+ type: 'FunctionDeclaration',
118
+ id: { name: 'testFunction' },
119
+ returnType: { type: 'TSTypeAnnotation' },
120
+ params: [
121
+ { type: 'Identifier', name: 'param', typeAnnotation: null }
122
+ ],
123
+ };
124
+ const rule = explicit_types_1.default.create(mockContext);
125
+ rule.FunctionDeclaration(mockNode);
126
+ });
127
+ it('| should report missing class property types', () => {
128
+ const mockContext = {
129
+ report: (options) => {
130
+ expect(options.messageId).toBe('missingPropertyType');
131
+ expect(options.data.name).toBe('property');
132
+ },
133
+ };
134
+ const mockNode = {
135
+ type: 'PropertyDefinition',
136
+ key: { name: 'property' },
137
+ typeAnnotation: null,
138
+ value: null,
139
+ };
140
+ const rule = explicit_types_1.default.create(mockContext);
141
+ rule.PropertyDefinition(mockNode);
142
+ });
143
+ it('| should report missing destructuring types', () => {
144
+ const mockContext = {
145
+ report: (options) => {
146
+ expect(options.messageId).toBe('missingDestructuringType');
147
+ },
148
+ };
149
+ const objectPatternNode = {
150
+ type: 'ObjectPattern',
151
+ typeAnnotation: null,
152
+ };
153
+ const arrayPatternNode = {
154
+ type: 'ArrayPattern',
155
+ typeAnnotation: null,
156
+ };
157
+ const rule = explicit_types_1.default.create(mockContext);
158
+ rule.ObjectPattern(objectPatternNode);
159
+ rule.ArrayPattern(arrayPatternNode);
160
+ });
161
+ });
162
+ //# sourceMappingURL=explicit-types.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explicit-types.spec.js","sourceRoot":"","sources":["../../../src/plugin/rules/explicit-types.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"no-import-type.d.ts","sourceRoot":"","sources":["../../../../src/plugin/rules/import/no-import-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UAgChB,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"no-import-type.d.ts","sourceRoot":"","sources":["../../../../src/plugin/rules/import/no-import-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UAyChB,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -14,18 +14,29 @@ const rule = {
14
14
  const sourceCode = context.sourceCode;
15
15
  return {
16
16
  ImportDeclaration(node) {
17
- // Check for import type usage
18
- if (node.importKind === 'type') {
19
- context.report({
20
- node,
21
- messageId: 'forbiddenImportType',
22
- fix(fixer) {
23
- // Remove 'type' keyword
24
- const importText = sourceCode.getText(node);
25
- const newImportText = importText.replace(/import\s+type\s+/, 'import ');
26
- return fixer.replaceText(node, newImportText);
27
- },
28
- });
17
+ try {
18
+ // Check for import type usage
19
+ if (node.importKind === 'type') {
20
+ context.report({
21
+ node,
22
+ messageId: 'forbiddenImportType',
23
+ fix(fixer) {
24
+ try {
25
+ // Remove 'type' keyword
26
+ const importText = sourceCode.getText(node);
27
+ const newImportText = importText.replace(/import\s+type\s+/, 'import ');
28
+ return fixer.replaceText(node, newImportText);
29
+ }
30
+ catch (fixError) {
31
+ console.error('[no-import-type] Error in fix function:', fixError);
32
+ return null;
33
+ }
34
+ },
35
+ });
36
+ }
37
+ }
38
+ catch (error) {
39
+ console.error('[no-import-type] Error in ImportDeclaration visitor:', error);
29
40
  }
30
41
  },
31
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"no-import-type.js","sourceRoot":"","sources":["../../../../src/plugin/rules/import/no-import-type.ts"],"names":[],"mappings":";;AAEA,MAAM,IAAI,GAAoB;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE;QAC3D,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,mBAAmB,EAAE,oCAAoC;SAC1D;QACD,OAAO,EAAE,MAAM;KAChB;IACD,MAAM,CAAC,OAAO;QACZ,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAEtC,OAAO;YACL,iBAAiB,CAAC,IAAS;gBACzB,8BAA8B;gBAC9B,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;oBAC/B,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,qBAAqB;wBAChC,GAAG,CAAC,KAAK;4BACP,wBAAwB;4BACxB,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;4BAC5C,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;4BAExE,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;wBAChD,CAAC;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,kBAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"no-import-type.js","sourceRoot":"","sources":["../../../../src/plugin/rules/import/no-import-type.ts"],"names":[],"mappings":";;AAEA,MAAM,IAAI,GAAoB;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE;QAC3D,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,mBAAmB,EAAE,oCAAoC;SAC1D;QACD,OAAO,EAAE,MAAM;KAChB;IACD,MAAM,CAAC,OAAO;QACZ,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAEtC,OAAO;YACL,iBAAiB,CAAC,IAAS;gBACzB,IAAI,CAAC;oBACH,8BAA8B;oBAC9B,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;wBAC/B,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI;4BACJ,SAAS,EAAE,qBAAqB;4BAChC,GAAG,CAAC,KAAK;gCACP,IAAI,CAAC;oCACH,wBAAwB;oCACxB,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oCAC5C,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;oCAExE,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gCAChD,CAAC;gCAAC,OAAO,QAAQ,EAAE,CAAC;oCAClB,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,QAAQ,CAAC,CAAC;oCACnE,OAAO,IAAI,CAAC;gCACd,CAAC;4BACH,CAAC;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,sDAAsD,EAAE,KAAK,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,kBAAe,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"no-js-import.d.ts","sourceRoot":"","sources":["../../../../src/plugin/rules/import/no-js-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UA8BhB,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"no-js-import.d.ts","sourceRoot":"","sources":["../../../../src/plugin/rules/import/no-js-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UAsChB,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -13,17 +13,28 @@ const rule = {
13
13
  create(context) {
14
14
  return {
15
15
  ImportDeclaration(node) {
16
- const source = node.source.value;
17
- if (source.endsWith('.js')) {
18
- context.report({
19
- node: node.source,
20
- messageId: 'forbiddenJsExtension',
21
- fix(fixer) {
22
- // Remove .js extension
23
- const newSource = source.replace(/\.js$/, '');
24
- return fixer.replaceText(node.source, `'${newSource}'`);
25
- },
26
- });
16
+ try {
17
+ const source = node.source?.value;
18
+ if (source && source.endsWith('.js')) {
19
+ context.report({
20
+ node: node.source,
21
+ messageId: 'forbiddenJsExtension',
22
+ fix(fixer) {
23
+ try {
24
+ // Remove .js extension
25
+ const newSource = source.replace(/\.js$/, '');
26
+ return fixer.replaceText(node.source, `'${newSource}'`);
27
+ }
28
+ catch (fixError) {
29
+ console.error('[no-js-import] Error in fix function:', fixError);
30
+ return null;
31
+ }
32
+ },
33
+ });
34
+ }
35
+ }
36
+ catch (error) {
37
+ console.error('[no-js-import] Error in ImportDeclaration visitor:', error);
27
38
  }
28
39
  },
29
40
  };
@@ -1 +1 @@
1
- {"version":3,"file":"no-js-import.js","sourceRoot":"","sources":["../../../../src/plugin/rules/import/no-js-import.ts"],"names":[],"mappings":";;AAEA,MAAM,IAAI,GAAoB;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,qCAAqC,EAAE;QAC5D,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,oBAAoB,EAAE,sEAAsE;SAC7F;QACD,OAAO,EAAE,MAAM;KAChB;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,iBAAiB,CAAC,IAAS;gBACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAe,CAAC;gBAE3C,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,IAAI,CAAC,MAAM;wBACjB,SAAS,EAAE,sBAAsB;wBACjC,GAAG,CAAC,KAAK;4BACP,uBAAuB;4BACvB,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;4BAE9C,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;wBAC1D,CAAC;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,kBAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"no-js-import.js","sourceRoot":"","sources":["../../../../src/plugin/rules/import/no-js-import.ts"],"names":[],"mappings":";;AAEA,MAAM,IAAI,GAAoB;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,qCAAqC,EAAE;QAC5D,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,oBAAoB,EAAE,sEAAsE;SAC7F;QACD,OAAO,EAAE,MAAM;KAChB;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,iBAAiB,CAAC,IAAS;gBACzB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAe,CAAC;oBAE5C,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBACrC,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,IAAI,CAAC,MAAM;4BACjB,SAAS,EAAE,sBAAsB;4BACjC,GAAG,CAAC,KAAK;gCACP,IAAI,CAAC;oCACH,uBAAuB;oCACvB,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oCAC9C,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;gCAC1D,CAAC;gCAAC,OAAO,QAAQ,EAAE,CAAC;oCAClB,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,QAAQ,CAAC,CAAC;oCACjE,OAAO,IAAI,CAAC;gCACd,CAAC;4BACH,CAAC;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,KAAK,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,kBAAe,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"naming-patterns.d.ts","sourceRoot":"","sources":["../../../src/plugin/rules/naming-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UAiBhB,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"naming-patterns.d.ts","sourceRoot":"","sources":["../../../src/plugin/rules/naming-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UAqBhB,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -13,8 +13,13 @@ const rule = {
13
13
  create(context) {
14
14
  return {
15
15
  Identifier(node) {
16
- // Future: use dyfmUtils naming patterns to validate identifiers
17
- void node;
16
+ try {
17
+ // Future: use dyfmUtils naming patterns to validate identifiers
18
+ void node;
19
+ }
20
+ catch (error) {
21
+ console.error('[naming-patterns] Error in Identifier visitor:', error);
22
+ }
18
23
  },
19
24
  };
20
25
  },
@@ -1 +1 @@
1
- {"version":3,"file":"naming-patterns.js","sourceRoot":"","sources":["../../../src/plugin/rules/naming-patterns.ts"],"names":[],"mappings":";;AACA,sDAAsD;AAEtD,MAAM,IAAI,GAAoB;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,gDAAgD,EAAE;QACvE,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,WAAW,EAAE,+DAA+D;SAC7E;KACF;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,UAAU,CAAC,IAAI;gBACb,gEAAgE;gBAChE,KAAK,IAAI,CAAC;YACZ,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,kBAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"naming-patterns.js","sourceRoot":"","sources":["../../../src/plugin/rules/naming-patterns.ts"],"names":[],"mappings":";;AACA,sDAAsD;AAEtD,MAAM,IAAI,GAAoB;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,gDAAgD,EAAE;QACvE,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,WAAW,EAAE,+DAA+D;SAC7E;KACF;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,UAAU,CAAC,IAAI;gBACb,IAAI,CAAC;oBACH,gEAAgE;oBAChE,KAAK,IAAI,CAAC;gBACZ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,kBAAe,IAAI,CAAC"}
@@ -1,3 +1,27 @@
1
1
  #!/usr/bin/env node
2
+ /**
3
+ * @fileoverview Dynamo ESLint Auto-Fix Script
4
+ *
5
+ * This script runs ESLint with auto-fix capabilities on TypeScript files across the project.
6
+ * It processes all .ts and .tsx files, applies Dynamo-specific rules, and automatically
7
+ * fixes issues where possible.
8
+ *
9
+ * @usage
10
+ * ```bash
11
+ * dynamo-fix
12
+ * ```
13
+ *
14
+ * @example
15
+ * ```bash
16
+ * # Fix all TypeScript files in the project
17
+ * npx dynamo-fix
18
+ *
19
+ * # Or run via npm script
20
+ * npm run fix
21
+ * ```
22
+ *
23
+ * @author Future Development Program Ltd.
24
+ * @version 1.14.3
25
+ */
2
26
  export {};
3
27
  //# sourceMappingURL=dynamo-fix.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamo-fix.d.ts","sourceRoot":"","sources":["../../src/scripts/dynamo-fix.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"dynamo-fix.d.ts","sourceRoot":"","sources":["../../src/scripts/dynamo-fix.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG"}