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.
- 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 +28 -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
package/dist/core/tfVars.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { getAwsDevInfraDir } from "./paths.js";
|
|
4
|
-
function getTfvarsPath(projectDir) {
|
|
5
|
-
return path.join(getAwsDevInfraDir(projectDir), "terraform.tfvars.json");
|
|
6
|
-
}
|
|
7
|
-
export function buildAwsDevTfvars(manifest) {
|
|
8
|
-
return {
|
|
9
|
-
project_name: manifest.projectName,
|
|
10
|
-
aws_region: manifest.region,
|
|
11
|
-
aws_profile: manifest.awsProfile,
|
|
12
|
-
root_domain: manifest.domain.root,
|
|
13
|
-
hosted_zone_domain: manifest.domain.hostedZoneDomain ?? manifest.domain.root,
|
|
14
|
-
acm_certificate_arn: manifest.runtime.acmCertificateArn ?? "",
|
|
15
|
-
web_host: manifest.domain.webHost,
|
|
16
|
-
api_host: manifest.domain.apiHost,
|
|
17
|
-
auth_host: manifest.domain.authHost,
|
|
18
|
-
admin_host: manifest.domain.adminHost,
|
|
19
|
-
backup_enabled: manifest.backup.enabled,
|
|
20
|
-
backup_retention_days: manifest.backup.retentionDays,
|
|
21
|
-
web_image: "REPLACE_WEB_IMAGE_URI",
|
|
22
|
-
api_image: "REPLACE_API_IMAGE_URI",
|
|
23
|
-
auth_image: "REPLACE_AUTH_IMAGE_URI",
|
|
24
|
-
admin_image: "REPLACE_ADMIN_IMAGE_URI",
|
|
25
|
-
postgres_image: "REPLACE_POSTGRES_IMAGE_URI",
|
|
26
|
-
api_origin: manifest.runtime.apiOrigin,
|
|
27
|
-
auth_issuer: manifest.runtime.authIssuer,
|
|
28
|
-
web_origin: manifest.runtime.webOrigin,
|
|
29
|
-
admin_origin: manifest.runtime.adminOrigin,
|
|
30
|
-
rpid: manifest.runtime.rpid,
|
|
31
|
-
api_service_token: manifest.runtime.secrets.apiServiceToken,
|
|
32
|
-
cookie_signing_key: manifest.runtime.secrets.cookieSigningKey,
|
|
33
|
-
bootstrap_secret: manifest.runtime.secrets.bootstrapSecret,
|
|
34
|
-
auth_db_user: manifest.runtime.secrets.authDbUser,
|
|
35
|
-
auth_db_password: manifest.runtime.secrets.authDbPassword,
|
|
36
|
-
auth_db_name: manifest.runtime.secrets.authDbName,
|
|
37
|
-
api_db_user: manifest.runtime.secrets.apiDbUser,
|
|
38
|
-
api_db_password: manifest.runtime.secrets.apiDbPassword,
|
|
39
|
-
api_db_name: manifest.runtime.secrets.apiDbName,
|
|
40
|
-
jwks_active_kid: manifest.runtime.secrets.jwks.kid,
|
|
41
|
-
seamless_jwks_active_kid: manifest.runtime.secrets.jwks.kid,
|
|
42
|
-
jwks_private_key: manifest.runtime.secrets.jwks.privateKey,
|
|
43
|
-
jwks_public_keys: manifest.runtime.secrets.jwks.publicJwksJson,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
export function writeAwsDevTfvars(projectDir, tfvars) {
|
|
47
|
-
const outPath = getTfvarsPath(projectDir);
|
|
48
|
-
fs.writeFileSync(outPath, `${JSON.stringify(tfvars, null, 2)}\n`, "utf8");
|
|
49
|
-
}
|
|
50
|
-
export function readAwsDevTfvars(projectDir) {
|
|
51
|
-
const tfvarsPath = getTfvarsPath(projectDir);
|
|
52
|
-
const raw = fs.readFileSync(tfvarsPath, "utf8");
|
|
53
|
-
return JSON.parse(raw);
|
|
54
|
-
}
|
|
55
|
-
export function updateAwsDevTfvarsImages(projectDir, images) {
|
|
56
|
-
const current = readAwsDevTfvars(projectDir);
|
|
57
|
-
writeAwsDevTfvars(projectDir, {
|
|
58
|
-
...current,
|
|
59
|
-
...images,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
export function updateAwsDevTfvarsCertificateArn(projectDir, acmCertificateArn) {
|
|
63
|
-
const current = readAwsDevTfvars(projectDir);
|
|
64
|
-
writeAwsDevTfvars(projectDir, {
|
|
65
|
-
...current,
|
|
66
|
-
acm_certificate_arn: acmCertificateArn,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=tfVars.js.map
|
package/dist/core/tfVars.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tfVars.js","sourceRoot":"","sources":["../../src/core/tfVars.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import { cloneRepo, removeGitDir, copyEnvExample, } from "../../utils/repoUtils.js";
|
|
3
|
-
const API_STARTER_REPO = "https://github.com/fells-code/seamless-auth-starter-express.git";
|
|
4
|
-
export async function generateExpressStarter(context) {
|
|
5
|
-
const { root } = context;
|
|
6
|
-
const apiDir = path.join(root, "api");
|
|
7
|
-
console.log("Cloning Seamless Auth Express starter...");
|
|
8
|
-
await cloneRepo(API_STARTER_REPO, apiDir);
|
|
9
|
-
removeGitDir(apiDir);
|
|
10
|
-
copyEnvExample(apiDir);
|
|
11
|
-
console.log("API starter ready.");
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=express.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../../src/generators/backend/express.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,0BAA0B,CAAC;AAElC,MAAM,gBAAgB,GACpB,iEAAiE,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAyB;IACpE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAExD,MAAM,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAE1C,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { buildAwsDevTfvars, writeAwsDevTfvars, } from "../../../../core/tfVars.js";
|
|
4
|
-
import { getAwsDevInfraDir, getInfraDir } from "../../../../core/paths.js";
|
|
5
|
-
import { renderAcmTf, renderAlbTf, renderBackupTf, renderEcsTf, renderEc2Tf, renderIamTf, renderLogsTf, renderMainTf, renderNetworkingTf, renderOutputsTf, renderPostgresDockerfile, renderPostgresInitSql, renderRoute53Tf, renderS3Tf, renderVariablesTf, } from "./template.js";
|
|
6
|
-
function ensureDir(dir) {
|
|
7
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
8
|
-
}
|
|
9
|
-
function writeFile(filePath, content) {
|
|
10
|
-
fs.writeFileSync(filePath, `${content.trim()}\n`, "utf8");
|
|
11
|
-
}
|
|
12
|
-
export function generateAwsDevInfra(projectDir, manifest) {
|
|
13
|
-
const infraDir = getInfraDir(projectDir);
|
|
14
|
-
const awsDevDir = getAwsDevInfraDir(projectDir);
|
|
15
|
-
const postgresDir = path.join(awsDevDir, "postgres");
|
|
16
|
-
ensureDir(infraDir);
|
|
17
|
-
ensureDir(awsDevDir);
|
|
18
|
-
ensureDir(postgresDir);
|
|
19
|
-
writeFile(path.join(awsDevDir, "main.tf"), renderMainTf());
|
|
20
|
-
writeFile(path.join(awsDevDir, "variables.tf"), renderVariablesTf(manifest));
|
|
21
|
-
writeFile(path.join(awsDevDir, "networking.tf"), renderNetworkingTf());
|
|
22
|
-
writeFile(path.join(awsDevDir, "acm.tf"), renderAcmTf());
|
|
23
|
-
writeFile(path.join(awsDevDir, "route53.tf"), renderRoute53Tf());
|
|
24
|
-
writeFile(path.join(awsDevDir, "alb.tf"), renderAlbTf());
|
|
25
|
-
writeFile(path.join(awsDevDir, "logs.tf"), renderLogsTf(manifest));
|
|
26
|
-
writeFile(path.join(awsDevDir, "s3.tf"), renderS3Tf());
|
|
27
|
-
writeFile(path.join(awsDevDir, "iam.tf"), renderIamTf());
|
|
28
|
-
writeFile(path.join(awsDevDir, "ec2.tf"), renderEc2Tf());
|
|
29
|
-
writeFile(path.join(awsDevDir, "ecs.tf"), renderEcsTf(manifest));
|
|
30
|
-
writeFile(path.join(awsDevDir, "backup.tf"), renderBackupTf());
|
|
31
|
-
writeFile(path.join(awsDevDir, "outputs.tf"), renderOutputsTf());
|
|
32
|
-
writeFile(path.join(postgresDir, "Dockerfile"), renderPostgresDockerfile());
|
|
33
|
-
writeFile(path.join(postgresDir, "init.sql"), renderPostgresInitSql(manifest));
|
|
34
|
-
writeAwsDevTfvars(projectDir, buildAwsDevTfvars(manifest));
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=files.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../../../src/generators/deploy/aws/dev/files.ts"],"names":[],"mappings":"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"}
|