@mnemonica/tactica 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +475 -0
- package/lib/analyzer.d.ts +75 -0
- package/lib/analyzer.js +478 -0
- package/lib/analyzer.js.map +1 -0
- package/lib/cli.d.ts +29 -0
- package/lib/cli.js +327 -0
- package/lib/cli.js.map +1 -0
- package/lib/generator.d.ts +42 -0
- package/lib/generator.js +187 -0
- package/lib/generator.js.map +1 -0
- package/lib/graph.d.ts +25 -0
- package/lib/graph.js +81 -0
- package/lib/graph.js.map +1 -0
- package/lib/index.d.ts +15 -0
- package/lib/index.js +33 -0
- package/lib/index.js.map +1 -0
- package/lib/plugin.d.ts +8 -0
- package/lib/plugin.js +128 -0
- package/lib/plugin.js.map +1 -0
- package/lib/types.d.ts +72 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/lib/writer.d.ts +40 -0
- package/lib/writer.js +139 -0
- package/lib/writer.js.map +1 -0
- package/package.json +63 -0
package/lib/analyzer.js
ADDED
|
@@ -0,0 +1,478 @@
|
|
|
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.MnemonicaAnalyzer = void 0;
|
|
37
|
+
const ts = __importStar(require("typescript"));
|
|
38
|
+
const graph_1 = require("./graph");
|
|
39
|
+
/**
|
|
40
|
+
* AST Analyzer for finding Mnemonica define() and decorate() calls
|
|
41
|
+
*/
|
|
42
|
+
class MnemonicaAnalyzer {
|
|
43
|
+
constructor(program) {
|
|
44
|
+
this.errors = [];
|
|
45
|
+
this.graph = new graph_1.TypeGraphImpl();
|
|
46
|
+
// Store program for future use (currently unused but kept for extensibility)
|
|
47
|
+
void program;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Analyze a source file for Mnemonica type definitions
|
|
51
|
+
*/
|
|
52
|
+
analyzeFile(sourceFile) {
|
|
53
|
+
this.errors = [];
|
|
54
|
+
this.visitNode(sourceFile, sourceFile);
|
|
55
|
+
return {
|
|
56
|
+
types: this.graph.getAllTypes(),
|
|
57
|
+
errors: this.errors,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Analyze source code string
|
|
62
|
+
*/
|
|
63
|
+
analyzeSource(sourceCode, fileName = 'temp.ts') {
|
|
64
|
+
const sourceFile = ts.createSourceFile(fileName, sourceCode, ts.ScriptTarget.Latest, true);
|
|
65
|
+
return this.analyzeFile(sourceFile);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get the type graph
|
|
69
|
+
*/
|
|
70
|
+
getGraph() {
|
|
71
|
+
return this.graph;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Visit a node in the AST
|
|
75
|
+
*/
|
|
76
|
+
visitNode(node, sourceFile, currentClass) {
|
|
77
|
+
// Check for define() calls
|
|
78
|
+
if (this.isDefineCall(node)) {
|
|
79
|
+
this.processDefineCall(node, sourceFile);
|
|
80
|
+
}
|
|
81
|
+
// Check for decorate() decorator
|
|
82
|
+
if (this.isDecorateDecorator(node)) {
|
|
83
|
+
this.processDecorateDecorator(node, sourceFile, currentClass);
|
|
84
|
+
}
|
|
85
|
+
// Track class declarations for decorator parent lookup
|
|
86
|
+
if (ts.isClassDeclaration(node)) {
|
|
87
|
+
// Visit children with this class as the current context
|
|
88
|
+
ts.forEachChild(node, child => this.visitNode(child, sourceFile, node));
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Recursively visit children
|
|
92
|
+
ts.forEachChild(node, child => this.visitNode(child, sourceFile, currentClass));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Check if a node is a define() call
|
|
97
|
+
*/
|
|
98
|
+
isDefineCall(node) {
|
|
99
|
+
if (!ts.isCallExpression(node)) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
const expression = node.expression;
|
|
103
|
+
// Check for direct call: define('TypeName', ...)
|
|
104
|
+
if (ts.isIdentifier(expression) && expression.text === 'define') {
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
// Check for method call: SomeType.define('SubType', ...)
|
|
108
|
+
if (ts.isPropertyAccessExpression(expression)) {
|
|
109
|
+
return expression.name?.text === 'define';
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Check if a node is a @decorate() decorator
|
|
115
|
+
*/
|
|
116
|
+
isDecorateDecorator(node) {
|
|
117
|
+
if (!ts.isDecorator(node)) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
const expression = node.expression;
|
|
121
|
+
// Check for @decorate
|
|
122
|
+
if (ts.isIdentifier(expression) && expression.text === 'decorate') {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
// Check for @decorate() or @decorate(ParentType)
|
|
126
|
+
if (ts.isCallExpression(expression)) {
|
|
127
|
+
const fnName = expression.expression;
|
|
128
|
+
if (ts.isIdentifier(fnName) && fnName.text === 'decorate') {
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Process a define() call
|
|
136
|
+
*/
|
|
137
|
+
processDefineCall(call, sourceFile) {
|
|
138
|
+
const { line, character } = ts.getLineAndCharacterOfPosition(sourceFile, call.getStart(sourceFile));
|
|
139
|
+
// Get the type name from arguments
|
|
140
|
+
const typeName = this.extractTypeName(call);
|
|
141
|
+
if (!typeName) {
|
|
142
|
+
this.errors.push({
|
|
143
|
+
message: 'Could not extract type name from define() call',
|
|
144
|
+
file: sourceFile.fileName,
|
|
145
|
+
line: line + 1,
|
|
146
|
+
column: character + 1,
|
|
147
|
+
});
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
// Determine parent type
|
|
151
|
+
const parentNode = this.findParentType(call);
|
|
152
|
+
// Create type node
|
|
153
|
+
const node = graph_1.TypeGraphImpl.createNode(typeName, parentNode, sourceFile.fileName, line + 1, character + 1);
|
|
154
|
+
// Extract properties from constructor function
|
|
155
|
+
node.properties = this.extractProperties(call);
|
|
156
|
+
// Add to graph
|
|
157
|
+
if (parentNode) {
|
|
158
|
+
this.graph.addChild(parentNode, node);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
this.graph.addRoot(node);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Process a @decorate() decorator
|
|
166
|
+
*/
|
|
167
|
+
processDecorateDecorator(decorator, sourceFile, classDeclParam) {
|
|
168
|
+
const { line, character } = ts.getLineAndCharacterOfPosition(sourceFile, decorator.getStart(sourceFile));
|
|
169
|
+
// Get the class declaration - use the passed context if parent is not set
|
|
170
|
+
const classDecl = decorator.parent || classDeclParam;
|
|
171
|
+
if (!classDecl || !classDecl.name) {
|
|
172
|
+
this.errors.push({
|
|
173
|
+
message: 'Decorated class has no name',
|
|
174
|
+
file: sourceFile.fileName,
|
|
175
|
+
line: line + 1,
|
|
176
|
+
column: character + 1,
|
|
177
|
+
});
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const typeName = classDecl.name.text;
|
|
181
|
+
if (!typeName) {
|
|
182
|
+
this.errors.push({
|
|
183
|
+
message: 'Decorated class has no name',
|
|
184
|
+
file: sourceFile.fileName,
|
|
185
|
+
line: line + 1,
|
|
186
|
+
column: character + 1,
|
|
187
|
+
});
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
// Try to find parent type from decorator arguments
|
|
191
|
+
let parentNode;
|
|
192
|
+
if (ts.isCallExpression(decorator.expression)) {
|
|
193
|
+
const args = decorator.expression.arguments;
|
|
194
|
+
if (args.length > 0 && ts.isIdentifier(args[0])) {
|
|
195
|
+
const parentName = args[0].text;
|
|
196
|
+
// First try exact match
|
|
197
|
+
parentNode = this.graph.findType(parentName);
|
|
198
|
+
// Then search through all types for one with matching name
|
|
199
|
+
if (!parentNode) {
|
|
200
|
+
for (const type of this.graph.getAllTypes()) {
|
|
201
|
+
if (type.name === parentName) {
|
|
202
|
+
parentNode = type;
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Create type node
|
|
210
|
+
const node = graph_1.TypeGraphImpl.createNode(typeName, parentNode, sourceFile.fileName, line + 1, character + 1);
|
|
211
|
+
// Extract properties from class members
|
|
212
|
+
node.properties = this.extractClassProperties(classDecl);
|
|
213
|
+
// Add to graph
|
|
214
|
+
if (parentNode) {
|
|
215
|
+
this.graph.addChild(parentNode, node);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
this.graph.addRoot(node);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Extract type name from define() call arguments
|
|
223
|
+
*/
|
|
224
|
+
extractTypeName(call) {
|
|
225
|
+
const args = call.arguments;
|
|
226
|
+
// define('TypeName', handler) or define(() => class)
|
|
227
|
+
if (args.length === 0) {
|
|
228
|
+
return undefined;
|
|
229
|
+
}
|
|
230
|
+
const firstArg = args[0];
|
|
231
|
+
// String literal: define('TypeName', ...)
|
|
232
|
+
if (ts.isStringLiteral(firstArg)) {
|
|
233
|
+
return firstArg.text;
|
|
234
|
+
}
|
|
235
|
+
// Function with name: define(function TypeName() {})
|
|
236
|
+
if (ts.isFunctionExpression(firstArg) && firstArg.name) {
|
|
237
|
+
return firstArg.name.text;
|
|
238
|
+
}
|
|
239
|
+
// Arrow function returning class: define(() => class TypeName {})
|
|
240
|
+
if (ts.isArrowFunction(firstArg)) {
|
|
241
|
+
const body = firstArg.body;
|
|
242
|
+
if (ts.isClassExpression(body) && body.name) {
|
|
243
|
+
return body.name.text;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return undefined;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Find parent type node for nested define calls
|
|
250
|
+
*/
|
|
251
|
+
findParentType(call) {
|
|
252
|
+
const expression = call.expression;
|
|
253
|
+
// Check for method call: SomeType.define('SubType', ...)
|
|
254
|
+
if (!ts.isPropertyAccessExpression(expression)) {
|
|
255
|
+
return undefined;
|
|
256
|
+
}
|
|
257
|
+
// Get the object being called on (SomeType in SomeType.define)
|
|
258
|
+
const obj = expression.expression;
|
|
259
|
+
if (ts.isIdentifier(obj)) {
|
|
260
|
+
// Direct reference to parent type - search by simple name
|
|
261
|
+
const name = obj.text;
|
|
262
|
+
// First try exact match
|
|
263
|
+
const exact = this.graph.findType(name);
|
|
264
|
+
if (exact)
|
|
265
|
+
return exact;
|
|
266
|
+
// Then search through all types for one with matching name
|
|
267
|
+
for (const type of this.graph.getAllTypes()) {
|
|
268
|
+
if (type.name === name) {
|
|
269
|
+
return type;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return undefined;
|
|
273
|
+
}
|
|
274
|
+
if (ts.isPropertyAccessExpression(obj)) {
|
|
275
|
+
// Nested access: instance.Type.define - try to resolve
|
|
276
|
+
const chain = this.getPropertyChain(obj);
|
|
277
|
+
if (chain.length > 0) {
|
|
278
|
+
return this.graph.findType(chain.join('.'));
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return undefined;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Get property chain from nested access
|
|
285
|
+
*/
|
|
286
|
+
getPropertyChain(expr) {
|
|
287
|
+
const chain = [];
|
|
288
|
+
let current = expr;
|
|
289
|
+
while (ts.isPropertyAccessExpression(current)) {
|
|
290
|
+
if (current.name) {
|
|
291
|
+
chain.unshift(current.name.text);
|
|
292
|
+
}
|
|
293
|
+
current = current.expression;
|
|
294
|
+
}
|
|
295
|
+
if (ts.isIdentifier(current)) {
|
|
296
|
+
chain.unshift(current.text);
|
|
297
|
+
}
|
|
298
|
+
return chain;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Extract properties from constructor function
|
|
302
|
+
*/
|
|
303
|
+
extractProperties(call) {
|
|
304
|
+
const properties = new Map();
|
|
305
|
+
const handlerArg = call.arguments[1];
|
|
306
|
+
if (!handlerArg) {
|
|
307
|
+
return properties;
|
|
308
|
+
}
|
|
309
|
+
// Handle function expression
|
|
310
|
+
if (ts.isFunctionExpression(handlerArg) || ts.isArrowFunction(handlerArg)) {
|
|
311
|
+
const body = handlerArg.body;
|
|
312
|
+
// Function body with statements
|
|
313
|
+
if (ts.isBlock(body)) {
|
|
314
|
+
for (const stmt of body.statements) {
|
|
315
|
+
if (ts.isExpressionStatement(stmt)) {
|
|
316
|
+
this.extractPropertyFromStatement(stmt.expression, properties);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
// Handle class expression
|
|
322
|
+
if (ts.isClassExpression(handlerArg)) {
|
|
323
|
+
for (const member of handlerArg.members) {
|
|
324
|
+
if (ts.isPropertyDeclaration(member) && member.name) {
|
|
325
|
+
const name = ts.isIdentifier(member.name) ? member.name.text : '';
|
|
326
|
+
if (name) {
|
|
327
|
+
properties.set(name, {
|
|
328
|
+
name,
|
|
329
|
+
type: this.inferType(member.type),
|
|
330
|
+
optional: !!member.questionToken,
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return properties;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Extract property assignment from statement
|
|
340
|
+
*/
|
|
341
|
+
extractPropertyFromStatement(expr, properties) {
|
|
342
|
+
// Handle: this.property = value
|
|
343
|
+
if (ts.isBinaryExpression(expr) &&
|
|
344
|
+
expr.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
|
|
345
|
+
const left = expr.left;
|
|
346
|
+
if (ts.isPropertyAccessExpression(left)) {
|
|
347
|
+
// Check if accessing 'this' (ThisKeyword)
|
|
348
|
+
if (left.expression.kind === ts.SyntaxKind.ThisKeyword) {
|
|
349
|
+
const name = left.name?.text;
|
|
350
|
+
if (name) {
|
|
351
|
+
properties.set(name, {
|
|
352
|
+
name,
|
|
353
|
+
type: this.inferTypeFromInitializer(expr.right),
|
|
354
|
+
optional: false,
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
// Handle: Object.assign(this, { prop: value })
|
|
361
|
+
if (ts.isCallExpression(expr)) {
|
|
362
|
+
const fn = expr.expression;
|
|
363
|
+
if (ts.isPropertyAccessExpression(fn) &&
|
|
364
|
+
fn.name?.text === 'assign' &&
|
|
365
|
+
ts.isIdentifier(fn.expression) &&
|
|
366
|
+
fn.expression.text === 'Object') {
|
|
367
|
+
const args = expr.arguments;
|
|
368
|
+
if (args.length >= 2 && args[0].kind === ts.SyntaxKind.ThisKeyword) {
|
|
369
|
+
// Extract properties from the second argument
|
|
370
|
+
const propsArg = args[1];
|
|
371
|
+
if (ts.isObjectLiteralExpression(propsArg)) {
|
|
372
|
+
for (const prop of propsArg.properties) {
|
|
373
|
+
if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {
|
|
374
|
+
const name = prop.name.text;
|
|
375
|
+
properties.set(name, {
|
|
376
|
+
name,
|
|
377
|
+
type: this.inferTypeFromInitializer(prop.initializer),
|
|
378
|
+
optional: false,
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Extract properties from class declaration
|
|
389
|
+
*/
|
|
390
|
+
extractClassProperties(classDecl) {
|
|
391
|
+
const properties = new Map();
|
|
392
|
+
for (const member of classDecl.members) {
|
|
393
|
+
if (ts.isPropertyDeclaration(member) && member.name) {
|
|
394
|
+
const name = ts.isIdentifier(member.name) ? member.name.text : '';
|
|
395
|
+
if (name) {
|
|
396
|
+
// If no explicit type but has initializer, infer from initializer
|
|
397
|
+
let type = this.inferType(member.type);
|
|
398
|
+
if (type === 'unknown' && member.initializer) {
|
|
399
|
+
type = this.inferTypeFromInitializer(member.initializer);
|
|
400
|
+
}
|
|
401
|
+
properties.set(name, {
|
|
402
|
+
name,
|
|
403
|
+
type,
|
|
404
|
+
optional: !!member.questionToken,
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
return properties;
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Infer TypeScript type from type node
|
|
413
|
+
*/
|
|
414
|
+
inferType(typeNode) {
|
|
415
|
+
if (!typeNode) {
|
|
416
|
+
return 'unknown';
|
|
417
|
+
}
|
|
418
|
+
switch (typeNode.kind) {
|
|
419
|
+
case ts.SyntaxKind.StringKeyword:
|
|
420
|
+
return 'string';
|
|
421
|
+
case ts.SyntaxKind.NumberKeyword:
|
|
422
|
+
return 'number';
|
|
423
|
+
case ts.SyntaxKind.BooleanKeyword:
|
|
424
|
+
return 'boolean';
|
|
425
|
+
case ts.SyntaxKind.UndefinedKeyword:
|
|
426
|
+
return 'undefined';
|
|
427
|
+
case ts.SyntaxKind.NullKeyword:
|
|
428
|
+
return 'null';
|
|
429
|
+
case ts.SyntaxKind.AnyKeyword:
|
|
430
|
+
return 'any';
|
|
431
|
+
case ts.SyntaxKind.UnknownKeyword:
|
|
432
|
+
return 'unknown';
|
|
433
|
+
case ts.SyntaxKind.VoidKeyword:
|
|
434
|
+
return 'void';
|
|
435
|
+
case ts.SyntaxKind.ArrayType:
|
|
436
|
+
return 'Array<' + this.inferType(typeNode.elementType) + '>';
|
|
437
|
+
case ts.SyntaxKind.TypeLiteral:
|
|
438
|
+
return 'object';
|
|
439
|
+
default:
|
|
440
|
+
// For complex types, return the text representation
|
|
441
|
+
return 'unknown';
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Infer type from initializer
|
|
446
|
+
*/
|
|
447
|
+
inferTypeFromInitializer(initializer) {
|
|
448
|
+
switch (initializer.kind) {
|
|
449
|
+
case ts.SyntaxKind.StringLiteral:
|
|
450
|
+
return 'string';
|
|
451
|
+
case ts.SyntaxKind.NumericLiteral:
|
|
452
|
+
return 'number';
|
|
453
|
+
case ts.SyntaxKind.TrueKeyword:
|
|
454
|
+
case ts.SyntaxKind.FalseKeyword:
|
|
455
|
+
return 'boolean';
|
|
456
|
+
case ts.SyntaxKind.NullKeyword:
|
|
457
|
+
return 'null';
|
|
458
|
+
case ts.SyntaxKind.UndefinedKeyword:
|
|
459
|
+
return 'undefined';
|
|
460
|
+
case ts.SyntaxKind.ArrayLiteralExpression:
|
|
461
|
+
return 'Array<unknown>';
|
|
462
|
+
case ts.SyntaxKind.ObjectLiteralExpression:
|
|
463
|
+
return 'object';
|
|
464
|
+
case ts.SyntaxKind.NewExpression: {
|
|
465
|
+
// Handle new Date(), new Map(), etc.
|
|
466
|
+
const newExpr = initializer;
|
|
467
|
+
if (ts.isIdentifier(newExpr.expression)) {
|
|
468
|
+
return newExpr.expression.text;
|
|
469
|
+
}
|
|
470
|
+
return 'object';
|
|
471
|
+
}
|
|
472
|
+
default:
|
|
473
|
+
return 'unknown';
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
exports.MnemonicaAnalyzer = MnemonicaAnalyzer;
|
|
478
|
+
//# sourceMappingURL=analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
|
package/lib/cli.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { TacticaConfig } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* CLI entry point for Tactica
|
|
5
|
+
*
|
|
6
|
+
* Can be used standalone without the Language Service Plugin
|
|
7
|
+
*/
|
|
8
|
+
interface CLIOptions extends TacticaConfig {
|
|
9
|
+
watch?: boolean;
|
|
10
|
+
project?: string;
|
|
11
|
+
help?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Parse command line arguments
|
|
15
|
+
*/
|
|
16
|
+
declare function parseArgs(args: string[]): CLIOptions;
|
|
17
|
+
/**
|
|
18
|
+
* Run type generation
|
|
19
|
+
*/
|
|
20
|
+
declare function run(options: CLIOptions): void;
|
|
21
|
+
/**
|
|
22
|
+
* Watch mode
|
|
23
|
+
*/
|
|
24
|
+
declare function watch(options: CLIOptions): void;
|
|
25
|
+
/**
|
|
26
|
+
* Main entry point
|
|
27
|
+
*/
|
|
28
|
+
declare function main(): void;
|
|
29
|
+
export { main, run, watch, parseArgs };
|