@tsonic/frontend 0.0.4 → 0.0.11

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 (193) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/ir/builder/exports.d.ts.map +1 -1
  7. package/dist/ir/builder/exports.js +8 -6
  8. package/dist/ir/builder/exports.js.map +1 -1
  9. package/dist/ir/builder/imports.d.ts.map +1 -1
  10. package/dist/ir/builder/imports.js +6 -6
  11. package/dist/ir/builder/imports.js.map +1 -1
  12. package/dist/ir/builder/statements.d.ts +7 -1
  13. package/dist/ir/builder/statements.d.ts.map +1 -1
  14. package/dist/ir/builder/statements.js +18 -5
  15. package/dist/ir/builder/statements.js.map +1 -1
  16. package/dist/ir/builder.test.js +70 -5
  17. package/dist/ir/builder.test.js.map +1 -1
  18. package/dist/ir/converters/anonymous-synthesis.d.ts +76 -0
  19. package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -0
  20. package/dist/ir/converters/anonymous-synthesis.js +307 -0
  21. package/dist/ir/converters/anonymous-synthesis.js.map +1 -0
  22. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  23. package/dist/ir/converters/expressions/access.js +65 -2
  24. package/dist/ir/converters/expressions/access.js.map +1 -1
  25. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  26. package/dist/ir/converters/expressions/calls.js +96 -1
  27. package/dist/ir/converters/expressions/calls.js.map +1 -1
  28. package/dist/ir/converters/expressions/collections.d.ts +3 -0
  29. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  30. package/dist/ir/converters/expressions/collections.js +43 -2
  31. package/dist/ir/converters/expressions/collections.js.map +1 -1
  32. package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
  33. package/dist/ir/converters/expressions/functions.js +52 -5
  34. package/dist/ir/converters/expressions/functions.js.map +1 -1
  35. package/dist/ir/converters/expressions/helpers.d.ts +10 -0
  36. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
  37. package/dist/ir/converters/expressions/helpers.js +173 -7
  38. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  39. package/dist/ir/converters/expressions/index.d.ts +1 -1
  40. package/dist/ir/converters/expressions/index.d.ts.map +1 -1
  41. package/dist/ir/converters/expressions/index.js +1 -1
  42. package/dist/ir/converters/expressions/index.js.map +1 -1
  43. package/dist/ir/converters/expressions/literals.d.ts.map +1 -1
  44. package/dist/ir/converters/expressions/literals.js +2 -1
  45. package/dist/ir/converters/expressions/literals.js.map +1 -1
  46. package/dist/ir/converters/expressions/numeric-recovery.test.d.ts +14 -0
  47. package/dist/ir/converters/expressions/numeric-recovery.test.d.ts.map +1 -0
  48. package/dist/ir/converters/expressions/numeric-recovery.test.js +286 -0
  49. package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -0
  50. package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
  51. package/dist/ir/converters/expressions/operators.js +16 -2
  52. package/dist/ir/converters/expressions/operators.js.map +1 -1
  53. package/dist/ir/converters/expressions/other.d.ts.map +1 -1
  54. package/dist/ir/converters/expressions/other.js +4 -1
  55. package/dist/ir/converters/expressions/other.js.map +1 -1
  56. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
  57. package/dist/ir/converters/statements/control/conditionals.js +4 -6
  58. package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
  59. package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
  60. package/dist/ir/converters/statements/control/loops.js +6 -5
  61. package/dist/ir/converters/statements/control/loops.js.map +1 -1
  62. package/dist/ir/converters/statements/declarations/interfaces.d.ts +4 -3
  63. package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -1
  64. package/dist/ir/converters/statements/declarations/interfaces.js +55 -1
  65. package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -1
  66. package/dist/ir/converters/statements/declarations/type-aliases.d.ts +8 -3
  67. package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -1
  68. package/dist/ir/converters/statements/declarations/type-aliases.js +12 -2
  69. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  70. package/dist/ir/converters/synthetic-types.d.ts +38 -0
  71. package/dist/ir/converters/synthetic-types.d.ts.map +1 -0
  72. package/dist/ir/converters/synthetic-types.js +123 -0
  73. package/dist/ir/converters/synthetic-types.js.map +1 -0
  74. package/dist/ir/expression-converter.d.ts.map +1 -1
  75. package/dist/ir/expression-converter.js +81 -9
  76. package/dist/ir/expression-converter.js.map +1 -1
  77. package/dist/ir/statement-converter.d.ts +16 -1
  78. package/dist/ir/statement-converter.d.ts.map +1 -1
  79. package/dist/ir/statement-converter.js +32 -0
  80. package/dist/ir/statement-converter.js.map +1 -1
  81. package/dist/ir/type-converter/arrays.d.ts.map +1 -1
  82. package/dist/ir/type-converter/arrays.js +1 -0
  83. package/dist/ir/type-converter/arrays.js.map +1 -1
  84. package/dist/ir/type-converter/index.d.ts +1 -1
  85. package/dist/ir/type-converter/index.d.ts.map +1 -1
  86. package/dist/ir/type-converter/index.js +1 -1
  87. package/dist/ir/type-converter/index.js.map +1 -1
  88. package/dist/ir/type-converter/inference.d.ts +12 -0
  89. package/dist/ir/type-converter/inference.d.ts.map +1 -1
  90. package/dist/ir/type-converter/inference.js +172 -23
  91. package/dist/ir/type-converter/inference.js.map +1 -1
  92. package/dist/ir/type-converter/literals.d.ts.map +1 -1
  93. package/dist/ir/type-converter/literals.js +2 -1
  94. package/dist/ir/type-converter/literals.js.map +1 -1
  95. package/dist/ir/type-converter/objects.d.ts.map +1 -1
  96. package/dist/ir/type-converter/objects.js +2 -1
  97. package/dist/ir/type-converter/objects.js.map +1 -1
  98. package/dist/ir/type-converter/orchestrator.d.ts +2 -2
  99. package/dist/ir/type-converter/orchestrator.d.ts.map +1 -1
  100. package/dist/ir/type-converter/orchestrator.js +55 -1
  101. package/dist/ir/type-converter/orchestrator.js.map +1 -1
  102. package/dist/ir/type-converter/references.d.ts.map +1 -1
  103. package/dist/ir/type-converter/references.js +14 -18
  104. package/dist/ir/type-converter/references.js.map +1 -1
  105. package/dist/ir/type-converter.d.ts +1 -1
  106. package/dist/ir/type-converter.d.ts.map +1 -1
  107. package/dist/ir/type-converter.js +1 -1
  108. package/dist/ir/type-converter.js.map +1 -1
  109. package/dist/ir/types/expressions.d.ts +110 -1
  110. package/dist/ir/types/expressions.d.ts.map +1 -1
  111. package/dist/ir/types/guards.d.ts.map +1 -1
  112. package/dist/ir/types/guards.js +2 -0
  113. package/dist/ir/types/guards.js.map +1 -1
  114. package/dist/ir/types/index.d.ts +5 -3
  115. package/dist/ir/types/index.d.ts.map +1 -1
  116. package/dist/ir/types/index.js +1 -0
  117. package/dist/ir/types/index.js.map +1 -1
  118. package/dist/ir/types/ir-types.d.ts +33 -1
  119. package/dist/ir/types/ir-types.d.ts.map +1 -1
  120. package/dist/ir/types/numeric-kind.d.ts +68 -0
  121. package/dist/ir/types/numeric-kind.d.ts.map +1 -0
  122. package/dist/ir/types/numeric-kind.js +170 -0
  123. package/dist/ir/types/numeric-kind.js.map +1 -0
  124. package/dist/ir/types/statements.d.ts +38 -1
  125. package/dist/ir/types/statements.d.ts.map +1 -1
  126. package/dist/ir/types.d.ts +2 -1
  127. package/dist/ir/types.d.ts.map +1 -1
  128. package/dist/ir/types.js +2 -0
  129. package/dist/ir/types.js.map +1 -1
  130. package/dist/ir/validation/index.d.ts +7 -0
  131. package/dist/ir/validation/index.d.ts.map +1 -0
  132. package/dist/ir/validation/index.js +7 -0
  133. package/dist/ir/validation/index.js.map +1 -0
  134. package/dist/ir/validation/numeric-invariants.test.d.ts +15 -0
  135. package/dist/ir/validation/numeric-invariants.test.d.ts.map +1 -0
  136. package/dist/ir/validation/numeric-invariants.test.js +598 -0
  137. package/dist/ir/validation/numeric-invariants.test.js.map +1 -0
  138. package/dist/ir/validation/numeric-proof-pass.d.ts +37 -0
  139. package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -0
  140. package/dist/ir/validation/numeric-proof-pass.js +889 -0
  141. package/dist/ir/validation/numeric-proof-pass.js.map +1 -0
  142. package/dist/ir/validation/soundness-gate.d.ts +26 -0
  143. package/dist/ir/validation/soundness-gate.d.ts.map +1 -0
  144. package/dist/ir/validation/soundness-gate.js +551 -0
  145. package/dist/ir/validation/soundness-gate.js.map +1 -0
  146. package/dist/ir/validation/soundness-gate.test.d.ts +13 -0
  147. package/dist/ir/validation/soundness-gate.test.d.ts.map +1 -0
  148. package/dist/ir/validation/soundness-gate.test.js +315 -0
  149. package/dist/ir/validation/soundness-gate.test.js.map +1 -0
  150. package/dist/ir/validation/yield-lowering-pass.d.ts +40 -0
  151. package/dist/ir/validation/yield-lowering-pass.d.ts.map +1 -0
  152. package/dist/ir/validation/yield-lowering-pass.js +548 -0
  153. package/dist/ir/validation/yield-lowering-pass.js.map +1 -0
  154. package/dist/ir/validation/yield-lowering-pass.test.d.ts +12 -0
  155. package/dist/ir/validation/yield-lowering-pass.test.d.ts.map +1 -0
  156. package/dist/ir/validation/yield-lowering-pass.test.js +761 -0
  157. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -0
  158. package/dist/program/bindings.d.ts +5 -0
  159. package/dist/program/bindings.d.ts.map +1 -1
  160. package/dist/program/bindings.js +12 -1
  161. package/dist/program/bindings.js.map +1 -1
  162. package/dist/program/dependency-graph.d.ts +3 -0
  163. package/dist/program/dependency-graph.d.ts.map +1 -1
  164. package/dist/program/dependency-graph.js +28 -4
  165. package/dist/program/dependency-graph.js.map +1 -1
  166. package/dist/program/index.d.ts +1 -1
  167. package/dist/program/index.d.ts.map +1 -1
  168. package/dist/program/index.js.map +1 -1
  169. package/dist/program.d.ts +1 -0
  170. package/dist/program.d.ts.map +1 -1
  171. package/dist/program.js.map +1 -1
  172. package/dist/resolver/clr-bindings-resolver.d.ts +9 -0
  173. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  174. package/dist/resolver/clr-bindings-resolver.js +52 -3
  175. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  176. package/dist/types/diagnostic.d.ts +1 -1
  177. package/dist/types/diagnostic.d.ts.map +1 -1
  178. package/dist/types/diagnostic.js.map +1 -1
  179. package/dist/validation/static-safety.d.ts +6 -1
  180. package/dist/validation/static-safety.d.ts.map +1 -1
  181. package/dist/validation/static-safety.js +144 -36
  182. package/dist/validation/static-safety.js.map +1 -1
  183. package/dist/validation/unsupported-utility-types.d.ts +38 -0
  184. package/dist/validation/unsupported-utility-types.d.ts.map +1 -0
  185. package/dist/validation/unsupported-utility-types.js +53 -0
  186. package/dist/validation/unsupported-utility-types.js.map +1 -0
  187. package/dist/validator.test.js +304 -14
  188. package/dist/validator.test.js.map +1 -1
  189. package/package.json +1 -1
  190. package/dist/types/parameter-modifiers.d.ts +0 -55
  191. package/dist/types/parameter-modifiers.d.ts.map +0 -1
  192. package/dist/types/parameter-modifiers.js +0 -148
  193. package/dist/types/parameter-modifiers.js.map +0 -1
