mycontext-cli 4.2.6 → 4.2.7

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 (37) hide show
  1. package/README.md +531 -144
  2. package/dist/README.md +531 -144
  3. package/dist/cli.js +14 -5
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/generate.d.ts.map +1 -1
  6. package/dist/commands/generate.js +17 -4
  7. package/dist/commands/generate.js.map +1 -1
  8. package/dist/commands/init-interactive.d.ts +127 -0
  9. package/dist/commands/init-interactive.d.ts.map +1 -0
  10. package/dist/commands/init-interactive.js +754 -0
  11. package/dist/commands/init-interactive.js.map +1 -0
  12. package/dist/doctor/rules/index.d.ts +3 -1
  13. package/dist/doctor/rules/index.d.ts.map +1 -1
  14. package/dist/doctor/rules/index.js +7 -1
  15. package/dist/doctor/rules/index.js.map +1 -1
  16. package/dist/doctor/rules/instantdb-rules.d.ts +3 -0
  17. package/dist/doctor/rules/instantdb-rules.d.ts.map +1 -0
  18. package/dist/doctor/rules/instantdb-rules.js +335 -0
  19. package/dist/doctor/rules/instantdb-rules.js.map +1 -0
  20. package/dist/doctor/rules/typescript-rules.d.ts +3 -0
  21. package/dist/doctor/rules/typescript-rules.d.ts.map +1 -0
  22. package/dist/doctor/rules/typescript-rules.js +177 -0
  23. package/dist/doctor/rules/typescript-rules.js.map +1 -0
  24. package/dist/package.json +1 -1
  25. package/dist/services/InferenceEngine.d.ts +41 -0
  26. package/dist/services/InferenceEngine.d.ts.map +1 -0
  27. package/dist/services/InferenceEngine.js +307 -0
  28. package/dist/services/InferenceEngine.js.map +1 -0
  29. package/dist/services/Planner.d.ts +77 -0
  30. package/dist/services/Planner.d.ts.map +1 -0
  31. package/dist/services/Planner.js +828 -0
  32. package/dist/services/Planner.js.map +1 -0
  33. package/dist/types/asl.d.ts +387 -0
  34. package/dist/types/asl.d.ts.map +1 -0
  35. package/dist/types/asl.js +139 -0
  36. package/dist/types/asl.js.map +1 -0
  37. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-interactive.js","sourceRoot":"","sources":["../../src/commands/init-interactive.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,9 @@ import { nextjsRules } from "./nextjs-rules";
5
5
  import { turboRules } from "./turbo-rules";
6
6
  import { nodeRules } from "./node-rules";
7
7
  import { deadCodeRules } from "./dead-code-rules";
8
+ import { typescriptRules } from "./typescript-rules";
9
+ import { instantdbRules } from "./instantdb-rules";
8
10
  import type { DoctorRule } from "../types";
9
11
  export declare const allRules: DoctorRule[];
10
- export { nextjsRules, turboRules, nodeRules, deadCodeRules };
12
+ export { nextjsRules, turboRules, nodeRules, deadCodeRules, typescriptRules, instantdbRules };
11
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/doctor/rules/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAO,MAAM,QAAQ,EAAE,UAAU,EAKhC,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/doctor/rules/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAO,MAAM,QAAQ,EAAE,UAAU,EAOhC,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deadCodeRules = exports.nodeRules = exports.turboRules = exports.nextjsRules = exports.allRules = void 0;
3
+ exports.instantdbRules = exports.typescriptRules = exports.deadCodeRules = exports.nodeRules = exports.turboRules = exports.nextjsRules = exports.allRules = void 0;
4
4
  /**
5
5
  * Rule Registry — Exports all doctor rules
6
6
  */
@@ -12,10 +12,16 @@ const node_rules_1 = require("./node-rules");
12
12
  Object.defineProperty(exports, "nodeRules", { enumerable: true, get: function () { return node_rules_1.nodeRules; } });
13
13
  const dead_code_rules_1 = require("./dead-code-rules");
14
14
  Object.defineProperty(exports, "deadCodeRules", { enumerable: true, get: function () { return dead_code_rules_1.deadCodeRules; } });
