numtypes 0.0.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.
Files changed (87) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +12 -0
  3. package/LICENSE-APACHE +201 -0
  4. package/LICENSE-MIT +21 -0
  5. package/README.md +652 -0
  6. package/dist/lib/index.d.ts +22 -0
  7. package/dist/lib/index.d.ts.map +1 -0
  8. package/dist/lib/index.js +2 -0
  9. package/dist/lib/index.js.map +1 -0
  10. package/dist/transformer/analyze/analyze-source-file.d.ts +15 -0
  11. package/dist/transformer/analyze/analyze-source-file.d.ts.map +1 -0
  12. package/dist/transformer/analyze/analyze-source-file.js +605 -0
  13. package/dist/transformer/analyze/analyze-source-file.js.map +1 -0
  14. package/dist/transformer/analyze/get-contextual-domain.d.ts +19 -0
  15. package/dist/transformer/analyze/get-contextual-domain.d.ts.map +1 -0
  16. package/dist/transformer/analyze/get-contextual-domain.js +197 -0
  17. package/dist/transformer/analyze/get-contextual-domain.js.map +1 -0
  18. package/dist/transformer/analyze/get-expression-domain.d.ts +26 -0
  19. package/dist/transformer/analyze/get-expression-domain.d.ts.map +1 -0
  20. package/dist/transformer/analyze/get-expression-domain.js +804 -0
  21. package/dist/transformer/analyze/get-expression-domain.js.map +1 -0
  22. package/dist/transformer/analyze/type-domain.d.ts +41 -0
  23. package/dist/transformer/analyze/type-domain.d.ts.map +1 -0
  24. package/dist/transformer/analyze/type-domain.js +260 -0
  25. package/dist/transformer/analyze/type-domain.js.map +1 -0
  26. package/dist/transformer/ast.d.ts +10 -0
  27. package/dist/transformer/ast.d.ts.map +1 -0
  28. package/dist/transformer/ast.js +115 -0
  29. package/dist/transformer/ast.js.map +1 -0
  30. package/dist/transformer/diagnostics.d.ts +17 -0
  31. package/dist/transformer/diagnostics.d.ts.map +1 -0
  32. package/dist/transformer/diagnostics.js +30 -0
  33. package/dist/transformer/diagnostics.js.map +1 -0
  34. package/dist/transformer/domains.d.ts +11 -0
  35. package/dist/transformer/domains.d.ts.map +1 -0
  36. package/dist/transformer/domains.js +32 -0
  37. package/dist/transformer/domains.js.map +1 -0
  38. package/dist/transformer/index.d.ts +10 -0
  39. package/dist/transformer/index.d.ts.map +1 -0
  40. package/dist/transformer/index.js +60 -0
  41. package/dist/transformer/index.js.map +1 -0
  42. package/dist/transformer/operators.d.ts +16 -0
  43. package/dist/transformer/operators.d.ts.map +1 -0
  44. package/dist/transformer/operators.js +44 -0
  45. package/dist/transformer/operators.js.map +1 -0
  46. package/dist/transformer/options.d.ts +19 -0
  47. package/dist/transformer/options.d.ts.map +1 -0
  48. package/dist/transformer/options.js +17 -0
  49. package/dist/transformer/options.js.map +1 -0
  50. package/dist/transformer/symbols.d.ts +56 -0
  51. package/dist/transformer/symbols.d.ts.map +1 -0
  52. package/dist/transformer/symbols.js +270 -0
  53. package/dist/transformer/symbols.js.map +1 -0
  54. package/dist/transformer/transform/erase-imports.d.ts +14 -0
  55. package/dist/transformer/transform/erase-imports.d.ts.map +1 -0
  56. package/dist/transformer/transform/erase-imports.js +174 -0
  57. package/dist/transformer/transform/erase-imports.js.map +1 -0
  58. package/dist/transformer/transform/generated-coercions.d.ts +9 -0
  59. package/dist/transformer/transform/generated-coercions.d.ts.map +1 -0
  60. package/dist/transformer/transform/generated-coercions.js +22 -0
  61. package/dist/transformer/transform/generated-coercions.js.map +1 -0
  62. package/dist/transformer/transform/optimize-coercions.d.ts +11 -0
  63. package/dist/transformer/transform/optimize-coercions.d.ts.map +1 -0
  64. package/dist/transformer/transform/optimize-coercions.js +1702 -0
  65. package/dist/transformer/transform/optimize-coercions.js.map +1 -0
  66. package/dist/transformer/transform/transform-declaration-file.d.ts +9 -0
  67. package/dist/transformer/transform/transform-declaration-file.d.ts.map +1 -0
  68. package/dist/transformer/transform/transform-declaration-file.js +376 -0
  69. package/dist/transformer/transform/transform-declaration-file.js.map +1 -0
  70. package/dist/transformer/transform/transform-expression.d.ts +24 -0
  71. package/dist/transformer/transform/transform-expression.d.ts.map +1 -0
  72. package/dist/transformer/transform/transform-expression.js +545 -0
  73. package/dist/transformer/transform/transform-expression.js.map +1 -0
  74. package/dist/transformer/transform/transform-source-file.d.ts +10 -0
  75. package/dist/transformer/transform/transform-source-file.d.ts.map +1 -0
  76. package/dist/transformer/transform/transform-source-file.js +52 -0
  77. package/dist/transformer/transform/transform-source-file.js.map +1 -0
  78. package/dist/transformer/ts-compat.d.ts +4 -0
  79. package/dist/transformer/ts-compat.d.ts.map +1 -0
  80. package/dist/transformer/ts-compat.js +24 -0
  81. package/dist/transformer/ts-compat.js.map +1 -0
  82. package/docs/implementation-plan.md +335 -0
  83. package/docs/lib-implementation.md +77 -0
  84. package/docs/lowering-optimization-spec.md +1020 -0
  85. package/docs/project-structure.md +52 -0
  86. package/docs/transform-spec.md +2114 -0
  87. package/package.json +83 -0
