@zukhruf/testing 0.3.37 → 0.3.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +40 -36
  2. package/dist/databases/clickhouse.d.ts +3 -3
  3. package/dist/databases/clickhouse.d.ts.map +1 -1
  4. package/dist/databases/clickhouse.js +2 -3
  5. package/dist/databases/clickhouse.js.map +1 -1
  6. package/dist/databases/database.d.ts +2 -2
  7. package/dist/databases/database.d.ts.map +1 -1
  8. package/dist/databases/mysql-family-server.d.ts.map +1 -1
  9. package/dist/databases/mysql-family-server.js +5 -4
  10. package/dist/databases/mysql-family-server.js.map +1 -1
  11. package/dist/databases/postgres.d.ts.map +1 -1
  12. package/dist/databases/postgres.js +11 -4
  13. package/dist/databases/postgres.js.map +1 -1
  14. package/dist/databases/sqlserver.d.ts.map +1 -1
  15. package/dist/databases/sqlserver.js +3 -5
  16. package/dist/databases/sqlserver.js.map +1 -1
  17. package/dist/databases/succeeded.d.ts +7 -0
  18. package/dist/databases/succeeded.d.ts.map +1 -0
  19. package/dist/databases/succeeded.js +11 -0
  20. package/dist/databases/succeeded.js.map +1 -0
  21. package/dist/docker/{docker.d.ts → fixtures.d.ts} +31 -25
  22. package/dist/docker/fixtures.d.ts.map +1 -0
  23. package/dist/docker/fixtures.js +265 -0
  24. package/dist/docker/fixtures.js.map +1 -0
  25. package/dist/docker/host.d.ts +3 -10
  26. package/dist/docker/host.d.ts.map +1 -1
  27. package/dist/docker/host.js +21 -41
  28. package/dist/docker/host.js.map +1 -1
  29. package/dist/docker/index.d.ts +2 -3
  30. package/dist/docker/index.d.ts.map +1 -1
  31. package/dist/docker/index.js +2 -3
  32. package/dist/docker/index.js.map +1 -1
  33. package/dist/docker/service-container.d.ts +20 -0
  34. package/dist/docker/service-container.d.ts.map +1 -0
  35. package/dist/docker/service-container.js +30 -0
  36. package/dist/docker/service-container.js.map +1 -0
  37. package/dist/scripts/run-cleanup.js +1 -1
  38. package/dist/scripts/run-cleanup.js.map +1 -1
  39. package/package.json +2 -2
  40. package/dist/docker/container.d.ts +0 -30
  41. package/dist/docker/container.d.ts.map +0 -1
  42. package/dist/docker/container.js +0 -53
  43. package/dist/docker/container.js.map +0 -1
  44. package/dist/docker/docker.d.ts.map +0 -1
  45. package/dist/docker/docker.js +0 -263
  46. package/dist/docker/docker.js.map +0 -1
  47. package/dist/docker/volume.d.ts +0 -9
  48. package/dist/docker/volume.d.ts.map +0 -1
  49. package/dist/docker/volume.js +0 -13
  50. package/dist/docker/volume.js.map +0 -1
