pixivflow 2.0.37 → 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 +14 -8
- 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/config-validator-unified.d.ts.map +1 -1
- package/dist/utils/config-validator-unified.js +3 -9
- package/dist/utils/config-validator-unified.js.map +1 -1
- 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/utils/type-guards.d.ts.map +1 -1
- package/dist/utils/type-guards.js +6 -2
- package/dist/utils/type-guards.js.map +1 -1
- package/dist/webui/package.json +1 -1
- package/dist/webui/ports.js +1 -1
- package/dist/webui/routes/download.d.ts.map +1 -1
- package/dist/webui/routes/download.js +7 -0
- package/dist/webui/routes/download.js.map +1 -1
- package/dist/webui/routes/handlers/auth/auth-status-handler.d.ts.map +1 -1
- package/dist/webui/routes/handlers/auth/auth-status-handler.js +11 -3
- package/dist/webui/routes/handlers/auth/auth-status-handler.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 +204 -7
- package/dist/webui/routes/handlers/download-basic-handlers.js.map +1 -1
- package/dist/webui/routes/handlers/download-url-handlers.d.ts +20 -0
- package/dist/webui/routes/handlers/download-url-handlers.d.ts.map +1 -0
- package/dist/webui/routes/handlers/download-url-handlers.js +288 -0
- package/dist/webui/routes/handlers/download-url-handlers.js.map +1 -0
- 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/dist/webui/utils/config-validator.js +4 -5
- package/dist/webui/utils/config-validator.js.map +1 -1
- package/dist/webui/utils/error-codes.d.ts +2 -1
- package/dist/webui/utils/error-codes.d.ts.map +1 -1
- package/dist/webui/utils/error-codes.js +2 -0
- package/dist/webui/utils/error-codes.js.map +1 -1
- package/package.json +5 -5
|
@@ -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"}
|
|
@@ -16,6 +16,7 @@ const node_fs_1 = require("node:fs");
|
|
|
16
16
|
const node_path_1 = require("node:path");
|
|
17
17
|
const logger_1 = require("../logger");
|
|
18
18
|
const TOKEN_FILE_NAME = '.pixiv-refresh-token';
|
|
19
|
+
const TOKEN_BACKUP_FILE_NAME = '.pixiv-refresh-token.backup';
|
|
19
20
|
const PLACEHOLDER_TOKEN = 'YOUR_REFRESH_TOKEN';
|
|
20
21
|
/**
|
|
21
22
|
* Get the token storage directory based on database path
|
|
@@ -46,6 +47,55 @@ function isPlaceholderToken(token) {
|
|
|
46
47
|
}
|
|
47
48
|
return token.trim() === '' || token === PLACEHOLDER_TOKEN || token.length < 10;
|
|
48
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Create a backup of the current token file
|
|
52
|
+
* @param databasePath Optional database path to determine storage location
|
|
53
|
+
*/
|
|
54
|
+
function backupToken(databasePath) {
|
|
55
|
+
try {
|
|
56
|
+
const tokenPath = getTokenFilePath(databasePath);
|
|
57
|
+
if (!(0, node_fs_1.existsSync)(tokenPath)) {
|
|
58
|
+
return; // No token to backup
|
|
59
|
+
}
|
|
60
|
+
const backupPath = (0, node_path_1.join)((0, node_path_1.dirname)(tokenPath), TOKEN_BACKUP_FILE_NAME);
|
|
61
|
+
(0, node_fs_1.copyFileSync)(tokenPath, backupPath);
|
|
62
|
+
logger_1.logger.debug('Token backup created', { backupPath });
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
logger_1.logger.warn('Failed to create token backup', {
|
|
66
|
+
error: error instanceof Error ? error.message : String(error),
|
|
67
|
+
});
|
|
68
|
+
// Don't throw - backup is optional
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Restore token from backup if main token file is missing or corrupted
|
|
73
|
+
* @param databasePath Optional database path to determine storage location
|
|
74
|
+
* @returns The restored token, or null if restoration failed
|
|
75
|
+
*/
|
|
76
|
+
function restoreTokenFromBackup(databasePath) {
|
|
77
|
+
try {
|
|
78
|
+
const backupPath = (0, node_path_1.join)(getTokenStorageDir(databasePath), TOKEN_BACKUP_FILE_NAME);
|
|
79
|
+
if (!(0, node_fs_1.existsSync)(backupPath)) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
const token = (0, node_fs_1.readFileSync)(backupPath, 'utf-8').trim();
|
|
83
|
+
if (isPlaceholderToken(token)) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
logger_1.logger.info('Token restored from backup', { backupPath });
|
|
87
|
+
// Restore the main token file
|
|
88
|
+
const tokenPath = getTokenFilePath(databasePath);
|
|
89
|
+
(0, node_fs_1.writeFileSync)(tokenPath, token, 'utf-8');
|
|
90
|
+
return token;
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
logger_1.logger.warn('Failed to restore token from backup', {
|
|
94
|
+
error: error instanceof Error ? error.message : String(error),
|
|
95
|
+
});
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
49
99
|
/**
|
|
50
100
|
* Save refresh token to unified storage
|
|
51
101
|
* @param refreshToken The refresh token to save
|
|
@@ -63,15 +113,28 @@ function saveTokenToStorage(refreshToken, databasePath) {
|
|
|
63
113
|
if (!(0, node_fs_1.existsSync)(storageDir)) {
|
|
64
114
|
(0, node_fs_1.mkdirSync)(storageDir, { recursive: true });
|
|
65
115
|
}
|
|
116
|
+
// Create backup of existing token before overwriting
|
|
117
|
+
if ((0, node_fs_1.existsSync)(tokenPath)) {
|
|
118
|
+
backupToken(databasePath);
|
|
119
|
+
}
|
|
66
120
|
// Save token to file (simple text file, no JSON wrapper needed)
|
|
67
121
|
(0, node_fs_1.writeFileSync)(tokenPath, refreshToken.trim(), 'utf-8');
|
|
68
122
|
logger_1.logger.debug('Token saved to unified storage', { tokenPath });
|
|
123
|
+
// Verify the write was successful
|
|
124
|
+
if (!(0, node_fs_1.existsSync)(tokenPath)) {
|
|
125
|
+
throw new Error('Token file was not created successfully');
|
|
126
|
+
}
|
|
127
|
+
// Double-check the content
|
|
128
|
+
const savedToken = (0, node_fs_1.readFileSync)(tokenPath, 'utf-8').trim();
|
|
129
|
+
if (savedToken !== refreshToken.trim()) {
|
|
130
|
+
throw new Error('Saved token does not match input token');
|
|
131
|
+
}
|
|
69
132
|
}
|
|
70
133
|
catch (error) {
|
|
71
|
-
logger_1.logger.
|
|
134
|
+
logger_1.logger.error('Failed to save token to unified storage', {
|
|
72
135
|
error: error instanceof Error ? error.message : String(error),
|
|
73
136
|
});
|
|
74
|
-
// Don't throw - this is a non-critical operation
|
|
137
|
+
// Don't throw - this is a non-critical operation, but log as error
|
|
75
138
|
}
|
|
76
139
|
}
|
|
77
140
|
/**
|
|
@@ -83,11 +146,15 @@ function loadTokenFromStorage(databasePath) {
|
|
|
83
146
|
try {
|
|
84
147
|
const tokenPath = getTokenFilePath(databasePath);
|
|
85
148
|
if (!(0, node_fs_1.existsSync)(tokenPath)) {
|
|
86
|
-
|
|
149
|
+
// Try to restore from backup
|
|
150
|
+
logger_1.logger.debug('Token file not found, attempting to restore from backup');
|
|
151
|
+
return restoreTokenFromBackup(databasePath);
|
|
87
152
|
}
|
|
88
153
|
const token = (0, node_fs_1.readFileSync)(tokenPath, 'utf-8').trim();
|
|
89
154
|
if (isPlaceholderToken(token)) {
|
|
90
|
-
|
|
155
|
+
// Token is invalid, try backup
|
|
156
|
+
logger_1.logger.debug('Token file contains placeholder, attempting to restore from backup');
|
|
157
|
+
return restoreTokenFromBackup(databasePath);
|
|
91
158
|
}
|
|
92
159
|
logger_1.logger.debug('Token loaded from unified storage', { tokenPath });
|
|
93
160
|
return token;
|
|
@@ -96,7 +163,8 @@ function loadTokenFromStorage(databasePath) {
|
|
|
96
163
|
logger_1.logger.warn('Failed to load token from unified storage', {
|
|
97
164
|
error: error instanceof Error ? error.message : String(error),
|
|
98
165
|
});
|
|
99
|
-
|
|
166
|
+
// Try backup as last resort
|
|
167
|
+
return restoreTokenFromBackup(databasePath);
|
|
100
168
|
}
|
|
101
169
|
}
|
|
102
170
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/utils/token-manager.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/utils/token-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,eAAe,GAAG;QAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,eAAe,GAAG;QAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAgC/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,GAAG,OAAO,CAEnF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAE5F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAgB/D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAUjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAQtG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE9E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,IAAI,CAAC,EACjC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,KAAK,IAAI,CAAC,CAIpB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,IAAI,CAAC,GACjC,CAAC,GAAG,SAAS,CASf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,GACvC,CAAC,GAAG,SAAS,CAYf"}
|
|
@@ -36,9 +36,13 @@ function isElectronEnvironment() {
|
|
|
36
36
|
if (process.env?.ELECTRON_IS_DEV !== undefined) {
|
|
37
37
|
return true;
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
// ELECTRON_RUN_AS_NODE=1 means Electron is running as Node.js
|
|
40
|
+
// In this case, it's NOT an Electron environment for the script
|
|
41
|
+
if (process.env?.ELECTRON_RUN_AS_NODE === '1') {
|
|
42
|
+
return false; // Running as Node.js, not Electron environment
|
|
41
43
|
}
|
|
44
|
+
// If ELECTRON_RUN_AS_NODE is set but not '1', it might be Electron
|
|
45
|
+
// But this is less reliable, so we don't use it as a primary check
|
|
42
46
|
return false;
|
|
43
47
|
}
|
|
44
48
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAkBH,
|
|
1
|
+
{"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"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"}
|
package/dist/webui/package.json
CHANGED
package/dist/webui/ports.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/webui/routes/download.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/webui/routes/download.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA2BxB,eAAe,MAAM,CAAC"}
|
|
@@ -37,6 +37,7 @@ const express_1 = require("express");
|
|
|
37
37
|
const basicHandlers = __importStar(require("./handlers/download-basic-handlers"));
|
|
38
38
|
const incompleteHandlers = __importStar(require("./handlers/download-incomplete-handlers"));
|
|
39
39
|
const batchHandlers = __importStar(require("./handlers/download-batch-handlers"));
|
|
40
|
+
const urlHandlers = __importStar(require("./handlers/download-url-handlers"));
|
|
40
41
|
const router = (0, express_1.Router)();
|
|
41
42
|
// Download task management
|
|
42
43
|
router.post('/start', basicHandlers.startDownload);
|
|
@@ -44,9 +45,15 @@ router.post('/stop', basicHandlers.stopDownload);
|
|
|
44
45
|
router.get('/status', basicHandlers.getDownloadStatus);
|
|
45
46
|
router.get('/logs', basicHandlers.getDownloadLogs);
|
|
46
47
|
router.get('/history', basicHandlers.getDownloadHistory);
|
|
48
|
+
router.delete('/history/:taskId', basicHandlers.deleteTaskHistory);
|
|
49
|
+
router.delete('/history', basicHandlers.deleteAllTaskHistory);
|
|
47
50
|
// Batch download operations
|
|
48
51
|
router.post('/run-all', batchHandlers.runAllDownloads);
|
|
49
52
|
router.post('/random', batchHandlers.randomDownload);
|
|
53
|
+
// URL download operations
|
|
54
|
+
router.post('/url', urlHandlers.downloadFromUrl);
|
|
55
|
+
router.post('/batch-url', urlHandlers.downloadFromBatchUrls);
|
|
56
|
+
router.post('/parse-url', urlHandlers.parseUrl);
|
|
50
57
|
// Incomplete tasks management
|
|
51
58
|
router.get('/incomplete', incompleteHandlers.getIncompleteTasks);
|
|
52
59
|
router.delete('/incomplete', incompleteHandlers.deleteAllIncompleteTasks);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/webui/routes/download.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAiC;AACjC,kFAAoE;AACpE,4FAA8E;AAC9E,kFAAoE;
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/webui/routes/download.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAiC;AACjC,kFAAoE;AACpE,4FAA8E;AAC9E,kFAAoE;AACpE,8EAAgE;AAEhE,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB,2BAA2B;AAC3B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;AACnD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;AACjD,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACvD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;AACnD,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAE9D,4BAA4B;AAC5B,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;AACvD,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;AAErD,0BAA0B;AAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;AACjD,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC;AAC7D,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AAEhD,8BAA8B;AAC9B,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;AAC1E,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;AACvE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAE1D,kBAAe,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-status-handler.d.ts","sourceRoot":"","sources":["../../../../../src/webui/routes/handlers/auth/auth-status-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAQ5C;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"auth-status-handler.d.ts","sourceRoot":"","sources":["../../../../../src/webui/routes/handlers/auth/auth-status-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAQ5C;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA8G9E"}
|
|
@@ -25,11 +25,17 @@ async function getAuthStatus(req, res) {
|
|
|
25
25
|
if (hasToken && refreshToken) {
|
|
26
26
|
const validation = await (0, auth_utils_1.validateToken)(refreshToken);
|
|
27
27
|
tokenValid = validation.valid;
|
|
28
|
-
authenticated = validation.valid;
|
|
28
|
+
authenticated = validation.valid; // Only authenticated if token is valid
|
|
29
29
|
user = validation.user;
|
|
30
30
|
if (tokenValid) {
|
|
31
31
|
logger_1.logger.debug('Token validation successful', { hasUser: !!user });
|
|
32
32
|
}
|
|
33
|
+
else {
|
|
34
|
+
logger_1.logger.debug('Token validation failed - user is not authenticated', { hasToken });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
logger_1.logger.debug('No valid token found - user is not authenticated', { hasToken, configPath });
|
|
33
39
|
}
|
|
34
40
|
logger_1.logger.debug('Auth status check', { authenticated, hasToken, tokenValid, configPath });
|
|
35
41
|
res.json({
|
|
@@ -75,8 +81,10 @@ async function getAuthStatus(req, res) {
|
|
|
75
81
|
}
|
|
76
82
|
}
|
|
77
83
|
const isTokenError = validationErrors.some(e => e.includes('refreshToken'));
|
|
78
|
-
//
|
|
79
|
-
|
|
84
|
+
// Final authentication status: must have valid token to be authenticated
|
|
85
|
+
// If token validation failed (tokenValid === false), user is NOT authenticated
|
|
86
|
+
// Also force false if there's a token-related error in config validation
|
|
87
|
+
const finalAuthenticated = (tokenValid && authenticated) && !isTokenError;
|
|
80
88
|
logger_1.logger.warn('Configuration invalid when checking auth status', {
|
|
81
89
|
errors: validationErrors,
|
|
82
90
|
warnings: validationWarnings,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-status-handler.js","sourceRoot":"","sources":["../../../../../src/webui/routes/handlers/auth/auth-status-handler.ts"],"names":[],"mappings":";;AAaA,
|
|
1
|
+
{"version":3,"file":"auth-status-handler.js","sourceRoot":"","sources":["../../../../../src/webui/routes/handlers/auth/auth-status-handler.ts"],"names":[],"mappings":";;AAaA,sCA8GC;AA1HD,+CAAsF;AACtF,+CAA4C;AAC5C,4DAAuD;AACvD,qDAAuD;AACvD,mEAA4F;AAC5F,6CAAkG;AAElG;;;;GAIG;AACI,KAAK,UAAU,aAAa,CAAC,GAAY,EAAE,GAAa;IAC7D,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAA,sBAAa,GAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,UAAU,CAAC,CAAC;QAEtC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC;QAChD,MAAM,QAAQ,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,IAAA,kCAAkB,EAAC,YAAY,CAAC,CAAC;QAErE,8BAA8B;QAC9B,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,MAAM,IAAA,0BAAa,EAAC,YAAY,CAAC,CAAC;YACrD,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;YAC9B,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,uCAAuC;YACzE,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YAEvB,IAAI,UAAU,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,eAAM,CAAC,KAAK,CAAC,qDAAqD,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,KAAK,CAAC,kDAAkD,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,eAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QAEvF,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE;gBACJ,aAAa;gBACb,QAAQ;gBACR,UAAU;gBACV,eAAe,EAAE,aAAa,EAAE,0BAA0B;gBAC1D,IAAI;aACL;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,oBAAW,EAAE,CAAC;YACjC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,IAAA,gCAAmB,EAAC,KAAK,CAAC,CAAC;YAE9F,oFAAoF;YACpF,gFAAgF;YAChF,MAAM,UAAU,GAAG,IAAA,sBAAa,GAAE,CAAC;YACnC,MAAM,SAAS,GAAG,IAAA,0BAAa,EAAC,UAAU,CAAC,CAAC;YAE5C,gCAAgC;YAChC,IAAI,WAAW,GAAG,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;YACjD,IAAI,IAAA,kCAAkB,EAAC,WAAW,CAAC,EAAE,CAAC;gBACpC,wDAAwD;gBACxD,mEAAmE;gBACnE,MAAM,YAAY,GAAG,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC;gBACtD,MAAM,YAAY,GAAG,IAAA,qCAAqB,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBACtE,IAAI,YAAY,EAAE,CAAC;oBACjB,WAAW,GAAG,YAAY,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,CAAC,IAAA,kCAAkB,EAAC,WAAW,CAAC,CAAC;YAElD,8BAA8B;YAC9B,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,IAAI,GAAG,IAAI,CAAC;YAEhB,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,MAAM,IAAA,0BAAa,EAAC,WAAW,CAAC,CAAC;gBACpD,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;gBAC9B,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;gBACjC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;gBAEvB,IAAI,UAAU,EAAE,CAAC;oBACf,eAAM,CAAC,KAAK,CAAC,+CAA+C,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACrF,CAAC;YACH,CAAC;YAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;YAE5E,yEAAyE;YACzE,+EAA+E;YAC/E,yEAAyE;YACzE,MAAM,kBAAkB,GAAG,CAAC,UAAU,IAAI,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;YAE1E,eAAM,CAAC,IAAI,CAAC,iDAAiD,EAAE;gBAC7D,MAAM,EAAE,gBAAgB;gBACxB,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ;gBACR,aAAa,EAAE,kBAAkB;gBACjC,UAAU;aACX,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE;oBACJ,aAAa,EAAE,kBAAkB;oBACjC,QAAQ;oBACR,UAAU;oBACV,eAAe,EAAE,kBAAkB,EAAE,0BAA0B;oBAC/D,WAAW,EAAE,KAAK,EAAE,gDAAgD;oBACpE,MAAM,EAAE,gBAAgB;oBACxB,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI;iBACL;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,eAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,uBAAS,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
|
|
@@ -13,6 +13,7 @@ export declare function stopDownload(req: Request, res: Response): Promise<void>
|
|
|
13
13
|
/**
|
|
14
14
|
* GET /api/download/status
|
|
15
15
|
* Get download task status
|
|
16
|
+
* Includes both in-memory tasks and database history
|
|
16
17
|
*/
|
|
17
18
|
export declare function getDownloadStatus(req: Request, res: Response): Promise<void>;
|
|
18
19
|
/**
|
|
@@ -20,6 +21,16 @@ export declare function getDownloadStatus(req: Request, res: Response): Promise<
|
|
|
20
21
|
* Get logs for a specific task
|
|
21
22
|
*/
|
|
22
23
|
export declare function getDownloadLogs(req: Request, res: Response): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* DELETE /api/download/history/:taskId
|
|
26
|
+
* Delete a task history record by task ID
|
|
27
|
+
*/
|
|
28
|
+
export declare function deleteTaskHistory(req: Request, res: Response): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* DELETE /api/download/history
|
|
31
|
+
* Delete all task history records
|
|
32
|
+
*/
|
|
33
|
+
export declare function deleteAllTaskHistory(req: Request, res: Response): Promise<void>;
|
|
23
34
|
/**
|
|
24
35
|
* GET /api/download/history
|
|
25
36
|
* Get download history from database
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-basic-handlers.d.ts","sourceRoot":"","sources":["../../../../src/webui/routes/handlers/download-basic-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAkE5C;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B9E;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB7E;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"download-basic-handlers.d.ts","sourceRoot":"","sources":["../../../../src/webui/routes/handlers/download-basic-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAkE5C;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B9E;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB7E;AAsBD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGlF;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChF;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DlF;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDrF;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DnF"}
|