@fyuld/snitch 1.4.1

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 (54) hide show
  1. package/.snitchconfig.json +142 -0
  2. package/dist/src/commands/badimports.d.ts +2 -0
  3. package/dist/src/commands/badimports.d.ts.map +1 -0
  4. package/dist/src/commands/badimports.js +8 -0
  5. package/dist/src/commands/badimports.js.map +1 -0
  6. package/dist/src/commands/dirtydefaults.d.ts +2 -0
  7. package/dist/src/commands/dirtydefaults.d.ts.map +1 -0
  8. package/dist/src/commands/dirtydefaults.js +8 -0
  9. package/dist/src/commands/dirtydefaults.js.map +1 -0
  10. package/dist/src/commands/dm.d.ts +2 -0
  11. package/dist/src/commands/dm.d.ts.map +1 -0
  12. package/dist/src/commands/dm.js +100 -0
  13. package/dist/src/commands/dm.js.map +1 -0
  14. package/dist/src/commands/enumerate.d.ts +2 -0
  15. package/dist/src/commands/enumerate.d.ts.map +1 -0
  16. package/dist/src/commands/enumerate.js +8 -0
  17. package/dist/src/commands/enumerate.js.map +1 -0
  18. package/dist/src/commands/expectmagic.d.ts +2 -0
  19. package/dist/src/commands/expectmagic.d.ts.map +1 -0
  20. package/dist/src/commands/expectmagic.js +8 -0
  21. package/dist/src/commands/expectmagic.js.map +1 -0
  22. package/dist/src/commands/fixtures.d.ts +2 -0
  23. package/dist/src/commands/fixtures.d.ts.map +1 -0
  24. package/dist/src/commands/fixtures.js +8 -0
  25. package/dist/src/commands/fixtures.js.map +1 -0
  26. package/dist/src/commands/init.d.ts +2 -0
  27. package/dist/src/commands/init.d.ts.map +1 -0
  28. package/dist/src/commands/init.js +64 -0
  29. package/dist/src/commands/init.js.map +1 -0
  30. package/dist/src/commands/scan.d.ts +2 -0
  31. package/dist/src/commands/scan.d.ts.map +1 -0
  32. package/dist/src/commands/scan.js +81 -0
  33. package/dist/src/commands/scan.js.map +1 -0
  34. package/dist/src/commands/vocab.d.ts +2 -0
  35. package/dist/src/commands/vocab.d.ts.map +1 -0
  36. package/dist/src/commands/vocab.js +166 -0
  37. package/dist/src/commands/vocab.js.map +1 -0
  38. package/dist/src/datamodel.d.ts +18 -0
  39. package/dist/src/datamodel.d.ts.map +1 -0
  40. package/dist/src/datamodel.js +23 -0
  41. package/dist/src/datamodel.js.map +1 -0
  42. package/dist/src/index.d.ts +3 -0
  43. package/dist/src/index.d.ts.map +1 -0
  44. package/dist/src/index.js +69 -0
  45. package/dist/src/index.js.map +1 -0
  46. package/dist/src/utils/pattern-scanner.d.ts +31 -0
  47. package/dist/src/utils/pattern-scanner.d.ts.map +1 -0
  48. package/dist/src/utils/pattern-scanner.js +154 -0
  49. package/dist/src/utils/pattern-scanner.js.map +1 -0
  50. package/dist/src/utils/ts-parser.d.ts +16 -0
  51. package/dist/src/utils/ts-parser.d.ts.map +1 -0
  52. package/dist/src/utils/ts-parser.js +350 -0
  53. package/dist/src/utils/ts-parser.js.map +1 -0
  54. package/package.json +40 -0
