dbctx 1.0.2 → 1.2.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/dist/app/assemble.d.mts +5 -0
- package/dist/app/assemble.d.mts.map +1 -0
- package/dist/app/assemble.mjs +161 -0
- package/dist/app/config.d.mts +9 -0
- package/dist/app/config.d.mts.map +1 -0
- package/dist/app/config.mjs +49 -0
- package/dist/app/db.d.mts +9 -0
- package/dist/app/db.d.mts.map +1 -0
- package/dist/app/db.mjs +157 -0
- package/dist/app/detect.d.mts +11 -0
- package/dist/app/detect.d.mts.map +1 -0
- package/dist/app/detect.mjs +105 -0
- package/dist/app/index.d.mts +3 -0
- package/dist/app/index.d.mts.map +1 -0
- package/dist/app/index.mjs +81 -0
- package/dist/app/open-url.d.mts +4 -0
- package/dist/app/open-url.d.mts.map +1 -0
- package/dist/app/open-url.mjs +27 -0
- package/dist/app/session.d.mts +8 -0
- package/dist/app/session.d.mts.map +1 -0
- package/dist/app/session.mjs +155 -0
- package/dist/app/ssh.d.mts +3 -0
- package/dist/app/ssh.d.mts.map +1 -0
- package/dist/app/ssh.mjs +207 -0
- package/dist/db/analyze.d.mts +1 -1
- package/dist/db/analyze.d.mts.map +1 -1
- package/dist/db/analyze.mjs +1 -1
- package/dist/db/attributes.d.mts +3 -3
- package/dist/db/attributes.d.mts.map +1 -1
- package/dist/db/attributes.mjs +2 -2
- package/dist/db/enums.d.mts +1 -1
- package/dist/db/enums.d.mts.map +1 -1
- package/dist/db/enums.mjs +2 -2
- package/dist/db/file-stats.d.mts +1 -1
- package/dist/db/file-stats.d.mts.map +1 -1
- package/dist/db/file-stats.mjs +1 -1
- package/dist/db/foreign-keys.d.mts +2 -2
- package/dist/db/foreign-keys.d.mts.map +1 -1
- package/dist/db/foreign-keys.mjs +1 -1
- package/dist/db/index.d.mts +9 -9
- package/dist/db/index.d.mts.map +1 -1
- package/dist/db/index.mjs +10 -10
- package/dist/db/indexes.d.mts +1 -1
- package/dist/db/indexes.d.mts.map +1 -1
- package/dist/db/indexes.mjs +1 -1
- package/dist/db/relations.d.mts +2 -2
- package/dist/db/relations.d.mts.map +1 -1
- package/dist/db/relations.mjs +2 -2
- package/dist/db/stats.d.mts +1 -1
- package/dist/db/stats.d.mts.map +1 -1
- package/dist/db/stats.mjs +2 -2
- package/dist/db/version.d.mts +2 -1
- package/dist/db/version.d.mts.map +1 -1
- package/dist/db/version.mjs +9 -1
- package/dist/index.d.mts +4 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +50 -51
- package/dist/lib/trpc-url.d.mts +2 -0
- package/dist/lib/trpc-url.d.mts.map +1 -0
- package/dist/lib/trpc-url.mjs +6 -0
- package/dist/lib/trpc.d.mts +7 -0
- package/dist/lib/trpc.d.mts.map +1 -0
- package/dist/lib/trpc.mjs +37 -0
- package/dist/lib/trpc.react.d.mts +4 -0
- package/dist/lib/trpc.react.d.mts.map +1 -0
- package/dist/lib/trpc.react.mjs +3 -0
- package/dist/lib/version.d.mts +2 -0
- package/dist/lib/version.d.mts.map +1 -0
- package/dist/lib/version.mjs +5 -0
- package/dist/providers/TrpcProvider.d.ts +9 -0
- package/dist/providers/TrpcProvider.d.ts.map +1 -0
- package/dist/providers/TrpcProvider.js +41 -0
- package/dist/schemas/index.d.mts +106 -1
- package/dist/schemas/index.d.mts.map +1 -1
- package/dist/schemas/index.mjs +27 -2
- package/dist/store.d.mts +64 -0
- package/dist/store.d.mts.map +1 -0
- package/dist/store.mjs +68 -0
- package/dist/{App.d.ts → types/connection.d.mts} +3 -9
- package/dist/types/connection.d.mts.map +1 -0
- package/dist/types/connection.mjs +2 -0
- package/dist/ui/App.d.ts +10 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.js +13 -0
- package/dist/ui/components/DB.d.ts +10 -0
- package/dist/ui/components/DB.d.ts.map +1 -0
- package/dist/ui/components/DB.js +22 -0
- package/dist/{components → ui/components}/Error.d.ts +1 -1
- package/dist/ui/components/Error.d.ts.map +1 -0
- package/dist/ui/components/Error.js +6 -0
- package/dist/ui/components/Gate.d.ts +10 -0
- package/dist/ui/components/Gate.d.ts.map +1 -0
- package/dist/ui/components/Gate.js +15 -0
- package/dist/ui/components/Introspect.d.ts +10 -0
- package/dist/ui/components/Introspect.d.ts.map +1 -0
- package/dist/ui/components/Introspect.js +66 -0
- package/dist/ui/components/PasswordInput.d.ts +7 -0
- package/dist/ui/components/PasswordInput.d.ts.map +1 -0
- package/dist/ui/components/PasswordInput.js +32 -0
- package/dist/ui/components/SSH.d.ts +10 -0
- package/dist/ui/components/SSH.d.ts.map +1 -0
- package/dist/ui/components/SSH.js +22 -0
- package/dist/ui/components/Session.d.ts +10 -0
- package/dist/ui/components/Session.d.ts.map +1 -0
- package/dist/ui/components/Session.js +47 -0
- package/dist/ui/components/Spinner.d.ts +3 -0
- package/dist/ui/components/Spinner.d.ts.map +1 -0
- package/dist/ui/components/Spinner.js +18 -0
- package/dist/ui/components/Splash.d.ts +3 -0
- package/dist/ui/components/Splash.d.ts.map +1 -0
- package/dist/ui/components/Splash.js +13 -0
- package/dist/validatePaths.d.mts +1 -1
- package/dist/validatePaths.d.mts.map +1 -1
- package/dist/validatePaths.mjs +17 -11
- package/package.json +22 -2
- package/dist/App.d.ts.map +0 -1
- package/dist/App.js +0 -9
- package/dist/components/Error.d.ts.map +0 -1
- package/dist/components/Error.js +0 -6
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { connectSSH } from './ssh.mjs';
|
|
2
|
+
import { connectDB } from './db.mjs';
|
|
3
|
+
import { assembleDatabase } from './assemble.mjs';
|
|
4
|
+
import { createSession, waitForAuthorization, connectAccount, checkGate, } from './session.mjs';
|
|
5
|
+
import { readConfig, flushConfig } from './config.mjs';
|
|
6
|
+
import { TRPCClientError } from '@trpc/client';
|
|
7
|
+
import { when, runInAction } from 'mobx';
|
|
8
|
+
import { env } from 'process';
|
|
9
|
+
export async function run(store) {
|
|
10
|
+
try {
|
|
11
|
+
const cleanupSSH = await connectSSH(store);
|
|
12
|
+
if (store.steps.sshConnection.enabled) {
|
|
13
|
+
await when(() => ['connected', 'error'].includes(store.steps.sshConnection.state));
|
|
14
|
+
if (store.steps.sshConnection.state === 'error') {
|
|
15
|
+
cleanupSSH?.();
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const db = await connectDB(store);
|
|
20
|
+
await when(() => ['connected', 'error'].includes(store.steps.databaseConnection.state));
|
|
21
|
+
if (store.steps.databaseConnection.state === 'error') {
|
|
22
|
+
db?.cleanup();
|
|
23
|
+
cleanupSSH?.();
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (db) {
|
|
27
|
+
const result = await assembleDatabase(db.pool, store);
|
|
28
|
+
const config = await readConfig();
|
|
29
|
+
try {
|
|
30
|
+
const sessionId = await createSession(db.pool, result, store, config.token ?? null, config.device_id);
|
|
31
|
+
if (config.token) {
|
|
32
|
+
try {
|
|
33
|
+
await connectAccount(config.token, store);
|
|
34
|
+
const canContinue = await checkGate(config.token, store);
|
|
35
|
+
if (!canContinue) {
|
|
36
|
+
db.pool.end();
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
db.pool.end();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
if (err instanceof TRPCClientError &&
|
|
44
|
+
(err.data?.code === 'UNAUTHORIZED' ||
|
|
45
|
+
err.data?.code === 'NOT_FOUND')) {
|
|
46
|
+
await flushConfig();
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
throw err;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
await waitForAuthorization(sessionId, store);
|
|
54
|
+
const freshToken = (await readConfig()).token;
|
|
55
|
+
if (freshToken) {
|
|
56
|
+
const canContinue = await checkGate(freshToken, store);
|
|
57
|
+
if (!canContinue) {
|
|
58
|
+
db.pool.end();
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
runInAction(() => {
|
|
65
|
+
store.steps.account.state = 'error';
|
|
66
|
+
store.steps.account.error =
|
|
67
|
+
err instanceof Error
|
|
68
|
+
? err.message
|
|
69
|
+
: 'Session creation failed';
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
db.pool.end();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
if (env.NODE_ENV !== 'production') {
|
|
77
|
+
console.error(err);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiYXBwL2luZGV4Lm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUNILGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFFNUIsTUFBTSxDQUFDLEtBQUssVUFBVSxHQUFHLENBQUMsS0FBYTtJQUNuQyxJQUFJLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUNaLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FDM0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUNsQyxDQUNKLENBQUM7WUFFRixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDOUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDZixPQUFPO1lBQ1gsQ0FBQztRQUNMLENB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QUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0wsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDWCxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDaEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixDQUFDO0lBQ0wsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RTdG9yZX0gZnJvbSAnLi4vc3RvcmUubWpzJztcbmltcG9ydCB7Y29ubmVjdFNTSH0gZnJvbSAnLi9zc2gubWpzJztcbmltcG9ydCB7Y29ubmVjdERCfSBmcm9tICcuL2RiLm1qcyc7XG5pbXBvcnQge2Fzc2VtYmxlRGF0YWJhc2V9IGZyb20gJy4vYXNzZW1ibGUubWpzJztcbmltcG9ydCB7XG4gICAgY3JlYXRlU2Vzc2lvbixcbiAgICB3YWl0Rm9yQXV0aG9yaXphdGlvbixcbiAgICBjb25uZWN0QWNjb3VudCxcbiAgICBjaGVja0dhdGUsXG59IGZyb20gJy4vc2Vzc2lvbi5tanMnO1xuaW1wb3J0IHtyZWFkQ29uZmlnLCBmbHVzaENvbmZpZ30gZnJvbSAnLi9jb25maWcubWpzJztcbmltcG9ydCB7VFJQQ0NsaWVudEVycm9yfSBmcm9tICdAdHJwYy9jbGllbnQnO1xuaW1wb3J0IHt3aGVuLCBydW5JbkFjdGlvbn0gZnJvbSAnbW9ieCc7XG5pbXBvcnQge2Vudn0gZnJvbSAncHJvY2Vzcyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW4oc3RvcmU6IFRTdG9yZSkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNsZWFudXBTU0ggPSBhd2FpdCBjb25uZWN0U1NIKHN0b3JlKTtcblxuICAgICAgICBpZiAoc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5lbmFibGVkKSB7XG4gICAgICAgICAgICBhd2FpdCB3aGVuKCgpID0+XG4gICAgICAgICAgICAgICAgWydjb25uZWN0ZWQnLCAnZXJyb3InXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5zdGF0ZSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uc3RhdGUgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICBjbGVhbnVwU1NIPy4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYiA9IGF3YWl0IGNvbm5lY3REQihzdG9yZSk7XG5cbiAgICAgICAgYXdhaXQgd2hlbigoKSA9PlxuICAgICAgICAgICAgWydjb25uZWN0ZWQnLCAnZXJyb3InXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5kYXRhYmFzZUNvbm5lY3Rpb24uc3RhdGUsXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChzdG9yZS5zdGVwcy5kYXRhYmFzZUNvbm5lY3Rpb24uc3RhdGUgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgIGRiPy5jbGVhbnVwKCk7XG4gICAgICAgICAgICBjbGVhbnVwU1NIPy4oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkYikge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXNzZW1ibGVEYXRhYmFzZShkYi5wb29sLCBzdG9yZSk7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkQ29uZmlnKCk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbklkID0gYXdhaXQgY3JlYXRlU2Vzc2lvbihcbiAgICAgICAgICAgICAgICAgICAgZGIucG9vbCxcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBzdG9yZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLnRva2VuID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kZXZpY2VfaWQsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChjb25maWcudG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGNvbm5lY3RBY2NvdW50KGNvbmZpZy50b2tlbiwgc3RvcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FuQ29udGludWUgPSBhd2FpdCBjaGVja0dhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnRva2VuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FuQ29udGludWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5wb29sLmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRiLnBvb2wuZW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciBpbnN0YW5jZW9mIFRSUENDbGllbnRFcnJvciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnIuZGF0YT8uY29kZSA9PT0gJ1VOQVVUSE9SSVpFRCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLmRhdGE/LmNvZGUgPT09ICdOT1RfRk9VTkQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZmx1c2hDb25maWcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYXdhaXQgd2FpdEZvckF1dGhvcml6YXRpb24oc2Vzc2lvbklkLCBzdG9yZSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmcmVzaFRva2VuID0gKGF3YWl0IHJlYWRDb25maWcoKSkudG9rZW47XG4gICAgICAgICAgICAgICAgaWYgKGZyZXNoVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FuQ29udGludWUgPSBhd2FpdCBjaGVja0dhdGUoZnJlc2hUb2tlbiwgc3RvcmUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbkNvbnRpbnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYi5wb29sLmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5hY2NvdW50LnN0YXRlID0gJ2Vycm9yJztcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuYWNjb3VudC5lcnJvciA9XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZXJyLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdTZXNzaW9uIGNyZWF0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRiLnBvb2wuZW5kKCk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-url.d.mts","sourceRoot":"./src/","sources":["app/open-url.mts"],"names":[],"mappings":"AAOA,eAAO,MAAM,iBAAiB,QAAO,OAQpC,CAAC;AAOF,eAAO,MAAM,eAAe,GAAI,WAAW,MAAM,KAAG,MACH,CAAC;AAElD,eAAO,MAAM,cAAc,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,IAAI,CAW9D,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { env } from 'process';
|
|
2
|
+
const SKIP_VALUES = new Set(['none', 'false', '0']);
|
|
3
|
+
const isDocker = () => !!(env.DOCKER || env.container || env.DOCKER_CONTAINER);
|
|
4
|
+
export const shouldOpenBrowser = () => {
|
|
5
|
+
if (isDocker()) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
const browser = env.BROWSER?.toLowerCase();
|
|
9
|
+
return !browser || !SKIP_VALUES.has(browser);
|
|
10
|
+
};
|
|
11
|
+
const SESSION_BASE_URL = env.NODE_ENV === 'production'
|
|
12
|
+
? 'https://dbctx.io/authorize/session'
|
|
13
|
+
: 'http://localhost:12002/authorize/session';
|
|
14
|
+
export const buildSessionURL = (sessionId) => `${SESSION_BASE_URL}?session-id=${sessionId}`;
|
|
15
|
+
export const openSessionURL = async (url) => {
|
|
16
|
+
if (!shouldOpenBrowser()) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const { default: open } = await import('open');
|
|
21
|
+
await open(url);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Browser opening is best-effort — no-op on failure
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi11cmwubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiYXBwL29wZW4tdXJsLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRTVCLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRXBELE1BQU0sUUFBUSxHQUFHLEdBQVksRUFBRSxDQUMzQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFNUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsR0FBWSxFQUFFO0lBQzNDLElBQUksUUFBUSxFQUFFLEVBQUUsQ0FBQztRQUNiLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBRTNDLE9BQU8sQ0FBQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQ2xCLEdBQUcsQ0FBQyxRQUFRLEtBQUssWUFBWTtJQUN6QixDQUFDLENBQUMsb0NBQW9DO0lBQ3RDLENBQUMsQ0FBQywwQ0FBMEMsQ0FBQztBQUVyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxTQUFpQixFQUFVLEVBQUUsQ0FDekQsR0FBRyxnQkFBZ0IsZUFBZSxTQUFTLEVBQUUsQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLEdBQVcsRUFBaUIsRUFBRTtJQUMvRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1FBQ3ZCLE9BQU87SUFDWCxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ0wsb0RBQW9EO0lBQ3hELENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Vudn0gZnJvbSAncHJvY2Vzcyc7XG5cbmNvbnN0IFNLSVBfVkFMVUVTID0gbmV3IFNldChbJ25vbmUnLCAnZmFsc2UnLCAnMCddKTtcblxuY29uc3QgaXNEb2NrZXIgPSAoKTogYm9vbGVhbiA9PlxuICAgICEhKGVudi5ET0NLRVIgfHwgZW52LmNvbnRhaW5lciB8fCBlbnYuRE9DS0VSX0NPTlRBSU5FUik7XG5cbmV4cG9ydCBjb25zdCBzaG91bGRPcGVuQnJvd3NlciA9ICgpOiBib29sZWFuID0+IHtcbiAgICBpZiAoaXNEb2NrZXIoKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3NlciA9IGVudi5CUk9XU0VSPy50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuICFicm93c2VyIHx8ICFTS0lQX1ZBTFVFUy5oYXMoYnJvd3Nlcik7XG59O1xuXG5jb25zdCBTRVNTSU9OX0JBU0VfVVJMID1cbiAgICBlbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJ1xuICAgICAgICA/ICdodHRwczovL2RiY3R4LmlvL2F1dGhvcml6ZS9zZXNzaW9uJ1xuICAgICAgICA6ICdodHRwOi8vbG9jYWxob3N0OjEyMDAyL2F1dGhvcml6ZS9zZXNzaW9uJztcblxuZXhwb3J0IGNvbnN0IGJ1aWxkU2Vzc2lvblVSTCA9IChzZXNzaW9uSWQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICAgIGAke1NFU1NJT05fQkFTRV9VUkx9P3Nlc3Npb24taWQ9JHtzZXNzaW9uSWR9YDtcblxuZXhwb3J0IGNvbnN0IG9wZW5TZXNzaW9uVVJMID0gYXN5bmMgKHVybDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgaWYgKCFzaG91bGRPcGVuQnJvd3NlcigpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7ZGVmYXVsdDogb3Blbn0gPSBhd2FpdCBpbXBvcnQoJ29wZW4nKTtcbiAgICAgICAgYXdhaXQgb3Blbih1cmwpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBCcm93c2VyIG9wZW5pbmcgaXMgYmVzdC1lZmZvcnQg4oCUIG5vLW9wIG9uIGZhaWx1cmVcbiAgICB9XG59O1xuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Pool } from 'pg';
|
|
2
|
+
import type { TStore } from '../store.mjs';
|
|
3
|
+
import type { TDatabase } from '../schemas/index.mjs';
|
|
4
|
+
export declare const checkGate: (token: string, store: TStore) => Promise<boolean>;
|
|
5
|
+
export declare const connectAccount: (token: string, store: TStore) => Promise<void>;
|
|
6
|
+
export declare const createSession: (pool: Pool, result: TDatabase, store: TStore, token: string | null, device_id: string) => Promise<string>;
|
|
7
|
+
export declare const waitForAuthorization: (sessionId: string, store: TStore) => Promise<void>;
|
|
8
|
+
//# sourceMappingURL=session.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.mts","sourceRoot":"./src/","sources":["app/session.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAG7B,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAmJpD,eAAO,MAAM,SAAS,GAClB,OAAO,MAAM,EACb,OAAO,MAAM,KACd,OAAO,CAAC,OAAO,CAkBjB,CAAC;AAEF,eAAO,MAAM,cAAc,GACvB,OAAO,MAAM,EACb,OAAO,MAAM,KACd,OAAO,CAAC,IAAI,CAed,CAAC;AAEF,eAAO,MAAM,aAAa,GACtB,MAAM,IAAI,EACV,QAAQ,SAAS,EACjB,OAAO,MAAM,EACb,OAAO,MAAM,GAAG,IAAI,EACpB,WAAW,MAAM,KAClB,OAAO,CAAC,MAAM,CA0BhB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC7B,WAAW,MAAM,EACjB,OAAO,MAAM,KACd,OAAO,CAAC,IAAI,CAYd,CAAC"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { runInAction } from 'mobx';
|
|
2
|
+
import { fetchRelationFileStats } from '../db/index.mjs';
|
|
3
|
+
import { trpc, createAuthenticatedTRPCClient } from '#client/lib/trpc.mjs';
|
|
4
|
+
import { detectAIAssistants, detectDocker, detectOS, detectShell, detectWSL, detectSystemMemory, detectPackageManager, detectProvider, isLocalhost, } from './detect.mjs';
|
|
5
|
+
import { buildSessionURL } from './open-url.mjs';
|
|
6
|
+
import { writeConfig } from './config.mjs';
|
|
7
|
+
import { CLIENT_VERSION } from '#client/lib/version.mjs';
|
|
8
|
+
const checkIsReplica = async (pool) => {
|
|
9
|
+
const result = await pool.query('SELECT pg_is_in_recovery() AS is_replica');
|
|
10
|
+
return result.rows[0].is_replica;
|
|
11
|
+
};
|
|
12
|
+
const collectMedianFileAge = async (pool, tableNames, store) => {
|
|
13
|
+
if (tableNames.length === 0) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const first = await fetchRelationFileStats(pool, tableNames[0]);
|
|
18
|
+
if (!first?.modification_time) {
|
|
19
|
+
runInAction(() => {
|
|
20
|
+
store.steps.introspection.fileStatsSkipped = true;
|
|
21
|
+
});
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const times = [first.modification_time];
|
|
25
|
+
const remaining = await Promise.all(tableNames.slice(1).map(async (name) => {
|
|
26
|
+
try {
|
|
27
|
+
const stats = await fetchRelationFileStats(pool, name);
|
|
28
|
+
return stats?.modification_time ?? null;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}));
|
|
34
|
+
remaining.forEach((t) => {
|
|
35
|
+
if (t) {
|
|
36
|
+
times.push(t);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
const sorted = [...times].sort((a, b) => a.getTime() - b.getTime());
|
|
40
|
+
const mid = Math.floor(sorted.length / 2);
|
|
41
|
+
const median = sorted.length % 2 === 0
|
|
42
|
+
? new Date((sorted[mid - 1].getTime() + sorted[mid].getTime()) / 2)
|
|
43
|
+
: sorted[mid];
|
|
44
|
+
return median.toISOString();
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
runInAction(() => {
|
|
48
|
+
store.steps.introspection.fileStatsSkipped = true;
|
|
49
|
+
});
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const buildSessionInput = (result, store, isReplica, medianFileAge) => {
|
|
54
|
+
const relations = Object.values(result.relations);
|
|
55
|
+
return {
|
|
56
|
+
database_name: result.name,
|
|
57
|
+
database_object_statistics: {
|
|
58
|
+
parent_tables: relations.filter((r) => r.kind === 'partitioned_table').length,
|
|
59
|
+
tables: relations.filter((r) => r.kind === 'table').length,
|
|
60
|
+
views: relations.filter((r) => r.kind === 'view').length,
|
|
61
|
+
materialized_views: relations.filter((r) => r.kind === 'materialized_view').length,
|
|
62
|
+
enums: store.steps.introspection.counts.enums,
|
|
63
|
+
indexes: store.steps.introspection.counts.indexes,
|
|
64
|
+
foreign_key_references: store.steps.introspection.counts.foreignKeys,
|
|
65
|
+
},
|
|
66
|
+
is_database_replica: isReplica,
|
|
67
|
+
median_table_file_age: medianFileAge,
|
|
68
|
+
database_type: result.type,
|
|
69
|
+
database_version: result.version.version_number.toString(),
|
|
70
|
+
database_version_string: result.version.version_string,
|
|
71
|
+
database_provider: detectProvider(store.steps.databaseConnection.pickedHostname),
|
|
72
|
+
is_local: isLocalhost(store.steps.databaseConnection.pickedHostname),
|
|
73
|
+
is_docker: detectDocker(),
|
|
74
|
+
is_accessed_over_ssh: store.steps.sshConnection.enabled,
|
|
75
|
+
shell: detectShell(),
|
|
76
|
+
os: detectOS(),
|
|
77
|
+
is_wsl: detectWSL(),
|
|
78
|
+
system_memory: detectSystemMemory(),
|
|
79
|
+
package_manager: detectPackageManager(),
|
|
80
|
+
username: store.steps.databaseConnection.pickedUsername,
|
|
81
|
+
hostname: store.steps.databaseConnection.pickedHostname,
|
|
82
|
+
ai_assistants: detectAIAssistants(),
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
const waitForToken = (sessionId) => new Promise((resolve, reject) => {
|
|
86
|
+
const sub = trpc.session.onAuthorization.subscribe({ session_id: sessionId }, {
|
|
87
|
+
onData: (data) => {
|
|
88
|
+
sub.unsubscribe();
|
|
89
|
+
resolve(data.token);
|
|
90
|
+
},
|
|
91
|
+
onError: (err) => {
|
|
92
|
+
sub.unsubscribe();
|
|
93
|
+
reject(err);
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
export const checkGate = async (token, store) => {
|
|
98
|
+
runInAction(() => {
|
|
99
|
+
store.steps.gate.state = 'checking';
|
|
100
|
+
});
|
|
101
|
+
const authClient = createAuthenticatedTRPCClient(() => Promise.resolve(token));
|
|
102
|
+
const result = await authClient.session.shouldContinue.query({
|
|
103
|
+
client_version: CLIENT_VERSION,
|
|
104
|
+
});
|
|
105
|
+
runInAction(() => {
|
|
106
|
+
store.steps.gate.state = result.continue ? 'passed' : 'blocked';
|
|
107
|
+
store.steps.gate.message = result.message;
|
|
108
|
+
});
|
|
109
|
+
return result.continue;
|
|
110
|
+
};
|
|
111
|
+
export const connectAccount = async (token, store) => {
|
|
112
|
+
runInAction(() => {
|
|
113
|
+
store.steps.account.state = 'fetching-account';
|
|
114
|
+
});
|
|
115
|
+
const authClient = createAuthenticatedTRPCClient(() => Promise.resolve(token));
|
|
116
|
+
const account = await authClient.account.getAccount.query({});
|
|
117
|
+
runInAction(() => {
|
|
118
|
+
store.steps.account.state = 'connected';
|
|
119
|
+
store.steps.account.email = account.emails[0] ?? null;
|
|
120
|
+
store.steps.account.name = account.name;
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
export const createSession = async (pool, result, store, token, device_id) => {
|
|
124
|
+
runInAction(() => {
|
|
125
|
+
store.steps.account.state = 'creating-session';
|
|
126
|
+
});
|
|
127
|
+
const tableNames = Object.values(result.relations)
|
|
128
|
+
.filter((r) => r.kind === 'table' || r.kind === 'partitioned_table')
|
|
129
|
+
.map((r) => r.name);
|
|
130
|
+
const [isReplica, medianFileAge] = await Promise.all([
|
|
131
|
+
checkIsReplica(pool),
|
|
132
|
+
collectMedianFileAge(pool, tableNames, store),
|
|
133
|
+
]);
|
|
134
|
+
const input = {
|
|
135
|
+
...buildSessionInput(result, store, isReplica, medianFileAge),
|
|
136
|
+
device_id,
|
|
137
|
+
};
|
|
138
|
+
const client = token
|
|
139
|
+
? createAuthenticatedTRPCClient(() => Promise.resolve(token))
|
|
140
|
+
: trpc;
|
|
141
|
+
const session = await client.session.create.mutate(input);
|
|
142
|
+
return session.id;
|
|
143
|
+
};
|
|
144
|
+
export const waitForAuthorization = async (sessionId, store) => {
|
|
145
|
+
const url = buildSessionURL(sessionId);
|
|
146
|
+
runInAction(() => {
|
|
147
|
+
store.steps.account.state = 'waiting';
|
|
148
|
+
store.steps.account.url = url;
|
|
149
|
+
store.steps.account.sessionId = sessionId;
|
|
150
|
+
});
|
|
151
|
+
const token = await waitForToken(sessionId);
|
|
152
|
+
await writeConfig(token);
|
|
153
|
+
await connectAccount(token, store);
|
|
154
|
+
};
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJhcHAvc2Vzc2lvbi5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUlqQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsSUFBSSxFQUFFLDZCQUE2QixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUNILGtCQUFrQixFQUNsQixZQUFZLEVBQ1osUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsV0FBVyxHQUNkLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQUUsSUFBVSxFQUFvQixFQUFFO0lBQzFELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FDM0IsMENBQTBDLENBQzdDLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUM5QixJQUFVLEVBQ1YsVUFBNkIsRUFDN0IsS0FBYSxFQUNTLEVBQUU7SUFDeEIsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxNQUFNLHNCQUFzQixDQUFDLElBQUksRUFBRSxV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TSxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFMUQsT0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEtBQUssRUFDckMsU0FBaUIsRUFDakIsS0FBYSxFQUNBLEVBQUU7SUFDZixNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdkMsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUNiLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDdEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUM5QixLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzlDLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUMsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsTUFBTSxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtQb29sfSBmcm9tICdwZyc7XG5pbXBvcnQge3J1bkluQWN0aW9ufSBmcm9tICdtb2J4JztcblxuaW1wb3J0IHR5cGUge1RTdG9yZX0gZnJvbSAnLi4vc3RvcmUubWpzJztcbmltcG9ydCB0eXBlIHtURGF0YWJhc2V9IGZyb20gJy4uL3NjaGVtYXMvaW5kZXgubWpzJztcbmltcG9ydCB7ZmV0Y2hSZWxhdGlvbkZpbGVTdGF0c30gZnJvbSAnLi4vZGIvaW5kZXgubWpzJztcbmltcG9ydCB7dHJwYywgY3JlYXRlQXV0aGVudGljYXRlZFRSUENDbGllbnR9IGZyb20gJyNjbGllbnQvbGliL3RycGMubWpzJztcbmltcG9ydCB7XG4gICAgZGV0ZWN0QUlBc3Npc3RhbnRzLFxuICAgIGRldGVjdERvY2tlcixcbiAgICBkZXRlY3RPUyxcbiAgICBkZXRlY3RTaGVsbCxcbiAgICBkZXRlY3RXU0wsXG4gICAgZGV0ZWN0U3lzdGVtTWVtb3J5LFxuICAgIGRldGVjdFBhY2thZ2VNYW5hZ2VyLFxuICAgIGRldGVjdFByb3ZpZGVyLFxuICAgIGlzTG9jYWxob3N0LFxufSBmcm9tICcuL2RldGVjdC5tanMnO1xuaW1wb3J0IHtidWlsZFNlc3Npb25VUkx9IGZyb20gJy4vb3Blbi11cmwubWpzJztcbmltcG9ydCB7d3JpdGVDb25maWd9IGZyb20gJy4vY29uZmlnLm1qcyc7XG5pbXBvcnQge0NMSUVOVF9WRVJTSU9OfSBmcm9tICcjY2xpZW50L2xpYi92ZXJzaW9uLm1qcyc7XG5cbmNvbnN0IGNoZWNrSXNSZXBsaWNhID0gYXN5bmMgKHBvb2w6IFBvb2wpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5PHtpc19yZXBsaWNhOiBib29sZWFufT4oXG4gICAgICAgICdTRUxFQ1QgcGdfaXNfaW5fcmVjb3ZlcnkoKSBBUyBpc19yZXBsaWNhJyxcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzWzBdLmlzX3JlcGxpY2E7XG59O1xuXG5jb25zdCBjb2xsZWN0TWVkaWFuRmlsZUFnZSA9IGFzeW5jIChcbiAgICBwb29sOiBQb29sLFxuICAgIHRhYmxlTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICAgIHN0b3JlOiBUU3RvcmUsXG4pOiBQcm9taXNlPHN0cmluZyB8IG51bGw+ID0+IHtcbiAgICBpZiAodGFibGVOYW1lcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZmlyc3QgPSBhd2FpdCBmZXRjaFJlbGF0aW9uRmlsZVN0YXRzKHBvb2wsIHRhYmxlTmFtZXNbMF0pO1xuXG4gICAgICAgIGlmICghZmlyc3Q/Lm1vZGlmaWNhdGlvbl90aW1lKSB7XG4gICAgICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuaW50cm9zcGVjdGlvbi5maWxlU3RhdHNTa2lwcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWVzOiBEYXRlW10gPSBbZmlyc3QubW9kaWZpY2F0aW9uX3RpbWVdO1xuXG4gICAgICAgIGNvbnN0IHJlbWFpbmluZyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgdGFibGVOYW1lcy5zbGljZSgxKS5tYXAoYXN5bmMgKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IGZldGNoUmVsYXRpb25GaWxlU3RhdHMocG9vbCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0cz8ubW9kaWZpY2F0aW9uX3RpbWUgPz8gbnVsbDtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgcmVtYWluaW5nLmZvckVhY2goKHQpID0+IHtcbiAgICAgICAgICAgIGlmICh0KSB7XG4gICAgICAgICAgICAgICAgdGltZXMucHVzaCh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc29ydGVkID0gWy4uLnRpbWVzXS5zb3J0KChhLCBiKSA9PiBhLmdldFRpbWUoKSAtIGIuZ2V0VGltZSgpKTtcbiAgICAgICAgY29uc3QgbWlkID0gTWF0aC5mbG9vcihzb3J0ZWQubGVuZ3RoIC8gMik7XG4gICAgICAgIGNvbnN0IG1lZGlhbiA9XG4gICAgICAgICAgICBzb3J0ZWQubGVuZ3RoICUgMiA9PT0gMFxuICAgICAgICAgICAgICAgID8gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgKHNvcnRlZFttaWQgLSAxXS5nZXRUaW1lKCkgKyBzb3J0ZWRbbWlkXS5nZXRUaW1lKCkpIC8gMixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHNvcnRlZFttaWRdO1xuXG4gICAgICAgIHJldHVybiBtZWRpYW4udG9JU09TdHJpbmcoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgc3RvcmUuc3RlcHMuaW50cm9zcGVjdGlvbi5maWxlU3RhdHNTa2lwcGVkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcblxuY29uc3QgYnVpbGRTZXNzaW9uSW5wdXQgPSAoXG4gICAgcmVzdWx0OiBURGF0YWJhc2UsXG4gICAgc3RvcmU6IFRTdG9yZSxcbiAgICBpc1JlcGxpY2E6IGJvb2xlYW4sXG4gICAgbWVkaWFuRmlsZUFnZTogc3RyaW5nIHwgbnVsbCxcbikgPT4ge1xuICAgIGNvbnN0IHJlbGF0aW9ucyA9IE9iamVjdC52YWx1ZXMocmVzdWx0LnJlbGF0aW9ucyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBkYXRhYmFzZV9uYW1lOiByZXN1bHQubmFtZSxcbiAgICAgICAgZGF0YWJhc2Vfb2JqZWN0X3N0YXRpc3RpY3M6IHtcbiAgICAgICAgICAgIHBhcmVudF90YWJsZXM6IHJlbGF0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKHIpID0+IHIua2luZCA9PT0gJ3BhcnRpdGlvbmVkX3RhYmxlJyxcbiAgICAgICAgICAgICkubGVuZ3RoLFxuICAgICAgICAgICAgdGFibGVzOiByZWxhdGlvbnMuZmlsdGVyKChyKSA9PiByLmtpbmQgPT09ICd0YWJsZScpLmxlbmd0aCxcbiAgICAgICAgICAgIHZpZXdzOiByZWxhdGlvbnMuZmlsdGVyKChyKSA9PiByLmtpbmQgPT09ICd2aWV3JykubGVuZ3RoLFxuICAgICAgICAgICAgbWF0ZXJpYWxpemVkX3ZpZXdzOiByZWxhdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChyKSA9PiByLmtpbmQgPT09ICdtYXRlcmlhbGl6ZWRfdmlldycsXG4gICAgICAgICAgICApLmxlbmd0aCxcbiAgICAgICAgICAgIGVudW1zOiBzdG9yZS5zdGVwcy5pbnRyb3NwZWN0aW9uLmNvdW50cy5lbnVtcyxcbiAgICAgICAgICAgIGluZGV4ZXM6IHN0b3JlLnN0ZXBzLmludHJvc3BlY3Rpb24uY291bnRzLmluZGV4ZXMsXG4gICAgICAgICAgICBmb3JlaWduX2tleV9yZWZlcmVuY2VzOlxuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLmludHJvc3BlY3Rpb24uY291bnRzLmZvcmVpZ25LZXlzLFxuICAgICAgICB9LFxuICAgICAgICBpc19kYXRhYmFzZV9yZXBsaWNhOiBpc1JlcGxpY2EsXG4gICAgICAgIG1lZGlhbl90YWJsZV9maWxlX2FnZTogbWVkaWFuRmlsZUFnZSxcbiAgICAgICAgZGF0YWJhc2VfdHlwZTogcmVzdWx0LnR5cGUsXG4gICAgICAgIGRhdGFiYXNlX3ZlcnNpb246IHJlc3VsdC52ZXJzaW9uLnZlcnNpb25fbnVtYmVyLnRvU3RyaW5nKCksXG4gICAgICAgIGRhdGFiYXNlX3ZlcnNpb25fc3RyaW5nOiByZXN1bHQudmVyc2lvbi52ZXJzaW9uX3N0cmluZyxcbiAgICAgICAgZGF0YWJhc2VfcHJvdmlkZXI6IGRldGVjdFByb3ZpZGVyKFxuICAgICAgICAgICAgc3RvcmUuc3RlcHMuZGF0YWJhc2VDb25uZWN0aW9uLnBpY2tlZEhvc3RuYW1lISxcbiAgICAgICAgKSxcbiAgICAgICAgaXNfbG9jYWw6IGlzTG9jYWxob3N0KHN0b3JlLnN0ZXBzLmRhdGFiYXNlQ29ubmVjdGlvbi5waWNrZWRIb3N0bmFtZSEpLFxuICAgICAgICBpc19kb2NrZXI6IGRldGVjdERvY2tlcigpLFxuICAgICAgICBpc19hY2Nlc3NlZF9vdmVyX3NzaDogc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5lbmFibGVkLFxuICAgICAgICBzaGVsbDogZGV0ZWN0U2hlbGwoKSxcbiAgICAgICAgb3M6IGRldGVjdE9TKCksXG4gICAgICAgIGlzX3dzbDogZGV0ZWN0V1NMKCksXG4gICAgICAgIHN5c3RlbV9tZW1vcnk6IGRldGVjdFN5c3RlbU1lbW9yeSgpLFxuICAgICAgICBwYWNrYWdlX21hbmFnZXI6IGRldGVjdFBhY2thZ2VNYW5hZ2VyKCksXG4gICAgICAgIHVzZXJuYW1lOiBzdG9yZS5zdGVwcy5kYXRhYmFzZUNvbm5lY3Rpb24ucGlja2VkVXNlcm5hbWUhLFxuICAgICAgICBob3N0bmFtZTogc3RvcmUuc3RlcHMuZGF0YWJhc2VDb25uZWN0aW9uLnBpY2tlZEhvc3RuYW1lISxcbiAgICAgICAgYWlfYXNzaXN0YW50czogZGV0ZWN0QUlBc3Npc3RhbnRzKCksXG4gICAgfSBhcyBjb25zdDtcbn07XG5cbmNvbnN0IHdhaXRGb3JUb2tlbiA9IChzZXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiA9PlxuICAgIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBzdWIgPSB0cnBjLnNlc3Npb24ub25BdXRob3JpemF0aW9uLnN1YnNjcmliZShcbiAgICAgICAgICAgIHtzZXNzaW9uX2lkOiBzZXNzaW9uSWR9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9uRGF0YTogKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YS50b2tlbik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvbkVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICB9KTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrR2F0ZSA9IGFzeW5jIChcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIHN0b3JlOiBUU3RvcmUsXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmdhdGUuc3RhdGUgPSAnY2hlY2tpbmcnO1xuICAgIH0pO1xuXG4gICAgY29uc3QgYXV0aENsaWVudCA9IGNyZWF0ZUF1dGhlbnRpY2F0ZWRUUlBDQ2xpZW50KCgpID0+XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSh0b2tlbiksXG4gICAgKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhdXRoQ2xpZW50LnNlc3Npb24uc2hvdWxkQ29udGludWUucXVlcnkoe1xuICAgICAgICBjbGllbnRfdmVyc2lvbjogQ0xJRU5UX1ZFUlNJT04sXG4gICAgfSk7XG5cbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmdhdGUuc3RhdGUgPSByZXN1bHQuY29udGludWUgPyAncGFzc2VkJyA6ICdibG9ja2VkJztcbiAgICAgICAgc3RvcmUuc3RlcHMuZ2F0ZS5tZXNzYWdlID0gcmVzdWx0Lm1lc3NhZ2U7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0LmNvbnRpbnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbm5lY3RBY2NvdW50ID0gYXN5bmMgKFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgc3RvcmU6IFRTdG9yZSxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgc3RvcmUuc3RlcHMuYWNjb3VudC5zdGF0ZSA9ICdmZXRjaGluZy1hY2NvdW50JztcbiAgICB9KTtcblxuICAgIGNvbnN0IGF1dGhDbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkVFJQQ0NsaWVudCgoKSA9PlxuICAgICAgICBQcm9taXNlLnJlc29sdmUodG9rZW4pLFxuICAgICk7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGF1dGhDbGllbnQuYWNjb3VudC5nZXRBY2NvdW50LnF1ZXJ5KHt9KTtcblxuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgc3RvcmUuc3RlcHMuYWNjb3VudC5zdGF0ZSA9ICdjb25uZWN0ZWQnO1xuICAgICAgICBzdG9yZS5zdGVwcy5hY2NvdW50LmVtYWlsID0gYWNjb3VudC5lbWFpbHNbMF0gPz8gbnVsbDtcbiAgICAgICAgc3RvcmUuc3RlcHMuYWNjb3VudC5uYW1lID0gYWNjb3VudC5uYW1lO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNlc3Npb24gPSBhc3luYyAoXG4gICAgcG9vbDogUG9vbCxcbiAgICByZXN1bHQ6IFREYXRhYmFzZSxcbiAgICBzdG9yZTogVFN0b3JlLFxuICAgIHRva2VuOiBzdHJpbmcgfCBudWxsLFxuICAgIGRldmljZV9pZDogc3RyaW5nLFxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmFjY291bnQuc3RhdGUgPSAnY3JlYXRpbmctc2Vzc2lvbic7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0YWJsZU5hbWVzID0gT2JqZWN0LnZhbHVlcyhyZXN1bHQucmVsYXRpb25zKVxuICAgICAgICAuZmlsdGVyKChyKSA9PiByLmtpbmQgPT09ICd0YWJsZScgfHwgci5raW5kID09PSAncGFydGl0aW9uZWRfdGFibGUnKVxuICAgICAgICAubWFwKChyKSA9PiByLm5hbWUpO1xuXG4gICAgY29uc3QgW2lzUmVwbGljYSwgbWVkaWFuRmlsZUFnZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIGNoZWNrSXNSZXBsaWNhKHBvb2wpLFxuICAgICAgICBjb2xsZWN0TWVkaWFuRmlsZUFnZShwb29sLCB0YWJsZU5hbWVzLCBzdG9yZSksXG4gICAgXSk7XG5cbiAgICBjb25zdCBpbnB1dCA9IHtcbiAgICAgICAgLi4uYnVpbGRTZXNzaW9uSW5wdXQocmVzdWx0LCBzdG9yZSwgaXNSZXBsaWNhLCBtZWRpYW5GaWxlQWdlKSxcbiAgICAgICAgZGV2aWNlX2lkLFxuICAgIH07XG5cbiAgICBjb25zdCBjbGllbnQgPSB0b2tlblxuICAgICAgICA/IGNyZWF0ZUF1dGhlbnRpY2F0ZWRUUlBDQ2xpZW50KCgpID0+IFByb21pc2UucmVzb2x2ZSh0b2tlbikpXG4gICAgICAgIDogdHJwYztcblxuICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBjbGllbnQuc2Vzc2lvbi5jcmVhdGUubXV0YXRlKGlucHV0KTtcblxuICAgIHJldHVybiBzZXNzaW9uLmlkO1xufTtcblxuZXhwb3J0IGNvbnN0IHdhaXRGb3JBdXRob3JpemF0aW9uID0gYXN5bmMgKFxuICAgIHNlc3Npb25JZDogc3RyaW5nLFxuICAgIHN0b3JlOiBUU3RvcmUsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCB1cmwgPSBidWlsZFNlc3Npb25VUkwoc2Vzc2lvbklkKTtcblxuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgc3RvcmUuc3RlcHMuYWNjb3VudC5zdGF0ZSA9ICd3YWl0aW5nJztcbiAgICAgICAgc3RvcmUuc3RlcHMuYWNjb3VudC51cmwgPSB1cmw7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmFjY291bnQuc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdG9rZW4gPSBhd2FpdCB3YWl0Rm9yVG9rZW4oc2Vzc2lvbklkKTtcbiAgICBhd2FpdCB3cml0ZUNvbmZpZyh0b2tlbik7XG4gICAgYXdhaXQgY29ubmVjdEFjY291bnQodG9rZW4sIHN0b3JlKTtcbn07XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssh.d.mts","sourceRoot":"./src/","sources":["app/ssh.mts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AA8DzC,eAAO,MAAM,UAAU,GACnB,OAAO,MAAM,KACd,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAgMlC,CAAC"}
|
package/dist/app/ssh.mjs
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
2
|
+
import { homedir, userInfo } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import net from 'node:net';
|
|
5
|
+
import ssh2 from 'ssh2';
|
|
6
|
+
const { Client, utils } = ssh2;
|
|
7
|
+
import SSHConfig from 'ssh-config';
|
|
8
|
+
import { runInAction, when } from 'mobx';
|
|
9
|
+
import { scope } from 'scope-utilities';
|
|
10
|
+
const SSH_KEY_ORDER = [
|
|
11
|
+
'id_ed25519_sk',
|
|
12
|
+
'id_ed25519',
|
|
13
|
+
'id_ecdsa_sk',
|
|
14
|
+
'id_ecdsa',
|
|
15
|
+
'id_rsa',
|
|
16
|
+
'id_dsa',
|
|
17
|
+
];
|
|
18
|
+
const resolveSSHConfig = (store) => {
|
|
19
|
+
const sshDir = join(homedir(), '.ssh');
|
|
20
|
+
const configPath = join(sshDir, 'config');
|
|
21
|
+
return scope({
|
|
22
|
+
host: store.config.sshHost,
|
|
23
|
+
port: 22,
|
|
24
|
+
username: userInfo().username,
|
|
25
|
+
privateKeyPath: undefined,
|
|
26
|
+
})
|
|
27
|
+
.let((config) => {
|
|
28
|
+
if (!existsSync(configPath)) {
|
|
29
|
+
return config;
|
|
30
|
+
}
|
|
31
|
+
const configText = readFileSync(configPath, 'utf-8');
|
|
32
|
+
const computed = SSHConfig.parse(configText).compute(config.host);
|
|
33
|
+
const identityFile = computed['IdentityFile']
|
|
34
|
+
? (Array.isArray(computed['IdentityFile'])
|
|
35
|
+
? computed['IdentityFile'][0]
|
|
36
|
+
: computed['IdentityFile']).replace(/^~/, homedir())
|
|
37
|
+
: config.privateKeyPath;
|
|
38
|
+
return {
|
|
39
|
+
host: computed['HostName'] ?? config.host,
|
|
40
|
+
port: computed['Port']
|
|
41
|
+
? parseInt(computed['Port'], 10)
|
|
42
|
+
: config.port,
|
|
43
|
+
username: computed['User'] ?? config.username,
|
|
44
|
+
privateKeyPath: identityFile,
|
|
45
|
+
};
|
|
46
|
+
})
|
|
47
|
+
.let((config) => ({
|
|
48
|
+
...config,
|
|
49
|
+
privateKeyPath: config.privateKeyPath ??
|
|
50
|
+
SSH_KEY_ORDER.map((name) => join(sshDir, name)).find((path) => existsSync(path)),
|
|
51
|
+
}))
|
|
52
|
+
.let((config) => ({
|
|
53
|
+
host: config.host,
|
|
54
|
+
port: store.config.sshPort ?? config.port,
|
|
55
|
+
username: store.config.sshUsername ?? config.username,
|
|
56
|
+
privateKeyPath: store.config.sshKey ?? config.privateKeyPath,
|
|
57
|
+
}))
|
|
58
|
+
.value();
|
|
59
|
+
};
|
|
60
|
+
export const connectSSH = async (store) => {
|
|
61
|
+
if (!store.steps.sshConnection.enabled) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const config = resolveSSHConfig(store);
|
|
65
|
+
const privateKey = config.privateKeyPath && existsSync(config.privateKeyPath)
|
|
66
|
+
? readFileSync(config.privateKeyPath)
|
|
67
|
+
: undefined;
|
|
68
|
+
const keyIsEncrypted = privateKey !== undefined && utils.parseKey(privateKey) instanceof Error;
|
|
69
|
+
let publicKeyAttempted = false;
|
|
70
|
+
const promptForInput = (type, finish) => {
|
|
71
|
+
runInAction(() => {
|
|
72
|
+
store.steps.sshConnection.wrongAttempt =
|
|
73
|
+
store.steps.sshConnection.passwordPromptType === type;
|
|
74
|
+
store.steps.sshConnection.password = null;
|
|
75
|
+
store.steps.sshConnection.needPassword = true;
|
|
76
|
+
store.steps.sshConnection.passwordPromptType = type;
|
|
77
|
+
store.steps.sshConnection.promptCount += 1;
|
|
78
|
+
store.steps.sshConnection.state = 'need-password';
|
|
79
|
+
});
|
|
80
|
+
when(() => store.steps.sshConnection.password !== null).then(() => {
|
|
81
|
+
runInAction(() => {
|
|
82
|
+
store.steps.sshConnection.needPassword = false;
|
|
83
|
+
store.steps.sshConnection.state = 'connecting';
|
|
84
|
+
});
|
|
85
|
+
finish([store.steps.sshConnection.password]);
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
const promptForPassphrase = (finish) => {
|
|
89
|
+
promptForInput('passphrase', (responses) => {
|
|
90
|
+
const tryPassphrase = responses[0];
|
|
91
|
+
utils.parseKey(privateKey, tryPassphrase) instanceof Error
|
|
92
|
+
? promptForPassphrase(finish)
|
|
93
|
+
: finish(tryPassphrase);
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
const authHandler = (methodsLeft, _partialSuccess, next) => {
|
|
97
|
+
const { username } = config;
|
|
98
|
+
// First call: methodsLeft is null — send 'none' to discover available methods
|
|
99
|
+
!methodsLeft
|
|
100
|
+
? next({ type: 'none', username })
|
|
101
|
+
: methodsLeft.includes('publickey') &&
|
|
102
|
+
privateKey &&
|
|
103
|
+
keyIsEncrypted &&
|
|
104
|
+
!publicKeyAttempted
|
|
105
|
+
? promptForPassphrase((validPassphrase) => {
|
|
106
|
+
publicKeyAttempted = true;
|
|
107
|
+
next({
|
|
108
|
+
type: 'publickey',
|
|
109
|
+
username,
|
|
110
|
+
key: privateKey,
|
|
111
|
+
passphrase: validPassphrase,
|
|
112
|
+
});
|
|
113
|
+
})
|
|
114
|
+
: methodsLeft.includes('publickey') &&
|
|
115
|
+
privateKey &&
|
|
116
|
+
!publicKeyAttempted
|
|
117
|
+
? (() => {
|
|
118
|
+
publicKeyAttempted = true;
|
|
119
|
+
next({ type: 'publickey', username, key: privateKey });
|
|
120
|
+
})()
|
|
121
|
+
: methodsLeft.includes('keyboard-interactive')
|
|
122
|
+
? next({
|
|
123
|
+
type: 'keyboard-interactive',
|
|
124
|
+
username,
|
|
125
|
+
prompt: (_name, _instructions, _lang, _prompts, finish) => {
|
|
126
|
+
promptForInput('password', finish);
|
|
127
|
+
},
|
|
128
|
+
})
|
|
129
|
+
: methodsLeft.includes('password')
|
|
130
|
+
? promptForInput('password', (responses) => {
|
|
131
|
+
next({
|
|
132
|
+
type: 'password',
|
|
133
|
+
username,
|
|
134
|
+
password: responses[0],
|
|
135
|
+
});
|
|
136
|
+
})
|
|
137
|
+
: next('none');
|
|
138
|
+
};
|
|
139
|
+
const connectConfig = {
|
|
140
|
+
host: config.host,
|
|
141
|
+
port: config.port,
|
|
142
|
+
username: config.username,
|
|
143
|
+
readyTimeout: 0,
|
|
144
|
+
keepaliveInterval: 10_000,
|
|
145
|
+
keepaliveCountMax: 3,
|
|
146
|
+
authHandler: authHandler,
|
|
147
|
+
};
|
|
148
|
+
runInAction(() => {
|
|
149
|
+
store.steps.sshConnection.pickedHostname = config.host;
|
|
150
|
+
store.steps.sshConnection.pickedPort = config.port;
|
|
151
|
+
store.steps.sshConnection.pickedUsername = config.username;
|
|
152
|
+
store.steps.sshConnection.pickedKeyPath = config.privateKeyPath ?? null;
|
|
153
|
+
store.steps.sshConnection.state = 'connecting';
|
|
154
|
+
});
|
|
155
|
+
const client = new Client();
|
|
156
|
+
return new Promise((resolve, reject) => {
|
|
157
|
+
client.on('ready', () => {
|
|
158
|
+
runInAction(() => {
|
|
159
|
+
store.steps.sshConnection.state = 'connected';
|
|
160
|
+
store.steps.sshConnection.needPassword = false;
|
|
161
|
+
});
|
|
162
|
+
const remoteHost = store.config.hostname ?? 'localhost';
|
|
163
|
+
const remotePort = store.config.port ?? 5432;
|
|
164
|
+
const server = net.createServer((socket) => {
|
|
165
|
+
const localPort = server.address().port;
|
|
166
|
+
client.forwardOut('127.0.0.1', localPort, remoteHost, remotePort, (err, stream) => {
|
|
167
|
+
if (err) {
|
|
168
|
+
socket.end();
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
socket.pipe(stream).pipe(socket);
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
server.listen(0, '127.0.0.1', () => {
|
|
175
|
+
const localPort = server.address().port;
|
|
176
|
+
runInAction(() => {
|
|
177
|
+
store.steps.sshConnection.localPort = localPort;
|
|
178
|
+
});
|
|
179
|
+
resolve(() => {
|
|
180
|
+
server.close();
|
|
181
|
+
client.end();
|
|
182
|
+
runInAction(() => {
|
|
183
|
+
store.steps.sshConnection.state = 'idle';
|
|
184
|
+
store.steps.sshConnection.localPort = null;
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
client.on('error', (err) => {
|
|
190
|
+
runInAction(() => {
|
|
191
|
+
store.steps.sshConnection.state = 'error';
|
|
192
|
+
store.steps.sshConnection.error = err.message;
|
|
193
|
+
});
|
|
194
|
+
reject(err);
|
|
195
|
+
});
|
|
196
|
+
client.on('close', () => {
|
|
197
|
+
runInAction(() => {
|
|
198
|
+
if (store.steps.sshConnection.state !== 'error') {
|
|
199
|
+
store.steps.sshConnection.state = 'closed';
|
|
200
|
+
}
|
|
201
|
+
store.steps.sshConnection.localPort = null;
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
client.connect(connectConfig);
|
|
205
|
+
});
|
|
206
|
+
};
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NoLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImFwcC9zc2gubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ2pELE9BQU8sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDL0IsT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQzNCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUd4QixNQUFNLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyxHQUFHLElBQUksQ0FBQztBQUM3QixPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSXRDLE1BQU0sYUFBYSxHQUFHO0lBQ2xCLGVBQWU7SUFDZixZQUFZO0lBQ1osYUFBYTtJQUNiLFVBQVU7SUFDVixRQUFRO0lBQ1IsUUFBUTtDQUNGLENBQUM7QUFFWCxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFMUMsT0FBTyxLQUFLLENBQUM7UUFDVCxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFRO1FBQzNCLElBQUksRUFBRSxFQUFFO1FBQ1IsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVE7UUFDN0IsY0FBYyxFQUFFLFNBQStCO0tBQ2xELENBQUM7U0FDRyxHQUFHLENBQUMsQ0FB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S0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO2dCQUMxQyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUNsRCxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUNwQixXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUNiLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO29CQUM5QyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO2dCQUMvQyxDQUFDO2dCQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3JlYWRGaWxlU3luYywgZXhpc3RzU3luY30gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge2hvbWVkaXIsIHVzZXJJbmZvfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7am9pbn0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBuZXQgZnJvbSAnbm9kZTpuZXQnO1xuaW1wb3J0IHNzaDIgZnJvbSAnc3NoMic7XG5pbXBvcnQgdHlwZSB7QXV0aEhhbmRsZXJNaWRkbGV3YXJlLCBDb25uZWN0Q29uZmlnfSBmcm9tICdzc2gyJztcblxuY29uc3Qge0NsaWVudCwgdXRpbHN9ID0gc3NoMjtcbmltcG9ydCBTU0hDb25maWcgZnJvbSAnc3NoLWNvbmZpZyc7XG5pbXBvcnQge3J1bkluQWN0aW9uLCB3aGVufSBmcm9tICdtb2J4JztcbmltcG9ydCB7c2NvcGV9IGZyb20gJ3Njb3BlLXV0aWxpdGllcyc7XG5cbmltcG9ydCB0eXBlIHtUU3RvcmV9IGZyb20gJy4uL3N0b3JlLm1qcyc7XG5cbmNvbnN0IFNTSF9LRVlfT1JERVIgPSBbXG4gICAgJ2lkX2VkMjU1MTlfc2snLFxuICAgICdpZF9lZDI1NTE5JyxcbiAgICAnaWRfZWNkc2Ffc2snLFxuICAgICdpZF9lY2RzYScsXG4gICAgJ2lkX3JzYScsXG4gICAgJ2lkX2RzYScsXG5dIGFzIGNvbnN0O1xuXG5jb25zdCByZXNvbHZlU1NIQ29uZmlnID0gKHN0b3JlOiBUU3RvcmUpID0+IHtcbiAgICBjb25zdCBzc2hEaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5zc2gnKTtcbiAgICBjb25zdCBjb25maWdQYXRoID0gam9pbihzc2hEaXIsICdjb25maWcnKTtcblxuICAgIHJldHVybiBzY29wZSh7XG4gICAgICAgIGhvc3Q6IHN0b3JlLmNvbmZpZy5zc2hIb3N0ISxcbiAgICAgICAgcG9ydDogMjIsXG4gICAgICAgIHVzZXJuYW1lOiB1c2VySW5mbygpLnVzZXJuYW1lLFxuICAgICAgICBwcml2YXRlS2V5UGF0aDogdW5kZWZpbmVkIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB9KVxuICAgICAgICAubGV0KChjb25maWcpID0+IHtcbiAgICAgICAgICAgIGlmICghZXhpc3RzU3luYyhjb25maWdQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb25maWc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ1RleHQgPSByZWFkRmlsZVN5bmMoY29uZmlnUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgICBjb25zdCBjb21wdXRlZCA9IFNTSENvbmZpZy5wYXJzZShjb25maWdUZXh0KS5jb21wdXRlKGNvbmZpZy5ob3N0KTtcblxuICAgICAgICAgICAgY29uc3QgaWRlbnRpdHlGaWxlID0gY29tcHV0ZWRbJ0lkZW50aXR5RmlsZSddXG4gICAgICAgICAgICAgICAgPyAoQXJyYXkuaXNBcnJheShjb21wdXRlZFsnSWRlbnRpdHlGaWxlJ10pXG4gICAgICAgICAgICAgICAgICAgICAgPyBjb21wdXRlZFsnSWRlbnRpdHlGaWxlJ11bMF1cbiAgICAgICAgICAgICAgICAgICAgICA6IGNvbXB1dGVkWydJZGVudGl0eUZpbGUnXVxuICAgICAgICAgICAgICAgICAgKS5yZXBsYWNlKC9efi8sIGhvbWVkaXIoKSlcbiAgICAgICAgICAgICAgICA6IGNvbmZpZy5wcml2YXRlS2V5UGF0aDtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBob3N0OiAoY29tcHV0ZWRbJ0hvc3ROYW1lJ10gYXMgc3RyaW5nKSA/PyBjb25maWcuaG9zdCxcbiAgICAgICAgICAgICAgICBwb3J0OiBjb21wdXRlZFsnUG9ydCddXG4gICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQoY29tcHV0ZWRbJ1BvcnQnXSBhcyBzdHJpbmcsIDEwKVxuICAgICAgICAgICAgICAgICAgICA6IGNvbmZpZy5wb3J0LFxuICAgICAgICAgICAgICAgIHVzZXJuYW1lOiAoY29tcHV0ZWRbJ1VzZXInXSBhcyBzdHJpbmcpID8/IGNvbmZpZy51c2VybmFtZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlS2V5UGF0aDogaWRlbnRpdHlGaWxlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmxldCgoY29uZmlnKSA9PiAoe1xuICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgcHJpdmF0ZUtleVBhdGg6XG4gICAgICAgICAgICAgICAgY29uZmlnLnByaXZhdGVLZXlQYXRoID8/XG4gICAgICAgICAgICAgICAgU1NIX0tFWV9PUkRFUi5tYXAoKG5hbWUpID0+IGpvaW4oc3NoRGlyLCBuYW1lKSkuZmluZCgocGF0aCkgPT5cbiAgICAgICAgICAgICAgICAgICAgZXhpc3RzU3luYyhwYXRoKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9KSlcbiAgICAgICAgLmxldCgoY29uZmlnKSA9PiAoe1xuICAgICAgICAgICAgaG9zdDogY29uZmlnLmhvc3QsXG4gICAgICAgICAgICBwb3J0OiBzdG9yZS5jb25maWcuc3NoUG9ydCA/PyBjb25maWcucG9ydCxcbiAgICAgICAgICAgIHVzZXJuYW1lOiBzdG9yZS5jb25maWcuc3NoVXNlcm5hbWUgPz8gY29uZmlnLnVzZXJuYW1lLFxuICAgICAgICAgICAgcHJpdmF0ZUtleVBhdGg6IHN0b3JlLmNvbmZpZy5zc2hLZXkgPz8gY29uZmlnLnByaXZhdGVLZXlQYXRoLFxuICAgICAgICB9KSlcbiAgICAgICAgLnZhbHVlKCk7XG59O1xuXG5leHBvcnQgY29uc3QgY29ubmVjdFNTSCA9IGFzeW5jIChcbiAgICBzdG9yZTogVFN0b3JlLFxuKTogUHJvbWlzZTwoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBpZiAoIXN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uZW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHJlc29sdmVTU0hDb25maWcoc3RvcmUpO1xuXG4gICAgY29uc3QgcHJpdmF0ZUtleSA9XG4gICAgICAgIGNvbmZpZy5wcml2YXRlS2V5UGF0aCAmJiBleGlzdHNTeW5jKGNvbmZpZy5wcml2YXRlS2V5UGF0aClcbiAgICAgICAgICAgID8gcmVhZEZpbGVTeW5jKGNvbmZpZy5wcml2YXRlS2V5UGF0aClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qga2V5SXNFbmNyeXB0ZWQgPVxuICAgICAgICBwcml2YXRlS2V5ICE9PSB1bmRlZmluZWQgJiYgdXRpbHMucGFyc2VLZXkocHJpdmF0ZUtleSkgaW5zdGFuY2VvZiBFcnJvcjtcblxuICAgIGxldCBwdWJsaWNLZXlBdHRlbXB0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHByb21wdEZvcklucHV0ID0gKFxuICAgICAgICB0eXBlOiAncGFzc3BocmFzZScgfCAncGFzc3dvcmQnLFxuICAgICAgICBmaW5pc2g6IChyZXNwb25zZXM6IHN0cmluZ1tdKSA9PiB2b2lkLFxuICAgICkgPT4ge1xuICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLndyb25nQXR0ZW1wdCA9XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5wYXNzd29yZFByb21wdFR5cGUgPT09IHR5cGU7XG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnBhc3N3b3JkID0gbnVsbDtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ubmVlZFBhc3N3b3JkID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGFzc3dvcmRQcm9tcHRUeXBlID0gdHlwZTtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucHJvbXB0Q291bnQgKz0gMTtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uc3RhdGUgPSAnbmVlZC1wYXNzd29yZCc7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHdoZW4oKCkgPT4gc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5wYXNzd29yZCAhPT0gbnVsbCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5uZWVkUGFzc3dvcmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2Nvbm5lY3RpbmcnO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZpbmlzaChbc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5wYXNzd29yZCFdKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHByb21wdEZvclBhc3NwaHJhc2UgPSAoZmluaXNoOiAodmFsaWRQYXNzcGhyYXNlOiBzdHJpbmcpID0+IHZvaWQpID0+IHtcbiAgICAgICAgcHJvbXB0Rm9ySW5wdXQoJ3Bhc3NwaHJhc2UnLCAocmVzcG9uc2VzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cnlQYXNzcGhyYXNlID0gcmVzcG9uc2VzWzBdITtcbiAgICAgICAgICAgIHV0aWxzLnBhcnNlS2V5KHByaXZhdGVLZXkhLCB0cnlQYXNzcGhyYXNlKSBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgICAgICAgPyBwcm9tcHRGb3JQYXNzcGhyYXNlKGZpbmlzaClcbiAgICAgICAgICAgICAgICA6IGZpbmlzaCh0cnlQYXNzcGhyYXNlKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGF1dGhIYW5kbGVyOiBBdXRoSGFuZGxlck1pZGRsZXdhcmUgPSAoXG4gICAgICAgIG1ldGhvZHNMZWZ0LFxuICAgICAgICBfcGFydGlhbFN1Y2Nlc3MsXG4gICAgICAgIG5leHQsXG4gICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IHt1c2VybmFtZX0gPSBjb25maWc7XG5cbiAgICAgICAgLy8gRmlyc3QgY2FsbDogbWV0aG9kc0xlZnQgaXMgbnVsbCDigJQgc2VuZCAnbm9uZScgdG8gZGlzY292ZXIgYXZhaWxhYmxlIG1ldGhvZHNcbiAgICAgICAgIW1ldGhvZHNMZWZ0XG4gICAgICAgICAgICA/IG5leHQoe3R5cGU6ICdub25lJywgdXNlcm5hbWV9KVxuICAgICAgICAgICAgOiBtZXRob2RzTGVmdC5pbmNsdWRlcygncHVibGlja2V5JykgJiZcbiAgICAgICAgICAgICAgICBwcml2YXRlS2V5ICYmXG4gICAgICAgICAgICAgICAga2V5SXNFbmNyeXB0ZWQgJiZcbiAgICAgICAgICAgICAgICAhcHVibGljS2V5QXR0ZW1wdGVkXG4gICAgICAgICAgICAgID8gcHJvbXB0Rm9yUGFzc3BocmFzZSgodmFsaWRQYXNzcGhyYXNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHB1YmxpY0tleUF0dGVtcHRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIG5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3B1YmxpY2tleScsXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogcHJpdmF0ZUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NwaHJhc2U6IHZhbGlkUGFzc3BocmFzZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgOiBtZXRob2RzTGVmdC5pbmNsdWRlcygncHVibGlja2V5JykgJiZcbiAgICAgICAgICAgICAgICAgIHByaXZhdGVLZXkgJiZcbiAgICAgICAgICAgICAgICAgICFwdWJsaWNLZXlBdHRlbXB0ZWRcbiAgICAgICAgICAgICAgICA/ICgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgcHVibGljS2V5QXR0ZW1wdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0KHt0eXBlOiAncHVibGlja2V5JywgdXNlcm5hbWUsIGtleTogcHJpdmF0ZUtleX0pO1xuICAgICAgICAgICAgICAgICAgfSkoKVxuICAgICAgICAgICAgICAgIDogbWV0aG9kc0xlZnQuaW5jbHVkZXMoJ2tleWJvYXJkLWludGVyYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgID8gbmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAna2V5Ym9hcmQtaW50ZXJhY3RpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQ6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW5zdHJ1Y3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sYW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wcm9tcHRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21wdEZvcklucHV0KCdwYXNzd29yZCcsIGZpbmlzaCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgOiBtZXRob2RzTGVmdC5pbmNsdWRlcygncGFzc3dvcmQnKVxuICAgICAgICAgICAgICAgICAgICA/IHByb21wdEZvcklucHV0KCdwYXNzd29yZCcsIChyZXNwb25zZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogcmVzcG9uc2VzWzBdISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBuZXh0KCdub25lJyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbm5lY3RDb25maWc6IENvbm5lY3RDb25maWcgPSB7XG4gICAgICAgIGhvc3Q6IGNvbmZpZy5ob3N0LFxuICAgICAgICBwb3J0OiBjb25maWcucG9ydCxcbiAgICAgICAgdXNlcm5hbWU6IGNvbmZpZy51c2VybmFtZSxcbiAgICAgICAgcmVhZHlUaW1lb3V0OiAwLFxuICAgICAgICBrZWVwYWxpdmVJbnRlcnZhbDogMTBfMDAwLFxuICAgICAgICBrZWVwYWxpdmVDb3VudE1heDogMyxcbiAgICAgICAgYXV0aEhhbmRsZXI6IGF1dGhIYW5kbGVyLFxuICAgIH07XG5cbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGlja2VkSG9zdG5hbWUgPSBjb25maWcuaG9zdDtcbiAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5waWNrZWRQb3J0ID0gY29uZmlnLnBvcnQ7XG4gICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGlja2VkVXNlcm5hbWUgPSBjb25maWcudXNlcm5hbWU7XG4gICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGlja2VkS2V5UGF0aCA9IGNvbmZpZy5wcml2YXRlS2V5UGF0aCA/PyBudWxsO1xuICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2Nvbm5lY3RpbmcnO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IENsaWVudCgpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPCgpID0+IHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY2xpZW50Lm9uKCdyZWFkeScsICgpID0+IHtcbiAgICAgICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2Nvbm5lY3RlZCc7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5uZWVkUGFzc3dvcmQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCByZW1vdGVIb3N0ID0gc3RvcmUuY29uZmlnLmhvc3RuYW1lID8/ICdsb2NhbGhvc3QnO1xuICAgICAgICAgICAgY29uc3QgcmVtb3RlUG9ydCA9IHN0b3JlLmNvbmZpZy5wb3J0ID8/IDU0MzI7XG5cbiAgICAgICAgICAgIGNvbnN0IHNlcnZlciA9IG5ldC5jcmVhdGVTZXJ2ZXIoKHNvY2tldCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsUG9ydCA9IChzZXJ2ZXIuYWRkcmVzcygpIGFzIG5ldC5BZGRyZXNzSW5mbykucG9ydDtcblxuICAgICAgICAgICAgICAgIGNsaWVudC5mb3J3YXJkT3V0KFxuICAgICAgICAgICAgICAgICAgICAnMTI3LjAuMC4xJyxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxQb3J0LFxuICAgICAgICAgICAgICAgICAgICByZW1vdGVIb3N0LFxuICAgICAgICAgICAgICAgICAgICByZW1vdGVQb3J0LFxuICAgICAgICAgICAgICAgICAgICAoZXJyLCBzdHJlYW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuZW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LnBpcGUoc3RyZWFtKS5waXBlKHNvY2tldCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBzZXJ2ZXIubGlzdGVuKDAsICcxMjcuMC4wLjEnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxQb3J0ID0gKHNlcnZlci5hZGRyZXNzKCkgYXMgbmV0LkFkZHJlc3NJbmZvKS5wb3J0O1xuXG4gICAgICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLmxvY2FsUG9ydCA9IGxvY2FsUG9ydDtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJlc29sdmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50LmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2lkbGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5sb2NhbFBvcnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjbGllbnQub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uc3RhdGUgPSAnZXJyb3InO1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uZXJyb3IgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY2xpZW50Lm9uKCdjbG9zZScsICgpID0+IHtcbiAgICAgICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5zdGF0ZSAhPT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5sb2NhbFBvcnQgPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNsaWVudC5jb25uZWN0KGNvbm5lY3RDb25maWcpO1xuICAgIH0pO1xufTtcbiJdfQ==
|
package/dist/db/analyze.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.d.mts","sourceRoot":"./src/","sources":["db/analyze.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"analyze.d.mts","sourceRoot":"./src/","sources":["db/analyze.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,eAAO,MAAM,eAAe,GACxB,MAAM,IAAI,EACV,cAAc,MAAM,KACrB,OAAO,CAAC,IAAI,CAqBd,CAAC"}
|
package/dist/db/analyze.mjs
CHANGED
|
@@ -13,4 +13,4 @@ export const analyzeRelation = async (pool, relationName) => {
|
|
|
13
13
|
}
|
|
14
14
|
await pool.query(`ANALYZE public.${validation.rows[0].quoted_name}`);
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZS5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJkYi9hbmFseXplLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUNoQyxJQUFVLEVBQ1YsWUFBb0IsRUFDUCxFQUFFO0lBQ2YsaUZBQWlGO0lBQ2pGLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FDL0I7Ozs7Ozs7U0FPQyxFQUNELENBQUMsWUFBWSxDQUFDLENBQ2pCLENBQUM7SUFFRixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQ1gsYUFBYSxZQUFZLDhCQUE4QixDQUMxRCxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtQb29sfSBmcm9tICdwZyc7XG5cbmV4cG9ydCBjb25zdCBhbmFseXplUmVsYXRpb24gPSBhc3luYyAoXG4gICAgcG9vbDogUG9vbCxcbiAgICByZWxhdGlvbk5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIC8vIFZhbGlkYXRlIHJlbGF0aW9uIGV4aXN0cyBhbmQgZ2V0IHByb3Blcmx5IHF1b3RlZCBuYW1lIHRvIHByZXZlbnQgU1FMIGluamVjdGlvblxuICAgIGNvbnN0IHZhbGlkYXRpb24gPSBhd2FpdCBwb29sLnF1ZXJ5PHtxdW90ZWRfbmFtZTogc3RyaW5nfT4oXG4gICAgICAgIGBcbiAgICAgICAgU0VMRUNUIGZvcm1hdCgnJUknLCBjLnJlbG5hbWUpIEFTIHF1b3RlZF9uYW1lXG4gICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMucmVsbmFtZXNwYWNlXG4gICAgICAgIFdIRVJFIG4ubnNwbmFtZSA9ICdwdWJsaWMnXG4gICAgICAgICAgICBBTkQgYy5yZWxuYW1lID0gJDFcbiAgICAgICAgICAgIEFORCBjLnJlbGtpbmQgSU4gKCdyJywgJ3AnLCAnbScpXG4gICAgICAgIGAsXG4gICAgICAgIFtyZWxhdGlvbk5hbWVdLFxuICAgICk7XG5cbiAgICBpZiAodmFsaWRhdGlvbi5yb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgUmVsYXRpb24gXCIke3JlbGF0aW9uTmFtZX1cIiBub3QgZm91bmQgaW4gcHVibGljIHNjaGVtYWAsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgcG9vbC5xdWVyeShgQU5BTFlaRSBwdWJsaWMuJHt2YWxpZGF0aW9uLnJvd3NbMF0ucXVvdGVkX25hbWV9YCk7XG59O1xuIl19
|