@saws/cli 2.0.0-beta.16 → 2.0.0-beta.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,6 +10,7 @@ CLI for interacting with your SAWS application.
10
10
 
11
11
  - [Installation](#installation)
12
12
  - [Commands](#commands)
13
+ - [Deployment guide](./docs/global-hosts-and-applications.md)
13
14
 
14
15
  ## Installation <a id='installation'>
15
16
 
@@ -58,6 +59,9 @@ This command will deploy all the services in your `saws.js` file to AWS. You wil
58
59
 
59
60
  ### Packaged applications
60
61
 
62
+ See [Global hosts and packaged applications](./docs/global-hosts-and-applications.md) for the full
63
+ machine bootstrap, application configuration, secrets, deployment, and troubleshooting workflow.
64
+
61
65
  A package can expose a reusable SAWS application by exporting a `create` factory:
62
66
 
63
67
  ```ts
@@ -71,9 +75,9 @@ export function create({ host }: { host: Host }) {
71
75
  }
72
76
  ```
73
77
 
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:
78
+ The installer creates a type-checked `config.ts` module with a default export. Named exports are
79
+ re-exported from the installed application's generated `saws.ts`. A packaged application can
80
+ therefore use the same global hosts as project configurations:
77
81
 
78
82
  ```ts
79
83
  import { getGlobalHost } from "@saws/core";
@@ -86,14 +90,23 @@ export default { host };
86
90
  Install and deploy a named instance:
87
91
 
88
92
  ```bash
89
- npx saws app install @example/signoz --name observability --config ./signoz.config.ts
93
+ npx saws app install @example/signoz --name observability
94
+ # Edit ~/.saws/apps/observability/config.ts, then deploy it.
90
95
  npx saws app deploy observability --stage production
91
96
  ```
92
97
 
93
98
  Installed packages, configuration, dependencies, secrets, outputs, and other SAWS
94
99
  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.
100
+ directory, such as in CI. `app install` refuses to replace an existing instance. Use
101
+ `saws app update <name>` to install a newer npm `latest` version without overwriting
102
+ `config.ts`. The first update of a legacy instance renames its `input.ts` to `config.ts`.
103
+ Run standard commands that operate on named exports from the application instance directory.
104
+
105
+ List every installed instance with its package, version, and configuration state:
106
+
107
+ ```bash
108
+ npx saws app list
109
+ ```
97
110
 
98
111
  ### `logs`
99
112
 
@@ -107,6 +120,9 @@ service name to tail only one service. The `local` stage is a no-op.
107
120
 
108
121
  ### `host configure`
109
122
 
123
+ See [Global hosts and packaged applications](./docs/global-hosts-and-applications.md) for the full
124
+ global-host setup and security model.
125
+
110
126
  Hosts that are shared by multiple projects can be stored in the global SAWS home:
111
127
 
112
128
  ```bash
package/dist/.tsbuildinfo CHANGED
@@ -1 +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],[81,85,91,156,164,169,172,174,175,176,188],[80,81,91,156,164,169,172,174,175,176,188,193],[82,91,156,164,169,172,174,175,176,188],[81,86,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]],"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],[86,116],[82,117],[83,118],[84,118],[87,119],[85,2],[88,120],[81,2],[219,2],[227,2],[226,118],[220,2],[80,2]],"latestChangedDtsFile":"./bin/saws.d.ts","version":"6.0.3"}
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/files.ts","../src/commands/app/install.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/truncate.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../src/commands/app/metadata.ts","../src/commands/app/list.ts","../src/commands/app/update.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,156,164,169,172,174,175,176,188,248,287],[91,156,164,169,172,174,175,176,188,248,272,287],[91,156,164,169,172,174,175,176,188,247,287],[91,156,164,169,172,174,175,176,188,287],[91,156,164,169,172,174,175,176,188,248],[91,156,164,169,172,174,175,176,188,248,273,287],[91,156,164,169,172,174,175,176,188,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286],[91,156,164,169,172,174,175,176,188,273,287],[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,291],[91,156,164,169,170,172,174,175,176,180,188,242,243],[91,156,164,169,170,172,174,175,176,188],[91,156,164,169,172,174,175,176,188,218,244,246,289,290],[91,156,164,169,170,172,174,175,176,180,188,242,243,245],[91,156,164,169,170,172,174,175,176,180,188,242,245,288],[91,156,164,169,170,172,174,175,176,180,188,287],[88,91,156,164,169,172,174,175,176,180,188],[91,156,157,164,169,172,174,175,176,188],[91,156,164,169,170,172,174,175,176,180,188,242,243,245,287,288],[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],[81,85,91,156,164,169,172,174,175,176,188],[80,81,91,156,164,169,172,174,175,176,188,193],[82,91,156,164,169,172,174,175,176,188],[81,86,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]],"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":"f00f1c3b60afed2d20de661bb99078d3db78961371ebbde6894d1c69ad644d1d","signature":"b05cb745ef6e2e422dbddd6e3ab154e95b7c1c9e97c2b6123bd768e3cb8ccd3f","impliedFormat":99},{"version":"ed0a3014110e7a0730eea206d7e74418b5ed49701564b7c8dc8f62eeb7111cc6","signature":"0dbc43dc8ab196259d8a164d57ffbb5da4a03aeda996c0bd439b90a43db36760","impliedFormat":99},{"version":"be61598a8672d7b05c6db980f1f1f4019ee3684366d176f1b27d8a787a874d23","signature":"8bbc60a716df66a09e21b2deeb3313bf82445dbbd72cb24e84c36acd870b917e","impliedFormat":99},{"version":"83e6bc4196a5741297f8781184ffcd29282ec6b9d7335a52b9953279acaabfd1","signature":"da1dd9895e0a109938a2c93b4273953bce45614d83bfe5247b210f0ff4816717","impliedFormat":99},{"version":"0e8e4094d8e7925a778b1ace49c543660e2cdfb206b359a93836b1902e204738","signature":"cfb34c88e6087db8db214e3834c01f84dddcc521fed7137635f369493a2ea99a","impliedFormat":99},{"version":"ce6a3f09b8db73a7e9701aca91a04b4fabaf77436dd35b24482f9ee816016b17","impliedFormat":1},{"version":"20e086e5b64fdd52396de67761cc0e94693494deadb731264aac122adf08de3f","impliedFormat":1},{"version":"6e78f75403b3ec65efb41c70d392aeda94360f11cedc9fb2c039c9ea23b30962","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"eefd2bbc8edb14c3bd1246794e5c070a80f9b8f3730bd42efb80df3cc50b9039","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"7a595666345c91486b6a2060a24829a127a0d59b94e25e4eaa9eeb20bf1b5958","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"cb7afa5d066d27a35dd555f6bca20feecdb4edcb3329905fa70464b0da024067","impliedFormat":1},{"version":"9c3feb2aa5f670de0ee631d7178b05e7a50264e7df6260aacbd71d9fa6b252c4","signature":"b7791cef23b34a190ddb94e52bd6e342ab01baf46fde80d17dbcf79f67162392","impliedFormat":99},{"version":"70825006da59bc62b9920ea39f2244fe58893b27c95434ebb7ba72c3a7076684","signature":"c367a9c8f4347e526c56ecad7637b377f2b0e8e1d45a67305a44fc3b41f0d700","impliedFormat":99},{"version":"93bd9d355a8493acd02d8406f3894c7f1a520f5a9443f6b950bf7aa3417a3a97","signature":"490cf75c7d3c31b823354d2d802a5b10444f426012211e4214bc15ed6bcad081","impliedFormat":99},{"version":"2f4393268adcd79327b8f04a9bafa3dcf0dc38b0bcca824f16cb4fb92f5d534e","signature":"8368b9bf33e02585e5c5daa7fe3ca112f8a8162110b5a2a5babc435fac043cf2","impliedFormat":99},{"version":"e47e519a11876067edf0d8ee2ec270554713dcde63e52135cd0a9a9760048ef6","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":99}],"root":[89,[221,225],[228,246],[288,292]],"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],[272,66],[273,67],[248,68],[251,69],[270,66],[271,66],[260,66],[259,70],[257,66],[252,66],[266,66],[264,66],[268,66],[247,66],[265,66],[269,66],[253,66],[254,66],[267,66],[249,66],[255,66],[256,66],[258,66],[262,66],[274,71],[261,66],[263,66],[250,66],[287,72],[286,2],[281,71],[283,73],[282,71],[275,71],[276,71],[278,71],[280,71],[284,73],[285,73],[277,73],[279,73],[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,74],[132,75],[115,76],[133,77],[142,78],[106,79],[107,80],[105,81],[141,82],[136,83],[140,84],[109,85],[119,86],[129,87],[108,88],[139,89],[103,90],[104,83],[110,86],[111,2],[117,91],[114,86],[101,92],[143,93],[134,94],[122,95],[121,86],[123,96],[126,97],[120,98],[124,99],[137,82],[112,100],[113,101],[127,102],[102,77],[131,103],[130,86],[116,101],[125,104],[128,105],[135,2],[100,2],[138,106],[292,107],[244,108],[245,109],[291,110],[246,111],[289,112],[288,113],[242,114],[243,115],[290,116],[224,117],[225,118],[222,119],[223,120],[221,2],[234,121],[235,117],[233,122],[236,123],[237,124],[231,125],[232,126],[230,2],[228,2],[229,2],[238,117],[239,127],[240,117],[241,128],[89,117],[86,129],[82,130],[83,131],[84,131],[87,132],[85,2],[88,133],[81,2],[219,2],[227,2],[226,131],[220,2],[80,2]],"latestChangedDtsFile":"./bin/saws.d.ts","version":"6.0.3"}
@@ -0,0 +1,4 @@
1
+ export declare function getPackageName(specifier: string): string;
2
+ export declare function applicationWrapper(packageName: string): string;
3
+ export declare function applicationConfig(packageName: string): string;
4
+ export declare function pathExists(filePath: string): Promise<boolean>;
@@ -0,0 +1,40 @@
1
+ export function getPackageName(specifier) {
2
+ const trimmed = specifier.trim();
3
+ const match = /^(?<name>@[^/\s]+\/[^@/\s]+|[^@/\s]+)(?:@[^\s]+)?$/.exec(trimmed);
4
+ const name = match?.groups?.name;
5
+ if (name == null) {
6
+ throw new Error("Application package must be an npm package name with an optional version or tag");
7
+ }
8
+ return name;
9
+ }
10
+ export function applicationWrapper(packageName) {
11
+ return `import { createSawsConfig } from "@saws/core";
12
+ import config from "./config.ts";
13
+ import * as application from ${JSON.stringify(packageName)};
14
+
15
+ export * from "./config.ts";
16
+
17
+ export default await createSawsConfig(application, config);
18
+ `;
19
+ }
20
+ export function applicationConfig(packageName) {
21
+ return `import type { create } from ${JSON.stringify(packageName)};
22
+
23
+ export default {
24
+ // Configure this application instance here.
25
+ } satisfies Parameters<typeof create>[0];
26
+ `;
27
+ }
28
+ export async function pathExists(filePath) {
29
+ try {
30
+ await fs.access(filePath);
31
+ return true;
32
+ }
33
+ catch (error) {
34
+ if (error.code === "ENOENT") {
35
+ return false;
36
+ }
37
+ throw error;
38
+ }
39
+ }
40
+ import fs from "node:fs/promises";
@@ -1,14 +1,20 @@
1
1
  import { Command } from "commander";
