create-relkit 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/add-name.d.ts +9 -0
- package/dist/add-name.d.ts.map +1 -0
- package/dist/add-name.js +18 -0
- package/dist/add-name.js.map +1 -0
- package/dist/add-options-parser.d.ts +21 -0
- package/dist/add-options-parser.d.ts.map +1 -0
- package/dist/add-options-parser.js +103 -0
- package/dist/add-options-parser.js.map +1 -0
- package/dist/add-options-resource.d.ts +5 -0
- package/dist/add-options-resource.d.ts.map +1 -0
- package/dist/add-options-resource.js +18 -0
- package/dist/add-options-resource.js.map +1 -0
- package/dist/add-options.d.ts +6 -0
- package/dist/add-options.d.ts.map +1 -0
- package/dist/add-options.js +165 -0
- package/dist/add-options.js.map +1 -0
- package/dist/add-output.d.ts +4 -0
- package/dist/add-output.d.ts.map +1 -0
- package/dist/add-output.js +33 -0
- package/dist/add-output.js.map +1 -0
- package/dist/add-plan.d.ts +4 -0
- package/dist/add-plan.d.ts.map +1 -0
- package/dist/add-plan.js +62 -0
- package/dist/add-plan.js.map +1 -0
- package/dist/add-resolution-discovery.d.ts +13 -0
- package/dist/add-resolution-discovery.d.ts.map +1 -0
- package/dist/add-resolution-discovery.js +70 -0
- package/dist/add-resolution-discovery.js.map +1 -0
- package/dist/add-resolution-state.d.ts +23 -0
- package/dist/add-resolution-state.d.ts.map +1 -0
- package/dist/add-resolution-state.js +89 -0
- package/dist/add-resolution-state.js.map +1 -0
- package/dist/add-resolver-domain.d.ts +4 -0
- package/dist/add-resolver-domain.d.ts.map +1 -0
- package/dist/add-resolver-domain.js +150 -0
- package/dist/add-resolver-domain.js.map +1 -0
- package/dist/add-resolver-platform.d.ts +4 -0
- package/dist/add-resolver-platform.d.ts.map +1 -0
- package/dist/add-resolver-platform.js +112 -0
- package/dist/add-resolver-platform.js.map +1 -0
- package/dist/add-resolver-resources.d.ts +4 -0
- package/dist/add-resolver-resources.d.ts.map +1 -0
- package/dist/add-resolver-resources.js +150 -0
- package/dist/add-resolver-resources.js.map +1 -0
- package/dist/add-resolver.d.ts +14 -0
- package/dist/add-resolver.d.ts.map +1 -0
- package/dist/add-resolver.js +41 -0
- package/dist/add-resolver.js.map +1 -0
- package/dist/add-transaction-files.d.ts +12 -0
- package/dist/add-transaction-files.d.ts.map +1 -0
- package/dist/add-transaction-files.js +103 -0
- package/dist/add-transaction-files.js.map +1 -0
- package/dist/add-transaction.d.ts +17 -0
- package/dist/add-transaction.d.ts.map +1 -0
- package/dist/add-transaction.js +115 -0
- package/dist/add-transaction.js.map +1 -0
- package/dist/add-types.d.ts +136 -0
- package/dist/add-types.d.ts.map +1 -0
- package/dist/add-types.js +41 -0
- package/dist/add-types.js.map +1 -0
- package/dist/bucket-profiles.d.ts +4 -0
- package/dist/bucket-profiles.d.ts.map +1 -0
- package/dist/bucket-profiles.js +18 -0
- package/dist/bucket-profiles.js.map +1 -0
- package/dist/create-additions.d.ts +7 -0
- package/dist/create-additions.d.ts.map +1 -0
- package/dist/create-additions.js +27 -0
- package/dist/create-additions.js.map +1 -0
- package/dist/create-preview.d.ts +12 -0
- package/dist/create-preview.d.ts.map +1 -0
- package/dist/create-preview.js +50 -0
- package/dist/create-preview.js.map +1 -0
- package/dist/create-resolver.d.ts +14 -0
- package/dist/create-resolver.d.ts.map +1 -0
- package/dist/create-resolver.js +96 -0
- package/dist/create-resolver.js.map +1 -0
- package/dist/domain-planning.d.ts +24 -0
- package/dist/domain-planning.d.ts.map +1 -0
- package/dist/domain-planning.js +94 -0
- package/dist/domain-planning.js.map +1 -0
- package/dist/generate-files-utilities.d.ts +18 -0
- package/dist/generate-files-utilities.d.ts.map +1 -0
- package/dist/generate-files-utilities.js +87 -0
- package/dist/generate-files-utilities.js.map +1 -0
- package/dist/generate-files.d.ts +1 -12
- package/dist/generate-files.d.ts.map +1 -1
- package/dist/generate-files.js +38 -89
- package/dist/generate-files.js.map +1 -1
- package/dist/generate-output.d.ts +2 -1
- package/dist/generate-output.d.ts.map +1 -1
- package/dist/generate-output.js +9 -0
- package/dist/generate-output.js.map +1 -1
- package/dist/generate-process.d.ts +1 -1
- package/dist/generate-process.d.ts.map +1 -1
- package/dist/generate-process.js +7 -3
- package/dist/generate-process.js.map +1 -1
- package/dist/generate-types.d.ts +46 -0
- package/dist/generate-types.d.ts.map +1 -0
- package/dist/generate-types.js +20 -0
- package/dist/generate-types.js.map +1 -0
- package/dist/generate.d.ts +1 -38
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +34 -32
- package/dist/generate.js.map +1 -1
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +79 -9
- package/dist/index.js.map +1 -1
- package/dist/options.d.ts +5 -1
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +10 -1
- package/dist/options.js.map +1 -1
- package/dist/plan-builder.d.ts +33 -0
- package/dist/plan-builder.d.ts.map +1 -0
- package/dist/plan-builder.js +139 -0
- package/dist/plan-builder.js.map +1 -0
- package/dist/plan-manifest.d.ts +6 -0
- package/dist/plan-manifest.d.ts.map +1 -0
- package/dist/plan-manifest.js +40 -0
- package/dist/plan-manifest.js.map +1 -0
- package/dist/project-discovery-app.d.ts +7 -0
- package/dist/project-discovery-app.d.ts.map +1 -0
- package/dist/project-discovery-app.js +122 -0
- package/dist/project-discovery-app.js.map +1 -0
- package/dist/project-discovery-database.d.ts +11 -0
- package/dist/project-discovery-database.d.ts.map +1 -0
- package/dist/project-discovery-database.js +46 -0
- package/dist/project-discovery-database.js.map +1 -0
- package/dist/project-discovery-types.d.ts +45 -0
- package/dist/project-discovery-types.d.ts.map +1 -0
- package/dist/project-discovery-types.js +2 -0
- package/dist/project-discovery-types.js.map +1 -0
- package/dist/project-discovery.d.ts +4 -0
- package/dist/project-discovery.d.ts.map +1 -0
- package/dist/project-discovery.js +152 -0
- package/dist/project-discovery.js.map +1 -0
- package/dist/prompt-driver.d.ts +32 -0
- package/dist/prompt-driver.d.ts.map +1 -0
- package/dist/prompt-driver.js +42 -0
- package/dist/prompt-driver.js.map +1 -0
- package/dist/provider-planning-definitions.d.ts +35 -0
- package/dist/provider-planning-definitions.d.ts.map +1 -0
- package/dist/provider-planning-definitions.js +109 -0
- package/dist/provider-planning-definitions.js.map +1 -0
- package/dist/provider-planning.d.ts +11 -0
- package/dist/provider-planning.d.ts.map +1 -0
- package/dist/provider-planning.js +131 -0
- package/dist/provider-planning.js.map +1 -0
- package/dist/render-ai-sources.d.ts +18 -0
- package/dist/render-ai-sources.d.ts.map +1 -0
- package/dist/render-ai-sources.js +49 -0
- package/dist/render-ai-sources.js.map +1 -0
- package/dist/render-ai.d.ts +11 -0
- package/dist/render-ai.d.ts.map +1 -0
- package/dist/render-ai.js +61 -0
- package/dist/render-ai.js.map +1 -0
- package/dist/render-auth-schema.d.ts +3 -0
- package/dist/render-auth-schema.d.ts.map +1 -0
- package/dist/render-auth-schema.js +85 -0
- package/dist/render-auth-schema.js.map +1 -0
- package/dist/render-auth-sources.d.ts +3 -0
- package/dist/render-auth-sources.d.ts.map +1 -0
- package/dist/render-auth-sources.js +17 -0
- package/dist/render-auth-sources.js.map +1 -0
- package/dist/render-auth.d.ts +6 -0
- package/dist/render-auth.d.ts.map +1 -0
- package/dist/render-auth.js +84 -0
- package/dist/render-auth.js.map +1 -0
- package/dist/render-database-sources.d.ts +5 -0
- package/dist/render-database-sources.d.ts.map +1 -0
- package/dist/render-database-sources.js +65 -0
- package/dist/render-database-sources.js.map +1 -0
- package/dist/render-database.d.ts +13 -0
- package/dist/render-database.d.ts.map +1 -0
- package/dist/render-database.js +40 -0
- package/dist/render-database.js.map +1 -0
- package/dist/render-domain-register.d.ts +4 -0
- package/dist/render-domain-register.d.ts.map +1 -0
- package/dist/render-domain-register.js +11 -0
- package/dist/render-domain-register.js.map +1 -0
- package/dist/render-domain-sources.d.ts +19 -0
- package/dist/render-domain-sources.d.ts.map +1 -0
- package/dist/render-domain-sources.js +132 -0
- package/dist/render-domain-sources.js.map +1 -0
- package/dist/render-domain.d.ts +26 -0
- package/dist/render-domain.d.ts.map +1 -0
- package/dist/render-domain.js +98 -0
- package/dist/render-domain.js.map +1 -0
- package/dist/render-resource-sources.d.ts +4 -0
- package/dist/render-resource-sources.d.ts.map +1 -0
- package/dist/render-resource-sources.js +31 -0
- package/dist/render-resource-sources.js.map +1 -0
- package/dist/render-resources.d.ts +11 -0
- package/dist/render-resources.d.ts.map +1 -0
- package/dist/render-resources.js +53 -0
- package/dist/render-resources.js.map +1 -0
- package/dist/render-route-sources.d.ts +6 -0
- package/dist/render-route-sources.d.ts.map +1 -0
- package/dist/render-route-sources.js +35 -0
- package/dist/render-route-sources.js.map +1 -0
- package/dist/render-routes.d.ts +13 -0
- package/dist/render-routes.d.ts.map +1 -0
- package/dist/render-routes.js +48 -0
- package/dist/render-routes.js.map +1 -0
- package/dist/render-service.d.ts +6 -0
- package/dist/render-service.d.ts.map +1 -0
- package/dist/render-service.js +124 -0
- package/dist/render-service.js.map +1 -0
- package/dist/scaffold-catalog.d.ts +75 -0
- package/dist/scaffold-catalog.d.ts.map +1 -0
- package/dist/scaffold-catalog.js +24 -0
- package/dist/scaffold-catalog.js.map +1 -0
- package/dist/source-edit.d.ts +10 -0
- package/dist/source-edit.d.ts.map +1 -0
- package/dist/source-edit.js +136 -0
- package/dist/source-edit.js.map +1 -0
- package/dist/source-import-edit.d.ts +3 -0
- package/dist/source-import-edit.d.ts.map +1 -0
- package/dist/source-import-edit.js +52 -0
- package/dist/source-import-edit.js.map +1 -0
- package/dist/template-root.d.ts +5 -0
- package/dist/template-root.d.ts.map +1 -0
- package/dist/template-root.js +15 -0
- package/dist/template-root.js.map +1 -0
- package/dist/templates/default/README.md +1 -1
- package/dist/templates/default/v1/agent/.env.example +0 -2
- package/dist/templates/default/v1/agent/README.md +7 -8
- package/dist/templates/default/v1/agent/package.json +6 -4
- package/dist/templates/default/v1/agent/relkit.config.ts +5 -15
- package/dist/templates/default/v1/agent/src/hello/agents/assistant.agent.ts +37 -4
- package/dist/templates/default/v1/agent/src/hello/agents/review.agent.ts +43 -0
- package/dist/templates/default/v1/agent/src/platform/env.ts +0 -2
- package/dist/templates/default/v1/agent/tests/integration/hello.route.test.ts +17 -6
- package/dist/templates/default/v1/agent/tests/unit/assistant.agent.test.ts +14 -36
- package/dist/templates/default/v1/agent/tests/unit/review.agent.test.ts +19 -0
- package/dist/templates/default/v1/api/package.json +3 -3
- package/dist/templates/default/v1/fullstack/.env.example +1 -0
- package/dist/templates/default/v1/fullstack/README.md +15 -0
- package/dist/templates/default/v1/fullstack/gitignore +4 -0
- package/dist/templates/default/v1/fullstack/package.json +35 -0
- package/dist/templates/default/v1/fullstack/relkit.config.ts +15 -0
- package/dist/templates/default/v1/fullstack/src/hello/agents/assistant.agent.ts +46 -0
- package/dist/templates/default/v1/fullstack/src/hello/agents/review.agent.ts +43 -0
- package/dist/templates/default/v1/fullstack/src/hello/functions/hello.function.ts +10 -0
- package/dist/templates/default/v1/fullstack/src/hello/service.ts +4 -0
- package/dist/templates/default/v1/fullstack/src/hello/tools/lookup.tool.ts +9 -0
- package/dist/templates/default/v1/fullstack/src/platform/env.ts +5 -0
- package/dist/templates/default/v1/fullstack/src/routes/hello/route.ts +4 -0
- package/dist/templates/default/v1/fullstack/tests/integration/hello.route.test.ts +29 -0
- package/dist/templates/default/v1/fullstack/tests/unit/assistant.agent.test.ts +18 -0
- package/dist/templates/default/v1/fullstack/tests/unit/hello.function.test.ts +7 -0
- package/dist/templates/default/v1/fullstack/tests/unit/review.agent.test.ts +19 -0
- package/dist/templates/default/v1/fullstack/tsconfig.json +21 -0
- package/dist/templates/default/v1/fullstack/web/app/agent-config.ts +7 -0
- package/dist/templates/default/v1/fullstack/web/app/layout.tsx +12 -0
- package/dist/templates/default/v1/fullstack/web/app/page.tsx +85 -0
- package/dist/templates/default/v1/fullstack/web/app/providers.tsx +29 -0
- package/dist/templates/default/v1/fullstack/web/next-env.d.ts +2 -0
- package/dist/templates/default/v1/fullstack/web/next.config.ts +5 -0
- package/dist/templates/default/v1/fullstack/web/tsconfig.json +10 -0
- package/dist/templates/default/v1/minimal/package.json +3 -3
- package/dist/templates/default/v1/tasks/.env.example +2 -0
- package/dist/templates/default/v1/tasks/README.md +15 -0
- package/dist/templates/default/v1/tasks/examples/export-orders.json +1 -0
- package/dist/templates/default/v1/tasks/gitignore +10 -0
- package/dist/templates/default/v1/tasks/package.json +24 -0
- package/dist/templates/default/v1/tasks/relkit.config.ts +11 -0
- package/dist/templates/default/v1/tasks/src/orders/functions/health.function.ts +9 -0
- package/dist/templates/default/v1/tasks/src/orders/jobs/export-orders.job.ts +15 -0
- package/dist/templates/default/v1/tasks/src/orders/service.ts +10 -0
- package/dist/templates/default/v1/tasks/src/orders/tasks/export-orders.task.ts +19 -0
- package/dist/templates/default/v1/tasks/src/platform/env.ts +3 -0
- package/dist/templates/default/v1/tasks/src/routes/health/route.ts +4 -0
- package/dist/templates/default/v1/tasks/tests/unit/export-orders.task.test.ts +7 -0
- package/dist/templates/default/v1/tasks/tsconfig.json +14 -0
- package/package.json +6 -1
- package/dist/templates/default/v1/agent/src/hello/functions/ask-assistant.function.ts +0 -16
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/options.d.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
export declare const CREATE_TEMPLATES: readonly ["minimal", "api", "agent"];
|
|
1
|
+
export declare const CREATE_TEMPLATES: readonly ["minimal", "api", "agent", "fullstack"];
|
|
2
2
|
export type CreateTemplate = (typeof CREATE_TEMPLATES)[number];
|
|
3
3
|
export declare const CREATE_CLOUDS: readonly ["aws", "none"];
|
|
4
4
|
export type CreateCloud = (typeof CREATE_CLOUDS)[number];
|
|
5
5
|
export declare const CREATE_DEPLOYMENTS: readonly ["pulumi", "none"];
|
|
6
6
|
export type CreateDeployment = (typeof CREATE_DEPLOYMENTS)[number];
|
|
7
|
+
export declare const CREATE_JOBS: readonly ["inngest-docker", "effect-mq-docker", "trigger-docker"];
|
|
8
|
+
export type CreateJobs = (typeof CREATE_JOBS)[number];
|
|
7
9
|
export declare const CREATE_OPTION_DEFAULTS: Readonly<{
|
|
8
10
|
template: CreateTemplate;
|
|
9
11
|
cloud: CreateCloud;
|
|
10
12
|
deploy: CreateDeployment;
|
|
13
|
+
jobs: CreateJobs | undefined;
|
|
11
14
|
install: boolean;
|
|
12
15
|
git: boolean;
|
|
13
16
|
examples: boolean;
|
|
@@ -19,6 +22,7 @@ export interface CreateOptions {
|
|
|
19
22
|
readonly template: CreateTemplate;
|
|
20
23
|
readonly cloud: CreateCloud;
|
|
21
24
|
readonly deploy: CreateDeployment;
|
|
25
|
+
readonly jobs?: CreateJobs;
|
|
22
26
|
readonly install: boolean;
|
|
23
27
|
readonly git: boolean;
|
|
24
28
|
readonly examples: boolean;
|
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,mDAAoD,CAAC;AAClF,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,eAAO,MAAM,aAAa,0BAA2B,CAAC;AACtD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,kBAAkB,6BAA8B,CAAC;AAC9D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,eAAO,MAAM,WAAW,mEAAoE,CAAC;AAC7F,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,eAAO,MAAM,sBAAsB;cACV,cAAc;WACpB,WAAW;YACV,gBAAgB;UACf,UAAU,GAAG,SAAS;aACxB,OAAO;SACX,OAAO;cACF,OAAO;yBACK,OAAO;UACtB,OAAO;EACtB,CAAC;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAG,qBAAqB,CAAU;gBAEnC,OAAO,EAAE,MAAM;CAI5B;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,GAAE,oBAAyB,GACjC,aAAa,CA+Df"}
|
package/dist/options.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
export const CREATE_TEMPLATES = ["minimal", "api", "agent"];
|
|
1
|
+
export const CREATE_TEMPLATES = ["minimal", "api", "agent", "fullstack"];
|
|
2
2
|
export const CREATE_CLOUDS = ["aws", "none"];
|
|
3
3
|
export const CREATE_DEPLOYMENTS = ["pulumi", "none"];
|
|
4
|
+
export const CREATE_JOBS = ["inngest-docker", "effect-mq-docker", "trigger-docker"];
|
|
4
5
|
export const CREATE_OPTION_DEFAULTS = Object.freeze({
|
|
5
6
|
template: "minimal",
|
|
6
7
|
cloud: "none",
|
|
7
8
|
deploy: "none",
|
|
9
|
+
jobs: undefined,
|
|
8
10
|
install: true,
|
|
9
11
|
git: true,
|
|
10
12
|
examples: true,
|
|
@@ -25,6 +27,7 @@ export function normalizeCreateOptions(args, context = {}) {
|
|
|
25
27
|
let template = CREATE_OPTION_DEFAULTS.template;
|
|
26
28
|
let cloud = CREATE_OPTION_DEFAULTS.cloud;
|
|
27
29
|
let deploy = CREATE_OPTION_DEFAULTS.deploy;
|
|
30
|
+
let jobs = CREATE_OPTION_DEFAULTS.jobs;
|
|
28
31
|
let install = CREATE_OPTION_DEFAULTS.install;
|
|
29
32
|
let git = CREATE_OPTION_DEFAULTS.git;
|
|
30
33
|
let examples = CREATE_OPTION_DEFAULTS.examples;
|
|
@@ -63,6 +66,11 @@ export function normalizeCreateOptions(args, context = {}) {
|
|
|
63
66
|
index = option.index;
|
|
64
67
|
deploy = choice(option.value, "--deploy", CREATE_DEPLOYMENTS);
|
|
65
68
|
}
|
|
69
|
+
else if (argument === "--jobs" || argument.startsWith("--jobs=")) {
|
|
70
|
+
const option = readValue(args, index, argument, "--jobs");
|
|
71
|
+
index = option.index;
|
|
72
|
+
jobs = choice(option.value, "--jobs", CREATE_JOBS);
|
|
73
|
+
}
|
|
66
74
|
else if (argument === "--directory" || argument.startsWith("--directory=")) {
|
|
67
75
|
const option = readValue(args, index, argument, "--directory");
|
|
68
76
|
index = option.index;
|
|
@@ -83,6 +91,7 @@ export function normalizeCreateOptions(args, context = {}) {
|
|
|
83
91
|
template,
|
|
84
92
|
cloud,
|
|
85
93
|
deploy,
|
|
94
|
+
...(jobs === undefined ? {} : { jobs }),
|
|
86
95
|
install,
|
|
87
96
|
git,
|
|
88
97
|
examples,
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type AddRequest, type ScaffoldPlan } from "./add-types.js";
|
|
2
|
+
import type { DiscoveredArtifact, DiscoveredProfile, ProjectDiscovery } from "./project-discovery-types.js";
|
|
3
|
+
import type { ScaffoldDependencyName } from "./scaffold-catalog.js";
|
|
4
|
+
export declare class PlanBuilder {
|
|
5
|
+
#private;
|
|
6
|
+
readonly request: AddRequest;
|
|
7
|
+
readonly discovery: ProjectDiscovery;
|
|
8
|
+
constructor(request: AddRequest, discovery: ProjectDiscovery);
|
|
9
|
+
read(path: string): Promise<string>;
|
|
10
|
+
create(path: string, content: string, mode?: number): Promise<void>;
|
|
11
|
+
update(path: string, transform: (source: string) => string): Promise<void>;
|
|
12
|
+
dependency(name: ScaffoldDependencyName): void;
|
|
13
|
+
get artifacts(): readonly DiscoveredArtifact[];
|
|
14
|
+
registerArtifact(kind: DiscoveredArtifact["kind"], value: {
|
|
15
|
+
readonly domain: string;
|
|
16
|
+
readonly path: string;
|
|
17
|
+
readonly binding: string;
|
|
18
|
+
readonly id: string;
|
|
19
|
+
readonly exportKind?: "default" | "named";
|
|
20
|
+
}): void;
|
|
21
|
+
get profiles(): readonly DiscoveredProfile[];
|
|
22
|
+
registerProfile(profile: DiscoveredProfile): void;
|
|
23
|
+
script(name: string, command: string): void;
|
|
24
|
+
warning(code: string, message: string): void;
|
|
25
|
+
nextStep(command: string): void;
|
|
26
|
+
envExample(name: string, value?: string): Promise<void>;
|
|
27
|
+
gitignore(pattern: string): Promise<void>;
|
|
28
|
+
finish(): Promise<ScaffoldPlan>;
|
|
29
|
+
relative(absolutePath: string): string;
|
|
30
|
+
private appendLine;
|
|
31
|
+
private updateManifest;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=plan-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-builder.d.ts","sourceRoot":"","sources":["../src/plan-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,UAAU,EAEf,KAAK,YAAY,EAElB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,qBAAa,WAAW;;IAUpB,QAAQ,CAAC,OAAO,EAAE,UAAU;IAC5B,QAAQ,CAAC,SAAS,EAAE,gBAAgB;gBAD3B,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,gBAAgB;IAEhC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKnC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAenE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBhF,UAAU,CAAC,IAAI,EAAE,sBAAsB,GAAG,IAAI;IAI9C,IAAI,SAAS,IAAI,SAAS,kBAAkB,EAAE,CAE7C;IAED,gBAAgB,CACd,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAChC,KAAK,EAAE;QACL,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;KAC3C,GACA,IAAI;IAcP,IAAI,QAAQ,IAAI,SAAS,iBAAiB,EAAE,CAE3C;IAED,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAIjD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIzB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAyBrC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;YAIxB,UAAU;YAiBV,cAAc;CAO7B"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { relative, resolve } from "node:path";
|
|
3
|
+
import { ADD_FAILURE_CODES, AddScaffoldError, } from "./add-types.js";
|
|
4
|
+
import { mergeScaffoldManifest } from "./plan-manifest.js";
|
|
5
|
+
export class PlanBuilder {
|
|
6
|
+
request;
|
|
7
|
+
discovery;
|
|
8
|
+
#files = new Map();
|
|
9
|
+
#dependencies = new Set();
|
|
10
|
+
#scripts = new Map();
|
|
11
|
+
#warnings = new Map();
|
|
12
|
+
#nextSteps = new Set();
|
|
13
|
+
#plannedArtifacts = [];
|
|
14
|
+
#plannedProfiles = [];
|
|
15
|
+
constructor(request, discovery) {
|
|
16
|
+
this.request = request;
|
|
17
|
+
this.discovery = discovery;
|
|
18
|
+
}
|
|
19
|
+
async read(path) {
|
|
20
|
+
const planned = this.#files.get(path);
|
|
21
|
+
return planned?.content ?? readFile(resolve(this.discovery.projectRoot, path), "utf8");
|
|
22
|
+
}
|
|
23
|
+
async create(path, content, mode) {
|
|
24
|
+
if (this.#files.has(path) ||
|
|
25
|
+
(await Bun.file(resolve(this.discovery.projectRoot, path)).exists())) {
|
|
26
|
+
collision(`${path} already exists.`);
|
|
27
|
+
}
|
|
28
|
+
this.#files.set(path, {
|
|
29
|
+
path,
|
|
30
|
+
action: "create",
|
|
31
|
+
content,
|
|
32
|
+
...(mode === undefined ? {} : { mode }),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
async update(path, transform) {
|
|
36
|
+
const existing = this.#files.get(path);
|
|
37
|
+
let source;
|
|
38
|
+
try {
|
|
39
|
+
source =
|
|
40
|
+
existing?.content ?? (await readFile(resolve(this.discovery.projectRoot, path), "utf8"));
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
throw new AddScaffoldError(ADD_FAILURE_CODES.invalidProject, `${path} does not exist.`);
|
|
44
|
+
}
|
|
45
|
+
const content = transform(source);
|
|
46
|
+
if (content === source)
|
|
47
|
+
return;
|
|
48
|
+
this.#files.set(path, {
|
|
49
|
+
path,
|
|
50
|
+
action: existing?.action ?? "update",
|
|
51
|
+
content,
|
|
52
|
+
...(existing?.mode === undefined ? {} : { mode: existing.mode }),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
dependency(name) {
|
|
56
|
+
this.#dependencies.add(name);
|
|
57
|
+
}
|
|
58
|
+
get artifacts() {
|
|
59
|
+
return [...this.discovery.artifacts, ...this.#plannedArtifacts];
|
|
60
|
+
}
|
|
61
|
+
registerArtifact(kind, value) {
|
|
62
|
+
this.#plannedArtifacts.push({
|
|
63
|
+
kind,
|
|
64
|
+
path: value.path,
|
|
65
|
+
domain: value.domain,
|
|
66
|
+
binding: value.binding,
|
|
67
|
+
id: value.id,
|
|
68
|
+
factory: "scaffold",
|
|
69
|
+
exported: true,
|
|
70
|
+
exportKind: value.exportKind ?? "default",
|
|
71
|
+
options: [],
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
get profiles() {
|
|
75
|
+
return [...this.discovery.profiles, ...this.#plannedProfiles];
|
|
76
|
+
}
|
|
77
|
+
registerProfile(profile) {
|
|
78
|
+
this.#plannedProfiles.push(profile);
|
|
79
|
+
}
|
|
80
|
+
script(name, command) {
|
|
81
|
+
this.#scripts.set(name, command);
|
|
82
|
+
}
|
|
83
|
+
warning(code, message) {
|
|
84
|
+
this.#warnings.set(code, Object.freeze({ code, message }));
|
|
85
|
+
}
|
|
86
|
+
nextStep(command) {
|
|
87
|
+
this.#nextSteps.add(command);
|
|
88
|
+
}
|
|
89
|
+
async envExample(name, value = "") {
|
|
90
|
+
await this.appendLine(".env.example", `${name}=${value}`, (source) => new RegExp(`^${escape(name)}=`, "m").test(source));
|
|
91
|
+
}
|
|
92
|
+
async gitignore(pattern) {
|
|
93
|
+
await this.appendLine(".gitignore", pattern, (source) => source.split(/\r?\n/).includes(pattern));
|
|
94
|
+
}
|
|
95
|
+
async finish() {
|
|
96
|
+
const dependencies = await this.updateManifest();
|
|
97
|
+
return Object.freeze({
|
|
98
|
+
request: this.request,
|
|
99
|
+
projectRoot: this.discovery.projectRoot,
|
|
100
|
+
operations: Object.freeze([...this.#files.values()].sort((a, b) => a.path.localeCompare(b.path))),
|
|
101
|
+
dependencies: Object.freeze(dependencies),
|
|
102
|
+
artifacts: Object.freeze(this.#plannedArtifacts.map(({ kind, path, id, binding }) => ({
|
|
103
|
+
kind,
|
|
104
|
+
path,
|
|
105
|
+
id: id,
|
|
106
|
+
binding,
|
|
107
|
+
}))),
|
|
108
|
+
profiles: Object.freeze(this.#plannedProfiles.map(({ capability, name }) => ({ capability, name }))),
|
|
109
|
+
warnings: Object.freeze([...this.#warnings.values()]),
|
|
110
|
+
nextSteps: Object.freeze([...this.#nextSteps]),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
relative(absolutePath) {
|
|
114
|
+
return relative(this.discovery.projectRoot, absolutePath).replaceAll("\\", "/");
|
|
115
|
+
}
|
|
116
|
+
async appendLine(path, line, present) {
|
|
117
|
+
if (!(await Bun.file(resolve(this.discovery.projectRoot, path)).exists()) &&
|
|
118
|
+
!this.#files.has(path)) {
|
|
119
|
+
await this.create(path, `${line}\n`);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
await this.update(path, (source) => present(source) ? source : `${source.trimEnd()}\n${line}\n`);
|
|
123
|
+
}
|
|
124
|
+
async updateManifest() {
|
|
125
|
+
if (this.#dependencies.size === 0 && this.#scripts.size === 0)
|
|
126
|
+
return {};
|
|
127
|
+
const path = "package.json";
|
|
128
|
+
const result = mergeScaffoldManifest(await this.read(path), this.#dependencies, this.#scripts);
|
|
129
|
+
await this.update(path, () => result.content);
|
|
130
|
+
return result.added;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function collision(message) {
|
|
134
|
+
throw new AddScaffoldError(ADD_FAILURE_CODES.collision, message);
|
|
135
|
+
}
|
|
136
|
+
function escape(value) {
|
|
137
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=plan-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-builder.js","sourceRoot":"","sources":["../src/plan-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type ScaffoldDependencyName } from "./scaffold-catalog.js";
|
|
2
|
+
export declare function mergeScaffoldManifest(source: string, dependencies: ReadonlySet<ScaffoldDependencyName>, plannedScripts: ReadonlyMap<string, string>): {
|
|
3
|
+
readonly content: string;
|
|
4
|
+
readonly added: Record<string, string>;
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=plan-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-manifest.d.ts","sourceRoot":"","sources":["../src/plan-manifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAS3F,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,WAAW,CAAC,sBAAsB,CAAC,EACjD,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1C;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CA4BtE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ADD_FAILURE_CODES, AddScaffoldError } from "./add-types.js";
|
|
2
|
+
import { SCAFFOLD_DEPENDENCIES } from "./scaffold-catalog.js";
|
|
3
|
+
export function mergeScaffoldManifest(source, dependencies, plannedScripts) {
|
|
4
|
+
const manifest = JSON.parse(source);
|
|
5
|
+
const added = {};
|
|
6
|
+
for (const name of [...dependencies].sort()) {
|
|
7
|
+
const wanted = SCAFFOLD_DEPENDENCIES[name];
|
|
8
|
+
const current = manifest.dependencies?.[name] ?? manifest.devDependencies?.[name];
|
|
9
|
+
if (current !== undefined && current !== wanted.version && current !== "workspace:*") {
|
|
10
|
+
collision(`package.json already declares ${name}@${current}.`);
|
|
11
|
+
}
|
|
12
|
+
if (current !== undefined)
|
|
13
|
+
continue;
|
|
14
|
+
const section = wanted.section === "dependencies"
|
|
15
|
+
? (manifest.dependencies ??= {})
|
|
16
|
+
: (manifest.devDependencies ??= {});
|
|
17
|
+
section[name] = wanted.version;
|
|
18
|
+
added[name] = wanted.version;
|
|
19
|
+
}
|
|
20
|
+
const scripts = (manifest.scripts ??= {});
|
|
21
|
+
for (const [name, command] of plannedScripts) {
|
|
22
|
+
if (scripts[name] !== undefined && scripts[name] !== command) {
|
|
23
|
+
collision(`package.json script ${name} already exists.`);
|
|
24
|
+
}
|
|
25
|
+
scripts[name] = command;
|
|
26
|
+
}
|
|
27
|
+
if (manifest.dependencies)
|
|
28
|
+
manifest.dependencies = sort(manifest.dependencies);
|
|
29
|
+
if (manifest.devDependencies)
|
|
30
|
+
manifest.devDependencies = sort(manifest.devDependencies);
|
|
31
|
+
manifest.scripts = sort(scripts);
|
|
32
|
+
return { content: `${JSON.stringify(manifest, null, 2)}\n`, added };
|
|
33
|
+
}
|
|
34
|
+
function sort(value) {
|
|
35
|
+
return Object.fromEntries(Object.entries(value).sort());
|
|
36
|
+
}
|
|
37
|
+
function collision(message) {
|
|
38
|
+
throw new AddScaffoldError(ADD_FAILURE_CODES.collision, message);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=plan-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-manifest.js","sourceRoot":"","sources":["../src/plan-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAA+B,MAAM,uBAAuB,CAAC;AAS3F,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,YAAiD,EACjD,cAA2C;IAE3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAa,CAAC;IAChD,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC;QAClF,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,MAAM,CAAC,OAAO,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YACrF,SAAS,CAAC,iCAAiC,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,OAAO,KAAK,SAAS;YAAE,SAAS;QACpC,MAAM,OAAO,GACX,MAAM,CAAC,OAAO,KAAK,cAAc;YAC/B,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,KAAK,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,cAAc,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YAC7D,SAAS,CAAC,uBAAuB,IAAI,kBAAkB,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAC1B,CAAC;IACD,IAAI,QAAQ,CAAC,YAAY;QAAE,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/E,IAAI,QAAQ,CAAC,eAAe;QAAE,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACxF,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,IAAI,CAAC,KAA6B;IACzC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DiscoveredProfile } from "./project-discovery-types.js";
|
|
2
|
+
export declare function readAppDiscovery(source: string, path: string, root: string): {
|
|
3
|
+
readonly factory: "defineApp" | "defineConfig";
|
|
4
|
+
readonly envPath?: string;
|
|
5
|
+
readonly profiles: readonly DiscoveredProfile[];
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=project-discovery-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-discovery-app.d.ts","sourceRoot":"","sources":["../src/project-discovery-app.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAKtE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX;IACD,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACjD,CAiBA"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { dirname, join, resolve } from "node:path";
|
|
2
|
+
import * as ts from "typescript";
|
|
3
|
+
import { ADD_FAILURE_CODES, AddScaffoldError } from "./add-types.js";
|
|
4
|
+
import { readFactoryObject, staticPropertyName } from "./source-edit.js";
|
|
5
|
+
const CAPABILITIES = ["bucket", "cache", "job", "event", "model"];
|
|
6
|
+
export function readAppDiscovery(source, path, root) {
|
|
7
|
+
for (const factory of ["defineApp", "defineConfig"]) {
|
|
8
|
+
try {
|
|
9
|
+
const object = readFactoryObject(source, path, [factory]);
|
|
10
|
+
return {
|
|
11
|
+
factory,
|
|
12
|
+
...optional("envPath", importedEnvPath(source, object, path, root)),
|
|
13
|
+
profiles: readProfiles(object),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
if (factory === "defineConfig")
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
throw new AddScaffoldError(ADD_FAILURE_CODES.unsupportedSourceShape, `${path} has no canonical app.`);
|
|
22
|
+
}
|
|
23
|
+
function readProfiles(object) {
|
|
24
|
+
const defaults = objectPropertyObject(object, "defaults");
|
|
25
|
+
return CAPABILITIES.flatMap((capability) => {
|
|
26
|
+
const item = profileProperty(object, capability);
|
|
27
|
+
if (!item || !ts.isPropertyAssignment(item))
|
|
28
|
+
return [];
|
|
29
|
+
const value = unwrap(item.initializer);
|
|
30
|
+
const profiles = value && ts.isObjectLiteralExpression(value) ? value.properties : [];
|
|
31
|
+
const direct = value !== undefined && ts.isCallExpression(value);
|
|
32
|
+
return (direct ? [undefined] : profiles).flatMap((entry) => {
|
|
33
|
+
const name = entry === undefined ? "default" : staticPropertyName(entry.name);
|
|
34
|
+
if (name === undefined)
|
|
35
|
+
return [];
|
|
36
|
+
const expression = entry && ts.isPropertyAssignment(entry) ? unwrap(entry.initializer) : value;
|
|
37
|
+
return [
|
|
38
|
+
{
|
|
39
|
+
capability,
|
|
40
|
+
name,
|
|
41
|
+
...optional("adapter", expression && ts.isCallExpression(expression) ? callName(expression) : undefined),
|
|
42
|
+
...optional("modelId", capability === "model" && expression && ts.isCallExpression(expression)
|
|
43
|
+
? callStringOption(expression, "defaultModel")
|
|
44
|
+
: undefined),
|
|
45
|
+
isDefault: defaultValue(defaults, capability === "job" ? "jobs" : capability) === name ||
|
|
46
|
+
(capability === "job" && defaultValue(defaults, "job") === name) ||
|
|
47
|
+
(direct && name === "default"),
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function importedEnvPath(source, object, appPath, root) {
|
|
54
|
+
const env = objectProperty(object, "env");
|
|
55
|
+
if (!env || !ts.isShorthandPropertyAssignment(env))
|
|
56
|
+
return undefined;
|
|
57
|
+
const file = ts.createSourceFile(appPath, source, ts.ScriptTarget.Latest, true);
|
|
58
|
+
const declaration = file.statements
|
|
59
|
+
.filter(ts.isImportDeclaration)
|
|
60
|
+
.find((statement) => statement.importClause?.name?.text === env.name.text);
|
|
61
|
+
if (!declaration || !ts.isStringLiteralLike(declaration.moduleSpecifier))
|
|
62
|
+
return undefined;
|
|
63
|
+
const specifier = declaration.moduleSpecifier.text;
|
|
64
|
+
const imported = specifier.startsWith("@app/")
|
|
65
|
+
? join(root, "src", specifier.slice(5))
|
|
66
|
+
: resolve(dirname(appPath), specifier);
|
|
67
|
+
return imported.replace(/\.js$/, ".ts");
|
|
68
|
+
}
|
|
69
|
+
function objectProperty(object, name) {
|
|
70
|
+
return object.properties.find((item) => staticPropertyName(item.name) === name);
|
|
71
|
+
}
|
|
72
|
+
function profileProperty(object, capability) {
|
|
73
|
+
return capability === "job"
|
|
74
|
+
? (objectProperty(object, "jobs") ?? objectProperty(object, "job"))
|
|
75
|
+
: objectProperty(object, capability);
|
|
76
|
+
}
|
|
77
|
+
function objectPropertyObject(object, name) {
|
|
78
|
+
const item = objectProperty(object, name);
|
|
79
|
+
const value = item && ts.isPropertyAssignment(item) ? unwrap(item.initializer) : undefined;
|
|
80
|
+
return value && ts.isObjectLiteralExpression(value) ? value : undefined;
|
|
81
|
+
}
|
|
82
|
+
function defaultValue(object, name) {
|
|
83
|
+
const item = object && objectProperty(object, name);
|
|
84
|
+
return item && ts.isPropertyAssignment(item) && ts.isStringLiteralLike(item.initializer)
|
|
85
|
+
? item.initializer.text
|
|
86
|
+
: undefined;
|
|
87
|
+
}
|
|
88
|
+
function callName(call) {
|
|
89
|
+
const name = ts.isIdentifier(call.expression)
|
|
90
|
+
? call.expression.text
|
|
91
|
+
: ts.isPropertyAccessExpression(call.expression)
|
|
92
|
+
? call.expression.name.text
|
|
93
|
+
: undefined;
|
|
94
|
+
if (name === undefined)
|
|
95
|
+
return undefined;
|
|
96
|
+
const nested = call.arguments
|
|
97
|
+
.map((argument) => unwrap(argument))
|
|
98
|
+
.find((argument) => argument !== undefined && ts.isCallExpression(argument));
|
|
99
|
+
const nestedName = nested === undefined ? undefined : callName(nested);
|
|
100
|
+
return nestedName === undefined ? name : `${name}(${nestedName})`;
|
|
101
|
+
}
|
|
102
|
+
function callStringOption(call, name) {
|
|
103
|
+
const value = unwrap(call.arguments[0]);
|
|
104
|
+
if (!value || !ts.isObjectLiteralExpression(value))
|
|
105
|
+
return undefined;
|
|
106
|
+
const item = objectProperty(value, name);
|
|
107
|
+
return item && ts.isPropertyAssignment(item) && ts.isStringLiteralLike(item.initializer)
|
|
108
|
+
? item.initializer.text
|
|
109
|
+
: undefined;
|
|
110
|
+
}
|
|
111
|
+
function unwrap(value) {
|
|
112
|
+
return value &&
|
|
113
|
+
(ts.isAsExpression(value) ||
|
|
114
|
+
ts.isSatisfiesExpression(value) ||
|
|
115
|
+
ts.isParenthesizedExpression(value))
|
|
116
|
+
? unwrap(value.expression)
|
|
117
|
+
: value;
|
|
118
|
+
}
|
|
119
|
+
function optional(name, value) {
|
|
120
|
+
return value === undefined ? {} : { [name]: value };
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=project-discovery-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-discovery-app.js","sourceRoot":"","sources":["../src/project-discovery-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DatabaseDialect } from "./add-types.js";
|
|
2
|
+
interface SourceModule {
|
|
3
|
+
readonly fileName: string;
|
|
4
|
+
readonly text: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function discoverDatabaseDetails(modules: readonly SourceModule[], servicePath: string, source: string): {
|
|
7
|
+
readonly dialect?: DatabaseDialect;
|
|
8
|
+
readonly schemaPath?: string;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=project-discovery-database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-discovery-database.d.ts","sourceRoot":"","sources":["../src/project-discovery-database.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,UAAU,YAAY;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAStE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { posix } from "node:path";
|
|
2
|
+
import * as ts from "typescript";
|
|
3
|
+
import { readFactoryObject, staticPropertyName } from "./source-edit.js";
|
|
4
|
+
export function discoverDatabaseDetails(modules, servicePath, source) {
|
|
5
|
+
const domain = servicePath.split("/").slice(0, -1).join("/");
|
|
6
|
+
const relevant = modules.filter((module) => module.fileName.startsWith(`${domain}/`));
|
|
7
|
+
const dialects = new Set(relevant.flatMap((module) => dialectOf(module.text)));
|
|
8
|
+
const schemaPath = importedSchemaPath(source, servicePath);
|
|
9
|
+
return {
|
|
10
|
+
...(dialects.size === 1 ? { dialect: [...dialects][0] } : {}),
|
|
11
|
+
...(schemaPath === undefined ? {} : { schemaPath }),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function importedSchemaPath(source, servicePath) {
|
|
15
|
+
const object = readFactoryObject(source, servicePath, ["defineDrizzleService"]);
|
|
16
|
+
const schema = object.properties.find((item) => staticPropertyName(item.name) === "schema");
|
|
17
|
+
const binding = schema && ts.isShorthandPropertyAssignment(schema)
|
|
18
|
+
? schema.name.text
|
|
19
|
+
: schema && ts.isPropertyAssignment(schema) && ts.isIdentifier(schema.initializer)
|
|
20
|
+
? schema.initializer.text
|
|
21
|
+
: undefined;
|
|
22
|
+
if (!binding)
|
|
23
|
+
return undefined;
|
|
24
|
+
const file = ts.createSourceFile(servicePath, source, ts.ScriptTarget.Latest, true);
|
|
25
|
+
const declaration = file.statements
|
|
26
|
+
.filter(ts.isImportDeclaration)
|
|
27
|
+
.find((item) => item.importClause?.namedBindings &&
|
|
28
|
+
ts.isNamespaceImport(item.importClause.namedBindings) &&
|
|
29
|
+
item.importClause.namedBindings.name.text === binding);
|
|
30
|
+
if (!declaration || !ts.isStringLiteralLike(declaration.moduleSpecifier))
|
|
31
|
+
return undefined;
|
|
32
|
+
const value = declaration.moduleSpecifier.text;
|
|
33
|
+
if (!value.startsWith("."))
|
|
34
|
+
return undefined;
|
|
35
|
+
return posix.normalize(posix.join(posix.dirname(servicePath), value.replace(/\.js$/, ".ts")));
|
|
36
|
+
}
|
|
37
|
+
function dialectOf(source) {
|
|
38
|
+
if (source.includes("drizzle-orm/sqlite-core") || source.includes("drizzle-orm/bun-sqlite"))
|
|
39
|
+
return ["sqlite"];
|
|
40
|
+
if (source.includes("drizzle-orm/pg-core") || source.includes("drizzle.postgres"))
|
|
41
|
+
return ["postgresql"];
|
|
42
|
+
if (source.includes("drizzle-orm/mysql-core") || source.includes("drizzle.mysql"))
|
|
43
|
+
return ["mysql"];
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=project-discovery-database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-discovery-database.js","sourceRoot":"","sources":["../src/project-discovery-database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { SourceFactoryKind } from "@relkit/compiler";
|
|
2
|
+
import type { DatabaseDialect } from "./add-types.js";
|
|
3
|
+
export interface DiscoveredServiceMember {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly targetBinding?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface DiscoveredService {
|
|
8
|
+
readonly domain: string;
|
|
9
|
+
readonly path: string;
|
|
10
|
+
readonly binding: string;
|
|
11
|
+
readonly capability: "generic" | "database" | "auth";
|
|
12
|
+
readonly dialect?: DatabaseDialect;
|
|
13
|
+
readonly schemaPath?: string;
|
|
14
|
+
readonly members: readonly DiscoveredServiceMember[];
|
|
15
|
+
}
|
|
16
|
+
export interface DiscoveredArtifact {
|
|
17
|
+
readonly kind: SourceFactoryKind;
|
|
18
|
+
readonly path: string;
|
|
19
|
+
readonly domain?: string;
|
|
20
|
+
readonly binding: string;
|
|
21
|
+
readonly id?: string;
|
|
22
|
+
readonly factory: string;
|
|
23
|
+
readonly exported: boolean;
|
|
24
|
+
readonly exportKind?: "default" | "named";
|
|
25
|
+
readonly options: readonly string[];
|
|
26
|
+
}
|
|
27
|
+
export interface DiscoveredProfile {
|
|
28
|
+
readonly capability: "bucket" | "cache" | "job" | "event" | "model";
|
|
29
|
+
readonly name: string;
|
|
30
|
+
readonly adapter?: string;
|
|
31
|
+
readonly modelId?: string;
|
|
32
|
+
readonly isDefault: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface ProjectDiscovery {
|
|
35
|
+
readonly projectRoot: string;
|
|
36
|
+
readonly packagePath: string;
|
|
37
|
+
readonly appPath: string;
|
|
38
|
+
readonly appFactory: "defineApp" | "defineConfig";
|
|
39
|
+
readonly envPath?: string;
|
|
40
|
+
readonly services: readonly DiscoveredService[];
|
|
41
|
+
readonly artifacts: readonly DiscoveredArtifact[];
|
|
42
|
+
readonly profiles: readonly DiscoveredProfile[];
|
|
43
|
+
readonly awsPulumiDeployment: boolean;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=project-discovery-types.d.ts.map
|