agenticpool 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -49
- package/dist/api/ApiClient.js +15 -15
- package/dist/commands/auth.js +21 -20
- package/dist/commands/conversations.js +109 -71
- package/dist/commands/messages.js +51 -25
- package/dist/commands/networks.js +116 -78
- package/dist/config/ConfigManager.js +10 -12
- package/dist/datamodel/toon/index.js +153 -7
- package/dist/index.js +7 -2
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.js +34 -0
- package/package.json +2 -1
|
@@ -32,15 +32,12 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
36
|
exports.configManager = exports.ConfigManager = void 0;
|
|
40
37
|
const path = __importStar(require("path"));
|
|
41
38
|
const os = __importStar(require("os"));
|
|
42
39
|
const fs = __importStar(require("fs-extra"));
|
|
43
|
-
const
|
|
40
|
+
const logger_1 = require("../utils/logger");
|
|
44
41
|
const CONFIG_DIR = path.join(os.homedir(), '.agenticpool');
|
|
45
42
|
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
|
|
46
43
|
const CREDENTIALS_DIR = path.join(CONFIG_DIR, 'credentials');
|
|
@@ -56,30 +53,29 @@ class ConfigManager {
|
|
|
56
53
|
if (this.initialized || this.initializing)
|
|
57
54
|
return;
|
|
58
55
|
this.initializing = true;
|
|
59
|
-
|
|
56
|
+
logger_1.logger.debug(`Initializing ConfigManager. Path: ${CONFIG_DIR}`);
|
|
60
57
|
try {
|
|
61
58
|
await fs.ensureDir(CONFIG_DIR);
|
|
62
59
|
await fs.ensureDir(CREDENTIALS_DIR);
|
|
63
60
|
await fs.ensureDir(PROFILES_DIR);
|
|
64
61
|
await fs.ensureDir(CACHE_DIR);
|
|
65
62
|
if (!(await fs.pathExists(CONFIG_FILE))) {
|
|
66
|
-
|
|
63
|
+
logger_1.logger.debug('Creating default config file');
|
|
67
64
|
const defaultConfig = {
|
|
68
65
|
apiUrl: 'https://api.agenticpool.net',
|
|
69
66
|
defaultFormat: 'toon'
|
|
70
67
|
};
|
|
71
|
-
// Use fs directly to avoid recursion
|
|
72
68
|
await fs.writeJson(CONFIG_FILE, defaultConfig, { spaces: 2 });
|
|
73
69
|
}
|
|
74
70
|
if (!(await fs.pathExists(NETWORKS_FILE))) {
|
|
75
|
-
|
|
71
|
+
logger_1.logger.debug('Creating default networks file');
|
|
76
72
|
await fs.writeFile(NETWORKS_FILE, '# Registered AgenticPool Networks\n\n');
|
|
77
73
|
}
|
|
78
74
|
this.initialized = true;
|
|
79
|
-
|
|
75
|
+
logger_1.logger.debug('ConfigManager initialized');
|
|
80
76
|
}
|
|
81
77
|
catch (e) {
|
|
82
|
-
|
|
78
|
+
logger_1.logger.debug(`ConfigManager init failed: ${e instanceof Error ? e.message : 'Unknown'}`);
|
|
83
79
|
throw e;
|
|
84
80
|
}
|
|
85
81
|
finally {
|
|
@@ -92,7 +88,7 @@ class ConfigManager {
|
|
|
92
88
|
}
|
|
93
89
|
async saveGlobalConfig(config) {
|
|
94
90
|
await this.init();
|
|
95
|
-
|
|
91
|
+
logger_1.logger.debug('Saving global config');
|
|
96
92
|
await fs.writeJson(CONFIG_FILE, config, { spaces: 2 });
|
|
97
93
|
}
|
|
98
94
|
async setApiUrl(url) {
|
|
@@ -115,10 +111,12 @@ class ConfigManager {
|
|
|
115
111
|
async saveCredentials(networkId, credentials) {
|
|
116
112
|
await this.init();
|
|
117
113
|
const credFile = path.join(CREDENTIALS_DIR, `${networkId}.json`);
|
|
114
|
+
logger_1.logger.debug(`Saving credentials for ${networkId}`);
|
|
118
115
|
await fs.writeJson(credFile, credentials, { spaces: 2 });
|
|
119
116
|
}
|
|
120
117
|
async addRegisteredNetwork(networkId, reason) {
|
|
121
118
|
await this.init();
|
|
119
|
+
logger_1.logger.debug(`Registering network in local history: ${networkId}`);
|
|
122
120
|
const content = await fs.readFile(NETWORKS_FILE, 'utf-8');
|
|
123
121
|
const lines = content.split('\n');
|
|
124
122
|
const entryPrefix = `- ${networkId}`;
|
|
@@ -181,4 +179,4 @@ class ConfigManager {
|
|
|
181
179
|
}
|
|
182
180
|
exports.ConfigManager = ConfigManager;
|
|
183
181
|
exports.configManager = new ConfigManager();
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvQ29uZmlnTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsdUNBQXlCO0FBQ3pCLDZDQUErQjtBQUUvQixrREFBMEI7QUFFMUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDM0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDekQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDN0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFrQjNELE1BQWEsYUFBYTtJQUExQjtRQUNVLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBMEovQixDQUFDO0lBeEpDLEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUVsRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxJQUFJLENBQUMsNkNBQTZDLFVBQVUsRUFBRSxDQUFDLENBQUMs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QUNwQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDdEQsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUE1SkQsc0NBNEpDO0FBRVksUUFBQSxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBBdXRoVG9rZW5zIH0gZnJvbSAnLi4vZGF0YW1vZGVsJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmNvbnN0IENPTkZJR19ESVIgPSBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCAnLmFnZW50aWNwb29sJyk7XG5jb25zdCBDT05GSUdfRklMRSA9IHBhdGguam9pbihDT05GSUdfRElSLCAnY29uZmlnLmpzb24nKTtcbmNvbnN0IENSRURFTlRJQUxTX0RJUiA9IHBhdGguam9pbihDT05GSUdfRElSLCAnY3JlZGVudGlhbHMnKTtcbmNvbnN0IFBST0ZJTEVTX0RJUiA9IHBhdGguam9pbihDT05GSUdfRElSLCAncHJvZmlsZXMnKTtcbmNvbnN0IENBQ0hFX0RJUiA9IHBhdGguam9pbihDT05GSUdfRElSLCAnY2FjaGUnKTtcbmNvbnN0IE5FVFdPUktTX0ZJTEUgPSBwYXRoLmpvaW4oQ09ORklHX0RJUiwgJ25ldHdvcmtzLm1kJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xvYmFsQ29uZmlnIHtcbiAgYXBpVXJsOiBzdHJpbmc7XG4gIGRlZmF1bHRGb3JtYXQ6ICd0b29uJyB8ICdqc29uJztcbiAgaHVtYW5zQXBpVXJsPzogc3RyaW5nO1xuICBodW1hblVpZD86IHN0cmluZztcbiAgaHVtYW5Kd3Q/OiBzdHJpbmc7XG4gIGh1bWFuSnd0RXhwaXJlc0F0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtDcmVkZW50aWFscyB7XG4gIHB1YmxpY1Rva2VuOiBzdHJpbmc7XG4gIHByaXZhdGVLZXk6IHN0cmluZztcbiAgand0Pzogc3RyaW5nO1xuICBleHBpcmVzQXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBDb25maWdNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIGluaXRpYWxpemluZyA9IGZhbHNlO1xuXG4gIGFzeW5jIGluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQgfHwgdGhpcy5pbml0aWFsaXppbmcpIHJldHVybjtcbiAgICBcbiAgICB0aGlzLmluaXRpYWxpemluZyA9IHRydWU7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZ3JheShgW0RFQlVHXSBJbml0aWFsaXppbmcgQ29uZmlnTWFuYWdlci4gUGF0aDogJHtDT05GSUdfRElSfWApKTtcbiAgICBcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMuZW5zdXJlRGlyKENPTkZJR19ESVIpO1xuICAgICAgYXdhaXQgZnMuZW5zdXJlRGlyKENSRURFTlRJQUxTX0RJUik7XG4gICAgICBhd2FpdCBmcy5lbnN1cmVEaXIoUFJPRklMRVNfRElSKTtcbiAgICAgIGF3YWl0IGZzLmVuc3VyZURpcihDQUNIRV9ESVIpO1xuICAgICAgXG4gICAgICBpZiAoIShhd2FpdCBmcy5wYXRoRXhpc3RzKENPTkZJR19GSUxFKSkpIHtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnW0RFQlVHXSBDcmVhdGluZyBkZWZhdWx0IGNvbmZpZyBmaWxlJykpO1xuICAgICAgICBjb25zdCBkZWZhdWx0Q29uZmlnOiBHbG9iYWxDb25maWcgPSB7XG4gICAgICAgICAgYXBpVXJsOiAnaHR0cHM6Ly9hcGkuYWdlbnRpY3Bvb2wubmV0JyxcbiAgICAgICAgICBkZWZhdWx0Rm9ybWF0OiAndG9vbidcbiAgICAgICAgfTtcbiAgICAgICAgLy8gVXNlIGZzIGRpcmVjdGx5IHRvIGF2b2lkIHJlY3Vyc2lvblxuICAgICAgICBhd2FpdCBmcy53cml0ZUpzb24oQ09ORklHX0ZJTEUsIGRlZmF1bHRDb25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoIShhd2FpdCBmcy5wYXRoRXhpc3RzKE5FVFdPUktTX0ZJTEUpKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCdbREVCVUddIENyZWF0aW5nIGRlZmF1bHQgbmV0d29ya3MgZmlsZScpKTtcbiAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKE5FVFdPUktTX0ZJTEUsICcjIFJlZ2lzdGVyZWQgQWdlbnRpY1Bvb2wgTmV0d29ya3NcXG5cXG4nKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCdbREVCVUddIENvbmZpZ01hbmFnZXIgaW5pdGlhbGl6ZWQnKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsucmVkKGBbREVCVUddIENvbmZpZ01hbmFnZXIgaW5pdCBmYWlsZWQ6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogJ1Vua25vd24nfWApKTtcbiAgICAgIHRocm93IGU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0R2xvYmFsQ29uZmlnKCk6IFByb21pc2U8R2xvYmFsQ29uZmlnPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgcmV0dXJuIGZzLnJlYWRKc29uKENPTkZJR19GSUxFKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVHbG9iYWxDb25maWcoY29uZmlnOiBHbG9iYWxDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCdbREVCVUddIFNhdmluZyBnbG9iYWwgY29uZmlnJykpO1xuICAgIGF3YWl0IGZzLndyaXRlSnNvbihDT05GSUdfRklMRSwgY29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgfVxuXG4gIGFzeW5jIHNldEFwaVVybCh1cmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHRoaXMuZ2V0R2xvYmFsQ29uZmlnKCk7XG4gICAgY29uZmlnLmFwaVVybCA9IHVybDtcbiAgICBhd2FpdCB0aGlzLnNhdmVHbG9iYWxDb25maWcoY29uZmlnKTtcbiAgfVxuXG4gIGFzeW5jIGdldENyZWRlbnRpYWxzKG5ldHdvcmtJZDogc3RyaW5nKTogUHJvbWlzZTxOZXR3b3JrQ3JlZGVudGlhbHMgfCBudWxsPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgY3JlZEZpbGUgPSBwYXRoLmpvaW4oQ1JFREVOVElBTFNfRElSLCBgJHtuZXR3b3JrSWR9Lmpzb25gKTtcbiAgICBcbiAgICBpZiAoIShhd2FpdCBmcy5wYXRoRXhpc3RzKGNyZWRGaWxlKSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBjcmVkcyA9IGF3YWl0IGZzLnJlYWRKc29uKGNyZWRGaWxlKTtcbiAgICBcbiAgICBpZiAoY3JlZHMuZXhwaXJlc0F0ICYmIERhdGUubm93KCkgPiBjcmVkcy5leHBpcmVzQXQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gY3JlZHM7XG4gIH1cblxuICBhc3luYyBzYXZlQ3JlZGVudGlhbHMobmV0d29ya0lkOiBzdHJpbmcsIGNyZWRlbnRpYWxzOiBOZXR3b3JrQ3JlZGVudGlhbHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBjcmVkRmlsZSA9IHBhdGguam9pbihDUkVERU5USUFMU19ESVIsIGAke25ldHdvcmtJZH0uanNvbmApO1xuICAgIGF3YWl0IGZzLndyaXRlSnNvbihjcmVkRmlsZSwgY3JlZGVudGlhbHMsIHsgc3BhY2VzOiAyIH0pO1xuICB9XG5cbiAgYXN5bmMgYWRkUmVnaXN0ZXJlZE5ldHdvcmsobmV0d29ya0lkOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShORVRXT1JLU19GSUxFLCAndXRmLTgnKTtcbiAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgIFxuICAgIGNvbnN0IGVudHJ5UHJlZml4ID0gYC0gJHtuZXR3b3JrSWR9YDtcbiAgICBjb25zdCBmdWxsRW50cnkgPSBgLSAke25ldHdvcmtJZH0ke3JlYXNvbiA/IGAgfCBSZWFzb246ICR7cmVhc29ufWAgOiAnJ31gO1xuICAgIFxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBsaW5lcy5maW5kSW5kZXgobGluZSA9PiBsaW5lLnRyaW0oKS5zdGFydHNXaXRoKGVudHJ5UHJlZml4KSk7XG4gICAgXG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICBsaW5lc1tleGlzdGluZ0luZGV4XSA9IGZ1bGxFbnRyeTtcbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShORVRXT1JLU19GSUxFLCBsaW5lcy5qb2luKCdcXG4nKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGZzLmFwcGVuZEZpbGUoTkVUV09SS1NfRklMRSwgYCR7ZnVsbEVudHJ5fVxcbmApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldFJlZ2lzdGVyZWROZXR3b3JrcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKE5FVFdPUktTX0ZJTEUsICd1dGYtOCcpO1xuICAgIHJldHVybiBjb250ZW50XG4gICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAuZmlsdGVyKGxpbmUgPT4gbGluZS5zdGFydHNXaXRoKCctICcpKVxuICAgICAgLm1hcChsaW5lID0+IGxpbmUucmVwbGFjZSgnLSAnLCAnJykudHJpbSgpKTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFyQ3JlZGVudGlhbHMobmV0d29ya0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBjcmVkRmlsZSA9IHBhdGguam9pbihDUkVERU5USUFMU19ESVIsIGAke25ldHdvcmtJZH0uanNvbmApO1xuICAgIGF3YWl0IGZzLnJlbW92ZShjcmVkRmlsZSk7XG4gIH1cblxuICBhc3luYyBnZXRQcm9maWxlKG5ldHdvcmtJZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgcHJvZmlsZUZpbGUgPSBwYXRoLmpvaW4oUFJPRklMRVNfRElSLCBgJHtuZXR3b3JrSWR9Lm1kYCk7XG4gICAgXG4gICAgaWYgKCEoYXdhaXQgZnMucGF0aEV4aXN0cyhwcm9maWxlRmlsZSkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGZzLnJlYWRGaWxlKHByb2ZpbGVGaWxlLCAndXRmLTgnKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVQcm9maWxlKG5ldHdvcmtJZDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBwcm9maWxlRmlsZSA9IHBhdGguam9pbihQUk9GSUxFU19ESVIsIGAke25ldHdvcmtJZH0ubWRgKTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUocHJvZmlsZUZpbGUsIGNvbnRlbnQpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q2FjaGU8VD4oa2V5OiBzdHJpbmcpOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgY2FjaGVGaWxlID0gcGF0aC5qb2luKENBQ0hFX0RJUiwgYCR7a2V5fS5qc29uYCk7XG4gICAgXG4gICAgaWYgKCEoYXdhaXQgZnMucGF0aEV4aXN0cyhjYWNoZUZpbGUpKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBmcy5yZWFkSnNvbihjYWNoZUZpbGUpO1xuICB9XG5cbiAgYXN5bmMgc2V0Q2FjaGU8VD4oa2V5OiBzdHJpbmcsIGRhdGE6IFQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBjYWNoZUZpbGUgPSBwYXRoLmpvaW4oQ0FDSEVfRElSLCBgJHtrZXl9Lmpzb25gKTtcbiAgICBhd2FpdCBmcy53cml0ZUpzb24oY2FjaGVGaWxlLCBkYXRhLCB7IHNwYWNlczogMiB9KTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFyQ2FjaGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgYXdhaXQgZnMuZW1wdHlEaXIoQ0FDSEVfRElSKTtcbiAgfVxuXG4gIGdldENvbmZpZ1BhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQ09ORklHX0RJUjtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY29uZmlnTWFuYWdlciA9IG5ldyBDb25maWdNYW5hZ2VyKCk7XG4iXX0=
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvQ29uZmlnTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsdUNBQXlCO0FBQ3pCLDZDQUErQjtBQUUvQiw0Q0FBeUM7QUFFekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDM0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDekQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDN0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFrQjNELE1BQWEsYUFBYTtJQUExQjtRQUNVLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBMkovQixDQUFDO0lBekpDLEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUVsRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixlQUFNLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRWhFLElBQUksQ0FBQztZQUNILE1B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Q0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUN0RCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVTtRQUNkLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQTdKRCxzQ0E2SkM7QUFFWSxRQUFBLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IEF1dGhUb2tlbnMgfSBmcm9tICcuLi9kYXRhbW9kZWwnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyJztcblxuY29uc3QgQ09ORklHX0RJUiA9IHBhdGguam9pbihvcy5ob21lZGlyKCksICcuYWdlbnRpY3Bvb2wnKTtcbmNvbnN0IENPTkZJR19GSUxFID0gcGF0aC5qb2luKENPTkZJR19ESVIsICdjb25maWcuanNvbicpO1xuY29uc3QgQ1JFREVOVElBTFNfRElSID0gcGF0aC5qb2luKENPTkZJR19ESVIsICdjcmVkZW50aWFscycpO1xuY29uc3QgUFJPRklMRVNfRElSID0gcGF0aC5qb2luKENPTkZJR19ESVIsICdwcm9maWxlcycpO1xuY29uc3QgQ0FDSEVfRElSID0gcGF0aC5qb2luKENPTkZJR19ESVIsICdjYWNoZScpO1xuY29uc3QgTkVUV09SS1NfRklMRSA9IHBhdGguam9pbihDT05GSUdfRElSLCAnbmV0d29ya3MubWQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxDb25maWcge1xuICBhcGlVcmw6IHN0cmluZztcbiAgZGVmYXVsdEZvcm1hdDogJ3Rvb24nIHwgJ2pzb24nO1xuICBodW1hbnNBcGlVcmw/OiBzdHJpbmc7XG4gIGh1bWFuVWlkPzogc3RyaW5nO1xuICBodW1hbkp3dD86IHN0cmluZztcbiAgaHVtYW5Kd3RFeHBpcmVzQXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya0NyZWRlbnRpYWxzIHtcbiAgcHVibGljVG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZUtleTogc3RyaW5nO1xuICBqd3Q/OiBzdHJpbmc7XG4gIGV4cGlyZXNBdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIENvbmZpZ01hbmFnZXIge1xuICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgaW5pdGlhbGl6aW5nID0gZmFsc2U7XG5cbiAgYXN5bmMgaW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCB8fCB0aGlzLmluaXRpYWxpemluZykgcmV0dXJuO1xuICAgIFxuICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gdHJ1ZTtcbiAgICBsb2dnZXIuZGVidWcoYEluaXRpYWxpemluZyBDb25maWdNYW5hZ2VyLiBQYXRoOiAke0NPTkZJR19ESVJ9YCk7XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZzLmVuc3VyZURpcihDT05GSUdfRElSKTtcbiAgICAgIGF3YWl0IGZzLmVuc3VyZURpcihDUkVERU5USUFMU19ESVIpO1xuICAgICAgYXdhaXQgZnMuZW5zdXJlRGlyKFBST0ZJTEVTX0RJUik7XG4gICAgICBhd2FpdCBmcy5lbnN1cmVEaXIoQ0FDSEVfRElSKTtcbiAgICAgIFxuICAgICAgaWYgKCEoYXdhaXQgZnMucGF0aEV4aXN0cyhDT05GSUdfRklMRSkpKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnQ3JlYXRpbmcgZGVmYXVsdCBjb25maWcgZmlsZScpO1xuICAgICAgICBjb25zdCBkZWZhdWx0Q29uZmlnOiBHbG9iYWxDb25maWcgPSB7XG4gICAgICAgICAgYXBpVXJsOiAnaHR0cHM6Ly9hcGkuYWdlbnRpY3Bvb2wubmV0JyxcbiAgICAgICAgICBkZWZhdWx0Rm9ybWF0OiAndG9vbidcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgZnMud3JpdGVKc29uKENPTkZJR19GSUxFLCBkZWZhdWx0Q29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEoYXdhaXQgZnMucGF0aEV4aXN0cyhORVRXT1JLU19GSUxFKSkpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKCdDcmVhdGluZyBkZWZhdWx0IG5ldHdvcmtzIGZpbGUnKTtcbiAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKE5FVFdPUktTX0ZJTEUsICcjIFJlZ2lzdGVyZWQgQWdlbnRpY1Bvb2wgTmV0d29ya3NcXG5cXG4nKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICBsb2dnZXIuZGVidWcoJ0NvbmZpZ01hbmFnZXIgaW5pdGlhbGl6ZWQnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYENvbmZpZ01hbmFnZXIgaW5pdCBmYWlsZWQ6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogJ1Vua25vd24nfWApO1xuICAgICAgdGhyb3cgZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pbml0aWFsaXppbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRHbG9iYWxDb25maWcoKTogUHJvbWlzZTxHbG9iYWxDb25maWc+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICByZXR1cm4gZnMucmVhZEpzb24oQ09ORklHX0ZJTEUpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUdsb2JhbENvbmZpZyhjb25maWc6IEdsb2JhbENvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgIGxvZ2dlci5kZWJ1ZygnU2F2aW5nIGdsb2JhbCBjb25maWcnKTtcbiAgICBhd2FpdCBmcy53cml0ZUpzb24oQ09ORklHX0ZJTEUsIGNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gIH1cblxuICBhc3luYyBzZXRBcGlVcmwodXJsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjb25maWcgPSBhd2FpdCB0aGlzLmdldEdsb2JhbENvbmZpZygpO1xuICAgIGNvbmZpZy5hcGlVcmwgPSB1cmw7XG4gICAgYXdhaXQgdGhpcy5zYXZlR2xvYmFsQ29uZmlnKGNvbmZpZyk7XG4gIH1cblxuICBhc3luYyBnZXRDcmVkZW50aWFscyhuZXR3b3JrSWQ6IHN0cmluZyk6IFByb21pc2U8TmV0d29ya0NyZWRlbnRpYWxzIHwgbnVsbD4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgIGNvbnN0IGNyZWRGaWxlID0gcGF0aC5qb2luKENSRURFTlRJQUxTX0RJUiwgYCR7bmV0d29ya0lkfS5qc29uYCk7XG4gICAgXG4gICAgaWYgKCEoYXdhaXQgZnMucGF0aEV4aXN0cyhjcmVkRmlsZSkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgY3JlZHMgPSBhd2FpdCBmcy5yZWFkSnNvbihjcmVkRmlsZSk7XG4gICAgXG4gICAgaWYgKGNyZWRzLmV4cGlyZXNBdCAmJiBEYXRlLm5vdygpID4gY3JlZHMuZXhwaXJlc0F0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGNyZWRzO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUNyZWRlbnRpYWxzKG5ldHdvcmtJZDogc3RyaW5nLCBjcmVkZW50aWFsczogTmV0d29ya0NyZWRlbnRpYWxzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgY3JlZEZpbGUgPSBwYXRoLmpvaW4oQ1JFREVOVElBTFNfRElSLCBgJHtuZXR3b3JrSWR9Lmpzb25gKTtcbiAgICBsb2dnZXIuZGVidWcoYFNhdmluZyBjcmVkZW50aWFscyBmb3IgJHtuZXR3b3JrSWR9YCk7XG4gICAgYXdhaXQgZnMud3JpdGVKc29uKGNyZWRGaWxlLCBjcmVkZW50aWFscywgeyBzcGFjZXM6IDIgfSk7XG4gIH1cblxuICBhc3luYyBhZGRSZWdpc3RlcmVkTmV0d29yayhuZXR3b3JrSWQ6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgbG9nZ2VyLmRlYnVnKGBSZWdpc3RlcmluZyBuZXR3b3JrIGluIGxvY2FsIGhpc3Rvcnk6ICR7bmV0d29ya0lkfWApO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShORVRXT1JLU19GSUxFLCAndXRmLTgnKTtcbiAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgIFxuICAgIGNvbnN0IGVudHJ5UHJlZml4ID0gYC0gJHtuZXR3b3JrSWR9YDtcbiAgICBjb25zdCBmdWxsRW50cnkgPSBgLSAke25ldHdvcmtJZH0ke3JlYXNvbiA/IGAgfCBSZWFzb246ICR7cmVhc29ufWAgOiAnJ31gO1xuICAgIFxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBsaW5lcy5maW5kSW5kZXgobGluZSA9PiBsaW5lLnRyaW0oKS5zdGFydHNXaXRoKGVudHJ5UHJlZml4KSk7XG4gICAgXG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICBsaW5lc1tleGlzdGluZ0luZGV4XSA9IGZ1bGxFbnRyeTtcbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShORVRXT1JLU19GSUxFLCBsaW5lcy5qb2luKCdcXG4nKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGZzLmFwcGVuZEZpbGUoTkVUV09SS1NfRklMRSwgYCR7ZnVsbEVudHJ5fVxcbmApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldFJlZ2lzdGVyZWROZXR3b3JrcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKE5FVFdPUktTX0ZJTEUsICd1dGYtOCcpO1xuICAgIHJldHVybiBjb250ZW50XG4gICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAuZmlsdGVyKGxpbmUgPT4gbGluZS5zdGFydHNXaXRoKCctICcpKVxuICAgICAgLm1hcChsaW5lID0+IGxpbmUucmVwbGFjZSgnLSAnLCAnJykudHJpbSgpKTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFyQ3JlZGVudGlhbHMobmV0d29ya0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBjcmVkRmlsZSA9IHBhdGguam9pbihDUkVERU5USUFMU19ESVIsIGAke25ldHdvcmtJZH0uanNvbmApO1xuICAgIGF3YWl0IGZzLnJlbW92ZShjcmVkRmlsZSk7XG4gIH1cblxuICBhc3luYyBnZXRQcm9maWxlKG5ldHdvcmtJZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgcHJvZmlsZUZpbGUgPSBwYXRoLmpvaW4oUFJPRklMRVNfRElSLCBgJHtuZXR3b3JrSWR9Lm1kYCk7XG4gICAgXG4gICAgaWYgKCEoYXdhaXQgZnMucGF0aEV4aXN0cyhwcm9maWxlRmlsZSkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGZzLnJlYWRGaWxlKHByb2ZpbGVGaWxlLCAndXRmLTgnKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVQcm9maWxlKG5ldHdvcmtJZDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBwcm9maWxlRmlsZSA9IHBhdGguam9pbihQUk9GSUxFU19ESVIsIGAke25ldHdvcmtJZH0ubWRgKTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUocHJvZmlsZUZpbGUsIGNvbnRlbnQpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q2FjaGU8VD4oa2V5OiBzdHJpbmcpOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgY2FjaGVGaWxlID0gcGF0aC5qb2luKENBQ0hFX0RJUiwgYCR7a2V5fS5qc29uYCk7XG4gICAgXG4gICAgaWYgKCEoYXdhaXQgZnMucGF0aEV4aXN0cyhjYWNoZUZpbGUpKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBmcy5yZWFkSnNvbihjYWNoZUZpbGUpO1xuICB9XG5cbiAgYXN5bmMgc2V0Q2FjaGU8VD4oa2V5OiBzdHJpbmcsIGRhdGE6IFQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBjYWNoZUZpbGUgPSBwYXRoLmpvaW4oQ0FDSEVfRElSLCBgJHtrZXl9Lmpzb25gKTtcbiAgICBhd2FpdCBmcy53cml0ZUpzb24oY2FjaGVGaWxlLCBkYXRhLCB7IHNwYWNlczogMiB9KTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFyQ2FjaGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgYXdhaXQgZnMuZW1wdHlEaXIoQ0FDSEVfRElSKTtcbiAgfVxuXG4gIGdldENvbmZpZ1BhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQ09ORklHX0RJUjtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY29uZmlnTWFuYWdlciA9IG5ldyBDb25maWdNYW5hZ2VyKCk7XG4iXX0=
|
|
@@ -6,19 +6,165 @@ exports.isToonFormat = isToonFormat;
|
|
|
6
6
|
exports.safeEncode = safeEncode;
|
|
7
7
|
exports.safeDecode = safeDecode;
|
|
8
8
|
function encode(data) {
|
|
9
|
-
|
|
9
|
+
if (data === null || data === undefined) {
|
|
10
|
+
return "null";
|
|
11
|
+
}
|
|
12
|
+
if (typeof data === "boolean") {
|
|
13
|
+
return data ? "true" : "false";
|
|
14
|
+
}
|
|
15
|
+
if (typeof data === "number") {
|
|
16
|
+
return String(data);
|
|
17
|
+
}
|
|
18
|
+
if (typeof data === "string") {
|
|
19
|
+
if (/^[a-zA-Z0-9_-]+$/.test(data) && data.length < 50) {
|
|
20
|
+
return data;
|
|
21
|
+
}
|
|
22
|
+
return `"${data}"`;
|
|
23
|
+
}
|
|
24
|
+
if (Array.isArray(data)) {
|
|
25
|
+
if (data.length === 0) {
|
|
26
|
+
return "[]";
|
|
27
|
+
}
|
|
28
|
+
const firstItem = data[0];
|
|
29
|
+
if (typeof firstItem === "object" && firstItem !== null && !Array.isArray(firstItem)) {
|
|
30
|
+
const keys = Object.keys(firstItem);
|
|
31
|
+
const header = `[${data.length}]{${keys.join(",")}}:`;
|
|
32
|
+
const lines = data.map((item) => {
|
|
33
|
+
const values = keys.map((key) => encode(item[key]));
|
|
34
|
+
return values.join(",");
|
|
35
|
+
});
|
|
36
|
+
return header + "\n" + lines.map((line) => ` ${line}`).join("\n");
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return `[${data.length}]:` + data.map((item) => encode(item)).join(",");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (typeof data === "object") {
|
|
43
|
+
const obj = data;
|
|
44
|
+
const keys = Object.keys(obj);
|
|
45
|
+
if (keys.length === 0) {
|
|
46
|
+
return "{}";
|
|
47
|
+
}
|
|
48
|
+
const lines = keys.map((key) => {
|
|
49
|
+
const val = encode(obj[key]);
|
|
50
|
+
return `${key}:${val}`;
|
|
51
|
+
});
|
|
52
|
+
return lines.join("\n");
|
|
53
|
+
}
|
|
54
|
+
return String(data);
|
|
10
55
|
}
|
|
11
56
|
function decode(str) {
|
|
12
|
-
|
|
57
|
+
if (!str)
|
|
58
|
+
return null;
|
|
59
|
+
const trimmed = str.trim();
|
|
60
|
+
// Try JSON first if it looks like JSON
|
|
61
|
+
if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
|
|
62
|
+
try {
|
|
63
|
+
return JSON.parse(trimmed);
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
// Not JSON, continue to TOON
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const lines = trimmed.split("\n");
|
|
70
|
+
const firstLine = lines[0].trim();
|
|
71
|
+
// Tabular array [count]{key1,key2}:
|
|
72
|
+
if (firstLine.startsWith("[") && firstLine.includes("]{")) {
|
|
73
|
+
const headerMatch = firstLine.match(/^\[(\d+)\]\{([^}]+)\}:$/);
|
|
74
|
+
if (headerMatch) {
|
|
75
|
+
const keys = headerMatch[2].split(",").map((k) => k.trim());
|
|
76
|
+
const result = [];
|
|
77
|
+
for (let i = 1; i < lines.length; i++) {
|
|
78
|
+
const line = lines[i].trim();
|
|
79
|
+
if (!line)
|
|
80
|
+
continue;
|
|
81
|
+
const values = parseCommaSeparated(line);
|
|
82
|
+
const item = {};
|
|
83
|
+
keys.forEach((key, j) => {
|
|
84
|
+
if (j < values.length) {
|
|
85
|
+
item[key] = parseValue(values[j]);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
result.push(item);
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Simple array [count]:val1,val2
|
|
94
|
+
if (firstLine.startsWith("[") && firstLine.includes("]:")) {
|
|
95
|
+
const headerMatch = firstLine.match(/^\[(\d+)\]:(.*)$/);
|
|
96
|
+
if (headerMatch) {
|
|
97
|
+
const remaining = headerMatch[2] + (lines.length > 1 ? lines.slice(1).join("\n") : "");
|
|
98
|
+
const values = parseCommaSeparated(remaining.trim());
|
|
99
|
+
return values.map(parseValue);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Object key:value
|
|
103
|
+
if (lines.some(l => l.includes(':'))) {
|
|
104
|
+
const result = {};
|
|
105
|
+
let hasKeys = false;
|
|
106
|
+
for (const line of lines) {
|
|
107
|
+
const part = line.trim();
|
|
108
|
+
if (!part)
|
|
109
|
+
continue;
|
|
110
|
+
const colonIndex = part.indexOf(":");
|
|
111
|
+
if (colonIndex > 0) {
|
|
112
|
+
const key = part.substring(0, colonIndex).trim();
|
|
113
|
+
const value = part.substring(colonIndex + 1).trim();
|
|
114
|
+
result[key] = parseValue(value);
|
|
115
|
+
hasKeys = true;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (hasKeys)
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
return parseValue(trimmed);
|
|
122
|
+
}
|
|
123
|
+
function parseValue(val) {
|
|
124
|
+
const v = val.trim();
|
|
125
|
+
if (v === "null")
|
|
126
|
+
return null;
|
|
127
|
+
if (v === "true")
|
|
128
|
+
return true;
|
|
129
|
+
if (v === "false")
|
|
130
|
+
return false;
|
|
131
|
+
if (!isNaN(Number(v)) && v !== "")
|
|
132
|
+
return Number(v);
|
|
133
|
+
if (v.startsWith('"') && v.endsWith('"')) {
|
|
134
|
+
return v.substring(1, v.length - 1);
|
|
135
|
+
}
|
|
136
|
+
return v;
|
|
137
|
+
}
|
|
138
|
+
function parseCommaSeparated(str) {
|
|
139
|
+
const result = [];
|
|
140
|
+
let current = "";
|
|
141
|
+
let inQuotes = false;
|
|
142
|
+
for (let i = 0; i < str.length; i++) {
|
|
143
|
+
const char = str[i];
|
|
144
|
+
if (char === '"') {
|
|
145
|
+
inQuotes = !inQuotes;
|
|
146
|
+
current += char;
|
|
147
|
+
}
|
|
148
|
+
else if (char === "," && !inQuotes) {
|
|
149
|
+
result.push(current.trim());
|
|
150
|
+
current = "";
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
current += char;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
result.push(current.trim());
|
|
157
|
+
return result;
|
|
13
158
|
}
|
|
14
159
|
function isToonFormat(content) {
|
|
15
|
-
|
|
16
|
-
|
|
160
|
+
const trimmed = content.trim();
|
|
161
|
+
if (trimmed.startsWith("[") && (trimmed.includes("]{") || trimmed.includes("]:"))) {
|
|
17
162
|
return true;
|
|
18
163
|
}
|
|
19
|
-
|
|
20
|
-
return
|
|
164
|
+
if (trimmed.includes(":") && !trimmed.startsWith("{")) {
|
|
165
|
+
return true;
|
|
21
166
|
}
|
|
167
|
+
return false;
|
|
22
168
|
}
|
|
23
169
|
function safeEncode(data) {
|
|
24
170
|
try {
|
|
@@ -36,4 +182,4 @@ function safeDecode(str) {
|
|
|
36
182
|
return null;
|
|
37
183
|
}
|
|
38
184
|
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YW1vZGVsL3Rvb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3QkFFQztBQUVELHdCQUVDO0FBRUQsb0NBT0M7QUFFRCxnQ0FNQztBQUVELGdDQU1DO0FBL0JELFNBQWdCLE1BQU0sQ0FBQyxJQUFhO0lBQ2xDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsU0FBZ0IsTUFBTSxDQUFjLEdBQVc7SUFDN0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBTSxDQUFDO0FBQzlCLENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUMsT0FBZTtJQUMxQyxJQUFJLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFnQixVQUFVLENBQUMsSUFBYTtJQUN0QyxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLFVBQVUsQ0FBYyxHQUFXO0lBQ2pELElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGVuY29kZShkYXRhOiB1bmtub3duKTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlPFQgPSB1bmtub3duPihzdHI6IHN0cmluZyk6IFQge1xuICByZXR1cm4gSlNPTi5wYXJzZShzdHIpIGFzIFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Rvb25Gb3JtYXQoY29udGVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWZlRW5jb2RlKGRhdGE6IHVua25vd24pOiBzdHJpbmcgfCBudWxsIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW5jb2RlKGRhdGEpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FmZURlY29kZTxUID0gdW5rbm93bj4oc3RyOiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZTxUPihzdHIpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YW1vZGVsL3Rvb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3QkFzREM7QUFFRCx3QkF5RUM7QUFzQ0Qsb0NBU0M7QUFFRCxnQ0FNQztBQUVELGdDQU1DO0FBaE1ELFNBQWdCLE1BQU0sQ0FBQyxJQUFhO0lBQ2xDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDeEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksT0FBTyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDdEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxJQUFJLElBQUksR0FBRyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLFNB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LFNBQWdCLFVBQVUsQ0FBQyxJQUFhO0lBQ3RDLElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUFjLEdBQVc7SUFDakQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUksR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZW5jb2RlKGRhdGE6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAoZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJudWxsXCI7XG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGEgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIGRhdGEgPyBcInRydWVcIiA6IFwiZmFsc2VcIjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBTdHJpbmcoZGF0YSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICBpZiAoL15bYS16QS1aMC05Xy1dKyQvLnRlc3QoZGF0YSkgJiYgZGF0YS5sZW5ndGggPCA1MCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBgXCIke2RhdGF9XCJgO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBcIltdXCI7XG4gICAgfVxuXG4gICAgY29uc3QgZmlyc3RJdGVtID0gZGF0YVswXTtcbiAgICBpZiAodHlwZW9mIGZpcnN0SXRlbSA9PT0gXCJvYmplY3RcIiAmJiBmaXJzdEl0ZW0gIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkoZmlyc3RJdGVtKSkge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGZpcnN0SXRlbSk7XG4gICAgICBjb25zdCBoZWFkZXIgPSBgWyR7ZGF0YS5sZW5ndGh9XXske2tleXMuam9pbihcIixcIil9fTpgO1xuICAgICAgY29uc3QgbGluZXMgPSBkYXRhLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBrZXlzLm1hcCgoa2V5KSA9PiBlbmNvZGUoaXRlbVtrZXldKSk7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuam9pbihcIixcIik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBoZWFkZXIgKyBcIlxcblwiICsgbGluZXMubWFwKChsaW5lKSA9PiBgICAke2xpbmV9YCkuam9pbihcIlxcblwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGBbJHtkYXRhLmxlbmd0aH1dOmAgKyBkYXRhLm1hcCgoaXRlbSkgPT4gZW5jb2RlKGl0ZW0pKS5qb2luKFwiLFwiKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGEgPT09IFwib2JqZWN0XCIpIHtcbiAgICBjb25zdCBvYmogPSBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFwie31cIjtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lcyA9IGtleXMubWFwKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IGVuY29kZShvYmpba2V5XSk7XG4gICAgICByZXR1cm4gYCR7a2V5fToke3ZhbH1gO1xuICAgIH0pO1xuICAgIHJldHVybiBsaW5lcy5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgcmV0dXJuIFN0cmluZyhkYXRhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZTxUID0gdW5rbm93bj4oc3RyOiBzdHJpbmcpOiBUIHtcbiAgaWYgKCFzdHIpIHJldHVybiBudWxsIGFzIHVua25vd24gYXMgVDtcbiAgXG4gIGNvbnN0IHRyaW1tZWQgPSBzdHIudHJpbSgpO1xuICBcbiAgLy8gVHJ5IEpTT04gZmlyc3QgaWYgaXQgbG9va3MgbGlrZSBKU09OXG4gIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZSh0cmltbWVkKSBhcyBUO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIE5vdCBKU09OLCBjb250aW51ZSB0byBUT09OXG4gICAgfVxuICB9XG5cbiAgY29uc3QgbGluZXMgPSB0cmltbWVkLnNwbGl0KFwiXFxuXCIpO1xuICBjb25zdCBmaXJzdExpbmUgPSBsaW5lc1swXS50cmltKCk7XG5cbiAgLy8gVGFidWxhciBhcnJheSBbY291bnRde2tleTEsa2V5Mn06XG4gIGlmIChmaXJzdExpbmUuc3RhcnRzV2l0aChcIltcIikgJiYgZmlyc3RMaW5lLmluY2x1ZGVzKFwiXXtcIikpIHtcbiAgICBjb25zdCBoZWFkZXJNYXRjaCA9IGZpcnN0TGluZS5tYXRjaCgvXlxcWyhcXGQrKVxcXVxceyhbXn1dKylcXH06JC8pO1xuICAgIGlmIChoZWFkZXJNYXRjaCkge1xuICAgICAgY29uc3Qga2V5cyA9IGhlYWRlck1hdGNoWzJdLnNwbGl0KFwiLFwiKS5tYXAoKGspID0+IGsudHJpbSgpKTtcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcbiAgICAgIFxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBsaW5lID0gbGluZXNbaV0udHJpbSgpO1xuICAgICAgICBpZiAoIWxpbmUpIGNvbnRpbnVlO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgdmFsdWVzID0gcGFyc2VDb21tYVNlcGFyYXRlZChsaW5lKTtcbiAgICAgICAgY29uc3QgaXRlbTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleSwgaikgPT4ge1xuICAgICAgICAgIGlmIChqIDwgdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgaXRlbVtrZXldID0gcGFyc2VWYWx1ZSh2YWx1ZXNbal0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdCBhcyB1bmtub3duIGFzIFQ7XG4gICAgfVxuICB9XG5cbiAgLy8gU2ltcGxlIGFycmF5IFtjb3VudF06dmFsMSx2YWwyXG4gIGlmIChmaXJzdExpbmUuc3RhcnRzV2l0aChcIltcIikgJiYgZmlyc3RMaW5lLmluY2x1ZGVzKFwiXTpcIikpIHtcbiAgICBjb25zdCBoZWFkZXJNYXRjaCA9IGZpcnN0TGluZS5tYXRjaCgvXlxcWyhcXGQrKVxcXTooLiopJC8pO1xuICAgIGlmIChoZWFkZXJNYXRjaCkge1xuICAgICAgY29uc3QgcmVtYWluaW5nID0gaGVhZGVyTWF0Y2hbMl0gKyAobGluZXMubGVuZ3RoID4gMSA/IGxpbmVzLnNsaWNlKDEpLmpvaW4oXCJcXG5cIikgOiBcIlwiKTtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHBhcnNlQ29tbWFTZXBhcmF0ZWQocmVtYWluaW5nLnRyaW0oKSk7XG4gICAgICByZXR1cm4gdmFsdWVzLm1hcChwYXJzZVZhbHVlKSBhcyB1bmtub3duIGFzIFQ7XG4gICAgfVxuICB9XG5cbiAgLy8gT2JqZWN0IGtleTp2YWx1ZVxuICBpZiAobGluZXMuc29tZShsID0+IGwuaW5jbHVkZXMoJzonKSkpIHtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICBsZXQgaGFzS2V5cyA9IGZhbHNlO1xuICAgIFxuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgY29uc3QgcGFydCA9IGxpbmUudHJpbSgpO1xuICAgICAgaWYgKCFwYXJ0KSBjb250aW51ZTtcbiAgICAgIFxuICAgICAgY29uc3QgY29sb25JbmRleCA9IHBhcnQuaW5kZXhPZihcIjpcIik7XG4gICAgICBpZiAoY29sb25JbmRleCA+IDApIHtcbiAgICAgICAgY29uc3Qga2V5ID0gcGFydC5zdWJzdHJpbmcoMCwgY29sb25JbmRleCkudHJpbSgpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcnQuc3Vic3RyaW5nKGNvbG9uSW5kZXggKyAxKS50cmltKCk7XG4gICAgICAgIHJlc3VsdFtrZXldID0gcGFyc2VWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGhhc0tleXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAoaGFzS2V5cykgcmV0dXJuIHJlc3VsdCBhcyB1bmtub3duIGFzIFQ7XG4gIH1cblxuICByZXR1cm4gcGFyc2VWYWx1ZSh0cmltbWVkKSBhcyB1bmtub3duIGFzIFQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlVmFsdWUodmFsOiBzdHJpbmcpOiBhbnkge1xuICBjb25zdCB2ID0gdmFsLnRyaW0oKTtcbiAgaWYgKHYgPT09IFwibnVsbFwiKSByZXR1cm4gbnVsbDtcbiAgaWYgKHYgPT09IFwidHJ1ZVwiKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHYgPT09IFwiZmFsc2VcIikgcmV0dXJuIGZhbHNlO1xuICBcbiAgaWYgKCFpc05hTihOdW1iZXIodikpICYmIHYgIT09IFwiXCIpIHJldHVybiBOdW1iZXIodik7XG4gIFxuICBpZiAodi5zdGFydHNXaXRoKCdcIicpICYmIHYuZW5kc1dpdGgoJ1wiJykpIHtcbiAgICByZXR1cm4gdi5zdWJzdHJpbmcoMSwgdi5sZW5ndGggLSAxKTtcbiAgfVxuICBcbiAgcmV0dXJuIHY7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ29tbWFTZXBhcmF0ZWQoc3RyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgbGV0IGN1cnJlbnQgPSBcIlwiO1xuICBsZXQgaW5RdW90ZXMgPSBmYWxzZTtcbiAgXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IHN0cltpXTtcbiAgICBpZiAoY2hhciA9PT0gJ1wiJykge1xuICAgICAgaW5RdW90ZXMgPSAhaW5RdW90ZXM7XG4gICAgICBjdXJyZW50ICs9IGNoYXI7XG4gICAgfSBlbHNlIGlmIChjaGFyID09PSBcIixcIiAmJiAhaW5RdW90ZXMpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGN1cnJlbnQudHJpbSgpKTtcbiAgICAgIGN1cnJlbnQgPSBcIlwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50ICs9IGNoYXI7XG4gICAgfVxuICB9XG4gIHJlc3VsdC5wdXNoKGN1cnJlbnQudHJpbSgpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVG9vbkZvcm1hdChjb250ZW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgdHJpbW1lZCA9IGNvbnRlbnQudHJpbSgpO1xuICBpZiAodHJpbW1lZC5zdGFydHNXaXRoKFwiW1wiKSAmJiAodHJpbW1lZC5pbmNsdWRlcyhcIl17XCIpIHx8IHRyaW1tZWQuaW5jbHVkZXMoXCJdOlwiKSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHJpbW1lZC5pbmNsdWRlcyhcIjpcIikgJiYgIXRyaW1tZWQuc3RhcnRzV2l0aChcIntcIikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWZlRW5jb2RlKGRhdGE6IHVua25vd24pOiBzdHJpbmcgfCBudWxsIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW5jb2RlKGRhdGEpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FmZURlY29kZTxUID0gdW5rbm93bj4oc3RyOiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZTxUPihzdHIpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
|
package/dist/index.js
CHANGED
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
const commander_1 = require("commander");
|
|
5
5
|
const commands_1 = require("./commands");
|
|
6
|
+
const logger_1 = require("./utils/logger");
|
|
6
7
|
const packageJson = require('../package.json');
|
|
7
8
|
const program = new commander_1.Command();
|
|
8
9
|
program
|
|
9
10
|
.name('agenticpool')
|
|
10
11
|
.description('CLI for AgenticPool - Social Network for Agents')
|
|
11
|
-
.version(packageJson.version)
|
|
12
|
+
.version(packageJson.version)
|
|
13
|
+
.option('--debug', 'Enable debug logging', false);
|
|
12
14
|
(0, commands_1.registerAuthCommands)(program);
|
|
13
15
|
(0, commands_1.registerNetworkCommands)(program);
|
|
14
16
|
(0, commands_1.registerProfileCommands)(program);
|
|
@@ -19,5 +21,8 @@ program
|
|
|
19
21
|
(0, commands_1.registerIdentityCommands)(program);
|
|
20
22
|
(0, commands_1.registerContactCommands)(program);
|
|
21
23
|
(0, commands_1.registerHumansCommands)(program);
|
|
24
|
+
program.on('option:debug', () => {
|
|
25
|
+
logger_1.logger.setDebug(true);
|
|
26
|
+
});
|
|
22
27
|
program.parse();
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEseUNBQW9DO0FBQ3BDLHlDQVdvQjtBQUNwQiwyQ0FBd0M7QUFFeEMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFFL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQkFBTyxFQUFFLENBQUM7QUFFOUIsT0FBTztLQUNKLElBQUksQ0FBQyxhQUFhLENBQUM7S0FDbkIsV0FBVyxDQUFDLGlEQUFpRCxDQUFDO0tBQzlELE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO0tBQzVCLE1BQU0sQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFcEQsSUFBQSwrQkFBb0IsRUFBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixJQUFBLGtDQUF1QixFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pDLElBQUEsa0NBQXVCLEVBQUMsT0FBTyxDQUFDLENBQUM7QUFDakMsSUFBQSx1Q0FBNEIsRUFBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxJQUFBLGtDQUF1QixFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pDLElBQUEsaUNBQXNCLEVBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEMsSUFBQSxxQ0FBMEIsRUFBQyxPQUFPLENBQUMsQ0FBQztBQUNwQyxJQUFBLG1DQUF3QixFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2xDLElBQUEsa0NBQXVCLEVBQUMsT0FBTyxDQUFDLENBQUM7QUFDakMsSUFBQSxpQ0FBc0IsRUFBQyxPQUFPLENBQUMsQ0FBQztBQUVoQyxPQUFPLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7SUFDOUIsZUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixDQUFDLENBQUMsQ0FBQztBQUVILE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQge1xuICByZWdpc3RlckF1dGhDb21tYW5kcyxcbiAgcmVnaXN0ZXJOZXR3b3JrQ29tbWFuZHMsXG4gIHJlZ2lzdGVyUHJvZmlsZUNvbW1hbmRzLFxuICByZWdpc3RlckNvbnZlcnNhdGlvbkNvbW1hbmRzLFxuICByZWdpc3Rlck1lc3NhZ2VDb21tYW5kcyxcbiAgcmVnaXN0ZXJDb25maWdDb21tYW5kcyxcbiAgcmVnaXN0ZXJDb25uZWN0aW9uQ29tbWFuZHMsXG4gIHJlZ2lzdGVySWRlbnRpdHlDb21tYW5kcyxcbiAgcmVnaXN0ZXJDb250YWN0Q29tbWFuZHMsXG4gIHJlZ2lzdGVySHVtYW5zQ29tbWFuZHNcbn0gZnJvbSAnLi9jb21tYW5kcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL3V0aWxzL2xvZ2dlcic7XG5cbmNvbnN0IHBhY2thZ2VKc29uID0gcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJyk7XG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG5wcm9ncmFtXG4gIC5uYW1lKCdhZ2VudGljcG9vbCcpXG4gIC5kZXNjcmlwdGlvbignQ0xJIGZvciBBZ2VudGljUG9vbCAtIFNvY2lhbCBOZXR3b3JrIGZvciBBZ2VudHMnKVxuICAudmVyc2lvbihwYWNrYWdlSnNvbi52ZXJzaW9uKVxuICAub3B0aW9uKCctLWRlYnVnJywgJ0VuYWJsZSBkZWJ1ZyBsb2dnaW5nJywgZmFsc2UpO1xuXG5yZWdpc3RlckF1dGhDb21tYW5kcyhwcm9ncmFtKTtcbnJlZ2lzdGVyTmV0d29ya0NvbW1hbmRzKHByb2dyYW0pO1xucmVnaXN0ZXJQcm9maWxlQ29tbWFuZHMocHJvZ3JhbSk7XG5yZWdpc3RlckNvbnZlcnNhdGlvbkNvbW1hbmRzKHByb2dyYW0pO1xucmVnaXN0ZXJNZXNzYWdlQ29tbWFuZHMocHJvZ3JhbSk7XG5yZWdpc3RlckNvbmZpZ0NvbW1hbmRzKHByb2dyYW0pO1xucmVnaXN0ZXJDb25uZWN0aW9uQ29tbWFuZHMocHJvZ3JhbSk7XG5yZWdpc3RlcklkZW50aXR5Q29tbWFuZHMocHJvZ3JhbSk7XG5yZWdpc3RlckNvbnRhY3RDb21tYW5kcyhwcm9ncmFtKTtcbnJlZ2lzdGVySHVtYW5zQ29tbWFuZHMocHJvZ3JhbSk7XG5cbnByb2dyYW0ub24oJ29wdGlvbjpkZWJ1ZycsICgpID0+IHtcbiAgbG9nZ2VyLnNldERlYnVnKHRydWUpO1xufSk7XG5cbnByb2dyYW0ucGFyc2UoKTtcbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare class Logger {
|
|
2
|
+
private debugEnabled;
|
|
3
|
+
setDebug(enabled: boolean): void;
|
|
4
|
+
debug(message: string, ...args: any[]): void;
|
|
5
|
+
error(message: string, ...args: any[]): void;
|
|
6
|
+
success(message: string, ...args: any[]): void;
|
|
7
|
+
info(message: string, ...args: any[]): void;
|
|
8
|
+
warn(message: string, ...args: any[]): void;
|
|
9
|
+
}
|
|
10
|
+
export declare const logger: Logger;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.logger = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
class Logger {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.debugEnabled = false;
|
|
11
|
+
}
|
|
12
|
+
setDebug(enabled) {
|
|
13
|
+
this.debugEnabled = enabled;
|
|
14
|
+
}
|
|
15
|
+
debug(message, ...args) {
|
|
16
|
+
if (this.debugEnabled) {
|
|
17
|
+
console.log(chalk_1.default.gray(`[DEBUG] ${message}`), ...args);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
error(message, ...args) {
|
|
21
|
+
console.error(chalk_1.default.red(message), ...args);
|
|
22
|
+
}
|
|
23
|
+
success(message, ...args) {
|
|
24
|
+
console.log(chalk_1.default.green(message), ...args);
|
|
25
|
+
}
|
|
26
|
+
info(message, ...args) {
|
|
27
|
+
console.log(chalk_1.default.cyan(message), ...args);
|
|
28
|
+
}
|
|
29
|
+
warn(message, ...args) {
|
|
30
|
+
console.log(chalk_1.default.yellow(message), ...args);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.logger = new Logger();
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFFMUIsTUFBTSxNQUFNO0lBQVo7UUFDVSxpQkFBWSxHQUFHLEtBQUssQ0FBQztJQTJCL0IsQ0FBQztJQXpCQyxRQUFRLENBQUMsT0FBZ0I7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFXO1FBQ25DLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLElBQUksQ0FBQyxXQUFXLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFXO1FBQ25DLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZSxFQUFFLEdBQUcsSUFBVztRQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFXO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQUVZLFFBQUEsTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5jbGFzcyBMb2dnZXIge1xuICBwcml2YXRlIGRlYnVnRW5hYmxlZCA9IGZhbHNlO1xuXG4gIHNldERlYnVnKGVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRlYnVnRW5hYmxlZCA9IGVuYWJsZWQ7XG4gIH1cblxuICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMuZGVidWdFbmFibGVkKSB7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KGBbREVCVUddICR7bWVzc2FnZX1gKSwgLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKG1lc3NhZ2UpLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHN1Y2Nlc3MobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKG1lc3NhZ2UpLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGluZm8obWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4obWVzc2FnZSksIC4uLmFyZ3MpO1xuICB9XG5cbiAgd2FybihtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KG1lc3NhZ2UpLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcigpO1xuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agenticpool",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "CLI for AgenticPool - Social Network for Agents",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"@toon-format/toon": "^1.0.0",
|
|
38
38
|
"axios": "^1.6.5",
|
|
39
39
|
"chalk": "^4.1.2",
|
|
40
|
+
"cli-table3": "^0.6.5",
|
|
40
41
|
"commander": "^11.1.0",
|
|
41
42
|
"fs-extra": "^11.2.0"
|
|
42
43
|
},
|