signalk-container 0.1.3 → 0.1.6
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 +116 -14
- package/dist/containers.d.ts +43 -0
- package/dist/containers.d.ts.map +1 -1
- package/dist/containers.js +145 -0
- package/dist/containers.js.map +1 -1
- package/dist/index.js +459 -2
- package/dist/index.js.map +1 -1
- package/dist/resources.d.ts +118 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +323 -0
- package/dist/resources.js.map +1 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +41 -1
- package/dist/runtime.js.map +1 -1
- package/dist/types.d.ts +97 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/updates/cache.d.ts +36 -0
- package/dist/updates/cache.d.ts.map +1 -0
- package/dist/updates/cache.js +66 -0
- package/dist/updates/cache.js.map +1 -0
- package/dist/updates/offline.d.ts +12 -0
- package/dist/updates/offline.d.ts.map +1 -0
- package/dist/updates/offline.js +47 -0
- package/dist/updates/offline.js.map +1 -0
- package/dist/updates/routes.d.ts +12 -0
- package/dist/updates/routes.d.ts.map +1 -0
- package/dist/updates/routes.js +59 -0
- package/dist/updates/routes.js.map +1 -0
- package/dist/updates/semver.d.ts +22 -0
- package/dist/updates/semver.d.ts.map +1 -0
- package/dist/updates/semver.js +68 -0
- package/dist/updates/semver.js.map +1 -0
- package/dist/updates/service.d.ts +80 -0
- package/dist/updates/service.d.ts.map +1 -0
- package/dist/updates/service.js +414 -0
- package/dist/updates/service.js.map +1 -0
- package/dist/updates/sources.d.ts +32 -0
- package/dist/updates/sources.d.ts.map +1 -0
- package/dist/updates/sources.js +111 -0
- package/dist/updates/sources.js.map +1 -0
- package/dist/updates/tagClassifier.d.ts +13 -0
- package/dist/updates/tagClassifier.d.ts.map +1 -0
- package/dist/updates/tagClassifier.js +41 -0
- package/dist/updates/tagClassifier.js.map +1 -0
- package/dist/updates/types.d.ts +124 -0
- package/dist/updates/types.d.ts.map +1 -0
- package/dist/updates/types.js +3 -0
- package/dist/updates/types.js.map +1 -0
- package/doc/plugin-developer-guide.md +318 -13
- package/package.json +1 -1
- package/dist/test/runtime.test.d.ts +0 -2
- package/dist/test/runtime.test.d.ts.map +0 -1
- package/dist/test/runtime.test.js +0 -30
- package/dist/test/runtime.test.js.map +0 -1
- package/dist/test/types.test.d.ts +0 -2
- package/dist/test/types.test.d.ts.map +0 -1
- package/dist/test/types.test.js +0 -58
- package/dist/test/types.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -9,6 +9,8 @@ Instead of each plugin implementing its own container orchestration, they delega
|
|
|
9
9
|
- **Runtime detection** -- Podman preferred, Docker fallback, podman-shim aware
|
|
10
10
|
- **Container lifecycle** -- pull, create, start, stop, remove with `sk-` prefix naming
|
|
11
11
|
- **One-shot jobs** -- run containers for batch tasks (export, conversion, etc.)
|
|
12
|
+
- **Update detection** -- centralized "is there a newer image?" service for all consumer plugins. Auto-detects semver vs floating tags (`:latest`, `:main`), offline-tolerant with persistent cache, emits Signal K notifications. See the [developer guide](doc/plugin-developer-guide.md#update-detection).
|
|
13
|
+
- **Resource limits** -- per-container CPU/memory/PID caps so a runaway container can't take down the boat. Consumer plugin sets sensible defaults; user can override per-container in this plugin's config. Live-applied via `podman update` when possible, falls back to recreate. See the [developer guide](doc/plugin-developer-guide.md#resource-limits).
|
|
12
14
|
- **Image management** -- scheduled pruning of dangling images (weekly/monthly)
|
|
13
15
|
- **SELinux support** -- `:Z` volume flags for Podman on Fedora/RHEL
|
|
14
16
|
- **Podman image qualification** -- automatically prefixes `docker.io/` for short image names
|
|
@@ -65,6 +67,7 @@ See [doc/plugin-developer-guide.md](doc/plugin-developer-guide.md) for the full
|
|
|
65
67
|
| `getRuntime()` | Returns `{ runtime, version, isPodmanDockerShim }` or `null` |
|
|
66
68
|
| `pullImage(image, onProgress?)` | Pull a container image (auto-qualifies for Podman) |
|
|
67
69
|
| `imageExists(image)` | Check if image exists locally |
|
|
70
|
+
| `getImageDigest(imageOrContainer)` | Local image ID (sha256) for an image:tag or container |
|
|
68
71
|
| `ensureRunning(name, config, options?)` | Create and start container if not running |
|
|
69
72
|
| `start(name)` | Start a stopped container |
|
|
70
73
|
| `stop(name)` | Stop a running container |
|
|
@@ -78,28 +81,127 @@ See [doc/plugin-developer-guide.md](doc/plugin-developer-guide.md) for the full
|
|
|
78
81
|
| `removeNetwork(name)` | Remove a network |
|
|
79
82
|
| `connectToNetwork(container, network)` | Add a container to a network (bridge mode only) |
|
|
80
83
|
| `disconnectFromNetwork(container, net)` | Remove a container from a network |
|
|
84
|
+
| `updates.register(reg)` | Register a container for update detection |
|
|
85
|
+
| `updates.unregister(pluginId)` | Stop tracking updates for a plugin |
|
|
86
|
+
| `updates.checkOne(pluginId)` | Force a fresh update check (or coalesce with in-flight) |
|
|
87
|
+
| `updates.getLastResult(pluginId)` | Cached last result, no network |
|
|
88
|
+
| `updateResources(name, limits)` | Apply new resource limits live, fall back to recreate |
|
|
89
|
+
| `getResources(name)` | Currently effective limits (plugin defaults ⊕ user override) |
|
|
81
90
|
|
|
82
91
|
## REST Endpoints
|
|
83
92
|
|
|
84
93
|
All mounted at `/plugins/signalk-container/api/`:
|
|
85
94
|
|
|
86
|
-
| Method | Path
|
|
87
|
-
| ------ |
|
|
88
|
-
| GET | `/runtime`
|
|
89
|
-
| GET | `/containers`
|
|
90
|
-
| GET | `/containers/:name/state`
|
|
91
|
-
| POST | `/containers/:name/start`
|
|
92
|
-
| POST | `/containers/:name/stop`
|
|
93
|
-
| POST | `/containers/:name/remove`
|
|
94
|
-
| POST | `/prune`
|
|
95
|
+
| Method | Path | Description |
|
|
96
|
+
| ------ | ----------------------------- | ------------------------------------------------------- |
|
|
97
|
+
| GET | `/runtime` | Detected runtime info |
|
|
98
|
+
| GET | `/containers` | List managed containers |
|
|
99
|
+
| GET | `/containers/:name/state` | Container state |
|
|
100
|
+
| POST | `/containers/:name/start` | Start a stopped container |
|
|
101
|
+
| POST | `/containers/:name/stop` | Stop a running container |
|
|
102
|
+
| POST | `/containers/:name/remove` | Stop and remove a container |
|
|
103
|
+
| POST | `/prune` | Prune dangling images |
|
|
104
|
+
| GET | `/updates` | List last update-check results |
|
|
105
|
+
| GET | `/updates/:pluginId` | Last update-check result for one plugin |
|
|
106
|
+
| POST | `/updates/:pluginId/check` | Force a fresh update check (HTTP 200 even when offline) |
|
|
107
|
+
| GET | `/containers/:name/resources` | Effective resource limits + user override |
|
|
108
|
+
| POST | `/containers/:name/resources` | Apply new resource limits (live or recreate) |
|
|
95
109
|
|
|
96
110
|
## Configuration
|
|
97
111
|
|
|
98
|
-
| Setting
|
|
99
|
-
|
|
|
100
|
-
| Preferred runtime
|
|
101
|
-
| Auto-prune images
|
|
102
|
-
| Max concurrent jobs
|
|
112
|
+
| Setting | Default | Description |
|
|
113
|
+
| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
|
114
|
+
| Preferred runtime | `auto` | Auto-detect, or force `podman`/`docker` |
|
|
115
|
+
| Auto-prune images | `weekly` | `off`, `weekly`, or `monthly` |
|
|
116
|
+
| Max concurrent jobs | `2` | Limit parallel one-shot job executions |
|
|
117
|
+
| Update check interval | `24h` | How often to check for container image updates (e.g. `24h`, `12h`, `1h`). Min 1h. |
|
|
118
|
+
| Background update checks | `true` | Periodically check for updates in the background. Disable on metered connections — manual checks via the UI button still work. |
|
|
119
|
+
| Container overrides | `{}` | Per-container resource limits (CPU, memory, PIDs). Field-level merged on top of consumer plugin defaults. See dev guide. |
|
|
120
|
+
|
|
121
|
+
## Setting Resource Limits
|
|
122
|
+
|
|
123
|
+
On a boat with limited compute (typically a Pi 4/5 or low-power x86 mini PC), one runaway container can starve Signal K, raise NMEA decode latency, trigger thermal throttling, or even take the host down via OOM. signalk-container exposes podman/docker resource flags so consumer plugins can set sensible defaults — and you, as the user, can override them per-container without touching code.
|
|
124
|
+
|
|
125
|
+
### How it works
|
|
126
|
+
|
|
127
|
+
Each consumer plugin (signalk-questdb, signalk-grafana, mayara, etc.) declares default CPU/memory limits when it starts its container. You can override any of these via the **Per-container resource overrides** field in this plugin's config. Your override is **merged field-by-field** on top of the plugin's defaults — you don't have to know what the plugin already set, just specify what you want different.
|
|
128
|
+
|
|
129
|
+
### Example: capping mayara at 1.5 CPU cores and 512 MB
|
|
130
|
+
|
|
131
|
+
In the signalk-container plugin config UI, set **Per-container resource overrides** to:
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"mayara-server": {
|
|
136
|
+
"cpus": 1.5,
|
|
137
|
+
"memory": "512m",
|
|
138
|
+
"memorySwap": "512m"
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
The key (`mayara-server`) is the container name **without** the `sk-` prefix that signalk-container adds internally. After saving, restart the consumer plugin (or use the live update endpoint described below) for the new limits to take effect.
|
|
144
|
+
|
|
145
|
+
### Available fields
|
|
146
|
+
|
|
147
|
+
| Field | Example | What it does |
|
|
148
|
+
| ------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
149
|
+
| `cpus` | `1.5` | Hard CPU cap. `1.5` = max 1.5 cores. The most important field for stability. |
|
|
150
|
+
| `cpuShares` | `512` | Soft CPU weight under contention (default 1024). Lower = lower priority. |
|
|
151
|
+
| `cpusetCpus` | `"1,2"` | Pin to specific cores. Useful to keep heavy containers off core 0 where Signal K runs. |
|
|
152
|
+
| `memory` | `"512m"`, `"2g"` | Hard memory cap. Container is OOM-killed if exceeded. |
|
|
153
|
+
| `memorySwap` | `"512m"` | Memory + swap total. **Set equal to `memory` to disable swap entirely** — recommended on Pi/eMMC where swap is slow. |
|
|
154
|
+
| `memoryReservation` | `"256m"` | Soft memory floor. Kernel reclaims first from containers above this. |
|
|
155
|
+
| `pidsLimit` | `200` | Cap on processes/threads. Prevents fork bombs and thread leaks. |
|
|
156
|
+
| `oomScoreAdj` | `500` | OOM kill priority, -1000..1000. Higher = killed first when host runs out of memory. |
|
|
157
|
+
|
|
158
|
+
### Removing a limit set by a plugin
|
|
159
|
+
|
|
160
|
+
Use `null` to explicitly remove a limit that the consumer plugin set:
|
|
161
|
+
|
|
162
|
+
```json
|
|
163
|
+
{
|
|
164
|
+
"mayara-server": { "memory": null }
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
This keeps mayara's CPU limit (whatever the plugin's default is) but removes the memory cap.
|
|
169
|
+
|
|
170
|
+
### When changes take effect
|
|
171
|
+
|
|
172
|
+
- **For containers not yet started**: the next time the consumer plugin calls `ensureRunning`, your override is automatically merged in.
|
|
173
|
+
- **For already-running containers**: the consumer plugin (or the REST API) needs to call `updateResources`. signalk-container tries `podman update` / `docker update` first (instantaneous, no downtime), and falls back to stop+remove+create if the runtime can't apply the change live (e.g. `cpusetCpus` or `oomScoreAdj`, which are set at create time only).
|
|
174
|
+
- **The simplest path**: restart the consumer plugin via the Signal K admin UI after saving overrides. signalk-container will pick up the new merged limits on the next `ensureRunning` call.
|
|
175
|
+
|
|
176
|
+
### Verifying limits are applied
|
|
177
|
+
|
|
178
|
+
Check the live container with podman or docker:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
podman inspect sk-mayara-server --format '
|
|
182
|
+
cpus={{.HostConfig.NanoCpus}}
|
|
183
|
+
memory={{.HostConfig.Memory}}
|
|
184
|
+
'
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
`NanoCpus` is in CPU-nanoseconds per second; `1500000000` = 1.5 cores. Memory is in bytes.
|
|
188
|
+
|
|
189
|
+
Or query the API:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
curl http://localhost:3000/plugins/signalk-container/api/containers/mayara-server/resources
|
|
193
|
+
# {"name":"mayara-server","effective":{"cpus":1.5,"memory":"512m"},"override":{"cpus":1.5,"memory":"512m"}}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Picking the right values
|
|
197
|
+
|
|
198
|
+
1. Run the container without overrides for a typical workload
|
|
199
|
+
2. Watch resource use: `podman stats sk-mayara-server`
|
|
200
|
+
3. Note peak CPU% and peak memory
|
|
201
|
+
4. Set `cpus` ≈ peak / 100 + 25% headroom; `memory` ≈ peak rounded up + 25% headroom
|
|
202
|
+
5. Re-test under load to make sure the container still functions inside its caps
|
|
203
|
+
|
|
204
|
+
The plugin developer guide has a detailed walk-through in [doc/plugin-developer-guide.md#resource-limits](doc/plugin-developer-guide.md#resource-limits).
|
|
103
205
|
|
|
104
206
|
## Requirements
|
|
105
207
|
|
package/dist/containers.d.ts
CHANGED
|
@@ -1,8 +1,50 @@
|
|
|
1
1
|
import { ContainerConfig, ContainerInfo, ContainerRuntimeInfo, ContainerState, HealthCheckOptions } from "./types";
|
|
2
2
|
export declare function qualifyImage(image: string, runtime: ContainerRuntimeInfo): string;
|
|
3
3
|
export declare function imageExists(runtime: ContainerRuntimeInfo, image: string): Promise<boolean>;
|
|
4
|
+
/**
|
|
5
|
+
* Return the local image ID (sha256 digest) for a given image reference,
|
|
6
|
+
* or null if the image is not present locally. Used for digest-drift
|
|
7
|
+
* detection of floating tags like :latest or :main.
|
|
8
|
+
*
|
|
9
|
+
* Pass either a repo:tag (e.g. "questdb/questdb:latest") to inspect a
|
|
10
|
+
* pulled image, or a container name to inspect the image a running
|
|
11
|
+
* container is using.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getImageDigest(runtime: ContainerRuntimeInfo, imageOrContainer: string): Promise<string | null>;
|
|
4
14
|
export declare function pullImage(runtime: ContainerRuntimeInfo, image: string, onProgress?: (msg: string) => void): Promise<void>;
|
|
5
15
|
export declare function getContainerState(runtime: ContainerRuntimeInfo, name: string): Promise<ContainerState>;
|
|
16
|
+
/**
|
|
17
|
+
* Type alias matching `ExecRuntimeFn` in resources.ts; declared
|
|
18
|
+
* locally so containers.ts doesn't have to depend on resources.ts.
|
|
19
|
+
*/
|
|
20
|
+
type ExecFn = (runtime: ContainerRuntimeInfo, args: string[]) => Promise<{
|
|
21
|
+
stdout: string;
|
|
22
|
+
stderr: string;
|
|
23
|
+
exitCode: number;
|
|
24
|
+
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Read the live resource limits applied to a managed container,
|
|
27
|
+
* straight from `podman inspect` (i.e. the actual cgroup state).
|
|
28
|
+
* Returns an empty object if the container is missing or no
|
|
29
|
+
* limits are applied. Used by:
|
|
30
|
+
*
|
|
31
|
+
* - the `updateResources` rollback path, to capture pre-update
|
|
32
|
+
* state so a failed recreate can be reverted
|
|
33
|
+
* - `ensureRunning`'s diff detection, to decide whether a running
|
|
34
|
+
* container needs a live resources update
|
|
35
|
+
*
|
|
36
|
+
* The shape conversion is the inverse of `resourceFlagsForRun`:
|
|
37
|
+
* NanoCpus (nanoseconds/sec) → cpus (cores)
|
|
38
|
+
* Memory (bytes) → memory ("123m")
|
|
39
|
+
* MemorySwap (bytes) → memorySwap ("123m")
|
|
40
|
+
* ...etc.
|
|
41
|
+
*
|
|
42
|
+
* Memory values are emitted as bytes-with-suffix to round-trip
|
|
43
|
+
* cleanly with what consumer plugins typically pass in (`"512m"`).
|
|
44
|
+
*
|
|
45
|
+
* `exec` defaults to the production execRuntime; tests pass a stub.
|
|
46
|
+
*/
|
|
47
|
+
export declare function getLiveResources(runtime: ContainerRuntimeInfo, name: string, exec?: ExecFn): Promise<import("./types").ContainerResourceLimits>;
|
|
6
48
|
export declare function ensureRunning(runtime: ContainerRuntimeInfo, name: string, config: ContainerConfig, debug: (msg: string) => void, options?: HealthCheckOptions): Promise<void>;
|
|
7
49
|
export declare function startContainer(runtime: ContainerRuntimeInfo, name: string): Promise<void>;
|
|
8
50
|
export declare function stopContainer(runtime: ContainerRuntimeInfo, name: string): Promise<void>;
|
|
@@ -22,4 +64,5 @@ export declare function removeNetwork(runtime: ContainerRuntimeInfo, name: strin
|
|
|
22
64
|
export declare function connectToNetwork(runtime: ContainerRuntimeInfo, containerName: string, networkName: string): Promise<void>;
|
|
23
65
|
export declare function disconnectFromNetwork(runtime: ContainerRuntimeInfo, containerName: string, networkName: string): Promise<void>;
|
|
24
66
|
export declare function waitForReady(url: string, timeoutMs?: number, intervalMs?: number): Promise<void>;
|
|
67
|
+
export {};
|
|
25
68
|
//# sourceMappingURL=containers.d.ts.map
|
package/dist/containers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EACnB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAYjB,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAgBR;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,oBAAoB,EAC7B,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BxB;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACjC,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,CAczB;AAED;;;GAGG;AACH,KAAK,MAAM,GAAG,CACZ,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,EAAE,KACX,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAoB,GACzB,OAAO,CAAC,OAAO,SAAS,EAAE,uBAAuB,CAAC,CA2EpD;AAsED,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAE5B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAmCf;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAMf;AAkCD,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,aAAa,EAAE,CAAC,CA6B1B;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,CAY5D;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAG/D;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,EAC7B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,oBAAoB,EAC7B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,MAAc,EACzB,UAAU,GAAE,MAAY,GACvB,OAAO,CAAC,IAAI,CAAC,CAYf"}
|
package/dist/containers.js
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.qualifyImage = qualifyImage;
|
|
4
4
|
exports.imageExists = imageExists;
|
|
5
|
+
exports.getImageDigest = getImageDigest;
|
|
5
6
|
exports.pullImage = pullImage;
|
|
6
7
|
exports.getContainerState = getContainerState;
|
|
8
|
+
exports.getLiveResources = getLiveResources;
|
|
7
9
|
exports.ensureRunning = ensureRunning;
|
|
8
10
|
exports.startContainer = startContainer;
|
|
9
11
|
exports.stopContainer = stopContainer;
|
|
@@ -17,6 +19,7 @@ exports.connectToNetwork = connectToNetwork;
|
|
|
17
19
|
exports.disconnectFromNetwork = disconnectFromNetwork;
|
|
18
20
|
exports.waitForReady = waitForReady;
|
|
19
21
|
const runtime_1 = require("./runtime");
|
|
22
|
+
const resources_1 = require("./resources");
|
|
20
23
|
const CONTAINER_PREFIX = "sk-";
|
|
21
24
|
function prefixedName(name) {
|
|
22
25
|
return name.startsWith(CONTAINER_PREFIX)
|
|
@@ -43,6 +46,40 @@ async function imageExists(runtime, image) {
|
|
|
43
46
|
const result = await (0, runtime_1.execRuntime)(runtime, ["image", "inspect", image]);
|
|
44
47
|
return result.exitCode === 0;
|
|
45
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Return the local image ID (sha256 digest) for a given image reference,
|
|
51
|
+
* or null if the image is not present locally. Used for digest-drift
|
|
52
|
+
* detection of floating tags like :latest or :main.
|
|
53
|
+
*
|
|
54
|
+
* Pass either a repo:tag (e.g. "questdb/questdb:latest") to inspect a
|
|
55
|
+
* pulled image, or a container name to inspect the image a running
|
|
56
|
+
* container is using.
|
|
57
|
+
*/
|
|
58
|
+
async function getImageDigest(runtime, imageOrContainer) {
|
|
59
|
+
// Try image inspect first; fall back to container inspect for names.
|
|
60
|
+
const qualified = qualifyImage(imageOrContainer, runtime);
|
|
61
|
+
const imgResult = await (0, runtime_1.execRuntime)(runtime, [
|
|
62
|
+
"image",
|
|
63
|
+
"inspect",
|
|
64
|
+
"--format",
|
|
65
|
+
"{{.Id}}",
|
|
66
|
+
qualified,
|
|
67
|
+
]);
|
|
68
|
+
if (imgResult.exitCode === 0 && imgResult.stdout) {
|
|
69
|
+
return imgResult.stdout.trim();
|
|
70
|
+
}
|
|
71
|
+
// Maybe it's a container name; .Image on a container returns the image ID.
|
|
72
|
+
const ctrResult = await (0, runtime_1.execRuntime)(runtime, [
|
|
73
|
+
"inspect",
|
|
74
|
+
"--format",
|
|
75
|
+
"{{.Image}}",
|
|
76
|
+
imageOrContainer,
|
|
77
|
+
]);
|
|
78
|
+
if (ctrResult.exitCode === 0 && ctrResult.stdout) {
|
|
79
|
+
return ctrResult.stdout.trim();
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
46
83
|
async function pullImage(runtime, image, onProgress) {
|
|
47
84
|
const { exitCode, log } = await (0, runtime_1.execRuntimeLong)(runtime, ["pull", image], onProgress, 300000);
|
|
48
85
|
if (exitCode !== 0) {
|
|
@@ -64,6 +101,110 @@ async function getContainerState(runtime, name) {
|
|
|
64
101
|
return "running";
|
|
65
102
|
return "stopped";
|
|
66
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Read the live resource limits applied to a managed container,
|
|
106
|
+
* straight from `podman inspect` (i.e. the actual cgroup state).
|
|
107
|
+
* Returns an empty object if the container is missing or no
|
|
108
|
+
* limits are applied. Used by:
|
|
109
|
+
*
|
|
110
|
+
* - the `updateResources` rollback path, to capture pre-update
|
|
111
|
+
* state so a failed recreate can be reverted
|
|
112
|
+
* - `ensureRunning`'s diff detection, to decide whether a running
|
|
113
|
+
* container needs a live resources update
|
|
114
|
+
*
|
|
115
|
+
* The shape conversion is the inverse of `resourceFlagsForRun`:
|
|
116
|
+
* NanoCpus (nanoseconds/sec) → cpus (cores)
|
|
117
|
+
* Memory (bytes) → memory ("123m")
|
|
118
|
+
* MemorySwap (bytes) → memorySwap ("123m")
|
|
119
|
+
* ...etc.
|
|
120
|
+
*
|
|
121
|
+
* Memory values are emitted as bytes-with-suffix to round-trip
|
|
122
|
+
* cleanly with what consumer plugins typically pass in (`"512m"`).
|
|
123
|
+
*
|
|
124
|
+
* `exec` defaults to the production execRuntime; tests pass a stub.
|
|
125
|
+
*/
|
|
126
|
+
async function getLiveResources(runtime, name, exec = runtime_1.execRuntime) {
|
|
127
|
+
const fullName = prefixedName(name);
|
|
128
|
+
// Use Go-template format for reliable parsing across podman/docker.
|
|
129
|
+
// Each line is one numeric or string value; empty/zero means "unset".
|
|
130
|
+
const fmt = "{{.HostConfig.NanoCpus}}|" +
|
|
131
|
+
"{{.HostConfig.CpuShares}}|" +
|
|
132
|
+
"{{.HostConfig.CpusetCpus}}|" +
|
|
133
|
+
"{{.HostConfig.Memory}}|" +
|
|
134
|
+
"{{.HostConfig.MemorySwap}}|" +
|
|
135
|
+
"{{.HostConfig.MemoryReservation}}|" +
|
|
136
|
+
"{{.HostConfig.PidsLimit}}|" +
|
|
137
|
+
"{{.HostConfig.OomScoreAdj}}";
|
|
138
|
+
const result = await exec(runtime, ["inspect", "--format", fmt, fullName]);
|
|
139
|
+
if (result.exitCode !== 0)
|
|
140
|
+
return {};
|
|
141
|
+
const parts = result.stdout.split("|");
|
|
142
|
+
if (parts.length !== 8)
|
|
143
|
+
return {};
|
|
144
|
+
const [nanoCpus, cpuShares, cpusetCpus, memory, memorySwap, memoryReservation, pidsLimit, oomScoreAdj,] = parts;
|
|
145
|
+
const out = {};
|
|
146
|
+
const nano = Number(nanoCpus);
|
|
147
|
+
if (Number.isFinite(nano) && nano > 0) {
|
|
148
|
+
// Round to 3 decimals to avoid float noise like 1.4999999999.
|
|
149
|
+
out.cpus = Math.round((nano / 1_000_000_000) * 1000) / 1000;
|
|
150
|
+
}
|
|
151
|
+
const shares = Number(cpuShares);
|
|
152
|
+
// 0 and 1024 are both "default" — only emit if explicitly set to
|
|
153
|
+
// something else, since 1024 is the kernel default and we'd add
|
|
154
|
+
// noise to comparisons.
|
|
155
|
+
if (Number.isFinite(shares) && shares > 0 && shares !== 1024) {
|
|
156
|
+
out.cpuShares = shares;
|
|
157
|
+
}
|
|
158
|
+
if (cpusetCpus && cpusetCpus.trim() !== "") {
|
|
159
|
+
out.cpusetCpus = cpusetCpus.trim();
|
|
160
|
+
}
|
|
161
|
+
const mem = Number(memory);
|
|
162
|
+
if (Number.isFinite(mem) && mem > 0) {
|
|
163
|
+
out.memory = bytesToString(mem);
|
|
164
|
+
}
|
|
165
|
+
const memSwap = Number(memorySwap);
|
|
166
|
+
// memorySwap is reported as -1 when unlimited; we only care about
|
|
167
|
+
// explicit caps.
|
|
168
|
+
if (Number.isFinite(memSwap) && memSwap > 0) {
|
|
169
|
+
out.memorySwap = bytesToString(memSwap);
|
|
170
|
+
}
|
|
171
|
+
const memReserve = Number(memoryReservation);
|
|
172
|
+
if (Number.isFinite(memReserve) && memReserve > 0) {
|
|
173
|
+
out.memoryReservation = bytesToString(memReserve);
|
|
174
|
+
}
|
|
175
|
+
const pids = Number(pidsLimit);
|
|
176
|
+
// PidsLimit is reported as 2048 by podman default — that's not
|
|
177
|
+
// actually a "set" value, it's the default. Only emit if very
|
|
178
|
+
// different. Detecting "this is the kernel default" precisely is
|
|
179
|
+
// hard; treat 0 and 2048 as unset.
|
|
180
|
+
if (Number.isFinite(pids) && pids > 0 && pids !== 2048) {
|
|
181
|
+
out.pidsLimit = pids;
|
|
182
|
+
}
|
|
183
|
+
const oom = Number(oomScoreAdj);
|
|
184
|
+
if (Number.isFinite(oom) && oom !== 0) {
|
|
185
|
+
out.oomScoreAdj = oom;
|
|
186
|
+
}
|
|
187
|
+
return out;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Convert a byte count back into the human form consumer plugins
|
|
191
|
+
* use ("512m", "2g"). Picks the largest unit that produces an
|
|
192
|
+
* integer result, falling back to bytes ("536870912b") if no clean
|
|
193
|
+
* unit fits — though this should not happen for typical container
|
|
194
|
+
* memory values which are always whole MiB.
|
|
195
|
+
*/
|
|
196
|
+
function bytesToString(bytes) {
|
|
197
|
+
const G = 1024 * 1024 * 1024;
|
|
198
|
+
const M = 1024 * 1024;
|
|
199
|
+
const K = 1024;
|
|
200
|
+
if (bytes >= G && bytes % G === 0)
|
|
201
|
+
return `${bytes / G}g`;
|
|
202
|
+
if (bytes >= M && bytes % M === 0)
|
|
203
|
+
return `${bytes / M}m`;
|
|
204
|
+
if (bytes >= K && bytes % K === 0)
|
|
205
|
+
return `${bytes / K}k`;
|
|
206
|
+
return `${bytes}b`;
|
|
207
|
+
}
|
|
67
208
|
function buildRunArgs(name, config, runtime) {
|
|
68
209
|
const fullName = prefixedName(name);
|
|
69
210
|
const imageRef = qualifyImage(`${config.image}:${config.tag}`, runtime);
|
|
@@ -91,6 +232,10 @@ function buildRunArgs(name, config, runtime) {
|
|
|
91
232
|
args.push("-e", `${key}=${value}`);
|
|
92
233
|
}
|
|
93
234
|
}
|
|
235
|
+
// Resource limits (--cpus, --memory, --pids-limit, etc.)
|
|
236
|
+
// Fields whose backing cgroup controller is unavailable on this
|
|
237
|
+
// runtime are silently dropped.
|
|
238
|
+
args.push(...(0, resources_1.resourceFlagsForRun)(config.resources, runtime));
|
|
94
239
|
args.push(imageRef);
|
|
95
240
|
if (config.command) {
|
|
96
241
|
args.push(...config.command);
|
package/dist/containers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":";;AAkBA,oCAmBC;AAED,kCAMC;AAWD,wCA6BC;AAED,8BAcC;AAED,8CAiBC;AAiCD,4CA+EC;AAsED,sCA0CC;AAED,wCASC;AAkCD,sCAaC;AAED,0CAWC;AAED,wCA+BC;AAED,kCAcC;AAED,0CAOC;AAED,sCAWC;AAED,sCAQC;AAED,4CAuBC;AAED,sDAiBC;AAED,oCAgBC;AAviBD,uCAAyD;AACzD,2CAAkD;AAElD,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;QACtC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,GAAG,gBAAgB,GAAG,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,SAAgB,YAAY,CAC1B,KAAa,EACb,OAA6B;IAE7B,sEAAsE;IACtE,+DAA+D;IAC/D,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,oEAAoE;QACpE,mEAAmE;QACnE,MAAM,iBAAiB,GACrB,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YACtB,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YACtB,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC;QAC3B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5C,OAAO,aAAa,KAAK,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,OAA6B,EAC7B,KAAa;IAEb,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACvE,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,cAAc,CAClC,OAA6B,EAC7B,gBAAwB;IAExB,qEAAqE;IACrE,MAAM,SAAS,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE;QAC3C,OAAO;QACP,SAAS;QACT,UAAU;QACV,SAAS;QACT,SAAS;KACV,CAAC,CAAC;IACH,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACjD,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,2EAA2E;IAC3E,MAAM,SAAS,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE;QAC3C,SAAS;QACT,UAAU;QACV,YAAY;QACZ,gBAAgB;KACjB,CAAC,CAAC;IACH,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACjD,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,SAAS,CAC7B,OAA6B,EAC7B,KAAa,EACb,UAAkC;IAElC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,IAAA,yBAAe,EAC7C,OAAO,EACP,CAAC,MAAM,EAAE,KAAK,CAAC,EACf,UAAU,EACV,MAAM,CACP,CAAC;IACF,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,OAA6B,EAC7B,IAAY;IAEZ,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE;QACxC,SAAS;QACT,UAAU;QACV,mBAAmB;QACnB,QAAQ;KACT,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC3C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,SAAS,CAAC;AACnB,CAAC;AAWD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACI,KAAK,UAAU,gBAAgB,CACpC,OAA6B,EAC7B,IAAY,EACZ,OAAe,qBAAW;IAE1B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,oEAAoE;IACpE,sEAAsE;IACtE,MAAM,GAAG,GACP,2BAA2B;QAC3B,4BAA4B;QAC5B,6BAA6B;QAC7B,yBAAyB;QACzB,6BAA6B;QAC7B,oCAAoC;QACpC,4BAA4B;QAC5B,6BAA6B,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,CACJ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,WAAW,EACZ,GAAG,KAAK,CAAC;IAEV,MAAM,GAAG,GAA8C,EAAE,CAAC;IAE1D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACtC,8DAA8D;QAC9D,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9D,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IACjC,iEAAiE;IACjE,gEAAgE;IAChE,wBAAwB;IACxB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC7D,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;IACzB,CAAC;IACD,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3C,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACnC,kEAAkE;IAClE,iBAAiB;IACjB,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,iBAAiB,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,+DAA+D;IAC/D,8DAA8D;IAC9D,iEAAiE;IACjE,mCAAmC;IACnC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACvD,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;IACxB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,GAAG,IAAI,CAAC;IACf,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;IAC1D,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;IAC1D,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;IAC1D,OAAO,GAAG,KAAK,GAAG,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CACnB,IAAY,EACZ,MAAuB,EACvB,OAA6B;IAE7B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE/C,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,aAAa,GAAG,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,gEAAgE;IAChE,gCAAgC;IAChC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAA,+BAAmB,EAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAE7D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEpB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,OAA6B,EAC7B,IAAY,EACZ,MAAuB,EACvB,KAA4B;AAC5B,6DAA6D;AAC7D,OAA4B;IAE5B,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IAExE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,SAAS;YACZ,KAAK,CAAC,aAAa,QAAQ,kBAAkB,CAAC,CAAC;YAC/C,OAAO;QAET,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;YACpE,IAAI,WAAW,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,OAAO;QACT,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,KAAK,CAAC,WAAW,QAAQ,KAAK,CAAC,CAAC;gBAChC,MAAM,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;YAED,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtD,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,OAAO;QACT,CAAC;IACH,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,OAA6B,EAC7B,IAAY;IAEZ,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,OAA6B,EAC7B,IAAY;IAEZ,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACrD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAEhC,4DAA4D;IAC5D,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE;QACzC,SAAS;QACT,UAAU;QACV,wEAAwE;QACxE,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEhC,oEAAoE;IACpE,uEAAuE;IACvE,qEAAqE;IACrE,yEAAyE;IACzE,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE;QACzB,MAAM;QACN,QAAQ;QACR,OAAO;QACP,IAAI;QACJ,OAAO;QACP,GAAG,MAAM;KACV,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,OAA6B,EAC7B,IAAY;IAEZ,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,OAA6B,EAC7B,IAAY;IAEZ,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,OAA6B;IAE7B,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE;QACxC,IAAI;QACJ,IAAI;QACJ,UAAU;QACV,QAAQ,gBAAgB,EAAE;QAC1B,UAAU;QACV,iEAAiE;KAClE,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvD,OAAO,MAAM,CAAC,MAAM;SACjB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAmB,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;YACjE,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,CAAC;QACd,OAAO;YACL,IAAI;YACJ,KAAK;YACL,KAAK;YACL,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;YACzD,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,OAA6B;IAE7B,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC1E,OAAO;QACL,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM;QACrE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK;KAC7C,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,OAA6B,EAC7B,IAAY,EACZ,OAAiB;IAEjB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,IAAA,qBAAW,EAAC,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AAC9D,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,OAA6B,EAC7B,IAAY;IAEZ,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IACzE,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,OAA6B,EAC7B,IAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACpC,OAA6B,EAC7B,aAAqB,EACrB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE;QACxC,SAAS;QACT,SAAS;QACT,WAAW;QACX,QAAQ;KACT,CAAC,CAAC;IACH,IACE,MAAM,CAAC,QAAQ,KAAK,CAAC;QACrB,4CAA4C;QAC5C,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC5C,6DAA6D;QAC7D,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EACpD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,OAAO,WAAW,KAAK,MAAM,CAAC,MAAM,EAAE,CACpE,CAAC;IACJ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,OAA6B,EAC7B,aAAqB,EACrB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAW,EAAC,OAAO,EAAE;QACxC,SAAS;QACT,YAAY;QACZ,WAAW;QACX,QAAQ;KACT,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CACb,wBAAwB,QAAQ,SAAS,WAAW,KAAK,MAAM,CAAC,MAAM,EAAE,CACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,GAAW,EACX,YAAoB,KAAK,EACzB,aAAqB,GAAG;IAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,GAAG,CAAC,EAAE;gBAAE,OAAO;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB;QAClB,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,kBAAkB,CAAC,CAAC;AAClE,CAAC"}
|