seamless-cli 0.4.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.
Files changed (68) hide show
  1. package/dist/commands/init.js +39 -4
  2. package/dist/commands/init.js.map +1 -1
  3. package/dist/core/images.js +1 -1
  4. package/dist/core/oauthProviders.js +89 -0
  5. package/dist/core/oauthProviders.js.map +1 -0
  6. package/dist/core/templates.js.map +1 -1
  7. package/dist/generators/auth/auth.js +4 -4
  8. package/dist/generators/auth/auth.js.map +1 -1
  9. package/dist/generators/docker/docker.js +28 -10
  10. package/dist/generators/docker/docker.js.map +1 -1
  11. package/dist/index.js +0 -0
  12. package/dist/prompts/oauthSetup.js +36 -0
  13. package/dist/prompts/oauthSetup.js.map +1 -0
  14. package/package.json +1 -1
  15. package/dist/commands/contribute.js +0 -121
  16. package/dist/commands/contribute.js.map +0 -1
  17. package/dist/commands/deploy.js +0 -190
  18. package/dist/commands/deploy.js.map +0 -1
  19. package/dist/commands/destroy.js +0 -122
  20. package/dist/commands/destroy.js.map +0 -1
  21. package/dist/contributor/catalog.js +0 -129
  22. package/dist/contributor/catalog.js.map +0 -1
  23. package/dist/contributor/workspace.js +0 -551
  24. package/dist/contributor/workspace.js.map +0 -1
  25. package/dist/core/acm.js +0 -24
  26. package/dist/core/acm.js.map +0 -1
  27. package/dist/core/aws.js +0 -374
  28. package/dist/core/aws.js.map +0 -1
  29. package/dist/core/buildPush.js +0 -91
  30. package/dist/core/buildPush.js.map +0 -1
  31. package/dist/core/configure.js +0 -25
  32. package/dist/core/configure.js.map +0 -1
  33. package/dist/core/deployConfig.js +0 -66
  34. package/dist/core/deployConfig.js.map +0 -1
  35. package/dist/core/deployManifest.js +0 -163
  36. package/dist/core/deployManifest.js.map +0 -1
  37. package/dist/core/deploySecrets.js +0 -31
  38. package/dist/core/deploySecrets.js.map +0 -1
  39. package/dist/core/destroy.js +0 -38
  40. package/dist/core/destroy.js.map +0 -1
  41. package/dist/core/envDiscovery.js +0 -153
  42. package/dist/core/envDiscovery.js.map +0 -1
  43. package/dist/core/envRegistry.js +0 -76
  44. package/dist/core/envRegistry.js.map +0 -1
  45. package/dist/core/health.js +0 -11
  46. package/dist/core/health.js.map +0 -1
  47. package/dist/core/help.js +0 -75
  48. package/dist/core/help.js.map +0 -1
  49. package/dist/core/preReqs.js +0 -14
  50. package/dist/core/preReqs.js.map +0 -1
  51. package/dist/core/terraform.js +0 -34
  52. package/dist/core/terraform.js.map +0 -1
  53. package/dist/core/tfVars.js +0 -69
  54. package/dist/core/tfVars.js.map +0 -1
  55. package/dist/generators/backend/express.js +0 -13
  56. package/dist/generators/backend/express.js.map +0 -1
  57. package/dist/generators/deploy/aws/dev/files.js +0 -36
  58. package/dist/generators/deploy/aws/dev/files.js.map +0 -1
  59. package/dist/generators/deploy/aws/dev/template.js +0 -1240
  60. package/dist/generators/deploy/aws/dev/template.js.map +0 -1
  61. package/dist/generators/frontend/react.js +0 -13
  62. package/dist/generators/frontend/react.js.map +0 -1
  63. package/dist/prompts/contributeSetup.js +0 -39
  64. package/dist/prompts/contributeSetup.js.map +0 -1
  65. package/dist/prompts/deploySetup.js +0 -244
  66. package/dist/prompts/deploySetup.js.map +0 -1
  67. package/dist/utils/repoUtils.js +0 -23
  68. package/dist/utils/repoUtils.js.map +0 -1