2
2
  import { deployAppCommand } from "./deploy.js";
3
3
  import { installAppCommand } from "./install.js";
4
+ import { listAppsCommand } from "./list.js";
5
+ import { updateAppCommand } from "./update.js";
4
6
  export const createCommand = () => new Command("app")
5
- .description("install and deploy packaged SAWS applications")
7
+ .description("manage packaged SAWS applications")
8
+ .addCommand(new Command("list").description("list installed SAWS applications").action(listAppsCommand))
6
9
  .addCommand(new Command("install")
7
10
  .description("install a packaged SAWS application")
8
11
  .argument("<package>", "npm package name with an optional version or tag")
9
12
  .requiredOption("--name <name>", "local name for this application instance")
10
- .requiredOption("--config <path>", "TypeScript module containing the factory input")
11
13
  .action(installAppCommand))
14
+ .addCommand(new Command("update")
15
+ .description("update an installed SAWS application to npm latest")
16
+ .argument("<name>", "installed application name")
17
+ .action(updateAppCommand))
12
18
  .addCommand(new Command("deploy")
13
19
  .description("deploy an installed SAWS application")
14
20
  .argument("<name>", "installed application name")
@@ -1,5 +1,4 @@
1
1
  export interface InstallAppOptions {
2
2
  name: string;
3
- config: string;
4
3
  }
5
4
  export declare function installAppCommand(packageSpecifier: string, options: InstallAppOptions): Promise<void>;
@@ -1,41 +1,35 @@
1
1
  import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
+ import { applicationConfig, applicationWrapper, getPackageName } from "./files.js";
3
4
  import { getAppDirectory } from "./paths.js";
4
5
  import { runProcess } from "./process.js";
5
6
  export async function installAppCommand(packageSpecifier, options) {
6
7
  const packageName = getPackageName(packageSpecifier);
7
8
  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);
9
+ await fs.mkdir(path.dirname(appDirectory), { recursive: true });
10
+ try {
11
+ await fs.mkdir(appDirectory);
13
12
  }
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");
13
+ catch (error) {
14
+ if (error.code === "EEXIST") {
15
+ throw new Error(`Application "${options.name}" is already installed`);
16
+ }
17
+ throw error;
29
18
  }
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
- `;
19
+ try {
20
+ await fs.writeFile(path.join(appDirectory, "package.json"), `${JSON.stringify({
21
+ name: "saws-installed-application",
22
+ private: true,
23
+ type: "module",
24
+ }, null, 2)}\n`);
25
+ await fs.writeFile(path.join(appDirectory, "config.ts"), applicationConfig(packageName));
26
+ await fs.writeFile(path.join(appDirectory, "saws.ts"), applicationWrapper(packageName));
27
+ await runProcess("npm", ["install", "--save-exact", "--no-fund", "--no-audit", packageSpecifier], appDirectory);
28
+ }
29
+ catch (error) {
30
+ await fs.rm(appDirectory, { recursive: true, force: true }).catch(() => undefined);
31
+ throw error;
32
+ }
33
+ console.log(`Installed ${packageSpecifier} as application "${options.name}"`);
34
+ console.log(`Configure it by editing ${path.join(appDirectory, "config.ts")}`);
41
35
  }
@@ -0,0 +1 @@
1
+ export declare function listAppsCommand(): Promise<void>;
@@ -0,0 +1,67 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { pathExists } from "./files.js";
4
+ import { getInstalledApplicationPackage, getInstalledVersion } from "./metadata.js";
5
+ import { getAppDirectory, getAppsDirectory } from "./paths.js";
6
+ export async function listAppsCommand() {
7
+ const names = await getApplicationNames();
8
+ if (names.length === 0) {
9
+ console.log("No applications installed");
10
+ return;
11
+ }
12
+ const rows = await Promise.all(names.map(getApplicationRow));
13
+ printTable(rows);
14
+ }
15
+ async function getApplicationNames() {
16
+ let entries;
17
+ try {
18
+ entries = await fs.readdir(getAppsDirectory(), { withFileTypes: true });
19
+ }
20
+ catch (error) {
21
+ if (error.code === "ENOENT") {
22
+ return [];
23
+ }
24
+ throw error;
25
+ }
26
+ return entries
27
+ .filter((entry) => entry.isDirectory())
28
+ .map((entry) => entry.name)
29
+ .sort((a, b) => a.localeCompare(b));
30
+ }
31
+ async function getApplicationRow(name) {
32
+ const appDirectory = getAppDirectory(name);
33
+ let packageName = "unknown";
34
+ let version = "unknown";
35
+ try {
36
+ packageName = await getInstalledApplicationPackage(appDirectory, name);
37
+ version = await getInstalledVersion(appDirectory, packageName);
38
+ }
39
+ catch {
40
+ // Keep malformed or incomplete application directories visible in the list.
41
+ }
42
+ const [hasConfig, hasInput] = await Promise.all([
43
+ pathExists(path.join(appDirectory, "config.ts")),
44
+ pathExists(path.join(appDirectory, "input.ts")),
45
+ ]);
46
+ const config = hasConfig && hasInput
47
+ ? "conflict"
48
+ : hasConfig
49
+ ? "config.ts"
50
+ : hasInput
51
+ ? "input.ts (legacy)"
52
+ : "missing";
53
+ return { name, packageName, version, config };
54
+ }
55
+ function printTable(rows) {
56
+ const values = [
57
+ ["NAME", "PACKAGE", "VERSION", "CONFIG"],
58
+ ...rows.map((row) => [row.name, row.packageName, row.version, row.config]),
59
+ ];
60
+ const widths = values[0].map((_, column) => Math.max(...values.map((row) => row[column].length)));
61
+ console.log(values
62
+ .map((row) => row
63
+ .map((value, column) => value.padEnd(widths[column]))
64
+ .join(" ")
65
+ .trimEnd())
66
+ .join("\n"));
67
+ }
@@ -0,0 +1,2 @@
1
+ export declare function getInstalledApplicationPackage(appDirectory: string, name: string): Promise<string>;
2
+ export declare function getInstalledVersion(appDirectory: string, packageName: string): Promise<string>;
@@ -0,0 +1,27 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { valid } from "semver";
4
+ export async function getInstalledApplicationPackage(appDirectory, name) {
5
+ let packageJson;
6
+ try {
7
+ packageJson = JSON.parse(await fs.readFile(path.join(appDirectory, "package.json"), "utf8"));
8
+ }
9
+ catch (error) {
10
+ if (error.code === "ENOENT") {
11
+ throw new Error(`Application "${name}" is not installed`);
12
+ }
13
+ throw new Error(`Could not read package metadata for application "${name}"`, { cause: error });
14
+ }
15
+ const dependencyNames = Object.keys(packageJson.dependencies ?? {});
16
+ if (dependencyNames.length !== 1) {
17
+ throw new Error(`Application "${name}" must have exactly one application package dependency`);
18
+ }
19
+ return dependencyNames[0];
20
+ }
21
+ export async function getInstalledVersion(appDirectory, packageName) {
22
+ const packageJson = JSON.parse(await fs.readFile(path.join(appDirectory, "node_modules", packageName, "package.json"), "utf8"));
23
+ if (packageJson.version == null || valid(packageJson.version) == null) {
24
+ throw new Error(`Installed ${packageName} does not have a valid semantic version`);
25
+ }
26
+ return packageJson.version;
27
+ }
@@ -1 +1,2 @@
1
+ export declare function getAppsDirectory(): string;
1
2
  export declare function getAppDirectory(name: string): string;
@@ -1,8 +1,11 @@
1
1
  import path from "node:path";
2
2
  import { getSawsHome } from "@saws/core";
3
+ export function getAppsDirectory() {
4
+ return path.join(getSawsHome(), "apps");
5
+ }
3
6
  export function getAppDirectory(name) {
4
7
  if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(name)) {
5
8
  throw new Error("Application name must start with a letter or number and contain only letters, numbers, dots, underscores, or hyphens");
6
9
  }
7
- return path.join(getSawsHome(), "apps", name);
10
+ return path.join(getAppsDirectory(), name);
8
11
  }
@@ -1,2 +1,3 @@
1
1
  export declare function runProcess(command: string, args: string[], cwd: string): Promise<void>;
2
+ export declare function getProcessOutput(command: string, args: string[], cwd: string): Promise<string>;
2
3
  export declare function runSaws(args: string[], cwd: string): Promise<void>;
@@ -19,6 +19,31 @@ export async function runProcess(command, args, cwd) {
19
19
  });
20
20
  });
21
21
  }
22
+ export async function getProcessOutput(command, args, cwd) {
23
+ return await new Promise((resolve, reject) => {
24
+ const child = spawn(command, args, {
25
+ cwd,
26
+ stdio: ["ignore", "pipe", "pipe"],
27
+ });
28
+ const stdout = [];
29
+ const stderr = [];
30
+ child.stdout.on("data", (chunk) => stdout.push(chunk));
31
+ child.stderr.on("data", (chunk) => stderr.push(chunk));
32
+ child.once("error", reject);
33
+ child.once("exit", (code, signal) => {
34
+ if (signal != null) {
35
+ reject(new Error(`${command} exited from signal ${signal}`));
36
+ return;
37
+ }
38
+ if (code !== 0) {
39
+ const details = Buffer.concat(stderr).toString("utf8").trim();
40
+ reject(new Error(`${command} exited with code ${code ?? "unknown"}${details.length > 0 ? `: ${details}` : ""}`));
41
+ return;
42
+ }
43
+ resolve(Buffer.concat(stdout).toString("utf8"));
44
+ });
45
+ });
46
+ }
22
47
  export async function runSaws(args, cwd) {
23
48
  const cliPath = process.argv[1];
24
49
  if (cliPath == null) {
@@ -0,0 +1 @@
1
+ export declare function updateAppCommand(name: string): Promise<void>;
@@ -0,0 +1,61 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { gt, valid } from "semver";
4
+ import { applicationWrapper, pathExists } from "./files.js";
5
+ import { getInstalledApplicationPackage, getInstalledVersion } from "./metadata.js";
6
+ import { getAppDirectory } from "./paths.js";
7
+ import { getProcessOutput, runProcess } from "./process.js";
8
+ export async function updateAppCommand(name) {
9
+ const appDirectory = getAppDirectory(name);
10
+ const packageName = await getInstalledApplicationPackage(appDirectory, name);
11
+ const installedVersion = await getInstalledVersion(appDirectory, packageName);
12
+ const migrated = await migrateLegacyConfig(appDirectory, packageName);
13
+ const latestVersion = await getLatestVersion(appDirectory, packageName);
14
+ if (!gt(latestVersion, installedVersion)) {
15
+ const status = gt(installedVersion, latestVersion)
16
+ ? "is newer than npm latest"
17
+ : "is up to date";
18
+ console.log(`Application "${name}" ${status} (${installedVersion})${migrated ? "; migrated input.ts to config.ts" : ""}`);
19
+ return;
20
+ }
21
+ await runProcess("npm", ["install", "--save-exact", "--no-fund", "--no-audit", `${packageName}@${latestVersion}`], appDirectory);
22
+ await fs.writeFile(path.join(appDirectory, "saws.ts"), applicationWrapper(packageName));
23
+ console.log(`Updated application "${name}" from ${installedVersion} to ${latestVersion}${migrated ? " and migrated input.ts to config.ts" : ""}`);
24
+ }
25
+ async function getLatestVersion(appDirectory, packageName) {
26
+ const output = await getProcessOutput("npm", ["view", `${packageName}@latest`, "version", "--json"], appDirectory);
27
+ const version = JSON.parse(output);
28
+ if (typeof version !== "string" || valid(version) == null) {
29
+ throw new Error(`npm latest for ${packageName} is not a valid semantic version`);
30
+ }
31
+ return version;
32
+ }
33
+ async function migrateLegacyConfig(appDirectory, packageName) {
34
+ const inputPath = path.join(appDirectory, "input.ts");
35
+ const configPath = path.join(appDirectory, "config.ts");
36
+ const [hasInput, hasConfig] = await Promise.all([pathExists(inputPath), pathExists(configPath)]);
37
+ if (hasInput && hasConfig) {
38
+ throw new Error(`Application contains both input.ts and config.ts; remove one before updating so SAWS does not overwrite configuration`);
39
+ }
40
+ if (!hasInput && !hasConfig) {
41
+ throw new Error(`Application configuration is missing; expected config.ts or legacy input.ts`);
42
+ }
43
+ if (!hasInput) {
44
+ return false;
45
+ }
46
+ const wrapperPath = path.join(appDirectory, "saws.ts");
47
+ const pendingWrapperPath = path.join(appDirectory, ".saws.ts.update");
48
+ await fs.writeFile(pendingWrapperPath, applicationWrapper(packageName), { flag: "wx" });
49
+ try {
50
+ await fs.rename(inputPath, configPath);
51
+ await fs.rename(pendingWrapperPath, wrapperPath);
52
+ }
53
+ catch (error) {
54
+ if (await pathExists(configPath)) {
55
+ await fs.rename(configPath, inputPath).catch(() => undefined);
56
+ }
57
+ await fs.rm(pendingWrapperPath, { force: true });
58
+ throw error;
59
+ }
60
+ return true;
61
+ }
@@ -0,0 +1,306 @@
1
+ # Global hosts and packaged applications
2
+
3
+ This guide covers the complete remote-deployment workflow:
4
+
5
+ 1. Save a machine as a reusable global host.
6
+ 2. Bootstrap that machine for SAWS deployments.
7
+ 3. Reference the host from an application input file.
8
+ 4. Install and deploy a packaged application.
9
+
10
+ ## Prerequisites
11
+
12
+ You need the SAWS CLI, a Debian or Ubuntu server, and an existing SSH account that can run commands
13
+ as `root` or with interactive `sudo`.
14
+
15
+ ```sh
16
+ npm install --save-dev @saws/cli
17
+ ```
18
+
19
+ By default, global hosts and installed applications live under `~/.saws`. Set `SAWS_HOME` before
20
+ running any host or application command if that state should live elsewhere:
21
+
22
+ ```sh
23
+ export SAWS_HOME=/srv/saws-state
24
+ ```
25
+
26
+ Use the same `SAWS_HOME` for every command that should share hosts, keys, applications, and local
27
+ deployment state.
28
+
29
+ > `saws host configure` applies an opinionated security baseline. It installs and enables Docker,
30
+ > fail2ban, UFW, and unattended upgrades; resets the UFW rules; installs Docker firewall rules;
31
+ > configures a deployment account; and disables SSH password authentication after verifying key
32
+ > access. Use a new server when possible and run the command with `--dry-run` first.
33
+
34
+ ## 1. Create a global host
35
+
36
+ A global host is a named machine profile that can be reused by any project or packaged application.
37
+ Create a public host with:
38
+
39
+ ```sh
40
+ npx saws host create edge \
41
+ --address 203.0.113.10 \
42
+ --user saws \
43
+ --platform linux/amd64 \
44
+ --exposure public
45
+ ```
46
+
47
+ The important values are:
48
+
49
+ - `edge`: the name passed to `getGlobalHost("edge")` later.
50
+ - `--address`: a DNS name or IP address reachable over SSH.
51
+ - `--user`: the persistent, unprivileged account SAWS will create and use for deployments. This is
52
+ not necessarily the account that already exists on the server.
53
+ - `--platform`: the Docker target platform. It is optional, but useful when the development machine
54
+ and server use different CPU architectures. Examples include `linux/amd64` and `linux/arm64`.
55
+ - `--exposure`: `public` or `tunnel`. Public hosts allow selected inbound application ports;
56
+ tunnel hosts allow none.
57
+
58
+ A public host allows TCP ports 80 and 443 by default. Specify the complete public-port set when an
59
+ application needs different ports:
60
+
61
+ ```sh
62
+ npx saws host create observability \
63
+ --address metrics.example.com \
64
+ --user saws \
65
+ --exposure public \
66
+ --allowed-tcp-port 8080 4317 4318
67
+ ```
68
+
69
+ When `--allowed-tcp-port` is supplied, it replaces the default list; include 80 and 443 explicitly
70
+ if the machine also needs them. The SSH port is allowed separately. To use a nonstandard SSH port,
71
+ add `--ssh-port 2222`.
72
+
73
+ For a private machine reached only through an SSH or network tunnel:
74
+
75
+ ```sh
76
+ npx saws host create internal \
77
+ --address 10.0.0.20 \
78
+ --user saws \
79
+ --exposure tunnel
80
+ ```
81
+
82
+ Do not supply public ports for a tunnel host.
83
+
84
+ ### Where the profile is stored
85
+
86
+ The profile is plain JSON at:
87
+
88
+ ```text
89
+ ~/.saws/hosts/<name>/host.json
90
+ ```
91
+
92
+ It contains the address, users, ports, exposure policy, and platform, but no private key. If you edit
93
+ the profile directly, rerun the configure step so the host firewall and readiness record match it.
94
+ Creating a host whose name already exists fails instead of overwriting the profile.
95
+
96
+ ## 2. Configure the machine
97
+
98
+ Preview the bootstrap operation first:
99
+
100
+ ```sh
101
+ npx saws host configure edge --global --user ubuntu --dry-run
102
+ ```
103
+
104
+ Then apply it:
105
+
106
+ ```sh
107
+ npx saws host configure edge --global --user ubuntu
108
+ ```
109
+
110
+ Here, `ubuntu` is an existing bootstrap account with root or sudo access. It is used only to prepare
111
+ the server. Subsequent deployments connect as the persistent deployment user (`saws` in this
112
+ example) configured by the earlier host-creation command.
113
+
114
+ SAWS generates an Ed25519 deployment key when the global host does not have one, encrypts the
115
+ private key in the global secret store, installs the public key for the deployment account, and only
116
+ then disables password-based SSH access.
117
+
118
+ To use an existing unencrypted, non-passphrase-protected private key, import it before configuring
119
+ the machine:
120
+
121
+ ```sh
122
+ npx saws host key import edge --file ~/.ssh/edge_deploy
123
+ npx saws host configure edge --global --user ubuntu
124
+ ```
125
+
126
+ The source file is not modified. Import refuses to replace an existing key unless `--force` is
127
+ passed.
128
+
129
+ Global host keys are encrypted beneath `~/.saws/secrets`. The encryption passcode and generated
130
+ public-key metadata are stored in `~/.saws/.env`, with file permissions restricted to the current
131
+ user. Back up both locations securely. Losing the passcode makes the encrypted deployment key
132
+ unusable.
133
+
134
+ ## 3. Install an application instance
135
+
136
+ Install the package and give this local instance a name:
137
+
138
+ ```sh
139
+ npx saws app install @saws/reverse-proxy-application --name edge-proxy
140
+ ```
141
+
142
+ The package argument accepts an npm version or tag. Pin a version for the initial installation if
143
+ needed:
144
+
145
+ ```sh
146
+ npx saws app install @saws/reverse-proxy-application@2.0.0-beta.17 --name edge-proxy
147
+ ```
148
+
149
+ SAWS refuses to install over an existing application name. It creates this local application
150
+ directory:
151
+
152
+ ```text
153
+ ~/.saws/apps/edge-proxy/
154
+ ├── config.ts
155
+ ├── package.json
156
+ ├── package-lock.json
157
+ ├── saws.ts
158
+ └── node_modules/
159
+ ```
160
+
161
+ This directory also becomes the home for that instance's secrets, outputs, and other local SAWS
162
+ state. The install command does not deploy anything.
163
+
164
+ List installed application instances, package versions, and configuration state at any time:
165
+
166
+ ```sh
167
+ npx saws app list
168
+ ```
169
+
170
+ ## 4. Configure the generated file
171
+
172
+ A packaged application exports the shape of the input it expects. Consult that package's README for
173
+ its application-specific fields. Applications that deploy to a remote machine accept or derive a
174
+ `Host`; reference the global profile with `getGlobalHost`.
175
+
176
+ Open the generated configuration in your editor:
177
+
178
+ ```sh
179
+ ${EDITOR:-vi} "${SAWS_HOME:-$HOME/.saws}/apps/edge-proxy/config.ts"
180
+ ```
181
+
182
+ The generated file derives its type from the installed application's `create` factory. TypeScript
183
+ therefore reports missing or incompatible fields. For example, `config.ts` can route public
184
+ hostnames to ports on the target machine:
185
+
186
+ ```ts
187
+ import { getGlobalHost } from "@saws/core";
188
+ import type { ReverseProxyApplicationConfig } from "@saws/reverse-proxy-application";
189
+
190
+ export default {
191
+ host: getGlobalHost("edge"),
192
+ acmeEmail: "ops@example.com",
193
+ routes: [
194
+ { hostname: "api.example.com", port: 3000 },
195
+ { hostname: "app.example.com", port: 8080, healthUri: "/health" },
196
+ ],
197
+ } satisfies ReverseProxyApplicationConfig;
198
+ ```
199
+
200
+ For applications with secrets, export a `SecretsManager` named `secrets` and pass lazy references
201
+ instead of secret values:
202
+
203
+ ```ts
204
+ import { getGlobalHost, SecretsManager } from "@saws/core";
205
+ import type { OpenDesignApplicationConfig } from "@saws/open-design-application";
206
+
207
+ export const secrets = new SecretsManager();
208
+
209
+ export default {
210
+ host: getGlobalHost("edge"),
211
+ registry: "registry.example.com/saws",
212
+ setupPassword: secrets.reference("open-design-application-password"),
213
+ } satisfies OpenDesignApplicationConfig;
214
+ ```
215
+
216
+ `secrets.reference(...)` is stage-scoped: production and staging can use different values without
217
+ changing the configuration file. Use `secrets.global.reference(...)` only for a value intentionally
218
+ shared across stages.
219
+
220
+ ### Update an installed application
221
+
222
+ Update an instance when npm's `latest` version is newer than its installed semantic version:
223
+
224
+ ```sh
225
+ npx saws app update edge-proxy
226
+ ```
227
+
228
+ Update never overwrites `config.ts`. If the instance was installed by an older SAWS CLI, its first
229
+ update renames `input.ts` to `config.ts` without changing the contents. If both files exist, update
230
+ stops and asks you to resolve the ambiguity. Prereleases are not selected unless npm's `latest`
231
+ dist-tag points to one.
232
+
233
+ ### Set application secrets
234
+
235
+ Run secret commands from the installed application directory so a default `SecretsManager` resolves
236
+ the correct storage location:
237
+
238
+ ```sh
239
+ cd "${SAWS_HOME:-$HOME/.saws}/apps/edge-proxy"
240
+ npx --package @saws/cli saws secrets example-secret \
241
+ --stage production \
242
+ --set 'replace-with-the-secret-value'
243
+ ```
244
+
245
+ Avoid placing real secret values in shell history when that matters for your environment. The
246
+ encrypted stage file is stored under the installed application's `.saws/secrets` directory.
247
+
248
+ ## 5. Deploy the application
249
+
250
+ Deploy a named instance to any non-`local` stage:
251
+
252
+ ```sh
253
+ npx saws app deploy edge-proxy --stage production
254
+ ```
255
+
256
+ The deployment command:
257
+
258
+ 1. Loads `~/.saws/apps/edge-proxy/saws.ts`.
259
+ 2. Resolves the generated configuration and application factory.
260
+ 3. Resolves stage-scoped environment and secrets.
261
+ 4. Connects to the global host with its deployment key.
262
+ 5. Verifies that the host still matches the configured security policy.
263
+ 6. Deploys application dependencies in order and starts or replaces changed containers.
264
+
265
+ By default, stages isolate generated names, Docker networks, persistent volumes, runtime files,
266
+ secrets, and outputs. Deploying `staging` and `production` therefore creates separate application
267
+ resources even when they use the same host. Explicitly overridden volume names can opt out of that
268
+ isolation.
269
+
270
+ For a public application, confirm before deployment that:
271
+
272
+ - DNS records point to the host.
273
+ - Every published TCP port is in the global host's `allowedTcpPorts`.
274
+ - Cloud-provider or upstream-network firewalls allow the same ports.
275
+ - Any required registry credentials and application secrets exist for the target stage.
276
+ - Services addressed by a reverse proxy are reachable from the proxy container.
277
+
278
+ ## Operations and troubleshooting
279
+
280
+ To run standard SAWS commands against an installed application, change into its directory:
281
+
282
+ ```sh
283
+ cd "${SAWS_HOME:-$HOME/.saws}/apps/edge-proxy"
284
+ npx --package @saws/cli saws logs --stage production
285
+ npx --package @saws/cli saws logs reverse-proxy --stage production
286
+ ```
287
+
288
+ Common failures:
289
+
290
+ - **Host is not configured or has drifted:** rerun the global `host configure` command with the host
291
+ name and bootstrap user. This reapplies the declared firewall and security policy.
292
+ - **SSH fails after configuration:** verify that the global key store and `~/.saws/.env` came from
293
+ the same SAWS home and that the configured address and SSH port are correct.
294
+ - **A published service is unreachable:** Docker port publishing and the host allowlist are separate.
295
+ The service must publish the port, and the host profile must allow it.
296
+ - **An HTTPS certificate is not issued:** verify public DNS and inbound ports 80 and 443. A hostname
297
+ route in the reverse-proxy application requests and renews its certificate automatically.
298
+ - **A remote Dockerfile application asks for a registry:** remote hosts cannot use an image that was
299
+ built only on the development machine. Configure the application's `registry` and any required
300
+ registry authentication, or supply a prebuilt image.
301
+ - **A secret cannot be decrypted:** use the same `SAWS_HOME` and `SAWS_SECRETS_PASSCODE` that created
302
+ the encrypted file.
303
+
304
+ Treat `~/.saws` (or the configured `SAWS_HOME`) as operational state. Back it up securely, especially
305
+ the global `.env`, encrypted secret stores, application input files, and any output needed by your
306
+ deployment workflow. Remote Docker volumes must be backed up separately on the target machines.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saws/cli",
3
- "version": "2.0.0-beta.16",
3
+ "version": "2.0.0-beta.19",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,15 +10,18 @@
10
10
  "saws": "./dist/bin/saws.js"
11
11
  },
12
12
  "files": [
13
- "./dist"
13
+ "./dist",
14
+ "./docs"
14
15
  ],
15
16
  "type": "module",
16
17
  "dependencies": {
17
- "@saws/core": "2.0.0-beta.16",
18
+ "@saws/core": "2.0.0-beta.19",
18
19
  "commander": "^15.0.0",
19
- "find-package-json": "^1.2.0"
20
+ "find-package-json": "^1.2.0",
21
+ "semver": "^7.8.5"
20
22
  },
21
23
  "devDependencies": {
22
- "@types/find-package-json": "^1.2.7"
24
+ "@types/find-package-json": "^1.2.7",
25
+ "@types/semver": "^7.8.0"
23
26
  }
24
27
  }