@intecoag/inteco-cli 1.11.8 → 1.12.0-beta.2

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 (272) hide show
  1. package/README.md +13 -1
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +158 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/modules/adbBridge.d.ts +2 -0
  7. package/dist/modules/adbBridge.d.ts.map +1 -0
  8. package/dist/modules/adbBridge.js +40 -0
  9. package/dist/modules/adbBridge.js.map +1 -0
  10. package/dist/modules/adbBridge.test.d.ts +2 -0
  11. package/dist/modules/adbBridge.test.d.ts.map +1 -0
  12. package/dist/modules/adbBridge.test.js +39 -0
  13. package/dist/modules/adbBridge.test.js.map +1 -0
  14. package/dist/modules/adbIntentSender.d.ts +2 -0
  15. package/dist/modules/adbIntentSender.d.ts.map +1 -0
  16. package/dist/modules/adbIntentSender.js +67 -0
  17. package/dist/modules/adbIntentSender.js.map +1 -0
  18. package/dist/modules/adbIntentSender.test.d.ts +2 -0
  19. package/dist/modules/adbIntentSender.test.d.ts.map +1 -0
  20. package/dist/modules/adbIntentSender.test.js +48 -0
  21. package/dist/modules/adbIntentSender.test.js.map +1 -0
  22. package/dist/modules/azureSync.d.ts +16 -0
  23. package/dist/modules/azureSync.d.ts.map +1 -0
  24. package/{src → dist}/modules/azureSync.js +55 -136
  25. package/dist/modules/azureSync.js.map +1 -0
  26. package/dist/modules/azureSync.test.d.ts +2 -0
  27. package/dist/modules/azureSync.test.d.ts.map +1 -0
  28. package/dist/modules/azureSync.test.js +69 -0
  29. package/dist/modules/azureSync.test.js.map +1 -0
  30. package/dist/modules/bundleProduct.d.ts +2 -0
  31. package/dist/modules/bundleProduct.d.ts.map +1 -0
  32. package/{src → dist}/modules/bundleProduct.js +41 -80
  33. package/dist/modules/bundleProduct.js.map +1 -0
  34. package/dist/modules/bundleProduct.test.d.ts +2 -0
  35. package/dist/modules/bundleProduct.test.d.ts.map +1 -0
  36. package/dist/modules/bundleProduct.test.js +75 -0
  37. package/dist/modules/bundleProduct.test.js.map +1 -0
  38. package/dist/modules/changelog.d.ts +3 -0
  39. package/dist/modules/changelog.d.ts.map +1 -0
  40. package/dist/modules/changelog.js +45 -0
  41. package/dist/modules/changelog.js.map +1 -0
  42. package/dist/modules/changelog.test.d.ts +2 -0
  43. package/dist/modules/changelog.test.d.ts.map +1 -0
  44. package/dist/modules/changelog.test.js +33 -0
  45. package/dist/modules/changelog.test.js.map +1 -0
  46. package/dist/modules/configMutation.d.ts +5 -0
  47. package/dist/modules/configMutation.d.ts.map +1 -0
  48. package/{src → dist}/modules/configMutation.js +57 -104
  49. package/dist/modules/configMutation.js.map +1 -0
  50. package/dist/modules/configMutation.test.d.ts +2 -0
  51. package/dist/modules/configMutation.test.d.ts.map +1 -0
  52. package/dist/modules/configMutation.test.js +28 -0
  53. package/dist/modules/configMutation.test.js.map +1 -0
  54. package/dist/modules/csvMerger.d.ts +2 -0
  55. package/dist/modules/csvMerger.d.ts.map +1 -0
  56. package/dist/modules/csvMerger.js +104 -0
  57. package/dist/modules/csvMerger.js.map +1 -0
  58. package/dist/modules/csvMerger.test.d.ts +2 -0
  59. package/dist/modules/csvMerger.test.d.ts.map +1 -0
  60. package/dist/modules/csvMerger.test.js +76 -0
  61. package/dist/modules/csvMerger.test.js.map +1 -0
  62. package/dist/modules/deleteDB.d.ts +2 -0
  63. package/dist/modules/deleteDB.d.ts.map +1 -0
  64. package/dist/modules/deleteDB.js +75 -0
  65. package/dist/modules/deleteDB.js.map +1 -0
  66. package/dist/modules/deleteDB.test.d.ts +2 -0
  67. package/dist/modules/deleteDB.test.d.ts.map +1 -0
  68. package/dist/modules/deleteDB.test.js +78 -0
  69. package/dist/modules/deleteDB.test.js.map +1 -0
  70. package/dist/modules/dumpDB.d.ts +3 -0
  71. package/dist/modules/dumpDB.d.ts.map +1 -0
  72. package/{src → dist}/modules/dumpDB.js +64 -89
  73. package/dist/modules/dumpDB.js.map +1 -0
  74. package/dist/modules/dumpDB.test.d.ts +2 -0
  75. package/dist/modules/dumpDB.test.d.ts.map +1 -0
  76. package/dist/modules/dumpDB.test.js +104 -0
  77. package/dist/modules/dumpDB.test.js.map +1 -0
  78. package/dist/modules/dumpTableToCSV.d.ts +4 -0
  79. package/dist/modules/dumpTableToCSV.d.ts.map +1 -0
  80. package/dist/modules/dumpTableToCSV.js +135 -0
  81. package/dist/modules/dumpTableToCSV.js.map +1 -0
  82. package/dist/modules/dumpTableToCSV.test.d.ts +2 -0
  83. package/dist/modules/dumpTableToCSV.test.d.ts.map +1 -0
  84. package/dist/modules/dumpTableToCSV.test.js +15 -0
  85. package/dist/modules/dumpTableToCSV.test.js.map +1 -0
  86. package/dist/modules/extdSearch.d.ts +2 -0
  87. package/dist/modules/extdSearch.d.ts.map +1 -0
  88. package/{src → dist}/modules/extdSearch.js +60 -60
  89. package/dist/modules/extdSearch.js.map +1 -0
  90. package/dist/modules/extdSearch.test.d.ts +2 -0
  91. package/dist/modules/extdSearch.test.d.ts.map +1 -0
  92. package/dist/modules/extdSearch.test.js +114 -0
  93. package/dist/modules/extdSearch.test.js.map +1 -0
  94. package/dist/modules/githubDeploymentKey.d.ts +3 -0
  95. package/dist/modules/githubDeploymentKey.d.ts.map +1 -0
  96. package/dist/modules/githubDeploymentKey.js +241 -0
  97. package/dist/modules/githubDeploymentKey.js.map +1 -0
  98. package/dist/modules/githubDeploymentKey.test.d.ts +2 -0
  99. package/dist/modules/githubDeploymentKey.test.d.ts.map +1 -0
  100. package/dist/modules/githubDeploymentKey.test.js +50 -0
  101. package/dist/modules/githubDeploymentKey.test.js.map +1 -0
  102. package/dist/modules/githubDeploymentKeysList.d.ts +6 -0
  103. package/dist/modules/githubDeploymentKeysList.d.ts.map +1 -0
  104. package/dist/modules/githubDeploymentKeysList.js +185 -0
  105. package/dist/modules/githubDeploymentKeysList.js.map +1 -0
  106. package/dist/modules/githubDeploymentKeysList.test.d.ts +2 -0
  107. package/dist/modules/githubDeploymentKeysList.test.d.ts.map +1 -0
  108. package/dist/modules/githubDeploymentKeysList.test.js +70 -0
  109. package/dist/modules/githubDeploymentKeysList.test.js.map +1 -0
  110. package/dist/modules/githubSecurityAdvisories.d.ts +3 -0
  111. package/dist/modules/githubSecurityAdvisories.d.ts.map +1 -0
  112. package/dist/modules/githubSecurityAdvisories.js +145 -0
  113. package/dist/modules/githubSecurityAdvisories.js.map +1 -0
  114. package/dist/modules/githubSecurityAdvisories.test.d.ts +2 -0
  115. package/dist/modules/githubSecurityAdvisories.test.d.ts.map +1 -0
  116. package/dist/modules/githubSecurityAdvisories.test.js +67 -0
  117. package/dist/modules/githubSecurityAdvisories.test.js.map +1 -0
  118. package/dist/modules/graphqlSchemaExport.d.ts +2 -0
  119. package/dist/modules/graphqlSchemaExport.d.ts.map +1 -0
  120. package/dist/modules/graphqlSchemaExport.js +59 -0
  121. package/dist/modules/graphqlSchemaExport.js.map +1 -0
  122. package/dist/modules/graphqlSchemaExport.test.d.ts +2 -0
  123. package/dist/modules/graphqlSchemaExport.test.d.ts.map +1 -0
  124. package/dist/modules/graphqlSchemaExport.test.js +61 -0
  125. package/dist/modules/graphqlSchemaExport.test.js.map +1 -0
  126. package/dist/modules/importDB.d.ts +2 -0
  127. package/dist/modules/importDB.d.ts.map +1 -0
  128. package/{src → dist}/modules/importDB.js +48 -66
  129. package/dist/modules/importDB.js.map +1 -0
  130. package/dist/modules/importDB.test.d.ts +2 -0
  131. package/dist/modules/importDB.test.d.ts.map +1 -0
  132. package/dist/modules/importDB.test.js +65 -0
  133. package/dist/modules/importDB.test.js.map +1 -0
  134. package/dist/modules/rewriteConfig.d.ts +3 -0
  135. package/dist/modules/rewriteConfig.d.ts.map +1 -0
  136. package/dist/modules/rewriteConfig.js +75 -0
  137. package/dist/modules/rewriteConfig.js.map +1 -0
  138. package/dist/modules/rewriteConfig.test.d.ts +2 -0
  139. package/dist/modules/rewriteConfig.test.d.ts.map +1 -0
  140. package/dist/modules/rewriteConfig.test.js +62 -0
  141. package/dist/modules/rewriteConfig.test.js.map +1 -0
  142. package/dist/modules/setCLIConfig.d.ts +2 -0
  143. package/dist/modules/setCLIConfig.d.ts.map +1 -0
  144. package/dist/modules/setCLIConfig.js +29 -0
  145. package/dist/modules/setCLIConfig.js.map +1 -0
  146. package/dist/modules/setCLIConfig.test.d.ts +2 -0
  147. package/dist/modules/setCLIConfig.test.d.ts.map +1 -0
  148. package/dist/modules/setCLIConfig.test.js +40 -0
  149. package/dist/modules/setCLIConfig.test.js.map +1 -0
  150. package/dist/modules/syncConfig.d.ts +4 -0
  151. package/dist/modules/syncConfig.d.ts.map +1 -0
  152. package/{src → dist}/modules/syncConfig.js +76 -129
  153. package/dist/modules/syncConfig.js.map +1 -0
  154. package/dist/modules/syncConfig.test.d.ts +2 -0
  155. package/dist/modules/syncConfig.test.d.ts.map +1 -0
  156. package/dist/modules/syncConfig.test.js +71 -0
  157. package/dist/modules/syncConfig.test.js.map +1 -0
  158. package/dist/modules/t003Rewrite.d.ts +2 -0
  159. package/dist/modules/t003Rewrite.d.ts.map +1 -0
  160. package/dist/modules/t003Rewrite.js +53 -0
  161. package/dist/modules/t003Rewrite.js.map +1 -0
  162. package/dist/modules/t003Rewrite.test.d.ts +2 -0
  163. package/dist/modules/t003Rewrite.test.d.ts.map +1 -0
  164. package/dist/modules/t003Rewrite.test.js +43 -0
  165. package/dist/modules/t003Rewrite.test.js.map +1 -0
  166. package/dist/modules/t009Search.d.ts +2 -0
  167. package/dist/modules/t009Search.d.ts.map +1 -0
  168. package/dist/modules/t009Search.js +30 -0
  169. package/dist/modules/t009Search.js.map +1 -0
  170. package/dist/modules/t009Search.test.d.ts +2 -0
  171. package/dist/modules/t009Search.test.d.ts.map +1 -0
  172. package/dist/modules/t009Search.test.js +83 -0
  173. package/dist/modules/t009Search.test.js.map +1 -0
  174. package/{src → dist}/ressources/cmds.json +3 -0
  175. package/dist/utils/azure/azure.d.ts +24 -0
  176. package/dist/utils/azure/azure.d.ts.map +1 -0
  177. package/{src → dist}/utils/azure/azure.js +14 -21
  178. package/dist/utils/azure/azure.js.map +1 -0
  179. package/dist/utils/azure/azure.test.d.ts +2 -0
  180. package/dist/utils/azure/azure.test.d.ts.map +1 -0
  181. package/dist/utils/azure/azure.test.js +98 -0
  182. package/dist/utils/azure/azure.test.js.map +1 -0
  183. package/dist/utils/config/config.d.ts +27 -0
  184. package/dist/utils/config/config.d.ts.map +1 -0
  185. package/dist/utils/config/config.js +74 -0
  186. package/dist/utils/config/config.js.map +1 -0
  187. package/dist/utils/config/config.test.d.ts +2 -0
  188. package/dist/utils/config/config.test.d.ts.map +1 -0
  189. package/dist/utils/config/config.test.js +64 -0
  190. package/dist/utils/config/config.test.js.map +1 -0
  191. package/dist/utils/db/DB.d.ts +14 -0
  192. package/dist/utils/db/DB.d.ts.map +1 -0
  193. package/dist/utils/db/DB.js +61 -0
  194. package/dist/utils/db/DB.js.map +1 -0
  195. package/dist/utils/db/DB.test.d.ts +2 -0
  196. package/dist/utils/db/DB.test.d.ts.map +1 -0
  197. package/dist/utils/db/DB.test.js +73 -0
  198. package/dist/utils/db/DB.test.js.map +1 -0
  199. package/dist/utils/fs/FS.d.ts +15 -0
  200. package/dist/utils/fs/FS.d.ts.map +1 -0
  201. package/{src → dist}/utils/fs/FS.js +31 -45
  202. package/dist/utils/fs/FS.js.map +1 -0
  203. package/dist/utils/fs/FS.test.d.ts +2 -0
  204. package/dist/utils/fs/FS.test.d.ts.map +1 -0
  205. package/dist/utils/fs/FS.test.js +124 -0
  206. package/dist/utils/fs/FS.test.js.map +1 -0
  207. package/dist/utils/github/github.d.ts +29 -0
  208. package/dist/utils/github/github.d.ts.map +1 -0
  209. package/dist/utils/github/github.js +96 -0
  210. package/dist/utils/github/github.js.map +1 -0
  211. package/dist/utils/github/github.test.d.ts +2 -0
  212. package/dist/utils/github/github.test.d.ts.map +1 -0
  213. package/dist/utils/github/github.test.js +83 -0
  214. package/dist/utils/github/github.test.js.map +1 -0
  215. package/dist/utils/shell/DatabaseShell.d.ts +77 -0
  216. package/dist/utils/shell/DatabaseShell.d.ts.map +1 -0
  217. package/{src → dist}/utils/shell/DatabaseShell.js +73 -87
  218. package/dist/utils/shell/DatabaseShell.js.map +1 -0
  219. package/dist/utils/shell/DatabaseShell.test.d.ts +2 -0
  220. package/dist/utils/shell/DatabaseShell.test.d.ts.map +1 -0
  221. package/dist/utils/shell/DatabaseShell.test.js +78 -0
  222. package/dist/utils/shell/DatabaseShell.test.js.map +1 -0
  223. package/dist/utils/shell/DatabaseShellBuilder.d.ts +67 -0
  224. package/dist/utils/shell/DatabaseShellBuilder.d.ts.map +1 -0
  225. package/{src → dist}/utils/shell/DatabaseShellBuilder.js +50 -59
  226. package/dist/utils/shell/DatabaseShellBuilder.js.map +1 -0
  227. package/dist/utils/shell/DatabaseShellBuilder.test.d.ts +2 -0
  228. package/dist/utils/shell/DatabaseShellBuilder.test.d.ts.map +1 -0
  229. package/dist/utils/shell/DatabaseShellBuilder.test.js +55 -0
  230. package/dist/utils/shell/DatabaseShellBuilder.test.js.map +1 -0
  231. package/dist/utils/shell/Shell.d.ts +30 -0
  232. package/dist/utils/shell/Shell.d.ts.map +1 -0
  233. package/{src → dist}/utils/shell/Shell.js +14 -19
  234. package/dist/utils/shell/Shell.js.map +1 -0
  235. package/dist/utils/shell/Shell.test.d.ts +2 -0
  236. package/dist/utils/shell/Shell.test.d.ts.map +1 -0
  237. package/dist/utils/shell/Shell.test.js +65 -0
  238. package/dist/utils/shell/Shell.test.js.map +1 -0
  239. package/dist/utils/shell/ShellBuilder.d.ts +60 -0
  240. package/dist/utils/shell/ShellBuilder.d.ts.map +1 -0
  241. package/{src → dist}/utils/shell/ShellBuilder.js +23 -44
  242. package/dist/utils/shell/ShellBuilder.js.map +1 -0
  243. package/dist/utils/shell/ShellBuilder.test.d.ts +2 -0
  244. package/dist/utils/shell/ShellBuilder.test.d.ts.map +1 -0
  245. package/dist/utils/shell/ShellBuilder.test.js +39 -0
  246. package/dist/utils/shell/ShellBuilder.test.js.map +1 -0
  247. package/package.json +39 -11
  248. package/.github/dependabot.yml +0 -28
  249. package/.github/workflows/publish.yml +0 -31
  250. package/.husky/commit-msg +0 -1
  251. package/.vscode/settings.json +0 -6
  252. package/commitlint.config.mjs +0 -4
  253. package/src/index.js +0 -130
  254. package/src/modules/adbBridge.js +0 -52
  255. package/src/modules/adbIntentSender.js +0 -82
  256. package/src/modules/changelog.js +0 -60
  257. package/src/modules/csvMerger.js +0 -118
  258. package/src/modules/deleteDB.js +0 -84
  259. package/src/modules/dumpTableToCSV.js +0 -154
  260. package/src/modules/githubDeploymentKey.js +0 -265
  261. package/src/modules/githubDeploymentKeysList.js +0 -199
  262. package/src/modules/githubSecurityAdvisories.js +0 -162
  263. package/src/modules/graphqlSchemaExport.js +0 -61
  264. package/src/modules/rewriteConfig.js +0 -93
  265. package/src/modules/setCLIConfig.js +0 -33
  266. package/src/modules/t003Rewrite.js +0 -64
  267. package/src/modules/t009Search.js +0 -34
  268. package/src/utils/config/config.js +0 -70
  269. package/src/utils/db/DB.js +0 -54
  270. package/src/utils/github/github.js +0 -102
  271. /package/{src → dist}/ressources/wegas_p.ico +0 -0
  272. /package/{src → dist}/utils/config/default.json +0 -0
