@fougere/core 0.8.2-alpha.0 → 0.8.4-alpha.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 (222) hide show
  1. package/dist/boot/Emissions.d.ts.map +1 -1
  2. package/dist/boot/Emissions.js +3 -3
  3. package/dist/boot/Emissions.js.map +1 -1
  4. package/dist/boot/auth.d.ts +1 -1
  5. package/dist/boot/auth.d.ts.map +1 -1
  6. package/dist/boot/bootstrap.d.ts.map +1 -1
  7. package/dist/boot/bootstrap.js +339 -595
  8. package/dist/boot/bootstrap.js.map +1 -1
  9. package/dist/boot/card.js +1 -1
  10. package/dist/boot/card.js.map +1 -1
  11. package/dist/boot/hosted.d.ts +1 -1
  12. package/dist/boot/hosted.d.ts.map +1 -1
  13. package/dist/boot/install.d.ts +40 -0
  14. package/dist/boot/install.d.ts.map +1 -0
  15. package/dist/boot/install.js +298 -0
  16. package/dist/boot/install.js.map +1 -0
  17. package/dist/boot/ownership.d.ts +1 -1
  18. package/dist/boot/ownership.d.ts.map +1 -1
  19. package/dist/boot/ownership.js +14 -1
  20. package/dist/boot/ownership.js.map +1 -1
  21. package/dist/boot/seed.d.ts +7 -1
  22. package/dist/boot/seed.d.ts.map +1 -1
  23. package/dist/boot/seed.js +7 -2
  24. package/dist/boot/seed.js.map +1 -1
  25. package/dist/boot/statement-drift.d.ts +1 -1
  26. package/dist/boot/statement-drift.d.ts.map +1 -1
  27. package/dist/boot/together.d.ts +1 -1
  28. package/dist/boot/together.d.ts.map +1 -1
  29. package/dist/boot/together.js +1 -1
  30. package/dist/boot/together.js.map +1 -1
  31. package/dist/boot/types.d.ts +2 -2
  32. package/dist/boot/types.d.ts.map +1 -1
  33. package/dist/config-loader.d.ts +1 -1
  34. package/dist/config-loader.d.ts.map +1 -1
  35. package/dist/contract.d.ts +2 -2
  36. package/dist/contract.d.ts.map +1 -1
  37. package/dist/contract.js +1 -1
  38. package/dist/contract.js.map +1 -1
  39. package/dist/conventions.d.ts.map +1 -0
  40. package/dist/conventions.js.map +1 -0
  41. package/dist/crypto/encoding.d.ts +0 -1
  42. package/dist/crypto/encoding.d.ts.map +1 -1
  43. package/dist/crypto/encoding.js +0 -7
  44. package/dist/crypto/encoding.js.map +1 -1
  45. package/dist/declare.js +1 -1
  46. package/dist/declare.js.map +1 -1
  47. package/dist/descriptor/index.d.ts +15 -0
  48. package/dist/descriptor/index.d.ts.map +1 -0
  49. package/dist/descriptor/index.js +14 -0
  50. package/dist/descriptor/index.js.map +1 -0
  51. package/dist/descriptor/surface.d.ts +8 -0
  52. package/dist/descriptor/surface.d.ts.map +1 -0
  53. package/dist/descriptor/surface.js +16 -0
  54. package/dist/descriptor/surface.js.map +1 -0
  55. package/dist/dispatch/HandlerFacade.d.ts +2 -0
  56. package/dist/dispatch/HandlerFacade.d.ts.map +1 -1
  57. package/dist/dispatch/HandlerFacade.js +7 -2
  58. package/dist/dispatch/HandlerFacade.js.map +1 -1
  59. package/dist/dispatch/StorageGuard.d.ts.map +1 -1
  60. package/dist/dispatch/StorageGuard.js +9 -23
  61. package/dist/dispatch/StorageGuard.js.map +1 -1
  62. package/dist/dispatch/presenterArguments.d.ts +7 -1
  63. package/dist/dispatch/presenterArguments.d.ts.map +1 -1
  64. package/dist/dispatch/presenterArguments.js +15 -4
  65. package/dist/dispatch/presenterArguments.js.map +1 -1
  66. package/dist/dispatch/validateInput.d.ts.map +1 -1
  67. package/dist/dispatch/validateInput.js +2 -2
  68. package/dist/dispatch/validateInput.js.map +1 -1
  69. package/dist/effective-operation.d.ts +1 -1
  70. package/dist/effective-operation.d.ts.map +1 -1
  71. package/dist/effective-operation.js +2 -12
  72. package/dist/effective-operation.js.map +1 -1
  73. package/dist/index.d.ts +7 -9
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +4 -2
  76. package/dist/index.js.map +1 -1
  77. package/dist/node.d.ts +2 -12
  78. package/dist/node.d.ts.map +1 -1
  79. package/dist/node.js +2 -12
  80. package/dist/node.js.map +1 -1
  81. package/dist/prefab/crud.d.ts +1 -1
  82. package/dist/prefab/crud.d.ts.map +1 -1
  83. package/dist/prefab/mirror.d.ts +10 -11
  84. package/dist/prefab/mirror.d.ts.map +1 -1
  85. package/dist/prefab/mirror.js +1 -27
  86. package/dist/prefab/mirror.js.map +1 -1
  87. package/dist/prefab/repository.d.ts +1 -1
  88. package/dist/prefab/repository.d.ts.map +1 -1
  89. package/dist/{scan/result.d.ts → scan.d.ts} +2 -2
  90. package/dist/scan.d.ts.map +1 -0
  91. package/dist/scan.js +2 -0
  92. package/dist/scan.js.map +1 -0
  93. package/dist/source.d.ts +1 -1
  94. package/dist/source.d.ts.map +1 -1
  95. package/dist/storage/criterion.d.ts.map +1 -0
  96. package/dist/{criterion.js → storage/criterion.js} +2 -2
  97. package/dist/storage/criterion.js.map +1 -0
  98. package/dist/{storage.d.ts → storage/port.d.ts} +6 -3
  99. package/dist/storage/port.d.ts.map +1 -0
  100. package/dist/{storage.js → storage/port.js} +13 -6
  101. package/dist/storage/port.js.map +1 -0
  102. package/dist/{store.d.ts → storage/store.d.ts} +1 -1
  103. package/dist/storage/store.d.ts.map +1 -0
  104. package/dist/{store.js → storage/store.js} +33 -17
  105. package/dist/storage/store.js.map +1 -0
  106. package/dist/verify.js +1 -1
  107. package/dist/verify.js.map +1 -1
  108. package/dist/wire/emit.d.ts.map +1 -0
  109. package/dist/wire/emit.js.map +1 -0
  110. package/dist/wire/errors.js +2 -2
  111. package/dist/wire/errors.js.map +1 -1
  112. package/package.json +10 -4
  113. package/src/boot/Emissions.ts +3 -3
  114. package/src/boot/auth.ts +1 -1
  115. package/src/boot/bootstrap.ts +386 -674
  116. package/src/boot/card.ts +1 -1
  117. package/src/boot/hosted.ts +1 -1
  118. package/src/boot/install.ts +390 -0
  119. package/src/boot/ownership.ts +17 -2
  120. package/src/boot/seed.ts +18 -3
  121. package/src/boot/statement-drift.ts +1 -1
  122. package/src/boot/together.ts +1 -1
  123. package/src/boot/types.ts +2 -2
  124. package/src/config-loader.ts +1 -1
  125. package/src/contract.ts +2 -2
  126. package/src/crypto/encoding.ts +0 -7
  127. package/src/declare.ts +1 -1
  128. package/src/descriptor/index.ts +15 -0
  129. package/src/descriptor/surface.ts +23 -0
  130. package/src/dispatch/HandlerFacade.ts +9 -2
  131. package/src/dispatch/StorageGuard.ts +8 -21
  132. package/src/dispatch/presenterArguments.ts +21 -9
  133. package/src/dispatch/validateInput.ts +2 -2
  134. package/src/effective-operation.ts +3 -14
  135. package/src/index.ts +10 -9
  136. package/src/node.ts +2 -16
  137. package/src/prefab/crud.ts +1 -1
  138. package/src/prefab/mirror.ts +12 -38
  139. package/src/prefab/repository.ts +1 -1
  140. package/src/{scan/result.ts → scan.ts} +1 -1
  141. package/src/source.ts +1 -1
  142. package/src/{criterion.ts → storage/criterion.ts} +2 -2
  143. package/src/{storage.ts → storage/port.ts} +20 -5
  144. package/src/{store.ts → storage/store.ts} +35 -16
  145. package/src/verify.ts +1 -1
  146. package/src/wire/call.ts +1 -1
  147. package/src/wire/errors.ts +2 -2
  148. package/dist/boot/boot.d.ts +0 -45
  149. package/dist/boot/boot.d.ts.map +0 -1
  150. package/dist/boot/boot.js +0 -63
  151. package/dist/boot/boot.js.map +0 -1
  152. package/dist/criterion.d.ts.map +0 -1
  153. package/dist/criterion.js.map +0 -1
  154. package/dist/declarations.d.ts +0 -29
  155. package/dist/declarations.d.ts.map +0 -1
  156. package/dist/declarations.js +0 -69
  157. package/dist/declarations.js.map +0 -1
  158. package/dist/emit.d.ts.map +0 -1
  159. package/dist/emit.js.map +0 -1
  160. package/dist/imports.d.ts +0 -16
  161. package/dist/imports.d.ts.map +0 -1
  162. package/dist/imports.js +0 -78
  163. package/dist/imports.js.map +0 -1
  164. package/dist/placement.d.ts +0 -25
  165. package/dist/placement.d.ts.map +0 -1
  166. package/dist/placement.js +0 -69
  167. package/dist/placement.js.map +0 -1
  168. package/dist/scan/adapters.d.ts +0 -3
  169. package/dist/scan/adapters.d.ts.map +0 -1
  170. package/dist/scan/adapters.js +0 -25
  171. package/dist/scan/adapters.js.map +0 -1
  172. package/dist/scan/bundling.d.ts +0 -3
  173. package/dist/scan/bundling.d.ts.map +0 -1
  174. package/dist/scan/bundling.js +0 -15
  175. package/dist/scan/bundling.js.map +0 -1
  176. package/dist/scan/contract.d.ts +0 -27
  177. package/dist/scan/contract.d.ts.map +0 -1
  178. package/dist/scan/contract.js +0 -46
  179. package/dist/scan/contract.js.map +0 -1
  180. package/dist/scan/conventions.d.ts.map +0 -1
  181. package/dist/scan/conventions.js.map +0 -1
  182. package/dist/scan/emit.d.ts +0 -10
  183. package/dist/scan/emit.d.ts.map +0 -1
  184. package/dist/scan/emit.js +0 -144
  185. package/dist/scan/emit.js.map +0 -1
  186. package/dist/scan/handler-parser.d.ts +0 -26
  187. package/dist/scan/handler-parser.d.ts.map +0 -1
  188. package/dist/scan/handler-parser.js +0 -607
  189. package/dist/scan/handler-parser.js.map +0 -1
  190. package/dist/scan/result.d.ts.map +0 -1
  191. package/dist/scan/result.js +0 -2
  192. package/dist/scan/result.js.map +0 -1
  193. package/dist/scan/scanner.d.ts +0 -12
  194. package/dist/scan/scanner.d.ts.map +0 -1
  195. package/dist/scan/scanner.js +0 -569
  196. package/dist/scan/scanner.js.map +0 -1
  197. package/dist/scan/statement.d.ts +0 -4
  198. package/dist/scan/statement.d.ts.map +0 -1
  199. package/dist/scan/statement.js +0 -135
  200. package/dist/scan/statement.js.map +0 -1
  201. package/dist/storage.d.ts.map +0 -1
  202. package/dist/storage.js.map +0 -1
  203. package/dist/store.d.ts.map +0 -1
  204. package/dist/store.js.map +0 -1
  205. package/src/boot/boot.ts +0 -110
  206. package/src/declarations.ts +0 -102
  207. package/src/imports.ts +0 -94
  208. package/src/placement.ts +0 -86
  209. package/src/scan/adapters.ts +0 -32
  210. package/src/scan/bundling.ts +0 -14
  211. package/src/scan/contract.ts +0 -80
  212. package/src/scan/emit.ts +0 -160
  213. package/src/scan/handler-parser.ts +0 -695
  214. package/src/scan/scanner.ts +0 -694
  215. package/src/scan/statement.ts +0 -159
  216. /package/dist/{scan/conventions.d.ts → conventions.d.ts} +0 -0
  217. /package/dist/{scan/conventions.js → conventions.js} +0 -0
  218. /package/dist/{criterion.d.ts → storage/criterion.d.ts} +0 -0
  219. /package/dist/{emit.d.ts → wire/emit.d.ts} +0 -0
  220. /package/dist/{emit.js → wire/emit.js} +0 -0
  221. /package/src/{scan/conventions.ts → conventions.ts} +0 -0
  222. /package/src/{emit.ts → wire/emit.ts} +0 -0
