@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,55 @@
1
+ import { relative, resolve } from "node:path";
2
+ import { normalizeSourcePath } from "@relkit/contracts";
3
+ export const CONTEXT_REGISTRY_FILE = "context-registry.d.ts";
4
+ export function generateContextRegistry(descriptors, options) {
5
+ const root = resolve(options.projectRoot);
6
+ const output = resolve(root, options.generatedDirectory ?? ".relkit/generated");
7
+ const dataModel = descriptors.find((entry) => entry.descriptor.kind === "data-model");
8
+ const auth = descriptors.find((entry) => isAuthRoute(entry));
9
+ const constants = descriptors.filter((entry) => entry.descriptor.kind === "constants");
10
+ const prompts = descriptors.filter((entry) => entry.descriptor.kind === "prompt");
11
+ const fields = [
12
+ dataModel === undefined
13
+ ? undefined
14
+ : ` readonly database: import("@relkit/drizzle").DatabaseContext<${importType(dataModel, output, root)}>;`,
15
+ auth === undefined
16
+ ? undefined
17
+ : ` readonly auth: import("@relkit/functions").AuthContext<import("@relkit/better-auth").InferBetterAuthSession<${importType(auth, output, root)}["handler"]>>;`,
18
+ constants.length === 0
19
+ ? undefined
20
+ : ` readonly constants: ${constants.map((entry) => `import("@relkit/app").ResolvedConstants<${importType(entry, output, root)}>`).join(" & ")};`,
21
+ prompts.length === 0
22
+ ? undefined
23
+ : ` readonly prompts: { ${prompts.map((entry) => `readonly ${JSON.stringify(entry.exportName)}: import("@relkit/app").ResolvedPrompt<${importType(entry, output, root)}>`).join("; ")} };`,
24
+ ].filter((value) => value !== undefined);
25
+ return [
26
+ "declare global {",
27
+ " namespace Relkit {",
28
+ " interface ApplicationContextRegistry {",
29
+ ...fields,
30
+ " }",
31
+ " }",
32
+ "}",
33
+ "",
34
+ "export {};",
35
+ "",
36
+ ].join("\n");
37
+ }
38
+ function importType(entry, output, root) {
39
+ const source = resolve(root, normalizeSourcePath(entry.reference.module, root));
40
+ const path = relative(output, source)
41
+ .replaceAll("\\", "/")
42
+ .replace(/\.(?:[cm]?ts|tsx)$/, ".js");
43
+ const module = path.startsWith(".") ? path : `./${path}`;
44
+ return `typeof import(${JSON.stringify(module)})[${JSON.stringify(entry.exportName)}]`;
45
+ }
46
+ function isAuthRoute(entry) {
47
+ if (entry.descriptor.kind !== "route")
48
+ return false;
49
+ const metadata = entry.descriptor.metadata;
50
+ return isRecord(metadata) && isRecord(metadata.auth) && metadata.auth.kind === "better-auth";
51
+ }
52
+ function isRecord(value) {
53
+ return value !== null && typeof value === "object" && !Array.isArray(value);
54
+ }
55
+ //# sourceMappingURL=context-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-registry.js","sourceRoot":"","sources":["../src/context-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { type SourceLocation } from "@relkit/contracts";
2
+ import { type Diagnostic } from "@relkit/diagnostics";
3
+ export declare const CONVENTION_CODES: Readonly<{
4
+ readonly directory: "RELKIT_CONVENTION_DIRECTORY";
5
+ readonly suffix: "RELKIT_CONVENTION_SUFFIX";
6
+ readonly export: "RELKIT_CONVENTION_EXPORT";
7
+ readonly multipleKinds: "RELKIT_CONVENTION_MULTIPLE_KINDS";
8
+ readonly idStyle: "RELKIT_CONVENTION_ID_STYLE";
9
+ }>;
10
+ export type ConventionCode = (typeof CONVENTION_CODES)[keyof typeof CONVENTION_CODES];
11
+ export interface ConventionExport {
12
+ readonly name?: string;
13
+ readonly isDefault?: boolean;
14
+ readonly defaultExport?: boolean;
15
+ }
16
+ export interface ConventionCheckInput {
17
+ readonly descriptor: unknown;
18
+ readonly sourcePath: string;
19
+ readonly projectRoot?: string;
20
+ readonly location?: Pick<SourceLocation, "line" | "column">;
21
+ readonly exportName?: string;
22
+ readonly exportKind?: "default" | "named" | "none";
23
+ readonly isDefaultExport?: boolean;
24
+ readonly defaultExport?: boolean;
25
+ readonly exports?: readonly ConventionExport[];
26
+ readonly fileDescriptors?: readonly unknown[];
27
+ readonly fileKinds?: readonly unknown[];
28
+ }
29
+ export type ConventionCheckOptions = Omit<ConventionCheckInput, "descriptor" | "sourcePath">;
30
+ export declare function checkConventions(input: ConventionCheckInput): readonly Diagnostic[];
31
+ export declare function checkConventions(descriptor: unknown, sourcePath: string, options?: ConventionCheckOptions): readonly Diagnostic[];
32
+ //# sourceMappingURL=conventions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conventions.d.ts","sourceRoot":"","sources":["../src/conventions.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxE,eAAO,MAAM,gBAAgB;;;;;;EAMlB,CAAC;AACZ,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AACtF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AACD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;IAC5D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACnD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CACzC;AACD,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC;AAsB7F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,GAAG,SAAS,UAAU,EAAE,CAAC;AACrF,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,OAAO,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,SAAS,UAAU,EAAE,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { isDescriptor, isDescriptorKind, normalizeSourcePath, } from "@relkit/contracts";
2
+ import { createDiagnostic } from "@relkit/diagnostics";
3
+ export const CONVENTION_CODES = Object.freeze({
4
+ directory: "RELKIT_CONVENTION_DIRECTORY",
5
+ suffix: "RELKIT_CONVENTION_SUFFIX",
6
+ export: "RELKIT_CONVENTION_EXPORT",
7
+ multipleKinds: "RELKIT_CONVENTION_MULTIPLE_KINDS",
8
+ idStyle: "RELKIT_CONVENTION_ID_STYLE",
9
+ });
10
+ const rules = {
11
+ app: { directory: ".", suffix: "relkit.config.ts" },
12
+ function: { directory: "src/functions", suffix: ".function.ts" },
13
+ service: { directory: "src/services", suffix: ".service.ts" },
14
+ route: { directory: "src/routes", suffix: "route.ts" },
15
+ middleware: { directory: "src/middleware", suffix: ".middleware.ts" },
16
+ job: { directory: "src/jobs", suffix: ".job.ts" },
17
+ event: { directory: "src/events", suffix: ".event.ts" },
18
+ "event-trigger": { directory: "src/events", suffix: ".event.ts" },
19
+ bucket: { directory: "src/buckets", suffix: ".bucket.ts" },
20
+ cache: { directory: "src/cache", suffix: ".cache.ts" },
21
+ tool: { directory: "src/tools", suffix: ".tool.ts" },
22
+ agent: { directory: "src/agents", suffix: ".agent.ts" },
23
+ "data-model": { directory: "src/data", suffix: ".data-model.ts" },
24
+ constants: { directory: "src/constants", suffix: ".constants.ts" },
25
+ prompt: { directory: "src/prompts", suffix: ".prompt.ts" },
26
+ };
27
+ export function checkConventions(inputOrDescriptor, sourcePath, options = {}) {
28
+ const input = readInput(inputOrDescriptor, sourcePath, options);
29
+ if (input === undefined || !isDescriptor(input.descriptor))
30
+ return Object.freeze([]);
31
+ const path = normalizePath(input.sourcePath, input.projectRoot);
32
+ const descriptor = input.descriptor;
33
+ const rule = rules[descriptor.kind];
34
+ const diagnostics = [];
35
+ const add = (code, message, suggestion) => {
36
+ const location = diagnosticLocation(path, input);
37
+ diagnostics.push(createDiagnostic({
38
+ code,
39
+ severity: "warning",
40
+ message,
41
+ descriptorId: descriptor.id,
42
+ ...(location === undefined ? {} : { location }),
43
+ suggestion,
44
+ }, input.projectRoot === undefined ? {} : { projectRoot: input.projectRoot }));
45
+ };
46
+ const fileName = path.split("/").pop() ?? "";
47
+ const pattern = recommendedPattern(rule);
48
+ if (descriptor.kind !== "route" &&
49
+ descriptor.kind !== "app" &&
50
+ !path.startsWith(`${rule.directory}/`)) {
51
+ add(CONVENTION_CODES.directory, `Descriptor "${descriptor.id}" has kind "${descriptor.kind}" outside its recommended directory.`, `Move the descriptor under ${pattern}`);
52
+ }
53
+ if (descriptor.kind !== "route" && !fileName.endsWith(rule.suffix)) {
54
+ add(CONVENTION_CODES.suffix, `Descriptor "${descriptor.id}" does not use the recommended "${rule.suffix}" suffix.`, `Rename the file to use ${rule.suffix}`);
55
+ }
56
+ if (descriptor.kind !== "route" && hasExportWarning(input)) {
57
+ add(CONVENTION_CODES.export, `Descriptor file should default-export "${descriptor.id}".`, `Export "${descriptor.id}" as the file's default descriptor`);
58
+ }
59
+ const kinds = descriptorKinds(input, descriptor);
60
+ if (kinds.length > 1) {
61
+ add(CONVENTION_CODES.multipleKinds, `File contains descriptors of multiple kinds: ${kinds.join(", ")}.`, "Keep unrelated descriptor kinds in separate files");
62
+ }
63
+ if (!/^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$/.test(descriptor.id)) {
64
+ add(CONVENTION_CODES.idStyle, `Descriptor ID "${descriptor.id}" is not in the recommended lower-case dot/kebab style.`, "Use lower-case alphanumeric segments separated by dots or hyphens");
65
+ }
66
+ return Object.freeze(diagnostics);
67
+ }
68
+ function readInput(value, sourcePath, options) {
69
+ if (sourcePath !== undefined) {
70
+ return { ...options, descriptor: value, sourcePath };
71
+ }
72
+ if (!isRecord(value) || typeof value.descriptor === "undefined")
73
+ return undefined;
74
+ return value;
75
+ }
76
+ function normalizePath(value, projectRoot) {
77
+ try {
78
+ return normalizeSourcePath(value, projectRoot);
79
+ }
80
+ catch {
81
+ return value.replaceAll("\\", "/").replace(/^\.\//, "");
82
+ }
83
+ }
84
+ function diagnosticLocation(path, input) {
85
+ if (path === "" || /^(?:\/|[A-Za-z]:\/|\/\/)/.test(path))
86
+ return undefined;
87
+ return {
88
+ file: path,
89
+ line: input.location?.line ?? 1,
90
+ column: input.location?.column ?? 1,
91
+ };
92
+ }
93
+ function recommendedPattern(rule) {
94
+ return rule.directory === "." ? rule.suffix : `${rule.directory}/**/*${rule.suffix}`;
95
+ }
96
+ function hasExportWarning(input) {
97
+ if (input.exports !== undefined) {
98
+ return !input.exports.some((entry) => entry.isDefault ?? entry.defaultExport ?? entry.name === "default");
99
+ }
100
+ if (input.isDefaultExport !== undefined)
101
+ return !input.isDefaultExport;
102
+ if (input.defaultExport !== undefined)
103
+ return !input.defaultExport;
104
+ if (input.exportKind !== undefined)
105
+ return input.exportKind !== "default";
106
+ if (input.exportName !== undefined)
107
+ return input.exportName !== "default";
108
+ return false;
109
+ }
110
+ function descriptorKinds(input, descriptor) {
111
+ const kinds = new Set([descriptor.kind]);
112
+ for (const kind of input.fileKinds ?? []) {
113
+ if (isDescriptorKind(kind))
114
+ kinds.add(kind);
115
+ }
116
+ for (const candidate of input.fileDescriptors ?? []) {
117
+ if (isDescriptor(candidate))
118
+ kinds.add(candidate.kind);
119
+ }
120
+ return [...kinds].sort();
121
+ }
122
+ function isRecord(value) {
123
+ return value !== null && typeof value === "object" && !Array.isArray(value);
124
+ }
125
+ //# sourceMappingURL=conventions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../src/conventions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AstPrefilterCandidate } from "./ast-prefilter.js";
2
+ export declare function matchesExclude(fileName: string, patterns: readonly string[]): boolean;
3
+ export declare function scanSource(fileName: string, text: string): AstPrefilterCandidate;
4
+ //# sourceMappingURL=ast-prefilter-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-prefilter-utils.d.ts","sourceRoot":"","sources":["../../src/discovery/ast-prefilter-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,qBAAqB,EAAe,MAAM,oBAAoB,CAAC;AA8BpG,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAErF;AACD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAuEhF"}
@@ -0,0 +1,186 @@
1
+ import * as ts from "typescript";
2
+ import { readFacts } from "./source-facts.js";
3
+ const KNOWN_FACTORIES = new Set([
4
+ "defineConfig",
5
+ "defineConstants",
6
+ "definePrompt",
7
+ "defineDataModel",
8
+ "defineFunction",
9
+ "defineError",
10
+ "defineRoute",
11
+ "defineJob",
12
+ "defineEvent",
13
+ "onEvent",
14
+ "defineBucket",
15
+ "defineCache",
16
+ "defineTool",
17
+ "defineAgent",
18
+ "defineTransform",
19
+ "defineRequestTransform",
20
+ "defineMiddleware",
21
+ "defineService",
22
+ "defineServiceMiddleware",
23
+ ]);
24
+ const INDICATOR_ORDER = [
25
+ "relkit-import",
26
+ "factory",
27
+ "default-export",
28
+ "brand-access",
29
+ "re-export",
30
+ ];
31
+ export function matchesExclude(fileName, patterns) {
32
+ return patterns.some((pattern) => new Bun.Glob(pattern.replaceAll("\\", "/")).match(fileName));
33
+ }
34
+ export function scanSource(fileName, text) {
35
+ const source = ts.createSourceFile(fileName, text, ts.ScriptTarget.Latest, true, scriptKind(fileName));
36
+ const imports = new Set();
37
+ const factories = new Set();
38
+ const defaultExports = new Set();
39
+ const reExports = [];
40
+ const indicators = new Set();
41
+ let brandAccess = false;
42
+ const addImport = (specifier) => {
43
+ if (!specifier.startsWith("@relkit/"))
44
+ return;
45
+ imports.add(specifier);
46
+ indicators.add("relkit-import");
47
+ };
48
+ const addDefaultExport = () => {
49
+ defaultExports.add("default");
50
+ indicators.add("default-export");
51
+ };
52
+ const visit = (node) => {
53
+ if (ts.isImportDeclaration(node) && isRuntimeImport(node)) {
54
+ const specifier = node.moduleSpecifier;
55
+ if (ts.isStringLiteralLike(specifier))
56
+ addImport(specifier.text);
57
+ }
58
+ if (ts.isExportDeclaration(node) && isRuntimeExport(node)) {
59
+ const reExport = readReExport(node);
60
+ if (reExport !== undefined) {
61
+ reExports.push(reExport);
62
+ indicators.add("re-export");
63
+ addImport(reExport.moduleSpecifier);
64
+ if (reExport.names.includes("default"))
65
+ addDefaultExport();
66
+ }
67
+ }
68
+ if (ts.isExportAssignment(node) && !node.isExportEquals)
69
+ addDefaultExport();
70
+ if (hasDefaultModifier(node))
71
+ addDefaultExport();
72
+ if (ts.isIdentifier(node) && node.text === "RELKIT_DESCRIPTOR") {
73
+ brandAccess = true;
74
+ indicators.add("brand-access");
75
+ }
76
+ if (ts.isCallExpression(node)) {
77
+ const factory = lastSegment(expressionName(node.expression));
78
+ if (factory !== undefined && KNOWN_FACTORIES.has(factory)) {
79
+ factories.add(factory);
80
+ indicators.add("factory");
81
+ }
82
+ if (isDescriptorBrandCall(node)) {
83
+ brandAccess = true;
84
+ indicators.add("brand-access");
85
+ }
86
+ const moduleSpecifier = runtimeModuleSpecifier(node);
87
+ if (moduleSpecifier !== undefined)
88
+ addImport(moduleSpecifier);
89
+ }
90
+ ts.forEachChild(node, visit);
91
+ };
92
+ visit(source);
93
+ return Object.freeze({
94
+ fileName,
95
+ imports: Object.freeze([...imports].sort()),
96
+ factories: Object.freeze([...factories].sort()),
97
+ defaultExports: Object.freeze([...defaultExports].sort()),
98
+ brandAccess,
99
+ reExports: Object.freeze(reExports.sort((left, right) => left.moduleSpecifier.localeCompare(right.moduleSpecifier))),
100
+ facts: readFacts(source),
101
+ indicators: Object.freeze(INDICATOR_ORDER.filter((indicator) => indicators.has(indicator))),
102
+ });
103
+ }
104
+ function isRuntimeImport(node) {
105
+ const clause = node.importClause;
106
+ if (clause === undefined || clause.isTypeOnly)
107
+ return clause === undefined;
108
+ if (clause.namedBindings && ts.isNamedImports(clause.namedBindings)) {
109
+ return clause.namedBindings.elements.some((element) => !element.isTypeOnly);
110
+ }
111
+ return true;
112
+ }
113
+ function isRuntimeExport(node) {
114
+ if (node.isTypeOnly)
115
+ return false;
116
+ if (!node.exportClause || ts.isNamespaceExport(node.exportClause))
117
+ return true;
118
+ return node.exportClause.elements.some((element) => !element.isTypeOnly);
119
+ }
120
+ function readReExport(node) {
121
+ if (!node.moduleSpecifier || !ts.isStringLiteralLike(node.moduleSpecifier))
122
+ return undefined;
123
+ if (!node.exportClause)
124
+ return { moduleSpecifier: node.moduleSpecifier.text, names: ["*"], exportAll: true };
125
+ if (!ts.isNamedExports(node.exportClause))
126
+ return undefined;
127
+ const names = node.exportClause.elements
128
+ .filter((element) => !element.isTypeOnly)
129
+ .map((element) => element.name.text);
130
+ return names.length === 0
131
+ ? undefined
132
+ : {
133
+ moduleSpecifier: node.moduleSpecifier.text,
134
+ names: [...new Set(names)].sort(),
135
+ exportAll: false,
136
+ };
137
+ }
138
+ function isDescriptorBrandCall(node) {
139
+ const argument = node.arguments[0];
140
+ return (ts.isPropertyAccessExpression(node.expression) &&
141
+ ts.isIdentifier(node.expression.expression) &&
142
+ node.expression.expression.text === "Symbol" &&
143
+ node.expression.name.text === "for" &&
144
+ node.arguments.length === 1 &&
145
+ argument !== undefined &&
146
+ ts.isStringLiteralLike(argument) &&
147
+ argument.text === "relkit.descriptor");
148
+ }
149
+ function runtimeModuleSpecifier(node) {
150
+ const argument = node.arguments[0];
151
+ if (!(node.expression.kind === ts.SyntaxKind.ImportKeyword ||
152
+ (ts.isIdentifier(node.expression) && node.expression.text === "require")) ||
153
+ node.arguments.length !== 1 ||
154
+ argument === undefined ||
155
+ !ts.isStringLiteralLike(argument))
156
+ return undefined;
157
+ return argument.text;
158
+ }
159
+ function expressionName(expression) {
160
+ if (ts.isIdentifier(expression))
161
+ return expression.text;
162
+ if (ts.isPropertyAccessExpression(expression)) {
163
+ const parent = expressionName(expression.expression);
164
+ return parent === "" ? expression.name.text : `${parent}.${expression.name.text}`;
165
+ }
166
+ return "";
167
+ }
168
+ function lastSegment(value) {
169
+ const segment = value.split(".").at(-1);
170
+ return segment === "" ? undefined : segment;
171
+ }
172
+ function hasDefaultModifier(node) {
173
+ return (ts.canHaveModifiers(node) &&
174
+ ts.getModifiers(node)?.some((modifier) => modifier.kind === ts.SyntaxKind.DefaultKeyword) ===
175
+ true);
176
+ }
177
+ function scriptKind(fileName) {
178
+ if (fileName.endsWith(".tsx"))
179
+ return ts.ScriptKind.TSX;
180
+ if (fileName.endsWith(".jsx"))
181
+ return ts.ScriptKind.JSX;
182
+ if (fileName.endsWith(".json"))
183
+ return ts.ScriptKind.JSON;
184
+ return ts.ScriptKind.TS;
185
+ }
186
+ //# sourceMappingURL=ast-prefilter-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-prefilter-utils.js","sourceRoot":"","sources":["../../src/discovery/ast-prefilter-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { SourceFacts } from "./source-facts.js";
2
+ export type AstCandidateIndicator = "relkit-import" | "factory" | "default-export" | "brand-access" | "re-export";
3
+ export interface AstSourceModule {
4
+ readonly fileName: string;
5
+ readonly text: string;
6
+ }
7
+ export interface AstReExport {
8
+ readonly moduleSpecifier: string;
9
+ readonly names: readonly string[];
10
+ readonly exportAll: boolean;
11
+ }
12
+ export interface AstPrefilterCandidate {
13
+ readonly fileName: string;
14
+ readonly imports: readonly string[];
15
+ readonly factories: readonly string[];
16
+ readonly defaultExports: readonly string[];
17
+ readonly brandAccess: boolean;
18
+ readonly reExports: readonly AstReExport[];
19
+ readonly facts: SourceFacts;
20
+ readonly indicators: readonly AstCandidateIndicator[];
21
+ }
22
+ export interface AstPrefilterSkipped {
23
+ readonly fileName: string;
24
+ readonly reason: "excluded" | "no-candidate-indicator";
25
+ }
26
+ export interface AstPrefilterOptions {
27
+ readonly projectRoot?: string;
28
+ readonly exclude?: readonly string[];
29
+ }
30
+ export interface AstPrefilterResult {
31
+ readonly candidates: readonly AstPrefilterCandidate[];
32
+ readonly skipped: readonly AstPrefilterSkipped[];
33
+ }
34
+ /** Finds possible descriptor modules from syntax only; it never imports source files. */
35
+ export declare function prefilterSources(modules: readonly AstSourceModule[], options?: AstPrefilterOptions): AstPrefilterResult;
36
+ //# sourceMappingURL=ast-prefilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-prefilter.d.ts","sourceRoot":"","sources":["../../src/discovery/ast-prefilter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,MAAM,qBAAqB,GAC/B,eAAe,GAAG,SAAS,GAAG,gBAAgB,GAAG,cAAc,GAAG,WAAW,CAAC;AAEhF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,WAAW,EAAE,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACvD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,wBAAwB,CAAC;CACxD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACtD,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAClD;AAED,yFAAyF;AACzF,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,CA4BpB"}
@@ -0,0 +1,33 @@
1
+ import { normalizeSourcePath } from "@relkit/contracts";
2
+ import { DEFAULT_TOOLING_CONFIG } from "../config-loader-types.js";
3
+ import { matchesExclude, scanSource } from "./ast-prefilter-utils.js";
4
+ /** Finds possible descriptor modules from syntax only; it never imports source files. */
5
+ export function prefilterSources(modules, options = {}) {
6
+ const excludes = options.exclude ?? DEFAULT_TOOLING_CONFIG.exclude;
7
+ const ordered = modules
8
+ .map((module) => ({
9
+ fileName: normalizeSourcePath(module.fileName, options.projectRoot),
10
+ text: module.text,
11
+ }))
12
+ .sort((left, right) => left.fileName.localeCompare(right.fileName));
13
+ const candidates = [];
14
+ const skipped = [];
15
+ for (const module of ordered) {
16
+ if (matchesExclude(module.fileName, excludes)) {
17
+ skipped.push({ fileName: module.fileName, reason: "excluded" });
18
+ continue;
19
+ }
20
+ const facts = scanSource(module.fileName, module.text);
21
+ if (facts.indicators.length === 0) {
22
+ skipped.push({ fileName: module.fileName, reason: "no-candidate-indicator" });
23
+ }
24
+ else {
25
+ candidates.push(facts);
26
+ }
27
+ }
28
+ return Object.freeze({
29
+ candidates: Object.freeze(candidates),
30
+ skipped: Object.freeze(skipped),
31
+ });
32
+ }
33
+ //# sourceMappingURL=ast-prefilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-prefilter.js","sourceRoot":"","sources":["../../src/discovery/ast-prefilter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AA2CtE,yFAAyF;AACzF,MAAM,UAAU,gBAAgB,CAC9B,OAAmC,EACnC,UAA+B,EAAE;IAEjC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,IAAI,sBAAsB,CAAC,OAAO,CAAC;IACnE,MAAM,OAAO,GAAG,OAAO;SACpB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChB,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC;QACnE,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtE,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,MAAM,OAAO,GAA0B,EAAE,CAAC;IAE1C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAChE,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QACrC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;KAChC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { AstPrefilterCandidate } from "./ast-prefilter.js";
2
+ import type { EvaluatorModuleResult, EvaluatorResponse } from "./evaluator-protocol.js";
3
+ export declare function isolateDataModels(candidates: readonly AstPrefilterCandidate[], generationId: string): {
4
+ readonly evaluated: readonly AstPrefilterCandidate[];
5
+ readonly modules: readonly EvaluatorModuleResult[];
6
+ };
7
+ export declare function appendDataModels(response: EvaluatorResponse, modules: readonly EvaluatorModuleResult[]): EvaluatorResponse;
8
+ //# sourceMappingURL=data-model-isolation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-model-isolation.d.ts","sourceRoot":"","sources":["../../src/discovery/data-model-isolation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAExF,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,SAAS,qBAAqB,EAAE,EAC5C,YAAY,EAAE,MAAM,GACnB;IACD,QAAQ,CAAC,SAAS,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACpD,CA0BA;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,SAAS,qBAAqB,EAAE,GACxC,iBAAiB,CAQnB"}
@@ -0,0 +1,52 @@
1
+ import { createHash } from "node:crypto";
2
+ export function isolateDataModels(candidates, generationId) {
3
+ const evaluated = [];
4
+ const modules = [];
5
+ for (const candidate of candidates) {
6
+ if (!isDataModelOnly(candidate)) {
7
+ evaluated.push(candidate);
8
+ continue;
9
+ }
10
+ const exports = [...candidate.facts.exports].flatMap(([exportName, fact]) => exportName === "default" || fact.factory?.kind === "data-model"
11
+ ? [dataModelExport(candidate.fileName, exportName)]
12
+ : []);
13
+ modules.push({
14
+ file: candidate.fileName,
15
+ exports,
16
+ manifestReferences: exports.map(({ exportName, descriptor }) => ({
17
+ generationId,
18
+ descriptorId: descriptor.id,
19
+ kind: descriptor.kind,
20
+ module: candidate.fileName,
21
+ exportName,
22
+ })),
23
+ });
24
+ }
25
+ return { evaluated: Object.freeze(evaluated), modules: Object.freeze(modules) };
26
+ }
27
+ export function appendDataModels(response, modules) {
28
+ if (response.status !== "ok" || modules.length === 0)
29
+ return response;
30
+ return {
31
+ ...response,
32
+ modules: Object.freeze([...response.modules, ...modules].sort((left, right) => left.file.localeCompare(right.file))),
33
+ };
34
+ }
35
+ function isDataModelOnly(candidate) {
36
+ return (candidate.factories.length > 0 &&
37
+ candidate.factories.every((factory) => factory === "defineDataModel"));
38
+ }
39
+ function dataModelExport(file, exportName) {
40
+ const id = `unbound.data-model.${createHash("sha256").update(file).digest("hex").slice(0, 16)}`;
41
+ const ref = { kind: "data-model", id };
42
+ return {
43
+ exportName,
44
+ descriptor: {
45
+ kind: "data-model",
46
+ id,
47
+ ref,
48
+ metadata: { kind: "data-model", id, ref, tableNames: [] },
49
+ },
50
+ };
51
+ }
52
+ //# sourceMappingURL=data-model-isolation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-model-isolation.js","sourceRoot":"","sources":["../../src/discovery/data-model-isolation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,UAAU,iBAAiB,CAC/B,UAA4C,EAC5C,YAAoB;IAKpB,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAC1E,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,YAAY;YAC7D,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACnD,CAAC,CAAC,EAAE,CACP,CAAC;QACF,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,SAAS,CAAC,QAAQ;YACxB,OAAO;YACP,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/D,YAAY;gBACZ,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC3B,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,MAAM,EAAE,SAAS,CAAC,QAAQ;gBAC1B,UAAU;aACX,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAA2B,EAC3B,OAAyC;IAEzC,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACtE,OAAO;QACL,GAAG,QAAQ;QACX,OAAO,EAAE,MAAM,CAAC,MAAM,CACpB,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAC7F;KACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,SAAgC;IACvD,OAAO,CACL,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAC9B,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,iBAAiB,CAAC,CACtE,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,UAAkB;IACvD,MAAM,EAAE,GAAG,sBAAsB,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAChG,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAW,CAAC;IAChD,OAAO;QACL,UAAU;QACV,UAAU,EAAE;YACV,IAAI,EAAE,YAAY;YAClB,EAAE;YACF,GAAG;YACH,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE;SAC1D;KACO,CAAC;AACb,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { EvaluatorCandidate, EvaluatorFailure, EvaluatorModuleResult, EvaluatorRequest, EvaluatorSideEffect } from "./evaluator-protocol.js";
2
+ export declare function snapshotModule(module: Record<string, unknown>, candidate: EvaluatorCandidate, request: EvaluatorRequest): EvaluatorModuleResult;
3
+ export declare function sideEffectFailure(sideEffects: readonly EvaluatorSideEffect[], module: string, request: EvaluatorRequest): EvaluatorFailure;
4
+ //# sourceMappingURL=evaluator-child-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator-child-utils.d.ts","sourceRoot":"","sources":["../../src/discovery/evaluator-child-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAEhB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAGjC,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,gBAAgB,GACxB,qBAAqB,CAqBvB;AAaD,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,SAAS,mBAAmB,EAAE,EAC3C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,GACxB,gBAAgB,CAQlB"}