pixivflow 2.12.2 → 2.13.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/README.md +12 -4
- package/dist/commands/DoctorCommand.d.ts +20 -0
- package/dist/commands/DoctorCommand.d.ts.map +1 -0
- package/dist/commands/DoctorCommand.js +107 -0
- package/dist/commands/DoctorCommand.js.map +1 -0
- package/dist/commands/ReconcileCommand.d.ts +24 -0
- package/dist/commands/ReconcileCommand.d.ts.map +1 -0
- package/dist/commands/ReconcileCommand.js +70 -0
- package/dist/commands/ReconcileCommand.js.map +1 -0
- package/dist/commands/SchedulerCommand.d.ts.map +1 -1
- package/dist/commands/SchedulerCommand.js +5 -0
- package/dist/commands/SchedulerCommand.js.map +1 -1
- package/dist/commands/SchedulerRunOnceCommand.d.ts.map +1 -1
- package/dist/commands/SchedulerRunOnceCommand.js +6 -0
- package/dist/commands/SchedulerRunOnceCommand.js.map +1 -1
- package/dist/commands/index.d.ts +3 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +7 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/scheduler-runtime.d.ts +10 -1
- package/dist/commands/scheduler-runtime.d.ts.map +1 -1
- package/dist/commands/scheduler-runtime.js +169 -47
- package/dist/commands/scheduler-runtime.js.map +1 -1
- package/dist/config/types.d.ts +10 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/delivery/DeliveryAck.d.ts +70 -0
- package/dist/delivery/DeliveryAck.d.ts.map +1 -0
- package/dist/delivery/DeliveryAck.js +72 -0
- package/dist/delivery/DeliveryAck.js.map +1 -0
- package/dist/delivery/DeliveryDispatcher.js +1 -1
- package/dist/delivery/DeliveryDispatcher.js.map +1 -1
- package/dist/delivery/DeliveryService.d.ts +74 -0
- package/dist/delivery/DeliveryService.d.ts.map +1 -0
- package/dist/delivery/DeliveryService.js +207 -0
- package/dist/delivery/DeliveryService.js.map +1 -0
- package/dist/delivery/HttpMultipartDelivery.d.ts +10 -1
- package/dist/delivery/HttpMultipartDelivery.d.ts.map +1 -1
- package/dist/delivery/HttpMultipartDelivery.js +40 -65
- package/dist/delivery/HttpMultipartDelivery.js.map +1 -1
- package/dist/delivery/LegacyOutboxMigration.d.ts +21 -0
- package/dist/delivery/LegacyOutboxMigration.d.ts.map +1 -0
- package/dist/delivery/LegacyOutboxMigration.js +125 -0
- package/dist/delivery/LegacyOutboxMigration.js.map +1 -0
- package/dist/delivery/OutboxWorker.d.ts +69 -0
- package/dist/delivery/OutboxWorker.d.ts.map +1 -0
- package/dist/delivery/OutboxWorker.js +194 -0
- package/dist/delivery/OutboxWorker.js.map +1 -0
- package/dist/delivery/types.d.ts +11 -0
- package/dist/delivery/types.d.ts.map +1 -1
- package/dist/download/DownloadManager.d.ts +17 -12
- package/dist/download/DownloadManager.d.ts.map +1 -1
- package/dist/download/DownloadManager.js +31 -53
- package/dist/download/DownloadManager.js.map +1 -1
- package/dist/download/NovelDownloader.d.ts +3 -1
- package/dist/download/NovelDownloader.d.ts.map +1 -1
- package/dist/download/NovelDownloader.js +30 -2
- package/dist/download/NovelDownloader.js.map +1 -1
- package/dist/download/handlers/IllustrationTargetHandler.d.ts +18 -8
- package/dist/download/handlers/IllustrationTargetHandler.d.ts.map +1 -1
- package/dist/download/handlers/IllustrationTargetHandler.js +100 -74
- package/dist/download/handlers/IllustrationTargetHandler.js.map +1 -1
- package/dist/download/handlers/NovelTargetHandler.d.ts +8 -8
- package/dist/download/handlers/NovelTargetHandler.d.ts.map +1 -1
- package/dist/download/handlers/NovelTargetHandler.js +64 -83
- package/dist/download/handlers/NovelTargetHandler.js.map +1 -1
- package/dist/download/plan/DownloadPlanner.d.ts +6 -1
- package/dist/download/plan/DownloadPlanner.d.ts.map +1 -1
- package/dist/download/plan/DownloadPlanner.js +28 -5
- package/dist/download/plan/DownloadPlanner.js.map +1 -1
- package/dist/notification/NotificationPolicy.d.ts +38 -0
- package/dist/notification/NotificationPolicy.d.ts.map +1 -0
- package/dist/notification/NotificationPolicy.js +89 -0
- package/dist/notification/NotificationPolicy.js.map +1 -0
- package/dist/package.json +1 -1
- package/dist/pixiv/PixivClient.d.ts +4 -0
- package/dist/pixiv/PixivClient.d.ts.map +1 -1
- package/dist/pixiv/PixivClient.js +15 -2
- package/dist/pixiv/PixivClient.js.map +1 -1
- package/dist/pixiv/RateLimitCoordinator.d.ts +30 -0
- package/dist/pixiv/RateLimitCoordinator.d.ts.map +1 -0
- package/dist/pixiv/RateLimitCoordinator.js +66 -0
- package/dist/pixiv/RateLimitCoordinator.js.map +1 -0
- package/dist/pixiv/client/PixivApiCore.d.ts +5 -0
- package/dist/pixiv/client/PixivApiCore.d.ts.map +1 -1
- package/dist/pixiv/client/PixivApiCore.js +31 -9
- package/dist/pixiv/client/PixivApiCore.js.map +1 -1
- package/dist/scheduler/ScheduleTriggerServer.d.ts +7 -0
- package/dist/scheduler/ScheduleTriggerServer.d.ts.map +1 -1
- package/dist/scheduler/ScheduleTriggerServer.js +17 -0
- package/dist/scheduler/ScheduleTriggerServer.js.map +1 -1
- package/dist/scheduler/SlotCoordinator.d.ts +15 -0
- package/dist/scheduler/SlotCoordinator.d.ts.map +1 -1
- package/dist/scheduler/SlotCoordinator.js +74 -0
- package/dist/scheduler/SlotCoordinator.js.map +1 -1
- package/dist/scheduler/SlotStateMachine.d.ts +32 -0
- package/dist/scheduler/SlotStateMachine.d.ts.map +1 -0
- package/dist/scheduler/SlotStateMachine.js +65 -0
- package/dist/scheduler/SlotStateMachine.js.map +1 -0
- package/dist/scheduler/TargetOutcome.d.ts +63 -0
- package/dist/scheduler/TargetOutcome.d.ts.map +1 -0
- package/dist/scheduler/TargetOutcome.js +28 -0
- package/dist/scheduler/TargetOutcome.js.map +1 -0
- package/dist/storage/Database.d.ts +16 -0
- package/dist/storage/Database.d.ts.map +1 -1
- package/dist/storage/Database.js +29 -0
- package/dist/storage/Database.js.map +1 -1
- package/dist/storage/DatabaseMigration.d.ts.map +1 -1
- package/dist/storage/DatabaseMigration.js +66 -0
- package/dist/storage/DatabaseMigration.js.map +1 -1
- package/dist/storage/repositories/DeliveryRepository.d.ts +73 -0
- package/dist/storage/repositories/DeliveryRepository.d.ts.map +1 -0
- package/dist/storage/repositories/DeliveryRepository.js +148 -0
- package/dist/storage/repositories/DeliveryRepository.js.map +1 -0
- package/dist/storage/repositories/MetadataRepository.d.ts +27 -0
- package/dist/storage/repositories/MetadataRepository.d.ts.map +1 -0
- package/dist/storage/repositories/MetadataRepository.js +58 -0
- package/dist/storage/repositories/MetadataRepository.js.map +1 -0
- package/dist/storage/repositories/OutboxRepository.d.ts +70 -0
- package/dist/storage/repositories/OutboxRepository.d.ts.map +1 -0
- package/dist/storage/repositories/OutboxRepository.js +187 -0
- package/dist/storage/repositories/OutboxRepository.js.map +1 -0
- package/dist/storage/repositories/SlotRepository.d.ts +26 -1
- package/dist/storage/repositories/SlotRepository.d.ts.map +1 -1
- package/dist/storage/repositories/SlotRepository.js +76 -2
- package/dist/storage/repositories/SlotRepository.js.map +1 -1
- package/dist/webui/package.json +1 -1
- package/package.json +1 -1
- package/dist/delivery/DeliveryOutbox.d.ts +0 -43
- package/dist/delivery/DeliveryOutbox.d.ts.map +0 -1
- package/dist/delivery/DeliveryOutbox.js +0 -293
- package/dist/delivery/DeliveryOutbox.js.map +0 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NotificationPolicy = void 0;
|
|
4
|
+
const DeliveryService_1 = require("../delivery/DeliveryService");
|
|
5
|
+
/**
|
|
6
|
+
* Central policy for all operational notifications. Handlers/scheduler do not
|
|
7
|
+
* decide how or when to notify — they emit domain outcomes and this policy
|
|
8
|
+
* turns them into durable outbox notifications (kind=notification).
|
|
9
|
+
*
|
|
10
|
+
* Every key is anchored to the SLOT identity (slotId), never target+date: the
|
|
11
|
+
* 10:00 and 18:00 occurrences of one day have distinct slotIds and therefore
|
|
12
|
+
* distinct notifications. Notification failure never changes a content result.
|
|
13
|
+
*/
|
|
14
|
+
class NotificationPolicy {
|
|
15
|
+
database;
|
|
16
|
+
config;
|
|
17
|
+
constructor(database, config) {
|
|
18
|
+
this.database = database;
|
|
19
|
+
this.config = config;
|
|
20
|
+
}
|
|
21
|
+
targetName(target) {
|
|
22
|
+
return target.delivery?.target?.trim() || null;
|
|
23
|
+
}
|
|
24
|
+
/** Stable slot-scoped keys (two occurrences on one date never collide). */
|
|
25
|
+
static keys = {
|
|
26
|
+
noMatch: (slotId, targetId) => `notification:${slotId}:${targetId}:no-candidate`,
|
|
27
|
+
hardFail: (slotId, targetId) => `notification:${slotId}:${targetId}:failed`,
|
|
28
|
+
summary: (slotId) => `notification:${slotId}:summary`,
|
|
29
|
+
dead: (slotId, targetId) => `notification:${slotId}:${targetId}:delivery-dead`,
|
|
30
|
+
};
|
|
31
|
+
noteOutcome(slotId, slot, schedule, target, outcome) {
|
|
32
|
+
const name = this.targetName(target);
|
|
33
|
+
if (!name)
|
|
34
|
+
return;
|
|
35
|
+
const label = target.id || target.filterTag || target.tag || target.type;
|
|
36
|
+
if (outcome.kind === 'no_candidate' && target.noMatchPolicy?.notify === true) {
|
|
37
|
+
this.send(name, NotificationPolicy.keys.noMatch(slotId, target.id ?? label), [
|
|
38
|
+
'⚠️ PixivFlow 本次没有可投稿内容',
|
|
39
|
+
`计划:${schedule.name?.trim() || schedule.id} · ${slot.occurrenceLabel}`,
|
|
40
|
+
`目标:${label}(${target.type === 'novel' ? '小说' : '插画'})`,
|
|
41
|
+
`原因:${outcome.reason.slice(0, 160)}`,
|
|
42
|
+
'处理结果:未创建空投稿;下次定时任务继续执行。',
|
|
43
|
+
].join('\n'));
|
|
44
|
+
}
|
|
45
|
+
if (outcome.kind === 'failed' && !outcome.retryable) {
|
|
46
|
+
this.send(name, NotificationPolicy.keys.hardFail(slotId, target.id ?? label), [
|
|
47
|
+
'❌ PixivFlow 本次处理失败',
|
|
48
|
+
`计划:${schedule.name?.trim() || schedule.id} · ${slot.occurrenceLabel}`,
|
|
49
|
+
`目标:${label}(${target.type === 'novel' ? '小说' : '插画'})`,
|
|
50
|
+
`错误:${outcome.error.slice(0, 200)}`,
|
|
51
|
+
].join('\n'));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** One consolidated summary per slot, delivered to every notifying target's endpoint. */
|
|
55
|
+
sendSlotSummary(slot, schedule, rows) {
|
|
56
|
+
const targets = this.config.delivery?.targets ?? {};
|
|
57
|
+
const notifiable = new Set(Object.keys(targets).filter((n) => targets[n]?.notificationUrl?.trim()));
|
|
58
|
+
if (notifiable.size === 0 || rows.length === 0)
|
|
59
|
+
return;
|
|
60
|
+
const icon = (s) => s === 'submitted' ? '✅' : s === 'no_candidate' ? '⚠️' : s === 'duplicate' ? '♱' : s === 'delivery_pending' ? '🕓' : '❌';
|
|
61
|
+
const lines = rows.map((r) => `${icon(r.status)} ${r.label}(${r.workType === 'novel' ? '小说' : '插画'})` +
|
|
62
|
+
(r.workId ? ` #${r.workId}` : '') +
|
|
63
|
+
(r.status === 'delivery_pending' ? ' 投递中' : '') +
|
|
64
|
+
(r.status === 'no_candidate' ? ' 无候选' : '') +
|
|
65
|
+
(r.status === 'failed' && r.error ? ` ${r.error.slice(0, 120)}` : ''));
|
|
66
|
+
const submitted = rows.filter((r) => r.status === 'submitted').length;
|
|
67
|
+
const text = [
|
|
68
|
+
`${schedule.name?.trim() || schedule.id} · ${slot.occurrenceLabel}`,
|
|
69
|
+
...lines,
|
|
70
|
+
`结果:${submitted === rows.length ? 'success' : submitted > 0 ? 'partial' : 'failed'}(${submitted}/${rows.length} 已确认投递)`,
|
|
71
|
+
].join('\n');
|
|
72
|
+
const service = new DeliveryService_1.DeliveryService(this.database);
|
|
73
|
+
for (const name of notifiable) {
|
|
74
|
+
service.enqueueNotification(name, text, NotificationPolicy.keys.summary(slot.slotId));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
send(targetName, key, text) {
|
|
78
|
+
try {
|
|
79
|
+
new DeliveryService_1.DeliveryService(this.database).enqueueNotification(targetName, text, key);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
// Durable enqueue failure must not unwind the content run.
|
|
83
|
+
// eslint-disable-next-line no-console
|
|
84
|
+
console.warn('notification enqueue failed', { targetName, key, error: error.message });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.NotificationPolicy = NotificationPolicy;
|
|
89
|
+
//# sourceMappingURL=NotificationPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotificationPolicy.js","sourceRoot":"","sources":["../../src/notification/NotificationPolicy.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json
CHANGED
|
@@ -2,6 +2,7 @@ import { StandaloneConfig, TargetConfig } from '../config';
|
|
|
2
2
|
import { PixivAuth } from './AuthClient';
|
|
3
3
|
import { IPixivClient } from '../interfaces/IPixivClient';
|
|
4
4
|
import type { PixivUser, PixivIllust, PixivNovel, PixivNovelTextResponse, PixivTag } from './types';
|
|
5
|
+
import { RateLimitCoordinator } from './RateLimitCoordinator';
|
|
5
6
|
export type { PixivUser, PixivIllust, PixivNovel, PixivIllustPage, PixivNovelTextResponse } from './types';
|
|
6
7
|
export declare class PixivClient implements IPixivClient {
|
|
7
8
|
private readonly auth;
|
|
@@ -9,11 +10,14 @@ export declare class PixivClient implements IPixivClient {
|
|
|
9
10
|
private readonly baseUrl;
|
|
10
11
|
private readonly proxyAgent?;
|
|
11
12
|
private readonly apiCore;
|
|
13
|
+
private readonly rateLimiter;
|
|
12
14
|
private readonly illustService;
|
|
13
15
|
private readonly novelService;
|
|
14
16
|
private readonly mediaService;
|
|
15
17
|
private readonly searchService;
|
|
16
18
|
constructor(auth: PixivAuth, config: StandaloneConfig);
|
|
19
|
+
/** Process-wide Pixiv rate-limit gate (used by doctor/health). */
|
|
20
|
+
getRateLimiter(): RateLimitCoordinator;
|
|
17
21
|
/**
|
|
18
22
|
* Safely parse date string to timestamp
|
|
19
23
|
* Returns 0 for invalid dates to ensure consistent sorting
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PixivClient.d.ts","sourceRoot":"","sources":["../../src/pixiv/PixivClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAM3D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAmB,sBAAsB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"PixivClient.d.ts","sourceRoot":"","sources":["../../src/pixiv/PixivClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ const logger_1 = require("../logger");
|
|
|
6
6
|
const date_utils_1 = require("../utils/date-utils");
|
|
7
7
|
const pixiv_utils_1 = require("../utils/pixiv-utils");
|
|
8
8
|
const PixivApiCore_1 = require("./client/PixivApiCore");
|
|
9
|
+
const RateLimitCoordinator_1 = require("./RateLimitCoordinator");
|
|
9
10
|
const IllustService_1 = require("./client/IllustService");
|
|
10
11
|
const NovelService_1 = require("./client/NovelService");
|
|
11
12
|
const MediaDownloadService_1 = require("./client/MediaDownloadService");
|
|
@@ -16,6 +17,7 @@ class PixivClient {
|
|
|
16
17
|
baseUrl = 'https://app-api.pixiv.net/';
|
|
17
18
|
proxyAgent;
|
|
18
19
|
apiCore;
|
|
20
|
+
rateLimiter;
|
|
19
21
|
illustService;
|
|
20
22
|
novelService;
|
|
21
23
|
mediaService;
|
|
@@ -71,14 +73,21 @@ class PixivClient {
|
|
|
71
73
|
}
|
|
72
74
|
return undefined;
|
|
73
75
|
})();
|
|
76
|
+
// ONE global gate: a 429 anywhere parks the whole Pixiv client, avoiding
|
|
77
|
+
// inner*outer request amplification. Default request retry is small (the
|
|
78
|
+
// outbox/scheduler own durable retry across runs).
|
|
79
|
+
// Default pacing is 0: the gate's job is the shared 429 cooldown, not an
|
|
80
|
+
// artificial per-request delay. Operators can opt into pacing explicitly.
|
|
81
|
+
const pace = network.requestPacingMs ?? 0;
|
|
82
|
+
this.rateLimiter = new RateLimitCoordinator_1.RateLimitCoordinator(pace);
|
|
74
83
|
this.apiCore = new PixivApiCore_1.PixivApiCore({
|
|
75
84
|
baseUrl: 'https://app-api.pixiv.net',
|
|
76
85
|
userAgent: this.config.pixiv.userAgent,
|
|
77
86
|
defaultTimeoutMs: network.timeoutMs ?? 30_000,
|
|
78
|
-
maxRetries: network.retries ??
|
|
79
|
-
rateLimitPerSecond: undefined,
|
|
87
|
+
maxRetries: network.retries ?? 2,
|
|
80
88
|
proxyUrl: proxyUrlStr,
|
|
81
89
|
getAccessToken: () => this.auth.getAccessToken(),
|
|
90
|
+
rateLimiter: this.rateLimiter,
|
|
82
91
|
});
|
|
83
92
|
// Initialize domain services
|
|
84
93
|
this.illustService = new IllustService_1.IllustService(this.apiCore);
|
|
@@ -86,6 +95,10 @@ class PixivClient {
|
|
|
86
95
|
this.mediaService = new MediaDownloadService_1.MediaDownloadService(this.apiCore);
|
|
87
96
|
this.searchService = new SearchService_1.SearchService(this.apiCore);
|
|
88
97
|
}
|
|
98
|
+
/** Process-wide Pixiv rate-limit gate (used by doctor/health). */
|
|
99
|
+
getRateLimiter() {
|
|
100
|
+
return this.rateLimiter;
|
|
101
|
+
}
|
|
89
102
|
/**
|
|
90
103
|
* Safely parse date string to timestamp
|
|
91
104
|
* Returns 0 for invalid dates to ensure consistent sorting
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PixivClient.js","sourceRoot":"","sources":["../../src/pixiv/PixivClient.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAGpC,sCAAmC;AAEnC,oDAA+G;AAC/G,sDAAsD;AAKtD,wDAAqD;AACrD,0DAAuD;AACvD,wDAAqD;AACrD,wEAAqE;AACrE,0DAAuD;AAKvD,MAAa,WAAW;
|
|
1
|
+
{"version":3,"file":"PixivClient.js","sourceRoot":"","sources":["../../src/pixiv/PixivClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process-wide Pixiv rate-limit coordinator.
|
|
3
|
+
*
|
|
4
|
+
* Every Pixiv HTTP request routes through the SAME gate. On a 429 (or an
|
|
5
|
+
* explicit Retry-After) the WHOLE client enters a cooldown: other candidate
|
|
6
|
+
* requests due meanwhile wait at the gate instead of hammering Pixiv in
|
|
7
|
+
* parallel, which is what produced inner*outer retry storms.
|
|
8
|
+
*/
|
|
9
|
+
export declare class RateLimitCoordinator {
|
|
10
|
+
private readonly minIntervalMs;
|
|
11
|
+
private readonly defaultCooldownMs;
|
|
12
|
+
private readonly maxCooldownMs;
|
|
13
|
+
private readonly clock;
|
|
14
|
+
private nextAllowedAt;
|
|
15
|
+
private cooldownUntil;
|
|
16
|
+
private signals;
|
|
17
|
+
constructor(minIntervalMs?: number, defaultCooldownMs?: number, maxCooldownMs?: number, clock?: () => number);
|
|
18
|
+
preflightDelay(now?: number): number;
|
|
19
|
+
acquire(signal?: AbortSignal): Promise<void>;
|
|
20
|
+
reportRateLimited(retryAfter?: string | null, now?: number): number;
|
|
21
|
+
reportSuccess(): void;
|
|
22
|
+
get cooldownRemainingMs(): number;
|
|
23
|
+
status(now?: number): {
|
|
24
|
+
cooldownUntil: number;
|
|
25
|
+
cooldownRemainingMs: number;
|
|
26
|
+
signals: number;
|
|
27
|
+
};
|
|
28
|
+
private sleep;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=RateLimitCoordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RateLimitCoordinator.d.ts","sourceRoot":"","sources":["../../src/pixiv/RateLimitCoordinator.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAM7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IARxB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,OAAO,CAAK;gBAGD,aAAa,GAAE,MAAY,EAC3B,iBAAiB,GAAE,MAAc,EACjC,aAAa,GAAE,MAAoB,EACnC,KAAK,GAAE,MAAM,MAAyB;IAGzD,cAAc,CAAC,GAAG,GAAE,MAAqB,GAAG,MAAM;IAM5C,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,GAAE,MAAqB,GAAG,MAAM;IAUjF,aAAa,IAAI,IAAI;IAErB,IAAI,mBAAmB,IAAI,MAAM,CAA2D;IAE5F,MAAM,CAAC,GAAG,GAAE,MAAqB;;;;;YAInB,KAAK;CAGpB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RateLimitCoordinator = void 0;
|
|
4
|
+
const promises_1 = require("node:timers/promises");
|
|
5
|
+
/**
|
|
6
|
+
* Process-wide Pixiv rate-limit coordinator.
|
|
7
|
+
*
|
|
8
|
+
* Every Pixiv HTTP request routes through the SAME gate. On a 429 (or an
|
|
9
|
+
* explicit Retry-After) the WHOLE client enters a cooldown: other candidate
|
|
10
|
+
* requests due meanwhile wait at the gate instead of hammering Pixiv in
|
|
11
|
+
* parallel, which is what produced inner*outer retry storms.
|
|
12
|
+
*/
|
|
13
|
+
class RateLimitCoordinator {
|
|
14
|
+
minIntervalMs;
|
|
15
|
+
defaultCooldownMs;
|
|
16
|
+
maxCooldownMs;
|
|
17
|
+
clock;
|
|
18
|
+
nextAllowedAt = 0;
|
|
19
|
+
cooldownUntil = 0;
|
|
20
|
+
signals = 0;
|
|
21
|
+
constructor(minIntervalMs = 500, defaultCooldownMs = 2_000, maxCooldownMs = 10 * 60_000, clock = () => Date.now()) {
|
|
22
|
+
this.minIntervalMs = minIntervalMs;
|
|
23
|
+
this.defaultCooldownMs = defaultCooldownMs;
|
|
24
|
+
this.maxCooldownMs = maxCooldownMs;
|
|
25
|
+
this.clock = clock;
|
|
26
|
+
}
|
|
27
|
+
preflightDelay(now = this.clock()) {
|
|
28
|
+
const dueCooldown = Math.max(0, this.cooldownUntil - now);
|
|
29
|
+
const duePace = Math.max(0, this.nextAllowedAt - now);
|
|
30
|
+
return Math.max(dueCooldown, duePace);
|
|
31
|
+
}
|
|
32
|
+
async acquire(signal) {
|
|
33
|
+
const wait = this.preflightDelay();
|
|
34
|
+
this.nextAllowedAt = this.clock() + Math.max(wait, this.minIntervalMs);
|
|
35
|
+
if (wait > 0)
|
|
36
|
+
await this.sleep(wait, signal);
|
|
37
|
+
}
|
|
38
|
+
reportRateLimited(retryAfter, now = this.clock()) {
|
|
39
|
+
this.signals++;
|
|
40
|
+
const hinted = parseRetryAfter(retryAfter, now);
|
|
41
|
+
const base = hinted ?? Math.min(this.maxCooldownMs, this.defaultCooldownMs * 2 ** Math.min(this.signals - 1, 6));
|
|
42
|
+
const until = now + Math.min(this.maxCooldownMs, Math.max(1000, base));
|
|
43
|
+
this.cooldownUntil = Math.max(this.cooldownUntil, until);
|
|
44
|
+
this.nextAllowedAt = Math.max(this.nextAllowedAt, until);
|
|
45
|
+
return until - now;
|
|
46
|
+
}
|
|
47
|
+
reportSuccess() { this.signals = 0; }
|
|
48
|
+
get cooldownRemainingMs() { return Math.max(0, this.cooldownUntil - this.clock()); }
|
|
49
|
+
status(now = this.clock()) {
|
|
50
|
+
return { cooldownUntil: this.cooldownUntil, cooldownRemainingMs: Math.max(0, this.cooldownUntil - now), signals: this.signals };
|
|
51
|
+
}
|
|
52
|
+
async sleep(ms, signal) {
|
|
53
|
+
await (0, promises_1.setTimeout)(ms, undefined, signal ? { ref: false, signal } : { ref: false });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.RateLimitCoordinator = RateLimitCoordinator;
|
|
57
|
+
function parseRetryAfter(value, now) {
|
|
58
|
+
if (!value)
|
|
59
|
+
return null;
|
|
60
|
+
const seconds = Number(value);
|
|
61
|
+
if (Number.isFinite(seconds))
|
|
62
|
+
return seconds * 1000;
|
|
63
|
+
const date = Date.parse(value);
|
|
64
|
+
return Number.isFinite(date) ? Math.max(0, date - now) : null;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=RateLimitCoordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RateLimitCoordinator.js","sourceRoot":"","sources":["../../src/pixiv/RateLimitCoordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RateLimitCoordinator } from '../RateLimitCoordinator';
|
|
1
2
|
export interface PixivApiCoreOptions {
|
|
2
3
|
baseUrl?: string;
|
|
3
4
|
userAgent?: string;
|
|
@@ -10,6 +11,8 @@ export interface PixivApiCoreOptions {
|
|
|
10
11
|
* If provided, it will be attached as Authorization: Bearer <token>.
|
|
11
12
|
*/
|
|
12
13
|
getAccessToken?: () => Promise<string> | string;
|
|
14
|
+
/** Shared process-wide 429 gate. When provided all requests share one cooldown. */
|
|
15
|
+
rateLimiter?: RateLimitCoordinator;
|
|
13
16
|
}
|
|
14
17
|
export interface PixivApiErrorBody {
|
|
15
18
|
message?: string;
|
|
@@ -29,6 +32,7 @@ export declare class PixivApiCore {
|
|
|
29
32
|
private readonly socksAgent?;
|
|
30
33
|
private readonly useAxiosForProxy;
|
|
31
34
|
private readonly axiosInstance?;
|
|
35
|
+
private readonly rateLimiter?;
|
|
32
36
|
constructor(options?: PixivApiCoreOptions);
|
|
33
37
|
request<T = any>(path: string, init?: RequestInit & {
|
|
34
38
|
skipAuth?: boolean;
|
|
@@ -39,6 +43,7 @@ export declare class PixivApiCore {
|
|
|
39
43
|
}): Promise<ArrayBuffer>;
|
|
40
44
|
calculateRateLimitWaitTime(): number;
|
|
41
45
|
processResponse<T>(response: Response, url: string, attempt: number, responseType?: 'json' | 'text'): Promise<T>;
|
|
46
|
+
private parseRetryAfterHeader;
|
|
42
47
|
private resolveUrl;
|
|
43
48
|
private exponentialBackoffMs;
|
|
44
49
|
private backoffWaitMs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PixivApiCore.d.ts","sourceRoot":"","sources":["../../../src/pixiv/client/PixivApiCore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PixivApiCore.d.ts","sourceRoot":"","sources":["../../../src/pixiv/client/PixivApiCore.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAChD,mFAAmF;IACnF,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAiC;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAuB;gBAExC,OAAO,GAAE,mBAAwB;IAmEvC,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAwHvH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA0I1G,0BAA0B,IAAI,MAAM;IAK9B,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAmDtH,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,aAAa;YASP,WAAW;CAO1B"}
|
|
@@ -23,6 +23,7 @@ class PixivApiCore {
|
|
|
23
23
|
socksAgent;
|
|
24
24
|
useAxiosForProxy;
|
|
25
25
|
axiosInstance;
|
|
26
|
+
rateLimiter;
|
|
26
27
|
constructor(options = {}) {
|
|
27
28
|
this.baseUrl = options.baseUrl ?? 'https://app-api.pixiv.net';
|
|
28
29
|
this.userAgent = options.userAgent;
|
|
@@ -31,6 +32,7 @@ class PixivApiCore {
|
|
|
31
32
|
this.rateLimitPerSecond = options.rateLimitPerSecond;
|
|
32
33
|
this.proxyUrl = options.proxyUrl ? new node_url_1.URL(options.proxyUrl) : undefined;
|
|
33
34
|
this.getAccessToken = options.getAccessToken;
|
|
35
|
+
this.rateLimiter = options.rateLimiter;
|
|
34
36
|
// Determine if we need to use axios for SOCKS proxy
|
|
35
37
|
let useAxios = false;
|
|
36
38
|
if (this.proxyUrl) {
|
|
@@ -111,10 +113,14 @@ class PixivApiCore {
|
|
|
111
113
|
headers.Authorization = `Bearer ${token}`;
|
|
112
114
|
}
|
|
113
115
|
}
|
|
114
|
-
//
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
// Shared global rate-limit gate (429 cooldown + pacing).
|
|
117
|
+
if (this.rateLimiter) {
|
|
118
|
+
await this.rateLimiter.acquire(controller.signal);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
const waitMs = this.calculateRateLimitWaitTime();
|
|
122
|
+
if (waitMs > 0)
|
|
123
|
+
await (0, promises_1.setTimeout)(waitMs);
|
|
118
124
|
}
|
|
119
125
|
let res;
|
|
120
126
|
if (this.useAxiosForProxy && this.axiosInstance) {
|
|
@@ -220,9 +226,13 @@ class PixivApiCore {
|
|
|
220
226
|
headers.Authorization = `Bearer ${token}`;
|
|
221
227
|
}
|
|
222
228
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
229
|
+
if (this.rateLimiter) {
|
|
230
|
+
await this.rateLimiter.acquire(controller.signal);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
const waitMs = this.calculateRateLimitWaitTime();
|
|
234
|
+
if (waitMs > 0)
|
|
235
|
+
await (0, promises_1.setTimeout)(waitMs);
|
|
226
236
|
}
|
|
227
237
|
if (this.useAxiosForProxy && this.axiosInstance) {
|
|
228
238
|
// Use axios for SOCKS proxy
|
|
@@ -341,18 +351,30 @@ class PixivApiCore {
|
|
|
341
351
|
if (response.status === 429) {
|
|
342
352
|
const body = await this.tryReadText(response);
|
|
343
353
|
const retryAfter = response.headers.get('Retry-After');
|
|
344
|
-
const
|
|
345
|
-
|
|
354
|
+
const waitMs = this.rateLimiter
|
|
355
|
+
? this.rateLimiter.reportRateLimited(retryAfter)
|
|
356
|
+
: this.parseRetryAfterHeader(retryAfter) ?? this.exponentialBackoffMs(attempt);
|
|
357
|
+
throw new errors_1.NetworkError(`Pixiv API error: 429 Rate Limit${body ? ` - ${body.slice(0, 120)}` : ''}`, url, undefined, { isRateLimit: true, waitTime: waitMs });
|
|
346
358
|
}
|
|
347
359
|
if (!response.ok) {
|
|
348
360
|
const body = await this.tryReadText(response);
|
|
349
361
|
throw new errors_1.NetworkError(`Pixiv API error: ${response.status} ${response.statusText}${body ? ` - ${body}` : ''}`, url);
|
|
350
362
|
}
|
|
363
|
+
this.rateLimiter?.reportSuccess();
|
|
351
364
|
if (responseType === 'text') {
|
|
352
365
|
return (await response.text());
|
|
353
366
|
}
|
|
354
367
|
return (await response.json());
|
|
355
368
|
}
|
|
369
|
+
parseRetryAfterHeader(value) {
|
|
370
|
+
if (!value)
|
|
371
|
+
return undefined;
|
|
372
|
+
const seconds = Number(value);
|
|
373
|
+
if (Number.isFinite(seconds))
|
|
374
|
+
return seconds * 1000;
|
|
375
|
+
const date = Date.parse(value);
|
|
376
|
+
return Number.isFinite(date) ? Math.max(0, date - Date.now()) : undefined;
|
|
377
|
+
}
|
|
356
378
|
resolveUrl(pathOrUrl) {
|
|
357
379
|
try {
|
|
358
380
|
// If it's already an absolute URL, return as is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PixivApiCore.js","sourceRoot":"","sources":["../../../src/pixiv/client/PixivApiCore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PixivApiCore.js","sourceRoot":"","sources":["../../../src/pixiv/client/PixivApiCore.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,13 @@ export interface TriggerHandlers {
|
|
|
45
45
|
run(scheduleId: string, context: SlotContext): Promise<TriggerRunResult>;
|
|
46
46
|
/** Read-only snapshot of a schedule's current occurrence (for GET). */
|
|
47
47
|
status(scheduleId: string): unknown;
|
|
48
|
+
/** Optional: pump due durable outbox rows (used to converge after cold start). */
|
|
49
|
+
drainOutbox?(): Promise<{
|
|
50
|
+
processed?: number;
|
|
51
|
+
done?: number;
|
|
52
|
+
retried?: number;
|
|
53
|
+
dead?: number;
|
|
54
|
+
}>;
|
|
48
55
|
}
|
|
49
56
|
export declare class ScheduleTriggerServer {
|
|
50
57
|
private readonly token;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduleTriggerServer.d.ts","sourceRoot":"","sources":["../../src/scheduler/ScheduleTriggerServer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACnG;AAED,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,aAAa,IAAI,MAAM,EAAE,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,GACvE;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE,GACxB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,8DAA8D;IAC9D,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzE,uEAAuE;IACvE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ScheduleTriggerServer.d.ts","sourceRoot":"","sources":["../../src/scheduler/ScheduleTriggerServer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACnG;AAED,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,aAAa,IAAI,MAAM,EAAE,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,GACvE;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE,GACxB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,8DAA8D;IAC9D,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzE,uEAAuE;IACvE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,kFAAkF;IAClF,WAAW,CAAC,IAAI,OAAO,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjG;AAED,qBAAa,qBAAqB;IAI9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ3B,OAAO,CAAC,MAAM,CAAuB;gBAGlB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,eAAe;IAG5C,8EAA8E;IAC9E,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI5D,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAwEvC,OAAO,CAAC,IAAI,CAsBV;IAEF,IAAI,IAAI,IAAI;CAIb"}
|
|
@@ -62,6 +62,23 @@ class ScheduleTriggerServer {
|
|
|
62
62
|
res.status(500).json({ status: 'error', error: 'schedule run failed; the occurrence will resume on the next trigger' });
|
|
63
63
|
}
|
|
64
64
|
});
|
|
65
|
+
// Convergence endpoint: after a machine stop/start, an operator or an
|
|
66
|
+
// external watcher can ask the process to flush due deliveries/notifications
|
|
67
|
+
// without running candidate selection. Deployment-agnostic (no platform refs).
|
|
68
|
+
app.post('/internal/outbox/drain', this.auth, async (_req, res) => {
|
|
69
|
+
try {
|
|
70
|
+
if (!this.handlers.drainOutbox) {
|
|
71
|
+
res.status(503).json({ status: 'error', error: 'outbox worker not available in this runtime' });
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const result = await this.handlers.drainOutbox();
|
|
75
|
+
res.json({ status: 'ok', result });
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
logger_1.logger.error('Outbox drain failed', { error: error instanceof Error ? error.message : String(error) });
|
|
79
|
+
res.status(500).json({ status: 'error', error: 'outbox drain failed; rows remain durable and retry' });
|
|
80
|
+
}
|
|
81
|
+
});
|
|
65
82
|
this.server = app.listen(port, host, () => {
|
|
66
83
|
logger_1.logger.info('Schedule trigger server listening', { host, port, auth: this.token ? 'bearer' : 'DISABLED (no token)' });
|
|
67
84
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduleTriggerServer.js","sourceRoot":"","sources":["../../src/scheduler/ScheduleTriggerServer.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8D;AAC9D,6CAA8C;AAG9C,sCAAmC;
|
|
1
|
+
{"version":3,"file":"ScheduleTriggerServer.js","sourceRoot":"","sources":["../../src/scheduler/ScheduleTriggerServer.ts"],"names":[],"mappings":"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"}
|