@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,146 @@
1
+ import { normalizeId, normalizeSourcePath } from "@relkit/contracts";
2
+ import { encodeRouteId } from "./source-id-route.js";
3
+ export { encodeRouteId } from "./source-id-route.js";
4
+ const KIND_RULES = {
5
+ app: { directory: ".", suffixes: ["relkit.config"] },
6
+ function: { directory: "src/functions", suffixes: ["function"] },
7
+ service: { directory: "src/services", suffixes: ["service"] },
8
+ route: { directory: "src/routes", suffixes: ["route"] },
9
+ job: { directory: "src/jobs", suffixes: ["job"] },
10
+ event: { directory: "src/events", suffixes: ["event"] },
11
+ "event-trigger": { directory: "src/events", suffixes: ["event"] },
12
+ bucket: { directory: "src/buckets", suffixes: ["bucket"] },
13
+ cache: { directory: "src/cache", suffixes: ["cache"] },
14
+ tool: { directory: "src/tools", suffixes: ["tool"] },
15
+ agent: { directory: "src/agents", suffixes: ["agent"] },
16
+ "data-model": { directory: "src/data", suffixes: ["data-model"] },
17
+ constants: { directory: "src/constants", suffixes: ["constants"] },
18
+ prompt: { directory: "src/prompts", suffixes: ["prompt"] },
19
+ error: { directory: "src/errors", suffixes: ["error"] },
20
+ middleware: { directory: "src/middleware", suffixes: ["middleware"] },
21
+ "service-middleware": {
22
+ directory: "src/services",
23
+ suffixes: ["service-middleware", "middleware"],
24
+ },
25
+ transform: { directory: "src/transforms", suffixes: ["transform"] },
26
+ };
27
+ /** Returns the normalized source hierarchy after conventional path stripping. */
28
+ export function encodeSourceHierarchy(source, kind, projectRoot) {
29
+ const parts = sourceParts(source, kind, projectRoot);
30
+ return join(parts);
31
+ }
32
+ /** Encodes a named/default export, returning undefined when syntax cannot identify it. */
33
+ export function encodeExportId(input) {
34
+ if (input.explicitId !== undefined)
35
+ return normalizeId(input.explicitId);
36
+ const binding = input.binding ?? input.exportFact?.binding;
37
+ const parts = sourceParts(input.source, input.kind, input.projectRoot);
38
+ if (input.exportKind === "default")
39
+ return finish(parts);
40
+ const name = kebab(binding);
41
+ if (name === undefined)
42
+ return undefined;
43
+ return finish(parts.length === 0 ? [name] : [...parts.slice(0, -1), name]);
44
+ }
45
+ /** Encodes a source-local declared error while retaining its binding spelling. */
46
+ export function encodeErrorId(source, binding, explicitId, projectRoot) {
47
+ if (explicitId !== undefined)
48
+ return normalizeId(explicitId);
49
+ if (binding.trim() === "")
50
+ return undefined;
51
+ return finish([...sourceParts(source, "error", projectRoot), binding]);
52
+ }
53
+ /** Encodes a service member identity from the already-resolved service identity. */
54
+ export function encodeMemberId(serviceId, member, explicitId) {
55
+ if (explicitId !== undefined)
56
+ return normalizeId(explicitId);
57
+ const service = normalizeId(serviceId);
58
+ const name = kebab(member);
59
+ return name === undefined ? undefined : finish([service, name]);
60
+ }
61
+ /** Selects explicit identity first, then the applicable source/member/route encoder. */
62
+ export function encodeSourceId(input) {
63
+ if (input.explicitId !== undefined)
64
+ return normalizeId(input.explicitId);
65
+ if (input.kind === "route") {
66
+ if (input.method === undefined || input.path === undefined)
67
+ return undefined;
68
+ return encodeRouteId(input.method, input.path);
69
+ }
70
+ if (input.serviceId !== undefined && input.member !== undefined)
71
+ return encodeMemberId(input.serviceId, input.member);
72
+ if (input.kind === "error" && input.binding !== undefined)
73
+ return encodeErrorId(input.source, input.binding, undefined, input.projectRoot);
74
+ if (input.exportKind === undefined)
75
+ return undefined;
76
+ return encodeExportId({
77
+ source: input.source,
78
+ kind: input.kind,
79
+ exportName: input.exportName ?? "",
80
+ exportKind: input.exportKind,
81
+ ...(input.binding === undefined ? {} : { binding: input.binding }),
82
+ ...(input.projectRoot === undefined ? {} : { projectRoot: input.projectRoot }),
83
+ });
84
+ }
85
+ function sourceParts(source, kind, projectRoot) {
86
+ const normalized = relativeSource(source, projectRoot);
87
+ const parts = normalized.split("/").filter(Boolean);
88
+ if (parts[0] === "src")
89
+ parts.shift();
90
+ const directory = KIND_RULES[kind].directory.split("/").slice(1);
91
+ if (directory.every((part, index) => parts[index] === part))
92
+ parts.splice(0, directory.length);
93
+ const last = parts.at(-1);
94
+ if (last === undefined)
95
+ return [];
96
+ const stem = last.replace(/\.(?:[cm]?[jt]sx?)$/i, "");
97
+ parts[parts.length - 1] = stripSuffix(stem, KIND_RULES[kind].suffixes);
98
+ if (parts.at(-1) === "index")
99
+ parts.pop();
100
+ return parts.flatMap((part) => {
101
+ const value = kebab(part);
102
+ return value === undefined ? [] : [value];
103
+ });
104
+ }
105
+ function stripSuffix(value, suffixes) {
106
+ for (const suffix of suffixes) {
107
+ if (value.endsWith(`.${suffix}`))
108
+ return value.slice(0, -suffix.length - 1);
109
+ if (value === suffix)
110
+ return "";
111
+ }
112
+ return value;
113
+ }
114
+ function kebab(value) {
115
+ if (value === undefined)
116
+ return undefined;
117
+ const normalized = value
118
+ .normalize("NFKC")
119
+ .replace(/([a-z0-9])([A-Z])/g, "$1-$2")
120
+ .replace(/([A-Z]+)([A-Z][a-z])/g, "$1-$2")
121
+ .replace(/[^A-Za-z0-9]+/g, "-")
122
+ .replace(/^-+|-+$/g, "")
123
+ .replace(/-+/g, "-")
124
+ .toLowerCase();
125
+ return normalized === "" ? undefined : normalized;
126
+ }
127
+ function finish(parts) {
128
+ const value = join(parts);
129
+ return value === undefined ? undefined : normalizeId(value);
130
+ }
131
+ function join(parts) {
132
+ const value = parts.filter((part) => part !== "").join(".");
133
+ return value === "" ? undefined : value;
134
+ }
135
+ function relativeSource(source, projectRoot) {
136
+ try {
137
+ return normalizeSourcePath(source, projectRoot);
138
+ }
139
+ catch {
140
+ return source
141
+ .replaceAll("\\", "/")
142
+ .replace(/^\/+/, "")
143
+ .replace(/^\.\/+/, "");
144
+ }
145
+ }
146
+ //# sourceMappingURL=source-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-id.js","sourceRoot":"","sources":["../../src/discovery/source-id.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import * as ts from "typescript";
2
+ import type { ExportFacts } from "./source-facts.js";
3
+ export { readFacts } from "./source-facts.js";
4
+ export type { ErrorBindingFact, ExportFact, ExportFacts, FactoryBindingFact, FactoryIdPresence, RouteOperationFact, ServiceMemberFact, SourceFacts, SourceFactoryKind, } from "./source-facts.js";
5
+ export interface ParsedSource {
6
+ readonly sourceFile: ts.SourceFile;
7
+ readonly facts: ExportFacts;
8
+ }
9
+ export declare function resolveImport(file: string, module: string, root: string, texts: ReadonlyMap<string, string>): string | undefined;
10
+ //# sourceMappingURL=source-map-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-map-utils.d.ts","sourceRoot":"","sources":["../../src/discovery/source-map-utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,MAAM,GAAG,SAAS,CAepB"}
@@ -0,0 +1,29 @@
1
+ import { existsSync } from "node:fs";
2
+ import { dirname, extname, join, resolve } from "node:path";
3
+ import { normalizeSourcePath } from "@relkit/contracts";
4
+ import * as ts from "typescript";
5
+ export { readFacts } from "./source-facts.js";
6
+ export function resolveImport(file, module, root, texts) {
7
+ if (!module.startsWith("."))
8
+ return undefined;
9
+ const base = resolve(root, dirname(file), module);
10
+ const candidates = extname(base)
11
+ ? [base]
12
+ : [base, `${base}.ts`, `${base}.tsx`, `${base}.js`, `${base}.jsx`, join(base, "index.ts")];
13
+ for (const candidate of candidates) {
14
+ try {
15
+ const relative = normalizeSourcePath(candidate, root);
16
+ if (texts.has(relative) || existsSync(candidate))
17
+ return relative;
18
+ }
19
+ catch {
20
+ return undefined;
21
+ }
22
+ }
23
+ return undefined;
24
+ }
25
+ function hasModifier(node, kind) {
26
+ return (ts.canHaveModifiers(node) &&
27
+ ts.getModifiers(node)?.some((modifier) => modifier.kind === kind) === true);
28
+ }
29
+ //# sourceMappingURL=source-map-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-map-utils.js","sourceRoot":"","sources":["../../src/discovery/source-map-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAkB9C,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,MAAc,EACd,IAAY,EACZ,KAAkC;IAElC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;QAC9B,CAAC,CAAC,CAAC,IAAI,CAAC;QACR,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,KAAK,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,IAAI,KAAK,EAAE,GAAG,IAAI,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7F,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACtD,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO,QAAQ,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,IAAa,EAAE,IAAmB;IACrD,OAAO,CACL,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;QACzB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,IAAI,CAC3E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { type SourceLocation } from "@relkit/contracts";
2
+ import type { EvaluatorModuleResult } from "./evaluator-protocol.js";
3
+ import { type ExportFact, type ExportFacts } from "./source-map-utils.js";
4
+ export type { ErrorBindingFact, ExportFact, ExportFacts, FactoryBindingFact, FactoryIdPresence, RouteOperationFact, ServiceMemberFact, SourceFacts, SourceFactoryKind, } from "./source-map-utils.js";
5
+ export type ExportKind = "default" | "named";
6
+ export interface SourceMapSource {
7
+ readonly fileName: string;
8
+ readonly text: string;
9
+ }
10
+ export interface SourceMapOptions {
11
+ readonly projectRoot?: string;
12
+ readonly sources?: readonly SourceMapSource[];
13
+ }
14
+ export interface SourceMapEntry {
15
+ readonly module: string;
16
+ readonly exportName: string;
17
+ readonly exportKind: ExportKind;
18
+ readonly source: SourceLocation;
19
+ readonly facts?: ExportFacts;
20
+ readonly exportFact?: ExportFact;
21
+ }
22
+ /** Maps evaluated export facts to stable project-relative source positions. */
23
+ export declare function mapSourceLocations(modules: readonly EvaluatorModuleResult[], options?: SourceMapOptions): readonly SourceMapEntry[];
24
+ /** Alias used by compiler callers that treat the entries as a source map. */
25
+ export declare const createSourceMap: typeof mapSourceLocations;
26
+ //# sourceMappingURL=source-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-map.d.ts","sourceRoot":"","sources":["../../src/discovery/source-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,WAAW,EAEjB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAcD,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,qBAAqB,EAAE,EACzC,OAAO,GAAE,gBAAqB,GAC7B,SAAS,cAAc,EAAE,CAuB3B;AAED,6EAA6E;AAC7E,eAAO,MAAM,eAAe,2BAAqB,CAAC"}
@@ -0,0 +1,119 @@
1
+ import { createSourceLocation, normalizeSourcePath } from "@relkit/contracts";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { resolve } from "node:path";
4
+ import * as ts from "typescript";
5
+ import { readFacts, resolveImport, } from "./source-map-utils.js";
6
+ /** Maps evaluated export facts to stable project-relative source positions. */
7
+ export function mapSourceLocations(modules, options = {}) {
8
+ const context = createContext(options);
9
+ const entries = modules.flatMap((module) => module.exports.map((exported) => {
10
+ const file = relativeFile(module.file, context.root);
11
+ const located = locate(file, exported.exportName, context, new Set());
12
+ const source = located?.source ?? createSourceLocation(file, 1, 1, context.root);
13
+ return Object.freeze({
14
+ module: file,
15
+ exportName: exported.exportName,
16
+ exportKind: exportKind(exported.exportName),
17
+ source: Object.freeze(source),
18
+ ...(located?.facts === undefined ? {} : { facts: located.facts }),
19
+ ...(located?.exportFact === undefined ? {} : { exportFact: located.exportFact }),
20
+ });
21
+ }));
22
+ return Object.freeze(entries.sort((left, right) => left.module.localeCompare(right.module) || left.exportName.localeCompare(right.exportName)));
23
+ }
24
+ /** Alias used by compiler callers that treat the entries as a source map. */
25
+ export const createSourceMap = mapSourceLocations;
26
+ function createContext(options) {
27
+ const root = resolve(options.projectRoot ?? process.cwd());
28
+ const texts = new Map();
29
+ for (const source of options.sources ?? []) {
30
+ try {
31
+ texts.set(relativeFile(source.fileName, root), source.text);
32
+ }
33
+ catch {
34
+ // Invalid supplemental paths cannot be source locations in this project.
35
+ }
36
+ }
37
+ return { root, texts, parsed: new Map() };
38
+ }
39
+ function locate(file, exportName, context, visited) {
40
+ if (visited.has(`${file}\0${exportName}`))
41
+ return undefined;
42
+ visited.add(`${file}\0${exportName}`);
43
+ const parsed = parseSource(file, context);
44
+ if (parsed === undefined)
45
+ return undefined;
46
+ const fact = parsed.facts.exports.get(exportName);
47
+ if (fact?.origin !== undefined) {
48
+ const originFile = resolveImport(file, fact.origin.module, context.root, context.texts);
49
+ if (originFile !== undefined) {
50
+ return locate(originFile, fact.origin.name, context, visited);
51
+ }
52
+ }
53
+ if (fact !== undefined) {
54
+ return {
55
+ source: position(file, parsed.sourceFile, fact.position, context.root),
56
+ facts: parsed.facts,
57
+ exportFact: fact,
58
+ };
59
+ }
60
+ for (const star of parsed.facts.stars) {
61
+ const originFile = resolveImport(file, star.module, context.root, context.texts);
62
+ if (originFile !== undefined) {
63
+ const origin = locate(originFile, exportName, context, visited);
64
+ if (origin !== undefined)
65
+ return origin;
66
+ }
67
+ return {
68
+ source: position(file, parsed.sourceFile, star.position, context.root),
69
+ facts: parsed.facts,
70
+ };
71
+ }
72
+ return { source: position(file, parsed.sourceFile, 0, context.root), facts: parsed.facts };
73
+ }
74
+ function parseSource(file, context) {
75
+ if (context.parsed.has(file))
76
+ return context.parsed.get(file);
77
+ const text = sourceText(file, context);
78
+ if (text === undefined) {
79
+ context.parsed.set(file, undefined);
80
+ return undefined;
81
+ }
82
+ const sourceFile = ts.createSourceFile(file, text, ts.ScriptTarget.Latest, true, scriptKind(file));
83
+ const parsed = { sourceFile, facts: readFacts(sourceFile) };
84
+ context.parsed.set(file, parsed);
85
+ return parsed;
86
+ }
87
+ function sourceText(file, context) {
88
+ const supplied = context.texts.get(file);
89
+ if (supplied !== undefined)
90
+ return supplied;
91
+ const absolute = resolve(context.root, file);
92
+ if (!existsSync(absolute))
93
+ return undefined;
94
+ try {
95
+ return readFileSync(absolute, "utf8");
96
+ }
97
+ catch {
98
+ return undefined;
99
+ }
100
+ }
101
+ function position(file, sourceFile, offset, root) {
102
+ const safeOffset = Math.max(0, Math.min(offset, sourceFile.end));
103
+ const line = sourceFile.getLineAndCharacterOfPosition(safeOffset);
104
+ return createSourceLocation(file, line.line + 1, line.character + 1, root);
105
+ }
106
+ function relativeFile(file, root) {
107
+ return normalizeSourcePath(file, root);
108
+ }
109
+ function exportKind(name) {
110
+ return name === "default" ? "default" : "named";
111
+ }
112
+ function scriptKind(file) {
113
+ if (file.endsWith(".tsx"))
114
+ return ts.ScriptKind.TSX;
115
+ if (file.endsWith(".jsx"))
116
+ return ts.ScriptKind.JSX;
117
+ return ts.ScriptKind.TS;
118
+ }
119
+ //# sourceMappingURL=source-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-map.js","sourceRoot":"","sources":["../../src/discovery/source-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ExtractedDescriptor } from "./discovery/extract.js";
2
+ export declare const EVENT_REGISTRY_FILE = "event-registry.d.ts";
3
+ export interface EventRegistryGenerationOptions {
4
+ readonly projectRoot: string;
5
+ readonly generatedDirectory?: string;
6
+ }
7
+ /** Generates the module augmentation used by event-name autocomplete and callback inference. */
8
+ export declare function generateEventRegistry(descriptors: readonly ExtractedDescriptor[], options: EventRegistryGenerationOptions): string;
9
+ //# sourceMappingURL=event-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-registry.d.ts","sourceRoot":"","sources":["../src/event-registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,gGAAgG;AAChG,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,SAAS,mBAAmB,EAAE,EAC3C,OAAO,EAAE,8BAA8B,GACtC,MAAM,CAgCR"}
@@ -0,0 +1,43 @@
1
+ import { relative, resolve } from "node:path";
2
+ import { normalizeSourcePath } from "@relkit/contracts";
3
+ export const EVENT_REGISTRY_FILE = "event-registry.d.ts";
4
+ /** Generates the module augmentation used by event-name autocomplete and callback inference. */
5
+ export function generateEventRegistry(descriptors, options) {
6
+ const root = resolve(options.projectRoot);
7
+ const output = resolve(root, options.generatedDirectory ?? ".relkit/generated");
8
+ const seen = new Set();
9
+ const entries = descriptors
10
+ .filter(({ descriptor }) => descriptor.kind === "event")
11
+ .sort((left, right) => left.descriptor.id.localeCompare(right.descriptor.id) ||
12
+ left.reference.module.localeCompare(right.reference.module) ||
13
+ left.exportName.localeCompare(right.exportName))
14
+ .flatMap((entry) => {
15
+ if (seen.has(entry.descriptor.id))
16
+ return [];
17
+ seen.add(entry.descriptor.id);
18
+ const module = importPath(output, root, entry.reference.module);
19
+ return [
20
+ ` readonly ${JSON.stringify(entry.descriptor.id)}: typeof import(${JSON.stringify(module)})[${JSON.stringify(entry.exportName)}];`,
21
+ ];
22
+ });
23
+ return [
24
+ 'import "@relkit/events";',
25
+ "",
26
+ 'declare module "@relkit/events" {',
27
+ " interface EventRegistry {",
28
+ ...entries,
29
+ " }",
30
+ "}",
31
+ "",
32
+ "export {};",
33
+ "",
34
+ ].join("\n");
35
+ }
36
+ function importPath(output, root, module) {
37
+ const source = resolve(root, normalizeSourcePath(module, root));
38
+ const path = relative(output, source)
39
+ .replaceAll("\\", "/")
40
+ .replace(/\.(?:[cm]?ts|tsx)$/, ".js");
41
+ return path.startsWith(".") ? path : `./${path}`;
42
+ }
43
+ //# sourceMappingURL=event-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-registry.js","sourceRoot":"","sources":["../src/event-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAOzD,gGAAgG;AAChG,MAAM,UAAU,qBAAqB,CACnC,WAA2C,EAC3C,OAAuC;IAEvC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,IAAI,mBAAmB,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAG,WAAW;SACxB,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC;SACvD,IAAI,CACH,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAClD;SACA,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChE,OAAO;YACL,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI;SACtI,CAAC;IACJ,CAAC,CAAC,CAAC;IACL,OAAO;QACL,0BAA0B;QAC1B,EAAE;QACF,mCAAmC;QACnC,6BAA6B;QAC7B,GAAG,OAAO;QACV,KAAK;QACL,GAAG;QACH,EAAE;QACF,YAAY;QACZ,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,IAAY,EAAE,MAAc;IAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;SAClC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;AACnD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ManifestGenerationInput } from "./generate-manifest.js";
2
+ import type { ImportBinding } from "./generate-manifest-utils.js";
3
+ import type { NormalizedDescriptor } from "./normalize-types.js";
4
+ export declare function eventListenerExecutableExpression(descriptor: NormalizedDescriptor, bindings: ReadonlyMap<string, ImportBinding>, input: ManifestGenerationInput, property: "handler" | "target"): string | undefined;
5
+ //# sourceMappingURL=generate-manifest-event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-manifest-event.d.ts","sourceRoot":"","sources":["../src/generate-manifest-event.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,oBAAoB,EAChC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAC5C,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAC7B,MAAM,GAAG,SAAS,CAsBpB"}
@@ -0,0 +1,81 @@
1
+ import { normalizeSourcePath } from "@relkit/contracts";
2
+ export function eventListenerExecutableExpression(descriptor, bindings, input, property) {
3
+ const value = isRecord(descriptor.value) ? descriptor.value : {};
4
+ const generated = isRecord(value.generated) ? value.generated : {};
5
+ const reference = descriptor.reference;
6
+ if (generated.generatedBy !== "event-listener" ||
7
+ reference?.kind !== "event-trigger" ||
8
+ reference.descriptorId !== generated.listenerId)
9
+ return undefined;
10
+ let module;
11
+ try {
12
+ module = normalizeSourcePath(reference.module, input.projectRoot);
13
+ }
14
+ catch {
15
+ return undefined;
16
+ }
17
+ const binding = bindings.get(module);
18
+ if (binding === undefined)
19
+ return undefined;
20
+ const listener = `${binding.alias}[${JSON.stringify(reference.exportName)}]`;
21
+ if (property === "handler")
22
+ return `${listener}.target.handler`;
23
+ const contracts = eventContracts(generated.listenerId, input, bindings);
24
+ return `__relkit_createEventListenerTarget(${listener}, [${contracts.join(", ")}], ${JSON.stringify(generated.functionId)})`;
25
+ }
26
+ function eventContracts(listenerId, input, bindings) {
27
+ const listener = input.descriptors.find((entry) => entry.kind === "event-trigger" && entry.id === listenerId);
28
+ const selector = isRecord(listener?.value) ? listener.value.selector : undefined;
29
+ return input.descriptors
30
+ .filter((entry) => entry.kind === "event" && selects(selector, entry.id))
31
+ .sort((left, right) => left.id.localeCompare(right.id))
32
+ .flatMap((entry) => {
33
+ const reference = entry.reference;
34
+ if (reference === undefined)
35
+ return [];
36
+ let module;
37
+ try {
38
+ module = normalizeSourcePath(reference.module, input.projectRoot);
39
+ }
40
+ catch {
41
+ return [];
42
+ }
43
+ const contract = bindings.get(module);
44
+ return contract === undefined
45
+ ? []
46
+ : [`${contract.alias}[${JSON.stringify(reference.exportName)}]`];
47
+ });
48
+ }
49
+ function selects(selector, eventId) {
50
+ if (!isRecord(selector))
51
+ return false;
52
+ if (selector.kind === "all")
53
+ return true;
54
+ if (selector.kind === "match" && typeof selector.pattern === "string") {
55
+ return matches(eventId, selector.pattern);
56
+ }
57
+ if (selector.kind === "single" && isRecord(selector.event)) {
58
+ return selector.event.eventId === eventId;
59
+ }
60
+ return (selector.kind === "anyOf" &&
61
+ Array.isArray(selector.events) &&
62
+ selector.events.some((entry) => isRecord(entry) && entry.eventId === eventId));
63
+ }
64
+ function matches(eventId, pattern) {
65
+ return matchSegments(pattern.split("."), eventId.split("."));
66
+ }
67
+ function matchSegments(pattern, value) {
68
+ if (pattern.length === 0)
69
+ return value.length === 0;
70
+ if (pattern[0] === "**") {
71
+ return (matchSegments(pattern.slice(1), value) ||
72
+ (value.length > 0 && matchSegments(pattern, value.slice(1))));
73
+ }
74
+ return (value.length > 0 &&
75
+ (pattern[0] === "*" || pattern[0] === value[0]) &&
76
+ matchSegments(pattern.slice(1), value.slice(1)));
77
+ }
78
+ function isRecord(value) {
79
+ return value !== null && typeof value === "object" && !Array.isArray(value);
80
+ }
81
+ //# sourceMappingURL=generate-manifest-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-manifest-event.js","sourceRoot":"","sources":["../src/generate-manifest-event.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Diagnostic } from "@relkit/diagnostics";
2
+ import type { ManifestGenerationInput } from "./generate-manifest.js";
3
+ import { type ImportBinding } from "./generate-manifest-utils.js";
4
+ import type { NormalizedDescriptor } from "./normalize-types.js";
5
+ export declare function functionExpressionsFor(functions: readonly NormalizedDescriptor[], functionById: ReadonlyMap<string, NormalizedDescriptor>, bindings: ReadonlyMap<string, ImportBinding>, input: ManifestGenerationInput, diagnostics: Diagnostic[]): ReadonlyMap<string, string>;
6
+ export declare function functionTargetExpressionsFor(functions: readonly NormalizedDescriptor[], bindings: ReadonlyMap<string, ImportBinding>, input: ManifestGenerationInput): ReadonlyMap<string, string>;
7
+ export declare function applicationExpressionFor(descriptor: NormalizedDescriptor | undefined, bindings: ReadonlyMap<string, ImportBinding>, input: ManifestGenerationInput): string | undefined;
8
+ export declare function descriptorExpressionsFor(descriptors: readonly NormalizedDescriptor[], bindings: ReadonlyMap<string, ImportBinding>, input: ManifestGenerationInput): ReadonlyMap<string, string>;
9
+ export declare function transformExpressionsFor(transforms: readonly NormalizedDescriptor[], bindings: ReadonlyMap<string, ImportBinding>, input: ManifestGenerationInput, diagnostics: Diagnostic[]): ReadonlyMap<string, string>;
10
+ export declare function middlewareExpressionsFor(middleware: readonly NormalizedDescriptor[], bindings: ReadonlyMap<string, ImportBinding>, input: ManifestGenerationInput, diagnostics: Diagnostic[]): ReadonlyMap<string, string>;
11
+ export declare function hookExpressionsFor(descriptors: readonly NormalizedDescriptor[], bindings: ReadonlyMap<string, ImportBinding>, input: ManifestGenerationInput): ReadonlyMap<string, string>;
12
+ //# sourceMappingURL=generate-manifest-expressions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-manifest-expressions.d.ts","sourceRoot":"","sources":["../src/generate-manifest-expressions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGjE,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,oBAAoB,EAAE,EAC1C,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,EACvD,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAC5C,KAAK,EAAE,uBAAuB,EAC9B,WAAW,EAAE,UAAU,EAAE,GACxB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CA0B7B;AACD,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,SAAS,oBAAoB,EAAE,EAC1C,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAC5C,KAAK,EAAE,uBAAuB,GAC7B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAY7B;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,oBAAoB,GAAG,SAAS,EAC5C,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAC5C,KAAK,EAAE,uBAAuB,GAC7B,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,SAAS,oBAAoB,EAAE,EAC5C,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAC5C,KAAK,EAAE,uBAAuB,GAC7B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAO7B;AAYD,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,SAAS,oBAAoB,EAAE,EAC3C,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAC5C,KAAK,EAAE,uBAAuB,EAC9B,WAAW,EAAE,UAAU,EAAE,GACxB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAW7B;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,SAAS,oBAAoB,EAAE,EAC3C,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAC5C,KAAK,EAAE,uBAAuB,EAC9B,WAAW,EAAE,UAAU,EAAE,GACxB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAa7B;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,SAAS,oBAAoB,EAAE,EAC5C,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAC5C,KAAK,EAAE,uBAAuB,GAC7B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAe7B"}