create-relkit 0.7.4 → 0.7.7

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 (238) hide show
  1. package/dist/create-capabilities.d.ts +24 -33
  2. package/dist/create-capabilities.d.ts.map +1 -1
  3. package/dist/create-capabilities.js +53 -10
  4. package/dist/create-capabilities.js.map +1 -1
  5. package/dist/create-capabilities.types.d.ts +55 -0
  6. package/dist/create-capabilities.types.d.ts.map +1 -0
  7. package/dist/create-capabilities.types.js +2 -0
  8. package/dist/create-capabilities.types.js.map +1 -0
  9. package/dist/domain-artifact.d.ts.map +1 -1
  10. package/dist/domain-artifact.js +11 -3
  11. package/dist/domain-artifact.js.map +1 -1
  12. package/dist/domain-planning.d.ts +5 -0
  13. package/dist/domain-planning.d.ts.map +1 -1
  14. package/dist/domain-planning.js +25 -16
  15. package/dist/domain-planning.js.map +1 -1
  16. package/dist/generate-deployment-manifest.d.ts +10 -0
  17. package/dist/generate-deployment-manifest.d.ts.map +1 -0
  18. package/dist/generate-deployment-manifest.js +56 -0
  19. package/dist/generate-deployment-manifest.js.map +1 -0
  20. package/dist/generate-deployment.d.ts +2 -3
  21. package/dist/generate-deployment.d.ts.map +1 -1
  22. package/dist/generate-deployment.js +6 -47
  23. package/dist/generate-deployment.js.map +1 -1
  24. package/dist/generate-examples.d.ts +11 -0
  25. package/dist/generate-examples.d.ts.map +1 -0
  26. package/dist/generate-examples.js +28 -0
  27. package/dist/generate-examples.js.map +1 -0
  28. package/dist/generate-files-utilities.d.ts +1 -8
  29. package/dist/generate-files-utilities.d.ts.map +1 -1
  30. package/dist/generate-files-utilities.js +5 -19
  31. package/dist/generate-files-utilities.js.map +1 -1
  32. package/dist/project-discovery-artifacts.d.ts +15 -0
  33. package/dist/project-discovery-artifacts.d.ts.map +1 -0
  34. package/dist/project-discovery-artifacts.js +107 -0
  35. package/dist/project-discovery-artifacts.js.map +1 -0
  36. package/dist/project-discovery-artifacts.types.d.ts +22 -0
  37. package/dist/project-discovery-artifacts.types.d.ts.map +1 -0
  38. package/dist/project-discovery-artifacts.types.js +2 -0
  39. package/dist/project-discovery-artifacts.types.js.map +1 -0
  40. package/dist/project-discovery-facts.d.ts +8 -9
  41. package/dist/project-discovery-facts.d.ts.map +1 -1
  42. package/dist/project-discovery-facts.js +29 -135
  43. package/dist/project-discovery-facts.js.map +1 -1
  44. package/dist/project-discovery-members.d.ts +16 -0
  45. package/dist/project-discovery-members.d.ts.map +1 -0
  46. package/dist/project-discovery-members.js +57 -0
  47. package/dist/project-discovery-members.js.map +1 -0
  48. package/dist/project-discovery-types.d.ts +8 -0
  49. package/dist/project-discovery-types.d.ts.map +1 -1
  50. package/dist/render-auth-database.d.ts +33 -0
  51. package/dist/render-auth-database.d.ts.map +1 -0
  52. package/dist/render-auth-database.js +69 -0
  53. package/dist/render-auth-database.js.map +1 -0
  54. package/dist/render-auth-sources.d.ts +8 -2
  55. package/dist/render-auth-sources.d.ts.map +1 -1
  56. package/dist/render-auth-sources.js +9 -3
  57. package/dist/render-auth-sources.js.map +1 -1
  58. package/dist/render-auth.d.ts +14 -11
  59. package/dist/render-auth.d.ts.map +1 -1
  60. package/dist/render-auth.js +41 -108
  61. package/dist/render-auth.js.map +1 -1
  62. package/dist/render-database-sources.d.ts +11 -1
  63. package/dist/render-database-sources.d.ts.map +1 -1
  64. package/dist/render-database-sources.js +30 -4
  65. package/dist/render-database-sources.js.map +1 -1
  66. package/dist/render-database.d.ts +7 -10
  67. package/dist/render-database.d.ts.map +1 -1
  68. package/dist/render-database.js +17 -7
  69. package/dist/render-database.js.map +1 -1
  70. package/dist/render-database.types.d.ts +15 -0
  71. package/dist/render-database.types.d.ts.map +1 -0
  72. package/dist/render-database.types.js +2 -0
  73. package/dist/render-database.types.js.map +1 -0
  74. package/dist/render-route-sources.d.ts +3 -1
  75. package/dist/render-route-sources.d.ts.map +1 -1
  76. package/dist/render-route-sources.js +4 -2
  77. package/dist/render-route-sources.js.map +1 -1
  78. package/dist/render-routes.d.ts +1 -0
  79. package/dist/render-routes.d.ts.map +1 -1
  80. package/dist/render-routes.js +2 -1
  81. package/dist/render-routes.js.map +1 -1
  82. package/dist/render-service-members.d.ts +32 -0
  83. package/dist/render-service-members.d.ts.map +1 -0
  84. package/dist/render-service-members.js +61 -0
  85. package/dist/render-service-members.js.map +1 -0
  86. package/dist/render-service-requests.d.ts +35 -0
  87. package/dist/render-service-requests.d.ts.map +1 -0
  88. package/dist/render-service-requests.js +62 -0
  89. package/dist/render-service-requests.js.map +1 -0
  90. package/dist/render-service-support.d.ts +37 -0
  91. package/dist/render-service-support.d.ts.map +1 -0
  92. package/dist/render-service-support.js +74 -0
  93. package/dist/render-service-support.js.map +1 -0
  94. package/dist/render-service.d.ts +16 -13
  95. package/dist/render-service.d.ts.map +1 -1
  96. package/dist/render-service.js +33 -149
  97. package/dist/render-service.js.map +1 -1
  98. package/dist/render-service.types.d.ts +13 -0
  99. package/dist/render-service.types.d.ts.map +1 -0
  100. package/dist/render-service.types.js +2 -0
  101. package/dist/render-service.types.js.map +1 -0
  102. package/dist/scaffold-layout.d.ts +10 -0
  103. package/dist/scaffold-layout.d.ts.map +1 -0
  104. package/dist/scaffold-layout.js +29 -0
  105. package/dist/scaffold-layout.js.map +1 -0
  106. package/dist/templates/default/README.md +1 -1
  107. package/dist/templates/default/v1/agent/.agents/skills/relkit/SKILL.md +48 -0
  108. package/dist/templates/default/v1/agent/.agents/skills/relkit/references/agent-apis.md +59 -0
  109. package/dist/templates/default/v1/agent/.agents/skills/relkit/references/cli.md +63 -0
  110. package/dist/templates/default/v1/agent/.agents/skills/relkit/references/config-environments.md +96 -0
  111. package/dist/templates/default/v1/agent/.agents/skills/relkit/references/data-apis.md +74 -0
  112. package/dist/templates/default/v1/agent/.agents/skills/relkit/references/domain-apis.md +92 -0
  113. package/dist/templates/default/v1/agent/.agents/skills/relkit/references/http-apis.md +70 -0
  114. package/dist/templates/default/v1/agent/.agents/skills/relkit/references/jobs-apis.md +49 -0
  115. package/dist/templates/default/v1/agent/.agents/skills/relkit/references/layout-migration.md +35 -0
  116. package/dist/templates/default/v1/agent/.agents/skills/relkit/references/observability-apis.md +53 -0
  117. package/dist/templates/default/v1/agent/.agents/skills/relkit/references/realtime-apis.md +98 -0
  118. package/dist/templates/default/v1/agent/.agents/skills/relkit/references/streaming-apis.md +75 -0
  119. package/dist/templates/default/v1/agent/.agents/skills/relkit/references/testing-apis.md +71 -0
  120. package/dist/templates/default/v1/agent/README.md +9 -0
  121. package/dist/templates/default/v1/agent/package.json +4 -4
  122. package/dist/templates/default/v1/agent/src/routes/hello/route.ts +2 -1
  123. package/dist/templates/default/v1/agent/src/{hello → services/hello}/agents/assistant.agent.ts +2 -1
  124. package/dist/templates/default/v1/agent/src/{hello → services/hello}/agents/review.agent.ts +1 -0
  125. package/dist/templates/default/v1/agent/src/{hello → services/hello}/functions/hello.function.ts +7 -0
  126. package/dist/templates/default/v1/agent/src/services/hello/service.ts +5 -0
  127. package/dist/templates/default/v1/agent/src/{hello → services/hello}/tools/lookup.tool.ts +2 -1
  128. package/dist/templates/default/v1/agent/tests/fixtures/lookup.tool.ts +2 -1
  129. package/dist/templates/default/v1/agent/tests/fixtures/mcp-options.ts +2 -1
  130. package/dist/templates/default/v1/agent/tests/unit/assistant.agent.test.ts +3 -2
  131. package/dist/templates/default/v1/agent/tests/unit/hello.function.test.ts +2 -1
  132. package/dist/templates/default/v1/agent/tests/unit/lookup.tool.test.ts +2 -1
  133. package/dist/templates/default/v1/agent/tests/unit/review.agent.test.ts +2 -1
  134. package/dist/templates/default/v1/agent/tsconfig.json +2 -1
  135. package/dist/templates/default/v1/api/.agents/skills/relkit/SKILL.md +48 -0
  136. package/dist/templates/default/v1/api/.agents/skills/relkit/references/agent-apis.md +59 -0
  137. package/dist/templates/default/v1/api/.agents/skills/relkit/references/cli.md +63 -0
  138. package/dist/templates/default/v1/api/.agents/skills/relkit/references/config-environments.md +96 -0
  139. package/dist/templates/default/v1/api/.agents/skills/relkit/references/data-apis.md +74 -0
  140. package/dist/templates/default/v1/api/.agents/skills/relkit/references/domain-apis.md +92 -0
  141. package/dist/templates/default/v1/api/.agents/skills/relkit/references/http-apis.md +70 -0
  142. package/dist/templates/default/v1/api/.agents/skills/relkit/references/jobs-apis.md +49 -0
  143. package/dist/templates/default/v1/api/.agents/skills/relkit/references/layout-migration.md +35 -0
  144. package/dist/templates/default/v1/api/.agents/skills/relkit/references/observability-apis.md +53 -0
  145. package/dist/templates/default/v1/api/.agents/skills/relkit/references/realtime-apis.md +98 -0
  146. package/dist/templates/default/v1/api/.agents/skills/relkit/references/streaming-apis.md +75 -0
  147. package/dist/templates/default/v1/api/.agents/skills/relkit/references/testing-apis.md +71 -0
  148. package/dist/templates/default/v1/api/README.md +10 -0
  149. package/dist/templates/default/v1/api/package.json +3 -3
  150. package/dist/templates/default/v1/api/src/routes/echo/route.ts +2 -1
  151. package/dist/templates/default/v1/api/src/routes/hello/route.ts +2 -1
  152. package/dist/templates/default/v1/api/src/routes/orders/route.ts +2 -1
  153. package/dist/templates/default/v1/api/src/{echo → services/echo}/functions/echo.function.ts +1 -0
  154. package/dist/templates/default/v1/api/src/services/echo/service.ts +5 -0
  155. package/dist/templates/default/v1/api/src/{hello → services/hello}/functions/hello.function.ts +7 -0
  156. package/dist/templates/default/v1/api/src/services/hello/service.ts +5 -0
  157. package/dist/templates/default/v1/api/src/{orders → services/orders}/functions/create-order.function.ts +2 -1
  158. package/dist/templates/default/v1/api/src/{orders → services/orders}/functions/price-order.function.ts +1 -0
  159. package/dist/templates/default/v1/api/src/services/orders/service.ts +8 -0
  160. package/dist/templates/default/v1/api/tests/unit/echo.function.test.ts +2 -1
  161. package/dist/templates/default/v1/api/tests/unit/hello.function.test.ts +2 -1
  162. package/dist/templates/default/v1/api/tests/unit/orders.function.test.ts +2 -1
  163. package/dist/templates/default/v1/api/tsconfig.json +2 -1
  164. package/dist/templates/default/v1/fullstack/.agents/skills/relkit/SKILL.md +48 -0
  165. package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/agent-apis.md +59 -0
  166. package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/cli.md +63 -0
  167. package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/config-environments.md +96 -0
  168. package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/data-apis.md +74 -0
  169. package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/domain-apis.md +92 -0
  170. package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/http-apis.md +70 -0
  171. package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/jobs-apis.md +49 -0
  172. package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/layout-migration.md +35 -0
  173. package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/observability-apis.md +53 -0
  174. package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/realtime-apis.md +98 -0
  175. package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/streaming-apis.md +75 -0
  176. package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/testing-apis.md +71 -0
  177. package/dist/templates/default/v1/fullstack/README.md +9 -0
  178. package/dist/templates/default/v1/fullstack/package.json +5 -5
  179. package/dist/templates/default/v1/fullstack/src/routes/hello/route.ts +2 -1
  180. package/dist/templates/default/v1/fullstack/src/{hello → services/hello}/agents/assistant.agent.ts +2 -1
  181. package/dist/templates/default/v1/fullstack/src/{hello → services/hello}/agents/review.agent.ts +1 -0
  182. package/dist/templates/default/v1/fullstack/src/{hello → services/hello}/functions/hello.function.ts +1 -0
  183. package/dist/templates/default/v1/fullstack/src/services/hello/service.ts +5 -0
  184. package/dist/templates/default/v1/fullstack/src/{hello → services/hello}/tools/lookup.tool.ts +2 -1
  185. package/dist/templates/default/v1/fullstack/tests/unit/assistant.agent.test.ts +3 -2
  186. package/dist/templates/default/v1/fullstack/tests/unit/hello.function.test.ts +2 -1
  187. package/dist/templates/default/v1/fullstack/tests/unit/review.agent.test.ts +2 -1
  188. package/dist/templates/default/v1/fullstack/tsconfig.json +2 -1
  189. package/dist/templates/default/v1/minimal/.agents/skills/relkit/SKILL.md +48 -0
  190. package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/agent-apis.md +59 -0
  191. package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/cli.md +63 -0
  192. package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/config-environments.md +96 -0
  193. package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/data-apis.md +74 -0
  194. package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/domain-apis.md +92 -0
  195. package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/http-apis.md +70 -0
  196. package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/jobs-apis.md +49 -0
  197. package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/layout-migration.md +35 -0
  198. package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/observability-apis.md +53 -0
  199. package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/realtime-apis.md +98 -0
  200. package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/streaming-apis.md +75 -0
  201. package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/testing-apis.md +71 -0
  202. package/dist/templates/default/v1/minimal/README.md +10 -0
  203. package/dist/templates/default/v1/minimal/package.json +3 -3
  204. package/dist/templates/default/v1/minimal/src/routes/hello/route.ts +2 -1
  205. package/dist/templates/default/v1/minimal/src/{hello → services/hello}/functions/hello.function.ts +7 -0
  206. package/dist/templates/default/v1/minimal/src/services/hello/service.ts +5 -0
  207. package/dist/templates/default/v1/minimal/tests/unit/hello.function.test.ts +2 -1
  208. package/dist/templates/default/v1/minimal/tsconfig.json +2 -1
  209. package/dist/templates/default/v1/tasks/.agents/skills/relkit/SKILL.md +48 -0
  210. package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/agent-apis.md +59 -0
  211. package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/cli.md +63 -0
  212. package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/config-environments.md +96 -0
  213. package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/data-apis.md +74 -0
  214. package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/domain-apis.md +92 -0
  215. package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/http-apis.md +70 -0
  216. package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/jobs-apis.md +49 -0
  217. package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/layout-migration.md +35 -0
  218. package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/observability-apis.md +53 -0
  219. package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/realtime-apis.md +98 -0
  220. package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/streaming-apis.md +75 -0
  221. package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/testing-apis.md +71 -0
  222. package/dist/templates/default/v1/tasks/README.md +8 -1
  223. package/dist/templates/default/v1/tasks/package.json +3 -3
  224. package/dist/templates/default/v1/tasks/src/routes/health/route.ts +2 -1
  225. package/dist/templates/default/v1/tasks/src/{orders → services/orders}/functions/health.function.ts +1 -0
  226. package/dist/templates/default/v1/tasks/src/{orders → services/orders}/jobs/export-orders.job.ts +2 -1
  227. package/dist/templates/default/v1/tasks/src/services/orders/service.ts +11 -0
  228. package/dist/templates/default/v1/tasks/src/{orders → services/orders}/tasks/export-orders.task.ts +1 -0
  229. package/dist/templates/default/v1/tasks/tests/unit/export-orders.task.test.ts +2 -1
  230. package/dist/templates/default/v1/tasks/tsconfig.json +3 -1
  231. package/package.json +3 -3
  232. package/dist/templates/default/v1/agent/src/hello/service.ts +0 -4
  233. package/dist/templates/default/v1/api/src/echo/service.ts +0 -4
  234. package/dist/templates/default/v1/api/src/hello/service.ts +0 -4
  235. package/dist/templates/default/v1/api/src/orders/service.ts +0 -7
  236. package/dist/templates/default/v1/fullstack/src/hello/service.ts +0 -4
  237. package/dist/templates/default/v1/minimal/src/hello/service.ts +0 -4
  238. package/dist/templates/default/v1/tasks/src/orders/service.ts +0 -10
