@fougere/compiler 0.10.0-alpha.0 → 0.12.0-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.
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/scan/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqG,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAmB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAiqB7M,+EAA+E;AAC/E,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,WAAiC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA4BhI;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,UAAU,CAAC,CA2CrB;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAC1B,KAAK,EAAE;IAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,GACvB,MAAM,EAAE,CAIV"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/scan/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqG,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAmB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAiuB7M,+EAA+E;AAC/E,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,WAAiC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA4BhI;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,UAAU,CAAC,CA2CrB;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAC1B,KAAK,EAAE;IAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,GACvB,MAAM,EAAE,CAIV"}
@@ -5,7 +5,9 @@ import { readdir, readFile } from 'node:fs/promises';
5
5
  import { existsSync } from 'node:fs';
6
6
  import { join, dirname, basename, resolve as resolvePath } from 'node:path';
7
7
  import { ANONYMOUS_SCHEMA_NAME } from '@fougere/schema';
8
- import { parseAllHandlerMethods, parseRefusals, parsePresenterMethods, parseConstructorParams, resetTypePrograms, seedTypeProgram, } from './handler-parser.js';
8
+ import { parseAllHandlerMethods, parseRefusals, parsePresenterMethods, parseConstructorParams, } from './handler-parser.js';
9
+ import { parseImplements } from './Implemented.js';
10
+ import { resetTypePrograms, seedTypeProgram } from './TypeProgram.js';
9
11
  import { lowerFirst } from '@fougere/schema';
10
12
  // FS
11
13
  /** What this scan run could not do. */
@@ -146,6 +148,7 @@ function tupleMembers(raw) {
146
148
  }
147
149
  /** These readings are semantic. */
148
150
  const ctorParamsOf = (filePath) => parseConstructorParams(filePath);
151
+ const implementsOf = (filePath) => parseImplements(filePath);
149
152
  const presenterMethodsOf = (filePath) => parsePresenterMethods(filePath);
150
153
  const handlerMethodsOf = (filePath, projectRoot) => parseAllHandlerMethods(filePath, projectRoot);
