@moontaiworks/fanbox-dl 1.3.4 → 1.4.0
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/dist/cjs/downloader/fs/path-manager.d.ts.map +1 -1
- package/dist/cjs/downloader/fs/path-manager.js +5 -2
- package/dist/cjs/downloader/fs/path-manager.js.map +1 -1
- package/dist/cjs/transport/worker.d.ts.map +1 -1
- package/dist/cjs/transport/worker.js +96 -61
- package/dist/cjs/transport/worker.js.map +1 -1
- package/dist/esm/downloader/fs/path-manager.d.ts.map +1 -1
- package/dist/esm/downloader/fs/path-manager.js +5 -2
- package/dist/esm/downloader/fs/path-manager.js.map +1 -1
- package/dist/esm/transport/worker.d.ts.map +1 -1
- package/dist/esm/transport/worker.js +96 -61
- package/dist/esm/transport/worker.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-manager.d.ts","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"path-manager.d.ts","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,qBAAa,WAAW;;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;gBAGD,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB;IAMvD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAYpD,GAAG,CAAC,IAAI,EAAE,MAAM;IAOhB,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,mBAAmB,GAAG,OAAO,CAAC;CAO5D"}
|
|
@@ -14,6 +14,7 @@ var _PathManager_flatPosts;
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.PathManager = void 0;
|
|
16
16
|
const node_path_1 = require("node:path");
|
|
17
|
+
const INVALID_FILENAME_CHARS = /[<>:"/\\|?*\x00-\x1F]/g;
|
|
17
18
|
class PathManager {
|
|
18
19
|
constructor({ flatPosts, rootPath }) {
|
|
19
20
|
_PathManager_flatPosts.set(this, void 0);
|
|
@@ -22,7 +23,8 @@ class PathManager {
|
|
|
22
23
|
this.name = (0, node_path_1.basename)(this.path);
|
|
23
24
|
}
|
|
24
25
|
asset(index, name, extension) {
|
|
25
|
-
const
|
|
26
|
+
const sanitizedName = name.replace(INVALID_FILENAME_CHARS, "-");
|
|
27
|
+
const fileName = `${index}-${sanitizedName}.${extension}`;
|
|
26
28
|
if (__classPrivateFieldGet(this, _PathManager_flatPosts, "f")) {
|
|
27
29
|
const parent = (0, node_path_1.dirname)(this.path);
|
|
28
30
|
return (0, node_path_1.join)(parent, `${this.name}.${fileName}`);
|
|
@@ -40,7 +42,8 @@ class PathManager {
|
|
|
40
42
|
}
|
|
41
43
|
post(post) {
|
|
42
44
|
const date = post.publishedDatetime.split("T")[0];
|
|
43
|
-
const
|
|
45
|
+
const sanitizedTitle = post.title.replace(INVALID_FILENAME_CHARS, "-");
|
|
46
|
+
const title = `${date}-${post.id}-${sanitizedTitle}`;
|
|
44
47
|
return this.dir(title);
|
|
45
48
|
}
|
|
46
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-manager.js","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAA6D;
|
|
1
|
+
{"version":3,"file":"path-manager.js","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAA6D;AAU7D,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAExD,MAAa,WAAW;IAKtB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAsB;QAFvD,yCAAoB;QAGlB,IAAI,CAAC,IAAI,GAAG,IAAA,mBAAO,EAAC,QAAQ,CAAC,CAAC;QAC9B,uBAAA,IAAI,0BAAc,SAAS,MAAA,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAa,EAAE,IAAY,EAAE,SAAiB;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,aAAa,IAAI,SAAS,EAAE,CAAC;QAE1D,IAAI,uBAAA,IAAI,8BAAW,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,IAAA,gBAAI,EAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,IAAA,gBAAI,EAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,WAAW,CAAC;YACrB,SAAS,EAAE,uBAAA,IAAI,8BAAW;YAC1B,QAAQ,EAAE,IAAA,gBAAI,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,IAAA,gBAAI,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,IAAsD;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,cAAc,EAAE,CAAC;QAErD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;CACF;AAzCD,kCAyCC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAqFD,qBAAa,aAAa;;gBAWtB,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAC9B,EACE,WAAiB,EACjB,UAAiB,EACjB,UAAc,EACd,gBAAgB,EAChB,SAAgC,GACjC,GAAE,mBAAwB;IAoBvB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG;CA8F5C"}
|
|
@@ -1,86 +1,86 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
+
};
|
|
2
7
|
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
8
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
9
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
11
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
12
|
};
|
|
8
|
-
var
|
|
9
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
-
};
|
|
13
|
-
var _ConcurrencyLimiter_active, _ConcurrencyLimiter_logger, _ConcurrencyLimiter_queue, _TimeLimiter_availableAt, _TimeLimiter_logger, _RequestWorker_instances, _RequestWorker_concurrencyLimiter, _RequestWorker_logger, _RequestWorker_maxRetries, _RequestWorker_rateLimitPauseMs, _RequestWorker_timeLimiter, _RequestWorker_transport, _RequestWorker_fetch;
|
|
13
|
+
var _ConcurrentLimiter_activeRequests, _ConcurrentLimiter_logger, _TimeRateLimiter_logger, _TimeRateLimiter_nextAvailableAt, _RequestWorker_instances, _RequestWorker_concurrentLimiter, _RequestWorker_logger, _RequestWorker_maxRetries, _RequestWorker_pendingRequests, _RequestWorker_rateLimitPauseMs, _RequestWorker_scheduledPump, _RequestWorker_timeRateLimiter, _RequestWorker_transport, _RequestWorker_fetch, _RequestWorker_pump, _RequestWorker_schedulePump;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.RequestWorker = void 0;
|
|
16
16
|
const http2_js_1 = require("./http2.js");
|
|
17
|
-
class
|
|
17
|
+
class ConcurrentLimiter {
|
|
18
|
+
get activeRequests() {
|
|
19
|
+
return __classPrivateFieldGet(this, _ConcurrentLimiter_activeRequests, "f");
|
|
20
|
+
}
|
|
18
21
|
constructor({ logger }, concurrency) {
|
|
19
22
|
this.concurrency = concurrency;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
23
|
+
_ConcurrentLimiter_activeRequests.set(this, 0);
|
|
24
|
+
_ConcurrentLimiter_logger.set(this, void 0);
|
|
25
|
+
__classPrivateFieldSet(this, _ConcurrentLimiter_logger, logger, "f");
|
|
26
|
+
__classPrivateFieldGet(this, _ConcurrentLimiter_logger, "f").trace(`Initialized ConcurrentLimiter with max ${concurrency} concurrent requests`);
|
|
27
|
+
}
|
|
28
|
+
acquire() {
|
|
29
|
+
if (!this.canAcquire())
|
|
30
|
+
return false;
|
|
31
|
+
__classPrivateFieldSet(this, _ConcurrentLimiter_activeRequests, __classPrivateFieldGet(this, _ConcurrentLimiter_activeRequests, "f") + 1, "f");
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
canAcquire() {
|
|
35
|
+
if (__classPrivateFieldGet(this, _ConcurrentLimiter_activeRequests, "f") < this.concurrency)
|
|
36
|
+
return true;
|
|
37
|
+
__classPrivateFieldGet(this, _ConcurrentLimiter_logger, "f").trace(`Concurrency limit reached (${__classPrivateFieldGet(this, _ConcurrentLimiter_activeRequests, "f")}/${this.concurrency}), dropping new concurrent request.`);
|
|
38
|
+
return false;
|
|
33
39
|
}
|
|
34
40
|
release() {
|
|
35
|
-
|
|
36
|
-
__classPrivateFieldSet(this, _ConcurrencyLimiter_active, (_a = __classPrivateFieldGet(this, _ConcurrencyLimiter_active, "f"), --_a), "f");
|
|
37
|
-
if (__classPrivateFieldGet(this, _ConcurrencyLimiter_queue, "f").length > 0) {
|
|
38
|
-
const next = __classPrivateFieldGet(this, _ConcurrencyLimiter_queue, "f").shift();
|
|
39
|
-
if (next) {
|
|
40
|
-
__classPrivateFieldGet(this, _ConcurrencyLimiter_logger, "f").trace(`Concurrency limit released (${__classPrivateFieldGet(this, _ConcurrencyLimiter_active, "f")}/${this.concurrency}), processing next request.`);
|
|
41
|
-
next();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
41
|
+
__classPrivateFieldSet(this, _ConcurrentLimiter_activeRequests, __classPrivateFieldGet(this, _ConcurrentLimiter_activeRequests, "f") - 1, "f");
|
|
44
42
|
}
|
|
45
43
|
}
|
|
46
|
-
|
|
47
|
-
class
|
|
44
|
+
_ConcurrentLimiter_activeRequests = new WeakMap(), _ConcurrentLimiter_logger = new WeakMap();
|
|
45
|
+
class TimeRateLimiter {
|
|
46
|
+
get nextAvailableAt() {
|
|
47
|
+
return __classPrivateFieldGet(this, _TimeRateLimiter_nextAvailableAt, "f");
|
|
48
|
+
}
|
|
48
49
|
constructor({ logger }, intervalMs) {
|
|
49
50
|
this.intervalMs = intervalMs;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
__classPrivateFieldSet(this,
|
|
53
|
-
__classPrivateFieldGet(this,
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
__classPrivateFieldGet(this,
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
__classPrivateFieldGet(this, _TimeLimiter_logger, "f").trace(`Time limiter continued at ${new Date(__classPrivateFieldGet(this, _TimeLimiter_availableAt, "f")).toISOString()}.`);
|
|
66
|
-
}
|
|
67
|
-
this.setNextAvailableAt(Date.now() + this.intervalMs);
|
|
51
|
+
_TimeRateLimiter_logger.set(this, void 0);
|
|
52
|
+
_TimeRateLimiter_nextAvailableAt.set(this, 0);
|
|
53
|
+
__classPrivateFieldSet(this, _TimeRateLimiter_logger, logger, "f");
|
|
54
|
+
__classPrivateFieldGet(this, _TimeRateLimiter_logger, "f").trace(`Initialized TimeRateLimiter with interval ${intervalMs}ms`);
|
|
55
|
+
}
|
|
56
|
+
postponeUntil(availableAt) {
|
|
57
|
+
__classPrivateFieldSet(this, _TimeRateLimiter_nextAvailableAt, Math.max(__classPrivateFieldGet(this, _TimeRateLimiter_nextAvailableAt, "f"), availableAt), "f");
|
|
58
|
+
__classPrivateFieldGet(this, _TimeRateLimiter_logger, "f").trace(`Setting next available time to ${new Date(__classPrivateFieldGet(this, _TimeRateLimiter_nextAvailableAt, "f")).toISOString()}.`);
|
|
59
|
+
}
|
|
60
|
+
reserveNextStart() {
|
|
61
|
+
__classPrivateFieldSet(this, _TimeRateLimiter_nextAvailableAt, Math.max(__classPrivateFieldGet(this, _TimeRateLimiter_nextAvailableAt, "f"), Date.now()) + this.intervalMs, "f");
|
|
62
|
+
__classPrivateFieldGet(this, _TimeRateLimiter_logger, "f").trace(`Setting next available time to ${new Date(__classPrivateFieldGet(this, _TimeRateLimiter_nextAvailableAt, "f")).toISOString()}.`);
|
|
63
|
+
}
|
|
64
|
+
waitMs() {
|
|
65
|
+
return __classPrivateFieldGet(this, _TimeRateLimiter_nextAvailableAt, "f") - Date.now();
|
|
68
66
|
}
|
|
69
67
|
}
|
|
70
|
-
|
|
68
|
+
_TimeRateLimiter_logger = new WeakMap(), _TimeRateLimiter_nextAvailableAt = new WeakMap();
|
|
71
69
|
class RequestWorker {
|
|
72
|
-
constructor({ logger }, { concurrency =
|
|
70
|
+
constructor({ logger }, { concurrency = 100, intervalMs = 1000, maxRetries = 3, rateLimitPauseMs, transport = new http2_js_1.Http2Transport(), } = {}) {
|
|
73
71
|
_RequestWorker_instances.add(this);
|
|
74
|
-
|
|
72
|
+
_RequestWorker_concurrentLimiter.set(this, void 0);
|
|
75
73
|
_RequestWorker_logger.set(this, void 0);
|
|
76
74
|
_RequestWorker_maxRetries.set(this, void 0);
|
|
75
|
+
_RequestWorker_pendingRequests.set(this, []);
|
|
77
76
|
_RequestWorker_rateLimitPauseMs.set(this, void 0);
|
|
78
|
-
|
|
77
|
+
_RequestWorker_scheduledPump.set(this, void 0);
|
|
78
|
+
_RequestWorker_timeRateLimiter.set(this, void 0);
|
|
79
79
|
_RequestWorker_transport.set(this, void 0);
|
|
80
80
|
__classPrivateFieldSet(this, _RequestWorker_logger, logger, "f");
|
|
81
81
|
__classPrivateFieldSet(this, _RequestWorker_transport, transport, "f");
|
|
82
|
-
__classPrivateFieldSet(this,
|
|
83
|
-
__classPrivateFieldSet(this,
|
|
82
|
+
__classPrivateFieldSet(this, _RequestWorker_concurrentLimiter, new ConcurrentLimiter({ logger }, concurrency), "f");
|
|
83
|
+
__classPrivateFieldSet(this, _RequestWorker_timeRateLimiter, new TimeRateLimiter({ logger }, intervalMs), "f");
|
|
84
84
|
__classPrivateFieldSet(this, _RequestWorker_maxRetries, maxRetries, "f");
|
|
85
85
|
__classPrivateFieldSet(this, _RequestWorker_rateLimitPauseMs, rateLimitPauseMs, "f");
|
|
86
86
|
logger.trace({
|
|
@@ -92,16 +92,16 @@ class RequestWorker {
|
|
|
92
92
|
}, "Initialized RequestWorker");
|
|
93
93
|
}
|
|
94
94
|
async fetch(request) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
__classPrivateFieldGet(this,
|
|
95
|
+
return new Promise((resolve, reject) => {
|
|
96
|
+
__classPrivateFieldGet(this, _RequestWorker_pendingRequests, "f").push({ reject, request, resolve });
|
|
97
|
+
__classPrivateFieldGet(this, _RequestWorker_logger, "f").trace(`Queued request into ${__classPrivateFieldGet(this, _RequestWorker_pendingRequests, "f").length} requests with ${__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").activeRequests}/${__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").concurrency} active requests.`);
|
|
98
|
+
__classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_pump).call(this);
|
|
98
99
|
});
|
|
99
100
|
}
|
|
100
101
|
}
|
|
101
102
|
exports.RequestWorker = RequestWorker;
|
|
102
|
-
|
|
103
|
+
_RequestWorker_concurrentLimiter = new WeakMap(), _RequestWorker_logger = new WeakMap(), _RequestWorker_maxRetries = new WeakMap(), _RequestWorker_pendingRequests = new WeakMap(), _RequestWorker_rateLimitPauseMs = new WeakMap(), _RequestWorker_scheduledPump = new WeakMap(), _RequestWorker_timeRateLimiter = new WeakMap(), _RequestWorker_transport = new WeakMap(), _RequestWorker_instances = new WeakSet(), _RequestWorker_fetch = async function _RequestWorker_fetch(request, retryRemains = __classPrivateFieldGet(this, _RequestWorker_maxRetries, "f")) {
|
|
103
104
|
__classPrivateFieldGet(this, _RequestWorker_logger, "f").info(`Fetching request with max ${retryRemains} retries to ${request instanceof Request ? request.url : request.toString()}`);
|
|
104
|
-
await __classPrivateFieldGet(this, _RequestWorker_timeLimiter, "f").wait();
|
|
105
105
|
const requestObj = request instanceof Request ? request.clone() : new Request(request);
|
|
106
106
|
const response = await __classPrivateFieldGet(this, _RequestWorker_transport, "f").fetch(requestObj);
|
|
107
107
|
if (response.ok)
|
|
@@ -110,8 +110,8 @@ _RequestWorker_concurrencyLimiter = new WeakMap(), _RequestWorker_logger = new W
|
|
|
110
110
|
const retryAfter = __classPrivateFieldGet(this, _RequestWorker_rateLimitPauseMs, "f") ?? parseRetryAfter(response) ?? 60000;
|
|
111
111
|
const availableAt = Date.now() + retryAfter;
|
|
112
112
|
__classPrivateFieldGet(this, _RequestWorker_logger, "f").warn(`Received 429 Too Many Requests. Pausing requests until ${new Date(availableAt).toISOString()}.`);
|
|
113
|
+
__classPrivateFieldGet(this, _RequestWorker_timeRateLimiter, "f").postponeUntil(availableAt);
|
|
113
114
|
await sleep(retryAfter);
|
|
114
|
-
__classPrivateFieldGet(this, _RequestWorker_timeLimiter, "f").setNextAvailableAt(availableAt);
|
|
115
115
|
}
|
|
116
116
|
if (retryRemains <= 0) {
|
|
117
117
|
const url = request instanceof Request ? request.url : request.toString();
|
|
@@ -119,6 +119,41 @@ _RequestWorker_concurrencyLimiter = new WeakMap(), _RequestWorker_logger = new W
|
|
|
119
119
|
return response;
|
|
120
120
|
}
|
|
121
121
|
return __classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_fetch).call(this, request, retryRemains - 1);
|
|
122
|
+
}, _RequestWorker_pump = function _RequestWorker_pump() {
|
|
123
|
+
if (__classPrivateFieldGet(this, _RequestWorker_pendingRequests, "f").length === 0)
|
|
124
|
+
return;
|
|
125
|
+
if (!__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").canAcquire()) {
|
|
126
|
+
__classPrivateFieldGet(this, _RequestWorker_logger, "f").trace(`Concurrency limit reached (${__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").activeRequests}/${__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").concurrency}).`);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const waitMs = __classPrivateFieldGet(this, _RequestWorker_timeRateLimiter, "f").waitMs();
|
|
130
|
+
if (waitMs > 0) {
|
|
131
|
+
__classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_schedulePump).call(this, waitMs);
|
|
132
|
+
__classPrivateFieldGet(this, _RequestWorker_logger, "f").trace(`Waiting for request scheduler for ${waitMs}ms, until ${new Date(__classPrivateFieldGet(this, _RequestWorker_timeRateLimiter, "f").nextAvailableAt).toISOString()}.`);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const next = __classPrivateFieldGet(this, _RequestWorker_pendingRequests, "f").shift();
|
|
136
|
+
if (!next) {
|
|
137
|
+
__classPrivateFieldGet(this, _RequestWorker_logger, "f").trace(`No pending requests to process.`);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").acquire();
|
|
141
|
+
__classPrivateFieldGet(this, _RequestWorker_timeRateLimiter, "f").reserveNextStart();
|
|
142
|
+
__classPrivateFieldGet(this, _RequestWorker_logger, "f").trace(`Processing queued request with ${__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").activeRequests}/${__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").concurrency} active requests and ${__classPrivateFieldGet(this, _RequestWorker_pendingRequests, "f").length} pending requests.`);
|
|
143
|
+
void __classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_fetch).call(this, next.request)
|
|
144
|
+
.then(next.resolve, next.reject)
|
|
145
|
+
.finally(() => {
|
|
146
|
+
__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").release();
|
|
147
|
+
__classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_pump).call(this);
|
|
148
|
+
});
|
|
149
|
+
}, _RequestWorker_schedulePump = function _RequestWorker_schedulePump(waitMs) {
|
|
150
|
+
if (__classPrivateFieldGet(this, _RequestWorker_scheduledPump, "f"))
|
|
151
|
+
return;
|
|
152
|
+
__classPrivateFieldGet(this, _RequestWorker_logger, "f").trace(`Waiting for request scheduler for ${waitMs}ms, until ${new Date(__classPrivateFieldGet(this, _RequestWorker_timeRateLimiter, "f").nextAvailableAt).toISOString()}.`);
|
|
153
|
+
__classPrivateFieldSet(this, _RequestWorker_scheduledPump, setTimeout(() => {
|
|
154
|
+
__classPrivateFieldSet(this, _RequestWorker_scheduledPump, undefined, "f");
|
|
155
|
+
__classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_pump).call(this);
|
|
156
|
+
}, waitMs), "f");
|
|
122
157
|
};
|
|
123
158
|
function parseRetryAfter(response, now = Date.now()) {
|
|
124
159
|
const retryAfter = response.headers.get("Retry-After");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,yCAAgE;
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-manager.d.ts","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"path-manager.d.ts","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,qBAAa,WAAW;;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;gBAGD,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB;IAMvD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAYpD,GAAG,CAAC,IAAI,EAAE,MAAM;IAOhB,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,mBAAmB,GAAG,OAAO,CAAC;CAO5D"}
|
|
@@ -11,6 +11,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
11
11
|
};
|
|
12
12
|
var _PathManager_flatPosts;
|
|
13
13
|
import { basename, dirname, join, resolve } from "node:path";
|
|
14
|
+
const INVALID_FILENAME_CHARS = /[<>:"/\\|?*\x00-\x1F]/g;
|
|
14
15
|
export class PathManager {
|
|
15
16
|
constructor({ flatPosts, rootPath }) {
|
|
16
17
|
_PathManager_flatPosts.set(this, void 0);
|
|
@@ -19,7 +20,8 @@ export class PathManager {
|
|
|
19
20
|
this.name = basename(this.path);
|
|
20
21
|
}
|
|
21
22
|
asset(index, name, extension) {
|
|
22
|
-
const
|
|
23
|
+
const sanitizedName = name.replace(INVALID_FILENAME_CHARS, "-");
|
|
24
|
+
const fileName = `${index}-${sanitizedName}.${extension}`;
|
|
23
25
|
if (__classPrivateFieldGet(this, _PathManager_flatPosts, "f")) {
|
|
24
26
|
const parent = dirname(this.path);
|
|
25
27
|
return join(parent, `${this.name}.${fileName}`);
|
|
@@ -37,7 +39,8 @@ export class PathManager {
|
|
|
37
39
|
}
|
|
38
40
|
post(post) {
|
|
39
41
|
const date = post.publishedDatetime.split("T")[0];
|
|
40
|
-
const
|
|
42
|
+
const sanitizedTitle = post.title.replace(INVALID_FILENAME_CHARS, "-");
|
|
43
|
+
const title = `${date}-${post.id}-${sanitizedTitle}`;
|
|
41
44
|
return this.dir(title);
|
|
42
45
|
}
|
|
43
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-manager.js","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"path-manager.js","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAU7D,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAExD,MAAM,OAAO,WAAW;IAKtB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAsB;QAFvD,yCAAoB;QAGlB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9B,uBAAA,IAAI,0BAAc,SAAS,MAAA,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAa,EAAE,IAAY,EAAE,SAAiB;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,aAAa,IAAI,SAAS,EAAE,CAAC;QAE1D,IAAI,uBAAA,IAAI,8BAAW,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,WAAW,CAAC;YACrB,SAAS,EAAE,uBAAA,IAAI,8BAAW;YAC1B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,IAAsD;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,cAAc,EAAE,CAAC;QAErD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAqFD,qBAAa,aAAa;;gBAWtB,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAC9B,EACE,WAAiB,EACjB,UAAiB,EACjB,UAAc,EACd,gBAAgB,EAChB,SAAgC,GACjC,GAAE,mBAAwB;IAoBvB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG;CA8F5C"}
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
1
6
|
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
7
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
8
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
10
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
11
|
};
|
|
7
|
-
var
|
|
8
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
-
};
|
|
12
|
-
var _ConcurrencyLimiter_active, _ConcurrencyLimiter_logger, _ConcurrencyLimiter_queue, _TimeLimiter_availableAt, _TimeLimiter_logger, _RequestWorker_instances, _RequestWorker_concurrencyLimiter, _RequestWorker_logger, _RequestWorker_maxRetries, _RequestWorker_rateLimitPauseMs, _RequestWorker_timeLimiter, _RequestWorker_transport, _RequestWorker_fetch;
|
|
12
|
+
var _ConcurrentLimiter_activeRequests, _ConcurrentLimiter_logger, _TimeRateLimiter_logger, _TimeRateLimiter_nextAvailableAt, _RequestWorker_instances, _RequestWorker_concurrentLimiter, _RequestWorker_logger, _RequestWorker_maxRetries, _RequestWorker_pendingRequests, _RequestWorker_rateLimitPauseMs, _RequestWorker_scheduledPump, _RequestWorker_timeRateLimiter, _RequestWorker_transport, _RequestWorker_fetch, _RequestWorker_pump, _RequestWorker_schedulePump;
|
|
13
13
|
import { Http2Transport } from "./http2.js";
|
|
14
|
-
class
|
|
14
|
+
class ConcurrentLimiter {
|
|
15
|
+
get activeRequests() {
|
|
16
|
+
return __classPrivateFieldGet(this, _ConcurrentLimiter_activeRequests, "f");
|
|
17
|
+
}
|
|
15
18
|
constructor({ logger }, concurrency) {
|
|
16
19
|
this.concurrency = concurrency;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
20
|
+
_ConcurrentLimiter_activeRequests.set(this, 0);
|
|
21
|
+
_ConcurrentLimiter_logger.set(this, void 0);
|
|
22
|
+
__classPrivateFieldSet(this, _ConcurrentLimiter_logger, logger, "f");
|
|
23
|
+
__classPrivateFieldGet(this, _ConcurrentLimiter_logger, "f").trace(`Initialized ConcurrentLimiter with max ${concurrency} concurrent requests`);
|
|
24
|
+
}
|
|
25
|
+
acquire() {
|
|
26
|
+
if (!this.canAcquire())
|
|
27
|
+
return false;
|
|
28
|
+
__classPrivateFieldSet(this, _ConcurrentLimiter_activeRequests, __classPrivateFieldGet(this, _ConcurrentLimiter_activeRequests, "f") + 1, "f");
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
canAcquire() {
|
|
32
|
+
if (__classPrivateFieldGet(this, _ConcurrentLimiter_activeRequests, "f") < this.concurrency)
|
|
33
|
+
return true;
|
|
34
|
+
__classPrivateFieldGet(this, _ConcurrentLimiter_logger, "f").trace(`Concurrency limit reached (${__classPrivateFieldGet(this, _ConcurrentLimiter_activeRequests, "f")}/${this.concurrency}), dropping new concurrent request.`);
|
|
35
|
+
return false;
|
|
30
36
|
}
|
|
31
37
|
release() {
|
|
32
|
-
|
|
33
|
-
__classPrivateFieldSet(this, _ConcurrencyLimiter_active, (_a = __classPrivateFieldGet(this, _ConcurrencyLimiter_active, "f"), --_a), "f");
|
|
34
|
-
if (__classPrivateFieldGet(this, _ConcurrencyLimiter_queue, "f").length > 0) {
|
|
35
|
-
const next = __classPrivateFieldGet(this, _ConcurrencyLimiter_queue, "f").shift();
|
|
36
|
-
if (next) {
|
|
37
|
-
__classPrivateFieldGet(this, _ConcurrencyLimiter_logger, "f").trace(`Concurrency limit released (${__classPrivateFieldGet(this, _ConcurrencyLimiter_active, "f")}/${this.concurrency}), processing next request.`);
|
|
38
|
-
next();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
38
|
+
__classPrivateFieldSet(this, _ConcurrentLimiter_activeRequests, __classPrivateFieldGet(this, _ConcurrentLimiter_activeRequests, "f") - 1, "f");
|
|
41
39
|
}
|
|
42
40
|
}
|
|
43
|
-
|
|
44
|
-
class
|
|
41
|
+
_ConcurrentLimiter_activeRequests = new WeakMap(), _ConcurrentLimiter_logger = new WeakMap();
|
|
42
|
+
class TimeRateLimiter {
|
|
43
|
+
get nextAvailableAt() {
|
|
44
|
+
return __classPrivateFieldGet(this, _TimeRateLimiter_nextAvailableAt, "f");
|
|
45
|
+
}
|
|
45
46
|
constructor({ logger }, intervalMs) {
|
|
46
47
|
this.intervalMs = intervalMs;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
__classPrivateFieldSet(this,
|
|
50
|
-
__classPrivateFieldGet(this,
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
__classPrivateFieldGet(this,
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
__classPrivateFieldGet(this, _TimeLimiter_logger, "f").trace(`Time limiter continued at ${new Date(__classPrivateFieldGet(this, _TimeLimiter_availableAt, "f")).toISOString()}.`);
|
|
63
|
-
}
|
|
64
|
-
this.setNextAvailableAt(Date.now() + this.intervalMs);
|
|
48
|
+
_TimeRateLimiter_logger.set(this, void 0);
|
|
49
|
+
_TimeRateLimiter_nextAvailableAt.set(this, 0);
|
|
50
|
+
__classPrivateFieldSet(this, _TimeRateLimiter_logger, logger, "f");
|
|
51
|
+
__classPrivateFieldGet(this, _TimeRateLimiter_logger, "f").trace(`Initialized TimeRateLimiter with interval ${intervalMs}ms`);
|
|
52
|
+
}
|
|
53
|
+
postponeUntil(availableAt) {
|
|
54
|
+
__classPrivateFieldSet(this, _TimeRateLimiter_nextAvailableAt, Math.max(__classPrivateFieldGet(this, _TimeRateLimiter_nextAvailableAt, "f"), availableAt), "f");
|
|
55
|
+
__classPrivateFieldGet(this, _TimeRateLimiter_logger, "f").trace(`Setting next available time to ${new Date(__classPrivateFieldGet(this, _TimeRateLimiter_nextAvailableAt, "f")).toISOString()}.`);
|
|
56
|
+
}
|
|
57
|
+
reserveNextStart() {
|
|
58
|
+
__classPrivateFieldSet(this, _TimeRateLimiter_nextAvailableAt, Math.max(__classPrivateFieldGet(this, _TimeRateLimiter_nextAvailableAt, "f"), Date.now()) + this.intervalMs, "f");
|
|
59
|
+
__classPrivateFieldGet(this, _TimeRateLimiter_logger, "f").trace(`Setting next available time to ${new Date(__classPrivateFieldGet(this, _TimeRateLimiter_nextAvailableAt, "f")).toISOString()}.`);
|
|
60
|
+
}
|
|
61
|
+
waitMs() {
|
|
62
|
+
return __classPrivateFieldGet(this, _TimeRateLimiter_nextAvailableAt, "f") - Date.now();
|
|
65
63
|
}
|
|
66
64
|
}
|
|
67
|
-
|
|
65
|
+
_TimeRateLimiter_logger = new WeakMap(), _TimeRateLimiter_nextAvailableAt = new WeakMap();
|
|
68
66
|
export class RequestWorker {
|
|
69
|
-
constructor({ logger }, { concurrency =
|
|
67
|
+
constructor({ logger }, { concurrency = 100, intervalMs = 1000, maxRetries = 3, rateLimitPauseMs, transport = new Http2Transport(), } = {}) {
|
|
70
68
|
_RequestWorker_instances.add(this);
|
|
71
|
-
|
|
69
|
+
_RequestWorker_concurrentLimiter.set(this, void 0);
|
|
72
70
|
_RequestWorker_logger.set(this, void 0);
|
|
73
71
|
_RequestWorker_maxRetries.set(this, void 0);
|
|
72
|
+
_RequestWorker_pendingRequests.set(this, []);
|
|
74
73
|
_RequestWorker_rateLimitPauseMs.set(this, void 0);
|
|
75
|
-
|
|
74
|
+
_RequestWorker_scheduledPump.set(this, void 0);
|
|
75
|
+
_RequestWorker_timeRateLimiter.set(this, void 0);
|
|
76
76
|
_RequestWorker_transport.set(this, void 0);
|
|
77
77
|
__classPrivateFieldSet(this, _RequestWorker_logger, logger, "f");
|
|
78
78
|
__classPrivateFieldSet(this, _RequestWorker_transport, transport, "f");
|
|
79
|
-
__classPrivateFieldSet(this,
|
|
80
|
-
__classPrivateFieldSet(this,
|
|
79
|
+
__classPrivateFieldSet(this, _RequestWorker_concurrentLimiter, new ConcurrentLimiter({ logger }, concurrency), "f");
|
|
80
|
+
__classPrivateFieldSet(this, _RequestWorker_timeRateLimiter, new TimeRateLimiter({ logger }, intervalMs), "f");
|
|
81
81
|
__classPrivateFieldSet(this, _RequestWorker_maxRetries, maxRetries, "f");
|
|
82
82
|
__classPrivateFieldSet(this, _RequestWorker_rateLimitPauseMs, rateLimitPauseMs, "f");
|
|
83
83
|
logger.trace({
|
|
@@ -89,15 +89,15 @@ export class RequestWorker {
|
|
|
89
89
|
}, "Initialized RequestWorker");
|
|
90
90
|
}
|
|
91
91
|
async fetch(request) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
__classPrivateFieldGet(this,
|
|
92
|
+
return new Promise((resolve, reject) => {
|
|
93
|
+
__classPrivateFieldGet(this, _RequestWorker_pendingRequests, "f").push({ reject, request, resolve });
|
|
94
|
+
__classPrivateFieldGet(this, _RequestWorker_logger, "f").trace(`Queued request into ${__classPrivateFieldGet(this, _RequestWorker_pendingRequests, "f").length} requests with ${__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").activeRequests}/${__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").concurrency} active requests.`);
|
|
95
|
+
__classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_pump).call(this);
|
|
95
96
|
});
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
|
-
|
|
99
|
+
_RequestWorker_concurrentLimiter = new WeakMap(), _RequestWorker_logger = new WeakMap(), _RequestWorker_maxRetries = new WeakMap(), _RequestWorker_pendingRequests = new WeakMap(), _RequestWorker_rateLimitPauseMs = new WeakMap(), _RequestWorker_scheduledPump = new WeakMap(), _RequestWorker_timeRateLimiter = new WeakMap(), _RequestWorker_transport = new WeakMap(), _RequestWorker_instances = new WeakSet(), _RequestWorker_fetch = async function _RequestWorker_fetch(request, retryRemains = __classPrivateFieldGet(this, _RequestWorker_maxRetries, "f")) {
|
|
99
100
|
__classPrivateFieldGet(this, _RequestWorker_logger, "f").info(`Fetching request with max ${retryRemains} retries to ${request instanceof Request ? request.url : request.toString()}`);
|
|
100
|
-
await __classPrivateFieldGet(this, _RequestWorker_timeLimiter, "f").wait();
|
|
101
101
|
const requestObj = request instanceof Request ? request.clone() : new Request(request);
|
|
102
102
|
const response = await __classPrivateFieldGet(this, _RequestWorker_transport, "f").fetch(requestObj);
|
|
103
103
|
if (response.ok)
|
|
@@ -106,8 +106,8 @@ _RequestWorker_concurrencyLimiter = new WeakMap(), _RequestWorker_logger = new W
|
|
|
106
106
|
const retryAfter = __classPrivateFieldGet(this, _RequestWorker_rateLimitPauseMs, "f") ?? parseRetryAfter(response) ?? 60000;
|
|
107
107
|
const availableAt = Date.now() + retryAfter;
|
|
108
108
|
__classPrivateFieldGet(this, _RequestWorker_logger, "f").warn(`Received 429 Too Many Requests. Pausing requests until ${new Date(availableAt).toISOString()}.`);
|
|
109
|
+
__classPrivateFieldGet(this, _RequestWorker_timeRateLimiter, "f").postponeUntil(availableAt);
|
|
109
110
|
await sleep(retryAfter);
|
|
110
|
-
__classPrivateFieldGet(this, _RequestWorker_timeLimiter, "f").setNextAvailableAt(availableAt);
|
|
111
111
|
}
|
|
112
112
|
if (retryRemains <= 0) {
|
|
113
113
|
const url = request instanceof Request ? request.url : request.toString();
|
|
@@ -115,6 +115,41 @@ _RequestWorker_concurrencyLimiter = new WeakMap(), _RequestWorker_logger = new W
|
|
|
115
115
|
return response;
|
|
116
116
|
}
|
|
117
117
|
return __classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_fetch).call(this, request, retryRemains - 1);
|
|
118
|
+
}, _RequestWorker_pump = function _RequestWorker_pump() {
|
|
119
|
+
if (__classPrivateFieldGet(this, _RequestWorker_pendingRequests, "f").length === 0)
|
|
120
|
+
return;
|
|
121
|
+
if (!__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").canAcquire()) {
|
|
122
|
+
__classPrivateFieldGet(this, _RequestWorker_logger, "f").trace(`Concurrency limit reached (${__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").activeRequests}/${__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").concurrency}).`);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const waitMs = __classPrivateFieldGet(this, _RequestWorker_timeRateLimiter, "f").waitMs();
|
|
126
|
+
if (waitMs > 0) {
|
|
127
|
+
__classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_schedulePump).call(this, waitMs);
|
|
128
|
+
__classPrivateFieldGet(this, _RequestWorker_logger, "f").trace(`Waiting for request scheduler for ${waitMs}ms, until ${new Date(__classPrivateFieldGet(this, _RequestWorker_timeRateLimiter, "f").nextAvailableAt).toISOString()}.`);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const next = __classPrivateFieldGet(this, _RequestWorker_pendingRequests, "f").shift();
|
|
132
|
+
if (!next) {
|
|
133
|
+
__classPrivateFieldGet(this, _RequestWorker_logger, "f").trace(`No pending requests to process.`);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").acquire();
|
|
137
|
+
__classPrivateFieldGet(this, _RequestWorker_timeRateLimiter, "f").reserveNextStart();
|
|
138
|
+
__classPrivateFieldGet(this, _RequestWorker_logger, "f").trace(`Processing queued request with ${__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").activeRequests}/${__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").concurrency} active requests and ${__classPrivateFieldGet(this, _RequestWorker_pendingRequests, "f").length} pending requests.`);
|
|
139
|
+
void __classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_fetch).call(this, next.request)
|
|
140
|
+
.then(next.resolve, next.reject)
|
|
141
|
+
.finally(() => {
|
|
142
|
+
__classPrivateFieldGet(this, _RequestWorker_concurrentLimiter, "f").release();
|
|
143
|
+
__classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_pump).call(this);
|
|
144
|
+
});
|
|
145
|
+
}, _RequestWorker_schedulePump = function _RequestWorker_schedulePump(waitMs) {
|
|
146
|
+
if (__classPrivateFieldGet(this, _RequestWorker_scheduledPump, "f"))
|
|
147
|
+
return;
|
|
148
|
+
__classPrivateFieldGet(this, _RequestWorker_logger, "f").trace(`Waiting for request scheduler for ${waitMs}ms, until ${new Date(__classPrivateFieldGet(this, _RequestWorker_timeRateLimiter, "f").nextAvailableAt).toISOString()}.`);
|
|
149
|
+
__classPrivateFieldSet(this, _RequestWorker_scheduledPump, setTimeout(() => {
|
|
150
|
+
__classPrivateFieldSet(this, _RequestWorker_scheduledPump, undefined, "f");
|
|
151
|
+
__classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_pump).call(this);
|
|
152
|
+
}, waitMs), "f");
|
|
118
153
|
};
|
|
119
154
|
function parseRetryAfter(response, now = Date.now()) {
|
|
120
155
|
const retryAfter = response.headers.get("Retry-After");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,OAAO,EAAE,cAAc,EAAsB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"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"}
|