docker-progress 5.0.1-fix-nan-progress-fa3f44c11a2067e65eea4ab43a382f7bbb5b75ef

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/CHANGELOG.md ADDED
@@ -0,0 +1,184 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file
4
+ automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
5
+ This project adheres to [Semantic Versioning](http://semver.org/).
6
+
7
+ # v5.0.1
8
+ ## (2021-09-22)
9
+
10
+ * Fix for bad progress values from some registries causing a crash [Paul Jonathan Zoulin]
11
+
12
+ # v5.0.0
13
+ ## (2021-05-05)
14
+
15
+ * Convert to TypeScript. BREAKING: constructor and push/pull interfaces [Paulo Castro]
16
+ * Delete legacy.coffee and auto-convert CoffeeScript to JavaScript [Paulo Castro]
17
+ * Add 'package-lock=false' to '.npmrc' (libs shouldn't lock dependencies) [Paulo Castro]
18
+ * Update license to Apache 2.0 [Paulo Castro]
19
+
20
+ # v4.0.3
21
+ ## (2020-08-17)
22
+
23
+ * Update to balena-lint 5.x [Pagan Gazzard]
24
+
25
+ # v4.0.2
26
+ ## (2020-08-17)
27
+
28
+ * Add .versionbot/CHANGELOG.yml for nested changelogs [Pagan Gazzard]
29
+
30
+ ## 4.0.1 - 2020-03-03
31
+
32
+ * Update dependencies [Pagan Gazzard]
33
+
34
+ ## 4.0.0 - 2019-03-20
35
+
36
+ * Detect error events in push/pull progress streams [Paulo Castro]
37
+
38
+ ## 3.0.5 - 2019-03-15
39
+
40
+ * Fix "Progress error: Cannot read property 'startsWith' of undefined" [Paulo Castro]
41
+
42
+ ## 3.0.4 - 2019-03-05
43
+
44
+ * Catch 'unknown blob' errors in progress streams [Paulo Castro]
45
+
46
+ ## 3.0.3 - 2018-12-03
47
+
48
+ * Replace followProgress to avoid caching push/pull state [Cameron Diver]
49
+
50
+ ## v3.0.2 - 2018-10-10
51
+
52
+ * Ensure latest versions of balena-engine can be identified [Akis Kesoglou]
53
+
54
+ ## v3.0.1 - 2017-12-05
55
+
56
+ * Expose docker property of docker-progress #42 [Cameron Diver]
57
+
58
+ ## v3.0.0 - 2017-12-05
59
+
60
+ * Pull and Push promises resolve to the registry digest of the image #40 [Andreas Fitzek]
61
+
62
+ ## v2.8.1 - 2017-11-01
63
+
64
+ * Specify the promises as bluebird promises in typings #38 [Cameron Diver]
65
+
66
+ ## v2.8.0 - 2017-10-31
67
+
68
+ * Add typings for index.coffee #37 [Cameron Diver]
69
+
70
+ ## v2.7.2 - 2017-10-16
71
+
72
+ * Identify Balena #35 [Akis Kesoglou]
73
+
74
+ ## v2.7.1 - 2017-10-04
75
+
76
+ * Use custom reporter for Balanea #34 [Akis Kesoglou]
77
+
78
+ ## v2.7.0 - 2017-10-03
79
+
80
+ * Handle combined download and extraction stages #33 [Akis Kesoglou]
81
+
82
+ ## v2.6.4 - 2017-09-06
83
+
84
+ * Search fo any tag instead of just 'latest' in pushProgress. #31 [Alexis Svinartchouk]
85
+
86
+ ## v2.6.3 - 2017-08-28
87
+
88
+ * Add empty .npmignore to avoid js files being ignored #29 [Pablo Carranza Velez]
89
+
90
+ ## v2.6.2 - 2017-08-16
91
+
92
+ * Avoid calling the docker API to check if the dockerToolbelt option is valid #27 [Pablo Carranza Velez]
93
+
94
+ ## v2.6.1 - 2017-07-17
95
+
96
+ * Remove the .js files from the git repository [Pablo Carranza Velez]
97
+
98
+ ## v2.6.0 - 2017-07-14
99
+
100
+ * Allow passing a dockerToolbelt object in the options, and update docker-toolbelt to 3.0.1 [Pablo Carranza Velez]
101
+
102
+ ## v2.5.1 - 2017-07-14
103
+
104
+ * Adapt the changelog to the versionist format [Pablo Carranza Velez]
105
+
106
+ ## v2.5.0 - 2017-03-24
107
+
108
+ * Forward options object to docker pull
109
+
110
+ ## v2.4.4
111
+
112
+ * Improved parsing Docker client version anticipating version-scheme changes in Docker
113
+
114
+ ## v2.4.3
115
+
116
+ * Fixed getting registry version
117
+
118
+ ## v2.4.2
119
+
120
+ * Restore public-facing APIs that were incorrectly removed in v2.4.0
121
+
122
+ ## v2.4.1
123
+
124
+ * Fix packaging to include new Coffee files
125
+
126
+ ## v2.4.0
127
+
128
+ * Deprecated support for Docker<1.10
129
+ * Added support for pulling from and pushing to registry v2
130
+
131
+ ## v2.3.3
132
+
133
+ * Fixed downloading the entire layer to get the size
134
+
135
+ ## v2.3.2
136
+
137
+ * Updated to docker-toolbelt 1.3.1
138
+
139
+ ## v2.3.1
140
+
141
+ * Fix use of `_.sum` for lodash 4
142
+ * Do not export getRegistryAndName and use docker-toolbelt instead
143
+
144
+ ## v2.3.0
145
+
146
+ * Updated to bluebird 3
147
+ * Updated to lodash v4
148
+ * Updated to coffee-script 1.11
149
+
150
+ ## v2.2.0
151
+
152
+ * Support pulling from registry v2
153
+ * Correctly handle progress during concurrent push.
154
+ * Added linting.
155
+
156
+ ## v2.1.0
157
+
158
+ * Correctly handle progress during concurrent pulls.
159
+
160
+ ## v2.0.1
161
+
162
+ * Use 443 as the default registry port.
163
+
164
+ ## v2.0.0
165
+
166
+ * Add toString() to Registry class and export getRegistryAndName().
167
+ * Changed pull/push to fall back to calling onProgress without `downloadedSize`, `totalSize`, and `percentage` in the case where fetching size info fails, rather than failing with an error.
168
+ * Fix a race condition where early layers could complete before we had completed fetching all the layer sizes, meaning it would not be accounted for in `downloadedSize` and `percentage`.
169
+
170
+ ## v1.1.2
171
+
172
+ * Capped reported percentage at 100.
173
+
174
+ ## v1.1.1
175
+
176
+ * Fix registry references in errors.
177
+
178
+ ## v1.1.0
179
+
180
+ * Added support for listing total progress of a docker push.
181
+
182
+ ## v1.0.0
183
+
184
+ * Added support for listing total progress of a docker pull.
package/README.md ADDED
File without changes
@@ -0,0 +1,42 @@
1
+ import type { DockerVersion } from 'dockerode';
2
+ export interface EngineVersion extends DockerVersion {
3
+ Engine?: string;
4
+ }
5
+ export interface PullPushOptions {
6
+ authconfig?: {
7
+ username?: string;
8
+ password?: string;
9
+ auth?: string;
10
+ email?: string;
11
+ serveraddress?: string;
12
+ registrytoken?: string;
13
+ };
14
+ ignoreProgressErrorEvents?: boolean;
15
+ }
16
+ export declare type ProgressCallback = (eventObj: any) => void;
17
+ declare class ProgressReporter {
18
+ protected renderProgress: (percent: number) => string;
19
+ constructor(renderProgress: (percent: number) => string);
20
+ protected checkProgressError(error: Error, extraInfo: string): void;
21
+ pullProgress(onProgress: ProgressCallback): ProgressCallback;
22
+ pushProgress(onProgress: ProgressCallback): ProgressCallback;
23
+ }
24
+ export interface DockerProgressOpts {
25
+ docker: import('dockerode');
26
+ dockerVersionObj?: EngineVersion;
27
+ }
28
+ export declare class DockerProgress {
29
+ protected opts: DockerProgressOpts;
30
+ docker: import('dockerode');
31
+ protected reporter?: ProgressReporter;
32
+ protected engineVersion?: EngineVersion;
33
+ private engineVersionPromise?;
34
+ constructor(opts: DockerProgressOpts);
35
+ protected getProgressRenderer(stepCount?: number): (percentage: number) => string;
36
+ protected getProgressReporter(): Promise<ProgressReporter>;
37
+ aggregateProgress(count: number, onProgress: ProgressCallback): ProgressCallback[];
38
+ pull(image: string, onProgress: ProgressCallback, options?: PullPushOptions): Promise<string>;
39
+ push(image: string, onProgress: ProgressCallback, options?: PullPushOptions): Promise<string>;
40
+ isBalenaEngine(): Promise<boolean>;
41
+ }
42
+ export {};
package/build/index.js ADDED
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DockerProgress = void 0;
4
+ const _ = require("lodash");
5
+ const DEFAULT_PROGRESS_BAR_STEP_COUNT = 50;
6
+ function tryExtractDigestHash(evt) {
7
+ if (evt.aux && evt.aux.Digest) {
8
+ return evt.aux.Digest;
9
+ }
10
+ if (typeof evt.status === 'string') {
11
+ const matchPull = evt.status.match(/^Digest:\s([a-zA-Z0-9]+:[a-f0-9]+)$/);
12
+ if (matchPull != null) {
13
+ return matchPull[1];
14
+ }
15
+ }
16
+ }
17
+ function awaitRegistryStream(stream, onProgress, ignoreErrorEvents) {
18
+ return new Promise((resolve, reject) => {
19
+ let contentHash = '';
20
+ const JSONStream = require('JSONStream');
21
+ const jsonStream = JSONStream.parse();
22
+ jsonStream.on('error', reject);
23
+ jsonStream.on('end', () => resolve(contentHash));
24
+ jsonStream.on('data', (evt) => {
25
+ if (typeof evt !== 'object') {
26
+ return;
27
+ }
28
+ try {
29
+ if (evt.error && !ignoreErrorEvents) {
30
+ throw new Error(evt.error);
31
+ }
32
+ const maybeContent = tryExtractDigestHash(evt);
33
+ if (maybeContent != null) {
34
+ contentHash = maybeContent;
35
+ }
36
+ onProgress(evt);
37
+ }
38
+ catch (error) {
39
+ try {
40
+ stream.destroy(error);
41
+ reject(error);
42
+ }
43
+ catch (err) {
44
+ stream.emit('error', error);
45
+ }
46
+ }
47
+ });
48
+ stream.pipe(jsonStream);
49
+ });
50
+ }
51
+ function $renderProgress(percentage, stepCount) {
52
+ percentage = _.clamp(percentage, 0, 100);
53
+ const barCount = Math.floor((stepCount * percentage) / 100);
54
+ const spaceCount = stepCount - barCount;
55
+ const bar = `[${_.repeat('=', barCount)}>${_.repeat(' ', spaceCount)}]`;
56
+ return `${bar} ${percentage}%`;
57
+ }
58
+ class ProgressTracker {
59
+ constructor(coalesceBelow = 0) {
60
+ this.coalesceBelow = coalesceBelow;
61
+ this.layers = {};
62
+ }
63
+ addLayer(id) {
64
+ this.layers[id] = { progress: null, coalesced: false };
65
+ }
66
+ linkLayer(id, tracker) {
67
+ this.layers[id] = tracker.layers[id];
68
+ }
69
+ updateLayer(id, progress) {
70
+ if (id == null) {
71
+ return;
72
+ }
73
+ if (!this.layers[id]) {
74
+ this.addLayer(id);
75
+ }
76
+ this.patchProgressEvent(progress);
77
+ this.layers[id].coalesced =
78
+ this.layers[id].progress == null && progress.total < this.coalesceBelow;
79
+ this.layers[id].progress = progress.current / progress.total || 0;
80
+ }
81
+ finishLayer(id) {
82
+ this.updateLayer(id, { current: 1, total: 1 });
83
+ }
84
+ getProgress() {
85
+ const layers = _.filter(this.layers, { coalesced: false });
86
+ const avgProgress = _.meanBy(layers, 'progress') || 0;
87
+ return Math.round(100 * avgProgress);
88
+ }
89
+ patchProgressEvent(progress) {
90
+ if (progress.total == null) {
91
+ progress.total = progress.current;
92
+ }
93
+ progress.current = Math.min(progress.current, progress.total);
94
+ }
95
+ }
96
+ class ProgressReporter {
97
+ constructor(renderProgress) {
98
+ this.renderProgress = renderProgress;
99
+ }
100
+ checkProgressError(error, extraInfo) {
101
+ const prefix = `Progress error: [${extraInfo}]`;
102
+ console.warn(prefix, error.message || error);
103
+ error.message = `${prefix} ${error.message}`;
104
+ throw error;
105
+ }
106
+ pullProgress(onProgress) {
107
+ const progressRenderer = this.renderProgress;
108
+ const downloadProgressTracker = new ProgressTracker(100 * 1024);
109
+ const extractionProgressTracker = new ProgressTracker(1024 * 1024);
110
+ let lastPercentage = 0;
111
+ return (evt) => {
112
+ let id;
113
+ let status;
114
+ try {
115
+ let downloadedPercentage;
116
+ let extractedPercentage;
117
+ ({ id, status } = evt);
118
+ if (id == null) {
119
+ id = '';
120
+ }
121
+ if (status == null) {
122
+ status = '';
123
+ }
124
+ if (status === 'Pulling fs layer') {
125
+ downloadProgressTracker.addLayer(id);
126
+ extractionProgressTracker.addLayer(id);
127
+ }
128
+ else if (status === 'Ready to download') {
129
+ downloadProgressTracker.linkLayer(id, extractionProgressTracker);
130
+ }
131
+ else if (status === 'Downloading') {
132
+ downloadProgressTracker.updateLayer(id, evt.progressDetail);
133
+ }
134
+ else if (status === 'Extracting') {
135
+ extractionProgressTracker.updateLayer(id, evt.progressDetail);
136
+ }
137
+ else if (status === 'Download complete') {
138
+ downloadProgressTracker.finishLayer(id);
139
+ }
140
+ else if (status === 'Pull complete') {
141
+ extractionProgressTracker.finishLayer(id);
142
+ }
143
+ else if (status === 'Already exists') {
144
+ downloadProgressTracker.finishLayer(id);
145
+ extractionProgressTracker.finishLayer(id);
146
+ }
147
+ if (status.startsWith('Status: Image is up to date for ') ||
148
+ status.startsWith('Status: Downloaded newer image for ')) {
149
+ downloadedPercentage = 100;
150
+ extractedPercentage = 100;
151
+ }
152
+ else {
153
+ downloadedPercentage = downloadProgressTracker.getProgress();
154
+ extractedPercentage = extractionProgressTracker.getProgress();
155
+ }
156
+ let percentage = Math.floor((downloadedPercentage + extractedPercentage) / 2);
157
+ percentage = lastPercentage = Math.max(percentage, lastPercentage);
158
+ onProgress(_.merge(evt, {
159
+ percentage,
160
+ downloadedPercentage,
161
+ extractedPercentage,
162
+ totalProgress: progressRenderer(percentage),
163
+ }));
164
+ }
165
+ catch (err) {
166
+ this.checkProgressError(err, `pull id=${id} status=${status}`);
167
+ }
168
+ };
169
+ }
170
+ pushProgress(onProgress) {
171
+ const progressRenderer = this.renderProgress;
172
+ const progressTracker = new ProgressTracker(100 * 1024);
173
+ let lastPercentage = 0;
174
+ return (evt) => {
175
+ let id;
176
+ let status;
177
+ try {
178
+ ({ id, status } = evt);
179
+ const pushMatch = /Image (.*) already pushed/.exec(status);
180
+ if (id == null) {
181
+ id = pushMatch != null ? pushMatch[1] : undefined;
182
+ }
183
+ if (status == null) {
184
+ status = '';
185
+ }
186
+ if (status === 'Preparing') {
187
+ progressTracker.addLayer(id);
188
+ }
189
+ else if (status === 'Pushing' && evt.progressDetail.current != null) {
190
+ progressTracker.updateLayer(id, evt.progressDetail);
191
+ }
192
+ else if (_.includes(['Pushed', 'Layer already exists', 'Image already exists'], status) ||
193
+ /^Mounted from /.test(status)) {
194
+ progressTracker.finishLayer(id);
195
+ }
196
+ else if (pushMatch != null ||
197
+ _.includes(['Already exists', 'Image successfully pushed'], status)) {
198
+ progressTracker.finishLayer(id);
199
+ }
200
+ let percentage = status.search(/.+: digest: /) === 0 ||
201
+ status.startsWith('Pushing tag for rev ')
202
+ ? 100
203
+ : progressTracker.getProgress();
204
+ percentage = lastPercentage = Math.max(percentage, lastPercentage);
205
+ onProgress(_.merge(evt, {
206
+ id,
207
+ percentage,
208
+ totalProgress: progressRenderer(percentage),
209
+ }));
210
+ }
211
+ catch (err) {
212
+ this.checkProgressError(err, `push id=${id} status=${status}`);
213
+ }
214
+ };
215
+ }
216
+ }
217
+ class BalenaProgressReporter extends ProgressReporter {
218
+ pullProgress(onProgress) {
219
+ const progressRenderer = this.renderProgress;
220
+ let lastPercentage = 0;
221
+ return (evt) => {
222
+ let id;
223
+ try {
224
+ ({ id } = evt);
225
+ if (id !== 'Total') {
226
+ return;
227
+ }
228
+ let { current, total } = evt.progressDetail;
229
+ if (isNaN(current)) {
230
+ current = 0;
231
+ }
232
+ if (isNaN(total)) {
233
+ total = current + 1;
234
+ }
235
+ let percentage = Math.floor((current * 100) / total);
236
+ percentage = lastPercentage = Math.max(percentage, lastPercentage);
237
+ onProgress(_.merge(evt, {
238
+ percentage,
239
+ downloadedPercentage: current,
240
+ extractedPercentage: current,
241
+ totalProgress: progressRenderer(percentage),
242
+ }));
243
+ }
244
+ catch (err) {
245
+ this.checkProgressError(err, `balena pull id=${id}`);
246
+ }
247
+ };
248
+ }
249
+ }
250
+ class DockerProgress {
251
+ constructor(opts) {
252
+ this.opts = opts;
253
+ this.docker = opts.docker;
254
+ this.engineVersion = opts.dockerVersionObj;
255
+ }
256
+ getProgressRenderer(stepCount = DEFAULT_PROGRESS_BAR_STEP_COUNT) {
257
+ return (percentage) => $renderProgress(percentage, stepCount);
258
+ }
259
+ async getProgressReporter() {
260
+ if (this.reporter != null) {
261
+ return this.reporter;
262
+ }
263
+ const renderer = this.getProgressRenderer();
264
+ this.reporter = (await this.isBalenaEngine())
265
+ ? new BalenaProgressReporter(renderer)
266
+ : new ProgressReporter(renderer);
267
+ return this.reporter;
268
+ }
269
+ aggregateProgress(count, onProgress) {
270
+ const renderer = this.getProgressRenderer();
271
+ const states = _.times(count, () => ({
272
+ percentage: 0,
273
+ }));
274
+ return _.times(count, (index) => function (evt) {
275
+ states[index].percentage = evt.percentage;
276
+ const percentage = Math.floor(_.sumBy(states, 'percentage') / (states.length || 1));
277
+ evt.totalProgress = renderer(percentage);
278
+ evt.percentage = percentage;
279
+ evt.progressIndex = index;
280
+ onProgress(evt);
281
+ });
282
+ }
283
+ async pull(image, onProgress, options) {
284
+ const ignoreErrorEvents = !!(options === null || options === void 0 ? void 0 : options.ignoreProgressErrorEvents);
285
+ const reporter = await this.getProgressReporter();
286
+ onProgress = reporter.pullProgress(onProgress);
287
+ const stream = await this.docker.pull(image, options);
288
+ const hash = await awaitRegistryStream(stream, onProgress, ignoreErrorEvents);
289
+ return hash;
290
+ }
291
+ async push(image, onProgress, options) {
292
+ const ignoreErrorEvents = !!(options === null || options === void 0 ? void 0 : options.ignoreProgressErrorEvents);
293
+ const reporter = await this.getProgressReporter();
294
+ onProgress = reporter.pushProgress(onProgress);
295
+ const imageObj = this.docker.getImage(image);
296
+ const stream = await imageObj.push(options);
297
+ const hash = await awaitRegistryStream(stream, onProgress, ignoreErrorEvents);
298
+ return hash;
299
+ }
300
+ async isBalenaEngine() {
301
+ if (!this.engineVersion) {
302
+ if (!this.engineVersionPromise) {
303
+ this.engineVersionPromise = this.docker.version();
304
+ }
305
+ this.engineVersion = await this.engineVersionPromise;
306
+ this.engineVersionPromise = undefined;
307
+ }
308
+ return ['balena', 'balaena', 'balena-engine'].includes(this.engineVersion['Engine'] || '');
309
+ }
310
+ }
311
+ exports.DockerProgress = DockerProgress;
312
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "docker-progress",
3
+ "version": "5.0.1-fix-nan-progress-fa3f44c11a2067e65eea4ab43a382f7bbb5b75ef",
4
+ "description": "This module provides additional progress mechanics on top of dockerode",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git@github.com:balena-io-modules/docker-progress.git"
8
+ },
9
+ "author": "Pagan Gazzard <page@balena.io>",
10
+ "main": "build/index.js",
11
+ "types": "build/index.d.ts",
12
+ "files": [
13
+ "build/"
14
+ ],
15
+ "scripts": {
16
+ "clean": "rimraf build",
17
+ "build": "npm run clean && npm run lint && tsc",
18
+ "lint": "balena-lint -e ts --typescript --fix lib",
19
+ "test": "npm run lint",
20
+ "prepublishOnly": "npm run build"
21
+ },
22
+ "license": "Apache-2.0",
23
+ "dependencies": {
24
+ "JSONStream": "^1.3.5",
25
+ "lodash": "^4.17.15"
26
+ },
27
+ "devDependencies": {
28
+ "@balena/lint": "^5.4.1",
29
+ "@types/dockerode": "^3.2.3",
30
+ "rimraf": "^3.0.2",
31
+ "typescript": "^4.2.4"
32
+ },
33
+ "versionist": {
34
+ "publishedAt": "2021-09-22T18:45:19.620Z"
35
+ }
36
+ }