pixivflow 2.0.38 → 2.0.40
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/cli/ArgumentParser.d.ts +2 -20
- package/dist/cli/ArgumentParser.d.ts.map +1 -1
- package/dist/cli/ArgumentParser.js +16 -29
- package/dist/cli/ArgumentParser.js.map +1 -1
- package/dist/commands/BackupCommand.d.ts +6 -0
- package/dist/commands/BackupCommand.d.ts.map +1 -1
- package/dist/commands/BackupCommand.js +6 -0
- package/dist/commands/BackupCommand.js.map +1 -1
- package/dist/commands/Command.d.ts +16 -0
- package/dist/commands/Command.d.ts.map +1 -1
- package/dist/commands/Command.js +9 -0
- package/dist/commands/Command.js.map +1 -1
- package/dist/commands/CommandRegistry.d.ts +24 -0
- package/dist/commands/CommandRegistry.d.ts.map +1 -1
- package/dist/commands/CommandRegistry.js +48 -0
- package/dist/commands/CommandRegistry.js.map +1 -1
- package/dist/commands/ConfigCommand.d.ts +6 -0
- package/dist/commands/ConfigCommand.d.ts.map +1 -1
- package/dist/commands/ConfigCommand.js +6 -0
- package/dist/commands/ConfigCommand.js.map +1 -1
- package/dist/commands/DirsCommand.d.ts +6 -0
- package/dist/commands/DirsCommand.d.ts.map +1 -1
- package/dist/commands/DirsCommand.js +6 -0
- package/dist/commands/DirsCommand.js.map +1 -1
- package/dist/commands/DownloadCommand.d.ts +6 -0
- package/dist/commands/DownloadCommand.d.ts.map +1 -1
- package/dist/commands/DownloadCommand.js +57 -3
- package/dist/commands/DownloadCommand.js.map +1 -1
- package/dist/commands/HealthCommand.d.ts +7 -0
- package/dist/commands/HealthCommand.d.ts.map +1 -1
- package/dist/commands/HealthCommand.js +7 -0
- package/dist/commands/HealthCommand.js.map +1 -1
- package/dist/commands/HelpCommand.d.ts +7 -0
- package/dist/commands/HelpCommand.d.ts.map +1 -1
- package/dist/commands/HelpCommand.js +22 -29
- package/dist/commands/HelpCommand.js.map +1 -1
- package/dist/commands/LoginCommand.d.ts +7 -0
- package/dist/commands/LoginCommand.d.ts.map +1 -1
- package/dist/commands/LoginCommand.js +7 -0
- package/dist/commands/LoginCommand.js.map +1 -1
- package/dist/commands/LoginHeadlessCommand.d.ts +7 -0
- package/dist/commands/LoginHeadlessCommand.d.ts.map +1 -1
- package/dist/commands/LoginHeadlessCommand.js +7 -0
- package/dist/commands/LoginHeadlessCommand.js.map +1 -1
- package/dist/commands/LogsCommand.d.ts +6 -0
- package/dist/commands/LogsCommand.d.ts.map +1 -1
- package/dist/commands/LogsCommand.js +6 -0
- package/dist/commands/LogsCommand.js.map +1 -1
- package/dist/commands/MaintainCommand.d.ts +6 -0
- package/dist/commands/MaintainCommand.d.ts.map +1 -1
- package/dist/commands/MaintainCommand.js +6 -0
- package/dist/commands/MaintainCommand.js.map +1 -1
- package/dist/commands/MigrateConfigCommand.d.ts +6 -0
- package/dist/commands/MigrateConfigCommand.d.ts.map +1 -1
- package/dist/commands/MigrateConfigCommand.js +6 -0
- package/dist/commands/MigrateConfigCommand.js.map +1 -1
- package/dist/commands/MonitorCommand.d.ts +6 -0
- package/dist/commands/MonitorCommand.d.ts.map +1 -1
- package/dist/commands/MonitorCommand.js +6 -0
- package/dist/commands/MonitorCommand.js.map +1 -1
- package/dist/commands/NormalizeCommand.d.ts +6 -0
- package/dist/commands/NormalizeCommand.d.ts.map +1 -1
- package/dist/commands/NormalizeCommand.js +6 -0
- package/dist/commands/NormalizeCommand.js.map +1 -1
- package/dist/commands/RandomDownloadCommand.d.ts +7 -1
- package/dist/commands/RandomDownloadCommand.d.ts.map +1 -1
- package/dist/commands/RandomDownloadCommand.js +7 -1
- package/dist/commands/RandomDownloadCommand.js.map +1 -1
- package/dist/commands/RefreshCommand.d.ts +12 -0
- package/dist/commands/RefreshCommand.d.ts.map +1 -1
- package/dist/commands/RefreshCommand.js +82 -0
- package/dist/commands/RefreshCommand.js.map +1 -1
- package/dist/commands/SchedulerCommand.d.ts +6 -0
- package/dist/commands/SchedulerCommand.d.ts.map +1 -1
- package/dist/commands/SchedulerCommand.js +7 -1
- package/dist/commands/SchedulerCommand.js.map +1 -1
- package/dist/commands/SetupCommand.d.ts +6 -0
- package/dist/commands/SetupCommand.d.ts.map +1 -1
- package/dist/commands/SetupCommand.js +6 -0
- package/dist/commands/SetupCommand.js.map +1 -1
- package/dist/commands/StatusCommand.d.ts +6 -0
- package/dist/commands/StatusCommand.d.ts.map +1 -1
- package/dist/commands/StatusCommand.js +6 -0
- package/dist/commands/StatusCommand.js.map +1 -1
- package/dist/commands/VersionCommand.d.ts +21 -0
- package/dist/commands/VersionCommand.d.ts.map +1 -0
- package/dist/commands/VersionCommand.js +81 -0
- package/dist/commands/VersionCommand.js.map +1 -0
- package/dist/commands/WebUICommand.d.ts +6 -0
- package/dist/commands/WebUICommand.d.ts.map +1 -1
- package/dist/commands/WebUICommand.js +6 -0
- package/dist/commands/WebUICommand.js.map +1 -1
- package/dist/commands/index.d.ts +2 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +4 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/metadata.d.ts +38 -0
- package/dist/commands/metadata.d.ts.map +1 -0
- package/dist/commands/metadata.js +42 -0
- package/dist/commands/metadata.js.map +1 -0
- package/dist/commands/suggestions.d.ts +22 -0
- package/dist/commands/suggestions.d.ts.map +1 -0
- package/dist/commands/suggestions.js +85 -0
- package/dist/commands/suggestions.js.map +1 -0
- 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 +126 -320
- 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.d.ts +14 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +35 -12
- 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
package/dist/index.js
CHANGED
|
@@ -1,354 +1,160 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
-
var ownKeys = function(o) {
|
|
21
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
-
var ar = [];
|
|
23
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
-
return ar;
|
|
25
|
-
};
|
|
26
|
-
return ownKeys(o);
|
|
27
|
-
};
|
|
28
|
-
return function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
})();
|
|
36
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
4
|
const config_1 = require("./config");
|
|
38
|
-
const DownloadManager_1 = require("./download/DownloadManager");
|
|
39
|
-
const FileService_1 = require("./download/FileService");
|
|
40
5
|
const logger_1 = require("./logger");
|
|
41
|
-
const AuthClient_1 = require("./pixiv/AuthClient");
|
|
42
|
-
const PixivClient_1 = require("./pixiv/PixivClient");
|
|
43
|
-
const Scheduler_1 = require("./scheduler/Scheduler");
|
|
44
|
-
const Database_1 = require("./storage/Database");
|
|
45
|
-
const token_maintenance_1 = require("./utils/token-maintenance");
|
|
46
6
|
const CommandRegistry_1 = require("./commands/CommandRegistry");
|
|
47
7
|
const commands_1 = require("./commands");
|
|
48
8
|
const ArgumentParser_1 = require("./cli/ArgumentParser");
|
|
49
|
-
const config_2 = require("./config");
|
|
50
|
-
const login_helper_1 = require("./utils/login-helper");
|
|
51
|
-
const defaults_1 = require("./config/defaults");
|
|
52
9
|
const errors_1 = require("./utils/errors");
|
|
53
|
-
const fs = __importStar(require("fs/promises"));
|
|
54
|
-
const path = __importStar(require("path"));
|
|
55
|
-
// Use ArgumentParser from CLI module
|
|
56
|
-
const parseArgs = ArgumentParser_1.ArgumentParser.parse;
|
|
57
|
-
/**
|
|
58
|
-
* Main entry point for PixivFlow CLI
|
|
59
|
-
*
|
|
60
|
-
* This file has been refactored to use the new command system.
|
|
61
|
-
* All command handlers have been moved to individual command classes in src/commands/.
|
|
62
|
-
*/
|
|
63
10
|
/**
|
|
64
|
-
*
|
|
11
|
+
* Handles fatal errors, prints user-friendly messages, and exits the process.
|
|
65
12
|
*/
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
// Parse command line arguments
|
|
71
|
-
const parsedArgs = parseArgs(process.argv.slice(2));
|
|
72
|
-
const commandName = parsedArgs.command;
|
|
73
|
-
// Prepare command context
|
|
74
|
-
const configPath = (0, config_2.getConfigPath)(parsedArgs.options.config || undefined);
|
|
75
|
-
// Special handling for refresh command: update config file with token before loading
|
|
76
|
-
// This allows refresh command to work even when config file has placeholder token
|
|
77
|
-
if (commandName === 'refresh' || commandName === 'r') {
|
|
78
|
-
const refreshToken = parsedArgs.positional[0] || parsedArgs.options.token;
|
|
79
|
-
if (refreshToken) {
|
|
80
|
-
try {
|
|
81
|
-
// Check if config file exists
|
|
82
|
-
try {
|
|
83
|
-
await fs.access(configPath);
|
|
84
|
-
// Config file exists, update it with the token
|
|
85
|
-
await (0, login_helper_1.updateConfigWithToken)(configPath, refreshToken);
|
|
86
|
-
logger_1.logger.info('Updated config file with refresh token before validation');
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
// Config file doesn't exist, create it with default structure
|
|
90
|
-
const defaultConfig = (0, defaults_1.generateDefaultConfig)();
|
|
91
|
-
defaultConfig.pixiv.refreshToken = refreshToken;
|
|
92
|
-
// Ensure directory exists
|
|
93
|
-
const configDir = path.dirname(configPath);
|
|
94
|
-
await fs.mkdir(configDir, { recursive: true });
|
|
95
|
-
await fs.writeFile(configPath, JSON.stringify(defaultConfig, null, 2), 'utf-8');
|
|
96
|
-
logger_1.logger.info('Created config file with refresh token');
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
// If updating config fails, log warning but continue
|
|
101
|
-
// The refresh command will still work with the provided token
|
|
102
|
-
logger_1.logger.warn('Failed to update config file with refresh token, continuing anyway', {
|
|
103
|
-
error: error instanceof Error ? error.message : String(error),
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
}
|
|
13
|
+
function handleFatalError(error) {
|
|
14
|
+
if (error instanceof errors_1.ConfigError) {
|
|
15
|
+
console.error(`\n❌ Configuration Error: ${error.message}\n`);
|
|
16
|
+
logger_1.logger.error('Configuration error', { error: error.message });
|
|
107
17
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
!commandName;
|
|
121
|
-
// Commands that do not require Pixiv authentication/token
|
|
122
|
-
const tokenOptionalCommands = new Set([
|
|
123
|
-
'help', 'h', '--help',
|
|
124
|
-
'config', 'dirs', 'logs', 'setup', 'status', 'health', 'maintain', 'normalize', 'migrate-config', 'backup', 'monitor',
|
|
125
|
-
// webui can boot without token; UI can guide login
|
|
126
|
-
'webui', 'w'
|
|
127
|
-
]);
|
|
128
|
-
const isTokenOptional = commandName ? tokenOptionalCommands.has(commandName) : true;
|
|
129
|
-
const config = (0, config_1.loadConfig)(configPath, isLoginCommand || isHelpInvocation || isTokenOptional);
|
|
130
|
-
const context = {
|
|
131
|
-
config,
|
|
132
|
-
logger: logger_1.logger,
|
|
133
|
-
configPath,
|
|
134
|
-
};
|
|
135
|
-
// Convert parsed args to CommandArgs format
|
|
136
|
-
const commandArgs = {
|
|
137
|
-
options: parsedArgs.options,
|
|
138
|
-
positional: parsedArgs.positional,
|
|
139
|
-
};
|
|
140
|
-
// Handle help
|
|
141
|
-
// Case 1: help command explicitly called (pixivflow help or pixivflow help <command>)
|
|
142
|
-
if (commandName === 'help' || commandName === '-h' || commandName === '--help') {
|
|
143
|
-
const helpCommand = registry.find('help');
|
|
144
|
-
if (helpCommand) {
|
|
145
|
-
const result = await helpCommand.execute(context, commandArgs);
|
|
146
|
-
process.exit(result.success ? 0 : 1);
|
|
147
|
-
}
|
|
148
|
-
return;
|
|
18
|
+
else if (error instanceof errors_1.AuthenticationError) {
|
|
19
|
+
console.error('\n❌ Authentication Error');
|
|
20
|
+
console.error('════════════════════════════════════════════════════════════════');
|
|
21
|
+
console.error(error.message);
|
|
22
|
+
console.error('');
|
|
23
|
+
console.error('💡 Your refresh token may have expired or is invalid.');
|
|
24
|
+
console.error(' Please login again to get a new refresh token:');
|
|
25
|
+
console.error('');
|
|
26
|
+
console.error(' • Interactive login: pixivflow login');
|
|
27
|
+
console.error(' • Headless login: pixivflow login-headless');
|
|
28
|
+
console.error('════════════════════════════════════════════════════════════════\n');
|
|
29
|
+
logger_1.logger.error('Authentication failed', { error: error.message });
|
|
149
30
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
const helpCommand = registry.find('help');
|
|
155
|
-
if (helpCommand) {
|
|
156
|
-
// Pass the command name as positional argument
|
|
157
|
-
const helpArgs = {
|
|
158
|
-
options: {},
|
|
159
|
-
positional: [commandName],
|
|
160
|
-
};
|
|
161
|
-
const result = await helpCommand.execute(context, helpArgs);
|
|
162
|
-
process.exit(result.success ? 0 : 1);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
// No command specified, show general help
|
|
167
|
-
const helpCommand = registry.find('help');
|
|
168
|
-
if (helpCommand) {
|
|
169
|
-
const result = await helpCommand.execute(context, commandArgs);
|
|
170
|
-
process.exit(result.success ? 0 : 1);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
return;
|
|
31
|
+
else {
|
|
32
|
+
logger_1.logger.error('Fatal error during application startup', {
|
|
33
|
+
error: error instanceof Error ? error.stack ?? error.message : String(error),
|
|
34
|
+
});
|
|
174
35
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Executes the given command.
|
|
40
|
+
*/
|
|
41
|
+
async function executeCommand(registry, commandName, context, args) {
|
|
42
|
+
const command = registry.find(commandName);
|
|
43
|
+
if (!command) {
|
|
44
|
+
console.error(`\n❌ Unknown command: ${commandName}`);
|
|
45
|
+
// Provide command suggestions
|
|
46
|
+
const suggestions = registry.getSuggestions(commandName);
|
|
47
|
+
if (suggestions) {
|
|
48
|
+
console.error(suggestions);
|
|
181
49
|
}
|
|
182
|
-
|
|
50
|
+
console.error('\n💡 Run "pixivflow help" to see all available commands');
|
|
51
|
+
console.error(' Or "pixivflow help <command>" for specific command help\n');
|
|
52
|
+
logger_1.logger.warn(`Command not found: ${commandName}`);
|
|
53
|
+
process.exit(1);
|
|
183
54
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
console.error('[!]: Invalid arguments:');
|
|
193
|
-
validation.errors.forEach((error) => {
|
|
194
|
-
console.error(` - ${error}`);
|
|
195
|
-
});
|
|
196
|
-
if (command.getUsage) {
|
|
197
|
-
console.error(`\nUsage:\n${command.getUsage()}`);
|
|
198
|
-
}
|
|
199
|
-
process.exit(1);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
const result = await command.execute(context, commandArgs);
|
|
203
|
-
// Handle command result
|
|
204
|
-
if (!result.success) {
|
|
205
|
-
const errorMessage = result.error?.message || 'Command failed';
|
|
206
|
-
if (result.error) {
|
|
207
|
-
logger_1.logger.error('Command execution failed', { error: result.error });
|
|
55
|
+
try {
|
|
56
|
+
if (command.validate) {
|
|
57
|
+
const validation = command.validate(args);
|
|
58
|
+
if (!validation.valid) {
|
|
59
|
+
console.error('[!]: Invalid arguments:');
|
|
60
|
+
validation.errors.forEach((error) => console.error(` - ${error}`));
|
|
61
|
+
if (command.getUsage) {
|
|
62
|
+
console.error(`\nUsage:\n${command.getUsage()}`);
|
|
208
63
|
}
|
|
209
64
|
process.exit(1);
|
|
210
65
|
}
|
|
211
|
-
else {
|
|
212
|
-
// For scheduler and webui commands, don't exit (they run indefinitely)
|
|
213
|
-
if (commandName !== 'scheduler' && commandName !== 'webui' && commandName !== 'w') {
|
|
214
|
-
process.exit(0);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
66
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
});
|
|
67
|
+
const result = await command.execute(context, args);
|
|
68
|
+
if (!result.success) {
|
|
69
|
+
logger_1.logger.error('Command execution failed', { command: commandName, error: result.error });
|
|
222
70
|
process.exit(1);
|
|
223
71
|
}
|
|
224
|
-
|
|
72
|
+
// Decide exit behavior based on command metadata (long running)
|
|
73
|
+
const isLongRunning = typeof command.getMetadata === 'function'
|
|
74
|
+
? command.getMetadata().longRunning === true
|
|
75
|
+
: false;
|
|
76
|
+
if (!isLongRunning) {
|
|
77
|
+
process.exit(0);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
logger_1.logger.error('Unexpected error during command execution', {
|
|
82
|
+
command: commandName,
|
|
83
|
+
error: error instanceof Error ? error.stack ?? error.message : String(error),
|
|
84
|
+
});
|
|
85
|
+
process.exit(1);
|
|
225
86
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Executes the default behavior (download or scheduler) when no command is specified.
|
|
90
|
+
*/
|
|
91
|
+
async function executeDefaultBehavior(context, args) {
|
|
92
|
+
const commandName = context.config.scheduler?.enabled ? 'scheduler' : 'download';
|
|
93
|
+
const command = new (commandName === 'scheduler' ? commands_1.SchedulerCommand : commands_1.DownloadCommand)();
|
|
94
|
+
logger_1.logger.info(`No command specified. Running default: ${commandName}`);
|
|
229
95
|
try {
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
database.migrate();
|
|
235
|
-
const auth = new AuthClient_1.PixivAuth(resolvedConfig.pixiv, resolvedConfig.network, database, resolvedConfigPath);
|
|
236
|
-
const pixivClient = new PixivClient_1.PixivClient(auth, resolvedConfig);
|
|
237
|
-
const fileService = new FileService_1.FileService(resolvedConfig.storage);
|
|
238
|
-
const downloadManager = new DownloadManager_1.DownloadManager(resolvedConfig, pixivClient, database, fileService);
|
|
239
|
-
await downloadManager.initialise();
|
|
240
|
-
// Start token maintenance service for automatic token refresh
|
|
241
|
-
const tokenMaintenance = (0, token_maintenance_1.createTokenMaintenanceService)(auth, resolvedConfig.pixiv, resolvedConfig.network, resolvedConfig);
|
|
242
|
-
if (tokenMaintenance) {
|
|
243
|
-
tokenMaintenance.start();
|
|
96
|
+
const result = await command.execute(context, args);
|
|
97
|
+
if (!result.success) {
|
|
98
|
+
logger_1.logger.error('Default command execution failed', { command: commandName, error: result.error });
|
|
99
|
+
process.exit(1);
|
|
244
100
|
}
|
|
245
|
-
|
|
246
|
-
try {
|
|
247
|
-
// Apply initial delay if configured
|
|
248
|
-
if (resolvedConfig.initialDelay && resolvedConfig.initialDelay > 0) {
|
|
249
|
-
logger_1.logger.info(`Waiting ${resolvedConfig.initialDelay}ms before starting download...`);
|
|
250
|
-
await new Promise(resolve => setTimeout(resolve, resolvedConfig.initialDelay));
|
|
251
|
-
}
|
|
252
|
-
logger_1.logger.info('='.repeat(60));
|
|
253
|
-
logger_1.logger.info('Starting Pixiv download job');
|
|
254
|
-
logger_1.logger.info('='.repeat(60));
|
|
255
|
-
const startTime = Date.now();
|
|
256
|
-
await downloadManager.runAllTargets();
|
|
257
|
-
const duration = Math.round((Date.now() - startTime) / 1000);
|
|
258
|
-
logger_1.logger.info('='.repeat(60));
|
|
259
|
-
logger_1.logger.info(`Pixiv download job finished (took ${duration}s)`);
|
|
260
|
-
logger_1.logger.info('='.repeat(60));
|
|
261
|
-
}
|
|
262
|
-
catch (error) {
|
|
263
|
-
// Handle authentication errors during download
|
|
264
|
-
if (error instanceof errors_1.AuthenticationError) {
|
|
265
|
-
console.error('\n❌ Authentication Error During Download');
|
|
266
|
-
console.error('════════════════════════════════════════════════════════════════');
|
|
267
|
-
console.error(error.message);
|
|
268
|
-
console.error('');
|
|
269
|
-
console.error('💡 Your refresh token has expired or is invalid.');
|
|
270
|
-
console.error(' Please login again to get a new refresh token:');
|
|
271
|
-
console.error('');
|
|
272
|
-
console.error(' • Interactive login: pixivflow login');
|
|
273
|
-
console.error(' • (If you have source code: npm run login)');
|
|
274
|
-
console.error('');
|
|
275
|
-
console.error('════════════════════════════════════════════════════════════════\n');
|
|
276
|
-
logger_1.logger.error('Authentication failed during download', {
|
|
277
|
-
error: error.message,
|
|
278
|
-
});
|
|
279
|
-
throw error; // Re-throw to be handled by outer catch
|
|
280
|
-
}
|
|
281
|
-
throw error; // Re-throw other errors
|
|
282
|
-
}
|
|
283
|
-
};
|
|
284
|
-
const runOnce = !!(parsedArgs.options.once || process.argv.includes('--once'));
|
|
285
|
-
if (runOnce || !resolvedConfig.scheduler.enabled) {
|
|
286
|
-
if (!resolvedConfig.scheduler.enabled && !runOnce) {
|
|
287
|
-
logger_1.logger.info('Scheduler disabled, running once and exiting');
|
|
288
|
-
}
|
|
289
|
-
await runJob();
|
|
290
|
-
if (tokenMaintenance) {
|
|
291
|
-
tokenMaintenance.stop();
|
|
292
|
-
}
|
|
293
|
-
database.close();
|
|
101
|
+
if (commandName === 'download') {
|
|
294
102
|
process.exit(0);
|
|
295
103
|
}
|
|
296
|
-
const scheduler = new Scheduler_1.Scheduler(resolvedConfig.scheduler);
|
|
297
|
-
scheduler.start(runJob);
|
|
298
|
-
const cleanup = () => {
|
|
299
|
-
logger_1.logger.info('Shutting down PixivFlow');
|
|
300
|
-
scheduler.stop();
|
|
301
|
-
if (tokenMaintenance) {
|
|
302
|
-
tokenMaintenance.stop();
|
|
303
|
-
}
|
|
304
|
-
database.close();
|
|
305
|
-
process.exit(0);
|
|
306
|
-
};
|
|
307
|
-
process.on('SIGINT', cleanup);
|
|
308
|
-
process.on('SIGTERM', cleanup);
|
|
309
104
|
}
|
|
310
105
|
catch (error) {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
});
|
|
327
|
-
|
|
106
|
+
handleFatalError(error);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Main bootstrap function for the CLI.
|
|
111
|
+
*/
|
|
112
|
+
async function bootstrap() {
|
|
113
|
+
const registry = new CommandRegistry_1.CommandRegistry();
|
|
114
|
+
(0, commands_1.registerAllCommands)(registry);
|
|
115
|
+
let parsedArgs;
|
|
116
|
+
try {
|
|
117
|
+
parsedArgs = ArgumentParser_1.ArgumentParser.parse(process.argv.slice(2));
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
if (error instanceof errors_1.VersionRequest) {
|
|
121
|
+
await new commands_1.VersionCommand().execute({}, { options: {}, positional: [] });
|
|
122
|
+
return;
|
|
328
123
|
}
|
|
329
|
-
if (error instanceof errors_1.
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
console.error('');
|
|
334
|
-
console.error('💡 You have not logged in yet or your config is incomplete.');
|
|
335
|
-
console.error(' Please run one of the following commands to login and auto-fill your token:');
|
|
336
|
-
console.error('');
|
|
337
|
-
console.error(' • Interactive login: pixivflow login');
|
|
338
|
-
console.error(' • Headless login: pixivflow login-headless');
|
|
339
|
-
console.error('');
|
|
340
|
-
console.error(' Or manually edit your config file to set pixiv.refreshToken.');
|
|
341
|
-
console.error('════════════════════════════════════════════════════════════════\n');
|
|
342
|
-
logger_1.logger.error('Configuration error - login/setup required', {
|
|
343
|
-
error: error.message,
|
|
344
|
-
});
|
|
345
|
-
process.exit(1);
|
|
124
|
+
if (error instanceof errors_1.HelpRequest) {
|
|
125
|
+
const helpArgs = { options: {}, positional: [error.command].filter((c) => !!c) };
|
|
126
|
+
await new commands_1.HelpCommand().execute({}, helpArgs);
|
|
127
|
+
return;
|
|
346
128
|
}
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
129
|
+
throw error;
|
|
130
|
+
}
|
|
131
|
+
const { command: commandName, options, positional } = parsedArgs;
|
|
132
|
+
const commandArgs = { options, positional };
|
|
133
|
+
// --- Pre-execution hooks ---
|
|
134
|
+
const configPath = (0, config_1.getConfigPath)(options.config);
|
|
135
|
+
const command = registry.find(commandName || '');
|
|
136
|
+
if (command && command.name === 'refresh') {
|
|
137
|
+
await commands_1.RefreshCommand.preExecute(commandArgs, configPath);
|
|
138
|
+
}
|
|
139
|
+
// --- Config loading and context creation ---
|
|
140
|
+
let config;
|
|
141
|
+
try {
|
|
142
|
+
const isLoginCommand = ['login', 'l', 'login-interactive', 'li', 'login-headless'].includes(commandName || '');
|
|
143
|
+
const tokenOptionalCommands = new Set(['config', 'dirs', 'logs', 'setup', 'status', 'health', 'maintain', 'normalize', 'migrate-config', 'backup', 'monitor', 'webui', 'w']);
|
|
144
|
+
const isTokenOptional = commandName ? tokenOptionalCommands.has(commandName) : true;
|
|
145
|
+
config = (0, config_1.loadConfig)(configPath, isLoginCommand || isTokenOptional || !commandName);
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
return handleFatalError(error);
|
|
149
|
+
}
|
|
150
|
+
const context = { config, logger: logger_1.logger, configPath };
|
|
151
|
+
// --- Command execution ---
|
|
152
|
+
if (commandName) {
|
|
153
|
+
await executeCommand(registry, commandName, context, commandArgs);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
await executeDefaultBehavior(context, commandArgs);
|
|
351
157
|
}
|
|
352
158
|
}
|
|
353
|
-
bootstrap();
|
|
159
|
+
bootstrap().catch(handleFatalError);
|
|
354
160
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthClient.d.ts","sourceRoot":"","sources":["../../src/pixiv/AuthClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAAoB,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAoBjE,qBAAa,SAAS;IAIlB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,OAAO,CAAC,UAAU,CAAC,CAAS;gBAGT,WAAW,EAAE,qBAAqB,EAClC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,EACnC,UAAU,CAAC,EAAE,MAAM;IAKR,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;YAUhC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"AuthClient.d.ts","sourceRoot":"","sources":["../../src/pixiv/AuthClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAAoB,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAoBjE,qBAAa,SAAS;IAIlB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,OAAO,CAAC,UAAU,CAAC,CAAS;gBAGT,WAAW,EAAE,qBAAqB,EAClC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,EACnC,UAAU,CAAC,EAAE,MAAM;IAKR,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;YAUhC,kBAAkB;IA2HhC,OAAO,CAAC,kBAAkB;CAI3B"}
|
package/dist/pixiv/AuthClient.js
CHANGED
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.PixivAuth = void 0;
|
|
4
37
|
const node_crypto_1 = require("node:crypto");
|
|
@@ -58,7 +91,7 @@ class PixivAuth {
|
|
|
58
91
|
if (!response.ok) {
|
|
59
92
|
// Check for authentication errors (401, 403) which indicate refresh token is invalid/expired
|
|
60
93
|
if (response.status === 401 || response.status === 403) {
|
|
61
|
-
const errorMessage = `
|
|
94
|
+
const errorMessage = `Pixiv authentication failed (HTTP ${response.status}): Your refresh token is invalid or has expired.`;
|
|
62
95
|
throw new errors_1.AuthenticationError(errorMessage);
|
|
63
96
|
}
|
|
64
97
|
throw new Error(`Failed to refresh token: ${response.status} ${response.statusText}`);
|
|
@@ -72,31 +105,47 @@ class PixivAuth {
|
|
|
72
105
|
tokenType: data.token_type,
|
|
73
106
|
};
|
|
74
107
|
this.database.setToken(TOKEN_CACHE_KEY, stored);
|
|
75
|
-
// CRITICAL: Auto-update refresh token in
|
|
108
|
+
// CRITICAL: Auto-update refresh token in all storage locations
|
|
76
109
|
// This ensures the refresh token never expires and is always up-to-date
|
|
77
110
|
if (data.refresh_token && data.refresh_token !== this.credentials.refreshToken) {
|
|
78
|
-
logger_1.logger.info('Received updated refresh token, updating storage
|
|
79
|
-
//
|
|
111
|
+
logger_1.logger.info('Received updated refresh token, updating all storage locations');
|
|
112
|
+
// Update internal credentials immediately
|
|
113
|
+
this.credentials.refreshToken = data.refresh_token;
|
|
114
|
+
// 1. Store in database (primary storage)
|
|
80
115
|
this.database.setToken(REFRESH_TOKEN_CACHE_KEY, {
|
|
81
116
|
accessToken: '',
|
|
82
117
|
expiresAt,
|
|
83
118
|
refreshToken: data.refresh_token,
|
|
84
119
|
tokenType: data.token_type,
|
|
85
120
|
});
|
|
86
|
-
|
|
121
|
+
logger_1.logger.debug('✓ Token saved to database');
|
|
122
|
+
// 2. Store in file system (unified storage)
|
|
123
|
+
try {
|
|
124
|
+
const { saveTokenToStorage } = await Promise.resolve().then(() => __importStar(require('../utils/token-manager')));
|
|
125
|
+
const databasePath = this.database ? this.database.databasePath : undefined;
|
|
126
|
+
saveTokenToStorage(data.refresh_token, databasePath);
|
|
127
|
+
logger_1.logger.debug('✓ Token saved to file system');
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
logger_1.logger.warn('Failed to save token to file system', {
|
|
131
|
+
error: error instanceof Error ? error.message : String(error),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
// 3. Auto-update config file to ensure refresh token never expires
|
|
87
135
|
// This is the key to "one-time setup, forever working" solution
|
|
88
136
|
if (this.configPath) {
|
|
89
137
|
try {
|
|
90
138
|
await (0, login_helper_1.updateConfigWithToken)(this.configPath, data.refresh_token);
|
|
91
|
-
logger_1.logger.
|
|
139
|
+
logger_1.logger.debug('✓ Config file automatically updated with new refresh token');
|
|
92
140
|
}
|
|
93
141
|
catch (error) {
|
|
94
142
|
logger_1.logger.warn('Failed to update config file with new refresh token', {
|
|
95
143
|
error: error instanceof Error ? error.message : String(error),
|
|
96
144
|
});
|
|
97
|
-
// Don't throw -
|
|
145
|
+
// Don't throw - other storage updates succeeded
|
|
98
146
|
}
|
|
99
147
|
}
|
|
148
|
+
logger_1.logger.info('✓ Refresh token updated in all storage locations');
|
|
100
149
|
}
|
|
101
150
|
logger_1.logger.info('Refreshed Pixiv access token');
|
|
102
151
|
return stored;
|