opensoma 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +1 -1
- package/dist/src/client.d.ts +2 -0
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +17 -2
- package/dist/src/client.js.map +1 -1
- package/dist/src/commands/auth.d.ts +8 -0
- package/dist/src/commands/auth.d.ts.map +1 -1
- package/dist/src/commands/auth.js +70 -21
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/helpers.d.ts +8 -0
- package/dist/src/commands/helpers.d.ts.map +1 -1
- package/dist/src/commands/helpers.js +30 -9
- package/dist/src/commands/helpers.js.map +1 -1
- package/dist/src/credential-manager.d.ts +7 -0
- package/dist/src/credential-manager.d.ts.map +1 -1
- package/dist/src/credential-manager.js +76 -2
- package/dist/src/credential-manager.js.map +1 -1
- package/dist/src/http.d.ts +1 -0
- package/dist/src/http.d.ts.map +1 -1
- package/dist/src/http.js +44 -3
- package/dist/src/http.js.map +1 -1
- package/dist/src/session-recovery.d.ts +12 -0
- package/dist/src/session-recovery.d.ts.map +1 -0
- package/dist/src/session-recovery.js +34 -0
- package/dist/src/session-recovery.js.map +1 -0
- package/dist/src/types.d.ts +1 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +1 -0
- package/dist/src/types.js.map +1 -1
- package/package.json +1 -1
- package/src/client.test.ts +65 -1
- package/src/client.ts +21 -4
- package/src/commands/auth.test.ts +113 -1
- package/src/commands/auth.ts +83 -25
- package/src/commands/helpers.test.ts +112 -0
- package/src/commands/helpers.ts +50 -12
- package/src/credential-manager.test.ts +41 -1
- package/src/credential-manager.ts +103 -2
- package/src/http.test.ts +33 -4
- package/src/http.ts +55 -3
- package/src/session-recovery.ts +56 -0
- package/src/types.ts +1 -0
package/dist/package.json
CHANGED
package/dist/src/client.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export interface SomaClientOptions {
|
|
|
11
11
|
export declare class SomaClient {
|
|
12
12
|
private readonly http;
|
|
13
13
|
private readonly options;
|
|
14
|
+
private loginCredentials;
|
|
14
15
|
readonly mentoring: {
|
|
15
16
|
list(options?: {
|
|
16
17
|
status?: string;
|
|
@@ -99,6 +100,7 @@ export declare class SomaClient {
|
|
|
99
100
|
private resolveUser;
|
|
100
101
|
login(username?: string, password?: string): Promise<void>;
|
|
101
102
|
isLoggedIn(): Promise<boolean>;
|
|
103
|
+
logout(): Promise<void>;
|
|
102
104
|
saveCredentials(manager?: CredentialManager): Promise<void>;
|
|
103
105
|
private containsErrorIndicator;
|
|
104
106
|
private extractErrorMessage;
|
package/dist/src/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAIxD,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/src/client.js
CHANGED
|
@@ -8,6 +8,7 @@ import { buildApplicationPayload, buildCancelApplicationPayload, buildDeleteMent
|
|
|
8
8
|
export class SomaClient {
|
|
9
9
|
http;
|
|
10
10
|
options;
|
|
11
|
+
loginCredentials;
|
|
11
12
|
mentoring;
|
|
12
13
|
room;
|
|
13
14
|
dashboard;
|
|
@@ -17,6 +18,8 @@ export class SomaClient {
|
|
|
17
18
|
event;
|
|
18
19
|
constructor(options = {}) {
|
|
19
20
|
this.options = options;
|
|
21
|
+
this.loginCredentials =
|
|
22
|
+
options.username && options.password ? { username: options.username, password: options.password } : null;
|
|
20
23
|
this.http = new SomaHttp({
|
|
21
24
|
sessionCookie: options.sessionCookie,
|
|
22
25
|
csrfToken: options.csrfToken,
|
|
@@ -181,7 +184,11 @@ export class SomaClient {
|
|
|
181
184
|
};
|
|
182
185
|
}
|
|
183
186
|
async requireAuth() {
|
|
184
|
-
|
|
187
|
+
let identity = await this.http.checkLogin();
|
|
188
|
+
if (!identity && this.loginCredentials) {
|
|
189
|
+
await this.http.login(this.loginCredentials.username, this.loginCredentials.password);
|
|
190
|
+
identity = await this.http.checkLogin();
|
|
191
|
+
}
|
|
185
192
|
if (!identity) {
|
|
186
193
|
throw new AuthenticationError();
|
|
187
194
|
}
|
|
@@ -197,10 +204,17 @@ export class SomaClient {
|
|
|
197
204
|
throw new Error('Username and password are required');
|
|
198
205
|
}
|
|
199
206
|
await this.http.login(resolvedUsername, resolvedPassword);
|
|
207
|
+
this.loginCredentials = {
|
|
208
|
+
username: resolvedUsername,
|
|
209
|
+
password: resolvedPassword,
|
|
210
|
+
};
|
|
200
211
|
}
|
|
201
212
|
async isLoggedIn() {
|
|
202
213
|
return Boolean(await this.http.checkLogin());
|
|
203
214
|
}
|
|
215
|
+
async logout() {
|
|
216
|
+
await this.http.logout();
|
|
217
|
+
}
|
|
204
218
|
async saveCredentials(manager = new CredentialManager()) {
|
|
205
219
|
const sessionCookie = this.http.getSessionCookie();
|
|
206
220
|
const csrfToken = this.http.getCsrfToken();
|
|
@@ -210,7 +224,8 @@ export class SomaClient {
|
|
|
210
224
|
await manager.setCredentials({
|
|
211
225
|
sessionCookie,
|
|
212
226
|
csrfToken,
|
|
213
|
-
username: this.
|
|
227
|
+
username: this.loginCredentials?.username,
|
|
228
|
+
password: this.loginCredentials?.password,
|
|
214
229
|
loggedInAt: new Date().toISOString(),
|
|
215
230
|
});
|
|
216
231
|
}
|
package/dist/src/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAA;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import { CredentialManager } from '../credential-manager.js';
|
|
2
3
|
import { SomaHttp } from '../http.js';
|
|
3
4
|
import type { ExtractedSessionCandidate } from '../token-extractor.js';
|
|
4
5
|
type ExtractedSessionValidator = Pick<SomaHttp, 'checkLogin' | 'extractCsrfToken'>;
|
|
6
|
+
type CredentialStore = Pick<CredentialManager, 'getCredentials' | 'remove' | 'setCredentials'>;
|
|
7
|
+
type StatusValidator = Pick<SomaHttp, 'checkLogin'>;
|
|
8
|
+
type ReloginHttp = Pick<SomaHttp, 'checkLogin' | 'getCsrfToken' | 'getSessionCookie' | 'login'>;
|
|
5
9
|
export declare function resolveExtractedCredentials(candidates: ExtractedSessionCandidate[], createValidator?: (sessionCookie: string) => ExtractedSessionValidator): Promise<{
|
|
6
10
|
csrfToken: string;
|
|
7
11
|
sessionCookie: string;
|
|
8
12
|
} | null>;
|
|
13
|
+
export declare function inspectStoredAuthStatus(manager?: CredentialStore, createValidator?: (credentials: {
|
|
14
|
+
sessionCookie: string;
|
|
15
|
+
csrfToken: string;
|
|
16
|
+
}) => StatusValidator, createReloginHttp?: () => ReloginHttp): Promise<Record<string, boolean | null | string>>;
|
|
9
17
|
export declare const authCommand: Command;
|
|
10
18
|
export {};
|
|
11
19
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAIlC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAKnE,KAAK,yBAAyB,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,kBAAkB,CAAC,CAAA;AAClF,KAAK,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,QAAQ,GAAG,gBAAgB,CAAC,CAAA;AAC9F,KAAK,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;AACnD,KAAK,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,cAAc,GAAG,kBAAkB,GAAG,OAAO,CAAC,CAAA;AAM/F,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,yBAAyB,EAAE,EACvC,eAAe,GAAE,CAAC,aAAa,EAAE,MAAM,KAAK,yBACX,GAChC,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAkB9D;AAgED,wBAAsB,uBAAuB,CAC3C,OAAO,GAAE,eAAyC,EAClD,eAAe,GAAE,CAAC,WAAW,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,KAAK,eACc,EAC9F,iBAAiB,GAAE,MAAM,WAAkC,GAC1D,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAuDlD;AAyCD,eAAO,MAAM,WAAW,SA2BrB,CAAA"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import { CredentialManager } from '../credential-manager.js';
|
|
3
3
|
import { SomaHttp } from '../http.js';
|
|
4
|
+
import { recoverSession } from '../session-recovery.js';
|
|
4
5
|
import { handleError } from '../shared/utils/error-handler.js';
|
|
5
6
|
import { formatOutput } from '../shared/utils/output.js';
|
|
7
|
+
const EXPIRED_SESSION_HINT = 'Session expired. Run: opensoma auth login or opensoma auth extract';
|
|
8
|
+
const UNVERIFIED_SESSION_HINT = 'Could not verify session. Try again or run: opensoma auth login or opensoma auth extract';
|
|
6
9
|
export async function resolveExtractedCredentials(candidates, createValidator = (sessionCookie) => new SomaHttp({ sessionCookie })) {
|
|
7
10
|
for (const candidate of candidates) {
|
|
8
11
|
const http = createValidator(candidate.sessionCookie);
|
|
@@ -45,6 +48,7 @@ async function loginAction(options) {
|
|
|
45
48
|
sessionCookie,
|
|
46
49
|
csrfToken,
|
|
47
50
|
username,
|
|
51
|
+
password,
|
|
48
52
|
loggedInAt: new Date().toISOString(),
|
|
49
53
|
});
|
|
50
54
|
console.log(formatOutput({ ok: true, username, loggedIn: true }, options.pretty));
|
|
@@ -55,36 +59,81 @@ async function loginAction(options) {
|
|
|
55
59
|
}
|
|
56
60
|
async function logoutAction(options) {
|
|
57
61
|
try {
|
|
58
|
-
|
|
59
|
-
|
|
62
|
+
const manager = new CredentialManager();
|
|
63
|
+
const credentials = await manager.getCredentials();
|
|
64
|
+
let upstreamLoggedOut = false;
|
|
65
|
+
if (credentials) {
|
|
66
|
+
const http = new SomaHttp({ sessionCookie: credentials.sessionCookie, csrfToken: credentials.csrfToken });
|
|
67
|
+
try {
|
|
68
|
+
await http.logout();
|
|
69
|
+
upstreamLoggedOut = true;
|
|
70
|
+
}
|
|
71
|
+
catch { }
|
|
72
|
+
}
|
|
73
|
+
await manager.remove();
|
|
74
|
+
console.log(formatOutput({ ok: true, loggedIn: false, upstreamLoggedOut }, options.pretty));
|
|
60
75
|
}
|
|
61
76
|
catch (error) {
|
|
62
77
|
handleError(error);
|
|
63
78
|
}
|
|
64
79
|
}
|
|
65
|
-
async function
|
|
80
|
+
export async function inspectStoredAuthStatus(manager = new CredentialManager(), createValidator = (credentials) => new SomaHttp({ sessionCookie: credentials.sessionCookie, csrfToken: credentials.csrfToken }), createReloginHttp = () => new SomaHttp()) {
|
|
81
|
+
const creds = await manager.getCredentials();
|
|
82
|
+
if (!creds) {
|
|
83
|
+
return { authenticated: false, credentials: null };
|
|
84
|
+
}
|
|
85
|
+
let identity = null;
|
|
66
86
|
try {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
87
|
+
identity = await createValidator(creds).checkLogin();
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return {
|
|
91
|
+
authenticated: true,
|
|
92
|
+
valid: false,
|
|
93
|
+
username: creds.username ?? null,
|
|
94
|
+
loggedInAt: creds.loggedInAt ?? null,
|
|
95
|
+
hint: UNVERIFIED_SESSION_HINT,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
if (!identity) {
|
|
74
99
|
try {
|
|
75
|
-
const
|
|
76
|
-
|
|
100
|
+
const refreshedCredentials = await recoverSession(creds, manager, createReloginHttp);
|
|
101
|
+
if (refreshedCredentials) {
|
|
102
|
+
return {
|
|
103
|
+
authenticated: true,
|
|
104
|
+
valid: true,
|
|
105
|
+
username: refreshedCredentials.username ?? null,
|
|
106
|
+
loggedInAt: refreshedCredentials.loggedInAt ?? null,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
77
109
|
}
|
|
78
110
|
catch {
|
|
79
|
-
|
|
111
|
+
return {
|
|
112
|
+
authenticated: true,
|
|
113
|
+
valid: false,
|
|
114
|
+
username: creds.username ?? null,
|
|
115
|
+
loggedInAt: creds.loggedInAt ?? null,
|
|
116
|
+
hint: UNVERIFIED_SESSION_HINT,
|
|
117
|
+
};
|
|
80
118
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
119
|
+
await manager.remove();
|
|
120
|
+
return {
|
|
121
|
+
authenticated: false,
|
|
122
|
+
credentials: null,
|
|
123
|
+
clearedStaleCredentials: true,
|
|
124
|
+
hint: EXPIRED_SESSION_HINT,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
authenticated: true,
|
|
129
|
+
valid: true,
|
|
130
|
+
username: creds.username ?? null,
|
|
131
|
+
loggedInAt: creds.loggedInAt ?? null,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
async function statusAction(options) {
|
|
135
|
+
try {
|
|
136
|
+
console.log(formatOutput(await inspectStoredAuthStatus(), options.pretty));
|
|
88
137
|
}
|
|
89
138
|
catch (error) {
|
|
90
139
|
handleError(error);
|
|
@@ -122,7 +171,7 @@ export const authCommand = new Command('auth')
|
|
|
122
171
|
.option('--pretty', 'Pretty print JSON output')
|
|
123
172
|
.action(loginAction))
|
|
124
173
|
.addCommand(new Command('logout')
|
|
125
|
-
.description('
|
|
174
|
+
.description('Log out upstream session and remove saved credentials')
|
|
126
175
|
.option('--pretty', 'Pretty print JSON output')
|
|
127
176
|
.action(logoutAction))
|
|
128
177
|
.addCommand(new Command('status')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAWrD,MAAM,oBAAoB,GAAG,oEAAoE,CAAA;AACjG,MAAM,uBAAuB,GAC3B,0FAA0F,CAAA;AAE5F,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,UAAuC,EACvC,kBAAwE,CAAC,aAAa,EAAE,EAAE,CACxF,IAAI,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAEjC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QAErD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;YAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,SAAQ;YACV,CAAC;YAED,OAAO;gBACL,aAAa,EAAE,SAAS,CAAC,aAAa;gBACtC,SAAS,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE;aACzC,CAAA;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAqB;IAC9C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAA;QAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAA;QAClE,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAA;QACrG,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAA;QAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QACrC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC9D,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;QAC7D,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAClE,CAAC;QAED,MAAM,IAAI,iBAAiB,EAAE,CAAC,cAAc,CAAC;YAC3C,aAAa;YACb,SAAS;YACT,QAAQ;YACR,QAAQ;YACR,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IACnF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAsB;IAChD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAA;QACvC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAA;QAClD,IAAI,iBAAiB,GAAG,KAAK,CAAA;QAE7B,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAA;YAEzG,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;gBACnB,iBAAiB,GAAG,IAAI,CAAA;YAC1B,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,CAAC,MAAM,EAAE,CAAA;QACtB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IAC7F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAA2B,IAAI,iBAAiB,EAAE,EAClD,kBAAkG,CAAC,WAAW,EAAE,EAAE,CAChH,IAAI,QAAQ,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,EAC9F,oBAAuC,GAAG,EAAE,CAAC,IAAI,QAAQ,EAAE;IAE3D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAA;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IACpD,CAAC;IAED,IAAI,QAAQ,GAAG,IAAI,CAAA;IACnB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAA;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,aAAa,EAAE,IAAI;YACnB,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;YACpC,IAAI,EAAE,uBAAuB;SAC9B,CAAA;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,oBAAoB,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAA;YACpF,IAAI,oBAAoB,EAAE,CAAC;gBACzB,OAAO;oBACL,aAAa,EAAE,IAAI;oBACnB,KAAK,EAAE,IAAI;oBACX,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,IAAI,IAAI;oBAC/C,UAAU,EAAE,oBAAoB,CAAC,UAAU,IAAI,IAAI;iBACpD,CAAA;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,aAAa,EAAE,IAAI;gBACnB,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;gBAChC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;gBACpC,IAAI,EAAE,uBAAuB;aAC9B,CAAA;QACH,CAAC;QAED,MAAM,OAAO,CAAC,MAAM,EAAE,CAAA;QACtB,OAAO;YACL,aAAa,EAAE,KAAK;YACpB,WAAW,EAAE,IAAI;YACjB,uBAAuB,EAAE,IAAI;YAC7B,IAAI,EAAE,oBAAoB;SAC3B,CAAA;IACH,CAAC;IAED,OAAO;QACL,aAAa,EAAE,IAAI;QACnB,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;QAChC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;KACrC,CAAA;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAsB;IAChD,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,uBAAuB,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAuB;IAClD,IAAI,CAAC;QACH,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAE7D,CAAA;QACD,MAAM,SAAS,GAAG,IAAI,cAAc,EAAE,CAAA;QACtC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,iBAAiB,EAAE,CAAA;QACtD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,6IAA6I,CAC9I,CAAA;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,2BAA2B,CAAC,UAAU,CAAC,CAAA;QACjE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,2JAA2J,CAC5J,CAAA;QACH,CAAC;QAED,MAAM,IAAI,iBAAiB,EAAE,CAAC,cAAc,CAAC;YAC3C,aAAa,EAAE,WAAW,CAAC,aAAa;YACxC,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IACvF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,uBAAuB,CAAC;KACpC,UAAU,CACT,IAAI,OAAO,CAAC,OAAO,CAAC;KACjB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;KACrD,MAAM,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;KACrD,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAC9C,MAAM,CAAC,WAAW,CAAC,CACvB;KACA,UAAU,CACT,IAAI,OAAO,CAAC,QAAQ,CAAC;KAClB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAC9C,MAAM,CAAC,YAAY,CAAC,CACxB;KACA,UAAU,CACT,IAAI,OAAO,CAAC,QAAQ,CAAC;KAClB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAC9C,MAAM,CAAC,YAAY,CAAC,CACxB;KACA,UAAU,CACT,IAAI,OAAO,CAAC,SAAS,CAAC;KACnB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAC9C,MAAM,CAAC,aAAa,CAAC,CACzB,CAAA"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
import { CredentialManager } from '../credential-manager.js';
|
|
1
2
|
import { SomaHttp } from '../http.js';
|
|
3
|
+
import type { Credentials } from '../types.js';
|
|
4
|
+
type CredentialStore = Pick<CredentialManager, 'getCredentials' | 'remove' | 'setCredentials'>;
|
|
5
|
+
type AuthenticatedHttp = Pick<SomaHttp, 'checkLogin'>;
|
|
6
|
+
type ReloginHttp = Pick<SomaHttp, 'checkLogin' | 'getCsrfToken' | 'getSessionCookie' | 'login'>;
|
|
7
|
+
export declare function createAuthenticatedHttp(): Promise<SomaHttp>;
|
|
8
|
+
export declare function createAuthenticatedHttp<T extends AuthenticatedHttp>(manager: CredentialStore, createHttp: (credentials: Credentials) => T, createReloginHttp?: () => ReloginHttp): Promise<T>;
|
|
2
9
|
export declare function getHttpOrExit(): Promise<SomaHttp>;
|
|
10
|
+
export {};
|
|
3
11
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,KAAK,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,QAAQ,GAAG,gBAAgB,CAAC,CAAA;AAC9F,KAAK,iBAAiB,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;AACrD,KAAK,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,cAAc,GAAG,kBAAkB,GAAG,OAAO,CAAC,CAAA;AAY/F,wBAAgB,uBAAuB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAA;AAC5D,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,iBAAiB,EACjE,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,CAAC,EAC3C,iBAAiB,CAAC,EAAE,MAAM,WAAW,GACpC,OAAO,CAAC,CAAC,CAAC,CAAA;AA+Bb,wBAAsB,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,CAWvD"}
|
|
@@ -1,22 +1,43 @@
|
|
|
1
1
|
import { CredentialManager } from '../credential-manager.js';
|
|
2
2
|
import { SomaHttp } from '../http.js';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { recoverSession } from '../session-recovery.js';
|
|
4
|
+
const NOT_LOGGED_IN_MESSAGE = 'Not logged in. Run: opensoma auth login or opensoma auth extract';
|
|
5
|
+
const STALE_SESSION_MESSAGE = 'Session expired. Saved credentials were cleared. Run: opensoma auth login or opensoma auth extract';
|
|
6
|
+
const RECOVERY_FAILED_MESSAGE = 'Session expired and automatic re-login failed. Run: opensoma auth login or opensoma auth extract';
|
|
7
|
+
function defaultCreateHttp(credentials) {
|
|
8
|
+
return new SomaHttp({ sessionCookie: credentials.sessionCookie, csrfToken: credentials.csrfToken });
|
|
9
|
+
}
|
|
10
|
+
export async function createAuthenticatedHttp(manager = new CredentialManager(), createHttp, createReloginHttp = () => new SomaHttp()) {
|
|
5
11
|
const creds = await manager.getCredentials();
|
|
6
12
|
if (!creds) {
|
|
7
|
-
|
|
8
|
-
error: 'Not logged in. Run: opensoma auth login or opensoma auth extract',
|
|
9
|
-
}));
|
|
10
|
-
process.exit(1);
|
|
13
|
+
throw new Error(NOT_LOGGED_IN_MESSAGE);
|
|
11
14
|
}
|
|
12
|
-
const http =
|
|
15
|
+
const http = createHttp ? createHttp(creds) : defaultCreateHttp(creds);
|
|
13
16
|
const identity = await http.checkLogin();
|
|
14
17
|
if (!identity) {
|
|
18
|
+
try {
|
|
19
|
+
const refreshedCredentials = await recoverSession(creds, manager, createReloginHttp);
|
|
20
|
+
if (refreshedCredentials) {
|
|
21
|
+
return createHttp ? createHttp(refreshedCredentials) : defaultCreateHttp(refreshedCredentials);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
throw new Error(RECOVERY_FAILED_MESSAGE);
|
|
26
|
+
}
|
|
27
|
+
await manager.remove();
|
|
28
|
+
throw new Error(STALE_SESSION_MESSAGE);
|
|
29
|
+
}
|
|
30
|
+
return http;
|
|
31
|
+
}
|
|
32
|
+
export async function getHttpOrExit() {
|
|
33
|
+
try {
|
|
34
|
+
return await createAuthenticatedHttp();
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
15
37
|
console.error(JSON.stringify({
|
|
16
|
-
error:
|
|
38
|
+
error: error instanceof Error ? error.message : STALE_SESSION_MESSAGE,
|
|
17
39
|
}));
|
|
18
40
|
process.exit(1);
|
|
19
41
|
}
|
|
20
|
-
return http;
|
|
21
42
|
}
|
|
22
43
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAOpD,MAAM,qBAAqB,GAAG,kEAAkE,CAAA;AAChG,MAAM,qBAAqB,GACzB,oGAAoG,CAAA;AACtG,MAAM,uBAAuB,GAC3B,kGAAkG,CAAA;AAEpG,SAAS,iBAAiB,CAAC,WAAwB;IACjD,OAAO,IAAI,QAAQ,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAA;AACrG,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAA2B,IAAI,iBAAiB,EAAE,EAClD,UAA4C,EAC5C,oBAAuC,GAAG,EAAE,CAAC,IAAI,QAAQ,EAAE;IAE3D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAA;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;IAEtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;IACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,oBAAoB,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAA;YACpF,IAAI,oBAAoB,EAAE,CAAC;gBACzB,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAA;YAChG,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;QAC1C,CAAC;QAED,MAAM,OAAO,CAAC,MAAM,EAAE,CAAA;QACtB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACxC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,OAAO,MAAM,uBAAuB,EAAE,CAAA;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB;SACtE,CAAC,CACH,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -5,11 +5,18 @@ export interface CredentialConfig {
|
|
|
5
5
|
export declare class CredentialManager {
|
|
6
6
|
private configDir;
|
|
7
7
|
private credentialsPath;
|
|
8
|
+
private encryptionKeyPath;
|
|
8
9
|
constructor(configDir?: string);
|
|
9
10
|
load(): Promise<CredentialConfig>;
|
|
10
11
|
save(config: CredentialConfig): Promise<void>;
|
|
11
12
|
getCredentials(): Promise<Credentials | null>;
|
|
12
13
|
setCredentials(credentials: Credentials): Promise<void>;
|
|
13
14
|
remove(): Promise<void>;
|
|
15
|
+
private hydrateCredentials;
|
|
16
|
+
private serializeCredentials;
|
|
17
|
+
private encryptSecret;
|
|
18
|
+
private decryptSecret;
|
|
19
|
+
private getOrCreateEncryptionKey;
|
|
20
|
+
private getExistingEncryptionKey;
|
|
14
21
|
}
|
|
15
22
|
//# sourceMappingURL=credential-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-manager.d.ts","sourceRoot":"","sources":["../../src/credential-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"credential-manager.d.ts","sourceRoot":"","sources":["../../src/credential-manager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAY1C,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAA;CAChC;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,iBAAiB,CAAQ;gBAErB,SAAS,CAAC,EAAE,MAAM;IAMxB,IAAI,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAgBjC,IAAI,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7C,cAAc,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK7C,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAKf,kBAAkB;YAUlB,oBAAoB;YAYpB,aAAa;YAab,aAAa;YAgBb,wBAAwB;YAYxB,wBAAwB;CAWvC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createCipheriv, createDecipheriv, randomBytes } from 'node:crypto';
|
|
1
2
|
import { existsSync } from 'node:fs';
|
|
2
3
|
import { chmod, mkdir, readFile, rm, writeFile } from 'node:fs/promises';
|
|
3
4
|
import { homedir } from 'node:os';
|
|
@@ -5,9 +6,11 @@ import { join } from 'node:path';
|
|
|
5
6
|
export class CredentialManager {
|
|
6
7
|
configDir;
|
|
7
8
|
credentialsPath;
|
|
9
|
+
encryptionKeyPath;
|
|
8
10
|
constructor(configDir) {
|
|
9
11
|
this.configDir = configDir ?? join(homedir(), '.config', 'opensoma');
|
|
10
12
|
this.credentialsPath = join(this.configDir, 'credentials.json');
|
|
13
|
+
this.encryptionKeyPath = join(this.configDir, 'credentials.key');
|
|
11
14
|
}
|
|
12
15
|
async load() {
|
|
13
16
|
if (!existsSync(this.credentialsPath)) {
|
|
@@ -15,7 +18,10 @@ export class CredentialManager {
|
|
|
15
18
|
}
|
|
16
19
|
try {
|
|
17
20
|
const content = await readFile(this.credentialsPath, 'utf8');
|
|
18
|
-
|
|
21
|
+
const parsed = JSON.parse(content);
|
|
22
|
+
return {
|
|
23
|
+
credentials: parsed.credentials ? await this.hydrateCredentials(parsed.credentials) : null,
|
|
24
|
+
};
|
|
19
25
|
}
|
|
20
26
|
catch {
|
|
21
27
|
return { credentials: null };
|
|
@@ -23,7 +29,9 @@ export class CredentialManager {
|
|
|
23
29
|
}
|
|
24
30
|
async save(config) {
|
|
25
31
|
await mkdir(this.configDir, { recursive: true });
|
|
26
|
-
await writeFile(this.credentialsPath, JSON.stringify(
|
|
32
|
+
await writeFile(this.credentialsPath, JSON.stringify({
|
|
33
|
+
credentials: config.credentials ? await this.serializeCredentials(config.credentials) : null,
|
|
34
|
+
}, null, 2));
|
|
27
35
|
await chmod(this.credentialsPath, 0o600);
|
|
28
36
|
}
|
|
29
37
|
async getCredentials() {
|
|
@@ -35,6 +43,72 @@ export class CredentialManager {
|
|
|
35
43
|
}
|
|
36
44
|
async remove() {
|
|
37
45
|
await rm(this.credentialsPath, { force: true });
|
|
46
|
+
await rm(this.encryptionKeyPath, { force: true });
|
|
47
|
+
}
|
|
48
|
+
async hydrateCredentials(credentials) {
|
|
49
|
+
if (!credentials.encryptedPassword) {
|
|
50
|
+
return credentials;
|
|
51
|
+
}
|
|
52
|
+
const { encryptedPassword, ...rest } = credentials;
|
|
53
|
+
const password = await this.decryptSecret(encryptedPassword);
|
|
54
|
+
return password ? { ...rest, password } : rest;
|
|
55
|
+
}
|
|
56
|
+
async serializeCredentials(credentials) {
|
|
57
|
+
if (!credentials.password) {
|
|
58
|
+
return credentials;
|
|
59
|
+
}
|
|
60
|
+
const { password, ...rest } = credentials;
|
|
61
|
+
return {
|
|
62
|
+
...rest,
|
|
63
|
+
encryptedPassword: await this.encryptSecret(password),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
async encryptSecret(secret) {
|
|
67
|
+
const key = await this.getOrCreateEncryptionKey();
|
|
68
|
+
const iv = randomBytes(12);
|
|
69
|
+
const cipher = createCipheriv('aes-256-gcm', key, iv);
|
|
70
|
+
const ciphertext = Buffer.concat([cipher.update(secret, 'utf8'), cipher.final()]);
|
|
71
|
+
return {
|
|
72
|
+
ciphertext: ciphertext.toString('base64'),
|
|
73
|
+
iv: iv.toString('base64'),
|
|
74
|
+
tag: cipher.getAuthTag().toString('base64'),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
async decryptSecret(secret) {
|
|
78
|
+
const key = await this.getExistingEncryptionKey();
|
|
79
|
+
if (!key) {
|
|
80
|
+
return '';
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
const decipher = createDecipheriv('aes-256-gcm', key, Buffer.from(secret.iv, 'base64'));
|
|
84
|
+
decipher.setAuthTag(Buffer.from(secret.tag, 'base64'));
|
|
85
|
+
const decrypted = Buffer.concat([decipher.update(Buffer.from(secret.ciphertext, 'base64')), decipher.final()]);
|
|
86
|
+
return decrypted.toString('utf8');
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return '';
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async getOrCreateEncryptionKey() {
|
|
93
|
+
if (existsSync(this.encryptionKeyPath)) {
|
|
94
|
+
return Buffer.from(await readFile(this.encryptionKeyPath, 'utf8'), 'base64');
|
|
95
|
+
}
|
|
96
|
+
await mkdir(this.configDir, { recursive: true });
|
|
97
|
+
const key = randomBytes(32);
|
|
98
|
+
await writeFile(this.encryptionKeyPath, key.toString('base64'));
|
|
99
|
+
await chmod(this.encryptionKeyPath, 0o600);
|
|
100
|
+
return key;
|
|
101
|
+
}
|
|
102
|
+
async getExistingEncryptionKey() {
|
|
103
|
+
if (!existsSync(this.encryptionKeyPath)) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
try {
|
|
107
|
+
return Buffer.from(await readFile(this.encryptionKeyPath, 'utf8'), 'base64');
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
38
112
|
}
|
|
39
113
|
}
|
|
40
114
|
//# sourceMappingURL=credential-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../../src/credential-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../../src/credential-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/src/http.d.ts
CHANGED
package/dist/src/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAQA,UAAU,cAAc;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAOD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAMD,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,CAAC,EAAE,cAAc;IAe9B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBnE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAsEvE,OAAO,CAAC,wBAAwB;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAQA,UAAU,cAAc;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAOD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAMD,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,CAAC,EAAE,cAAc;IAe9B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBnE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAsEvE,OAAO,CAAC,wBAAwB;IAoE1B,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAgBnE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BxD,UAAU,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAmD1C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAOzC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIpC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAItC,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,GAAG;CAKZ"}
|