@@ -1,38 +1,39 @@
1
+ /**
2
+ * Plans the sole native Better Auth service and route at the compiler-selected
3
+ * layout. Existing databases retain their owner/schema/dialect; the transaction
4
+ * owns source publication and no live client, migration or secret is created here.
5
+ */
1
6
  import { Effect } from "effect";
2
7
  import { observeExecution } from "@relkit/contracts/operation";
3
- import { GeneratorFileSystem } from "./generator-filesystem.js";
4
- import { scaffoldErrors, } from "./generator-errors.js";
8
+ import { scaffoldErrors, domainError, domainTry } from "./generator-errors.js";
5
9
  import { runGeneratorPromise } from "./generator-runtime.js";
6
- import { dirname, posix } from "node:path";
7
10
  import { routePathToFilePath } from "@relkit/compiler";
8
11
  import { ADD_FAILURE_CODES, AddScaffoldError } from "./add-types.js";
9
- import { PlanBuilder } from "./plan-builder.js";
12
+ import { scaffoldServiceBoundary } from "./scaffold-layout.js";
10
13
  import { ensureEnvironmentEffect } from "./provider-planning.js";
11
- import { authSchemaSource } from "./render-auth-schema.js";
12
14
  import { authRouteSource, authServiceSource } from "./render-auth-sources.js";
