dbctx 2.0.1 → 2.1.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.
Files changed (220) hide show
  1. package/dist/index.mjs +6004 -279
  2. package/package.json +11 -8
  3. package/dist/app/assemble.d.mts +0 -5
  4. package/dist/app/assemble.d.mts.map +0 -1
  5. package/dist/app/assemble.mjs +0 -182
  6. package/dist/app/config.d.mts +0 -9
  7. package/dist/app/config.d.mts.map +0 -1
  8. package/dist/app/config.mjs +0 -49
  9. package/dist/app/db.d.mts +0 -9
  10. package/dist/app/db.d.mts.map +0 -1
  11. package/dist/app/db.mjs +0 -182
  12. package/dist/app/detect.d.mts +0 -14
  13. package/dist/app/detect.d.mts.map +0 -1
  14. package/dist/app/detect.mjs +0 -108
  15. package/dist/app/list.d.mts +0 -4
  16. package/dist/app/list.d.mts.map +0 -1
  17. package/dist/app/list.mjs +0 -93
  18. package/dist/app/load-introspection.d.mts +0 -26
  19. package/dist/app/load-introspection.d.mts.map +0 -1
  20. package/dist/app/load-introspection.mjs +0 -89
  21. package/dist/app/login.d.mts +0 -2
  22. package/dist/app/login.d.mts.map +0 -1
  23. package/dist/app/login.mjs +0 -69
  24. package/dist/app/open-url.d.mts +0 -6
  25. package/dist/app/open-url.d.mts.map +0 -1
  26. package/dist/app/open-url.mjs +0 -33
  27. package/dist/app/sample.d.mts +0 -24
  28. package/dist/app/sample.d.mts.map +0 -1
  29. package/dist/app/sample.mjs +0 -257
  30. package/dist/app/session.d.mts +0 -9
  31. package/dist/app/session.d.mts.map +0 -1
  32. package/dist/app/session.mjs +0 -195
  33. package/dist/app/ssh.d.mts +0 -3
  34. package/dist/app/ssh.d.mts.map +0 -1
  35. package/dist/app/ssh.mjs +0 -218
  36. package/dist/app/tail.d.mts +0 -13
  37. package/dist/app/tail.d.mts.map +0 -1
  38. package/dist/app/tail.mjs +0 -168
  39. package/dist/db/analyze.d.mts +0 -3
  40. package/dist/db/analyze.d.mts.map +0 -1
  41. package/dist/db/analyze.mjs +0 -16
  42. package/dist/db/attributes.d.mts +0 -16
  43. package/dist/db/attributes.d.mts.map +0 -1
  44. package/dist/db/attributes.mjs +0 -37
  45. package/dist/db/check-constraints.d.mts +0 -9
  46. package/dist/db/check-constraints.d.mts.map +0 -1
  47. package/dist/db/check-constraints.mjs +0 -17
  48. package/dist/db/custom-types.d.mts +0 -26
  49. package/dist/db/custom-types.d.mts.map +0 -1
  50. package/dist/db/custom-types.mjs +0 -61
  51. package/dist/db/enums.d.mts +0 -8
  52. package/dist/db/enums.d.mts.map +0 -1
  53. package/dist/db/enums.mjs +0 -24
  54. package/dist/db/extensions.d.mts +0 -8
  55. package/dist/db/extensions.d.mts.map +0 -1
  56. package/dist/db/extensions.mjs +0 -14
  57. package/dist/db/file-stats.d.mts +0 -11
  58. package/dist/db/file-stats.d.mts.map +0 -1
  59. package/dist/db/file-stats.mjs +0 -43
  60. package/dist/db/foreign-keys.d.mts +0 -14
  61. package/dist/db/foreign-keys.d.mts.map +0 -1
  62. package/dist/db/foreign-keys.mjs +0 -44
  63. package/dist/db/functions.d.mts +0 -11
  64. package/dist/db/functions.d.mts.map +0 -1
  65. package/dist/db/functions.mjs +0 -23
  66. package/dist/db/index.d.mts +0 -19
  67. package/dist/db/index.d.mts.map +0 -1
  68. package/dist/db/index.mjs +0 -19
  69. package/dist/db/indexes.d.mts +0 -16
  70. package/dist/db/indexes.d.mts.map +0 -1
  71. package/dist/db/indexes.mjs +0 -38
  72. package/dist/db/planner-stats.d.mts +0 -33
  73. package/dist/db/planner-stats.d.mts.map +0 -1
  74. package/dist/db/planner-stats.mjs +0 -103
  75. package/dist/db/relations.d.mts +0 -11
  76. package/dist/db/relations.d.mts.map +0 -1
  77. package/dist/db/relations.mjs +0 -32
  78. package/dist/db/rls.d.mts +0 -21
  79. package/dist/db/rls.d.mts.map +0 -1
  80. package/dist/db/rls.mjs +0 -48
  81. package/dist/db/sample.d.mts +0 -16
  82. package/dist/db/sample.d.mts.map +0 -1
  83. package/dist/db/sample.mjs +0 -73
  84. package/dist/db/sequences.d.mts +0 -15
  85. package/dist/db/sequences.d.mts.map +0 -1
  86. package/dist/db/sequences.mjs +0 -31
  87. package/dist/db/stats.d.mts +0 -12
  88. package/dist/db/stats.d.mts.map +0 -1
  89. package/dist/db/stats.mjs +0 -34
  90. package/dist/db/triggers.d.mts +0 -11
  91. package/dist/db/triggers.d.mts.map +0 -1
  92. package/dist/db/triggers.mjs +0 -21
  93. package/dist/db/version.d.mts +0 -14
  94. package/dist/db/version.d.mts.map +0 -1
  95. package/dist/db/version.mjs +0 -27
  96. package/dist/flow/events.d.mts +0 -115
  97. package/dist/flow/events.d.mts.map +0 -1
  98. package/dist/flow/events.mjs +0 -2
  99. package/dist/flow/interpreter.d.mts +0 -21
  100. package/dist/flow/interpreter.d.mts.map +0 -1
  101. package/dist/flow/interpreter.mjs +0 -605
  102. package/dist/flow/projection.d.mts +0 -17
  103. package/dist/flow/projection.d.mts.map +0 -1
  104. package/dist/flow/projection.mjs +0 -83
  105. package/dist/flow/projection.test.d.mts +0 -2
  106. package/dist/flow/projection.test.d.mts.map +0 -1
  107. package/dist/flow/projection.test.mjs +0 -162
  108. package/dist/flow/reducer.d.mts +0 -5
  109. package/dist/flow/reducer.d.mts.map +0 -1
  110. package/dist/flow/reducer.mjs +0 -306
  111. package/dist/flow/reducer.test.d.mts +0 -2
  112. package/dist/flow/reducer.test.d.mts.map +0 -1
  113. package/dist/flow/reducer.test.mjs +0 -479
  114. package/dist/flow/run.d.mts +0 -3
  115. package/dist/flow/run.d.mts.map +0 -1
  116. package/dist/flow/run.mjs +0 -89
  117. package/dist/flow/states.d.mts +0 -54
  118. package/dist/flow/states.d.mts.map +0 -1
  119. package/dist/flow/states.mjs +0 -39
  120. package/dist/index.d.mts +0 -29
  121. package/dist/index.d.mts.map +0 -1
  122. package/dist/lib/atomic-write.d.mts +0 -4
  123. package/dist/lib/atomic-write.d.mts.map +0 -1
  124. package/dist/lib/atomic-write.mjs +0 -75
  125. package/dist/lib/env.d.mts +0 -2
  126. package/dist/lib/env.d.mts.map +0 -1
  127. package/dist/lib/env.mjs +0 -4
  128. package/dist/lib/stream-job.d.mts +0 -19
  129. package/dist/lib/stream-job.d.mts.map +0 -1
  130. package/dist/lib/stream-job.mjs +0 -55
  131. package/dist/lib/trpc-url.d.mts +0 -2
  132. package/dist/lib/trpc-url.d.mts.map +0 -1
  133. package/dist/lib/trpc-url.mjs +0 -5
  134. package/dist/lib/trpc.d.mts +0 -7
  135. package/dist/lib/trpc.d.mts.map +0 -1
  136. package/dist/lib/trpc.mjs +0 -37
  137. package/dist/lib/trpc.react.d.mts +0 -4
  138. package/dist/lib/trpc.react.d.mts.map +0 -1
  139. package/dist/lib/trpc.react.mjs +0 -3
  140. package/dist/lib/version.d.mts +0 -2
  141. package/dist/lib/version.d.mts.map +0 -1
  142. package/dist/lib/version.mjs +0 -5
  143. package/dist/logger.d.mts +0 -3
  144. package/dist/logger.d.mts.map +0 -1
  145. package/dist/logger.mjs +0 -11
  146. package/dist/providers/TrpcProvider.d.ts +0 -9
  147. package/dist/providers/TrpcProvider.d.ts.map +0 -1
  148. package/dist/providers/TrpcProvider.js +0 -41
  149. package/dist/store.d.mts +0 -176
  150. package/dist/store.d.mts.map +0 -1
  151. package/dist/store.mjs +0 -147
  152. package/dist/types/connection.d.mts +0 -17
  153. package/dist/types/connection.d.mts.map +0 -1
  154. package/dist/types/connection.mjs +0 -2
  155. package/dist/ui/App.d.ts +0 -10
  156. package/dist/ui/App.d.ts.map +0 -1
  157. package/dist/ui/App.js +0 -41
  158. package/dist/ui/components/Analyze.d.ts +0 -10
  159. package/dist/ui/components/Analyze.d.ts.map +0 -1
  160. package/dist/ui/components/Analyze.js +0 -54
  161. package/dist/ui/components/Billing.d.ts +0 -10
  162. package/dist/ui/components/Billing.d.ts.map +0 -1
  163. package/dist/ui/components/Billing.js +0 -40
  164. package/dist/ui/components/DB.d.ts +0 -10
  165. package/dist/ui/components/DB.d.ts.map +0 -1
  166. package/dist/ui/components/DB.js +0 -22
  167. package/dist/ui/components/DatabasePicker.d.ts +0 -13
  168. package/dist/ui/components/DatabasePicker.d.ts.map +0 -1
  169. package/dist/ui/components/DatabasePicker.js +0 -79
  170. package/dist/ui/components/Enrich.d.ts +0 -10
  171. package/dist/ui/components/Enrich.d.ts.map +0 -1
  172. package/dist/ui/components/Enrich.js +0 -41
  173. package/dist/ui/components/Error.d.ts +0 -7
  174. package/dist/ui/components/Error.d.ts.map +0 -1
  175. package/dist/ui/components/Error.js +0 -6
  176. package/dist/ui/components/Gate.d.ts +0 -10
  177. package/dist/ui/components/Gate.d.ts.map +0 -1
  178. package/dist/ui/components/Gate.js +0 -15
  179. package/dist/ui/components/Introspect.d.ts +0 -10
  180. package/dist/ui/components/Introspect.d.ts.map +0 -1
  181. package/dist/ui/components/Introspect.js +0 -66
  182. package/dist/ui/components/IntrospectionUpload.d.ts +0 -10
  183. package/dist/ui/components/IntrospectionUpload.d.ts.map +0 -1
  184. package/dist/ui/components/IntrospectionUpload.js +0 -30
  185. package/dist/ui/components/Login.d.ts +0 -19
  186. package/dist/ui/components/Login.d.ts.map +0 -1
  187. package/dist/ui/components/Login.js +0 -38
  188. package/dist/ui/components/OutputJson.d.ts +0 -10
  189. package/dist/ui/components/OutputJson.d.ts.map +0 -1
  190. package/dist/ui/components/OutputJson.js +0 -18
  191. package/dist/ui/components/PasswordInput.d.ts +0 -7
  192. package/dist/ui/components/PasswordInput.d.ts.map +0 -1
  193. package/dist/ui/components/PasswordInput.js +0 -32
  194. package/dist/ui/components/SSH.d.ts +0 -10
  195. package/dist/ui/components/SSH.d.ts.map +0 -1
  196. package/dist/ui/components/SSH.js +0 -22
  197. package/dist/ui/components/SamplesUpload.d.ts +0 -10
  198. package/dist/ui/components/SamplesUpload.d.ts.map +0 -1
  199. package/dist/ui/components/SamplesUpload.js +0 -24
  200. package/dist/ui/components/Sampling.d.ts +0 -10
  201. package/dist/ui/components/Sampling.d.ts.map +0 -1
  202. package/dist/ui/components/Sampling.js +0 -58
  203. package/dist/ui/components/Session.d.ts +0 -10
  204. package/dist/ui/components/Session.d.ts.map +0 -1
  205. package/dist/ui/components/Session.js +0 -47
  206. package/dist/ui/components/Spinner.d.ts +0 -3
  207. package/dist/ui/components/Spinner.d.ts.map +0 -1
  208. package/dist/ui/components/Spinner.js +0 -30
  209. package/dist/ui/components/Splash.d.ts +0 -3
  210. package/dist/ui/components/Splash.d.ts.map +0 -1
  211. package/dist/ui/components/Splash.js +0 -13
  212. package/dist/ui/components/TextInput.d.ts +0 -11
  213. package/dist/ui/components/TextInput.d.ts.map +0 -1
  214. package/dist/ui/components/TextInput.js +0 -286
  215. package/dist/ui/components/UserExplanation.d.ts +0 -10
  216. package/dist/ui/components/UserExplanation.d.ts.map +0 -1
  217. package/dist/ui/components/UserExplanation.js +0 -34
  218. package/dist/validatePaths.d.mts +0 -13
  219. package/dist/validatePaths.d.mts.map +0 -1
  220. package/dist/validatePaths.mjs +0 -58
