@saws/cli 1.0.11 → 2.0.0-beta.11

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 (69) hide show
  1. package/README.md +131 -4
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/bin/saws.js +39 -32
  4. package/dist/commands/app/deploy.d.ts +4 -0
  5. package/dist/commands/app/deploy.js +20 -0
  6. package/dist/commands/app/index.js +16 -0
  7. package/dist/commands/app/install.d.ts +5 -0
  8. package/dist/commands/app/install.js +41 -0
  9. package/dist/commands/app/paths.d.ts +1 -0
  10. package/dist/commands/app/paths.js +8 -0
  11. package/dist/commands/app/process.d.ts +2 -0
  12. package/dist/commands/app/process.js +28 -0
  13. package/dist/commands/deploy/command.js +15 -0
  14. package/dist/commands/deploy/index.js +6 -0
  15. package/dist/commands/dev/command.js +61 -0
  16. package/dist/commands/dev/index.js +3 -0
  17. package/dist/commands/dev/tui/dev-tui.d.ts +33 -0
  18. package/dist/commands/dev/tui/dev-tui.js +380 -0
  19. package/dist/commands/host/command.d.ts +9 -0
  20. package/dist/commands/host/command.js +129 -0
  21. package/dist/commands/host/create.d.ts +9 -0
  22. package/dist/commands/host/create.js +30 -0
  23. package/dist/commands/host/deployment-key.d.ts +2 -0
  24. package/dist/commands/host/deployment-key.js +40 -0
  25. package/dist/commands/host/import-key.d.ts +5 -0
  26. package/dist/commands/host/import-key.js +40 -0
  27. package/dist/commands/host/index.js +32 -0
  28. package/dist/commands/init/command.d.ts +1 -0
  29. package/dist/commands/init/command.js +24 -0
  30. package/dist/commands/init/index.d.ts +2 -0
  31. package/dist/commands/init/index.js +6 -0
  32. package/dist/commands/init/templates/gitignore.template.js +4 -0
  33. package/dist/commands/init/templates/saws-ts.template.d.ts +3 -0
  34. package/dist/commands/init/templates/saws-ts.template.js +7 -0
  35. package/dist/commands/init/templates/tsconfig-json.template.js +4 -0
  36. package/dist/commands/logs/command.d.ts +5 -0
  37. package/dist/commands/logs/command.js +19 -0
  38. package/dist/commands/logs/index.d.ts +2 -0
  39. package/dist/commands/logs/index.js +7 -0
  40. package/dist/commands/secrets/command.d.ts +8 -0
  41. package/dist/commands/secrets/command.js +28 -0
  42. package/dist/commands/secrets/index.d.ts +2 -0
  43. package/dist/commands/secrets/index.js +11 -0
  44. package/dist/hosts.d.ts +2 -0
  45. package/dist/hosts.js +18 -0
  46. package/package.json +11 -15
  47. package/dist/src/commands/deploy/command.js +0 -16
  48. package/dist/src/commands/deploy/index.js +0 -11
  49. package/dist/src/commands/dev/command.js +0 -22
  50. package/dist/src/commands/dev/index.js +0 -10
  51. package/dist/src/commands/execute/command.d.ts +0 -3
  52. package/dist/src/commands/execute/command.js +0 -41
  53. package/dist/src/commands/execute/index.js +0 -12
  54. package/dist/src/commands/init/command.d.ts +0 -1
  55. package/dist/src/commands/init/command.js +0 -23
  56. package/dist/src/commands/init/index.js +0 -9
  57. package/dist/src/commands/init/templates/gitignore.template.js +0 -13
  58. package/dist/src/commands/init/templates/saws-js.template.d.ts +0 -3
  59. package/dist/src/commands/init/templates/saws-js.template.js +0 -12
  60. package/dist/src/commands/init/templates/tsconfig-json.template.js +0 -25
  61. package/dist/tsconfig.tsbuildinfo +0 -1
  62. /package/dist/{src/commands/deploy → commands/app}/index.d.ts +0 -0
  63. /package/dist/{src/commands → commands}/deploy/command.d.ts +0 -0
  64. /package/dist/{src/commands/dev → commands/deploy}/index.d.ts +0 -0
  65. /package/dist/{src/commands → commands}/dev/command.d.ts +0 -0
  66. /package/dist/{src/commands/execute → commands/dev}/index.d.ts +0 -0
  67. /package/dist/{src/commands/init → commands/host}/index.d.ts +0 -0
  68. /package/dist/{src/commands → commands}/init/templates/gitignore.template.d.ts +0 -0
  69. /package/dist/{src/commands → commands}/init/templates/tsconfig-json.template.d.ts +0 -0