@@ -0,0 +1,350 @@
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.scanDirectory = scanDirectory;
37
+ exports.parseDeclarations = parseDeclarations;
38
+ exports.parseDeclarationsWithExportInfo = parseDeclarationsWithExportInfo;
39
+ exports.parseDeclarationsWithDetails = parseDeclarationsWithDetails;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const datamodel_1 = require("../datamodel");
43
+ function scanDirectory(directory) {
44
+ const files = [];
45
+ function scan(dir) {
46
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
47
+ for (const entry of entries) {
48
+ const fullPath = path.join(dir, entry.name);
49
+ if (entry.isDirectory()) {
50
+ if (entry.name !== "node_modules" && entry.name !== "dist" && !entry.name.startsWith(".")) {
51
+ scan(fullPath);
52
+ }
53
+ }
54
+ else if (entry.isFile() && (entry.name.endsWith(".ts") || entry.name.endsWith(".tsx"))) {
55
+ if (!entry.name.endsWith(".test.ts") && !entry.name.endsWith(".spec.ts")) {
56
+ files.push(fullPath);
57
+ }
58
+ }
59
+ }
60
+ }
61
+ scan(directory);
62
+ return files;
63
+ }
64
+ function parseDeclarations(filePath) {
65
+ const declarations = [];
66
+ const content = fs.readFileSync(filePath, "utf-8");
67
+ const lines = content.split("\n");
68
+ const interfaceRegex = /^\s*export\s+interface\s+(\w+)/;
69
+ const typeRegex = /^\s*export\s+type\s+(\w+)/;
70
+ const enumRegex = /^\s*export\s+enum\s+(\w+)/;
71
+ for (let i = 0; i < lines.length; i++) {
72
+ const line = lines[i];
73
+ const lineNumber = i + 1;
74
+ let match = line.match(interfaceRegex);
75
+ if (match) {
76
+ declarations.push({
77
+ name: match[1],
78
+ type: datamodel_1.TypeScriptTypeKind.Interface,
79
+ file: filePath,
80
+ line: lineNumber,
81
+ });
82
+ continue;
83
+ }
84
+ match = line.match(typeRegex);
85
+ if (match) {
86
+ declarations.push({
87
+ name: match[1],
88
+ type: datamodel_1.TypeScriptTypeKind.Type,
89
+ file: filePath,
90
+ line: lineNumber,
91
+ });
92
+ continue;
93
+ }
94
+ match = line.match(enumRegex);
95
+ if (match) {
96
+ declarations.push({
97
+ name: match[1],
98
+ type: datamodel_1.TypeScriptTypeKind.Enum,
99
+ file: filePath,
100
+ line: lineNumber,
101
+ });
102
+ }
103
+ }
104
+ return declarations;
105
+ }
106
+ function parseDeclarationsWithExportInfo(filePath) {
107
+ const declarations = [];
108
+ const content = fs.readFileSync(filePath, "utf-8");
109
+ const lines = content.split("\n");
110
+ const exportedInterfaceRegex = /^\s*export\s+interface\s+(\w+)/;
111
+ const exportedTypeRegex = /^\s*export\s+type\s+(\w+)/;
112
+ const exportedEnumRegex = /^\s*export\s+enum\s+(\w+)/;
113
+ const nonExportedInterfaceRegex = /^\s*interface\s+(\w+)/;
114
+ const nonExportedTypeRegex = /^\s*type\s+(\w+)/;
115
+ const nonExportedEnumRegex = /^\s*enum\s+(\w+)/;
116
+ for (let i = 0; i < lines.length; i++) {
117
+ const line = lines[i];
118
+ const lineNumber = i + 1;
119
+ // Check exported declarations first
120
+ let match = line.match(exportedInterfaceRegex);
121
+ if (match) {
122
+ declarations.push({
123
+ name: match[1],
124
+ type: datamodel_1.TypeScriptTypeKind.Interface,
125
+ file: filePath,
126
+ line: lineNumber,
127
+ isExported: true,
128
+ });
129
+ continue;
130
+ }
131
+ match = line.match(exportedTypeRegex);
132
+ if (match) {
133
+ declarations.push({
134
+ name: match[1],
135
+ type: datamodel_1.TypeScriptTypeKind.Type,
136
+ file: filePath,
137
+ line: lineNumber,
138
+ isExported: true,
139
+ });
140
+ continue;
141
+ }
142
+ match = line.match(exportedEnumRegex);
143
+ if (match) {
144
+ declarations.push({
145
+ name: match[1],
146
+ type: datamodel_1.TypeScriptTypeKind.Enum,
147
+ file: filePath,
148
+ line: lineNumber,
149
+ isExported: true,
150
+ });
151
+ continue;
152
+ }
153
+ // Check non-exported declarations
154
+ match = line.match(nonExportedInterfaceRegex);
155
+ if (match) {
156
+ declarations.push({
157
+ name: match[1],
158
+ type: datamodel_1.TypeScriptTypeKind.Interface,
159
+ file: filePath,
160
+ line: lineNumber,
161
+ isExported: false,
162
+ });
163
+ continue;
164
+ }
165
+ match = line.match(nonExportedTypeRegex);
166
+ if (match) {
167
+ declarations.push({
168
+ name: match[1],
169
+ type: datamodel_1.TypeScriptTypeKind.Type,
170
+ file: filePath,
171
+ line: lineNumber,
172
+ isExported: false,
173
+ });
174
+ continue;
175
+ }
176
+ match = line.match(nonExportedEnumRegex);
177
+ if (match) {
178
+ declarations.push({
179
+ name: match[1],
180
+ type: datamodel_1.TypeScriptTypeKind.Enum,
181
+ file: filePath,
182
+ line: lineNumber,
183
+ isExported: false,
184
+ });
185
+ }
186
+ }
187
+ return declarations;
188
+ }
189
+ function extractDefinition(lines, startIndex, type) {
190
+ let definition = '';
191
+ let braceCount = 0;
192
+ let started = false;
193
+ for (let i = startIndex; i < lines.length; i++) {
194
+ const line = lines[i];
195
+ if (type === datamodel_1.TypeScriptTypeKind.Enum) {
196
+ if (line.includes('{')) {
197
+ started = true;
198
+ braceCount++;
199
+ }
200
+ if (started && line.includes('{')) {
201
+ const afterBrace = line.substring(line.indexOf('{') + 1);
202
+ if (afterBrace.trim()) {
203
+ definition += ' ' + afterBrace.trim() + '\n';
204
+ }
205
+ continue;
206
+ }
207
+ if (started && !line.includes('}')) {
208
+ definition += ' ' + line.trim() + '\n';
209
+ }
210
+ if (line.includes('}')) {
211
+ braceCount--;
212
+ if (braceCount === 0 && started) {
213
+ break;
214
+ }
215
+ }
216
+ }
217
+ else if (type === datamodel_1.TypeScriptTypeKind.Interface) {
218
+ if (line.includes('{')) {
219
+ started = true;
220
+ braceCount++;
221
+ const afterBrace = line.substring(line.indexOf('{') + 1);
222
+ if (afterBrace.trim() && !afterBrace.trim().startsWith('}')) {
223
+ definition += ' ' + afterBrace.trim() + '\n';
224
+ }
225
+ continue;
226
+ }
227
+ if (started && !line.includes('}')) {
228
+ definition += ' ' + line.trim() + '\n';
229
+ }
230
+ if (line.includes('}')) {
231
+ braceCount--;
232
+ if (braceCount === 0 && started) {
233
+ break;
234
+ }
235
+ }
236
+ }
237
+ else if (type === datamodel_1.TypeScriptTypeKind.Type) {
238
+ const typeLine = lines[startIndex];
239
+ const typeMatch = typeLine.match(/=\s*(.+)/);
240
+ if (typeMatch) {
241
+ definition = typeMatch[1].trim();
242
+ if (!definition.endsWith(';')) {
243
+ for (let j = startIndex + 1; j < lines.length; j++) {
244
+ definition += ' ' + lines[j].trim();
245
+ if (lines[j].includes(';') || lines[j].includes('}')) {
246
+ break;
247
+ }
248
+ }
249
+ }
250
+ definition = definition.replace(/;$/, '').trim();
251
+ }
252
+ break;
253
+ }
254
+ }
255
+ return definition.trim();
256
+ }
257
+ function parseDeclarationsWithDetails(filePath) {
258
+ const declarations = [];
259
+ const content = fs.readFileSync(filePath, 'utf-8');
260
+ const lines = content.split('\n');
261
+ const exportedInterfaceRegex = /^\s*export\s+interface\s+(\w+)/;
262
+ const exportedTypeRegex = /^\s*export\s+type\s+(\w+)/;
263
+ const exportedEnumRegex = /^\s*export\s+enum\s+(\w+)/;
264
+ const nonExportedInterfaceRegex = /^\s*interface\s+(\w+)/;
265
+ const nonExportedTypeRegex = /^\s*type\s+(\w+)/;
266
+ const nonExportedEnumRegex = /^\s*enum\s+(\w+)/;
267
+ for (let i = 0; i < lines.length; i++) {
268
+ const line = lines[i];
269
+ const lineNumber = i + 1;
270
+ let match = line.match(exportedInterfaceRegex);
271
+ if (match) {
272
+ const definition = extractDefinition(lines, i, datamodel_1.TypeScriptTypeKind.Interface);
273
+ declarations.push({
274
+ name: match[1],
275
+ type: datamodel_1.TypeScriptTypeKind.Interface,
276
+ file: filePath,
277
+ line: lineNumber,
278
+ isExported: true,
279
+ definition: definition,
280
+ });
281
+ continue;
282
+ }
283
+ match = line.match(exportedTypeRegex);
284
+ if (match) {
285
+ const definition = extractDefinition(lines, i, datamodel_1.TypeScriptTypeKind.Type);
286
+ declarations.push({
287
+ name: match[1],
288
+ type: datamodel_1.TypeScriptTypeKind.Type,
289
+ file: filePath,
290
+ line: lineNumber,
291
+ isExported: true,
292
+ definition: definition,
293
+ });
294
+ continue;
295
+ }
296
+ match = line.match(exportedEnumRegex);
297
+ if (match) {
298
+ const definition = extractDefinition(lines, i, datamodel_1.TypeScriptTypeKind.Enum);
299
+ declarations.push({
300
+ name: match[1],
301
+ type: datamodel_1.TypeScriptTypeKind.Enum,
302
+ file: filePath,
303
+ line: lineNumber,
304
+ isExported: true,
305
+ definition: definition,
306
+ });
307
+ continue;
308
+ }
309
+ match = line.match(nonExportedInterfaceRegex);
310
+ if (match) {
311
+ const definition = extractDefinition(lines, i, datamodel_1.TypeScriptTypeKind.Interface);
312
+ declarations.push({
313
+ name: match[1],
314
+ type: datamodel_1.TypeScriptTypeKind.Interface,
315
+ file: filePath,
316
+ line: lineNumber,
317
+ isExported: false,
318
+ definition: definition,
319
+ });
320
+ continue;
321
+ }
322
+ match = line.match(nonExportedTypeRegex);
323
+ if (match) {
324
+ const definition = extractDefinition(lines, i, datamodel_1.TypeScriptTypeKind.Type);
325
+ declarations.push({
326
+ name: match[1],
327
+ type: datamodel_1.TypeScriptTypeKind.Type,
328
+ file: filePath,
329
+ line: lineNumber,
330
+ isExported: false,
331
+ definition: definition,
332
+ });
333
+ continue;
334
+ }
335
+ match = line.match(nonExportedEnumRegex);
336
+ if (match) {
337
+ const definition = extractDefinition(lines, i, datamodel_1.TypeScriptTypeKind.Enum);
338
+ declarations.push({
339
+ name: match[1],
340
+ type: datamodel_1.TypeScriptTypeKind.Enum,
341
+ file: filePath,
342
+ line: lineNumber,
343
+ isExported: false,
344
+ definition: definition,
345
+ });
346
+ }
347
+ }
348
+ return declarations;
349
+ }
350
+ //# sourceMappingURL=ts-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-parser.js","sourceRoot":"","sources":["../../../src/utils/ts-parser.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@fyuld/snitch",
3
+ "version": "1.4.1",
4
+ "description": "Snitch",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "snitch": "./dist/src/index.js"
9
+ },
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "scripts": {
14
+ "tsc": "tsc",
15
+ "watch": "tsc --watch",
16
+ "clean": "rm -rf dist",
17
+ "test": "jest",
18
+ "lpub": "npm run build && npm link",
19
+ "checks": "npm run test && npm run format",
20
+ "build": "npm run clean && npm run checks && npm run tsc",
21
+ "test:watch": "jest --watch",
22
+ "test:coverage": "jest --coverage",
23
+ "format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json}\"",
24
+ "format:check": "prettier --check \"src/**/*.{ts,tsx,js,jsx,json}\""
25
+ },
26
+ "author": "David Grigoryan <hi@imdavidsg.com>",
27
+ "license": "GPL-3.0",
28
+ "devDependencies": {
29
+ "@types/jest": "^30.0.0",
30
+ "@types/node": "^24.5.2",
31
+ "jest": "^30.1.3",
32
+ "prettier": "^3.6.2",
33
+ "ts-jest": "^29.4.2",
34
+ "typescript": "^5.9.2"
35
+ },
36
+ "files": [
37
+ "dist",
38
+ ".snitchconfig.json"
39
+ ]
40
+ }