@@ -209,15 +209,26 @@ describe("Static Safety Validation", () => {
209
209
  });
210
210
  });
211
211
  describe("TSN7403 - Object literal requires nominal type", () => {
212
- it("should reject object literal without contextual type", () => {
212
+ it("should allow simple object literal (auto-synthesis)", () => {
213
+ // Simple object literals with identifier keys are now synthesized automatically
213
214
  const source = `
214
215
  const a = { x: 1 };
216
+ `;
217
+ const program = createTestProgram(source);
218
+ const diagnostics = validateProgram(program);
219
+ const objDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7403");
220
+ expect(objDiag).to.equal(undefined);
221
+ });
222
+ it("should reject object literal with method shorthand", () => {
223
+ // Method shorthand is not eligible for synthesis
224
+ const source = `
225
+ const a = { foo() { return 1; } };
215
226
  `;
216
227
  const program = createTestProgram(source);
217
228
  const diagnostics = validateProgram(program);
218
229
  const objDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7403");
219
230
  expect(objDiag).not.to.equal(undefined);
220
- expect(objDiag?.message).to.include("contextual nominal type");
231
+ expect(objDiag?.message).to.include("Method shorthand");
221
232
  });
222
233
  it("should allow object literal with interface type", () => {
223
234
  const source = `
@@ -292,23 +303,139 @@ describe("Static Safety Validation", () => {
292
303
  const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
293
304
  expect(paramDiag).to.equal(undefined);
294
305
  });
306
+ // Contextual type inference tests
307
+ it("should allow lambda with contextually inferred params in array.sort", () => {
308
+ const source = `
309
+ const nums: number[] = [3, 1, 2];
310
+ const sorted = nums.sort((a, b) => a - b);
311
+ `;
312
+ const program = createTestProgram(source);
313
+ const diagnostics = validateProgram(program);
314
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
315
+ expect(paramDiag).to.equal(undefined);
316
+ });
317
+ it("should allow lambda with contextually inferred params in array.map", () => {
318
+ const source = `
319
+ const nums: number[] = [1, 2, 3];
320
+ const doubled = nums.map((x) => x * 2);
321
+ `;
322
+ const program = createTestProgram(source);
323
+ const diagnostics = validateProgram(program);
324
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
325
+ expect(paramDiag).to.equal(undefined);
326
+ });
327
+ it("should allow lambda with contextually inferred params in array.filter", () => {
328
+ const source = `
329
+ const nums: number[] = [1, 2, 3, 4];
330
+ const evens = nums.filter((x) => x % 2 === 0);
331
+ `;
332
+ const program = createTestProgram(source);
333
+ const diagnostics = validateProgram(program);
334
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
335
+ expect(paramDiag).to.equal(undefined);
336
+ });
337
+ it("should allow lambda with contextually inferred params in array.find", () => {
338
+ const source = `
339
+ const nums: number[] = [1, 2, 3];
340
+ const found = nums.find((x) => x > 2);
341
+ `;
342
+ const program = createTestProgram(source);
343
+ const diagnostics = validateProgram(program);
344
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
345
+ expect(paramDiag).to.equal(undefined);
346
+ });
347
+ it("should allow lambda assigned to typed function variable", () => {
348
+ const source = `
349
+ const fn: (x: number) => number = (x) => x + 1;
350
+ `;
351
+ const program = createTestProgram(source);
352
+ const diagnostics = validateProgram(program);
353
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
354
+ expect(paramDiag).to.equal(undefined);
355
+ });
356
+ it("should allow lambda passed to higher-order function", () => {
357
+ const source = `
358
+ function apply(fn: (x: number) => number, value: number): number {
359
+ return fn(value);
360
+ }
361
+ const result = apply((x) => x * 2, 5);
362
+ `;
363
+ const program = createTestProgram(source);
364
+ const diagnostics = validateProgram(program);
365
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
366
+ expect(paramDiag).to.equal(undefined);
367
+ });
368
+ it("should allow Promise executor callback without explicit types", () => {
369
+ const source = `
370
+ export async function delay(ms: number): Promise<void> {
371
+ return new Promise((resolve) => {
372
+ setTimeout(resolve, ms);
373
+ });
374
+ }
375
+ `;
376
+ const program = createTestProgram(source);
377
+ const diagnostics = validateProgram(program);
378
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
379
+ expect(paramDiag).to.equal(undefined);
380
+ });
381
+ it("should allow Promise executor with both resolve and reject", () => {
382
+ const source = `
383
+ export function fetchData(): Promise<string> {
384
+ return new Promise((resolve, reject) => {
385
+ resolve("data");
386
+ });
387
+ }
388
+ `;
389
+ const program = createTestProgram(source);
390
+ const diagnostics = validateProgram(program);
391
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
392
+ expect(paramDiag).to.equal(undefined);
393
+ });
295
394
  });
296
- describe("TSN7413 - Dictionary key must be string", () => {
297
- it("should reject Record with number key", () => {
395
+ describe("TSN7413 - Dictionary key type validation", () => {
396
+ it("should allow Record with string key", () => {
397
+ const source = `
398
+ const d: Record<string, number> = {};
399
+ `;
400
+ const program = createTestProgram(source);
401
+ const diagnostics = validateProgram(program);
402
+ const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
403
+ expect(keyDiag).to.equal(undefined);
404
+ });
405
+ it("should allow Record with number key", () => {
298
406
  const source = `
299
407
  const d: Record<number, string> = {};
300
408
  `;
301
409
  const program = createTestProgram(source);
302
410
  const diagnostics = validateProgram(program);
303
411
  const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
304
- expect(keyDiag).not.to.equal(undefined);
305
- expect(keyDiag?.message).to.include("string");
412
+ expect(keyDiag).to.equal(undefined);
413
+ });
414
+ it("should allow index signature with string key", () => {
415
+ const source = `
416
+ interface StringIndexed {
417
+ [key: string]: number;
418
+ }
419
+ `;
420
+ const program = createTestProgram(source);
421
+ const diagnostics = validateProgram(program);
422
+ const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
423
+ expect(keyDiag).to.equal(undefined);
306
424
  });
307
- it("should reject index signature with number key", () => {
425
+ it("should allow index signature with number key", () => {
308
426
  const source = `
309
427
  interface NumIndexed {
310
428
  [key: number]: string;
311
429
  }
430
+ `;
431
+ const program = createTestProgram(source);
432
+ const diagnostics = validateProgram(program);
433
+ const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
434
+ expect(keyDiag).to.equal(undefined);
435
+ });
436
+ it("should reject Record with symbol key", () => {
437
+ const source = `
438
+ const d: Record<symbol, string> = {};
312
439
  `;
313
440
  const program = createTestProgram(source);
314
441
  const diagnostics = validateProgram(program);
@@ -316,26 +443,189 @@ describe("Static Safety Validation", () => {
316
443
  expect(keyDiag).not.to.equal(undefined);
317
444
  expect(keyDiag?.message).to.include("string");
318
445
  });
319
- it("should allow Record with string key", () => {
446
+ it("should reject Record with object key type", () => {
320
447
  const source = `
321
- const d: Record<string, number> = {};
448
+ interface Key { id: string; }
449
+ const d: Record<Key, string> = {};
322
450
  `;
323
451
  const program = createTestProgram(source);
324
452
  const diagnostics = validateProgram(program);
325
453
  const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
326
- expect(keyDiag).to.equal(undefined);
454
+ expect(keyDiag).not.to.equal(undefined);
327
455
  });
328
- it("should allow index signature with string key", () => {
456
+ });
457
+ describe("TSN7410 - Intersection types not supported", () => {
458
+ it("should reject intersection type", () => {
329
459
  const source = `
330
- interface StringIndexed {
331
- [key: string]: number;
332
- }
460
+ interface Named { name: string; }
461
+ interface Aged { age: number; }
462
+ type Person = Named & Aged;
333
463
  `;
334
464
  const program = createTestProgram(source);
335
465
  const diagnostics = validateProgram(program);
466
+ const intDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7410");
467
+ expect(intDiag).not.to.equal(undefined);
468
+ expect(intDiag?.message).to.include("Intersection types");
469
+ });
470
+ it("should reject nested intersection type", () => {
471
+ const source = `
472
+ interface A { a: string; }
473
+ interface B { b: number; }
474
+ interface C { c: boolean; }
475
+ type ABC = A & B & C;
476
+ `;
477
+ const program = createTestProgram(source);
478
+ const diagnostics = validateProgram(program);
479
+ const intDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7410");
480
+ expect(intDiag).not.to.equal(undefined);
481
+ });
482
+ });
483
+ describe("TSN7406 - Mapped utility types not supported", () => {
484
+ it("should reject Partial<T>", () => {
485
+ const source = `
486
+ interface Person { name: string; age: number; }
487
+ type PartialPerson = Partial<Person>;
488
+ `;
489
+ const program = createTestProgram(source);
490
+ const diagnostics = validateProgram(program);
491
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
492
+ expect(diag).not.to.equal(undefined);
493
+ expect(diag?.message).to.include("Partial");
494
+ });
495
+ it("should reject Required<T>", () => {
496
+ const source = `
497
+ interface Person { name?: string; }
498
+ type RequiredPerson = Required<Person>;
499
+ `;
500
+ const program = createTestProgram(source);
501
+ const diagnostics = validateProgram(program);
502
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
503
+ expect(diag).not.to.equal(undefined);
504
+ expect(diag?.message).to.include("Required");
505
+ });
506
+ it("should reject Pick<T, K>", () => {
507
+ const source = `
508
+ interface Person { name: string; age: number; email: string; }
509
+ type NameOnly = Pick<Person, "name">;
510
+ `;
511
+ const program = createTestProgram(source);
512
+ const diagnostics = validateProgram(program);
513
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
514
+ expect(diag).not.to.equal(undefined);
515
+ expect(diag?.message).to.include("Pick");
516
+ });
517
+ it("should reject Omit<T, K>", () => {
518
+ const source = `
519
+ interface Person { name: string; age: number; }
520
+ type NoAge = Omit<Person, "age">;
521
+ `;
522
+ const program = createTestProgram(source);
523
+ const diagnostics = validateProgram(program);
524
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
525
+ expect(diag).not.to.equal(undefined);
526
+ expect(diag?.message).to.include("Omit");
527
+ });
528
+ });
529
+ describe("TSN7407 - Conditional utility types not supported", () => {
530
+ it("should reject Extract<T, U>", () => {
531
+ const source = `
532
+ type StringOrNumber = string | number;
533
+ type OnlyStrings = Extract<StringOrNumber, string>;
534
+ `;
535
+ const program = createTestProgram(source);
536
+ const diagnostics = validateProgram(program);
537
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7407");
538
+ expect(diag).not.to.equal(undefined);
539
+ expect(diag?.message).to.include("Extract");
540
+ });
541
+ it("should reject Exclude<T, U>", () => {
542
+ const source = `
543
+ type StringOrNumber = string | number;
544
+ type NoStrings = Exclude<StringOrNumber, string>;
545
+ `;
546
+ const program = createTestProgram(source);
547
+ const diagnostics = validateProgram(program);
548
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7407");
549
+ expect(diag).not.to.equal(undefined);
550
+ expect(diag?.message).to.include("Exclude");
551
+ });
552
+ it("should reject NonNullable<T>", () => {
553
+ const source = `
554
+ type MaybeString = string | null | undefined;
555
+ type DefinitelyString = NonNullable<MaybeString>;
556
+ `;
557
+ const program = createTestProgram(source);
558
+ const diagnostics = validateProgram(program);
559
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7407");
560
+ expect(diag).not.to.equal(undefined);
561
+ expect(diag?.message).to.include("NonNullable");
562
+ });
563
+ it("should reject ReturnType<T>", () => {
564
+ const source = `
565
+ function greet(name: string): string { return name; }
566
+ type GreetReturn = ReturnType<typeof greet>;
567
+ `;
568
+ const program = createTestProgram(source);
569
+ const diagnostics = validateProgram(program);
570
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7407");
571
+ expect(diag).not.to.equal(undefined);
572
+ expect(diag?.message).to.include("ReturnType");
573
+ });
574
+ it("should reject Parameters<T>", () => {
575
+ const source = `
576
+ function add(a: number, b: number): number { return a + b; }
577
+ type AddParams = Parameters<typeof add>;
578
+ `;
579
+ const program = createTestProgram(source);
580
+ const diagnostics = validateProgram(program);
581
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7407");
582
+ expect(diag).not.to.equal(undefined);
583
+ expect(diag?.message).to.include("Parameters");
584
+ });
585
+ });
586
+ describe("No false positives for utility-like names", () => {
587
+ it("should allow user-defined type named Partial without type args", () => {
588
+ const source = `
589
+ interface Partial { x: number; y: number; }
590
+ const p: Partial = { x: 1, y: 2 };
591
+ `;
592
+ const program = createTestProgram(source);
593
+ const diagnostics = validateProgram(program);
594
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
595
+ expect(diag).to.equal(undefined);
596
+ });
597
+ it("should allow Record<string, T> (string keys are supported)", () => {
598
+ const source = `
599
+ type StringDict = Record<string, number>;
600
+ const d: StringDict = { a: 1, b: 2 };
601
+ `;
602
+ const program = createTestProgram(source);
603
+ const diagnostics = validateProgram(program);
604
+ // Should not have TSN7406 (mapped type) or TSN7413 (non-string key)
605
+ const mappedDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
336
606
  const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
607
+ expect(mappedDiag).to.equal(undefined);
337
608
  expect(keyDiag).to.equal(undefined);
338
609
  });
610
+ it("should allow ReadonlyArray<T> (not a mapped type)", () => {
611
+ const source = `
612
+ const arr: ReadonlyArray<number> = [1, 2, 3];
613
+ `;
614
+ const program = createTestProgram(source);
615
+ const diagnostics = validateProgram(program);
616
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
617
+ expect(diag).to.equal(undefined);
618
+ });
619
+ it("should allow user-defined Extract without type args", () => {
620
+ const source = `
621
+ interface Extract { value: string; }
622
+ const e: Extract = { value: "test" };
623
+ `;
624
+ const program = createTestProgram(source);
625
+ const diagnostics = validateProgram(program);
626
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7407");
627
+ expect(diag).to.equal(undefined);
628
+ });
339
629
  });
340
630
  });
341
631
  //# sourceMappingURL=validator.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validator.test.js","sourceRoot":"","sources":["../src/validator.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAEhF;;GAEG;AACH,MAAM,iBAAiB,GAAG,CACxB,MAAc,EACd,QAAQ,GAAG,SAAS,EACL,EAAE;IACjB,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,MAAM,EACN,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;IAEF,MAAM,eAAe,GAAuB;QAC1C,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;QAC9B,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ;QAC9B,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;KACb,CAAC;IAEF,MAAM,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC;IACjD,IAAI,CAAC,aAAa,GAAG,CACnB,IAAY,EACZ,wBAAsE,EACtE,OAAmC,EACnC,yBAAmC,EACnC,EAAE;QACF,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,qBAAqB,CAAC,IAAI,CAC/B,IAAI,EACJ,IAAI,EACJ,wBAAwB,EACxB,OAAO,EACP,yBAAyB,CAC1B,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IAEpE,OAAO;QACL,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE;QACjC,OAAO,EAAE;YACP,WAAW,EAAE,OAAO;YACpB,UAAU,EAAE,OAAO;YACnB,aAAa,EAAE,MAAM;SACtB;QACD,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,QAAQ,EAAE,IAAI,sBAAsB,EAAE;QACtC,QAAQ,EAAE,IAAI,eAAe,EAAE;QAC/B,WAAW,EAAE,yBAAyB,CAAC,OAAO,CAAC;KAChD,CAAC;AACJ,CAAC,CAAC;AAEF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,mDAAmD,EAAE,GAAG,EAAE;QACjE,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,MAAM,GAAG;;;;OAId,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CACpC,qCAAqC,CACtC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,MAAM,GAAG;;;;OAId,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,MAAM,GAAG;;;;OAId,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;QAC3D,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;YAC5E,MAAM,MAAM,GAAG;;;;OAId,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,wCAAwC;YACxC,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAChD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;YAClF,MAAM,MAAM,GAAG;;OAEd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,wCAAwC;YACxC,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,MAAM,GAAG;;;;OAId,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,wCAAwC;YACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;YACF,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;YACnF,MAAM,MAAM,GAAG;;OAEd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,wCAAwC;YACxC,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;YACF,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,MAAM,MAAM,GAAG;;;;;OAKd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,wCAAwC;YACxC,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAChD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;OAoBd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,iEAAiE;YACjE,wFAAwF;YACxF,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAChE,CAAC;YACF,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,MAAM,GAAG;;OAEd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC1E,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,MAAM,GAAG;;OAEd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC1E,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,MAAM,GAAG;;;;OAId,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC1E,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC9D,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,MAAM,GAAG;;OAEd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC1E,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,MAAM,GAAG;;;OAGd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC1E,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,MAAM,GAAG;;OAEd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC1E,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACrD,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,MAAM,GAAG;;;;OAId,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,MAAM,GAAG;;OAEd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,MAAM,GAAG;;OAEd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,MAAM,GAAG;;;;OAId,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,MAAM,GAAG;;OAEd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACvD,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,MAAM,GAAG;;OAEd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC1E,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,MAAM,GAAG;;;;OAId,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC1E,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,MAAM,GAAG;;OAEd,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC1E,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,MAAM,GAAG;;;;OAId,CAAC;YAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC1E,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"validator.test.js","sourceRoot":"","sources":["../src/validator.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsonic/frontend",
3
- "version": "0.0.4",
3
+ "version": "0.0.11",
4
4
  "description": "TypeScript parser and IR builder for Tsonic compiler",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,55 +0,0 @@
1
- /**
2
- * Parameter Modifier Tracking - Track ref/out/in types from @tsonic/types
3
- *
4
- * This module tracks which ref, out, and In types are legitimately imported
5
- * from @tsonic/types to ensure we only apply parameter modifiers to the
6
- * correct types (not user-defined types with the same names).
7
- */
8
- import * as ts from "typescript";
9
- /**
10
- * Registry for tracking trusted parameter modifier types
11
- */
12
- export declare class ParameterModifierRegistry {
13
- private static instance;
14
- private trustedSymbols;
15
- private aliasMap;
16
- private constructor();
17
- /**
18
- * Get singleton instance
19
- */
20
- static getInstance(): ParameterModifierRegistry;
21
- /**
22
- * Reset the registry (useful for testing)
23
- */
24
- static reset(): void;
25
- /**
26
- * Process an import declaration to track ref/out/In from @tsonic/types
27
- */
28
- processImport(importDecl: ts.ImportDeclaration): void;
29
- /**
30
- * Check if a type name is a trusted parameter modifier type
31
- */
32
- isTrustedParameterModifier(typeName: string): boolean;
33
- /**
34
- * Get the parameter modifier kind for a trusted type
35
- * @returns 'ref', 'out', 'in', or null if not a parameter modifier
36
- */
37
- getParameterModifierKind(typeName: string): "ref" | "out" | "in" | null;
38
- /**
39
- * Check if a TypeScript type is a parameter modifier type from @tsonic/types
40
- * This checks both the type name and verifies it was imported from @tsonic/types
41
- */
42
- isParameterModifierType(type: ts.Type, _checker: ts.TypeChecker): boolean;
43
- /**
44
- * Get parameter modifier info from a type
45
- */
46
- getParameterModifierInfo(type: ts.Type, _checker: ts.TypeChecker): {
47
- kind: "ref" | "out" | "in";
48
- wrappedType: ts.Type;
49
- } | null;
50
- }
51
- /**
52
- * Get the global parameter modifier registry instance
53
- */
54
- export declare const getParameterModifierRegistry: () => ParameterModifierRegistry;
55
- //# sourceMappingURL=parameter-modifiers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parameter-modifiers.d.ts","sourceRoot":"","sources":["../../src/types/parameter-modifiers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0C;IAGjE,OAAO,CAAC,cAAc,CAAqB;IAG3C,OAAO,CAAC,QAAQ,CAA6B;IAE7C,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,yBAAyB;IAO/C;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAOpB;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,iBAAiB,GAAG,IAAI;IAoCrD;;OAEG;IACH,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIrD;;;OAGG;IACH,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI;IAoBvE;;;OAGG;IACH,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,WAAW,GAAG,OAAO;IAWzE;;OAEG;IACH,wBAAwB,CACtB,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,EAAE,CAAC,WAAW,GACvB;QAAE,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAA;KAAE,GAAG,IAAI;CAgC/D;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAO,yBAE/C,CAAC"}
@@ -1,148 +0,0 @@
1
- /**
2
- * Parameter Modifier Tracking - Track ref/out/in types from @tsonic/types
3
- *
4
- * This module tracks which ref, out, and In types are legitimately imported
5
- * from @tsonic/types to ensure we only apply parameter modifiers to the
6
- * correct types (not user-defined types with the same names).
7
- */
8
- import * as ts from "typescript";
9
- /**
10
- * Registry for tracking trusted parameter modifier types
11
- */
12
- export class ParameterModifierRegistry {
13
- constructor() {
14
- // Track which symbols are imported from @tsonic/types
15
- this.trustedSymbols = new Set();
16
- // Track aliases (e.g., import { ref as myRef })
17
- this.aliasMap = new Map();
18
- }
19
- /**
20
- * Get singleton instance
21
- */
22
- static getInstance() {
23
- if (!ParameterModifierRegistry.instance) {
24
- ParameterModifierRegistry.instance = new ParameterModifierRegistry();
25
- }
26
- return ParameterModifierRegistry.instance;
27
- }
28
- /**
29
- * Reset the registry (useful for testing)
30
- */
31
- static reset() {
32
- if (ParameterModifierRegistry.instance) {
33
- ParameterModifierRegistry.instance.trustedSymbols.clear();
34
- ParameterModifierRegistry.instance.aliasMap.clear();
35
- }
36
- }
37
- /**
38
- * Process an import declaration to track ref/out/In from @tsonic/types
39
- */
40
- processImport(importDecl) {
41
- // Check if this is an import from @tsonic/types
42
- if (!ts.isStringLiteral(importDecl.moduleSpecifier)) {
43
- return;
44
- }
45
- const moduleSpecifier = importDecl.moduleSpecifier.text;
46
- if (moduleSpecifier !== "@tsonic/types") {
47
- return;
48
- }
49
- // Extract named imports
50
- if (importDecl.importClause?.namedBindings) {
51
- if (ts.isNamedImports(importDecl.importClause.namedBindings)) {
52
- for (const spec of importDecl.importClause.namedBindings.elements) {
53
- const importedName = (spec.propertyName ?? spec.name).text;
54
- const localName = spec.name.text;
55
- // Check if this is ref, out, or In
56
- if (importedName === "ref" ||
57
- importedName === "out" ||
58
- importedName === "In") {
59
- this.trustedSymbols.add(localName);
60
- // Track alias if different from imported name
61
- if (importedName !== localName) {
62
- this.aliasMap.set(localName, importedName);
63
- }
64
- }
65
- }
66
- }
67
- }
68
- }
69
- /**
70
- * Check if a type name is a trusted parameter modifier type
71
- */
72
- isTrustedParameterModifier(typeName) {
73
- return this.trustedSymbols.has(typeName);
74
- }
75
- /**
76
- * Get the parameter modifier kind for a trusted type
77
- * @returns 'ref', 'out', 'in', or null if not a parameter modifier
78
- */
79
- getParameterModifierKind(typeName) {
80
- if (!this.isTrustedParameterModifier(typeName)) {
81
- return null;
82
- }
83
- // Check if it's an alias
84
- const originalName = this.aliasMap.get(typeName) ?? typeName;
85
- switch (originalName) {
86
- case "ref":
87
- return "ref";
88
- case "out":
89
- return "out";
90
- case "In":
91
- return "in";
92
- default:
93
- return null;
94
- }
95
- }
96
- /**
97
- * Check if a TypeScript type is a parameter modifier type from @tsonic/types
98
- * This checks both the type name and verifies it was imported from @tsonic/types
99
- */
100
- isParameterModifierType(type, _checker) {
101
- // Get the symbol name
102
- const symbol = type.aliasSymbol || type.symbol;
103
- if (!symbol) {
104
- return false;
105
- }
106
- const typeName = symbol.getName();
107
- return this.isTrustedParameterModifier(typeName);
108
- }
109
- /**
110
- * Get parameter modifier info from a type
111
- */
112
- getParameterModifierInfo(type, _checker) {
113
- const symbol = type.aliasSymbol || type.symbol;
114
- if (!symbol) {
115
- return null;
116
- }
117
- const typeName = symbol.getName();
118
- const kind = this.getParameterModifierKind(typeName);
119
- if (!kind) {
120
- return null;
121
- }
122
- // Extract the wrapped type (T in ref<T>, out<T>, or In<T>)
123
- let wrappedType;
124
- if (type.aliasTypeArguments && type.aliasTypeArguments.length > 0) {
125
- wrappedType = type.aliasTypeArguments[0];
126
- }
127
- else {
128
- // Access typeArguments through the TypeReference interface
129
- const typeRef = type;
130
- const typeArgs = typeRef.typeArguments;
131
- if (typeArgs && typeArgs.length > 0) {
132
- wrappedType = typeArgs[0];
133
- }
134
- }
135
- if (!wrappedType) {
136
- return null;
137
- }
138
- return { kind, wrappedType };
139
- }
140
- }
141
- ParameterModifierRegistry.instance = null;
142
- /**
143
- * Get the global parameter modifier registry instance
144
- */
145
- export const getParameterModifierRegistry = () => {
146
- return ParameterModifierRegistry.getInstance();
147
- };
148
- //# sourceMappingURL=parameter-modifiers.js.map