dbctx 1.0.3 → 1.3.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 +181 -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 +105 -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,105 @@
|
|
|
1
|
+
import { existsSync } from 'fs';
|
|
2
|
+
import { totalmem } from 'os';
|
|
3
|
+
import { basename, join } from 'path';
|
|
4
|
+
import { cwd, env, platform } from 'process';
|
|
5
|
+
export const detectOS = () => platform === 'darwin'
|
|
6
|
+
? 'macos'
|
|
7
|
+
: platform === 'win32'
|
|
8
|
+
? 'windows'
|
|
9
|
+
: 'linux';
|
|
10
|
+
export const detectShell = () => {
|
|
11
|
+
if (platform === 'win32') {
|
|
12
|
+
return 'powershell';
|
|
13
|
+
}
|
|
14
|
+
const shell = env.SHELL;
|
|
15
|
+
if (!shell) {
|
|
16
|
+
return 'other';
|
|
17
|
+
}
|
|
18
|
+
const name = basename(shell);
|
|
19
|
+
const known = {
|
|
20
|
+
bash: 'bash',
|
|
21
|
+
zsh: 'zsh',
|
|
22
|
+
ksh: 'ksh',
|
|
23
|
+
fish: 'fish',
|
|
24
|
+
ash: 'ash',
|
|
25
|
+
};
|
|
26
|
+
return known[name] ?? 'other';
|
|
27
|
+
};
|
|
28
|
+
export const detectWSL = () => !!(env.WSL_DISTRO_NAME || env.WSLENV);
|
|
29
|
+
const GB = 1024 ** 3;
|
|
30
|
+
export const detectSystemMemory = () => {
|
|
31
|
+
const bytes = totalmem();
|
|
32
|
+
if (bytes < 12 * GB) {
|
|
33
|
+
return '8g';
|
|
34
|
+
}
|
|
35
|
+
if (bytes < 20 * GB) {
|
|
36
|
+
return '16g';
|
|
37
|
+
}
|
|
38
|
+
if (bytes < 28 * GB) {
|
|
39
|
+
return '24g';
|
|
40
|
+
}
|
|
41
|
+
if (bytes < 48 * GB) {
|
|
42
|
+
return '32g';
|
|
43
|
+
}
|
|
44
|
+
return 'more';
|
|
45
|
+
};
|
|
46
|
+
export const detectPackageManager = () => {
|
|
47
|
+
const agent = env.npm_config_user_agent ?? '';
|
|
48
|
+
const known = [
|
|
49
|
+
'pnpm',
|
|
50
|
+
'yarn',
|
|
51
|
+
'bun',
|
|
52
|
+
'deno',
|
|
53
|
+
];
|
|
54
|
+
const match = known.find((pm) => agent.startsWith(pm));
|
|
55
|
+
return match ?? 'npm';
|
|
56
|
+
};
|
|
57
|
+
// TODO: Implement hostname → provider mapping
|
|
58
|
+
export const detectProvider = (hostname) => {
|
|
59
|
+
const rules = [
|
|
60
|
+
['.neon.tech', 'neon'],
|
|
61
|
+
['.rds.amazonaws.com', 'aws'],
|
|
62
|
+
['.amazonaws.com', 'aws'],
|
|
63
|
+
['.supabase.co', 'supabase'],
|
|
64
|
+
['.supabase.com', 'supabase'],
|
|
65
|
+
['.database.azure.com', 'azure'],
|
|
66
|
+
['.cloudsql.', 'gcp'],
|
|
67
|
+
['.sql.goog', 'gcp'],
|
|
68
|
+
['.railway.app', 'railway'],
|
|
69
|
+
['.render.com', 'render'],
|
|
70
|
+
['.aivencloud.com', 'avien'],
|
|
71
|
+
['.aiven.io', 'avien'],
|
|
72
|
+
['.timescaledb.io', 'timescale_cloud'],
|
|
73
|
+
['.herokuapp.com', 'heroku'],
|
|
74
|
+
['.fly.dev', 'fly'],
|
|
75
|
+
['.koyeb.app', 'koyeb'],
|
|
76
|
+
['.db.ondigitalocean.com', 'digital_ocean'],
|
|
77
|
+
['.alibabaclouddb.com', 'alibada_cloud'],
|
|
78
|
+
];
|
|
79
|
+
const lower = hostname.toLowerCase();
|
|
80
|
+
const found = rules.find(([suffix]) => lower.includes(suffix));
|
|
81
|
+
return found?.[1] ?? 'other';
|
|
82
|
+
};
|
|
83
|
+
const aiAssistantRules = [
|
|
84
|
+
['cursor', ['.cursor', '.cursorrules']],
|
|
85
|
+
['claude_code', ['.claude', 'CLAUDE.md']],
|
|
86
|
+
['opencode', ['.opencode']],
|
|
87
|
+
['aider', ['.aider.conf.yml', '.aider.chat.history.md']],
|
|
88
|
+
['openai_codex', ['.codex']],
|
|
89
|
+
['github_copilot', ['.github/copilot-instructions.md']],
|
|
90
|
+
];
|
|
91
|
+
export const detectAIAssistants = () => {
|
|
92
|
+
const root = cwd();
|
|
93
|
+
return aiAssistantRules
|
|
94
|
+
.filter(([, paths]) => paths.some((p) => existsSync(join(root, p))))
|
|
95
|
+
.map(([name]) => name);
|
|
96
|
+
};
|
|
97
|
+
export const detectDocker = () => existsSync('/.dockerenv');
|
|
98
|
+
export const isLocalhost = (hostname) => {
|
|
99
|
+
const lower = hostname.toLowerCase();
|
|
100
|
+
return (lower === 'localhost' ||
|
|
101
|
+
lower === '127.0.0.1' ||
|
|
102
|
+
lower === '::1' ||
|
|
103
|
+
lower === '0.0.0.0');
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0Lm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImFwcC9kZXRlY3QubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxJQUFJLENBQUM7QUFDOUIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLElBQUksQ0FBQztBQUM1QixPQUFPLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFXM0MsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQVEsRUFBRSxDQUM5QixRQUFRLEtBQUssUUFBUTtJQUNqQixDQUFDLENBQUMsT0FBTztJQUNULENBQUMsQ0FBQyxRQUFRLEtBQUssT0FBTztRQUNwQixDQUFDLENBQUMsU0FBUztRQUNYLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFFcEIsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEdBQVcsRUFBRTtJQUNwQyxJQUFJLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUN2QixPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUV4QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLE1BQU0sS0FBSyxHQUEyQjtRQUNsQyxJQUFJLEVBQUUsTUFBTTtRQUNaLEdBQUcsRUFBRSxLQUFLO1FBQ1YsR0FBRyxFQUFFLEtBQUs7UUFDVixJQUFJLEVBQUUsTUFBTTtRQUNaLEdBQUcsRUFBRSxLQUFLO0tBQ2IsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNsQyxD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LEtBQUssS0FBSyxTQUFTLENBQ3RCLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2V4aXN0c1N5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7dG90YWxtZW19IGZyb20gJ29zJztcbmltcG9ydCB7YmFzZW5hbWUsIGpvaW59IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtjd2QsIGVudiwgcGxhdGZvcm19IGZyb20gJ3Byb2Nlc3MnO1xuXG5pbXBvcnQgdHlwZSB7XG4gICAgVEFJQXNzaXN0YW50LFxuICAgIFREYXRhYmFzZVByb3ZpZGVyLFxuICAgIFRPcyxcbiAgICBUU2hlbGwsXG4gICAgVFN5c3RlbU1lbW9yeSxcbiAgICBUUGFja2FnZU1hbmFnZXIsXG59IGZyb20gJ0BkYmN0eC9jb3JlJztcblxuZXhwb3J0IGNvbnN0IGRldGVjdE9TID0gKCk6IFRPcyA9PlxuICAgIHBsYXRmb3JtID09PSAnZGFyd2luJ1xuICAgICAgICA/ICdtYWNvcydcbiAgICAgICAgOiBwbGF0Zm9ybSA9PT0gJ3dpbjMyJ1xuICAgICAgICAgID8gJ3dpbmRvd3MnXG4gICAgICAgICAgOiAnbGludXgnO1xuXG5leHBvcnQgY29uc3QgZGV0ZWN0U2hlbGwgPSAoKTogVFNoZWxsID0+IHtcbiAgICBpZiAocGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICAgICAgcmV0dXJuICdwb3dlcnNoZWxsJztcbiAgICB9XG5cbiAgICBjb25zdCBzaGVsbCA9IGVudi5TSEVMTDtcblxuICAgIGlmICghc2hlbGwpIHtcbiAgICAgICAgcmV0dXJuICdvdGhlcic7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZSA9IGJhc2VuYW1lKHNoZWxsKTtcbiAgICBjb25zdCBrbm93bjogUmVjb3JkPHN0cmluZywgVFNoZWxsPiA9IHtcbiAgICAgICAgYmFzaDogJ2Jhc2gnLFxuICAgICAgICB6c2g6ICd6c2gnLFxuICAgICAgICBrc2g6ICdrc2gnLFxuICAgICAgICBmaXNoOiAnZmlzaCcsXG4gICAgICAgIGFzaDogJ2FzaCcsXG4gICAgfTtcblxuICAgIHJldHVybiBrbm93bltuYW1lXSA/PyAnb3RoZXInO1xufTtcblxuZXhwb3J0IGNvbnN0IGRldGVjdFdTTCA9ICgpOiBib29sZWFuID0+ICEhKGVudi5XU0xfRElTVFJPX05BTUUgfHwgZW52LldTTEVOVik7XG5cbmNvbnN0IEdCID0gMTAyNCAqKiAzO1xuXG5leHBvcnQgY29uc3QgZGV0ZWN0U3lzdGVtTWVtb3J5ID0gKCk6IFRTeXN0ZW1NZW1vcnkgPT4ge1xuICAgIGNvbnN0IGJ5dGVzID0gdG90YWxtZW0oKTtcblxuICAgIGlmIChieXRlcyA8IDEyICogR0IpIHtcbiAgICAgICAgcmV0dXJuICc4Zyc7XG4gICAgfVxuICAgIGlmIChieXRlcyA8IDIwICogR0IpIHtcbiAgICAgICAgcmV0dXJuICcxNmcnO1xuICAgIH1cbiAgICBpZiAoYnl0ZXMgPCAyOCAqIEdCKSB7XG4gICAgICAgIHJldHVybiAnMjRnJztcbiAgICB9XG4gICAgaWYgKGJ5dGVzIDwgNDggKiBHQikge1xuICAgICAgICByZXR1cm4gJzMyZyc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdtb3JlJztcbn07XG5cbmV4cG9ydCBjb25zdCBkZXRlY3RQYWNrYWdlTWFuYWdlciA9ICgpOiBUUGFja2FnZU1hbmFnZXIgPT4ge1xuICAgIGNvbnN0IGFnZW50ID0gZW52Lm5wbV9jb25maWdfdXNlcl9hZ2VudCA/PyAnJztcbiAgICBjb25zdCBrbm93bjogcmVhZG9ubHkgVFBhY2thZ2VNYW5hZ2VyW10gPSBbXG4gICAgICAgICdwbnBtJyxcbiAgICAgICAgJ3lhcm4nLFxuICAgICAgICAnYnVuJyxcbiAgICAgICAgJ2Rlbm8nLFxuICAgIF0gYXMgY29uc3Q7XG5cbiAgICBjb25zdCBtYXRjaCA9IGtub3duLmZpbmQoKHBtKSA9PiBhZ2VudC5zdGFydHNXaXRoKHBtKSk7XG5cbiAgICByZXR1cm4gbWF0Y2ggPz8gJ25wbSc7XG59O1xuXG4vLyBUT0RPOiBJbXBsZW1lbnQgaG9zdG5hbWUg4oaSIHByb3ZpZGVyIG1hcHBpbmdcbmV4cG9ydCBjb25zdCBkZXRlY3RQcm92aWRlciA9IChob3N0bmFtZTogc3RyaW5nKTogVERhdGFiYXNlUHJvdmlkZXIgPT4ge1xuICAgIGNvbnN0IHJ1bGVzOiBSZWFkb25seUFycmF5PHJlYWRvbmx5IFtzdHJpbmcsIFREYXRhYmFzZVByb3ZpZGVyXT4gPSBbXG4gICAgICAgIFsnLm5lb24udGVjaCcsICduZW9uJ10sXG4gICAgICAgIFsnLnJkcy5hbWF6b25hd3MuY29tJywgJ2F3cyddLFxuICAgICAgICBbJy5hbWF6b25hd3MuY29tJywgJ2F3cyddLFxuICAgICAgICBbJy5zdXBhYmFzZS5jbycsICdzdXBhYmFzZSddLFxuICAgICAgICBbJy5zdXBhYmFzZS5jb20nLCAnc3VwYWJhc2UnXSxcbiAgICAgICAgWycuZGF0YWJhc2UuYXp1cmUuY29tJywgJ2F6dXJlJ10sXG4gICAgICAgIFsnLmNsb3Vkc3FsLicsICdnY3AnXSxcbiAgICAgICAgWycuc3FsLmdvb2cnLCAnZ2NwJ10sXG4gICAgICAgIFsnLnJhaWx3YXkuYXBwJywgJ3JhaWx3YXknXSxcbiAgICAgICAgWycucmVuZGVyLmNvbScsICdyZW5kZXInXSxcbiAgICAgICAgWycuYWl2ZW5jbG91ZC5jb20nLCAnYXZpZW4nXSxcbiAgICAgICAgWycuYWl2ZW4uaW8nLCAnYXZpZW4nXSxcbiAgICAgICAgWycudGltZXNjYWxlZGIuaW8nLCAndGltZXNjYWxlX2Nsb3VkJ10sXG4gICAgICAgIFsnLmhlcm9rdWFwcC5jb20nLCAnaGVyb2t1J10sXG4gICAgICAgIFsnLmZseS5kZXYnLCAnZmx5J10sXG4gICAgICAgIFsnLmtveWViLmFwcCcsICdrb3llYiddLFxuICAgICAgICBbJy5kYi5vbmRpZ2l0YWxvY2Vhbi5jb20nLCAnZGlnaXRhbF9vY2VhbiddLFxuICAgICAgICBbJy5hbGliYWJhY2xvdWRkYi5jb20nLCAnYWxpYmFkYV9jbG91ZCddLFxuICAgIF07XG5cbiAgICBjb25zdCBsb3dlciA9IGhvc3RuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgZm91bmQgPSBydWxlcy5maW5kKChbc3VmZml4XSkgPT4gbG93ZXIuaW5jbHVkZXMoc3VmZml4KSk7XG5cbiAgICByZXR1cm4gZm91bmQ/LlsxXSA/PyAnb3RoZXInO1xufTtcblxuY29uc3QgYWlBc3Npc3RhbnRSdWxlczogUmVhZG9ubHlBcnJheTxcbiAgICByZWFkb25seSBbVEFJQXNzaXN0YW50LCBSZWFkb25seUFycmF5PHN0cmluZz5dXG4+ID0gW1xuICAgIFsnY3Vyc29yJywgWycuY3Vyc29yJywgJy5jdXJzb3JydWxlcyddXSxcbiAgICBbJ2NsYXVkZV9jb2RlJywgWycuY2xhdWRlJywgJ0NMQVVERS5tZCddXSxcbiAgICBbJ29wZW5jb2RlJywgWycub3BlbmNvZGUnXV0sXG4gICAgWydhaWRlcicsIFsnLmFpZGVyLmNvbmYueW1sJywgJy5haWRlci5jaGF0Lmhpc3RvcnkubWQnXV0sXG4gICAgWydvcGVuYWlfY29kZXgnLCBbJy5jb2RleCddXSxcbiAgICBbJ2dpdGh1Yl9jb3BpbG90JywgWycuZ2l0aHViL2NvcGlsb3QtaW5zdHJ1Y3Rpb25zLm1kJ11dLFxuXTtcblxuZXhwb3J0IGNvbnN0IGRldGVjdEFJQXNzaXN0YW50cyA9ICgpOiBUQUlBc3Npc3RhbnRbXSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IGN3ZCgpO1xuXG4gICAgcmV0dXJuIGFpQXNzaXN0YW50UnVsZXNcbiAgICAgICAgLmZpbHRlcigoWywgcGF0aHNdKSA9PiBwYXRocy5zb21lKChwKSA9PiBleGlzdHNTeW5jKGpvaW4ocm9vdCwgcCkpKSlcbiAgICAgICAgLm1hcCgoW25hbWVdKSA9PiBuYW1lKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZXRlY3REb2NrZXIgPSAoKTogYm9vbGVhbiA9PiBleGlzdHNTeW5jKCcvLmRvY2tlcmVudicpO1xuXG5leHBvcnQgY29uc3QgaXNMb2NhbGhvc3QgPSAoaG9zdG5hbWU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGxvd2VyID0gaG9zdG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIGxvd2VyID09PSAnbG9jYWxob3N0JyB8fFxuICAgICAgICBsb3dlciA9PT0gJzEyNy4wLjAuMScgfHxcbiAgICAgICAgbG93ZXIgPT09ICc6OjEnIHx8XG4gICAgICAgIGxvd2VyID09PSAnMC4wLjAuMCdcbiAgICApO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"./src/","sources":["app/index.mts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAepC,wBAAsB,GAAG,CAAC,KAAK,EAAE,MAAM,iBAiGtC"}
|
|
@@ -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"}
|