@@ -1,53 +0,0 @@
1
- import { SubprocessError } from 'nano-spawn';
2
- /** A container this process started. Disposal removes it with its anonymous volumes. */
3
- export class Container {
4
- containerId;
5
- command;
6
- constructor(containerId, command) {
7
- this.containerId = containerId;
8
- this.command = command;
9
- }
10
- // Bound: readiness probes receive it destructured.
11
- exec = (command) => this.command(['exec', this.containerId, ...command]);
12
- /** What the container printed so far, standard output and error interleaved. */
13
- async logs() {
14
- const { output } = await this.command(['logs', this.containerId]);
15
- return output;
16
- }
17
- /** Sends `signal` to the container's main process, as `docker kill` does. */
18
- async kill(signal = 'SIGKILL') {
19
- await this.command(['kill', '--signal', signal, this.containerId]);
20
- }
21
- async cleanup() {
22
- await this.command(['rm', '--force', '--volumes', this.containerId]).catch((error) => {
23
- if (!(error instanceof SubprocessError) ||
24
- !/No such container/i.test(error.stderr))
25
- throw error;
26
- });
27
- }
28
- [Symbol.asyncDispose]() {
29
- return this.cleanup();
30
- }
31
- }
32
- /**
33
- * A container whose port answers on 127.0.0.1 of this machine, through an SSH
34
- * forward when the engine is remote. Disposal also closes the forward.
35
- */
36
- export class ServiceContainer extends Container {
37
- host = '127.0.0.1';
38
- port;
39
- /** Closes the forward and leaves the container running for its other users. */
40
- disconnect;
41
- constructor(containerId, port, command, disconnect) {
42
- super(containerId, command);
43
- this.port = port;
44
- this.disconnect = disconnect;
45
- }
46
- /** Removes the container, then closes the forward; when both fail, a SuppressedError holds both. */
47
- async cleanup() {
48
- await using forward = new AsyncDisposableStack();
49
- forward.defer(this.disconnect);
50
- await super.cleanup();
51
- }
52
- }
53
- //# sourceMappingURL=container.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/docker/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,eAAe,EAAE,MAAM,YAAY,CAAC;AAK1D,wFAAwF;AACxF,MAAM,OAAO,SAAS;IACX,WAAW,CAAS;IACpB,OAAO,CAAgB;IAEhC,YAAY,WAAmB,EAAE,OAAsB;QACrD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,mDAAmD;IAC1C,IAAI,GAAG,CAAC,OAAiB,EAAmB,EAAE,CACrD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAEvD,gFAAgF;IAChF,KAAK,CAAC,IAAI;QACR,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS;QAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CACxE,CAAC,KAAc,EAAE,EAAE;YACjB,IACE,CAAC,CAAC,KAAK,YAAY,eAAe,CAAC;gBACnC,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAExC,MAAM,KAAK,CAAC;QAChB,CAAC,CACF,CAAC;IACJ,CAAC;IAED,CAAC,MAAM,CAAC,YAAY,CAAC;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IACpC,IAAI,GAAG,WAAW,CAAC;IACnB,IAAI,CAAS;IACtB,+EAA+E;IACtE,UAAU,CAAsB;IAEzC,YACE,WAAmB,EACnB,IAAY,EACZ,OAAsB,EACtB,UAA+B;QAE/B,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,oGAAoG;IAC3F,KAAK,CAAC,OAAO;QACpB,YAAY,OAAO,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/docker/docker.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,SAAS,EACT,KAAK,aAAa,EAClB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAGhE,yEAAyE;AACzE,MAAM,WAAW,KAAK;IACpB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,wGAAwG;IACxG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC5C,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC;CACpD;AAED,MAAM,WAAW,aAAa;IAC5B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AA2BD,sHAAsH;AACtH,qBAAa,MAAM;;gBAcL,EAAE,OAAO,EAAE,GAAE,aAAkB;IAI3C;;;;OAIG;IACH,IAAI,QAAQ,IAAI;QACd,SAAS,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAMA;IAEK,IAAI,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAU3D,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAI3C,uFAAuF;IACjF,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAYrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CACY;IAErC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAarC,gGAAgG;IAC1F,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAK1D,gGAAgG;IAC1F,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAe/D;;;;OAIG;IACG,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqB/D,2GAA2G;IACrG,GAAG,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;CA6KtD"}
@@ -1,263 +0,0 @@
1
- import { createHash, randomUUID } from 'node:crypto';
2
- import { SubprocessError } from 'nano-spawn';
3
- import pMemoize from 'p-memoize';
4
- import { timebox } from "../async/timebox.js";
5
- import { Container, ServiceContainer, } from "./container.js";
6
- import { DockerDirectory } from "./directory.js";
7
- import { DockerHost } from "./host.js";
8
- import { DockerVolume } from "./volume.js";
9
- /** Marks a server that `reuse()` shares across processes and runs. */
10
- export const SHARED_SERVER_LABEL = 'dev.zukhruf.testing.shared';
11
- const CONFIG_LABEL = 'dev.zukhruf.testing.config';
12
- const labelArgs = (labels) => Object.entries(labels).flatMap(([key, value]) => [
13
- '--label',
14
- `${key}=${value}`,
15
- ]);
16
- const publish = (internalPort) => [
17
- '-p',
18
- `127.0.0.1::${internalPort}`,
19
- ];
20
- const byKey = ([a], [b]) => {
21
- if (a < b)
22
- return -1;
23
- if (a > b)
24
- return 1;
25
- return 0;
26
- };
27
- /** The engine the Docker CLI selects. Docker owns cross-process coordination; this instance holds no server cache. */
28
- export class Docker {
29
- #testRun;
30
- // The first resolution pins the engine: handles keep the engine they were
31
- // made on. It records this process in the run before any command runs.
32
- #connection = pMemoize(() => DockerHost.resolve(this.#testRun));
33
- #probe = pMemoize(async () => {
34
- try {
35
- await this.command(['info']);
36
- return { available: true };
37
- }
38
- catch (cause) {
39
- return { available: false, cause };
40
- }
41
- });
42
- constructor({ testRun } = {}) {
43
- this.#testRun = testRun;
44
- }
45
- /**
46
- * Defaults for disposable test containers, including external launchers.
47
- * A launcher creates with these labels and no acquisition of this class:
48
- * the read records this process, so the global teardown sweeps the run.
49
- */
50
- get defaults() {
51
- this.#testRun?.recordThisProcess();
52
- return {
53
- resources: { memory: '1g', cpus: 1 },
54
- labels: this.#testRun?.labels ?? {},
55
- };
56
- }
57
- async info() {
58
- const host = await this.#connection();
59
- const { stdout } = await host.command([
60
- 'info',
61
- '--format',
62
- '{{.Architecture}}',
63
- ]);
64
- return { architecture: stdout.trim(), endpoint: host.endpoint };
65
- }
66
- async directory() {
67
- return DockerDirectory.create(await this.#connection(), this.#testRun);
68
- }
69
- /** Creates a named volume. Its run's cleanup removes it if this process dies first. */
70
- async volume() {
71
- const host = await this.#require();
72
- const name = `zukhruf-testing-${randomUUID()}`;
73
- await host.command([
74
- 'volume',
75
- 'create',
76
- ...labelArgs(this.defaults.labels),
77
- name,
78
- ]);
79
- return new DockerVolume(name, host.command);
80
- }
81
- command = async (args) => (await this.#connection()).command(args);
82
- async isAvailable() {
83
- return (await this.#probe()).available;
84
- }
85
- async #require() {
86
- const probe = await this.#probe();
87
- if (!probe.available)
88
- throw new Error('Docker is required for container-backed tests', {
89
- cause: probe.cause,
90
- });
91
- return this.#connection();
92
- }
93
- /** Starts a container this process owns. It stays after it stops, until disposal removes it. */
94
- async start(options) {
95
- const host = await this.#require();
96
- return new Container(await this.#detach(host, [], options), host.command);
97
- }
98
- /** Starts a dedicated server. Failure or disposal stops it, and a stopped server is removed. */
99
- async serve(options) {
100
- const host = await this.#require();
101
- const id = await this.#detach(host, ['--rm', ...publish(options.internalPort)], options);
102
- try {
103
- return await this.#ready(host, id, options);
104
- }
105
- catch (error) {
106
- await host.command(['stop', id]).catch(() => { });
107
- throw error;
108
- }
109
- }
110
- /**
111
- * Reuse one server per configuration on this daemon, across processes/runs.
112
- * Docker reserves the name atomically. Readiness failure leaves it running.
113
- * Only explicitly dispose the returned container after all its users finish.
114
- */
115
- async reuse(options) {
116
- const host = await this.#require();
117
- const fingerprint = this.#fingerprint(options);
118
- const name = options.name ?? `zukhruf-testing-${fingerprint}`;
119
- const inspected = (await this.#inspect(host, name)) ??
120
- (await this.#create(host, name, fingerprint, options));
121
- if (inspected.Config.Labels?.[SHARED_SERVER_LABEL] !== '1' ||
122
- inspected.Config.Labels[CONFIG_LABEL] !== fingerprint) {
123
- throw new Error(`Container ${name} does not match the shared test configuration`);
124
- }
125
- if (inspected.State.Status !== 'running') {
126
- await host.command(['start', inspected.Id]);
127
- }
128
- return this.#ready(host, inspected.Id, options);
129
- }
130
- /** Runs a container to completion and returns its standard output. The container is removed afterwards. */
131
- async run(options) {
132
- const host = await this.#require();
133
- return this.#launch(host, ['run', '--rm'], options);
134
- }
135
- async #create(host, name, fingerprint, options) {
136
- try {
137
- await host.command([
138
- 'create',
139
- '--rm',
140
- ...publish(options.internalPort),
141
- ...this.#args({
142
- ...options,
143
- name,
144
- labels: {
145
- ...options.labels,
146
- [SHARED_SERVER_LABEL]: '1',
147
- [CONFIG_LABEL]: fingerprint,
148
- },
149
- }),
150
- options.image,
151
- ...(options.command ?? []),
152
- ]);
153
- }
154
- catch (error) {
155
- if (!(error instanceof SubprocessError) ||
156
- !error.stderr.includes('is already in use by container'))
157
- throw error;
158
- }
159
- // A competing create reserves the name before Docker registers it for
160
- // inspection. Retry only that absence, not daemon or permission errors.
161
- const pending = new Error(`Container ${name} is not visible yet`);
162
- return timebox(async () => {
163
- const container = await this.#inspect(host, name);
164
- if (!container)
165
- throw pending;
166
- return container;
167
- }, { shouldRetry: ({ error }) => error === pending });
168
- }
169
- async #detach(host, flags, options) {
170
- const id = (await this.#launch(host, ['run', '--detach', ...flags], options)).trim();
171
- if (!id)
172
- throw new Error(`Docker started no container from ${options.image}`);
173
- return id;
174
- }
175
- async #launch(host, verb, options) {
176
- const name = options.name ??
177
- `test-${options.image.replace(/[^a-zA-Z0-9_.-]/g, '-')}-${randomUUID()}`;
178
- const labels = { ...options.labels, ...this.defaults.labels };
179
- const { stdout } = await host.command([
180
- ...verb,
181
- ...this.#args({ ...options, name, labels }),
182
- options.image,
183
- ...(options.command ?? []),
184
- ]);
185
- return stdout;
186
- }
187
- #fingerprint(options) {
188
- const { resources } = this.defaults;
189
- return createHash('sha256')
190
- .update(JSON.stringify({
191
- transportVersion: 2,
192
- memory: options.memory ?? resources.memory,
193
- cpus: options.cpus ?? resources.cpus,
194
- image: options.image,
195
- command: options.command ?? [],
196
- hostname: options.hostname,
197
- internalPort: options.internalPort,
198
- env: Object.entries(options.env ?? {}).sort(byKey),
199
- labels: Object.entries(options.labels ?? {}).sort(byKey),
200
- mounts: options.mounts ?? [],
201
- tmpfs: options.tmpfs ?? [],
202
- ipcHost: Boolean(options.ipcHost),
203
- memorySwappiness: options.memorySwappiness,
204
- }))
205
- .digest('hex');
206
- }
207
- #args(options) {
208
- const { resources } = this.defaults;
209
- return [
210
- '--name',
211
- options.name,
212
- ...(options.hostname ? ['--hostname', options.hostname] : []),
213
- ...labelArgs(options.labels ?? {}),
214
- ...Object.entries(options.env ?? {}).flatMap(([key, value]) => [
215
- '-e',
216
- `${key}=${value}`,
217
- ]),
218
- ...(options.mounts ?? []).flatMap(({ source, target, readOnly }) => [
219
- '--volume',
220
- `${source}:${target}${readOnly ? ':ro' : ''}`,
221
- ]),
222
- ...(options.tmpfs ?? []).flatMap((spec) => ['--tmpfs', spec]),
223
- ...(options.ipcHost ? ['--ipc=host'] : []),
224
- ...(options.memorySwappiness === undefined
225
- ? []
226
- : [`--memory-swappiness=${options.memorySwappiness}`]),
227
- '--memory',
228
- options.memory ?? resources.memory,
229
- '--cpus',
230
- String(options.cpus ?? resources.cpus),
231
- ];
232
- }
233
- async #inspect(host, name) {
234
- try {
235
- const { stdout } = await host.command(['container', 'inspect', name]);
236
- const [container] = JSON.parse(stdout);
237
- return container;
238
- }
239
- catch (error) {
240
- if (error instanceof SubprocessError &&
241
- /No such (object|container):/i.test(error.stderr))
242
- return undefined;
243
- throw error;
244
- }
245
- }
246
- async #ready(host, id, { internalPort, healthy }) {
247
- const { stdout } = await host.command(['port', id, String(internalPort)]);
248
- const port = /:(\d+)$/.exec(stdout.trim())?.[1];
249
- if (!port)
250
- throw new Error(`Failed to get mapped port for container ${id}: ${stdout}`);
251
- const connection = await host.forward(Number.parseInt(port, 10));
252
- const container = new ServiceContainer(id, connection.port, host.command, connection.close);
253
- try {
254
- await healthy?.(container);
255
- return container;
256
- }
257
- catch (error) {
258
- await container.disconnect();
259
- throw error;
260
- }
261
- }
262
- }
263
- //# sourceMappingURL=docker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/docker/docker.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { DockerCommand } from './container.ts';
2
- /** A named volume this process created. Disposal removes it. */
3
- export declare class DockerVolume implements AsyncDisposable {
4
- #private;
5
- readonly name: string;
6
- constructor(name: string, command: DockerCommand);
7
- [Symbol.asyncDispose](): Promise<void>;
8
- }
9
- //# sourceMappingURL=volume.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"volume.d.ts","sourceRoot":"","sources":["../../src/docker/volume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,gEAAgE;AAChE,qBAAa,YAAa,YAAW,eAAe;;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAGV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;IAK1C,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7C"}
@@ -1,13 +0,0 @@
1
- /** A named volume this process created. Disposal removes it. */
2
- export class DockerVolume {
3
- name;
4
- #command;
5
- constructor(name, command) {
6
- this.name = name;
7
- this.#command = command;
8
- }
9
- async [Symbol.asyncDispose]() {
10
- await this.#command(['volume', 'rm', '--force', this.name]);
11
- }
12
- }
13
- //# sourceMappingURL=volume.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"volume.js","sourceRoot":"","sources":["../../src/docker/volume.ts"],"names":[],"mappings":"AAEA,gEAAgE;AAChE,MAAM,OAAO,YAAY;IACd,IAAI,CAAS;IACb,QAAQ,CAAgB;IAEjC,YAAY,IAAY,EAAE,OAAsB;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;CACF"}