@@ -0,0 +1,96 @@
1
+ import chalk from 'chalk';
2
+ import { execSync } from 'child_process';
3
+ /**
4
+ * Get GitHub authentication token from environment or GitHub CLI
5
+ * @returns {Promise<{token: string, authMethod: string}>} Token and authentication method
6
+ * @throws {Error} If no authentication method is available
7
+ */
8
+ export async function getGithubToken() {
9
+ let token = null;
10
+ let authMethod = null;
11
+ // 1. Try GITHUB_TOKEN environment variable
12
+ if (process.env.GITHUB_TOKEN) {
13
+ token = process.env.GITHUB_TOKEN;
14
+ authMethod = 'GITHUB_TOKEN (environment variable)';
15
+ }
16
+ // 2. Try GitHub CLI authentication if available
17
+ if (!token) {
18
+ try {
19
+ token = execSync('gh auth token', { encoding: 'utf-8' }).trim();
20
+ authMethod = 'GitHub CLI';
21
+ }
22
+ catch {
23
+ // GitHub CLI not available or not authenticated
24
+ }
25
+ }
26
+ // 3. If no token found, prompt user to authenticate
27
+ if (!token) {
28
+ console.log(chalk.yellow('No GitHub authentication found. Please authenticate with GitHub CLI:'));
29
+ console.log(chalk.gray(' Run: gh auth login'));
30
+ console.log();
31
+ throw new Error('GitHub authentication required. Please run "gh auth login" or set GITHUB_TOKEN environment variable.');
32
+ }
33
+ if (!authMethod) {
34
+ authMethod = 'unknown';
35
+ }
36
+ return { token, authMethod };
37
+ }
38
+ /**
39
+ * Make a GitHub API fetch request with proper headers and error handling
40
+ * @param {string} url - GitHub API endpoint URL
41
+ * @param {string} token - GitHub authentication token
42
+ * @returns {Promise<Response>} Fetch response
43
+ * @throws {Error} If fetch fails or returns error status
44
+ */
45
+ export async function fetchGithubAPI(url, token) {
46
+ const res = await fetch(url, {
47
+ headers: {
48
+ 'Authorization': `Bearer ${token}`,
49
+ 'Accept': 'application/vnd.github+json',
50
+ 'X-GitHub-Api-Version': '2022-11-28',
51
+ 'User-Agent': 'inteco-cli'
52
+ }
53
+ });
54
+ if (!res.ok) {
55
+ if (res.status === 404) {
56
+ throw new Error(`404: Resource not found`);
57
+ }
58
+ if (res.status === 401) {
59
+ throw new Error('401: GitHub authentication failed');
60
+ }
61
+ if (res.status === 403) {
62
+ throw new Error('403: Access forbidden (Dependabot alerts may not be enabled)');
63
+ }
64
+ throw new Error(`${res.status}: GitHub API request failed: ${res.statusText}`);
65
+ }
66
+ return res;
67
+ }
68
+ /**
69
+ * Fetch all items from a paginated GitHub API endpoint
70
+ * @param {string} baseUrl - Base GitHub API endpoint URL (without pagination params)
71
+ * @param {string} token - GitHub authentication token
72
+ * @param {number} page - Current page (default: 1)
73
+ * @param {Array} allItems - Accumulated items (default: [])
74
+ * @returns {Promise<Array>} All items from all pages
75
+ */
76
+ export async function fetchPaginatedGithubAPI(baseUrl, token, page = 1, allItems = []) {
77
+ const url = `${baseUrl}${baseUrl.includes('?') ? '&' : '?'}page=${page}&per_page=100`;
78
+ try {
79
+ const res = await fetchGithubAPI(url, token);
80
+ const items = await res.json();
81
+ if (items.length === 0) {
82
+ return allItems;
83
+ }
84
+ // Recursively fetch all pages
85
+ return fetchPaginatedGithubAPI(baseUrl, token, page + 1, [...allItems, ...items]);
86
+ }
87
+ catch (error) {
88
+ if (page === 1) {
89
+ // Only throw on first page - error getting initial data
90
+ throw error;
91
+ }
92
+ // On subsequent pages, return what we have so far
93
+ return allItems;
94
+ }
95
+ }
96
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/utils/github/github.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=github.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.test.d.ts","sourceRoot":"","sources":["../../../src/utils/github/github.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,83 @@
1
+ import { beforeEach, describe, expect, it, vi } from "vitest";
2
+ const childProcessMocks = vi.hoisted(() => ({
3
+ execSync: vi.fn()
4
+ }));
5
+ vi.mock("child_process", () => ({
6
+ execSync: childProcessMocks.execSync
7
+ }));
8
+ import { fetchGithubAPI, fetchPaginatedGithubAPI, getGithubToken } from "./github.js";
9
+ function response(overrides) {
10
+ return {
11
+ ok: true,
12
+ status: 200,
13
+ statusText: "OK",
14
+ json: async () => ([]),
15
+ ...overrides
16
+ };
17
+ }
18
+ describe("github helpers", () => {
19
+ beforeEach(() => {
20
+ vi.clearAllMocks();
21
+ vi.unstubAllGlobals();
22
+ delete process.env.GITHUB_TOKEN;
23
+ });
24
+ it("uses GITHUB_TOKEN from environment", async () => {
25
+ process.env.GITHUB_TOKEN = "env-token";
26
+ const result = await getGithubToken();
27
+ expect(result).toEqual({
28
+ token: "env-token",
29
+ authMethod: "GITHUB_TOKEN (environment variable)"
30
+ });
31
+ expect(childProcessMocks.execSync).not.toHaveBeenCalled();
32
+ });
33
+ it("falls back to GitHub CLI token", async () => {
34
+ childProcessMocks.execSync.mockReturnValue("cli-token\n");
35
+ const result = await getGithubToken();
36
+ expect(childProcessMocks.execSync).toHaveBeenCalledWith("gh auth token", { encoding: "utf-8" });
37
+ expect(result).toEqual({ token: "cli-token", authMethod: "GitHub CLI" });
38
+ });
39
+ it("throws when no token is available", async () => {
40
+ childProcessMocks.execSync.mockImplementation(() => {
41
+ throw new Error("not authenticated");
42
+ });
43
+ await expect(getGithubToken()).rejects.toThrow("GitHub authentication required");
44
+ });
45
+ it("fetchGithubAPI sends expected headers", async () => {
46
+ const fetchMock = vi.fn().mockResolvedValue(response({}));
47
+ vi.stubGlobal("fetch", fetchMock);
48
+ await fetchGithubAPI("https://api.github.test/repos/a/b", "abc");
49
+ expect(fetchMock).toHaveBeenCalledWith("https://api.github.test/repos/a/b", expect.objectContaining({
50
+ headers: expect.objectContaining({
51
+ Authorization: "Bearer abc",
52
+ Accept: "application/vnd.github+json",
53
+ "X-GitHub-Api-Version": "2022-11-28",
54
+ "User-Agent": "inteco-cli"
55
+ })
56
+ }));
57
+ });
58
+ it("maps 404 from fetchGithubAPI to explicit message", async () => {
59
+ vi.stubGlobal("fetch", vi.fn().mockResolvedValue(response({ ok: false, status: 404, statusText: "Not Found" })));
60
+ await expect(fetchGithubAPI("https://api.github.test/repos/a/b", "abc")).rejects.toThrow("404: Resource not found");
61
+ });
62
+ it("fetchPaginatedGithubAPI collects all pages", async () => {
63
+ const fetchMock = vi
64
+ .fn()
65
+ .mockResolvedValueOnce(response({ json: async () => [{ id: 1 }, { id: 2 }] }))
66
+ .mockResolvedValueOnce(response({ json: async () => [{ id: 3 }] }))
67
+ .mockResolvedValueOnce(response({ json: async () => [] }));
68
+ vi.stubGlobal("fetch", fetchMock);
69
+ const result = await fetchPaginatedGithubAPI("https://api.github.test/repos/a/b/issues", "abc");
70
+ expect(result).toEqual([{ id: 1 }, { id: 2 }, { id: 3 }]);
71
+ expect(fetchMock).toHaveBeenCalledTimes(3);
72
+ });
73
+ it("returns collected items when a later page fails", async () => {
74
+ const fetchMock = vi
75
+ .fn()
76
+ .mockResolvedValueOnce(response({ json: async () => [{ id: 1 }] }))
77
+ .mockResolvedValueOnce(response({ ok: false, status: 500, statusText: "Boom" }));
78
+ vi.stubGlobal("fetch", fetchMock);
79
+ const result = await fetchPaginatedGithubAPI("https://api.github.test/repos/a/b/issues", "abc");
80
+ expect(result).toEqual([{ id: 1 }]);
81
+ });
82
+ });
83
+ //# sourceMappingURL=github.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.test.js","sourceRoot":"","sources":["../../../src/utils/github/github.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { Shell } from "./Shell.js";
2
+ import { type TableConfig, type TableSource } from "./DatabaseShellBuilder.js";
3
+ export type TableRow = Record<string, unknown> & {
4
+ table: string;
5
+ };
6
+ type EditableColumn = {
7
+ title: string;
8
+ column: string;
9
+ default?: string;
10
+ };
11
+ export declare class DatabaseShell {
12
+ currentTables: string[];
13
+ currentConfig: TableConfig | null;
14
+ db: string | null;
15
+ data: TableRow[];
16
+ tables: TableSource[];
17
+ shell: Shell | null;
18
+ constructor();
19
+ /**
20
+ * Configures the database shell and runs the underlying shell
21
+ */
22
+ run(): Promise<void>;
23
+ private requireDb;
24
+ /**
25
+ * Searches for a string based on the current shell state and prints the results to the console.
26
+ * @param {string} query The search string
27
+ */
28
+ executeSearch(query: string): void;
29
+ deleteRow(row: TableRow): Promise<void>;
30
+ insertRow(row: TableRow): Promise<void>;
31
+ updateRow(row: TableRow, whereRow: TableRow): Promise<void>;
32
+ editRow(data: TableRow, columns: EditableColumn[], requiredFields: string[], optionalFields: string[]): Promise<TableRow | null>;
33
+ selectRow(columns: EditableColumn[], requiredColumns: string[]): Promise<TableRow | null>;
34
+ /**
35
+ * Loads the rows from the currently active tables into the shell
36
+ * @private
37
+ */
38
+ loadData(): Promise<void>;
39
+ /**
40
+ * Loads all rows from a table of the currently active database
41
+ * @param {string} table The table name
42
+ * @returns {Promise<any>}
43
+ * @private
44
+ */
45
+ getTableData(table: string): Promise<Array<Record<string, unknown>>>;
46
+ /**
47
+ * Removes the table name prefix from the individual rows
48
+ * @param {object[]} entries The rows of the table
49
+ * @param {string} tableName The name of the table where the data is from
50
+ * @returns {object[]}
51
+ * @private
52
+ */
53
+ cleanData(entries: Array<Record<string, unknown>>, tableName: string): TableRow[];
54
+ /**
55
+ * Executes a query on the currently loaded table using fuzzysearch
56
+ * @param {string} query The search query
57
+ * @returns {object[]}
58
+ * @private
59
+ */
60
+ fuzzySearch(query: string): Array<TableRow & {
61
+ score?: number;
62
+ }>;
63
+ /**
64
+ * Renders a table in the console using the currently active config
65
+ * @param {object[]} tableData The table data to render
66
+ * @private
67
+ */
68
+ renderTable(tableData: Array<TableRow & {
69
+ score?: number;
70
+ }>): void;
71
+ /**
72
+ * Prompts the user for the database and search type
73
+ */
74
+ configure(): Promise<void>;
75
+ }
76
+ export {};
77
+ //# sourceMappingURL=DatabaseShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseShell.d.ts","sourceRoot":"","sources":["../../../src/utils/shell/DatabaseShell.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMnC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE/E,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AACnE,KAAK,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,qBAAa,aAAa;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;;IA2CpB;;OAEG;IACG,GAAG;IAQT,OAAO,CAAC,SAAS;IAQjB;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5B,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvC,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAuBhI,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAyC/F;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAK1E;;;;;;OAMG;IACH,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE;IAajF;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAchE;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAalE;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAwBnC"}
@@ -1,13 +1,15 @@
1
1
  import chalk from "chalk";