13
15
  import { renderDatabaseEffect } from "./render-database.js";
14
- import { addSourceExport } from "./source-edit.js";
16
+ import { addAuthSchemaEffect, existingDatabase, validateAuthBasePath, } from "./render-auth-database.js";
15
17
  /**
16
- * Authentication table names reserved by the generated schema.
17
- */
18
- const AUTH_TABLES = ["user", "session", "account", "verification"];
19
- /**
20
- * Plans auth through the owning request and typed filesystem authority.
21
- * @param builder - Per-request planning owner.
22
- * @param request - Normalized scaffold request.
23
- * @returns Completion after auth service, schema, routes and dependencies are planned.
18
+ * Plans native auth/database composition and one raw catch-all mount.
19
+ * @param builder - Per-request planning owner with declaration-only discovery.
20
+ * @param request - Native dialect and static auth mount configuration.
21
+ * @returns Lazy completion with typed scaffold/filesystem failures; no resource activation.
24
22
  */
25
23
  export const renderAuthEffect = Effect.fn("Scaffold.renderAuth")(function* (builder, request) {
26
24
  if (builder.discovery.services.some((service) => service.capability === "auth")) {
27
- collision("An auth service already exists.");
25
+ return yield* domainError(new AddScaffoldError(ADD_FAILURE_CODES.collision, "An auth service already exists."));
28
26
  }
29
- validateBasePath(request.basePath);
27
+ yield* domainTry(() => validateAuthBasePath(request.basePath));
30
28
  const existing = builder.discovery.services.filter((service) => service.capability === "database");
31
29
  if (existing.length > 1)
32
- collision("Multiple database services exist.");
33
- const database = existing[0]
34
- ? existingDatabase(existing[0], request.databaseDialect)
35
- : yield* renderDatabaseEffect(builder, {
30
+ return yield* domainError(new AddScaffoldError(ADD_FAILURE_CODES.collision, "Multiple database services exist."));
31
+ const found = existing[0];
32
+ let database;
33
+ if (found)
34
+ database = yield* domainTry(() => existingDatabase(found, request.databaseDialect));
35
+ else
36
+ database = yield* renderDatabaseEffect(builder, {
36
37
  kind: "database",
37
38
  projectRoot: builder.discovery.projectRoot,
38
39
  install: request.install,
@@ -40,105 +41,37 @@ export const renderAuthEffect = Effect.fn("Scaffold.renderAuth")(function* (buil
40
41
  dialect: request.databaseDialect,
41
42
  authSchema: true,
42
43
  });
43
- if (existing[0])
44
+ if (found)
44
45
  yield* addAuthSchemaEffect(builder, database);
45
- yield* builder.createEffect("src/auth/service.ts", authServiceSource());
46
- yield* builder.createEffect(routePathToFilePath(`${request.basePath}/*auth?`), authRouteSource());
47
- yield* builder.dependencyEffect("@relkit/better-auth");
48
- yield* builder.dependencyEffect("better-auth");
49
- yield* ensureEnvironmentEffect(builder, "BETTER_AUTH_SECRET", "env.secret()");
50
- yield* ensureEnvironmentEffect(builder, "BETTER_AUTH_URL", `env.url().default(new URL("http://127.0.0.1:3000"))`, "http://127.0.0.1:3000");
51
- yield* builder.warningEffect("auth-secret-required", "Populate BETTER_AUTH_SECRET with a strong secret before starting auth.");
52
- yield* builder.nextStepEffect("Set BETTER_AUTH_SECRET in your environment.");
46
+ const servicePath = yield* domainTry(() => scaffoldServiceBoundary(builder.discovery, "auth"));
47
+ yield* builder.createEffect(servicePath, authServiceSource());
48
+ yield* builder.createEffect(routePathToFilePath(`${request.basePath}/*auth?`), authRouteSource(servicePath));
49
+ yield* authEnvironmentEffect(builder);
53
50
  yield* builder.registerArtifactEffect("service", {
54
51
  domain: "auth",
55
- path: "src/auth/service.ts",
52
+ path: servicePath,
56
53
  binding: "auth",
57
54
  id: "auth",
58
55
  });
59
56
  }, (effect) => observeExecution("generator", "planning.renderAuth", scaffoldErrors(effect)));
60
57
  /**
61
- * Plans add auth schema through the owning request and typed filesystem authority.
62
- * @param builder - Per-request planning owner.
63
- * @param database - Validated database dialect and service/schema source paths.
64
- * @returns Completion after collision checks and auth schema/index exports are planned.
65
- */
66
- const addAuthSchemaEffect = Effect.fn("Scaffold.addAuthSchema")(function* (builder, database) {
67
- const directory = dirname(database.schemaPath).replaceAll("\\", "/");
68
- yield* assertNoAuthTablesEffect(builder.discovery.projectRoot, directory);
69
- yield* builder.createEffect(`${directory}/auth.ts`, authSchemaSource(database.dialect));
70
- yield* builder.updateEffect(database.schemaPath, (source) => addSourceExport(source, database.schemaPath, `export * from "./auth.js";`));
71
- }, (effect) => observeExecution("generator", "planning.addAuthSchema", scaffoldErrors(effect)));
72
- /**
73
- * Plans assert no auth tables through the owning request and typed filesystem authority.
74
- * @param root - Absolute project or owned resource root.
75
- * @param directory - Project-relative schema directory inspected for existing auth tables.
76
- * @returns Completion when no supported auth table already exists in the schema directory.
77
- */
78
- const assertNoAuthTablesEffect = Effect.fn("Scaffold.assertNoAuthTables")(function* (root, directory) {
79
- const fs = yield* GeneratorFileSystem;
80
- const files = yield* fs.glob(posix.join(root, directory), "**/*.ts");
81
- for (const file of files) {
82
- const source = yield* fs.readText(posix.join(root, directory, file));
83
- if (AUTH_TABLES.some((name) => new RegExp(`\\bexport\\s+const\\s+${name}\\b`).test(source))) {
84
- collision(`The database schema already exports Better Auth table names (${file}).`);
85
- }
86
- }
87
- }, (effect) => observeExecution("generator", "planning.assertNoAuthTables", scaffoldErrors(effect)));
88
- /**
89
- * Checks a discovered database's static schema and dialect before auth planning.
90
- * @param service - Discovered database service.
91
- * @param requested - Dialect required by the requested authentication adapter.
92
- * @returns Existing service/schema paths and its matching dialect.
58
+ * Declares native dependencies and credential requirements without acquiring auth.
59
+ * @param builder - Per-request source planning owner.
60
+ * @returns Lazy environment/dependency edits and operational guidance.
93
61
  */
94
- function existingDatabase(service, requested) {
95
- if (!service.dialect || !service.schemaPath) {
96
- unsupported("The existing database service has no statically discoverable dialect or schema import.");
97
- }
98
- if (service.dialect !== requested) {
99
- collision(`The existing database uses ${service.dialect}, not ${requested}.`);
100
- }
101
- return { dialect: service.dialect, servicePath: service.path, schemaPath: service.schemaPath };
102
- }
103
- /**
104
- * Requires a non-root static URL path for authentication routes.
105
- * @param value - Requested auth base path.
106
- * @returns Completion for a supported path; invalid paths raise a usage error.
107
- */
108
- function validateBasePath(value) {
109
- if (!/^\/(?:[A-Za-z0-9._~-]+(?:\/[A-Za-z0-9._~-]+)*)?$/.test(value) || value === "/") {
110
- usage(`Invalid auth base path: ${value}`);
111
- }
112
- }
113
- /**
114
- * Rejects an existing declaration that conflicts with planned output.
115
- * @param message - Diagnostic explaining the conflicting declaration.
116
- * @returns No value; throws AddScaffoldError with RELKIT_ADD_COLLISION.
117
- */
118
- function collision(message) {
119
- throw new AddScaffoldError(ADD_FAILURE_CODES.collision, message);
120
- }
121
- /**
122
- * Rejects source that cannot be edited safely.
123
- * @param message - Diagnostic explaining the unsupported source shape.
124
- * @returns No value; throws the canonical unsupported-source AddScaffoldError.
125
- */
126
- function unsupported(message) {
127
- throw new AddScaffoldError(ADD_FAILURE_CODES.unsupportedSourceShape, message);
128
- }
129
- /**
130
- * Rejects unsupported or incomplete scaffold arguments.
131
- * @param message - Diagnostic explaining the unsupported arguments.
132
- * @returns No value; throws AddScaffoldError with RELKIT_ADD_USAGE.
133
- */
134
- function usage(message) {
135
- throw new AddScaffoldError(ADD_FAILURE_CODES.usage, message);
136
- }
62
+ const authEnvironmentEffect = Effect.fn("Scaffold.authEnvironment")(function* (builder) {
63
+ yield* builder.dependencyEffect("@relkit/better-auth");
64
+ yield* builder.dependencyEffect("better-auth");
65
+ yield* ensureEnvironmentEffect(builder, "BETTER_AUTH_SECRET", "env.secret()");
66
+ yield* ensureEnvironmentEffect(builder, "BETTER_AUTH_URL", `env.url().default(new URL("http://127.0.0.1:3000"))`, "http://127.0.0.1:3000");
67
+ yield* builder.warningEffect("auth-secret-required", "Populate BETTER_AUTH_SECRET with a strong secret before starting auth.");
68
+ yield* builder.nextStepEffect("Set BETTER_AUTH_SECRET in your environment.");
69
+ });
137
70
  /**
138
- * Preserves the renderAuth Promise compatibility API.
71
+ * Runs the existing Promise compatibility boundary after all source planning settles.
139
72
  * @param builder - Per-request planning owner.
140
- * @param request - Normalized scaffold request.
141
- * @returns Completion after the existing contract has been applied.
73
+ * @param request - Complete native authentication scaffold request.
74
+ * @returns After planning, rejecting the preserved native scaffold error constructor.
142
75
  */
143
76
  export function renderAuth(builder, request) {
144
77
  return runGeneratorPromise(renderAuthEffect(builder, request));
@@ -1 +1 @@
1
- {"version":3,"file":"render-auth.js","sourceRoot":"","sources":["../src/render-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,cAAc,GAGf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAmB,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAyB,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAU,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAC9D,QAAQ,CAAC,EACP,OAAoB,EACpB,OAA8C;IAE9C,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;QAChF,SAAS,CAAC,iCAAiC,CAAC,CAAC;IAC/C,CAAC;IACD,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAChD,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,CAC/C,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,SAAS,CAAC,mCAAmC,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;QACxD,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE;YACnC,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW;YAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,EAAE,SAAS;YACd,OAAO,EAAE,OAAO,CAAC,eAAe;YAChC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACP,IAAI,QAAQ,CAAC,CAAC,CAAC;QAAE,KAAK,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/D,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACxE,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CACzB,mBAAmB,CAAC,GAAG,OAAO,CAAC,QAAQ,SAAS,CAAC,EACjD,eAAe,EAAE,CAClB,CAAC;IACF,KAAK,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;IACvD,KAAK,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC/C,KAAK,CAAC,CAAC,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC;IAC9E,KAAK,CAAC,CAAC,uBAAuB,CAC5B,OAAO,EACP,iBAAiB,EACjB,qDAAqD,EACrD,uBAAuB,CACxB,CAAC;IACF,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAC1B,sBAAsB,EACtB,wEAAwE,CACzE,CAAC;IACF,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,6CAA6C,CAAC,CAAC;IAC7E,KAAK,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,SAAS,EAAE;QAC/C,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,MAAM;QACf,EAAE,EAAE,MAAM;KACX,CAAC,CAAC;AACL,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,qBAAqB,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CACzF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG,MAAM,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAC7D,QAAQ,CAAC,EACP,OAAoB,EACpB,QAA0B;IAE1B,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrE,KAAK,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC1E,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACxF,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAC1D,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAC3E,CAAC;AACJ,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,wBAAwB,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAC5F,CAAC;AAEF;;;;;GAKG;AACH,MAAM,wBAAwB,GAAG,MAAM,CAAC,EAAE,CAAC,6BAA6B,CAAC,CACvE,QAAQ,CAAC,EACP,IAAY,EACZ,SAAiB;IAEjB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;IACrE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;QACrE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,yBAAyB,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC5F,SAAS,CAAC,gEAAgE,IAAI,IAAI,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;AACH,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,6BAA6B,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CACjG,CAAC;AAEF;;;;;GAKG;AACH,SAAS,gBAAgB,CACvB,OAA0B,EAC1B,SAAsC;IAEtC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC5C,WAAW,CACT,wFAAwF,CACzF,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,SAAS,CAAC,8BAA8B,OAAO,CAAC,OAAO,SAAS,SAAS,GAAG,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;AACjG,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,CAAC,kDAAkD,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QACrF,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,OAAe;IAChC,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC;AACD;;;;GAIG;AACH,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;AAChF,CAAC;AACD;;;;GAIG;AACH,SAAS,KAAK,CAAC,OAAe;IAC5B,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,OAAoB,EACpB,OAA8C;IAE9C,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"render-auth.js","sourceRoot":"","sources":["../src/render-auth.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Renders native Drizzle service/schema/tooling declarations for supported dialects.
3
+ * The selected physical schema path is passed by layout-aware planning; connection
4
+ * factories stay lazy and source rendering never opens a database client.
5
+ */
1
6
  import type { DatabaseDialect } from "./add-types.js";
2
7
  /**
3
8
  * Renders database Service Source as source text without executing user modules.
@@ -14,7 +19,12 @@ export declare function itemsSchemaSource(dialect: DatabaseDialect): string;
14
19
  /**
15
20
  * Renders drizzle Config Source as source text without executing user modules.
16
21
  * @param dialect - Supported database dialect.
22
+ * @param schemaPath - Selected physical application schema registration source.
17
23
  * @returns Drizzle Kit configuration source using the dialect's explicit environment connection.
18
24
  */
19
- export declare function drizzleConfigSource(dialect: DatabaseDialect): string;
25
+ export declare function drizzleConfigSource(dialect: DatabaseDialect, schemaPath: string): string;
26
+ /** Renders the native Bun SQLite migration runner without loading a Node-only driver.
27
+ * @returns Standalone, finite migration script using the installed Drizzle migrator.
28
+ */
29
+ export declare function sqliteMigrationSource(): string;
20
30
  //# sourceMappingURL=render-database-sources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-database-sources.d.ts","sourceRoot":"","sources":["../src/render-database-sources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAiBtE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA0BlE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAkBpE"}
1
+ {"version":3,"file":"render-database-sources.d.ts","sourceRoot":"","sources":["../src/render-database-sources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAiBtE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA0BlE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAkBxF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAqB9C"}
@@ -6,9 +6,9 @@
6
6
  export function databaseServiceSource(dialect) {
7
7
  const sqlite = dialect === "sqlite";
8
8
  const client = sqlite
9
- ? `const sqlite = new Database(env.DATABASE_PATH);\n return drizzle({ client: sqlite });`
9
+ ? `const path = env.DATABASE_PATH;\n if (!path) throw new Error("DATABASE_PATH is required");\n mkdirSync(dirname(path), { recursive: true });\n const sqlite = new Database(path);\n return drizzle({ client: sqlite });`
10
10
  : `const url = env.DATABASE_URL;\n if (!url) throw new Error("DATABASE_URL is required");\n return drizzle.${dialect === "postgresql" ? "postgres" : "mysql"}(url);`;
11
- return `${sqlite ? `import { Database } from "bun:sqlite";\n` : ""}import { defineDrizzleService } from "@relkit/drizzle";
11
+ return `${sqlite ? `import { Database } from "bun:sqlite";\nimport { mkdirSync } from "node:fs";\nimport { dirname } from "node:path";\n` : ""}import { defineDrizzleService } from "@relkit/drizzle";
12
12
  import { drizzle } from "drizzle-orm/${sqlite ? "bun-sqlite" : "bun-sql"}";
13
13
  import * as schema from "./schema/index.js";
14
14
 
@@ -56,9 +56,10 @@ export const items = mysqlTable("items", {
56
56
  /**
57
57
  * Renders drizzle Config Source as source text without executing user modules.
58
58
  * @param dialect - Supported database dialect.
59
+ * @param schemaPath - Selected physical application schema registration source.
59
60
  * @returns Drizzle Kit configuration source using the dialect's explicit environment connection.
60
61
  */
61
- export function drizzleConfigSource(dialect) {
62
+ export function drizzleConfigSource(dialect, schemaPath) {
62
63
  const variable = dialect === "sqlite" ? "DATABASE_PATH" : "DATABASE_URL";
63
64
  const value = dialect === "sqlite" ? "path" : "url";
64
65
  const invalid = dialect === "sqlite" ? ` || path === ":memory:"` : "";
@@ -70,11 +71,36 @@ if (${value} === undefined || ${value}.trim() === ""${invalid}) {
70
71
  }
71
72
 
72
73
  export default defineConfig({
73
- schema: "./src/database/schema/index.ts",
74
+ schema: "./${schemaPath}",
74
75
  dialect: "${dialect}",
75
76
  out: "./drizzle",
76
77
  dbCredentials: { url: ${value} },
77
78
  });
78
79
  `;
79
80
  }
81
+ /** Renders the native Bun SQLite migration runner without loading a Node-only driver.
82
+ * @returns Standalone, finite migration script using the installed Drizzle migrator.
83
+ */
84
+ export function sqliteMigrationSource() {
85
+ return `import { Database } from "bun:sqlite";
86
+ import { mkdirSync } from "node:fs";
87
+ import { dirname } from "node:path";
88
+ import { drizzle } from "drizzle-orm/bun-sqlite";
89
+ import { migrate } from "drizzle-orm/bun-sqlite/migrator";
90
+
91
+ const path = process.env.DATABASE_PATH;
92
+ if (!path?.trim() || path === ":memory:") {
93
+ throw new Error("Set DATABASE_PATH to a persistent SQLite file");
94
+ }
95
+ mkdirSync(dirname(path), { recursive: true });
96
+ const client = new Database(path, { create: true });
97
+ try {
98
+ client.exec("PRAGMA foreign_keys = ON; PRAGMA busy_timeout = 5000;");
99
+ migrate(drizzle({ client }), { migrationsFolder: "./drizzle" });
100
+ console.log("SQLite migrations applied");
101
+ } finally {
102
+ client.close();
103
+ }
104
+ `;
105
+ }
80
106
  //# sourceMappingURL=render-database-sources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-database-sources.js","sourceRoot":"","sources":["../src/render-database-sources.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAwB;IAC5D,MAAM,MAAM,GAAG,OAAO,KAAK,QAAQ,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM;QACnB,CAAC,CAAC,0FAA0F;QAC5F,CAAC,CAAC,iHAAiH,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC;IAC7K,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,EAAE;uCAC7B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;;;;;;MAMlE,MAAM;;;;CAIX,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACxD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO;;;;;;CAMV,CAAC;IACA,CAAC;IACD,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,OAAO;;;;;;CAMV,CAAC;IACA,CAAC;IACD,OAAO;;;;;;CAMR,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAwB;IAC1D,MAAM,QAAQ,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;IACzE,MAAM,KAAK,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,MAAM,OAAO,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO;;QAED,KAAK,kBAAkB,QAAQ;MACjC,KAAK,qBAAqB,KAAK,iBAAiB,OAAO;yBACpC,QAAQ;;;;;cAKnB,OAAO;;0BAEK,KAAK;;CAE9B,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"render-database-sources.js","sourceRoot":"","sources":["../src/render-database-sources.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAwB;IAC5D,MAAM,MAAM,GAAG,OAAO,KAAK,QAAQ,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM;QACnB,CAAC,CAAC,oOAAoO;QACtO,CAAC,CAAC,iHAAiH,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC;IAC7K,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,sHAAsH,CAAC,CAAC,CAAC,EAAE;uCACzG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;;;;;;MAMlE,MAAM;;;;CAIX,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACxD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO;;;;;;CAMV,CAAC;IACA,CAAC;IACD,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,OAAO;;;;;;CAMV,CAAC;IACA,CAAC;IACD,OAAO;;;;;;CAMR,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAwB,EAAE,UAAkB;IAC9E,MAAM,QAAQ,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;IACzE,MAAM,KAAK,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,MAAM,OAAO,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO;;QAED,KAAK,kBAAkB,QAAQ;MACjC,KAAK,qBAAqB,KAAK,iBAAiB,OAAO;yBACpC,QAAQ;;;;eAIlB,UAAU;cACX,OAAO;;0BAEK,KAAK;;CAE9B,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;CAmBR,CAAC;AACF,CAAC"}
@@ -1,18 +1,15 @@
1
+ /**
2
+ * Plans one native Drizzle service at the selected application boundary, including
3
+ * schema tooling and environment declarations. Generator filesystem authority owns
4
+ * source publication; no database client or migration runs during this workflow.
5
+ */
1
6
  import { Effect } from "effect";
7
+ import type { RenderedDatabase } from "./render-database.types.js";
8
+ export type { RenderedDatabase } from "./render-database.types.js";
2
9
  import { GeneratorFileSystem } from "./generator-filesystem.js";
3
10
  import { type GeneratorDomainError, type GeneratorIoError } from "./generator-errors.js";
4
11
  import { type AddRequest } from "./add-types.js";
5
12
  import { PlanBuilder } from "./plan-builder.js";
6
- /**
7
- * Validated database dialect and planned/discovered service and schema paths.
8
- */
9
- export interface RenderedDatabase {
10
- readonly dialect: Extract<AddRequest, {
11
- kind: "database";
12
- }>["dialect"];
13
- readonly servicePath: string;
14
- readonly schemaPath: string;
15
- }
16
13
  /**
17
14
  * Plans database through the owning request and typed filesystem authority.
18
15
  * @param builder - Per-request planning owner.
@@ -1 +1 @@
1
- {"version":3,"file":"render-database.d.ts","sourceRoot":"","sources":["../src/render-database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAShD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACvE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;mGAqDhC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,GACjD,OAAO,CAAC,gBAAgB,CAAC,CAE3B"}
1
+ {"version":3,"file":"render-database.d.ts","sourceRoot":"","sources":["../src/render-database.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAUhD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;mGAiEhC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,GACjD,OAAO,CAAC,gBAAgB,CAAC,CAE3B"}
@@ -1,4 +1,12 @@
1
+ /**
2
+ * Plans one native Drizzle service at the selected application boundary, including
3
+ * schema tooling and environment declarations. Generator filesystem authority owns
4
+ * source publication; no database client or migration runs during this workflow.
5
+ */
1
6
  import { Effect } from "effect";
7
+ import { dirname } from "node:path";
8
+ import { scaffoldServiceBoundary } from "./scaffold-layout.js";
9
+ import { domainError, domainTry } from "./generator-errors.js";
2
10
  import { observeExecution } from "@relkit/contracts/operation";
3
11
  import { GeneratorFileSystem } from "./generator-filesystem.js";
4
12
  import { scaffoldErrors, } from "./generator-errors.js";
@@ -7,7 +15,7 @@ import { ADD_FAILURE_CODES, AddScaffoldError } from "./add-types.js";
7
15
  import { PlanBuilder } from "./plan-builder.js";
8
16
  import { ensureEnvironmentEffect } from "./provider-planning.js";
9
17
  import { authSchemaSource } from "./render-auth-schema.js";
10
- import { databaseServiceSource, drizzleConfigSource, itemsSchemaSource, } from "./render-database-sources.js";
18
+ import { databaseServiceSource, drizzleConfigSource, itemsSchemaSource, sqliteMigrationSource, } from "./render-database-sources.js";
11
19
  /**
12
20
  * Plans database through the owning request and typed filesystem authority.
13
21
  * @param builder - Per-request planning owner.
@@ -16,21 +24,23 @@ import { databaseServiceSource, drizzleConfigSource, itemsSchemaSource, } from "
16
24
  */
17
25
  export const renderDatabaseEffect = Effect.fn("Scaffold.renderDatabase")(function* (builder, request) {
18
26
  if (builder.discovery.services.some((service) => service.capability === "database")) {
19
- throw new AddScaffoldError(ADD_FAILURE_CODES.collision, "A database service already exists.");
27
+ return yield* domainError(new AddScaffoldError(ADD_FAILURE_CODES.collision, "A database service already exists."));
20
28
  }
21
- const servicePath = "src/database/service.ts";
22
- const schemaPath = "src/database/schema/index.ts";
29
+ const servicePath = yield* domainTry(() => scaffoldServiceBoundary(builder.discovery, "database"));
30
+ const schemaPath = `${dirname(servicePath)}/schema/index.ts`;
23
31
  yield* builder.createEffect(servicePath, databaseServiceSource(request.dialect));
24
32
  yield* builder.createEffect(schemaPath, request.authSchema ? authSchemaSource(request.dialect) : itemsSchemaSource(request.dialect));
25
- yield* builder.createEffect("drizzle.config.ts", drizzleConfigSource(request.dialect));
33
+ yield* builder.createEffect("drizzle.config.ts", drizzleConfigSource(request.dialect, schemaPath));
26
34
  for (const dependency of ["@relkit/drizzle", "drizzle-orm", "drizzle-kit"]) {
27
35
  yield* builder.dependencyEffect(dependency);
28
36
  }
29
37
  yield* builder.scriptEffect("db:generate", "bun --bun drizzle-kit generate");
30
- yield* builder.scriptEffect("db:migrate", "bun --bun drizzle-kit migrate");
38
+ if (request.dialect === "sqlite")
39
+ yield* builder.createEffect("scripts/migrate.ts", sqliteMigrationSource());
40
+ yield* builder.scriptEffect("db:migrate", request.dialect === "sqlite" ? "bun scripts/migrate.ts" : "bun --bun drizzle-kit migrate");
31
41
  yield* builder.gitignoreEffect("/drizzle/");
32
42
  if (request.dialect === "sqlite") {
33
- yield* ensureEnvironmentEffect(builder, "DATABASE_PATH", `env.string().default("./app.sqlite")`, "./app.sqlite");
43
+ yield* ensureEnvironmentEffect(builder, "DATABASE_PATH", `env.string().default("./.relkit/state/app.sqlite")`, "./.relkit/state/app.sqlite");
34
44
  yield* builder.gitignoreEffect("*.sqlite");
35
45
  yield* builder.gitignoreEffect("*.sqlite-*");
36
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"render-database.js","sourceRoot":"","sources":["../src/render-database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-database.js","sourceRoot":"","sources":["../src/render-database.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,cAAc,GAGf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAmB,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,EAAE,CAAC,yBAAyB,CAAC,CACtE,QAAQ,CAAC,EACP,OAAoB,EACpB,OAAkD;IAMlD,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,CAAC;QACpF,OAAO,KAAK,CAAC,CAAC,WAAW,CACvB,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,EAAE,oCAAoC,CAAC,CACxF,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CACxC,uBAAuB,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CACvD,CAAC;IACF,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC;IAC7D,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACjF,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CACzB,UAAU,EACV,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAC5F,CAAC;IACF,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CACzB,mBAAmB,EACnB,mBAAmB,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CACjD,CAAC;IACF,KAAK,MAAM,UAAU,IAAI,CAAC,iBAAiB,EAAE,aAAa,EAAE,aAAa,CAAU,EAAE,CAAC;QACpF,KAAK,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IACD,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,gCAAgC,CAAC,CAAC;IAC7E,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ;QAC9B,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,oBAAoB,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC7E,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CACzB,YAAY,EACZ,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,+BAA+B,CAC1F,CAAC;IACF,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjC,KAAK,CAAC,CAAC,uBAAuB,CAC5B,OAAO,EACP,eAAe,EACf,oDAAoD,EACpD,4BAA4B,CAC7B,CAAC;QACF,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3C,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,CAAC,uBAAuB,CAAC,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QACxE,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAC1B,uBAAuB,EACvB,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IACrD,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;IACpD,KAAK,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,SAAS,EAAE;QAC/C,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,UAAU;QACnB,EAAE,EAAE,UAAU;KACf,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAC/D,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,yBAAyB,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAC7F,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAoB,EACpB,OAAkD;IAElD,OAAO,mBAAmB,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Carries the selected native database dialect and physical source destinations
3
+ * between database/auth scaffold stages. Values describe source declarations;
4
+ * no connection, transaction or provider ownership is acquired by planning.
5
+ */
6
+ import type { AddRequest } from "./add-types.js";
7
+ /** Validated discovered/planned native database and registered schema locations. */
8
+ export interface RenderedDatabase {
9
+ readonly dialect: Extract<AddRequest, {
10
+ kind: "database";
11
+ }>["dialect"];
12
+ readonly servicePath: string;
13
+ readonly schemaPath: string;
14
+ }
15
+ //# sourceMappingURL=render-database.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-database.types.d.ts","sourceRoot":"","sources":["../src/render-database.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,oFAAoF;AACpF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACvE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=render-database.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-database.types.js","sourceRoot":"","sources":["../src/render-database.types.ts"],"names":[],"mappings":""}
@@ -1,11 +1,13 @@
1
+ /** Renders HTTP source declarations using the selected physical service boundary. */
1
2
  import type { RouteMethod } from "./add-types.js";
2
3
  /**
3
4
  * Renders service Route Source as source text without executing user modules.
4
5
  * @param domain - Normalized owning domain used by source imports and job names.
5
6
  * @param maps - HTTP method-to-service-member mappings.
7
+ * @param servicePath - Actual discovered or planned boundary in either supported layout.
6
8
  * @returns Service-route source exporting handlers for the declared HTTP method mappings.
7
9
  */
8
- export declare function serviceRouteSource(domain: string, maps: Readonly<Partial<Record<RouteMethod, string>>>): string;
10
+ export declare function serviceRouteSource(domain: string, maps: Readonly<Partial<Record<RouteMethod, string>>>, servicePath: string): string;
9
11
  /**
10
12
  * Renders route Source as source text without executing user modules.
11
13
  * @returns Route source with an example GET JSON response.
@@ -1 +1 @@
1
- {"version":3,"file":"render-route-sources.d.ts","sourceRoot":"","sources":["../src/render-route-sources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,GACnD,MAAM,CAUR;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAMxC"}
1
+ {"version":3,"file":"render-route-sources.d.ts","sourceRoot":"","sources":["../src/render-route-sources.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,EACpD,WAAW,EAAE,MAAM,GAClB,MAAM,CAUR;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAMxC"}
@@ -1,14 +1,16 @@
1
+ import { sourceModule } from "./domain-artifact.js";
1
2
  /**
2
3
  * Renders service Route Source as source text without executing user modules.
3
4
  * @param domain - Normalized owning domain used by source imports and job names.
4
5
  * @param maps - HTTP method-to-service-member mappings.
6
+ * @param servicePath - Actual discovered or planned boundary in either supported layout.
5
7
  * @returns Service-route source exporting handlers for the declared HTTP method mappings.
6
8
  */
7
- export function serviceRouteSource(domain, maps) {
9
+ export function serviceRouteSource(domain, maps, servicePath) {
8
10
  const binding = domain.replace(/-([a-z0-9])/g, (_, value) => value.toUpperCase());
9
11
  const methods = Object.keys(maps);
10
12
  return `import { defineServiceRoutes } from "@relkit/app/routes";
11
- import ${binding} from "@app/${domain}/service.js";
13
+ import ${binding} from "${sourceModule(servicePath)}";
12
14
 
13
15
  export const { ${methods.join(", ")} } = defineServiceRoutes(${binding}, {
14
16
  ${methods.map((method) => ` ${method}: "${maps[method]}",`).join("\n")}
@@ -1 +1 @@
1
- {"version":3,"file":"render-route-sources.js","sourceRoot":"","sources":["../src/render-route-sources.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,IAAoD;IAEpD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAkB,CAAC;IACnD,OAAO;SACA,OAAO,eAAe,MAAM;;iBAEpB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,OAAO;EACpE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;CAEtE,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO;;;;;CAKR,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO;;kCAEyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;CAGrD,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO;;;;CAIR,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"render-route-sources.js","sourceRoot":"","sources":["../src/render-route-sources.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,IAAoD,EACpD,WAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAkB,CAAC;IACnD,OAAO;SACA,OAAO,UAAU,YAAY,CAAC,WAAW,CAAC;;iBAElC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,OAAO;EACpE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;CAEtE,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO;;;;;CAKR,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO;;kCAEyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;CAGrD,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO;;;;CAIR,CAAC;AACF,CAAC"}
@@ -1,3 +1,4 @@
1
+ /** Plans HTTP routes, middleware and transforms through typed scaffold filesystem authority. */
1
2
  import { Effect } from "effect";
2
3
  import { GeneratorFileSystem } from "./generator-filesystem.js";
3
4
  import { type GeneratorDomainError, type GeneratorIoError } from "./generator-errors.js";
@@ -1 +1 @@
1
- {"version":3,"file":"render-routes.d.ts","sourceRoot":"","sources":["../src/render-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;;;;0HAoB7B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;;;wFAalC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;iGAYjC,CAAC;AA4BF;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,EAC/C,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,GACnD,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,CAEf"}
1
+ {"version":3,"file":"render-routes.d.ts","sourceRoot":"","sources":["../src/render-routes.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;;;;0HAuB7B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;;;wFAalC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;iGAYjC,CAAC;AA4BF;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,EAC/C,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,GACnD,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -1,3 +1,4 @@
1
+ /** Plans HTTP routes, middleware and transforms through typed scaffold filesystem authority. */
1
2
  import { Effect } from "effect";
2
3
  import { observeExecution } from "@relkit/contracts/operation";
3
4
  import { GeneratorFileSystem } from "./generator-filesystem.js";
@@ -28,7 +29,7 @@ export const renderRouteEffect = Effect.fn("Scaffold.renderRoute")(function* (bu
28
29
  if (members && !members.has(member))
29
30
  usage(`Service ${target.domain.fileStem} has no public member ${member}.`);
30
31
  }
31
- yield* builder.createEffect(path, serviceRouteSource(target.domain.fileStem, request.maps));
32
+ yield* builder.createEffect(path, serviceRouteSource(target.domain.fileStem, request.maps, target.servicePath));
32
33
  }, (effect) => observeExecution("generator", "planning.renderRoute", scaffoldErrors(effect)));
33
34
  /**
34
35
  * Plans middleware through the owning request and typed filesystem authority.
@@ -1 +1 @@
1
- {"version":3,"file":"render-routes.js","sourceRoot":"","sources":["../src/render-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-routes.js","sourceRoot":"","sources":["../src/render-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Plans prerequisite service members and their receiver-owned event/job links.
3
+ * The existing renderer operations own filesystem authority and typed failures;
4
+ * this composition preserves their dependency order and public/internal defaults.
5
+ */
6
+ import { Effect } from "effect";
7
+ import type { PlanBuilder } from "./plan-builder.js";
8
+ import type { DomainArtifact, DomainTarget } from "./domain-planning.types.js";
9
+ import type { ServiceInclude } from "./add-types.js";
10
+ import type { ServicePrimaryArtifacts } from "./render-service.types.js";
11
+ /**
12
+ * Plans errors/events/functions before tasks that may refer to those members.
13
+ * @param builder - Per-request transaction planning owner.
14
+ * @param target - Public boundary and logical service identity.
15
+ * @param selected - Requested capabilities including their closed prerequisites.
16
+ * @returns Lazy prerequisite artifact records with the renderers' typed E/R channels.
17
+ */
18
+ export declare const renderServiceMembersEffect: (builder: PlanBuilder, target: DomainTarget, selected: ReadonlySet<ServiceInclude>) => Effect.Effect<{
19
+ fn: DomainArtifact | undefined;
20
+ event: DomainArtifact | undefined;
21
+ task: DomainArtifact | undefined;
22
+ }, import("./generator-errors.js").GeneratorIoError | import("./generator-errors.js").GeneratorDomainError, import("./generator-filesystem.js").GeneratorFileSystem>;
23
+ /**
24
+ * Plans subscribers and jobs after their receiver/event/task targets exist.
25
+ * @param builder - Per-request transaction planning owner.
26
+ * @param target - Shared logical/physical service boundary.
27
+ * @param selected - Closed capability selection.
28
+ * @param primary - Previously planned callable/event/task identities.
29
+ * @returns Lazy completion with the existing renderers' typed failures and filesystem requirement.
30
+ */
31
+ export declare const renderServiceWorkEffect: (builder: PlanBuilder, target: DomainTarget, selected: ReadonlySet<ServiceInclude>, primary: ServicePrimaryArtifacts) => Effect.Effect<void, import("./generator-errors.js").GeneratorIoError | import("./generator-errors.js").GeneratorDomainError, import("./generator-filesystem.js").GeneratorFileSystem>;
32
+ //# sourceMappingURL=render-service-members.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-service-members.d.ts","sourceRoot":"","sources":["../src/render-service-members.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAYhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;;;;oKA2BtC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,gTA4BnC,CAAC"}