agenticpool 1.0.19 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -118
- package/bin/agenticpool.js +6 -0
- package/dist/adapters/autogen.d.ts +33 -0
- package/dist/adapters/autogen.d.ts.map +1 -0
- package/dist/adapters/autogen.js +49 -0
- package/dist/adapters/autogen.js.map +1 -0
- package/dist/adapters/crewai.d.ts +30 -0
- package/dist/adapters/crewai.d.ts.map +1 -0
- package/dist/adapters/crewai.js +48 -0
- package/dist/adapters/crewai.js.map +1 -0
- package/dist/adapters/langchain.d.ts +30 -0
- package/dist/adapters/langchain.d.ts.map +1 -0
- package/dist/adapters/langchain.js +53 -0
- package/dist/adapters/langchain.js.map +1 -0
- package/dist/adapters/llamaindex.d.ts +29 -0
- package/dist/adapters/llamaindex.d.ts.map +1 -0
- package/dist/adapters/llamaindex.js +47 -0
- package/dist/adapters/llamaindex.js.map +1 -0
- package/dist/adapters/openai.d.ts +21 -0
- package/dist/adapters/openai.d.ts.map +1 -0
- package/dist/adapters/openai.js +51 -0
- package/dist/adapters/openai.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +187 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +115 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +251 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/balance.d.ts +4 -0
- package/dist/commands/balance.d.ts.map +1 -0
- package/dist/commands/balance.js +34 -0
- package/dist/commands/balance.js.map +1 -0
- package/dist/commands/contract.d.ts +20 -0
- package/dist/commands/contract.d.ts.map +1 -0
- package/dist/commands/contract.js +188 -0
- package/dist/commands/contract.js.map +1 -0
- package/dist/commands/favor.d.ts +21 -0
- package/dist/commands/favor.d.ts.map +1 -0
- package/dist/commands/favor.js +144 -0
- package/dist/commands/favor.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +77 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/reputation.d.ts +2 -0
- package/dist/commands/reputation.d.ts.map +1 -0
- package/dist/commands/reputation.js +38 -0
- package/dist/commands/reputation.js.map +1 -0
- package/dist/commands/serve.d.ts +7 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +110 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/services.d.ts +16 -0
- package/dist/commands/services.d.ts.map +1 -0
- package/dist/commands/services.js +93 -0
- package/dist/commands/services.js.map +1 -0
- package/dist/commands/trust.d.ts +2 -0
- package/dist/commands/trust.d.ts.map +1 -0
- package/dist/commands/trust.js +44 -0
- package/dist/commands/trust.js.map +1 -0
- package/dist/commands/whoami.d.ts +2 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +32 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config.d.ts +30 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +72 -0
- package/dist/config.js.map +1 -0
- package/dist/economy/duckies.d.ts +75 -0
- package/dist/economy/duckies.d.ts.map +1 -0
- package/dist/economy/duckies.js +386 -0
- package/dist/economy/duckies.js.map +1 -0
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -29
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +90 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +28 -38
- package/LICENSE +0 -1
- package/dist/api/ApiClient.d.ts +0 -37
- package/dist/api/ApiClient.js +0 -160
- package/dist/api/index.d.ts +0 -1
- package/dist/api/index.js +0 -6
- package/dist/auth/AuthHelper.d.ts +0 -17
- package/dist/auth/AuthHelper.js +0 -197
- package/dist/commands/auth.d.ts +0 -2
- package/dist/commands/auth.js +0 -206
- package/dist/commands/config.d.ts +0 -2
- package/dist/commands/config.js +0 -51
- package/dist/commands/connections.d.ts +0 -2
- package/dist/commands/connections.js +0 -244
- package/dist/commands/contacts.d.ts +0 -2
- package/dist/commands/contacts.js +0 -205
- package/dist/commands/conversations.d.ts +0 -2
- package/dist/commands/conversations.js +0 -251
- package/dist/commands/errors.d.ts +0 -2
- package/dist/commands/errors.js +0 -73
- package/dist/commands/humans.d.ts +0 -2
- package/dist/commands/humans.js +0 -161
- package/dist/commands/identities.d.ts +0 -2
- package/dist/commands/identities.js +0 -141
- package/dist/commands/index.d.ts +0 -11
- package/dist/commands/index.js +0 -26
- package/dist/commands/messages.d.ts +0 -2
- package/dist/commands/messages.js +0 -216
- package/dist/commands/networks.d.ts +0 -2
- package/dist/commands/networks.js +0 -430
- package/dist/commands/profile.d.ts +0 -2
- package/dist/commands/profile.js +0 -257
- package/dist/config/ConfigManager.d.ts +0 -47
- package/dist/config/ConfigManager.js +0 -234
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.js +0 -7
- package/dist/datamodel/index.d.ts +0 -3
- package/dist/datamodel/index.js +0 -20
- package/dist/datamodel/models/humans.d.ts +0 -81
- package/dist/datamodel/models/humans.js +0 -3
- package/dist/datamodel/models/index.d.ts +0 -110
- package/dist/datamodel/models/index.js +0 -3
- package/dist/datamodel/toon/index.d.ts +0 -5
- package/dist/datamodel/toon/index.js +0 -225
- package/dist/limits/LimitsManager.d.ts +0 -23
- package/dist/limits/LimitsManager.js +0 -99
- package/dist/utils/colors.d.ts +0 -16
- package/dist/utils/colors.js +0 -23
- package/dist/utils/logger.d.ts +0 -11
- package/dist/utils/logger.js +0 -34
package/package.json
CHANGED
|
@@ -1,54 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agenticpool",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "AgenticPool.net — Decentralized AI agent favor exchange network powered by Duckies & A2A Trust Protocol",
|
|
5
6
|
"main": "dist/index.js",
|
|
6
7
|
"types": "dist/index.d.ts",
|
|
7
8
|
"bin": {
|
|
8
|
-
"agenticpool": "
|
|
9
|
+
"agenticpool": "bin/agenticpool.js"
|
|
9
10
|
},
|
|
10
|
-
"files": [
|
|
11
|
-
"dist/",
|
|
12
|
-
"README.md",
|
|
13
|
-
"LICENSE"
|
|
14
|
-
],
|
|
15
11
|
"scripts": {
|
|
16
|
-
"build": "tsc",
|
|
17
|
-
"start": "node
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"test:unit": "jest tests/ApiClient.test.ts tests/ConfigManager.test.ts",
|
|
21
|
-
"test:integration": "jest --runInBand tests/integration/",
|
|
22
|
-
"test:e2e": "bash tests/integration/run-e2e.sh cli",
|
|
23
|
-
"test:e2e:api": "bash tests/integration/run-e2e.sh api",
|
|
24
|
-
"test:watch": "jest --watch",
|
|
25
|
-
"test:coverage": "jest --coverage",
|
|
26
|
-
"prepublishOnly": "npm run build"
|
|
12
|
+
"build": "tsc -p tsconfig.json",
|
|
13
|
+
"start": "node bin/agenticpool.js",
|
|
14
|
+
"test": "node --import tsx --test tests/**/*.test.ts",
|
|
15
|
+
"lint": "tsc --noEmit"
|
|
27
16
|
},
|
|
28
17
|
"keywords": [
|
|
29
18
|
"agenticpool",
|
|
30
|
-
"
|
|
31
|
-
"agents",
|
|
32
|
-
"
|
|
19
|
+
"agora",
|
|
20
|
+
"ai-agents",
|
|
21
|
+
"duckies",
|
|
22
|
+
"favors",
|
|
23
|
+
"marketplace",
|
|
24
|
+
"a2a"
|
|
25
|
+
],
|
|
26
|
+
"author": "2mes4",
|
|
27
|
+
"license": "Apache-2.0",
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"dist",
|
|
33
|
+
"bin",
|
|
34
|
+
"README.md"
|
|
33
35
|
],
|
|
34
|
-
"author": "AgenticPool",
|
|
35
|
-
"license": "MIT",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"
|
|
38
|
-
"axios": "^1.14.0",
|
|
39
|
-
"chalk": "^5.6.2",
|
|
40
|
-
"cli-table3": "^0.6.5",
|
|
41
|
-
"commander": "^14.0.3",
|
|
42
|
-
"fs-extra": "^11.3.4"
|
|
37
|
+
"commander": "^13.1.0"
|
|
43
38
|
},
|
|
44
39
|
"devDependencies": {
|
|
45
|
-
"@types/
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"firebase-admin": "^13.7.0",
|
|
49
|
-
"jest": "^30.3.0",
|
|
50
|
-
"ts-jest": "^29.4.9",
|
|
51
|
-
"ts-node": "^10.9.2",
|
|
52
|
-
"typescript": "^6.0.2"
|
|
40
|
+
"@types/node": "^22.13.0",
|
|
41
|
+
"tsx": "^4.19.2",
|
|
42
|
+
"typescript": "^5.7.3"
|
|
53
43
|
}
|
|
54
44
|
}
|
package/LICENSE
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
MIT License
|
package/dist/api/ApiClient.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
export interface ApiError {
|
|
2
|
-
code: string;
|
|
3
|
-
message: string;
|
|
4
|
-
details?: Record<string, unknown>;
|
|
5
|
-
}
|
|
6
|
-
export interface ApiResponse<T> {
|
|
7
|
-
success: boolean;
|
|
8
|
-
data?: T;
|
|
9
|
-
error?: ApiError;
|
|
10
|
-
}
|
|
11
|
-
export declare class ApiClient {
|
|
12
|
-
private client;
|
|
13
|
-
private format;
|
|
14
|
-
constructor(baseUrl: string);
|
|
15
|
-
static create(): Promise<ApiClient>;
|
|
16
|
-
setAuthToken(token: string): void;
|
|
17
|
-
clearAuthToken(): void;
|
|
18
|
-
setFormat(format: 'toon' | 'json'): void;
|
|
19
|
-
get<T>(path: string, params?: Record<string, unknown>): Promise<ApiResponse<T>>;
|
|
20
|
-
post<T>(path: string, data?: unknown): Promise<ApiResponse<T>>;
|
|
21
|
-
put<T>(path: string, data?: unknown): Promise<ApiResponse<T>>;
|
|
22
|
-
delete<T>(path: string): Promise<ApiResponse<T>>;
|
|
23
|
-
private parseResponse;
|
|
24
|
-
reportError(errorContext: {
|
|
25
|
-
command: string;
|
|
26
|
-
errorCode: string;
|
|
27
|
-
errorMessage: string;
|
|
28
|
-
stackTrace?: string;
|
|
29
|
-
cliVersion: string;
|
|
30
|
-
nodeVersion: string;
|
|
31
|
-
os: string;
|
|
32
|
-
arch: string;
|
|
33
|
-
agentModel?: string;
|
|
34
|
-
agentName?: string;
|
|
35
|
-
tags?: string[];
|
|
36
|
-
}): Promise<void>;
|
|
37
|
-
}
|
package/dist/api/ApiClient.js
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
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.ApiClient = void 0;
|
|
7
|
-
const axios_1 = __importDefault(require("axios"));
|
|
8
|
-
const config_1 = require("../config");
|
|
9
|
-
const logger_1 = require("../utils/logger");
|
|
10
|
-
const datamodel_1 = require("../datamodel");
|
|
11
|
-
class ApiClient {
|
|
12
|
-
constructor(baseUrl) {
|
|
13
|
-
this.format = 'toon';
|
|
14
|
-
logger_1.logger.debug(`Initializing ApiClient with baseUrl: ${baseUrl}`);
|
|
15
|
-
this.client = axios_1.default.create({
|
|
16
|
-
baseURL: baseUrl,
|
|
17
|
-
timeout: 30000
|
|
18
|
-
});
|
|
19
|
-
// Add request interceptor for logging
|
|
20
|
-
this.client.interceptors.request.use(config => {
|
|
21
|
-
logger_1.logger.debug(`API Request: ${config.method?.toUpperCase()} ${config.url}`);
|
|
22
|
-
if (config.params)
|
|
23
|
-
logger_1.logger.debug(`Params: ${JSON.stringify(config.params)}`);
|
|
24
|
-
return config;
|
|
25
|
-
});
|
|
26
|
-
// Add response interceptor for logging
|
|
27
|
-
this.client.interceptors.response.use(response => {
|
|
28
|
-
logger_1.logger.debug(`API Response: ${response.status} ${response.config.url}`);
|
|
29
|
-
return response;
|
|
30
|
-
}, error => {
|
|
31
|
-
logger_1.logger.debug(`API Error: ${error.message}`);
|
|
32
|
-
if (error.response) {
|
|
33
|
-
logger_1.logger.debug(`Status: ${error.response.status}`);
|
|
34
|
-
logger_1.logger.debug(`Data: ${JSON.stringify(error.response.data)}`);
|
|
35
|
-
}
|
|
36
|
-
return Promise.reject(error);
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
static async create() {
|
|
40
|
-
logger_1.logger.debug('ApiClient.create() called');
|
|
41
|
-
const config = await config_1.configManager.getGlobalConfig();
|
|
42
|
-
const client = new ApiClient(config.apiUrl);
|
|
43
|
-
client.format = config.defaultFormat;
|
|
44
|
-
return client;
|
|
45
|
-
}
|
|
46
|
-
setAuthToken(token) {
|
|
47
|
-
logger_1.logger.debug('Setting Auth Token');
|
|
48
|
-
this.client.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
|
49
|
-
}
|
|
50
|
-
clearAuthToken() {
|
|
51
|
-
logger_1.logger.debug('Clearing Auth Token');
|
|
52
|
-
delete this.client.defaults.headers.common['Authorization'];
|
|
53
|
-
}
|
|
54
|
-
setFormat(format) {
|
|
55
|
-
logger_1.logger.debug(`Setting format to: ${format}`);
|
|
56
|
-
this.format = format;
|
|
57
|
-
}
|
|
58
|
-
async get(path, params) {
|
|
59
|
-
const config = { params: { ...params, format: this.format } };
|
|
60
|
-
try {
|
|
61
|
-
const response = await this.client.get(path, config);
|
|
62
|
-
return this.parseResponse(response.data);
|
|
63
|
-
}
|
|
64
|
-
catch (e) {
|
|
65
|
-
if (e.response && e.response.data) {
|
|
66
|
-
return this.parseResponse(e.response.data);
|
|
67
|
-
}
|
|
68
|
-
return { success: false, error: { code: 'REQUEST_FAILED', message: e instanceof Error ? e.message : 'Unknown error' } };
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
async post(path, data) {
|
|
72
|
-
const body = this.format === 'toon' && data ? (0, datamodel_1.encode)(data) : JSON.stringify(data);
|
|
73
|
-
const config = {
|
|
74
|
-
params: { format: this.format },
|
|
75
|
-
headers: { 'Content-Type': 'text/plain' }
|
|
76
|
-
};
|
|
77
|
-
try {
|
|
78
|
-
const response = await this.client.post(path, body, config);
|
|
79
|
-
return this.parseResponse(response.data);
|
|
80
|
-
}
|
|
81
|
-
catch (e) {
|
|
82
|
-
if (e.response && e.response.data) {
|
|
83
|
-
return this.parseResponse(e.response.data);
|
|
84
|
-
}
|
|
85
|
-
return { success: false, error: { code: 'REQUEST_FAILED', message: e instanceof Error ? e.message : 'Unknown error' } };
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
async put(path, data) {
|
|
89
|
-
const body = this.format === 'toon' && data ? (0, datamodel_1.encode)(data) : JSON.stringify(data);
|
|
90
|
-
const config = {
|
|
91
|
-
params: { format: this.format },
|
|
92
|
-
headers: { 'Content-Type': 'text/plain' }
|
|
93
|
-
};
|
|
94
|
-
try {
|
|
95
|
-
const response = await this.client.put(path, body, config);
|
|
96
|
-
return this.parseResponse(response.data);
|
|
97
|
-
}
|
|
98
|
-
catch (e) {
|
|
99
|
-
if (e.response && e.response.data) {
|
|
100
|
-
return this.parseResponse(e.response.data);
|
|
101
|
-
}
|
|
102
|
-
return { success: false, error: { code: 'REQUEST_FAILED', message: e instanceof Error ? e.message : 'Unknown error' } };
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
async delete(path) {
|
|
106
|
-
const config = { params: { format: this.format } };
|
|
107
|
-
try {
|
|
108
|
-
const response = await this.client.delete(path, config);
|
|
109
|
-
return this.parseResponse(response.data);
|
|
110
|
-
}
|
|
111
|
-
catch (e) {
|
|
112
|
-
if (e.response && e.response.data) {
|
|
113
|
-
return this.parseResponse(e.response.data);
|
|
114
|
-
}
|
|
115
|
-
return { success: false, error: { code: 'REQUEST_FAILED', message: e instanceof Error ? e.message : 'Unknown error' } };
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
parseResponse(data) {
|
|
119
|
-
logger_1.logger.debug(`Parsing response data (type: ${typeof data})`);
|
|
120
|
-
if (typeof data !== 'string') {
|
|
121
|
-
return data;
|
|
122
|
-
}
|
|
123
|
-
const trimmed = data.trim();
|
|
124
|
-
if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
|
|
125
|
-
try {
|
|
126
|
-
return JSON.parse(trimmed);
|
|
127
|
-
}
|
|
128
|
-
catch {
|
|
129
|
-
return { success: false, error: { code: 'PARSE_ERROR', message: 'Failed to parse JSON response' } };
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
if (trimmed.startsWith('<') || trimmed.startsWith('<!DOCTYPE')) {
|
|
133
|
-
return { success: false, error: { code: 'PARSE_ERROR', message: 'Received HTML instead of API response' } };
|
|
134
|
-
}
|
|
135
|
-
try {
|
|
136
|
-
return (0, datamodel_1.decode)(trimmed);
|
|
137
|
-
}
|
|
138
|
-
catch {
|
|
139
|
-
try {
|
|
140
|
-
return JSON.parse(trimmed);
|
|
141
|
-
}
|
|
142
|
-
catch {
|
|
143
|
-
return { success: false, error: { code: 'PARSE_ERROR', message: 'Failed to parse response' } };
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
async reportError(errorContext) {
|
|
148
|
-
try {
|
|
149
|
-
const savedFormat = this.format;
|
|
150
|
-
this.format = 'json';
|
|
151
|
-
await this.post('/v1/errors', errorContext);
|
|
152
|
-
this.format = savedFormat;
|
|
153
|
-
}
|
|
154
|
-
catch {
|
|
155
|
-
// Silent — never block CLI for error reporting
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
exports.ApiClient = ApiClient;
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9BcGlDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQWlFO0FBQ2pFLHNDQUF3RDtBQUN4RCw0Q0FBeUM7QUFDekMsNENBQThDO0FBYzlDLE1BQWEsU0FBUztJQUlwQixZQUFZLE9BQWU7UUFGbkIsV0FBTSxHQUFvQixNQUFNLENBQUM7UUFHdkMsZUFBTSxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQUssQ0FBQyxNQUFNLENBQUM7WUFDekIsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDLENBQUM7UUFFSCxzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1QyxlQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixNQUFNLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzNFLElBQUksTUFBTSxDQUFDLE1BQU07Z0JBQUUsZUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RSxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUVILHVDQUF1QztRQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUNuQyxRQUFRLENBQUMsRUFBRTtZQUNULGVBQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lB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bmZpZyB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGNvbmZpZ01hbmFnZXIsIEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXInO1xuaW1wb3J0IHsgZW5jb2RlLCBkZWNvZGUgfSBmcm9tICcuLi9kYXRhbW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaUVycm9yIHtcbiAgY29kZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlSZXNwb25zZTxUPiB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGRhdGE/OiBUO1xuICBlcnJvcj86IEFwaUVycm9yO1xufVxuXG5leHBvcnQgY2xhc3MgQXBpQ2xpZW50IHtcbiAgcHJpdmF0ZSBjbGllbnQ6IEF4aW9zSW5zdGFuY2U7XG4gIHByaXZhdGUgZm9ybWF0OiAndG9vbicgfCAnanNvbicgPSAndG9vbic7XG5cbiAgY29uc3RydWN0b3IoYmFzZVVybDogc3RyaW5nKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBJbml0aWFsaXppbmcgQXBpQ2xpZW50IHdpdGggYmFzZVVybDogJHtiYXNlVXJsfWApO1xuICAgIHRoaXMuY2xpZW50ID0gYXhpb3MuY3JlYXRlKHtcbiAgICAgIGJhc2VVUkw6IGJhc2VVcmwsXG4gICAgICB0aW1lb3V0OiAzMDAwMFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIHJlcXVlc3QgaW50ZXJjZXB0b3IgZm9yIGxvZ2dpbmdcbiAgICB0aGlzLmNsaWVudC5pbnRlcmNlcHRvcnMucmVxdWVzdC51c2UoY29uZmlnID0+IHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgQVBJIFJlcXVlc3Q6ICR7Y29uZmlnLm1ldGhvZD8udG9VcHBlckNhc2UoKX0gJHtjb25maWcudXJsfWApO1xuICAgICAgaWYgKGNvbmZpZy5wYXJhbXMpIGxvZ2dlci5kZWJ1ZyhgUGFyYW1zOiAke0pTT04uc3RyaW5naWZ5KGNvbmZpZy5wYXJhbXMpfWApO1xuICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9KTtcblxuICAgIC8vIEFkZCByZXNwb25zZSBpbnRlcmNlcHRvciBmb3IgbG9nZ2luZ1xuICAgIHRoaXMuY2xpZW50LmludGVyY2VwdG9ycy5yZXNwb25zZS51c2UoXG4gICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgQVBJIFJlc3BvbnNlOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5jb25maWcudXJsfWApO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICBsb2dnZXIuZGVidWcoYEFQSSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgICAgICBpZiAoZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgICBsb2dnZXIuZGVidWcoYFN0YXR1czogJHtlcnJvci5yZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKGBEYXRhOiAke0pTT04uc3RyaW5naWZ5KGVycm9yLnJlc3BvbnNlLmRhdGEpfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBjcmVhdGUoKTogUHJvbWlzZTxBcGlDbGllbnQ+IHtcbiAgICBsb2dnZXIuZGVidWcoJ0FwaUNsaWVudC5jcmVhdGUoKSBjYWxsZWQnKTtcbiAgICBjb25zdCBjb25maWcgPSBhd2FpdCBjb25maWdNYW5hZ2VyLmdldEdsb2JhbENvbmZpZygpO1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBBcGlDbGllbnQoY29uZmlnLmFwaVVybCk7XG4gICAgY2xpZW50LmZvcm1hdCA9IGNvbmZpZy5kZWZhdWx0Rm9ybWF0O1xuICAgIHJldHVybiBjbGllbnQ7XG4gIH1cblxuICBzZXRBdXRoVG9rZW4odG9rZW46IHN0cmluZyk6IHZvaWQge1xuICAgIGxvZ2dlci5kZWJ1ZygnU2V0dGluZyBBdXRoIFRva2VuJyk7XG4gICAgdGhpcy5jbGllbnQuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ0F1dGhvcml6YXRpb24nXSA9IGBCZWFyZXIgJHt0b2tlbn1gO1xuICB9XG5cbiAgY2xlYXJBdXRoVG9rZW4oKTogdm9pZCB7XG4gICAgbG9nZ2VyLmRlYnVnKCdDbGVhcmluZyBBdXRoIFRva2VuJyk7XG4gICAgZGVsZXRlIHRoaXMuY2xpZW50LmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWydBdXRob3JpemF0aW9uJ107XG4gIH1cblxuICBzZXRGb3JtYXQoZm9ybWF0OiAndG9vbicgfCAnanNvbicpOiB2b2lkIHtcbiAgICBsb2dnZXIuZGVidWcoYFNldHRpbmcgZm9ybWF0IHRvOiAke2Zvcm1hdH1gKTtcbiAgICB0aGlzLmZvcm1hdCA9IGZvcm1hdDtcbiAgfVxuXG4gIGFzeW5jIGdldDxUPihwYXRoOiBzdHJpbmcsIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUHJvbWlzZTxBcGlSZXNwb25zZTxUPj4ge1xuICAgIGNvbnN0IGNvbmZpZzogQXhpb3NSZXF1ZXN0Q29uZmlnID0geyBwYXJhbXM6IHsgLi4ucGFyYW1zLCBmb3JtYXQ6IHRoaXMuZm9ybWF0IH0gfTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5nZXQocGF0aCwgY29uZmlnKTtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlUmVzcG9uc2U8VD4ocmVzcG9uc2UuZGF0YSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoZS5yZXNwb25zZSAmJiBlLnJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VSZXNwb25zZTxUPihlLnJlc3BvbnNlLmRhdGEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiB7IGNvZGU6ICdSRVFVRVNUX0ZBSUxFRCcsIG1lc3NhZ2U6IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyB9IH07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcG9zdDxUPihwYXRoOiBzdHJpbmcsIGRhdGE/OiB1bmtub3duKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUPj4ge1xuICAgIGNvbnN0IGJvZHkgPSB0aGlzLmZvcm1hdCA9PT0gJ3Rvb24nICYmIGRhdGEgPyBlbmNvZGUoZGF0YSkgOiBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICBjb25zdCBjb25maWc6IEF4aW9zUmVxdWVzdENvbmZpZyA9IHsgXG4gICAgICBwYXJhbXM6IHsgZm9ybWF0OiB0aGlzLmZvcm1hdCB9LFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ3RleHQvcGxhaW4nIH1cbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50LnBvc3QocGF0aCwgYm9keSwgY29uZmlnKTtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlUmVzcG9uc2U8VD4ocmVzcG9uc2UuZGF0YSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoZS5yZXNwb25zZSAmJiBlLnJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VSZXNwb25zZTxUPihlLnJlc3BvbnNlLmRhdGEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiB7IGNvZGU6ICdSRVFVRVNUX0ZBSUxFRCcsIG1lc3NhZ2U6IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyB9IH07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcHV0PFQ+KHBhdGg6IHN0cmluZywgZGF0YT86IHVua25vd24pOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgY29uc3QgYm9keSA9IHRoaXMuZm9ybWF0ID09PSAndG9vbicgJiYgZGF0YSA/IGVuY29kZShkYXRhKSA6IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgIGNvbnN0IGNvbmZpZzogQXhpb3NSZXF1ZXN0Q29uZmlnID0geyBcbiAgICAgIHBhcmFtczogeyBmb3JtYXQ6IHRoaXMuZm9ybWF0IH0sXG4gICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbicgfVxuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQucHV0KHBhdGgsIGJvZHksIGNvbmZpZyk7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZVJlc3BvbnNlPFQ+KHJlc3BvbnNlLmRhdGEpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGUucmVzcG9uc2UgJiYgZS5yZXNwb25zZS5kYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlUmVzcG9uc2U8VD4oZS5yZXNwb25zZS5kYXRhKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogeyBjb2RlOiAnUkVRVUVTVF9GQUlMRUQnLCBtZXNzYWdlOiBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicgfSB9O1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZTxUPihwYXRoOiBzdHJpbmcpOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgY29uc3QgY29uZmlnOiBBeGlvc1JlcXVlc3RDb25maWcgPSB7IHBhcmFtczogeyBmb3JtYXQ6IHRoaXMuZm9ybWF0IH0gfTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5kZWxldGUocGF0aCwgY29uZmlnKTtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlUmVzcG9uc2U8VD4ocmVzcG9uc2UuZGF0YSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoZS5yZXNwb25zZSAmJiBlLnJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VSZXNwb25zZTxUPihlLnJlc3BvbnNlLmRhdGEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiB7IGNvZGU6ICdSRVFVRVNUX0ZBSUxFRCcsIG1lc3NhZ2U6IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyB9IH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVJlc3BvbnNlPFQ+KGRhdGE6IHN0cmluZyB8IG9iamVjdCk6IEFwaVJlc3BvbnNlPFQ+IHtcbiAgICBsb2dnZXIuZGVidWcoYFBhcnNpbmcgcmVzcG9uc2UgZGF0YSAodHlwZTogJHt0eXBlb2YgZGF0YX0pYCk7XG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGRhdGEgYXMgQXBpUmVzcG9uc2U8VD47XG4gICAgfVxuXG4gICAgY29uc3QgdHJpbW1lZCA9IGRhdGEudHJpbSgpO1xuXG4gICAgaWYgKHRyaW1tZWQuc3RhcnRzV2l0aCgneycpIHx8IHRyaW1tZWQuc3RhcnRzV2l0aCgnWycpKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh0cmltbWVkKSBhcyBBcGlSZXNwb25zZTxUPjtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6IHsgY29kZTogJ1BBUlNFX0VSUk9SJywgbWVzc2FnZTogJ0ZhaWxlZCB0byBwYXJzZSBKU09OIHJlc3BvbnNlJyB9IH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRyaW1tZWQuc3RhcnRzV2l0aCgnPCcpIHx8IHRyaW1tZWQuc3RhcnRzV2l0aCgnPCFET0NUWVBFJykpIHtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogeyBjb2RlOiAnUEFSU0VfRVJST1InLCBtZXNzYWdlOiAnUmVjZWl2ZWQgSFRNTCBpbnN0ZWFkIG9mIEFQSSByZXNwb25zZScgfSB9O1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZGVjb2RlPEFwaVJlc3BvbnNlPFQ+Pih0cmltbWVkKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHRyaW1tZWQpIGFzIEFwaVJlc3BvbnNlPFQ+O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogeyBjb2RlOiAnUEFSU0VfRVJST1InLCBtZXNzYWdlOiAnRmFpbGVkIHRvIHBhcnNlIHJlc3BvbnNlJyB9IH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVwb3J0RXJyb3IoZXJyb3JDb250ZXh0OiB7XG4gICAgY29tbWFuZDogc3RyaW5nO1xuICAgIGVycm9yQ29kZTogc3RyaW5nO1xuICAgIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICAgIHN0YWNrVHJhY2U/OiBzdHJpbmc7XG4gICAgY2xpVmVyc2lvbjogc3RyaW5nO1xuICAgIG5vZGVWZXJzaW9uOiBzdHJpbmc7XG4gICAgb3M6IHN0cmluZztcbiAgICBhcmNoOiBzdHJpbmc7XG4gICAgYWdlbnRNb2RlbD86IHN0cmluZztcbiAgICBhZ2VudE5hbWU/OiBzdHJpbmc7XG4gICAgdGFncz86IHN0cmluZ1tdO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNhdmVkRm9ybWF0ID0gdGhpcy5mb3JtYXQ7XG4gICAgICB0aGlzLmZvcm1hdCA9ICdqc29uJztcbiAgICAgIGF3YWl0IHRoaXMucG9zdCgnL3YxL2Vycm9ycycsIGVycm9yQ29udGV4dCk7XG4gICAgICB0aGlzLmZvcm1hdCA9IHNhdmVkRm9ybWF0O1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU2lsZW50IOKAlCBuZXZlciBibG9jayBDTEkgZm9yIGVycm9yIHJlcG9ydGluZ1xuICAgIH1cbiAgfVxufVxuIl19
|
package/dist/api/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { ApiClient } from './ApiClient';
|
package/dist/api/index.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ApiClient = void 0;
|
|
4
|
-
var ApiClient_1 = require("./ApiClient");
|
|
5
|
-
Object.defineProperty(exports, "ApiClient", { enumerable: true, get: function () { return ApiClient_1.ApiClient; } });
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF3QztBQUEvQixzR0FBQSxTQUFTLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBcGlDbGllbnQgfSBmcm9tICcuL0FwaUNsaWVudCc7XG4iXX0=
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { ApiClient } from '../api/ApiClient';
|
|
2
|
-
import { NetworkCredentials } from '../config/ConfigManager';
|
|
3
|
-
export interface AuthResult {
|
|
4
|
-
client: ApiClient;
|
|
5
|
-
credentials: NetworkCredentials;
|
|
6
|
-
isNewUser: boolean;
|
|
7
|
-
}
|
|
8
|
-
export declare class AuthHelper {
|
|
9
|
-
static ensureAuthenticated(networkId: string, reason?: string): Promise<AuthResult>;
|
|
10
|
-
private static handleAuthResponse;
|
|
11
|
-
static getApiClient(): Promise<ApiClient>;
|
|
12
|
-
static getAuthenticatedClient(networkId: string, reason?: string): Promise<ApiClient>;
|
|
13
|
-
static getFirstAuthenticatedClient(): Promise<{
|
|
14
|
-
client: ApiClient;
|
|
15
|
-
networkId: string;
|
|
16
|
-
}>;
|
|
17
|
-
}
|
package/dist/auth/AuthHelper.js
DELETED
|
@@ -1,197 +0,0 @@
|
|
|
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
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.AuthHelper = void 0;
|
|
40
|
-
const logger_1 = require("../utils/logger");
|
|
41
|
-
const path = __importStar(require("path"));
|
|
42
|
-
const os = __importStar(require("os"));
|
|
43
|
-
const fs = __importStar(require("fs-extra"));
|
|
44
|
-
const ApiClient_1 = require("../api/ApiClient");
|
|
45
|
-
const ConfigManager_1 = require("../config/ConfigManager");
|
|
46
|
-
const colors_1 = __importDefault(require("../utils/colors"));
|
|
47
|
-
class AuthHelper {
|
|
48
|
-
static async ensureAuthenticated(networkId, reason) {
|
|
49
|
-
const config = await ConfigManager_1.configManager.getGlobalConfig();
|
|
50
|
-
const client = new ApiClient_1.ApiClient(config.apiUrl);
|
|
51
|
-
client.setFormat(config.defaultFormat);
|
|
52
|
-
const existingCreds = await ConfigManager_1.configManager.getCredentials(networkId);
|
|
53
|
-
if (existingCreds && existingCreds.jwt && existingCreds.expiresAt) {
|
|
54
|
-
const bufferTime = 5 * 60 * 1000;
|
|
55
|
-
if (Date.now() < (existingCreds.expiresAt - bufferTime)) {
|
|
56
|
-
client.setAuthToken(existingCreds.jwt);
|
|
57
|
-
if (reason) {
|
|
58
|
-
try {
|
|
59
|
-
await client.post('/v1/auth/login', {
|
|
60
|
-
networkId,
|
|
61
|
-
publicToken: existingCreds.publicToken,
|
|
62
|
-
privateKey: existingCreds.privateKey,
|
|
63
|
-
reason
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
catch (e) {
|
|
67
|
-
// Ignore background reason update failures
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return { client, credentials: existingCreds, isNewUser: false };
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
if (existingCreds && existingCreds.privateKey) {
|
|
74
|
-
console.log(colors_1.default.gray(` Attempting login for ${networkId}...`));
|
|
75
|
-
try {
|
|
76
|
-
const response = await client.post('/v1/auth/login', {
|
|
77
|
-
networkId,
|
|
78
|
-
publicToken: existingCreds.publicToken,
|
|
79
|
-
privateKey: existingCreds.privateKey,
|
|
80
|
-
reason
|
|
81
|
-
});
|
|
82
|
-
if (response.success && response.data) {
|
|
83
|
-
const updatedCreds = {
|
|
84
|
-
...existingCreds,
|
|
85
|
-
jwt: response.data.jwt,
|
|
86
|
-
expiresAt: response.data.expiresAt
|
|
87
|
-
};
|
|
88
|
-
await ConfigManager_1.configManager.saveCredentials(networkId, updatedCreds);
|
|
89
|
-
client.setAuthToken(response.data.jwt);
|
|
90
|
-
return { client, credentials: updatedCreds, isNewUser: false };
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
catch (error) {
|
|
94
|
-
// Login failed, will try to register
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
// Try to use global identity if it exists
|
|
98
|
-
const defaultIdentity = await ConfigManager_1.configManager.getDefaultIdentity();
|
|
99
|
-
let keys = defaultIdentity;
|
|
100
|
-
if (!keys) {
|
|
101
|
-
console.log(colors_1.default.gray(' Generating new identity keys...'));
|
|
102
|
-
const keysResponse = await client.get('/v1/auth/generate-keys');
|
|
103
|
-
if (!keysResponse.success || !keysResponse.data) {
|
|
104
|
-
throw new Error('Failed to generate keys');
|
|
105
|
-
}
|
|
106
|
-
keys = keysResponse.data;
|
|
107
|
-
// Save as default for future use
|
|
108
|
-
await ConfigManager_1.configManager.saveDefaultIdentity(keys);
|
|
109
|
-
}
|
|
110
|
-
console.log(colors_1.default.gray(` Registering in network ${networkId}...`));
|
|
111
|
-
const registerResponse = await client.post('/v1/auth/register', {
|
|
112
|
-
networkId,
|
|
113
|
-
publicToken: keys.publicToken,
|
|
114
|
-
privateKey: keys.privateKey,
|
|
115
|
-
reason
|
|
116
|
-
});
|
|
117
|
-
if (registerResponse.success && registerResponse.data) {
|
|
118
|
-
return this.handleAuthResponse(networkId, keys, registerResponse.data, client, true);
|
|
119
|
-
}
|
|
120
|
-
// Fallback: If already registered (or any 400-like error), try login instead
|
|
121
|
-
const errorMessage = registerResponse.error?.message || '';
|
|
122
|
-
const isAlreadyRegistered = errorMessage.toLowerCase().includes('already registered');
|
|
123
|
-
if (isAlreadyRegistered || !registerResponse.success) {
|
|
124
|
-
console.log(colors_1.default.gray(` Registration failed (likely already registered). Attempting login for ${networkId}...`));
|
|
125
|
-
const loginResponse = await client.post('/v1/auth/login', {
|
|
126
|
-
networkId,
|
|
127
|
-
publicToken: keys.publicToken,
|
|
128
|
-
privateKey: keys.privateKey,
|
|
129
|
-
reason
|
|
130
|
-
});
|
|
131
|
-
if (loginResponse.success && loginResponse.data) {
|
|
132
|
-
return this.handleAuthResponse(networkId, keys, loginResponse.data, client, false);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
throw new Error(registerResponse.error?.message || 'Failed to authenticate');
|
|
136
|
-
}
|
|
137
|
-
static async handleAuthResponse(networkId, keys, responseData, client, isNewUser) {
|
|
138
|
-
// Search for JWT in different possible locations due to TOON decoding variations
|
|
139
|
-
const jwt = responseData.jwt ||
|
|
140
|
-
(responseData.data && responseData.data.jwt) ||
|
|
141
|
-
(responseData.tokens && responseData.tokens.jwt) ||
|
|
142
|
-
(responseData.data && responseData.data.tokens && responseData.data.tokens.jwt);
|
|
143
|
-
const expiresAt = responseData.expiresAt ||
|
|
144
|
-
(responseData.data && responseData.data.expiresAt) ||
|
|
145
|
-
(responseData.tokens && responseData.tokens.expiresAt);
|
|
146
|
-
if (!jwt) {
|
|
147
|
-
logger_1.logger.debug('Auth Response Data:', JSON.stringify(responseData));
|
|
148
|
-
throw new Error('Authentication succeeded but no JWT found in response');
|
|
149
|
-
}
|
|
150
|
-
const newCreds = {
|
|
151
|
-
publicToken: keys.publicToken,
|
|
152
|
-
privateKey: keys.privateKey,
|
|
153
|
-
jwt: jwt,
|
|
154
|
-
expiresAt: expiresAt || (Date.now() + 24 * 3600 * 1000) // Default 24h if missing
|
|
155
|
-
};
|
|
156
|
-
await ConfigManager_1.configManager.saveCredentials(networkId, newCreds);
|
|
157
|
-
client.setAuthToken(jwt);
|
|
158
|
-
if (isNewUser) {
|
|
159
|
-
console.log(colors_1.default.green(` ✓ Auto-registered in network: ${networkId}`));
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
console.log(colors_1.default.green(` ✓ Logged into network: ${networkId}`));
|
|
163
|
-
}
|
|
164
|
-
return { client, credentials: newCreds, isNewUser };
|
|
165
|
-
}
|
|
166
|
-
static async getApiClient() {
|
|
167
|
-
const config = await ConfigManager_1.configManager.getGlobalConfig();
|
|
168
|
-
const client = new ApiClient_1.ApiClient(config.apiUrl);
|
|
169
|
-
client.setFormat(config.defaultFormat);
|
|
170
|
-
return client;
|
|
171
|
-
}
|
|
172
|
-
static async getAuthenticatedClient(networkId, reason) {
|
|
173
|
-
const result = await this.ensureAuthenticated(networkId, reason);
|
|
174
|
-
return result.client;
|
|
175
|
-
}
|
|
176
|
-
static async getFirstAuthenticatedClient() {
|
|
177
|
-
const credentialsDir = path.join(os.homedir(), '.agenticpool', 'credentials');
|
|
178
|
-
if (!(await fs.pathExists(credentialsDir))) {
|
|
179
|
-
throw new Error('No stored credentials found. Run "agenticpool auth connect <networkId>" first.');
|
|
180
|
-
}
|
|
181
|
-
const files = await fs.readdir(credentialsDir);
|
|
182
|
-
const jsonFiles = files.filter(f => f.endsWith('.json'));
|
|
183
|
-
for (const file of jsonFiles) {
|
|
184
|
-
const networkId = file.replace('.json', '');
|
|
185
|
-
try {
|
|
186
|
-
const result = await this.ensureAuthenticated(networkId);
|
|
187
|
-
return { client: result.client, networkId };
|
|
188
|
-
}
|
|
189
|
-
catch {
|
|
190
|
-
continue;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
throw new Error('No valid credentials found. Run "agenticpool auth connect <networkId>" first.');
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
exports.AuthHelper = AuthHelper;
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0aEhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoL0F1dGhIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNENBQXlDO0FBQ3pDLDJDQUE2QjtBQUM3Qix1Q0FBeUI7QUFDekIsNkNBQStCO0FBQy9CLGdEQUE2QztBQUM3QywyREFBNEU7QUFDNUUsNkRBQW9DO0FBUXBDLE1BQWEsVUFBVTtJQUNyQixNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFNBQWlCLEVBQUUsTUFBZTtRQUNqRSxNQUFNLE1BQU0sR0FBRyxNQUFNLDZCQUFhLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBSSxxQkFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV2QyxNQUFNLGFBQWEsR0FBRyxNQUFNLDZCQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXBFLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxHQUFHLElBQUksYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxNQUFNLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWCxJQUFJLENBQUM7d0JBQ0gsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFOzRCQUNsQyxTQUFTOzRCQUNULFdB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LElBQUksS0FBSyxDQUFDLGdGQUFnRixDQUFDLENBQUM7UUFDcEcsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRXpELEtBQUssTUFBTSxJQUFJLElBQUksU0FBUyxFQUFFLENBQUM7WUFDN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDOUMsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxTQUFTO1lBQ1gsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLCtFQUErRSxDQUFDLENBQUM7SUFDbkcsQ0FBQztDQUNGO0FBckxELGdDQXFMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlcic7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgQXBpQ2xpZW50IH0gZnJvbSAnLi4vYXBpL0FwaUNsaWVudCc7XG5pbXBvcnQgeyBjb25maWdNYW5hZ2VyLCBOZXR3b3JrQ3JlZGVudGlhbHMgfSBmcm9tICcuLi9jb25maWcvQ29uZmlnTWFuYWdlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnLi4vdXRpbHMvY29sb3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRoUmVzdWx0IHtcbiAgY2xpZW50OiBBcGlDbGllbnQ7XG4gIGNyZWRlbnRpYWxzOiBOZXR3b3JrQ3JlZGVudGlhbHM7XG4gIGlzTmV3VXNlcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIEF1dGhIZWxwZXIge1xuICBzdGF0aWMgYXN5bmMgZW5zdXJlQXV0aGVudGljYXRlZChuZXR3b3JrSWQ6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUHJvbWlzZTxBdXRoUmVzdWx0PiB7XG4gICAgY29uc3QgY29uZmlnID0gYXdhaXQgY29uZmlnTWFuYWdlci5nZXRHbG9iYWxDb25maWcoKTtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgQXBpQ2xpZW50KGNvbmZpZy5hcGlVcmwpO1xuICAgIGNsaWVudC5zZXRGb3JtYXQoY29uZmlnLmRlZmF1bHRGb3JtYXQpO1xuXG4gICAgY29uc3QgZXhpc3RpbmdDcmVkcyA9IGF3YWl0IGNvbmZpZ01hbmFnZXIuZ2V0Q3JlZGVudGlhbHMobmV0d29ya0lkKTtcbiAgICBcbiAgICBpZiAoZXhpc3RpbmdDcmVkcyAmJiBleGlzdGluZ0NyZWRzLmp3dCAmJiBleGlzdGluZ0NyZWRzLmV4cGlyZXNBdCkge1xuICAgICAgY29uc3QgYnVmZmVyVGltZSA9IDUgKiA2MCAqIDEwMDA7XG4gICAgICBpZiAoRGF0ZS5ub3coKSA8IChleGlzdGluZ0NyZWRzLmV4cGlyZXNBdCAtIGJ1ZmZlclRpbWUpKSB7XG4gICAgICAgIGNsaWVudC5zZXRBdXRoVG9rZW4oZXhpc3RpbmdDcmVkcy5qd3QpO1xuICAgICAgICBpZiAocmVhc29uKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGNsaWVudC5wb3N0KCcvdjEvYXV0aC9sb2dpbicsIHtcbiAgICAgICAgICAgICAgbmV0d29ya0lkLFxuICAgICAgICAgICAgICBwdWJsaWNUb2tlbjogZXhpc3RpbmdDcmVkcy5wdWJsaWNUb2tlbixcbiAgICAgICAgICAgICAgcHJpdmF0ZUtleTogZXhpc3RpbmdDcmVkcy5wcml2YXRlS2V5LFxuICAgICAgICAgICAgICByZWFzb25cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIElnbm9yZSBiYWNrZ3JvdW5kIHJlYXNvbiB1cGRhdGUgZmFpbHVyZXNcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgY2xpZW50LCBjcmVkZW50aWFsczogZXhpc3RpbmdDcmVkcywgaXNOZXdVc2VyOiBmYWxzZSB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleGlzdGluZ0NyZWRzICYmIGV4aXN0aW5nQ3JlZHMucHJpdmF0ZUtleSkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheShgICBBdHRlbXB0aW5nIGxvZ2luIGZvciAke25ldHdvcmtJZH0uLi5gKSk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PHsgand0OiBzdHJpbmc7IGV4cGlyZXNBdDogbnVtYmVyOyBwdWJsaWNUb2tlbjogc3RyaW5nIH0+KCcvdjEvYXV0aC9sb2dpbicsIHtcbiAgICAgICAgICBuZXR3b3JrSWQsXG4gICAgICAgICAgcHVibGljVG9rZW46IGV4aXN0aW5nQ3JlZHMucHVibGljVG9rZW4sXG4gICAgICAgICAgcHJpdmF0ZUtleTogZXhpc3RpbmdDcmVkcy5wcml2YXRlS2V5LFxuICAgICAgICAgIHJlYXNvblxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZENyZWRzOiBOZXR3b3JrQ3JlZGVudGlhbHMgPSB7XG4gICAgICAgICAgICAuLi5leGlzdGluZ0NyZWRzLFxuICAgICAgICAgICAgand0OiByZXNwb25zZS5kYXRhLmp3dCxcbiAgICAgICAgICAgIGV4cGlyZXNBdDogcmVzcG9uc2UuZGF0YS5leHBpcmVzQXRcbiAgICAgICAgICB9O1xuICAgICAgICAgIFxuICAgICAgICAgIGF3YWl0IGNvbmZpZ01hbmFnZXIuc2F2ZUNyZWRlbnRpYWxzKG5ldHdvcmtJZCwgdXBkYXRlZENyZWRzKTtcbiAgICAgICAgICBjbGllbnQuc2V0QXV0aFRva2VuKHJlc3BvbnNlLmRhdGEuand0KTtcbiAgICAgICAgICBcbiAgICAgICAgICByZXR1cm4geyBjbGllbnQsIGNyZWRlbnRpYWxzOiB1cGRhdGVkQ3JlZHMsIGlzTmV3VXNlcjogZmFsc2UgfTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gTG9naW4gZmFpbGVkLCB3aWxsIHRyeSB0byByZWdpc3RlclxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyeSB0byB1c2UgZ2xvYmFsIGlkZW50aXR5IGlmIGl0IGV4aXN0c1xuICAgIGNvbnN0IGRlZmF1bHRJZGVudGl0eSA9IGF3YWl0IGNvbmZpZ01hbmFnZXIuZ2V0RGVmYXVsdElkZW50aXR5KCk7XG4gICAgbGV0IGtleXMgPSBkZWZhdWx0SWRlbnRpdHk7XG5cbiAgICBpZiAoIWtleXMpIHtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJyAgR2VuZXJhdGluZyBuZXcgaWRlbnRpdHkga2V5cy4uLicpKTtcbiAgICAgIGNvbnN0IGtleXNSZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8eyBwdWJsaWNUb2tlbjogc3RyaW5nOyBwcml2YXRlS2V5OiBzdHJpbmcgfT4oJy92MS9hdXRoL2dlbmVyYXRlLWtleXMnKTtcbiAgICAgIFxuICAgICAgaWYgKCFrZXlzUmVzcG9uc2Uuc3VjY2VzcyB8fCAha2V5c1Jlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2VuZXJhdGUga2V5cycpO1xuICAgICAgfVxuXG4gICAgICBrZXlzID0ga2V5c1Jlc3BvbnNlLmRhdGE7XG4gICAgICAvLyBTYXZlIGFzIGRlZmF1bHQgZm9yIGZ1dHVyZSB1c2VcbiAgICAgIGF3YWl0IGNvbmZpZ01hbmFnZXIuc2F2ZURlZmF1bHRJZGVudGl0eShrZXlzKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KGAgIFJlZ2lzdGVyaW5nIGluIG5ldHdvcmsgJHtuZXR3b3JrSWR9Li4uYCkpO1xuXG4gICAgY29uc3QgcmVnaXN0ZXJSZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PGFueT4oJy92MS9hdXRoL3JlZ2lzdGVyJywge1xuICAgICAgbmV0d29ya0lkLFxuICAgICAgcHVibGljVG9rZW46IGtleXMucHVibGljVG9rZW4sXG4gICAgICBwcml2YXRlS2V5OiBrZXlzLnByaXZhdGVLZXksXG4gICAgICByZWFzb25cbiAgICB9KTtcblxuICAgIGlmIChyZWdpc3RlclJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVnaXN0ZXJSZXNwb25zZS5kYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVBdXRoUmVzcG9uc2UobmV0d29ya0lkLCBrZXlzLCByZWdpc3RlclJlc3BvbnNlLmRhdGEsIGNsaWVudCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IElmIGFscmVhZHkgcmVnaXN0ZXJlZCAob3IgYW55IDQwMC1saWtlIGVycm9yKSwgdHJ5IGxvZ2luIGluc3RlYWRcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSByZWdpc3RlclJlc3BvbnNlLmVycm9yPy5tZXNzYWdlIHx8ICcnO1xuICAgIGNvbnN0IGlzQWxyZWFkeVJlZ2lzdGVyZWQgPSBlcnJvck1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnYWxyZWFkeSByZWdpc3RlcmVkJyk7XG4gICAgXG4gICAgaWYgKGlzQWxyZWFkeVJlZ2lzdGVyZWQgfHwgIXJlZ2lzdGVyUmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheShgICBSZWdpc3RyYXRpb24gZmFpbGVkIChsaWtlbHkgYWxyZWFkeSByZWdpc3RlcmVkKS4gQXR0ZW1wdGluZyBsb2dpbiBmb3IgJHtuZXR3b3JrSWR9Li4uYCkpO1xuICAgICAgY29uc3QgbG9naW5SZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PGFueT4oJy92MS9hdXRoL2xvZ2luJywge1xuICAgICAgICBuZXR3b3JrSWQsXG4gICAgICAgIHB1YmxpY1Rva2VuOiBrZXlzLnB1YmxpY1Rva2VuLFxuICAgICAgICBwcml2YXRlS2V5OiBrZXlzLnByaXZhdGVLZXksXG4gICAgICAgIHJlYXNvblxuICAgICAgfSk7XG5cbiAgICAgIGlmIChsb2dpblJlc3BvbnNlLnN1Y2Nlc3MgJiYgbG9naW5SZXNwb25zZS5kYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUF1dGhSZXNwb25zZShuZXR3b3JrSWQsIGtleXMsIGxvZ2luUmVzcG9uc2UuZGF0YSwgY2xpZW50LCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKHJlZ2lzdGVyUmVzcG9uc2UuZXJyb3I/Lm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byBhdXRoZW50aWNhdGUnKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIGhhbmRsZUF1dGhSZXNwb25zZShcbiAgICBuZXR3b3JrSWQ6IHN0cmluZywgXG4gICAga2V5czogeyBwdWJsaWNUb2tlbjogc3RyaW5nOyBwcml2YXRlS2V5OiBzdHJpbmcgfSwgXG4gICAgcmVzcG9uc2VEYXRhOiBhbnksIFxuICAgIGNsaWVudDogQXBpQ2xpZW50LFxuICAgIGlzTmV3VXNlcjogYm9vbGVhblxuICApOiBQcm9taXNlPEF1dGhSZXN1bHQ+IHtcbiAgICAvLyBTZWFyY2ggZm9yIEpXVCBpbiBkaWZmZXJlbnQgcG9zc2libGUgbG9jYXRpb25zIGR1ZSB0byBUT09OIGRlY29kaW5nIHZhcmlhdGlvbnNcbiAgICBjb25zdCBqd3QgPSByZXNwb25zZURhdGEuand0IHx8IFxuICAgICAgICAgICAgICAgIChyZXNwb25zZURhdGEuZGF0YSAmJiByZXNwb25zZURhdGEuZGF0YS5qd3QpIHx8IFxuICAgICAgICAgICAgICAgIChyZXNwb25zZURhdGEudG9rZW5zICYmIHJlc3BvbnNlRGF0YS50b2tlbnMuand0KSB8fFxuICAgICAgICAgICAgICAgIChyZXNwb25zZURhdGEuZGF0YSAmJiByZXNwb25zZURhdGEuZGF0YS50b2tlbnMgJiYgcmVzcG9uc2VEYXRhLmRhdGEudG9rZW5zLmp3dCk7XG4gICAgXG4gICAgY29uc3QgZXhwaXJlc0F0ID0gcmVzcG9uc2VEYXRhLmV4cGlyZXNBdCB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VEYXRhLmRhdGEgJiYgcmVzcG9uc2VEYXRhLmRhdGEuZXhwaXJlc0F0KSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VEYXRhLnRva2VucyAmJiByZXNwb25zZURhdGEudG9rZW5zLmV4cGlyZXNBdCk7XG5cbiAgICBpZiAoIWp3dCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKCdBdXRoIFJlc3BvbnNlIERhdGE6JywgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2VEYXRhKSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F1dGhlbnRpY2F0aW9uIHN1Y2NlZWRlZCBidXQgbm8gSldUIGZvdW5kIGluIHJlc3BvbnNlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3Q3JlZHM6IE5ldHdvcmtDcmVkZW50aWFscyA9IHtcbiAgICAgIHB1YmxpY1Rva2VuOiBrZXlzLnB1YmxpY1Rva2VuLFxuICAgICAgcHJpdmF0ZUtleToga2V5cy5wcml2YXRlS2V5LFxuICAgICAgand0OiBqd3QsXG4gICAgICBleHBpcmVzQXQ6IGV4cGlyZXNBdCB8fCAoRGF0ZS5ub3coKSArIDI0ICogMzYwMCAqIDEwMDApIC8vIERlZmF1bHQgMjRoIGlmIG1pc3NpbmdcbiAgICB9O1xuXG4gICAgYXdhaXQgY29uZmlnTWFuYWdlci5zYXZlQ3JlZGVudGlhbHMobmV0d29ya0lkLCBuZXdDcmVkcyk7XG4gICAgY2xpZW50LnNldEF1dGhUb2tlbihqd3QpO1xuXG4gICAgaWYgKGlzTmV3VXNlcikge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYCAg4pyTIEF1dG8tcmVnaXN0ZXJlZCBpbiBuZXR3b3JrOiAke25ldHdvcmtJZH1gKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGAgIOKckyBMb2dnZWQgaW50byBuZXR3b3JrOiAke25ldHdvcmtJZH1gKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xpZW50LCBjcmVkZW50aWFsczogbmV3Q3JlZHMsIGlzTmV3VXNlciB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGdldEFwaUNsaWVudCgpOiBQcm9taXNlPEFwaUNsaWVudD4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGNvbmZpZ01hbmFnZXIuZ2V0R2xvYmFsQ29uZmlnKCk7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEFwaUNsaWVudChjb25maWcuYXBpVXJsKTtcbiAgICBjbGllbnQuc2V0Rm9ybWF0KGNvbmZpZy5kZWZhdWx0Rm9ybWF0KTtcbiAgICByZXR1cm4gY2xpZW50O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGdldEF1dGhlbnRpY2F0ZWRDbGllbnQobmV0d29ya0lkOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFByb21pc2U8QXBpQ2xpZW50PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5lbnN1cmVBdXRoZW50aWNhdGVkKG5ldHdvcmtJZCwgcmVhc29uKTtcbiAgICByZXR1cm4gcmVzdWx0LmNsaWVudDtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBnZXRGaXJzdEF1dGhlbnRpY2F0ZWRDbGllbnQoKTogUHJvbWlzZTx7IGNsaWVudDogQXBpQ2xpZW50OyBuZXR3b3JrSWQ6IHN0cmluZyB9PiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHNEaXIgPSBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCAnLmFnZW50aWNwb29sJywgJ2NyZWRlbnRpYWxzJyk7XG4gICAgXG4gICAgaWYgKCEoYXdhaXQgZnMucGF0aEV4aXN0cyhjcmVkZW50aWFsc0RpcikpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHN0b3JlZCBjcmVkZW50aWFscyBmb3VuZC4gUnVuIFwiYWdlbnRpY3Bvb2wgYXV0aCBjb25uZWN0IDxuZXR3b3JrSWQ+XCIgZmlyc3QuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKGNyZWRlbnRpYWxzRGlyKTtcbiAgICBjb25zdCBqc29uRmlsZXMgPSBmaWxlcy5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKCcuanNvbicpKTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBqc29uRmlsZXMpIHtcbiAgICAgIGNvbnN0IG5ldHdvcmtJZCA9IGZpbGUucmVwbGFjZSgnLmpzb24nLCAnJyk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmVuc3VyZUF1dGhlbnRpY2F0ZWQobmV0d29ya0lkKTtcbiAgICAgICAgcmV0dXJuIHsgY2xpZW50OiByZXN1bHQuY2xpZW50LCBuZXR3b3JrSWQgfTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHZhbGlkIGNyZWRlbnRpYWxzIGZvdW5kLiBSdW4gXCJhZ2VudGljcG9vbCBhdXRoIGNvbm5lY3QgPG5ldHdvcmtJZD5cIiBmaXJzdC4nKTtcbiAgfVxufVxuIl19
|
package/dist/commands/auth.d.ts
DELETED