@zmdb/compiler 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +40 -0
- package/dist/codegen/index.d.ts +50 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/index.js +364 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen/scan.d.ts +105 -0
- package/dist/codegen/scan.d.ts.map +1 -0
- package/dist/codegen/scan.js +450 -0
- package/dist/codegen/scan.js.map +1 -0
- package/dist/codegen/witness.d.ts +76 -0
- package/dist/codegen/witness.d.ts.map +1 -0
- package/dist/codegen/witness.js +690 -0
- package/dist/codegen/witness.js.map +1 -0
- package/dist/config/contract.d.ts +41 -0
- package/dist/config/contract.d.ts.map +1 -0
- package/dist/config/contract.js +5 -0
- package/dist/config/contract.js.map +1 -0
- package/dist/config/index.d.ts +53 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +277 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/index.zmdb.generated.d.ts +12 -0
- package/dist/config/index.zmdb.generated.js +28 -0
- package/dist/config/index.zmdb.witness.d.ts +3 -0
- package/dist/config/index.zmdb.witness.d.ts.map +1 -0
- package/dist/config/index.zmdb.witness.js +20 -0
- package/dist/config/index.zmdb.witness.js.map +1 -0
- package/dist/configured-plugin.d.ts +11 -0
- package/dist/configured-plugin.d.ts.map +1 -0
- package/dist/configured-plugin.js +27 -0
- package/dist/configured-plugin.js.map +1 -0
- package/dist/emit/index.d.ts +103 -0
- package/dist/emit/index.d.ts.map +1 -0
- package/dist/emit/index.js +1356 -0
- package/dist/emit/index.js.map +1 -0
- package/dist/errors.d.ts +7 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +254 -0
- package/dist/index.js.map +1 -0
- package/dist/lint/ast.d.ts +17 -0
- package/dist/lint/ast.d.ts.map +1 -0
- package/dist/lint/ast.js +77 -0
- package/dist/lint/ast.js.map +1 -0
- package/dist/lint/host-types.d.ts +9 -0
- package/dist/lint/host-types.d.ts.map +1 -0
- package/dist/lint/host-types.js +2 -0
- package/dist/lint/host-types.js.map +1 -0
- package/dist/lint/index.d.ts +23 -0
- package/dist/lint/index.d.ts.map +1 -0
- package/dist/lint/index.js +53 -0
- package/dist/lint/index.js.map +1 -0
- package/dist/lint/rules/no-distributed-nullable-tags.d.ts +3 -0
- package/dist/lint/rules/no-distributed-nullable-tags.d.ts.map +1 -0
- package/dist/lint/rules/no-distributed-nullable-tags.js +71 -0
- package/dist/lint/rules/no-distributed-nullable-tags.js.map +1 -0
- package/dist/lint/rules/no-empty-patch.d.ts +3 -0
- package/dist/lint/rules/no-empty-patch.d.ts.map +1 -0
- package/dist/lint/rules/no-empty-patch.js +26 -0
- package/dist/lint/rules/no-empty-patch.js.map +1 -0
- package/dist/lint/rules/no-interpolated-sql.d.ts +3 -0
- package/dist/lint/rules/no-interpolated-sql.d.ts.map +1 -0
- package/dist/lint/rules/no-interpolated-sql.js +35 -0
- package/dist/lint/rules/no-interpolated-sql.js.map +1 -0
- package/dist/lint/rules/no-unbounded-find.d.ts +3 -0
- package/dist/lint/rules/no-unbounded-find.d.ts.map +1 -0
- package/dist/lint/rules/no-unbounded-find.js +26 -0
- package/dist/lint/rules/no-unbounded-find.js.map +1 -0
- package/dist/lint/rules/no-unknown-json-column.d.ts +3 -0
- package/dist/lint/rules/no-unknown-json-column.d.ts.map +1 -0
- package/dist/lint/rules/no-unknown-json-column.js +35 -0
- package/dist/lint/rules/no-unknown-json-column.js.map +1 -0
- package/dist/lint/rules/require-sql-on-number.d.ts +3 -0
- package/dist/lint/rules/require-sql-on-number.d.ts.map +1 -0
- package/dist/lint/rules/require-sql-on-number.js +34 -0
- package/dist/lint/rules/require-sql-on-number.js.map +1 -0
- package/dist/lint/types.d.ts +12 -0
- package/dist/lint/types.d.ts.map +1 -0
- package/dist/lint/types.js +2 -0
- package/dist/lint/types.js.map +1 -0
- package/dist/metro/metro.d.ts +22 -0
- package/dist/metro/metro.d.ts.map +1 -0
- package/dist/metro/metro.js +242 -0
- package/dist/metro/metro.js.map +1 -0
- package/dist/protobuf/decode.d.ts +20 -0
- package/dist/protobuf/decode.d.ts.map +1 -0
- package/dist/protobuf/decode.js +289 -0
- package/dist/protobuf/decode.js.map +1 -0
- package/dist/protobuf/descriptor.d.ts +16 -0
- package/dist/protobuf/descriptor.d.ts.map +1 -0
- package/dist/protobuf/descriptor.js +303 -0
- package/dist/protobuf/descriptor.js.map +1 -0
- package/dist/protobuf/encode.d.ts +20 -0
- package/dist/protobuf/encode.d.ts.map +1 -0
- package/dist/protobuf/encode.js +203 -0
- package/dist/protobuf/encode.js.map +1 -0
- package/dist/protobuf/grpc-ir.d.ts +16 -0
- package/dist/protobuf/grpc-ir.d.ts.map +1 -0
- package/dist/protobuf/grpc-ir.js +2 -0
- package/dist/protobuf/grpc-ir.js.map +1 -0
- package/dist/protobuf/plan.d.ts +42 -0
- package/dist/protobuf/plan.d.ts.map +1 -0
- package/dist/protobuf/plan.js +158 -0
- package/dist/protobuf/plan.js.map +1 -0
- package/dist/reflect/callsites.d.ts +40 -0
- package/dist/reflect/callsites.d.ts.map +1 -0
- package/dist/reflect/callsites.js +153 -0
- package/dist/reflect/callsites.js.map +1 -0
- package/dist/reflect/index.d.ts +106 -0
- package/dist/reflect/index.d.ts.map +1 -0
- package/dist/reflect/index.js +1421 -0
- package/dist/reflect/index.js.map +1 -0
- package/dist/reflect/session.d.ts +118 -0
- package/dist/reflect/session.d.ts.map +1 -0
- package/dist/reflect/session.js +228 -0
- package/dist/reflect/session.js.map +1 -0
- package/dist/testing/index.d.ts +69 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +210 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/transform/index.d.ts +74 -0
- package/dist/transform/index.d.ts.map +1 -0
- package/dist/transform/index.js +572 -0
- package/dist/transform/index.js.map +1 -0
- package/dist/unplugin/index.d.ts +53 -0
- package/dist/unplugin/index.d.ts.map +1 -0
- package/dist/unplugin/index.js +130 -0
- package/dist/unplugin/index.js.map +1 -0
- package/dist/unplugin/inline-bench.d.ts +29 -0
- package/dist/unplugin/inline-bench.d.ts.map +1 -0
- package/dist/unplugin/inline-bench.js +82 -0
- package/dist/unplugin/inline-bench.js.map +1 -0
- package/package.json +110 -0
- package/src/codegen/index.ts +451 -0
- package/src/codegen/scan.ts +574 -0
- package/src/codegen/witness.ts +819 -0
- package/src/config/contract.ts +48 -0
- package/src/config/index.ts +384 -0
- package/src/config/index.zmdb.generated.d.ts +12 -0
- package/src/config/index.zmdb.generated.js +28 -0
- package/src/config/index.zmdb.witness.ts +22 -0
- package/src/configured-plugin.ts +35 -0
- package/src/emit/index.ts +1496 -0
- package/src/errors.ts +6 -0
- package/src/index.ts +336 -0
- package/src/lint/ast.ts +96 -0
- package/src/lint/host-types.ts +9 -0
- package/src/lint/index.ts +80 -0
- package/src/lint/rules/no-distributed-nullable-tags.ts +76 -0
- package/src/lint/rules/no-empty-patch.ts +26 -0
- package/src/lint/rules/no-interpolated-sql.ts +45 -0
- package/src/lint/rules/no-unbounded-find.ts +26 -0
- package/src/lint/rules/no-unknown-json-column.ts +36 -0
- package/src/lint/rules/require-sql-on-number.ts +34 -0
- package/src/lint/types.ts +11 -0
- package/src/metro/metro.ts +313 -0
- package/src/protobuf/decode.ts +375 -0
- package/src/protobuf/descriptor.ts +353 -0
- package/src/protobuf/encode.ts +277 -0
- package/src/protobuf/grpc-ir.ts +17 -0
- package/src/protobuf/plan.ts +244 -0
- package/src/reflect/callsites.ts +198 -0
- package/src/reflect/index.ts +1723 -0
- package/src/reflect/session.ts +276 -0
- package/src/testing/index.ts +298 -0
- package/src/transform/index.ts +690 -0
- package/src/unplugin/index.ts +182 -0
- package/src/unplugin/inline-bench.ts +92 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reflect/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { Checker, Diagnostic, Program } from 'typescript/unstable/sync';
|
|
2
|
+
/** A parsed source file, as the checker's client models one. */
|
|
3
|
+
export type SourceFileHandle = NonNullable<ReturnType<Program['getSourceFile']>>;
|
|
4
|
+
export interface SessionOptions {
|
|
5
|
+
/** Absolute path to the `tsconfig.json` that defines the program. */
|
|
6
|
+
readonly project: string;
|
|
7
|
+
/** Working directory for module resolution. Defaults to the project's directory. */
|
|
8
|
+
readonly cwd?: string;
|
|
9
|
+
}
|
|
10
|
+
interface ParsedProjectConfig {
|
|
11
|
+
readonly fileNames: readonly string[];
|
|
12
|
+
}
|
|
13
|
+
type PrepareProject = (config: ParsedProjectConfig) => string;
|
|
14
|
+
declare const PREPARED_OPEN: unique symbol;
|
|
15
|
+
/** What a snapshot update was for. The session keeps the log; see `updates`. */
|
|
16
|
+
export type SessionUpdate = 'open' | 'refresh' | 'invalidate';
|
|
17
|
+
export declare function apiInstanceCount(): number;
|
|
18
|
+
/**
|
|
19
|
+
* An open compiler session: one server process, one loaded project, one checker.
|
|
20
|
+
*
|
|
21
|
+
* ```ts
|
|
22
|
+
* using session = ReflectSession.open({ project: '/abs/tsconfig.json' });
|
|
23
|
+
* const ir = irFromType({ checker: session.checker, location: sf }, type);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class ReflectSession implements Disposable {
|
|
27
|
+
#private;
|
|
28
|
+
readonly project: string;
|
|
29
|
+
private constructor();
|
|
30
|
+
/**
|
|
31
|
+
* The checker and program come from the *current* snapshot, so they are getters
|
|
32
|
+
* rather than fields: after `refresh` the old pair belongs to a disposed snapshot,
|
|
33
|
+
* and a caller holding one would be reading a program that no longer exists.
|
|
34
|
+
*/
|
|
35
|
+
get checker(): Checker;
|
|
36
|
+
get program(): Program;
|
|
37
|
+
/** Every snapshot update this session has performed, in order. See `SessionUpdate`. */
|
|
38
|
+
get updates(): readonly SessionUpdate[];
|
|
39
|
+
static open(options: SessionOptions): ReflectSession;
|
|
40
|
+
static [PREPARED_OPEN](options: SessionOptions, prepare?: PrepareProject): ReflectSession;
|
|
41
|
+
/**
|
|
42
|
+
* Pick up edits to `changed` without reloading the project.
|
|
43
|
+
*
|
|
44
|
+
* This is the whole of watch-mode support, and the reason it is one method rather
|
|
45
|
+
* than "open a new session" is cost: `openProjects` re-reads the config and re-walks
|
|
46
|
+
* the import graph, which is the expensive half of a build. `fileChanges` re-checks
|
|
47
|
+
* the files that changed. A watch that reopened the project per keystroke would make
|
|
48
|
+
* the AOT path slower than the runtime one it replaces.
|
|
49
|
+
*/
|
|
50
|
+
refresh(changed: readonly string[]): void;
|
|
51
|
+
/**
|
|
52
|
+
* Tell the program about files that did not exist when it loaded.
|
|
53
|
+
*
|
|
54
|
+
* A `changed` notification for a file the program has never seen is a no-op — measured:
|
|
55
|
+
* `getSourceFile` keeps returning `undefined` — so a new module has to arrive as
|
|
56
|
+
* `created` or it stays invisible for the rest of the build. That is exactly the shape
|
|
57
|
+
* of "add a file in watch mode", so it is not an edge case.
|
|
58
|
+
*/
|
|
59
|
+
created(files: readonly string[]): void;
|
|
60
|
+
deleted(files: readonly string[]): void;
|
|
61
|
+
/** For the cases a watcher cannot describe — a config change, a new dependency. */
|
|
62
|
+
invalidateAll(): void;
|
|
63
|
+
/** The parsed file, or `undefined` when it is not part of the program. */
|
|
64
|
+
sourceFile(fileName: string): SourceFileHandle | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Every file in the program, dependencies and lib files included.
|
|
67
|
+
*
|
|
68
|
+
* Project compilation needs this and the plugin does not: a bundler hands over one module
|
|
69
|
+
* at a time, so the plugin never has to ask what the project contains. A project compile
|
|
70
|
+
* covers the whole build, so "which files might have a call site in them" is its first question.
|
|
71
|
+
*
|
|
72
|
+
* `getSourceFiles()` — the name the old compiler used — is not on the client at all;
|
|
73
|
+
* only the names marshal, and the caller has to filter `node_modules` and `.d.ts` for
|
|
74
|
+
* itself.
|
|
75
|
+
*/
|
|
76
|
+
sourceFileNames(): readonly string[];
|
|
77
|
+
/**
|
|
78
|
+
* The project's resolved compiler options.
|
|
79
|
+
*
|
|
80
|
+
* Read for one thing: whether a generated module may import `./models.ts` with the
|
|
81
|
+
* extension it has on disk. Guessing wrong writes a project that does not compile,
|
|
82
|
+
* which is a worse failure than refusing.
|
|
83
|
+
*/
|
|
84
|
+
compilerOptions(): Readonly<Record<string, unknown>>;
|
|
85
|
+
/**
|
|
86
|
+
* Semantic diagnostics for one file. The reflection reads types, and a type in a
|
|
87
|
+
* file that does not compile is a guess, so callers check this before trusting
|
|
88
|
+
* anything derived from it.
|
|
89
|
+
*/
|
|
90
|
+
diagnostics(fileName: string): readonly Diagnostic[];
|
|
91
|
+
close(): void;
|
|
92
|
+
[Symbol.dispose](): void;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Open one session after preparing a disposable project from the compiler's parsed
|
|
96
|
+
* root-file inventory.
|
|
97
|
+
*
|
|
98
|
+
* Project compilation uses this to admit generated witness files even when the consumer
|
|
99
|
+
* config has an explicit `files`/`include` list. The preparation and project open share one
|
|
100
|
+
* API instance, so this remains one compiler session rather than a discovery pass followed
|
|
101
|
+
* by a second compiler process.
|
|
102
|
+
*
|
|
103
|
+
* This helper is intentionally not re-exported from `@zmdb/compiler/reflect`.
|
|
104
|
+
*/
|
|
105
|
+
export declare function openPreparedSession(options: SessionOptions, prepare: PrepareProject): ReflectSession;
|
|
106
|
+
/**
|
|
107
|
+
* The concrete source-file set selected by a tsconfig.
|
|
108
|
+
*
|
|
109
|
+
* Config loading needs this narrower fact without retaining a compiler process:
|
|
110
|
+
* schema globs are allowed to select files only when the configured project
|
|
111
|
+
* includes them. Copy the names before closing because the program belongs to
|
|
112
|
+
* the session snapshot.
|
|
113
|
+
*/
|
|
114
|
+
export declare function projectSourceFileNames(project: string): readonly string[];
|
|
115
|
+
/** `try`/`finally` around a session, for callers that cannot use `using`. */
|
|
116
|
+
export declare function withSession<T>(options: SessionOptions, fn: (session: ReflectSession) => T): T;
|
|
117
|
+
export {};
|
|
118
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/reflect/session.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAE7E,gEAAgE;AAChE,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAEjF,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oFAAoF;IACpF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,mBAAmB,KAAK,MAAM,CAAC;AAC9D,QAAA,MAAM,aAAa,eAAyB,CAAC;AAE7C,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;AAqB9D,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;;;;GAOG;AACH,qBAAa,cAAe,YAAW,UAAU;;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAQzB,OAAO,eAKN;IAED;;;;OAIG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,uFAAuF;IACvF,IAAI,OAAO,IAAI,SAAS,aAAa,EAAE,CAEtC;IAED,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAEnD;IAED,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc,CAmBxF;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAExC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAEtC;IAED,OAAO,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAEtC;IAOD,mFAAmF;IACnF,aAAa,IAAI,IAAI,CAEpB;IAcD,0EAA0E;IAC1E,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAEzD;IAED;;;;;;;;;;OAUG;IACH,eAAe,IAAI,SAAS,MAAM,EAAE,CAEnC;IAED;;;;;;OAMG;IACH,eAAe,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAMnD;IAED;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE,CAEnD;IAED,KAAK,IAAI,IAAI,CAIZ;IAED,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAEvB;CACF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,GAAG,cAAc,CAEpG;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAGzE;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,CAAC,GAAG,CAAC,CAO7F"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
// The one place that talks to the TypeScript compiler.
|
|
2
|
+
//
|
|
3
|
+
// `typescript@7` is the Go compiler with a thin JS client: `import('typescript')`
|
|
4
|
+
// resolves to exactly two keys (`version`, `versionMajorMinor`) and the real surface
|
|
5
|
+
// lives behind subpath exports. The checker is `typescript/unstable/sync`, and every
|
|
6
|
+
// call round-trips to a `tsgo` child process over a synchronous pipe.
|
|
7
|
+
//
|
|
8
|
+
// Two consequences shape this file:
|
|
9
|
+
//
|
|
10
|
+
// 1. **One session per build, not one per type.** Spawning the server and loading a
|
|
11
|
+
// project is the expensive part; a checker call is cheap. Every consumer takes a
|
|
12
|
+
// `ReflectSession` and holds it for the whole run.
|
|
13
|
+
// 2. **`close()` is not optional.** The child process outlives the import if nobody
|
|
14
|
+
// closes it, which in a test runner means a hung worker. `using` works, and
|
|
15
|
+
// `withSession` is there for the cases that cannot use it.
|
|
16
|
+
//
|
|
17
|
+
// `unstable` in the specifier is the compiler's word, not ours: the API is not
|
|
18
|
+
// covered by TypeScript's stability guarantee, so it is contained here rather than
|
|
19
|
+
// spread over the reflection and the emitter.
|
|
20
|
+
import { API } from 'typescript/unstable/sync';
|
|
21
|
+
const PREPARED_OPEN = Symbol('preparedOpen');
|
|
22
|
+
/**
|
|
23
|
+
* How many compiler servers this process has started.
|
|
24
|
+
*
|
|
25
|
+
* REQ-TF-11 asks for one `API` instance per build, which is the difference between a
|
|
26
|
+
* build that loads the project once and one that loads it per file. A claim like that
|
|
27
|
+
* needs a number behind it, so the counter lives here and the build-budget test reads
|
|
28
|
+
* it.
|
|
29
|
+
*/
|
|
30
|
+
let apiInstances = 0;
|
|
31
|
+
export function apiInstanceCount() {
|
|
32
|
+
return apiInstances;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* An open compiler session: one server process, one loaded project, one checker.
|
|
36
|
+
*
|
|
37
|
+
* ```ts
|
|
38
|
+
* using session = ReflectSession.open({ project: '/abs/tsconfig.json' });
|
|
39
|
+
* const ir = irFromType({ checker: session.checker, location: sf }, type);
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export class ReflectSession {
|
|
43
|
+
project;
|
|
44
|
+
#api;
|
|
45
|
+
#program;
|
|
46
|
+
#checker;
|
|
47
|
+
#closed = false;
|
|
48
|
+
#updates = ['open'];
|
|
49
|
+
constructor(api, project, program, checker) {
|
|
50
|
+
this.#api = api;
|
|
51
|
+
this.project = project;
|
|
52
|
+
this.#program = program;
|
|
53
|
+
this.#checker = checker;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The checker and program come from the *current* snapshot, so they are getters
|
|
57
|
+
* rather than fields: after `refresh` the old pair belongs to a disposed snapshot,
|
|
58
|
+
* and a caller holding one would be reading a program that no longer exists.
|
|
59
|
+
*/
|
|
60
|
+
get checker() {
|
|
61
|
+
return this.#checker;
|
|
62
|
+
}
|
|
63
|
+
get program() {
|
|
64
|
+
return this.#program;
|
|
65
|
+
}
|
|
66
|
+
/** Every snapshot update this session has performed, in order. See `SessionUpdate`. */
|
|
67
|
+
get updates() {
|
|
68
|
+
return this.#updates;
|
|
69
|
+
}
|
|
70
|
+
static open(options) {
|
|
71
|
+
return ReflectSession[PREPARED_OPEN](options);
|
|
72
|
+
}
|
|
73
|
+
static [PREPARED_OPEN](options, prepare) {
|
|
74
|
+
const cwd = options.cwd ?? options.project.replace(/[/\\][^/\\]*$/, '');
|
|
75
|
+
apiInstances++;
|
|
76
|
+
const api = new API({ cwd });
|
|
77
|
+
try {
|
|
78
|
+
const projectPath = prepare === undefined
|
|
79
|
+
? options.project
|
|
80
|
+
: prepare({ fileNames: api.parseConfigFile(options.project).fileNames });
|
|
81
|
+
// `getProjects()` is empty rather than throwing when the config does not parse,
|
|
82
|
+
// and an empty project list would otherwise surface much later as "every type is
|
|
83
|
+
// `unsupported`" — a wrong answer dressed up as a supported one.
|
|
84
|
+
const project = api.updateSnapshot({ openProjects: [projectPath] }).getProjects()[0];
|
|
85
|
+
if (!project)
|
|
86
|
+
throw new Error(`could not load a TypeScript project from ${projectPath}`);
|
|
87
|
+
return new ReflectSession(api, projectPath, project.program, project.checker);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
api.close();
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Pick up edits to `changed` without reloading the project.
|
|
96
|
+
*
|
|
97
|
+
* This is the whole of watch-mode support, and the reason it is one method rather
|
|
98
|
+
* than "open a new session" is cost: `openProjects` re-reads the config and re-walks
|
|
99
|
+
* the import graph, which is the expensive half of a build. `fileChanges` re-checks
|
|
100
|
+
* the files that changed. A watch that reopened the project per keystroke would make
|
|
101
|
+
* the AOT path slower than the runtime one it replaces.
|
|
102
|
+
*/
|
|
103
|
+
refresh(changed) {
|
|
104
|
+
this.#files({ changed: [...changed] });
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Tell the program about files that did not exist when it loaded.
|
|
108
|
+
*
|
|
109
|
+
* A `changed` notification for a file the program has never seen is a no-op — measured:
|
|
110
|
+
* `getSourceFile` keeps returning `undefined` — so a new module has to arrive as
|
|
111
|
+
* `created` or it stays invisible for the rest of the build. That is exactly the shape
|
|
112
|
+
* of "add a file in watch mode", so it is not an edge case.
|
|
113
|
+
*/
|
|
114
|
+
created(files) {
|
|
115
|
+
this.#files({ created: [...files] });
|
|
116
|
+
}
|
|
117
|
+
deleted(files) {
|
|
118
|
+
this.#files({ deleted: [...files] });
|
|
119
|
+
}
|
|
120
|
+
#files(changes) {
|
|
121
|
+
if (Object.values(changes).every(names => names.length === 0))
|
|
122
|
+
return;
|
|
123
|
+
this.#update('refresh', { fileChanges: changes });
|
|
124
|
+
}
|
|
125
|
+
/** For the cases a watcher cannot describe — a config change, a new dependency. */
|
|
126
|
+
invalidateAll() {
|
|
127
|
+
this.#update('invalidate', { fileChanges: { invalidateAll: true } });
|
|
128
|
+
}
|
|
129
|
+
#update(kind, params) {
|
|
130
|
+
if (this.#closed)
|
|
131
|
+
throw new Error('the compiler session is closed');
|
|
132
|
+
// Deliberately no `openProjects` here: the open is ref-counted and persists across
|
|
133
|
+
// snapshots, so naming it again would both leak a reference and reload the project.
|
|
134
|
+
const snapshot = this.#api.updateSnapshot(params);
|
|
135
|
+
const project = snapshot.getProject(this.project) ?? snapshot.getProjects()[0];
|
|
136
|
+
if (!project)
|
|
137
|
+
throw new Error(`the TypeScript project ${this.project} disappeared from the snapshot`);
|
|
138
|
+
this.#program = project.program;
|
|
139
|
+
this.#checker = project.checker;
|
|
140
|
+
this.#updates.push(kind);
|
|
141
|
+
}
|
|
142
|
+
/** The parsed file, or `undefined` when it is not part of the program. */
|
|
143
|
+
sourceFile(fileName) {
|
|
144
|
+
return this.#program.getSourceFile(fileName);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Every file in the program, dependencies and lib files included.
|
|
148
|
+
*
|
|
149
|
+
* Project compilation needs this and the plugin does not: a bundler hands over one module
|
|
150
|
+
* at a time, so the plugin never has to ask what the project contains. A project compile
|
|
151
|
+
* covers the whole build, so "which files might have a call site in them" is its first question.
|
|
152
|
+
*
|
|
153
|
+
* `getSourceFiles()` — the name the old compiler used — is not on the client at all;
|
|
154
|
+
* only the names marshal, and the caller has to filter `node_modules` and `.d.ts` for
|
|
155
|
+
* itself.
|
|
156
|
+
*/
|
|
157
|
+
sourceFileNames() {
|
|
158
|
+
return this.#program.getSourceFileNames();
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* The project's resolved compiler options.
|
|
162
|
+
*
|
|
163
|
+
* Read for one thing: whether a generated module may import `./models.ts` with the
|
|
164
|
+
* extension it has on disk. Guessing wrong writes a project that does not compile,
|
|
165
|
+
* which is a worse failure than refusing.
|
|
166
|
+
*/
|
|
167
|
+
compilerOptions() {
|
|
168
|
+
// boundary: the client types this as `CompilerOptions`, an interface with a declared
|
|
169
|
+
// property per known flag. Widening it to a record is the safe direction — every value
|
|
170
|
+
// becomes `unknown` and the caller has to test what it reads — and it is the only way to
|
|
171
|
+
// ask about a flag by name, which is what a caller that only wants one flag needs.
|
|
172
|
+
return this.#program.getCompilerOptions();
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Semantic diagnostics for one file. The reflection reads types, and a type in a
|
|
176
|
+
* file that does not compile is a guess, so callers check this before trusting
|
|
177
|
+
* anything derived from it.
|
|
178
|
+
*/
|
|
179
|
+
diagnostics(fileName) {
|
|
180
|
+
return this.#program.getSemanticDiagnostics(fileName);
|
|
181
|
+
}
|
|
182
|
+
close() {
|
|
183
|
+
if (this.#closed)
|
|
184
|
+
return;
|
|
185
|
+
this.#closed = true;
|
|
186
|
+
this.#api.close();
|
|
187
|
+
}
|
|
188
|
+
[Symbol.dispose]() {
|
|
189
|
+
this.close();
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Open one session after preparing a disposable project from the compiler's parsed
|
|
194
|
+
* root-file inventory.
|
|
195
|
+
*
|
|
196
|
+
* Project compilation uses this to admit generated witness files even when the consumer
|
|
197
|
+
* config has an explicit `files`/`include` list. The preparation and project open share one
|
|
198
|
+
* API instance, so this remains one compiler session rather than a discovery pass followed
|
|
199
|
+
* by a second compiler process.
|
|
200
|
+
*
|
|
201
|
+
* This helper is intentionally not re-exported from `@zmdb/compiler/reflect`.
|
|
202
|
+
*/
|
|
203
|
+
export function openPreparedSession(options, prepare) {
|
|
204
|
+
return ReflectSession[PREPARED_OPEN](options, prepare);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* The concrete source-file set selected by a tsconfig.
|
|
208
|
+
*
|
|
209
|
+
* Config loading needs this narrower fact without retaining a compiler process:
|
|
210
|
+
* schema globs are allowed to select files only when the configured project
|
|
211
|
+
* includes them. Copy the names before closing because the program belongs to
|
|
212
|
+
* the session snapshot.
|
|
213
|
+
*/
|
|
214
|
+
export function projectSourceFileNames(project) {
|
|
215
|
+
using session = ReflectSession.open({ project });
|
|
216
|
+
return [...session.sourceFileNames()];
|
|
217
|
+
}
|
|
218
|
+
/** `try`/`finally` around a session, for callers that cannot use `using`. */
|
|
219
|
+
export function withSession(options, fn) {
|
|
220
|
+
const session = ReflectSession.open(options);
|
|
221
|
+
try {
|
|
222
|
+
return fn(session);
|
|
223
|
+
}
|
|
224
|
+
finally {
|
|
225
|
+
session.close();
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/reflect/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { type CoreSchema, type TaggedSchema } from '@zmdb/schema';
|
|
2
|
+
import { type SchemaIR } from '@zmdb/schema/ir';
|
|
3
|
+
import { type NamingStrategy } from '@zmdb/schema/naming';
|
|
4
|
+
import { type ReflectDiagnostic } from '../reflect/index.js';
|
|
5
|
+
export interface SchemasFromOptions {
|
|
6
|
+
/**
|
|
7
|
+
* The `tsconfig.json` to read the module from. Defaults to the nearest one at or above the
|
|
8
|
+
* module's own directory, which is the right answer for a test inside its package.
|
|
9
|
+
*/
|
|
10
|
+
readonly project?: string | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* What to do with a reflection that had to refuse something. The default throws, because a
|
|
13
|
+
* schema with a column quietly missing is the failure mode this whole design exists to
|
|
14
|
+
* prevent; pass a function to inspect them instead.
|
|
15
|
+
*/
|
|
16
|
+
readonly onDiagnostics?: ((diagnostics: readonly ReflectDiagnostic[]) => void) | undefined;
|
|
17
|
+
/** The already-resolved build-time naming strategy. */
|
|
18
|
+
readonly naming?: NamingStrategy | undefined;
|
|
19
|
+
}
|
|
20
|
+
export interface SchemasFromFilesOptions extends SchemasFromOptions {
|
|
21
|
+
/** The project that owns every selected declaration file. */
|
|
22
|
+
readonly project: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The schema values for exported tagged interfaces in one module.
|
|
26
|
+
*
|
|
27
|
+
* `module` is a path or a `file:` URL — `import.meta.url` for the calling test file, which is
|
|
28
|
+
* the usual case. The result is keyed by interface name, so it destructures.
|
|
29
|
+
*/
|
|
30
|
+
export declare function schemasFrom<const Names extends readonly string[]>(module: string, names: Names, options?: SchemasFromOptions): {
|
|
31
|
+
[Name in Names[number]]: CoreSchema<string>;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* The same, with each schema remembering the type it came from.
|
|
35
|
+
*
|
|
36
|
+
* The reflection knows which interface it read, but a function cannot return a different type
|
|
37
|
+
* per string it was handed, so the mapping is stated: `schemasFrom<{ User: User }>(…)`. What
|
|
38
|
+
* comes back is a `TaggedSchema<User>`, exactly what `schemaOf<User>()` would have been, which
|
|
39
|
+
* is what makes `Entity<…>`, `CreateDTO<…>` and a typed repository work off it.
|
|
40
|
+
*
|
|
41
|
+
* The name appears twice, once as a type and once as a string. That is the honest amount: the
|
|
42
|
+
* string is what gets looked up at runtime and the type is what the compiler needs, and the
|
|
43
|
+
* constraint ties them together so a typo in either is an error rather than an `undefined`.
|
|
44
|
+
* Tests that only read the schema as data — IR, OpenAPI, seeding — want the erased overload
|
|
45
|
+
* above and should not pay the extra line.
|
|
46
|
+
*/
|
|
47
|
+
export declare function schemasFrom<Types extends Record<string, object>>(module: string, names: readonly (keyof Types & string)[], options?: SchemasFromOptions): {
|
|
48
|
+
[Name in keyof Types]: TaggedSchema<Types[Name]>;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Every exported tagged table declaration in a concrete file set.
|
|
52
|
+
*
|
|
53
|
+
* Config loading has already expanded and project-checked these files. This
|
|
54
|
+
* bridge keeps the remaining compiler work in the reflection library: one
|
|
55
|
+
* session for the project, one pass over each module's exports, and the same
|
|
56
|
+
* `schemaFromIR` conversion used by `schemaOf<T>()` and `schemasFrom()`.
|
|
57
|
+
*/
|
|
58
|
+
export declare function schemasFromFiles(files: readonly string[], options: SchemasFromFilesOptions): readonly CoreSchema<string>[];
|
|
59
|
+
/**
|
|
60
|
+
* The same, stopping at the IR.
|
|
61
|
+
*
|
|
62
|
+
* Separate because the IR is the spine and a test about the front-end wants to see it
|
|
63
|
+
* directly — the schema value is one conversion further on, and `schemaFromIR` is not the
|
|
64
|
+
* thing under test.
|
|
65
|
+
*/
|
|
66
|
+
export declare function schemaIrsFrom<const Names extends readonly string[]>(module: string, names: Names, options?: SchemasFromOptions): {
|
|
67
|
+
[Name in Names[number]]: SchemaIR;
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAiDA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAoB,KAAK,iBAAiB,EAAuB,MAAM,qBAAqB,CAAC;AAGpG,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3F,uDAAuD;IACvD,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAMD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,KAAK,SAAS,SAAS,MAAM,EAAE,EAC/D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,kBAAkB,GAC3B;KAAG,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;CAAE,CAAC;AACnD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,EACxC,OAAO,CAAC,EAAE,kBAAkB,GAC3B;KAAG,IAAI,IAAI,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CAAE,CAAC;AAYxD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE,uBAAuB,GAC/B,SAAS,UAAU,CAAC,MAAM,CAAC,EAAE,CAgE/B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,CAAC,KAAK,SAAS,SAAS,MAAM,EAAE,EACjE,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,kBAAuB,GAC/B;KAAG,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ;CAAE,CAoEvC"}
|