@relkit/compiler 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/dist/config-loader-deployment.d.ts +7 -0
  4. package/dist/config-loader-deployment.d.ts.map +1 -0
  5. package/dist/config-loader-deployment.js +36 -0
  6. package/dist/config-loader-deployment.js.map +1 -0
  7. package/dist/config-loader-runtime.d.ts +30 -0
  8. package/dist/config-loader-runtime.d.ts.map +1 -0
  9. package/dist/config-loader-runtime.js +105 -0
  10. package/dist/config-loader-runtime.js.map +1 -0
  11. package/dist/config-loader-types.d.ts +107 -0
  12. package/dist/config-loader-types.d.ts.map +1 -0
  13. package/dist/config-loader-types.js +37 -0
  14. package/dist/config-loader-types.js.map +1 -0
  15. package/dist/config-loader-utils.d.ts +10 -0
  16. package/dist/config-loader-utils.d.ts.map +1 -0
  17. package/dist/config-loader-utils.js +88 -0
  18. package/dist/config-loader-utils.js.map +1 -0
  19. package/dist/config-loader.d.ts +12 -0
  20. package/dist/config-loader.d.ts.map +1 -0
  21. package/dist/config-loader.js +89 -0
  22. package/dist/config-loader.js.map +1 -0
  23. package/dist/context-registry.d.ts +7 -0
  24. package/dist/context-registry.d.ts.map +1 -0
  25. package/dist/context-registry.js +55 -0
  26. package/dist/context-registry.js.map +1 -0
  27. package/dist/conventions.d.ts +32 -0
  28. package/dist/conventions.d.ts.map +1 -0
  29. package/dist/conventions.js +125 -0
  30. package/dist/conventions.js.map +1 -0
  31. package/dist/discovery/ast-prefilter-utils.d.ts +4 -0
  32. package/dist/discovery/ast-prefilter-utils.d.ts.map +1 -0
  33. package/dist/discovery/ast-prefilter-utils.js +186 -0
  34. package/dist/discovery/ast-prefilter-utils.js.map +1 -0
  35. package/dist/discovery/ast-prefilter.d.ts +36 -0
  36. package/dist/discovery/ast-prefilter.d.ts.map +1 -0
  37. package/dist/discovery/ast-prefilter.js +33 -0
  38. package/dist/discovery/ast-prefilter.js.map +1 -0
  39. package/dist/discovery/data-model-isolation.d.ts +8 -0
  40. package/dist/discovery/data-model-isolation.d.ts.map +1 -0
  41. package/dist/discovery/data-model-isolation.js +52 -0
  42. package/dist/discovery/data-model-isolation.js.map +1 -0
  43. package/dist/discovery/evaluator-child-utils.d.ts +4 -0
  44. package/dist/discovery/evaluator-child-utils.d.ts.map +1 -0
  45. package/dist/discovery/evaluator-child-utils.js +48 -0
  46. package/dist/discovery/evaluator-child-utils.js.map +1 -0
  47. package/dist/discovery/evaluator-child.d.ts +2 -0
  48. package/dist/discovery/evaluator-child.d.ts.map +1 -0
  49. package/dist/discovery/evaluator-child.js +139 -0
  50. package/dist/discovery/evaluator-child.js.map +1 -0
  51. package/dist/discovery/evaluator-detector-files.d.ts +9 -0
  52. package/dist/discovery/evaluator-detector-files.d.ts.map +1 -0
  53. package/dist/discovery/evaluator-detector-files.js +105 -0
  54. package/dist/discovery/evaluator-detector-files.js.map +1 -0
  55. package/dist/discovery/evaluator-detector-network.d.ts +6 -0
  56. package/dist/discovery/evaluator-detector-network.d.ts.map +1 -0
  57. package/dist/discovery/evaluator-detector-network.js +109 -0
  58. package/dist/discovery/evaluator-detector-network.js.map +1 -0
  59. package/dist/discovery/evaluator-detector-timers.d.ts +9 -0
  60. package/dist/discovery/evaluator-detector-timers.d.ts.map +1 -0
  61. package/dist/discovery/evaluator-detector-timers.js +105 -0
  62. package/dist/discovery/evaluator-detector-timers.js.map +1 -0
  63. package/dist/discovery/evaluator-detectors.d.ts +18 -0
  64. package/dist/discovery/evaluator-detectors.d.ts.map +1 -0
  65. package/dist/discovery/evaluator-detectors.js +54 -0
  66. package/dist/discovery/evaluator-detectors.js.map +1 -0
  67. package/dist/discovery/evaluator-protocol.d.ts +94 -0
  68. package/dist/discovery/evaluator-protocol.d.ts.map +1 -0
  69. package/dist/discovery/evaluator-protocol.js +89 -0
  70. package/dist/discovery/evaluator-protocol.js.map +1 -0
  71. package/dist/discovery/evaluator-request.d.ts +18 -0
  72. package/dist/discovery/evaluator-request.d.ts.map +1 -0
  73. package/dist/discovery/evaluator-request.js +49 -0
  74. package/dist/discovery/evaluator-request.js.map +1 -0
  75. package/dist/discovery/evaluator-snapshot.d.ts +12 -0
  76. package/dist/discovery/evaluator-snapshot.d.ts.map +1 -0
  77. package/dist/discovery/evaluator-snapshot.js +87 -0
  78. package/dist/discovery/evaluator-snapshot.js.map +1 -0
  79. package/dist/discovery/evaluator.d.ts +8 -0
  80. package/dist/discovery/evaluator.d.ts.map +1 -0
  81. package/dist/discovery/evaluator.js +123 -0
  82. package/dist/discovery/evaluator.js.map +1 -0
  83. package/dist/discovery/extract.d.ts +21 -0
  84. package/dist/discovery/extract.d.ts.map +1 -0
  85. package/dist/discovery/extract.js +60 -0
  86. package/dist/discovery/extract.js.map +1 -0
  87. package/dist/discovery/source-facts-factory.d.ts +5 -0
  88. package/dist/discovery/source-facts-factory.d.ts.map +1 -0
  89. package/dist/discovery/source-facts-factory.js +109 -0
  90. package/dist/discovery/source-facts-factory.js.map +1 -0
  91. package/dist/discovery/source-facts-types.d.ts +52 -0
  92. package/dist/discovery/source-facts-types.d.ts.map +1 -0
  93. package/dist/discovery/source-facts-types.js +2 -0
  94. package/dist/discovery/source-facts-types.js.map +1 -0
  95. package/dist/discovery/source-facts.d.ts +6 -0
  96. package/dist/discovery/source-facts.d.ts.map +1 -0
  97. package/dist/discovery/source-facts.js +141 -0
  98. package/dist/discovery/source-facts.js.map +1 -0
  99. package/dist/discovery/source-id-route.d.ts +3 -0
  100. package/dist/discovery/source-id-route.d.ts.map +1 -0
  101. package/dist/discovery/source-id-route.js +61 -0
  102. package/dist/discovery/source-id-route.js.map +1 -0
  103. package/dist/discovery/source-id.d.ts +36 -0
  104. package/dist/discovery/source-id.d.ts.map +1 -0
  105. package/dist/discovery/source-id.js +146 -0
  106. package/dist/discovery/source-id.js.map +1 -0
  107. package/dist/discovery/source-map-utils.d.ts +10 -0
  108. package/dist/discovery/source-map-utils.d.ts.map +1 -0
  109. package/dist/discovery/source-map-utils.js +29 -0
  110. package/dist/discovery/source-map-utils.js.map +1 -0
  111. package/dist/discovery/source-map.d.ts +26 -0
  112. package/dist/discovery/source-map.d.ts.map +1 -0
  113. package/dist/discovery/source-map.js +119 -0
  114. package/dist/discovery/source-map.js.map +1 -0
  115. package/dist/event-registry.d.ts +9 -0
  116. package/dist/event-registry.d.ts.map +1 -0
  117. package/dist/event-registry.js +43 -0
  118. package/dist/event-registry.js.map +1 -0
  119. package/dist/generate-manifest-event.d.ts +5 -0
  120. package/dist/generate-manifest-event.d.ts.map +1 -0
  121. package/dist/generate-manifest-event.js +81 -0
  122. package/dist/generate-manifest-event.js.map +1 -0
  123. package/dist/generate-manifest-expressions.d.ts +12 -0
  124. package/dist/generate-manifest-expressions.d.ts.map +1 -0
  125. package/dist/generate-manifest-expressions.js +141 -0
  126. package/dist/generate-manifest-expressions.js.map +1 -0
  127. package/dist/generate-manifest-format.d.ts +4 -0
  128. package/dist/generate-manifest-format.d.ts.map +1 -0
  129. package/dist/generate-manifest-format.js +74 -0
  130. package/dist/generate-manifest-format.js.map +1 -0
  131. package/dist/generate-manifest-identities.d.ts +6 -0
  132. package/dist/generate-manifest-identities.d.ts.map +1 -0
  133. package/dist/generate-manifest-identities.js +115 -0
  134. package/dist/generate-manifest-identities.js.map +1 -0
  135. package/dist/generate-manifest-utils.d.ts +23 -0
  136. package/dist/generate-manifest-utils.d.ts.map +1 -0
  137. package/dist/generate-manifest-utils.js +125 -0
  138. package/dist/generate-manifest-utils.js.map +1 -0
  139. package/dist/generate-manifest.d.ts +30 -0
  140. package/dist/generate-manifest.d.ts.map +1 -0
  141. package/dist/generate-manifest.js +89 -0
  142. package/dist/generate-manifest.js.map +1 -0
  143. package/dist/generated-artifacts.d.ts +69 -0
  144. package/dist/generated-artifacts.d.ts.map +1 -0
  145. package/dist/generated-artifacts.js +124 -0
  146. package/dist/generated-artifacts.js.map +1 -0
  147. package/dist/index.d.ts +17 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +17 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/middleware-coverage.d.ts +12 -0
  152. package/dist/middleware-coverage.d.ts.map +1 -0
  153. package/dist/middleware-coverage.js +90 -0
  154. package/dist/middleware-coverage.js.map +1 -0
  155. package/dist/normalize-compat.d.ts +26 -0
  156. package/dist/normalize-compat.d.ts.map +1 -0
  157. package/dist/normalize-compat.js +155 -0
  158. package/dist/normalize-compat.js.map +1 -0
  159. package/dist/normalize-event-listener.d.ts +11 -0
  160. package/dist/normalize-event-listener.d.ts.map +1 -0
  161. package/dist/normalize-event-listener.js +123 -0
  162. package/dist/normalize-event-listener.js.map +1 -0
  163. package/dist/normalize-event-validation.d.ts +4 -0
  164. package/dist/normalize-event-validation.d.ts.map +1 -0
  165. package/dist/normalize-event-validation.js +137 -0
  166. package/dist/normalize-event-validation.js.map +1 -0
  167. package/dist/normalize-generated-function.d.ts +10 -0
  168. package/dist/normalize-generated-function.d.ts.map +1 -0
  169. package/dist/normalize-generated-function.js +20 -0
  170. package/dist/normalize-generated-function.js.map +1 -0
  171. package/dist/normalize-graph-app.d.ts +8 -0
  172. package/dist/normalize-graph-app.d.ts.map +1 -0
  173. package/dist/normalize-graph-app.js +71 -0
  174. package/dist/normalize-graph-app.js.map +1 -0
  175. package/dist/normalize-graph-config.d.ts +5 -0
  176. package/dist/normalize-graph-config.d.ts.map +1 -0
  177. package/dist/normalize-graph-config.js +97 -0
  178. package/dist/normalize-graph-config.js.map +1 -0
  179. package/dist/normalize-graph-edges.d.ts +3 -0
  180. package/dist/normalize-graph-edges.d.ts.map +1 -0
  181. package/dist/normalize-graph-edges.js +139 -0
  182. package/dist/normalize-graph-edges.js.map +1 -0
  183. package/dist/normalize-graph-nodes.d.ts +3 -0
  184. package/dist/normalize-graph-nodes.d.ts.map +1 -0
  185. package/dist/normalize-graph-nodes.js +184 -0
  186. package/dist/normalize-graph-nodes.js.map +1 -0
  187. package/dist/normalize-graph-providers.d.ts +4 -0
  188. package/dist/normalize-graph-providers.d.ts.map +1 -0
  189. package/dist/normalize-graph-providers.js +63 -0
  190. package/dist/normalize-graph-providers.js.map +1 -0
  191. package/dist/normalize-graph-services.d.ts +2 -0
  192. package/dist/normalize-graph-services.d.ts.map +1 -0
  193. package/dist/normalize-graph-services.js +23 -0
  194. package/dist/normalize-graph-services.js.map +1 -0
  195. package/dist/normalize-graph-types.d.ts +26 -0
  196. package/dist/normalize-graph-types.d.ts.map +1 -0
  197. package/dist/normalize-graph-types.js +2 -0
  198. package/dist/normalize-graph-types.js.map +1 -0
  199. package/dist/normalize-graph-utils.d.ts +4 -0
  200. package/dist/normalize-graph-utils.d.ts.map +1 -0
  201. package/dist/normalize-graph-utils.js +29 -0
  202. package/dist/normalize-graph-utils.js.map +1 -0
  203. package/dist/normalize-graph.d.ts +4 -0
  204. package/dist/normalize-graph.d.ts.map +1 -0
  205. package/dist/normalize-graph.js +21 -0
  206. package/dist/normalize-graph.js.map +1 -0
  207. package/dist/normalize-http-validation.d.ts +8 -0
  208. package/dist/normalize-http-validation.d.ts.map +1 -0
  209. package/dist/normalize-http-validation.js +86 -0
  210. package/dist/normalize-http-validation.js.map +1 -0
  211. package/dist/normalize-identity-rewrite.d.ts +3 -0
  212. package/dist/normalize-identity-rewrite.d.ts.map +1 -0
  213. package/dist/normalize-identity-rewrite.js +30 -0
  214. package/dist/normalize-identity-rewrite.js.map +1 -0
  215. package/dist/normalize-job-validation.d.ts +3 -0
  216. package/dist/normalize-job-validation.d.ts.map +1 -0
  217. package/dist/normalize-job-validation.js +31 -0
  218. package/dist/normalize-job-validation.js.map +1 -0
  219. package/dist/normalize-model-selection.d.ts +17 -0
  220. package/dist/normalize-model-selection.d.ts.map +1 -0
  221. package/dist/normalize-model-selection.js +103 -0
  222. package/dist/normalize-model-selection.js.map +1 -0
  223. package/dist/normalize-output.d.ts +4 -0
  224. package/dist/normalize-output.d.ts.map +1 -0
  225. package/dist/normalize-output.js +42 -0
  226. package/dist/normalize-output.js.map +1 -0
  227. package/dist/normalize-pass-core.d.ts +9 -0
  228. package/dist/normalize-pass-core.d.ts.map +1 -0
  229. package/dist/normalize-pass-core.js +113 -0
  230. package/dist/normalize-pass-core.js.map +1 -0
  231. package/dist/normalize-pass-semantic.d.ts +11 -0
  232. package/dist/normalize-pass-semantic.d.ts.map +1 -0
  233. package/dist/normalize-pass-semantic.js +149 -0
  234. package/dist/normalize-pass-semantic.js.map +1 -0
  235. package/dist/normalize-pass-utils.d.ts +12 -0
  236. package/dist/normalize-pass-utils.d.ts.map +1 -0
  237. package/dist/normalize-pass-utils.js +116 -0
  238. package/dist/normalize-pass-utils.js.map +1 -0
  239. package/dist/normalize-passes.d.ts +3 -0
  240. package/dist/normalize-passes.d.ts.map +1 -0
  241. package/dist/normalize-passes.js +3 -0
  242. package/dist/normalize-passes.js.map +1 -0
  243. package/dist/normalize-provider-validation.d.ts +4 -0
  244. package/dist/normalize-provider-validation.d.ts.map +1 -0
  245. package/dist/normalize-provider-validation.js +34 -0
  246. package/dist/normalize-provider-validation.js.map +1 -0
  247. package/dist/normalize-public-types.d.ts +13 -0
  248. package/dist/normalize-public-types.d.ts.map +1 -0
  249. package/dist/normalize-public-types.js +2 -0
  250. package/dist/normalize-public-types.js.map +1 -0
  251. package/dist/normalize-rate-limit.d.ts +4 -0
  252. package/dist/normalize-rate-limit.d.ts.map +1 -0
  253. package/dist/normalize-rate-limit.js +35 -0
  254. package/dist/normalize-rate-limit.js.map +1 -0
  255. package/dist/normalize-reference-index.d.ts +6 -0
  256. package/dist/normalize-reference-index.d.ts.map +1 -0
  257. package/dist/normalize-reference-index.js +82 -0
  258. package/dist/normalize-reference-index.js.map +1 -0
  259. package/dist/normalize-reference-validation.d.ts +4 -0
  260. package/dist/normalize-reference-validation.d.ts.map +1 -0
  261. package/dist/normalize-reference-validation.js +88 -0
  262. package/dist/normalize-reference-validation.js.map +1 -0
  263. package/dist/normalize-route-file.d.ts +4 -0
  264. package/dist/normalize-route-file.d.ts.map +1 -0
  265. package/dist/normalize-route-file.js +41 -0
  266. package/dist/normalize-route-file.js.map +1 -0
  267. package/dist/normalize-route-inference.d.ts +4 -0
  268. package/dist/normalize-route-inference.d.ts.map +1 -0
  269. package/dist/normalize-route-inference.js +117 -0
  270. package/dist/normalize-route-inference.js.map +1 -0
  271. package/dist/normalize-schema-validation.d.ts +3 -0
  272. package/dist/normalize-schema-validation.d.ts.map +1 -0
  273. package/dist/normalize-schema-validation.js +50 -0
  274. package/dist/normalize-schema-validation.js.map +1 -0
  275. package/dist/normalize-source-identities.d.ts +3 -0
  276. package/dist/normalize-source-identities.d.ts.map +1 -0
  277. package/dist/normalize-source-identities.js +158 -0
  278. package/dist/normalize-source-identities.js.map +1 -0
  279. package/dist/normalize-types.d.ts +130 -0
  280. package/dist/normalize-types.d.ts.map +1 -0
  281. package/dist/normalize-types.js +99 -0
  282. package/dist/normalize-types.js.map +1 -0
  283. package/dist/normalize-utils.d.ts +24 -0
  284. package/dist/normalize-utils.d.ts.map +1 -0
  285. package/dist/normalize-utils.js +139 -0
  286. package/dist/normalize-utils.js.map +1 -0
  287. package/dist/normalize.d.ts +9 -0
  288. package/dist/normalize.d.ts.map +1 -0
  289. package/dist/normalize.js +106 -0
  290. package/dist/normalize.js.map +1 -0
  291. package/dist/project-typecheck.d.ts +4 -0
  292. package/dist/project-typecheck.d.ts.map +1 -0
  293. package/dist/project-typecheck.js +49 -0
  294. package/dist/project-typecheck.js.map +1 -0
  295. package/dist/route-file.d.ts +29 -0
  296. package/dist/route-file.d.ts.map +1 -0
  297. package/dist/route-file.js +97 -0
  298. package/dist/route-file.js.map +1 -0
  299. package/dist/watch.d.ts +27 -0
  300. package/dist/watch.d.ts.map +1 -0
  301. package/dist/watch.js +117 -0
  302. package/dist/watch.js.map +1 -0
  303. package/package.json +45 -0