151
154
  async function toProvider(filePath) {
@@ -155,6 +158,25 @@ async function toProvider(filePath) {
155
158
  const name = ctor.name;
156
159
  const params = await ctorParamsOf(filePath);
157
160
  const deps = params.map((p) => depKeyOf(p.type));
161
+ const stated = await implementsOf(filePath);
162
+ // A port is answered by EXTENDING it: the boot reads the prototype chain, and `implements`
163
+ // leaves none. Said here rather than refused, because implementing a class is legal — only
164
+ // the author knows whether a port was meant. Warned, so `createApp` prints it too.
165
+ for (const { name: base } of stated.filter((one) => one.isClass)) {
166
+ record({
167
+ severity: 'warning',
168
+ code: 'port-implemented-not-extended',
169
+ filePath,
170
+ subject: name,
171
+ message: `${name} implements the class ${base}. A port is answered by EXTENDING it — `
172
+ + `\`implements\` leaves nothing at runtime, so the boot binds no port and the first `
173
+ + `dependency on ${base} answers '${base}' is not registered. Write `
174
+ + `\`class ${name} extends ${base}\`, or ${base} states an interface if its shape is all you wanted.`,
175
+ });
176
+ }
177
+ // `implements AsyncDisposable` — the language's own marker, which `App` already answers. It
178
+ // says two things at once: there is ONE of me in this frond's scope, and that scope closes me.
179
+ const kept = stated.some((one) => one.name === 'AsyncDisposable');
158
180
  // A repository inherits its constructor from `Repository(…)`, so the file declares none
159
181
  // and the scan reads no parameter. The mixin knows what it was built for and says so at
160
182
  // runtime — same escape as `Crud.__ops`, and the same reason: what a prefab fabricates,
@@ -174,7 +196,7 @@ async function toProvider(filePath) {
174
196
  // `name` beside `ctor`, and it IS the registration key — what `depKeyOf` returns, since
175
197
  // it reads the type as written. It used to be asked of `ctor.name` at boot, which held
176
198
  // until a bundler lowered a static field and renamed the declaration doing it.
177
- return { name, ctor, deps, filePath };
199
+ return { name, ctor, deps, filePath, ...(kept ? { kept: true } : {}) };
178
200
  }
179
201
  /**
180
202
  * An extension is recognized by its FORM: a module stating `up` or `down`.
@@ -227,8 +249,9 @@ function resolveSchema(type, moduleExports) {
227
249
  // `Partial<X>` in a signature IS the patch declaration (Crud.update) —
228
250
  // project it onto the schema view instead of dropping the wrapper, so
229
251
  // the facade validates in patch mode (absent field → untouched).
230
- if (type.name === 'Partial' && 'partial' in resolved && typeof resolved.partial === 'function') {
231
- return resolved.partial();
252
+ const narrowing = resolved.partial;
253
+ if (type.name === 'Partial' && typeof narrowing === 'function') {
254
+ return narrowing.call(resolved);
232
255
  }
233
256
  return resolved;
234
257
  }
@@ -240,6 +263,59 @@ function resolveSchema(type, moduleExports) {
240
263
  }
241
264
  return undefined;
242
265
  }
266
+ /**
267
+ * A convention may omit a declaration only when it has one answer.
268
+ *
269
+ * Only values the caller supplies through the BODY are candidates: a schema-typed collector,
270
+ * fact or context parameter is not input merely because it names an entity. Reading them all
271
+ * ignored provenance and took the first schema it met, so swapping two parameters silently
272
+ * changed the contract the façade validated the request against.
273
+ */
274
+ function inputOf(method, handlerName, filePath, collectorTypeNames, moduleExports, stated) {
275
+ const binding = computeBindingPlan(method.params, collectorTypeNames);
276
+ const candidates = method.params.flatMap((param, index) => {
277
+ if (binding[index]?.source.kind !== 'input')
278
+ return [];
279
+ const schema = resolveSchema(param.type, moduleExports);
280
+ return schema ? [{ param, schema }] : [];
281
+ });
282
+ if (candidates.length === 1)
283
+ return candidates[0].schema;
284
+ if (candidates.length < 2 || stated)
285
+ return undefined;
286
+ const subject = `${handlerName}.${method.name}`;
287
+ record({
288
+ severity: 'blocking',
289
+ code: 'input-contract-ambiguous',
290
+ filePath,
291
+ subject,
292
+ message: `Cannot infer the input contract for ${subject}: ${candidates.length} entity `
293
+ + `candidates — ${candidates.map(({ param }) => `${param.name}: ${param.type.raw}`).join('; ')}. `
294
+ + `Declare operations.${method.name}.input in frond.config.ts.`,
295
+ });
296
+ return undefined;
297
+ }
298
+ /**
299
+ * The contract carries the description; `signature` is the raw material it was read from.
300
+ * Leaving it only on the signature meant every consumer had to look one level down, and only
301
+ * the façade did.
302
+ */
303
+ function contractOf(method, read) {
304
+ const meta = {
305
+ signature: method,
306
+ ...(method.description && { description: method.description }),
307
+ ...(read.refused?.length ? { errors: read.refused } : {}),
308
+ };
309
+ const input = inputOf(method, read.handlerName, read.filePath, read.collectorTypeNames, read.moduleExports, read.stated);
310
+ if (input)
311
+ meta.input = input;
312
+ if (method.returnType) {
313
+ meta.output = resolveSchema(method.returnType, read.moduleExports);
314
+ // `output` is the shape of one row; this says how many rows come back.
315
+ meta.cardinality = cardinalityOf(method.returnType);
316
+ }
317
+ return meta;
318
+ }
243
319
  /** Parse ALL method signatures for unified binding. */
244
320
  async function inferOperations(filePath, handlerName, moduleExports, collectorTypeNames, explicitInputs, declared, projectRoot) {
245
321
  const map = new Map();
@@ -282,50 +358,11 @@ async function inferOperations(filePath, handlerName, moduleExports, collectorTy
282
358
  });
283
359
  }
284
360
  for (const method of parsed.methods) {
285
- // The contract is what carries the description; `signature` is the raw material it
286
- // was read from. Leaving it only on the signature meant every consumer had to know
287
- // to look one level down, and only the façade did.
288
- const refused = refusals.get(`${handlerName}.${method.name}`);
289
- const meta = {
290
- signature: method,
291
- ...(method.description && { description: method.description }),
292
- ...(refused?.length ? { errors: refused } : {}),
293
- };
294
- // A convention may omit a declaration only when it has one answer. Only values the
295
- // caller supplies through the body are candidates: a schema-typed collector, fact or
296
- // context parameter is not input merely because it names an entity. The old loop
297
- // ignored provenance and assigned the first schema it met, so swapping two parameters
298
- // silently changed the contract the façade used to validate the request body.
299
- const binding = computeBindingPlan(method.params, collectorTypeNames);
300
- const candidates = method.params.flatMap((param, index) => {
301
- if (binding[index]?.source.kind !== 'input')
302
- return [];
303
- const schema = resolveSchema(param.type, moduleExports);
304
- return schema ? [{ param, schema }] : [];
305
- });
306
- if (candidates.length === 1) {
307
- meta.input = candidates[0].schema;
308
- }
309
- else if (candidates.length > 1
310
- && declared[method.name]?.input === undefined
311
- && !explicitInputs.has(method.name)) {
312
- const subject = `${handlerName}.${method.name}`;
313
- record({
314
- severity: 'blocking',
315
- code: 'input-contract-ambiguous',
316
- filePath,
317
- subject,
318
- message: `Cannot infer the input contract for ${subject}: ${candidates.length} entity `
319
- + `candidates — ${candidates.map(({ param }) => `${param.name}: ${param.type.raw}`).join('; ')}. `
320
- + `Declare operations.${method.name}.input in frond.config.ts.`,
321
- });
322
- }
323
- if (method.returnType) {
324
- meta.output = resolveSchema(method.returnType, moduleExports);
325
- // `output` is the shape of one row; this says how many rows come back.
326
- meta.cardinality = cardinalityOf(method.returnType);
327
- }
328
- map.set(method.name, meta);
361
+ map.set(method.name, contractOf(method, {
362
+ handlerName, filePath, moduleExports, collectorTypeNames,
363
+ refused: refusals.get(`${handlerName}.${method.name}`),
364
+ stated: declared[method.name]?.input !== undefined || explicitInputs.has(method.name),
365
+ }));
329
366
  }
330
367
  return map;
331
368
  }
