@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,97 @@
1
+ import { selectorEntries } from "./normalize-compat.js";
2
+ import { clean } from "./normalize-graph-utils.js";
3
+ import { middlewareForRoute } from "./middleware-coverage.js";
4
+ import { isRecord, refId } from "./normalize-utils.js";
5
+ import { selectedProviderProfile } from "./normalize-graph-app.js";
6
+ export function httpConfig(descriptor, value, work) {
7
+ return clean({
8
+ method: value.method,
9
+ path: value.path,
10
+ ...(value.raw === true ? { rawHandler: true } : {}),
11
+ ...(typeof value.title === "string" ? { title: value.title } : {}),
12
+ ...(typeof value.description === "string" ? { description: value.description } : {}),
13
+ ...(Array.isArray(value.tags) ? { tags: clean(value.tags) } : {}),
14
+ runtimePaths: value.runtimePaths,
15
+ request: value.request,
16
+ responses: responses(value.responses, descriptor.id, work),
17
+ middleware: middlewareForRoute(descriptor, work),
18
+ transforms: transforms(value.request, work),
19
+ rateLimit: rateLimit(value.rateLimit),
20
+ maxBodyBytes: value.maxBodyBytes,
21
+ timeoutMs: value.timeoutMs,
22
+ });
23
+ }
24
+ function rateLimit(value) {
25
+ if (!isRecord(value))
26
+ return undefined;
27
+ return clean({
28
+ limit: value.limit,
29
+ windowMs: value.windowMs,
30
+ key: value.key,
31
+ storeId: refId(value.store),
32
+ });
33
+ }
34
+ export function eventConfig(descriptor, value, work) {
35
+ const expansion = work.selectorExpansions.get(descriptor.id) ?? selectorEntries(value.selector);
36
+ const application = work.descriptors.find((entry) => entry.kind === "app")?.value;
37
+ return clean({
38
+ selector: value.selector,
39
+ expansion: sortEventPairs(expansion),
40
+ delivery: value.delivery,
41
+ profile: selectedProviderProfile(application, "events", typeof value.profile === "string" ? value.profile : undefined),
42
+ retry: value.retry,
43
+ concurrency: value.concurrency,
44
+ });
45
+ }
46
+ function responses(value, descriptorId, work) {
47
+ if (!Array.isArray(value))
48
+ return [];
49
+ return value.map((entry) => {
50
+ if (!isRecord(entry))
51
+ return clean(entry);
52
+ const responseId = typeof entry.id === "string" ? entry.id : "";
53
+ return clean({
54
+ ...entry,
55
+ schema: work.schemas.get(`${descriptorId}:response:${responseId}`) ?? null,
56
+ });
57
+ });
58
+ }
59
+ function transforms(value, work) {
60
+ const ids = [];
61
+ collectTransforms(value, ids);
62
+ return [...new Set(ids)].map((id) => ({
63
+ id,
64
+ schema: work.schemas.get(`${id}:transform`) ?? null,
65
+ }));
66
+ }
67
+ function collectTransforms(value, ids) {
68
+ if (!isRecord(value))
69
+ return;
70
+ if (value.kind === "transform" && typeof value.transformId === "string") {
71
+ ids.push(value.transformId);
72
+ collectTransforms(value.value, ids);
73
+ return;
74
+ }
75
+ if ((value.kind === "input" || value.kind === "nested") && isRecord(value.fields)) {
76
+ Object.values(value.fields).forEach((field) => collectTransforms(field, ids));
77
+ return;
78
+ }
79
+ if (value.kind === "optional" || value.kind === "default")
80
+ collectTransforms(value.value, ids);
81
+ }
82
+ function sortEventPairs(values) {
83
+ return [...new Set(values)].sort((left, right) => {
84
+ const a = splitEventPair(left);
85
+ const b = splitEventPair(right);
86
+ return a.id.localeCompare(b.id) || a.version - b.version || left.localeCompare(right);
87
+ });
88
+ }
89
+ function splitEventPair(value) {
90
+ const at = value.lastIndexOf("@");
91
+ const version = Number(value.slice(at + 1));
92
+ return {
93
+ id: at < 0 ? value : value.slice(0, at),
94
+ version: Number.isFinite(version) ? version : 0,
95
+ };
96
+ }
97
+ //# sourceMappingURL=normalize-graph-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-graph-config.js","sourceRoot":"","sources":["../src/normalize-graph-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { GraphEdge, NormalizationWork } from "./normalize-types.js";
2
+ export declare function buildGraphEdges(work: NormalizationWork): GraphEdge[];
3
+ //# sourceMappingURL=normalize-graph-edges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-graph-edges.d.ts","sourceRoot":"","sources":["../src/normalize-graph-edges.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAwB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAS/F,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EAAE,CA8CpE"}
@@ -0,0 +1,139 @@
1
+ import { isRecord, refId } from "./normalize-utils.js";
2
+ import { middlewareForRoute } from "./middleware-coverage.js";
3
+ import { selectedProviderProfile } from "./normalize-graph-app.js";
4
+ const dependencyEdges = {
5
+ jobs: "enqueues-job",
6
+ events: "publishes-event",
7
+ buckets: "uses-bucket",
8
+ cache: "uses-cache",
9
+ agents: "invokes-agent",
10
+ };
11
+ export function buildGraphEdges(work) {
12
+ const edges = [];
13
+ const seen = new Set();
14
+ const add = (kind, from, to, metadata) => {
15
+ if (!to)
16
+ return;
17
+ const key = `${kind}\0${from}\0${to}\0${JSON.stringify(metadata ?? null)}`;
18
+ if (seen.has(key))
19
+ return;
20
+ seen.add(key);
21
+ edges.push({
22
+ kind,
23
+ from,
24
+ to,
25
+ ...(typeof metadata === "string" ? { role: metadata } : (metadata ?? {})),
26
+ });
27
+ };
28
+ for (const descriptor of work.descriptors) {
29
+ const value = isRecord(descriptor.value) ? descriptor.value : {};
30
+ const target = refId(value.target);
31
+ if (target && isTargetingDescriptor(descriptor.kind))
32
+ add("targets-function", descriptor.id, target, "primary");
33
+ if (descriptor.kind === "route") {
34
+ for (const middleware of middlewareForRoute(descriptor, work)) {
35
+ add("uses-middleware", descriptor.id, middleware.id, {
36
+ order: middleware.order,
37
+ match: middleware.match,
38
+ });
39
+ }
40
+ const store = isRecord(value.rateLimit) ? refId(value.rateLimit.store) : undefined;
41
+ if (store !== undefined)
42
+ add("uses-cache", descriptor.id, store);
43
+ }
44
+ if (descriptor.kind === "event-trigger")
45
+ addEventEdges(add, descriptor, work);
46
+ if (descriptor.kind === "tool" && target)
47
+ add("exposes-as-tool", target, descriptor.id);
48
+ if (descriptor.kind === "agent")
49
+ addToolEdges(add, descriptor.id, value.tools);
50
+ if (descriptor.kind === "service")
51
+ addServiceEdges(add, descriptor.id, value);
52
+ if (descriptor.kind === "function")
53
+ addDependencyEdges(add, descriptor, value.dependencies);
54
+ if (descriptor.kind === "function" || descriptor.kind === "tool") {
55
+ addHookEdges(add, descriptor, value);
56
+ }
57
+ addProviderEdge(add, descriptor, value, work);
58
+ }
59
+ return edges;
60
+ }
61
+ function addProviderEdge(add, descriptor, value, work) {
62
+ const capability = providerCapability(descriptor.kind);
63
+ if (capability === undefined)
64
+ return;
65
+ const application = work.descriptors.find((entry) => entry.kind === "app")?.value;
66
+ const profile = selectedProviderProfile(application, capability, typeof value.profile === "string" ? value.profile : undefined) ?? "default";
67
+ const bindingId = `provider.${capability}.${profile}`;
68
+ if (work.nodes.some((node) => node.kind === "provider" && node.id === bindingId)) {
69
+ add("uses-provider-profile", descriptor.id, bindingId);
70
+ }
71
+ }
72
+ function providerCapability(kind) {
73
+ return {
74
+ bucket: "buckets",
75
+ cache: "cache",
76
+ job: "jobs",
77
+ event: "events",
78
+ "event-trigger": "events",
79
+ agent: "models",
80
+ }[kind];
81
+ }
82
+ function isTargetingDescriptor(kind) {
83
+ return kind === "route" || kind === "event-trigger" || kind === "job" || kind === "tool";
84
+ }
85
+ function addHookEdges(add, descriptor, value) {
86
+ for (const phase of ["before", "after"]) {
87
+ const hook = value[phase === "before" ? "onBefore" : "onAfter"];
88
+ if (typeof hook === "function" || (isRecord(hook) && hook.$relkit === "function")) {
89
+ add("uses-hook", descriptor.id, `${descriptor.id}.${phase}`, { phase });
90
+ }
91
+ }
92
+ }
93
+ function addEventEdges(add, descriptor, work) {
94
+ const expansion = work.selectorExpansions.get(descriptor.id) ?? [];
95
+ for (const pair of expansion) {
96
+ const at = pair.lastIndexOf("@");
97
+ add("listens-to-event", descriptor.id, at < 0 ? pair : pair.slice(0, at));
98
+ }
99
+ }
100
+ function addDependencyEdges(add, descriptor, dependencies) {
101
+ if (!isRecord(dependencies))
102
+ return;
103
+ for (const [name, refs] of Object.entries(dependencies)) {
104
+ const kind = dependencyEdges[name];
105
+ if (kind === undefined || !isRecord(refs))
106
+ continue;
107
+ for (const reference of Object.values(refs)) {
108
+ const target = refId(reference);
109
+ if (target)
110
+ add(kind, descriptor.id, target);
111
+ }
112
+ }
113
+ }
114
+ function addToolEdges(add, agentId, tools) {
115
+ if (!Array.isArray(tools))
116
+ return;
117
+ for (const tool of tools) {
118
+ const toolId = refId(tool);
119
+ if (toolId)
120
+ add("uses-tool", agentId, toolId);
121
+ }
122
+ }
123
+ function addServiceEdges(add, serviceId, value) {
124
+ if (isRecord(value.functions)) {
125
+ for (const [order, [member, target]] of Object.entries(value.functions).entries()) {
126
+ const functionId = refId(target);
127
+ if (functionId !== undefined)
128
+ add("contains-function", serviceId, functionId, { member, order });
129
+ }
130
+ }
131
+ if (Array.isArray(value.middleware)) {
132
+ for (const [order, entry] of value.middleware.entries()) {
133
+ const middlewareId = refId(entry);
134
+ if (middlewareId !== undefined)
135
+ add("uses-service-middleware", serviceId, middlewareId, { order });
136
+ }
137
+ }
138
+ }
139
+ //# sourceMappingURL=normalize-graph-edges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-graph-edges.js","sourceRoot":"","sources":["../src/normalize-graph-edges.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { GraphNode, NormalizationWork } from "./normalize-types.js";
2
+ export declare function buildGraphNodes(work: NormalizationWork): GraphNode[];
3
+ //# sourceMappingURL=normalize-graph-nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-graph-nodes.d.ts","sourceRoot":"","sources":["../src/normalize-graph-nodes.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAwB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE/F,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EAAE,CAgBpE"}
@@ -0,0 +1,184 @@
1
+ import { clean } from "./normalize-graph-utils.js";
2
+ import { environmentMetadata, environmentNodes, providerBindingIds, } from "./normalize-graph-app.js";
3
+ import { eventConfig, httpConfig } from "./normalize-graph-config.js";
4
+ import { providerNodes } from "./normalize-graph-providers.js";
5
+ import { selectedProviderProfile } from "./normalize-graph-app.js";
6
+ import { generatedAgentMarker, generatedFunctionNode } from "./normalize-generated-function.js";
7
+ import { serviceNodeData } from "./normalize-graph-services.js";
8
+ import { isRecord, refId } from "./normalize-utils.js";
9
+ export function buildGraphNodes(work) {
10
+ const nodes = [];
11
+ const middlewareOrder = new Map([...work.middlewareReferences.keys()].sort().map((id, order) => [id, order]));
12
+ for (const descriptor of work.descriptors) {
13
+ const node = nodeFor(descriptor, work, middlewareOrder);
14
+ if (node !== undefined)
15
+ nodes.push(node);
16
+ nodes.push(...hookNodes(descriptor));
17
+ if (descriptor.kind === "agent")
18
+ nodes.push(generatedFunctionNode(descriptor, work));
19
+ if (descriptor.kind === "app") {
20
+ nodes.push(...environmentNodes(descriptor));
21
+ nodes.push(...providerNodes(descriptor));
22
+ }
23
+ }
24
+ return nodes;
25
+ }
26
+ function nodeFor(descriptor, work, middlewareOrder) {
27
+ const value = isRecord(descriptor.value) ? descriptor.value : {};
28
+ const base = { id: descriptor.id, source: descriptor.source };
29
+ const application = work.descriptors.find((entry) => entry.kind === "app")?.value;
30
+ switch (descriptor.kind) {
31
+ case "app":
32
+ return {
33
+ ...base,
34
+ kind: "app",
35
+ environment: environmentMetadata(value.env),
36
+ providerBindings: providerBindingIds(value),
37
+ defaults: clean(value.defaults),
38
+ };
39
+ case "route":
40
+ return {
41
+ ...base,
42
+ kind: "trigger",
43
+ triggerType: "http",
44
+ targetFunctionId: value.raw === true ? descriptor.id : (refId(value.target) ?? ""),
45
+ config: httpConfig(descriptor, value, work),
46
+ };
47
+ case "event-trigger":
48
+ return {
49
+ ...base,
50
+ kind: "trigger",
51
+ triggerType: "event",
52
+ targetFunctionId: refId(value.target) ?? "",
53
+ config: eventConfig(descriptor, value, work),
54
+ };
55
+ case "function":
56
+ return {
57
+ ...base,
58
+ kind: "function",
59
+ input: schema(work, descriptor, "input"),
60
+ output: schema(work, descriptor, "output"),
61
+ errors: clean(value.errors),
62
+ dependencies: clean(value.dependencies),
63
+ timeoutMs: clean(value.timeoutMs),
64
+ concurrency: clean(value.concurrency),
65
+ generated: clean(value.generated),
66
+ };
67
+ case "job":
68
+ return {
69
+ ...base,
70
+ kind: "job",
71
+ input: schema(work, descriptor, "input"),
72
+ targetFunctionId: refId(value.target) ?? "",
73
+ profile: selectedProviderProfile(application, "jobs", text(value.profile)) ?? "default",
74
+ retry: clean(value.retry),
75
+ timeoutMs: clean(value.timeoutMs),
76
+ concurrency: clean(value.concurrency),
77
+ schedule: clean(value.schedule),
78
+ idempotency: clean(value.idempotency),
79
+ };
80
+ case "event":
81
+ return {
82
+ ...base,
83
+ kind: "event",
84
+ version: typeof value.version === "number" ? value.version : 0,
85
+ payload: schema(work, descriptor, "payload"),
86
+ sensitiveFields: clean(value.sensitiveFields),
87
+ profile: selectedProviderProfile(application, "events", text(value.profile)) ?? "default",
88
+ };
89
+ case "bucket":
90
+ return {
91
+ ...base,
92
+ kind: "bucket",
93
+ profile: selectedProviderProfile(application, "buckets", text(value.profile)) ?? "default",
94
+ visibility: value.visibility ?? "private",
95
+ maxObjectBytes: clean(value.maxObjectBytes),
96
+ allowedContentTypes: clean(value.allowedContentTypes),
97
+ };
98
+ case "cache":
99
+ return {
100
+ ...base,
101
+ kind: "cache",
102
+ key: schema(work, descriptor, "key"),
103
+ value: schema(work, descriptor, "value"),
104
+ profile: selectedProviderProfile(application, "cache", text(value.profile)) ?? "default",
105
+ defaultTtlMs: clean(value.defaultTtlMs),
106
+ maxTtlMs: clean(value.maxTtlMs),
107
+ };
108
+ case "tool":
109
+ return {
110
+ ...base,
111
+ kind: "tool",
112
+ targetFunctionId: refId(value.target) ?? "",
113
+ description: typeof value.description === "string" ? value.description : "",
114
+ sideEffect: value.sideEffect ?? "none",
115
+ approval: value.approval ?? "never",
116
+ mcp: value.mcp !== false,
117
+ timeoutMs: clean(value.timeoutMs),
118
+ };
119
+ case "agent":
120
+ return {
121
+ ...base,
122
+ kind: "agent",
123
+ input: schema(work, descriptor, "input"),
124
+ output: schema(work, descriptor, "output"),
125
+ ...(typeof value.model === "string" ? { model: value.model } : {}),
126
+ instructions: isRecord(value.instructions) && value.instructions.kind === "prompt"
127
+ ? { promptId: refId(value.instructions) ?? "" }
128
+ : clean(value.instructions),
129
+ toolIds: toolIds(value.tools),
130
+ limits: clean(value.limits),
131
+ generatedFunction: generatedAgentMarker(descriptor.id),
132
+ profile: selectedProviderProfile(application, "models", text(value.profile)) ?? "default",
133
+ };
134
+ case "service":
135
+ return { ...base, kind: "service", ...serviceNodeData(value) };
136
+ case "middleware":
137
+ return {
138
+ ...base,
139
+ kind: "middleware",
140
+ path: typeof value.path === "string" ? value.path : "",
141
+ order: middlewareOrder.get(descriptor.id) ?? 0,
142
+ };
143
+ default:
144
+ return undefined;
145
+ }
146
+ }
147
+ function text(value) {
148
+ return typeof value === "string" ? value : undefined;
149
+ }
150
+ function hookNodes(descriptor) {
151
+ if (descriptor.kind !== "function" && descriptor.kind !== "tool")
152
+ return [];
153
+ const value = isRecord(descriptor.value) ? descriptor.value : {};
154
+ return ["before", "after"].flatMap((phase) => {
155
+ const hook = value[phase === "before" ? "onBefore" : "onAfter"];
156
+ if (!isExecutableMarker(hook))
157
+ return [];
158
+ return [
159
+ {
160
+ kind: "hook",
161
+ id: `${descriptor.id}.${phase}`,
162
+ source: descriptor.source,
163
+ ownerId: descriptor.id,
164
+ ownerKind: descriptor.kind,
165
+ phase,
166
+ },
167
+ ];
168
+ });
169
+ }
170
+ function isExecutableMarker(value) {
171
+ return typeof value === "function" || (isRecord(value) && value.$relkit === "function");
172
+ }
173
+ function schema(work, descriptor, field) {
174
+ return work.schemas.get(`${descriptor.id}:${field}`) ?? null;
175
+ }
176
+ function toolIds(value) {
177
+ return Array.isArray(value)
178
+ ? value.flatMap((entry) => {
179
+ const id = refId(entry);
180
+ return id === undefined ? [] : [id];
181
+ })
182
+ : [];
183
+ }
184
+ //# sourceMappingURL=normalize-graph-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-graph-nodes.js","sourceRoot":"","sources":["../src/normalize-graph-nodes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { GraphNode, NormalizedDescriptor } from "./normalize-types.js";
2
+ export declare function providerNodes(descriptor: NormalizedDescriptor): GraphNode[];
3
+ export declare function providerBindingId(capability: string, profile: string): string;
4
+ //# sourceMappingURL=normalize-graph-providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-graph-providers.d.ts","sourceRoot":"","sources":["../src/normalize-graph-providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI5E,wBAAgB,aAAa,CAAC,UAAU,EAAE,oBAAoB,GAAG,SAAS,EAAE,CA2B3E;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7E"}
@@ -0,0 +1,63 @@
1
+ import { isRecord } from "./normalize-utils.js";
2
+ import { providerMaps } from "./normalize-graph-app.js";
3
+ export function providerNodes(descriptor) {
4
+ const value = isRecord(descriptor.value) ? descriptor.value : {};
5
+ return providerMaps(value)
6
+ .sort(([left], [right]) => left.localeCompare(right))
7
+ .flatMap(([capability, profiles]) => {
8
+ if (!isRecord(profiles))
9
+ return [];
10
+ return Object.entries(profiles)
11
+ .sort(([left], [right]) => left.localeCompare(right))
12
+ .flatMap(([profile, candidate]) => {
13
+ const binding = isRecord(candidate) ? candidate : {};
14
+ const adapter = isRecord(binding.adapter) ? binding.adapter : {};
15
+ if (typeof adapter.adapter !== "string")
16
+ return [];
17
+ return [
18
+ {
19
+ kind: "provider",
20
+ id: providerBindingId(capability, profile),
21
+ source: descriptor.source,
22
+ capability,
23
+ profile,
24
+ adapter: adapter.adapter,
25
+ ownership: binding.ownership === "managed" ? "managed" : "external",
26
+ configuration: projectConfiguration(adapter.configuration),
27
+ environment: projectEnvironment(adapter.environment),
28
+ },
29
+ ];
30
+ });
31
+ });
32
+ }
33
+ export function providerBindingId(capability, profile) {
34
+ return `provider.${capability}.${profile}`;
35
+ }
36
+ function projectConfiguration(value) {
37
+ if (Array.isArray(value))
38
+ return value.map(projectConfiguration);
39
+ if (!isRecord(value))
40
+ return value ?? null;
41
+ if (value.kind === "env-ref") {
42
+ return {
43
+ kind: "env-ref",
44
+ name: typeof value.name === "string" ? value.name : "",
45
+ type: typeof value.type === "string" ? value.type : "",
46
+ sensitive: value.sensitive === true,
47
+ };
48
+ }
49
+ return Object.fromEntries(Object.entries(value)
50
+ .sort(([left], [right]) => left.localeCompare(right))
51
+ .map(([key, child]) => [key, projectConfiguration(child)]));
52
+ }
53
+ function projectEnvironment(value) {
54
+ if (!Array.isArray(value))
55
+ return [];
56
+ return value.flatMap((entry) => {
57
+ if (!isRecord(entry) || typeof entry.name !== "string" || typeof entry.type !== "string") {
58
+ return [];
59
+ }
60
+ return [{ name: entry.name, type: entry.type, sensitive: entry.sensitive === true }];
61
+ });
62
+ }
63
+ //# sourceMappingURL=normalize-graph-providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-graph-providers.js","sourceRoot":"","sources":["../src/normalize-graph-providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,MAAM,UAAU,aAAa,CAAC,UAAgC;IAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,OAAO,YAAY,CAAC,KAAK,CAAC;SACvB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACpD,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE;QAClC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;aAC5B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACpD,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YACnD,OAAO;gBACL;oBACE,IAAI,EAAE,UAAU;oBAChB,EAAE,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;oBAC1C,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,UAAU;oBACV,OAAO;oBACP,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,SAAS,EAAE,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;oBACnE,aAAa,EAAE,oBAAoB,CAAC,OAAO,CAAC,aAAa,CAAC;oBAC1D,WAAW,EAAE,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC;iBACrD;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,OAAe;IACnE,OAAO,YAAY,UAAU,IAAI,OAAO,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACjE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,IAAI,IAAI,CAAC;IAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACtD,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACtD,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI;SACpC,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SAClB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7D,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IAKxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzF,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function serviceNodeData(value: Record<string, unknown>): Record<string, unknown>;
2
+ //# sourceMappingURL=normalize-graph-services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-graph-services.d.ts","sourceRoot":"","sources":["../src/normalize-graph-services.ts"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBvF"}
@@ -0,0 +1,23 @@
1
+ import { clean } from "./normalize-graph-utils.js";
2
+ import { isRecord, refId } from "./normalize-utils.js";
3
+ export function serviceNodeData(value) {
4
+ const functions = isRecord(value.functions) ? value.functions : {};
5
+ const members = Object.entries(functions).flatMap(([name, target]) => {
6
+ const functionId = refId(target);
7
+ return functionId === undefined ? [] : [{ name, functionId }];
8
+ });
9
+ const middleware = Array.isArray(value.middleware)
10
+ ? value.middleware.flatMap((entry) => {
11
+ const id = refId(entry);
12
+ return id === undefined ? [] : [{ id }];
13
+ })
14
+ : [];
15
+ return {
16
+ ...(typeof value.title === "string" ? { title: value.title } : {}),
17
+ ...(typeof value.description === "string" ? { description: value.description } : {}),
18
+ ...(Array.isArray(value.tags) ? { tags: clean(value.tags) } : {}),
19
+ members,
20
+ middleware,
21
+ };
22
+ }
23
+ //# sourceMappingURL=normalize-graph-services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-graph-services.js","sourceRoot":"","sources":["../src/normalize-graph-services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,UAAU,eAAe,CAAC,KAA8B;IAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE;QACnE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;QAChD,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACjC,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YACxB,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;QACL,GAAG,CAAC,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,OAAO;QACP,UAAU;KACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { GRAPH_VERSION, type SourceLocation } from "@relkit/contracts";
2
+ export interface GraphNode {
3
+ readonly kind: string;
4
+ readonly id: string;
5
+ readonly source: SourceLocation;
6
+ readonly [key: string]: unknown;
7
+ }
8
+ export interface GraphEdge {
9
+ readonly kind: string;
10
+ readonly from: string;
11
+ readonly to: string;
12
+ readonly [key: string]: unknown;
13
+ }
14
+ /** Runtime relationships kept outside the canonical graph contract. */
15
+ export interface ObservedEdge {
16
+ readonly relationship: string;
17
+ readonly from: string;
18
+ readonly to: string;
19
+ }
20
+ export interface NormalizedGraph {
21
+ readonly contractVersion: typeof GRAPH_VERSION;
22
+ readonly appId?: string;
23
+ readonly nodes: readonly GraphNode[];
24
+ readonly edges: readonly GraphEdge[];
25
+ }
26
+ //# sourceMappingURL=normalize-graph-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-graph-types.d.ts","sourceRoot":"","sources":["../src/normalize-graph-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEvE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,eAAe,EAAE,OAAO,aAAa,CAAC;IAC/C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC"}
@@ -0,0 +1,2 @@
1
+ import { GRAPH_VERSION } from "@relkit/contracts";
2
+ //# sourceMappingURL=normalize-graph-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-graph-types.js","sourceRoot":"","sources":["../src/normalize-graph-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { JsonValue } from "@relkit/contracts";
2
+ /** Replaces executable/non-JSON fields with deterministic nulls for graph data. */
3
+ export declare function clean(value: unknown): JsonValue;
4
+ //# sourceMappingURL=normalize-graph-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-graph-utils.d.ts","sourceRoot":"","sources":["../src/normalize-graph-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,mFAAmF;AACnF,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAmB/C"}