15
+ const typescript_rules_1 = require("./typescript-rules");
16
+ Object.defineProperty(exports, "typescriptRules", { enumerable: true, get: function () { return typescript_rules_1.typescriptRules; } });
17
+ const instantdb_rules_1 = require("./instantdb-rules");
18
+ Object.defineProperty(exports, "instantdbRules", { enumerable: true, get: function () { return instantdb_rules_1.instantdbRules; } });
15
19
  exports.allRules = [
16
20
  ...nextjs_rules_1.nextjsRules,
17
21
  ...turbo_rules_1.turboRules,
18
22
  ...node_rules_1.nodeRules,
19
23
  ...dead_code_rules_1.deadCodeRules,
24
+ ...typescript_rules_1.typescriptRules,
25
+ ...instantdb_rules_1.instantdbRules,
20
26
  ];
21
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/doctor/rules/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,iDAA6C;AAapC,4FAbA,0BAAW,OAaA;AAZpB,+CAA2C;AAYrB,2FAZb,wBAAU,OAYa;AAXhC,6CAAyC;AAWP,0FAXzB,sBAAS,OAWyB;AAV3C,uDAAkD;AAUL,8FAVpC,+BAAa,OAUoC;AAP7C,QAAA,QAAQ,GAAiB;IACpC,GAAG,0BAAW;IACd,GAAG,wBAAU;IACb,GAAG,sBAAS;IACZ,GAAG,+BAAa;CACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/doctor/rules/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,iDAA6C;AAiBpC,4FAjBA,0BAAW,OAiBA;AAhBpB,+CAA2C;AAgBrB,2FAhBb,wBAAU,OAgBa;AAfhC,6CAAyC;AAeP,0FAfzB,sBAAS,OAeyB;AAd3C,uDAAkD;AAcL,8FAdpC,+BAAa,OAcoC;AAb1D,yDAAqD;AAaO,gGAbnD,kCAAe,OAamD;AAZ3E,uDAAmD;AAY0B,+FAZpE,gCAAc,OAYoE;AAT9E,QAAA,QAAQ,GAAiB;IACpC,GAAG,0BAAW;IACd,GAAG,wBAAU;IACb,GAAG,sBAAS;IACZ,GAAG,+BAAa;IAChB,GAAG,kCAAe;IAClB,GAAG,gCAAc;CAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DoctorRule } from "../types";
2
+ export declare const instantdbRules: DoctorRule[];
3
+ //# sourceMappingURL=instantdb-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instantdb-rules.d.ts","sourceRoot":"","sources":["../../../src/doctor/rules/instantdb-rules.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,UAAU,CAAC;AAsXpE,eAAO,MAAM,cAAc,EAAE,UAAU,EAEtC,CAAC"}
@@ -0,0 +1,335 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.instantdbRules = void 0;
37
+ /**
38
+ * InstantDB Rules — Schema validation and drift detection for InstantDB projects
39
+ */
40
+ const path = __importStar(require("path"));
41
+ // ─── Helper ───────────────────────────────────────────────────────
42
+ function diag(rule, filePath, message, opts = {}) {
43
+ return {
44
+ ruleId: rule.id,
45
+ filePath,
46
+ line: opts.line,
47
+ severity: rule.severity,
48
+ message,
49
+ help: opts.help || rule.help,
50
+ autoFixable: opts.autoFixable ?? false,
51
+ };
52
+ }
53
+ /**
54
+ * Parse InstantDB schema file and extract entity definitions
55
+ */
56
+ async function parseInstantDBSchema(ctx) {
57
+ // Try multiple possible schema locations
58
+ const schemaPaths = [
59
+ "instant.schema.ts",
60
+ "src/instant.schema.ts",
61
+ ".mycontext/schema.ts",
62
+ "instant.schema.js",
63
+ ];
64
+ let schemaContent = null;
65
+ let schemaPath = null;
66
+ for (const sp of schemaPaths) {
67
+ const content = await ctx.readFile(sp);
68
+ if (content) {
69
+ schemaContent = content;
70
+ schemaPath = sp;
71
+ break;
72
+ }
73
+ }
74
+ if (!schemaContent) {
75
+ return null; // No schema file found
76
+ }
77
+ const entities = new Map();
78
+ try {
79
+ // Extract the entities object from the schema
80
+ // Pattern: entities: { EntityName: { fields: { ... } } }
81
+ const entitiesMatch = schemaContent.match(/entities:\s*\{([^}]+(?:\{[^}]*\}[^}]*)*)\}/s);
82
+ if (!entitiesMatch || !entitiesMatch[1]) {
83
+ return null;
84
+ }
85
+ const entitiesSection = entitiesMatch[1];
86
+ // Extract each entity definition
87
+ // Pattern: EntityName: { fields: { fieldName: { type: "string", required: true }, ... } }
88
+ const entityPattern = /(\w+):\s*\{[^}]*fields:\s*\{([^}]+(?:\{[^}]*\}[^}]*)*)\}/gs;
89
+ let entityMatch;
90
+ while ((entityMatch = entityPattern.exec(entitiesSection)) !== null) {
91
+ const entityName = entityMatch[1];
92
+ const fieldsSection = entityMatch[2];
93
+ if (!entityName || !fieldsSection)
94
+ continue;
95
+ const fields = {};
96
+ // Extract field definitions
97
+ // Pattern: fieldName: { type: "string", required: true }
98
+ const fieldPattern = /(\w+):\s*\{[^}]*type:\s*["'](\w+)["'][^}]*\}/g;
99
+ let fieldMatch;
100
+ while ((fieldMatch = fieldPattern.exec(fieldsSection)) !== null) {
101
+ const fieldName = fieldMatch[1];
102
+ const fieldType = fieldMatch[2];
103
+ const fieldDef = fieldMatch[0];
104
+ if (!fieldName || !fieldType)
105
+ continue;
106
+ fields[fieldName] = {
107
+ type: fieldType,
108
+ required: fieldDef.includes("required") || fieldDef.includes("optional: false"),
109
+ };
110
+ }
111
+ entities.set(entityName, {
112
+ name: entityName,
113
+ fields,
114
+ });
115
+ }
116
+ }
117
+ catch (error) {
118
+ // Failed to parse schema
119
+ return null;
120
+ }
121
+ return entities;
122
+ }
123
+ /**
124
+ * Extract field accesses from TypeScript code
125
+ * Returns map of entity.field accesses with their locations
126
+ */
127
+ function extractFieldAccesses(content, schemaEntities) {
128
+ const accesses = [];
129
+ const lines = content.split("\n");
130
+ // Build pattern to match potential entity names (convert to lowercase for case-insensitive matching)
131
+ const entityNames = Array.from(schemaEntities.keys());
132
+ const entityNamesLower = entityNames.map(name => name.toLowerCase());
133
+ lines.forEach((line, index) => {
134
+ // Pattern: variableName.fieldName where variableName might be a schema entity
135
+ // We look for patterns like: payment.payment_method, customer.delivery_zone_id, etc.
136
+ const accessPattern = /(\w+)\.(\w+)/g;
137
+ let match;
138
+ while ((match = accessPattern.exec(line)) !== null) {
139
+ const varName = match[1];
140
+ const fieldName = match[2];
141
+ if (!varName || !fieldName)
142
+ continue;
143
+ // Check if this could be an entity access
144
+ // We do fuzzy matching: if varName is singular/plural of an entity name
145
+ const varLower = varName.toLowerCase();
146
+ for (let i = 0; i < entityNamesLower.length; i++) {
147
+ const entityNameLower = entityNamesLower[i];
148
+ const entityName = entityNames[i];
149
+ if (!entityNameLower || !entityName)
150
+ continue;
151
+ // Match if:
152
+ // 1. Exact match (case-insensitive)
153
+ // 2. Variable is plural and entity is singular (users -> User)
154
+ // 3. Variable matches entity without case sensitivity
155
+ if (varLower === entityNameLower ||
156
+ varLower === entityNameLower + 's' ||
157
+ varLower === entityNameLower.slice(0, -1) || // Handle entity ending in 's'
158
+ entityNameLower.startsWith(varLower) ||
159
+ varLower.startsWith(entityNameLower)) {
160
+ accesses.push({
161
+ entity: entityName,
162
+ field: fieldName,
163
+ line: index + 1,
164
+ match: match[0],
165
+ });
166
+ }
167
+ }
168
+ }
169
+ });
170
+ return accesses;
171
+ }
172
+ // ─── Rules ────────────────────────────────────────────────────────
173
+ const schemaFieldDrift = {
174
+ id: "instantdb/schema-field-drift",
175
+ name: "Schema Field Drift Detection",
176
+ category: "node",
177
+ severity: "error",
178
+ description: "Detects code accessing fields that don't exist in the InstantDB schema",
179
+ help: "Update field names in code to match the schema, or add missing fields to instant.schema.ts",
180
+ appliesTo: ["nextjs", "node"],
181
+ async check(ctx) {
182
+ const results = [];
183
+ // Parse the schema
184
+ const schemaEntities = await parseInstantDBSchema(ctx);
185
+ if (!schemaEntities || schemaEntities.size === 0) {
186
+ return results; // No schema found or no entities, skip check
187
+ }
188
+ // Find all TypeScript/JavaScript files (exclude schema file itself)
189
+ const files = await ctx.findFiles(/\.(tsx?|jsx?)$/);
190
+ for (const file of files) {
191
+ // Skip schema files and node_modules
192
+ if (file.includes("schema.") || file.includes("node_modules")) {
193
+ continue;
194
+ }
195
+ const content = await ctx.readFile(file);
196
+ if (!content)
197
+ continue;
198
+ // Extract field accesses
199
+ const accesses = extractFieldAccesses(content, schemaEntities);
200
+ // Check each access against the schema
201
+ for (const access of accesses) {
202
+ const entity = schemaEntities.get(access.entity);
203
+ if (!entity)
204
+ continue;
205
+ // Check if the field exists in the schema
206
+ if (!entity.fields[access.field]) {
207
+ // Field doesn't exist in schema - this is drift!
208
+ // Try to find a similar field name (common mistake: payment_method vs method)
209
+ const availableFields = Object.keys(entity.fields);
210
+ const similarField = findSimilarField(access.field, availableFields);
211
+ let helpMessage = `Field '${access.field}' does not exist in ${access.entity} schema. `;
212
+ if (similarField) {
213
+ helpMessage += `Did you mean '${similarField}'? Available fields: ${availableFields.join(", ")}`;
214
+ }
215
+ else {
216
+ helpMessage += `Available fields: ${availableFields.join(", ")}`;
217
+ }
218
+ results.push(diag(this, file, `${access.entity}.${access.field} - field '${access.field}' not in schema`, {
219
+ line: access.line,
220
+ help: helpMessage,
221
+ autoFixable: similarField !== null, // Can auto-fix if we found a similar field
222
+ }));
223
+ }
224
+ }
225
+ }
226
+ return results;
227
+ },
228
+ async fix(ctx, diagnostic) {
229
+ // Auto-fix by replacing the incorrect field name with the suggested one
230
+ const match = diagnostic.message.match(/(\w+)\.(\w+) - field '(\w+)' not in schema/);
231
+ if (!match)
232
+ return false;
233
+ const [, entity, , wrongField] = match;
234
+ // Extract the suggestion from the help message
235
+ const suggestionMatch = diagnostic.help.match(/Did you mean '(\w+)'\?/);
236
+ if (!suggestionMatch)
237
+ return false;
238
+ const correctField = suggestionMatch[1];
239
+ // Read the file
240
+ const content = await ctx.readFile(diagnostic.filePath);
241
+ if (!content)
242
+ return false;
243
+ const lines = content.split("\n");
244
+ if (!diagnostic.line || diagnostic.line > lines.length)
245
+ return false;
246
+ // Replace the field name on the specific line
247
+ const lineIndex = diagnostic.line - 1;
248
+ const originalLine = lines[lineIndex];
249
+ if (!originalLine)
250
+ return false;
251
+ // Replace entity.wrongField with entity.correctField
252
+ const pattern = new RegExp(`(\\w+)\\.${wrongField}\\b`, 'g');
253
+ const newLine = originalLine.replace(pattern, `$1.${correctField}`);
254
+ if (newLine === originalLine)
255
+ return false; // Nothing changed
256
+ lines[lineIndex] = newLine;
257
+ // Write the file back
258
+ const fs = await Promise.resolve().then(() => __importStar(require("fs/promises")));
259
+ const absolutePath = path.join(ctx.root, diagnostic.filePath);
260
+ await fs.writeFile(absolutePath, lines.join("\n"), "utf-8");
261
+ return true;
262
+ },
263
+ };
264
+ /**
265
+ * Find a similar field name using simple heuristics
266
+ * Common patterns:
267
+ * - payment_method -> method (remove entity prefix)
268
+ * - delivery_zone_id -> zone_id (remove prefix)
269
+ * - user_email -> email (remove entity prefix)
270
+ */
271
+ function findSimilarField(wrongField, availableFields) {
272
+ const wrongLower = wrongField.toLowerCase();
273
+ // 1. Exact match (shouldn't happen, but just in case)
274
+ for (const field of availableFields) {
275
+ if (field.toLowerCase() === wrongLower) {
276
+ return field;
277
+ }
278
+ }
279
+ // 2. Check if wrongField ends with one of the available fields
280
+ // e.g., payment_method ends with method
281
+ for (const field of availableFields) {
282
+ if (wrongLower.endsWith(field.toLowerCase()) || wrongLower.endsWith('_' + field.toLowerCase())) {
283
+ return field;
284
+ }
285
+ }
286
+ // 3. Check if wrongField contains one of the available fields
287
+ // e.g., delivery_zone_id contains zone_id
288
+ for (const field of availableFields) {
289
+ if (wrongLower.includes(field.toLowerCase())) {
290
+ return field;
291
+ }
292
+ }
293
+ // 4. Levenshtein distance for typos (simple version)
294
+ let closest = null;
295
+ let minDistance = Infinity;
296
+ for (const field of availableFields) {
297
+ const distance = levenshteinDistance(wrongLower, field.toLowerCase());
298
+ if (distance < minDistance && distance <= 3) { // Allow up to 3 character differences
299
+ minDistance = distance;
300
+ closest = field;
301
+ }
302
+ }
303
+ return closest;
304
+ }
305
+ /**
306
+ * Calculate Levenshtein distance between two strings
307
+ */
308
+ function levenshteinDistance(str1, str2) {
309
+ const matrix = Array.from({ length: str2.length + 1 }, () => Array(str1.length + 1).fill(0));
310
+ for (let i = 0; i <= str2.length; i++) {
311
+ matrix[i][0] = i;
312
+ }
313
+ for (let j = 0; j <= str1.length; j++) {
314
+ matrix[0][j] = j;
315
+ }
316
+ for (let i = 1; i <= str2.length; i++) {
317
+ for (let j = 1; j <= str1.length; j++) {
318
+ if (str2.charAt(i - 1) === str1.charAt(j - 1)) {
319
+ matrix[i][j] = matrix[i - 1][j - 1];
320
+ }
321
+ else {
322
+ matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
323
+ matrix[i][j - 1] + 1, // insertion
324
+ matrix[i - 1][j] + 1 // deletion
325
+ );
326
+ }
327
+ }
328
+ }
329
+ return matrix[str2.length][str1.length];
330
+ }
331
+ // ─── Export ───────────────────────────────────────────────────────
332
+ exports.instantdbRules = [
333
+ schemaFieldDrift,
334
+ ];
335
+ //# sourceMappingURL=instantdb-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instantdb-rules.js","sourceRoot":"","sources":["../../../src/doctor/rules/instantdb-rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { DoctorRule } from "../types";
2
+ export declare const typescriptRules: DoctorRule[];
3
+ //# sourceMappingURL=typescript-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-rules.d.ts","sourceRoot":"","sources":["../../../src/doctor/rules/typescript-rules.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,UAAU,CAAC;AAsOpE,eAAO,MAAM,eAAe,EAAE,UAAU,EAIvC,CAAC"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.typescriptRules = void 0;
4
+ // ─── Helper ───────────────────────────────────────────────────────
5
+ function diag(rule, filePath, message, opts = {}) {
6
+ return {
7
+ ruleId: rule.id,
8
+ filePath,
9
+ line: opts.line,
10
+ severity: rule.severity,
11
+ message,
12
+ help: opts.help || rule.help,
13
+ autoFixable: opts.autoFixable ?? false,
14
+ };
15
+ }
16
+ /**
17
+ * Find all occurrences of a pattern in content with line numbers
18
+ */
19
+ function findOccurrences(content, pattern) {
20
+ const lines = content.split("\n");
21
+ const occurrences = [];
22
+ lines.forEach((line, index) => {
23
+ const matches = line.match(pattern);
24
+ if (matches) {
25
+ occurrences.push({ line: index + 1, match: matches[0] });
26
+ }
27
+ });
28
+ return occurrences;
29
+ }
30
+ // ─── Rules ────────────────────────────────────────────────────────
31
+ const asAnyCasts = {
32
+ id: "typescript/as-any-casts",
33
+ name: "Avoid 'as any' Type Casts",
34
+ category: "node",
35
+ severity: "warning",
36
+ description: "Detects usage of 'as any' type casts which bypass TypeScript's type checking",
37
+ help: "Replace 'as any' with proper type annotations or type guards. Use Record<string, unknown> for dynamic objects.",
38
+ appliesTo: ["nextjs", "node"],
39
+ async check(ctx) {
40
+ const results = [];
41
+ // Find all TypeScript/JavaScript files
42
+ const files = await ctx.findFiles(/\.(tsx?|jsx?)$/);
43
+ // Pattern to match 'as any' (with word boundaries)
44
+ const asAnyPattern = /\s+as\s+any[\s\)\;\,\}\]\.]/g;
45
+ // Track files with most casts for summary
46
+ const fileStats = [];
47
+ for (const file of files) {
48
+ const content = await ctx.readFile(file);
49
+ if (!content)
50
+ continue;
51
+ const occurrences = findOccurrences(content, asAnyPattern);
52
+ if (occurrences.length > 0) {
53
+ fileStats.push({
54
+ file,
55
+ count: occurrences.length,
56
+ lines: occurrences.map(o => o.line)
57
+ });
58
+ const firstOccurrence = occurrences[0];
59
+ if (firstOccurrence) {
60
+ results.push(diag(this, file, `Found ${occurrences.length} 'as any' cast${occurrences.length > 1 ? 's' : ''}`, {
61
+ line: firstOccurrence.line,
62
+ help: `Replace 'as any' with proper type annotations. Consider using 'Record<string, unknown>' for dynamic objects or type guards for runtime checks.`
63
+ }));
64
+ }
65
+ }
66
+ }
67
+ return results;
68
+ },
69
+ };
70
+ const unknownTransactionArray = {
71
+ id: "typescript/instantdb-transaction-typing",
72
+ name: "InstantDB Transaction Array Typing",
73
+ category: "node",
74
+ severity: "error",
75
+ description: "Detects unknown[] arrays passed to adminDb.transact() which cause type errors",
76
+ help: "Change 'unknown[]' to 'TransactionChunk<any, any>[]' and import from '@instantdb/admin'",
77
+ appliesTo: ["nextjs", "node"],
78
+ async check(ctx) {
79
+ const results = [];
80
+ // Find all TypeScript files
81
+ const files = await ctx.findFiles(/\.tsx?$/);
82
+ for (const file of files) {
83
+ const content = await ctx.readFile(file);
84
+ if (!content)
85
+ continue;
86
+ // Check if file uses adminDb.transact
87
+ if (!content.includes("adminDb.transact") && !content.includes("db.transact")) {
88
+ continue;
89
+ }
90
+ // Look for unknown[] array declarations
91
+ const unknownArrayPattern = /const\s+(\w+):\s*unknown\[\]/g;
92
+ const matches = Array.from(content.matchAll(unknownArrayPattern));
93
+ for (const match of matches) {
94
+ const varName = match[1];
95
+ // Check if this array is passed to transact
96
+ const transactPattern = new RegExp(`\\.transact\\s*\\(\\s*${varName}`, "g");
97
+ if (transactPattern.test(content)) {
98
+ const lines = content.split("\n");
99
+ const lineNum = lines.findIndex(line => line.includes(match[0])) + 1;
100
+ results.push(diag(this, file, `'${varName}' is typed as 'unknown[]' but passed to transact()`, {
101
+ line: lineNum,
102
+ help: `Change 'const ${varName}: unknown[]' to 'const ${varName}: TransactionChunk<any, any>[]' and import { TransactionChunk } from '@instantdb/admin'`,
103
+ }));
104
+ }
105
+ }
106
+ }
107
+ return results;
108
+ },
109
+ };
110
+ const duplicateTypeDeclarations = {
111
+ id: "typescript/duplicate-type-declarations",
112
+ name: "Duplicate Type Declarations",
113
+ category: "node",
114
+ severity: "warning",
115
+ description: "Detects type/interface declarations that duplicate schema-derived types",
116
+ help: "Remove hand-written type declarations that duplicate schema types. Import from schema.ts instead.",
117
+ appliesTo: ["nextjs", "node"],
118
+ async check(ctx) {
119
+ const results = [];
120
+ // Find schema.ts file (could be in types/ or src/types/)
121
+ const schemaFiles = await ctx.findFiles(/types\/schema\.tsx?$/);
122
+ if (schemaFiles.length === 0) {
123
+ return results; // No schema file, skip check
124
+ }
125
+ const schemaFile = schemaFiles[0];
126
+ if (!schemaFile)
127
+ return results;
128
+ const schemaContent = await ctx.readFile(schemaFile);
129
+ if (!schemaContent)
130
+ return results;
131
+ // Extract exported types from schema (looking for InstaQLEntity pattern or interface/type declarations)
132
+ const schemaTypePattern = /export\s+(?:type|interface)\s+(\w+)/g;
133
+ const schemaTypes = new Set();
134
+ let match;
135
+ while ((match = schemaTypePattern.exec(schemaContent)) !== null) {
136
+ const typeName = match[1];
137
+ if (typeName) {
138
+ schemaTypes.add(typeName);
139
+ }
140
+ }
141
+ if (schemaTypes.size === 0) {
142
+ return results; // No types in schema, skip
143
+ }
144
+ // Check other files in types/ directory
145
+ const typeFiles = await ctx.findFiles(/types\/.*\.tsx?$/);
146
+ for (const file of typeFiles) {
147
+ if (file === schemaFile)
148
+ continue; // Skip the schema file itself
149
+ const content = await ctx.readFile(file);
150
+ if (!content)
151
+ continue;
152
+ // Find exported types/interfaces in this file
153
+ const fileTypePattern = /export\s+(?:type|interface)\s+(\w+)/g;
154
+ let typeMatch;
155
+ while ((typeMatch = fileTypePattern.exec(content)) !== null) {
156
+ const typeName = typeMatch[1];
157
+ if (typeName && schemaTypes.has(typeName)) {
158
+ const lines = content.split("\n");
159
+ const matchText = typeMatch[0];
160
+ const lineNum = lines.findIndex(line => line.includes(matchText)) + 1;
161
+ results.push(diag(this, file, `Type '${typeName}' duplicates schema type in ${schemaFile}`, {
162
+ line: lineNum,
163
+ help: `Remove this type declaration and import ${typeName} from '${schemaFile}' instead. The schema-derived type is canonical.`,
164
+ }));
165
+ }
166
+ }
167
+ }
168
+ return results;
169
+ },
170
+ };
171
+ // ─── Export ───────────────────────────────────────────────────────
172
+ exports.typescriptRules = [
173
+ asAnyCasts,
174
+ unknownTransactionArray,
175
+ duplicateTypeDeclarations,
176
+ ];
177
+ //# sourceMappingURL=typescript-rules.js.map