@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
package/README.md CHANGED
@@ -7,12 +7,14 @@ CLI for interacting with your SAWS application.
7
7
  </div>
8
8
 
9
9
  ## Table of Contents
10
+
10
11
  - [Installation](#installation)
11
12
  - [Commands](#commands)
12
13
 
13
14
  ## Installation <a id='installation'>
14
15
 
15
16
  From the command line run:
17
+
16
18
  ```bash
17
19
  npm install @saws/cli
18
20
  ```
@@ -32,10 +34,11 @@ npx saws init
32
34
  This command will initialize a SAWS application in your current working directory.
33
35
 
34
36
  It will
35
- - Install any needed dependencies
36
- - Create a `.gitignore`
37
- - Create a `tsconfig.json`
38
- - Create your `saws.js` config file
37
+
38
+ - Install any needed dependencies
39
+ - Create a `.gitignore`
40
+ - Create a `tsconfig.json`
41
+ - Create your `saws.js` config file
39
42
 
40
43
  ### `dev`
41
44
 
@@ -53,10 +56,134 @@ npx saws deploy --stage <stage>
53
56
 
54
57
  This command will deploy all the services in your `saws.js` file to AWS. You will need to have your AWS session configured in your terminal for this command to succeed.
55
58
 
59
+ ### Packaged applications
60
+
61
+ A package can expose a reusable SAWS application by exporting a `create` factory:
62
+
63
+ ```ts
64
+ import { ServiceDefinition, type Host } from "@saws/core";
65
+
66
+ export function create({ host }: { host: Host }) {
67
+ return new ServiceDefinition({
68
+ name: "example-application",
69
+ dependencies: [createApplicationServices(host)],
70
+ });
71
+ }
72
+ ```
73
+
74
+ The factory input is a TypeScript module with a default export. Named exports are
75
+ re-exported from the installed application's generated `saws.ts`. A packaged
76
+ application can therefore use the same global hosts as project configurations:
77
+
78
+ ```ts
79
+ import { getGlobalHost } from "@saws/core";
80
+
81
+ export const host = getGlobalHost("observability");
82
+
83
+ export default { host };
84
+ ```
85
+
86
+ Install and deploy a named instance:
87
+
88
+ ```bash
89
+ npx saws app install @example/signoz --name observability --config ./signoz.config.ts
90
+ npx saws app deploy observability --stage production
91
+ ```
92
+
93
+ Installed packages, configuration, dependencies, secrets, outputs, and other SAWS
94
+ state live beneath `~/.saws/apps/<name>`. Set `SAWS_HOME` to use another base
95
+ directory, such as in CI. Run standard commands that operate on named exports from
96
+ the application instance directory.
97
+
98
+ ### `logs`
99
+
100
+ ```bash
101
+ npx saws logs --stage <stage>
102
+ npx saws logs <service> --stage <stage>
103
+ ```
104
+
105
+ This command will tail logs for deployed services in your `saws.js` file. Pass a
106
+ service name to tail only one service. The `local` stage is a no-op.
107
+
108
+ ### `host configure`
109
+
110
+ Hosts that are shared by multiple projects can be stored in the global SAWS home:
111
+
112
+ ```bash
113
+ npx saws host create production \
114
+ --address 203.0.113.10 \
115
+ --user deploy \
116
+ --platform linux/amd64 \
117
+ --exposure public
118
+
119
+ npx saws host configure production --global --user ubuntu
120
+ ```
121
+
122
+ `host configure` generates an Ed25519 deployment key when the global host does
123
+ not already have one. To use an existing, unencrypted SSH private key, import it
124
+ before configuring the host:
125
+
126
+ ```bash
127
+ npx saws host key import production --file ~/.ssh/production_deploy
128
+ npx saws host configure production --global --user ubuntu
129
+ ```
130
+
131
+ The import command validates the key and stores its contents only in encrypted
132
+ global storage. It refuses to replace an existing host key unless `--force` is
133
+ provided, and it never modifies the source key file.
134
+
135
+ Reference the resulting concrete `Host` from any project's `saws.ts`:
136
+
137
+ ```ts
138
+ import { getGlobalHost } from "@saws/core";
139
+ import { HonoService } from "@saws/hono-service";
140
+
141
+ export const host = getGlobalHost("production");
142
+
143
+ export default new HonoService({
144
+ name: "api",
145
+ host,
146
+ });
147
+ ```
148
+
149
+ Profiles are stored beneath `~/.saws/hosts`, while their deployment keys are kept
150
+ in the encrypted global secret store beneath `~/.saws/secrets`. `SAWS_HOME` can
151
+ override the base directory. A global profile contains no private key material.
152
+
153
+ Inline, project-owned hosts remain supported. Define the encrypted global key
154
+ reference with the host in `saws.ts`:
155
+
156
+ ```ts
157
+ import { Host, SecretsManager } from "@saws/core";
158
+
159
+ export const secrets = new SecretsManager();
160
+
161
+ const host = new Host({
162
+ name: "main",
163
+ address: "203.0.113.10",
164
+ user: "deploy",
165
+ sshPrivateKey: secrets.global.reference("main-deployment-ssh-private-key"),
166
+ platform: "linux/amd64",
167
+ });
168
+ ```
169
+
170
+ Then bootstrap it through an existing privileged account:
171
+
172
+ ```bash
173
+ npx saws host configure main --user ubuntu
174
+ ```
175
+
176
+ `ubuntu` is used only for initial SSH and interactive `sudo`. SAWS creates and
177
+ configures `deploy`, then uses `deploy` for subsequent host operations. The
178
+ private key is encrypted in `.saws/secrets/global.env`; the public key is stored
179
+ as `SAWS_HOST_MAIN_SSH_PUBLIC_KEY` in the project-root `.env`. The private-key
180
+ secret can use any global secret name.
181
+
56
182
  ### `execute`
57
183
 
58
184
  ```bash
59
185
  npx saws execute ./path/to/script.ts --stage <stage>
60
186
 
61
187
  ```
188
+
62
189
  This command will execute a script against your application. `stage` by default will be local. If your script depends on services being running locally, you will need to run them using `npx saws dev` in another terminal tab/window.
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/typescript/lib/lib.es2025.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/typescript/lib/lib.es2025.collection.d.ts","../../../node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../node_modules/typescript/lib/lib.es2025.intl.d.ts","../../../node_modules/typescript/lib/lib.es2025.iterator.d.ts","../../../node_modules/typescript/lib/lib.es2025.promise.d.ts","../../../node_modules/typescript/lib/lib.es2025.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.temporal.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../core/dist/utils/stage-outputs.d.ts","../../core/dist/secrets-manager.d.ts","../../core/dist/servicedefinition.d.ts","../../core/dist/find-service-definition.d.ts","../../core/dist/get-saws-config.d.ts","../../core/dist/host-readiness.d.ts","../../core/dist/host.d.ts","../../core/dist/global-hosts.d.ts","../../core/dist/index.d.ts","../src/hosts.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/dispatcher1-wrapper.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/ffi.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/path/posix.d.ts","../../../node_modules/@types/node/path/win32.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/quic.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/iter.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/test/reporters.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/util/types.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/find-package-json/package-json.d.ts","../../../node_modules/@types/find-package-json/index.d.ts","../../../node_modules/commander/typings/index.d.ts","../../core/dist/utils/create-directories.d.ts","../../core/dist/utils/on-exit.d.ts","../src/commands/dev/tui/dev-tui.ts","../src/commands/dev/command.ts","../src/commands/dev/index.ts","../src/commands/deploy/command.ts","../src/commands/deploy/index.ts","../../core/dist/utils/dependency-management.d.ts","../../core/dist/utils/create-file-if-not-exists.d.ts","../src/commands/init/templates/saws-ts.template.ts","../src/commands/init/templates/tsconfig-json.template.ts","../src/commands/init/templates/gitignore.template.ts","../src/commands/init/command.ts","../src/commands/init/index.ts","../src/commands/host/deployment-key.ts","../src/commands/host/command.ts","../src/commands/host/create.ts","../src/commands/host/import-key.ts","../src/commands/host/index.ts","../src/commands/logs/command.ts","../src/commands/logs/index.ts","../src/commands/secrets/command.ts","../src/commands/secrets/index.ts","../src/commands/app/paths.ts","../src/commands/app/process.ts","../src/commands/app/deploy.ts","../src/commands/app/install.ts","../src/commands/app/index.ts","../src/bin/saws.ts"],"fileIdsList":[[91,156,164,169,172,174,175,176,188,215,216],[91,156,164,169,172,174,175,176,188],[91,153,154,156,164,169,172,174,175,176,188],[91,155,156,164,169,172,174,175,176,188],[156,164,169,172,174,175,176,188],[91,156,164,169,172,174,175,176,188,197],[91,156,157,162,164,167,169,172,174,175,176,178,188,193,206],[91,156,157,158,164,167,169,172,174,175,176,188],[91,156,159,164,169,172,174,175,176,188,207],[91,156,160,161,164,169,172,174,175,176,179,188],[91,156,161,164,169,172,174,175,176,188,193,203],[91,156,162,164,167,169,172,174,175,176,178,188],[91,155,156,163,164,169,172,174,175,176,188],[91,156,164,165,169,172,174,175,176,188],[91,156,164,166,167,169,172,174,175,176,188],[91,155,156,164,167,169,172,174,175,176,188],[91,156,164,167,169,170,172,174,175,176,188,193,206],[91,156,164,167,169,170,172,174,175,176,188,193,195,197],[91,143,156,164,167,169,171,172,174,175,176,178,188,193,206],[91,156,164,167,169,171,172,174,175,176,178,188,193,203,206],[91,156,164,169,171,172,173,174,175,176,188,193,203,206],[90,91,92,93,94,95,96,97,98,99,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214],[91,156,164,167,169,172,174,175,176,188],[91,156,164,169,172,174,176,188],[91,156,164,169,172,174,175,176,177,188,206],[91,156,164,167,169,172,174,175,176,178,188,193],[91,156,164,169,172,174,175,176,179,188],[91,156,164,169,172,174,175,176,180,188],[91,156,164,167,169,172,174,175,176,183,188],[91,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213],[91,156,164,169,172,174,175,176,185,188],[91,156,164,169,172,174,175,176,186,188],[91,156,161,164,169,172,174,175,176,178,188,197],[91,156,164,167,169,172,174,175,176,188,189],[91,156,164,169,172,174,175,176,188,190,207,210],[91,156,164,167,169,172,174,175,176,188,193,195,196,197],[91,156,164,169,172,174,175,176,188,194,197],[91,156,164,167,169,172,174,175,176,188,193,195],[91,156,164,167,169,172,174,175,176,188,193,196,197],[91,156,164,169,172,174,175,176,188,197,207],[91,156,164,169,172,174,175,176,188,198],[91,153,156,164,169,172,174,175,176,188,193,200,206],[91,156,164,169,172,174,175,176,188,193,199],[91,156,164,167,169,172,174,175,176,188,201,202],[91,156,164,169,172,174,175,176,188,201,202],[91,156,161,164,169,172,174,175,176,178,188,193,203],[91,156,164,169,172,174,175,176,188,204],[91,156,164,169,172,174,175,176,178,188,205],[91,156,164,169,171,172,174,175,176,186,188,206],[91,156,164,169,172,174,175,176,188,207,208],[91,156,161,164,169,172,174,175,176,188,208],[91,156,164,169,172,174,175,176,188,193,209],[91,156,164,169,172,174,175,176,177,188,210],[91,156,164,169,172,174,175,176,188,211],[91,156,159,164,169,172,174,175,176,188],[91,156,161,164,169,172,174,175,176,188],[91,156,164,169,172,174,175,176,188,207],[91,143,156,164,169,172,174,175,176,188],[91,156,164,169,172,174,175,176,188,206],[91,156,164,169,172,174,175,176,188,212],[91,156,164,169,172,174,175,176,183,188],[91,156,164,169,172,174,175,176,188,202],[91,143,156,164,167,169,170,172,174,175,176,183,188,193,197,206,209,210,212],[91,156,164,169,172,174,175,176,188,193,213],[91,156,164,169,172,174,175,176,188,195,214],[91,106,109,112,113,156,164,169,172,174,175,176,188,206],[91,109,156,164,169,172,174,175,176,188,193,206],[91,109,113,156,164,169,172,174,175,176,188,206],[91,156,164,169,172,174,175,176,188,193],[91,103,156,164,169,172,174,175,176,188],[91,107,156,164,169,172,174,175,176,188],[91,105,106,109,156,164,169,172,174,175,176,188,206],[91,156,164,169,172,174,175,176,178,188,203],[91,156,164,169,172,174,175,176,188,215],[91,103,156,164,169,172,174,175,176,188,215],[91,105,109,156,164,169,172,174,175,176,178,188,206],[91,100,101,102,104,108,156,164,167,169,172,174,175,176,188,193,206],[91,109,156,164,169,172,174,175,176,188],[91,109,118,127,156,164,169,172,174,175,176,188],[91,101,107,156,164,169,172,174,175,176,188],[91,109,137,138,156,164,169,172,174,175,176,188],[91,101,104,109,156,164,169,172,174,175,176,188,197,206,215],[91,105,109,156,164,169,172,174,175,176,188,206],[91,100,156,164,169,172,174,175,176,188],[91,103,104,105,107,108,109,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,138,139,140,141,142,156,164,169,172,174,175,176,188],[91,109,130,133,156,164,169,172,174,175,176,188],[91,109,118,120,121,156,164,169,172,174,175,176,188],[91,107,109,120,122,156,164,169,172,174,175,176,188],[91,108,156,164,169,172,174,175,176,188],[91,101,103,109,156,164,169,172,174,175,176,188],[91,109,113,120,122,156,164,169,172,174,175,176,188],[91,113,156,164,169,172,174,175,176,188],[91,107,109,112,156,164,169,172,174,175,176,188,206],[91,101,105,109,118,156,164,169,172,174,175,176,188],[91,109,130,156,164,169,172,174,175,176,188],[91,122,156,164,169,172,174,175,176,188],[91,101,105,109,113,156,164,169,172,174,175,176,188],[91,103,109,137,156,164,169,172,174,175,176,188,197,212,215],[88,91,156,164,169,172,174,175,176,188,217,218,223,225,232,237,239,241,246],[91,156,164,169,170,172,174,175,176,180,188,242,243],[91,156,164,169,172,174,175,176,188,218,244,245],[88,91,156,164,169,172,174,175,176,180,188],[91,156,157,164,169,172,174,175,176,188],[88,91,156,164,169,172,174,175,176,188],[91,156,164,169,172,174,175,176,188,218,224],[88,91,156,164,169,172,174,175,176,188,219,220,221],[91,156,164,169,172,174,175,176,188,218,222],[88,89,91,156,164,169,170,172,174,175,176,180,188,233],[91,156,157,164,169,170,172,174,175,176,179,180,188,207],[88,91,156,164,169,170,172,174,175,176,180,188,233],[91,156,164,169,172,174,175,176,188,218,234,235,236],[88,91,156,164,169,170,172,174,175,176,180,188,226,227,228,229,230],[91,156,164,169,172,174,175,176,188,218,231],[91,156,164,169,172,174,175,176,188,218,238],[91,156,164,169,172,174,175,176,188,218,240],[82,91,156,164,169,172,174,175,176,188],[81,86,91,156,164,169,172,174,175,176,188],[81,85,91,156,164,169,172,174,175,176,188],[81,82,83,84,85,86,87,91,156,164,169,172,174,175,176,188],[80,81,91,156,164,169,172,174,175,176,188,193]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"b507173a7718609bb52011f33e6fc61b0f3de62ec38c935b38dcfbb68223dea9","impliedFormat":99},{"version":"ed03f7587c6405bca4aa5cd0e13c159ba6a38d29438bf368174cbc12b7952990","impliedFormat":99},{"version":"c2c45e23c9ade84835e6589a92f4b1e0d959f4aad517ca2b9f306d505c8c186b","impliedFormat":99},{"version":"d5f72b73663996558032aae95128fd1c003dbc2a3c7c9616a4b9582885554547","impliedFormat":99},{"version":"db04ab7cf477c959b90d137c9150114e93ab293f7a82068813e62596e514c8b9","impliedFormat":99},{"version":"d096b43d56e50a815348abdc7f505bff20b7326edd25d5ceab70be8ae550b216","impliedFormat":99},{"version":"f4b14039ec5893b0c7691e5695493a13207b5a6e7ea07e9d58fe3f112e9e87fd","impliedFormat":99},{"version":"7e7edbefeefa7d89d7d0e3b51e4361ff4cbafd2f0b8691af8f00d4ec7a2d0dbb","impliedFormat":99},{"version":"b5a012b8d2b5aedaa0284247fe44638a60a00afb8a4727aa86567f401ae06b1d","impliedFormat":99},{"version":"9485050fd6df28da9877bcff14446b7419f2a8a9007c2d7aa97554d0a68e36b5","signature":"c86d71eacb3413efd1ccf2352185c19ea72b9c86300c5475a5f719a637995dbf","impliedFormat":99},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc2110f7decca6bfb9392e30421cfa1436479e4a6756e8fec6cbc22625d4f881","affectsGlobalScope":true,"impliedFormat":1},{"version":"f53a7652392cf26ebbe4e29fd0672aa87c93bd6d0241289c13fab87b9ac35c8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"b00a630557d1622ad312633bdbfbdb9c6b7220d948dca9f899db30679f160074","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"88809d6c1b9c78d04a133646a6feb926def05a8774c308c7c93bc32ee163d271","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"3ac40516c33b87f751f7507346933081a26cdb8a3e11a6b3aa07d23f803c85db","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"14e9acf826baba0ef4b5665704084896e7bcc06f65a9ab13af7e93d27d6b7069","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"829bc57ee8f287b490ab5bbc5a962fca57e432c1e38ec680ecd3ecaf12800613","impliedFormat":1},{"version":"eec76bf6b9346f3f95fa402621b889489e96930e72295b0369022f332e9b4a6a","impliedFormat":1},{"version":"3a3ff14da53d5013f3e6d8c4ad55225e3649c08786c4421ce639c00d8d589b7d","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"38004e6801340cb890afb8cb5a9fc8972297e7f88ab94026e4b0b3c61fb32f8a","impliedFormat":1},{"version":"d243db6b25788f439e7e2f03c05688e92f46764351673bb0e7b2f3631232e186","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"149f9a9e7f04e67afa0e2a49fc0ff421035c01d6b793cfcae7d2e9f6819431e2","impliedFormat":1},{"version":"e8a9dfa4c75ef6d25df8b40eaa9c31e0a69452aaf2ced4a3f4215dbdbaa876f4","impliedFormat":1},{"version":"a70af845a2eb9dd6e2723e319e14ea7fb28b129ec1361c21509b49305448c323","impliedFormat":1},{"version":"b53dc572d4f187904207ae1166652de47aab8eeb00c254d009cb226863076b56","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"f501234c5aeeeb5d7659412335227466aaacf30b952372d60afeb21c02c96348","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"9ac977503f15bf13ca7c82ad9a32a782f42d43e474824e8b3bffe228fd5f2639","impliedFormat":1},{"version":"8b91ff5bb912be3ea213cbcf0075aace1f5d4ff249a0d227ed673868cb7bfabc","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"7cb4f431a4591b0e23002bed805dc871a874dfed6b9a3994dce68a6df73e6739","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"e99963ae1e3a48ca7a7958c02f3e88bb963eb7978c28b68ae6b8c9f03309d83c","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"594ae90cacd813fa392ff80d2e0a8eff4e41f4a136329a940e321399dd8895b4","impliedFormat":1},{"version":"d1f333ade8ff35a409b4984e1f11956fe11c61855b0c7e9b59f0313e48b40c4a","impliedFormat":1},{"version":"0224aa4b3464895d69c413a640a19ac2166778a74eb5eb3b36b021c72d42b274","impliedFormat":1},{"version":"2e6fca0024dd8a076a886d9ec031a936ea59ad878a25b944820495d92f8381dd","affectsGlobalScope":true,"impliedFormat":1},{"version":"177459cba484e2f1e08872a3d2fdbca3162d9d43ca5ec9dc0c946835b55f74be","impliedFormat":1},{"version":"2fbf504c4791f9d32cd766cfe6b605bcda63289b925401953a7900db9af85348","impliedFormat":1},{"version":"ed0fb633cae35948d9e144004299a4bdf1ab912667c787b7fbffcd6d8c7b92a2","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"0e312260895afc9de021ce9de3c8a857392f0ccc7f19d3a030e4d6136a4ac91e","impliedFormat":1},{"version":"2ea729503db9793f2691162fec3dd1118cab62e96d025f8eeb376d43ec293395","impliedFormat":1},{"version":"98fc7231d6c846a8ed19bdef026ddffe5e2182cc818be74899287421ad370a87","impliedFormat":1},{"version":"3a40b5d34e014017539acb92f04cf2bc0aa71e49efb33c66039df93be97842a1","impliedFormat":1},{"version":"2bc7aa4fba46df0bd495425a7c8201437a7d465f83854fac859df2d67f664df3","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"8c7e618c2a91ea7f6b5cca272a295864e92c16413be8fc56a943e8c7d5320011","affectsGlobalScope":true,"impliedFormat":1},{"version":"79a85c64bf083c5f4dd7074e804d1000c0c47301b84d48417a224decd681be30","impliedFormat":1},{"version":"9f1e3a76d5f509b5579e567de522b402cb79e201c4f47dcd014451c0580b290d","impliedFormat":1},{"version":"2ddab5b6932f9a6327f71baeb82a1d6b0824e0d23a4c7a5de5d355857113c22f","impliedFormat":1},{"version":"70f3f8b2dcaf7388f26731a59c79437813e3620b594903525a303cb2a7901016","impliedFormat":1},{"version":"62e8f884c3bc6dff6189b6e662ebe8b238a645938f2df7a97b8a82fca56773a4","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"57a0d1b3d59063d4af2d3f8aac27cfe3c20a0f5d1faf0f8598ccf0b779637939","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"97234c5303866576f913d0ccae7d58d6322d9e803c7bf1228a3fda46ab8087b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"93ecf87143cac7b9d05cffc1d6bdc075b7e4fdd48ff05f1fad85043f6ae678d3","impliedFormat":1},{"version":"6f200afcb82b3e9a54bed6db23f2edf2508cd266801257312c0f124b47f2bdb9","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"39338f84e8c4d0e3de7b3c4a7024fb3925f42100eed5cbe73be58902799dff4d","impliedFormat":1},{"version":"fbf83eb33bf5e329527add92acc65da59323876c702ddccf5f4bf1e848c92369","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"515318bc6e656f75e9e34db625316bfafbafd800dfb1642574af93735a24ad38","impliedFormat":1},{"version":"441b9bb09013654aa3d050e68b06464d8959b473e85868249d9d18f692acd35b","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"55246f15e33ff1e2e9e679b25fa9790a48db55dc63d567fe25fac8b6a0efe911","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"03b7804d69cecd66850abada858ed6d4a59001f8c228a9fe212306ee860a4ff6","impliedFormat":1},{"version":"5b26c4dd672d88336bb929787c9bfb55119e80ba89ec6dc923da1c063892843e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"987fd1f85dc36f4b2c927aa3db814ac6b452e970f4f55d24ed4ecbb7df09be00","impliedFormat":1},{"version":"f12624a4a8d042b68914eac1b0a16571fc1c523173fcdf2517c65d191bd5a86c","impliedFormat":1},{"version":"b4769767f13a1692a66186e01c3aa186ff808d5ff72ed36eda8c37738fb2ac92","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"683edfc4f2b411ebe04729cb6dc09ddd26fbac2c57771a6d7c55964af776e176","impliedFormat":1},{"version":"1ec3f3a5f04cc42df33274fbe5c0937d9a9e06f249a7a26288d7d54f0763ffd4","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"e47f532d6e1617833f13a5b0710c0089d402c89c2f2b54f324e5a20e418d287a","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"201db9cf1687fab1adf5282fcba861f382b32303dc4f67c89d59655e78a25461","impliedFormat":1},{"version":"8e2577e7262051fd3c5bd6ca2b2056d358ff8853565720f92455860824c25188","impliedFormat":1},{"version":"7ec8d7d483f7394f9da611b10d3a0e402f76ff5c991261e6ce43a15f81ca4258","impliedFormat":1},{"version":"bb9dbb4b2ad81e3e71ec5ba4314973718555b9d04ba2a17dfbf875efecb8e2c0","impliedFormat":1},{"version":"82c3cc48c692438e41b94d936b8acd75ca97b18c50fa1af8a0715eb9d07d18cd","impliedFormat":1},{"version":"045a210189ec63c5488410b33f9fca53d77d051599d0d6506d8048551399c5f3","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"632c45ccb4cdc2c3a80c7a36a63dd7763016e59cac5e07bfb3e37e3548957028","impliedFormat":1},{"version":"c9a2daf6cd1eb854cd5b9e424247c5e306692055738c2effd35f7871d942b76e","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"e50a7130339a951e6da9e968ed5521b0997a5b0479e148914087213839b5474c","impliedFormat":1},{"version":"990db7c9743d636fd3b2820ec8c40b512879da4c82e00488e7a352e2d005fc39","impliedFormat":1},{"version":"f091ed534c92e6408336f94323ecfe1890c0b5e0166154120712ed97ac9754a1","impliedFormat":1},{"version":"a6005262ef9ae5d7325a381df594d6b35babfb6df4a89c4febd06e6101d05bc1","impliedFormat":99},{"version":"192f6fe16a3d6007464fef483a7a54256e97362c500dab7a42b2e665b53f3a58","impliedFormat":99},{"version":"19426460ff98d38db8946aaae2086ba739c2f29c53136d27c434c0668e8f2c29","impliedFormat":99},{"version":"c3f2fea230a9ba6f17e5c9bfff973068e2a74dde8bc13da9f2573a463eee0924","signature":"c0a87a9c12487c0c0fb8e824a6199df6bf6a56ebcf7bac61aeb6053b5236472d","impliedFormat":99},{"version":"f221259cb40d9534c3786206f9b401ca8a9faecd242d57554358edb8491dc4bd","signature":"1c2ebda88906d5478d9aa470ffc5397eef607a3849ee11fca25203049b0b8263","impliedFormat":99},{"version":"1d193e4dd6687b3c41cf50bad4f159fe9ccff4c37c7791814b2608ce8a80fb20","signature":"8368b9bf33e02585e5c5daa7fe3ca112f8a8162110b5a2a5babc435fac043cf2","impliedFormat":99},{"version":"b43dec0b3b58191bd41fc5f3fccfa8c41571e51424e28d4b09f9d53f67f7c97b","signature":"9b1a03e8fd8c42a64c8c455a455a0f00d4b7f19cd5a3b4a7415ea7585eef994f","impliedFormat":99},{"version":"b9d10d82f4b236cb5eae87db218bd4cd538e5f0f3b30f72fb3d1a6c71b877a6b","signature":"8368b9bf33e02585e5c5daa7fe3ca112f8a8162110b5a2a5babc435fac043cf2","impliedFormat":99},{"version":"f65327e250d4fbac1ad1b516c28c5ec07e112cde36839a71ff88712c0bf67a9e","impliedFormat":99},{"version":"aa78957f3cff6c5a1911af33876bb677ab86060e6c692aaeb74573e9c39ba2ce","impliedFormat":99},{"version":"96a919e67539406ae8ed1613e9e330d2350a025c23c5da5024a6006c675e3c1d","signature":"fa489d07e99aee07b6d441d27cf646b504b82073566745fa6273e8bfe7d56a12","impliedFormat":99},{"version":"3db3e798cb684135042adbeb84916d32b67cf61cd43c7fca045a9ea0410be082","signature":"cfa7ea3bb4a570720f8cc0604d804fd815fbcf1ca4bf41d70cdc212d8d25c261","impliedFormat":99},{"version":"8d52e2167a67f002f118ff37568b4b8c1250e4187d5852372b0e17202124ff6e","signature":"b9c57e42575b20a8518436afb069e2e09e9ce1bb4c912c1d62252e1ced4a666e","impliedFormat":99},{"version":"dd37806325ef4ccda5f2f594f5304d01b2400b89b12d70a60dd3504f694a1e0f","signature":"d9fc061449e1851de93bf7dab56ae04d4bd37ca6fb072a4446f09a9b51a8da25","impliedFormat":99},{"version":"3691ffd6fd7de9f7f0000f42ef73c7d030bbda5c53dded43b71ffc83a43baa57","signature":"8368b9bf33e02585e5c5daa7fe3ca112f8a8162110b5a2a5babc435fac043cf2","impliedFormat":99},{"version":"0a66123deb7fa701b43629aae2b4ef15c89b0e6990ad12add57395160bf440d2","signature":"77e614306fbfd32534c6083fdbd64a2a74fdea4182fb536338ad77a32c59b9f1","impliedFormat":99},{"version":"10279f5575ad7d921153de7acf6a84bbc02a97225d6cd20f03fb9014f6b089d2","signature":"9033a7dc3ef8cee3826c91dbc81de58fb4cc7d4458767aef98f21b83917f2faf","impliedFormat":99},{"version":"68b2a348596ccc960a305d6c6977e1d21fa9559fe7e5a41fb824df2ada75f41e","signature":"13bad4db739b0a763c0d253e8682b7a8ab367fb0765b50a8773ea894c324b5bf","impliedFormat":99},{"version":"2d89b4ef43e1fc3974e054aa36e7594bc94e0b764425edc260bde365a55573b5","signature":"ae143a6eba04565a97e99ce1d78bfcf03d608ed84fb131721ed3992f6d9b96b6","impliedFormat":99},{"version":"dc9e00e9de63cd76411f4281560b7ef1a5c2104eaa0d429dee208170049f2e30","signature":"8368b9bf33e02585e5c5daa7fe3ca112f8a8162110b5a2a5babc435fac043cf2","impliedFormat":99},{"version":"87adb850d13aad0304ea0e869a1ae1beb2fc6e0bfe357e20d9b3c4c6211eeaaf","signature":"6f09a96dc3e22896e81b8aac5d9fcba174ce37f17846aa41ac744caf8e8df55b","impliedFormat":99},{"version":"307690fcd4306bc8a4359e0280d345922441559611e909d36338e8b71a8e6f65","signature":"8368b9bf33e02585e5c5daa7fe3ca112f8a8162110b5a2a5babc435fac043cf2","impliedFormat":99},{"version":"b01c98cdb332e03d0eb1849a053dcb7a62291b23ba64c7891d0e5b24b4935276","signature":"c30268fc6596993001e74efdedbfc2d0951bc11ea266574f9503f36f379f7f70","impliedFormat":99},{"version":"b74466e6c02a42dad5bd54e656273e610f10fbd311c00ee612035be1bae522c1","signature":"8368b9bf33e02585e5c5daa7fe3ca112f8a8162110b5a2a5babc435fac043cf2","impliedFormat":99},{"version":"0c2fad8b1c31605919dfd8938adc098e09923518e53a8dc17dded4295089ccc2","signature":"8a898abceecc4f34c364e981c09bbe1ae5a5d7a8b75e06deb4ffb4cd715c7964","impliedFormat":99},{"version":"d6c63174dffaae708c95a5bb0d580e3b7bc5a24105ef0745dacf4e35339fc41c","signature":"0e27b8e8324ee44ab1b0c987955e29b86255cd1cb59796062aa1e5208bf75154","impliedFormat":99},{"version":"be61598a8672d7b05c6db980f1f1f4019ee3684366d176f1b27d8a787a874d23","signature":"8bbc60a716df66a09e21b2deeb3313bf82445dbbd72cb24e84c36acd870b917e","impliedFormat":99},{"version":"f965f2c52114f8fd01fdbb7ba04c0bc8f03f4696baa0ecb946baceaaba4c5389","signature":"1cc8209d373cd85d1c0e0f04e4f40d366f44c0453c70ef7d219b3d89cffa1788","impliedFormat":99},{"version":"d3c472331722de2ee7695cc1ba8b8925521170dd375f19289e557b681744b3a6","signature":"8368b9bf33e02585e5c5daa7fe3ca112f8a8162110b5a2a5babc435fac043cf2","impliedFormat":99},{"version":"e47e519a11876067edf0d8ee2ec270554713dcde63e52135cd0a9a9760048ef6","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":99}],"root":[89,[221,225],[228,247]],"options":{"composite":true,"esModuleInterop":true,"module":199,"outDir":"./","rootDir":"../src","skipLibCheck":true,"target":12,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[217,1],[216,2],[153,3],[154,3],[155,4],[91,5],[156,6],[157,7],[158,8],[159,9],[160,10],[161,11],[162,12],[163,13],[164,14],[165,14],[166,15],[167,16],[168,2],[169,17],[170,18],[92,2],[90,2],[171,19],[172,20],[173,21],[215,22],[174,23],[175,24],[176,23],[177,25],[178,26],[179,27],[180,28],[181,28],[182,28],[183,29],[184,30],[185,31],[186,32],[187,33],[188,34],[189,34],[190,35],[191,2],[192,2],[193,36],[194,37],[195,38],[196,39],[197,40],[198,41],[199,42],[200,43],[201,44],[202,45],[203,46],[204,47],[205,48],[206,49],[207,50],[208,51],[209,52],[210,53],[211,54],[93,23],[94,2],[95,55],[96,56],[97,2],[98,57],[99,2],[144,58],[145,59],[146,60],[147,60],[148,61],[149,2],[150,6],[151,62],[152,59],[212,63],[213,64],[214,65],[218,2],[78,2],[79,2],[14,2],[13,2],[2,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[3,2],[23,2],[24,2],[4,2],[25,2],[29,2],[26,2],[27,2],[28,2],[30,2],[31,2],[32,2],[5,2],[33,2],[34,2],[35,2],[36,2],[6,2],[40,2],[37,2],[38,2],[39,2],[41,2],[7,2],[42,2],[47,2],[48,2],[43,2],[44,2],[45,2],[46,2],[8,2],[52,2],[49,2],[50,2],[51,2],[53,2],[9,2],[54,2],[55,2],[56,2],[58,2],[57,2],[59,2],[60,2],[10,2],[61,2],[62,2],[63,2],[11,2],[64,2],[65,2],[66,2],[67,2],[68,2],[69,2],[12,2],[70,2],[71,2],[72,2],[73,2],[74,2],[1,2],[75,2],[76,2],[77,2],[118,66],[132,67],[115,68],[133,69],[142,70],[106,71],[107,72],[105,73],[141,74],[136,75],[140,76],[109,77],[119,78],[129,79],[108,80],[139,81],[103,82],[104,75],[110,78],[111,2],[117,83],[114,78],[101,84],[143,85],[134,86],[122,87],[121,78],[123,88],[126,89],[120,90],[124,91],[137,74],[112,92],[113,93],[127,94],[102,69],[131,95],[130,78],[116,93],[125,96],[128,97],[135,2],[100,2],[138,98],[247,99],[244,100],[246,101],[245,100],[242,102],[243,103],[224,104],[225,105],[222,106],[223,107],[221,2],[234,108],[235,104],[233,109],[236,110],[237,111],[231,112],[232,113],[230,2],[228,2],[229,2],[238,104],[239,114],[240,104],[241,115],[89,104],[83,116],[84,116],[87,117],[85,2],[86,118],[88,119],[81,2],[82,120],[219,2],[227,2],[226,116],[220,2],[80,2]],"latestChangedDtsFile":"./commands/host/import-key.d.ts","version":"6.0.3"}
package/dist/bin/saws.js CHANGED
@@ -1,42 +1,49 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
2
  process.on("uncaughtException", (e) => {
8
3
  console.log(e);
9
4
  });
10
- const find_package_json_1 = __importDefault(require("find-package-json"));
11
- const commander_1 = require("commander");
12
- const core_1 = require("@saws/core");
13
- const dev_1 = require("../src/commands/dev");
14
- const deploy_1 = require("../src/commands/deploy");
15
- const execute_1 = require("../src/commands/execute");
16
- const init_1 = require("../src/commands/init");
17
- const pkg = (0, find_package_json_1.default)(__dirname).next().value;
18
- commander_1.program
5
+ import { default as finder } from "find-package-json";
6
+ import { program } from "commander";
7
+ import { getSawsConfig } from "@saws/core";
8
+ import { createCommand as createDevCommand } from "../commands/dev/index.js";
9
+ import { createCommand as createDeployCommand } from "../commands/deploy/index.js";
10
+ // import { createCommand as createExecuteCommand } from "../commands/execute/index.js";
11
+ import { createCommand as createInitCommand } from "../commands/init/index.js";
12
+ import { createCommand as createHostCommand } from "../commands/host/index.js";
13
+ import { createCommand as createLogsCommand } from "../commands/logs/index.js";
14
+ import { createCommand as createSecretsCommand } from "../commands/secrets/index.js";
15
+ import { createCommand as createAppCommand } from "../commands/app/index.js";
16
+ const pkg = finder(import.meta.dirname).next().value;
17
+ program
19
18
  .name("saws")
20
19
  .description("A tool for building apps quickly")
21
- .version(pkg?.version);
22
- commander_1.program.addCommand((0, dev_1.createCommand)());
23
- commander_1.program.addCommand((0, deploy_1.createCommand)());
24
- commander_1.program.addCommand((0, execute_1.createCommand)());
25
- commander_1.program.addCommand((0, init_1.createCommand)());
26
- (async () => {
20
+ .version(pkg?.version ?? "0.0.0");
21
+ program.addCommand(createDevCommand());
22
+ program.addCommand(createDeployCommand());
23
+ // program.addCommand(createExecuteCommand());
24
+ program.addCommand(createInitCommand());
25
+ program.addCommand(createHostCommand());
26
+ program.addCommand(createLogsCommand());
27
+ program.addCommand(createSecretsCommand());
28
+ program.addCommand(createAppCommand());
29
+ const isInitCommand = process.argv[2] === "init";
30
+ if (!isInitCommand) {
27
31
  try {
28
- const service = await (0, core_1.getSawsConfig)();
29
- const allServices = [...new Set(service.getAllDependencies().map(service => service.constructor))];
30
- for (const serviceClass of allServices) {
31
- // @ts-expect-error Not all classes will define a getCommands static method
32
- serviceClass.getCommands?.()?.forEach(command => commander_1.program.addCommand(command));
32
+ const service = await getSawsConfig();
33
+ const servicesByClass = new Map();
34
+ for (const serviceDefinition of service.getAllDependencies()) {
35
+ const serviceClass = serviceDefinition.constructor;
36
+ servicesByClass.set(serviceClass, [
37
+ ...(servicesByClass.get(serviceClass) ?? []),
38
+ serviceDefinition,
39
+ ]);
40
+ }
41
+ for (const [serviceClass, services] of servicesByClass) {
42
+ serviceClass.getCommands?.(services)?.forEach((command) => program.addCommand(command));
33
43
  }
34
44
  }
35
- catch (_err) {
36
- // It's possible for there not to be a saws.js file yet and thus this will fail
37
- }
38
- finally {
39
- commander_1.program.parse(process.argv);
45
+ catch {
46
+ // Project commands are unavailable until a saws.ts file exists.
40
47
  }
41
- })();
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F3cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2Jpbi9zYXdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyxDQUFDO0FBRUgsMEVBQXNEO0FBQ3RELHlDQUFvQztBQUNwQyxxQ0FBMkM7QUFFM0MsNkNBQXdFO0FBQ3hFLG1EQUE4RTtBQUM5RSxxREFBZ0Y7QUFDaEYsK0NBQTBFO0FBRTFFLE1BQU0sR0FBRyxHQUFHLElBQUEsMkJBQU0sRUFBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUM7QUFFM0MsbUJBQU87S0FDSixJQUFJLENBQUMsTUFBTSxDQUFDO0tBQ1osV0FBVyxDQUFDLGtDQUFrQyxDQUFDO0tBQy9DLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBUSxDQUFDLENBQUM7QUFFMUIsbUJBQU8sQ0FBQyxVQUFVLENBQUMsSUFBQSxtQkFBZ0IsR0FBRSxDQUFDLENBQUM7QUFDdkMsbUJBQU8sQ0FBQyxVQUFVLENBQUMsSUFBQSxzQkFBbUIsR0FBRSxDQUFDLENBQUM7QUFDMUMsbUJBQU8sQ0FBQyxVQUFVLENBQUMsSUFBQSx1QkFBb0IsR0FBRSxDQUFDLENBQUM7QUFDM0MsbUJBQU8sQ0FBQyxVQUFVLENBQUMsSUFBQSxvQkFBaUIsR0FBRSxDQUFDLENBQUM7QUFFeEMsQ0FBQyxLQUFLLElBQUksRUFBRTtJQUNWLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSxvQkFBYSxHQUFFLENBQUE7UUFFckMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFbEcsS0FBSyxNQUFNLFlBQVksSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUN2QywyRUFBMkU7WUFDM0UsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUMvRSxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDZCwrRUFBK0U7SUFDakYsQ0FBQztZQUFTLENBQUM7UUFDVCxtQkFBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztBQUNILENBQUMsQ0FBQyxFQUFFLENBQUEifQ==
48
+ }
49
+ await program.parseAsync(process.argv);
@@ -0,0 +1,4 @@
1
+ export interface DeployAppOptions {
2
+ stage: string;
3
+ }
4
+ export declare function deployAppCommand(name: string, options: DeployAppOptions): Promise<void>;
@@ -0,0 +1,20 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { getAppDirectory } from "./paths.js";
4
+ import { runSaws } from "./process.js";
5
+ export async function deployAppCommand(name, options) {
6
+ if (options.stage == null || options.stage.length === 0) {
7
+ throw new Error("app deploy requires --stage <string>");
8
+ }
9
+ if (options.stage === "local") {
10
+ throw new Error("Can not deploy an application to the local stage");
11
+ }
12
+ const appDirectory = getAppDirectory(name);
13
+ try {
14
+ await fs.access(path.join(appDirectory, "saws.ts"));
15
+ }
16
+ catch {
17
+ throw new Error(`Application "${name}" is not installed`);
18
+ }
19
+ await runSaws(["deploy", "--stage", options.stage], appDirectory);
20
+ }
@@ -0,0 +1,16 @@
1
+ import { Command } from "commander";
2
+ import { deployAppCommand } from "./deploy.js";
3
+ import { installAppCommand } from "./install.js";
4
+ export const createCommand = () => new Command("app")
5
+ .description("install and deploy packaged SAWS applications")
6
+ .addCommand(new Command("install")
7
+ .description("install a packaged SAWS application")
8
+ .argument("<package>", "npm package name with an optional version or tag")
9
+ .requiredOption("--name <name>", "local name for this application instance")
10
+ .requiredOption("--config <path>", "TypeScript module containing the factory input")
11
+ .action(installAppCommand))
12
+ .addCommand(new Command("deploy")
13
+ .description("deploy an installed SAWS application")
14
+ .argument("<name>", "installed application name")
15
+ .requiredOption("--stage <stage>", "stage to deploy")
16
+ .action(deployAppCommand));
@@ -0,0 +1,5 @@
1
+ export interface InstallAppOptions {
2
+ name: string;
3
+ config: string;
4
+ }
5
+ export declare function installAppCommand(packageSpecifier: string, options: InstallAppOptions): Promise<void>;
@@ -0,0 +1,41 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { getAppDirectory } from "./paths.js";
4
+ import { runProcess } from "./process.js";
5
+ export async function installAppCommand(packageSpecifier, options) {
6
+ const packageName = getPackageName(packageSpecifier);
7
+ const appDirectory = getAppDirectory(options.name);
8
+ const inputPath = path.resolve(options.config);
9
+ const installedInputPath = path.join(appDirectory, "input.ts");
10
+ await fs.mkdir(appDirectory, { recursive: true });
11
+ if (inputPath !== installedInputPath) {
12
+ await fs.copyFile(inputPath, installedInputPath);
13
+ }
14
+ await fs.writeFile(path.join(appDirectory, "package.json"), `${JSON.stringify({
15
+ name: "saws-installed-application",
16
+ private: true,
17
+ type: "module",
18
+ }, null, 2)}\n`);
19
+ await fs.writeFile(path.join(appDirectory, "saws.ts"), applicationWrapper(packageName));
20
+ await runProcess("npm", ["install", "--save-exact", "--no-fund", "--no-audit", packageSpecifier], appDirectory);
21
+ console.log(`Installed ${packageSpecifier} as application "${options.name}"`);
22
+ }
23
+ function getPackageName(specifier) {
24
+ const trimmed = specifier.trim();
25
+ const match = /^(?<name>@[^/\s]+\/[^@/\s]+|[^@/\s]+)(?:@[^\s]+)?$/.exec(trimmed);
26
+ const name = match?.groups?.name;
27
+ if (name == null) {
28
+ throw new Error("Application package must be an npm package name with an optional version or tag");
29
+ }
30
+ return name;
31
+ }
32
+ function applicationWrapper(packageName) {
33
+ return `import { createSawsConfig } from "@saws/core";
34
+ import input from "./input.ts";
35
+ import * as application from ${JSON.stringify(packageName)};
36
+
37
+ export * from "./input.ts";
38
+
39
+ export default await createSawsConfig(application, input);
40
+ `;
41
+ }
@@ -0,0 +1 @@
1
+ export declare function getAppDirectory(name: string): string;
@@ -0,0 +1,8 @@
1
+ import path from "node:path";
2
+ import { getSawsHome } from "@saws/core";
3
+ export function getAppDirectory(name) {
4
+ if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(name)) {
5
+ throw new Error("Application name must start with a letter or number and contain only letters, numbers, dots, underscores, or hyphens");
6
+ }
7
+ return path.join(getSawsHome(), "apps", name);
8
+ }
@@ -0,0 +1,2 @@
1
+ export declare function runProcess(command: string, args: string[], cwd: string): Promise<void>;
2
+ export declare function runSaws(args: string[], cwd: string): Promise<void>;
@@ -0,0 +1,28 @@
1
+ import { spawn } from "node:child_process";
2
+ export async function runProcess(command, args, cwd) {
3
+ await new Promise((resolve, reject) => {
4
+ const child = spawn(command, args, {
5
+ cwd,
6
+ stdio: "inherit",
7
+ });
8
+ child.once("error", reject);
9
+ child.once("exit", (code, signal) => {
10
+ if (signal != null) {
11
+ reject(new Error(`${command} exited from signal ${signal}`));
12
+ return;
13
+ }
14
+ if (code !== 0) {
15
+ reject(new Error(`${command} exited with code ${code ?? "unknown"}`));
16
+ return;
17
+ }
18
+ resolve();
19
+ });
20
+ });
21
+ }
22
+ export async function runSaws(args, cwd) {
23
+ const cliPath = process.argv[1];
24
+ if (cliPath == null) {
25
+ throw new Error("Could not determine the SAWS CLI entry point");
26
+ }
27
+ await runProcess(process.execPath, [cliPath, ...args], cwd);
28
+ }
@@ -0,0 +1,15 @@
1
+ // import { createCacheDir } from "@saws/utils/create-directories";
2
+ import { getSawsConfig } from "@saws/core";
3
+ export const deployCommand = async (path, { stage }) => {
4
+ if (stage == null || stage.length === 0) {
5
+ throw new Error("deploy requires --stage <string>");
6
+ }
7
+ if (stage === "local") {
8
+ console.warn("Can not deploy to local stage");
9
+ process.exit();
10
+ }
11
+ process.env.STAGE = stage;
12
+ // await createCacheDir();
13
+ const serviceDefinition = await getSawsConfig(path);
14
+ await serviceDefinition.deploy(stage);
15
+ };
@@ -0,0 +1,6 @@
1
+ import { Command } from "commander";
2
+ import { deployCommand } from "./command.js";
3
+ export const createCommand = () => new Command("deploy")
4
+ .option("--stage <string>", "stage to deploy")
5
+ .argument("[string]", "path to service definition")
6
+ .action(deployCommand);
@@ -0,0 +1,61 @@
1
+ import { createCacheDir } from "@saws/core/utils/create-directories";
2
+ import { onProcessExit } from "@saws/core/utils/on-exit";
3
+ import { getSawsConfig } from "@saws/core";
4
+ import { DevTui } from "./tui/dev-tui.js";
5
+ export const devCommand = async (path) => {
6
+ process.env.NODE_ENV = "development";
7
+ process.env.STAGE = "local";
8
+ process.env.AWS_REGION = "us-west-2";
9
+ await createCacheDir();
10
+ const serviceDefinition = await getSawsConfig(path);
11
+ const services = collectServices(serviceDefinition);
12
+ const useTui = process.stdout.isTTY && process.stdin.isTTY;
13
+ const tui = new DevTui(services.flatMap((service) => [service.name, ...service.getOnDevLogTabs()]));
14
+ const shutdown = () => {
15
+ try {
16
+ serviceDefinition.exit();
17
+ }
18
+ finally {
19
+ tui.stop();
20
+ }
21
+ };
22
+ onProcessExit(shutdown);
23
+ process.once("SIGTERM", () => {
24
+ shutdown();
25
+ process.exit();
26
+ });
27
+ if (useTui) {
28
+ serviceDefinition.setRuntimeLogSink(tui.logSink);
29
+ tui.start();
30
+ }
31
+ await serviceDefinition.dev();
32
+ if (useTui) {
33
+ for (const service of services) {
34
+ service.getStdOut()?.on("data", (chunk) => {
35
+ tui.logSink({
36
+ serviceName: service.name,
37
+ stream: "stdout",
38
+ chunk: chunk.toString("utf8"),
39
+ timestamp: new Date(),
40
+ });
41
+ });
42
+ service.getStdErr()?.on("data", (chunk) => {
43
+ tui.logSink({
44
+ serviceName: service.name,
45
+ stream: "stderr",
46
+ chunk: chunk.toString("utf8"),
47
+ timestamp: new Date(),
48
+ });
49
+ });
50
+ }
51
+ }
52
+ else {
53
+ for (const service of services) {
54
+ service.getStdOut()?.pipe(process.stdout);
55
+ service.getStdErr()?.pipe(process.stderr);
56
+ }
57
+ }
58
+ };
59
+ function collectServices(root) {
60
+ return [...new Set(root.getAllDependencies())];
61
+ }
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ import { devCommand } from "./command.js";
3
+ export const createCommand = () => new Command("dev").argument("[string]", "path to service definition").action(devCommand);