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 @@
1
+ {"version":3,"file":"get-expression-domain.js","sourceRoot":"","sources":["../../../src/transformer/analyze/get-expression-domain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import * as ts from "typescript";
2
+ import type { NumericDomain } from "../domains.js";
3
+ import type { TransformerDiagnostic } from "../diagnostics.js";
4
+ import type { NumtypeSymbolTable } from "../symbols.js";
5
+ export type TypeDomain = NumericDomain | "plain-number" | "unknown";
6
+ export type TypeDomainReason = "ambiguous-intersection" | "annotation" | "branded-alias" | "inferred-type" | "numeric-union" | "plain-number" | "unknown";
7
+ export interface TypeDomainResult {
8
+ readonly diagnostics: readonly TransformerDiagnostic[];
9
+ readonly domain: TypeDomain;
10
+ readonly hasNonNumericUnionMembers?: boolean | undefined;
11
+ readonly reason: TypeDomainReason;
12
+ readonly unionDomains?: readonly NumericDomain[] | undefined;
13
+ }
14
+ export interface TypeDomainInput {
15
+ readonly checker: ts.TypeChecker;
16
+ readonly node?: ts.Node | undefined;
17
+ readonly symbols: NumtypeSymbolTable;
18
+ readonly type: ts.Type;
19
+ }
20
+ export interface TypeNodeDomainInput {
21
+ readonly checker: ts.TypeChecker;
22
+ readonly symbols: NumtypeSymbolTable;
23
+ readonly typeNode: ts.TypeNode;
24
+ }
25
+ export type DomainDeclaration = ts.ParameterDeclaration | ts.PropertyDeclaration | ts.PropertySignature | ts.VariableDeclaration;
26
+ export interface DeclarationDomainInput {
27
+ readonly checker: ts.TypeChecker;
28
+ readonly declaration: DomainDeclaration;
29
+ readonly symbols: NumtypeSymbolTable;
30
+ }
31
+ export interface FunctionReturnDomainInput {
32
+ readonly checker: ts.TypeChecker;
33
+ readonly declaration: ts.SignatureDeclaration;
34
+ readonly symbols: NumtypeSymbolTable;
35
+ }
36
+ export declare function getTypeDomain(input: TypeDomainInput): TypeDomainResult;
37
+ export declare function getTypeNodeDomain(input: TypeNodeDomainInput): TypeDomainResult;
38
+ export declare function getDeclarationDomain(input: DeclarationDomainInput): TypeDomainResult;
39
+ export declare function getFunctionReturnDomain(input: FunctionReturnDomainInput): TypeDomainResult;
40
+ export declare function isNumericTypeDomain(domain: TypeDomain): domain is NumericDomain;
41
+ //# sourceMappingURL=type-domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-domain.d.ts","sourceRoot":"","sources":["../../../src/transformer/analyze/type-domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAwB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE9E,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,gBAAgB,GACxB,wBAAwB,GACxB,YAAY,GACZ,eAAe,GACf,eAAe,GACf,eAAe,GACf,cAAc,GACd,SAAS,CAAC;AAEd,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,CAAC;CAC9D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC;CAChC;AAED,MAAM,MAAM,iBAAiB,GACzB,EAAE,CAAC,oBAAoB,GACvB,EAAE,CAAC,mBAAmB,GACtB,EAAE,CAAC,iBAAiB,GACpB,EAAE,CAAC,mBAAmB,CAAC;AAE3B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;CACtC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;CACtC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAEtE;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,mBAAmB,GACzB,gBAAgB,CA4BlB;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,sBAAsB,GAC5B,gBAAgB,CAelB;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,yBAAyB,GAC/B,gBAAgB,CAclB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,IAAI,aAAa,CAE/E"}
@@ -0,0 +1,260 @@
1
+ import * as ts from "typescript";
2
+ import { sortNumericDomains } from "../domains.js";
3
+ import { createDiagnostic } from "../diagnostics.js";
4
+ export function getTypeDomain(input) {
5
+ return getTypeDomainInternal(input, new Set());
6
+ }
7
+ export function getTypeNodeDomain(input) {
8
+ const directDomain = getDirectTypeNodeDomain(input.symbols, input.typeNode);
9
+ if (directDomain !== undefined) {
10
+ return {
11
+ diagnostics: [],
12
+ domain: directDomain,
13
+ reason: "annotation"
14
+ };
15
+ }
16
+ if (input.typeNode.kind === ts.SyntaxKind.NumberKeyword) {
17
+ return {
18
+ diagnostics: [],
19
+ domain: "plain-number",
20
+ reason: "plain-number"
21
+ };
22
+ }
23
+ return getTypeDomain({
24
+ checker: input.checker,
25
+ node: input.typeNode,
26
+ symbols: input.symbols,
27
+ type: input.checker.getTypeAtLocation(input.typeNode)
28
+ });
29
+ }
30
+ export function getDeclarationDomain(input) {
31
+ if (input.declaration.type !== undefined) {
32
+ return getTypeNodeDomain({
33
+ checker: input.checker,
34
+ symbols: input.symbols,
35
+ typeNode: input.declaration.type
36
+ });
37
+ }
38
+ return getTypeDomain({
39
+ checker: input.checker,
40
+ node: input.declaration.name,
41
+ symbols: input.symbols,
42
+ type: input.checker.getTypeAtLocation(input.declaration.name)
43
+ });
44
+ }
45
+ export function getFunctionReturnDomain(input) {
46
+ if (input.declaration.type === undefined) {
47
+ return {
48
+ diagnostics: [],
49
+ domain: "unknown",
50
+ reason: "unknown"
51
+ };
52
+ }
53
+ return getTypeNodeDomain({
54
+ checker: input.checker,
55
+ symbols: input.symbols,
56
+ typeNode: input.declaration.type
57
+ });
58
+ }
59
+ export function isNumericTypeDomain(domain) {
60
+ return domain !== "plain-number" && domain !== "unknown";
61
+ }
62
+ function getTypeDomainInternal(input, seenTypes) {
63
+ if (seenTypes.has(input.type)) {
64
+ return {
65
+ diagnostics: [],
66
+ domain: "unknown",
67
+ reason: "unknown"
68
+ };
69
+ }
70
+ seenTypes.add(input.type);
71
+ const aliasBinding = getBindingForTypeAlias(input.symbols, input.type);
72
+ if (aliasBinding !== undefined) {
73
+ return {
74
+ diagnostics: [],
75
+ domain: aliasBinding.domain,
76
+ reason: "branded-alias"
77
+ };
78
+ }
79
+ const brandPropertyDomains = getBrandPropertyDomains(input.checker, input.symbols, input.type);
80
+ if (brandPropertyDomains.length === 1) {
81
+ return {
82
+ diagnostics: [],
83
+ domain: brandPropertyDomains[0] ?? "unknown",
84
+ reason: "branded-alias"
85
+ };
86
+ }
87
+ if (brandPropertyDomains.length > 1) {
88
+ return {
89
+ diagnostics: [
90
+ createDiagnostic("NUMTYPES_AMBIGUOUS_INTERSECTION", `ambiguous branded intersection containing ${brandPropertyDomains.join(" & ")}`, getDiagnosticLocation(input.node))
91
+ ],
92
+ domain: "unknown",
93
+ reason: "ambiguous-intersection"
94
+ };
95
+ }
96
+ if (input.type.isUnion()) {
97
+ return getUnionTypeDomain(input, seenTypes);
98
+ }
99
+ if (input.type.isIntersection()) {
100
+ return getIntersectionTypeDomain(input, seenTypes);
101
+ }
102
+ if (isPlainNumberType(input.type)) {
103
+ return {
104
+ diagnostics: [],
105
+ domain: "plain-number",
106
+ reason: "plain-number"
107
+ };
108
+ }
109
+ return {
110
+ diagnostics: [],
111
+ domain: "unknown",
112
+ reason: "unknown"
113
+ };
114
+ }
115
+ function getDirectTypeNodeDomain(symbols, typeNode) {
116
+ if (ts.isTypeReferenceNode(typeNode) &&
117
+ ts.isIdentifier(typeNode.typeName)) {
118
+ return symbols.getBindingForIdentifier(typeNode.typeName)?.domain;
119
+ }
120
+ if (ts.isTypeReferenceNode(typeNode) &&
121
+ ts.isQualifiedName(typeNode.typeName)) {
122
+ return symbols.getBindingForQualifiedName(typeNode.typeName)?.domain;
123
+ }
124
+ return undefined;
125
+ }
126
+ function getBindingForTypeAlias(symbols, type) {
127
+ if (type.aliasSymbol === undefined) {
128
+ return undefined;
129
+ }
130
+ return symbols.getBindingForExportedSymbol(type.aliasSymbol);
131
+ }
132
+ function getUnionTypeDomain(input, seenTypes) {
133
+ const unionType = input.type;
134
+ const memberResults = unionType.types.map((memberType) => getTypeDomainInternal({
135
+ checker: input.checker,
136
+ node: input.node,
137
+ symbols: input.symbols,
138
+ type: memberType
139
+ }, seenTypes));
140
+ const memberDomains = getUniqueNumericDomains(memberResults);
141
+ const hasNonNumericUnionMembers = memberResults.some(hasNoNumericDomain) ||
142
+ memberResults.some((result) => result.hasNonNumericUnionMembers === true);
143
+ if (memberDomains.length > 0) {
144
+ return {
145
+ diagnostics: flattenDiagnostics(memberResults),
146
+ domain: "unknown",
147
+ hasNonNumericUnionMembers,
148
+ reason: "numeric-union",
149
+ unionDomains: memberDomains
150
+ };
151
+ }
152
+ if (memberResults.length > 0 &&
153
+ memberResults.every((result) => result.domain === "plain-number")) {
154
+ return {
155
+ diagnostics: [],
156
+ domain: "plain-number",
157
+ reason: "plain-number"
158
+ };
159
+ }
160
+ return {
161
+ diagnostics: flattenDiagnostics(memberResults),
162
+ domain: "unknown",
163
+ reason: "unknown"
164
+ };
165
+ }
166
+ function getIntersectionTypeDomain(input, seenTypes) {
167
+ const intersectionType = input.type;
168
+ const memberResults = intersectionType.types.map((memberType) => getTypeDomainInternal({
169
+ checker: input.checker,
170
+ node: input.node,
171
+ symbols: input.symbols,
172
+ type: memberType
173
+ }, seenTypes));
174
+ const memberDomains = getUniqueNumericDomains(memberResults);
175
+ if (memberDomains.length === 1) {
176
+ return {
177
+ diagnostics: flattenDiagnostics(memberResults),
178
+ domain: memberDomains[0] ?? "unknown",
179
+ reason: "branded-alias"
180
+ };
181
+ }
182
+ if (memberDomains.length > 1) {
183
+ return {
184
+ diagnostics: [
185
+ createDiagnostic("NUMTYPES_AMBIGUOUS_INTERSECTION", `ambiguous branded intersection containing ${memberDomains.join(" & ")}`, getDiagnosticLocation(input.node))
186
+ ],
187
+ domain: "unknown",
188
+ reason: "ambiguous-intersection"
189
+ };
190
+ }
191
+ if (isPlainNumberType(input.type)) {
192
+ return {
193
+ diagnostics: flattenDiagnostics(memberResults),
194
+ domain: "plain-number",
195
+ reason: "plain-number"
196
+ };
197
+ }
198
+ return {
199
+ diagnostics: flattenDiagnostics(memberResults),
200
+ domain: "unknown",
201
+ reason: "unknown"
202
+ };
203
+ }
204
+ function isPlainNumberType(type) {
205
+ return (type.flags & ts.TypeFlags.NumberLike) !== 0;
206
+ }
207
+ function getUniqueNumericDomains(results) {
208
+ const domains = new Set();
209
+ for (const result of results) {
210
+ if (isNumericTypeDomain(result.domain)) {
211
+ domains.add(result.domain);
212
+ }
213
+ for (const domain of result.unionDomains ?? []) {
214
+ domains.add(domain);
215
+ }
216
+ }
217
+ return sortNumericDomains(domains);
218
+ }
219
+ function hasNoNumericDomain(result) {
220
+ return (!isNumericTypeDomain(result.domain) &&
221
+ (result.unionDomains === undefined || result.unionDomains.length === 0));
222
+ }
223
+ function getBrandPropertyDomains(checker, symbols, type) {
224
+ const numberPropertyNames = new Set(checker
225
+ .getNumberType()
226
+ .getProperties()
227
+ .map((property) => String(property.escapedName)));
228
+ const domains = new Set();
229
+ for (const binding of symbols.bindings) {
230
+ if (binding.exportedSymbol === undefined) {
231
+ continue;
232
+ }
233
+ const declaredType = checker.getDeclaredTypeOfSymbol(binding.exportedSymbol);
234
+ const brandPropertyNames = declaredType
235
+ .getProperties()
236
+ .filter((property) => !numberPropertyNames.has(String(property.escapedName)))
237
+ .map((property) => String(property.escapedName));
238
+ if (type
239
+ .getProperties()
240
+ .some((property) => brandPropertyNames.includes(String(property.escapedName)))) {
241
+ domains.add(binding.domain);
242
+ }
243
+ }
244
+ return sortNumericDomains(domains);
245
+ }
246
+ function flattenDiagnostics(results) {
247
+ return results.flatMap((result) => result.diagnostics);
248
+ }
249
+ function getDiagnosticLocation(node) {
250
+ if (node === undefined) {
251
+ return undefined;
252
+ }
253
+ const sourceFile = node.getSourceFile();
254
+ return {
255
+ fileName: sourceFile.fileName,
256
+ length: node.getWidth(sourceFile),
257
+ start: node.getStart(sourceFile)
258
+ };
259
+ }
260
+ //# sourceMappingURL=type-domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-domain.js","sourceRoot":"","sources":["../../../src/transformer/analyze/type-domain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import * as ts from "typescript";
2
+ export type TransparentDomainWrapper = ts.NonNullExpression | ts.ParenthesizedExpression | ts.SatisfiesExpression;
3
+ export declare function isRuntimeExpression(node: ts.Node): node is ts.Expression;
4
+ export declare function isTransparentDomainWrapper(node: ts.Node): node is TransparentDomainWrapper;
5
+ export declare function getTransparentDomainWrapperExpression(node: TransparentDomainWrapper): ts.Expression;
6
+ export declare function isInsideTypeNode(node: ts.Node): boolean;
7
+ export declare function isDeclarationName(node: ts.Node, parent: ts.Node): boolean;
8
+ export declare function isImportOrExportName(node: ts.Node, parent: ts.Node): boolean;
9
+ export declare function isNonComputedPropertyName(node: ts.Node, parent: ts.Node): boolean;
10
+ //# sourceMappingURL=ast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/transformer/ast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,MAAM,wBAAwB,GAChC,EAAE,CAAC,iBAAiB,GACpB,EAAE,CAAC,uBAAuB,GAC1B,EAAE,CAAC,mBAAmB,CAAC;AAE3B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,UAAU,CAExE;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,EAAE,CAAC,IAAI,GACZ,IAAI,IAAI,wBAAwB,CAMlC;AAED,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,wBAAwB,GAC7B,EAAE,CAAC,UAAU,CAEf;AAeD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAYvD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CA8CzE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CA4B5E;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,MAAM,EAAE,EAAE,CAAC,IAAI,GACd,OAAO,CAkCT"}
@@ -0,0 +1,115 @@
1
+ import * as ts from "typescript";
2
+ export function isRuntimeExpression(node) {
3
+ return ts.isExpression(node) && !isNonRuntimeExpressionNode(node);
4
+ }
5
+ export function isTransparentDomainWrapper(node) {
6
+ return (ts.isParenthesizedExpression(node) ||
7
+ ts.isNonNullExpression(node) ||
8
+ ts.isSatisfiesExpression(node));
9
+ }
10
+ export function getTransparentDomainWrapperExpression(node) {
11
+ return node.expression;
12
+ }
13
+ function isNonRuntimeExpressionNode(node) {
14
+ const parent = node.parent;
15
+ return (isInsideTypeNode(node) ||
16
+ isDeclarationName(node, parent) ||
17
+ isImportOrExportName(node, parent) ||
18
+ isNonComputedPropertyName(node, parent) ||
19
+ (ts.isShorthandPropertyAssignment(parent) && parent.name === node) ||
20
+ (ts.isPropertyAccessExpression(parent) && parent.name === node));
21
+ }
22
+ export function isInsideTypeNode(node) {
23
+ let current = node.parent;
24
+ while (!ts.isSourceFile(current)) {
25
+ if (ts.isTypeNode(current)) {
26
+ return true;
27
+ }
28
+ current = current.parent;
29
+ }
30
+ return false;
31
+ }
32
+ export function isDeclarationName(node, parent) {
33
+ if (ts.isVariableDeclaration(parent) && parent.name === node) {
34
+ return true;
35
+ }
36
+ if (ts.isParameter(parent) && parent.name === node) {
37
+ return true;
38
+ }
39
+ if (ts.isBindingElement(parent) && parent.name === node) {
40
+ return true;
41
+ }
42
+ if (ts.isFunctionDeclaration(parent) && parent.name === node) {
43
+ return true;
44
+ }
45
+ if (ts.isFunctionExpression(parent) && parent.name === node) {
46
+ return true;
47
+ }
48
+ if (ts.isClassDeclaration(parent) && parent.name === node) {
49
+ return true;
50
+ }
51
+ if (ts.isClassExpression(parent) && parent.name === node) {
52
+ return true;
53
+ }
54
+ if (ts.isInterfaceDeclaration(parent) && parent.name === node) {
55
+ return true;
56
+ }
57
+ if (ts.isTypeAliasDeclaration(parent) && parent.name === node) {
58
+ return true;
59
+ }
60
+ if (ts.isEnumDeclaration(parent) && parent.name === node) {
61
+ return true;
62
+ }
63
+ if (ts.isTypeParameterDeclaration(parent) && parent.name === node) {
64
+ return true;
65
+ }
66
+ return ts.isModuleDeclaration(parent) && parent.name === node;
67
+ }
68
+ export function isImportOrExportName(node, parent) {
69
+ if (ts.isImportClause(parent) && parent.name === node) {
70
+ return true;
71
+ }
72
+ if (ts.isNamespaceImport(parent) && parent.name === node) {
73
+ return true;
74
+ }
75
+ if (ts.isImportSpecifier(parent) &&
76
+ (parent.name === node || parent.propertyName === node)) {
77
+ return true;
78
+ }
79
+ if (ts.isExportSpecifier(parent) &&
80
+ (parent.name === node || parent.propertyName === node)) {
81
+ return true;
82
+ }
83
+ if (ts.isImportDeclaration(parent) && parent.moduleSpecifier === node) {
84
+ return true;
85
+ }
86
+ return ts.isExportDeclaration(parent) && parent.moduleSpecifier === node;
87
+ }
88
+ export function isNonComputedPropertyName(node, parent) {
89
+ if (!ts.isPropertyName(node) || ts.isComputedPropertyName(node)) {
90
+ return false;
91
+ }
92
+ if (ts.isPropertyAssignment(parent) && parent.name === node) {
93
+ return true;
94
+ }
95
+ if (ts.isPropertyDeclaration(parent) && parent.name === node) {
96
+ return true;
97
+ }
98
+ if (ts.isPropertySignature(parent) && parent.name === node) {
99
+ return true;
100
+ }
101
+ if (ts.isMethodDeclaration(parent) && parent.name === node) {
102
+ return true;
103
+ }
104
+ if (ts.isMethodSignature(parent) && parent.name === node) {
105
+ return true;
106
+ }
107
+ if (ts.isGetAccessorDeclaration(parent) && parent.name === node) {
108
+ return true;
109
+ }
110
+ if (ts.isSetAccessorDeclaration(parent) && parent.name === node) {
111
+ return true;
112
+ }
113
+ return ts.isEnumMember(parent) && parent.name === node;
114
+ }
115
+ //# sourceMappingURL=ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/transformer/ast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export type DiagnosticCode = "NUMTYPES_AMBIGUOUS_INTERSECTION" | "NUMTYPES_BITWISE_FLOAT" | "NUMTYPES_DOMAIN_LEAK" | "NUMTYPES_ERASED_CAST_MISUSE" | "NUMTYPES_IMPLICIT_NUMBER" | "NUMTYPES_MIXED_DOMAIN" | "NUMTYPES_UNSUPPORTED_COMPOUND_ASSIGNMENT" | "NUMTYPES_UNSUPPORTED_EXPRESSION" | "NUMTYPES_UNSUPPORTED_IMPORT" | "NUMTYPES_UNSUPPORTED_UNION" | "NUMTYPES_UNKNOWN_SYMBOL";
2
+ export interface DiagnosticLocation {
3
+ readonly fileName: string;
4
+ readonly length: number;
5
+ readonly start: number;
6
+ }
7
+ export interface TransformerDiagnostic {
8
+ readonly code: DiagnosticCode;
9
+ readonly location?: DiagnosticLocation;
10
+ readonly message: string;
11
+ }
12
+ export declare class NumtypesDiagnosticError extends Error {
13
+ readonly diagnostics: readonly TransformerDiagnostic[];
14
+ constructor(diagnostics: readonly TransformerDiagnostic[]);
15
+ }
16
+ export declare function createDiagnostic(code: DiagnosticCode, message: string, location?: DiagnosticLocation): TransformerDiagnostic;
17
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/transformer/diagnostics.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB,iCAAiC,GACjC,wBAAwB,GACxB,sBAAsB,GACtB,6BAA6B,GAC7B,0BAA0B,GAC1B,uBAAuB,GACvB,0CAA0C,GAC1C,iCAAiC,GACjC,6BAA6B,GAC7B,4BAA4B,GAC5B,yBAAyB,CAAC;AAE9B,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,SAAgB,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;gBAE3C,WAAW,EAAE,SAAS,qBAAqB,EAAE;CAKjE;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,qBAAqB,CAMvB"}
@@ -0,0 +1,30 @@
1
+ export class NumtypesDiagnosticError extends Error {
2
+ diagnostics;
3
+ constructor(diagnostics) {
4
+ super(formatDiagnosticErrorMessage(diagnostics));
5
+ this.name = "NumtypesDiagnosticError";
6
+ this.diagnostics = diagnostics;
7
+ }
8
+ }
9
+ export function createDiagnostic(code, message, location) {
10
+ if (location === undefined) {
11
+ return { code, message };
12
+ }
13
+ return { code, location, message };
14
+ }
15
+ function formatDiagnosticErrorMessage(diagnostics) {
16
+ if (diagnostics.length === 0) {
17
+ return "numtypes transform failed";
18
+ }
19
+ return [
20
+ "numtypes transform failed with diagnostics:",
21
+ ...diagnostics.map(formatDiagnostic)
22
+ ].join("\n");
23
+ }
24
+ function formatDiagnostic(diagnostic) {
25
+ if (diagnostic.location === undefined) {
26
+ return `${diagnostic.code}: ${diagnostic.message}`;
27
+ }
28
+ return `${diagnostic.location.fileName}:${String(diagnostic.location.start)}: ${diagnostic.code}: ${diagnostic.message}`;
29
+ }
30
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/transformer/diagnostics.ts"],"names":[],"mappings":"AAyBA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChC,WAAW,CAAmC;IAE9D,YAAmB,WAA6C;QAC9D,KAAK,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAoB,EACpB,OAAe,EACf,QAA6B;IAE7B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,4BAA4B,CACnC,WAA6C;IAE7C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED,OAAO;QACL,6CAA6C;QAC7C,GAAG,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC;KACrC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAiC;IACzD,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;AAC3H,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare const numericDomains: readonly ["i32", "u32", "f32", "f64"];
2
+ export type NumericDomain = (typeof numericDomains)[number];
3
+ export interface DomainCoercion {
4
+ readonly castFunction: NumericDomain;
5
+ readonly description: string;
6
+ readonly resultPattern: string;
7
+ }
8
+ export declare const domainCoercions: Readonly<Record<NumericDomain, DomainCoercion>>;
9
+ export declare function isNumericDomain(value: string): value is NumericDomain;
10
+ export declare function sortNumericDomains(domains: Iterable<NumericDomain>): readonly NumericDomain[];
11
+ //# sourceMappingURL=domains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/transformer/domains.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,uCAAwC,CAAC;AAEpE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,CAqB3E,CAAC;AAIF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAErE;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC/B,SAAS,aAAa,EAAE,CAM1B"}
@@ -0,0 +1,32 @@
1
+ export const numericDomains = ["i32", "u32", "f32", "f64"];
2
+ export const domainCoercions = {
3
+ f32: {
4
+ castFunction: "f32",
5
+ description: "single precision float",
6
+ resultPattern: "Math.fround(x)"
7
+ },
8
+ f64: {
9
+ castFunction: "f64",
10
+ description: "double precision float",
11
+ resultPattern: "+x"
12
+ },
13
+ i32: {
14
+ castFunction: "i32",
15
+ description: "signed int32",
16
+ resultPattern: "x | 0"
17
+ },
18
+ u32: {
19
+ castFunction: "u32",
20
+ description: "unsigned int32",
21
+ resultPattern: "x >>> 0"
22
+ }
23
+ };
24
+ const numericDomainSet = new Set(numericDomains);
25
+ export function isNumericDomain(value) {
26
+ return numericDomainSet.has(value);
27
+ }
28
+ export function sortNumericDomains(domains) {
29
+ const domainSet = new Set(domains);
30
+ return numericDomains.filter((domain) => domainSet.has(domain));
31
+ }
32
+ //# sourceMappingURL=domains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/transformer/domains.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAUpE,MAAM,CAAC,MAAM,eAAe,GAAoD;IAC9E,GAAG,EAAE;QACH,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,wBAAwB;QACrC,aAAa,EAAE,gBAAgB;KAChC;IACD,GAAG,EAAE;QACH,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,wBAAwB;QACrC,aAAa,EAAE,IAAI;KACpB;IACD,GAAG,EAAE;QACH,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,cAAc;QAC3B,aAAa,EAAE,OAAO;KACvB;IACD,GAAG,EAAE;QACH,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,gBAAgB;QAC7B,aAAa,EAAE,SAAS;KACzB;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAS,cAAc,CAAC,CAAC;AAE9E,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAgC;IAEhC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAgB,OAAO,CAAC,CAAC;IAElD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,MAAqB,EAAW,EAAE,CAC9D,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CACtB,CAAC;AACJ,CAAC"}