@@ -0,0 +1,89 @@
1
+ import { GENERATOR_VERSION, MANIFEST_VERSION } from "@relkit/contracts";
2
+ import { createDiagnostic, sortDiagnostics } from "@relkit/diagnostics";
3
+ import { hashGraph } from "@relkit/graph";
4
+ import { descriptorsOf, importBindings, collectModules, providerFactoryKeys, uniqueById, generatedFunctionDescriptors, } from "./generate-manifest-utils.js";
5
+ import { applicationExpressionFor, descriptorExpressionsFor, functionExpressionsFor, functionTargetExpressionsFor, hookExpressionsFor, middlewareExpressionsFor, transformExpressionsFor, } from "./generate-manifest-expressions.js";
6
+ import { renderManifest } from "./generate-manifest-format.js";
7
+ import { identityBindingStatements } from "./generate-manifest-identities.js";
8
+ export const MANIFEST_CODES = Object.freeze({
9
+ handler: "RELKIT_MANIFEST_HANDLER_MISSING",
10
+ middleware: "RELKIT_MANIFEST_MIDDLEWARE_MISSING",
11
+ transform: "RELKIT_MANIFEST_TRANSFORM_MISSING",
12
+ mismatch: "RELKIT_GRAPH_MANIFEST_MISMATCH",
13
+ });
14
+ /** Generates the executable manifest source after graph and semantic validation. */
15
+ export function generateManifest(input) {
16
+ const existing = input.diagnostics ?? [];
17
+ if (existing.some((diagnostic) => diagnostic.severity === "error")) {
18
+ return result("", [], false);
19
+ }
20
+ const diagnostics = [];
21
+ if (input.graph !== undefined &&
22
+ hashGraph(input.graph, pathOptions(input.projectRoot)) !== input.graphHash) {
23
+ diagnostics.push(createDiagnostic({
24
+ code: MANIFEST_CODES.mismatch,
25
+ severity: "error",
26
+ message: "Runtime manifest graph hash does not match the canonical graph.",
27
+ }, pathOptions(input.projectRoot)));
28
+ }
29
+ const functions = [
30
+ ...descriptorsOf(input.descriptors, "function"),
31
+ ...generatedFunctionDescriptors(input.descriptors),
32
+ ];
33
+ const application = descriptorsOf(input.descriptors, "app")[0];
34
+ const middleware = descriptorsOf(input.middleware ?? input.descriptors, "middleware");
35
+ const transforms = descriptorsOf(input.transforms ?? input.descriptors, "transform");
36
+ const agents = descriptorsOf(input.descriptors, "agent");
37
+ const tools = descriptorsOf(input.descriptors, "tool");
38
+ const routes = descriptorsOf(input.descriptors, "route");
39
+ const constants = descriptorsOf(input.descriptors, "constants");
40
+ const prompts = descriptorsOf(input.descriptors, "prompt");
41
+ const dataModel = descriptorsOf(input.descriptors, "data-model")[0];
42
+ const services = descriptorsOf(input.descriptors, "service");
43
+ const events = descriptorsOf(input.descriptors, "event");
44
+ const functionById = uniqueById(functions, diagnostics);
45
+ const modules = collectModules(functions, middleware, transforms, input, application, [
46
+ ...input.descriptors,
47
+ ...agents,
48
+ ...tools,
49
+ ...events,
50
+ ]);
51
+ const bindings = importBindings(modules);
52
+ const identityBindings = identityBindingStatements(input.descriptors, bindings, input);
53
+ const functionExpressions = functionExpressionsFor(functions, functionById, bindings, input, diagnostics);
54
+ const targetExpressions = functionTargetExpressionsFor(functions, bindings, input);
55
+ const applicationExpression = applicationExpressionFor(application, bindings, input);
56
+ const agentExpressions = descriptorExpressionsFor(agents, bindings, input);
57
+ const toolExpressions = descriptorExpressionsFor(tools, bindings, input);
58
+ const routeExpressions = descriptorExpressionsFor(routes, bindings, input);
59
+ const constantExpressions = descriptorExpressionsFor(constants, bindings, input);
60
+ const promptExpressionsById = descriptorExpressionsFor(prompts, bindings, input);
61
+ const dataModelExpression = dataModel === undefined
62
+ ? undefined
63
+ : descriptorExpressionsFor([dataModel], bindings, input).get(dataModel.id);
64
+ const promptExpressions = new Map(prompts.flatMap((descriptor) => {
65
+ const expression = promptExpressionsById.get(descriptor.id);
66
+ return expression === undefined ? [] : [[descriptor.exportName, expression]];
67
+ }));
68
+ const serviceExpressions = descriptorExpressionsFor(services, bindings, input);
69
+ const transformExpressions = transformExpressionsFor(transforms, bindings, input, diagnostics);
70
+ const middlewareExpressions = middlewareExpressionsFor(middleware, bindings, input, diagnostics);
71
+ const hookExpressions = hookExpressionsFor([...functions, ...tools], bindings, input);
72
+ if (diagnostics.some((diagnostic) => diagnostic.severity === "error")) {
73
+ return result("", diagnostics, false);
74
+ }
75
+ return result(renderManifest(input, bindings, functionExpressions, targetExpressions, middlewareExpressions, hookExpressions, transformExpressions, providerFactoryKeys(input.descriptors), applicationExpression, agentExpressions, toolExpressions, routeExpressions, constantExpressions, promptExpressions, dataModelExpression, serviceExpressions, identityBindings), diagnostics, true);
76
+ }
77
+ function result(source, diagnostics, activatable) {
78
+ return Object.freeze({
79
+ source,
80
+ diagnostics: Object.freeze([...sortDiagnostics(diagnostics)]),
81
+ activatable,
82
+ });
83
+ }
84
+ export const MANIFEST_CONTRACT_VERSION = MANIFEST_VERSION;
85
+ export const MANIFEST_GENERATOR_VERSION = GENERATOR_VERSION;
86
+ function pathOptions(projectRoot) {
87
+ return projectRoot === undefined ? {} : { projectRoot };
88
+ }
89
+ //# sourceMappingURL=generate-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-manifest.js","sourceRoot":"","sources":["../src/generate-manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import type { Diagnostic } from "@relkit/diagnostics";
2
+ import type { GeneratedOutputs, NormalizedGraph } from "./normalize-types.js";
3
+ export declare const GENERATED_ARTIFACT_FILES: Readonly<{
4
+ readonly graph: "application.graph.json";
5
+ readonly manifest: "runtime.manifest.ts";
6
+ readonly diagnostics: "diagnostics.json";
7
+ readonly contract: "contract.ts";
8
+ readonly clientContract: "client-contract.json";
9
+ }>;
10
+ export declare const GENERATED_ARTIFACT_VERSIONS: Readonly<{
11
+ readonly graph: 5;
12
+ readonly manifest: 5;
13
+ readonly diagnostics: 2;
14
+ readonly generator: 2;
15
+ }>;
16
+ export declare const GENERATED_EXTENSION_VERSIONS: Readonly<{
17
+ readonly openapi: Readonly<{
18
+ fileName: "openapi.json";
19
+ version: 1;
20
+ }>;
21
+ readonly client: Readonly<{
22
+ fileName: "client.ts";
23
+ version: 1;
24
+ }>;
25
+ readonly deploymentPlan: Readonly<{
26
+ fileName: "deployment.plan.json";
27
+ version: 1;
28
+ }>;
29
+ }>;
30
+ export type GeneratedExtensionKind = keyof typeof GENERATED_EXTENSION_VERSIONS;
31
+ /** A future generator's versioned artifact input. Deployment is opt-in by passing it. */
32
+ export interface GeneratedOutputExtension {
33
+ readonly kind: GeneratedExtensionKind;
34
+ readonly version: number;
35
+ readonly content: string;
36
+ }
37
+ export interface GeneratedArtifact {
38
+ readonly fileName: string;
39
+ readonly content: string;
40
+ readonly version: number;
41
+ }
42
+ export interface ArtifactWriteResult {
43
+ readonly fileName: string;
44
+ readonly path: string;
45
+ readonly changed: boolean;
46
+ readonly bytes: number;
47
+ }
48
+ export interface GeneratedArtifactsWriteOptions {
49
+ readonly directory: string;
50
+ readonly extensions?: readonly GeneratedOutputExtension[];
51
+ }
52
+ export interface GeneratedArtifactsWriteReport {
53
+ readonly writes: readonly ArtifactWriteResult[];
54
+ readonly changed: boolean;
55
+ }
56
+ /** Builds the three compiler-owned artifacts without adding time or process metadata. */
57
+ export declare function generatedArtifacts(outputs: GeneratedOutputs): readonly GeneratedArtifact[];
58
+ /** Creates the future OpenAPI/client/deployment extension seam with its pinned version. */
59
+ export declare function createGeneratedOutputExtension(kind: GeneratedExtensionKind, content: string): GeneratedOutputExtension;
60
+ /** Writes changed bytes only; the unchanged path is never opened for writing. */
61
+ export declare function writeIfChanged(filePath: string, content: string): Promise<ArtifactWriteResult>;
62
+ /** Writes compiler artifacts plus content-aware OpenAPI/client and explicit extensions. */
63
+ export declare function writeGeneratedArtifacts(outputs: GeneratedOutputs, options: GeneratedArtifactsWriteOptions): Promise<GeneratedArtifactsWriteReport>;
64
+ export interface GeneratedOutputExtensionContext {
65
+ readonly graph: NormalizedGraph;
66
+ readonly graphHash: string;
67
+ readonly diagnostics: readonly Diagnostic[];
68
+ }
69
+ //# sourceMappingURL=generated-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-artifacts.d.ts","sourceRoot":"","sources":["../src/generated-artifacts.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9E,eAAO,MAAM,wBAAwB;;;;;;EAM1B,CAAC;AAEZ,eAAO,MAAM,2BAA2B;;;;;EAK7B,CAAC;AAEZ,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;EAI9B,CAAC;AAEZ,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,4BAA4B,CAAC;AAE/E,yFAAyF;AACzF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;CAC3D;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,iBAAiB,EAAE,CAgB1F;AAED,2FAA2F;AAC3F,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE,MAAM,GACd,wBAAwB,CAG1B;AAED,iFAAiF;AACjF,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,CAAC,CAwB9B;AAED,2FAA2F;AAC3F,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,6BAA6B,CAAC,CAkCxC;AAiCD,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;CAC7C"}
@@ -0,0 +1,124 @@
1
+ import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
2
+ import { basename, dirname, join } from "node:path";
3
+ import { CONTRACT_VERSION, GENERATOR_VERSION, GRAPH_VERSION, MANIFEST_VERSION, } from "@relkit/contracts";
4
+ export const GENERATED_ARTIFACT_FILES = Object.freeze({
5
+ graph: "application.graph.json",
6
+ manifest: "runtime.manifest.ts",
7
+ diagnostics: "diagnostics.json",
8
+ contract: "contract.ts",
9
+ clientContract: "client-contract.json",
10
+ });
11
+ export const GENERATED_ARTIFACT_VERSIONS = Object.freeze({
12
+ graph: GRAPH_VERSION,
13
+ manifest: MANIFEST_VERSION,
14
+ diagnostics: CONTRACT_VERSION,
15
+ generator: GENERATOR_VERSION,
16
+ });
17
+ export const GENERATED_EXTENSION_VERSIONS = Object.freeze({
18
+ openapi: Object.freeze({ fileName: "openapi.json", version: 1 }),
19
+ client: Object.freeze({ fileName: "client.ts", version: 1 }),
20
+ deploymentPlan: Object.freeze({ fileName: "deployment.plan.json", version: 1 }),
21
+ });
22
+ /** Builds the three compiler-owned artifacts without adding time or process metadata. */
23
+ export function generatedArtifacts(outputs) {
24
+ return Object.freeze([
25
+ artifact(GENERATED_ARTIFACT_FILES.graph, outputs.graph, GENERATED_ARTIFACT_VERSIONS.graph),
26
+ artifact(GENERATED_ARTIFACT_FILES.manifest, outputs.manifest, GENERATED_ARTIFACT_VERSIONS.manifest),
27
+ artifact(GENERATED_ARTIFACT_FILES.diagnostics, outputs.diagnostics, GENERATED_ARTIFACT_VERSIONS.diagnostics),
28
+ artifact(GENERATED_ARTIFACT_FILES.contract, outputs.contract, CONTRACT_VERSION),
29
+ artifact(GENERATED_ARTIFACT_FILES.clientContract, outputs.clientContract, CONTRACT_VERSION),
30
+ ]);
31
+ }
32
+ /** Creates the future OpenAPI/client/deployment extension seam with its pinned version. */
33
+ export function createGeneratedOutputExtension(kind, content) {
34
+ if (typeof content !== "string")
35
+ throw new TypeError("Generated artifact content must be text.");
36
+ return Object.freeze({ kind, version: GENERATED_EXTENSION_VERSIONS[kind].version, content });
37
+ }
38
+ /** Writes changed bytes only; the unchanged path is never opened for writing. */
39
+ export async function writeIfChanged(filePath, content) {
40
+ const next = Buffer.from(content, "utf8");
41
+ let unchanged = false;
42
+ try {
43
+ unchanged = (await readFile(filePath)).equals(next);
44
+ }
45
+ catch (error) {
46
+ if (!isMissingFile(error))
47
+ throw error;
48
+ }
49
+ if (!unchanged) {
50
+ await mkdir(dirname(filePath), { recursive: true });
51
+ const temporary = `${filePath}.${process.pid}.${crypto.randomUUID()}.tmp`;
52
+ try {
53
+ await writeFile(temporary, next, { flag: "wx" });
54
+ await rename(temporary, filePath);
55
+ }
56
+ finally {
57
+ await rm(temporary, { force: true });
58
+ }
59
+ }
60
+ return Object.freeze({
61
+ fileName: basename(filePath),
62
+ path: filePath,
63
+ changed: !unchanged,
64
+ bytes: next.byteLength,
65
+ });
66
+ }
67
+ /** Writes compiler artifacts plus content-aware OpenAPI/client and explicit extensions. */
68
+ export async function writeGeneratedArtifacts(outputs, options) {
69
+ const explicitExtensions = options.extensions ?? [];
70
+ const extensionKinds = new Set();
71
+ for (const extension of explicitExtensions) {
72
+ if (extensionKinds.has(extension.kind)) {
73
+ throw new TypeError(`Generated ${extension.kind} extension was supplied more than once.`);
74
+ }
75
+ extensionKinds.add(extension.kind);
76
+ }
77
+ const contentExtensions = (await Promise.all(["openapi", "client"].map(async (kind) => {
78
+ if (extensionKinds.has(kind))
79
+ return undefined;
80
+ const content = outputs[kind];
81
+ const filePath = join(options.directory, GENERATED_EXTENSION_VERSIONS[kind].fileName);
82
+ if (content === "" && !(await fileExists(filePath)))
83
+ return undefined;
84
+ return createGeneratedOutputExtension(kind, content);
85
+ }))).filter((extension) => extension !== undefined);
86
+ const artifacts = [
87
+ ...generatedArtifacts(outputs),
88
+ ...contentExtensions.map(extensionArtifact),
89
+ ...explicitExtensions.map(extensionArtifact),
90
+ ].sort((left, right) => left.fileName.localeCompare(right.fileName));
91
+ const results = await Promise.all(artifacts.map((entry) => writeIfChanged(join(options.directory, entry.fileName), entry.content)));
92
+ return Object.freeze({
93
+ writes: Object.freeze(results),
94
+ changed: results.some((result) => result.changed),
95
+ });
96
+ }
97
+ function artifact(fileName, content, version) {
98
+ return Object.freeze({ fileName, content, version });
99
+ }
100
+ function extensionArtifact(extension) {
101
+ const expected = GENERATED_EXTENSION_VERSIONS[extension.kind];
102
+ if (extension.version !== expected.version) {
103
+ throw new TypeError(`Generated ${extension.kind} version ${extension.version} is unsupported; expected ${expected.version}.`);
104
+ }
105
+ if (typeof extension.content !== "string") {
106
+ throw new TypeError(`Generated ${extension.kind} content must be text.`);
107
+ }
108
+ return artifact(expected.fileName, extension.content, extension.version);
109
+ }
110
+ function isMissingFile(error) {
111
+ return error instanceof Error && "code" in error && error.code === "ENOENT";
112
+ }
113
+ async function fileExists(filePath) {
114
+ try {
115
+ await readFile(filePath);
116
+ return true;
117
+ }
118
+ catch (error) {
119
+ if (isMissingFile(error))
120
+ return false;
121
+ throw error;
122
+ }
123
+ }
124
+ //# sourceMappingURL=generated-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-artifacts.js","sourceRoot":"","sources":["../src/generated-artifacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export * from "./conventions.js";
2
+ export * from "./config-loader.js";
3
+ export * from "./discovery/ast-prefilter.js";
4
+ export * from "./discovery/data-model-isolation.js";
5
+ export * from "./discovery/evaluator.js";
6
+ export * from "./discovery/extract.js";
7
+ export * from "./discovery/source-map.js";
8
+ export * from "./discovery/source-id.js";
9
+ export * from "./generate-manifest.js";
10
+ export * from "./event-registry.js";
11
+ export * from "./context-registry.js";
12
+ export * from "./generated-artifacts.js";
13
+ export * from "./normalize.js";
14
+ export * from "./project-typecheck.js";
15
+ export * from "./route-file.js";
16
+ export * from "./watch.js";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ export * from "./conventions.js";
2
+ export * from "./config-loader.js";
3
+ export * from "./discovery/ast-prefilter.js";
4
+ export * from "./discovery/data-model-isolation.js";
5
+ export * from "./discovery/evaluator.js";
6
+ export * from "./discovery/extract.js";
7
+ export * from "./discovery/source-map.js";
8
+ export * from "./discovery/source-id.js";
9
+ export * from "./generate-manifest.js";
10
+ export * from "./event-registry.js";
11
+ export * from "./context-registry.js";
12
+ export * from "./generated-artifacts.js";
13
+ export * from "./normalize.js";
14
+ export * from "./project-typecheck.js";
15
+ export * from "./route-file.js";
16
+ export * from "./watch.js";
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { NormalizedDescriptor, NormalizationWork } from "./normalize-types.js";
2
+ export type MiddlewareRouteMatch = "always" | "conditional";
3
+ export interface MiddlewareRouteReference {
4
+ readonly id: string;
5
+ readonly path: string;
6
+ readonly order: number;
7
+ readonly match: MiddlewareRouteMatch;
8
+ }
9
+ export declare function isMiddlewarePath(value: unknown): value is string;
10
+ export declare function middlewareForRoute(route: NormalizedDescriptor, work: NormalizationWork): readonly MiddlewareRouteReference[];
11
+ export declare function pathRelation(middlewarePath: string, routePath: string): MiddlewareRouteMatch | undefined;
12
+ //# sourceMappingURL=middleware-coverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware-coverage.d.ts","sourceRoot":"","sources":["../src/middleware-coverage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGpF,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;CACtC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAShE;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,oBAAoB,EAC3B,IAAI,EAAE,iBAAiB,GACtB,SAAS,wBAAwB,EAAE,CAmBrC;AAED,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,GAChB,oBAAoB,GAAG,SAAS,CA+BlC"}
@@ -0,0 +1,90 @@
1
+ import { isRecord } from "./normalize-utils.js";
2
+ export function isMiddlewarePath(value) {
3
+ if (value === "*")
4
+ return true;
5
+ if (typeof value !== "string" || !value.startsWith("/"))
6
+ return false;
7
+ if (value === "/")
8
+ return true;
9
+ const parts = value.slice(1).split("/");
10
+ return parts.every((part, index) => {
11
+ if (part === "*")
12
+ return index === parts.length - 1;
13
+ return part !== "" && (/^:[A-Za-z_][A-Za-z0-9_]*$/.test(part) || !/[*:?{}]/.test(part));
14
+ });
15
+ }
16
+ export function middlewareForRoute(route, work) {
17
+ const routeValue = isRecord(route.value) ? route.value : {};
18
+ const paths = runtimePaths(routeValue);
19
+ return [...work.middlewareReferences.values()]
20
+ .sort((left, right) => left.id.localeCompare(right.id))
21
+ .flatMap((middleware, order) => {
22
+ const value = isRecord(middleware.value) ? middleware.value : {};
23
+ if (typeof value.path !== "string")
24
+ return [];
25
+ const matches = paths.map((path) => pathRelation(value.path, path));
26
+ if (matches.every((match) => match === undefined))
27
+ return [];
28
+ return [
29
+ {
30
+ id: middleware.id,
31
+ path: value.path,
32
+ order,
33
+ match: matches.every((match) => match === "always") ? "always" : "conditional",
34
+ },
35
+ ];
36
+ });
37
+ }
38
+ export function pathRelation(middlewarePath, routePath) {
39
+ if (middlewarePath === "*")
40
+ return "always";
41
+ const middleware = segments(middlewarePath);
42
+ const route = segments(routePath);
43
+ const middlewareWildcard = middleware.at(-1) === "*";
44
+ const middlewarePrefix = middlewareWildcard ? middleware.slice(0, -1) : middleware;
45
+ const routeWildcard = route.findIndex(isRouteWildcard);
46
+ const fixedRoute = routeWildcard < 0;
47
+ const shared = Math.min(middlewarePrefix.length, fixedRoute ? route.length : routeWildcard);
48
+ for (let index = 0; index < shared; index += 1) {
49
+ if (!overlaps(middlewarePrefix[index] ?? "", route[index] ?? ""))
50
+ return undefined;
51
+ }
52
+ if (fixedRoute) {
53
+ if (!middlewareWildcard && middlewarePrefix.length !== route.length)
54
+ return undefined;
55
+ if (middlewareWildcard && route.length < middlewarePrefix.length)
56
+ return undefined;
57
+ return middlewarePrefix.every((segment, index) => index >= route.length || covers(segment, route[index] ?? ""))
58
+ ? "always"
59
+ : "conditional";
60
+ }
61
+ if (middlewarePrefix.length < routeWildcard && !middlewareWildcard)
62
+ return undefined;
63
+ if (middlewareWildcard && middlewarePrefix.length <= routeWildcard) {
64
+ return middlewarePrefix.every((segment, index) => covers(segment, route[index] ?? ""))
65
+ ? "always"
66
+ : "conditional";
67
+ }
68
+ return "conditional";
69
+ }
70
+ function runtimePaths(value) {
71
+ if (Array.isArray(value.runtimePaths)) {
72
+ const paths = value.runtimePaths.filter((entry) => typeof entry === "string");
73
+ if (paths.length > 0)
74
+ return paths;
75
+ }
76
+ return [typeof value.path === "string" ? value.path : ""];
77
+ }
78
+ function segments(path) {
79
+ return path === "/" ? [] : path.replace(/^\//, "").split("/");
80
+ }
81
+ function overlaps(middleware, route) {
82
+ return middleware.startsWith(":") || route.startsWith(":") || middleware === route;
83
+ }
84
+ function covers(middleware, route) {
85
+ return middleware.startsWith(":") || (!route.startsWith(":") && middleware === route);
86
+ }
87
+ function isRouteWildcard(segment) {
88
+ return segment.startsWith("*") || /^:[^{]+\{\.\+\}$/.test(segment);
89
+ }
90
+ //# sourceMappingURL=middleware-coverage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware-coverage.js","sourceRoot":"","sources":["../src/middleware-coverage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type JsonValue } from "@relkit/contracts";
2
+ import { type StandardSchemaV1 } from "@relkit/schema";
3
+ import type { NormalizedDescriptor, NormalizeInput } from "./normalize-types.js";
4
+ export interface SchemaResult {
5
+ readonly ok: boolean;
6
+ readonly schema?: JsonValue;
7
+ readonly reason?: string;
8
+ }
9
+ export declare function schema(value: unknown): SchemaResult;
10
+ export declare function isSchema(value: unknown): value is StandardSchemaV1;
11
+ export declare function schemaEquivalent(left: unknown, right: unknown): boolean;
12
+ export declare function schemaProperties(value: unknown): {
13
+ readonly properties: Readonly<Record<string, JsonValue>>;
14
+ readonly required: readonly string[];
15
+ } | undefined;
16
+ export declare function mappingFields(value: unknown): readonly string[];
17
+ export declare function mappingCompatible(mapping: unknown, target: unknown): string | undefined;
18
+ export declare function jobCompatible(input: unknown, target: unknown): string | undefined;
19
+ export declare function targetId(value: unknown): string | undefined;
20
+ export declare function selectorEntries(value: unknown): readonly string[];
21
+ export declare function matchingEvents(pattern: string, events: readonly NormalizedDescriptor[]): readonly string[];
22
+ export declare function schemaEntries(descriptor: NormalizedDescriptor): readonly [string, unknown][];
23
+ export declare function cronLike(value: unknown): boolean;
24
+ export declare function providerProfiles(input: NormalizeInput): ReadonlyMap<string, readonly string[]>;
25
+ export declare function isJsonMetadata(value: unknown): value is JsonValue;
26
+ //# sourceMappingURL=normalize-compat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-compat.d.ts","sourceRoot":"","sources":["../src/normalize-compat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGjF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAYnD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAOlE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAIvE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAC3C;IACE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC,GACD,SAAS,CAcZ;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAS/D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAUvF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOjF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE3D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CASjE;AASD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,oBAAoB,EAAE,GACtC,SAAS,MAAM,EAAE,CAOnB;AAqBD,wBAAgB,aAAa,CAAC,UAAU,EAAE,oBAAoB,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAQ5F;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEhD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAe9F;AAUD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAEjE"}