package/dist/core/aws.js DELETED
@@ -1,374 +0,0 @@
1
- import { execCommand } from "./exec.js";
2
- export async function getAwsIdentity(profile, region) {
3
- const result = await execCommand("aws", [
4
- "--profile",
5
- profile,
6
- "--region",
7
- region,
8
- "sts",
9
- "get-caller-identity",
10
- "--output",
11
- "json",
12
- ], { quiet: true });
13
- const parsed = JSON.parse(result.stdout);
14
- return {
15
- accountId: parsed.Account,
16
- arn: parsed.Arn,
17
- userId: parsed.UserId,
18
- };
19
- }
20
- export async function listHostedZones(profile, region) {
21
- const result = await execCommand("aws", [
22
- "--profile",
23
- profile,
24
- "--region",
25
- region,
26
- "route53",
27
- "list-hosted-zones",
28
- "--output",
29
- "json",
30
- ], { quiet: true });
31
- const parsed = JSON.parse(result.stdout);
32
- return (parsed.HostedZones ?? [])
33
- .map((zone) => ({
34
- id: zone.Id.replace("/hostedzone/", ""),
35
- name: zone.Name.replace(/\.$/, ""),
36
- privateZone: Boolean(zone.Config?.PrivateZone),
37
- }))
38
- .filter((zone) => !zone.privateZone)
39
- .sort((a, b) => a.name.localeCompare(b.name));
40
- }
41
- export async function ensureRoute53ZoneExistsByName(profile, region, hostedZoneDomain) {
42
- const zones = await listHostedZones(profile, region);
43
- const match = zones.find((zone) => zone.name === hostedZoneDomain);
44
- if (!match) {
45
- throw new Error(`Route 53 hosted zone not found for domain: ${hostedZoneDomain}`);
46
- }
47
- return match;
48
- }
49
- export async function getEcrLoginPassword(profile, region) {
50
- const result = await execCommand("aws", ["--profile", profile, "--region", region, "ecr", "get-login-password"], { quiet: true });
51
- return result.stdout.trim();
52
- }
53
- export function buildEcrRegistry(accountId, region) {
54
- return `${accountId}.dkr.ecr.${region}.amazonaws.com`;
55
- }
56
- export function buildEcrImageUri(registry, repositoryName, tag) {
57
- return `${registry}/${repositoryName}:${tag}`;
58
- }
59
- export async function describeEcrRepository(profile, region, repositoryName) {
60
- try {
61
- const result = await execCommand("aws", [
62
- "--profile",
63
- profile,
64
- "--region",
65
- region,
66
- "ecr",
67
- "describe-repositories",
68
- "--repository-names",
69
- repositoryName,
70
- "--output",
71
- "json",
72
- ], { quiet: true });
73
- const parsed = JSON.parse(result.stdout);
74
- const repo = parsed.repositories?.[0];
75
- if (!repo)
76
- return null;
77
- return {
78
- repositoryName: repo.repositoryName,
79
- repositoryUri: repo.repositoryUri,
80
- };
81
- }
82
- catch {
83
- return null;
84
- }
85
- }
86
- export async function ensureEcrRepository(profile, region, repositoryName) {
87
- const existing = await describeEcrRepository(profile, region, repositoryName);
88
- if (existing)
89
- return existing;
90
- const result = await execCommand("aws", [
91
- "--profile",
92
- profile,
93
- "--region",
94
- region,
95
- "ecr",
96
- "create-repository",
97
- "--repository-name",
98
- repositoryName,
99
- "--image-tag-mutability",
100
- "MUTABLE",
101
- "--image-scanning-configuration",
102
- "scanOnPush=true",
103
- "--output",
104
- "json",
105
- ], { quiet: true });
106
- const parsed = JSON.parse(result.stdout);
107
- return {
108
- repositoryName: parsed.repository.repositoryName,
109
- repositoryUri: parsed.repository.repositoryUri,
110
- };
111
- }
112
- export async function ensureEcrRepositories(profile, region, repositoryNames) {
113
- const repositories = [];
114
- for (const repositoryName of repositoryNames) {
115
- const repository = await ensureEcrRepository(profile, region, repositoryName);
116
- repositories.push(repository);
117
- }
118
- return repositories;
119
- }
120
- export async function listEcrImages(profile, region, repositoryName) {
121
- try {
122
- const result = await execCommand("aws", [
123
- "--profile",
124
- profile,
125
- "--region",
126
- region,
127
- "ecr",
128
- "list-images",
129
- "--repository-name",
130
- repositoryName,
131
- "--query",
132
- "imageIds[*].imageTag",
133
- "--output",
134
- "json",
135
- ], { quiet: true });
136
- const parsed = JSON.parse(result.stdout);
137
- return parsed.filter((tag) => Boolean(tag));
138
- }
139
- catch {
140
- return [];
141
- }
142
- }
143
- export async function deleteEcrImages(profile, region, repositoryName) {
144
- const result = await execCommand("aws", [
145
- "--profile",
146
- profile,
147
- "--region",
148
- region,
149
- "ecr",
150
- "list-images",
151
- "--repository-name",
152
- repositoryName,
153
- "--output",
154
- "json",
155
- ], { quiet: true });
156
- const parsed = JSON.parse(result.stdout);
157
- const imageIds = parsed.imageIds ?? [];
158
- if (imageIds.length === 0)
159
- return;
160
- const payload = JSON.stringify({
161
- imageIds: imageIds.map((image) => {
162
- if (image.imageDigest) {
163
- return { imageDigest: image.imageDigest };
164
- }
165
- return { imageTag: image.imageTag };
166
- }),
167
- });
168
- await execCommand("aws", [
169
- "--profile",
170
- profile,
171
- "--region",
172
- region,
173
- "ecr",
174
- "batch-delete-image",
175
- "--repository-name",
176
- repositoryName,
177
- "--cli-input-json",
178
- payload,
179
- ], { quiet: true });
180
- }
181
- export async function deleteEcrRepository(profile, region, repositoryName) {
182
- try {
183
- await execCommand("aws", [
184
- "--profile",
185
- profile,
186
- "--region",
187
- region,
188
- "ecr",
189
- "delete-repository",
190
- "--repository-name",
191
- repositoryName,
192
- "--force",
193
- ], { quiet: true });
194
- }
195
- catch { }
196
- }
197
- export async function listAllS3ObjectVersions(profile, region, bucketName) {
198
- const result = await execCommand("aws", [
199
- "--profile",
200
- profile,
201
- "--region",
202
- region,
203
- "s3api",
204
- "list-object-versions",
205
- "--bucket",
206
- bucketName,
207
- "--output",
208
- "json",
209
- ], { quiet: true });
210
- const parsed = JSON.parse(result.stdout);
211
- const versions = (parsed.Versions ?? [])
212
- .filter((item) => Boolean(item.Key) && Boolean(item.VersionId))
213
- .map((item) => ({
214
- Key: item.Key,
215
- VersionId: item.VersionId,
216
- }));
217
- const deleteMarkers = (parsed.DeleteMarkers ?? [])
218
- .filter((item) => Boolean(item.Key) && Boolean(item.VersionId))
219
- .map((item) => ({
220
- Key: item.Key,
221
- VersionId: item.VersionId,
222
- }));
223
- return [...versions, ...deleteMarkers];
224
- }
225
- export async function deleteS3ObjectVersionsBatch(profile, region, bucketName, objects) {
226
- if (objects.length === 0)
227
- return;
228
- const payload = JSON.stringify({
229
- Bucket: bucketName,
230
- Delete: {
231
- Objects: objects.map((item) => ({
232
- Key: item.Key,
233
- VersionId: item.VersionId,
234
- })),
235
- Quiet: true,
236
- },
237
- });
238
- await execCommand("aws", [
239
- "--profile",
240
- profile,
241
- "--region",
242
- region,
243
- "s3api",
244
- "delete-objects",
245
- "--cli-input-json",
246
- payload,
247
- ], { quiet: true });
248
- }
249
- export async function emptyVersionedS3Bucket(profile, region, bucketName) {
250
- while (true) {
251
- const objects = await listAllS3ObjectVersions(profile, region, bucketName);
252
- if (objects.length === 0)
253
- break;
254
- const batchSize = 500;
255
- for (let i = 0; i < objects.length; i += batchSize) {
256
- const batch = objects.slice(i, i + batchSize);
257
- await deleteS3ObjectVersionsBatch(profile, region, bucketName, batch);
258
- }
259
- }
260
- }
261
- export async function findExistingAcmCertificate(profile, region, rootDomain) {
262
- const result = await execCommand("aws", [
263
- "--profile",
264
- profile,
265
- "--region",
266
- region,
267
- "acm",
268
- "list-certificates",
269
- "--output",
270
- "json",
271
- ], { quiet: true });
272
- const parsed = JSON.parse(result.stdout);
273
- const match = (parsed.CertificateSummaryList ?? []).find((cert) => cert.DomainName === rootDomain && cert.CertificateArn);
274
- return match?.CertificateArn ?? null;
275
- }
276
- export async function requestAcmCertificate(profile, region, rootDomain, sans) {
277
- const result = await execCommand("aws", [
278
- "--profile",
279
- profile,
280
- "--region",
281
- region,
282
- "acm",
283
- "request-certificate",
284
- "--domain-name",
285
- rootDomain,
286
- "--subject-alternative-names",
287
- ...sans,
288
- "--validation-method",
289
- "DNS",
290
- "--output",
291
- "json",
292
- ], { quiet: true });
293
- const parsed = JSON.parse(result.stdout);
294
- return parsed.CertificateArn;
295
- }
296
- export async function describeAcmCertificate(profile, region, certificateArn) {
297
- const result = await execCommand("aws", [
298
- "--profile",
299
- profile,
300
- "--region",
301
- region,
302
- "acm",
303
- "describe-certificate",
304
- "--certificate-arn",
305
- certificateArn,
306
- "--output",
307
- "json",
308
- ], { quiet: true });
309
- const parsed = JSON.parse(result.stdout);
310
- const validationRecords = (parsed.Certificate?.DomainValidationOptions ?? [])
311
- .map((option) => option.ResourceRecord)
312
- .filter((record) => Boolean(record?.Name) &&
313
- Boolean(record?.Type) &&
314
- Boolean(record?.Value))
315
- .map((record) => ({
316
- name: record.Name,
317
- type: record.Type,
318
- value: record.Value,
319
- }));
320
- return {
321
- status: parsed.Certificate?.Status ?? "UNKNOWN",
322
- validationRecords,
323
- };
324
- }
325
- export async function upsertRoute53Records(profile, hostedZoneId, records) {
326
- if (records.length === 0) {
327
- throw new Error("No ACM validation records available yet");
328
- }
329
- const payload = JSON.stringify({
330
- Changes: records.map((record) => ({
331
- Action: "UPSERT",
332
- ResourceRecordSet: {
333
- Name: record.name,
334
- Type: record.type,
335
- TTL: 60,
336
- ResourceRecords: [{ Value: record.value }],
337
- },
338
- })),
339
- });
340
- await execCommand("aws", [
341
- "--profile",
342
- profile,
343
- "route53",
344
- "change-resource-record-sets",
345
- "--hosted-zone-id",
346
- hostedZoneId,
347
- "--change-batch",
348
- payload,
349
- ], { quiet: true });
350
- }
351
- export async function waitForAcmValidationRecords(profile, region, certificateArn, maxAttempts = 20) {
352
- for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
353
- const description = await describeAcmCertificate(profile, region, certificateArn);
354
- if (description.validationRecords.length > 0) {
355
- return description.validationRecords;
356
- }
357
- await new Promise((resolve) => setTimeout(resolve, 5000));
358
- }
359
- throw new Error(`Timed out waiting for ACM validation records: ${certificateArn}`);
360
- }
361
- export async function waitForAcmCertificateIssued(profile, region, certificateArn, maxAttempts = 40) {
362
- for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
363
- const description = await describeAcmCertificate(profile, region, certificateArn);
364
- if (description.status === "ISSUED") {
365
- return;
366
- }
367
- if (description.status === "FAILED") {
368
- throw new Error(`ACM certificate failed validation: ${certificateArn}`);
369
- }
370
- await new Promise((resolve) => setTimeout(resolve, 15000));
371
- }
372
- throw new Error(`Timed out waiting for ACM certificate issuance: ${certificateArn}`);
373
- }
374
- //# sourceMappingURL=aws.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aws.js","sourceRoot":"","sources":["../../src/core/aws.ts"],"names":[],"mappings":"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"}
@@ -1,91 +0,0 @@
1
- import path from "node:path";
2
- import { spawn } from "node:child_process";
3
- import { execCommand } from "./exec.js";
4
- import { buildEcrImageUri, buildEcrRegistry, ensureEcrRepositories, getEcrLoginPassword, } from "./aws.js";
5
- import { getAwsDevInfraDir } from "./paths.js";
6
- async function dockerLogin(registry, password) {
7
- await new Promise((resolve, reject) => {
8
- const child = spawn("docker", ["login", "--username", "AWS", "--password-stdin", registry], { stdio: ["pipe", "pipe", "pipe"] });
9
- let stderr = "";
10
- child.stderr.on("data", (chunk) => {
11
- stderr += String(chunk);
12
- });
13
- child.on("error", reject);
14
- child.on("close", (code) => {
15
- if ((code ?? 0) !== 0) {
16
- reject(new Error(`Docker login failed: ${stderr}`));
17
- return;
18
- }
19
- resolve();
20
- });
21
- child.stdin.write(password);
22
- child.stdin.end();
23
- });
24
- }
25
- async function buildAndPushOne(buildDir, imageUri) {
26
- await execCommand("docker", ["build", "-t", imageUri, "."], {
27
- cwd: buildDir,
28
- });
29
- await execCommand("docker", ["push", imageUri], {
30
- cwd: buildDir,
31
- });
32
- }
33
- function requireServicePath(service, name) {
34
- if (!service.path) {
35
- throw new Error(`${name} service is source-backed but no local path was configured`);
36
- }
37
- return service.path;
38
- }
39
- function requireServiceImage(service, name) {
40
- if (!service.image) {
41
- throw new Error(`${name} service is image-backed but no image reference was configured`);
42
- }
43
- return service.image;
44
- }
45
- export async function buildAndPushImages(projectDir, manifest, accountId) {
46
- const reposToEnsure = [
47
- manifest.images.web.repositoryName,
48
- manifest.images.api.repositoryName,
49
- manifest.images.postgres.repositoryName,
50
- ];
51
- if (manifest.services.auth.mode === "source") {
52
- reposToEnsure.push(manifest.images.auth.repositoryName);
53
- }
54
- if (manifest.services.admin.mode === "source") {
55
- reposToEnsure.push(manifest.images.admin.repositoryName);
56
- }
57
- await ensureEcrRepositories(manifest.awsProfile, manifest.region, reposToEnsure);
58
- const registry = buildEcrRegistry(accountId, manifest.region);
59
- const password = await getEcrLoginPassword(manifest.awsProfile, manifest.region);
60
- await dockerLogin(registry, password);
61
- const webImage = buildEcrImageUri(registry, manifest.images.web.repositoryName, manifest.images.web.tag);
62
- const apiImage = buildEcrImageUri(registry, manifest.images.api.repositoryName, manifest.images.api.tag);
63
- const postgresImage = buildEcrImageUri(registry, manifest.images.postgres.repositoryName, manifest.images.postgres.tag);
64
- await buildAndPushOne(path.resolve(projectDir, requireServicePath(manifest.services.web, "web")), webImage);
65
- await buildAndPushOne(path.resolve(projectDir, requireServicePath(manifest.services.api, "api")), apiImage);
66
- await buildAndPushOne(path.join(getAwsDevInfraDir(projectDir), "postgres"), postgresImage);
67
- let authImage = "";
68
- if (manifest.services.auth.mode === "source") {
69
- authImage = buildEcrImageUri(registry, manifest.images.auth.repositoryName, manifest.images.auth.tag);
70
- await buildAndPushOne(path.resolve(projectDir, requireServicePath(manifest.services.auth, "auth")), authImage);
71
- }
72
- else {
73
- authImage = requireServiceImage(manifest.services.auth, "auth");
74
- }
75
- let adminImage = "";
76
- if (manifest.services.admin.mode === "source") {
77
- adminImage = buildEcrImageUri(registry, manifest.images.admin.repositoryName, manifest.images.admin.tag);
78
- await buildAndPushOne(path.resolve(projectDir, requireServicePath(manifest.services.admin, "admin")), adminImage);
79
- }
80
- else {
81
- adminImage = requireServiceImage(manifest.services.admin, "admin");
82
- }
83
- return {
84
- web_image: webImage,
85
- api_image: apiImage,
86
- auth_image: authImage,
87
- admin_image: adminImage,
88
- postgres_image: postgresImage,
89
- };
90
- }
91
- //# sourceMappingURL=buildPush.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildPush.js","sourceRoot":"","sources":["../../src/core/buildPush.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import path from "path";
2
- import fs from "fs";
3
- import { parseEnv, writeEnv } from "./env.js";
4
- import { generateSecret } from "./secrets.js";
5
- export function configureApiEnv(root, shared) {
6
- const apiEnvPath = path.join(root, "api", ".env");
7
- if (!fs.existsSync(apiEnvPath))
8
- return;
9
- const env = parseEnv(apiEnvPath);
10
- env.AUTH_SERVER_URL = "http://localhost:5312";
11
- env.API_SERVICE_TOKEN = shared.apiToken;
12
- env.JWKS_KID = shared.kid;
13
- env.COOKIE_SIGNING_KEY = generateSecret(32);
14
- writeEnv(apiEnvPath, env);
15
- }
16
- export function configureWebEnv(root) {
17
- const webEnvPath = path.join(root, "web", ".env");
18
- if (!fs.existsSync(webEnvPath))
19
- return;
20
- const env = parseEnv(webEnvPath);
21
- env.VITE_AUTH_SERVER_URL = "http://localhost:5312";
22
- env.VITE_API_URL = "http://localhost:3000";
23
- writeEnv(webEnvPath, env);
24
- }
25
- //# sourceMappingURL=configure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/core/configure.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,MAAW;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAElD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO;IAEvC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEjC,GAAG,CAAC,eAAe,GAAG,uBAAuB,CAAC;IAC9C,GAAG,CAAC,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC;IACxC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;IAC1B,GAAG,CAAC,kBAAkB,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IAE5C,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAElD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO;IAEvC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEjC,GAAG,CAAC,oBAAoB,GAAG,uBAAuB,CAAC;IACnD,GAAG,CAAC,YAAY,GAAG,uBAAuB,CAAC;IAE3C,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC"}
@@ -1,66 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- export function getSeamlessConfigPath(projectDir) {
4
- return path.join(projectDir, "seamless.config.json");
5
- }
6
- export function readSeamlessConfig(projectDir) {
7
- const configPath = getSeamlessConfigPath(projectDir);
8
- if (!fs.existsSync(configPath)) {
9
- throw new Error(`Missing seamless.config.json in ${projectDir}`);
10
- }
11
- const raw = fs.readFileSync(configPath, "utf8");
12
- return JSON.parse(raw);
13
- }
14
- export function writeSeamlessConfig(projectDir, config) {
15
- const configPath = getSeamlessConfigPath(projectDir);
16
- fs.writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf8");
17
- }
18
- export function mergeDeployConfig(config, deploy) {
19
- return {
20
- ...config,
21
- deploy: {
22
- provider: deploy.provider,
23
- tier: deploy.tier,
24
- region: deploy.region,
25
- awsProfile: deploy.awsProfile,
26
- domain: deploy.domain,
27
- backup: deploy.backup,
28
- },
29
- };
30
- }
31
- export function validateRequiredServices(config) {
32
- const missing = [];
33
- if (!config.services.web)
34
- missing.push("web");
35
- if (!config.services.api)
36
- missing.push("api");
37
- if (!config.services.auth)
38
- missing.push("auth");
39
- if (!config.services.admin)
40
- missing.push("admin");
41
- if (missing.length > 0) {
42
- throw new Error(`Project is missing required services for deploy: ${missing.join(", ")}`);
43
- }
44
- }
45
- export function buildDefaultDomainConfig(root, hostedZoneDomain, hostedZoneId) {
46
- return {
47
- root,
48
- webHost: root,
49
- apiHost: `api.${root}`,
50
- authHost: `auth.${root}`,
51
- adminHost: `admin.${root}`,
52
- hostedZoneDomain: hostedZoneDomain ?? root,
53
- hostedZoneId,
54
- };
55
- }
56
- export function getExistingDeployDefaults(config) {
57
- return {
58
- provider: config.deploy?.provider ?? "aws",
59
- tier: config.deploy?.tier,
60
- region: config.deploy?.region,
61
- awsProfile: config.deploy?.awsProfile,
62
- domain: config.deploy?.domain,
63
- backup: config.deploy?.backup,
64
- };
65
- }
66
- //# sourceMappingURL=deployConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deployConfig.js","sourceRoot":"","sources":["../../src/core/deployConfig.ts"],"names":[],"mappings":"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"}