create-relkit 0.7.4 → 0.7.6
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.
- package/dist/create-capabilities.d.ts +24 -33
- package/dist/create-capabilities.d.ts.map +1 -1
- package/dist/create-capabilities.js +52 -9
- package/dist/create-capabilities.js.map +1 -1
- package/dist/create-capabilities.types.d.ts +55 -0
- package/dist/create-capabilities.types.d.ts.map +1 -0
- package/dist/create-capabilities.types.js +2 -0
- package/dist/create-capabilities.types.js.map +1 -0
- package/dist/domain-artifact.d.ts.map +1 -1
- package/dist/domain-artifact.js +11 -3
- package/dist/domain-artifact.js.map +1 -1
- package/dist/domain-planning.d.ts +5 -0
- package/dist/domain-planning.d.ts.map +1 -1
- package/dist/domain-planning.js +25 -16
- package/dist/domain-planning.js.map +1 -1
- package/dist/generate-deployment-manifest.d.ts +10 -0
- package/dist/generate-deployment-manifest.d.ts.map +1 -0
- package/dist/generate-deployment-manifest.js +56 -0
- package/dist/generate-deployment-manifest.js.map +1 -0
- package/dist/generate-deployment.d.ts +2 -3
- package/dist/generate-deployment.d.ts.map +1 -1
- package/dist/generate-deployment.js +6 -47
- package/dist/generate-deployment.js.map +1 -1
- package/dist/generate-examples.d.ts +11 -0
- package/dist/generate-examples.d.ts.map +1 -0
- package/dist/generate-examples.js +28 -0
- package/dist/generate-examples.js.map +1 -0
- package/dist/generate-files-utilities.d.ts +1 -8
- package/dist/generate-files-utilities.d.ts.map +1 -1
- package/dist/generate-files-utilities.js +5 -19
- package/dist/generate-files-utilities.js.map +1 -1
- package/dist/project-discovery-artifacts.d.ts +15 -0
- package/dist/project-discovery-artifacts.d.ts.map +1 -0
- package/dist/project-discovery-artifacts.js +107 -0
- package/dist/project-discovery-artifacts.js.map +1 -0
- package/dist/project-discovery-artifacts.types.d.ts +22 -0
- package/dist/project-discovery-artifacts.types.d.ts.map +1 -0
- package/dist/project-discovery-artifacts.types.js +2 -0
- package/dist/project-discovery-artifacts.types.js.map +1 -0
- package/dist/project-discovery-facts.d.ts +8 -9
- package/dist/project-discovery-facts.d.ts.map +1 -1
- package/dist/project-discovery-facts.js +29 -135
- package/dist/project-discovery-facts.js.map +1 -1
- package/dist/project-discovery-members.d.ts +16 -0
- package/dist/project-discovery-members.d.ts.map +1 -0
- package/dist/project-discovery-members.js +57 -0
- package/dist/project-discovery-members.js.map +1 -0
- package/dist/project-discovery-types.d.ts +8 -0
- package/dist/project-discovery-types.d.ts.map +1 -1
- package/dist/render-auth-database.d.ts +33 -0
- package/dist/render-auth-database.d.ts.map +1 -0
- package/dist/render-auth-database.js +69 -0
- package/dist/render-auth-database.js.map +1 -0
- package/dist/render-auth-sources.d.ts +8 -2
- package/dist/render-auth-sources.d.ts.map +1 -1
- package/dist/render-auth-sources.js +9 -3
- package/dist/render-auth-sources.js.map +1 -1
- package/dist/render-auth.d.ts +14 -11
- package/dist/render-auth.d.ts.map +1 -1
- package/dist/render-auth.js +41 -108
- package/dist/render-auth.js.map +1 -1
- package/dist/render-database-sources.d.ts +7 -1
- package/dist/render-database-sources.d.ts.map +1 -1
- package/dist/render-database-sources.js +3 -2
- package/dist/render-database-sources.js.map +1 -1
- package/dist/render-database.d.ts +7 -10
- package/dist/render-database.d.ts.map +1 -1
- package/dist/render-database.js +12 -4
- package/dist/render-database.js.map +1 -1
- package/dist/render-database.types.d.ts +15 -0
- package/dist/render-database.types.d.ts.map +1 -0
- package/dist/render-database.types.js +2 -0
- package/dist/render-database.types.js.map +1 -0
- package/dist/render-route-sources.d.ts +3 -1
- package/dist/render-route-sources.d.ts.map +1 -1
- package/dist/render-route-sources.js +4 -2
- package/dist/render-route-sources.js.map +1 -1
- package/dist/render-routes.d.ts +1 -0
- package/dist/render-routes.d.ts.map +1 -1
- package/dist/render-routes.js +2 -1
- package/dist/render-routes.js.map +1 -1
- package/dist/render-service-members.d.ts +32 -0
- package/dist/render-service-members.d.ts.map +1 -0
- package/dist/render-service-members.js +61 -0
- package/dist/render-service-members.js.map +1 -0
- package/dist/render-service-requests.d.ts +35 -0
- package/dist/render-service-requests.d.ts.map +1 -0
- package/dist/render-service-requests.js +62 -0
- package/dist/render-service-requests.js.map +1 -0
- package/dist/render-service-support.d.ts +37 -0
- package/dist/render-service-support.d.ts.map +1 -0
- package/dist/render-service-support.js +74 -0
- package/dist/render-service-support.js.map +1 -0
- package/dist/render-service.d.ts +16 -13
- package/dist/render-service.d.ts.map +1 -1
- package/dist/render-service.js +33 -149
- package/dist/render-service.js.map +1 -1
- package/dist/render-service.types.d.ts +13 -0
- package/dist/render-service.types.d.ts.map +1 -0
- package/dist/render-service.types.js +2 -0
- package/dist/render-service.types.js.map +1 -0
- package/dist/scaffold-layout.d.ts +10 -0
- package/dist/scaffold-layout.d.ts.map +1 -0
- package/dist/scaffold-layout.js +29 -0
- package/dist/scaffold-layout.js.map +1 -0
- package/dist/templates/default/README.md +1 -1
- package/dist/templates/default/v1/agent/.agents/skills/relkit/SKILL.md +48 -0
- package/dist/templates/default/v1/agent/.agents/skills/relkit/references/agent-apis.md +59 -0
- package/dist/templates/default/v1/agent/.agents/skills/relkit/references/cli.md +63 -0
- package/dist/templates/default/v1/agent/.agents/skills/relkit/references/config-environments.md +96 -0
- package/dist/templates/default/v1/agent/.agents/skills/relkit/references/data-apis.md +74 -0
- package/dist/templates/default/v1/agent/.agents/skills/relkit/references/domain-apis.md +92 -0
- package/dist/templates/default/v1/agent/.agents/skills/relkit/references/http-apis.md +70 -0
- package/dist/templates/default/v1/agent/.agents/skills/relkit/references/jobs-apis.md +49 -0
- package/dist/templates/default/v1/agent/.agents/skills/relkit/references/layout-migration.md +35 -0
- package/dist/templates/default/v1/agent/.agents/skills/relkit/references/observability-apis.md +53 -0
- package/dist/templates/default/v1/agent/.agents/skills/relkit/references/realtime-apis.md +98 -0
- package/dist/templates/default/v1/agent/.agents/skills/relkit/references/streaming-apis.md +75 -0
- package/dist/templates/default/v1/agent/.agents/skills/relkit/references/testing-apis.md +71 -0
- package/dist/templates/default/v1/agent/README.md +9 -0
- package/dist/templates/default/v1/agent/package.json +4 -4
- package/dist/templates/default/v1/agent/src/routes/hello/route.ts +2 -1
- package/dist/templates/default/v1/agent/src/{hello → services/hello}/agents/assistant.agent.ts +2 -1
- package/dist/templates/default/v1/agent/src/{hello → services/hello}/agents/review.agent.ts +1 -0
- package/dist/templates/default/v1/agent/src/{hello → services/hello}/functions/hello.function.ts +7 -0
- package/dist/templates/default/v1/agent/src/services/hello/service.ts +5 -0
- package/dist/templates/default/v1/agent/src/{hello → services/hello}/tools/lookup.tool.ts +2 -1
- package/dist/templates/default/v1/agent/tests/fixtures/lookup.tool.ts +2 -1
- package/dist/templates/default/v1/agent/tests/fixtures/mcp-options.ts +2 -1
- package/dist/templates/default/v1/agent/tests/unit/assistant.agent.test.ts +3 -2
- package/dist/templates/default/v1/agent/tests/unit/hello.function.test.ts +2 -1
- package/dist/templates/default/v1/agent/tests/unit/lookup.tool.test.ts +2 -1
- package/dist/templates/default/v1/agent/tests/unit/review.agent.test.ts +2 -1
- package/dist/templates/default/v1/agent/tsconfig.json +1 -0
- package/dist/templates/default/v1/api/.agents/skills/relkit/SKILL.md +48 -0
- package/dist/templates/default/v1/api/.agents/skills/relkit/references/agent-apis.md +59 -0
- package/dist/templates/default/v1/api/.agents/skills/relkit/references/cli.md +63 -0
- package/dist/templates/default/v1/api/.agents/skills/relkit/references/config-environments.md +96 -0
- package/dist/templates/default/v1/api/.agents/skills/relkit/references/data-apis.md +74 -0
- package/dist/templates/default/v1/api/.agents/skills/relkit/references/domain-apis.md +92 -0
- package/dist/templates/default/v1/api/.agents/skills/relkit/references/http-apis.md +70 -0
- package/dist/templates/default/v1/api/.agents/skills/relkit/references/jobs-apis.md +49 -0
- package/dist/templates/default/v1/api/.agents/skills/relkit/references/layout-migration.md +35 -0
- package/dist/templates/default/v1/api/.agents/skills/relkit/references/observability-apis.md +53 -0
- package/dist/templates/default/v1/api/.agents/skills/relkit/references/realtime-apis.md +98 -0
- package/dist/templates/default/v1/api/.agents/skills/relkit/references/streaming-apis.md +75 -0
- package/dist/templates/default/v1/api/.agents/skills/relkit/references/testing-apis.md +71 -0
- package/dist/templates/default/v1/api/README.md +10 -0
- package/dist/templates/default/v1/api/package.json +3 -3
- package/dist/templates/default/v1/api/src/routes/echo/route.ts +2 -1
- package/dist/templates/default/v1/api/src/routes/hello/route.ts +2 -1
- package/dist/templates/default/v1/api/src/routes/orders/route.ts +2 -1
- package/dist/templates/default/v1/api/src/{echo → services/echo}/functions/echo.function.ts +1 -0
- package/dist/templates/default/v1/api/src/services/echo/service.ts +5 -0
- package/dist/templates/default/v1/api/src/{hello → services/hello}/functions/hello.function.ts +7 -0
- package/dist/templates/default/v1/api/src/services/hello/service.ts +5 -0
- package/dist/templates/default/v1/api/src/{orders → services/orders}/functions/create-order.function.ts +2 -1
- package/dist/templates/default/v1/api/src/{orders → services/orders}/functions/price-order.function.ts +1 -0
- package/dist/templates/default/v1/api/src/services/orders/service.ts +8 -0
- package/dist/templates/default/v1/api/tests/unit/echo.function.test.ts +2 -1
- package/dist/templates/default/v1/api/tests/unit/hello.function.test.ts +2 -1
- package/dist/templates/default/v1/api/tests/unit/orders.function.test.ts +2 -1
- package/dist/templates/default/v1/api/tsconfig.json +1 -0
- package/dist/templates/default/v1/fullstack/.agents/skills/relkit/SKILL.md +48 -0
- package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/agent-apis.md +59 -0
- package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/cli.md +63 -0
- package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/config-environments.md +96 -0
- package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/data-apis.md +74 -0
- package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/domain-apis.md +92 -0
- package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/http-apis.md +70 -0
- package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/jobs-apis.md +49 -0
- package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/layout-migration.md +35 -0
- package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/observability-apis.md +53 -0
- package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/realtime-apis.md +98 -0
- package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/streaming-apis.md +75 -0
- package/dist/templates/default/v1/fullstack/.agents/skills/relkit/references/testing-apis.md +71 -0
- package/dist/templates/default/v1/fullstack/README.md +9 -0
- package/dist/templates/default/v1/fullstack/package.json +5 -5
- package/dist/templates/default/v1/fullstack/src/routes/hello/route.ts +2 -1
- package/dist/templates/default/v1/fullstack/src/{hello → services/hello}/agents/assistant.agent.ts +2 -1
- package/dist/templates/default/v1/fullstack/src/{hello → services/hello}/agents/review.agent.ts +1 -0
- package/dist/templates/default/v1/fullstack/src/{hello → services/hello}/functions/hello.function.ts +1 -0
- package/dist/templates/default/v1/fullstack/src/services/hello/service.ts +5 -0
- package/dist/templates/default/v1/fullstack/src/{hello → services/hello}/tools/lookup.tool.ts +2 -1
- package/dist/templates/default/v1/fullstack/tests/unit/assistant.agent.test.ts +3 -2
- package/dist/templates/default/v1/fullstack/tests/unit/hello.function.test.ts +2 -1
- package/dist/templates/default/v1/fullstack/tests/unit/review.agent.test.ts +2 -1
- package/dist/templates/default/v1/fullstack/tsconfig.json +1 -0
- package/dist/templates/default/v1/minimal/.agents/skills/relkit/SKILL.md +48 -0
- package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/agent-apis.md +59 -0
- package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/cli.md +63 -0
- package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/config-environments.md +96 -0
- package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/data-apis.md +74 -0
- package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/domain-apis.md +92 -0
- package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/http-apis.md +70 -0
- package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/jobs-apis.md +49 -0
- package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/layout-migration.md +35 -0
- package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/observability-apis.md +53 -0
- package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/realtime-apis.md +98 -0
- package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/streaming-apis.md +75 -0
- package/dist/templates/default/v1/minimal/.agents/skills/relkit/references/testing-apis.md +71 -0
- package/dist/templates/default/v1/minimal/README.md +10 -0
- package/dist/templates/default/v1/minimal/package.json +3 -3
- package/dist/templates/default/v1/minimal/src/routes/hello/route.ts +2 -1
- package/dist/templates/default/v1/minimal/src/{hello → services/hello}/functions/hello.function.ts +7 -0
- package/dist/templates/default/v1/minimal/src/services/hello/service.ts +5 -0
- package/dist/templates/default/v1/minimal/tests/unit/hello.function.test.ts +2 -1
- package/dist/templates/default/v1/minimal/tsconfig.json +1 -0
- package/dist/templates/default/v1/tasks/.agents/skills/relkit/SKILL.md +48 -0
- package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/agent-apis.md +59 -0
- package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/cli.md +63 -0
- package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/config-environments.md +96 -0
- package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/data-apis.md +74 -0
- package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/domain-apis.md +92 -0
- package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/http-apis.md +70 -0
- package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/jobs-apis.md +49 -0
- package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/layout-migration.md +35 -0
- package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/observability-apis.md +53 -0
- package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/realtime-apis.md +98 -0
- package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/streaming-apis.md +75 -0
- package/dist/templates/default/v1/tasks/.agents/skills/relkit/references/testing-apis.md +71 -0
- package/dist/templates/default/v1/tasks/README.md +8 -1
- package/dist/templates/default/v1/tasks/package.json +3 -3
- package/dist/templates/default/v1/tasks/src/routes/health/route.ts +2 -1
- package/dist/templates/default/v1/tasks/src/{orders → services/orders}/functions/health.function.ts +1 -0
- package/dist/templates/default/v1/tasks/src/{orders → services/orders}/jobs/export-orders.job.ts +2 -1
- package/dist/templates/default/v1/tasks/src/services/orders/service.ts +11 -0
- package/dist/templates/default/v1/tasks/src/{orders → services/orders}/tasks/export-orders.task.ts +1 -0
- package/dist/templates/default/v1/tasks/tests/unit/export-orders.task.test.ts +2 -1
- package/dist/templates/default/v1/tasks/tsconfig.json +2 -0
- package/package.json +3 -3
- package/dist/templates/default/v1/agent/src/hello/service.ts +0 -4
- package/dist/templates/default/v1/api/src/echo/service.ts +0 -4
- package/dist/templates/default/v1/api/src/hello/service.ts +0 -4
- package/dist/templates/default/v1/api/src/orders/service.ts +0 -7
- package/dist/templates/default/v1/fullstack/src/hello/service.ts +0 -4
- package/dist/templates/default/v1/minimal/src/hello/service.ts +0 -4
- package/dist/templates/default/v1/tasks/src/orders/service.ts +0 -10
package/dist/render-auth.js
CHANGED
|
@@ -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 {
|
|
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 {
|
|
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 {
|
|
16
|
+
import { addAuthSchemaEffect, existingDatabase, validateAuthBasePath, } from "./render-auth-database.js";
|
|
15
17
|
/**
|
|
16
|
-
*
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
25
|
+
return yield* domainError(new AddScaffoldError(ADD_FAILURE_CODES.collision, "An auth service already exists."));
|
|
28
26
|
}
|
|
29
|
-
|
|
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
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
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 (
|
|
44
|
+
if (found)
|
|
44
45
|
yield* addAuthSchemaEffect(builder, database);
|
|
45
|
-
yield* builder.
|
|
46
|
-
yield* builder.createEffect(
|
|
47
|
-
yield* builder.
|
|
48
|
-
yield* builder
|
|
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:
|
|
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
|
-
*
|
|
62
|
-
* @param builder - Per-request planning owner.
|
|
63
|
-
* @
|
|
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
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
-
*
|
|
71
|
+
* Runs the existing Promise compatibility boundary after all source planning settles.
|
|
139
72
|
* @param builder - Per-request planning owner.
|
|
140
|
-
* @param request -
|
|
141
|
-
* @returns
|
|
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));
|
package/dist/render-auth.js.map
CHANGED
|
@@ -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,
|
|
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,8 @@ 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;
|
|
20
26
|
//# 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
|
|
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"}
|
|
@@ -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,7 +71,7 @@ if (${value} === undefined || ${value}.trim() === ""${invalid}) {
|
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
export default defineConfig({
|
|
73
|
-
schema: "
|
|
74
|
+
schema: "./${schemaPath}",
|
|
74
75
|
dialect: "${dialect}",
|
|
75
76
|
out: "./drizzle",
|
|
76
77
|
dbCredentials: { url: ${value} },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-database-sources.js","sourceRoot":"","sources":["../src/render-database-sources.ts"],"names":[],"mappings":"
|
|
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,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;;;;;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"}
|
|
@@ -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;
|
|
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;AAShD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;mGA4DhC,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"}
|
package/dist/render-database.js
CHANGED
|
@@ -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";
|
|
@@ -16,13 +24,13 @@ 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
|
-
|
|
27
|
+
return yield* domainError(new AddScaffoldError(ADD_FAILURE_CODES.collision, "A database service already exists."));
|
|
20
28
|
}
|
|
21
|
-
const servicePath = "
|
|
22
|
-
const schemaPath =
|
|
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
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-database.js","sourceRoot":"","sources":["../src/render-database.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,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,GAClB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"render-database.js","sourceRoot":"","sources":["../src/render-database.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 @@
|
|
|
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
|
|
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;
|
|
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 "
|
|
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
|
|
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"}
|
package/dist/render-routes.d.ts
CHANGED
|
@@ -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;;;;;
|
|
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"}
|
package/dist/render-routes.js
CHANGED
|
@@ -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":"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,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAmB,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAChE,QAAQ,CAAC,EACP,OAAoB,EACpB,OAA+C,EAC/C,MAAqB;IAErB,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/F,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YACjC,KAAK,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,QAAQ,yBAAyB,MAAM,GAAG,CAAC,CAAC;IAC/E,CAAC;IACD,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,
|
|
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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
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 { observeExecution } from "@relkit/contracts/operation";
|
|
8
|
+
import { scaffoldErrors } from "./generator-errors.js";
|
|
9
|
+
import { renderErrorEffect, renderEventEffect, renderFunctionEffect, renderTaskEffect, renderEventFunctionEffect, renderJobEffect, } from "./render-domain.js";
|
|
10
|
+
import { serviceRequest, serviceTaskExecution } from "./render-service-requests.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 const renderServiceMembersEffect = Effect.fn("Scaffold.renderServiceMembers")(function* (builder, target, selected) {
|
|
19
|
+
let error;
|
|
20
|
+
if (selected.has("error"))
|
|
21
|
+
error = yield* renderErrorEffect(builder, target, "example");
|
|
22
|
+
let event;
|
|
23
|
+
if (selected.has("event"))
|
|
24
|
+
event = yield* renderEventEffect(builder, target, "example");
|
|
25
|
+
let fn;
|
|
26
|
+
if (selected.has("function"))
|
|
27
|
+
fn = yield* renderFunctionEffect(builder, target, "example", {
|
|
28
|
+
...(error ? { error } : {}),
|
|
29
|
+
...(event ? { event } : {}),
|
|
30
|
+
});
|
|
31
|
+
let task;
|
|
32
|
+
if (selected.has("task"))
|
|
33
|
+
task = yield* renderTaskEffect(builder, target, serviceRequest(builder, "task", {
|
|
34
|
+
name: "Example",
|
|
35
|
+
version: "1",
|
|
36
|
+
execution: serviceTaskExecution(builder),
|
|
37
|
+
}));
|
|
38
|
+
return { fn, event, task };
|
|
39
|
+
}, (effect) => observeExecution("generator", "planning.renderServiceMembers", scaffoldErrors(effect)));
|
|
40
|
+
/**
|
|
41
|
+
* Plans subscribers and jobs after their receiver/event/task targets exist.
|
|
42
|
+
* @param builder - Per-request transaction planning owner.
|
|
43
|
+
* @param target - Shared logical/physical service boundary.
|
|
44
|
+
* @param selected - Closed capability selection.
|
|
45
|
+
* @param primary - Previously planned callable/event/task identities.
|
|
46
|
+
* @returns Lazy completion with the existing renderers' typed failures and filesystem requirement.
|
|
47
|
+
*/
|
|
48
|
+
export const renderServiceWorkEffect = Effect.fn("Scaffold.renderServiceWork")(function* (builder, target, selected, primary) {
|
|
49
|
+
if (selected.has("event-function"))
|
|
50
|
+
yield* renderEventFunctionEffect(builder, target, serviceRequest(builder, "event-function", {
|
|
51
|
+
name: "On Example",
|
|
52
|
+
event: primary.event?.id ?? "example",
|
|
53
|
+
delivery: "durable",
|
|
54
|
+
}));
|
|
55
|
+
if (selected.has("job"))
|
|
56
|
+
yield* renderJobEffect(builder, target, serviceRequest(builder, "job", {
|
|
57
|
+
name: "Example",
|
|
58
|
+
target: primary.task?.id ?? primary.fn?.id ?? "example",
|
|
59
|
+
}));
|
|
60
|
+
}, (effect) => observeExecution("generator", "planning.renderServiceWork", scaffoldErrors(effect)));
|
|
61
|
+
//# sourceMappingURL=render-service-members.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-service-members.js","sourceRoot":"","sources":["../src/render-service-members.ts"],"names":[],"mappings":"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"}
|