build-strap 3.0.0-dev.45 → 4.0.0-dev.3

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 (108) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -34
  3. package/ant.d.ts +19 -0
  4. package/ant.js +12 -37
  5. package/cert.d.ts +12 -0
  6. package/cert.js +89 -151
  7. package/clean.d.ts +4 -0
  8. package/clean.js +7 -16
  9. package/copy.d.ts +7 -0
  10. package/copy.js +49 -76
  11. package/cp.d.ts +17 -0
  12. package/cp.js +85 -170
  13. package/docker.container.d.ts +73 -0
  14. package/docker.container.js +219 -362
  15. package/docker.d.ts +68 -0
  16. package/docker.js +167 -347
  17. package/docker.network.d.ts +42 -0
  18. package/docker.network.js +69 -144
  19. package/docker.volume.d.ts +26 -0
  20. package/docker.volume.js +52 -126
  21. package/dockerCleanup.d.ts +38 -0
  22. package/dockerCleanup.js +66 -141
  23. package/dockerCompose.d.ts +154 -0
  24. package/dockerCompose.js +400 -727
  25. package/fs.d.ts +5 -0
  26. package/fs.js +38 -95
  27. package/git.d.ts +9 -0
  28. package/git.js +19 -30
  29. package/index.d.ts +20 -0
  30. package/index.js +20 -27
  31. package/maps.d.ts +33 -0
  32. package/maps.js +16 -87
  33. package/npm.d.ts +42 -0
  34. package/npm.js +104 -135
  35. package/package.json +23 -19
  36. package/pkg.d.ts +39 -0
  37. package/pkg.js +26 -74
  38. package/publish.d.ts +27 -0
  39. package/publish.js +52 -140
  40. package/run.d.ts +13 -0
  41. package/run.js +39 -85
  42. package/tgz.d.ts +13 -0
  43. package/tgz.js +61 -96
  44. package/version.d.ts +34 -0
  45. package/version.js +86 -127
  46. package/yarn.d.ts +44 -0
  47. package/yarn.js +156 -119
  48. package/ant.js.flow +0 -42
  49. package/artifactory.js +0 -617
  50. package/artifactory.js.flow +0 -616
  51. package/cert.conf +0 -20
  52. package/cert.js.flow +0 -152
  53. package/clean.js.flow +0 -19
  54. package/copy.js.flow +0 -79
  55. package/cp.js.flow +0 -172
  56. package/docker.container.js.flow +0 -389
  57. package/docker.js.flow +0 -367
  58. package/docker.network.js.flow +0 -159
  59. package/docker.volume.js.flow +0 -136
  60. package/dockerCleanup.js.flow +0 -151
  61. package/dockerCompose.js.flow +0 -765
  62. package/flow.js +0 -21
  63. package/flow.js.flow +0 -20
  64. package/fs.js.flow +0 -96
  65. package/git.js.flow +0 -34
  66. package/hg.js +0 -35
  67. package/hg.js.flow +0 -34
  68. package/index.js.flow +0 -26
  69. package/inline-resources.js +0 -158
  70. package/inline-resources.js.flow +0 -157
  71. package/maps.js.flow +0 -111
  72. package/npm.js.flow +0 -144
  73. package/pkg.js.flow +0 -80
  74. package/publish.js.flow +0 -144
  75. package/run.js.flow +0 -89
  76. package/src/ant.js +0 -42
  77. package/src/artifactory.js +0 -616
  78. package/src/cert.conf +0 -20
  79. package/src/cert.js +0 -152
  80. package/src/clean.js +0 -19
  81. package/src/copy.js +0 -79
  82. package/src/cp.js +0 -172
  83. package/src/docker.container.js +0 -389
  84. package/src/docker.js +0 -367
  85. package/src/docker.network.js +0 -159
  86. package/src/docker.volume.js +0 -136
  87. package/src/dockerCleanup.js +0 -151
  88. package/src/dockerCompose.js +0 -765
  89. package/src/flow.js +0 -20
  90. package/src/fs.js +0 -96
  91. package/src/git.js +0 -34
  92. package/src/hg.js +0 -34
  93. package/src/index.js +0 -26
  94. package/src/inline-resources.js +0 -157
  95. package/src/maps.js +0 -111
  96. package/src/npm.js +0 -144
  97. package/src/pkg.js +0 -80
  98. package/src/publish.js +0 -144
  99. package/src/run.js +0 -89
  100. package/src/test.js +0 -55
  101. package/src/tgz.js +0 -101
  102. package/src/version.js +0 -141
  103. package/src/yarn.js +0 -123
  104. package/test.js +0 -56
  105. package/test.js.flow +0 -55
  106. package/tgz.js.flow +0 -101
  107. package/version.js.flow +0 -141
  108. package/yarn.js.flow +0 -123
@@ -0,0 +1,42 @@
1
+ export interface DockerNetwork {
2
+ IPv6: boolean;
3
+ created: Date;
4
+ driver: string;
5
+ exists: () => Promise<boolean>;
6
+ id: string;
7
+ labels: string[];
8
+ name: string;
9
+ rm: () => Promise<void>;
10
+ scope: string;
11
+ }
12
+ interface DockerNetworkLsOptions {
13
+ filter?: (network: DockerNetwork) => boolean;
14
+ }
15
+ export declare function unthrottledDockerNetworkLs({ filter, }?: DockerNetworkLsOptions): Promise<DockerNetwork[]>;
16
+ export declare const dockerNetworkLs: (options?: DockerNetworkLsOptions) => Promise<DockerNetwork[]> | undefined;
17
+ export declare function dockerNetworkFind(networkName: string, options?: DockerNetworkLsOptions): Promise<DockerNetwork | null>;
18
+ export interface DockerNetworkCreateOptions {
19
+ auxAddresses?: string[];
20
+ driver?: string;
21
+ driverOpts?: Record<string, string>;
22
+ gateways?: string[];
23
+ ingress?: boolean;
24
+ internal?: boolean;
25
+ ipRange?: string;
26
+ ipv6?: boolean;
27
+ labels?: string[];
28
+ subnets?: string[];
29
+ }
30
+ export declare function dockerNetworkCreate(networkName: string, { driver, driverOpts, ipRange, gateways, subnets, auxAddresses, ingress, internal, ipv6, labels, }?: DockerNetworkCreateOptions): Promise<DockerNetwork | null>;
31
+ /**
32
+ * Removes a network by id
33
+ * @param {string} id The id of the network
34
+ */
35
+ export declare function dockerNetworkRm(id: string): Promise<void>;
36
+ /**
37
+ * Removes all networks with the given name
38
+ * @param {string} networkName The name of the network
39
+ */
40
+ export declare function dockerNetworkDelete(networkName: string): Promise<void>;
41
+ export declare function dockerNetworkConnect(networkName: string, containerId: string, alias?: string | null): Promise<void>;
42
+ export {};
package/docker.network.js CHANGED
@@ -1,160 +1,85 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", { value: true });exports._dockerNetworkLs = _dockerNetworkLs;exports.dockerNetworkConnect = dockerNetworkConnect;exports.dockerNetworkCreate = dockerNetworkCreate;exports.dockerNetworkDelete = dockerNetworkDelete;exports.dockerNetworkFind = dockerNetworkFind;exports.dockerNetworkLs = void 0;exports.dockerNetworkRm = dockerNetworkRm;
2
- var _throttle = _interopRequireDefault(require("lodash/throttle"));
3
- var _cp = require("./cp");
4
- var _docker = require("./docker");function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
1
+ import { throttle } from 'lodash-es';
2
+ import { spawn } from './cp.js';
3
+ import { parseDockerDate } from './docker.js';
22
4
  // calling this function in rapid succession can lead to errors.
