pixivflow 2.0.38 → 2.0.39
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/commands/DownloadCommand.d.ts.map +1 -1
- package/dist/commands/DownloadCommand.js +50 -2
- package/dist/commands/DownloadCommand.js.map +1 -1
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +11 -3
- package/dist/config/validation.js.map +1 -1
- package/dist/index.js +37 -14
- package/dist/index.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/pixiv/AuthClient.d.ts.map +1 -1
- package/dist/pixiv/AuthClient.js +56 -7
- package/dist/pixiv/AuthClient.js.map +1 -1
- package/dist/storage/Database.d.ts +22 -0
- package/dist/storage/Database.d.ts.map +1 -1
- package/dist/storage/Database.js +19 -0
- package/dist/storage/Database.js.map +1 -1
- package/dist/storage/DatabaseMigration.d.ts.map +1 -1
- package/dist/storage/DatabaseMigration.js +29 -0
- package/dist/storage/DatabaseMigration.js.map +1 -1
- package/dist/storage/repositories/TaskHistoryRepository.d.ts +61 -0
- package/dist/storage/repositories/TaskHistoryRepository.d.ts.map +1 -0
- package/dist/storage/repositories/TaskHistoryRepository.js +171 -0
- package/dist/storage/repositories/TaskHistoryRepository.js.map +1 -0
- package/dist/utils/errors.js +11 -11
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/pixiv-url-parser.d.ts +7 -1
- package/dist/utils/pixiv-url-parser.d.ts.map +1 -1
- package/dist/utils/pixiv-url-parser.js +75 -8
- package/dist/utils/pixiv-url-parser.js.map +1 -1
- package/dist/utils/token-manager.d.ts.map +1 -1
- package/dist/utils/token-manager.js +73 -5
- package/dist/utils/token-manager.js.map +1 -1
- package/dist/webui/package.json +1 -1
- package/dist/webui/routes/download.d.ts.map +1 -1
- package/dist/webui/routes/download.js +2 -0
- package/dist/webui/routes/download.js.map +1 -1
- package/dist/webui/routes/handlers/download-basic-handlers.d.ts +11 -0
- package/dist/webui/routes/handlers/download-basic-handlers.d.ts.map +1 -1
- package/dist/webui/routes/handlers/download-basic-handlers.js +199 -8
- package/dist/webui/routes/handlers/download-basic-handlers.js.map +1 -1
- package/dist/webui/services/DownloadTaskManager.d.ts.map +1 -1
- package/dist/webui/services/DownloadTaskManager.js +75 -3
- package/dist/webui/services/DownloadTaskManager.js.map +1 -1
- package/package.json +1 -1
- package/dist/webui/assets/ActionButton-DWq-fh3_.js +0 -2
- package/dist/webui/assets/ActionButton-DWq-fh3_.js.map +0 -1
- package/dist/webui/assets/CheckCircleOutlined-Can0-7ew.js +0 -2
- package/dist/webui/assets/CheckCircleOutlined-Can0-7ew.js.map +0 -1
- package/dist/webui/assets/CloseCircleOutlined-DfRmL2eG.js +0 -2
- package/dist/webui/assets/CloseCircleOutlined-DfRmL2eG.js.map +0 -1
- package/dist/webui/assets/Config-D9TWUGQR.js +0 -16
- package/dist/webui/assets/Config-D9TWUGQR.js.map +0 -1
- package/dist/webui/assets/Dashboard-CaGAH0y2.js +0 -2
- package/dist/webui/assets/Dashboard-CaGAH0y2.js.map +0 -1
- package/dist/webui/assets/DeleteOutlined-u-P2SpoK.js +0 -2
- package/dist/webui/assets/DeleteOutlined-u-P2SpoK.js.map +0 -1
- package/dist/webui/assets/Download-D9E4xrnM.js +0 -2
- package/dist/webui/assets/Download-D9E4xrnM.js.map +0 -1
- package/dist/webui/assets/Files-CKyc_PdW.js +0 -5
- package/dist/webui/assets/Files-CKyc_PdW.js.map +0 -1
- package/dist/webui/assets/PictureOutlined-C8Lbucj1.js +0 -2
- package/dist/webui/assets/PictureOutlined-C8Lbucj1.js.map +0 -1
- package/dist/webui/assets/SortDescendingOutlined-CR-hdhyW.js +0 -2
- package/dist/webui/assets/SortDescendingOutlined-CR-hdhyW.js.map +0 -1
- package/dist/webui/assets/ThunderboltOutlined-CiiB2de5.js +0 -2
- package/dist/webui/assets/ThunderboltOutlined-CiiB2de5.js.map +0 -1
- package/dist/webui/assets/UrlDownload-ClkUOXN_.js +0 -3
- package/dist/webui/assets/UrlDownload-ClkUOXN_.js.map +0 -1
- package/dist/webui/assets/dateUtils-CBk8bEa_.js +0 -2
- package/dist/webui/assets/dateUtils-CBk8bEa_.js.map +0 -1
- package/dist/webui/assets/errorCodeTranslator-DWsWq6B3.js +0 -3
- package/dist/webui/assets/errorCodeTranslator-DWsWq6B3.js.map +0 -1
- package/dist/webui/assets/index-BFgUdwJv.js +0 -214
- package/dist/webui/assets/index-BFgUdwJv.js.map +0 -1
- package/dist/webui/assets/index-CN3FylAF.js +0 -2
- package/dist/webui/assets/index-CN3FylAF.js.map +0 -1
- package/dist/webui/assets/index-CSoUPZat.js +0 -2
- package/dist/webui/assets/index-CSoUPZat.js.map +0 -1
- package/dist/webui/assets/index-CiHwNwrk.js +0 -19
- package/dist/webui/assets/index-CiHwNwrk.js.map +0 -1
- package/dist/webui/assets/index-DHwJxrFi.css +0 -1
- package/dist/webui/assets/index-DTU-FGA4.js +0 -2
- package/dist/webui/assets/index-DTU-FGA4.js.map +0 -1
- package/dist/webui/assets/index-DjpD0HQ5.js +0 -2
- package/dist/webui/assets/index-DjpD0HQ5.js.map +0 -1
- package/dist/webui/assets/index-Dycn6xoz.js +0 -2
- package/dist/webui/assets/index-Dycn6xoz.js.map +0 -1
- package/dist/webui/assets/index-G0EJCamt.js +0 -22
- package/dist/webui/assets/index-G0EJCamt.js.map +0 -1
- package/dist/webui/assets/index-WaraZQH0.js +0 -2
- package/dist/webui/assets/index-WaraZQH0.js.map +0 -1
- package/dist/webui/assets/index-k2rGFxEM.js +0 -8
- package/dist/webui/assets/index-k2rGFxEM.js.map +0 -1
- package/dist/webui/assets/index-lwTtspUb.js +0 -14
- package/dist/webui/assets/index-lwTtspUb.js.map +0 -1
- package/dist/webui/assets/index-pT0W4KjK.js +0 -47
- package/dist/webui/assets/index-pT0W4KjK.js.map +0 -1
- package/dist/webui/assets/index-wvielV9A.js +0 -2
- package/dist/webui/assets/index-wvielV9A.js.map +0 -1
- package/dist/webui/assets/row-FRqVdQDX.js +0 -20
- package/dist/webui/assets/row-FRqVdQDX.js.map +0 -1
- package/dist/webui/assets/useAuth-BMt6dHSB.js +0 -9
- package/dist/webui/assets/useAuth-BMt6dHSB.js.map +0 -1
- package/dist/webui/assets/useConfig-29Ugtjk4.js +0 -9
- package/dist/webui/assets/useConfig-29Ugtjk4.js.map +0 -1
- package/dist/webui/assets/useDownload-Dt6lsP8S.js +0 -2
- package/dist/webui/assets/useDownload-Dt6lsP8S.js.map +0 -1
- package/dist/webui/assets/useErrorHandler-DWHs3RlU.js +0 -84
- package/dist/webui/assets/useErrorHandler-DWHs3RlU.js.map +0 -1
- package/dist/webui/index.html +0 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseMigration.d.ts","sourceRoot":"","sources":["../../src/storage/DatabaseMigration.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,gBAAgB,CAAC;AAI5C;;GAEG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc,CAAC,QAAQ;IAExD;;OAEG;IACI,OAAO,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"DatabaseMigration.d.ts","sourceRoot":"","sources":["../../src/storage/DatabaseMigration.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,gBAAgB,CAAC;AAI5C;;GAEG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc,CAAC,QAAQ;IAExD;;OAEG;IACI,OAAO,IAAI,IAAI;CAuHvB"}
|
|
@@ -60,6 +60,20 @@ class DatabaseMigration {
|
|
|
60
60
|
config_json TEXT NOT NULL,
|
|
61
61
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
62
62
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
63
|
+
)`,
|
|
64
|
+
`CREATE TABLE IF NOT EXISTS task_history (
|
|
65
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
66
|
+
task_id TEXT NOT NULL UNIQUE,
|
|
67
|
+
status TEXT NOT NULL,
|
|
68
|
+
start_time DATETIME NOT NULL,
|
|
69
|
+
end_time DATETIME,
|
|
70
|
+
error TEXT,
|
|
71
|
+
target_id TEXT,
|
|
72
|
+
progress_current INTEGER,
|
|
73
|
+
progress_total INTEGER,
|
|
74
|
+
progress_message TEXT,
|
|
75
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
76
|
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
63
77
|
)`,
|
|
64
78
|
];
|
|
65
79
|
// Create indexes for better query performance
|
|
@@ -71,6 +85,9 @@ class DatabaseMigration {
|
|
|
71
85
|
`CREATE INDEX IF NOT EXISTS idx_scheduler_executions_number ON scheduler_executions(execution_number)`,
|
|
72
86
|
`CREATE INDEX IF NOT EXISTS idx_scheduler_executions_status ON scheduler_executions(status)`,
|
|
73
87
|
`CREATE INDEX IF NOT EXISTS idx_config_history_created_at ON config_history(created_at)`,
|
|
88
|
+
`CREATE INDEX IF NOT EXISTS idx_task_history_task_id ON task_history(task_id)`,
|
|
89
|
+
`CREATE INDEX IF NOT EXISTS idx_task_history_status ON task_history(status)`,
|
|
90
|
+
`CREATE INDEX IF NOT EXISTS idx_task_history_start_time ON task_history(start_time)`,
|
|
74
91
|
];
|
|
75
92
|
const transaction = this.db.transaction((stmts) => {
|
|
76
93
|
for (const sql of stmts) {
|
|
@@ -93,6 +110,18 @@ class DatabaseMigration {
|
|
|
93
110
|
// In SQLite, if column exists, ALTER TABLE will fail, which is fine
|
|
94
111
|
logger_1.logger.warn('Failed to add is_active column (may already exist)', { error });
|
|
95
112
|
}
|
|
113
|
+
// Add task_history table if it doesn't exist (for backward compatibility)
|
|
114
|
+
try {
|
|
115
|
+
const tableInfo = this.db.prepare(`PRAGMA table_info(task_history)`).all();
|
|
116
|
+
if (tableInfo.length === 0) {
|
|
117
|
+
// Table doesn't exist, but it should have been created by migrations above
|
|
118
|
+
// This is just a safety check
|
|
119
|
+
logger_1.logger.debug('task_history table will be created by migrations');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
logger_1.logger.warn('Failed to check task_history table (may already exist)', { error });
|
|
124
|
+
}
|
|
96
125
|
}
|
|
97
126
|
catch (error) {
|
|
98
127
|
throw new errors_1.DatabaseError('Failed to run database migrations', error instanceof Error ? error : undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseMigration.js","sourceRoot":"","sources":["../../src/storage/DatabaseMigration.ts"],"names":[],"mappings":";;;AACA,4CAAgD;AAChD,sCAAmC;AAEnC;;GAEG;AACH,MAAa,iBAAiB;IACC;IAA7B,YAA6B,EAA2B;QAA3B,OAAE,GAAF,EAAE,CAAyB;IAAG,CAAC;IAE5D;;OAEG;IACI,OAAO;QACZ,IAAI,CAAC;YACH,MAAM,UAAU,GAAG;gBACjB;;;;YAII;gBACJ;;;;;;;;;;;YAWI;gBACJ;;;;;;;YAOI;gBACJ;;;;;;;;;;YAUI;gBACJ;;;;;;;YAOI;aACL,CAAC;YAEF,8CAA8C;YAC9C,MAAM,OAAO,GAAG;gBACd,qFAAqF;gBACrF,gEAAgE;gBAChE,oFAAoF;gBACpF,mFAAmF;gBACnF,sGAAsG;gBACtG,4FAA4F;gBAC5F,wFAAwF;
|
|
1
|
+
{"version":3,"file":"DatabaseMigration.js","sourceRoot":"","sources":["../../src/storage/DatabaseMigration.ts"],"names":[],"mappings":";;;AACA,4CAAgD;AAChD,sCAAmC;AAEnC;;GAEG;AACH,MAAa,iBAAiB;IACC;IAA7B,YAA6B,EAA2B;QAA3B,OAAE,GAAF,EAAE,CAAyB;IAAG,CAAC;IAE5D;;OAEG;IACI,OAAO;QACZ,IAAI,CAAC;YACH,MAAM,UAAU,GAAG;gBACjB;;;;YAII;gBACJ;;;;;;;;;;;YAWI;gBACJ;;;;;;;YAOI;gBACJ;;;;;;;;;;YAUI;gBACJ;;;;;;;YAOI;gBACJ;;;;;;;;;;;;;YAaI;aACL,CAAC;YAEF,8CAA8C;YAC9C,MAAM,OAAO,GAAG;gBACd,qFAAqF;gBACrF,gEAAgE;gBAChE,oFAAoF;gBACpF,mFAAmF;gBACnF,sGAAsG;gBACtG,4FAA4F;gBAC5F,wFAAwF;gBACxF,8EAA8E;gBAC9E,4EAA4E;gBAC5E,oFAAoF;aACrF,CAAC;YAEF,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,KAAe,EAAE,EAAE;gBAC1D,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;oBACxB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;YAEzC,6DAA6D;YAC7D,IAAI,CAAC;gBACH,uDAAuD;gBACvD,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EAA6B,CAAC;gBACxG,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;gBAE1E,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACvB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC,GAAG,EAAE,CAAC;oBAC3F,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sFAAsF,CAAC,CAAC,GAAG,EAAE,CAAC;gBAChH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,2CAA2C;gBAC3C,oEAAoE;gBACpE,eAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/E,CAAC;YAED,0EAA0E;YAC1E,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,GAAG,EAA6B,CAAC;gBACtG,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,2EAA2E;oBAC3E,8BAA8B;oBAC9B,eAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,IAAI,CAAC,wDAAwD,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,sBAAa,CACrB,mCAAmC,EACnC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AA7HD,8CA6HC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { BaseRepository } from './BaseRepository';
|
|
2
|
+
export interface TaskHistoryRecord {
|
|
3
|
+
id: number;
|
|
4
|
+
taskId: string;
|
|
5
|
+
status: 'running' | 'completed' | 'failed' | 'stopped';
|
|
6
|
+
startTime: string;
|
|
7
|
+
endTime: string | null;
|
|
8
|
+
error: string | null;
|
|
9
|
+
targetId: string | null;
|
|
10
|
+
progressCurrent: number | null;
|
|
11
|
+
progressTotal: number | null;
|
|
12
|
+
progressMessage: string | null;
|
|
13
|
+
createdAt: string;
|
|
14
|
+
updatedAt: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Repository for managing task history
|
|
18
|
+
*/
|
|
19
|
+
export declare class TaskHistoryRepository extends BaseRepository {
|
|
20
|
+
/**
|
|
21
|
+
* Save or update a task history record
|
|
22
|
+
*/
|
|
23
|
+
saveTaskHistory(taskId: string, data: {
|
|
24
|
+
status: 'running' | 'completed' | 'failed' | 'stopped';
|
|
25
|
+
startTime: Date;
|
|
26
|
+
endTime?: Date;
|
|
27
|
+
error?: string;
|
|
28
|
+
targetId?: string;
|
|
29
|
+
progressCurrent?: number;
|
|
30
|
+
progressTotal?: number;
|
|
31
|
+
progressMessage?: string;
|
|
32
|
+
}): void;
|
|
33
|
+
/**
|
|
34
|
+
* Get task history by task ID
|
|
35
|
+
*/
|
|
36
|
+
getTaskHistory(taskId: string): TaskHistoryRecord | null;
|
|
37
|
+
/**
|
|
38
|
+
* Get all task history records, sorted by start time (newest first)
|
|
39
|
+
*/
|
|
40
|
+
getAllTaskHistory(limit?: number): TaskHistoryRecord[];
|
|
41
|
+
/**
|
|
42
|
+
* Delete a task history record by task ID
|
|
43
|
+
*/
|
|
44
|
+
deleteTaskHistory(taskId: string): {
|
|
45
|
+
success: boolean;
|
|
46
|
+
message?: string;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Delete all task history records
|
|
50
|
+
*/
|
|
51
|
+
deleteAllTaskHistory(): {
|
|
52
|
+
success: boolean;
|
|
53
|
+
deletedCount: number;
|
|
54
|
+
message?: string;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Delete old task history records (keep only the most recent N records)
|
|
58
|
+
*/
|
|
59
|
+
cleanupOldTaskHistory(keepCount?: number): number;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=TaskHistoryRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskHistoryRepository.d.ts","sourceRoot":"","sources":["../../../src/storage/repositories/TaskHistoryRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;IACvD;;OAEG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;QAC3C,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;QACvD,SAAS,EAAE,IAAI,CAAC;QAChB,OAAO,CAAC,EAAE,IAAI,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,IAAI;IAsCR;;OAEG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IA+B/D;;OAEG;IACI,iBAAiB,CAAC,KAAK,GAAE,MAAY,GAAG,iBAAiB,EAAE;IA6BlE;;OAEG;IACI,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAoBhF;;OAEG;IACI,oBAAoB,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAwB3F;;OAEG;IACI,qBAAqB,CAAC,SAAS,GAAE,MAAY,GAAG,MAAM;CAiB9D"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TaskHistoryRepository = void 0;
|
|
4
|
+
const BaseRepository_1 = require("./BaseRepository");
|
|
5
|
+
const logger_1 = require("../../logger");
|
|
6
|
+
/**
|
|
7
|
+
* Repository for managing task history
|
|
8
|
+
*/
|
|
9
|
+
class TaskHistoryRepository extends BaseRepository_1.BaseRepository {
|
|
10
|
+
/**
|
|
11
|
+
* Save or update a task history record
|
|
12
|
+
*/
|
|
13
|
+
saveTaskHistory(taskId, data) {
|
|
14
|
+
try {
|
|
15
|
+
const stmt = this.db.prepare(`INSERT INTO task_history (
|
|
16
|
+
task_id, status, start_time, end_time, error, target_id,
|
|
17
|
+
progress_current, progress_total, progress_message, updated_at
|
|
18
|
+
) VALUES (
|
|
19
|
+
@taskId, @status, @startTime, @endTime, @error, @targetId,
|
|
20
|
+
@progressCurrent, @progressTotal, @progressMessage, CURRENT_TIMESTAMP
|
|
21
|
+
)
|
|
22
|
+
ON CONFLICT(task_id) DO UPDATE SET
|
|
23
|
+
status = @status,
|
|
24
|
+
end_time = @endTime,
|
|
25
|
+
error = @error,
|
|
26
|
+
target_id = @targetId,
|
|
27
|
+
progress_current = @progressCurrent,
|
|
28
|
+
progress_total = @progressTotal,
|
|
29
|
+
progress_message = @progressMessage,
|
|
30
|
+
updated_at = CURRENT_TIMESTAMP`);
|
|
31
|
+
stmt.run({
|
|
32
|
+
taskId,
|
|
33
|
+
status: data.status,
|
|
34
|
+
startTime: data.startTime.toISOString(),
|
|
35
|
+
endTime: data.endTime?.toISOString() || null,
|
|
36
|
+
error: data.error || null,
|
|
37
|
+
targetId: data.targetId || null,
|
|
38
|
+
progressCurrent: data.progressCurrent ?? null,
|
|
39
|
+
progressTotal: data.progressTotal ?? null,
|
|
40
|
+
progressMessage: data.progressMessage || null,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
logger_1.logger.error('Failed to save task history', { taskId, error });
|
|
45
|
+
// Don't throw - task history is not critical
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get task history by task ID
|
|
50
|
+
*/
|
|
51
|
+
getTaskHistory(taskId) {
|
|
52
|
+
try {
|
|
53
|
+
const stmt = this.db.prepare(`SELECT * FROM task_history WHERE task_id = ?`);
|
|
54
|
+
const row = stmt.get(taskId);
|
|
55
|
+
if (!row) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
id: row.id,
|
|
60
|
+
taskId: row.task_id,
|
|
61
|
+
status: row.status,
|
|
62
|
+
startTime: row.start_time,
|
|
63
|
+
endTime: row.end_time,
|
|
64
|
+
error: row.error,
|
|
65
|
+
targetId: row.target_id,
|
|
66
|
+
progressCurrent: row.progress_current,
|
|
67
|
+
progressTotal: row.progress_total,
|
|
68
|
+
progressMessage: row.progress_message,
|
|
69
|
+
createdAt: row.created_at,
|
|
70
|
+
updatedAt: row.updated_at,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
logger_1.logger.error('Failed to get task history', { taskId, error });
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get all task history records, sorted by start time (newest first)
|
|
80
|
+
*/
|
|
81
|
+
getAllTaskHistory(limit = 100) {
|
|
82
|
+
try {
|
|
83
|
+
const stmt = this.db.prepare(`SELECT * FROM task_history
|
|
84
|
+
ORDER BY start_time DESC
|
|
85
|
+
LIMIT ?`);
|
|
86
|
+
const rows = stmt.all(limit);
|
|
87
|
+
return rows.map(row => ({
|
|
88
|
+
id: row.id,
|
|
89
|
+
taskId: row.task_id,
|
|
90
|
+
status: row.status,
|
|
91
|
+
startTime: row.start_time,
|
|
92
|
+
endTime: row.end_time,
|
|
93
|
+
error: row.error,
|
|
94
|
+
targetId: row.target_id,
|
|
95
|
+
progressCurrent: row.progress_current,
|
|
96
|
+
progressTotal: row.progress_total,
|
|
97
|
+
progressMessage: row.progress_message,
|
|
98
|
+
createdAt: row.created_at,
|
|
99
|
+
updatedAt: row.updated_at,
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
logger_1.logger.error('Failed to get all task history', { error });
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Delete a task history record by task ID
|
|
109
|
+
*/
|
|
110
|
+
deleteTaskHistory(taskId) {
|
|
111
|
+
try {
|
|
112
|
+
const stmt = this.db.prepare(`DELETE FROM task_history WHERE task_id = ?`);
|
|
113
|
+
const result = stmt.run(taskId);
|
|
114
|
+
if (result.changes === 0) {
|
|
115
|
+
return { success: false, message: `Task history not found: ${taskId}` };
|
|
116
|
+
}
|
|
117
|
+
logger_1.logger.info('Successfully deleted task history', { taskId });
|
|
118
|
+
return { success: true };
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
122
|
+
logger_1.logger.error('Failed to delete task history', { taskId, error: errorMessage });
|
|
123
|
+
return { success: false, message: errorMessage };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Delete all task history records
|
|
128
|
+
*/
|
|
129
|
+
deleteAllTaskHistory() {
|
|
130
|
+
try {
|
|
131
|
+
// First get count
|
|
132
|
+
const countStmt = this.db.prepare(`SELECT COUNT(*) as count FROM task_history`);
|
|
133
|
+
const countResult = countStmt.get();
|
|
134
|
+
const count = countResult.count;
|
|
135
|
+
if (count === 0) {
|
|
136
|
+
return { success: true, deletedCount: 0 };
|
|
137
|
+
}
|
|
138
|
+
// Delete all records
|
|
139
|
+
const stmt = this.db.prepare(`DELETE FROM task_history`);
|
|
140
|
+
const result = stmt.run();
|
|
141
|
+
logger_1.logger.info('Successfully deleted all task history', { deletedCount: result.changes });
|
|
142
|
+
return { success: true, deletedCount: result.changes };
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
146
|
+
logger_1.logger.error('Failed to delete all task history', { error: errorMessage });
|
|
147
|
+
return { success: false, deletedCount: 0, message: errorMessage };
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Delete old task history records (keep only the most recent N records)
|
|
152
|
+
*/
|
|
153
|
+
cleanupOldTaskHistory(keepCount = 100) {
|
|
154
|
+
try {
|
|
155
|
+
const stmt = this.db.prepare(`DELETE FROM task_history
|
|
156
|
+
WHERE id NOT IN (
|
|
157
|
+
SELECT id FROM task_history
|
|
158
|
+
ORDER BY start_time DESC
|
|
159
|
+
LIMIT ?
|
|
160
|
+
)`);
|
|
161
|
+
const result = stmt.run(keepCount);
|
|
162
|
+
return result.changes;
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
logger_1.logger.error('Failed to cleanup old task history', { error });
|
|
166
|
+
return 0;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
exports.TaskHistoryRepository = TaskHistoryRepository;
|
|
171
|
+
//# sourceMappingURL=TaskHistoryRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskHistoryRepository.js","sourceRoot":"","sources":["../../../src/storage/repositories/TaskHistoryRepository.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/errors.js
CHANGED
|
@@ -137,27 +137,27 @@ function getDetailedErrorInfo(error) {
|
|
|
137
137
|
// Add suggestions based on error message
|
|
138
138
|
const msgLower = message.toLowerCase();
|
|
139
139
|
if (msgLower.includes('401') || msgLower.includes('unauthorized')) {
|
|
140
|
-
suggestions.push('
|
|
141
|
-
suggestions.push('
|
|
140
|
+
suggestions.push('Authentication failed: Your refresh token may be invalid or expired');
|
|
141
|
+
suggestions.push('Run "pixivflow login" or "pixivflow login-headless" to get a new token');
|
|
142
142
|
}
|
|
143
143
|
else if (msgLower.includes('403') || msgLower.includes('forbidden')) {
|
|
144
|
-
suggestions.push('
|
|
145
|
-
suggestions.push('
|
|
144
|
+
suggestions.push('Access denied: This may be a Pixiv API restriction');
|
|
145
|
+
suggestions.push('Wait for a while and try again, or check your account status');
|
|
146
146
|
}
|
|
147
147
|
else if (msgLower.includes('timeout') || msgLower.includes('timed out')) {
|
|
148
|
-
suggestions.push('
|
|
149
|
-
suggestions.push('
|
|
148
|
+
suggestions.push('Request timeout: Check your network connection');
|
|
149
|
+
suggestions.push('Try increasing network timeout or using a proxy');
|
|
150
150
|
}
|
|
151
151
|
else if (msgLower.includes('failed after')) {
|
|
152
|
-
suggestions.push('
|
|
153
|
-
suggestions.push('
|
|
154
|
-
suggestions.push('
|
|
152
|
+
suggestions.push('Failed after multiple retries: Network may be unstable or API is rate-limiting');
|
|
153
|
+
suggestions.push('Check network connection and proxy settings');
|
|
154
|
+
suggestions.push('Wait for a while and try again');
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
else if (error instanceof AuthenticationError) {
|
|
158
158
|
type = 'AUTH_ERROR';
|
|
159
|
-
suggestions.push('
|
|
160
|
-
suggestions.push('
|
|
159
|
+
suggestions.push('Authentication error: Your refresh token is invalid or expired');
|
|
160
|
+
suggestions.push('Run "pixivflow login" or "pixivflow login-headless" to authenticate');
|
|
161
161
|
}
|
|
162
162
|
return { message, type, cause, suggestions: suggestions.length > 0 ? suggestions : undefined };
|
|
163
163
|
}
|
package/dist/utils/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,12 +13,18 @@ export interface ParsedPixivUrl {
|
|
|
13
13
|
*
|
|
14
14
|
* Supported URL formats:
|
|
15
15
|
* - https://www.pixiv.net/artworks/{illustId}
|
|
16
|
+
* - https://www.pixiv.net/en/artworks/{illustId} (with language code)
|
|
17
|
+
* - https://www.pixiv.net/member_illust.php?mode=medium&illust_id={illustId} (legacy)
|
|
18
|
+
* - https://www.pixiv.net/i/{illustId} (short format)
|
|
16
19
|
* - https://www.pixiv.net/novel/show.php?id={novelId}
|
|
17
20
|
* - https://www.pixiv.net/novel/series/{seriesId}
|
|
18
21
|
* - https://www.pixiv.net/users/{userId}
|
|
22
|
+
* - https://www.pixiv.net/users/{userId}/artworks/{illustId}
|
|
23
|
+
* - https://www.pixiv.net/users/{userId}/novels/{novelId}
|
|
19
24
|
* - https://pixiv.net/artworks/{illustId} (without www)
|
|
25
|
+
* - Direct ID: {id} (treated as illustration)
|
|
20
26
|
*
|
|
21
|
-
* @param url Pixiv URL
|
|
27
|
+
* @param url Pixiv URL or direct ID
|
|
22
28
|
* @returns Parsed URL information or null if URL is invalid
|
|
23
29
|
*/
|
|
24
30
|
export declare function parsePixivUrl(url: string): ParsedPixivUrl | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pixiv-url-parser.d.ts","sourceRoot":"","sources":["../../src/utils/pixiv-url-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;IAC/D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED
|
|
1
|
+
{"version":3,"file":"pixiv-url-parser.d.ts","sourceRoot":"","sources":["../../src/utils/pixiv-url-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;IAC/D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAmJhE;AAuED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,cAAc,EACtB,YAAY,CAAC,EAAE,cAAc,GAAG,OAAO,GACtC;IAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CA+C3H"}
|
|
@@ -11,12 +11,18 @@ exports.parsedUrlToTargetConfig = parsedUrlToTargetConfig;
|
|
|
11
11
|
*
|
|
12
12
|
* Supported URL formats:
|
|
13
13
|
* - https://www.pixiv.net/artworks/{illustId}
|
|
14
|
+
* - https://www.pixiv.net/en/artworks/{illustId} (with language code)
|
|
15
|
+
* - https://www.pixiv.net/member_illust.php?mode=medium&illust_id={illustId} (legacy)
|
|
16
|
+
* - https://www.pixiv.net/i/{illustId} (short format)
|
|
14
17
|
* - https://www.pixiv.net/novel/show.php?id={novelId}
|
|
15
18
|
* - https://www.pixiv.net/novel/series/{seriesId}
|
|
16
19
|
* - https://www.pixiv.net/users/{userId}
|
|
20
|
+
* - https://www.pixiv.net/users/{userId}/artworks/{illustId}
|
|
21
|
+
* - https://www.pixiv.net/users/{userId}/novels/{novelId}
|
|
17
22
|
* - https://pixiv.net/artworks/{illustId} (without www)
|
|
23
|
+
* - Direct ID: {id} (treated as illustration)
|
|
18
24
|
*
|
|
19
|
-
* @param url Pixiv URL
|
|
25
|
+
* @param url Pixiv URL or direct ID
|
|
20
26
|
* @returns Parsed URL information or null if URL is invalid
|
|
21
27
|
*/
|
|
22
28
|
function parsePixivUrl(url) {
|
|
@@ -26,23 +32,40 @@ function parsePixivUrl(url) {
|
|
|
26
32
|
try {
|
|
27
33
|
// Normalize URL: remove trailing slashes and whitespace
|
|
28
34
|
const normalizedUrl = url.trim().replace(/\/+$/, '');
|
|
35
|
+
// Check if it's just a numeric ID (treat as illustration)
|
|
36
|
+
if (/^\d+$/.test(normalizedUrl)) {
|
|
37
|
+
const id = parseInt(normalizedUrl, 10);
|
|
38
|
+
if (!isNaN(id)) {
|
|
39
|
+
return {
|
|
40
|
+
type: 'illustration',
|
|
41
|
+
id: id,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
29
45
|
// Try to parse as URL
|
|
30
46
|
let urlObj;
|
|
31
47
|
try {
|
|
32
48
|
urlObj = new URL(normalizedUrl);
|
|
33
49
|
}
|
|
34
50
|
catch {
|
|
35
|
-
//
|
|
36
|
-
|
|
51
|
+
// Try adding https:// prefix
|
|
52
|
+
try {
|
|
53
|
+
urlObj = new URL(`https://${normalizedUrl}`);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// If still fails, try to extract ID from string directly
|
|
57
|
+
return parseIdFromString(normalizedUrl);
|
|
58
|
+
}
|
|
37
59
|
}
|
|
38
60
|
const hostname = urlObj.hostname.toLowerCase();
|
|
39
61
|
const pathname = urlObj.pathname;
|
|
40
|
-
|
|
41
|
-
if (
|
|
62
|
+
const searchParams = urlObj.searchParams;
|
|
63
|
+
// Check if it's a Pixiv domain (support pixiv.net and pixiv.org)
|
|
64
|
+
if (!hostname.includes('pixiv.net') && !hostname.includes('pixiv.org')) {
|
|
42
65
|
return null;
|
|
43
66
|
}
|
|
44
|
-
// Parse illustration URL: /artworks/{id}
|
|
45
|
-
const illustMatch = pathname.match(
|
|
67
|
+
// Parse illustration URL: /artworks/{id} or /en/artworks/{id} or /zh-cn/artworks/{id}
|
|
68
|
+
const illustMatch = pathname.match(/\/artworks\/(\d+)/);
|
|
46
69
|
if (illustMatch) {
|
|
47
70
|
const illustId = parseInt(illustMatch[1], 10);
|
|
48
71
|
if (!isNaN(illustId)) {
|
|
@@ -52,6 +75,28 @@ function parsePixivUrl(url) {
|
|
|
52
75
|
};
|
|
53
76
|
}
|
|
54
77
|
}
|
|
78
|
+
// Parse short illustration URL: /i/{id}
|
|
79
|
+
const shortIllustMatch = pathname.match(/^\/i\/(\d+)$/);
|
|
80
|
+
if (shortIllustMatch) {
|
|
81
|
+
const illustId = parseInt(shortIllustMatch[1], 10);
|
|
82
|
+
if (!isNaN(illustId)) {
|
|
83
|
+
return {
|
|
84
|
+
type: 'illustration',
|
|
85
|
+
id: illustId,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Parse legacy illustration URL: /member_illust.php?illust_id={id}
|
|
90
|
+
const illustIdParam = searchParams.get('illust_id');
|
|
91
|
+
if (illustIdParam) {
|
|
92
|
+
const illustId = parseInt(illustIdParam, 10);
|
|
93
|
+
if (!isNaN(illustId)) {
|
|
94
|
+
return {
|
|
95
|
+
type: 'illustration',
|
|
96
|
+
id: illustId,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
55
100
|
// Parse novel URL: /novel/show.php?id={id}
|
|
56
101
|
const novelMatch = pathname.match(/^\/novel\/show\.php$/);
|
|
57
102
|
if (novelMatch) {
|
|
@@ -77,7 +122,29 @@ function parsePixivUrl(url) {
|
|
|
77
122
|
};
|
|
78
123
|
}
|
|
79
124
|
}
|
|
80
|
-
// Parse user URL: /users/{userId}
|
|
125
|
+
// Parse user's artwork URL: /users/{userId}/artworks/{illustId}
|
|
126
|
+
const userArtworkMatch = pathname.match(/\/users\/(\d+)\/artworks\/(\d+)/);
|
|
127
|
+
if (userArtworkMatch) {
|
|
128
|
+
const illustId = parseInt(userArtworkMatch[2], 10);
|
|
129
|
+
if (!isNaN(illustId)) {
|
|
130
|
+
return {
|
|
131
|
+
type: 'illustration',
|
|
132
|
+
id: illustId,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Parse user's novel URL: /users/{userId}/novels/{novelId}
|
|
137
|
+
const userNovelMatch = pathname.match(/\/users\/(\d+)\/novels\/(\d+)/);
|
|
138
|
+
if (userNovelMatch) {
|
|
139
|
+
const novelId = parseInt(userNovelMatch[2], 10);
|
|
140
|
+
if (!isNaN(novelId)) {
|
|
141
|
+
return {
|
|
142
|
+
type: 'novel',
|
|
143
|
+
id: novelId,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// Parse user URL: /users/{userId} (only user profile, no specific work)
|
|
81
148
|
const userMatch = pathname.match(/^\/users\/(\d+)$/);
|
|
82
149
|
if (userMatch) {
|
|
83
150
|
const userId = userMatch[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pixiv-url-parser.js","sourceRoot":"","sources":["../../src/utils/pixiv-url-parser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"pixiv-url-parser.js","sourceRoot":"","sources":["../../src/utils/pixiv-url-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../src/utils/token-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../src/utils/token-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiCH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAK5E;AA0DD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAwCpF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2BzE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAqBjE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQlH"}
|