@@ -448,7 +485,7 @@ async function toCollectorEntry(filePath) {
448
485
  * Recognized by its FORM: a class in `middlewares/` that declares `around`. The scope is
449
486
  * the frond's own unless `frond.config.ts` widened it, which is why the config comes first.
450
487
  */
451
- async function toMiddlewareEntry(filePath, scopes) {
488
+ async function toMiddlewareEntry(filePath) {
452
489
  const ctor = await loadClass(filePath);
453
490
  const prototype = ctor.prototype;
454
491
  if (typeof prototype?.around !== 'function')
@@ -457,11 +494,39 @@ async function toMiddlewareEntry(filePath, scopes) {
457
494
  return {
458
495
  name: ctor.name,
459
496
  ctor,
460
- scope: scopes?.[ctor.name] ?? 'frond',
461
497
  deps: params.map((p) => depKeyOf(p.type)),
462
498
  filePath,
463
499
  };
464
500
  }
501
+ /** `frond.config.ts` takes precedence; failing that, `@expose`, which defaults to exposed. */
502
+ function markExposed(entities, handlers, exposed) {
503
+ if (exposed) {
504
+ const stated = new Set(exposed);
505
+ for (const entity of entities)
506
+ entity.exposed = stated.has(entity.entityClass.name);
507
+ for (const handler of handlers)
508
+ handler.exposed = stated.has(handler.ctor.name);
509
+ return;
510
+ }
511
+ for (const entity of entities)
512
+ entity.exposed = entity.entityClass.__exposed !== false;
513
+ for (const handler of handlers)
514
+ handler.exposed = handler.ctor.__exposed !== false;
515
+ }
516
+ /**
517
+ * The only thing that needs flattening is the handler CLASS, which becomes its name — that is the
518
+ * DI key. Everything else travels verbatim, so a slot added to `OperationOverride` reaches its
519
+ * reader without a stop here; enumerating keys by hand is what used to drop whatever was added
520
+ * last, the same invariant `cloneField` holds one layer down.
521
+ */
522
+ function overridesOf(operations) {
523
+ if (!operations)
524
+ return undefined;
525
+ return Object.fromEntries(Object.entries(operations).map(([opName, { handler, ...rest }]) => [
526
+ opName,
527
+ { ...rest, handlerName: handler?.name },
528
+ ]));
529
+ }
465
530
  async function scanFrond(frondPath, name, source, conventions, projectRoot) {
466
531
  const { entities: entitiesDir, handlers: handlersDir, presenters: presentersDir, collectors: collectorsDir, seeds: seedsDir, middlewares: middlewaresDir, } = conventions.dirs;
467
532
  /** A convention directory, read by whoever knows the shape it holds. */
@@ -494,38 +559,9 @@ async function scanFrond(frondPath, name, source, conventions, projectRoot) {
494
559
  }
495
560
  const presenters = await collect(presentersDir, toPresenterEntry);
496
561
  const seeds = await collect(seedsDir, toSeedEntry);
497
- const middlewares = await collect(middlewaresDir, (f) => toMiddlewareEntry(f, frondConfig?.middlewares));
498
- // Mark exposed entries: frond.config.ts takes precedence, then @expose decorator
499
- if (frondConfig?.expose) {
500
- const exposeSet = new Set(frondConfig.expose);
501
- for (const e of entities) {
502
- e.exposed = exposeSet.has(e.entityClass.name);
503
- }
504
- for (const h of handlers) {
505
- h.exposed = exposeSet.has(h.ctor.name);
506
- }
507
- }
508
- else {
509
- // Fallback: check @expose decorator, default to true (expose everything unless explicitly hidden)
510
- for (const e of entities) {
511
- e.exposed = e.entityClass.__exposed !== false;
512
- }
513
- for (const h of handlers) {
514
- h.exposed = h.ctor.__exposed !== false;
515
- }
516
- }
517
- // Flatten per-op config overrides: the only thing that needs flattening is the handler
518
- // CLASS, which becomes its name (that is the DI key). Everything else — the surface keys
519
- // AND the contract keys (`input`, `binding`) — travels verbatim, so a slot added to
520
- // OperationOverride reaches its reader without a stop here. Enumerating keys by hand is
521
- // what used to silently drop whatever was added last (the same invariant `cloneField`
522
- // holds one layer down).
523
- const operationsOverrides = frondConfig?.operations
524
- ? Object.fromEntries(Object.entries(frondConfig.operations).map(([opName, { handler, ...rest }]) => [
525
- opName,
526
- { ...rest, handlerName: handler?.name },
527
- ]))
528
- : undefined;
562
+ const middlewares = await collect(middlewaresDir, (f) => toMiddlewareEntry(f));
563
+ markExposed(entities, handlers, frondConfig?.expose);
564
+ const operationsOverrides = overridesOf(frondConfig?.operations);
529
565
  return {
530
566
  name,
531
567
  source,
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/scan/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/scan/scanner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fougere/compiler",
3
- "version": "0.10.0-alpha.0",
3
+ "version": "0.12.0-alpha.0",
4
4
  "description": "The scan: Fougere reading a project's source to produce the descriptors core boots from. Needs a filesystem and a TypeScript program.",
5
5
  "keywords": [
6
6
  "fougere",
@@ -33,14 +33,14 @@
33
33
  "@typescript/typescript6": "^6.0.2"
34
34
  },
35
35
  "peerDependencies": {
36
- "@fougere/core": "^0.10.0-alpha.0",
37
- "@fougere/container": "^0.10.0-alpha.0"
36
+ "@fougere/core": "^0.12.0-alpha.0",
37
+ "@fougere/container": "^0.12.0-alpha.0"
38
38
  },
39
39
  "devDependencies": {
40
40
  "vitest": "^4.1.0",
41
- "@fougere/core": "0.10.0-alpha.0",
42
- "@fougere/schema": "0.10.0-alpha.0",
43
- "@fougere/container": "0.10.0-alpha.0"
41
+ "@fougere/core": "0.12.0-alpha.0",
42
+ "@fougere/schema": "0.12.0-alpha.0",
43
+ "@fougere/container": "0.12.0-alpha.0"
44
44
  },
45
45
  "publishConfig": {
46
46
  "access": "public"
package/src/boot.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Logger, applyConfig, createApp, type App, type CreateAppOptions, type Extension, type FougereConfig, type Transport } from '@fougere/core';
2
- import { loadConfig } from '@fougere/core/node';
2
+ import { loadConfig, remotesOf, statedModules } from '@fougere/core/node';
3
3
  import { scanProject } from './scan/scanner.js';
4
4
 
5
5
  import type { Container } from '@fougere/container';
@@ -9,9 +9,14 @@ interface BootOptions {
9
9
  root?: string;
10
10
  /** Override config (merged with fougere.config.ts). */
11
11
  config?: Partial<FougereConfig>;
12
- /** Container factory. Required. */
13
- createContainer: () => Container;
14
- /** Only boot these fronds (by name). Absent = all. */
12
+ /** The container to resolve through. Absent, core builds its own. */
13
+ createContainer?: () => Container;
14
+ /**
15
+ * Boot only these fronds, by name — absent, every one found. Not `fronds:`, which says what
16
+ * an app is MADE of: this narrows the same list to what one process carries.
17
+ */
18
+ only?: string[];
19
+ /** @deprecated The name `only:` now carries. */
15
20
  fronds?: string[];
16
21
  /**
17
22
  * Remote fronds — label → address. A declared remote wins over local
@@ -64,16 +69,27 @@ export async function boot(options: BootOptions): Promise<App> {
64
69
  log.info('database initialized');
65
70
  }
66
71
 
72
+ // What the config names by module — imported here, because core resolves no specifier.
73
+ const stated = await statedModules(config.fronds);
74
+
67
75
  log.debug('creating app (scan + container)');
68
76
  const app = await createApp({
77
+ ...(stated.fronds.length > 0 ? { fronds: stated.fronds } : {}),
69
78
  // boot() lives on the Node entry, so boot() is what reads the disk. `createApp` is
70
79
  // handed the answer and reaches for nothing.
71
- scan: await scanProject(root, options.fronds, config.conventions),
80
+ scan: await scanProject(root, options.only ?? options.fronds, config.conventions),
72
81
  createContainer: options.createContainer,
73
82
  storageFactory: dbSetup?.storageFactory,
74
83
  db: dbSetup?.db,
75
84
  auth: config.auth,
76
- remotes: options.remotes,
85
+ // The tree's string leaves say the same thing `remotes:` does, and this boot read
86
+ // neither of them from the file until now — a project stating its topology got a
87
+ // process that believed every frond was local.
88
+ remotes: options.remotes ?? remotesOf(config),
89
+ // Who inherits code from whom — handed over whole, because a refusal names where an
90
+ // entry sits in the tree.
91
+ under: config.fronds,
92
+ narrowed: (options.only ?? options.fronds) !== undefined,
77
93
  ports: config.ports,
78
94
  // Read from the config for the same reason `ports` is, one line up: it is a fact the
79
95
  // project states, not one the caller passes. Absent here, `serveRest` and
@@ -87,7 +103,7 @@ export async function boot(options: BootOptions): Promise<App> {
87
103
  // Its own gesture, handed over whole. The ORDER — tables, then rows, then whatever this
88
104
  // host takes on — is `createApp`'s, and was written out by four hosts before.
89
105
  migrate: dbSetup?.migrate,
90
- extensions: options.extensions ?? [],
106
+ extensions: [...stated.extensions, ...(options.extensions ?? [])],
91
107
  onEmit: options.onEmit,
92
108
  remoteTransport: options.remoteTransport,
93
109
  });
@@ -0,0 +1,41 @@
1
+ /** What a scanned class declares it implements. */
2
+ import { loadTS, checkedSourceOf, findDefaultClass } from './TypeProgram.js';
3
+
4
+ /**
5
+ * What a scanned class says it IMPLEMENTS, and whether each name is a class.
6
+ *
7
+ * A class is the interesting case: `implements` is erased, so `Object.getPrototypeOf(ctor).name`
8
+ * is empty and the boot binds no port. An interface is the ordinary one — and one of them,
9
+ * `AsyncDisposable`, is how a provider says its scope keeps it and closes it.
10
+ */
11
+ export async function parseImplements(filePath: string, projectRoot?: string): Promise<Implemented[]> {
12
+ const ts = await loadTS();
13
+ const { source, checker } = checkedSourceOf(filePath, projectRoot);
14
+ const cls = findDefaultClass(source);
15
+ if (!cls?.heritageClauses) return [];
16
+
17
+ const found: Implemented[] = [];
18
+ for (const clause of cls.heritageClauses) {
19
+ if (clause.token !== ts.SyntaxKind.ImplementsKeyword) continue;
20
+
21
+ for (const base of clause.types) {
22
+ if (!ts.isIdentifier(base.expression)) continue;
23
+
24
+ let symbol = checker.getSymbolAtLocation(base.expression);
25
+ if (symbol && symbol.flags & ts.SymbolFlags.Alias) symbol = checker.getAliasedSymbol(symbol);
26
+
27
+ found.push({
28
+ name: base.expression.text,
29
+ isClass: symbol?.declarations?.some((one) => ts.isClassDeclaration(one)) ?? false,
30
+ });
31
+ }
32
+ }
33
+
34
+ return found;
35
+ }
36
+
37
+ /** One `implements` clause, and what the checker says its name is. */
38
+ export interface Implemented {
39
+ name: string;
40
+ isClass: boolean;
41
+ }