23
5
  // prefer throttled version
24
- async function _dockerNetworkLs({
25
- filter } =
26
- {}) {
27
- return (
28
- await (0, _cp.spawn)('docker', ['network', 'ls', '--format', '{{json .}}'], {
29
- captureOutput: true })).
30
-
31
-
32
- split('\n').
33
- filter((line) => !!line.trim()).
34
- map((line) => {
35
- const {
36
- ID: id,
37
- Name: name,
38
- Driver: driver,
39
- Scope: scope,
40
- CreatedAt,
41
- IPv6,
42
- Labels } =
43
- JSON.parse(line.trim());
44
- return {
45
- id,
46
- name,
47
- driver,
48
- scope,
49
- created: (0, _docker.parseDockerDate)(CreatedAt),
50
- IPv6: IPv6 === 'true',
51
- labels: Labels.split(',').map((l) => l.trim()),
52
- exists: async () => !!(await dockerNetworkFind(id)),
53
- rm: async () => dockerNetworkRm(id) };
54
-
55
- }).
56
- filter((n) => n.id && (typeof filter === 'function' ? filter(n) : true));
6
+ export async function unthrottledDockerNetworkLs({ filter, } = {}) {
7
+ return (await spawn('docker', ['network', 'ls', '--format', '{{json .}}'], {
8
+ captureOutput: true,
9
+ })).output
10
+ .split('\n')
11
+ .filter((line) => !!line.trim())
12
+ .map((line) => {
13
+ const { CreatedAt, Driver: driver, ID: id, IPv6, Labels, Name: name, Scope: scope, } = JSON.parse(line.trim());
14
+ return {
15
+ IPv6: IPv6 === 'true',
16
+ created: parseDockerDate(CreatedAt),
17
+ driver,
18
+ exists: async () => !!(await dockerNetworkFind(id)),
19
+ id,
20
+ labels: Labels.split(',').map((l) => l.trim()),
21
+ name,
22
+ rm: async () => dockerNetworkRm(id),
23
+ scope,
24
+ };
25
+ })
26
+ .filter((n) => n.id && (typeof filter === 'function' ? filter(n) : true));
57
27
  }
58
- const dockerNetworkLs =
59
-
60
- (0, _throttle.default)(_dockerNetworkLs, 500, {
61
- trailing: false });exports.dockerNetworkLs = dockerNetworkLs;
62
-
63
-
64
- async function dockerNetworkFind(
65
- networkName,
66
- options)
67
- {
68
- return (await dockerNetworkLs(options)).find(
69
- (n) => n.name === networkName || n.id === networkName);
70
-
28
+ export const dockerNetworkLs = throttle(unthrottledDockerNetworkLs, 500, {
29
+ trailing: false,
30
+ });
31
+ export async function dockerNetworkFind(networkName, options) {
32
+ return ((await dockerNetworkLs(options))?.find((n) => n.name === networkName || n.id === networkName) || null);
71
33
  }
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
- async function dockerNetworkCreate(
87
- networkName,
88
- {
89
- driver,
90
- driverOpts = {},
91
- ipRange,
92
- gateways = [],
93
- subnets = [],
94
- auxAddresses = [],
95
- ingress,
96
- internal,
97
- ipv6,
98
- labels = [] } =
99
- {})
100
- {
101
- const existing = await dockerNetworkFind(networkName);
102
- if (existing) return existing;
103
- await (0, _cp.spawn)('docker', [
104
- 'network',
105
- 'create',
106
- ...labels.flatMap((l) => ['--label', l]),
107
- ...gateways.flatMap((g) => ['--gateway', g]),
108
- ...subnets.flatMap((s) => ['--subnet', s]),
109
- ...auxAddresses.flatMap((a) => ['--aux-address', a]),
110
- ...(ipRange ? ['--ip-range', ipRange] : []),
111
- ...(ingress ? ['--ingress'] : []),
112
- ...(internal ? ['--internal'] : []),
113
- ...(ipv6 ? ['--ipv6'] : []),
114
- ...(driver ? ['-d', driver] : []),
115
- ...Object.entries(driverOpts).flatMap(([k, v]) => [
116
- '-o',
117
- `${k}=${v}`]),
118
-
119
- networkName]);
120
-
121
- return dockerNetworkFind(networkName);
34
+ export async function dockerNetworkCreate(networkName, { driver, driverOpts = {}, ipRange, gateways = [], subnets = [], auxAddresses = [], ingress, internal, ipv6, labels = [], } = {}) {
35
+ const existing = await dockerNetworkFind(networkName);
36
+ if (existing)
37
+ return existing;
38
+ await spawn('docker', [
39
+ 'network',
40
+ 'create',
41
+ ...labels.flatMap((l) => ['--label', l]),
42
+ ...gateways.flatMap((g) => ['--gateway', g]),
43
+ ...subnets.flatMap((s) => ['--subnet', s]),
44
+ ...auxAddresses.flatMap((a) => ['--aux-address', a]),
45
+ ...(ipRange ? ['--ip-range', ipRange] : []),
46
+ ...(ingress ? ['--ingress'] : []),
47
+ ...(internal ? ['--internal'] : []),
48
+ ...(ipv6 ? ['--ipv6'] : []),
49
+ ...(driver ? ['-d', driver] : []),
50
+ ...Object.entries(driverOpts).flatMap(([k, v]) => ['-o', `${k}=${v}`]),
51
+ networkName,
52
+ ]);
53
+ return dockerNetworkFind(networkName);
122
54
  }
123
-
124
55
  /**
125
56
  * Removes a network by id
126
57
  * @param {string} id The id of the network
127
58
  */
128
- async function dockerNetworkRm(id) {
129
- await (0, _cp.spawn)('docker', ['network', 'rm', id]);
59
+ export async function dockerNetworkRm(id) {
60
+ await spawn('docker', ['network', 'rm', id]);
130
61
  }
131
-
132
62
  /**
133
63
  * Removes all networks with the given name
134
64
  * @param {string} networkName The name of the network
135
65
  */
136
- async function dockerNetworkDelete(networkName) {
137
- let existing;
138
- // eslint-disable-next-line no-cond-assign, no-await-in-loop
139
- while (existing = await dockerNetworkFind(networkName)) {
140
- // eslint-disable-next-line no-await-in-loop
141
- await existing.rm();
142
- }
66
+ export async function dockerNetworkDelete(networkName) {
67
+ let existing;
68
+ // eslint-disable-next-line no-cond-assign, no-await-in-loop
69
+ while ((existing = await dockerNetworkFind(networkName))) {
70
+ // eslint-disable-next-line no-await-in-loop
71
+ await existing.rm();
72
+ }
143
73
  }
144
-
145
- async function dockerNetworkConnect(
146
- networkName,
147
- containerId,
148
- alias)
149
- {
150
- const net = await dockerNetworkCreate(networkName);
151
- if (!net) throw new Error('Failed to create docker network');
152
- await (0, _cp.spawn)('docker', [
153
- 'network',
154
- 'connect',
155
- ...(alias ? ['--alias', alias] : []),
156
- net.id,
157
- containerId]);
158
-
74
+ export async function dockerNetworkConnect(networkName, containerId, alias) {
75
+ const net = await dockerNetworkCreate(networkName);
76
+ if (!net)
77
+ throw new Error('Failed to create docker network');
78
+ await spawn('docker', [
79
+ 'network',
80
+ 'connect',
81
+ ...(alias ? ['--alias', alias] : []),
82
+ net.id,
83
+ containerId,
84
+ ]);
159
85
  }
160
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kb2NrZXIubmV0d29yay5qcyJdLCJuYW1lcyI6WyJfZG9ja2VyTmV0d29ya0xzIiwiZmlsdGVyIiwiY2FwdHVyZU91dHB1dCIsInNwbGl0IiwibGluZSIsInRyaW0iLCJtYXAiLCJJRCIsImlkIiwiTmFtZSIsIm5hbWUiLCJEcml2ZXIiLCJkcml2ZXIiLCJTY29wZSIsInNjb3BlIiwiQ3JlYXRlZEF0IiwiSVB2NiIsIkxhYmVscyIsIkpTT04iLCJwYXJzZSIsImNyZWF0ZWQiLCJsYWJlbHMiLCJsIiwiZXhpc3RzIiwiZG9ja2VyTmV0d29ya0ZpbmQiLCJybSIsImRvY2tlck5ldHdvcmtSbSIsIm4iLCJkb2NrZXJOZXR3b3JrTHMiLCJ0cmFpbGluZyIsIm5ldHdvcmtOYW1lIiwib3B0aW9ucyIsImZpbmQiLCJkb2NrZXJOZXR3b3JrQ3JlYXRlIiwiZHJpdmVyT3B0cyIsImlwUmFuZ2UiLCJnYXRld2F5cyIsInN1Ym5ldHMiLCJhdXhBZGRyZXNzZXMiLCJpbmdyZXNzIiwiaW50ZXJuYWwiLCJpcHY2IiwiZXhpc3RpbmciLCJmbGF0TWFwIiwiZyIsInMiLCJhIiwiT2JqZWN0IiwiZW50cmllcyIsImsiLCJ2IiwiZG9ja2VyTmV0d29ya0RlbGV0ZSIsImRvY2tlck5ldHdvcmtDb25uZWN0IiwiY29udGFpbmVySWQiLCJhbGlhcyIsIm5ldCIsIkVycm9yIl0sIm1hcHBpbmdzIjoiO0FBQ0E7QUFDQTtBQUNBLGtDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQkE7QUFDQTtBQUNPLGVBQWVBLGdCQUFmLENBQWdDO0FBQ3JDQyxFQUFBQSxNQURxQztBQUVYLEVBRnJCLEVBRW1EO0FBQ3hELFNBQU87QUFDTCxRQUFNLGVBQU0sUUFBTixFQUFnQixDQUFDLFNBQUQsRUFBWSxJQUFaLEVBQWtCLFVBQWxCLEVBQThCLFlBQTlCLENBQWhCLEVBQTZEO0FBQ2pFQyxJQUFBQSxhQUFhLEVBQUUsSUFEa0QsRUFBN0QsQ0FERDs7O0FBS0pDLEVBQUFBLEtBTEksQ0FLRSxJ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WSxRQUFKO0FBQ0E7QUFDQSxTQUFRQSxRQUFRLEdBQUcsTUFBTWxCLGlCQUFpQixDQUFDTSxXQUFELENBQTFDLEVBQTBEO0FBQ3hEO0FBQ0EsVUFBTVksUUFBUSxDQUFDakIsRUFBVCxFQUFOO0FBQ0Q7QUFDRjs7QUFFTSxlQUFlMkIsb0JBQWY7QUFDTHRCLFdBREs7QUFFTHVCLFdBRks7QUFHTEMsS0FISztBQUlMO0FBQ0EsUUFBTUMsR0FBRyxHQUFHLE1BQU10QixtQkFBbUIsQ0FBQ0gsV0FBRCxDQUFyQztBQUNBLE1BQUksQ0FBQ3lCLEdBQUwsRUFBVSxNQUFNLElBQUlDLEtBQUosQ0FBVSxpQ0FBVixDQUFOO0FBQ1YsUUFBTSxlQUFNLFFBQU4sRUFBZ0I7QUFDcEIsV0FEb0I7QUFFcEIsV0FGb0I7QUFHcEIsTUFBSUYsS0FBSyxHQUFHLENBQUMsU0FBRCxFQUFZQSxLQUFaLENBQUgsR0FBd0IsRUFBakMsQ0FIb0I7QUFJcEJDLEVBQUFBLEdBQUcsQ0FBQy9DLEVBSmdCO0FBS3BCNkMsRUFBQUEsV0FMb0IsQ0FBaEIsQ0FBTjs7QUFPRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoL3Rocm90dGxlJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnLi9jcCc7XG5pbXBvcnQgeyBwYXJzZURvY2tlckRhdGUgfSBmcm9tICcuL2RvY2tlcic7XG5cbmV4cG9ydCB0eXBlIERvY2tlck5ldHdvcmsgPSB7fFxuICBpZDogc3RyaW5nLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRyaXZlcjogc3RyaW5nLFxuICBzY29wZTogc3RyaW5nLFxuICBjcmVhdGVkOiBEYXRlLFxuICBJUHY2OiBib29sZWFuLFxuICBsYWJlbHM6IHN0cmluZ1tdLFxuICBleGlzdHM6ICgpID0+IFByb21pc2U8Ym9vbGVhbj4sXG4gIHJtOiAoKSA9PiBQcm9taXNlPHZvaWQ+LFxufH07XG5cbnR5cGUgRG9ja2VyTmV0d29ya0xzT3B0aW9ucyA9IHtcbiAgZmlsdGVyPzogKG5ldHdvcms6IERvY2tlck5ldHdvcmspID0+IGJvb2xlYW4sXG59O1xuXG4vLyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaW4gcmFwaWQgc3VjY2Vzc2lvbiBjYW4gbGVhZCB0byBlcnJvcnMuXG4vLyBwcmVmZXIgdGhyb3R0bGVkIHZlcnNpb25cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBfZG9ja2VyTmV0d29ya0xzKHtcbiAgZmlsdGVyLFxufTogRG9ja2VyTmV0d29ya0xzT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxEb2NrZXJOZXR3b3JrW10+IHtcbiAgcmV0dXJuIChcbiAgICBhd2FpdCBzcGF3bignZG9ja2VyJywgWyduZXR3b3JrJywgJ2xzJywgJy0tZm9ybWF0JywgJ3t7anNvbiAufX0nXSwge1xuICAgICAgY2FwdHVyZU91dHB1dDogdHJ1ZSxcbiAgICB9KVxuICApXG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5maWx0ZXIoKGxpbmUpID0+ICEhbGluZS50cmltKCkpXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBJRDogaWQsXG4gICAgICAgIE5hbWU6IG5hbWUsXG4gICAgICAgIERyaXZlcjogZHJpdmVyLFxuICAgICAgICBTY29wZTogc2NvcGUsXG4gICAgICAgIENyZWF0ZWRBdCxcbiAgICAgICAgSVB2NixcbiAgICAgICAgTGFiZWxzLFxuICAgICAgfSA9IEpTT04ucGFyc2UobGluZS50cmltKCkpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGRyaXZlcixcbiAgICAgICAgc2NvcGUsXG4gICAgICAgIGNyZWF0ZWQ6IHBhcnNlRG9ja2VyRGF0ZShDcmVhdGVkQXQpLFxuICAgICAgICBJUHY2OiBJUHY2ID09PSAndHJ1ZScsXG4gICAgICAgIGxhYmVsczogTGFiZWxzLnNwbGl0KCcsJykubWFwKChsKSA9PiBsLnRyaW0oKSksXG4gICAgICAgIGV4aXN0czogYXN5bmMgKCkgPT4gISEoYXdhaXQgZG9ja2VyTmV0d29ya0ZpbmQoaWQpKSxcbiAgICAgICAgcm06IGFzeW5jICgpID0+IGRvY2tlck5ldHdvcmtSbShpZCksXG4gICAgICB9O1xuICAgIH0pXG4gICAgLmZpbHRlcigobikgPT4gbi5pZCAmJiAodHlwZW9mIGZpbHRlciA9PT0gJ2Z1bmN0aW9uJyA/IGZpbHRlcihuKSA6IHRydWUpKTtcbn1cbmV4cG9ydCBjb25zdCBkb2NrZXJOZXR3b3JrTHM6IChcbiAgRG9ja2VyTmV0d29ya0xzT3B0aW9ucyB8IHZvaWQsXG4pID0+IFByb21pc2U8RG9ja2VyTmV0d29ya1tdPiA9IHRocm90dGxlKF9kb2NrZXJOZXR3b3JrTHMsIDUwMCwge1xuICB0cmFpbGluZzogZmFsc2UsXG59KTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvY2tlck5ldHdvcmtGaW5kKFxuICBuZXR3b3JrTmFtZTogc3RyaW5nLFxuICBvcHRpb25zPzogRG9ja2VyTmV0d29ya0xzT3B0aW9ucyxcbik6IFByb21pc2U8P0RvY2tlck5ldHdvcms+IHtcbiAgcmV0dXJuIChhd2FpdCBkb2NrZXJOZXR3b3JrTHMob3B0aW9ucykpLmZpbmQoXG4gICAgKG4pID0+IG4ubmFtZSA9PT0gbmV0d29ya05hbWUgfHwgbi5pZCA9PT0gbmV0d29ya05hbWUsXG4gICk7XG59XG5cbmV4cG9ydCB0eXBlIERvY2tlck5ldHdvcmtDcmVhdGVPcHRpb25zID0ge3xcbiAgZHJpdmVyPzogc3RyaW5nLFxuICBkcml2ZXJPcHRzPzogeyBbc3RyaW5nXTogc3RyaW5nIH0sXG4gIGlwUmFuZ2U/OiBzdHJpbmcsXG4gIGdhdGV3YXlzPzogc3RyaW5nW10sXG4gIHN1Ym5ldHM/OiBzdHJpbmdbXSxcbiAgYXV4QWRkcmVzc2VzPzogc3RyaW5nW10sXG4gIGluZ3Jlc3M/OiBib29sZWFuLFxuICBpbnRlcm5hbD86IGJvb2xlYW4sXG4gIGlwdjY/OiBib29sZWFuLFxuICBsYWJlbHM/OiBzdHJpbmdbXSxcbnx9O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG9ja2VyTmV0d29ya0NyZWF0ZShcbiAgbmV0d29ya05hbWU6IHN0cmluZyxcbiAge1xuICAgIGRyaXZlcixcbiAgICBkcml2ZXJPcHRzID0ge30sXG4gICAgaXBSYW5nZSxcbiAgICBnYXRld2F5cyA9IFtdLFxuICAgIHN1Ym5ldHMgPSBbXSxcbiAgICBhdXhBZGRyZXNzZXMgPSBbXSxcbiAgICBpbmdyZXNzLFxuICAgIGludGVybmFsLFxuICAgIGlwdjYsXG4gICAgbGFiZWxzID0gW10sXG4gIH06IERvY2tlck5ldHdvcmtDcmVhdGVPcHRpb25zID0ge30sXG4pOiBQcm9taXNlPD9Eb2NrZXJOZXR3b3JrPiB7XG4gIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgZG9ja2VyTmV0d29ya0ZpbmQobmV0d29ya05hbWUpO1xuICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcbiAgYXdhaXQgc3Bhd24oJ2RvY2tlcicsIFtcbiAgICAnbmV0d29yaycsXG4gICAgJ2NyZWF0ZScsXG4gICAgLi4ubGFiZWxzLmZsYXRNYXAoKGwpID0+IFsnLS1sYWJlbCcsIGxdKSxcbiAgICAuLi5nYXRld2F5cy5mbGF0TWFwKChnKSA9PiBbJy0tZ2F0ZXdheScsIGddKSxcbiAgICAuLi5zdWJuZXRzLmZsYXRNYXAoKHMpID0+IFsnLS1zdWJuZXQnLCBzXSksXG4gICAgLi4uYXV4QWRkcmVzc2VzLmZsYXRNYXAoKGEpID0+IFsnLS1hdXgtYWRkcmVzcycsIGFdKSxcbiAgICAuLi4oaXBSYW5nZSA/IFsnLS1pcC1yYW5nZScsIGlwUmFuZ2VdIDogW10pLFxuICAgIC4uLihpbmdyZXNzID8gWyctLWluZ3Jlc3MnXSA6IFtdKSxcbiAgICAuLi4oaW50ZXJuYWwgPyBbJy0taW50ZXJuYWwnXSA6IFtdKSxcbiAgICAuLi4oaXB2NiA/IFsnLS1pcHY2J10gOiBbXSksXG4gICAgLi4uKGRyaXZlciA/IFsnLWQnLCBkcml2ZXJdIDogW10pLFxuICAgIC4uLk9iamVjdC5lbnRyaWVzKGRyaXZlck9wdHMpLmZsYXRNYXAoKFtrLCB2XSkgPT4gW1xuICAgICAgJy1vJyxcbiAgICAgIGAke2t9PSR7KHY6IGFueSl9YCxcbiAgICBdKSxcbiAgICBuZXR3b3JrTmFtZSxcbiAgXSk7XG4gIHJldHVybiBkb2NrZXJOZXR3b3JrRmluZChuZXR3b3JrTmFtZSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBhIG5ldHdvcmsgYnkgaWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCBUaGUgaWQgb2YgdGhlIG5ldHdvcmtcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvY2tlck5ldHdvcmtSbShpZDogc3RyaW5nKSB7XG4gIGF3YWl0IHNwYXduKCdkb2NrZXInLCBbJ25ldHdvcmsnLCAncm0nLCBpZF0pO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIG5ldHdvcmtzIHdpdGggdGhlIGdpdmVuIG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXR3b3JrTmFtZSBUaGUgbmFtZSBvZiB0aGUgbmV0d29ya1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG9ja2VyTmV0d29ya0RlbGV0ZShuZXR3b3JrTmFtZTogc3RyaW5nKSB7XG4gIGxldCBleGlzdGluZztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduLCBuby1hd2FpdC1pbi1sb29wXG4gIHdoaWxlICgoZXhpc3RpbmcgPSBhd2FpdCBkb2NrZXJOZXR3b3JrRmluZChuZXR3b3JrTmFtZSkpKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICBhd2FpdCBleGlzdGluZy5ybSgpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb2NrZXJOZXR3b3JrQ29ubmVjdChcbiAgbmV0d29ya05hbWU6IHN0cmluZyxcbiAgY29udGFpbmVySWQ6IHN0cmluZyxcbiAgYWxpYXM/OiA/c3RyaW5nLFxuKSB7XG4gIGNvbnN0IG5ldCA9IGF3YWl0IGRvY2tlck5ldHdvcmtDcmVhdGUobmV0d29ya05hbWUpO1xuICBpZiAoIW5ldCkgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gY3JlYXRlIGRvY2tlciBuZXR3b3JrJyk7XG4gIGF3YWl0IHNwYXduKCdkb2NrZXInLCBbXG4gICAgJ25ldHdvcmsnLFxuICAgICdjb25uZWN0JyxcbiAgICAuLi4oYWxpYXMgPyBbJy0tYWxpYXMnLCBhbGlhc10gOiBbXSksXG4gICAgbmV0LmlkLFxuICAgIGNvbnRhaW5lcklkLFxuICBdKTtcbn1cbiJdfQ==
@@ -0,0 +1,26 @@
1
+ declare type DockerVolumeInspectOutput = Record<string, any>;
2
+ export interface DockerVolume {
3
+ driver: string;
4
+ inspect: () => Promise<null | DockerVolumeInspectOutput>;
5
+ labels: string[];
6
+ mountPoint: string;
7
+ name: string;
8
+ rm: () => Promise<void>;
9
+ scope: string;
10
+ }
11
+ interface DockerVolumeLsOptions {
12
+ filter?: (vol: DockerVolume) => boolean;
13
+ }
14
+ export declare function unthrottledDockerVolumeLs({ filter, }?: DockerVolumeLsOptions): Promise<DockerVolume[]>;
15
+ export declare const dockerVolumeLs: (options?: DockerVolumeLsOptions) => undefined | Promise<DockerVolume[]>;
16
+ export declare function dockerVolumeFind(search: string, options?: DockerVolumeLsOptions): Promise<null | DockerVolume>;
17
+ export interface DockerVolumeCreateOptions {
18
+ driver?: string;
19
+ driverOpts?: Record<string, string>;
20
+ labels?: string[];
21
+ }
22
+ export declare function dockerVolumeCreate(name: string, { labels, driver, driverOpts }?: DockerVolumeCreateOptions): Promise<null | DockerVolume>;
23
+ export declare function dockerVolumeRm(id: string | string[], ignoreErrors?: boolean): Promise<void>;
24
+ export declare function unthrottledDockerVolumeInspect(id: string | string[]): Promise<DockerVolumeInspectOutput[]>;
25
+ export declare const dockerVolumeInspect: (id: string | string[]) => undefined | Promise<DockerVolumeInspectOutput[]>;
26
+ export {};
package/docker.volume.js CHANGED
@@ -1,136 +1,62 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", { value: true });exports._dockerVolumeInspect = _dockerVolumeInspect;exports._dockerVolumeLs = _dockerVolumeLs;exports.dockerVolumeCreate = dockerVolumeCreate;exports.dockerVolumeFind = dockerVolumeFind;exports.dockerVolumeLs = exports.dockerVolumeInspect = void 0;exports.dockerVolumeRm = dockerVolumeRm;
2
- var _throttle = _interopRequireDefault(require("lodash/throttle"));
3
- var _cp = require("./cp");function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
1
+ import { throttle } from 'lodash-es';
2
+ import { spawn } from './cp.js';
23
3
  // calling this function in rapid succession can lead to errors.
24
4
  // prefer throttled version
25
- async function _dockerVolumeLs({
26
- filter } =
27
- {}) {
28
- return (
29
- await (0, _cp.spawn)('docker', ['volume', 'ls', '--format', '{{json .}}'], {
30
- captureOutput: true })).
31
-
32
-
33
- split('\n').
34
- filter((line) => !!line.trim()).
35
- map((line) => {
36
- const {
37
- Name: name,
38
- Driver: driver,
39
- Scope: scope,
40
- Labels,
41
- Mountpoint: mountPoint } =
42
- JSON.parse(line.trim());
43
-
44
- return {
45
- name,
46
- driver,
47
- scope,
48
- labels: Labels.split(',').map((l) => l.trim()),
49
- mountPoint,
50
- inspect: async () => (await dockerVolumeInspect(name))[0],
51
- rm: async () => dockerVolumeRm(name) };
52
-
53
- }).
54
- filter((v) => v.name && (typeof filter === 'function' ? filter(v) : true));
5
+ export async function unthrottledDockerVolumeLs({ filter, } = {}) {
6
+ return (await spawn('docker', ['volume', 'ls', '--format', '{{json .}}'], {
7
+ captureOutput: true,
8
+ })).output
9
+ .split('\n')
10
+ .filter((line) => !!line.trim())
11
+ .map((line) => {
12
+ const { Driver: driver, Labels, Mountpoint: mountPoint, Name: name, Scope: scope, } = JSON.parse(line.trim());
13
+ return {
14
+ driver,
15
+ inspect: async () => (await dockerVolumeInspect(name))?.[0] || null,
16
+ labels: Labels.split(',').map((l) => l.trim()),
17
+ mountPoint,
18
+ name,
19
+ rm: async () => dockerVolumeRm(name),
20
+ scope,
21
+ };
22
+ })
23
+ .filter((v) => v.name && (typeof filter === 'function' ? filter(v) : true));
55
24
  }
56
-
57
- const dockerVolumeLs =
58
-
59
- (0, _throttle.default)(_dockerVolumeLs, 500, {
60
- trailing: false });exports.dockerVolumeLs = dockerVolumeLs;
61
-
62
-
63
- async function dockerVolumeFind(
64
- search,
65
- options)
66
- {
67
- return (await dockerVolumeLs(options)).find(
68
- (v) => v.name === search || v.name.startsWith(search));
69
-
25
+ export const dockerVolumeLs = throttle(unthrottledDockerVolumeLs, 500, {
26
+ trailing: false,
27
+ });
28
+ export async function dockerVolumeFind(search, options) {
29
+ return ((await dockerVolumeLs(options))?.find((v) => v.name === search || v.name.startsWith(search)) ?? null);
70
30
  }
71
-
72
-
73
-
74
-
75
-
76
-
77
- async function dockerVolumeCreate(
78
- name,
79
- { labels = [], driver, driverOpts = {} } = {})
80
- {
81
- const existing = await dockerVolumeFind(name);
82
- if (existing) return existing;
83
- await (0, _cp.spawn)('docker', [
84
- 'volume',
85
- 'create',
86
- ...labels.flatMap((l) => ['--label', l]),
87
- ...(driver ? ['-d', driver] : []),
88
- ...Object.entries(driverOpts).flatMap(([k, v]) => [
89
- '-o',
90
- `${k}=${v}`]),
91
-
92
- name]);
93
-
94
- return dockerVolumeFind(name);
31
+ export async function dockerVolumeCreate(name, { labels = [], driver, driverOpts = {} } = {}) {
32
+ const existing = await dockerVolumeFind(name);
33
+ if (existing)
34
+ return existing;
35
+ await spawn('docker', [
36
+ 'volume',
37
+ 'create',
38
+ ...labels.flatMap((l) => ['--label', l]),
39
+ ...(driver ? ['-d', driver] : []),
40
+ ...Object.entries(driverOpts).flatMap(([k, v]) => ['-o', `${k}=${v}`]),
41
+ name,
42
+ ]);
43
+ return dockerVolumeFind(name);
95
44
  }
96
-
97
- async function dockerVolumeRm(
98
- id,
99
- ignoreErrors = true)
100
- {
101
- const ids = Array.isArray(id) ? id : [id];
102
- try {
103
- await (0, _cp.spawn)('docker', ['volume', 'rm', ...ids]);
104
- } catch (e) {
105
- if (!ignoreErrors) {
106
- throw new Error(`Failed to remove volume(s): ${e.message}`);
45
+ export async function dockerVolumeRm(id, ignoreErrors = true) {
46
+ const ids = Array.isArray(id) ? id : [id];
47
+ try {
48
+ await spawn('docker', ['volume', 'rm', ...ids]);
49
+ }
50
+ catch (e) {
51
+ if (!ignoreErrors) {
52
+ throw new Error(`Failed to remove volume(s): ${e.message}`);
53
+ }
107
54
  }
108
- }
109
55
  }
110
-
111
56
  // calling this function in rapid succession can lead to errors.
112
57
  // prefer throttled version
113
- async function _dockerVolumeInspect(
114
- id)
115
- {
116
- const ids = Array.isArray(id) ? id : [id];
117
- return (
118
- JSON.parse(
119
- (
120
- await (0, _cp.spawn)(
121
- 'docker',
122
- ['volume', 'inspect', '--format', '{{json .}}', ...ids],
123
- { captureOutput: true })).
124
-
125
- trim()) ||
126
- []);
127
-
58
+ export async function unthrottledDockerVolumeInspect(id) {
59
+ const ids = Array.isArray(id) ? id : [id];
60
+ return (JSON.parse((await spawn('docker', ['volume', 'inspect', '--format', '{{json .}}', ...ids], { captureOutput: true })).output.trim()) || []);
128
61
  }
129
-
130
- const dockerVolumeInspect =
131
-
132
- (0, _throttle.default)(
133
- _dockerVolumeInspect,
134
- 500,
135
- { trailing: true });exports.dockerVolumeInspect = dockerVolumeInspect;
136
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kb2NrZXIudm9sdW1lLmpzIl0sIm5hbWVzIjpbIl9kb2NrZXJWb2x1bWVMcyIsImZpbHRlciIsImNhcHR1cmVPdXRwdXQiLCJzcGxpdCIsImxpbmUiLCJ0cmltIiwibWFwIiwiTmFtZSIsIm5hbWUiLCJEcml2ZXIiLCJkcml2ZXIiLCJTY29wZSIsInNjb3BlIiwiTGFiZWxzIiwiTW91bnRwb2ludCIsIm1vdW50UG9pbnQiLCJKU09OIiwicGFyc2UiLCJsYWJlbHMiLCJsIiwiaW5zcGVjdCIsImRvY2tlclZvbHVtZUluc3BlY3QiLCJybSIsImRvY2tlclZvbHVtZVJtIiwidiIsImRvY2tlclZvbHVtZUxzIiwidHJhaWxpbmciLCJkb2NrZXJWb2x1bWVGaW5kIiwic2VhcmNoIiwib3B0aW9ucyIsImZpbmQiLCJzdGFydHNXaXRoIiwiZG9ja2VyVm9sdW1lQ3JlYXRlIiwiZHJpdmVyT3B0cyIsImV4aXN0aW5nIiwiZmxhdE1hcCIsIk9iamVjdCIsImVudHJpZXMiLCJrIiwiaWQiLCJpZ25vcmVFcnJvcnMiLCJpZHMiLCJBcnJheSIsImlzQXJyYXkiLCJlIiwiRXJyb3IiLCJtZXNzYWdlIiwiX2RvY2tlclZvbHVtZUluc3BlY3QiXSwibWFwcGluZ3MiOiI7QUFDQTtBQUNBLDBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTtBQUNBO0FBQ08sZUFBZUEsZUFBZixDQUErQjtBQUNwQ0MsRUFBQUEsTUFEb0M7QUFFWCxFQUZwQixFQUVpRDtBQUN0RCxTQUFPO0FBQ0wsUUFBTSxlQUFNLFFBQU4sRUFBZ0IsQ0FBQyxRQUFELEVBQVcsSUFBWCxFQUFpQixVQUFqQixFQUE2QixZQUE3QixDQUFoQixFQUE0RDtBQUNoRUMsSUFBQUEsYUFBYSxFQUFFLElBRGlELEVBQTVELENBREQ7OztBQUtKQyxFQUFBQSxLQUxJLENBS0UsSUFMRjtBQU1KRixFQUFBQSxNQU5JLENBTUcsQ0FBQ0csSUFBRCxLQUFVLENBQUMsQ0FBQ0EsSUFBSSxDQUFDQyxJQUFMLEVBTmY7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QSxFQUFELENBQXJDO0FBQ0EsTUFBSTtBQUNGLFVBQU0sZUFBTSxRQUFOLEVBQWdCLENBQUMsUUFBRCxFQUFXLElBQVgsRUFBaUIsR0FBR0UsR0FBcEIsQ0FBaEIsQ0FBTjtBQUNELEdBRkQsQ0FFRSxPQUFPRyxDQUFQLEVBQVU7QUFDVixRQUFJLENBQUNKLFlBQUwsRUFBbUI7QUFDakIsWUFBTSxJQUFJSyxLQUFKLENBQVcsK0JBQThCRCxDQUFDLENBQUNFLE9BQVEsRUFBbkQsQ0FBTjtBQUNEO0FBQ0Y7QUFDRjs7QUFFRDtBQUNBO0FBQ08sZUFBZUMsb0JBQWY7QUFDTFIsRUFESztBQUVpQztBQUN0QyxRQUFNRSxHQUFHLEdBQUdDLEtBQUssQ0FBQ0MsT0FBTixDQUFjSixFQUFkLElBQW9CQSxFQUFwQixHQUF5QixDQUFDQSxFQUFELENBQXJDO0FBQ0E7QUFDRXZCLElBQUFBLElBQUksQ0FBQ0MsS0FBTDtBQUNFO0FBQ0UsVUFBTTtBQUNKLFlBREk7QUFFSixLQUFDLFFBQUQsRUFBVyxTQUFYLEVBQXNCLFVBQXRCLEVBQWtDLFlBQWxDLEVBQWdELEdBQUd3QixHQUFuRCxDQUZJO0FBR0osTUFBRXZDLGFBQWEsRUFBRSxJQUFqQixFQUhJLENBRFI7O0FBTUVHLElBQUFBLElBTkYsRUFERjtBQVFLLE1BVFA7O0FBV0Q7O0FBRU0sTUFBTWdCLG1CQUU0Qjs7QUFBRztBQUMxQzBCLG9CQUQwQztBQUUxQyxHQUYwQztBQUcxQyxFQUFFckIsUUFBUSxFQUFFLElBQVosRUFIMEMsQ0FGckMsQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoL3Rocm90dGxlJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnLi9jcCc7XG5cbnR5cGUgRG9ja2VyVm9sdW1lSW5zcGVjdE91dHB1dCA9IHtcbiAgW3N0cmluZ106IGFueSxcbn07XG5cbmV4cG9ydCB0eXBlIERvY2tlclZvbHVtZSA9IHt8XG4gIG5hbWU6IHN0cmluZyxcbiAgZHJpdmVyOiBzdHJpbmcsXG4gIHNjb3BlOiBzdHJpbmcsXG4gIGxhYmVsczogc3RyaW5nW10sXG4gIG1vdW50UG9pbnQ6IHN0cmluZyxcbiAgaW5zcGVjdDogKCkgPT4gUHJvbWlzZTxEb2NrZXJWb2x1bWVJbnNwZWN0T3V0cHV0PixcbiAgcm06ICgpID0+IFByb21pc2U8dm9pZD4sXG58fTtcblxudHlwZSBEb2NrZXJWb2x1bWVMc09wdGlvbnMgPSB7XG4gIGZpbHRlcj86ICh2b2w6IERvY2tlclZvbHVtZSkgPT4gYm9vbGVhbixcbn07XG5cbi8vIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBpbiByYXBpZCBzdWNjZXNzaW9uIGNhbiBsZWFkIHRvIGVycm9ycy5cbi8vIHByZWZlciB0aHJvdHRsZWQgdmVyc2lvblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIF9kb2NrZXJWb2x1bWVMcyh7XG4gIGZpbHRlcixcbn06IERvY2tlclZvbHVtZUxzT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxEb2NrZXJWb2x1bWVbXT4ge1xuICByZXR1cm4gKFxuICAgIGF3YWl0IHNwYXduKCdkb2NrZXInLCBbJ3ZvbHVtZScsICdscycsICctLWZvcm1hdCcsICd7e2pzb24gLn19J10sIHtcbiAgICAgIGNhcHR1cmVPdXRwdXQ6IHRydWUsXG4gICAgfSlcbiAgKVxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAuZmlsdGVyKChsaW5lKSA9PiAhIWxpbmUudHJpbSgpKVxuICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgTmFtZTogbmFtZSxcbiAgICAgICAgRHJpdmVyOiBkcml2ZXIsXG4gICAgICAgIFNjb3BlOiBzY29wZSxcbiAgICAgICAgTGFiZWxzLFxuICAgICAgICBNb3VudHBvaW50OiBtb3VudFBvaW50LFxuICAgICAgfSA9IEpTT04ucGFyc2UobGluZS50cmltKCkpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lLFxuICAgICAgICBkcml2ZXIsXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBsYWJlbHM6IExhYmVscy5zcGxpdCgnLCcpLm1hcCgobCkgPT4gbC50cmltKCkpLFxuICAgICAgICBtb3VudFBvaW50LFxuICAgICAgICBpbnNwZWN0OiBhc3luYyAoKSA9PiAoYXdhaXQgZG9ja2VyVm9sdW1lSW5zcGVjdChuYW1lKSlbMF0sXG4gICAgICAgIHJtOiBhc3luYyAoKSA9PiBkb2NrZXJWb2x1bWVSbShuYW1lKSxcbiAgICAgIH07XG4gICAgfSlcbiAgICAuZmlsdGVyKCh2KSA9PiB2Lm5hbWUgJiYgKHR5cGVvZiBmaWx0ZXIgPT09ICdmdW5jdGlvbicgPyBmaWx0ZXIodikgOiB0cnVlKSk7XG59XG5cbmV4cG9ydCBjb25zdCBkb2NrZXJWb2x1bWVMczogKFxuICBEb2NrZXJWb2x1bWVMc09wdGlvbnMgfCB2b2lkLFxuKSA9PiBQcm9taXNlPERvY2tlclZvbHVtZVtdPiA9IHRocm90dGxlKF9kb2NrZXJWb2x1bWVMcywgNTAwLCB7XG4gIHRyYWlsaW5nOiBmYWxzZSxcbn0pO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG9ja2VyVm9sdW1lRmluZChcbiAgc2VhcmNoOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBEb2NrZXJWb2x1bWVMc09wdGlvbnMsXG4pOiBQcm9taXNlPD9Eb2NrZXJWb2x1bWU+IHtcbiAgcmV0dXJuIChhd2FpdCBkb2NrZXJWb2x1bWVMcyhvcHRpb25zKSkuZmluZChcbiAgICAodikgPT4gdi5uYW1lID09PSBzZWFyY2ggfHwgdi5uYW1lLnN0YXJ0c1dpdGgoc2VhcmNoKSxcbiAgKTtcbn1cblxuZXhwb3J0IHR5cGUgRG9ja2VyVm9sdW1lQ3JlYXRlT3B0aW9ucyA9IHt8XG4gIGxhYmVscz86IHN0cmluZ1tdLFxuICBkcml2ZXI/OiBzdHJpbmcsXG4gIGRyaXZlck9wdHM/OiB7IFtzdHJpbmddOiBzdHJpbmcgfSxcbnx9O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvY2tlclZvbHVtZUNyZWF0ZShcbiAgbmFtZTogc3RyaW5nLFxuICB7IGxhYmVscyA9IFtdLCBkcml2ZXIsIGRyaXZlck9wdHMgPSB7fSB9OiBEb2NrZXJWb2x1bWVDcmVhdGVPcHRpb25zID0ge30sXG4pOiBQcm9taXNlPD9Eb2NrZXJWb2x1bWU+IHtcbiAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCBkb2NrZXJWb2x1bWVGaW5kKG5hbWUpO1xuICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcbiAgYXdhaXQgc3Bhd24oJ2RvY2tlcicsIFtcbiAgICAndm9sdW1lJyxcbiAgICAnY3JlYXRlJyxcbiAgICAuLi5sYWJlbHMuZmxhdE1hcCgobCkgPT4gWyctLWxhYmVsJywgbF0pLFxuICAgIC4uLihkcml2ZXIgPyBbJy1kJywgZHJpdmVyXSA6IFtdKSxcbiAgICAuLi5PYmplY3QuZW50cmllcyhkcml2ZXJPcHRzKS5mbGF0TWFwKChbaywgdl0pID0+IFtcbiAgICAgICctbycsXG4gICAgICBgJHtrfT0keyh2OiBhbnkpfWAsXG4gICAgXSksXG4gICAgbmFtZSxcbiAgXSk7XG4gIHJldHVybiBkb2NrZXJWb2x1bWVGaW5kKG5hbWUpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG9ja2VyVm9sdW1lUm0oXG4gIGlkOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgaWdub3JlRXJyb3JzOiBib29sZWFuID0gdHJ1ZSxcbikge1xuICBjb25zdCBpZHMgPSBBcnJheS5pc0FycmF5KGlkKSA/IGlkIDogW2lkXTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBzcGF3bignZG9ja2VyJywgWyd2b2x1bWUnLCAncm0nLCAuLi5pZHNdKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghaWdub3JlRXJyb3JzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZW1vdmUgdm9sdW1lKHMpOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGluIHJhcGlkIHN1Y2Nlc3Npb24gY2FuIGxlYWQgdG8gZXJyb3JzLlxuLy8gcHJlZmVyIHRocm90dGxlZCB2ZXJzaW9uXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gX2RvY2tlclZvbHVtZUluc3BlY3QoXG4gIGlkOiBzdHJpbmcgfCBzdHJpbmdbXSxcbik6IFByb21pc2U8RG9ja2VyVm9sdW1lSW5zcGVjdE91dHB1dFtdPiB7XG4gIGNvbnN0IGlkcyA9IEFycmF5LmlzQXJyYXkoaWQpID8gaWQgOiBbaWRdO1xuICByZXR1cm4gKFxuICAgIEpTT04ucGFyc2UoXG4gICAgICAoXG4gICAgICAgIGF3YWl0IHNwYXduKFxuICAgICAgICAgICdkb2NrZXInLFxuICAgICAgICAgIFsndm9sdW1lJywgJ2luc3BlY3QnLCAnLS1mb3JtYXQnLCAne3tqc29uIC59fScsIC4uLmlkc10sXG4gICAgICAgICAgeyBjYXB0dXJlT3V0cHV0OiB0cnVlIH0sXG4gICAgICAgIClcbiAgICAgICkudHJpbSgpLFxuICAgICkgfHwgW11cbiAgKTtcbn1cblxuZXhwb3J0IGNvbnN0IGRvY2tlclZvbHVtZUluc3BlY3Q6IChcbiAgc3RyaW5nIHwgc3RyaW5nW10sXG4pID0+IFByb21pc2U8RG9ja2VyVm9sdW1lSW5zcGVjdE91dHB1dFtdPiA9IHRocm90dGxlKFxuICBfZG9ja2VyVm9sdW1lSW5zcGVjdCxcbiAgNTAwLFxuICB7IHRyYWlsaW5nOiB0cnVlIH0sXG4pO1xuIl19
62
+ export const dockerVolumeInspect = throttle(unthrottledDockerVolumeInspect, 500, { trailing: true });
@@ -0,0 +1,38 @@
1
+ interface CommonDockerCleanupOptions {
2
+ /** print matched items to console instead of deleting */
3
+ dryRun?: boolean;
4
+ }
5
+ /**
6
+ * Purge stopped containers
7
+ */
8
+ export declare const dockerContainerCleanup: ({ dryRun, }?: CommonDockerCleanupOptions) => Promise<void>;
9
+ interface DockerImageCleanupOptions extends CommonDockerCleanupOptions {
10
+ /** Image ids known to be produced by this build */
11
+ buildImageIds?: string[];
12
+ /** Explicit image names/ids to delete unconditionally */
13
+ images?: string[];
14
+ /**
15
+ * ignore default exclusions of :latest* and images < 1hr old
16
+ * this will delete all images in the given repos
17
+ */
18
+ purgeAll?: boolean;
19
+ /**
20
+ * looks for other builds of the same repos
21
+ * this will still exclude :latest* and images < 1hr old
22
+ * useful to clean up after past builds that failed to clean themselves properly
23
+ */
24
+ purgeOld?: boolean;
25
+ /** Image repositories to clean (defaults to the one configured in package.json) */
26
+ repos?: string[];
27
+ }
28
+ /**
29
+ * Purge docker images created during build process
30
+ */
31
+ export declare const dockerImageCleanup: ({ repos, buildImageIds, images, purgeAll, purgeOld, dryRun, }?: DockerImageCleanupOptions) => Promise<void>;
32
+ interface DockerCleanupOptions extends DockerImageCleanupOptions, CommonDockerCleanupOptions {
33
+ }
34
+ /**
35
+ * Purge docker images created during build process
36
+ */
37
+ export declare const dockerCleanup: ({ dryRun, ...rest }?: DockerCleanupOptions) => Promise<void>;
38
+ export default dockerCleanup;