swift-multi 0.0.9 → 0.0.10
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/npm-shrinkwrap.json +613 -2
- package/package.json +1 -1
- package/src/chunk_uploader.js +2 -8
- package/src/cli.js +3 -0
- package/src/downloader.js +2 -9
- package/src/uploader.js +64 -0
package/npm-shrinkwrap.json
CHANGED
@@ -1,8 +1,619 @@
|
|
1
1
|
{
|
2
2
|
"name": "swift-multi",
|
3
|
-
"version": "0.0.
|
4
|
-
"lockfileVersion":
|
3
|
+
"version": "0.0.10",
|
4
|
+
"lockfileVersion": 2,
|
5
5
|
"requires": true,
|
6
|
+
"packages": {
|
7
|
+
"": {
|
8
|
+
"name": "swift-multi",
|
9
|
+
"version": "0.0.10",
|
10
|
+
"license": "MIT",
|
11
|
+
"dependencies": {
|
12
|
+
"async": "3.2.0",
|
13
|
+
"lodash": "4.17.19",
|
14
|
+
"request": "2.88.2",
|
15
|
+
"yargs": "16.2.0"
|
16
|
+
},
|
17
|
+
"bin": {
|
18
|
+
"swift-multi": "src/cli.js"
|
19
|
+
}
|
20
|
+
},
|
21
|
+
"node_modules/ajv": {
|
22
|
+
"version": "6.12.6",
|
23
|
+
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
24
|
+
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
|
25
|
+
"dependencies": {
|
26
|
+
"fast-deep-equal": "^3.1.1",
|
27
|
+
"fast-json-stable-stringify": "^2.0.0",
|
28
|
+
"json-schema-traverse": "^0.4.1",
|
29
|
+
"uri-js": "^4.2.2"
|
30
|
+
},
|
31
|
+
"funding": {
|
32
|
+
"type": "github",
|
33
|
+
"url": "https://github.com/sponsors/epoberezkin"
|
34
|
+
}
|
35
|
+
},
|
36
|
+
"node_modules/ansi-regex": {
|
37
|
+
"version": "5.0.0",
|
38
|
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
|
39
|
+
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
|
40
|
+
"engines": {
|
41
|
+
"node": ">=8"
|
42
|
+
}
|
43
|
+
},
|
44
|
+
"node_modules/ansi-styles": {
|
45
|
+
"version": "4.3.0",
|
46
|
+
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
47
|
+
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
48
|
+
"dependencies": {
|
49
|
+
"color-convert": "^2.0.1"
|
50
|
+
},
|
51
|
+
"engines": {
|
52
|
+
"node": ">=8"
|
53
|
+
},
|
54
|
+
"funding": {
|
55
|
+
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
56
|
+
}
|
57
|
+
},
|
58
|
+
"node_modules/asn1": {
|
59
|
+
"version": "0.2.4",
|
60
|
+
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
|
61
|
+
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
|
62
|
+
"dependencies": {
|
63
|
+
"safer-buffer": "~2.1.0"
|
64
|
+
}
|
65
|
+
},
|
66
|
+
"node_modules/assert-plus": {
|
67
|
+
"version": "1.0.0",
|
68
|
+
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
|
69
|
+
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
|
70
|
+
"engines": {
|
71
|
+
"node": ">=0.8"
|
72
|
+
}
|
73
|
+
},
|
74
|
+
"node_modules/async": {
|
75
|
+
"version": "3.2.0",
|
76
|
+
"resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
|
77
|
+
"integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
|
78
|
+
},
|
79
|
+
"node_modules/asynckit": {
|
80
|
+
"version": "0.4.0",
|
81
|
+
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
82
|
+
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
83
|
+
},
|
84
|
+
"node_modules/aws-sign2": {
|
85
|
+
"version": "0.7.0",
|
86
|
+
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
|
87
|
+
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
|
88
|
+
"engines": {
|
89
|
+
"node": "*"
|
90
|
+
}
|
91
|
+
},
|
92
|
+
"node_modules/aws4": {
|
93
|
+
"version": "1.11.0",
|
94
|
+
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
|
95
|
+
"integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
|
96
|
+
},
|
97
|
+
"node_modules/bcrypt-pbkdf": {
|
98
|
+
"version": "1.0.2",
|
99
|
+
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
|
100
|
+
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
|
101
|
+
"dependencies": {
|
102
|
+
"tweetnacl": "^0.14.3"
|
103
|
+
}
|
104
|
+
},
|
105
|
+
"node_modules/caseless": {
|
106
|
+
"version": "0.12.0",
|
107
|
+
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
108
|
+
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
|
109
|
+
},
|
110
|
+
"node_modules/cliui": {
|
111
|
+
"version": "7.0.4",
|
112
|
+
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
|
113
|
+
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
|
114
|
+
"dependencies": {
|
115
|
+
"string-width": "^4.2.0",
|
116
|
+
"strip-ansi": "^6.0.0",
|
117
|
+
"wrap-ansi": "^7.0.0"
|
118
|
+
}
|
119
|
+
},
|
120
|
+
"node_modules/color-convert": {
|
121
|
+
"version": "2.0.1",
|
122
|
+
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
123
|
+
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
124
|
+
"dependencies": {
|
125
|
+
"color-name": "~1.1.4"
|
126
|
+
},
|
127
|
+
"engines": {
|
128
|
+
"node": ">=7.0.0"
|
129
|
+
}
|
130
|
+
},
|
131
|
+
"node_modules/color-name": {
|
132
|
+
"version": "1.1.4",
|
133
|
+
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
134
|
+
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
135
|
+
},
|
136
|
+
"node_modules/combined-stream": {
|
137
|
+
"version": "1.0.8",
|
138
|
+
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
139
|
+
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
140
|
+
"dependencies": {
|
141
|
+
"delayed-stream": "~1.0.0"
|
142
|
+
},
|
143
|
+
"engines": {
|
144
|
+
"node": ">= 0.8"
|
145
|
+
}
|
146
|
+
},
|
147
|
+
"node_modules/core-util-is": {
|
148
|
+
"version": "1.0.2",
|
149
|
+
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
150
|
+
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
151
|
+
},
|
152
|
+
"node_modules/dashdash": {
|
153
|
+
"version": "1.14.1",
|
154
|
+
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
155
|
+
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
|
156
|
+
"dependencies": {
|
157
|
+
"assert-plus": "^1.0.0"
|
158
|
+
},
|
159
|
+
"engines": {
|
160
|
+
"node": ">=0.10"
|
161
|
+
}
|
162
|
+
},
|
163
|
+
"node_modules/delayed-stream": {
|
164
|
+
"version": "1.0.0",
|
165
|
+
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
166
|
+
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
|
167
|
+
"engines": {
|
168
|
+
"node": ">=0.4.0"
|
169
|
+
}
|
170
|
+
},
|
171
|
+
"node_modules/ecc-jsbn": {
|
172
|
+
"version": "0.1.2",
|
173
|
+
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
|
174
|
+
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
|
175
|
+
"dependencies": {
|
176
|
+
"jsbn": "~0.1.0",
|
177
|
+
"safer-buffer": "^2.1.0"
|
178
|
+
}
|
179
|
+
},
|
180
|
+
"node_modules/emoji-regex": {
|
181
|
+
"version": "8.0.0",
|
182
|
+
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
183
|
+
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
184
|
+
},
|
185
|
+
"node_modules/escalade": {
|
186
|
+
"version": "3.1.1",
|
187
|
+
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
|
188
|
+
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
|
189
|
+
"engines": {
|
190
|
+
"node": ">=6"
|
191
|
+
}
|
192
|
+
},
|
193
|
+
"node_modules/extend": {
|
194
|
+
"version": "3.0.2",
|
195
|
+
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
196
|
+
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
197
|
+
},
|
198
|
+
"node_modules/extsprintf": {
|
199
|
+
"version": "1.3.0",
|
200
|
+
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
|
201
|
+
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
|
202
|
+
"engines": [
|
203
|
+
"node >=0.6.0"
|
204
|
+
]
|
205
|
+
},
|
206
|
+
"node_modules/fast-deep-equal": {
|
207
|
+
"version": "3.1.3",
|
208
|
+
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
209
|
+
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
210
|
+
},
|
211
|
+
"node_modules/fast-json-stable-stringify": {
|
212
|
+
"version": "2.1.0",
|
213
|
+
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
|
214
|
+
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
|
215
|
+
},
|
216
|
+
"node_modules/forever-agent": {
|
217
|
+
"version": "0.6.1",
|
218
|
+
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
219
|
+
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
|
220
|
+
"engines": {
|
221
|
+
"node": "*"
|
222
|
+
}
|
223
|
+
},
|
224
|
+
"node_modules/form-data": {
|
225
|
+
"version": "2.3.3",
|
226
|
+
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
|
227
|
+
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
|
228
|
+
"dependencies": {
|
229
|
+
"asynckit": "^0.4.0",
|
230
|
+
"combined-stream": "^1.0.6",
|
231
|
+
"mime-types": "^2.1.12"
|
232
|
+
},
|
233
|
+
"engines": {
|
234
|
+
"node": ">= 0.12"
|
235
|
+
}
|
236
|
+
},
|
237
|
+
"node_modules/get-caller-file": {
|
238
|
+
"version": "2.0.5",
|
239
|
+
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
240
|
+
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
241
|
+
"engines": {
|
242
|
+
"node": "6.* || 8.* || >= 10.*"
|
243
|
+
}
|
244
|
+
},
|
245
|
+
"node_modules/getpass": {
|
246
|
+
"version": "0.1.7",
|
247
|
+
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
|
248
|
+
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
|
249
|
+
"dependencies": {
|
250
|
+
"assert-plus": "^1.0.0"
|
251
|
+
}
|
252
|
+
},
|
253
|
+
"node_modules/har-schema": {
|
254
|
+
"version": "2.0.0",
|
255
|
+
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
|
256
|
+
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
|
257
|
+
"engines": {
|
258
|
+
"node": ">=4"
|
259
|
+
}
|
260
|
+
},
|
261
|
+
"node_modules/har-validator": {
|
262
|
+
"version": "5.1.5",
|
263
|
+
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
|
264
|
+
"integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
|
265
|
+
"deprecated": "this library is no longer supported",
|
266
|
+
"dependencies": {
|
267
|
+
"ajv": "^6.12.3",
|
268
|
+
"har-schema": "^2.0.0"
|
269
|
+
},
|
270
|
+
"engines": {
|
271
|
+
"node": ">=6"
|
272
|
+
}
|
273
|
+
},
|
274
|
+
"node_modules/http-signature": {
|
275
|
+
"version": "1.2.0",
|
276
|
+
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
|
277
|
+
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
|
278
|
+
"dependencies": {
|
279
|
+
"assert-plus": "^1.0.0",
|
280
|
+
"jsprim": "^1.2.2",
|
281
|
+
"sshpk": "^1.7.0"
|
282
|
+
},
|
283
|
+
"engines": {
|
284
|
+
"node": ">=0.8",
|
285
|
+
"npm": ">=1.3.7"
|
286
|
+
}
|
287
|
+
},
|
288
|
+
"node_modules/is-fullwidth-code-point": {
|
289
|
+
"version": "3.0.0",
|
290
|
+
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
291
|
+
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
292
|
+
"engines": {
|
293
|
+
"node": ">=8"
|
294
|
+
}
|
295
|
+
},
|
296
|
+
"node_modules/is-typedarray": {
|
297
|
+
"version": "1.0.0",
|
298
|
+
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
299
|
+
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
|
300
|
+
},
|
301
|
+
"node_modules/isstream": {
|
302
|
+
"version": "0.1.2",
|
303
|
+
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
304
|
+
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
305
|
+
},
|
306
|
+
"node_modules/jsbn": {
|
307
|
+
"version": "0.1.1",
|
308
|
+
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
309
|
+
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
|
310
|
+
},
|
311
|
+
"node_modules/json-schema": {
|
312
|
+
"version": "0.2.3",
|
313
|
+
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
|
314
|
+
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
|
315
|
+
},
|
316
|
+
"node_modules/json-schema-traverse": {
|
317
|
+
"version": "0.4.1",
|
318
|
+
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
319
|
+
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
|
320
|
+
},
|
321
|
+
"node_modules/json-stringify-safe": {
|
322
|
+
"version": "5.0.1",
|
323
|
+
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
|
324
|
+
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
|
325
|
+
},
|
326
|
+
"node_modules/jsprim": {
|
327
|
+
"version": "1.4.1",
|
328
|
+
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
|
329
|
+
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
|
330
|
+
"engines": [
|
331
|
+
"node >=0.6.0"
|
332
|
+
],
|
333
|
+
"dependencies": {
|
334
|
+
"assert-plus": "1.0.0",
|
335
|
+
"extsprintf": "1.3.0",
|
336
|
+
"json-schema": "0.2.3",
|
337
|
+
"verror": "1.10.0"
|
338
|
+
}
|
339
|
+
},
|
340
|
+
"node_modules/lodash": {
|
341
|
+
"version": "4.17.19",
|
342
|
+
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
|
343
|
+
"integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
|
344
|
+
},
|
345
|
+
"node_modules/mime-db": {
|
346
|
+
"version": "1.45.0",
|
347
|
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz",
|
348
|
+
"integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==",
|
349
|
+
"engines": {
|
350
|
+
"node": ">= 0.6"
|
351
|
+
}
|
352
|
+
},
|
353
|
+
"node_modules/mime-types": {
|
354
|
+
"version": "2.1.28",
|
355
|
+
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz",
|
356
|
+
"integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==",
|
357
|
+
"dependencies": {
|
358
|
+
"mime-db": "1.45.0"
|
359
|
+
},
|
360
|
+
"engines": {
|
361
|
+
"node": ">= 0.6"
|
362
|
+
}
|
363
|
+
},
|
364
|
+
"node_modules/oauth-sign": {
|
365
|
+
"version": "0.9.0",
|
366
|
+
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
|
367
|
+
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
|
368
|
+
"engines": {
|
369
|
+
"node": "*"
|
370
|
+
}
|
371
|
+
},
|
372
|
+
"node_modules/performance-now": {
|
373
|
+
"version": "2.1.0",
|
374
|
+
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
375
|
+
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
|
376
|
+
},
|
377
|
+
"node_modules/psl": {
|
378
|
+
"version": "1.8.0",
|
379
|
+
"resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
|
380
|
+
"integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
|
381
|
+
},
|
382
|
+
"node_modules/punycode": {
|
383
|
+
"version": "2.1.1",
|
384
|
+
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
385
|
+
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
386
|
+
"engines": {
|
387
|
+
"node": ">=6"
|
388
|
+
}
|
389
|
+
},
|
390
|
+
"node_modules/qs": {
|
391
|
+
"version": "6.5.2",
|
392
|
+
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
393
|
+
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
|
394
|
+
"engines": {
|
395
|
+
"node": ">=0.6"
|
396
|
+
}
|
397
|
+
},
|
398
|
+
"node_modules/request": {
|
399
|
+
"version": "2.88.2",
|
400
|
+
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
|
401
|
+
"integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
|
402
|
+
"deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
|
403
|
+
"dependencies": {
|
404
|
+
"aws-sign2": "~0.7.0",
|
405
|
+
"aws4": "^1.8.0",
|
406
|
+
"caseless": "~0.12.0",
|
407
|
+
"combined-stream": "~1.0.6",
|
408
|
+
"extend": "~3.0.2",
|
409
|
+
"forever-agent": "~0.6.1",
|
410
|
+
"form-data": "~2.3.2",
|
411
|
+
"har-validator": "~5.1.3",
|
412
|
+
"http-signature": "~1.2.0",
|
413
|
+
"is-typedarray": "~1.0.0",
|
414
|
+
"isstream": "~0.1.2",
|
415
|
+
"json-stringify-safe": "~5.0.1",
|
416
|
+
"mime-types": "~2.1.19",
|
417
|
+
"oauth-sign": "~0.9.0",
|
418
|
+
"performance-now": "^2.1.0",
|
419
|
+
"qs": "~6.5.2",
|
420
|
+
"safe-buffer": "^5.1.2",
|
421
|
+
"tough-cookie": "~2.5.0",
|
422
|
+
"tunnel-agent": "^0.6.0",
|
423
|
+
"uuid": "^3.3.2"
|
424
|
+
},
|
425
|
+
"engines": {
|
426
|
+
"node": ">= 6"
|
427
|
+
}
|
428
|
+
},
|
429
|
+
"node_modules/require-directory": {
|
430
|
+
"version": "2.1.1",
|
431
|
+
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
432
|
+
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
|
433
|
+
"engines": {
|
434
|
+
"node": ">=0.10.0"
|
435
|
+
}
|
436
|
+
},
|
437
|
+
"node_modules/safe-buffer": {
|
438
|
+
"version": "5.2.1",
|
439
|
+
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
440
|
+
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
441
|
+
"funding": [
|
442
|
+
{
|
443
|
+
"type": "github",
|
444
|
+
"url": "https://github.com/sponsors/feross"
|
445
|
+
},
|
446
|
+
{
|
447
|
+
"type": "patreon",
|
448
|
+
"url": "https://www.patreon.com/feross"
|
449
|
+
},
|
450
|
+
{
|
451
|
+
"type": "consulting",
|
452
|
+
"url": "https://feross.org/support"
|
453
|
+
}
|
454
|
+
]
|
455
|
+
},
|
456
|
+
"node_modules/safer-buffer": {
|
457
|
+
"version": "2.1.2",
|
458
|
+
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
459
|
+
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
460
|
+
},
|
461
|
+
"node_modules/sshpk": {
|
462
|
+
"version": "1.16.1",
|
463
|
+
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
|
464
|
+
"integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
|
465
|
+
"dependencies": {
|
466
|
+
"asn1": "~0.2.3",
|
467
|
+
"assert-plus": "^1.0.0",
|
468
|
+
"bcrypt-pbkdf": "^1.0.0",
|
469
|
+
"dashdash": "^1.12.0",
|
470
|
+
"ecc-jsbn": "~0.1.1",
|
471
|
+
"getpass": "^0.1.1",
|
472
|
+
"jsbn": "~0.1.0",
|
473
|
+
"safer-buffer": "^2.0.2",
|
474
|
+
"tweetnacl": "~0.14.0"
|
475
|
+
},
|
476
|
+
"bin": {
|
477
|
+
"sshpk-conv": "bin/sshpk-conv",
|
478
|
+
"sshpk-sign": "bin/sshpk-sign",
|
479
|
+
"sshpk-verify": "bin/sshpk-verify"
|
480
|
+
},
|
481
|
+
"engines": {
|
482
|
+
"node": ">=0.10.0"
|
483
|
+
}
|
484
|
+
},
|
485
|
+
"node_modules/string-width": {
|
486
|
+
"version": "4.2.0",
|
487
|
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
|
488
|
+
"integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
|
489
|
+
"dependencies": {
|
490
|
+
"emoji-regex": "^8.0.0",
|
491
|
+
"is-fullwidth-code-point": "^3.0.0",
|
492
|
+
"strip-ansi": "^6.0.0"
|
493
|
+
},
|
494
|
+
"engines": {
|
495
|
+
"node": ">=8"
|
496
|
+
}
|
497
|
+
},
|
498
|
+
"node_modules/strip-ansi": {
|
499
|
+
"version": "6.0.0",
|
500
|
+
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
|
501
|
+
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
|
502
|
+
"dependencies": {
|
503
|
+
"ansi-regex": "^5.0.0"
|
504
|
+
},
|
505
|
+
"engines": {
|
506
|
+
"node": ">=8"
|
507
|
+
}
|
508
|
+
},
|
509
|
+
"node_modules/tough-cookie": {
|
510
|
+
"version": "2.5.0",
|
511
|
+
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
|
512
|
+
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
|
513
|
+
"dependencies": {
|
514
|
+
"psl": "^1.1.28",
|
515
|
+
"punycode": "^2.1.1"
|
516
|
+
},
|
517
|
+
"engines": {
|
518
|
+
"node": ">=0.8"
|
519
|
+
}
|
520
|
+
},
|
521
|
+
"node_modules/tunnel-agent": {
|
522
|
+
"version": "0.6.0",
|
523
|
+
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
524
|
+
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
|
525
|
+
"dependencies": {
|
526
|
+
"safe-buffer": "^5.0.1"
|
527
|
+
},
|
528
|
+
"engines": {
|
529
|
+
"node": "*"
|
530
|
+
}
|
531
|
+
},
|
532
|
+
"node_modules/tweetnacl": {
|
533
|
+
"version": "0.14.5",
|
534
|
+
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
535
|
+
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
|
536
|
+
},
|
537
|
+
"node_modules/uri-js": {
|
538
|
+
"version": "4.4.1",
|
539
|
+
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
|
540
|
+
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
|
541
|
+
"dependencies": {
|
542
|
+
"punycode": "^2.1.0"
|
543
|
+
}
|
544
|
+
},
|
545
|
+
"node_modules/uuid": {
|
546
|
+
"version": "3.4.0",
|
547
|
+
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
|
548
|
+
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
|
549
|
+
"deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
|
550
|
+
"bin": {
|
551
|
+
"uuid": "bin/uuid"
|
552
|
+
}
|
553
|
+
},
|
554
|
+
"node_modules/verror": {
|
555
|
+
"version": "1.10.0",
|
556
|
+
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
557
|
+
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
|
558
|
+
"engines": [
|
559
|
+
"node >=0.6.0"
|
560
|
+
],
|
561
|
+
"dependencies": {
|
562
|
+
"assert-plus": "^1.0.0",
|
563
|
+
"core-util-is": "1.0.2",
|
564
|
+
"extsprintf": "^1.2.0"
|
565
|
+
}
|
566
|
+
},
|
567
|
+
"node_modules/wrap-ansi": {
|
568
|
+
"version": "7.0.0",
|
569
|
+
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
570
|
+
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
|
571
|
+
"dependencies": {
|
572
|
+
"ansi-styles": "^4.0.0",
|
573
|
+
"string-width": "^4.1.0",
|
574
|
+
"strip-ansi": "^6.0.0"
|
575
|
+
},
|
576
|
+
"engines": {
|
577
|
+
"node": ">=10"
|
578
|
+
},
|
579
|
+
"funding": {
|
580
|
+
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
|
581
|
+
}
|
582
|
+
},
|
583
|
+
"node_modules/y18n": {
|
584
|
+
"version": "5.0.5",
|
585
|
+
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz",
|
586
|
+
"integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==",
|
587
|
+
"engines": {
|
588
|
+
"node": ">=10"
|
589
|
+
}
|
590
|
+
},
|
591
|
+
"node_modules/yargs": {
|
592
|
+
"version": "16.2.0",
|
593
|
+
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
|
594
|
+
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
|
595
|
+
"dependencies": {
|
596
|
+
"cliui": "^7.0.2",
|
597
|
+
"escalade": "^3.1.1",
|
598
|
+
"get-caller-file": "^2.0.5",
|
599
|
+
"require-directory": "^2.1.1",
|
600
|
+
"string-width": "^4.2.0",
|
601
|
+
"y18n": "^5.0.5",
|
602
|
+
"yargs-parser": "^20.2.2"
|
603
|
+
},
|
604
|
+
"engines": {
|
605
|
+
"node": ">=10"
|
606
|
+
}
|
607
|
+
},
|
608
|
+
"node_modules/yargs-parser": {
|
609
|
+
"version": "20.2.4",
|
610
|
+
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
|
611
|
+
"integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
|
612
|
+
"engines": {
|
613
|
+
"node": ">=10"
|
614
|
+
}
|
615
|
+
}
|
616
|
+
},
|
6
617
|
"dependencies": {
|
7
618
|
"ajv": {
|
8
619
|
"version": "6.12.6",
|
package/package.json
CHANGED
package/src/chunk_uploader.js
CHANGED
@@ -259,14 +259,8 @@ function _sendChunk(params, done) {
|
|
259
259
|
return chunk_request_number;
|
260
260
|
}
|
261
261
|
function _checkChunk(params, done) {
|
262
|
-
const {
|
263
|
-
|
264
|
-
etag,
|
265
|
-
endpoint_url,
|
266
|
-
keystone_auth,
|
267
|
-
delete_at,
|
268
|
-
error_log,
|
269
|
-
} = params;
|
262
|
+
const { url, etag, endpoint_url, keystone_auth, delete_at, error_log } =
|
263
|
+
params;
|
270
264
|
let is_done = false;
|
271
265
|
let existing_delete_at;
|
272
266
|
async.series(
|
package/src/cli.js
CHANGED
@@ -21,6 +21,7 @@ const USAGE = `Usage: $0 <upload|download> <container> <local_path>
|
|
21
21
|
[--resume boolean]
|
22
22
|
[--overwrite boolean]
|
23
23
|
[--retry_count count]
|
24
|
+
[--sha256 file_hash]
|
24
25
|
`;
|
25
26
|
|
26
27
|
const argv = yargs.usage(USAGE).argv;
|
@@ -39,6 +40,7 @@ const delete_after = parseInt(argv.delete_after);
|
|
39
40
|
const resume = argv.resume || false;
|
40
41
|
const overwrite = argv.overwrite || false;
|
41
42
|
const retry_count = parseInt(argv.retry_count) || 1;
|
43
|
+
const sha256_hash = String(argv.sha256 || '');
|
42
44
|
|
43
45
|
let delete_at = parseInt(argv.delete_at || '0');
|
44
46
|
if (!delete_at && delete_after) {
|
@@ -94,6 +96,7 @@ if (method === 'upload') {
|
|
94
96
|
ip_list,
|
95
97
|
send_per_ip,
|
96
98
|
delete_at,
|
99
|
+
sha256_hash,
|
97
100
|
error_log: _errorLog,
|
98
101
|
console_log: _consoleLog,
|
99
102
|
};
|
package/src/downloader.js
CHANGED
@@ -178,15 +178,8 @@ function _downloadTry(params, done) {
|
|
178
178
|
}
|
179
179
|
|
180
180
|
function _download(params, done) {
|
181
|
-
const {
|
182
|
-
|
183
|
-
url,
|
184
|
-
dest_path,
|
185
|
-
try_count,
|
186
|
-
start,
|
187
|
-
resume,
|
188
|
-
overwrite,
|
189
|
-
} = params;
|
181
|
+
const { keystone_auth, url, dest_path, try_count, start, resume, overwrite } =
|
182
|
+
params;
|
190
183
|
let byte_count = 0;
|
191
184
|
let flags;
|
192
185
|
if (try_count > 0) {
|
package/src/uploader.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
const async = require('async');
|
2
|
+
const crypto = require('crypto');
|
2
3
|
const fs = require('fs');
|
3
4
|
const { join: pathJoin } = require('path');
|
4
5
|
const request = require('request');
|
@@ -26,6 +27,7 @@ function sendFile(params, done) {
|
|
26
27
|
ip_list,
|
27
28
|
send_per_ip,
|
28
29
|
delete_at,
|
30
|
+
sha256_hash,
|
29
31
|
progress,
|
30
32
|
} = params;
|
31
33
|
const errorLog = params.error_log || function () {};
|
@@ -96,6 +98,23 @@ function sendFile(params, done) {
|
|
96
98
|
done(err);
|
97
99
|
});
|
98
100
|
},
|
101
|
+
(done) => {
|
102
|
+
if (sha256_hash) {
|
103
|
+
const opts = {
|
104
|
+
source_path,
|
105
|
+
chunk_list,
|
106
|
+
sha256_hash,
|
107
|
+
};
|
108
|
+
_hashChunkList(opts, (err) => {
|
109
|
+
if (err) {
|
110
|
+
errorLog('prehash file failed:', err);
|
111
|
+
}
|
112
|
+
done(err);
|
113
|
+
});
|
114
|
+
} else {
|
115
|
+
done();
|
116
|
+
}
|
117
|
+
},
|
99
118
|
(done) => {
|
100
119
|
const opts = {
|
101
120
|
keystone_auth,
|
@@ -185,3 +204,48 @@ function _send(opts, done) {
|
|
185
204
|
function _retryInterval(retryCount) {
|
186
205
|
return Math.min(MIN_RETRY_MS + 1000 * Math.pow(2, retryCount), MAX_RETRY_MS);
|
187
206
|
}
|
207
|
+
function _hashChunkList(params, done) {
|
208
|
+
const { source_path, chunk_list, sha256_hash } = params;
|
209
|
+
const hash = crypto.createHash('sha256');
|
210
|
+
|
211
|
+
async.eachSeries(
|
212
|
+
chunk_list,
|
213
|
+
(chunk, done) => {
|
214
|
+
_hashChunk(source_path, chunk, hash, done);
|
215
|
+
},
|
216
|
+
(err) => {
|
217
|
+
if (!err) {
|
218
|
+
const digest = hash.digest('hex');
|
219
|
+
if (digest !== sha256_hash.toLowerCase()) {
|
220
|
+
err = 'hash_mismatch';
|
221
|
+
}
|
222
|
+
}
|
223
|
+
done(err);
|
224
|
+
}
|
225
|
+
);
|
226
|
+
}
|
227
|
+
function _hashChunk(src, chunk, global_hash, done) {
|
228
|
+
const chunk_hash = crypto.createHash('md5');
|
229
|
+
const stream_opts = {
|
230
|
+
start: chunk.start,
|
231
|
+
end: chunk.end,
|
232
|
+
};
|
233
|
+
const stream = fs.createReadStream(src, stream_opts);
|
234
|
+
stream.on('error', (err) => {
|
235
|
+
if (done) {
|
236
|
+
done(err);
|
237
|
+
done = null;
|
238
|
+
}
|
239
|
+
});
|
240
|
+
stream.on('data', (chunk) => {
|
241
|
+
chunk_hash.update(chunk);
|
242
|
+
global_hash.update(chunk);
|
243
|
+
});
|
244
|
+
stream.on('end', () => {
|
245
|
+
if (done) {
|
246
|
+
chunk.etag = chunk_hash.digest('hex');
|
247
|
+
done();
|
248
|
+
done = null;
|
249
|
+
}
|
250
|
+
});
|
251
|
+
}
|