@ostanin/podman 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +432 -0
- package/esm/_dnt.polyfills.d.ts +7 -0
- package/esm/_dnt.polyfills.d.ts.map +1 -0
- package/esm/_dnt.polyfills.js +1 -0
- package/esm/api/artifacts.d.ts +25 -0
- package/esm/api/artifacts.d.ts.map +1 -0
- package/esm/api/artifacts.js +89 -0
- package/esm/api/containers.d.ts +71 -0
- package/esm/api/containers.d.ts.map +1 -0
- package/esm/api/containers.js +234 -0
- package/esm/api/exec.d.ts +15 -0
- package/esm/api/exec.d.ts.map +1 -0
- package/esm/api/exec.js +45 -0
- package/esm/api/generate.d.ts +11 -0
- package/esm/api/generate.d.ts.map +1 -0
- package/esm/api/generate.js +24 -0
- package/esm/api/images.d.ts +55 -0
- package/esm/api/images.d.ts.map +1 -0
- package/esm/api/images.js +212 -0
- package/esm/api/kube.d.ts +13 -0
- package/esm/api/kube.d.ts.map +1 -0
- package/esm/api/kube.js +38 -0
- package/esm/api/manifests.d.ts +19 -0
- package/esm/api/manifests.d.ts.map +1 -0
- package/esm/api/manifests.js +60 -0
- package/esm/api/networks.d.ts +25 -0
- package/esm/api/networks.d.ts.map +1 -0
- package/esm/api/networks.js +95 -0
- package/esm/api/pods.d.ts +35 -0
- package/esm/api/pods.d.ts.map +1 -0
- package/esm/api/pods.js +120 -0
- package/esm/api/quadlets.d.ts +23 -0
- package/esm/api/quadlets.d.ts.map +1 -0
- package/esm/api/quadlets.js +56 -0
- package/esm/api/secrets.d.ts +17 -0
- package/esm/api/secrets.d.ts.map +1 -0
- package/esm/api/secrets.js +49 -0
- package/esm/api/system.d.ts +23 -0
- package/esm/api/system.d.ts.map +1 -0
- package/esm/api/system.js +98 -0
- package/esm/api/volumes.d.ts +23 -0
- package/esm/api/volumes.d.ts.map +1 -0
- package/esm/api/volumes.js +69 -0
- package/esm/client.d.ts +56 -0
- package/esm/client.d.ts.map +1 -0
- package/esm/client.js +63 -0
- package/esm/internal/query.d.ts +2 -0
- package/esm/internal/query.d.ts.map +1 -0
- package/esm/internal/query.js +24 -0
- package/esm/mod.d.ts +22 -0
- package/esm/mod.d.ts.map +1 -0
- package/esm/mod.js +18 -0
- package/esm/package.json +3 -0
- package/esm/ssh_transport.d.ts +14 -0
- package/esm/ssh_transport.d.ts.map +1 -0
- package/esm/ssh_transport.js +85 -0
- package/esm/transport.d.ts +23 -0
- package/esm/transport.d.ts.map +1 -0
- package/esm/transport.js +112 -0
- package/esm/transport_core.d.ts +31 -0
- package/esm/transport_core.d.ts.map +1 -0
- package/esm/transport_core.js +75 -0
- package/esm/types/api.d.ts +61 -0
- package/esm/types/api.d.ts.map +1 -0
- package/esm/types/api.js +5 -0
- package/esm/types/errors.d.ts +21 -0
- package/esm/types/errors.d.ts.map +1 -0
- package/esm/types/errors.js +47 -0
- package/esm/types/openapi.d.ts +19552 -0
- package/esm/types/openapi.d.ts.map +1 -0
- package/esm/types/openapi.js +5 -0
- package/package.json +36 -0
- package/script/_dnt.polyfills.d.ts +7 -0
- package/script/_dnt.polyfills.d.ts.map +1 -0
- package/script/_dnt.polyfills.js +2 -0
- package/script/api/artifacts.d.ts +25 -0
- package/script/api/artifacts.d.ts.map +1 -0
- package/script/api/artifacts.js +93 -0
- package/script/api/containers.d.ts +71 -0
- package/script/api/containers.d.ts.map +1 -0
- package/script/api/containers.js +238 -0
- package/script/api/exec.d.ts +15 -0
- package/script/api/exec.d.ts.map +1 -0
- package/script/api/exec.js +49 -0
- package/script/api/generate.d.ts +11 -0
- package/script/api/generate.d.ts.map +1 -0
- package/script/api/generate.js +28 -0
- package/script/api/images.d.ts +55 -0
- package/script/api/images.d.ts.map +1 -0
- package/script/api/images.js +216 -0
- package/script/api/kube.d.ts +13 -0
- package/script/api/kube.d.ts.map +1 -0
- package/script/api/kube.js +42 -0
- package/script/api/manifests.d.ts +19 -0
- package/script/api/manifests.d.ts.map +1 -0
- package/script/api/manifests.js +64 -0
- package/script/api/networks.d.ts +25 -0
- package/script/api/networks.d.ts.map +1 -0
- package/script/api/networks.js +99 -0
- package/script/api/pods.d.ts +35 -0
- package/script/api/pods.d.ts.map +1 -0
- package/script/api/pods.js +124 -0
- package/script/api/quadlets.d.ts +23 -0
- package/script/api/quadlets.d.ts.map +1 -0
- package/script/api/quadlets.js +60 -0
- package/script/api/secrets.d.ts +17 -0
- package/script/api/secrets.d.ts.map +1 -0
- package/script/api/secrets.js +53 -0
- package/script/api/system.d.ts +23 -0
- package/script/api/system.d.ts.map +1 -0
- package/script/api/system.js +102 -0
- package/script/api/volumes.d.ts +23 -0
- package/script/api/volumes.d.ts.map +1 -0
- package/script/api/volumes.js +73 -0
- package/script/client.d.ts +56 -0
- package/script/client.d.ts.map +1 -0
- package/script/client.js +67 -0
- package/script/internal/query.d.ts +2 -0
- package/script/internal/query.d.ts.map +1 -0
- package/script/internal/query.js +27 -0
- package/script/mod.d.ts +22 -0
- package/script/mod.d.ts.map +1 -0
- package/script/mod.js +42 -0
- package/script/package.json +3 -0
- package/script/ssh_transport.d.ts +14 -0
- package/script/ssh_transport.d.ts.map +1 -0
- package/script/ssh_transport.js +121 -0
- package/script/transport.d.ts +23 -0
- package/script/transport.d.ts.map +1 -0
- package/script/transport.js +149 -0
- package/script/transport_core.d.ts +31 -0
- package/script/transport_core.d.ts.map +1 -0
- package/script/transport_core.js +78 -0
- package/script/types/api.d.ts +61 -0
- package/script/types/api.d.ts.map +1 -0
- package/script/types/api.js +6 -0
- package/script/types/errors.d.ts +21 -0
- package/script/types/errors.d.ts.map +1 -0
- package/script/types/errors.js +54 -0
- package/script/types/openapi.d.ts +19552 -0
- package/script/types/openapi.d.ts.map +1 -0
- package/script/types/openapi.js +6 -0
package/README.md
ADDED
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
# podman
|
|
2
|
+
|
|
3
|
+
Typed Podman client for Deno and Node.js. Zero dependencies. Full libpod API with Unix socket, TCP, TLS, and SSH transports.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Native Podman API** — Uses libpod endpoints directly (not Docker compat layer)
|
|
8
|
+
- **Full type safety** — Types auto-generated from Podman's OpenAPI specification
|
|
9
|
+
- **Zero dependencies** — No external packages on either runtime
|
|
10
|
+
- **Dual runtime** — First-class support for both Deno and Node.js
|
|
11
|
+
- **4 transports** — Unix socket, TCP, TLS (mTLS), SSH tunnel
|
|
12
|
+
- **13 API modules** — Containers, Images, Networks, Volumes, Pods, Secrets, System, Exec, Generate, Manifests, Kube, Artifacts, Quadlets
|
|
13
|
+
|
|
14
|
+
## Install
|
|
15
|
+
|
|
16
|
+
### Deno
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
import { createClient } from "jsr:@kaberc/podman";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Or add to `deno.json`:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"imports": {
|
|
27
|
+
"@kaberc/podman": "jsr:@kaberc/podman"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Node.js
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
npm install @ostanin/podman
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import { createClient } from "@ostanin/podman";
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Requirements:**
|
|
43
|
+
- Deno 2.4+ or Node.js 18+
|
|
44
|
+
- Podman with libpod API v4.0.0+
|
|
45
|
+
|
|
46
|
+
## Quick Start
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
// Deno
|
|
50
|
+
import { createClient } from "jsr:@kaberc/podman";
|
|
51
|
+
// Node.js
|
|
52
|
+
// import { createClient } from "@ostanin/podman";
|
|
53
|
+
|
|
54
|
+
const podman = createClient({ socketPath: "/run/podman/podman.sock" });
|
|
55
|
+
|
|
56
|
+
// Pull and run a container
|
|
57
|
+
await podman.images.pull({ reference: "docker.io/library/alpine:latest" });
|
|
58
|
+
const { Id } = await podman.containers.create({
|
|
59
|
+
name: "my-app",
|
|
60
|
+
image: "alpine:latest",
|
|
61
|
+
});
|
|
62
|
+
await podman.containers.start("my-app");
|
|
63
|
+
|
|
64
|
+
// Execute a command and read the output stream
|
|
65
|
+
const execId = await podman.exec.create("my-app", {
|
|
66
|
+
Cmd: ["echo", "hello"],
|
|
67
|
+
AttachStdout: true,
|
|
68
|
+
});
|
|
69
|
+
const stream = await podman.exec.start(execId);
|
|
70
|
+
for await (const chunk of stream) {
|
|
71
|
+
console.log(new TextDecoder().decode(chunk));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Clean up
|
|
75
|
+
await podman.containers.stop("my-app");
|
|
76
|
+
await podman.containers.remove("my-app", { force: true });
|
|
77
|
+
podman.close();
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Transports
|
|
81
|
+
|
|
82
|
+
### Unix Socket (default)
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
const podman = createClient({ socketPath: "/run/podman/podman.sock" });
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
| Option | Type | Default | Description |
|
|
89
|
+
| ------------ | -------- | --------- | ---------------------------- |
|
|
90
|
+
| `socketPath` | `string` | — | Path to Podman's Unix socket |
|
|
91
|
+
| `apiVersion` | `string` | `"4.0.0"` | Podman API version |
|
|
92
|
+
| `timeout` | `number` | `30000` | Request timeout (ms) |
|
|
93
|
+
| `auth` | `object` | — | Registry credentials |
|
|
94
|
+
|
|
95
|
+
### TCP (Remote Podman API)
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
const podman = createClient({ uri: "http://192.168.1.100:8080" });
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Enable the Podman API on the remote machine:
|
|
102
|
+
|
|
103
|
+
```sh
|
|
104
|
+
podman system service --time=0 tcp:0.0.0.0:8080
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
| Option | Type | Default | Description |
|
|
108
|
+
| ------------ | -------- | --------- | -------------------------------- |
|
|
109
|
+
| `uri` | `string` | — | HTTP/HTTPS endpoint |
|
|
110
|
+
| `apiVersion` | `string` | `"4.0.0"` | Podman API version |
|
|
111
|
+
| `timeout` | `number` | `30000` | Request timeout (ms) |
|
|
112
|
+
| `auth` | `object` | — | Registry credentials |
|
|
113
|
+
| `tls` | `object` | — | TLS options (see below) |
|
|
114
|
+
|
|
115
|
+
#### TLS (HTTPS)
|
|
116
|
+
|
|
117
|
+
For HTTPS with custom CA or client certificates (mTLS):
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
// Deno
|
|
121
|
+
const podman = createClient({
|
|
122
|
+
uri: "https://podman.example.com:8443",
|
|
123
|
+
tls: {
|
|
124
|
+
caCerts: [await Deno.readTextFile("/path/to/ca.pem")],
|
|
125
|
+
cert: await Deno.readTextFile("/path/to/client-cert.pem"),
|
|
126
|
+
key: await Deno.readTextFile("/path/to/client-key.pem"),
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
// Node.js
|
|
131
|
+
import { readFileSync } from "node:fs";
|
|
132
|
+
|
|
133
|
+
const podman = createClient({
|
|
134
|
+
uri: "https://podman.example.com:8443",
|
|
135
|
+
tls: {
|
|
136
|
+
caCerts: [readFileSync("/path/to/ca.pem", "utf8")],
|
|
137
|
+
cert: readFileSync("/path/to/client-cert.pem", "utf8"),
|
|
138
|
+
key: readFileSync("/path/to/client-key.pem", "utf8"),
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
| TLS Option | Type | Description |
|
|
144
|
+
| ---------- | ---------- | ------------------------------------------- |
|
|
145
|
+
| `caCerts` | `string[]` | PEM-encoded CA certificates for the server |
|
|
146
|
+
| `cert` | `string` | PEM-encoded client certificate chain (mTLS) |
|
|
147
|
+
| `key` | `string` | PEM-encoded client private key (mTLS) |
|
|
148
|
+
|
|
149
|
+
Standard HTTPS (with system CA trust store) works without `tls` options — just use an `https://` URI.
|
|
150
|
+
|
|
151
|
+
### SSH Tunnel (Remote Podman via SSH)
|
|
152
|
+
|
|
153
|
+
Tunnels a Unix socket over SSH. Requires the `ssh` binary on the local machine:
|
|
154
|
+
|
|
155
|
+
```ts
|
|
156
|
+
import { createSshClient } from "@ostanin/podman"; // or jsr:@kaberc/podman
|
|
157
|
+
|
|
158
|
+
const podman = await createSshClient({ host: "user@remote-server" });
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
| Option | Type | Default | Description |
|
|
162
|
+
| ------------------ | ---------- | ---------------------------- | ------------------------------------ |
|
|
163
|
+
| `host` | `string` | — | SSH destination (e.g. `user@host`) |
|
|
164
|
+
| `remoteSocketPath` | `string` | `/run/podman/podman.sock` | Socket path on remote machine |
|
|
165
|
+
| `port` | `number` | `22` | SSH port |
|
|
166
|
+
| `identityFile` | `string` | — | Path to SSH private key |
|
|
167
|
+
| `sshOptions` | `string[]` | `[]` | Extra SSH arguments |
|
|
168
|
+
| `apiVersion` | `string` | `"4.0.0"` | Podman API version |
|
|
169
|
+
| `timeout` | `number` | `30000` | Request timeout (ms) |
|
|
170
|
+
| `auth` | `object` | — | Registry credentials |
|
|
171
|
+
|
|
172
|
+
```ts
|
|
173
|
+
const podman = await createSshClient({
|
|
174
|
+
host: "deploy@prod-server",
|
|
175
|
+
port: 2222,
|
|
176
|
+
identityFile: "/home/me/.ssh/id_ed25519",
|
|
177
|
+
remoteSocketPath: "/run/user/1000/podman/podman.sock",
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
The `auth` option accepts either `{ username, password }` or `{ identityToken }` for private registry operations.
|
|
182
|
+
|
|
183
|
+
## API Reference
|
|
184
|
+
|
|
185
|
+
### Containers
|
|
186
|
+
|
|
187
|
+
| Method | Description |
|
|
188
|
+
| --- | --- |
|
|
189
|
+
| `create(spec)` | Create a container |
|
|
190
|
+
| `inspect(nameOrId)` | Inspect a container (returns `null` on 404) |
|
|
191
|
+
| `list(query?)` | List containers |
|
|
192
|
+
| `start(nameOrId)` | Start a container |
|
|
193
|
+
| `stop(nameOrId, query?)` | Stop a container |
|
|
194
|
+
| `restart(nameOrId, query?)` | Restart a container |
|
|
195
|
+
| `kill(nameOrId, query?)` | Send signal to container |
|
|
196
|
+
| `pause(nameOrId)` | Pause a container |
|
|
197
|
+
| `unpause(nameOrId)` | Unpause a container |
|
|
198
|
+
| `remove(nameOrId, query?)` | Remove a container |
|
|
199
|
+
| `logs(nameOrId, query?)` | Stream container logs |
|
|
200
|
+
| `top(nameOrId, query?)` | List processes in container |
|
|
201
|
+
| `wait(nameOrId, query?)` | Wait for container to stop |
|
|
202
|
+
| `rename(nameOrId, newName)` | Rename a container |
|
|
203
|
+
| `resize(nameOrId, query)` | Resize container TTY |
|
|
204
|
+
| `export(nameOrId)` | Export container filesystem |
|
|
205
|
+
| `checkpoint(nameOrId, query?)` | Checkpoint a container |
|
|
206
|
+
| `restore(nameOrId, query?)` | Restore a container |
|
|
207
|
+
| `exists(nameOrId)` | Check if container exists |
|
|
208
|
+
| `prune(query?)` | Remove stopped containers |
|
|
209
|
+
| `stats(nameOrId, query?)` | Stream container resource stats |
|
|
210
|
+
| `attach(nameOrId, query?)` | Attach to a running container |
|
|
211
|
+
| `getArchive(nameOrId, query)` | Get file archive from container |
|
|
212
|
+
| `putArchive(nameOrId, body, query)` | Upload file archive to container |
|
|
213
|
+
| `healthcheck(nameOrId)` | Run container healthcheck |
|
|
214
|
+
| `init(nameOrId)` | Initialize a container |
|
|
215
|
+
| `update(nameOrId, resources, query?)` | Update container resource limits |
|
|
216
|
+
| `changes(nameOrId, query?)` | List filesystem changes |
|
|
217
|
+
| `mount(nameOrId)` | Mount a container's filesystem |
|
|
218
|
+
| `unmount(nameOrId)` | Unmount a container's filesystem |
|
|
219
|
+
| `showMounted()` | List all mounted containers |
|
|
220
|
+
| `statsAll(query?)` | Stream resource stats for all containers |
|
|
221
|
+
|
|
222
|
+
### Images
|
|
223
|
+
|
|
224
|
+
| Method | Description |
|
|
225
|
+
| --- | --- |
|
|
226
|
+
| `list(query?)` | List images |
|
|
227
|
+
| `inspect(nameOrId)` | Inspect an image (returns `null` on 404) |
|
|
228
|
+
| `pull(query)` | Pull an image |
|
|
229
|
+
| `remove(nameOrId, query?)` | Remove an image |
|
|
230
|
+
| `tag(nameOrId, repo, tag?)` | Tag an image |
|
|
231
|
+
| `untag(nameOrId, repo, tag?)` | Untag an image |
|
|
232
|
+
| `search(query)` | Search for images |
|
|
233
|
+
| `history(nameOrId)` | Image layer history |
|
|
234
|
+
| `push(nameOrId, query?)` | Push an image |
|
|
235
|
+
| `import(body, query?)` | Import image from tarball |
|
|
236
|
+
| `export(nameOrId)` | Export image as tarball |
|
|
237
|
+
| `load(body)` | Load images from tar archive |
|
|
238
|
+
| `prune(query?)` | Prune unused images |
|
|
239
|
+
| `build(body, query?)` | Build image from context |
|
|
240
|
+
| `exists(nameOrId)` | Check if image exists |
|
|
241
|
+
| `commit(query)` | Commit container changes to image |
|
|
242
|
+
| `tree(nameOrId, query?)` | Get layer tree representation |
|
|
243
|
+
| `changes(nameOrId, query?)` | List filesystem changes |
|
|
244
|
+
| `resolve(nameOrId)` | Resolve short image name to full reference |
|
|
245
|
+
| `exportMultiple(query?)` | Export multiple images as tar archive |
|
|
246
|
+
| `removeAll(query?)` | Remove one or more images |
|
|
247
|
+
| `scp(nameOrId, query?)` | Copy an image between hosts via SCP |
|
|
248
|
+
| `loadLocal(query)` | Load an image from a local file on the server |
|
|
249
|
+
| `buildLocal(query)` | Build an image from a local directory on the server |
|
|
250
|
+
|
|
251
|
+
### Networks
|
|
252
|
+
|
|
253
|
+
| Method | Description |
|
|
254
|
+
| --- | --- |
|
|
255
|
+
| `create(opts)` | Create a network |
|
|
256
|
+
| `inspect(nameOrId)` | Inspect a network (returns `null` on 404) |
|
|
257
|
+
| `list(query?)` | List networks |
|
|
258
|
+
| `remove(nameOrId)` | Remove a network |
|
|
259
|
+
| `exists(nameOrId)` | Check if network exists |
|
|
260
|
+
| `update(nameOrId, opts)` | Update network DNS servers (Podman 5.0+) |
|
|
261
|
+
| `connect(nameOrId, opts)` | Connect container to network |
|
|
262
|
+
| `disconnect(nameOrId, opts)` | Disconnect container from network |
|
|
263
|
+
| `prune(query?)` | Prune unused networks |
|
|
264
|
+
|
|
265
|
+
### Volumes
|
|
266
|
+
|
|
267
|
+
| Method | Description |
|
|
268
|
+
| --- | --- |
|
|
269
|
+
| `create(opts)` | Create a volume |
|
|
270
|
+
| `inspect(nameOrId)` | Inspect a volume (returns `null` on 404) |
|
|
271
|
+
| `list(query?)` | List volumes |
|
|
272
|
+
| `remove(nameOrId, query?)` | Remove a volume |
|
|
273
|
+
| `exists(nameOrId)` | Check if volume exists |
|
|
274
|
+
| `prune(query?)` | Prune unused volumes |
|
|
275
|
+
| `export(nameOrId)` | Export volume as tar archive |
|
|
276
|
+
| `import(nameOrId, body)` | Import tar archive into volume |
|
|
277
|
+
|
|
278
|
+
### Pods
|
|
279
|
+
|
|
280
|
+
| Method | Description |
|
|
281
|
+
| --- | --- |
|
|
282
|
+
| `create(spec)` | Create a pod |
|
|
283
|
+
| `inspect(nameOrId)` | Inspect a pod (returns `null` on 404) |
|
|
284
|
+
| `list(query?)` | List pods |
|
|
285
|
+
| `remove(nameOrId, query?)` | Remove a pod |
|
|
286
|
+
| `start(nameOrId)` | Start a pod |
|
|
287
|
+
| `stop(nameOrId, query?)` | Stop a pod |
|
|
288
|
+
| `restart(nameOrId)` | Restart a pod |
|
|
289
|
+
| `kill(nameOrId, query?)` | Send signal to pod |
|
|
290
|
+
| `pause(nameOrId)` | Pause a pod |
|
|
291
|
+
| `unpause(nameOrId)` | Unpause a pod |
|
|
292
|
+
| `top(nameOrId, query?)` | List processes in pod |
|
|
293
|
+
| `exists(nameOrId)` | Check if pod exists |
|
|
294
|
+
| `stats(query?)` | Get pod resource stats |
|
|
295
|
+
| `prune()` | Prune stopped pods |
|
|
296
|
+
|
|
297
|
+
### Secrets
|
|
298
|
+
|
|
299
|
+
| Method | Description |
|
|
300
|
+
| --- | --- |
|
|
301
|
+
| `create(data, query)` | Create a secret |
|
|
302
|
+
| `inspect(nameOrId, query?)` | Inspect a secret (returns `null` on 404) |
|
|
303
|
+
| `list(query?)` | List secrets |
|
|
304
|
+
| `remove(nameOrId, query?)` | Remove a secret |
|
|
305
|
+
| `exists(nameOrId)` | Check if secret exists |
|
|
306
|
+
|
|
307
|
+
### System
|
|
308
|
+
|
|
309
|
+
| Method | Description |
|
|
310
|
+
| --- | --- |
|
|
311
|
+
| `info()` | Get Podman system information |
|
|
312
|
+
| `version()` | Get Podman version |
|
|
313
|
+
| `ping()` | Ping Podman (returns boolean) |
|
|
314
|
+
| `prune()` | Prune unused system data |
|
|
315
|
+
| `df()` | Get disk usage (containers, images, volumes) |
|
|
316
|
+
| `events(query?)` | Stream system events (raw bytes) |
|
|
317
|
+
| `parsedEvents(query?)` | Stream system events as parsed JSON |
|
|
318
|
+
| `check(query?)` | Run consistency check on container storage |
|
|
319
|
+
|
|
320
|
+
### Exec
|
|
321
|
+
|
|
322
|
+
| Method | Description |
|
|
323
|
+
| --- | --- |
|
|
324
|
+
| `create(nameOrId, config)` | Create an exec instance (returns exec ID) |
|
|
325
|
+
| `start(id, config?)` | Start exec and stream output |
|
|
326
|
+
| `inspect(id)` | Inspect an exec instance |
|
|
327
|
+
| `resize(id, query)` | Resize exec TTY |
|
|
328
|
+
|
|
329
|
+
### Generate (Podman-specific)
|
|
330
|
+
|
|
331
|
+
| Method | Description |
|
|
332
|
+
| --- | --- |
|
|
333
|
+
| `systemd(nameOrId, query?)` | Generate systemd unit files |
|
|
334
|
+
| `kube(query)` | Generate Kubernetes YAML |
|
|
335
|
+
|
|
336
|
+
### Manifests (Podman-specific)
|
|
337
|
+
|
|
338
|
+
| Method | Description |
|
|
339
|
+
| --- | --- |
|
|
340
|
+
| `create(name, query, opts?)` | Create a manifest list |
|
|
341
|
+
| `inspect(nameOrId, query?)` | Inspect a manifest list (returns `null` on 404) |
|
|
342
|
+
| `exists(nameOrId)` | Check if manifest list exists |
|
|
343
|
+
| `modify(nameOrId, opts, query?)` | Modify a manifest list (add/remove/annotate) |
|
|
344
|
+
| `remove(nameOrId, query?)` | Remove a manifest list |
|
|
345
|
+
| `push(nameOrId, destination, query?)` | Push manifest list to registry |
|
|
346
|
+
|
|
347
|
+
### Kube (Podman-specific)
|
|
348
|
+
|
|
349
|
+
| Method | Description |
|
|
350
|
+
| --- | --- |
|
|
351
|
+
| `play(body, query?)` | Play a Kubernetes YAML file |
|
|
352
|
+
| `down(query?)` | Tear down resources created by play |
|
|
353
|
+
| `apply(body, query?)` | Apply Kubernetes YAML to Podman |
|
|
354
|
+
|
|
355
|
+
### Artifacts (Podman 5.7+)
|
|
356
|
+
|
|
357
|
+
| Method | Description |
|
|
358
|
+
| --- | --- |
|
|
359
|
+
| `list()` | List all artifacts |
|
|
360
|
+
| `inspect(nameOrId)` | Inspect an artifact (returns `null` on 404) |
|
|
361
|
+
| `add(body, query)` | Add a file as a new artifact |
|
|
362
|
+
| `addLocal(query)` | Add a local file as an artifact |
|
|
363
|
+
| `remove(nameOrId)` | Remove an artifact |
|
|
364
|
+
| `removeAll(query?)` | Remove one or more artifacts |
|
|
365
|
+
| `extract(nameOrId, query?)` | Extract artifact contents as tar stream |
|
|
366
|
+
| `push(nameOrId, query?)` | Push artifact to remote registry |
|
|
367
|
+
| `pull(query)` | Pull artifact from remote registry |
|
|
368
|
+
|
|
369
|
+
### Quadlets (Podman 5.x+)
|
|
370
|
+
|
|
371
|
+
| Method | Description |
|
|
372
|
+
| --- | --- |
|
|
373
|
+
| `list(query?)` | List all quadlets |
|
|
374
|
+
| `install(body, query?)` | Install quadlet files from tar archive |
|
|
375
|
+
| `remove(name, query?)` | Remove a quadlet |
|
|
376
|
+
| `removeAll(query?)` | Remove one or more quadlets |
|
|
377
|
+
| `exists(name)` | Check if a quadlet exists |
|
|
378
|
+
| `file(name)` | Get quadlet file contents |
|
|
379
|
+
|
|
380
|
+
## Error Handling
|
|
381
|
+
|
|
382
|
+
- **404 responses**: `inspect()` methods return `null` instead of throwing
|
|
383
|
+
- **Other errors**: Throw `PodmanError` with `status`, `message`, `method`, and `path`
|
|
384
|
+
|
|
385
|
+
```ts
|
|
386
|
+
import { PodmanError } from "@ostanin/podman"; // or jsr:@kaberc/podman
|
|
387
|
+
|
|
388
|
+
try {
|
|
389
|
+
await podman.containers.start("nonexistent");
|
|
390
|
+
} catch (e) {
|
|
391
|
+
if (e instanceof PodmanError) {
|
|
392
|
+
console.error(`${e.method} ${e.path}: ${e.status} ${e.message}`);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
## Streaming
|
|
398
|
+
|
|
399
|
+
Methods returning `ReadableStream<Uint8Array>` (logs, stats, attach, events, export) stream data as raw bytes:
|
|
400
|
+
|
|
401
|
+
```ts
|
|
402
|
+
const stream = await podman.containers.logs("my-app", {
|
|
403
|
+
follow: true,
|
|
404
|
+
stdout: true,
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
for await (const chunk of stream) {
|
|
408
|
+
console.log(new TextDecoder().decode(chunk));
|
|
409
|
+
}
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
For system events, use `parsedEvents()` for structured data:
|
|
413
|
+
|
|
414
|
+
```ts
|
|
415
|
+
for await (const event of podman.system.parsedEvents()) {
|
|
416
|
+
console.log(event.Type, event.Action, event.Actor);
|
|
417
|
+
}
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
## Building the npm Package
|
|
421
|
+
|
|
422
|
+
The npm package is built from the Deno source using [`dnt`](https://github.com/denoland/dnt):
|
|
423
|
+
|
|
424
|
+
```sh
|
|
425
|
+
deno task build-npm 0.1.0
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
This outputs a complete npm package to `./npm/` with ESM, CJS, and type declarations.
|
|
429
|
+
|
|
430
|
+
## License
|
|
431
|
+
|
|
432
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_dnt.polyfills.d.ts","sourceRoot":"","sources":["../src/_dnt.polyfills.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,KAAK;QACb,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB;CACF;AAED,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Transport } from "../transport.js";
|
|
2
|
+
import type { ArtifactAddQuery, ArtifactAddReport, ArtifactRemoveAllQuery, ArtifactExtractQuery, ArtifactInspectReport, ArtifactListReport, ArtifactLocalQuery, ArtifactPullQuery, ArtifactPullReport, ArtifactPushQuery, ArtifactPushReport, ArtifactRemoveReport } from "../types/api.js";
|
|
3
|
+
export declare class ArtifactsApi {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(transport: Transport);
|
|
6
|
+
/** Remove a single artifact by name or ID. */
|
|
7
|
+
remove(nameOrId: string): Promise<ArtifactRemoveReport>;
|
|
8
|
+
/** Extract an artifact's contents as a tar archive stream. */
|
|
9
|
+
extract(nameOrId: string, query?: ArtifactExtractQuery): Promise<ReadableStream<Uint8Array>>;
|
|
10
|
+
/** Inspect an artifact. Returns `null` if not found. */
|
|
11
|
+
inspect(nameOrId: string): Promise<ArtifactInspectReport | null>;
|
|
12
|
+
/** Push an artifact to a remote registry. */
|
|
13
|
+
push(nameOrId: string, query?: ArtifactPushQuery): Promise<ArtifactPushReport>;
|
|
14
|
+
/** Add a file as a new artifact. */
|
|
15
|
+
add(body: ReadableStream<Uint8Array>, query: ArtifactAddQuery): Promise<ArtifactAddReport>;
|
|
16
|
+
/** List all artifacts. */
|
|
17
|
+
list(): Promise<ArtifactListReport[]>;
|
|
18
|
+
/** Add a local file as an artifact. */
|
|
19
|
+
addLocal(query: ArtifactLocalQuery): Promise<ArtifactAddReport>;
|
|
20
|
+
/** Pull an artifact from a remote registry. */
|
|
21
|
+
pull(query: ArtifactPullQuery): Promise<ArtifactPullReport>;
|
|
22
|
+
/** Remove one or more artifacts. */
|
|
23
|
+
removeAll(query?: ArtifactRemoveAllQuery): Promise<ArtifactRemoveReport>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/api/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAGzB,qBAAa,YAAY;;gBAEX,SAAS,EAAE,SAAS;IAIhC,8CAA8C;IACxC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAO7D,8DAA8D;IACxD,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,oBAAoB,GAC3B,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAMtC,wDAAwD;IAClD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAQtE,6CAA6C;IACvC,IAAI,CACR,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,iBAAiB,GACxB,OAAO,CAAC,kBAAkB,CAAC;IAW9B,oCAAoC;IAC9B,GAAG,CACP,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC;IAS7B,0BAA0B;IACpB,IAAI,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAO3C,uCAAuC;IACjC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAOrE,+CAA+C;IACzC,IAAI,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAUjE,oCAAoC;IAC9B,SAAS,CAAC,KAAK,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAM/E"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { createPodmanError, throwRawError } from "../types/errors.js";
|
|
2
|
+
import { buildQuery } from "../internal/query.js";
|
|
3
|
+
export class ArtifactsApi {
|
|
4
|
+
#t;
|
|
5
|
+
constructor(transport) {
|
|
6
|
+
this.#t = transport;
|
|
7
|
+
}
|
|
8
|
+
/** Remove a single artifact by name or ID. */
|
|
9
|
+
async remove(nameOrId) {
|
|
10
|
+
const path = `/artifacts/${encodeURIComponent(nameOrId)}`;
|
|
11
|
+
const { status, json } = await this.#t.request("DELETE", path);
|
|
12
|
+
if (status !== 200)
|
|
13
|
+
throw createPodmanError(status, json, "DELETE", path);
|
|
14
|
+
return json;
|
|
15
|
+
}
|
|
16
|
+
/** Extract an artifact's contents as a tar archive stream. */
|
|
17
|
+
async extract(nameOrId, query) {
|
|
18
|
+
const path = `/artifacts/${encodeURIComponent(nameOrId)}/extract${buildQuery(query)}`;
|
|
19
|
+
return await this.#t.requestStream("GET", path);
|
|
20
|
+
}
|
|
21
|
+
/** Inspect an artifact. Returns `null` if not found. */
|
|
22
|
+
async inspect(nameOrId) {
|
|
23
|
+
const path = `/artifacts/${encodeURIComponent(nameOrId)}/json`;
|
|
24
|
+
const { status, json } = await this.#t.request("GET", path);
|
|
25
|
+
if (status === 404)
|
|
26
|
+
return null;
|
|
27
|
+
if (status !== 200)
|
|
28
|
+
throw createPodmanError(status, json, "GET", path);
|
|
29
|
+
return json;
|
|
30
|
+
}
|
|
31
|
+
/** Push an artifact to a remote registry. */
|
|
32
|
+
async push(nameOrId, query) {
|
|
33
|
+
const path = `/artifacts/${encodeURIComponent(nameOrId)}/push${buildQuery(query)}`;
|
|
34
|
+
const headers = {};
|
|
35
|
+
const authHeader = this.#t.getAuthHeader();
|
|
36
|
+
if (authHeader)
|
|
37
|
+
headers["X-Registry-Auth"] = authHeader;
|
|
38
|
+
const res = await this.#t.requestRaw("POST", path, undefined, headers);
|
|
39
|
+
if (res.status !== 200)
|
|
40
|
+
await throwRawError(res, "POST", path);
|
|
41
|
+
return (await res.json());
|
|
42
|
+
}
|
|
43
|
+
/** Add a file as a new artifact. */
|
|
44
|
+
async add(body, query) {
|
|
45
|
+
const path = `/artifacts/add${buildQuery(query)}`;
|
|
46
|
+
const res = await this.#t.requestRaw("POST", path, body, {
|
|
47
|
+
"Content-Type": "application/octet-stream",
|
|
48
|
+
});
|
|
49
|
+
if (res.status !== 201)
|
|
50
|
+
await throwRawError(res, "POST", path);
|
|
51
|
+
return (await res.json());
|
|
52
|
+
}
|
|
53
|
+
/** List all artifacts. */
|
|
54
|
+
async list() {
|
|
55
|
+
const path = "/artifacts/json";
|
|
56
|
+
const { status, json } = await this.#t.request("GET", path);
|
|
57
|
+
if (status !== 200)
|
|
58
|
+
throw createPodmanError(status, json, "GET", path);
|
|
59
|
+
return (json ?? []);
|
|
60
|
+
}
|
|
61
|
+
/** Add a local file as an artifact. */
|
|
62
|
+
async addLocal(query) {
|
|
63
|
+
const path = `/artifacts/local/add${buildQuery(query)}`;
|
|
64
|
+
const { status, json } = await this.#t.request("POST", path);
|
|
65
|
+
if (status !== 201)
|
|
66
|
+
throw createPodmanError(status, json, "POST", path);
|
|
67
|
+
return json;
|
|
68
|
+
}
|
|
69
|
+
/** Pull an artifact from a remote registry. */
|
|
70
|
+
async pull(query) {
|
|
71
|
+
const path = `/artifacts/pull${buildQuery(query)}`;
|
|
72
|
+
const headers = {};
|
|
73
|
+
const authHeader = this.#t.getAuthHeader();
|
|
74
|
+
if (authHeader)
|
|
75
|
+
headers["X-Registry-Auth"] = authHeader;
|
|
76
|
+
const res = await this.#t.requestRaw("POST", path, undefined, headers);
|
|
77
|
+
if (res.status !== 200)
|
|
78
|
+
await throwRawError(res, "POST", path);
|
|
79
|
+
return (await res.json());
|
|
80
|
+
}
|
|
81
|
+
/** Remove one or more artifacts. */
|
|
82
|
+
async removeAll(query) {
|
|
83
|
+
const path = `/artifacts/remove${buildQuery(query)}`;
|
|
84
|
+
const { status, json } = await this.#t.request("DELETE", path);
|
|
85
|
+
if (status !== 200)
|
|
86
|
+
throw createPodmanError(status, json, "DELETE", path);
|
|
87
|
+
return json;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { Transport } from "../transport.js";
|
|
2
|
+
import type { ContainerArchiveQuery, ContainerArchivePutQuery, ContainerAttachQuery, ContainerChange, ContainerChangesQuery, ContainerCheckpointQuery, ContainerCreateResponse, ContainerStatsAllQuery, ContainerKillQuery, ContainerListQuery, ContainerLogsQuery, ContainerPruneQuery, ContainerRemoveQuery, ContainerResizeQuery, ContainerRestartQuery, ContainerRestoreQuery, ContainersPruneReport, ContainerStatsQuery, ContainerStopQuery, ContainerTopQuery, ContainerTopResponse, ContainerUpdateQuery, ContainerWaitQuery, HealthCheckResults, InspectContainerData, ListContainer, SpecGenerator, UpdateEntities } from "../types/api.js";
|
|
3
|
+
export declare class ContainersApi {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(transport: Transport);
|
|
6
|
+
/** Create a new container from the given spec. */
|
|
7
|
+
create(spec: SpecGenerator): Promise<ContainerCreateResponse>;
|
|
8
|
+
/** Inspect a container. Returns `null` if the container is not found. */
|
|
9
|
+
inspect(nameOrId: string): Promise<InspectContainerData | null>;
|
|
10
|
+
/** List containers, optionally filtered by the given query. */
|
|
11
|
+
list(query?: ContainerListQuery): Promise<ListContainer[]>;
|
|
12
|
+
/** Start a container. */
|
|
13
|
+
start(nameOrId: string): Promise<void>;
|
|
14
|
+
/** Stop a container with an optional timeout. */
|
|
15
|
+
stop(nameOrId: string, query?: ContainerStopQuery): Promise<void>;
|
|
16
|
+
/** Restart a container with an optional timeout. */
|
|
17
|
+
restart(nameOrId: string, query?: ContainerRestartQuery): Promise<void>;
|
|
18
|
+
/** Send a signal to a container (default SIGTERM). */
|
|
19
|
+
kill(nameOrId: string, query?: ContainerKillQuery): Promise<void>;
|
|
20
|
+
/** Pause all processes in a container. */
|
|
21
|
+
pause(nameOrId: string): Promise<void>;
|
|
22
|
+
/** Unpause all processes in a container. */
|
|
23
|
+
unpause(nameOrId: string): Promise<void>;
|
|
24
|
+
/** Remove a container. Use query options to force-remove or remove volumes. */
|
|
25
|
+
remove(nameOrId: string, query?: ContainerRemoveQuery): Promise<void>;
|
|
26
|
+
/** Stream container logs as raw bytes. */
|
|
27
|
+
logs(nameOrId: string, query?: ContainerLogsQuery): Promise<ReadableStream<Uint8Array>>;
|
|
28
|
+
/** List processes running inside a container. */
|
|
29
|
+
top(nameOrId: string, query?: ContainerTopQuery): Promise<ContainerTopResponse>;
|
|
30
|
+
/** Wait for a container to meet a given condition. Returns the exit code. */
|
|
31
|
+
wait(nameOrId: string, query?: ContainerWaitQuery): Promise<number>;
|
|
32
|
+
/** Rename a container. */
|
|
33
|
+
rename(nameOrId: string, newName: string): Promise<void>;
|
|
34
|
+
/** Resize a container's TTY dimensions. */
|
|
35
|
+
resize(nameOrId: string, query: ContainerResizeQuery): Promise<void>;
|
|
36
|
+
/** Export a container's filesystem as a tar stream. */
|
|
37
|
+
export(nameOrId: string): Promise<ReadableStream<Uint8Array>>;
|
|
38
|
+
/** Checkpoint a running container using CRIU. */
|
|
39
|
+
checkpoint(nameOrId: string, query?: ContainerCheckpointQuery): Promise<void>;
|
|
40
|
+
/** Restore a previously checkpointed container. */
|
|
41
|
+
restore(nameOrId: string, query?: ContainerRestoreQuery): Promise<void>;
|
|
42
|
+
/** Check if a container exists. Returns `true` on 204, `false` otherwise. */
|
|
43
|
+
exists(nameOrId: string): Promise<boolean>;
|
|
44
|
+
/** Remove stopped containers. Returns a list of pruned containers. */
|
|
45
|
+
prune(query?: ContainerPruneQuery): Promise<ContainersPruneReport[]>;
|
|
46
|
+
/** Stream resource usage statistics for a container. */
|
|
47
|
+
stats(nameOrId: string, query?: ContainerStatsQuery): Promise<ReadableStream<Uint8Array>>;
|
|
48
|
+
/** Attach to a container and stream its output. */
|
|
49
|
+
attach(nameOrId: string, query?: ContainerAttachQuery): Promise<ReadableStream<Uint8Array>>;
|
|
50
|
+
/** Download a file or directory from a container as a tar archive stream. */
|
|
51
|
+
getArchive(nameOrId: string, query: ContainerArchiveQuery): Promise<ReadableStream<Uint8Array>>;
|
|
52
|
+
/** Upload a tar archive stream into a container at the specified path. */
|
|
53
|
+
putArchive(nameOrId: string, body: ReadableStream<Uint8Array>, query: ContainerArchivePutQuery): Promise<void>;
|
|
54
|
+
/** Run a container health check and return the results. */
|
|
55
|
+
healthcheck(nameOrId: string): Promise<HealthCheckResults>;
|
|
56
|
+
/** Initialize a container, preparing it to be started. */
|
|
57
|
+
init(nameOrId: string): Promise<void>;
|
|
58
|
+
/** Update a container's resource limits. */
|
|
59
|
+
update(nameOrId: string, resources: UpdateEntities, query?: ContainerUpdateQuery): Promise<void>;
|
|
60
|
+
/** List filesystem changes made inside a container. */
|
|
61
|
+
changes(nameOrId: string, query?: ContainerChangesQuery): Promise<ContainerChange[]>;
|
|
62
|
+
/** Mount a container's filesystem. Returns the mount path. */
|
|
63
|
+
mount(nameOrId: string): Promise<string>;
|
|
64
|
+
/** Unmount a container's filesystem. */
|
|
65
|
+
unmount(nameOrId: string): Promise<void>;
|
|
66
|
+
/** List all mounted containers and their mount points. */
|
|
67
|
+
showMounted(): Promise<Record<string, string>>;
|
|
68
|
+
/** Stream resource usage statistics for all containers. */
|
|
69
|
+
statsAll(query?: ContainerStatsAllQuery): Promise<ReadableStream<Uint8Array>>;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=containers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../src/api/containers.ts"],"names":[],"mappings":"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"}
|