@nocobase/app-plugin-foundation 0.1.0-beta.3 → 0.1.0-beta.5

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 (56) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +22 -0
  3. package/dist/client/locales/de-DE.js +1 -1
  4. package/dist/client/locales/de-DE.js.map +1 -1
  5. package/dist/client/locales/en-US.js +1 -1
  6. package/dist/client/locales/es-ES.js +1 -1
  7. package/dist/client/locales/es-ES.js.map +1 -1
  8. package/dist/client/locales/fr-FR.js +1 -1
  9. package/dist/client/locales/fr-FR.js.map +1 -1
  10. package/dist/client/locales/id-ID.js +1 -1
  11. package/dist/client/locales/id-ID.js.map +1 -1
  12. package/dist/client/locales/ja-JP.js +1 -1
  13. package/dist/client/locales/ja-JP.js.map +1 -1
  14. package/dist/client/locales/pt-BR.js +1 -1
  15. package/dist/client/locales/pt-BR.js.map +1 -1
  16. package/dist/client/locales/vi-VN.js +1 -1
  17. package/dist/client/locales/vi-VN.js.map +1 -1
  18. package/dist/client/locales/zh-CN.js +1 -1
  19. package/dist/client/locales/zh-TW.js +1 -1
  20. package/dist/client/locales/zh-TW.js.map +1 -1
  21. package/dist/server/api-evidence.d.ts +3 -1
  22. package/dist/server/api-evidence.d.ts.map +1 -1
  23. package/dist/server/api-evidence.js +370 -79
  24. package/dist/server/api-evidence.js.map +1 -1
  25. package/dist/server/endpoint-chain.d.ts +8 -0
  26. package/dist/server/endpoint-chain.d.ts.map +1 -0
  27. package/dist/server/endpoint-chain.js +56 -0
  28. package/dist/server/endpoint-chain.js.map +1 -0
  29. package/dist/server/handler-continuation.d.ts +6 -0
  30. package/dist/server/handler-continuation.d.ts.map +1 -0
  31. package/dist/server/handler-continuation.js +71 -0
  32. package/dist/server/handler-continuation.js.map +1 -0
  33. package/dist/server/module-sources.d.ts.map +1 -1
  34. package/dist/server/module-sources.js +44 -65
  35. package/dist/server/module-sources.js.map +1 -1
  36. package/dist/server/providers/foundation.d.ts.map +1 -1
  37. package/dist/server/providers/foundation.js +5 -1
  38. package/dist/server/providers/foundation.js.map +1 -1
  39. package/dist/server/route-evidence.d.ts +27 -0
  40. package/dist/server/route-evidence.d.ts.map +1 -0
  41. package/dist/server/route-evidence.js +478 -0
  42. package/dist/server/route-evidence.js.map +1 -0
  43. package/dist/server/source-aliases.d.ts +4 -0
  44. package/dist/server/source-aliases.d.ts.map +1 -0
  45. package/dist/server/source-aliases.js +123 -0
  46. package/dist/server/source-aliases.js.map +1 -0
  47. package/dist/server/source-evidence.d.ts +3 -1
  48. package/dist/server/source-evidence.d.ts.map +1 -1
  49. package/dist/server/source-evidence.js +34 -4
  50. package/dist/server/source-evidence.js.map +1 -1
  51. package/dist/server/static-values.d.ts +1 -0
  52. package/dist/server/static-values.d.ts.map +1 -1
  53. package/dist/server/static-values.js +8 -0
  54. package/dist/server/static-values.js.map +1 -1
  55. package/package.json +6 -6
  56. package/skills/nocobase-app-plugin-foundation/SKILL.md +20 -0
@@ -1,10 +1,23 @@
1
1
  import ts from 'typescript';
2
+ import { handlerContinuation, } from './handler-continuation.js';
2
3
  import { StaticValues } from './static-values.js';
3
4
  import { objectProperty, returned, REPOSITORY_ACTIONS, } from './request-evidence.js';
4
5
  /** Compose only routers reachable from the selected API exports, retaining method and handler boundaries. */
