@juzi/file-box 1.7.4 → 1.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/cjs/src/config.d.ts +3 -1
- package/dist/cjs/src/config.d.ts.map +1 -1
- package/dist/cjs/src/config.js +5 -2
- package/dist/cjs/src/config.js.map +1 -1
- package/dist/cjs/src/misc.d.ts +1 -1
- package/dist/cjs/src/misc.d.ts.map +1 -1
- package/dist/cjs/src/misc.js +96 -189
- package/dist/cjs/src/misc.js.map +1 -1
- package/dist/cjs/src/version.js +1 -1
- package/dist/cjs/tests/network-timeout.spec.js +14 -14
- package/dist/cjs/tests/network-timeout.spec.js.map +1 -1
- package/dist/esm/src/config.d.ts +3 -1
- package/dist/esm/src/config.d.ts.map +1 -1
- package/dist/esm/src/config.js +4 -1
- package/dist/esm/src/config.js.map +1 -1
- package/dist/esm/src/misc.d.ts +1 -1
- package/dist/esm/src/misc.d.ts.map +1 -1
- package/dist/esm/src/misc.js +97 -190
- package/dist/esm/src/misc.js.map +1 -1
- package/dist/esm/src/version.js +1 -1
- package/dist/esm/tests/network-timeout.spec.js +14 -14
- package/dist/esm/tests/network-timeout.spec.js.map +1 -1
- package/package.json +5 -2
- package/src/config.ts +6 -1
- package/src/misc.ts +106 -228
- package/src/version.ts +1 -1
package/README.md
CHANGED
|
@@ -478,7 +478,11 @@ console.log(fileBox.remoteSize)
|
|
|
478
478
|
|
|
479
479
|
Environment variables can be used to control some behavior.
|
|
480
480
|
|
|
481
|
-
- `
|
|
481
|
+
- `FILEBOX_HTTP_REQUEST_TIMEOUT` [default=10000] The timeout period for establishing a communication request with the server. For example, if the network is unavailable or the delay is too high, communication cannot be successfully established.
|
|
482
|
+
- `FILEBOX_HTTP_RESPONSE_TIMEOUT` [default=60000] Socket idle timeout when FileBox downloads data from URL. For example, when the network is temporarily interrupted, the request will be considered as failed after waiting for a specified time.
|
|
483
|
+
- ~~`FILEBOX_HTTP_TIMEOUT` [default=60000]~~ **Deprecated!** Please use `FILEBOX_HTTP_RESPONSE_TIMEOUT`.
|
|
484
|
+
- `NO_SLICE_DOWN` [default=false] Whether to turn off slice downloading. If the network is unstable, an error while downloading the file will cause the file download to fail. If it is not closed, the file will be divided into multiple fragments for downloading, and breakpoint re-downloading is supported.
|
|
485
|
+
- `HTTP_CHUNK_SIZE` [default=524288] When downloading a file using slicing, the number of bytes in each slice.
|
|
482
486
|
|
|
483
487
|
## SCHEMAS
|
|
484
488
|
|
package/dist/cjs/src/config.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/// <reference path="../../../src/typings.d.ts" />
|
|
2
2
|
export { VERSION } from './version.js';
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const HTTP_REQUEST_TIMEOUT: number;
|
|
4
|
+
export declare const HTTP_RESPONSE_TIMEOUT: number;
|
|
5
|
+
export declare const NO_SLICE_DOWN: boolean;
|
|
4
6
|
export declare const HTTP_CHUNK_SIZE: number;
|
|
5
7
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,eAAO,MAAM,oBAAoB,QACnB,CAAA;AAEd,eAAO,MAAM,qBAAqB,QACpB,CAAA;AAEd,eAAO,MAAM,aAAa,SAAkD,CAAA;AAE5E,eAAO,MAAM,eAAe,QACb,CAAA"}
|
package/dist/cjs/src/config.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HTTP_CHUNK_SIZE = exports.
|
|
3
|
+
exports.HTTP_CHUNK_SIZE = exports.NO_SLICE_DOWN = exports.HTTP_RESPONSE_TIMEOUT = exports.HTTP_REQUEST_TIMEOUT = exports.VERSION = void 0;
|
|
4
4
|
/// <reference path="./typings.d.ts" />
|
|
5
5
|
var version_js_1 = require("./version.js");
|
|
6
6
|
Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return version_js_1.VERSION; } });
|
|
7
|
-
exports.
|
|
7
|
+
exports.HTTP_REQUEST_TIMEOUT = Number(process.env['FILEBOX_HTTP_REQUEST_TIMEOUT'])
|
|
8
|
+
|| 10 * 1000;
|
|
9
|
+
exports.HTTP_RESPONSE_TIMEOUT = Number(process.env['FILEBOX_HTTP_RESPONSE_TIMEOUT'] ?? process.env['FILEBOX_HTTP_TIMEOUT'])
|
|
8
10
|
|| 60 * 1000;
|
|
11
|
+
exports.NO_SLICE_DOWN = process.env['FILEBOX_NO_SLICE_DOWN'] === 'true';
|
|
9
12
|
exports.HTTP_CHUNK_SIZE = Number(process.env['FILEBOX_HTTP_CHUNK_SIZE'])
|
|
10
13
|
|| 1024 * 512;
|
|
11
14
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AACvC,2CAAsC;AAA7B,qGAAA,OAAO,OAAA;AAEH,QAAA,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AACvC,2CAAsC;AAA7B,qGAAA,OAAO,OAAA;AAEH,QAAA,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;OAClF,EAAE,GAAG,IAAI,CAAA;AAED,QAAA,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;OAC3H,EAAE,GAAG,IAAI,CAAA;AAED,QAAA,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,MAAM,CAAA;AAE/D,QAAA,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;OACxE,IAAI,GAAG,GAAG,CAAA"}
|
package/dist/cjs/src/misc.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
/// <reference types="node" />
|
|
4
4
|
import http from 'http';
|
|
5
|
-
import { Readable } from 'stream';
|
|
5
|
+
import type { Readable } from 'stream';
|
|
6
6
|
export declare function dataUrlToBase64(dataUrl: string): string;
|
|
7
7
|
/**
|
|
8
8
|
* Get http headers for specific `url`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/misc.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/misc.ts"],"names":[],"mappings":";;;AAKA,OAAO,IAAI,MAAM,MAAM,CAAA;AAIvB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAiBtC,wBAAgB,eAAe,CAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CA6BpF;AAED,wBAAgB,oBAAoB,CAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,MAAM,CAetF;AAED,wBAAsB,UAAU,CAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,mBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAoBxG;AAuFD,wBAAsB,cAAc,CAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAMvE"}
|
package/dist/cjs/src/misc.js
CHANGED
|
@@ -4,11 +4,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.streamToBuffer = exports.httpStream = exports.httpHeaderToFileName = exports.httpHeadHeader = exports.dataUrlToBase64 = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const crypto_1 = require("crypto");
|
|
9
|
+
const events_1 = require("events");
|
|
10
|
+
const fs_1 = require("fs");
|
|
11
|
+
const promises_1 = require("fs/promises");
|
|
7
12
|
const http_1 = __importDefault(require("http"));
|
|
8
13
|
const https_1 = __importDefault(require("https"));
|
|
14
|
+
const os_1 = require("os");
|
|
15
|
+
const path_1 = require("path");
|
|
9
16
|
const url_1 = require("url");
|
|
10
|
-
const stream_1 = require("stream");
|
|
11
17
|
const config_js_1 = require("./config.js");
|
|
18
|
+
const protocolMap = {
|
|
19
|
+
'http:': { agent: http_1.default.globalAgent, request: http_1.default.request },
|
|
20
|
+
'https:': { agent: https_1.default.globalAgent, request: https_1.default.request },
|
|
21
|
+
};
|
|
22
|
+
function getProtocol(protocol) {
|
|
23
|
+
(0, assert_1.default)(protocolMap[protocol], new Error('unknown protocol: ' + protocol));
|
|
24
|
+
return protocolMap[protocol];
|
|
25
|
+
}
|
|
12
26
|
function dataUrlToBase64(dataUrl) {
|
|
13
27
|
const dataList = dataUrl.split(',');
|
|
14
28
|
return dataList[dataList.length - 1];
|
|
@@ -27,7 +41,10 @@ async function httpHeadHeader(url) {
|
|
|
27
41
|
if (REDIRECT_TTL-- <= 0) {
|
|
28
42
|
throw new Error(`ttl expired! too many(>${REDIRECT_TTL}) 302 redirection.`);
|
|
29
43
|
}
|
|
30
|
-
const res = await
|
|
44
|
+
const res = await fetch(url, {
|
|
45
|
+
method: 'HEAD',
|
|
46
|
+
});
|
|
47
|
+
res.destroy();
|
|
31
48
|
if (!/^3/.test(String(res.statusCode))) {
|
|
32
49
|
if (originUrl !== url) {
|
|
33
50
|
res.headers.location = url;
|
|
@@ -40,37 +57,6 @@ async function httpHeadHeader(url) {
|
|
|
40
57
|
}
|
|
41
58
|
url = res.headers.location;
|
|
42
59
|
}
|
|
43
|
-
async function _headHeader(destUrl) {
|
|
44
|
-
const parsedUrl = new url_1.URL(destUrl);
|
|
45
|
-
const options = {
|
|
46
|
-
method: 'HEAD',
|
|
47
|
-
// method : 'GET',
|
|
48
|
-
};
|
|
49
|
-
let request;
|
|
50
|
-
if (parsedUrl.protocol === 'https:') {
|
|
51
|
-
request = https_1.default.request;
|
|
52
|
-
}
|
|
53
|
-
else if (parsedUrl.protocol === 'http:') {
|
|
54
|
-
request = http_1.default.request;
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
throw new Error('unknown protocol: ' + parsedUrl.protocol);
|
|
58
|
-
}
|
|
59
|
-
return new Promise((resolve, reject) => {
|
|
60
|
-
let res;
|
|
61
|
-
const req = request(parsedUrl, options, (response) => {
|
|
62
|
-
res = response;
|
|
63
|
-
resolve(res);
|
|
64
|
-
})
|
|
65
|
-
.on('error', reject)
|
|
66
|
-
.setTimeout(config_js_1.HTTP_TIMEOUT, () => {
|
|
67
|
-
const e = new Error(`FileBox: Http request timeout (${config_js_1.HTTP_TIMEOUT})!`);
|
|
68
|
-
req.emit('error', e);
|
|
69
|
-
req.destroy();
|
|
70
|
-
})
|
|
71
|
-
.end();
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
60
|
}
|
|
75
61
|
exports.httpHeadHeader = httpHeadHeader;
|
|
76
62
|
function httpHeaderToFileName(headers) {
|
|
@@ -90,183 +76,104 @@ async function httpStream(url, headers = {}) {
|
|
|
90
76
|
const headHeaders = await httpHeadHeader(url);
|
|
91
77
|
if (headHeaders.location) {
|
|
92
78
|
url = headHeaders.location;
|
|
79
|
+
const { protocol } = new url_1.URL(url);
|
|
80
|
+
getProtocol(protocol);
|
|
93
81
|
}
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
let get;
|
|
98
|
-
if (!protocol) {
|
|
99
|
-
throw new Error('protocol is empty');
|
|
100
|
-
}
|
|
101
|
-
if (protocol.match(/^https:/i)) {
|
|
102
|
-
get = https_1.default.get;
|
|
103
|
-
options.agent = https_1.default.globalAgent;
|
|
104
|
-
}
|
|
105
|
-
else if (protocol.match(/^http:/i)) {
|
|
106
|
-
get = http_1.default.get;
|
|
107
|
-
options.agent = http_1.default.globalAgent;
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
throw new Error('protocol unknown: ' + protocol);
|
|
111
|
-
}
|
|
112
|
-
options.headers = {
|
|
113
|
-
...headers,
|
|
82
|
+
const options = {
|
|
83
|
+
headers: { ...headers },
|
|
84
|
+
method: 'GET',
|
|
114
85
|
};
|
|
115
86
|
const fileSize = Number(headHeaders['content-length']);
|
|
116
|
-
if (headHeaders['accept-ranges'] === 'bytes' && fileSize > config_js_1.HTTP_CHUNK_SIZE) {
|
|
117
|
-
return await downloadFileInChunks(
|
|
87
|
+
if (!config_js_1.NO_SLICE_DOWN && headHeaders['accept-ranges'] === 'bytes' && fileSize > config_js_1.HTTP_CHUNK_SIZE) {
|
|
88
|
+
return await downloadFileInChunks(url, options, fileSize, config_js_1.HTTP_CHUNK_SIZE);
|
|
118
89
|
}
|
|
119
90
|
else {
|
|
120
|
-
return await
|
|
91
|
+
return await fetch(url, options);
|
|
121
92
|
}
|
|
122
93
|
}
|
|
123
94
|
exports.httpStream = httpStream;
|
|
124
|
-
async function
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
req.emit('error', e);
|
|
139
|
-
req.destroy();
|
|
140
|
-
})
|
|
141
|
-
.end();
|
|
95
|
+
async function fetch(url, options) {
|
|
96
|
+
const { protocol } = new url_1.URL(url);
|
|
97
|
+
const { request, agent } = getProtocol(protocol);
|
|
98
|
+
const opts = {
|
|
99
|
+
agent,
|
|
100
|
+
...options,
|
|
101
|
+
};
|
|
102
|
+
const req = request(url, opts).end();
|
|
103
|
+
req
|
|
104
|
+
.on('error', () => {
|
|
105
|
+
req.destroy();
|
|
106
|
+
})
|
|
107
|
+
.setTimeout(config_js_1.HTTP_REQUEST_TIMEOUT, () => {
|
|
108
|
+
req.emit('error', new Error(`FileBox: Http request timeout (${config_js_1.HTTP_REQUEST_TIMEOUT})!`));
|
|
142
109
|
});
|
|
110
|
+
const responseEvents = await (0, events_1.once)(req, 'response');
|
|
111
|
+
const res = responseEvents[0];
|
|
112
|
+
res
|
|
113
|
+
.on('error', () => {
|
|
114
|
+
res.destroy();
|
|
115
|
+
})
|
|
116
|
+
.setTimeout(config_js_1.HTTP_RESPONSE_TIMEOUT, () => {
|
|
117
|
+
res.emit('error', new Error(`FileBox: Http response timeout (${config_js_1.HTTP_RESPONSE_TIMEOUT})!`));
|
|
118
|
+
});
|
|
119
|
+
return res;
|
|
143
120
|
}
|
|
144
|
-
async function downloadFileInChunks(
|
|
145
|
-
const
|
|
146
|
-
const
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
121
|
+
async function downloadFileInChunks(url, options, fileSize, chunkSize = config_js_1.HTTP_CHUNK_SIZE) {
|
|
122
|
+
const tmpFile = (0, path_1.join)((0, os_1.tmpdir)(), `filebox-${(0, crypto_1.randomUUID)()}`);
|
|
123
|
+
const writeStream = (0, fs_1.createWriteStream)(tmpFile);
|
|
124
|
+
const allowStatusCode = [200, 206];
|
|
125
|
+
const requestBaseOptions = {
|
|
126
|
+
headers: {},
|
|
127
|
+
...options,
|
|
151
128
|
};
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
let
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
const start = i * chunkSize;
|
|
160
|
-
const end = Math.min((i + 1) * chunkSize - 1, fileSize - 1);
|
|
129
|
+
let chunkSeq = 0;
|
|
130
|
+
let start = 0;
|
|
131
|
+
let end = 0;
|
|
132
|
+
let downSize = 0;
|
|
133
|
+
let retries = 3;
|
|
134
|
+
while (downSize < fileSize) {
|
|
135
|
+
end = Math.min(start + chunkSize, fileSize - 1);
|
|
161
136
|
const range = `bytes=${start}-${end}`;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
stream.destroy(new Error('Signal aborted.'));
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
const requestOptions = {
|
|
168
|
-
...options,
|
|
169
|
-
signal: ac.signal,
|
|
170
|
-
timeout: config_js_1.HTTP_TIMEOUT,
|
|
171
|
-
};
|
|
172
|
-
if (!requestOptions.headers) {
|
|
173
|
-
requestOptions.headers = {};
|
|
174
|
-
}
|
|
137
|
+
const requestOptions = Object.assign({}, requestBaseOptions);
|
|
138
|
+
(0, assert_1.default)(requestOptions.headers, 'Errors that should not happen: Invalid headers');
|
|
175
139
|
requestOptions.headers['Range'] = range;
|
|
176
140
|
try {
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
if (chunk.destroyed) {
|
|
185
|
-
throw new Error('chunk stream destroyed');
|
|
186
|
-
}
|
|
187
|
-
const buf = await streamToBuffer(chunk);
|
|
188
|
-
stream.push(buf);
|
|
189
|
-
chunksDownloaded++;
|
|
190
|
-
dataTotalSize += buf.length;
|
|
191
|
-
if (chunksDownloaded === chunksCount || dataTotalSize >= fileSize) {
|
|
192
|
-
stream.push(null);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
catch (err) {
|
|
196
|
-
if (retries === 0) {
|
|
197
|
-
stream.emit('error', err);
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
200
|
-
await doDownloadChunk(i, retries - 1);
|
|
141
|
+
const res = await fetch(url, requestOptions);
|
|
142
|
+
(0, assert_1.default)(allowStatusCode.includes(res.statusCode ?? 0), `Request failed with status code ${res.statusCode}`);
|
|
143
|
+
(0, assert_1.default)(Number(res.headers['content-length']) > 0, 'Server returned 0 bytes of data');
|
|
144
|
+
for await (const chunk of res) {
|
|
145
|
+
(0, assert_1.default)(Buffer.isBuffer(chunk));
|
|
146
|
+
downSize += chunk.length;
|
|
147
|
+
writeStream.write(chunk);
|
|
201
148
|
}
|
|
149
|
+
res.destroy();
|
|
202
150
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
151
|
+
catch (error) {
|
|
152
|
+
const err = error;
|
|
153
|
+
if (--retries <= 0) {
|
|
154
|
+
void (0, promises_1.rm)(tmpFile, { force: true });
|
|
155
|
+
writeStream.close();
|
|
156
|
+
throw new Error(`Download file with chunk failed! ${err.message}`, { cause: err });
|
|
208
157
|
}
|
|
209
|
-
await doDownloadChunk(i, 3);
|
|
210
158
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
let resolved = false;
|
|
221
|
-
const req = get(url, requestOptions, (res) => {
|
|
222
|
-
const statusCode = res.statusCode ?? 0;
|
|
223
|
-
// console.info('downloadChunk(%d) statusCode: %d rsp.headers: %o', attempt, statusCode, res.headers)
|
|
224
|
-
if (statusCode < 200 || statusCode >= 300) {
|
|
225
|
-
if (attempt < retries) {
|
|
226
|
-
void doRequest(attempt + 1);
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
reject(new Error(`Request failed with status code ${res.statusCode}`));
|
|
230
|
-
}
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
const stream = (0, stream_1.pipeline)(res, new stream_1.PassThrough(), () => { });
|
|
234
|
-
resolve(stream);
|
|
235
|
-
resolved = true;
|
|
236
|
-
});
|
|
237
|
-
req
|
|
238
|
-
.once('error', (err) => {
|
|
239
|
-
if (resolved) {
|
|
240
|
-
return;
|
|
241
|
-
}
|
|
242
|
-
// console.error('downloadChunk(%d) req error:', attempt, err)
|
|
243
|
-
if (attempt < retries) {
|
|
244
|
-
void doRequest(attempt + 1);
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
reject(err);
|
|
248
|
-
}
|
|
249
|
-
})
|
|
250
|
-
.setTimeout(config_js_1.HTTP_TIMEOUT, () => {
|
|
251
|
-
const e = new Error(`FileBox: Http request timeout (${config_js_1.HTTP_TIMEOUT})!`);
|
|
252
|
-
req.emit('error', e);
|
|
253
|
-
req.destroy();
|
|
254
|
-
})
|
|
255
|
-
.end();
|
|
256
|
-
};
|
|
257
|
-
void doRequest(0);
|
|
159
|
+
chunkSeq++;
|
|
160
|
+
start = downSize;
|
|
161
|
+
}
|
|
162
|
+
writeStream.close();
|
|
163
|
+
const readStream = (0, fs_1.createReadStream)(tmpFile);
|
|
164
|
+
readStream
|
|
165
|
+
.once('end', () => readStream.close())
|
|
166
|
+
.once('close', () => {
|
|
167
|
+
void (0, promises_1.rm)(tmpFile, { force: true });
|
|
258
168
|
});
|
|
169
|
+
return readStream;
|
|
259
170
|
}
|
|
260
171
|
async function streamToBuffer(stream) {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
resolve(fullBuffer);
|
|
267
|
-
});
|
|
268
|
-
stream.on('data', (buffer) => bufferList.push(buffer));
|
|
269
|
-
});
|
|
172
|
+
const chunks = [];
|
|
173
|
+
for await (const chunk of stream) {
|
|
174
|
+
chunks.push(chunk);
|
|
175
|
+
}
|
|
176
|
+
return Buffer.concat(chunks);
|
|
270
177
|
}
|
|
271
178
|
exports.streamToBuffer = streamToBuffer;
|
|
272
179
|
//# sourceMappingURL=misc.js.map
|
package/dist/cjs/src/misc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../src/misc.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../src/misc.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/src/version.js
CHANGED
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
const http_1 = require("http");
|
|
5
5
|
const promises_1 = require("timers/promises");
|
|
6
6
|
const tstest_1 = require("tstest");
|
|
7
|
-
const mod_js_1 = require("../src/mod.js");
|
|
8
7
|
const config_js_1 = require("../src/config.js");
|
|
8
|
+
const mod_js_1 = require("../src/mod.js");
|
|
9
9
|
(0, tstest_1.test)('slow network stall HTTP_TIMEOUT', async (t) => {
|
|
10
10
|
const sandbox = tstest_1.sinon.createSandbox();
|
|
11
11
|
sandbox.useFakeTimers({
|
|
@@ -25,15 +25,15 @@ const config_js_1 = require("../src/config.js");
|
|
|
25
25
|
const server = (0, http_1.createServer)(async (req, res) => {
|
|
26
26
|
res.write(Buffer.from('This is the first chunk of data.'));
|
|
27
27
|
if (req.url === URL.NOT_TIMEOUT) {
|
|
28
|
-
await (0, promises_1.setTimeout)(config_js_1.
|
|
28
|
+
await (0, promises_1.setTimeout)(config_js_1.HTTP_REQUEST_TIMEOUT * 0.5);
|
|
29
29
|
res.write(Buffer.from('This is the second chunk of data.'));
|
|
30
30
|
}
|
|
31
31
|
else if (req.url === URL.READY) {
|
|
32
|
-
await (0, promises_1.setTimeout)(config_js_1.
|
|
32
|
+
await (0, promises_1.setTimeout)(config_js_1.HTTP_REQUEST_TIMEOUT + 100);
|
|
33
33
|
}
|
|
34
34
|
else if (req.url === URL.TIMEOUT) {
|
|
35
35
|
if (req.method === 'GET') {
|
|
36
|
-
await (0, promises_1.setTimeout)(config_js_1.
|
|
36
|
+
await (0, promises_1.setTimeout)(config_js_1.HTTP_RESPONSE_TIMEOUT + 100);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
// console.debug(`${new Date().toLocaleTimeString()} call res.end "${req.url}"`)
|
|
@@ -66,14 +66,14 @@ const config_js_1 = require("../src/config.js");
|
|
|
66
66
|
// FIXME: tickAsync does not work on socket timeout
|
|
67
67
|
await new Promise((resolve) => {
|
|
68
68
|
stream.once('error', resolve).on('close', resolve);
|
|
69
|
-
// resolve(setTimeout(
|
|
69
|
+
// resolve(setTimeout(HTTP_REQUEST_TIMEOUT))
|
|
70
70
|
});
|
|
71
71
|
await sandbox.clock.tickAsync(1);
|
|
72
|
-
// await sandbox.clock.tickAsync(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
t.ok(dataSpy.calledThrice, `should get chunk 3 after TIMEOUT ${config_js_1.
|
|
76
|
-
t.ok(errorSpy.notCalled, `should not get error after TIMEOUT ${config_js_1.
|
|
72
|
+
// await sandbox.clock.tickAsync(HTTP_RESPONSE_TIMEOUT)
|
|
73
|
+
t.comment('recv data count:', dataSpy.callCount);
|
|
74
|
+
t.comment('recv error count:', errorSpy.callCount);
|
|
75
|
+
t.ok(dataSpy.calledThrice, `should get chunk 3 after TIMEOUT ${config_js_1.HTTP_REQUEST_TIMEOUT} (${Date.now() - start} passed)`);
|
|
76
|
+
t.ok(errorSpy.notCalled, `should not get error after TIMEOUT ${config_js_1.HTTP_REQUEST_TIMEOUT} (${Date.now() - start} passed)`);
|
|
77
77
|
t.end();
|
|
78
78
|
}).catch(t.threw);
|
|
79
79
|
/** eslint @typescript-eslint/no-floating-promises:off */
|
|
@@ -99,13 +99,13 @@ const config_js_1 = require("../src/config.js");
|
|
|
99
99
|
// FIXME: tickAsync does not work on socket timeout
|
|
100
100
|
await new Promise((resolve) => {
|
|
101
101
|
stream.once('error', resolve).on('close', resolve);
|
|
102
|
-
// resolve(setTimeout(
|
|
102
|
+
// resolve(setTimeout(HTTP_RESPONSE_TIMEOUT))
|
|
103
103
|
});
|
|
104
104
|
await sandbox.clock.tickAsync(1);
|
|
105
|
-
// await sandbox.clock.tickAsync(
|
|
105
|
+
// await sandbox.clock.tickAsync(HTTP_RESPONSE_TIMEOUT)
|
|
106
106
|
// t.comment('recv data count:', dataSpy.callCount)
|
|
107
107
|
// t.comment('recv error count:', errorSpy.callCount)
|
|
108
|
-
t.ok(errorSpy.calledOnce, `should get error after TIMEOUT ${config_js_1.
|
|
108
|
+
t.ok(errorSpy.calledOnce, `should get error after TIMEOUT ${config_js_1.HTTP_RESPONSE_TIMEOUT} (${Date.now() - start} passed)`);
|
|
109
109
|
t.end();
|
|
110
110
|
}).catch(t.threw);
|
|
111
111
|
/** eslint @typescript-eslint/no-floating-promises:off */
|
|
@@ -118,7 +118,7 @@ const config_js_1 = require("../src/config.js");
|
|
|
118
118
|
await fileBox.ready().catch(errorSpy);
|
|
119
119
|
await sandbox.clock.tickAsync(1);
|
|
120
120
|
// t.comment('recv error count:', errorSpy.callCount)
|
|
121
|
-
t.ok(errorSpy.calledOnce, `should get error after TIMEOUT ${config_js_1.
|
|
121
|
+
t.ok(errorSpy.calledOnce, `should get error after TIMEOUT ${config_js_1.HTTP_REQUEST_TIMEOUT} (${Date.now() - start} passed)`);
|
|
122
122
|
t.end();
|
|
123
123
|
}).catch(t.threw);
|
|
124
124
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-timeout.spec.js","sourceRoot":"","sources":["../../../tests/network-timeout.spec.ts"],"names":[],"mappings":";;;AAEA,+BAAmC;AAEnC,8CAA4C;AAC5C,mCAAoC;AAEpC,0CAAuC;AAEvC,
|
|
1
|
+
{"version":3,"file":"network-timeout.spec.js","sourceRoot":"","sources":["../../../tests/network-timeout.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/src/config.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/// <reference path="../../../src/typings.d.ts" />
|
|
2
2
|
export { VERSION } from './version.js';
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const HTTP_REQUEST_TIMEOUT: number;
|
|
4
|
+
export declare const HTTP_RESPONSE_TIMEOUT: number;
|
|
5
|
+
export declare const NO_SLICE_DOWN: boolean;
|
|
4
6
|
export declare const HTTP_CHUNK_SIZE: number;
|
|
5
7
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,eAAO,MAAM,oBAAoB,QACnB,CAAA;AAEd,eAAO,MAAM,qBAAqB,QACpB,CAAA;AAEd,eAAO,MAAM,aAAa,SAAkD,CAAA;AAE5E,eAAO,MAAM,eAAe,QACb,CAAA"}
|
package/dist/esm/src/config.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/// <reference path="./typings.d.ts" />
|
|
2
2
|
export { VERSION } from './version.js';
|
|
3
|
-
export const
|
|
3
|
+
export const HTTP_REQUEST_TIMEOUT = Number(process.env['FILEBOX_HTTP_REQUEST_TIMEOUT'])
|
|
4
|
+
|| 10 * 1000;
|
|
5
|
+
export const HTTP_RESPONSE_TIMEOUT = Number(process.env['FILEBOX_HTTP_RESPONSE_TIMEOUT'] ?? process.env['FILEBOX_HTTP_TIMEOUT'])
|
|
4
6
|
|| 60 * 1000;
|
|
7
|
+
export const NO_SLICE_DOWN = process.env['FILEBOX_NO_SLICE_DOWN'] === 'true';
|
|
5
8
|
export const HTTP_CHUNK_SIZE = Number(process.env['FILEBOX_HTTP_CHUNK_SIZE'])
|
|
6
9
|
|| 1024 * 512;
|
|
7
10
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;OAClF,EAAE,GAAG,IAAI,CAAA;AAEd,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;OAC3H,EAAE,GAAG,IAAI,CAAA;AAEd,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,MAAM,CAAA;AAE5E,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;OACxE,IAAI,GAAG,GAAG,CAAA"}
|
package/dist/esm/src/misc.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
/// <reference types="node" />
|
|
4
4
|
import http from 'http';
|
|
5
|
-
import { Readable } from 'stream';
|
|
5
|
+
import type { Readable } from 'stream';
|
|
6
6
|
export declare function dataUrlToBase64(dataUrl: string): string;
|
|
7
7
|
/**
|
|
8
8
|
* Get http headers for specific `url`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/misc.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/misc.ts"],"names":[],"mappings":";;;AAKA,OAAO,IAAI,MAAM,MAAM,CAAA;AAIvB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAiBtC,wBAAgB,eAAe,CAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CA6BpF;AAED,wBAAgB,oBAAoB,CAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,MAAM,CAetF;AAED,wBAAsB,UAAU,CAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,mBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAoBxG;AAuFD,wBAAsB,cAAc,CAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAMvE"}
|