seamless-cli 0.4.0 → 0.5.1
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/commands/help.js +3 -1
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/init.js +39 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/core/images.js +1 -1
- package/dist/core/oauthProviders.js +89 -0
- package/dist/core/oauthProviders.js.map +1 -0
- package/dist/core/templates.js.map +1 -1
- package/dist/generators/auth/auth.js +4 -4
- package/dist/generators/auth/auth.js.map +1 -1
- package/dist/generators/docker/docker.js +31 -10
- package/dist/generators/docker/docker.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/prompts/oauthSetup.js +36 -0
- package/dist/prompts/oauthSetup.js.map +1 -0
- package/package.json +1 -1
- package/dist/commands/contribute.js +0 -121
- package/dist/commands/contribute.js.map +0 -1
- package/dist/commands/deploy.js +0 -190
- package/dist/commands/deploy.js.map +0 -1
- package/dist/commands/destroy.js +0 -122
- package/dist/commands/destroy.js.map +0 -1
- package/dist/contributor/catalog.js +0 -129
- package/dist/contributor/catalog.js.map +0 -1
- package/dist/contributor/workspace.js +0 -551
- package/dist/contributor/workspace.js.map +0 -1
- package/dist/core/acm.js +0 -24
- package/dist/core/acm.js.map +0 -1
- package/dist/core/aws.js +0 -374
- package/dist/core/aws.js.map +0 -1
- package/dist/core/buildPush.js +0 -91
- package/dist/core/buildPush.js.map +0 -1
- package/dist/core/configure.js +0 -25
- package/dist/core/configure.js.map +0 -1
- package/dist/core/deployConfig.js +0 -66
- package/dist/core/deployConfig.js.map +0 -1
- package/dist/core/deployManifest.js +0 -163
- package/dist/core/deployManifest.js.map +0 -1
- package/dist/core/deploySecrets.js +0 -31
- package/dist/core/deploySecrets.js.map +0 -1
- package/dist/core/destroy.js +0 -38
- package/dist/core/destroy.js.map +0 -1
- package/dist/core/envDiscovery.js +0 -153
- package/dist/core/envDiscovery.js.map +0 -1
- package/dist/core/envRegistry.js +0 -76
- package/dist/core/envRegistry.js.map +0 -1
- package/dist/core/health.js +0 -11
- package/dist/core/health.js.map +0 -1
- package/dist/core/help.js +0 -75
- package/dist/core/help.js.map +0 -1
- package/dist/core/preReqs.js +0 -14
- package/dist/core/preReqs.js.map +0 -1
- package/dist/core/terraform.js +0 -34
- package/dist/core/terraform.js.map +0 -1
- package/dist/core/tfVars.js +0 -69
- package/dist/core/tfVars.js.map +0 -1
- package/dist/generators/backend/express.js +0 -13
- package/dist/generators/backend/express.js.map +0 -1
- package/dist/generators/deploy/aws/dev/files.js +0 -36
- package/dist/generators/deploy/aws/dev/files.js.map +0 -1
- package/dist/generators/deploy/aws/dev/template.js +0 -1240
- package/dist/generators/deploy/aws/dev/template.js.map +0 -1
- package/dist/generators/frontend/react.js +0 -13
- package/dist/generators/frontend/react.js.map +0 -1
- package/dist/prompts/contributeSetup.js +0 -39
- package/dist/prompts/contributeSetup.js.map +0 -1
- package/dist/prompts/deploySetup.js +0 -244
- package/dist/prompts/deploySetup.js.map +0 -1
- package/dist/utils/repoUtils.js +0 -23
- package/dist/utils/repoUtils.js.map +0 -1
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { getDeployManifestPath } from "./paths.js";
|
|
4
|
-
import { buildDeploySecretBundle, } from "./deploySecrets.js";
|
|
5
|
-
function emptyEnvMap() {
|
|
6
|
-
return {
|
|
7
|
-
web: [],
|
|
8
|
-
api: [],
|
|
9
|
-
auth: [],
|
|
10
|
-
admin: [],
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
function slugify(value) {
|
|
14
|
-
return value
|
|
15
|
-
.toLowerCase()
|
|
16
|
-
.replace(/[^a-z0-9]+/g, "-")
|
|
17
|
-
.replace(/^-+|-+$/g, "");
|
|
18
|
-
}
|
|
19
|
-
function normalizePath(value) {
|
|
20
|
-
if (!value || value.trim().length === 0) {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
return value;
|
|
24
|
-
}
|
|
25
|
-
function normalizeImage(value) {
|
|
26
|
-
if (!value || value.trim().length === 0) {
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
return value;
|
|
30
|
-
}
|
|
31
|
-
function resolveServiceMode(service, fallback = "source") {
|
|
32
|
-
const hasPath = Boolean(normalizePath(service?.path));
|
|
33
|
-
const hasImage = Boolean(normalizeImage(service?.image));
|
|
34
|
-
if (hasPath)
|
|
35
|
-
return "source";
|
|
36
|
-
if (hasImage)
|
|
37
|
-
return "image";
|
|
38
|
-
return fallback;
|
|
39
|
-
}
|
|
40
|
-
function buildServiceEntry(service, fallback = "source") {
|
|
41
|
-
const normalizedPath = normalizePath(service?.path);
|
|
42
|
-
const normalizedImage = normalizeImage(service?.image);
|
|
43
|
-
const mode = resolveServiceMode(service, fallback);
|
|
44
|
-
if (mode === "source" && !normalizedPath) {
|
|
45
|
-
throw new Error("A source-backed service is missing a local path");
|
|
46
|
-
}
|
|
47
|
-
if (mode === "image" && !normalizedImage) {
|
|
48
|
-
throw new Error("An image-backed service is missing an image reference");
|
|
49
|
-
}
|
|
50
|
-
return {
|
|
51
|
-
mode,
|
|
52
|
-
path: normalizedPath,
|
|
53
|
-
image: normalizedImage,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
function buildOrigins(answers) {
|
|
57
|
-
return {
|
|
58
|
-
webOrigin: `https://${answers.domain.webHost}`,
|
|
59
|
-
apiOrigin: `https://${answers.domain.apiHost}`,
|
|
60
|
-
authIssuer: `https://${answers.domain.authHost}`,
|
|
61
|
-
adminOrigin: `https://${answers.domain.adminHost}`,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
function resolveSecrets(existing) {
|
|
65
|
-
if (existing?.runtime?.secrets) {
|
|
66
|
-
return existing.runtime.secrets;
|
|
67
|
-
}
|
|
68
|
-
return buildDeploySecretBundle();
|
|
69
|
-
}
|
|
70
|
-
export function readDeployManifest(projectDir) {
|
|
71
|
-
const filePath = getDeployManifestPath(projectDir);
|
|
72
|
-
if (!fs.existsSync(filePath)) {
|
|
73
|
-
throw new Error("Missing infra/deploy.json");
|
|
74
|
-
}
|
|
75
|
-
const raw = fs.readFileSync(filePath, "utf8");
|
|
76
|
-
return JSON.parse(raw);
|
|
77
|
-
}
|
|
78
|
-
export function readExistingDeployManifest(projectDir) {
|
|
79
|
-
const filePath = getDeployManifestPath(projectDir);
|
|
80
|
-
if (!fs.existsSync(filePath)) {
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
const raw = fs.readFileSync(filePath, "utf8");
|
|
84
|
-
return JSON.parse(raw);
|
|
85
|
-
}
|
|
86
|
-
export function buildDeployManifest(config, answers, existing) {
|
|
87
|
-
const slug = slugify(config.projectName);
|
|
88
|
-
const secrets = resolveSecrets(existing);
|
|
89
|
-
const { webOrigin, apiOrigin, authIssuer, adminOrigin } = buildOrigins(answers);
|
|
90
|
-
return {
|
|
91
|
-
version: 1,
|
|
92
|
-
projectName: config.projectName,
|
|
93
|
-
provider: "aws",
|
|
94
|
-
tier: answers.tier,
|
|
95
|
-
region: answers.region,
|
|
96
|
-
awsProfile: answers.awsProfile,
|
|
97
|
-
domain: {
|
|
98
|
-
root: answers.domain.root,
|
|
99
|
-
hostedZoneDomain: answers.domain.hostedZoneDomain,
|
|
100
|
-
hostedZoneId: answers.domain.hostedZoneId,
|
|
101
|
-
webHost: answers.domain.webHost,
|
|
102
|
-
apiHost: answers.domain.apiHost,
|
|
103
|
-
authHost: answers.domain.authHost,
|
|
104
|
-
adminHost: answers.domain.adminHost,
|
|
105
|
-
},
|
|
106
|
-
backup: {
|
|
107
|
-
enabled: answers.backup.enabled,
|
|
108
|
-
schedule: answers.backup.schedule,
|
|
109
|
-
retentionDays: answers.backup.retentionDays,
|
|
110
|
-
},
|
|
111
|
-
services: {
|
|
112
|
-
web: buildServiceEntry(config.services.web, "source"),
|
|
113
|
-
api: buildServiceEntry(config.services.api, "source"),
|
|
114
|
-
auth: buildServiceEntry(config.services.auth, "image"),
|
|
115
|
-
admin: buildServiceEntry(config.services.admin, "image"),
|
|
116
|
-
},
|
|
117
|
-
images: {
|
|
118
|
-
web: { repositoryName: `${slug}-web`, tag: "latest" },
|
|
119
|
-
api: { repositoryName: `${slug}-api`, tag: "latest" },
|
|
120
|
-
auth: { repositoryName: `${slug}-auth`, tag: "latest" },
|
|
121
|
-
admin: { repositoryName: `${slug}-admin`, tag: "latest" },
|
|
122
|
-
postgres: { repositoryName: `${slug}-postgres`, tag: "latest" },
|
|
123
|
-
},
|
|
124
|
-
env: existing?.env ?? emptyEnvMap(),
|
|
125
|
-
runtime: {
|
|
126
|
-
apiOrigin,
|
|
127
|
-
authIssuer,
|
|
128
|
-
webOrigin,
|
|
129
|
-
adminOrigin,
|
|
130
|
-
acmCertificateArn: existing?.runtime?.acmCertificateArn,
|
|
131
|
-
rpid: answers.domain.root,
|
|
132
|
-
secrets,
|
|
133
|
-
},
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
export function writeDeployManifest(projectDir, manifest) {
|
|
137
|
-
const filePath = getDeployManifestPath(projectDir);
|
|
138
|
-
const dirPath = path.dirname(filePath);
|
|
139
|
-
fs.mkdirSync(dirPath, { recursive: true });
|
|
140
|
-
fs.writeFileSync(filePath, `${JSON.stringify(manifest, null, 2)}\n`, "utf8");
|
|
141
|
-
}
|
|
142
|
-
export function updateDeployManifestCertificateArn(projectDir, certificateArn) {
|
|
143
|
-
const existing = readDeployManifest(projectDir);
|
|
144
|
-
const updated = {
|
|
145
|
-
...existing,
|
|
146
|
-
runtime: {
|
|
147
|
-
...existing.runtime,
|
|
148
|
-
acmCertificateArn: certificateArn,
|
|
149
|
-
},
|
|
150
|
-
};
|
|
151
|
-
writeDeployManifest(projectDir, updated);
|
|
152
|
-
return updated;
|
|
153
|
-
}
|
|
154
|
-
export function updateDeployManifestEnv(projectDir, env) {
|
|
155
|
-
const existing = readDeployManifest(projectDir);
|
|
156
|
-
const updated = {
|
|
157
|
-
...existing,
|
|
158
|
-
env,
|
|
159
|
-
};
|
|
160
|
-
writeDeployManifest(projectDir, updated);
|
|
161
|
-
return updated;
|
|
162
|
-
}
|
|
163
|
-
//# sourceMappingURL=deployManifest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deployManifest.js","sourceRoot":"","sources":["../../src/core/deployManifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { generateSecret } from "./secrets.js";
|
|
2
|
-
import { generateJWKS } from "./jwks.js";
|
|
3
|
-
export function buildDeploySecretBundle() {
|
|
4
|
-
const kid = "main";
|
|
5
|
-
const { publicKey, privateKey } = generateJWKS();
|
|
6
|
-
return {
|
|
7
|
-
apiServiceToken: generateSecret(32),
|
|
8
|
-
cookieSigningKey: generateSecret(32),
|
|
9
|
-
bootstrapSecret: generateSecret(32),
|
|
10
|
-
authDbPassword: generateSecret(24),
|
|
11
|
-
apiDbPassword: generateSecret(24),
|
|
12
|
-
authDbUser: "auth_user",
|
|
13
|
-
apiDbUser: "api_user",
|
|
14
|
-
authDbName: "seamless_auth",
|
|
15
|
-
apiDbName: "seamless_api",
|
|
16
|
-
jwks: {
|
|
17
|
-
kid,
|
|
18
|
-
privateKey,
|
|
19
|
-
publicKey,
|
|
20
|
-
publicJwksJson: JSON.stringify({
|
|
21
|
-
keys: [
|
|
22
|
-
{
|
|
23
|
-
kid,
|
|
24
|
-
pem: publicKey,
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
|
-
}, null, 2),
|
|
28
|
-
},
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=deploySecrets.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deploySecrets.js","sourceRoot":"","sources":["../../src/core/deploySecrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAoBzC,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAG,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,CAAC;IAEjD,OAAO;QACL,eAAe,EAAE,cAAc,CAAC,EAAE,CAAC;QACnC,gBAAgB,EAAE,cAAc,CAAC,EAAE,CAAC;QACpC,eAAe,EAAE,cAAc,CAAC,EAAE,CAAC;QACnC,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC;QAClC,aAAa,EAAE,cAAc,CAAC,EAAE,CAAC;QACjC,UAAU,EAAE,WAAW;QACvB,SAAS,EAAE,UAAU;QACrB,UAAU,EAAE,eAAe;QAC3B,SAAS,EAAE,cAAc;QACzB,IAAI,EAAE;YACJ,GAAG;YACH,UAAU;YACV,SAAS;YACT,cAAc,EAAE,IAAI,CAAC,SAAS,CAC5B;gBACE,IAAI,EAAE;oBACJ;wBACE,GAAG;wBACH,GAAG,EAAE,SAAS;qBACf;iBACF;aACF,EACD,IAAI,EACJ,CAAC,CACF;SACF;KACF,CAAC;AACJ,CAAC"}
|
package/dist/core/destroy.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import { getAwsDevInfraDir, getDeployManifestPath, getInfraDir, } from "./paths.js";
|
|
3
|
-
import { deleteEcrImages, deleteEcrRepository } from "./aws.js";
|
|
4
|
-
export async function destroyEcrResources(manifest) {
|
|
5
|
-
const repositories = [
|
|
6
|
-
manifest.images.web.repositoryName,
|
|
7
|
-
manifest.images.api.repositoryName,
|
|
8
|
-
manifest.images.postgres.repositoryName,
|
|
9
|
-
];
|
|
10
|
-
if (manifest.services.auth.mode === "source") {
|
|
11
|
-
repositories.push(manifest.images.auth.repositoryName);
|
|
12
|
-
}
|
|
13
|
-
if (manifest.services.admin.mode === "source") {
|
|
14
|
-
repositories.push(manifest.images.admin.repositoryName);
|
|
15
|
-
}
|
|
16
|
-
for (const repositoryName of repositories) {
|
|
17
|
-
await deleteEcrImages(manifest.awsProfile, manifest.region, repositoryName);
|
|
18
|
-
await deleteEcrRepository(manifest.awsProfile, manifest.region, repositoryName);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
export function removeGeneratedInfraFiles(projectDir) {
|
|
22
|
-
const manifestPath = getDeployManifestPath(projectDir);
|
|
23
|
-
const awsDevDir = getAwsDevInfraDir(projectDir);
|
|
24
|
-
if (fs.existsSync(manifestPath)) {
|
|
25
|
-
fs.rmSync(manifestPath, { force: true });
|
|
26
|
-
}
|
|
27
|
-
if (fs.existsSync(awsDevDir)) {
|
|
28
|
-
fs.rmSync(awsDevDir, { recursive: true, force: true });
|
|
29
|
-
}
|
|
30
|
-
const infraDir = getInfraDir(projectDir);
|
|
31
|
-
if (fs.existsSync(infraDir)) {
|
|
32
|
-
const remaining = fs.readdirSync(infraDir);
|
|
33
|
-
if (remaining.length === 0) {
|
|
34
|
-
fs.rmSync(infraDir, { recursive: true, force: true });
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=destroy.js.map
|
package/dist/core/destroy.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"destroy.js","sourceRoot":"","sources":["../../src/core/destroy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAwB;IAExB,MAAM,YAAY,GAAG;QACnB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc;QAClC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc;QAClC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc;KACxC,CAAC;IAEF,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7C,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9C,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,MAAM,cAAc,IAAI,YAAY,EAAE,CAAC;QAC1C,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC5E,MAAM,mBAAmB,CACvB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,MAAM,EACf,cAAc,CACf,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,UAAkB;IAC1D,MAAM,YAAY,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEhD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import * as p from "@clack/prompts";
|
|
4
|
-
import { inferEnvKind, isDeployManagedKey } from "./envRegistry.js";
|
|
5
|
-
function parseEnvFile(filePath) {
|
|
6
|
-
const raw = fs.readFileSync(filePath, "utf8");
|
|
7
|
-
const lines = raw.split(/\r?\n/);
|
|
8
|
-
const result = {};
|
|
9
|
-
for (const line of lines) {
|
|
10
|
-
const trimmed = line.trim();
|
|
11
|
-
if (!trimmed || trimmed.startsWith("#"))
|
|
12
|
-
continue;
|
|
13
|
-
const idx = trimmed.indexOf("=");
|
|
14
|
-
if (idx === -1)
|
|
15
|
-
continue;
|
|
16
|
-
const key = trimmed.slice(0, idx).trim();
|
|
17
|
-
let value = trimmed.slice(idx + 1).trim();
|
|
18
|
-
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
19
|
-
(value.startsWith("'") && value.endsWith("'"))) {
|
|
20
|
-
value = value.slice(1, -1);
|
|
21
|
-
}
|
|
22
|
-
result[key] = value;
|
|
23
|
-
}
|
|
24
|
-
return result;
|
|
25
|
-
}
|
|
26
|
-
function discoverServiceEnvEntries(root, servicePath) {
|
|
27
|
-
if (!servicePath)
|
|
28
|
-
return [];
|
|
29
|
-
const absolutePath = path.resolve(root, servicePath);
|
|
30
|
-
if (!fs.existsSync(absolutePath))
|
|
31
|
-
return [];
|
|
32
|
-
const envPath = path.join(absolutePath, ".env");
|
|
33
|
-
const envExamplePath = path.join(absolutePath, ".env.example");
|
|
34
|
-
const merged = new Map();
|
|
35
|
-
if (fs.existsSync(envExamplePath)) {
|
|
36
|
-
const parsed = parseEnvFile(envExamplePath);
|
|
37
|
-
for (const [key, value] of Object.entries(parsed)) {
|
|
38
|
-
merged.set(key, {
|
|
39
|
-
key,
|
|
40
|
-
value: value || null,
|
|
41
|
-
source: "env_example",
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
if (fs.existsSync(envPath)) {
|
|
46
|
-
const parsed = parseEnvFile(envPath);
|
|
47
|
-
for (const [key, value] of Object.entries(parsed)) {
|
|
48
|
-
merged.set(key, {
|
|
49
|
-
key,
|
|
50
|
-
value: value || null,
|
|
51
|
-
source: "env",
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return [...merged.values()].sort((a, b) => a.key.localeCompare(b.key));
|
|
56
|
-
}
|
|
57
|
-
function mergeServiceEnv(existing, discovered, service) {
|
|
58
|
-
const existingUserMap = new Map(existing.map((entry) => [entry.key, entry]));
|
|
59
|
-
const result = [];
|
|
60
|
-
for (const item of discovered) {
|
|
61
|
-
if (isDeployManagedKey(service, item.key)) {
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
const prior = existingUserMap.get(item.key);
|
|
65
|
-
const discoveredValue = item.value?.trim() ? item.value : null;
|
|
66
|
-
if (prior) {
|
|
67
|
-
result.push({
|
|
68
|
-
...prior,
|
|
69
|
-
value: prior.value || discoveredValue || "",
|
|
70
|
-
});
|
|
71
|
-
continue;
|
|
72
|
-
}
|
|
73
|
-
result.push({
|
|
74
|
-
key: item.key,
|
|
75
|
-
value: discoveredValue ?? "",
|
|
76
|
-
kind: inferEnvKind(item.key),
|
|
77
|
-
owner: "user",
|
|
78
|
-
target: "task_definition",
|
|
79
|
-
source: item.source,
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
for (const leftover of existing) {
|
|
83
|
-
if (!result.find((entry) => entry.key === leftover.key)) {
|
|
84
|
-
result.push(leftover);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return result.sort((a, b) => a.key.localeCompare(b.key));
|
|
88
|
-
}
|
|
89
|
-
async function promptForMissingValues(service, vars) {
|
|
90
|
-
const resolved = [];
|
|
91
|
-
for (const envVar of vars) {
|
|
92
|
-
if (envVar.value && envVar.value.trim().length > 0) {
|
|
93
|
-
resolved.push(envVar);
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
const promptOptions = {
|
|
97
|
-
message: `${service}: enter value for ${envVar.key}`,
|
|
98
|
-
};
|
|
99
|
-
const value = envVar.kind === "secret"
|
|
100
|
-
? await p.password(promptOptions)
|
|
101
|
-
: await p.text(promptOptions);
|
|
102
|
-
if (p.isCancel(value)) {
|
|
103
|
-
p.cancel("Deploy cancelled");
|
|
104
|
-
process.exit(0);
|
|
105
|
-
}
|
|
106
|
-
resolved.push({
|
|
107
|
-
...envVar,
|
|
108
|
-
value: value.trim(),
|
|
109
|
-
source: "prompt",
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
return resolved;
|
|
113
|
-
}
|
|
114
|
-
function printDetectedEnvSummary(env) {
|
|
115
|
-
const lines = [];
|
|
116
|
-
for (const service of [
|
|
117
|
-
"web",
|
|
118
|
-
"api",
|
|
119
|
-
"auth",
|
|
120
|
-
"admin",
|
|
121
|
-
]) {
|
|
122
|
-
const entries = env[service];
|
|
123
|
-
if (entries.length === 0)
|
|
124
|
-
continue;
|
|
125
|
-
lines.push(`${service}:`);
|
|
126
|
-
for (const entry of entries) {
|
|
127
|
-
lines.push(` ${entry.key} (${entry.kind}, ${entry.value ? "value found" : "missing value"})`);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
if (lines.length > 0) {
|
|
131
|
-
p.note(lines.join("\n"), "Detected custom environment variables");
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
export async function discoverAndResolveCustomEnv(root, manifest) {
|
|
135
|
-
const nextEnv = {
|
|
136
|
-
web: mergeServiceEnv(manifest.env.web, discoverServiceEnvEntries(root, manifest.services.web.path), "web"),
|
|
137
|
-
api: mergeServiceEnv(manifest.env.api, discoverServiceEnvEntries(root, manifest.services.api.path), "api"),
|
|
138
|
-
auth: mergeServiceEnv(manifest.env.auth, manifest.services.auth.mode === "source"
|
|
139
|
-
? discoverServiceEnvEntries(root, manifest.services.auth.path)
|
|
140
|
-
: [], "auth"),
|
|
141
|
-
admin: mergeServiceEnv(manifest.env.admin, manifest.services.admin.mode === "source"
|
|
142
|
-
? discoverServiceEnvEntries(root, manifest.services.admin.path)
|
|
143
|
-
: [], "admin"),
|
|
144
|
-
};
|
|
145
|
-
printDetectedEnvSummary(nextEnv);
|
|
146
|
-
return {
|
|
147
|
-
web: await promptForMissingValues("web", nextEnv.web),
|
|
148
|
-
api: await promptForMissingValues("api", nextEnv.api),
|
|
149
|
-
auth: await promptForMissingValues("auth", nextEnv.auth),
|
|
150
|
-
admin: await promptForMissingValues("admin", nextEnv.admin),
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=envDiscovery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"envDiscovery.js","sourceRoot":"","sources":["../../src/core/envDiscovery.ts"],"names":[],"mappings":"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"}
|
package/dist/core/envRegistry.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
const DEPLOY_MANAGED_KEYS = {
|
|
2
|
-
web: new Set(["API_URL", "VITE_API_URL"]),
|
|
3
|
-
admin: new Set(["API_URL", "AUTH_MODE", "VITE_API_URL", "VITE_AUTH_MODE"]),
|
|
4
|
-
api: new Set([
|
|
5
|
-
"AUTH_SERVER_URL",
|
|
6
|
-
"APP_ORIGIN",
|
|
7
|
-
"UI_ORIGINS",
|
|
8
|
-
"COOKIE_SIGNING_KEY",
|
|
9
|
-
"API_SERVICE_TOKEN",
|
|
10
|
-
"JWKS_KID",
|
|
11
|
-
"DB_HOST",
|
|
12
|
-
"DB_PORT",
|
|
13
|
-
"DB_USER",
|
|
14
|
-
"DB_PASSWORD",
|
|
15
|
-
"DB_NAME",
|
|
16
|
-
"SQL_LOGGING",
|
|
17
|
-
]),
|
|
18
|
-
auth: new Set([
|
|
19
|
-
"NODE_ENV",
|
|
20
|
-
"VERSION",
|
|
21
|
-
"APP_NAME",
|
|
22
|
-
"APP_ID",
|
|
23
|
-
"APP_ORIGIN",
|
|
24
|
-
"ISSUER",
|
|
25
|
-
"AUTH_MODE",
|
|
26
|
-
"DEMO",
|
|
27
|
-
"DEFAULT_ROLES",
|
|
28
|
-
"AVAILABLE_ROLES",
|
|
29
|
-
"DB_LOGGING",
|
|
30
|
-
"DB_HOST",
|
|
31
|
-
"DB_PORT",
|
|
32
|
-
"DB_NAME",
|
|
33
|
-
"DB_USER",
|
|
34
|
-
"DB_PASSWORD",
|
|
35
|
-
"ACCESS_TOKEN_TTL",
|
|
36
|
-
"REFRESH_TOKEN_TTL",
|
|
37
|
-
"RATE_LIMIT",
|
|
38
|
-
"DELAY_AFTER",
|
|
39
|
-
"API_SERVICE_TOKEN",
|
|
40
|
-
"JWKS_ACTIVE_KID",
|
|
41
|
-
"SEAMLESS_JWKS_ACTIVE_KID",
|
|
42
|
-
"JWKS_PUBLIC_KEYS",
|
|
43
|
-
"RPID",
|
|
44
|
-
"ORIGINS",
|
|
45
|
-
"SEAMLESS_BOOTSTRAP_ENABLED",
|
|
46
|
-
"SEAMLESS_BOOTSTRAP_SECRET",
|
|
47
|
-
]),
|
|
48
|
-
};
|
|
49
|
-
export function isDeployManagedKey(service, key) {
|
|
50
|
-
if (DEPLOY_MANAGED_KEYS[service].has(key))
|
|
51
|
-
return true;
|
|
52
|
-
if (service === "auth" && key.startsWith("SEAMLESS_JWKS_KEY_"))
|
|
53
|
-
return true;
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
export function inferEnvKind(key) {
|
|
57
|
-
const upper = key.toUpperCase();
|
|
58
|
-
const secretHints = [
|
|
59
|
-
"SECRET",
|
|
60
|
-
"TOKEN",
|
|
61
|
-
"PASSWORD",
|
|
62
|
-
"PRIVATE",
|
|
63
|
-
"WEBHOOK",
|
|
64
|
-
"KEY",
|
|
65
|
-
"DSN",
|
|
66
|
-
];
|
|
67
|
-
const alwaysPlainPrefixes = ["VITE_PUBLIC_", "NEXT_PUBLIC_", "PUBLIC_"];
|
|
68
|
-
if (alwaysPlainPrefixes.some((prefix) => upper.startsWith(prefix))) {
|
|
69
|
-
return "plain";
|
|
70
|
-
}
|
|
71
|
-
if (secretHints.some((hint) => upper.includes(hint))) {
|
|
72
|
-
return "secret";
|
|
73
|
-
}
|
|
74
|
-
return "plain";
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=envRegistry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"envRegistry.js","sourceRoot":"","sources":["../../src/core/envRegistry.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAA2C;IAClE,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACzC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAC1E,GAAG,EAAE,IAAI,GAAG,CAAC;QACX,iBAAiB;QACjB,YAAY;QACZ,YAAY;QACZ,oBAAoB;QACpB,mBAAmB;QACnB,UAAU;QACV,SAAS;QACT,SAAS;QACT,SAAS;QACT,aAAa;QACb,SAAS;QACT,aAAa;KACd,CAAC;IACF,IAAI,EAAE,IAAI,GAAG,CAAC;QACZ,UAAU;QACV,SAAS;QACT,UAAU;QACV,QAAQ;QACR,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,MAAM;QACN,eAAe;QACf,iBAAiB;QACjB,YAAY;QACZ,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,aAAa;QACb,kBAAkB;QAClB,mBAAmB;QACnB,YAAY;QACZ,aAAa;QACb,mBAAmB;QACnB,iBAAiB;QACjB,0BAA0B;QAC1B,kBAAkB;QAClB,MAAM;QACN,SAAS;QACT,4BAA4B;QAC5B,2BAA2B;KAC5B,CAAC;CACH,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAChC,OAA0B,EAC1B,GAAW;IAEX,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvD,IAAI,OAAO,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAEhC,MAAM,WAAW,GAAG;QAClB,QAAQ;QACR,OAAO;QACP,UAAU;QACV,SAAS;QACT,SAAS;QACT,KAAK;QACL,KAAK;KACN,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,cAAc,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;IAExE,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACnE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACrD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/core/health.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { execCommand } from "./exec.js";
|
|
2
|
-
async function fetchStatus(url) {
|
|
3
|
-
await execCommand("curl", ["-f", "-L", url], { quiet: true });
|
|
4
|
-
}
|
|
5
|
-
export async function runPostDeployHealthChecks(urls) {
|
|
6
|
-
await fetchStatus(urls.web);
|
|
7
|
-
await fetchStatus(urls.api);
|
|
8
|
-
await fetchStatus(urls.auth);
|
|
9
|
-
await fetchStatus(urls.admin);
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=health.js.map
|
package/dist/core/health.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/core/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAK/C;IACC,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC"}
|
package/dist/core/help.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { VERSION } from "../index.js";
|
|
2
|
-
export function printHelp() {
|
|
3
|
-
console.log(`
|
|
4
|
-
create-seamless v${VERSION}
|
|
5
|
-
|
|
6
|
-
Seamless Auth CLI — scaffold and manage full-stack authentication systems.
|
|
7
|
-
|
|
8
|
-
────────────────────────────────────────────
|
|
9
|
-
|
|
10
|
-
USAGE
|
|
11
|
-
|
|
12
|
-
seamless init [project-name]
|
|
13
|
-
seamless check
|
|
14
|
-
seamless --help
|
|
15
|
-
seamless --version
|
|
16
|
-
|
|
17
|
-
────────────────────────────────────────────
|
|
18
|
-
|
|
19
|
-
COMMANDS
|
|
20
|
-
|
|
21
|
-
init [project-name]
|
|
22
|
-
Scaffold a new Seamless Auth project
|
|
23
|
-
|
|
24
|
-
Without a name:
|
|
25
|
-
• Creates project in current directory
|
|
26
|
-
|
|
27
|
-
With a name:
|
|
28
|
-
• Creates new directory
|
|
29
|
-
|
|
30
|
-
check
|
|
31
|
-
Validate project setup, Docker, and running services
|
|
32
|
-
|
|
33
|
-
────────────────────────────────────────────
|
|
34
|
-
|
|
35
|
-
BEHAVIOR
|
|
36
|
-
|
|
37
|
-
seamless <project-name>
|
|
38
|
-
|
|
39
|
-
• Shortcut for: seamless init <project-name>
|
|
40
|
-
|
|
41
|
-
────────────────────────────────────────────
|
|
42
|
-
|
|
43
|
-
WHAT YOU GET
|
|
44
|
-
|
|
45
|
-
• Web application (React starter)
|
|
46
|
-
• API server (Express)
|
|
47
|
-
• SeamlessAuth server (Docker or local)
|
|
48
|
-
• Admin dashboard (Docker or source)
|
|
49
|
-
• Docker Compose setup
|
|
50
|
-
|
|
51
|
-
────────────────────────────────────────────
|
|
52
|
-
|
|
53
|
-
EXAMPLES
|
|
54
|
-
|
|
55
|
-
seamless init
|
|
56
|
-
→ Interactive setup in current directory
|
|
57
|
-
|
|
58
|
-
seamless init my-app
|
|
59
|
-
→ Create new project in ./my-app
|
|
60
|
-
|
|
61
|
-
seamless my-app
|
|
62
|
-
→ Shortcut for init
|
|
63
|
-
|
|
64
|
-
seamless check
|
|
65
|
-
→ Validate your project
|
|
66
|
-
|
|
67
|
-
────────────────────────────────────────────
|
|
68
|
-
|
|
69
|
-
DOCS
|
|
70
|
-
|
|
71
|
-
https://docs.seamlessauth.com
|
|
72
|
-
|
|
73
|
-
`);
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=help.js.map
|
package/dist/core/help.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/core/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC;mBACK,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqEzB,CAAC,CAAC;AACH,CAAC"}
|
package/dist/core/preReqs.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { commandExists } from "./exec.js";
|
|
2
|
-
export async function ensureRequiredCommands() {
|
|
3
|
-
const required = ["aws", "docker", "terraform"];
|
|
4
|
-
const missing = [];
|
|
5
|
-
for (const command of required) {
|
|
6
|
-
const exists = await commandExists(command);
|
|
7
|
-
if (!exists)
|
|
8
|
-
missing.push(command);
|
|
9
|
-
}
|
|
10
|
-
if (missing.length > 0) {
|
|
11
|
-
throw new Error(`Missing required commands: ${missing.join(", ")}`);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=preReqs.js.map
|
package/dist/core/preReqs.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preReqs.js","sourceRoot":"","sources":["../../src/core/preReqs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAChD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
|
package/dist/core/terraform.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { execCommand } from "./exec.js";
|
|
3
|
-
import { getAwsDevInfraDir } from "./paths.js";
|
|
4
|
-
export async function terraformInit(projectDir) {
|
|
5
|
-
await execCommand("terraform", ["init"], {
|
|
6
|
-
cwd: getAwsDevInfraDir(projectDir),
|
|
7
|
-
});
|
|
8
|
-
}
|
|
9
|
-
export async function terraformPlan(projectDir) {
|
|
10
|
-
await execCommand("terraform", ["plan", "-out=tfplan"], {
|
|
11
|
-
cwd: getAwsDevInfraDir(projectDir),
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
export async function terraformApply(projectDir) {
|
|
15
|
-
await execCommand("terraform", ["apply", "-auto-approve"], {
|
|
16
|
-
cwd: getAwsDevInfraDir(projectDir),
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
export async function terraformOutput(projectDir, name) {
|
|
20
|
-
const result = await execCommand("terraform", ["output", "-raw", name], {
|
|
21
|
-
cwd: getAwsDevInfraDir(projectDir),
|
|
22
|
-
quiet: true,
|
|
23
|
-
});
|
|
24
|
-
return result.stdout.trim();
|
|
25
|
-
}
|
|
26
|
-
export function getTerraformWorkingDir(projectDir) {
|
|
27
|
-
return path.resolve(getAwsDevInfraDir(projectDir));
|
|
28
|
-
}
|
|
29
|
-
export async function terraformDestroy(projectDir) {
|
|
30
|
-
await execCommand("terraform", ["destroy", "-auto-approve"], {
|
|
31
|
-
cwd: getAwsDevInfraDir(projectDir),
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=terraform.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terraform.js","sourceRoot":"","sources":["../../src/core/terraform.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAkB;IACpD,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE;QACvC,GAAG,EAAE,iBAAiB,CAAC,UAAU,CAAC;KACnC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAkB;IACpD,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE;QACtD,GAAG,EAAE,iBAAiB,CAAC,UAAU,CAAC;KACnC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB;IACrD,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE;QACzD,GAAG,EAAE,iBAAiB,CAAC,UAAU,CAAC;KACnC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,IAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QACtE,GAAG,EAAE,iBAAiB,CAAC,UAAU,CAAC;QAClC,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IACvD,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE;QAC3D,GAAG,EAAE,iBAAiB,CAAC,UAAU,CAAC;KACnC,CAAC,CAAC;AACL,CAAC"}
|