@@ -1,607 +0,0 @@
1
- import { readFileSync, existsSync, statSync } from 'node:fs';
2
- import { join, dirname, resolve as resolvePath } from 'node:path';
3
- /** Lazy-loaded TypeScript module — avoids bundling the 9MB compiler. */
4
- let _ts;
5
- async function loadTS() {
6
- if (!_ts)
7
- _ts = (await import('@typescript/typescript6')).default;
8
- return _ts;
9
- }
10
- function getTS() {
11
- if (!_ts)
12
- throw new Error('TypeScript not loaded — call an async parse function first');
13
- return _ts;
14
- }
15
- /** One checked program per project/configuration during a scan. */
16
- const typeProjects = new Map();
17
- const compilerProjects = new Map();
18
- /** What survives a run. */
19
- const sourceFiles = new Map();
20
- const retained = new Map();
21
- export function resetTypePrograms() {
22
- typeProjects.clear();
23
- compilerProjects.clear();
24
- }
25
- /** Drop what runs share. For a test that must prove a cold read. */
26
- export function forgetParsedSources() {
27
- sourceFiles.clear();
28
- retained.clear();
29
- }
30
- function keptHost(key, options) {
31
- const cached = retained.get(key);
32
- if (cached)
33
- return cached.host;
34
- const typescript = getTS();
35
- const base = typescript.createCompilerHost(options);
36
- const host = {
37
- ...base,
38
- getSourceFile(fileName, languageVersion, onError, shouldCreate) {
39
- const path = resolvePath(fileName);
40
- const mtime = statSync(path, { throwIfNoEntry: false })?.mtimeMs ?? -1;
41
- const cached = sourceFiles.get(path);
42
- if (cached && cached.mtime === mtime)
43
- return cached.file;
44
- const file = base.getSourceFile(fileName, languageVersion, onError, shouldCreate);
45
- if (file && mtime >= 0)
46
- sourceFiles.set(path, { mtime, file });
47
- return file;
48
- },
49
- };
50
- retained.set(key, { host, program: undefined });
51
- return host;
52
- }
53
- function builtProgram(key, roots, options) {
54
- const typescript = getTS();
55
- const host = keptHost(key, options);
56
- const program = typescript.createProgram({
57
- rootNames: [...roots], options, host, oldProgram: retained.get(key)?.program,
58
- });
59
- retained.set(key, { host, program });
60
- return program;
61
- }
62
- function compilerProjectOf(filePath, projectRoot) {
63
- const typescript = getTS();
64
- const absolute = resolvePath(filePath);
65
- const configPath = typescript.findConfigFile(dirname(absolute), typescript.sys.fileExists);
66
- if (configPath) {
67
- const key = `${configPath}:${projectRoot ?? ''}`;
68
- const cached = compilerProjects.get(key);
69
- if (cached)
70
- return cached;
71
- const read = typescript.readConfigFile(configPath, typescript.sys.readFile);
72
- if (read.error)
73
- throw new Error(typescript.flattenDiagnosticMessageText(read.error.messageText, '\n'));
74
- const parsed = typescript.parseJsonConfigFileContent(read.config, typescript.sys, dirname(configPath));
75
- const configured = {
76
- key,
77
- // Compiler options belong to the project; its entire include glob does not belong
78
- // to this scan. Each declaration inspected below becomes a root and TypeScript
79
- // follows its imports. Seeding the monorepo here made a one-file scan compile it all.
80
- roots: [],
81
- // Handlers may be authored or emitted as JavaScript. They still need to belong to
82
- // the checked program so constructor parsing does not fail on the first cold scan.
83
- options: { ...parsed.options, allowJs: true, noEmit: true },
84
- };
85
- compilerProjects.set(key, configured);
86
- return configured;
87
- }
88
- const key = projectRoot ?? dirname(absolute);
89
- const cached = compilerProjects.get(key);
90
- if (cached)
91
- return cached;
92
- const configured = {
93
- key,
94
- roots: [],
95
- options: {
96
- target: typescript.ScriptTarget.ES2022,
97
- module: typescript.ModuleKind.Node16,
98
- moduleResolution: typescript.ModuleResolutionKind.Node16,
99
- strict: true,
100
- skipLibCheck: true,
101
- allowJs: true,
102
- noEmit: true,
103
- },
104
- };
105
- compilerProjects.set(key, configured);
106
- return configured;
107
- }
108
- /** Declare every file a run will read, so one program covers it. */
109
- export async function seedTypeProgram(filePaths, projectRoot) {
110
- const typescript = await loadTS();
111
- const grouped = new Map();
112
- for (const filePath of filePaths) {
113
- const absolute = resolvePath(filePath);
114
- const configured = compilerProjectOf(absolute, projectRoot);
115
- const group = grouped.get(configured.key) ?? { options: configured.options, paths: [] };
116
- group.paths.push(absolute);
117
- grouped.set(configured.key, group);
118
- }
119
- for (const [key, { options, paths }] of grouped) {
120
- const roots = new Set(typeProjects.get(key)?.roots ?? []);
121
- for (const path of paths)
122
- roots.add(path);
123
- typeProjects.set(key, { roots, options, program: builtProgram(key, [...roots], options) });
124
- }
125
- }
126
- function checkedSourceOf(filePath, projectRoot) {
127
- const typescript = getTS();
128
- const absolute = resolvePath(filePath);
129
- const configured = compilerProjectOf(absolute, projectRoot);
130
- let project = typeProjects.get(configured.key);
131
- if (!project) {
132
- // `path.resolve` is variadic, so handing it directly to `map` also passed the
133
- // index and the whole roots array as path segments. A fixture without a warm scan
134
- // cache exposed that first-run-only failure.
135
- const roots = new Set(configured.roots.map((root) => resolvePath(root)));
136
- roots.add(absolute);
137
- const program = builtProgram(configured.key, [...roots], configured.options);
138
- project = { roots, options: configured.options, program };
139
- typeProjects.set(configured.key, project);
140
- }
141
- else if (!project.roots.has(absolute)) {
142
- project.roots.add(absolute);
143
- project.program = builtProgram(configured.key, [...project.roots], project.options);
144
- }
145
- const source = project.program.getSourceFile(absolute);
146
- if (!source)
147
- throw new Error(`TypeScript did not include '${absolute}' in its program.`);
148
- return { source, checker: project.program.getTypeChecker() };
149
- }
150
- /** A file, opened. Five places read and parsed one, each spelling the same two calls. */
151
- function sourceOf(filePath) {
152
- const ts = getTS();
153
- return ts.createSourceFile(filePath, readFileSync(filePath, 'utf-8'), ts.ScriptTarget.Latest, true);
154
- }
155
- /** One declared parameter — a constructor's and a method's are read the same way. */
156
- function parsedParam(param, source, checker) {
157
- const ts = getTS();
158
- const type = param.type ? parseTypeNode(param.type, source, checker) : { raw: 'unknown', name: 'unknown' };
159
- return {
160
- name: ts.isIdentifier(param.name) ? param.name.text : param.name.getText(source),
161
- type,
162
- // `user?: User` and `user: User | undefined` are the same declaration of
163
- // absence. A type alias may carry the latter, so only the checker can see it.
164
- optional: param.questionToken !== undefined || param.initializer !== undefined || type.undefined === true,
165
- };
166
- }
167
- /** Parse a TypeScript type node into a TypeRef. */
168
- function parseTypeNode(node, source, checker) {
169
- const ts = getTS();
170
- const raw = node.getText(source);
171
- if (checker) {
172
- // `Fact<T>` is deliberately transparent in TypeScript (`type Fact<T> = T`), because
173
- // a subscriber receives the payload itself. The checker erases that marker, while
174
- // the binding plan still needs it to distinguish a fact from an ordinary body.
175
- if (ts.isTypeReferenceNode(node) && ts.isIdentifier(node.typeName) && node.typeName.text === 'Fact') {
176
- return {
177
- raw,
178
- name: 'Fact',
179
- generics: node.typeArguments?.map((arg) => parseTypeNode(arg, source, checker)) ?? [],
180
- };
181
- }
182
- return parseCheckedType(checker.getTypeFromTypeNode(node), raw, checker);
183
- }
184
- // Union types — extract nullable, strip Promise
185
- if (ts.isUnionTypeNode(node)) {
186
- const nonNull = node.types.filter((t) => !(ts.isLiteralTypeNode(t) && t.literal.kind === ts.SyntaxKind.NullKeyword)
187
- && !(t.kind === ts.SyntaxKind.UndefinedKeyword)
188
- && !(t.kind === ts.SyntaxKind.VoidKeyword)
189
- && !(t.kind === ts.SyntaxKind.NullKeyword));
190
- const nullable = node.types.some((t) => (ts.isLiteralTypeNode(t) && t.literal.kind === ts.SyntaxKind.NullKeyword)
191
- || t.kind === ts.SyntaxKind.NullKeyword);
192
- const undefinable = node.types.some((t) => t.kind === ts.SyntaxKind.UndefinedKeyword || t.kind === ts.SyntaxKind.VoidKeyword);
193
- if (nonNull.length === 1) {
194
- const inner = parseTypeNode(nonNull[0], source);
195
- return { ...inner, nullable: nullable || inner.nullable, undefined: undefinable || inner.undefined, raw };
196
- }
197
- return { raw, name: raw, nullable, undefined: undefinable };
198
- }
199
- // Promise<T> — unwrap
200
- if (ts.isTypeReferenceNode(node)) {
201
- const typeName = node.typeName.getText(source);
202
- if (typeName === 'Promise' && node.typeArguments?.length === 1) {
203
- const inner = parseTypeNode(node.typeArguments[0], source);
204
- return { ...inner, promise: true, raw };
205
- }
206
- // Array<T>
207
- if (typeName === 'Array' && node.typeArguments?.length === 1) {
208
- const inner = parseTypeNode(node.typeArguments[0], source);
209
- return { ...inner, array: true, arrayDepth: (inner.arrayDepth ?? 0) + 1, raw };
210
- }
211
- // Generic type: Foo<Bar, Baz>
212
- if (node.typeArguments && node.typeArguments.length > 0) {
213
- const generics = node.typeArguments.map((arg) => parseTypeNode(arg, source));
214
- return { raw, name: typeName, generics };
215
- }
216
- // Simple type reference: Post, string, etc.
217
- return { raw, name: typeName };
218
- }
219
- // T[]
220
- if (ts.isArrayTypeNode(node)) {
221
- const inner = parseTypeNode(node.elementType, source);
222
- return { ...inner, array: true, arrayDepth: (inner.arrayDepth ?? 0) + 1, raw };
223
- }
224
- // Keyword types: string, number, boolean, void
225
- switch (node.kind) {
226
- case ts.SyntaxKind.StringKeyword: return { raw, name: 'string' };
227
- case ts.SyntaxKind.NumberKeyword: return { raw, name: 'number' };
228
- case ts.SyntaxKind.BooleanKeyword: return { raw, name: 'boolean' };
229
- case ts.SyntaxKind.VoidKeyword: return { raw, name: 'void', undefined: true };
230
- case ts.SyntaxKind.UndefinedKeyword: return { raw, name: 'undefined', undefined: true };
231
- case ts.SyntaxKind.NullKeyword: return { raw, name: 'null', nullable: true };
232
- case ts.SyntaxKind.AnyKeyword: return { raw, name: 'any' };
233
- case ts.SyntaxKind.UnknownKeyword: return { raw, name: 'unknown' };
234
- }
235
- // Object literal type: { title: string; limit: number }
236
- if (ts.isTypeLiteralNode(node)) {
237
- return { raw, name: raw };
238
- }
239
- // Fallback
240
- return { raw, name: raw };
241
- }
242
- function meaningfulSymbolName(type, checker) {
243
- const typescript = getTS();
244
- const symbol = type.aliasSymbol ?? type.getSymbol();
245
- if (symbol && symbol.name !== 'default' && !symbol.name.startsWith('__'))
246
- return symbol.name;
247
- for (const declaration of symbol?.declarations ?? []) {
248
- if ((typescript.isClassDeclaration(declaration)
249
- || typescript.isInterfaceDeclaration(declaration)
250
- || typescript.isTypeAliasDeclaration(declaration))
251
- && declaration.name)
252
- return declaration.name.text;
253
- }
254
- return checker.typeToString(type, undefined, typescript.TypeFormatFlags.NoTruncation);
255
- }
256
- /** Turn a checked TypeScript type into the small, serializable vocabulary the runtime reads. */
257
- function parseCheckedType(type, raw, checker, depth = 0) {
258
- const typescript = getTS();
259
- if (depth > 12)
260
- return { raw, name: checker.typeToString(type) };
261
- if (type.isUnion()) {
262
- const nullable = type.types.some((member) => (member.flags & typescript.TypeFlags.Null) !== 0);
263
- const undefinable = type.types.some((member) => (member.flags & (typescript.TypeFlags.Undefined | typescript.TypeFlags.Void)) !== 0);
264
- const members = type.types.filter((member) => (member.flags & (typescript.TypeFlags.Null | typescript.TypeFlags.Undefined | typescript.TypeFlags.Void)) === 0);
265
- // The checker represents the `boolean` keyword itself as `false | true`. Preserve
266
- // the primitive vocabulary consumed by binding and presenter metadata.
267
- if (members.length > 0
268
- && members.every((member) => (member.flags & typescript.TypeFlags.BooleanLiteral) !== 0)) {
269
- return { raw, name: 'boolean', nullable, undefined: undefinable };
270
- }
271
- if (members.length === 1) {
272
- const inner = parseCheckedType(members[0], raw, checker, depth + 1);
273
- return {
274
- ...inner,
275
- raw,
276
- nullable: nullable || inner.nullable,
277
- undefined: undefinable || inner.undefined,
278
- };
279
- }
280
- return {
281
- raw,
282
- name: members.map((member) => meaningfulSymbolName(member, checker)).join(' | ') || raw,
283
- nullable,
284
- undefined: undefinable,
285
- };
286
- }
287
- // Present at runtime in the supported compiler versions, but intentionally omitted
288
- // from TypeScript's public TypeChecker declaration.
289
- const promised = checker.getPromisedTypeOfPromise(type);
290
- if (promised)
291
- return { ...parseCheckedType(promised, raw, checker, depth + 1), raw, promise: true };
292
- if (checker.isArrayType(type)) {
293
- const [element] = checker.getTypeArguments(type);
294
- const inner = element ? parseCheckedType(element, raw, checker, depth + 1) : { raw, name: 'unknown' };
295
- return { ...inner, raw, array: true, arrayDepth: (inner.arrayDepth ?? 0) + 1 };
296
- }
297
- if ((type.flags & typescript.TypeFlags.StringLike) !== 0)
298
- return { raw, name: 'string' };
299
- if ((type.flags & typescript.TypeFlags.NumberLike) !== 0)
300
- return { raw, name: 'number' };
301
- if ((type.flags & typescript.TypeFlags.BooleanLike) !== 0)
302
- return { raw, name: 'boolean' };
303
- if ((type.flags & typescript.TypeFlags.Void) !== 0)
304
- return { raw, name: 'void', undefined: true };
305
- if ((type.flags & typescript.TypeFlags.Undefined) !== 0)
306
- return { raw, name: 'undefined', undefined: true };
307
- if ((type.flags & typescript.TypeFlags.Null) !== 0)
308
- return { raw, name: 'null', nullable: true };
309
- if ((type.flags & typescript.TypeFlags.Any) !== 0)
310
- return { raw, name: 'any' };
311
- if ((type.flags & typescript.TypeFlags.Unknown) !== 0)
312
- return { raw, name: 'unknown' };
313
- const reference = type;
314
- // A declared alias such as `Emit<PostPublished>` may reduce to a function or object
315
- // type, so it is no longer a TypeReference. The checker keeps its arguments beside
316
- // `aliasSymbol`; losing them turns DI keys into bare `Emit`/`Facade`.
317
- const args = type.aliasTypeArguments
318
- ?? checker.getTypeArguments(reference);
319
- return {
320
- raw,
321
- name: meaningfulSymbolName(type, checker),
322
- ...(args.length && { generics: args.map((arg) => parseCheckedType(arg, checker.typeToString(arg), checker, depth + 1)) }),
323
- };
324
- }
325
- // ── Module resolution ────────────────────────
326
- const TS_KEYWORDS = new Set([
327
- 'string', 'number', 'boolean', 'void', 'undefined', 'null', 'any', 'unknown',
328
- 'never', 'object', 'symbol', 'bigint',
329
- ]);
330
- /** Resolve an import specifier to an absolute file path. */
331
- function resolveSpecifier(specifier, fromFile, projectRoot) {
332
- // Relative import
333
- if (specifier.startsWith('.')) {
334
- const dir = dirname(fromFile);
335
- let resolved = resolvePath(dir, specifier);
336
- // .js → .ts
337
- if (resolved.endsWith('.js'))
338
- resolved = resolved.slice(0, -3) + '.ts';
339
- if (!resolved.endsWith('.ts'))
340
- resolved += '.ts';
341
- if (existsSync(resolved))
342
- return resolved;
343
- return undefined;
344
- }
345
- // Workspace package: @fougere/core → packages/core/src/index.ts
346
- const match = specifier.match(/^@fougere\/([^/]+)$/);
347
- if (match) {
348
- const pkgDir = join(projectRoot, 'packages', match[1], 'src');
349
- const indexPath = join(pkgDir, 'index.ts');
350
- if (existsSync(indexPath))
351
- return indexPath;
352
- }
353
- return undefined;
354
- }
355
- // ── Mixin / heritage parsing ─────────────────
356
- /** The class a returned expression carries, however it is wrapped. */
357
- function classInExpression(expr, depth = 0) {
358
- const ts = getTS();
359
- if (depth > 8)
360
- return undefined;
361
- if (ts.isClassExpression(expr))
362
- return expr;
363
- if (ts.isCallExpression(expr)) {
364
- for (const arg of expr.arguments) {
365
- const found = classInExpression(arg, depth + 1);
366
- if (found)
367
- return found;
368
- }
369
- return undefined;
370
- }
371
- if (ts.isAsExpression(expr) || ts.isSatisfiesExpression(expr) || ts.isParenthesizedExpression(expr)) {
372
- return classInExpression(expr.expression, depth + 1);
373
- }
374
- return undefined;
375
- }
376
- /** Find a class declaration inside a function (mixin pattern). */
377
- function findClassInFunction(source, functionName) {
378
- const ts = getTS();
379
- for (const stmt of source.statements) {
380
- if (!ts.isFunctionDeclaration(stmt))
381
- continue;
382
- if (stmt.name?.text !== functionName)
383
- continue;
384
- if (!stmt.body)
385
- continue;
386
- // Walk statements inside the function
387
- for (const inner of stmt.body.statements) {
388
- // return class CrudHandler { … }, or the same class behind a wrapper
389
- if (ts.isReturnStatement(inner) && inner.expression) {
390
- const found = classInExpression(inner.expression);
391
- if (found)
392
- return found;
393
- }
394
- // class CrudHandler { ... } (followed by return)
395
- if (ts.isClassDeclaration(inner))
396
- return inner;
397
- }
398
- }
399
- return undefined;
400
- }
401
- /**
402
- * Extract methods from a class node (no file reading — works on already-parsed AST).
403
- */
404
- function extractClassMethods(cls, source, skip, checker) {
405
- const ts = getTS();
406
- const results = [];
407
- for (const member of cls.members) {
408
- if (!ts.isMethodDeclaration(member))
409
- continue;
410
- if (!member.name || !ts.isIdentifier(member.name))
411
- continue;
412
- // `private`/`protected` is a statement about the surface, and the AST carries it —
413
- // it was read past. Every helper a handler names by intent (`mustOwn`, `readMany`,
414
- // `refuse`) became a callable op: measured on the bench, `list.readMany` executed
415
- // and `list.mayPublish` validated its argument. A door is what the author declares
416
- // public, and TypeScript already has the word for it. `#name` is private too, but
417
- // it is not an identifier, so it never reached here in the first place.
418
- if (member.modifiers?.some((m) => m.kind === ts.SyntaxKind.PrivateKeyword || m.kind === ts.SyntaxKind.ProtectedKeyword))
419
- continue;
420
- const name = member.name.text;
421
- if (skip.has(name))
422
- continue;
423
- const params = member.parameters.map((p) => parsedParam(p, source, checker));
424
- const returnType = member.type ? parseTypeNode(member.type, source, checker) : undefined;
425
- results.push({
426
- name, params, returnType,
427
- description: docSentenceOf(member, source),
428
- });
429
- }
430
- return results;
431
- }
432
- /** The first sentence of a member's doc comment, or nothing. */
433
- function docSentenceOf(member, source) {
434
- const ts = getTS();
435
- const ranges = ts.getLeadingCommentRanges(source.text, member.pos) ?? [];
436
- const block = ranges.filter((r) => source.text.slice(r.pos, r.pos + 3) === '/**').pop();
437
- if (!block)
438
- return undefined;
439
- const body = source.text
440
- .slice(block.pos + 3, block.end - 2)
441
- .split('\n')
442
- .map((line) => line.replace(/^\s*\*/, '').trim())
443
- .join(' ')
444
- .trim();
445
- const [sentence] = body.split(/(?<=\.)\s/);
446
- return sentence?.trim() || undefined;
447
- }
448
- /**
449
- * Parse inherited methods from a class's heritage clause.
450
- * Handles both `extends Crud(Entity)` (mixin) and `extends BaseClass` patterns.
451
- */
452
- /** Where a name used here is declared. */
453
- function declarationFileOf(node, checker) {
454
- const typescript = getTS();
455
- let symbol = checker.getSymbolAtLocation(node);
456
- if (!symbol)
457
- return undefined;
458
- if (symbol.flags & typescript.SymbolFlags.Alias)
459
- symbol = checker.getAliasedSymbol(symbol);
460
- return symbol.declarations?.[0]?.getSourceFile().fileName;
461
- }
462
- /** The methods a base class contributes, read from the INSTANTIATED type. */
463
- function inheritedFromBase(base, checker, skip) {
464
- const typescript = getTS();
465
- const results = [];
466
- for (const property of checker.getPropertiesOfType(checker.getTypeAtLocation(base))) {
467
- if (skip.has(property.name))
468
- continue;
469
- // `private`/`protected` is a statement about the surface, and the declaration carries
470
- // it. A door is what the author declares public.
471
- const declaration = property.declarations?.[0];
472
- if (declaration && typescript.canHaveModifiers(declaration)
473
- && typescript.getModifiers(declaration)?.some((m) => m.kind === typescript.SyntaxKind.PrivateKeyword
474
- || m.kind === typescript.SyntaxKind.ProtectedKeyword))
475
- continue;
476
- const signature = checker.getTypeOfSymbolAtLocation(property, base).getCallSignatures()[0];
477
- if (!signature)
478
- continue;
479
- const returned = signature.getReturnType();
480
- const sentence = typescript.displayPartsToString(property.getDocumentationComment(checker)).trim();
481
- results.push({
482
- name: property.name,
483
- params: signature.getParameters().map((parameter) => {
484
- const type = checker.getTypeOfSymbolAtLocation(parameter, base);
485
- return {
486
- name: parameter.name,
487
- type: parseCheckedType(type, checker.typeToString(type), checker),
488
- optional: (parameter.flags & typescript.SymbolFlags.Optional) !== 0,
489
- };
490
- }),
491
- returnType: parseCheckedType(returned, checker.typeToString(returned), checker),
492
- ...(sentence ? { description: sentence.split(/(?<=\.)\s/)[0] } : {}),
493
- });
494
- }
495
- return results;
496
- }
497
- function parseInheritedMethods(cls, source, checker, skip,
498
- /**
499
- * Base classes this pass could not open — an INSTALLED one, typically, whose source is not in
500
- * the workspace.
501
- */
502
- unresolved) {
503
- const ts = getTS();
504
- if (!cls.heritageClauses)
505
- return [];
506
- for (const clause of cls.heritageClauses) {
507
- if (clause.token !== ts.SyntaxKind.ExtendsKeyword)
508
- continue;
509
- for (const base of clause.types) {
510
- const fromType = inheritedFromBase(base, checker, skip);
511
- if (fromType.length > 0)
512
- return fromType;
513
- // A factory that ERASES its own type — `assertShape<unknown>(class …)`, `as unknown`
514
- // — leaves the checker with nothing to enumerate. The written class is still there,
515
- // so read it. This is the one case where what the author wrote beats what it means.
516
- const expression = base.expression;
517
- const declared = ts.isCallExpression(expression) && ts.isIdentifier(expression.expression)
518
- ? declarationFileOf(expression.expression, checker)
519
- : ts.isIdentifier(expression) ? declarationFileOf(expression, checker) : undefined;
520
- if (!declared) {
521
- unresolved.push(expression.getText(source));
522
- continue;
523
- }
524
- const declaredSource = sourceOf(declared);
525
- const written = ts.isCallExpression(expression) && ts.isIdentifier(expression.expression)
526
- ? findClassInFunction(declaredSource, expression.expression.text)
527
- : findDefaultClass(declaredSource);
528
- if (!written) {
529
- unresolved.push(expression.getText(source));
530
- continue;
531
- }
532
- return extractClassMethods(written, declaredSource, skip);
533
- }
534
- }
535
- return [];
536
- }
537
- // ── Class finding ────────────────────────────
538
- /** Find the default exported class in a source file. */
539
- function findDefaultClass(source) {
540
- const ts = getTS();
541
- for (const stmt of source.statements) {
542
- // export default class Foo { ... }
543
- if (ts.isClassDeclaration(stmt) && stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) && stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword)) {
544
- return stmt;
545
- }
546
- }
547
- // export default Foo (separate statement) — find the class it points to
548
- for (const stmt of source.statements) {
549
- if (ts.isExportAssignment(stmt) && !stmt.isExportEquals && ts.isIdentifier(stmt.expression)) {
550
- const name = stmt.expression.text;
551
- for (const s of source.statements) {
552
- if (ts.isClassDeclaration(s) && s.name?.text === name)
553
- return s;
554
- }
555
- }
556
- }
557
- return undefined;
558
- }
559
- /**
560
- * Every method a handler declares, its inherited ones included — the raw material of a
561
- * binding plan. With a `projectRoot`, the heritage clause is followed too.
562
- */
563
- export async function parseAllHandlerMethods(filePath, projectRoot) {
564
- await loadTS();
565
- return parseClassMethods(filePath, CONSTRUCTOR_ONLY, projectRoot);
566
- }
567
- /** Parse a presenter source file and extract all method signatures. */
568
- export async function parsePresenterMethods(filePath, projectRoot) {
569
- await loadTS();
570
- // No `projectRoot`, so no heritage pass and nothing to report: a presenter's
571
- // computed fields are its own methods.
572
- return parseClassMethods(filePath, CONSTRUCTOR_ONLY, undefined, projectRoot).methods;
573
- }
574
- /**
575
- * Parse constructor parameter types from a source file's default class.
576
- * Returns type names (e.g. ['PostStorage', 'Logger']) for DI resolution.
577
- */
578
- export async function parseConstructorParams(filePath, projectRoot) {
579
- const ts = await loadTS();
580
- const { source, checker } = checkedSourceOf(filePath, projectRoot);
581
- const cls = findDefaultClass(source);
582
- if (!cls)
583
- return [];
584
- const ctor = cls.members.find(ts.isConstructorDeclaration);
585
- return ctor ? ctor.parameters.map((p) => parsedParam(p, source, checker)) : [];
586
- }
587
- const CONSTRUCTOR_ONLY = new Set(['constructor']);
588
- function parseClassMethods(filePath, skip, heritageRoot, typeRoot = heritageRoot) {
589
- const unresolved = [];
590
- const { source, checker } = checkedSourceOf(filePath, typeRoot);
591
- const cls = findDefaultClass(source);
592
- if (!cls)
593
- return { methods: [], unresolvedHeritage: unresolved };
594
- const childMethods = extractClassMethods(cls, source, skip, checker);
595
- const childNames = new Set(childMethods.map((m) => m.name));
596
- // Parse inherited methods (if projectRoot is provided for resolution)
597
- if (heritageRoot) {
598
- const inherited = parseInheritedMethods(cls, source, checker, skip, unresolved);
599
- // Merge: child methods win over inherited
600
- const parentOnly = inherited
601
- .filter((m) => !childNames.has(m.name))
602
- .map((m) => ({ ...m, inherited: true }));
603
- return { methods: [...childMethods, ...parentOnly], unresolvedHeritage: unresolved };
604
- }
605
- return { methods: childMethods, unresolvedHeritage: unresolved };
606
- }
607
- //# sourceMappingURL=handler-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handler-parser.js","sourceRoot":"","sources":["../../src/scan/handler-parser.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/scan/result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,8CAA8C;AAC9C,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,EAAE,UAAU,GAAG,SAAS,CAAC;IACjC,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,gGAAgG;IAChG,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=result.js.map