5
6
  export function apiDependencies(entry, sources, analysis, providers) {
6
7
  const endpoints = [];
7
- const roots = new Set();
8
+ const contributions = [];
9
+ const addRoot = (router, factory) => {
10
+ if (contributions.some((item) => 'router' in item &&
11
+ item.router === router &&
12
+ item.factory === factory))
13
+ return;
14
+ contributions.push({
15
+ router,
16
+ factory,
17
+ uncertain: factory ? returned(factory).length !== 1 : false,
18
+ });
19
+ };
20
+ const invokedFactories = new Set();
8
21
  const visited = new Set();
9
22
  const imported = (node, module, name) => (analysis.symbol(node)?.declarations ?? []).some((declaration) => {
10
23
  if (!ts.isImportSpecifier(declaration) ||
@@ -24,8 +37,12 @@ export function apiDependencies(entry, sources, analysis, providers) {
24
37
  imported(value.expression, 'hono', 'Hono'))
25
38
  return value;
26
39
  if (ts.isCallExpression(value) &&
27
- ts.isPropertyAccessExpression(value.expression))
28
- return identity(value.expression.expression, seen, bindings);
40
+ ts.isPropertyAccessExpression(value.expression)) {
41
+ const parent = identity(value.expression.expression, seen, bindings);
42
+ return parent && value.expression.name.text === 'basePath'
43
+ ? value
44
+ : parent;
45
+ }
29
46
  if (value !== node) {
30
47
  const result = identity(value, seen, bindings);
31
48
  if (result)
@@ -34,7 +51,7 @@ export function apiDependencies(entry, sources, analysis, providers) {
34
51
  }
35
52
  return undefined;
36
53
  };
37
- const repository = (call) => {
54
+ const repository = (call, factory) => {
38
55
  const option = call.arguments[0];
39
56
  for (const config of option ? analysis.values(option) : []) {
40
57
  if (!ts.isObjectLiteralExpression(config))
@@ -70,13 +87,17 @@ export function apiDependencies(entry, sources, analysis, providers) {
70
87
  if (!REPOSITORY_ACTIONS.has(key))
71
88
  continue;
72
89
  for (const exposureName of names)
73
- endpoints.push({
74
- path: `${exposureName.text}/${key}`,
75
- method: 'POST',
76
- providers: ['@nocobase/db'],
77
- ...(collectionName
78
- ? { collections: [collectionName] }
79
- : {}),
90
+ contributions.push({
91
+ factory,
92
+ endpoint: {
93
+ path: `${exposureName.text}/${key}`,
94
+ method: 'POST',
95
+ continuation: 'stop',
96
+ providers: ['@nocobase/db'],
97
+ ...(collectionName
98
+ ? { collections: [collectionName] }
99
+ : {}),
100
+ },
80
101
  });
81
102
  }
82
103
  }
@@ -84,30 +105,51 @@ export function apiDependencies(entry, sources, analysis, providers) {
84
105
  }
85
106
  }
86
107
  };
87
- const root = (node) => {
108
+ const root = (node, factory) => {
88
109
  if (visited.has(node))
89
110
  return;
90
111
  visited.add(node);
91
112
  for (const value of analysis.values(node)) {
92
113
  if (ts.isArrayLiteralExpression(value))
93
- value.elements.forEach(root);
94
- else if (ts.isFunctionLike(value))
95
- returned(value).forEach(root);
114
+ value.elements.forEach((child) => root(child, factory));
115
+ else if (ts.isFunctionLike(value)) {
116
+ returned(value).forEach((child) => root(child, value));
117
+ }
96
118
  else if (ts.isCallExpression(value)) {
97
119
  if (imported(value.expression, '@nocobase/app-server/router', 'defineRepositoryApiRoutes'))
98
- repository(value);
120
+ repository(value, factory);
99
121
  else if (imported(value.expression, '@nocobase/app-server/router', 'defineApiRoutes'))
100
- value.arguments.forEach(root);
122
+ value.arguments.forEach((child) => root(child, factory));
101
123
  else {
102
124
  const router = identity(value);
103
125
  if (router)
104
- roots.add(router);
126
+ addRoot(router, factory);
127
+ else
128
+ contributions.push({
129
+ factory,
130
+ endpoint: {
131
+ path: '/*',
132
+ method: 'ALL',
133
+ providers: [],
134
+ uncertain: true,
135
+ },
136
+ });
105
137
  }
106
138
  }
107
139
  else {
108
140
  const router = identity(value);
109
141
  if (router)
110
- roots.add(router);
142
+ addRoot(router, factory);
143
+ else
144
+ contributions.push({
145
+ factory,
146
+ endpoint: {
147
+ path: '/*',
148
+ method: 'ALL',
149
+ providers: [],
150
+ uncertain: true,
151
+ },
152
+ });
111
153
  }
112
154
  }
113
155
  };
@@ -118,77 +160,326 @@ export function apiDependencies(entry, sources, analysis, providers) {
118
160
  statement.modifiers?.some((item) => item.kind === ts.SyntaxKind.DefaultKeyword))
119
161
  root(statement);
120
162
  }
121
- const mounts = new Map();
122
- const paths = new Map();
123
- const bases = new Map();
124
- const selected = new Set(sources.flatMap((source) => [...source.nodes]));
125
- for (const source of sources) {
126
- const visit = (node, bindings = new Map(), active = new Set()) => {
127
- if (ts.isFunctionLike(node) && !selected.has(node))
128
- return;
129
- const literals = new StaticValues(analysis, bindings);
130
- if (ts.isCallExpression(node) &&
131
- !active.has(node) &&
132
- active.size < 32 &&
133
- node.arguments.some((argument) => identity(argument, new Set(), bindings))) {
134
- for (const fn of analysis.functions(node.expression)) {
135
- if (!('body' in fn) || !fn.body || active.has(fn))
136
- continue;
137
- const context = new Map(bindings);
138
- fn.parameters.forEach((parameter, index) => {
139
- const argument = node.arguments[index] ?? parameter.initializer;
140
- context.set(parameter, argument ? literals.values(argument) : []);
141
- });
142
- visit(fn.body, context, new Set(active).add(node).add(fn));
163
+ const join = (a, b) => '/' + [a, b].join('/').split('/').filter(Boolean).join('/');
164
+ const routers = new Map();
165
+ const state = (node, bindings) => {
166
+ const known = routers.get(node);
167
+ if (known)
168
+ return known;
169
+ let router = { base: '', entries: [] };
170
+ if (ts.isCallExpression(node) &&
171
+ ts.isPropertyAccessExpression(node.expression)) {
172
+ const parent = identity(node.expression.expression, new Set(), bindings);
173
+ const base = node.arguments[0] &&
174
+ new StaticValues(analysis, bindings).strings(node.arguments[0]);
175
+ if (parent) {
176
+ const original = state(parent, bindings);
177
+ router = {
178
+ base: base?.length === 1 ? join(original.base, base[0]) : original.base,
179
+ entries: original.entries,
180
+ uncertain: original.uncertain || base?.length !== 1,
181
+ };
182
+ }
183
+ }
184
+ routers.set(node, router);
185
+ return router;
186
+ };
187
+ const modules = new Map(sources.map((source) => [source.ast.fileName, source.ast]));
188
+ const initialized = new Set();
189
+ let visits = 0;
190
+ let exhausted = false;
191
+ const barrier = (router, method = 'ALL') => {
192
+ router.entries.push({
193
+ path: join(router.base, '*'),
194
+ method,
195
+ providers: [],
196
+ uncertain: true,
197
+ });
198
+ };
199
+ const visit = (node, bindings = new Map(), active = new Set(), uncertain = false) => {
200
+ if (++visits > 100_000 || active.size >= 32) {
201
+ exhausted = true;
202
+ return;
203
+ }
204
+ if (ts.isFunctionLike(node))
205
+ return;
206
+ if (ts.isTypeNode(node))
207
+ return;
208
+ if (ts.isSourceFile(node) || ts.isBlock(node)) {
209
+ let pendingExit = false;
210
+ for (const statement of node.statements) {
211
+ const exit = visit(statement, bindings, active, uncertain || pendingExit);
212
+ if (exit === 'unknown')
213
+ pendingExit = true;
214
+ else if (exit)
215
+ return pendingExit ? 'unknown' : exit;
216
+ }
217
+ return pendingExit ? 'unknown' : undefined;
218
+ }
219
+ if (ts.isReturnStatement(node) || ts.isThrowStatement(node)) {
220
+ if (node.expression)
221
+ visit(node.expression, bindings, active, uncertain);
222
+ return ts.isReturnStatement(node) ? 'return' : 'throw';
223
+ }
224
+ if (ts.isBreakStatement(node) || ts.isContinueStatement(node))
225
+ return node.label
226
+ ? 'unknown'
227
+ : ts.isBreakStatement(node)
228
+ ? 'break'
229
+ : 'continue';
230
+ if (ts.isClassDeclaration(node) || ts.isClassExpression(node)) {
231
+ // Defining a class does not run instance fields, constructors or methods.
232
+ for (const clause of node.heritageClauses ?? [])
233
+ if (clause.token === ts.SyntaxKind.ExtendsKeyword)
234
+ for (const type of clause.types)
235
+ visit(type.expression, bindings, active, true);
236
+ let exit;
237
+ for (const member of node.members) {
238
+ if (member.name && ts.isComputedPropertyName(member.name))
239
+ visit(member.name.expression, bindings, active, true);
240
+ if (ts.isClassStaticBlockDeclaration(member))
241
+ exit = visit(member.body, bindings, active, uncertain) ?? exit;
242
+ else if (ts.isPropertyDeclaration(member) &&
243
+ member.initializer &&
244
+ member.modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.StaticKeyword))
245
+ visit(member.initializer, bindings, active, uncertain || Boolean(node.heritageClauses?.length));
246
+ }
247
+ return exit;
248
+ }
249
+ if (ts.isNewExpression(node)) {
250
+ const router = identity(node, new Set(), bindings);
251
+ if (router)
252
+ state(router, bindings);
253
+ visit(node.expression, bindings, active, uncertain);
254
+ node.arguments?.forEach((argument) => visit(argument, bindings, active, uncertain));
255
+ const classes = analysis
256
+ .values(node.expression)
257
+ .filter((value) => ts.isClassDeclaration(value) || ts.isClassExpression(value));
258
+ for (const argument of node.arguments ?? []) {
259
+ const router = identity(argument, new Set(), bindings);
260
+ if (router)
261
+ barrier(state(router, bindings));
262
+ }
263
+ for (const value of classes) {
264
+ if (active.has(value)) {
265
+ exhausted = true;
266
+ continue;
267
+ }
268
+ const instanceActive = new Set(active).add(value);
269
+ if (value.heritageClauses?.length) {
270
+ // Inherited initialization is outside the supported construction subset.
271
+ for (const router of routers.values())
272
+ barrier(router);
273
+ }
274
+ // Instance initialization is recognized only as uncertain registration, without interpreting class construction.
275
+ for (const member of value.members) {
276
+ if (ts.isPropertyDeclaration(member) &&
277
+ member.initializer &&
278
+ !member.modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.StaticKeyword))
279
+ visit(member.initializer, bindings, instanceActive, true);
280
+ if (ts.isConstructorDeclaration(member) && member.body)
281
+ visit(member.body, bindings, instanceActive, true);
143
282
  }
144
283
  }
145
- if (ts.isCallExpression(node) &&
146
- ts.isPropertyAccessExpression(node.expression)) {
147
- const router = identity(node.expression.expression, new Set(), bindings);
148
- const first = node.arguments[0];
149
- const resolved = first ? literals.strings(first) : [];
150
- for (const path of router ? resolved : []) {
151
- if (!router)
152
- continue;
284
+ return;
285
+ }
286
+ const literals = new StaticValues(analysis, bindings);
287
+ if (ts.isForOfStatement(node)) {
288
+ const arrays = literals
289
+ .values(node.expression)
290
+ .filter(ts.isArrayLiteralExpression);
291
+ const declaration = ts.isVariableDeclarationList(node.initializer) &&
292
+ node.initializer.declarations[0];
293
+ if (arrays.length === 1 &&
294
+ arrays[0].elements.length <= 32 &&
295
+ declaration &&
296
+ !arrays[0].elements.some(ts.isSpreadElement)) {
297
+ let pendingExit = false;
298
+ for (const element of arrays[0].elements) {
299
+ const context = new Map(bindings).set(declaration, literals.values(element));
300
+ const exit = visit(node.statement, context, active, uncertain || pendingExit);
301
+ if (exit === 'break')
302
+ return pendingExit ? 'unknown' : undefined;
303
+ if (exit === 'return' || exit === 'throw')
304
+ return pendingExit ? 'unknown' : exit;
305
+ if (exit === 'unknown')
306
+ pendingExit = true;
307
+ }
308
+ return pendingExit ? 'unknown' : undefined;
309
+ }
310
+ return visit(node.statement, bindings, active, true)
311
+ ? 'unknown'
312
+ : undefined;
313
+ }
314
+ if (ts.isCallExpression(node)) {
315
+ // Evaluate fluent receivers before their outer registration. Handler functions are not registration code.
316
+ visit(node.expression, bindings, active, uncertain);
317
+ node.arguments.forEach((argument) => visit(argument, bindings, active, uncertain));
318
+ if (ts.isPropertyAccessExpression(node.expression)) {
319
+ const owner = identity(node.expression.expression, new Set(), bindings);
320
+ if (owner) {
321
+ const router = state(owner, bindings);
153
322
  const method = node.expression.name.text;
154
- if (method === 'basePath' && resolved.length === 1)
155
- bases.set(router, path);
323
+ const first = node.arguments[0];
324
+ const paths = first
325
+ ? literals.strings(first)
326
+ : method === 'use'
327
+ ? ['*']
328
+ : [];
329
+ if (method !== 'basePath' && router.uncertain) {
330
+ barrier(router);
331
+ return;
332
+ }
333
+ if (method === 'basePath')
334
+ state(node, bindings);
156
335
  else if (method === 'route' && node.arguments[1]) {
157
336
  const child = identity(node.arguments[1], new Set(), bindings);
158
- if (child)
159
- mounts.set(router, [
160
- ...(mounts.get(router) ?? []),
161
- { prefix: path, child },
162
- ]);
337
+ if (child) {
338
+ // Hono copies the child's currently registered routes at the mount call.
339
+ for (const prefix of paths)
340
+ for (const endpoint of [...state(child, bindings).entries])
341
+ router.entries.push({
342
+ ...endpoint,
343
+ path: join(join(router.base, prefix), endpoint.path),
344
+ uncertain: uncertain || endpoint.uncertain,
345
+ });
346
+ }
347
+ else
348
+ barrier(router);
349
+ if (!paths.length)
350
+ barrier(router);
163
351
  }
164
- else if (['get', 'post', 'put', 'patch', 'delete'].includes(method)) {
165
- paths.set(router, [
166
- ...(paths.get(router) ?? []),
167
- {
168
- path,
169
- method: method.toUpperCase(),
170
- providers: providers(node.getSourceFile().fileName, node.arguments.slice(1)),
171
- },
172
- ]);
352
+ else if ([
353
+ 'get',
354
+ 'post',
355
+ 'put',
356
+ 'patch',
357
+ 'delete',
358
+ 'options',
359
+ 'head',
360
+ 'all',
361
+ 'use',
362
+ ].includes(method)) {
363
+ const handlers = method === 'use' && !paths.length
364
+ ? node.arguments
365
+ : node.arguments.slice(1);
366
+ const expanded = handlers.flatMap((handler) => {
367
+ if (!ts.isSpreadElement(handler))
368
+ return [handler];
369
+ const values = literals.values(handler.expression);
370
+ return values.length === 1 &&
371
+ ts.isArrayLiteralExpression(values[0]) &&
372
+ values[0].elements.length <= 32 &&
373
+ !values[0].elements.some(ts.isSpreadElement)
374
+ ? [...values[0].elements]
375
+ : [handler];
376
+ });
377
+ const registeredPaths = method === 'use' && !paths.length ? ['*'] : paths;
378
+ if (!registeredPaths.length)
379
+ barrier(router, method.toUpperCase());
380
+ for (const path of registeredPaths)
381
+ for (const handler of expanded) {
382
+ router.entries.push({
383
+ path: join(router.base, path),
384
+ method: method === 'use' || method === 'all'
385
+ ? 'ALL'
386
+ : method.toUpperCase(),
387
+ providers: providers(node.getSourceFile().fileName, [
388
+ handler,
389
+ ]),
390
+ continuation: handlerContinuation(handler, analysis),
391
+ uncertain: uncertain ||
392
+ registeredPaths.length !== 1 ||
393
+ ts.isSpreadElement(handler),
394
+ });
395
+ }
173
396
  }
397
+ else if (method === 'on' || method === 'mount')
398
+ barrier(router);
399
+ return;
174
400
  }
175
401
  }
176
- ts.forEachChild(node, (child) => visit(child, bindings, active));
177
- };
178
- visit(source.ast);
179
- }
180
- const join = (a, b) => '/' + [a, b].join('/').split('/').filter(Boolean).join('/');
181
- const walk = (router, prefix, seen) => {
182
- if (seen.has(router))
402
+ if (imported(node.expression, '@nocobase/app-server/router', 'defineApiRoutes')) {
403
+ // The host calls exported router factories later, in contribution order.
404
+ }
405
+ else {
406
+ const functions = analysis.functions(node.expression);
407
+ const routerArguments = node.arguments.flatMap((argument) => {
408
+ const router = identity(argument, new Set(), bindings);
409
+ return router ? [router] : [];
410
+ });
411
+ if (!functions.length)
412
+ routerArguments.forEach((router) => barrier(state(router, bindings)));
413
+ for (const fn of functions) {
414
+ if (!('body' in fn) || !fn.body)
415
+ continue;
416
+ if (active.has(fn)) {
417
+ exhausted = true;
418
+ continue;
419
+ }
420
+ const context = new Map(bindings);
421
+ fn.parameters.forEach((parameter, index) => {
422
+ const argument = node.arguments[index] ?? parameter.initializer;
423
+ context.set(parameter, argument ? literals.values(argument) : []);
424
+ });
425
+ visit(fn.body, context, new Set(active).add(fn), uncertain);
426
+ }
427
+ }
428
+ return;
429
+ }
430
+ const conditional = ts.isIfStatement(node) ||
431
+ ts.isSwitchStatement(node) ||
432
+ ts.isIterationStatement(node, false) ||
433
+ ts.isTryStatement(node) ||
434
+ ts.isConditionalExpression(node) ||
435
+ (ts.isBinaryExpression(node) &&
436
+ [
437
+ ts.SyntaxKind.AmpersandAmpersandToken,
438
+ ts.SyntaxKind.BarBarToken,
439
+ ts.SyntaxKind.QuestionQuestionToken,
440
+ ].includes(node.operatorToken.kind));
441
+ let exit;
442
+ ts.forEachChild(node, (child) => {
443
+ const childExit = visit(child, bindings, active, uncertain || conditional);
444
+ if (childExit)
445
+ exit = conditional ? 'unknown' : childExit;
446
+ });
447
+ return exit;
448
+ };
449
+ const initialize = (ast) => {
450
+ if (initialized.has(ast.fileName))
183
451
  return;
184
- const visited = new Set(seen).add(router);
185
- const base = join(prefix, bases.get(router) ?? '');
186
- for (const endpoint of paths.get(router) ?? [])
187
- endpoints.push({ ...endpoint, path: join(base, endpoint.path) });
188
- for (const mount of mounts.get(router) ?? [])
189
- walk(mount.child, join(base, mount.prefix), visited);
452
+ initialized.add(ast.fileName);
453
+ // Package-local imported modules initialize before the importing module; local helpers run at their call site.
454
+ for (const statement of ast.statements) {
455
+ if (!ts.isImportDeclaration(statement) &&
456
+ !ts.isExportDeclaration(statement))
457
+ continue;
458
+ const dependency = analysis.importedSource(statement);
459
+ if (dependency && modules.has(dependency.fileName))
460
+ initialize(dependency);
461
+ }
462
+ visit(ast);
190
463
  };
191
- roots.forEach((router) => walk(router, '', new Set()));
464
+ initialize(entry);
465
+ for (const source of sources)
466
+ initialize(source.ast);
467
+ for (const contribution of contributions) {
468
+ const fn = contribution.factory;
469
+ if (fn && !invokedFactories.has(fn) && 'body' in fn && fn.body) {
470
+ invokedFactories.add(fn);
471
+ visit(fn.body);
472
+ }
473
+ if ('router' in contribution)
474
+ endpoints.push(...state(contribution.router, new Map()).entries.map((endpoint) => ({
475
+ ...endpoint,
476
+ uncertain: contribution.uncertain || endpoint.uncertain,
477
+ })));
478
+ else
479
+ endpoints.push(contribution.endpoint);
480
+ }
481
+ if (exhausted)
482
+ return [{ path: '/*', method: 'ALL', providers: [], uncertain: true }];
192
483
  return endpoints;
193
484
  }
194
485
  //# sourceMappingURL=api-evidence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-evidence.js","sourceRoot":"","sources":["../../server/api-evidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-evidence.js","sourceRoot":"","sources":["../../server/api-evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { EndpointEvidence } from './api-evidence.js';
2
+ import type { ApiReference } from './request-evidence.js';
3
+ /** Only handlers reached through a proven prefix contribute certain integration evidence. */
4
+ export declare function endpointChain(request: ApiReference, endpoints: readonly EndpointEvidence[]): {
5
+ endpoints: EndpointEvidence[];
6
+ complete: boolean;
7
+ };
8
+ //# sourceMappingURL=endpoint-chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-chain.d.ts","sourceRoot":"","sources":["../../server/endpoint-chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAoC1D,6FAA6F;AAC7F,wBAAgB,aAAa,CAC3B,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,SAAS,gBAAgB,EAAE,GACrC;IAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAetD"}