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.
- package/CHANGELOG.md +6 -0
- package/LICENSE +12 -0
- package/LICENSE-APACHE +201 -0
- package/LICENSE-MIT +21 -0
- package/README.md +652 -0
- package/dist/lib/index.d.ts +22 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +2 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/transformer/analyze/analyze-source-file.d.ts +15 -0
- package/dist/transformer/analyze/analyze-source-file.d.ts.map +1 -0
- package/dist/transformer/analyze/analyze-source-file.js +605 -0
- package/dist/transformer/analyze/analyze-source-file.js.map +1 -0
- package/dist/transformer/analyze/get-contextual-domain.d.ts +19 -0
- package/dist/transformer/analyze/get-contextual-domain.d.ts.map +1 -0
- package/dist/transformer/analyze/get-contextual-domain.js +197 -0
- package/dist/transformer/analyze/get-contextual-domain.js.map +1 -0
- package/dist/transformer/analyze/get-expression-domain.d.ts +26 -0
- package/dist/transformer/analyze/get-expression-domain.d.ts.map +1 -0
- package/dist/transformer/analyze/get-expression-domain.js +804 -0
- package/dist/transformer/analyze/get-expression-domain.js.map +1 -0
- package/dist/transformer/analyze/type-domain.d.ts +41 -0
- package/dist/transformer/analyze/type-domain.d.ts.map +1 -0
- package/dist/transformer/analyze/type-domain.js +260 -0
- package/dist/transformer/analyze/type-domain.js.map +1 -0
- package/dist/transformer/ast.d.ts +10 -0
- package/dist/transformer/ast.d.ts.map +1 -0
- package/dist/transformer/ast.js +115 -0
- package/dist/transformer/ast.js.map +1 -0
- package/dist/transformer/diagnostics.d.ts +17 -0
- package/dist/transformer/diagnostics.d.ts.map +1 -0
- package/dist/transformer/diagnostics.js +30 -0
- package/dist/transformer/diagnostics.js.map +1 -0
- package/dist/transformer/domains.d.ts +11 -0
- package/dist/transformer/domains.d.ts.map +1 -0
- package/dist/transformer/domains.js +32 -0
- package/dist/transformer/domains.js.map +1 -0
- package/dist/transformer/index.d.ts +10 -0
- package/dist/transformer/index.d.ts.map +1 -0
- package/dist/transformer/index.js +60 -0
- package/dist/transformer/index.js.map +1 -0
- package/dist/transformer/operators.d.ts +16 -0
- package/dist/transformer/operators.d.ts.map +1 -0
- package/dist/transformer/operators.js +44 -0
- package/dist/transformer/operators.js.map +1 -0
- package/dist/transformer/options.d.ts +19 -0
- package/dist/transformer/options.d.ts.map +1 -0
- package/dist/transformer/options.js +17 -0
- package/dist/transformer/options.js.map +1 -0
- package/dist/transformer/symbols.d.ts +56 -0
- package/dist/transformer/symbols.d.ts.map +1 -0
- package/dist/transformer/symbols.js +270 -0
- package/dist/transformer/symbols.js.map +1 -0
- package/dist/transformer/transform/erase-imports.d.ts +14 -0
- package/dist/transformer/transform/erase-imports.d.ts.map +1 -0
- package/dist/transformer/transform/erase-imports.js +174 -0
- package/dist/transformer/transform/erase-imports.js.map +1 -0
- package/dist/transformer/transform/generated-coercions.d.ts +9 -0
- package/dist/transformer/transform/generated-coercions.d.ts.map +1 -0
- package/dist/transformer/transform/generated-coercions.js +22 -0
- package/dist/transformer/transform/generated-coercions.js.map +1 -0
- package/dist/transformer/transform/optimize-coercions.d.ts +11 -0
- package/dist/transformer/transform/optimize-coercions.d.ts.map +1 -0
- package/dist/transformer/transform/optimize-coercions.js +1702 -0
- package/dist/transformer/transform/optimize-coercions.js.map +1 -0
- package/dist/transformer/transform/transform-declaration-file.d.ts +9 -0
- package/dist/transformer/transform/transform-declaration-file.d.ts.map +1 -0
- package/dist/transformer/transform/transform-declaration-file.js +376 -0
- package/dist/transformer/transform/transform-declaration-file.js.map +1 -0
- package/dist/transformer/transform/transform-expression.d.ts +24 -0
- package/dist/transformer/transform/transform-expression.d.ts.map +1 -0
- package/dist/transformer/transform/transform-expression.js +545 -0
- package/dist/transformer/transform/transform-expression.js.map +1 -0
- package/dist/transformer/transform/transform-source-file.d.ts +10 -0
- package/dist/transformer/transform/transform-source-file.d.ts.map +1 -0
- package/dist/transformer/transform/transform-source-file.js +52 -0
- package/dist/transformer/transform/transform-source-file.js.map +1 -0
- package/dist/transformer/ts-compat.d.ts +4 -0
- package/dist/transformer/ts-compat.d.ts.map +1 -0
- package/dist/transformer/ts-compat.js +24 -0
- package/dist/transformer/ts-compat.js.map +1 -0
- package/docs/implementation-plan.md +335 -0
- package/docs/lib-implementation.md +77 -0
- package/docs/lowering-optimization-spec.md +1020 -0
- package/docs/project-structure.md +52 -0
- package/docs/transform-spec.md +2114 -0
- package/package.json +83 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Project Structure
|
|
2
|
+
|
|
3
|
+
`numtypes` is centered on the transformer. The public library symbols exist so
|
|
4
|
+
that user code can express numeric intent in TypeScript, but transformed output
|
|
5
|
+
must not retain imports or function calls from `numtypes`.
|
|
6
|
+
|
|
7
|
+
The staged transformer implementation plan lives in `docs/implementation-plan.md`.
|
|
8
|
+
|
|
9
|
+
## Top-Level Layout
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
src/
|
|
13
|
+
lib/ Public phantom symbols imported by user code.
|
|
14
|
+
transformer/ TypeScript transformer entrypoint and implementation.
|
|
15
|
+
|
|
16
|
+
test/
|
|
17
|
+
unit/ Small deterministic tests for tables and helpers.
|
|
18
|
+
transformer/ Fixture-based source-to-source transform tests.
|
|
19
|
+
engine/v8/ Opt-in V8 lowering probes using Node/V8 flags.
|
|
20
|
+
|
|
21
|
+
bench/
|
|
22
|
+
*.bench.ts Opt-in performance tests and regression benchmarks.
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Public Symbols
|
|
26
|
+
|
|
27
|
+
User code imports from the package root:
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { f32, i32, type u32 } from "numtypes";
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Those imports are only meaningful before transformation. Calls such as
|
|
34
|
+
`i32(value)` and `Math.imul(i32(a), i32(b))` are compile-time cast markers. The
|
|
35
|
+
transformer lowers them to JavaScript coercion idioms and removes the original
|
|
36
|
+
package import when no runtime value remains.
|
|
37
|
+
|
|
38
|
+
## Test Layers
|
|
39
|
+
|
|
40
|
+
Default tests should be deterministic:
|
|
41
|
+
|
|
42
|
+
- unit tests for domain tables, diagnostics, symbol resolution, and operator
|
|
43
|
+
rules;
|
|
44
|
+
- fixture tests that compare transformed source text and diagnostics.
|
|
45
|
+
|
|
46
|
+
Engine probes are separate because they depend on the exact Node/V8 version and
|
|
47
|
+
on unstable diagnostic flags. They should test whether important output shapes
|
|
48
|
+
still lower as expected, not whether JavaScript semantics are correct.
|
|
49
|
+
|
|
50
|
+
Benchmarks are separate from tests. They should compare transformed output
|
|
51
|
+
against baseline JavaScript and track transformer overhead on large source
|
|
52
|
+
files.
|