@@ -0,0 +1,32 @@
1
+ import { Command } from "commander";
2
+ import { configureHostCommand } from "./command.js";
3
+ import { createHostCommand } from "./create.js";
4
+ import { importHostKeyCommand } from "./import-key.js";
5
+ export const createCommand = () => new Command("host")
6
+ .description("configure deployment hosts")
7
+ .addCommand(new Command("create")
8
+ .description("create a global deployment host")
9
+ .argument("<name>", "global host name")
10
+ .requiredOption("--address <address>", "host name or IP address")
11
+ .requiredOption("--user <deployment-user>", "persistent deployment account")
12
+ .option("--ssh-port <port>", "SSH port")
13
+ .option("--platform <platform>", 'Docker platform such as "linux/amd64"')
14
+ .option("--exposure <mode>", 'network exposure policy: "tunnel" or "public"')
15
+ .option("--allowed-tcp-port <port...>", "public TCP ports allowed by the host firewall")
16
+ .action(createHostCommand))
17
+ .addCommand(new Command("key")
18
+ .description("manage global host deployment keys")
19
+ .addCommand(new Command("import")
20
+ .description("import an existing private key into encrypted global storage")
21
+ .argument("<name>", "global host name")
22
+ .requiredOption("--file <path>", "path to an SSH private key")
23
+ .option("--force", "replace an existing deployment key")
24
+ .action(importHostKeyCommand)))
25
+ .addCommand(new Command("configure")
26
+ .description("bootstrap a deployment user and apply host security policy")
27
+ .argument("[name]", "host name; optional when exactly one host exists")
28
+ .requiredOption("--user <bootstrap-user>", "existing SSH account used for initial configuration")
29
+ .option("--config <path>", "path to saws.ts")
30
+ .option("--global", "configure a host from the global host registry")
31
+ .option("--dry-run", "describe configuration without making changes")
32
+ .action(configureHostCommand));
@@ -0,0 +1 @@
1
+ export declare const initCommand: (serviceName?: string, configPath?: string) => Promise<void>;
@@ -0,0 +1,24 @@
1
+ import path from "node:path";
2
+ import fs from "node:fs/promises";
3
+ import { findServiceDefinition, getSawsConfig } from "@saws/core";
4
+ import { installDependencies } from "@saws/core/utils/dependency-management";
5
+ import { createFileIfNotExists } from "@saws/core/utils/create-file-if-not-exists";
6
+ import { sawsTsTemplate } from "./templates/saws-ts.template.js";
7
+ import { tsconfigJsonTemplate } from "./templates/tsconfig-json.template.js";
8
+ import { gitignoreTemplate } from "./templates/gitignore.template.js";
9
+ export const initCommand = async (serviceName, configPath) => {
10
+ if (serviceName != null) {
11
+ const serviceDefinition = await getSawsConfig(configPath);
12
+ await findServiceDefinition(serviceDefinition, serviceName).init();
13
+ return;
14
+ }
15
+ const name = path.parse(path.resolve(".")).name;
16
+ // not used for now
17
+ await installDependencies([]);
18
+ await installDependencies(["@saws/core", "typescript", "@tsconfig/node26"], {
19
+ development: true,
20
+ });
21
+ await fs.writeFile("./tsconfig.json", tsconfigJsonTemplate(), {});
22
+ await createFileIfNotExists("./saws.ts", sawsTsTemplate({ name }));
23
+ await createFileIfNotExists("./.gitignore", gitignoreTemplate());
24
+ };
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const createCommand: () => Command;
@@ -0,0 +1,6 @@
1
+ import { Command } from "commander";
2
+ import { initCommand } from "./command.js";
3
+ export const createCommand = () => new Command("init")
4
+ .argument("[service]", "name of the service to initialize")
5
+ .argument("[config]", "path to service definition")
6
+ .action(initCommand);
@@ -0,0 +1,4 @@
1
+ export const gitignoreTemplate = () => `node_modules
2
+ .saws/saws-*-local-output.json
3
+ .saws/.secrets
4
+ .DS_Store`;
@@ -0,0 +1,3 @@
1
+ export declare const sawsTsTemplate: ({ name }: {
2
+ name: string;
3
+ }) => string;
@@ -0,0 +1,7 @@
1
+ export const sawsTsTemplate = ({ name }) => `import { ServiceDefinition } from "@saws/core";
2
+
3
+ export default new ServiceDefinition({
4
+ name: "${name}",
5
+ dependencies: [],
6
+ });
7
+ `;
@@ -0,0 +1,4 @@
1
+ export const tsconfigJsonTemplate = () => /* json */ `{
2
+ "extends": "@tsconfig/node26/tsconfig.json",
3
+ "files": []
4
+ }`;
@@ -0,0 +1,5 @@
1
+ export interface LogsCommandOptions {
2
+ config?: string;
3
+ stage: string;
4
+ }
5
+ export declare const logsCommand: (serviceName: string | undefined, options: LogsCommandOptions) => Promise<void>;
@@ -0,0 +1,19 @@
1
+ import { findServiceDefinition, getSawsConfig } from "@saws/core";
2
+ export const logsCommand = async (serviceName, options) => {
3
+ const { config, stage } = options;
4
+ if (stage == null || stage.length === 0) {
5
+ throw new Error("logs requires --stage <string>");
6
+ }
7
+ if (stage === "local")
8
+ return;
9
+ process.env.STAGE = stage;
10
+ const serviceDefinition = await getSawsConfig(config);
11
+ if (serviceName != null) {
12
+ await findServiceDefinition(serviceDefinition, serviceName).logs(stage);
13
+ return;
14
+ }
15
+ await Promise.all(collectServices(serviceDefinition).map((service) => service.logs(stage)));
16
+ };
17
+ function collectServices(root) {
18
+ return [...new Set(root.getAllDependencies())];
19
+ }
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const createCommand: () => Command;
@@ -0,0 +1,7 @@
1
+ import { Command } from "commander";
2
+ import { logsCommand } from "./command.js";
3
+ export const createCommand = () => new Command("logs")
4
+ .option("--stage <string>", "stage to tail logs from")
5
+ .option("--config <path>", "path to service definition")
6
+ .argument("[service]", "name of the service to tail logs from")
7
+ .action(logsCommand);
@@ -0,0 +1,8 @@
1
+ export interface SecretsCommandOptions {
2
+ config?: string;
3
+ stage?: string;
4
+ global?: boolean;
5
+ set?: string;
6
+ get?: boolean;
7
+ }
8
+ export declare function secretsCommand(name: string, options: SecretsCommandOptions): Promise<void>;
@@ -0,0 +1,28 @@
1
+ import { getSawsConfigModule, SecretsManager } from "@saws/core";
2
+ export async function secretsCommand(name, options) {
3
+ const value = options.set;
4
+ if (options.get && value != null) {
5
+ throw new Error("secrets accepts only one of --get or --set <value>");
6
+ }
7
+ if (!options.get && value == null) {
8
+ throw new Error("secrets requires either --get or --set <value>");
9
+ }
10
+ if (!options.global) {
11
+ process.env.STAGE = options.stage ?? "local";
12
+ }
13
+ const config = await getSawsConfigModule(options.config);
14
+ const manager = config.secrets;
15
+ if (!(manager instanceof SecretsManager)) {
16
+ throw new Error('saws.ts must export a SecretsManager instance named "secrets"');
17
+ }
18
+ const secrets = options.global ? manager.global : manager;
19
+ if (options.get) {
20
+ console.log(await secrets.get(name));
21
+ return;
22
+ }
23
+ if (value == null) {
24
+ throw new Error("secrets requires --set <value>");
25
+ }
26
+ await secrets.set(name, value);
27
+ console.log("Set secret");
28
+ }
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const createCommand: () => Command;
@@ -0,0 +1,11 @@
1
+ import { Command } from "commander";
2
+ import { secretsCommand } from "./command.js";
3
+ export const createCommand = () => new Command("secrets")
4
+ .description("get or set encrypted project secrets")
5
+ .argument("<name>", "secret name")
6
+ .option("--stage <string>", "stage for a stage-scoped secret", "local")
7
+ .option("--global", "use the global secret scope")
8
+ .option("--set <string>", "set the secret value")
9
+ .option("--get", "get the secret value")
10
+ .option("--config <string>", "path to service definition")
11
+ .action(secretsCommand);
@@ -0,0 +1,2 @@
1
+ import { Host, type ServiceDefinition } from "@saws/core";
2
+ export declare function findConfiguredHosts(root: ServiceDefinition): Host[];
package/dist/hosts.js ADDED
@@ -0,0 +1,18 @@
1
+ import { Host } from "@saws/core";
2
+ export function findConfiguredHosts(root) {
3
+ const hosts = new Set();
4
+ const visited = new WeakSet();
5
+ const visit = (value) => {
6
+ if (value == null || typeof value !== "object" || visited.has(value))
7
+ return;
8
+ visited.add(value);
9
+ if (value instanceof Host) {
10
+ hosts.add(value);
11
+ return;
12
+ }
13
+ for (const child of Object.values(value))
14
+ visit(child);
15
+ };
16
+ visit(root);
17
+ return [...hosts];
18
+ }
package/package.json CHANGED
@@ -1,28 +1,24 @@
1
1
  {
2
2
  "name": "@saws/cli",
3
- "version": "1.0.11",
3
+ "version": "2.0.0-beta.11",
4
4
  "description": "",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/shichongrui/saws.git"
8
+ },
5
9
  "bin": {
6
10
  "saws": "./dist/bin/saws.js"
7
11
  },
