@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 rel-kit
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # @relkit/compiler
2
+
3
+ Unsupported internal RELKIT source compiler; use @relkit/cli.
4
+
5
+ See [@relkit/app](https://github.com/rel-kit/relkit) for supported application APIs.
@@ -0,0 +1,7 @@
1
+ import { type ConfigIssue } from "./config-loader-types.js";
2
+ export interface LoadedDeploymentConfig {
3
+ readonly target: "aws";
4
+ readonly adapter: "pulumi";
5
+ }
6
+ export declare function readDeployment(value: unknown, issues: ConfigIssue[]): LoadedDeploymentConfig | undefined;
7
+ //# sourceMappingURL=config-loader-deployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader-deployment.d.ts","sourceRoot":"","sources":["../src/config-loader-deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG1E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;CAC5B;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,WAAW,EAAE,GACpB,sBAAsB,GAAG,SAAS,CA8BpC"}
@@ -0,0 +1,36 @@
1
+ import { CONFIG_CODES } from "./config-loader-types.js";
2
+ import { readRecord } from "./config-loader-utils.js";
3
+ export function readDeployment(value, issues) {
4
+ if (value === undefined)
5
+ return undefined;
6
+ const record = readRecord(value, "deployment", issues);
7
+ if (record === undefined)
8
+ return undefined;
9
+ for (const key of Object.keys(record)) {
10
+ if (key !== "target" && key !== "adapter") {
11
+ issues.push({
12
+ code: CONFIG_CODES.key,
13
+ path: `deployment.${key}`,
14
+ message: `Unknown deployment setting "${key}".`,
15
+ });
16
+ }
17
+ }
18
+ if (record.target !== "aws") {
19
+ issues.push({
20
+ code: CONFIG_CODES.behavior,
21
+ path: "deployment.target",
22
+ message: 'deployment.target must be "aws".',
23
+ });
24
+ }
25
+ if (record.adapter !== "pulumi") {
26
+ issues.push({
27
+ code: CONFIG_CODES.behavior,
28
+ path: "deployment.adapter",
29
+ message: 'deployment.adapter must be "pulumi".',
30
+ });
31
+ }
32
+ return record.target === "aws" && record.adapter === "pulumi"
33
+ ? Object.freeze({ target: "aws", adapter: "pulumi" })
34
+ : undefined;
35
+ }
36
+ //# sourceMappingURL=config-loader-deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader-deployment.js","sourceRoot":"","sources":["../src/config-loader-deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAOtD,MAAM,UAAU,cAAc,CAC5B,KAAc,EACd,MAAqB;IAErB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACvD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,YAAY,CAAC,GAAG;gBACtB,IAAI,EAAE,cAAc,GAAG,EAAE;gBACzB,OAAO,EAAE,+BAA+B,GAAG,IAAI;aAChD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,YAAY,CAAC,QAAQ;YAC3B,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,kCAAkC;SAC5C,CAAC,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,YAAY,CAAC,QAAQ;YAC3B,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,sCAAsC;SAChD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ;QAC3D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QACrD,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { type ConfigIssue } from "./config-loader-types.js";
2
+ export declare function readInspector(value: unknown, issues: ConfigIssue[]): Readonly<{
3
+ port: 3210;
4
+ enabledInProduction: false;
5
+ maxPreviewBytes: 1048576;
6
+ }> | {
7
+ port: number;
8
+ enabledInProduction: boolean;
9
+ maxPreviewBytes: number;
10
+ };
11
+ export declare function readServer(value: unknown, issues: ConfigIssue[]): Readonly<{
12
+ port: 3000;
13
+ maxBodyBytes: 1048576;
14
+ apiDocs: Readonly<{
15
+ enabledInProduction: false;
16
+ }>;
17
+ clientContract: true;
18
+ mcp: true;
19
+ }> | {
20
+ port: number;
21
+ maxBodyBytes: number;
22
+ apiDocs: Readonly<{
23
+ enabledInProduction: false;
24
+ }> | {
25
+ enabledInProduction: boolean;
26
+ };
27
+ clientContract: boolean;
28
+ mcp: boolean;
29
+ };
30
+ //# sourceMappingURL=config-loader-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader-runtime.d.ts","sourceRoot":"","sources":["../src/config-loader-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGlG,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;;;;;;;;EAqClE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;;;;;;;;;;;;;;;;;;EAqB/D"}
@@ -0,0 +1,105 @@
1
+ import { CONFIG_CODES, DEFAULT_TOOLING_CONFIG } from "./config-loader-types.js";
2
+ import { readRecord } from "./config-loader-utils.js";
3
+ export function readInspector(value, issues) {
4
+ if (value === undefined)
5
+ return DEFAULT_TOOLING_CONFIG.inspector;
6
+ const record = readRecord(value, "inspector", issues);
7
+ if (record === undefined)
8
+ return DEFAULT_TOOLING_CONFIG.inspector;
9
+ for (const key of Object.keys(record)) {
10
+ if (!["port", "enabledInProduction", "maxPreviewBytes"].includes(key)) {
11
+ issues.push({
12
+ code: CONFIG_CODES.inspector,
13
+ path: `inspector.${key}`,
14
+ message: `Unknown inspector setting "${key}".`,
15
+ });
16
+ }
17
+ }
18
+ const port = record.port;
19
+ if (port !== undefined &&
20
+ (typeof port !== "number" || !Number.isInteger(port) || port < 1 || port > 65535)) {
21
+ issues.push({
22
+ code: CONFIG_CODES.port,
23
+ path: "inspector.port",
24
+ message: "inspector.port must be an integer from 1 through 65535.",
25
+ });
26
+ }
27
+ const enabledInProduction = readBoolean(record.enabledInProduction, "inspector.enabledInProduction", false, issues);
28
+ const maxPreviewBytes = readPositive(record.maxPreviewBytes, "inspector.maxPreviewBytes", DEFAULT_TOOLING_CONFIG.inspector.maxPreviewBytes, issues);
29
+ return { port: typeof port === "number" ? port : 3210, enabledInProduction, maxPreviewBytes };
30
+ }
31
+ export function readServer(value, issues) {
32
+ if (value === undefined)
33
+ return DEFAULT_TOOLING_CONFIG.server;
34
+ const record = readRecord(value, "server", issues);
35
+ if (record === undefined)
36
+ return DEFAULT_TOOLING_CONFIG.server;
37
+ rejectUnknown(record, "server", ["port", "maxBodyBytes", "apiDocs", "clientContract", "mcp"], issues);
38
+ const port = readPort(record.port, "server.port", DEFAULT_TOOLING_CONFIG.server.port, issues);
39
+ const maxBodyBytes = readPositive(record.maxBodyBytes, "server.maxBodyBytes", DEFAULT_TOOLING_CONFIG.server.maxBodyBytes, issues);
40
+ const apiDocs = readApiDocs(record.apiDocs, issues);
41
+ const clientContract = readBoolean(record.clientContract, "server.clientContract", true, issues);
42
+ const mcp = readBoolean(record.mcp, "server.mcp", true, issues);
43
+ return { port, maxBodyBytes, apiDocs, clientContract, mcp };
44
+ }
45
+ function readBoolean(value, path, fallback, issues) {
46
+ if (value === undefined)
47
+ return fallback;
48
+ if (typeof value !== "boolean") {
49
+ issues.push({ code: CONFIG_CODES.behavior, path, message: `${path} must be a boolean.` });
50
+ return fallback;
51
+ }
52
+ return value;
53
+ }
54
+ function readApiDocs(value, issues) {
55
+ if (value === undefined)
56
+ return DEFAULT_TOOLING_CONFIG.server.apiDocs;
57
+ const record = readRecord(value, "server.apiDocs", issues);
58
+ if (record === undefined)
59
+ return DEFAULT_TOOLING_CONFIG.server.apiDocs;
60
+ rejectUnknown(record, "server.apiDocs", ["enabledInProduction"], issues);
61
+ if (record.enabledInProduction !== undefined && typeof record.enabledInProduction !== "boolean") {
62
+ issues.push({
63
+ code: CONFIG_CODES.behavior,
64
+ path: "server.apiDocs.enabledInProduction",
65
+ message: "server.apiDocs.enabledInProduction must be a boolean.",
66
+ });
67
+ }
68
+ return {
69
+ enabledInProduction: typeof record.enabledInProduction === "boolean" ? record.enabledInProduction : false,
70
+ };
71
+ }
72
+ function readPort(value, path, fallback, issues) {
73
+ if (value === undefined)
74
+ return fallback;
75
+ if (!Number.isSafeInteger(value) || Number(value) < 1 || Number(value) > 65_535) {
76
+ issues.push({
77
+ code: CONFIG_CODES.port,
78
+ path,
79
+ message: `${path} must be from 1 through 65535.`,
80
+ });
81
+ return fallback;
82
+ }
83
+ return Number(value);
84
+ }
85
+ function readPositive(value, path, fallback, issues) {
86
+ if (value === undefined)
87
+ return fallback;
88
+ if (!Number.isSafeInteger(value) || Number(value) < 1) {
89
+ issues.push({ code: CONFIG_CODES.behavior, path, message: `${path} must be positive.` });
90
+ return fallback;
91
+ }
92
+ return Number(value);
93
+ }
94
+ function rejectUnknown(record, path, allowed, issues) {
95
+ for (const key of Object.keys(record)) {
96
+ if (!allowed.includes(key)) {
97
+ issues.push({
98
+ code: CONFIG_CODES.key,
99
+ path: `${path}.${key}`,
100
+ message: `Unknown ${path} setting "${key}".`,
101
+ });
102
+ }
103
+ }
104
+ }
105
+ //# sourceMappingURL=config-loader-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader-runtime.js","sourceRoot":"","sources":["../src/config-loader-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ export declare const CONFIG_CODES: Readonly<{
2
+ readonly root: "RELKIT_CONFIG_ROOT_INVALID";
3
+ readonly key: "RELKIT_CONFIG_KEY_NOT_ALLOWED";
4
+ readonly behavior: "RELKIT_CONFIG_APPLICATION_BEHAVIOR";
5
+ readonly path: "RELKIT_CONFIG_PATH_INVALID";
6
+ readonly outsideRoot: "RELKIT_CONFIG_PATH_OUTSIDE_ROOT";
7
+ readonly source: "RELKIT_CONFIG_SOURCE_INVALID";
8
+ readonly exclude: "RELKIT_CONFIG_EXCLUDE_INVALID";
9
+ readonly inspector: "RELKIT_CONFIG_INSPECTOR_INVALID";
10
+ readonly port: "RELKIT_CONFIG_PORT_INVALID";
11
+ readonly legacy: "RELKIT_CONFIG_LEGACY_KEY";
12
+ }>;
13
+ export type ConfigIssueCode = (typeof CONFIG_CODES)[keyof typeof CONFIG_CODES];
14
+ export interface ConfigIssue {
15
+ readonly code: ConfigIssueCode;
16
+ readonly path: string;
17
+ readonly message: string;
18
+ }
19
+ export interface ToolingConfigInput {
20
+ readonly server?: {
21
+ readonly port?: number;
22
+ readonly maxBodyBytes?: number;
23
+ readonly apiDocs?: {
24
+ readonly enabledInProduction?: boolean;
25
+ };
26
+ readonly clientContract?: boolean;
27
+ readonly mcp?: boolean;
28
+ };
29
+ readonly inspector?: {
30
+ readonly port?: number;
31
+ readonly enabledInProduction?: boolean;
32
+ readonly maxPreviewBytes?: number;
33
+ };
34
+ readonly deployment?: {
35
+ readonly target: "aws";
36
+ readonly adapter: "pulumi";
37
+ };
38
+ }
39
+ export interface LoadedToolingConfig {
40
+ readonly projectRoot: string;
41
+ readonly source: readonly string[];
42
+ readonly exclude: readonly string[];
43
+ readonly generatedDirectory: string;
44
+ readonly server: {
45
+ readonly port: number;
46
+ readonly maxBodyBytes: number;
47
+ readonly apiDocs: {
48
+ readonly enabledInProduction: boolean;
49
+ };
50
+ readonly clientContract: boolean;
51
+ readonly mcp: boolean;
52
+ };
53
+ readonly inspector: {
54
+ readonly port: number;
55
+ readonly enabledInProduction: boolean;
56
+ readonly maxPreviewBytes: number;
57
+ };
58
+ readonly deployment?: {
59
+ readonly target: "aws";
60
+ readonly adapter: "pulumi";
61
+ };
62
+ }
63
+ export type InspectorConfigInput = ToolingConfigInput["inspector"];
64
+ export type InspectorConfig = NonNullable<LoadedToolingConfig["inspector"]>;
65
+ export type RelkitConfig = LoadedToolingConfig;
66
+ export type ConfigLoaderOptions = {
67
+ readonly projectRoot?: string;
68
+ };
69
+ export declare const DEFAULT_TOOLING_CONFIG: Readonly<{
70
+ source: readonly string[];
71
+ exclude: readonly string[];
72
+ generatedDirectory: ".relkit/generated";
73
+ server: Readonly<{
74
+ port: 3000;
75
+ maxBodyBytes: 1048576;
76
+ apiDocs: Readonly<{
77
+ enabledInProduction: false;
78
+ }>;
79
+ clientContract: true;
80
+ mcp: true;
81
+ }>;
82
+ inspector: Readonly<{
83
+ port: 3210;
84
+ enabledInProduction: false;
85
+ maxPreviewBytes: 1048576;
86
+ }>;
87
+ }>;
88
+ export declare const DEFAULT_CONFIG: Readonly<{
89
+ source: readonly string[];
90
+ exclude: readonly string[];
91
+ generatedDirectory: ".relkit/generated";
92
+ server: Readonly<{
93
+ port: 3000;
94
+ maxBodyBytes: 1048576;
95
+ apiDocs: Readonly<{
96
+ enabledInProduction: false;
97
+ }>;
98
+ clientContract: true;
99
+ mcp: true;
100
+ }>;
101
+ inspector: Readonly<{
102
+ port: 3210;
103
+ enabledInProduction: false;
104
+ maxPreviewBytes: 1048576;
105
+ }>;
106
+ }>;
107
+ //# sourceMappingURL=config-loader-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader-types.d.ts","sourceRoot":"","sources":["../src/config-loader-types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;;;;;;;EAWd,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE/E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE;YAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAC9D,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;QACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;KACnC,CAAC;IACF,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,OAAO,EAAE;YAAE,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;SAAE,CAAC;QAC5D,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;QACjC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;QACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;KAClC,CAAC;IACF,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACnE,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAC/C,MAAM,MAAM,mBAAmB,GAAG;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;EAsBjC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;EAAyB,CAAC"}
@@ -0,0 +1,37 @@
1
+ export const CONFIG_CODES = Object.freeze({
2
+ root: "RELKIT_CONFIG_ROOT_INVALID",
3
+ key: "RELKIT_CONFIG_KEY_NOT_ALLOWED",
4
+ behavior: "RELKIT_CONFIG_APPLICATION_BEHAVIOR",
5
+ path: "RELKIT_CONFIG_PATH_INVALID",
6
+ outsideRoot: "RELKIT_CONFIG_PATH_OUTSIDE_ROOT",
7
+ source: "RELKIT_CONFIG_SOURCE_INVALID",
8
+ exclude: "RELKIT_CONFIG_EXCLUDE_INVALID",
9
+ inspector: "RELKIT_CONFIG_INSPECTOR_INVALID",
10
+ port: "RELKIT_CONFIG_PORT_INVALID",
11
+ legacy: "RELKIT_CONFIG_LEGACY_KEY",
12
+ });
13
+ export const DEFAULT_TOOLING_CONFIG = Object.freeze({
14
+ source: Object.freeze(["src/**/*.ts"]),
15
+ exclude: Object.freeze([
16
+ "src/**/*.test.ts",
17
+ "src/**/*.spec.ts",
18
+ "src/**/*.d.ts",
19
+ "src/**/__tests__/**",
20
+ "src/**/__fixtures__/**",
21
+ ]),
22
+ generatedDirectory: ".relkit/generated",
23
+ server: Object.freeze({
24
+ port: 3000,
25
+ maxBodyBytes: 1_048_576,
26
+ apiDocs: Object.freeze({ enabledInProduction: false }),
27
+ clientContract: true,
28
+ mcp: true,
29
+ }),
30
+ inspector: Object.freeze({
31
+ port: 3210,
32
+ enabledInProduction: false,
33
+ maxPreviewBytes: 1_048_576,
34
+ }),
35
+ });
36
+ export const DEFAULT_CONFIG = DEFAULT_TOOLING_CONFIG;
37
+ //# sourceMappingURL=config-loader-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader-types.js","sourceRoot":"","sources":["../src/config-loader-types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,4BAA4B;IAClC,GAAG,EAAE,+BAA+B;IACpC,QAAQ,EAAE,oCAAoC;IAC9C,IAAI,EAAE,4BAA4B;IAClC,WAAW,EAAE,iCAAiC;IAC9C,MAAM,EAAE,8BAA8B;IACtC,OAAO,EAAE,+BAA+B;IACxC,SAAS,EAAE,iCAAiC;IAC5C,IAAI,EAAE,4BAA4B;IAClC,MAAM,EAAE,0BAA0B;CAC1B,CAAC,CAAC;AAyDZ,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;QACrB,kBAAkB;QAClB,kBAAkB;QAClB,eAAe;QACf,qBAAqB;QACrB,wBAAwB;KACzB,CAAC;IACF,kBAAkB,EAAE,mBAAmB;IACvC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,IAAI;QACV,YAAY,EAAE,SAAS;QACvB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC;QACtD,cAAc,EAAE,IAAI;QACpB,GAAG,EAAE,IAAI;KACV,CAAC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;QACvB,IAAI,EAAE,IAAI;QACV,mBAAmB,EAAE,KAAK;QAC1B,eAAe,EAAE,SAAS;KAC3B,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type ConfigIssue } from "./config-loader-types.js";
2
+ export declare function readRecord(value: unknown, path: string, issues: ConfigIssue[]): Record<string, unknown> | undefined;
3
+ export declare function unwrapDefault(value: unknown): unknown;
4
+ export declare function errorMessage(error: unknown): string;
5
+ export declare function freezeIssues(issues: readonly ConfigIssue[]): readonly ConfigIssue[];
6
+ export declare function isPlainRecord(value: unknown): value is Record<string, unknown>;
7
+ export declare function isAbsolute(value: string): boolean;
8
+ export declare function posixNormalize(value: string): string;
9
+ export declare const allowedKeys: Set<string>;
10
+ //# sourceMappingURL=config-loader-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader-utils.d.ts","sourceRoot":"","sources":["../src/config-loader-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE1E,wBAAgB,UAAU,CACxB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EAAE,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CA4BrC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAUrD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEnD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,WAAW,EAAE,CAMnF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAI9E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASpD;AAED,eAAO,MAAM,WAAW,aAoBtB,CAAC"}
@@ -0,0 +1,88 @@
1
+ import { CONFIG_CODES } from "./config-loader-types.js";
2
+ export function readRecord(value, path, issues) {
3
+ if (!isPlainRecord(value)) {
4
+ issues.push({
5
+ code: path === "$" ? CONFIG_CODES.root : CONFIG_CODES.behavior,
6
+ path,
7
+ message: path === "$"
8
+ ? "Tooling config must be a plain object."
9
+ : `${path} cannot contain application behavior.`,
10
+ });
11
+ return undefined;
12
+ }
13
+ const safe = Reflect.ownKeys(value).every((key) => {
14
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
15
+ return ((typeof key === "string" || key === Symbol.for("relkit.descriptor")) &&
16
+ descriptor !== undefined &&
17
+ "value" in descriptor);
18
+ });
19
+ if (!safe) {
20
+ issues.push({
21
+ code: CONFIG_CODES.behavior,
22
+ path,
23
+ message: "Tooling config cannot contain accessors, symbols, or executable behavior.",
24
+ });
25
+ }
26
+ return safe ? value : undefined;
27
+ }
28
+ export function unwrapDefault(value) {
29
+ if (!isPlainRecord(value) ||
30
+ Object.keys(value).length !== 1 ||
31
+ !Object.hasOwn(value, "default")) {
32
+ return value;
33
+ }
34
+ const descriptor = Object.getOwnPropertyDescriptor(value, "default");
35
+ return descriptor !== undefined && "value" in descriptor ? descriptor.value : value;
36
+ }
37
+ export function errorMessage(error) {
38
+ return error instanceof Error ? error.message : "value is invalid";
39
+ }
40
+ export function freezeIssues(issues) {
41
+ return Object.freeze([...issues]
42
+ .map((issue) => Object.freeze({ ...issue }))
43
+ .sort((a, b) => a.path.localeCompare(b.path) || a.code.localeCompare(b.code)));
44
+ }
45
+ export function isPlainRecord(value) {
46
+ if (value === null || typeof value !== "object" || Array.isArray(value))
47
+ return false;
48
+ const prototype = Object.getPrototypeOf(value);
49
+ return prototype === Object.prototype || prototype === null;
50
+ }
51
+ export function isAbsolute(value) {
52
+ return value.startsWith("/") || /^[A-Za-z]:\//.test(value);
53
+ }
54
+ export function posixNormalize(value) {
55
+ const segments = [];
56
+ for (const segment of value.split("/")) {
57
+ if (segment === "" || segment === ".")
58
+ continue;
59
+ if (segment === "..")
60
+ segments.pop();
61
+ else
62
+ segments.push(segment);
63
+ }
64
+ const prefix = value.startsWith("/") ? "/" : "";
65
+ return `${prefix}${segments.join("/")}` || prefix || ".";
66
+ }
67
+ export const allowedKeys = new Set([
68
+ "kind",
69
+ "id",
70
+ "ref",
71
+ "title",
72
+ "description",
73
+ "tags",
74
+ "env",
75
+ "buckets",
76
+ "caches",
77
+ "jobs",
78
+ "events",
79
+ "models",
80
+ "observability",
81
+ "defaults",
82
+ "sentry",
83
+ "telemetry",
84
+ "server",
85
+ "inspector",
86
+ "deployment",
87
+ ]);
88
+ //# sourceMappingURL=config-loader-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader-utils.js","sourceRoot":"","sources":["../src/config-loader-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type ConfigIssue, type ConfigLoaderOptions, type LoadedToolingConfig } from "./config-loader-types.js";
2
+ export { CONFIG_CODES, DEFAULT_CONFIG, DEFAULT_TOOLING_CONFIG } from "./config-loader-types.js";
3
+ export type { ConfigIssue, ConfigIssueCode, ConfigLoaderOptions, InspectorConfig, InspectorConfigInput, LoadedToolingConfig, ToolingConfigInput, RelkitConfig, } from "./config-loader-types.js";
4
+ export declare class ConfigValidationError extends TypeError {
5
+ readonly name = "ConfigValidationError";
6
+ readonly issues: readonly ConfigIssue[];
7
+ constructor(issues: readonly ConfigIssue[]);
8
+ }
9
+ export declare function normalizeProjectRoot(projectRoot?: string): string;
10
+ export declare function validateConfig(input: unknown, options?: ConfigLoaderOptions | string): readonly ConfigIssue[];
11
+ export declare function loadConfig(input?: unknown, options?: ConfigLoaderOptions | string): LoadedToolingConfig;
12
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../src/config-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAalC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAChG,YAAY,EACV,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAElC,qBAAa,qBAAsB,SAAQ,SAAS;IAClD,QAAQ,CAAC,IAAI,2BAA2B;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;gBAE5B,MAAM,EAAE,SAAS,WAAW,EAAE;CAK3C;AAED,wBAAgB,oBAAoB,CAAC,WAAW,SAAgB,GAAG,MAAM,CAMxE;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,mBAAmB,GAAG,MAAW,GACzC,SAAS,WAAW,EAAE,CAExB;AAED,wBAAgB,UAAU,CACxB,KAAK,GAAE,OAAY,EACnB,OAAO,GAAE,mBAAmB,GAAG,MAAW,GACzC,mBAAmB,CAIrB"}
@@ -0,0 +1,89 @@
1
+ import { CONFIG_CODES, DEFAULT_TOOLING_CONFIG, } from "./config-loader-types.js";
2
+ import { allowedKeys, errorMessage, freezeIssues, isAbsolute, posixNormalize, readRecord, unwrapDefault, } from "./config-loader-utils.js";
3
+ import { readInspector, readServer } from "./config-loader-runtime.js";
4
+ import { readDeployment } from "./config-loader-deployment.js";
5
+ export { CONFIG_CODES, DEFAULT_CONFIG, DEFAULT_TOOLING_CONFIG } from "./config-loader-types.js";
6
+ export class ConfigValidationError extends TypeError {
7
+ name = "ConfigValidationError";
8
+ issues;
9
+ constructor(issues) {
10
+ const normalized = Object.freeze(issues.map((issue) => Object.freeze({ ...issue })));
11
+ super(`Invalid relkit.config.ts: ${normalized.map((issue) => issue.message).join("; ")}`);
12
+ this.issues = normalized;
13
+ }
14
+ }
15
+ export function normalizeProjectRoot(projectRoot = process.cwd()) {
16
+ const value = projectRoot.replaceAll("\\", "/").trim();
17
+ if (!isAbsolute(value))
18
+ throw new TypeError("Project root must be an absolute path");
19
+ const unc = value.startsWith("//");
20
+ const normalized = posixNormalize(unc ? `/${value.slice(2)}` : value);
21
+ return unc ? `//${normalized.replace(/^\/+/, "")}` : normalized;
22
+ }
23
+ export function validateConfig(input, options = {}) {
24
+ return parseConfig(input, options).issues;
25
+ }
26
+ export function loadConfig(input = {}, options = {}) {
27
+ const parsed = parseConfig(input, options);
28
+ if (parsed.issues.length > 0)
29
+ throw new ConfigValidationError(parsed.issues);
30
+ return parsed.config;
31
+ }
32
+ function parseConfig(input, options) {
33
+ const issues = [];
34
+ let root;
35
+ try {
36
+ root = normalizeProjectRoot(typeof options === "string" ? options : options.projectRoot);
37
+ }
38
+ catch (error) {
39
+ issues.push({ code: CONFIG_CODES.root, path: "projectRoot", message: errorMessage(error) });
40
+ return { issues: freezeIssues(issues) };
41
+ }
42
+ const record = readRecord(unwrapDefault(input), "$", issues);
43
+ if (record === undefined)
44
+ return { issues: freezeIssues(issues) };
45
+ for (const key of Object.keys(record)) {
46
+ if (!allowedKeys.has(key)) {
47
+ const migration = legacyMigration(key);
48
+ const behavior = typeof record[key] === "function";
49
+ issues.push({
50
+ code: migration === undefined
51
+ ? behavior
52
+ ? CONFIG_CODES.behavior
53
+ : CONFIG_CODES.key
54
+ : CONFIG_CODES.legacy,
55
+ path: key,
56
+ message: migration ??
57
+ (behavior
58
+ ? `Application behavior is not allowed in tooling config at "${key}".`
59
+ : `Unknown tooling config key "${key}".`),
60
+ });
61
+ }
62
+ }
63
+ const server = readServer(record.server, issues);
64
+ const inspector = readInspector(record.inspector, issues);
65
+ const deployment = readDeployment(record.deployment, issues);
66
+ if (issues.length > 0)
67
+ return { issues: freezeIssues(issues) };
68
+ return {
69
+ config: Object.freeze({
70
+ projectRoot: root,
71
+ source: DEFAULT_TOOLING_CONFIG.source,
72
+ exclude: DEFAULT_TOOLING_CONFIG.exclude,
73
+ generatedDirectory: DEFAULT_TOOLING_CONFIG.generatedDirectory,
74
+ server: Object.freeze({ ...server, apiDocs: Object.freeze(server.apiDocs) }),
75
+ inspector: Object.freeze(inspector),
76
+ ...(deployment === undefined ? {} : { deployment }),
77
+ }),
78
+ issues: Object.freeze([]),
79
+ };
80
+ }
81
+ function legacyMigration(key) {
82
+ return {
83
+ entry: 'Remove "entry"; RELKIT discovers descriptors from "src/**/*.ts".',
84
+ source: 'Remove "source"; RELKIT always discovers "src/**/*.ts".',
85
+ exclude: 'Remove "exclude"; tests, fixtures, declarations, and generated content are excluded by convention.',
86
+ generatedDirectory: 'Remove "generatedDirectory"; generated output is always ".relkit/generated".',
87
+ }[key];
88
+ }
89
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../src/config-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ExtractedDescriptor } from "./discovery/extract.js";
2
+ export declare const CONTEXT_REGISTRY_FILE = "context-registry.d.ts";
3
+ export declare function generateContextRegistry(descriptors: readonly ExtractedDescriptor[], options: {
4
+ readonly projectRoot: string;
5
+ readonly generatedDirectory?: string;
6
+ }): string;
7
+ //# sourceMappingURL=context-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-registry.d.ts","sourceRoot":"","sources":["../src/context-registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAE7D,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,SAAS,mBAAmB,EAAE,EAC3C,OAAO,EAAE;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9E,MAAM,CAiCR"}