@@ -1,108 +0,0 @@
1
- import { existsSync } from 'fs';
2
- import { hostname, totalmem, userInfo } 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 detectSSHSession = () => !!(env.SSH_CONNECTION || env.SSH_CLIENT || env.SSH_TTY);
99
- export const detectHostname = () => hostname();
100
- export const detectUsername = () => userInfo().username;
101
- export const isLocalhost = (hostname) => {
102
- const lower = hostname.toLowerCase();
103
- return (lower === 'localhost' ||
104
- lower === '127.0.0.1' ||
105
- lower === '::1' ||
106
- lower === '0.0.0.0');
107
- };
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0Lm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImFwcC9kZXRlY3QubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxJQUFJLENBQUM7QUFDOUIsT0FBTyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQVczQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBUSxFQUFFLENBQzlCLFFBQVEsS0FBSyxRQUFRO0lBQ2pCLENBQUMsQ0FBQyxPQUFPO0lBQ1QsQ0FBQyxDQUFDLFFBQVEsS0FBSyxPQUFPO1FBQ3BCLENBQUMsQ0FBQyxTQUFTO1FBQ1gsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUVwQixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsR0FBVyxFQUFFO0lBQ3BDLElBQUksUUFBUSxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBRXhCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNULE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsTUFBTSxLQUFLLEdBQTJCO1FBQ2xDLElBQUksRUFBRSxNQUFNO1FBQ1osR0FBRyxFQUFFLEtBQUs7UUFDVixHQUFHLEVBQUUsS0FBSztRQUNWLElBQUksRUFBRSxNQUFNO1FBQ1osR0FBRyxFQUFFLEtBQUs7S0FDYixDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2xDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUU5RSxNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBRXJCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQWtCLEVBQUU7SUFDbEQsTUFBTSxLQUFLLEdBQUcsUUFBUSxFQUFFLENBQUM7SUFFekIsSUFBSSxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUFJLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDbEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELElBQUksS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUNsQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsSUFBSSxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxHQUFvQixFQUFFO0lBQ3RELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUM7SUFDOUMsTUFBTSxLQUFLLEdBQStCO1FBQ3RDLE1BQU07UUFDTixNQUFNO1FBQ04sS0FBSztRQUNMLE1BQU07S0FDQSxDQUFDO0lBRVgsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZELE9BQU8sS0FBSyxJQUFJLEtBQUssQ0FBQztBQUMxQixDQUFDLENBQUM7QUFFRiw4Q0FBOEM7QUFDOUMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsUUFBZ0IsRUFBcUIsRUFBRTtJQUNsRSxNQUFNLEtBQUssR0FBd0Q7UUFDL0QsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDO1FBQ3RCLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDO1FBQzdCLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDO1FBQ3pCLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQztRQUM1QixDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUM7UUFDN0IsQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLENBQUM7UUFDaEMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDO1FBQ3JCLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztRQUNwQixDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUM7UUFDM0IsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDO1FBQ3pCLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDO1FBQzVCLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQztRQUN0QixDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDO1FBQ3RDLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDO1FBQzVCLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztRQUNuQixDQUFDLFlBQVksRUFBRSxPQUFPLENBQUM7UUFDdkIsQ0FBQyx3QkFBd0IsRUFBRSxlQUFlLENBQUM7UUFDM0MsQ0FBQyxxQkFBcUIsRUFBRSxlQUFlLENBQUM7S0FDM0MsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRS9ELE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBRWxCO0lBQ0EsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdkMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDekMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQixDQUFDLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixFQUFFLHdCQUF3QixDQUFDLENBQUM7SUFDeEQsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QixDQUFDLGdCQUFnQixFQUFFLENBQUMsaUNBQWlDLENBQUMsQ0FBQztDQUMxRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBbUIsRUFBRTtJQUNuRCxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUVuQixPQUFPLGdCQUFnQjtTQUNsQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBWSxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQVksRUFBRSxDQUMxQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxJQUFJLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxHQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO0FBRWhFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLFFBQWdCLEVBQVcsRUFBRTtJQUNyRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFckMsT0FBTyxDQUNILEtBQUssS0FBSyxXQUFXO1FBQ3JCLEtBQUssS0FBSyxXQUFXO1FBQ3JCLEtBQUssS0FBSyxLQUFLO1FBQ2YsS0FBSyxLQUFLLFNBQVMsQ0FDdEIsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZXhpc3RzU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtob3N0bmFtZSwgdG90YWxtZW0sIHVzZXJJbmZvfSBmcm9tICdvcyc7XG5pbXBvcnQge2Jhc2VuYW1lLCBqb2lufSBmcm9tICdwYXRoJztcbmltcG9ydCB7Y3dkLCBlbnYsIHBsYXRmb3JtfSBmcm9tICdwcm9jZXNzJztcblxuaW1wb3J0IHR5cGUge1xuICAgIFRBSUFzc2lzdGFudCxcbiAgICBURGF0YWJhc2VQcm92aWRlcixcbiAgICBUT3MsXG4gICAgVFNoZWxsLFxuICAgIFRTeXN0ZW1NZW1vcnksXG4gICAgVFBhY2thZ2VNYW5hZ2VyLFxufSBmcm9tICdAZGJjdHgvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBkZXRlY3RPUyA9ICgpOiBUT3MgPT5cbiAgICBwbGF0Zm9ybSA9PT0gJ2RhcndpbidcbiAgICAgICAgPyAnbWFjb3MnXG4gICAgICAgIDogcGxhdGZvcm0gPT09ICd3aW4zMidcbiAgICAgICAgICA/ICd3aW5kb3dzJ1xuICAgICAgICAgIDogJ2xpbnV4JztcblxuZXhwb3J0IGNvbnN0IGRldGVjdFNoZWxsID0gKCk6IFRTaGVsbCA9PiB7XG4gICAgaWYgKHBsYXRmb3JtID09PSAnd2luMzInKSB7XG4gICAgICAgIHJldHVybiAncG93ZXJzaGVsbCc7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hlbGwgPSBlbnYuU0hFTEw7XG5cbiAgICBpZiAoIXNoZWxsKSB7XG4gICAgICAgIHJldHVybiAnb3RoZXInO1xuICAgIH1cblxuICAgIGNvbnN0IG5hbWUgPSBiYXNlbmFtZShzaGVsbCk7XG4gICAgY29uc3Qga25vd246IFJlY29yZDxzdHJpbmcsIFRTaGVsbD4gPSB7XG4gICAgICAgIGJhc2g6ICdiYXNoJyxcbiAgICAgICAgenNoOiAnenNoJyxcbiAgICAgICAga3NoOiAna3NoJyxcbiAgICAgICAgZmlzaDogJ2Zpc2gnLFxuICAgICAgICBhc2g6ICdhc2gnLFxuICAgIH07XG5cbiAgICByZXR1cm4ga25vd25bbmFtZV0gPz8gJ290aGVyJztcbn07XG5cbmV4cG9ydCBjb25zdCBkZXRlY3RXU0wgPSAoKTogYm9vbGVhbiA9PiAhIShlbnYuV1NMX0RJU1RST19OQU1FIHx8IGVudi5XU0xFTlYpO1xuXG5jb25zdCBHQiA9IDEwMjQgKiogMztcblxuZXhwb3J0IGNvbnN0IGRldGVjdFN5c3RlbU1lbW9yeSA9ICgpOiBUU3lzdGVtTWVtb3J5ID0+IHtcbiAgICBjb25zdCBieXRlcyA9IHRvdGFsbWVtKCk7XG5cbiAgICBpZiAoYnl0ZXMgPCAxMiAqIEdCKSB7XG4gICAgICAgIHJldHVybiAnOGcnO1xuICAgIH1cbiAgICBpZiAoYnl0ZXMgPCAyMCAqIEdCKSB7XG4gICAgICAgIHJldHVybiAnMTZnJztcbiAgICB9XG4gICAgaWYgKGJ5dGVzIDwgMjggKiBHQikge1xuICAgICAgICByZXR1cm4gJzI0Zyc7XG4gICAgfVxuICAgIGlmIChieXRlcyA8IDQ4ICogR0IpIHtcbiAgICAgICAgcmV0dXJuICczMmcnO1xuICAgIH1cblxuICAgIHJldHVybiAnbW9yZSc7XG59O1xuXG5leHBvcnQgY29uc3QgZGV0ZWN0UGFja2FnZU1hbmFnZXIgPSAoKTogVFBhY2thZ2VNYW5hZ2VyID0+IHtcbiAgICBjb25zdCBhZ2VudCA9IGVudi5ucG1fY29uZmlnX3VzZXJfYWdlbnQgPz8gJyc7XG4gICAgY29uc3Qga25vd246IHJlYWRvbmx5IFRQYWNrYWdlTWFuYWdlcltdID0gW1xuICAgICAgICAncG5wbScsXG4gICAgICAgICd5YXJuJyxcbiAgICAgICAgJ2J1bicsXG4gICAgICAgICdkZW5vJyxcbiAgICBdIGFzIGNvbnN0O1xuXG4gICAgY29uc3QgbWF0Y2ggPSBrbm93bi5maW5kKChwbSkgPT4gYWdlbnQuc3RhcnRzV2l0aChwbSkpO1xuXG4gICAgcmV0dXJuIG1hdGNoID8/ICducG0nO1xufTtcblxuLy8gVE9ETzogSW1wbGVtZW50IGhvc3RuYW1lIOKGkiBwcm92aWRlciBtYXBwaW5nXG5leHBvcnQgY29uc3QgZGV0ZWN0UHJvdmlkZXIgPSAoaG9zdG5hbWU6IHN0cmluZyk6IFREYXRhYmFzZVByb3ZpZGVyID0+IHtcbiAgICBjb25zdCBydWxlczogUmVhZG9ubHlBcnJheTxyZWFkb25seSBbc3RyaW5nLCBURGF0YWJhc2VQcm92aWRlcl0+ID0gW1xuICAgICAgICBbJy5uZW9uLnRlY2gnLCAnbmVvbiddLFxuICAgICAgICBbJy5yZHMuYW1hem9uYXdzLmNvbScsICdhd3MnXSxcbiAgICAgICAgWycuYW1hem9uYXdzLmNvbScsICdhd3MnXSxcbiAgICAgICAgWycuc3VwYWJhc2UuY28nLCAnc3VwYWJhc2UnXSxcbiAgICAgICAgWycuc3VwYWJhc2UuY29tJywgJ3N1cGFiYXNlJ10sXG4gICAgICAgIFsnLmRhdGFiYXNlLmF6dXJlLmNvbScsICdhenVyZSddLFxuICAgICAgICBbJy5jbG91ZHNxbC4nLCAnZ2NwJ10sXG4gICAgICAgIFsnLnNxbC5nb29nJywgJ2djcCddLFxuICAgICAgICBbJy5yYWlsd2F5LmFwcCcsICdyYWlsd2F5J10sXG4gICAgICAgIFsnLnJlbmRlci5jb20nLCAncmVuZGVyJ10sXG4gICAgICAgIFsnLmFpdmVuY2xvdWQuY29tJywgJ2F2aWVuJ10sXG4gICAgICAgIFsnLmFpdmVuLmlvJywgJ2F2aWVuJ10sXG4gICAgICAgIFsnLnRpbWVzY2FsZWRiLmlvJywgJ3RpbWVzY2FsZV9jbG91ZCddLFxuICAgICAgICBbJy5oZXJva3VhcHAuY29tJywgJ2hlcm9rdSddLFxuICAgICAgICBbJy5mbHkuZGV2JywgJ2ZseSddLFxuICAgICAgICBbJy5rb3llYi5hcHAnLCAna295ZWInXSxcbiAgICAgICAgWycuZGIub25kaWdpdGFsb2NlYW4uY29tJywgJ2RpZ2l0YWxfb2NlYW4nXSxcbiAgICAgICAgWycuYWxpYmFiYWNsb3VkZGIuY29tJywgJ2FsaWJhZGFfY2xvdWQnXSxcbiAgICBdO1xuXG4gICAgY29uc3QgbG93ZXIgPSBob3N0bmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGZvdW5kID0gcnVsZXMuZmluZCgoW3N1ZmZpeF0pID0+IGxvd2VyLmluY2x1ZGVzKHN1ZmZpeCkpO1xuXG4gICAgcmV0dXJuIGZvdW5kPy5bMV0gPz8gJ290aGVyJztcbn07XG5cbmNvbnN0IGFpQXNzaXN0YW50UnVsZXM6IFJlYWRvbmx5QXJyYXk8XG4gICAgcmVhZG9ubHkgW1RBSUFzc2lzdGFudCwgUmVhZG9ubHlBcnJheTxzdHJpbmc+XVxuPiA9IFtcbiAgICBbJ2N1cnNvcicsIFsnLmN1cnNvcicsICcuY3Vyc29ycnVsZXMnXV0sXG4gICAgWydjbGF1ZGVfY29kZScsIFsnLmNsYXVkZScsICdDTEFVREUubWQnXV0sXG4gICAgWydvcGVuY29kZScsIFsnLm9wZW5jb2RlJ11dLFxuICAgIFsnYWlkZXInLCBbJy5haWRlci5jb25mLnltbCcsICcuYWlkZXIuY2hhdC5oaXN0b3J5Lm1kJ11dLFxuICAgIFsnb3BlbmFpX2NvZGV4JywgWycuY29kZXgnXV0sXG4gICAgWydnaXRodWJfY29waWxvdCcsIFsnLmdpdGh1Yi9jb3BpbG90LWluc3RydWN0aW9ucy5tZCddXSxcbl07XG5cbmV4cG9ydCBjb25zdCBkZXRlY3RBSUFzc2lzdGFudHMgPSAoKTogVEFJQXNzaXN0YW50W10gPT4ge1xuICAgIGNvbnN0IHJvb3QgPSBjd2QoKTtcblxuICAgIHJldHVybiBhaUFzc2lzdGFudFJ1bGVzXG4gICAgICAgIC5maWx0ZXIoKFssIHBhdGhzXSkgPT4gcGF0aHMuc29tZSgocCkgPT4gZXhpc3RzU3luYyhqb2luKHJvb3QsIHApKSkpXG4gICAgICAgIC5tYXAoKFtuYW1lXSkgPT4gbmFtZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGV0ZWN0RG9ja2VyID0gKCk6IGJvb2xlYW4gPT4gZXhpc3RzU3luYygnLy5kb2NrZXJlbnYnKTtcblxuZXhwb3J0IGNvbnN0IGRldGVjdFNTSFNlc3Npb24gPSAoKTogYm9vbGVhbiA9PlxuICAgICEhKGVudi5TU0hfQ09OTkVDVElPTiB8fCBlbnYuU1NIX0NMSUVOVCB8fCBlbnYuU1NIX1RUWSk7XG5cbmV4cG9ydCBjb25zdCBkZXRlY3RIb3N0bmFtZSA9ICgpOiBzdHJpbmcgPT4gaG9zdG5hbWUoKTtcblxuZXhwb3J0IGNvbnN0IGRldGVjdFVzZXJuYW1lID0gKCk6IHN0cmluZyA9PiB1c2VySW5mbygpLnVzZXJuYW1lO1xuXG5leHBvcnQgY29uc3QgaXNMb2NhbGhvc3QgPSAoaG9zdG5hbWU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGxvd2VyID0gaG9zdG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIGxvd2VyID09PSAnbG9jYWxob3N0JyB8fFxuICAgICAgICBsb3dlciA9PT0gJzEyNy4wLjAuMScgfHxcbiAgICAgICAgbG93ZXIgPT09ICc6OjEnIHx8XG4gICAgICAgIGxvd2VyID09PSAnMC4wLjAuMCdcbiAgICApO1xufTtcbiJdfQ==
@@ -1,4 +0,0 @@
1
- import type { Instance } from 'ink';
2
- import type { TStore } from '../store.mjs';
3
- export declare const runList: (store: TStore, inkApp: Instance) => Promise<void>;
4
- //# sourceMappingURL=list.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.d.mts","sourceRoot":"./src/","sources":["app/list.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,KAAK,CAAC;AAElC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAOzC,eAAO,MAAM,OAAO,GAChB,OAAO,MAAM,EACb,QAAQ,QAAQ,KACjB,OAAO,CAAC,IAAI,CA2Gd,CAAC"}
package/dist/app/list.mjs DELETED
@@ -1,93 +0,0 @@
1
- import { runInAction, when } from 'mobx';
2
- import { readConfig } from './config.mjs';
3
- import { createAuthenticatedTRPCClient } from '../lib/trpc.mjs';
4
- import { connectAccount } from './session.mjs';
5
- import { tailRevision } from './tail.mjs';
6
- import { logger } from '../logger.mjs';
7
- export const runList = async (store, inkApp) => {
8
- try {
9
- const config = await readConfig();
10
- if (!config.token) {
11
- inkApp.unmount();
12
- console.log('no auth token found. run `dbctx login` to authenticate.');
13
- process.exit(1);
14
- }
15
- const authed = createAuthenticatedTRPCClient(() => Promise.resolve(config.token));
16
- await connectAccount(config.token, store);
17
- const items = await authed.databases.listForUser.query();
18
- if (items.length === 0) {
19
- inkApp.unmount();
20
- console.log('no databases yet. run `dbctx` against a database to get started.');
21
- process.exit(0);
22
- }
23
- runInAction(() => {
24
- store.mode = 'list-picking';
25
- store.listPicker = {
26
- items,
27
- focusedIndex: 0,
28
- selectedIndex: null,
29
- };
30
- });
31
- await when(() => store.listPicker?.selectedIndex !== null);
32
- const picker = store.listPicker;
33
- if (picker === null || picker.selectedIndex === null) {
34
- return;
35
- }
36
- // Synthetic "exit" row sentinel — selectedIndex === items.length means
37
- // the user picked the bottom "exit" entry. Unmount and quit.
38
- if (picker.selectedIndex === picker.items.length) {
39
- inkApp.unmount();
40
- process.exit(0);
41
- }
42
- const picked = picker.items[picker.selectedIndex];
43
- if (picked === undefined) {
44
- return;
45
- }
46
- const needsLocalRerun = !picked.samplesIngested ||
47
- (!picked.postIntrospection.done &&
48
- picked.postIntrospection.jobStatus === null);
49
- if (needsLocalRerun) {
50
- inkApp.unmount();
51
- const reason = !picked.samplesIngested
52
- ? 'samples for this database have not been uploaded yet.'
53
- : 'post-introspection enrichment is stuck (no live job and not complete).';
54
- console.log(`"${picked.name}": ${reason}`);
55
- console.log('rerun `dbctx` against the same database to pick up where you left off.');
56
- process.exit(0);
57
- }
58
- // Tail-able: pre-fill upstream steps to mirror a hash-hit-then-tail
59
- // outcome and flip mode so the regular cascade renders. Phase-0 done
60
- // can be pre-set (no extra info to fetch); post-sampling is left to
61
- // dispatchAndStreamPostSampling so the relations/foreign-keys counts come
62
- // back from the server.s runPostSampling response.
63
- runInAction(() => {
64
- store.mode = 'list-tailing';
65
- store.steps.ingestion.introspection.state = 'skipped';
66
- store.steps.sampling.state = 'skipped';
67
- store.steps.sampling.reused = true;
68
- store.steps.ingestion.samples.state = 'skipped';
69
- store.steps.ingestion.samples.reused = true;
70
- if (picked.postIntrospection.done) {
71
- store.steps.ingestion.postIntrospection.state = 'done';
72
- store.steps.ingestion.postIntrospection.reused = true;
73
- }
74
- });
75
- await tailRevision({
76
- authed,
77
- revisionId: picked.latestRevisionId,
78
- store,
79
- postIntrospectionDone: picked.postIntrospection.done,
80
- });
81
- runInAction(() => {
82
- store.exitRequested = true;
83
- });
84
- }
85
- catch (err) {
86
- const msg = err instanceof Error ? err.message : String(err);
87
- logger.error(`list: ${msg}`);
88
- inkApp.unmount();
89
- console.log(`error: ${msg}`);
90
- process.exit(1);
91
- }
92
- };
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJhcHAvbGlzdC5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUN4QixLQUFhLEVBQ2IsTUFBZ0IsRUFDSCxFQUFFO0lBQ2YsSUFBSSxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsR0FBRyxDQUNQLHlEQUF5RCxDQUM1RCxDQUFDO1lBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsNkJBQTZCLENBQUMsR0FBRyxFQUFFLENBQzlDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQU0sQ0FBQyxDQUNqQyxDQUFDO1FBRUYsTUFBTSxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUxQyxNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXpELElBQUksS0FBSyxDQUFDLE1B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QUFpQixDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBQ3ZELEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDMUQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxZQUFZLENBQUM7WUFDZixNQUFNO1lBQ04sVUFBVSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDbkMsS0FBSztZQUNMLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJO1NBQ3ZELENBQUMsQ0FBQztRQUVILFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDYixLQUFLLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ1gsTUFBTSxHQUFHLEdBQUcsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7SW5zdGFuY2V9IGZyb20gJ2luayc7XG5pbXBvcnQge3J1bkluQWN0aW9uLCB3aGVufSBmcm9tICdtb2J4JztcbmltcG9ydCB0eXBlIHtUU3RvcmV9IGZyb20gJy4uL3N0b3JlLm1qcyc7XG5pbXBvcnQge3JlYWRDb25maWd9IGZyb20gJy4vY29uZmlnLm1qcyc7XG5pbXBvcnQge2NyZWF0ZUF1dGhlbnRpY2F0ZWRUUlBDQ2xpZW50fSBmcm9tICcuLi9saWIvdHJwYy5tanMnO1xuaW1wb3J0IHtjb25uZWN0QWNjb3VudH0gZnJvbSAnLi9zZXNzaW9uLm1qcyc7XG5pbXBvcnQge3RhaWxSZXZpc2lvbn0gZnJvbSAnLi90YWlsLm1qcyc7XG5pbXBvcnQge2xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyLm1qcyc7XG5cbmV4cG9ydCBjb25zdCBydW5MaXN0ID0gYXN5bmMgKFxuICAgIHN0b3JlOiBUU3RvcmUsXG4gICAgaW5rQXBwOiBJbnN0YW5jZSxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRDb25maWcoKTtcbiAgICAgICAgaWYgKCFjb25maWcudG9rZW4pIHtcbiAgICAgICAgICAgIGlua0FwcC51bm1vdW50KCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAnbm8gYXV0aCB0b2tlbiBmb3VuZC4gcnVuIGBkYmN0eCBsb2dpbmAgdG8gYXV0aGVudGljYXRlLicsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXV0aGVkID0gY3JlYXRlQXV0aGVudGljYXRlZFRSUENDbGllbnQoKCkgPT5cbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZShjb25maWcudG9rZW4hKSxcbiAgICAgICAgKTtcblxuICAgICAgICBhd2FpdCBjb25uZWN0QWNjb3VudChjb25maWcudG9rZW4sIHN0b3JlKTtcblxuICAgICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IGF1dGhlZC5kYXRhYmFzZXMubGlzdEZvclVzZXIucXVlcnkoKTtcblxuICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBpbmtBcHAudW5tb3VudCgpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgJ25vIGRhdGFiYXNlcyB5ZXQuIHJ1biBgZGJjdHhgIGFnYWluc3QgYSBkYXRhYmFzZSB0byBnZXQgc3RhcnRlZC4nLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgIHN0b3JlLm1vZGUgPSAnbGlzdC1waWNraW5nJztcbiAgICAgICAgICAgIHN0b3JlLmxpc3RQaWNrZXIgPSB7XG4gICAgICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICAgICAgZm9jdXNlZEluZGV4OiAwLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXg6IG51bGwsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCB3aGVuKCgpID0+IHN0b3JlLmxpc3RQaWNrZXI/LnNlbGVjdGVkSW5kZXggIT09IG51bGwpO1xuXG4gICAgICAgIGNvbnN0IHBpY2tlciA9IHN0b3JlLmxpc3RQaWNrZXI7XG4gICAgICAgIGlmIChwaWNrZXIgPT09IG51bGwgfHwgcGlja2VyLnNlbGVjdGVkSW5kZXggPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN5bnRoZXRpYyBcImV4aXRcIiByb3cgc2VudGluZWwg4oCUIHNlbGVjdGVkSW5kZXggPT09IGl0ZW1zLmxlbmd0aCBtZWFuc1xuICAgICAgICAvLyB0aGUgdXNlciBwaWNrZWQgdGhlIGJvdHRvbSBcImV4aXRcIiBlbnRyeS4gVW5tb3VudCBhbmQgcXVpdC5cbiAgICAgICAgaWYgKHBpY2tlci5zZWxlY3RlZEluZGV4ID09PSBwaWNrZXIuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpbmtBcHAudW5tb3VudCgpO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGlja2VkID0gcGlja2VyLml0ZW1zW3BpY2tlci5zZWxlY3RlZEluZGV4XTtcbiAgICAgICAgaWYgKHBpY2tlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZWVkc0xvY2FsUmVydW4gPVxuICAgICAgICAgICAgIXBpY2tlZC5zYW1wbGVzSW5nZXN0ZWQgfHxcbiAgICAgICAgICAgICghcGlja2VkLnBvc3RJbnRyb3NwZWN0aW9uLmRvbmUgJiZcbiAgICAgICAgICAgICAgICBwaWNrZWQucG9zdEludHJvc3BlY3Rpb24uam9iU3RhdHVzID09PSBudWxsKTtcblxuICAgICAgICBpZiAobmVlZHNMb2NhbFJlcnVuKSB7XG4gICAgICAgICAgICBpbmtBcHAudW5tb3VudCgpO1xuICAgICAgICAgICAgY29uc3QgcmVhc29uID0gIXBpY2tlZC5zYW1wbGVzSW5nZXN0ZWRcbiAgICAgICAgICAgICAgICA/ICdzYW1wbGVzIGZvciB0aGlzIGRhdGFiYXNlIGhhdmUgbm90IGJlZW4gdXBsb2FkZWQgeWV0LidcbiAgICAgICAgICAgICAgICA6ICdwb3N0LWludHJvc3BlY3Rpb24gZW5yaWNobWVudCBpcyBzdHVjayAobm8gbGl2ZSBqb2IgYW5kIG5vdCBjb21wbGV0ZSkuJztcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBcIiR7cGlja2VkLm5hbWV9XCI6ICR7cmVhc29ufWApO1xuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgJ3JlcnVuIGBkYmN0eGAgYWdhaW5zdCB0aGUgc2FtZSBkYXRhYmFzZSB0byBwaWNrIHVwIHdoZXJlIHlvdSBsZWZ0IG9mZi4nLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRhaWwtYWJsZTogcHJlLWZpbGwgdXBzdHJlYW0gc3RlcHMgdG8gbWlycm9yIGEgaGFzaC1oaXQtdGhlbi10YWlsXG4gICAgICAgIC8vIG91dGNvbWUgYW5kIGZsaXAgbW9kZSBzbyB0aGUgcmVndWxhciBjYXNjYWRlIHJlbmRlcnMuIFBoYXNlLTAgZG9uZVxuICAgICAgICAvLyBjYW4gYmUgcHJlLXNldCAobm8gZXh0cmEgaW5mbyB0byBmZXRjaCk7IHBvc3Qtc2FtcGxpbmcgaXMgbGVmdCB0b1xuICAgICAgICAvLyBkaXNwYXRjaEFuZFN0cmVhbVBvc3RTYW1wbGluZyBzbyB0aGUgcmVsYXRpb25zL2ZvcmVpZ24ta2V5cyBjb3VudHMgY29tZVxuICAgICAgICAvLyBiYWNrIGZyb20gdGhlIHNlcnZlci5zIHJ1blBvc3RTYW1wbGluZyByZXNwb25zZS5cbiAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgc3RvcmUubW9kZSA9ICdsaXN0LXRhaWxpbmcnO1xuICAgICAgICAgICAgc3RvcmUuc3RlcHMuaW5nZXN0aW9uLmludHJvc3BlY3Rpb24uc3RhdGUgPSAnc2tpcHBlZCc7XG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5zYW1wbGluZy5zdGF0ZSA9ICdza2lwcGVkJztcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNhbXBsaW5nLnJldXNlZCA9IHRydWU7XG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5pbmdlc3Rpb24uc2FtcGxlcy5zdGF0ZSA9ICdza2lwcGVkJztcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLmluZ2VzdGlvbi5zYW1wbGVzLnJldXNlZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAocGlja2VkLnBvc3RJbnRyb3NwZWN0aW9uLmRvbmUpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5pbmdlc3Rpb24ucG9zdEludHJvc3BlY3Rpb24uc3RhdGUgPSAnZG9uZSc7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuaW5nZXN0aW9uLnBvc3RJbnRyb3NwZWN0aW9uLnJldXNlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IHRhaWxSZXZpc2lvbih7XG4gICAgICAgICAgICBhdXRoZWQsXG4gICAgICAgICAgICByZXZpc2lvbklkOiBwaWNrZWQubGF0ZXN0UmV2aXNpb25JZCxcbiAgICAgICAgICAgIHN0b3JlLFxuICAgICAgICAgICAgcG9zdEludHJvc3BlY3Rpb25Eb25lOiBwaWNrZWQucG9zdEludHJvc3BlY3Rpb24uZG9uZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgc3RvcmUuZXhpdFJlcXVlc3RlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zdCBtc2cgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG4gICAgICAgIGxvZ2dlci5lcnJvcihgbGlzdDogJHttc2d9YCk7XG4gICAgICAgIGlua0FwcC51bm1vdW50KCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGBlcnJvcjogJHttc2d9YCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG59O1xuIl19
@@ -1,26 +0,0 @@
1
- import type { Pool } from 'pg';
2
- import type { TDatabaseIntrospection } from '@dbctx/core';
3
- import type { TStore } from '../store.mjs';
4
- export type TLoadIntrospectionError = {
5
- kind: 'read';
6
- message: string;
7
- } | {
8
- kind: 'parse';
9
- message: string;
10
- } | {
11
- kind: 'schema';
12
- message: string;
13
- } | {
14
- kind: 'mismatch';
15
- message: string;
16
- };
17
- export type TLoadIntrospectionResult = {
18
- ok: true;
19
- result: TDatabaseIntrospection;
20
- } | {
21
- ok: false;
22
- error: TLoadIntrospectionError;
23
- };
24
- export declare const loadIntrospectionFromFile: (path: string, pool: Pool) => Promise<TLoadIntrospectionResult>;
25
- export declare const populateIntrospectionCounts: (store: TStore, introspection: TDatabaseIntrospection) => void;
26
- //# sourceMappingURL=load-introspection.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"load-introspection.d.mts","sourceRoot":"./src/","sources":["app/load-introspection.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAG7B,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAGzC,MAAM,MAAM,uBAAuB,GAC7B;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,GAC/B;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,GAChC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,GACjC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC;AAE1C,MAAM,MAAM,wBAAwB,GAC9B;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAC,GAC1C;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,uBAAuB,CAAA;CAAC,CAAC;AAKlD,eAAO,MAAM,yBAAyB,GAClC,MAAM,MAAM,EACZ,MAAM,IAAI,KACX,OAAO,CAAC,wBAAwB,CAuElC,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACpC,OAAO,MAAM,EACb,eAAe,sBAAsB,KACtC,IAoCF,CAAC"}
@@ -1,89 +0,0 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { runInAction } from 'mobx';
3
- import { databaseIntrospectionSchema } from '@dbctx/core/schemas/introspection';
4
- import { fetchDatabaseIdentifier } from '../db/version.mjs';
5
- const errMessage = (err) => err instanceof Error ? err.message : String(err);
6
- export const loadIntrospectionFromFile = async (path, pool) => {
7
- const raw = await (async () => {
8
- try {
9
- return { ok: true, value: await readFile(path, 'utf8') };
10
- }
11
- catch (err) {
12
- return {
13
- ok: false,
14
- error: {
15
- kind: 'read',
16
- message: `Failed to read introspection file at ${path}: ${errMessage(err)}`,
17
- },
18
- };
19
- }
20
- })();
21
- if (!raw.ok) {
22
- return { ok: false, error: raw.error };
23
- }
24
- const parsed = (() => {
25
- try {
26
- return { ok: true, value: JSON.parse(raw.value) };
27
- }
28
- catch (err) {
29
- return {
30
- ok: false,
31
- error: {
32
- kind: 'parse',
33
- message: `Failed to parse introspection JSON at ${path}: ${errMessage(err)}`,
34
- },
35
- };
36
- }
37
- })();
38
- if (!parsed.ok) {
39
- return { ok: false, error: parsed.error };
40
- }
41
- const validated = databaseIntrospectionSchema.safeParse(parsed.value);
42
- if (!validated.success) {
43
- return {
44
- ok: false,
45
- error: {
46
- kind: 'schema',
47
- message: `Introspection JSON at ${path} does not match the expected schema: ${validated.error.message}`,
48
- },
49
- };
50
- }
51
- const loaded = validated.data;
52
- const live = await fetchDatabaseIdentifier(pool);
53
- const matches = loaded.identifier.system_identifier === live.system_identifier &&
54
- loaded.identifier.database_oid === live.database_oid &&
55
- loaded.name === live.database_name;
56
- if (!matches) {
57
- return {
58
- ok: false,
59
- error: {
60
- kind: 'mismatch',
61
- message: `Introspection JSON does not match the connected database.\n` +
62
- ` loaded: name=${loaded.name} system_identifier=${loaded.identifier.system_identifier} database_oid=${loaded.identifier.database_oid}\n` +
63
- ` live: name=${live.database_name} system_identifier=${live.system_identifier} database_oid=${live.database_oid}`,
64
- },
65
- };
66
- }
67
- return { ok: true, result: loaded };
68
- };
69
- export const populateIntrospectionCounts = (store, introspection) => {
70
- const counts = store.steps.introspection.counts;
71
- const relations = Object.values(introspection.relations);
72
- const tables = relations.filter((r) => r.kind === 'table' || r.kind === 'partitioned_table').length;
73
- const views = relations.filter((r) => r.kind === 'view').length;
74
- const materializedViews = relations.filter((r) => r.kind === 'materialized_view').length;
75
- const columns = relations.reduce((acc, r) => acc + Object.keys(r.attributes).length, 0);
76
- const indexes = relations.reduce((acc, r) => acc + Object.keys(r.indexes).length, 0);
77
- const foreignKeys = relations.reduce((acc, r) => acc + Object.keys(r.references).length, 0);
78
- runInAction(() => {
79
- counts.tables = tables;
80
- counts.views = views;
81
- counts.materializedViews = materializedViews;
82
- counts.columns = columns;
83
- counts.indexes = indexes;
84
- counts.foreignKeys = foreignKeys;
85
- counts.enums = Object.keys(introspection.enums).length;
86
- counts.analyzed = 0;
87
- });
88
- };
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1pbnRyb3NwZWN0aW9uLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImFwcC9sb2FkLWludHJvc3BlY3Rpb24ubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBSTlFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBWTFELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBWSxFQUFVLEVBQUUsQ0FDeEMsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRXJELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEtBQUssRUFDMUMsSUFBWSxFQUNaLElBQVUsRUFDdUIsRUFBRTtJQUNuQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDMUIsSUFBSSxDQUFDO1lBQ0QsT0FBTyxFQUFDLEVBQUUsRUFBRSxJQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBQyxDQUFDO1FBQ3BFLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ1gsT0FBTztnQkFDSCxFQUFFLEVBQUUsS0FBYztnQkFDbEIsS0FBSyxFQUFFO29CQUNILElBQUksRUFBRSxNQUFlO29CQUNyQixPQUFPLEVBQUUsd0NBQXdDLElBQUksS0FBSyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7aUJBQzlFO2FBQ0osQ0FBQztRQUNOLENBQUM7SUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRUwsSUFBSSxDQUFDLEdBQUcsQ0FBQyxF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QUFHLE9BQU8sQ0FBQztRQUN6QixNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN6QixNQUFNLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUNqQyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN2RCxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cmVhZEZpbGV9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHR5cGUge1Bvb2x9IGZyb20gJ3BnJztcbmltcG9ydCB7cnVuSW5BY3Rpb259IGZyb20gJ21vYngnO1xuaW1wb3J0IHtkYXRhYmFzZUludHJvc3BlY3Rpb25TY2hlbWF9IGZyb20gJ0BkYmN0eC9jb3JlL3NjaGVtYXMvaW50cm9zcGVjdGlvbic7XG5pbXBvcnQgdHlwZSB7VERhdGFiYXNlSW50cm9zcGVjdGlvbn0gZnJvbSAnQGRiY3R4L2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7VFN0b3JlfSBmcm9tICcuLi9zdG9yZS5tanMnO1xuaW1wb3J0IHtmZXRjaERhdGFiYXNlSWRlbnRpZmllcn0gZnJvbSAnLi4vZGIvdmVyc2lvbi5tanMnO1xuXG5leHBvcnQgdHlwZSBUTG9hZEludHJvc3BlY3Rpb25FcnJvciA9XG4gICAgfCB7a2luZDogJ3JlYWQnOyBtZXNzYWdlOiBzdHJpbmd9XG4gICAgfCB7a2luZDogJ3BhcnNlJzsgbWVzc2FnZTogc3RyaW5nfVxuICAgIHwge2tpbmQ6ICdzY2hlbWEnOyBtZXNzYWdlOiBzdHJpbmd9XG4gICAgfCB7a2luZDogJ21pc21hdGNoJzsgbWVzc2FnZTogc3RyaW5nfTtcblxuZXhwb3J0IHR5cGUgVExvYWRJbnRyb3NwZWN0aW9uUmVzdWx0ID1cbiAgICB8IHtvazogdHJ1ZTsgcmVzdWx0OiBURGF0YWJhc2VJbnRyb3NwZWN0aW9ufVxuICAgIHwge29rOiBmYWxzZTsgZXJyb3I6IFRMb2FkSW50cm9zcGVjdGlvbkVycm9yfTtcblxuY29uc3QgZXJyTWVzc2FnZSA9IChlcnI6IHVua25vd24pOiBzdHJpbmcgPT5cbiAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG5cbmV4cG9ydCBjb25zdCBsb2FkSW50cm9zcGVjdGlvbkZyb21GaWxlID0gYXN5bmMgKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBwb29sOiBQb29sLFxuKTogUHJvbWlzZTxUTG9hZEludHJvc3BlY3Rpb25SZXN1bHQ+ID0+IHtcbiAgICBjb25zdCByYXcgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHtvazogdHJ1ZSBhcyBjb25zdCwgdmFsdWU6IGF3YWl0IHJlYWRGaWxlKHBhdGgsICd1dGY4Jyl9O1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb2s6IGZhbHNlIGFzIGNvbnN0LFxuICAgICAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdyZWFkJyBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZhaWxlZCB0byByZWFkIGludHJvc3BlY3Rpb24gZmlsZSBhdCAke3BhdGh9OiAke2Vyck1lc3NhZ2UoZXJyKX1gLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSkoKTtcblxuICAgIGlmICghcmF3Lm9rKSB7XG4gICAgICAgIHJldHVybiB7b2s6IGZhbHNlLCBlcnJvcjogcmF3LmVycm9yfTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWQgPSAoKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHtvazogdHJ1ZSBhcyBjb25zdCwgdmFsdWU6IEpTT04ucGFyc2UocmF3LnZhbHVlKSBhcyB1bmtub3dufTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9rOiBmYWxzZSBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICAgICAgICBraW5kOiAncGFyc2UnIGFzIGNvbnN0LFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRmFpbGVkIHRvIHBhcnNlIGludHJvc3BlY3Rpb24gSlNPTiBhdCAke3BhdGh9OiAke2Vyck1lc3NhZ2UoZXJyKX1gLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSkoKTtcblxuICAgIGlmICghcGFyc2VkLm9rKSB7XG4gICAgICAgIHJldHVybiB7b2s6IGZhbHNlLCBlcnJvcjogcGFyc2VkLmVycm9yfTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZWQgPSBkYXRhYmFzZUludHJvc3BlY3Rpb25TY2hlbWEuc2FmZVBhcnNlKHBhcnNlZC52YWx1ZSk7XG5cbiAgICBpZiAoIXZhbGlkYXRlZC5zdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdzY2hlbWEnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBJbnRyb3NwZWN0aW9uIEpTT04gYXQgJHtwYXRofSBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgc2NoZW1hOiAke3ZhbGlkYXRlZC5lcnJvci5tZXNzYWdlfWAsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGxvYWRlZCA9IHZhbGlkYXRlZC5kYXRhO1xuICAgIGNvbnN0IGxpdmUgPSBhd2FpdCBmZXRjaERhdGFiYXNlSWRlbnRpZmllcihwb29sKTtcblxuICAgIGNvbnN0IG1hdGNoZXMgPVxuICAgICAgICBsb2FkZWQuaWRlbnRpZmllci5zeXN0ZW1faWRlbnRpZmllciA9PT0gbGl2ZS5zeXN0ZW1faWRlbnRpZmllciAmJlxuICAgICAgICBsb2FkZWQuaWRlbnRpZmllci5kYXRhYmFzZV9vaWQgPT09IGxpdmUuZGF0YWJhc2Vfb2lkICYmXG4gICAgICAgIGxvYWRlZC5uYW1lID09PSBsaXZlLmRhdGFiYXNlX25hbWU7XG5cbiAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgICAga2luZDogJ21pc21hdGNoJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICBgSW50cm9zcGVjdGlvbiBKU09OIGRvZXMgbm90IG1hdGNoIHRoZSBjb25uZWN0ZWQgZGF0YWJhc2UuXFxuYCArXG4gICAgICAgICAgICAgICAgICAgIGAgIGxvYWRlZDogbmFtZT0ke2xvYWRlZC5uYW1lfSBzeXN0ZW1faWRlbnRpZmllcj0ke2xvYWRlZC5pZGVudGlmaWVyLnN5c3RlbV9pZGVudGlmaWVyfSBkYXRhYmFzZV9vaWQ9JHtsb2FkZWQuaWRlbnRpZmllci5kYXRhYmFzZV9vaWR9XFxuYCArXG4gICAgICAgICAgICAgICAgICAgIGAgIGxpdmU6ICAgbmFtZT0ke2xpdmUuZGF0YWJhc2VfbmFtZX0gc3lzdGVtX2lkZW50aWZpZXI9JHtsaXZlLnN5c3RlbV9pZGVudGlmaWVyfSBkYXRhYmFzZV9vaWQ9JHtsaXZlLmRhdGFiYXNlX29pZH1gLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge29rOiB0cnVlLCByZXN1bHQ6IGxvYWRlZH07XG59O1xuXG5leHBvcnQgY29uc3QgcG9wdWxhdGVJbnRyb3NwZWN0aW9uQ291bnRzID0gKFxuICAgIHN0b3JlOiBUU3RvcmUsXG4gICAgaW50cm9zcGVjdGlvbjogVERhdGFiYXNlSW50cm9zcGVjdGlvbixcbik6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGNvdW50cyA9IHN0b3JlLnN0ZXBzLmludHJvc3BlY3Rpb24uY291bnRzO1xuXG4gICAgY29uc3QgcmVsYXRpb25zID0gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnJlbGF0aW9ucyk7XG5cbiAgICBjb25zdCB0YWJsZXMgPSByZWxhdGlvbnMuZmlsdGVyKFxuICAgICAgICAocikgPT4gci5raW5kID09PSAndGFibGUnIHx8IHIua2luZCA9PT0gJ3BhcnRpdGlvbmVkX3RhYmxlJyxcbiAgICApLmxlbmd0aDtcbiAgICBjb25zdCB2aWV3cyA9IHJlbGF0aW9ucy5maWx0ZXIoKHIpID0+IHIua2luZCA9PT0gJ3ZpZXcnKS5sZW5ndGg7XG4gICAgY29uc3QgbWF0ZXJpYWxpemVkVmlld3MgPSByZWxhdGlvbnMuZmlsdGVyKFxuICAgICAgICAocikgPT4gci5raW5kID09PSAnbWF0ZXJpYWxpemVkX3ZpZXcnLFxuICAgICkubGVuZ3RoO1xuXG4gICAgY29uc3QgY29sdW1ucyA9IHJlbGF0aW9ucy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHIpID0+IGFjYyArIE9iamVjdC5rZXlzKHIuYXR0cmlidXRlcykubGVuZ3RoLFxuICAgICAgICAwLFxuICAgICk7XG4gICAgY29uc3QgaW5kZXhlcyA9IHJlbGF0aW9ucy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHIpID0+IGFjYyArIE9iamVjdC5rZXlzKHIuaW5kZXhlcykubGVuZ3RoLFxuICAgICAgICAwLFxuICAgICk7XG4gICAgY29uc3QgZm9yZWlnbktleXMgPSByZWxhdGlvbnMucmVkdWNlKFxuICAgICAgICAoYWNjLCByKSA9PiBhY2MgKyBPYmplY3Qua2V5cyhyLnJlZmVyZW5jZXMpLmxlbmd0aCxcbiAgICAgICAgMCxcbiAgICApO1xuXG4gICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICBjb3VudHMudGFibGVzID0gdGFibGVzO1xuICAgICAgICBjb3VudHMudmlld3MgPSB2aWV3cztcbiAgICAgICAgY291bnRzLm1hdGVyaWFsaXplZFZpZXdzID0gbWF0ZXJpYWxpemVkVmlld3M7XG4gICAgICAgIGNvdW50cy5jb2x1bW5zID0gY29sdW1ucztcbiAgICAgICAgY291bnRzLmluZGV4ZXMgPSBpbmRleGVzO1xuICAgICAgICBjb3VudHMuZm9yZWlnbktleXMgPSBmb3JlaWduS2V5cztcbiAgICAgICAgY291bnRzLmVudW1zID0gT2JqZWN0LmtleXMoaW50cm9zcGVjdGlvbi5lbnVtcykubGVuZ3RoO1xuICAgICAgICBjb3VudHMuYW5hbHl6ZWQgPSAwO1xuICAgIH0pO1xufTtcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export declare const runLogin: () => Promise<void>;
2
- //# sourceMappingURL=login.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.d.mts","sourceRoot":"./src/","sources":["app/login.mts"],"names":[],"mappings":"AAgDA,eAAO,MAAM,QAAQ,QAAa,OAAO,CAAC,IAAI,CAsD7C,CAAC"}
@@ -1,69 +0,0 @@
1
- import { render } from 'ink';
2
- import { createElement, useState, useEffect } from 'react';
3
- import { trpc, createAuthenticatedTRPCClient } from '../lib/trpc.mjs';
4
- import { readConfig, writeConfig } from './config.mjs';
5
- import { buildConnectURL } from './open-url.mjs';
6
- import { detectHostname, detectOS, detectShell, detectUsername, } from './detect.mjs';
7
- import { LoginView } from '../ui/components/Login.js';
8
- import { logger } from '../logger.mjs';
9
- const waitForToken = (loginId) => new Promise((resolve, reject) => {
10
- const sub = trpc.cliLogin.onAuthorization.subscribe({ login_id: loginId }, {
11
- onData: (data) => {
12
- sub.unsubscribe();
13
- resolve(data.token);
14
- },
15
- onError: (err) => {
16
- sub.unsubscribe();
17
- reject(err);
18
- },
19
- });
20
- });
21
- const LoginApp = ({ initialState, subscribe }) => {
22
- const [state, setState] = useState(initialState);
23
- useEffect(() => {
24
- subscribe(setState);
25
- }, [subscribe]);
26
- return createElement(LoginView, { state });
27
- };
28
- export const runLogin = async () => {
29
- let setState = () => { };
30
- const subscribe = async (update) => {
31
- setState = update;
32
- };
33
- const inkApp = render(createElement(LoginApp, {
34
- initialState: { kind: 'creating' },
35
- subscribe,
36
- }));
37
- try {
38
- const config = await readConfig();
39
- const { login_id } = await trpc.cliLogin.create.mutate({
40
- username: detectUsername(),
41
- hostname: detectHostname(),
42
- os: detectOS(),
43
- shell: detectShell(),
44
- device_id: config.device_id,
45
- });
46
- const url = buildConnectURL(login_id);
47
- setState({ kind: 'waiting', url });
48
- const token = await waitForToken(login_id);
49
- await writeConfig(token);
50
- const authed = createAuthenticatedTRPCClient(() => Promise.resolve(token));
51
- const account = await authed.account.getAccount.query({});
52
- setState({
53
- kind: 'connected',
54
- email: account.emails[0] ?? null,
55
- });
56
- await new Promise((r) => setTimeout(r, 200));
57
- inkApp.unmount();
58
- process.exit(0);
59
- }
60
- catch (err) {
61
- const message = err instanceof Error ? err.message : String(err);
62
- logger.error(`login: ${message}`);
63
- setState({ kind: 'error', message });
64
- await new Promise((r) => setTimeout(r, 200));
65
- inkApp.unmount();
66
- process.exit(1);
67
- }
68
- };
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4ubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiYXBwL2xvZ2luLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sS0FBSyxDQUFDO0FBQzNCLE9BQU8sRUFBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLE9BQU8sQ0FBQztBQUN6RCxPQUFPLEVBQUMsSUFBSSxFQUFFLDZCQUE2QixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxjQUFjLEVBQ2QsUUFBUSxFQUNSLFdBQVcsRUFDWCxjQUFjLEdBQ2pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxTQUFTLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7QUFDdEUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVyQyxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWUsRUFBbUIsRUFBRSxDQUN0RCxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtJQUNwQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQy9DLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBQyxFQUNuQjtRQUNJLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2IsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2IsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxHQUFH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LEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztRQUNuQyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cmVuZGVyfSBmcm9tICdpbmsnO1xuaW1wb3J0IHtjcmVhdGVFbGVtZW50LCB1c2VTdGF0ZSwgdXNlRWZmZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3RycGMsIGNyZWF0ZUF1dGhlbnRpY2F0ZWRUUlBDQ2xpZW50fSBmcm9tICcuLi9saWIvdHJwYy5tanMnO1xuaW1wb3J0IHtyZWFkQ29uZmlnLCB3cml0ZUNvbmZpZ30gZnJvbSAnLi9jb25maWcubWpzJztcbmltcG9ydCB7YnVpbGRDb25uZWN0VVJMfSBmcm9tICcuL29wZW4tdXJsLm1qcyc7XG5pbXBvcnQge1xuICAgIGRldGVjdEhvc3RuYW1lLFxuICAgIGRldGVjdE9TLFxuICAgIGRldGVjdFNoZWxsLFxuICAgIGRldGVjdFVzZXJuYW1lLFxufSBmcm9tICcuL2RldGVjdC5tanMnO1xuaW1wb3J0IHtMb2dpblZpZXcsIHR5cGUgVExvZ2luU3RhdGV9IGZyb20gJy4uL3VpL2NvbXBvbmVudHMvTG9naW4uanMnO1xuaW1wb3J0IHtsb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci5tanMnO1xuXG5jb25zdCB3YWl0Rm9yVG9rZW4gPSAobG9naW5JZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+ID0+XG4gICAgbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YiA9IHRycGMuY2xpTG9naW4ub25BdXRob3JpemF0aW9uLnN1YnNjcmliZShcbiAgICAgICAgICAgIHtsb2dpbl9pZDogbG9naW5JZH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb25EYXRhOiAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhLnRva2VuKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uRXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH0pO1xuXG50eXBlIFRMb2dpbkFwcFByb3BzID0ge1xuICAgIHJlYWRvbmx5IGluaXRpYWxTdGF0ZTogVExvZ2luU3RhdGU7XG4gICAgcmVhZG9ubHkgc3Vic2NyaWJlOiAoXG4gICAgICAgIHNldFN0YXRlOiAobmV4dDogVExvZ2luU3RhdGUpID0+IHZvaWQsXG4gICAgKSA9PiBQcm9taXNlPHZvaWQ+O1xufTtcblxuY29uc3QgTG9naW5BcHAgPSAoe2luaXRpYWxTdGF0ZSwgc3Vic2NyaWJlfTogVExvZ2luQXBwUHJvcHMpID0+IHtcbiAgICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlPFRMb2dpblN0YXRlPihpbml0aWFsU3RhdGUpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc3Vic2NyaWJlKHNldFN0YXRlKTtcbiAgICB9LCBbc3Vic2NyaWJlXSk7XG5cbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudChMb2dpblZpZXcsIHtzdGF0ZX0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJ1bkxvZ2luID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGxldCBzZXRTdGF0ZTogKG5leHQ6IFRMb2dpblN0YXRlKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBjb25zdCBzdWJzY3JpYmUgPSBhc3luYyAoXG4gICAgICAgIHVwZGF0ZTogKG5leHQ6IFRMb2dpblN0YXRlKSA9PiB2b2lkLFxuICAgICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBzZXRTdGF0ZSA9IHVwZGF0ZTtcbiAgICB9O1xuXG4gICAgY29uc3QgaW5rQXBwID0gcmVuZGVyKFxuICAgICAgICBjcmVhdGVFbGVtZW50KExvZ2luQXBwLCB7XG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtraW5kOiAnY3JlYXRpbmcnfSxcbiAgICAgICAgICAgIHN1YnNjcmliZSxcbiAgICAgICAgfSksXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRDb25maWcoKTtcblxuICAgICAgICBjb25zdCB7bG9naW5faWR9ID0gYXdhaXQgdHJwYy5jbGlMb2dpbi5jcmVhdGUubXV0YXRlKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiBkZXRlY3RVc2VybmFtZSgpLFxuICAgICAgICAgICAgaG9zdG5hbWU6IGRldGVjdEhvc3RuYW1lKCksXG4gICAgICAgICAgICBvczogZGV0ZWN0T1MoKSxcbiAgICAgICAgICAgIHNoZWxsOiBkZXRlY3RTaGVsbCgpLFxuICAgICAgICAgICAgZGV2aWNlX2lkOiBjb25maWcuZGV2aWNlX2lkLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB1cmwgPSBidWlsZENvbm5lY3RVUkwobG9naW5faWQpO1xuICAgICAgICBzZXRTdGF0ZSh7a2luZDogJ3dhaXRpbmcnLCB1cmx9KTtcblxuICAgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHdhaXRGb3JUb2tlbihsb2dpbl9pZCk7XG4gICAgICAgIGF3YWl0IHdyaXRlQ29uZmlnKHRva2VuKTtcblxuICAgICAgICBjb25zdCBhdXRoZWQgPSBjcmVhdGVBdXRoZW50aWNhdGVkVFJQQ0NsaWVudCgoKSA9PlxuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHRva2VuKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGF1dGhlZC5hY2NvdW50LmdldEFjY291bnQucXVlcnkoe30pO1xuXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIGtpbmQ6ICdjb25uZWN0ZWQnLFxuICAgICAgICAgICAgZW1haWw6IGFjY291bnQuZW1haWxzWzBdID8/IG51bGwsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDIwMCkpO1xuICAgICAgICBpbmtBcHAudW5tb3VudCgpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG4gICAgICAgIGxvZ2dlci5lcnJvcihgbG9naW46ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgc2V0U3RhdGUoe2tpbmQ6ICdlcnJvcicsIG1lc3NhZ2V9KTtcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgMjAwKSk7XG4gICAgICAgIGlua0FwcC51bm1vdW50KCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG59O1xuIl19
@@ -1,6 +0,0 @@
1
- export declare const shouldOpenBrowser: () => boolean;
2
- export declare const buildSessionURL: (sessionId: string) => string;
3
- export declare const buildConnectURL: (loginId: string) => string;
4
- export declare const openURL: (url: string) => Promise<void>;
5
- export declare const openSessionURL: (url: string) => Promise<void>;
6
- //# sourceMappingURL=open-url.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"open-url.d.mts","sourceRoot":"./src/","sources":["app/open-url.mts"],"names":[],"mappings":"AAQA,eAAO,MAAM,iBAAiB,QAAO,OAQpC,CAAC;AAUF,eAAO,MAAM,eAAe,GAAI,WAAW,MAAM,KAAG,MACH,CAAC;AAElD,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,KAAG,MACL,CAAC;AAE9C,eAAO,MAAM,OAAO,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,IAAI,CAWvD,CAAC;AAEF,eAAO,MAAM,cAAc,QAbQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAanB,CAAC"}
@@ -1,33 +0,0 @@
1
- import { env } from 'process';
2
- import { DBCTX_DEV } from '../lib/env.mjs';
3
- const SKIP_VALUES = new Set(['none', 'false', '0']);
4
- const isDocker = () => !!(env.DOCKER || env.container || env.DOCKER_CONTAINER);
5
- export const shouldOpenBrowser = () => {
6
- if (isDocker()) {
7
- return false;
8
- }
9
- const browser = env.BROWSER?.toLowerCase();
10
- return !browser || !SKIP_VALUES.has(browser);
11
- };
12
- const SESSION_BASE_URL = !DBCTX_DEV
13
- ? 'https://dbctx.io/authorize/session'
14
- : 'http://localhost:12002/authorize/session';
15
- const CONNECT_BASE_URL = !DBCTX_DEV
16
- ? 'https://dbctx.io/connect'
17
- : 'http://localhost:12002/connect';
18
- export const buildSessionURL = (sessionId) => `${SESSION_BASE_URL}?session-id=${sessionId}`;
19
- export const buildConnectURL = (loginId) => `${CONNECT_BASE_URL}?login-id=${loginId}`;
20
- export const openURL = async (url) => {
21
- if (!shouldOpenBrowser()) {
22
- return;
23
- }
24
- try {
25
- const { default: open } = await import('open');
26
- await open(url);
27
- }
28
- catch {
29
- // Browser opening is best-effort — no-op on failure
30
- }
31
- };
32
- export const openSessionURL = openURL;
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi11cmwubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiYXBwL29wZW4tdXJsLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQzVCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUVwRCxNQUFNLFFBQVEsR0FBRyxHQUFZLEVBQUUsQ0FDM0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEdBQVksRUFBRTtJQUMzQyxJQUFJLFFBQVEsRUFBRSxFQUFFLENBQUM7UUFDYixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUUzQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLENBQUMsU0FBUztJQUMvQixDQUFDLENBQUMsb0NBQW9DO0lBQ3RDLENBQUMsQ0FBQywwQ0FBMEMsQ0FBQztBQUVqRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsU0FBUztJQUMvQixDQUFDLENBQUMsMEJBQTBCO0lBQzVCLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxTQUFpQixFQUFVLEVBQUUsQ0FDekQsR0FBRyxnQkFBZ0IsZUFBZSxTQUFTLEVBQUUsQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFlLEVBQVUsRUFBRSxDQUN2RCxHQUFHLGdCQUFnQixhQUFhLE9BQU8sRUFBRSxDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFpQixFQUFFO0lBQ3hELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7UUFDdkIsT0FBTztJQUNYLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDTCxvREFBb0Q7SUFDeEQsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Vudn0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQge0RCQ1RYX0RFVn0gZnJvbSAnLi4vbGliL2Vudi5tanMnO1xuXG5jb25zdCBTS0lQX1ZBTFVFUyA9IG5ldyBTZXQoWydub25lJywgJ2ZhbHNlJywgJzAnXSk7XG5cbmNvbnN0IGlzRG9ja2VyID0gKCk6IGJvb2xlYW4gPT5cbiAgICAhIShlbnYuRE9DS0VSIHx8IGVudi5jb250YWluZXIgfHwgZW52LkRPQ0tFUl9DT05UQUlORVIpO1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkT3BlbkJyb3dzZXIgPSAoKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKGlzRG9ja2VyKCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXIgPSBlbnYuQlJPV1NFUj8udG9Mb3dlckNhc2UoKTtcblxuICAgIHJldHVybiAhYnJvd3NlciB8fCAhU0tJUF9WQUxVRVMuaGFzKGJyb3dzZXIpO1xufTtcblxuY29uc3QgU0VTU0lPTl9CQVNFX1VSTCA9ICFEQkNUWF9ERVZcbiAgICA/ICdodHRwczovL2RiY3R4LmlvL2F1dGhvcml6ZS9zZXNzaW9uJ1xuICAgIDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MTIwMDIvYXV0aG9yaXplL3Nlc3Npb24nO1xuXG5jb25zdCBDT05ORUNUX0JBU0VfVVJMID0gIURCQ1RYX0RFVlxuICAgID8gJ2h0dHBzOi8vZGJjdHguaW8vY29ubmVjdCdcbiAgICA6ICdodHRwOi8vbG9jYWxob3N0OjEyMDAyL2Nvbm5lY3QnO1xuXG5leHBvcnQgY29uc3QgYnVpbGRTZXNzaW9uVVJMID0gKHNlc3Npb25JZDogc3RyaW5nKTogc3RyaW5nID0+XG4gICAgYCR7U0VTU0lPTl9CQVNFX1VSTH0/c2Vzc2lvbi1pZD0ke3Nlc3Npb25JZH1gO1xuXG5leHBvcnQgY29uc3QgYnVpbGRDb25uZWN0VVJMID0gKGxvZ2luSWQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICAgIGAke0NPTk5FQ1RfQkFTRV9VUkx9P2xvZ2luLWlkPSR7bG9naW5JZH1gO1xuXG5leHBvcnQgY29uc3Qgb3BlblVSTCA9IGFzeW5jICh1cmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGlmICghc2hvdWxkT3BlbkJyb3dzZXIoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3Qge2RlZmF1bHQ6IG9wZW59ID0gYXdhaXQgaW1wb3J0KCdvcGVuJyk7XG4gICAgICAgIGF3YWl0IG9wZW4odXJsKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gQnJvd3NlciBvcGVuaW5nIGlzIGJlc3QtZWZmb3J0IOKAlCBuby1vcCBvbiBmYWlsdXJlXG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG9wZW5TZXNzaW9uVVJMID0gb3BlblVSTDtcbiJdfQ==
@@ -1,24 +0,0 @@
1
- import type { Pool } from 'pg';
2
- import type { TDatabaseIntrospection } from '@dbctx/core';
3
- import type { TStore } from '../store.mjs';
4
- export type TSensitiveMask = Readonly<Record<string, readonly string[]>>;
5
- export type TTableSampleColumn = {
6
- readonly strategy: 'distinct' | 'random';
7
- readonly count: number;
8
- readonly values: readonly string[];
9
- };
10
- export type TTableSamples = {
11
- readonly table: string;
12
- readonly sampled_at: string;
13
- readonly columns: Readonly<Record<string, TTableSampleColumn>>;
14
- readonly excluded_columns: readonly string[];
15
- };
16
- export type TTableSampleEvent = {
17
- readonly tableName: string;
18
- readonly samples: TTableSamples;
19
- };
20
- export declare const loadSensitiveMask: (path: string) => Promise<TSensitiveMask>;
21
- export declare const prepareOutputDir: (dirPath: string, allowOverwrite: boolean, store: TStore) => Promise<boolean>;
22
- export declare const persistTableSamplesToDir: (outputDir: string, event: TTableSampleEvent, indexAccumulator: Record<string, string>) => Promise<void>;
23
- export declare const runSampling: (pool: Pool, introspection: TDatabaseIntrospection, store: TStore, mask: TSensitiveMask, tableFilter?: ReadonlySet<string>) => AsyncGenerator<TTableSampleEvent>;
24
- //# sourceMappingURL=sample.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sample.d.mts","sourceRoot":"./src/","sources":["app/sample.mts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAC7B,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAazC,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;AAEzE,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,QAAQ,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC/D,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACnC,CAAC;AAkFF,eAAO,MAAM,iBAAiB,GAC1B,MAAM,MAAM,KACb,OAAO,CAAC,cAAc,CAIxB,CAAC;AAmBF,eAAO,MAAM,gBAAgB,GACzB,SAAS,MAAM,EACf,gBAAgB,OAAO,EACvB,OAAO,MAAM,KACd,OAAO,CAAC,OAAO,CAsDjB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACjC,WAAW,MAAM,EACjB,OAAO,iBAAiB,EACxB,kBAAkB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KACzC,OAAO,CAAC,IAAI,CAcd,CAAC;AAEF,eAAO,MAAM,WAAW,GACpB,MAAM,IAAI,EACV,eAAe,sBAAsB,EACrC,OAAO,MAAM,EACb,MAAM,cAAc,EACpB,cAAc,WAAW,CAAC,MAAM,CAAC,KAClC,cAAc,CAAC,iBAAiB,CA0LlC,CAAC"}