8
12
  "files": [
9
13
  "./dist"
10
14
  ],
11
- "keywords": [],
12
- "author": "",
13
- "license": "MIT",
15
+ "type": "module",
14
16
  "dependencies": {
15
- "commander": "^12.0.0",
16
- "esbuild": "^0.20.1",
17
- "find-package-json": "^1.2.0",
18
- "@saws/utils": "^1.0.11",
19
- "@saws/secrets": "^1.0.11"
17
+ "@saws/core": "2.0.0-beta.11",
18
+ "commander": "^15.0.0",
19
+ "find-package-json": "^1.2.0"
20
20
  },
21
21
  "devDependencies": {
22
- "@types/find-package-json": "^1.2.6",
23
- "@saws/core": "^1.0.11"
24
- },
25
- "peerDependencies": {
26
- "@saws/core": ">=1.0.0"
22
+ "@types/find-package-json": "^1.2.7"
27
23
  }
28
- }
24
+ }
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deployCommand = void 0;
4
- const create_directories_1 = require("@saws/utils/create-directories");
5
- const core_1 = require("@saws/core");
6
- const deployCommand = async (path, { stage }) => {
7
- if (stage === "local") {
8
- console.warn("Can not deploy to local stage");
9
- process.exit();
10
- }
11
- await (0, create_directories_1.createCacheDir)();
12
- const serviceDefinition = await (0, core_1.getSawsConfig)(path);
13
- await serviceDefinition.deploy(stage);
14
- };
15
- exports.deployCommand = deployCommand;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tYW5kcy9kZXBsb3kvY29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1RUFBZ0U7QUFDaEUscUNBQTJDO0FBRXBDLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQUUsRUFBRSxLQUFLLEVBQXFCLEVBQUUsRUFBRTtJQUNoRixJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDOUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLElBQUEsbUNBQWMsR0FBRSxDQUFDO0lBRXZCLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFBLG9CQUFhLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFFcEQsTUFBTSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBWFcsUUFBQSxhQUFhLGlCQVd4QiJ9
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createCommand = void 0;
4
- const commander_1 = require("commander");
5
- const command_1 = require("./command");
6
- const createCommand = () => new commander_1.Command("deploy")
7
- .option("--stage <string>", "stage to deploy")
8
- .argument("[string]", "path to service definition")
9
- .action(command_1.deployCommand);
10
- exports.createCommand = createCommand;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbWFuZHMvZGVwbG95L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFvQztBQUNwQyx1Q0FBMEM7QUFFbkMsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFLENBQ2hDLElBQUksbUJBQU8sQ0FBQyxRQUFRLENBQUM7S0FDbEIsTUFBTSxDQUFDLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDO0tBQzdDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsNEJBQTRCLENBQUM7S0FDbEQsTUFBTSxDQUFDLHVCQUFhLENBQUMsQ0FBQztBQUpkLFFBQUEsYUFBYSxpQkFJQyJ9
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.devCommand = void 0;
4
- const create_directories_1 = require("@saws/utils/create-directories");
5
- const on_exit_1 = require("@saws/utils/on-exit");
6
- const core_1 = require("@saws/core");
7
- const devCommand = async (path) => {
8
- process.env.NODE_ENV = "development";
9
- process.env.STAGE = "local";
10
- process.env.AWS_REGION = 'us-west-2';
11
- await (0, create_directories_1.createCacheDir)();
12
- const serviceDefinition = await (0, core_1.getSawsConfig)(path);
13
- (0, on_exit_1.onProcessExit)(() => {
14
- serviceDefinition.exit();
15
- });
16
- await serviceDefinition.dev();
17
- serviceDefinition.forEachDependency(async (dependency) => {
18
- dependency.getStdOut()?.pipe(process.stdout);
19
- });
20
- };
21
- exports.devCommand = devCommand;
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tYW5kcy9kZXYvY29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1RUFBZ0U7QUFDaEUsaURBQW9EO0FBQ3BELHFDQUEyQztBQUVwQyxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztJQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7SUFFckMsTUFBTSxJQUFBLG1DQUFjLEdBQUUsQ0FBQztJQUV2QixNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBQSxvQkFBYSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBRXBELElBQUEsdUJBQWEsRUFBQyxHQUFHLEVBQUU7UUFDakIsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTlCLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUN2RCxVQUFVLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM5QyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQztBQWxCVyxRQUFBLFVBQVUsY0FrQnJCIn0=
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createCommand = void 0;
4
- const commander_1 = require("commander");
5
- const command_1 = require("./command");
6
- const createCommand = () => new commander_1.Command("dev")
7
- .argument("[string]", "path to service definition")
8
- .action(command_1.devCommand);
9
- exports.createCommand = createCommand;
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbWFuZHMvZGV2L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFvQztBQUNwQyx1Q0FBdUM7QUFFaEMsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFLENBQ2hDLElBQUksbUJBQU8sQ0FBQyxLQUFLLENBQUM7S0FDZixRQUFRLENBQUMsVUFBVSxFQUFFLDRCQUE0QixDQUFDO0tBQ2xELE1BQU0sQ0FBQyxvQkFBVSxDQUFDLENBQUM7QUFIWCxRQUFBLGFBQWEsaUJBR0YifQ==
@@ -1,3 +0,0 @@
1
- export declare const executeCommand: (scriptPath: string, sawsPath: string, { stage }: {
2
- stage: string;
3
- }) => Promise<void>;
@@ -1,41 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.executeCommand = void 0;
7
- const core_1 = require("@saws/core");
8
- const constants_1 = require("@saws/utils/constants");
9
- const stage_outputs_1 = require("@saws/utils/stage-outputs");
10
- const child_process_1 = require("child_process");
11
- const esbuild_1 = __importDefault(require("esbuild"));
12
- const path_1 = __importDefault(require("path"));
13
- const executeCommand = async (scriptPath, sawsPath, { stage = "local" }) => {
14
- process.env.STAGE = stage;
15
- const serviceDefinition = await (0, core_1.getSawsConfig)(sawsPath);
16
- const stageOutputs = await (0, stage_outputs_1.getStageOutputs)(stage);
17
- const services = serviceDefinition.getAllDependencies();
18
- let environment = {
19
- NODE_ENV: stage === "local" ? "development" : "production",
20
- STAGE: stage,
21
- };
22
- for (const service of services) {
23
- await service.setOutputs(stageOutputs[service.name], stage);
24
- environment = {
25
- ...environment,
26
- ...await (service.getEnvironmentVariables(stage))
27
- };
28
- }
29
- const outFile = path_1.default.join(constants_1.BUILD_DIR, "script.js");
30
- await esbuild_1.default.build({
31
- entryPoints: [scriptPath],
32
- bundle: true,
33
- outfile: outFile,
34
- platform: "node",
35
- });
36
- (0, child_process_1.fork)(outFile, {
37
- env: environment,
38
- });
39
- };
40
- exports.executeCommand = executeCommand;
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tYW5kcy9leGVjdXRlL2NvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscUNBQTJDO0FBQzNDLHFEQUFrRDtBQUNsRCw2REFBNEQ7QUFDNUQsaURBQXFDO0FBQ3JDLHNEQUE4QjtBQUM5QixnREFBd0I7QUFFakIsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUNqQyxVQUFrQixFQUNsQixRQUFnQixFQUNoQixFQUFFLEtBQUssR0FBRyxPQUFPLEVBQXFCLEVBQ3RDLEVBQUU7SUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFFMUIsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUEsb0JBQWEsRUFBQyxRQUFRLENBQUMsQ0FBQztJQUV4RCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUEsK0JBQWUsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO0lBQ3ZELElBQUksV0FBVyxHQUEyQjtRQUN4QyxRQUFRLEVBQUUsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZO1FBQzFELEtBQUssRUFBRSxLQUFLO0tBQ2IsQ0FBQTtJQUNELEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDM0QsV0FBVyxHQUFHO1lBQ1osR0FBRyxXQUFXO1lBQ2QsR0FBRyxNQUFLLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pELENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxxQkFBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRWxELE1BQU0saUJBQU8sQ0FBQyxLQUFLLENBQUM7UUFDbEIsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDO1FBQ3pCLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLE9BQU87UUFDaEIsUUFBUSxFQUFFLE1BQU07S0FDakIsQ0FBQyxDQUFDO0lBRUgsSUFBQSxvQkFBSSxFQUFDLE9BQU8sRUFBRTtRQUNaLEdBQUcsRUFBRSxXQUFXO0tBQ2pCLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQztBQW5DVyxRQUFBLGNBQWMsa0JBbUN6QiJ9
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createCommand = void 0;
4
- const commander_1 = require("commander");
5
- const command_1 = require("./command");
6
- const createCommand = () => new commander_1.Command("execute")
7
- .option("--stage <string>", "Stage")
8
- .argument("<string>", "The path to the script to execute")
9
- .argument("[string]", "The path to the saws file")
10
- .action(command_1.executeCommand);
11
- exports.createCommand = createCommand;
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbWFuZHMvZXhlY3V0ZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBb0M7QUFDcEMsdUNBQTJDO0FBRXBDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRSxDQUNoQyxJQUFJLG1CQUFPLENBQUMsU0FBUyxDQUFDO0tBQ25CLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUM7S0FDbkMsUUFBUSxDQUFDLFVBQVUsRUFBRSxtQ0FBbUMsQ0FBQztLQUN6RCxRQUFRLENBQUMsVUFBVSxFQUFFLDJCQUEyQixDQUFDO0tBQ2pELE1BQU0sQ0FBQyx3QkFBYyxDQUFDLENBQUM7QUFMZixRQUFBLGFBQWEsaUJBS0UifQ==
@@ -1 +0,0 @@
1
- export declare const initCommand: () => Promise<void>;
@@ -1,23 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.initCommand = void 0;
7
- const node_path_1 = __importDefault(require("node:path"));
8
- const dependency_management_1 = require("@saws/utils/dependency-management");
9
- const tsconfig_json_template_1 = require("./templates/tsconfig-json.template");
10
- const saws_js_template_1 = require("./templates/saws-js.template");
11
- const create_file_if_not_exists_1 = require("@saws/utils/create-file-if-not-exists");
12
- const gitignore_template_1 = require("./templates/gitignore.template");
13
- const initCommand = async () => {
14
- const name = node_path_1.default.parse(node_path_1.default.resolve('.')).name;
15
- // not used for now
16
- await (0, dependency_management_1.installMissingDependencies)([]);
17
- await (0, dependency_management_1.installMissingDependencies)(['@saws/core', 'typescript'], { development: true });
18
- (0, create_file_if_not_exists_1.createFileIfNotExists)('./tsconfig.json', (0, tsconfig_json_template_1.tsconfigJsonTemplate)());
19
- (0, create_file_if_not_exists_1.createFileIfNotExists)('./saws.js', (0, saws_js_template_1.sawsJsTemplate)({ name }));
20
- (0, create_file_if_not_exists_1.createFileIfNotExists)('./.gitignore', (0, gitignore_template_1.gitignoreTemplate)());
21
- };
22
- exports.initCommand = initCommand;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tYW5kcy9pbml0L2NvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMERBQTRCO0FBQzVCLDZFQUE4RTtBQUM5RSwrRUFBeUU7QUFDekUsbUVBQTZEO0FBQzdELHFGQUE2RTtBQUM3RSx1RUFBa0U7QUFFM0QsTUFBTSxXQUFXLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDcEMsTUFBTSxJQUFJLEdBQUcsbUJBQUksQ0FBQyxLQUFLLENBQUMsbUJBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFFL0MsbUJBQW1CO0lBQ25CLE1BQU0sSUFBQSxrREFBMEIsRUFBQyxFQUFFLENBQUMsQ0FBQTtJQUNwQyxNQUFNLElBQUEsa0RBQTBCLEVBQUMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUVyRixJQUFBLGlEQUFxQixFQUFDLGlCQUFpQixFQUFFLElBQUEsNkNBQW9CLEdBQUUsQ0FBQyxDQUFBO0lBQ2hFLElBQUEsaURBQXFCLEVBQUMsV0FBVyxFQUFFLElBQUEsaUNBQWMsRUFBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM1RCxJQUFBLGlEQUFxQixFQUFDLGNBQWMsRUFBRSxJQUFBLHNDQUFpQixHQUFFLENBQUMsQ0FBQTtBQUM1RCxDQUFDLENBQUE7QUFWWSxRQUFBLFdBQVcsZUFVdkIifQ==
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createCommand = void 0;
4
- const commander_1 = require("commander");
5
- const command_1 = require("./command");
6
- const createCommand = () => new commander_1.Command("init")
7
- .action(command_1.initCommand);
8
- exports.createCommand = createCommand;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbWFuZHMvaW5pdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBb0M7QUFDcEMsdUNBQXdDO0FBRWpDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRSxDQUNoQyxJQUFJLG1CQUFPLENBQUMsTUFBTSxDQUFDO0tBQ2hCLE1BQU0sQ0FBQyxxQkFBVyxDQUFDLENBQUM7QUFGWixRQUFBLGFBQWEsaUJBRUQifQ==
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.gitignoreTemplate = void 0;
4
- const gitignoreTemplate = () => `node_modules
5
- .saws/postgres
6
- .saws/cognito
7
- .saws/saws-*-local-output.json
8
- .saws/cache
9
- .saws/build
10
- .saws/.secrets
11
- .DS_Store`;
12
- exports.gitignoreTemplate = gitignoreTemplate;
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aWdub3JlLnRlbXBsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2luaXQvdGVtcGxhdGVzL2dpdGlnbm9yZS50ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBTyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUFDOzs7Ozs7O1VBTzdCLENBQUE7QUFQRyxRQUFBLGlCQUFpQixxQkFPcEIifQ==
@@ -1,3 +0,0 @@
1
- export declare const sawsJsTemplate: ({ name }: {
2
- name: string;
3
- }) => string;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sawsJsTemplate = void 0;
4
- const sawsJsTemplate = ({ name }) => `const { ServiceDefinition } = require('@saws/core')
5
-
6
- module.exports = new ServiceDefinition({
7
- name: '${name}',
8
- dependencies: []
9
- })
10
- `;
11
- exports.sawsJsTemplate = sawsJsTemplate;
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F3cy1qcy50ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21tYW5kcy9pbml0L3RlbXBsYXRlcy9zYXdzLWpzLnRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFPLE1BQU0sY0FBYyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQW1CLEVBQUUsRUFBRSxDQUFDOzs7V0FHbEQsSUFBSTs7O0NBR2QsQ0FBQTtBQU5ZLFFBQUEsY0FBYyxrQkFNMUIifQ==
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tsconfigJsonTemplate = void 0;
4
- const tsconfigJsonTemplate = () => `{
5
- "include": ["**/*.ts", "*.ts", "**/*.tsx", "global.d.ts"],
6
- "exclude": [".saws", "node_modules"],
7
- "compilerOptions": {
8
- "lib": ["DOM", "DOM.Iterable", "ES2022"],
9
- "isolatedModules": true,
10
- "esModuleInterop": true,
11
- "jsx": "react-jsx",
12
- "target": "ES2022",
13
- "module": "Node16",
14
- "resolveJsonModule": true,
15
- "strict": true,
16
- "allowJs": true,
17
- "forceConsistentCasingInFileNames": true,
18
- "noEmit": true,
19
- "skipLibCheck": true
20
- }
21
- }
22
-
23
- `;
24
- exports.tsconfigJsonTemplate = tsconfigJsonTemplate;
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNjb25maWctanNvbi50ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21tYW5kcy9pbml0L3RlbXBsYXRlcy90c2NvbmZpZy1qc29uLnRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFPLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxFQUFFLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQnpDLENBQUE7QUFuQlksUUFBQSxvQkFBb0Isd0JBbUJoQyJ9