2
- import { Shell } from "./shell.js";
3
2
  import { DB } from "../db/DB.js";
4
3
  import fuzzysort from "fuzzysort";
5
4
  import CliTable3 from "cli-table3";
6
5
  import prompts from "prompts";
7
- import { TableConfig } from "./DatabaseShellBuilder.js";
8
-
9
6
  export class DatabaseShell {
10
-
7
+ currentTables;
8
+ currentConfig;
9
+ db;
10
+ data;
11
+ tables;
12
+ shell;
11
13
  constructor() {
12
14
  /**
13
15
  * The currently active tables to load the data from
@@ -15,48 +17,50 @@ export class DatabaseShell {
15
17
  * @private
16
18
  */
17
19
  this.currentTables = [];
18
-
19
20
  /**
20
21
  * The currently active config
21
22
  * @type {TableConfig}
22
23
  */
23
24
  this.currentConfig = null;
24
-
25
25
  /**
26
26
  * The active database
27
27
  * @type {string}
28
28
  * @private
29
29
  */
30
30
  this.db = null;
31
-
32
31
  /**
33
32
  * The cached data of the active table
34
33
  * @type {object[]}
35
34
  * @private
36
35
  */
37
36
  this.data = [];
38
-
39
37
  /**
40
38
  * The tables the user can select to use
41
39
  * @type {object[]}
42
40
  */
43
41
  this.tables = [];
44
-
45
42
  /**
46
43
  * The underlying shell to handle user input
47
44
  * @type {Shell}
48
45
  */
49
46
  this.shell = null;
50
47
  }
51
-
52
48
  /**
53
49
  * Configures the database shell and runs the underlying shell
54
50
  */
55
51
  async run() {
56
52
  await this.configure();
53
+ if (!this.shell) {
54
+ throw new Error("Shell is not initialized");
55
+ }
57
56
  await this.shell.run();
58
57
  }
59
-
58
+ requireDb() {
59
+ if (!this.db) {
60
+ throw new Error("Database is not configured");
61
+ }
62
+ return this.db;
63
+ }
60
64
  /**
61
65
  * Searches for a string based on the current shell state and prints the results to the console.
62
66
  * @param {string} query The search string
@@ -65,111 +69,95 @@ export class DatabaseShell {
65
69
  const results = this.fuzzySearch(query);
66
70
  this.renderTable(results);
67
71
  }
68
-
69
72
  async deleteRow(row) {
70
73
  const table = row.table;
71
- const where = Object.entries(row).filter(([k, v]) => k !== "table").map(([k, v]) => `\`${table}_${k}\`='${String(v).replaceAll("'", "\\'")}'`).join(' AND ');
74
+ const where = Object.entries(row).filter(([k]) => k !== "table").map(([k, v]) => `\`${table}_${k}\`='${String(v).replaceAll("'", "\\'")}'`).join(' AND ');
72
75
  const sql = `DELETE FROM \`${table}\` WHERE ${where}`;
73
- await DB.executeQueryOnDB(sql, this.db);
76
+ await DB.executeQueryOnDB(sql, this.requireDb());
74
77
  await this.loadData();
75
78
  }
76
-
77
79
  async insertRow(row) {
78
80
  const table = row.table;
79
- const kvPairs = Object.entries(row).filter(([k, v]) => k !== "table");
80
- const sql = `INSERT INTO \`${table}\` (${kvPairs.map(([k, v]) => `\`${table}_${k}\``).join(', ')}) VALUES (${kvPairs.map(([k, v]) => `'${String(v).replaceAll("'", "\\'")}'`)});`;
81
- await DB.executeQueryOnDB(sql, this.db);
81
+ const kvPairs = Object.entries(row).filter(([k]) => k !== "table");
82
+ const sql = `INSERT INTO \`${table}\` (${kvPairs.map(([k]) => `\`${table}_${k}\``).join(', ')}) VALUES (${kvPairs.map(([, v]) => `'${String(v).replaceAll("'", "\\'")}'`)});`;
83
+ await DB.executeQueryOnDB(sql, this.requireDb());
82
84
  await this.loadData();
83
85
  }
84
-
85
86
  async updateRow(row, whereRow) {
86
87
  const table = whereRow.table;
87
- const set = Object.entries(row).filter(([k, v]) => k !== "table").map(([k, v]) => `\`${table}_${k}\`='${String(v).replaceAll("'", "\\'")}'`).join(', ');
88
- const where = Object.entries(whereRow).filter(([k, v]) => k !== "table").map(([k, v]) => `\`${table}_${k}\`='${String(v).replaceAll("'", "\\'")}'`).join(' AND ');
88
+ const set = Object.entries(row).filter(([k]) => k !== "table").map(([k, v]) => `\`${table}_${k}\`='${String(v).replaceAll("'", "\\'")}'`).join(', ');
89
+ const where = Object.entries(whereRow).filter(([k]) => k !== "table").map(([k, v]) => `\`${table}_${k}\`='${String(v).replaceAll("'", "\\'")}'`).join(' AND ');
89
90
  const sql = `UPDATE \`${table}\` SET ${set} WHERE ${where};`;
90
- await DB.executeQueryOnDB(sql, this.db);
91
+ await DB.executeQueryOnDB(sql, this.requireDb());
91
92
  await this.loadData();
92
93
  }
93
-
94
94
  async editRow(data, columns, requiredFields, optionalFields) {
95
95
  let cancelled = false;
96
96
  const questions = [...requiredFields, ...optionalFields]
97
- .filter(f => Object.hasOwn(data, f))
98
- .map(f => ({
99
- type: 'text',
100
- message: columns.find(c => c.column === f).title,
101
- name: f,
102
- initial: columns.find(c => c.column === f).default ?? data[f]}));
103
-
97
+ .filter((f) => Object.hasOwn(data, f))
98
+ .map((f) => ({
99
+ type: 'text',
100
+ message: columns.find((c) => c.column === f)?.title ?? f,
101
+ name: f,
102
+ initial: String(columns.find((c) => c.column === f)?.default ?? data[f] ?? "")
103
+ }));
104
104
  const responses = await prompts(questions, { onCancel: () => { cancelled = true; return false; } });
105
-
106
- if(cancelled) return null;
107
-
105
+ if (cancelled)
106
+ return null;
108
107
  const newData = {
109
108
  ...data,
110
109
  ...responses
111
110
  };
112
-
113
-
114
111
  return newData;
115
112
  }
116
-
117
113
  async selectRow(columns, requiredColumns) {
118
114
  let cancelled = false;
119
- const questions = requiredColumns.map(f => ({
120
- type: 'text',
121
- message: columns.find(c => c.column === f).title,
122
- name: f,
123
- initial: columns.find(c => c.column === f).default
124
- }));
125
-
115
+ const questions = requiredColumns.map((f) => ({
116
+ type: 'text',
117
+ message: columns.find((c) => c.column === f)?.title ?? f,
118
+ name: f,
119
+ initial: columns.find((c) => c.column === f)?.default
120
+ }));
126
121
  const responses = await prompts(questions, { onCancel: () => { cancelled = true; return false; } });
127
- if(cancelled) return null;
128
- const results = this.data.filter(d => Object.entries(responses).every(([k, v]) => d[k] == v));
129
-
130
- if(results.length == 0) {
122
+ if (cancelled)
123
+ return null;
124
+ const results = this.data.filter((d) => Object.entries(responses).every(([k, v]) => d[k] == v));
125
+ if (results.length == 0) {
131
126
  console.log(chalk.red("No results found."));
132
127
  return null;
133
128
  }
134
-
135
- if(results.length > 1) {
129
+ if (results.length > 1) {
136
130
  console.log(chalk.red("Multiple results found. Please select one from the list..."));
137
131
  const selection = await prompts({
138
132
  type: 'autocomplete',
139
- choices: results.map(r => ({
133
+ choices: results.map((r) => ({
140
134
  title: Object.entries(r)
141
- .filter(([k, v]) => k === "table" || columns.some(c => c.column === k))
142
- .map(([k, v]) => `${k === "table" ? "Table" : columns.find(c => c.column === k).title}: ${v}`)
135
+ .filter(([k]) => k === "table" || columns.some((c) => c.column === k))
136
+ .map(([k, v]) => `${k === "table" ? "Table" : columns.find((c) => c.column === k)?.title ?? k}: ${v}`)
143
137
  .join(", "),
144
138
  value: r
145
139
  })),
146
140
  message: "Select Row",
147
141
  name: 'result'
148
142
  }, { onCancel: () => { cancelled = true; return false; } });
149
-
150
- if(cancelled) return null;
151
-
152
- return selection.result;
143
+ if (cancelled)
144
+ return null;
145
+ return selection.result ?? null;
153
146
  }
154
-
155
- return results[0];
147
+ return results[0] ?? null;
156
148
  }
157
-
158
149
  /**
159
150
  * Loads the rows from the currently active tables into the shell
160
151
  * @private
161
152
  */
162
153
  async loadData() {
163
154
  const data = [];
164
-
165
- for(let i = 0; i < this.currentTables.length; i++) {
155
+ for (let i = 0; i < this.currentTables.length; i++) {
166
156
  const tableData = await this.getTableData(this.currentTables[i]);
167
157
  data.push(...this.cleanData(tableData, this.currentTables[i]));
168
158
  }
169
-
170
159
  this.data = data;
171
160
  }
172
-
173
161
  /**
174
162
  * Loads all rows from a table of the currently active database
175
163
  * @param {string} table The table name
@@ -178,9 +166,8 @@ export class DatabaseShell {
178
166
  */
179
167
  async getTableData(table) {
180
168
  const query = `SELECT * FROM ${table};`;
181
- return await DB.executeQueryOnDB(query, this.db);
169
+ return await DB.executeQueryOnDB(query, this.requireDb());
182
170
  }
183
-
184
171
  /**
185
172
  * Removes the table name prefix from the individual rows
186
173
  * @param {object[]} entries The rows of the table
@@ -189,18 +176,14 @@ export class DatabaseShell {
189
176
  * @private
190
177
  */
191
178
  cleanData(entries, tableName) {
192
- return entries.map(entry => {
193
- const stripped = Object.fromEntries(
194
- Object.entries(entry).map(([k, v]) => [
195
- k.replace(new RegExp(`^${tableName}_`), ''),
196
- v
197
- ])
198
- );
199
-
179
+ return entries.map((entry) => {
180
+ const stripped = Object.fromEntries(Object.entries(entry).map(([k, v]) => [
181
+ k.replace(new RegExp(`^${tableName}_`), ''),
182
+ v
183
+ ]));
200
184
  return { ...stripped, table: tableName };
201
185
  });
202
186
  }
203
-
204
187
  /**
205
188
  * Executes a query on the currently loaded table using fuzzysearch
206
189
  * @param {string} query The search query
@@ -208,53 +191,56 @@ export class DatabaseShell {
208
191
  * @private
209
192
  */
210
193
  fuzzySearch(query) {
211
- if(!query) return this.data.slice(0, 1000);
212
-
194
+ if (!query)
195
+ return this.data.slice(0, 1000);
196
+ if (!this.currentConfig) {
197
+ return this.data.slice(0, 1000);
198
+ }
213
199
  return fuzzysort.go(query, this.data, {
214
200
  keys: this.currentConfig.searchKeys,
215
201
  limit: 1000,
216
202
  threshold: this.currentConfig.threshold
217
- }).map(r => ({ ...r.obj, score: r.score }));
203
+ }).map((r) => ({ ...r.obj, score: r.score }));
218
204
  }
219
-
220
205
  /**
221
206
  * Renders a table in the console using the currently active config
222
207
  * @param {object[]} tableData The table data to render
223
208
  * @private
224
209
  */
225
210
  renderTable(tableData) {
226
- const table = new CliTable3({ head: this.currentConfig.tableHeader });
227
- tableData.forEach(row => {
228
- table.push(this.currentConfig.tableFormatter(row));
211
+ if (!this.currentConfig) {
212
+ return;
213
+ }
214
+ const currentConfig = this.currentConfig;
215
+ const table = new CliTable3({ head: currentConfig.tableHeader });
216
+ tableData.forEach((row) => {
217
+ table.push(currentConfig.tableFormatter(row));
229
218
  });
230
219
  console.log(table.toString());
231
220
  }
232
-
233
221
  /**
234
222
  * Prompts the user for the database and search type
235
223
  */
236
224
  async configure() {
237
225
  console.log();
238
226
  const databaseNames = await DB.getDatabaseNames();
239
-
240
227
  const results = await prompts([
241
228
  {
242
229
  type: 'autocomplete',
243
230
  name: 'dbName',
244
231
  message: 'DB-Name?',
245
- choices: databaseNames.map(db => ({ title: db.name }))
232
+ choices: databaseNames.map((db) => ({ title: db.name }))
246
233
  },
247
234
  {
248
235
  type: 'select',
249
236
  name: 'tables',
250
237
  message: 'Search-Type?',
251
- choices: this.tables.map(t => ({ title: t.name, value: t.tables }))
238
+ choices: this.tables.map((t) => ({ title: t.name, value: t.tables }))
252
239
  }
253
240
  ]);
254
-
255
241
  this.db = results.dbName;
256
242
  this.currentTables = results.tables;
257
-
258
243
  await this.loadData();
259
244
  }
260
245
  }
246
+ //# sourceMappingURL=DatabaseShell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseShell.js","sourceRoot":"","sources":["../../../src/utils/shell/DatabaseShell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DatabaseShell.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseShell.test.d.ts","sourceRoot":"","sources":["../../../src/utils/shell/DatabaseShell.test.ts"],"names":[],"mappings":""}