@@ -0,0 +1,10 @@
1
+ import * as ts from "typescript";
2
+ import type { NumtypesSourceTransformerOptions, NumtypesTransformerOptions } from "./options.js";
3
+ export type NumtypesTransformerFactory = (program: ts.Program, options?: NumtypesSourceTransformerOptions) => ts.TransformerFactory<ts.SourceFile>;
4
+ export type NumtypesCustomTransformersFactory = (program: ts.Program, options?: NumtypesTransformerOptions) => ts.CustomTransformers;
5
+ export declare function createTransformer(program: ts.Program, options?: NumtypesSourceTransformerOptions): ts.TransformerFactory<ts.SourceFile>;
6
+ export declare function createDeclarationTransformer(program: ts.Program, options?: NumtypesTransformerOptions): ts.TransformerFactory<ts.Bundle | ts.SourceFile>;
7
+ export declare function createTransformers(program: ts.Program, options?: NumtypesTransformerOptions): ts.CustomTransformers;
8
+ export default createTransformer;
9
+ export type { DeclarationTypesMode, NormalizedNumtypesTransformerOptions, NumtypesSourceTransformerOptions, NumtypesTransformerOptions } from "./options.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transformer/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAEV,gCAAgC,EAChC,0BAA0B,EAC3B,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,0BAA0B,GAAG,CACvC,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,OAAO,CAAC,EAAE,gCAAgC,KACvC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAE1C,MAAM,MAAM,iCAAiC,GAAG,CAC9C,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,OAAO,CAAC,EAAE,0BAA0B,KACjC,EAAE,CAAC,kBAAkB,CAAC;AAE3B,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,OAAO,GAAE,gCAAqC,GAC7C,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC,CAWtC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,OAAO,GAAE,0BAA+B,GACvC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,CA8BlD;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,OAAO,GAAE,0BAA+B,GACvC,EAAE,CAAC,kBAAkB,CAiBvB;AAkBD,eAAe,iBAAiB,CAAC;AACjC,YAAY,EACV,oBAAoB,EACpB,oCAAoC,EACpC,gCAAgC,EAChC,0BAA0B,EAC3B,MAAM,cAAc,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { normalizeOptions } from "./options.js";
2
+ import { transformDeclarationFile } from "./transform/transform-declaration-file.js";
3
+ import { transformSourceFile } from "./transform/transform-source-file.js";
4
+ import * as ts from "typescript";
5
+ export function createTransformer(program, options = {}) {
6
+ const normalizedOptions = normalizeOptions(options);
7
+ if (normalizedOptions.declarationTypes === "erase") {
8
+ throw new Error('declarationTypes: "erase" requires createTransformers() or createDeclarationTransformer() so an afterDeclarations transformer can be installed');
9
+ }
10
+ return createSourceTransformer(program, normalizedOptions);
11
+ }
12
+ export function createDeclarationTransformer(program, options = {}) {
13
+ void program;
14
+ const normalizedOptions = normalizeOptions(options);
15
+ return (context) => {
16
+ return (node) => {
17
+ if (ts.isBundle(node)) {
18
+ return context.factory.updateBundle(node, node.sourceFiles.map((sourceFile) => transformDeclarationFile({
19
+ context,
20
+ options: normalizedOptions,
21
+ sourceFile
22
+ })));
23
+ }
24
+ return transformDeclarationFile({
25
+ context,
26
+ options: normalizedOptions,
27
+ sourceFile: node
28
+ });
29
+ };
30
+ };
31
+ }
32
+ export function createTransformers(program, options = {}) {
33
+ const normalizedOptions = normalizeOptions(options);
34
+ const transformers = {
35
+ before: [createSourceTransformer(program, normalizedOptions)]
36
+ };
37
+ if (normalizedOptions.declarationTypes === "erase") {
38
+ return {
39
+ ...transformers,
40
+ afterDeclarations: [
41
+ createDeclarationTransformer(program, normalizedOptions)
42
+ ]
43
+ };
44
+ }
45
+ return transformers;
46
+ }
47
+ function createSourceTransformer(program, normalizedOptions) {
48
+ return (context) => {
49
+ return (sourceFile) => {
50
+ return transformSourceFile({
51
+ context,
52
+ options: normalizedOptions,
53
+ program,
54
+ sourceFile
55
+ });
56
+ };
57
+ };
58
+ }
59
+ export default createTransformer;
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transformer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAiBjC,MAAM,UAAU,iBAAiB,CAC/B,OAAmB,EACnB,UAA4C,EAAE;IAE9C,MAAM,iBAAiB,GACrB,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE5B,IAAI,iBAAiB,CAAC,gBAAgB,KAAK,OAAO,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,gJAAgJ,CACjJ,CAAC;IACJ,CAAC;IAED,OAAO,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,OAAmB,EACnB,UAAsC,EAAE;IAExC,KAAK,OAAO,CAAC;IAEb,MAAM,iBAAiB,GACrB,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE5B,OAAO,CACL,OAAiC,EACU,EAAE;QAC7C,OAAO,CAAC,IAA+B,EAA6B,EAAE;YACpE,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CACjC,IAAI,EACJ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAyB,EAAiB,EAAE,CAChE,wBAAwB,CAAC;oBACvB,OAAO;oBACP,OAAO,EAAE,iBAAiB;oBAC1B,UAAU;iBACX,CAAC,CACH,CACF,CAAC;YACJ,CAAC;YAED,OAAO,wBAAwB,CAAC;gBAC9B,OAAO;gBACP,OAAO,EAAE,iBAAiB;gBAC1B,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAmB,EACnB,UAAsC,EAAE;IAExC,MAAM,iBAAiB,GACrB,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,YAAY,GAA0B;QAC1C,MAAM,EAAE,CAAC,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;KAC9D,CAAC;IAEF,IAAI,iBAAiB,CAAC,gBAAgB,KAAK,OAAO,EAAE,CAAC;QACnD,OAAO;YACL,GAAG,YAAY;YACf,iBAAiB,EAAE;gBACjB,4BAA4B,CAAC,OAAO,EAAE,iBAAiB,CAAC;aACzD;SACF,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAAmB,EACnB,iBAAuD;IAEvD,OAAO,CAAC,OAAiC,EAAiC,EAAE;QAC1E,OAAO,CAAC,UAAyB,EAAiB,EAAE;YAClD,OAAO,mBAAmB,CAAC;gBACzB,OAAO;gBACP,OAAO,EAAE,iBAAiB;gBAC1B,OAAO;gBACP,UAAU;aACX,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { NumericDomain } from "./domains.js";
2
+ export declare const unaryArithmeticOperators: readonly ["+", "-"];
3
+ export declare const binaryArithmeticOperators: readonly ["+", "-", "*", "/", "%", "**"];
4
+ export declare const integerBitwiseOperators: readonly ["&", "|", "^", "<<", ">>", ">>>"];
5
+ export type UnaryArithmeticOperator = (typeof unaryArithmeticOperators)[number];
6
+ export type BinaryArithmeticOperator = (typeof binaryArithmeticOperators)[number];
7
+ export type IntegerBitwiseOperator = (typeof integerBitwiseOperators)[number];
8
+ export type SupportedOperator = BinaryArithmeticOperator | IntegerBitwiseOperator | UnaryArithmeticOperator;
9
+ export interface DomainOperatorSupport {
10
+ readonly binaryArithmetic: readonly BinaryArithmeticOperator[];
11
+ readonly bitwise: readonly IntegerBitwiseOperator[];
12
+ readonly unaryArithmetic: readonly UnaryArithmeticOperator[];
13
+ }
14
+ export declare const operatorSupport: Readonly<Record<NumericDomain, DomainOperatorSupport>>;
15
+ export declare function supportsBitwiseOperator(domain: NumericDomain, operator: IntegerBitwiseOperator): boolean;
16
+ //# sourceMappingURL=operators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operators.d.ts","sourceRoot":"","sources":["../../src/transformer/operators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,eAAO,MAAM,wBAAwB,qBAAsB,CAAC;AAC5D,eAAO,MAAM,yBAAyB,0CAO5B,CAAC;AACX,eAAO,MAAM,uBAAuB,6CAO1B,CAAC;AAEX,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,wBAAwB,GAClC,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7C,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,MAAM,MAAM,iBAAiB,GACzB,wBAAwB,GACxB,sBAAsB,GACtB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC/D,QAAQ,CAAC,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACpD,QAAQ,CAAC,eAAe,EAAE,SAAS,uBAAuB,EAAE,CAAC;CAC9D;AAID,eAAO,MAAM,eAAe,EAAE,QAAQ,CACpC,MAAM,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAsB7C,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,sBAAsB,GAC/B,OAAO,CAET"}
@@ -0,0 +1,44 @@
1
+ export const unaryArithmeticOperators = ["+", "-"];
2
+ export const binaryArithmeticOperators = [
3
+ "+",
4
+ "-",
5
+ "*",
6
+ "/",
7
+ "%",
8
+ "**"
9
+ ];
10
+ export const integerBitwiseOperators = [
11
+ "&",
12
+ "|",
13
+ "^",
14
+ "<<",
15
+ ">>",
16
+ ">>>"
17
+ ];
18
+ const floatBitwiseOperators = [];
19
+ export const operatorSupport = {
20
+ f32: {
21
+ binaryArithmetic: binaryArithmeticOperators,
22
+ bitwise: floatBitwiseOperators,
23
+ unaryArithmetic: unaryArithmeticOperators
24
+ },
25
+ f64: {
26
+ binaryArithmetic: binaryArithmeticOperators,
27
+ bitwise: floatBitwiseOperators,
28
+ unaryArithmetic: unaryArithmeticOperators
29
+ },
30
+ i32: {
31
+ binaryArithmetic: binaryArithmeticOperators,
32
+ bitwise: integerBitwiseOperators,
33
+ unaryArithmetic: unaryArithmeticOperators
34
+ },
35
+ u32: {
36
+ binaryArithmetic: binaryArithmeticOperators,
37
+ bitwise: integerBitwiseOperators,
38
+ unaryArithmetic: unaryArithmeticOperators
39
+ }
40
+ };
41
+ export function supportsBitwiseOperator(domain, operator) {
42
+ return operatorSupport[domain].bitwise.includes(operator);
43
+ }
44
+ //# sourceMappingURL=operators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operators.js","sourceRoot":"","sources":["../../src/transformer/operators.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,CAAU,CAAC;AAC5D,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,IAAI;CACI,CAAC;AACX,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,GAAG;IACH,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,KAAK;CACG,CAAC;AAmBX,MAAM,qBAAqB,GAAG,EAAuD,CAAC;AAEtF,MAAM,CAAC,MAAM,eAAe,GAExB;IACF,GAAG,EAAE;QACH,gBAAgB,EAAE,yBAAyB;QAC3C,OAAO,EAAE,qBAAqB;QAC9B,eAAe,EAAE,wBAAwB;KAC1C;IACD,GAAG,EAAE;QACH,gBAAgB,EAAE,yBAAyB;QAC3C,OAAO,EAAE,qBAAqB;QAC9B,eAAe,EAAE,wBAAwB;KAC1C;IACD,GAAG,EAAE;QACH,gBAAgB,EAAE,yBAAyB;QAC3C,OAAO,EAAE,uBAAuB;QAChC,eAAe,EAAE,wBAAwB;KAC1C;IACD,GAAG,EAAE;QACH,gBAAgB,EAAE,yBAAyB;QAC3C,OAAO,EAAE,uBAAuB;QAChC,eAAe,EAAE,wBAAwB;KAC1C;CACF,CAAC;AAEF,MAAM,UAAU,uBAAuB,CACrC,MAAqB,EACrB,QAAgC;IAEhC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,19 @@
1
+ export type DeclarationTypesMode = "erase" | "preserve";
2
+ export interface NumtypesTransformerOptions {
3
+ readonly collectDiagnostics?: boolean;
4
+ readonly declarationTypes?: DeclarationTypesMode;
5
+ readonly optimizeTypedArrayElementAccess?: boolean;
6
+ readonly preservePhantomImports?: boolean;
7
+ }
8
+ export type NumtypesSourceTransformerOptions = Omit<NumtypesTransformerOptions, "declarationTypes"> & {
9
+ readonly declarationTypes?: "preserve";
10
+ };
11
+ export interface NormalizedNumtypesTransformerOptions {
12
+ readonly collectDiagnostics: boolean;
13
+ readonly declarationTypes: DeclarationTypesMode;
14
+ readonly optimizeTypedArrayElementAccess: boolean;
15
+ readonly preservePhantomImports: boolean;
16
+ }
17
+ export declare const defaultTransformerOptions: NormalizedNumtypesTransformerOptions;
18
+ export declare function normalizeOptions(options: NumtypesTransformerOptions): NormalizedNumtypesTransformerOptions;
19
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/transformer/options.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,UAAU,CAAC;AAExD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACjD,QAAQ,CAAC,+BAA+B,CAAC,EAAE,OAAO,CAAC;IACnD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAC3C;AAED,MAAM,MAAM,gCAAgC,GAAG,IAAI,CACjD,0BAA0B,EAC1B,kBAAkB,CACnB,GAAG;IACF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;IAChD,QAAQ,CAAC,+BAA+B,EAAE,OAAO,CAAC;IAClD,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;CAC1C;AAED,eAAO,MAAM,yBAAyB,EAAE,oCAKvC,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,0BAA0B,GAClC,oCAAoC,CAatC"}
@@ -0,0 +1,17 @@
1
+ export const defaultTransformerOptions = {
2
+ collectDiagnostics: true,
3
+ declarationTypes: "preserve",
4
+ optimizeTypedArrayElementAccess: false,
5
+ preservePhantomImports: false
6
+ };
7
+ export function normalizeOptions(options) {
8
+ return {
9
+ collectDiagnostics: options.collectDiagnostics ?? defaultTransformerOptions.collectDiagnostics,
10
+ declarationTypes: options.declarationTypes ?? defaultTransformerOptions.declarationTypes,
11
+ optimizeTypedArrayElementAccess: options.optimizeTypedArrayElementAccess ??
12
+ defaultTransformerOptions.optimizeTypedArrayElementAccess,
13
+ preservePhantomImports: options.preservePhantomImports ??
14
+ defaultTransformerOptions.preservePhantomImports
15
+ };
16
+ }
17
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/transformer/options.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,MAAM,yBAAyB,GAAyC;IAC7E,kBAAkB,EAAE,IAAI;IACxB,gBAAgB,EAAE,UAAU;IAC5B,+BAA+B,EAAE,KAAK;IACtC,sBAAsB,EAAE,KAAK;CAC9B,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAC9B,OAAmC;IAEnC,OAAO;QACL,kBAAkB,EAChB,OAAO,CAAC,kBAAkB,IAAI,yBAAyB,CAAC,kBAAkB;QAC5E,gBAAgB,EACd,OAAO,CAAC,gBAAgB,IAAI,yBAAyB,CAAC,gBAAgB;QACxE,+BAA+B,EAC7B,OAAO,CAAC,+BAA+B;YACvC,yBAAyB,CAAC,+BAA+B;QAC3D,sBAAsB,EACpB,OAAO,CAAC,sBAAsB;YAC9B,yBAAyB,CAAC,sBAAsB;KACnD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,56 @@
1
+ import * as ts from "typescript";
2
+ import type { NumericDomain } from "./domains.js";
3
+ export declare const numtypesModuleSpecifier = "numtypes";
4
+ interface BaseNumtypeImportBinding {
5
+ readonly domain: NumericDomain;
6
+ readonly exportedSymbol: ts.Symbol | undefined;
7
+ readonly importedName: NumericDomain;
8
+ readonly importDeclaration: ts.ImportDeclaration;
9
+ readonly isTypeOnly: boolean;
10
+ readonly localIdentifier: ts.Identifier;
11
+ }
12
+ export interface NumtypeNamedImportBinding extends BaseNumtypeImportBinding {
13
+ readonly importSpecifier: ts.ImportSpecifier;
14
+ readonly kind: "named";
15
+ readonly localIdentifier: ts.Identifier;
16
+ readonly localSymbol: ts.Symbol;
17
+ }
18
+ export interface NumtypeNamespaceImportBinding extends BaseNumtypeImportBinding {
19
+ readonly kind: "namespace";
20
+ readonly localIdentifier: ts.Identifier;
21
+ readonly localSymbol: ts.Symbol;
22
+ readonly namespaceImport: ts.NamespaceImport;
23
+ }
24
+ export type NumtypeImportBinding = NumtypeNamedImportBinding | NumtypeNamespaceImportBinding;
25
+ export interface NumtypeImportDeclaration {
26
+ readonly bindings: readonly NumtypeImportBinding[];
27
+ readonly importDeclaration: ts.ImportDeclaration;
28
+ }
29
+ export interface NumtypeNamespaceImport {
30
+ readonly importDeclaration: ts.ImportDeclaration;
31
+ readonly isTypeOnly: boolean;
32
+ readonly localIdentifier: ts.Identifier;
33
+ readonly localSymbol: ts.Symbol;
34
+ readonly namespaceImport: ts.NamespaceImport;
35
+ }
36
+ export interface NumtypeSymbolTable {
37
+ readonly bindings: readonly NumtypeImportBinding[];
38
+ readonly importDeclarations: readonly NumtypeImportDeclaration[];
39
+ readonly namespaceImports: readonly NumtypeNamespaceImport[];
40
+ getBindingForCastCallee(expression: ts.Expression): NumtypeImportBinding | undefined;
41
+ getBindingForDomain(domain: NumericDomain): readonly NumtypeImportBinding[];
42
+ getBindingForIdentifier(identifier: ts.Identifier): NumtypeImportBinding | undefined;
43
+ getBindingForImportSpecifier(importSpecifier: ts.ImportSpecifier): NumtypeImportBinding | undefined;
44
+ getBindingForPropertyAccessExpression(expression: ts.PropertyAccessExpression): NumtypeImportBinding | undefined;
45
+ getBindingForQualifiedName(qualifiedName: ts.QualifiedName): NumtypeImportBinding | undefined;
46
+ getBindingForExportedSymbol(symbol: ts.Symbol): NumtypeImportBinding | undefined;
47
+ getNamespaceImportForIdentifier(identifier: ts.Identifier): NumtypeNamespaceImport | undefined;
48
+ getNamespaceImportForSymbol(symbol: ts.Symbol): NumtypeNamespaceImport | undefined;
49
+ getBindingForSymbol(symbol: ts.Symbol): NumtypeImportBinding | undefined;
50
+ isNumtypeIdentifier(identifier: ts.Identifier, domain?: NumericDomain): boolean;
51
+ isNumtypeSymbol(symbol: ts.Symbol, domain?: NumericDomain): boolean;
52
+ }
53
+ export declare function resolveNumtypeSymbols(checker: ts.TypeChecker, sourceFile: ts.SourceFile): NumtypeSymbolTable;
54
+ export declare function getNumtypeBindingName(binding: NumtypeImportBinding): string;
55
+ export {};
56
+ //# sourceMappingURL=symbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../src/transformer/symbols.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,270 @@
1
+ import { isNumericDomain, numericDomains } from "./domains.js";
2
+ import { isImportClauseTypeOnly } from "./ts-compat.js";
3
+ import * as ts from "typescript";
4
+ export const numtypesModuleSpecifier = "numtypes";
5
+ export function resolveNumtypeSymbols(checker, sourceFile) {
6
+ const bindings = [];
7
+ const importDeclarations = [];
8
+ const namespaceImports = [];
9
+ const localSymbolBindings = new Map();
10
+ const namespaceSymbolImports = new Map();
11
+ const namespaceSymbolBindings = new Map();
12
+ const exportedSymbolBindings = new Map();
13
+ const importSpecifierBindings = new WeakMap();
14
+ for (const statement of sourceFile.statements) {
15
+ const namedImport = getNumtypesNamedImport(statement);
16
+ if (namedImport === undefined) {
17
+ continue;
18
+ }
19
+ const importDeclarationBindings = [];
20
+ const importClause = namedImport.importClause;
21
+ const namedBindings = namedImport.namedBindings;
22
+ for (const importSpecifier of namedBindings.elements) {
23
+ const importedName = getModuleExportNameText(importSpecifier.propertyName ?? importSpecifier.name);
24
+ if (!isNumericDomain(importedName)) {
25
+ continue;
26
+ }
27
+ const localSymbol = checker.getSymbolAtLocation(importSpecifier.name);
28
+ if (localSymbol === undefined) {
29
+ continue;
30
+ }
31
+ const binding = {
32
+ domain: importedName,
33
+ exportedSymbol: getAliasedSymbol(checker, localSymbol),
34
+ importDeclaration: namedImport.importDeclaration,
35
+ importSpecifier,
36
+ importedName,
37
+ isTypeOnly: isImportClauseTypeOnly(importClause) || importSpecifier.isTypeOnly,
38
+ kind: "named",
39
+ localIdentifier: importSpecifier.name,
40
+ localSymbol
41
+ };
42
+ bindings.push(binding);
43
+ importDeclarationBindings.push(binding);
44
+ localSymbolBindings.set(localSymbol, binding);
45
+ if (binding.exportedSymbol !== undefined) {
46
+ exportedSymbolBindings.set(binding.exportedSymbol, binding);
47
+ }
48
+ importSpecifierBindings.set(importSpecifier, binding);
49
+ }
50
+ if (importDeclarationBindings.length > 0) {
51
+ importDeclarations.push({
52
+ bindings: importDeclarationBindings,
53
+ importDeclaration: namedImport.importDeclaration
54
+ });
55
+ }
56
+ }
57
+ for (const statement of sourceFile.statements) {
58
+ const namespaceImport = getNumtypesNamespaceImport(statement);
59
+ if (namespaceImport === undefined) {
60
+ continue;
61
+ }
62
+ const localSymbol = checker.getSymbolAtLocation(namespaceImport.namespaceImport.name);
63
+ if (localSymbol === undefined) {
64
+ continue;
65
+ }
66
+ const numtypeNamespaceImport = {
67
+ importDeclaration: namespaceImport.importDeclaration,
68
+ isTypeOnly: isImportClauseTypeOnly(namespaceImport.importClause),
69
+ localIdentifier: namespaceImport.namespaceImport.name,
70
+ localSymbol,
71
+ namespaceImport: namespaceImport.namespaceImport
72
+ };
73
+ const moduleSymbol = getAliasedSymbol(checker, localSymbol);
74
+ const domainBindings = new Map();
75
+ const importDeclarationBindings = [];
76
+ namespaceImports.push(numtypeNamespaceImport);
77
+ namespaceSymbolImports.set(localSymbol, numtypeNamespaceImport);
78
+ if (moduleSymbol !== undefined) {
79
+ namespaceSymbolImports.set(moduleSymbol, numtypeNamespaceImport);
80
+ }
81
+ for (const domain of numericDomains) {
82
+ const binding = {
83
+ domain,
84
+ exportedSymbol: moduleSymbol === undefined
85
+ ? undefined
86
+ : getModuleExportSymbolForDomain(checker, moduleSymbol, domain),
87
+ importedName: domain,
88
+ importDeclaration: namespaceImport.importDeclaration,
89
+ isTypeOnly: numtypeNamespaceImport.isTypeOnly,
90
+ kind: "namespace",
91
+ localIdentifier: namespaceImport.namespaceImport.name,
92
+ localSymbol,
93
+ namespaceImport: namespaceImport.namespaceImport
94
+ };
95
+ bindings.push(binding);
96
+ domainBindings.set(domain, binding);
97
+ importDeclarationBindings.push(binding);
98
+ if (binding.exportedSymbol !== undefined) {
99
+ exportedSymbolBindings.set(binding.exportedSymbol, binding);
100
+ }
101
+ }
102
+ namespaceSymbolBindings.set(localSymbol, domainBindings);
103
+ importDeclarations.push({
104
+ bindings: importDeclarationBindings,
105
+ importDeclaration: namespaceImport.importDeclaration
106
+ });
107
+ }
108
+ function getBindingForCastCallee(expression) {
109
+ if (ts.isIdentifier(expression)) {
110
+ return getBindingForIdentifier(expression);
111
+ }
112
+ if (ts.isPropertyAccessExpression(expression)) {
113
+ return getBindingForPropertyAccessExpression(expression);
114
+ }
115
+ return undefined;
116
+ }
117
+ function getBindingForDomain(domain) {
118
+ return bindings.filter((binding) => binding.domain === domain);
119
+ }
120
+ function getBindingForIdentifier(identifier) {
121
+ const symbol = checker.getSymbolAtLocation(identifier);
122
+ if (symbol === undefined) {
123
+ return undefined;
124
+ }
125
+ return getBindingForSymbol(symbol);
126
+ }
127
+ function getBindingForPropertyAccessExpression(expression) {
128
+ if (!isNumericDomain(expression.name.text)) {
129
+ return undefined;
130
+ }
131
+ if (!ts.isIdentifier(expression.expression)) {
132
+ return undefined;
133
+ }
134
+ return getBindingForNamespaceIdentifier(expression.expression, expression.name.text);
135
+ }
136
+ function getBindingForQualifiedName(qualifiedName) {
137
+ if (!isNumericDomain(qualifiedName.right.text)) {
138
+ return undefined;
139
+ }
140
+ if (!ts.isIdentifier(qualifiedName.left)) {
141
+ return undefined;
142
+ }
143
+ return getBindingForNamespaceIdentifier(qualifiedName.left, qualifiedName.right.text);
144
+ }
145
+ function getBindingForImportSpecifier(importSpecifier) {
146
+ return importSpecifierBindings.get(importSpecifier);
147
+ }
148
+ function getBindingForExportedSymbol(symbol) {
149
+ return exportedSymbolBindings.get(symbol);
150
+ }
151
+ function getBindingForSymbol(symbol) {
152
+ return localSymbolBindings.get(symbol);
153
+ }
154
+ function getNamespaceImportForIdentifier(identifier) {
155
+ const symbol = checker.getSymbolAtLocation(identifier);
156
+ if (symbol === undefined) {
157
+ return undefined;
158
+ }
159
+ const directNamespaceImport = namespaceSymbolImports.get(symbol);
160
+ if (directNamespaceImport !== undefined) {
161
+ return directNamespaceImport;
162
+ }
163
+ const aliasedSymbol = getAliasedSymbol(checker, symbol);
164
+ return aliasedSymbol === undefined
165
+ ? undefined
166
+ : namespaceSymbolImports.get(aliasedSymbol);
167
+ }
168
+ function getNamespaceImportForSymbol(symbol) {
169
+ return namespaceSymbolImports.get(symbol);
170
+ }
171
+ function getBindingForNamespaceIdentifier(identifier, domain) {
172
+ const symbol = checker.getSymbolAtLocation(identifier);
173
+ if (symbol === undefined) {
174
+ return undefined;
175
+ }
176
+ return namespaceSymbolBindings.get(symbol)?.get(domain);
177
+ }
178
+ function isNumtypeIdentifier(identifier, domain) {
179
+ return matchesDomain(getBindingForIdentifier(identifier), domain);
180
+ }
181
+ function isNumtypeSymbol(symbol, domain) {
182
+ return matchesDomain(getBindingForSymbol(symbol), domain);
183
+ }
184
+ return {
185
+ bindings,
186
+ getBindingForCastCallee,
187
+ getBindingForDomain,
188
+ getBindingForExportedSymbol,
189
+ getBindingForIdentifier,
190
+ getBindingForImportSpecifier,
191
+ getBindingForPropertyAccessExpression,
192
+ getBindingForQualifiedName,
193
+ getNamespaceImportForIdentifier,
194
+ getNamespaceImportForSymbol,
195
+ getBindingForSymbol,
196
+ importDeclarations,
197
+ namespaceImports,
198
+ isNumtypeIdentifier,
199
+ isNumtypeSymbol
200
+ };
201
+ }
202
+ function getNumtypesNamedImport(statement) {
203
+ if (!isNumtypesImportDeclaration(statement)) {
204
+ return undefined;
205
+ }
206
+ const importClause = statement.importClause;
207
+ const namedBindings = importClause?.namedBindings;
208
+ if (importClause === undefined ||
209
+ namedBindings === undefined ||
210
+ !isNamedImports(namedBindings)) {
211
+ return undefined;
212
+ }
213
+ return {
214
+ importClause,
215
+ importDeclaration: statement,
216
+ namedBindings
217
+ };
218
+ }
219
+ function getNumtypesNamespaceImport(statement) {
220
+ if (!isNumtypesImportDeclaration(statement)) {
221
+ return undefined;
222
+ }
223
+ const importClause = statement.importClause;
224
+ const namedBindings = importClause?.namedBindings;
225
+ if (importClause === undefined ||
226
+ namedBindings === undefined ||
227
+ !ts.isNamespaceImport(namedBindings)) {
228
+ return undefined;
229
+ }
230
+ return {
231
+ importClause,
232
+ importDeclaration: statement,
233
+ namespaceImport: namedBindings
234
+ };
235
+ }
236
+ function isNumtypesImportDeclaration(statement) {
237
+ return (ts.isImportDeclaration(statement) &&
238
+ ts.isStringLiteralLike(statement.moduleSpecifier) &&
239
+ statement.moduleSpecifier.text === numtypesModuleSpecifier);
240
+ }
241
+ function isNamedImports(namedBindings) {
242
+ return ts.isNamedImports(namedBindings);
243
+ }
244
+ function getModuleExportNameText(name) {
245
+ return name.text;
246
+ }
247
+ function getAliasedSymbol(checker, symbol) {
248
+ if ((symbol.flags & ts.SymbolFlags.Alias) === 0) {
249
+ return undefined;
250
+ }
251
+ return checker.getAliasedSymbol(symbol);
252
+ }
253
+ function getModuleExportSymbolForDomain(checker, moduleSymbol, domain) {
254
+ return checker
255
+ .getExportsOfModule(moduleSymbol)
256
+ .find((symbol) => symbol.name === domain);
257
+ }
258
+ export function getNumtypeBindingName(binding) {
259
+ if (binding.kind === "namespace") {
260
+ return `${binding.localIdentifier.text}.${binding.domain}`;
261
+ }
262
+ return binding.localIdentifier.text;
263
+ }
264
+ function matchesDomain(binding, domain) {
265
+ if (binding === undefined) {
266
+ return false;
267
+ }
268
+ return domain === undefined || binding.domain === domain;
269
+ }
270
+ //# sourceMappingURL=symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../src/transformer/symbols.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import * as ts from "typescript";
2
+ export interface ErasePhantomBindingsInput {
3
+ readonly factory: ts.NodeFactory;
4
+ readonly sourceFile: ts.SourceFile;
5
+ }
6
+ export interface EraseDeclarationSurfaceInput extends ErasePhantomBindingsInput {
7
+ readonly numtypeLocalTypeNames: ReadonlySet<string>;
8
+ readonly numtypeLocalValueNames: ReadonlySet<string>;
9
+ readonly preservedNumtypeLocalNames?: ReadonlySet<string> | undefined;
10
+ readonly preservedNumtypeNamespaceNames?: ReadonlySet<string> | undefined;
11
+ }
12
+ export declare function erasePhantomBindings(input: ErasePhantomBindingsInput): ts.SourceFile;
13
+ export declare function eraseNumtypeDeclarationSurface(input: EraseDeclarationSurfaceInput): ts.SourceFile;
14
+ //# sourceMappingURL=erase-imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erase-imports.d.ts","sourceRoot":"","sources":["../../../src/transformer/transform/erase-imports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAKjC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;CACpC;AAED,MAAM,WAAW,4BAA6B,SAAQ,yBAAyB;IAC7E,QAAQ,CAAC,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,0BAA0B,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACtE,QAAQ,CAAC,8BAA8B,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;CAC3E;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,yBAAyB,GAC/B,EAAE,CAAC,UAAU,CAaf;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,4BAA4B,GAClC,EAAE,CAAC,UAAU,CAoBf"}