@credibledata/cred-cli 0.0.103 → 0.0.105

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 (430) hide show
  1. package/README.md +106 -1
  2. package/dist/agent-contract.spec.js +548 -0
  3. package/dist/agent-contract.spec.js.map +1 -0
  4. package/dist/browser.js +72 -0
  5. package/dist/browser.js.map +1 -0
  6. package/dist/browser.spec.js +125 -0
  7. package/dist/browser.spec.js.map +1 -0
  8. package/dist/client/api.js +4137 -1159
  9. package/dist/client/api.js.map +1 -1
  10. package/dist/client-codeassist/api.js +476 -0
  11. package/dist/client-codeassist/api.js.map +1 -0
  12. package/dist/client-codeassist/base.js +69 -0
  13. package/dist/client-codeassist/base.js.map +1 -0
  14. package/dist/client-codeassist/common.js +162 -0
  15. package/dist/client-codeassist/common.js.map +1 -0
  16. package/dist/client-codeassist/configuration.js +44 -0
  17. package/dist/client-codeassist/configuration.js.map +1 -0
  18. package/dist/client-codeassist/index.js +32 -0
  19. package/dist/client-codeassist/index.js.map +1 -0
  20. package/dist/clientconfiguration.js +17 -289
  21. package/dist/clientconfiguration.js.map +1 -1
  22. package/dist/clientconfiguration.spec.js +35 -96
  23. package/dist/clientconfiguration.spec.js.map +1 -1
  24. package/dist/commands/add.js +103 -3
  25. package/dist/commands/add.js.map +1 -1
  26. package/dist/commands/add.spec.js +113 -0
  27. package/dist/commands/add.spec.js.map +1 -0
  28. package/dist/commands/connection/createconnections.js +104 -7
  29. package/dist/commands/connection/createconnections.js.map +1 -1
  30. package/dist/commands/connection/createconnections.spec.js +35 -1
  31. package/dist/commands/connection/createconnections.spec.js.map +1 -1
  32. package/dist/commands/connection/deleteconnection.js +4 -2
  33. package/dist/commands/connection/deleteconnection.js.map +1 -1
  34. package/dist/commands/connection/deleteconnection.spec.js +6 -1
  35. package/dist/commands/connection/deleteconnection.spec.js.map +1 -1
  36. package/dist/commands/connection/listconnections.js +2 -0
  37. package/dist/commands/connection/listconnections.js.map +1 -1
  38. package/dist/commands/connection/updateconnection.js +365 -0
  39. package/dist/commands/connection/updateconnection.js.map +1 -0
  40. package/dist/commands/connection/updateconnection.spec.js +625 -0
  41. package/dist/commands/connection/updateconnection.spec.js.map +1 -0
  42. package/dist/commands/database/createdatabase.js +52 -0
  43. package/dist/commands/database/createdatabase.js.map +1 -0
  44. package/dist/commands/database/database.spec.js +267 -0
  45. package/dist/commands/database/database.spec.js.map +1 -0
  46. package/dist/commands/database/deletedatabase.js +91 -0
  47. package/dist/commands/database/deletedatabase.js.map +1 -0
  48. package/dist/commands/database/getdatabase.js +97 -0
  49. package/dist/commands/database/getdatabase.js.map +1 -0
  50. package/dist/commands/database/listdatabases.js +36 -0
  51. package/dist/commands/database/listdatabases.js.map +1 -0
  52. package/dist/commands/database/shared.js +125 -0
  53. package/dist/commands/database/shared.js.map +1 -0
  54. package/dist/commands/database/shared.spec.js +109 -0
  55. package/dist/commands/database/shared.spec.js.map +1 -0
  56. package/dist/commands/database/updatedatabase.js +39 -0
  57. package/dist/commands/database/updatedatabase.js.map +1 -0
  58. package/dist/commands/environment/createenvironment.js +59 -28
  59. package/dist/commands/environment/createenvironment.js.map +1 -1
  60. package/dist/commands/environment/createenvironment.spec.js +29 -0
  61. package/dist/commands/environment/createenvironment.spec.js.map +1 -1
  62. package/dist/commands/environment/deleteenvironment.js +3 -2
  63. package/dist/commands/environment/deleteenvironment.js.map +1 -1
  64. package/dist/commands/environment/deleteenvironment.spec.js +5 -1
  65. package/dist/commands/environment/deleteenvironment.spec.js.map +1 -1
  66. package/dist/commands/environment/getenvironment.js +1 -0
  67. package/dist/commands/environment/getenvironment.js.map +1 -1
  68. package/dist/commands/environment/listenvironments.js +40 -8
  69. package/dist/commands/environment/listenvironments.js.map +1 -1
  70. package/dist/commands/environment/listenvironments.spec.js +41 -2
  71. package/dist/commands/environment/listenvironments.spec.js.map +1 -1
  72. package/dist/commands/environment/setenvironment.js +145 -6
  73. package/dist/commands/environment/setenvironment.js.map +1 -1
  74. package/dist/commands/environment/setenvironment.spec.js +256 -8
  75. package/dist/commands/environment/setenvironment.spec.js.map +1 -1
  76. package/dist/commands/environment/updateenvironment.js +12 -8
  77. package/dist/commands/environment/updateenvironment.js.map +1 -1
  78. package/dist/commands/environment/updateenvironment.spec.js +36 -2
  79. package/dist/commands/environment/updateenvironment.spec.js.map +1 -1
  80. package/dist/commands/get.js +64 -1
  81. package/dist/commands/get.js.map +1 -1
  82. package/dist/commands/group/addmember.js +3 -1
  83. package/dist/commands/group/addmember.js.map +1 -1
  84. package/dist/commands/group/addmember.spec.js +7 -2
  85. package/dist/commands/group/addmember.spec.js.map +1 -1
  86. package/dist/commands/group/creategroup.js +2 -0
  87. package/dist/commands/group/creategroup.js.map +1 -1
  88. package/dist/commands/group/deletegroup.js +3 -1
  89. package/dist/commands/group/deletegroup.js.map +1 -1
  90. package/dist/commands/group/deletegroup.spec.js +7 -1
  91. package/dist/commands/group/deletegroup.spec.js.map +1 -1
  92. package/dist/commands/group/getgroup.js +2 -0
  93. package/dist/commands/group/getgroup.js.map +1 -1
  94. package/dist/commands/group/listgroups.js +2 -0
  95. package/dist/commands/group/listgroups.js.map +1 -1
  96. package/dist/commands/group/removemember.js +3 -1
  97. package/dist/commands/group/removemember.js.map +1 -1
  98. package/dist/commands/group/removemember.spec.js +7 -2
  99. package/dist/commands/group/removemember.spec.js.map +1 -1
  100. package/dist/commands/groupaccesstoken/deleteToken.js +2 -1
  101. package/dist/commands/groupaccesstoken/deleteToken.js.map +1 -1
  102. package/dist/commands/groupaccesstoken/groupContainer.js +2 -0
  103. package/dist/commands/groupaccesstoken/groupContainer.js.map +1 -1
  104. package/dist/commands/list.js +24 -4
  105. package/dist/commands/list.js.map +1 -1
  106. package/dist/commands/materialization/cancelrun.js +3 -1
  107. package/dist/commands/materialization/cancelrun.js.map +1 -1
  108. package/dist/commands/materialization/getindex.js +2 -0
  109. package/dist/commands/materialization/getindex.js.map +1 -1
  110. package/dist/commands/materialization/getmaterialization.js +2 -0
  111. package/dist/commands/materialization/getmaterialization.js.map +1 -1
  112. package/dist/commands/materialization/getpreaggregate.js +2 -0
  113. package/dist/commands/materialization/getpreaggregate.js.map +1 -1
  114. package/dist/commands/materialization/getrun.js +2 -0
  115. package/dist/commands/materialization/getrun.js.map +1 -1
  116. package/dist/commands/materialization/listindexes.js +2 -0
  117. package/dist/commands/materialization/listindexes.js.map +1 -1
  118. package/dist/commands/materialization/listmaterializations.js +2 -0
  119. package/dist/commands/materialization/listmaterializations.js.map +1 -1
  120. package/dist/commands/materialization/listpreaggregates.js +2 -0
  121. package/dist/commands/materialization/listpreaggregates.js.map +1 -1
  122. package/dist/commands/materialization/listruns.js +3 -1
  123. package/dist/commands/materialization/listruns.js.map +1 -1
  124. package/dist/commands/materialization/rerun.js +3 -1
  125. package/dist/commands/materialization/rerun.js.map +1 -1
  126. package/dist/commands/misc/inquirerHost.js +87 -0
  127. package/dist/commands/misc/inquirerHost.js.map +1 -0
  128. package/dist/commands/misc/inquirerHost.spec.js +91 -0
  129. package/dist/commands/misc/inquirerHost.spec.js.map +1 -0
  130. package/dist/commands/misc/login.js +348 -58
  131. package/dist/commands/misc/login.js.map +1 -1
  132. package/dist/commands/misc/login.spec.js +525 -7
  133. package/dist/commands/misc/login.spec.js.map +1 -1
  134. package/dist/commands/misc/logout.js +26 -3
  135. package/dist/commands/misc/logout.js.map +1 -1
  136. package/dist/commands/misc/logout.spec.js +52 -12
  137. package/dist/commands/misc/logout.spec.js.map +1 -1
  138. package/dist/commands/misc/resolveLoginTarget.spec.js +90 -0
  139. package/dist/commands/misc/resolveLoginTarget.spec.js.map +1 -0
  140. package/dist/commands/misc/scope.spec.js +108 -0
  141. package/dist/commands/misc/scope.spec.js.map +1 -0
  142. package/dist/commands/misc/set-access-token.js +1 -1
  143. package/dist/commands/misc/set-access-token.js.map +1 -1
  144. package/dist/commands/misc/set-access-token.spec.js +13 -2
  145. package/dist/commands/misc/set-access-token.spec.js.map +1 -1
  146. package/dist/commands/misc/setup.js +819 -0
  147. package/dist/commands/misc/setup.js.map +1 -0
  148. package/dist/commands/misc/setup.spec.js +783 -0
  149. package/dist/commands/misc/setup.spec.js.map +1 -0
  150. package/dist/commands/misc/status.js +168 -0
  151. package/dist/commands/misc/status.js.map +1 -0
  152. package/dist/commands/misc/status.spec.js +301 -0
  153. package/dist/commands/misc/status.spec.js.map +1 -0
  154. package/dist/commands/misc/token.js +57 -0
  155. package/dist/commands/misc/token.js.map +1 -0
  156. package/dist/commands/misc/token.spec.js +92 -0
  157. package/dist/commands/misc/token.spec.js.map +1 -0
  158. package/dist/commands/package/deletepackage.js +4 -2
  159. package/dist/commands/package/deletepackage.js.map +1 -1
  160. package/dist/commands/package/deletepackage.spec.js +7 -1
  161. package/dist/commands/package/deletepackage.spec.js.map +1 -1
  162. package/dist/commands/package/getpackage.js +142 -0
  163. package/dist/commands/package/getpackage.js.map +1 -0
  164. package/dist/commands/package/getpackage.spec.js +246 -0
  165. package/dist/commands/package/getpackage.spec.js.map +1 -0
  166. package/dist/commands/package/listpackages.js +2 -0
  167. package/dist/commands/package/listpackages.js.map +1 -1
  168. package/dist/commands/package/publish.archive.spec.js +570 -0
  169. package/dist/commands/package/publish.archive.spec.js.map +1 -0
  170. package/dist/commands/package/publish.js +780 -49
  171. package/dist/commands/package/publish.js.map +1 -1
  172. package/dist/commands/package/publish.spec.js +451 -8
  173. package/dist/commands/package/publish.spec.js.map +1 -1
  174. package/dist/commands/package/updatepackage.js +22 -19
  175. package/dist/commands/package/updatepackage.js.map +1 -1
  176. package/dist/commands/package/updatepackage.spec.js +36 -1
  177. package/dist/commands/package/updatepackage.spec.js.map +1 -1
  178. package/dist/commands/permission/createpermission.js +3 -1
  179. package/dist/commands/permission/createpermission.js.map +1 -1
  180. package/dist/commands/permission/deletepermission.js +6 -3
  181. package/dist/commands/permission/deletepermission.js.map +1 -1
  182. package/dist/commands/permission/getpermission.js +2 -0
  183. package/dist/commands/permission/getpermission.js.map +1 -1
  184. package/dist/commands/permission/listpermissions.js +2 -0
  185. package/dist/commands/permission/listpermissions.js.map +1 -1
  186. package/dist/commands/rm.js +21 -0
  187. package/dist/commands/rm.js.map +1 -1
  188. package/dist/commands/set.js +40 -6
  189. package/dist/commands/set.js.map +1 -1
  190. package/dist/commands/set.spec.js +123 -0
  191. package/dist/commands/set.spec.js.map +1 -0
  192. package/dist/commands/table/addtable.js +155 -0
  193. package/dist/commands/table/addtable.js.map +1 -0
  194. package/dist/commands/table/deletetable.js +45 -0
  195. package/dist/commands/table/deletetable.js.map +1 -0
  196. package/dist/commands/table/gettable.js +32 -0
  197. package/dist/commands/table/gettable.js.map +1 -0
  198. package/dist/commands/table/listtables.js +36 -0
  199. package/dist/commands/table/listtables.js.map +1 -0
  200. package/dist/commands/table/table.spec.js +304 -0
  201. package/dist/commands/table/table.spec.js.map +1 -0
  202. package/dist/commands/table/tablefile.js +195 -0
  203. package/dist/commands/table/tablefile.js.map +1 -0
  204. package/dist/commands/table/tablefile.spec.js +158 -0
  205. package/dist/commands/table/tablefile.spec.js.map +1 -0
  206. package/dist/commands/update.js +21 -0
  207. package/dist/commands/update.js.map +1 -1
  208. package/dist/commands/version/archive-unarchive-version.js +4 -2
  209. package/dist/commands/version/archive-unarchive-version.js.map +1 -1
  210. package/dist/commands/version/archive-unarchive-version.spec.js +6 -1
  211. package/dist/commands/version/archive-unarchive-version.spec.js.map +1 -1
  212. package/dist/commands/version/listversions.js +2 -0
  213. package/dist/commands/version/listversions.js.map +1 -1
  214. package/dist/common/UserGroupId.js +9 -4
  215. package/dist/common/UserGroupId.js.map +1 -1
  216. package/dist/common/UserGroupId.spec.js +5 -0
  217. package/dist/common/UserGroupId.spec.js.map +1 -1
  218. package/dist/constants.js +37 -143
  219. package/dist/constants.js.map +1 -1
  220. package/dist/index.js +487 -90
  221. package/dist/index.js.map +1 -1
  222. package/dist/logger.js +42 -9
  223. package/dist/logger.js.map +1 -1
  224. package/dist/session.js +56 -0
  225. package/dist/session.js.map +1 -0
  226. package/dist/session.spec.js +103 -0
  227. package/dist/session.spec.js.map +1 -0
  228. package/dist/setup-core/briefing.js +176 -0
  229. package/dist/setup-core/briefing.js.map +1 -0
  230. package/dist/setup-core/credstore.js +415 -0
  231. package/dist/setup-core/credstore.js.map +1 -0
  232. package/dist/setup-core/credstore.spec.js +238 -0
  233. package/dist/setup-core/credstore.spec.js.map +1 -0
  234. package/dist/setup-core/environments.js +267 -0
  235. package/dist/setup-core/environments.js.map +1 -0
  236. package/dist/setup-core/flow.e2e.js +165 -0
  237. package/dist/setup-core/flow.e2e.js.map +1 -0
  238. package/dist/setup-core/flow.js +765 -0
  239. package/dist/setup-core/flow.js.map +1 -0
  240. package/dist/setup-core/flow.spec.js +1348 -0
  241. package/dist/setup-core/flow.spec.js.map +1 -0
  242. package/dist/setup-core/folderconfig.js +283 -0
  243. package/dist/setup-core/folderconfig.js.map +1 -0
  244. package/dist/setup-core/git.js +97 -0
  245. package/dist/setup-core/git.js.map +1 -0
  246. package/dist/setup-core/host.js +77 -0
  247. package/dist/setup-core/host.js.map +1 -0
  248. package/dist/setup-core/importconnections.js +470 -0
  249. package/dist/setup-core/importconnections.js.map +1 -0
  250. package/dist/setup-core/importconnections.spec.js +594 -0
  251. package/dist/setup-core/importconnections.spec.js.map +1 -0
  252. package/dist/setup-core/liveness.js +94 -0
  253. package/dist/setup-core/liveness.js.map +1 -0
  254. package/dist/setup-core/liveness.spec.js +59 -0
  255. package/dist/setup-core/liveness.spec.js.map +1 -0
  256. package/dist/setup-core/localpublisherconfig.js +26 -0
  257. package/dist/setup-core/localpublisherconfig.js.map +1 -0
  258. package/dist/setup-core/localpublisherconfig.spec.js +29 -0
  259. package/dist/setup-core/localpublisherconfig.spec.js.map +1 -0
  260. package/dist/setup-core/mcpconfig.js +198 -0
  261. package/dist/setup-core/mcpconfig.js.map +1 -0
  262. package/dist/setup-core/mcpconfig.spec.js +205 -0
  263. package/dist/setup-core/mcpconfig.spec.js.map +1 -0
  264. package/dist/setup-core/packagemanifest.js +55 -0
  265. package/dist/setup-core/packagemanifest.js.map +1 -0
  266. package/dist/setup-core/ports.js +182 -0
  267. package/dist/setup-core/ports.js.map +1 -0
  268. package/dist/setup-core/ports.spec.js +173 -0
  269. package/dist/setup-core/ports.spec.js.map +1 -0
  270. package/dist/setup-core/publisherconfig.js +268 -0
  271. package/dist/setup-core/publisherconfig.js.map +1 -0
  272. package/dist/setup-core/publisherconfig.oracle.js +166 -0
  273. package/dist/setup-core/publisherconfig.oracle.js.map +1 -0
  274. package/dist/setup-core/publisherconfig.spec.js +277 -0
  275. package/dist/setup-core/publisherconfig.spec.js.map +1 -0
  276. package/dist/setup-core/publisherversion.js +26 -0
  277. package/dist/setup-core/publisherversion.js.map +1 -0
  278. package/dist/setup-core/readiness.spec.js +161 -0
  279. package/dist/setup-core/readiness.spec.js.map +1 -0
  280. package/dist/setup-core/readylines.js +169 -0
  281. package/dist/setup-core/readylines.js.map +1 -0
  282. package/dist/setup-core/readylines.spec.js +70 -0
  283. package/dist/setup-core/readylines.spec.js.map +1 -0
  284. package/dist/setup-core/refresh.js +348 -0
  285. package/dist/setup-core/refresh.js.map +1 -0
  286. package/dist/setup-core/refresh.spec.js +501 -0
  287. package/dist/setup-core/refresh.spec.js.map +1 -0
  288. package/dist/setup-core/skills.js +279 -0
  289. package/dist/setup-core/skills.js.map +1 -0
  290. package/dist/setup-core/skills.spec.js +334 -0
  291. package/dist/setup-core/skills.spec.js.map +1 -0
  292. package/dist/setup-core/supervisor.js +879 -0
  293. package/dist/setup-core/supervisor.js.map +1 -0
  294. package/dist/setup-core/supervisor.spec.js +833 -0
  295. package/dist/setup-core/supervisor.spec.js.map +1 -0
  296. package/dist/setup-core/writefile.js +61 -0
  297. package/dist/setup-core/writefile.js.map +1 -0
  298. package/dist/setup-core/writefile.spec.js +68 -0
  299. package/dist/setup-core/writefile.spec.js.map +1 -0
  300. package/dist/utils.js +409 -3
  301. package/dist/utils.js.map +1 -1
  302. package/dist/utils.spec.js +373 -2
  303. package/dist/utils.spec.js.map +1 -1
  304. package/dist/versioncheck-refresh.js +18 -0
  305. package/dist/versioncheck-refresh.js.map +1 -0
  306. package/dist/versioncheck.js +324 -0
  307. package/dist/versioncheck.js.map +1 -0
  308. package/dist/versioncheck.spec.js +587 -0
  309. package/dist/versioncheck.spec.js.map +1 -0
  310. package/node_modules/@credibledata/cli-auth/dist/index.d.ts +86 -0
  311. package/node_modules/@credibledata/cli-auth/dist/index.js +102 -0
  312. package/node_modules/@credibledata/cli-auth/package.json +19 -0
  313. package/package.json +18 -6
  314. package/.github/workflows/build.yml +0 -23
  315. package/.mocharc.json +0 -10
  316. package/.prettierignore +0 -2
  317. package/.prettierrc +0 -4
  318. package/README-DEV.md +0 -40
  319. package/coverage/coverage-summary.json +0 -40
  320. package/coverage/tmp/coverage-2152-1789496974457-0.json +0 -1
  321. package/coverage/tmp/coverage-2153-1789496954404-0.json +0 -1
  322. package/docker/Dockerfile.ci +0 -18
  323. package/docker-compose.yml +0 -18
  324. package/eslint.config.mjs +0 -45
  325. package/generate-client.sh +0 -27
  326. package/mocha.setup.ts +0 -4
  327. package/openapitools.json +0 -10
  328. package/src/client/.openapi-generator/FILES +0 -9
  329. package/src/client/.openapi-generator/VERSION +0 -1
  330. package/src/client/.openapi-generator-ignore +0 -23
  331. package/src/client/api.ts +0 -15999
  332. package/src/client/base.ts +0 -86
  333. package/src/client/common.ts +0 -150
  334. package/src/client/configuration.ts +0 -110
  335. package/src/client/git_push.sh +0 -57
  336. package/src/client/index.ts +0 -18
  337. package/src/clientconfiguration.spec.ts +0 -615
  338. package/src/clientconfiguration.ts +0 -364
  339. package/src/commands/add.ts +0 -191
  340. package/src/commands/connection/createconnections.spec.ts +0 -413
  341. package/src/commands/connection/createconnections.ts +0 -109
  342. package/src/commands/connection/deleteconnection.spec.ts +0 -189
  343. package/src/commands/connection/deleteconnection.ts +0 -57
  344. package/src/commands/connection/listconnections.spec.ts +0 -132
  345. package/src/commands/connection/listconnections.ts +0 -58
  346. package/src/commands/environment/createenvironment.spec.ts +0 -249
  347. package/src/commands/environment/createenvironment.ts +0 -73
  348. package/src/commands/environment/deleteenvironment.spec.ts +0 -152
  349. package/src/commands/environment/deleteenvironment.ts +0 -48
  350. package/src/commands/environment/getenvironment.spec.ts +0 -110
  351. package/src/commands/environment/getenvironment.ts +0 -43
  352. package/src/commands/environment/listenvironments.spec.ts +0 -123
  353. package/src/commands/environment/listenvironments.ts +0 -67
  354. package/src/commands/environment/setenvironment.spec.ts +0 -63
  355. package/src/commands/environment/setenvironment.ts +0 -14
  356. package/src/commands/environment/updateenvironment.spec.ts +0 -386
  357. package/src/commands/environment/updateenvironment.ts +0 -168
  358. package/src/commands/get.ts +0 -153
  359. package/src/commands/group/addmember.spec.ts +0 -257
  360. package/src/commands/group/addmember.ts +0 -85
  361. package/src/commands/group/creategroup.spec.ts +0 -146
  362. package/src/commands/group/creategroup.ts +0 -54
  363. package/src/commands/group/deletegroup.spec.ts +0 -120
  364. package/src/commands/group/deletegroup.ts +0 -45
  365. package/src/commands/group/getgroup.spec.ts +0 -129
  366. package/src/commands/group/getgroup.ts +0 -47
  367. package/src/commands/group/listgroups.spec.ts +0 -137
  368. package/src/commands/group/listgroups.ts +0 -45
  369. package/src/commands/group/removemember.spec.ts +0 -224
  370. package/src/commands/group/removemember.ts +0 -75
  371. package/src/commands/groupaccesstoken/createToken.spec.ts +0 -211
  372. package/src/commands/groupaccesstoken/createToken.ts +0 -72
  373. package/src/commands/groupaccesstoken/deleteToken.spec.ts +0 -147
  374. package/src/commands/groupaccesstoken/deleteToken.ts +0 -29
  375. package/src/commands/groupaccesstoken/groupContainer.ts +0 -83
  376. package/src/commands/groupaccesstoken/listTokens.spec.ts +0 -147
  377. package/src/commands/groupaccesstoken/listTokens.ts +0 -29
  378. package/src/commands/legacy.ts +0 -5
  379. package/src/commands/list.ts +0 -326
  380. package/src/commands/materialization/cancelrun.ts +0 -70
  381. package/src/commands/materialization/getindex.ts +0 -55
  382. package/src/commands/materialization/getmaterialization.ts +0 -57
  383. package/src/commands/materialization/getpreaggregate.ts +0 -58
  384. package/src/commands/materialization/getrun.ts +0 -55
  385. package/src/commands/materialization/listindexes.ts +0 -69
  386. package/src/commands/materialization/listmaterializations.ts +0 -53
  387. package/src/commands/materialization/listpreaggregates.ts +0 -74
  388. package/src/commands/materialization/listruns.ts +0 -77
  389. package/src/commands/materialization/rerun.ts +0 -123
  390. package/src/commands/misc/login.spec.ts +0 -371
  391. package/src/commands/misc/login.ts +0 -343
  392. package/src/commands/misc/logout.spec.ts +0 -32
  393. package/src/commands/misc/logout.ts +0 -9
  394. package/src/commands/misc/loopbackOAuth.ts +0 -127
  395. package/src/commands/misc/set-access-token.spec.ts +0 -95
  396. package/src/commands/misc/set-access-token.ts +0 -32
  397. package/src/commands/package/deletepackage.spec.ts +0 -164
  398. package/src/commands/package/deletepackage.ts +0 -58
  399. package/src/commands/package/listpackages.spec.ts +0 -163
  400. package/src/commands/package/listpackages.ts +0 -74
  401. package/src/commands/package/publish.spec.ts +0 -642
  402. package/src/commands/package/publish.ts +0 -236
  403. package/src/commands/package/updatepackage.spec.ts +0 -319
  404. package/src/commands/package/updatepackage.ts +0 -95
  405. package/src/commands/permission/createpermission.spec.ts +0 -507
  406. package/src/commands/permission/createpermission.ts +0 -181
  407. package/src/commands/permission/deletepermission.ts +0 -117
  408. package/src/commands/permission/getpermission.ts +0 -115
  409. package/src/commands/permission/listpermissions.ts +0 -101
  410. package/src/commands/permission/scope.ts +0 -180
  411. package/src/commands/rm.ts +0 -146
  412. package/src/commands/set.ts +0 -25
  413. package/src/commands/update.ts +0 -107
  414. package/src/commands/version/archive-unarchive-version.spec.ts +0 -456
  415. package/src/commands/version/archive-unarchive-version.ts +0 -108
  416. package/src/commands/version/listversions.spec.ts +0 -138
  417. package/src/commands/version/listversions.ts +0 -45
  418. package/src/common/UserGroupId.spec.ts +0 -115
  419. package/src/common/UserGroupId.ts +0 -137
  420. package/src/constants.spec.ts +0 -111
  421. package/src/constants.ts +0 -228
  422. package/src/index.ts +0 -378
  423. package/src/logger.spec.ts +0 -158
  424. package/src/logger.ts +0 -90
  425. package/src/polyfills/file.polyfill.ts +0 -6
  426. package/src/utils.spec.ts +0 -135
  427. package/src/utils.ts +0 -115
  428. package/src/validator.spec.ts +0 -51
  429. package/src/validator.ts +0 -44
  430. package/tsconfig.json +0 -17
@@ -0,0 +1,365 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __rest = (this && this.__rest) || function (s, e) {
12
+ var t = {};
13
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
+ t[p] = s[p];
15
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
+ t[p[i]] = s[p[i]];
19
+ }
20
+ return t;
21
+ };
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.updateConnections = exports.UpdateFileError = void 0;
27
+ exports.mergeConnectionUpdate = mergeConnectionUpdate;
28
+ const fs_1 = __importDefault(require("fs"));
29
+ const api_1 = require("../../client/api");
30
+ const configuration_1 = require("../../client/configuration");
31
+ const clientconfiguration_1 = require("../../clientconfiguration");
32
+ const logger_1 = require("../../logger");
33
+ const utils_1 = require("../../utils");
34
+ const connectionsApi = new api_1.ConnectionsApi(new configuration_1.Configuration());
35
+ /** A file the command refuses to apply as written; the message says the fix. */
36
+ class UpdateFileError extends Error {
37
+ }
38
+ exports.UpdateFileError = UpdateFileError;
39
+ /**
40
+ * The connection to send: the stored one with the file's fields laid over it.
41
+ *
42
+ * The API's update replaces the whole connection, so a file holding only the
43
+ * new `serviceAccountKeyJson` would clear the project id and everything else
44
+ * if sent as it is. Merged here instead, all the way down: a nested object
45
+ * (a DuckLake `catalog`, a postgres `proxy.ssh`) keeps the stored fields the
46
+ * file leaves out, and a list of named entries (a DuckDB connection's
47
+ * `attachedDatabases`) is matched by `name`, so an entry the file does not
48
+ * mention is kept, in its stored position, and an empty list changes nothing.
49
+ * Any other list (`includeTables`) is replaced whole. A value or a list of
50
+ * values set to null is cleared. A value the file repeats is not a change. Nothing else can be removed this way, a
51
+ * block or an attached database included; that takes the app.
52
+ *
53
+ * A file the merge could only apply by dropping or keeping something the user
54
+ * did not ask for is refused instead: a field this command does not change,
55
+ * another type's block, a changed `type`, a list entry without a `name`, a
56
+ * value of a different shape than the stored one, a blank where the read has
57
+ * nothing (a secret, which the server keeps), or tables that would not be
58
+ * indexed the way the file implies.
59
+ *
60
+ * Blank values are left out: the server keeps a stored secret when its field
61
+ * is omitted, and reads never return secrets, so echoing the read back must
62
+ * not send them as empty.
63
+ */
64
+ function mergeConnectionUpdate(stored, changes) {
65
+ const type = stored.type;
66
+ const connectionName = `'${stored.name}'`;
67
+ if (changes.proxy !== undefined && type !== "postgres") {
68
+ throw new UpdateFileError(`${connectionName} is a ${type} connection, and only postgres connections take a proxy. Fix: remove "proxy" from the file.`);
69
+ }
70
+ // The fields a user configures. Everything else a read returns (indexing
71
+ // status, withheldFields, configEtag, ...) is the server's to set.
72
+ const editable = [
73
+ `${type}Connection`,
74
+ "includeTables",
75
+ "excludeTables",
76
+ "excludeAllTables",
77
+ "queryMetadata",
78
+ // Only postgres is tunnelled.
79
+ ...(type === "postgres" ? ["proxy"] : []),
80
+ ];
81
+ // Another type's block is refused in checkType(), which says which block fits.
82
+ const unknown = Object.keys(changes).filter((key) => !["name", "type", ...editable].includes(key) && !isTypeBlock(key));
83
+ if (unknown.length) {
84
+ throw new UpdateFileError(`The file sets ${unknown.join(", ")} on ${connectionName}, which this command does not change. Fix: remove ${unknown.length > 1 ? "them" : "it"}; the fields it changes are ${editable.join(", ")}.`);
85
+ }
86
+ const base = { type };
87
+ for (const key of editable)
88
+ base[key] = stored[key];
89
+ const { name: _name } = changes, fileFields = __rest(changes, ["name"]);
90
+ const changed = [];
91
+ const walk = { connectionName, path: "", changed };
92
+ checkType(base, fileFields, walk);
93
+ const merged = merge(base, fileFields, walk);
94
+ checkIndexing(stored, changes, merged, connectionName);
95
+ return {
96
+ connection: withoutBlanks(Object.assign({ name: stored.name }, merged)),
97
+ changed,
98
+ };
99
+ }
100
+ function merge(stored, change, walk) {
101
+ if (change === undefined)
102
+ return stored;
103
+ // Blank is left out of what is sent, and a read never returns a secret, so
104
+ // a blank over nothing either clears nothing or is a secret the server
105
+ // keeps. Either way the prompt would list a change that does not happen.
106
+ if (isBlank(change) && isBlank(stored)) {
107
+ throw new UpdateFileError(`The file sets ${where(walk)} to ${JSON.stringify(change)}, and the stored connection has no value there to clear: it is unset, or it is a secret, which a read never shows and the server keeps when it is left out. Fix: remove it from the file; to replace a secret, give the new value.`);
108
+ }
109
+ if (change === null) {
110
+ if (Array.isArray(stored) && stored.some(isObject)) {
111
+ throw new UpdateFileError(`The file sets ${where(walk)} to null, which would remove every entry. Fix: name only the entries to change; removing one takes the app.`);
112
+ }
113
+ if (isObject(stored)) {
114
+ throw new UpdateFileError(`The file sets ${where(walk)} to null, which would remove the whole block. Fix: set only the fields inside it that change; removing it takes the app.`);
115
+ }
116
+ walk.changed.push(walk.path);
117
+ return null;
118
+ }
119
+ const storedShape = shape(stored);
120
+ const changeShape = shape(change);
121
+ if (storedShape && storedShape !== changeShape) {
122
+ throw new UpdateFileError(`${where(walk)} is ${storedShape} in the stored connection, and the file gives ${changeShape}. Fix: give ${storedShape}, holding only what changes.`);
123
+ }
124
+ if (Array.isArray(change)) {
125
+ const named = change.some(isObject) ||
126
+ (Array.isArray(stored) && stored.some(isObject));
127
+ if (named)
128
+ return mergeNamedList(stored, change, walk);
129
+ return mergeLeaf(stored, change, walk);
130
+ }
131
+ if (isObject(change)) {
132
+ const base = isObject(stored) ? stored : {};
133
+ const merged = Object.assign({}, base);
134
+ for (const [key, value] of Object.entries(change)) {
135
+ const path = walk.path ? `${walk.path}.${key}` : key;
136
+ merged[key] = merge(base[key], value, Object.assign(Object.assign({}, walk), { path }));
137
+ }
138
+ return merged;
139
+ }
140
+ return mergeLeaf(stored, change, walk);
141
+ }
142
+ /**
143
+ * A value, or a list of values, replaces the stored one. It is a change only
144
+ * if it differs: `changed` is what the prompt lists and what decides whether
145
+ * anything is sent, and every update sent re-indexes the connection, so a file
146
+ * that repeats the stored values has to send nothing.
147
+ */
148
+ function mergeLeaf(stored, change, walk) {
149
+ const same = Array.isArray(change)
150
+ ? Array.isArray(stored) &&
151
+ stored.length === change.length &&
152
+ stored.every((value, i) => value === change[i])
153
+ : stored === change;
154
+ if (!same)
155
+ walk.changed.push(walk.path);
156
+ return change;
157
+ }
158
+ /**
159
+ * Entries are matched by `name`. One the file leaves out is kept in its stored
160
+ * position, since the server merges their secrets by position; a new one goes
161
+ * on the end.
162
+ */
163
+ function mergeNamedList(stored, change, walk) {
164
+ const storedList = stored !== null && stored !== void 0 ? stored : [];
165
+ const unnamed = change.filter((entry) => !isNamed(entry)).length;
166
+ if (unnamed) {
167
+ throw new UpdateFileError(`Every entry of ${where(walk)} in the file needs the "name" of the entry it changes or adds, and ${unnamed} ${unnamed > 1 ? "have" : "has"} none. Fix: add "name" to each; the entries the file leaves out are kept.`);
168
+ }
169
+ const names = change.map((entry) => entry.name);
170
+ const repeated = [
171
+ ...new Set(names.filter((name, i) => names.indexOf(name) !== i)),
172
+ ];
173
+ if (repeated.length) {
174
+ throw new UpdateFileError(`The file names ${repeated.join(", ")} more than once in ${where(walk)}. Fix: put each entry's changes in one place.`);
175
+ }
176
+ if (!storedList.every(isNamed)) {
177
+ throw new UpdateFileError(`The stored ${where(walk)} has entries without a "name", so the file's entries cannot be matched to them. Fix: change it in the app.`);
178
+ }
179
+ const named = storedList;
180
+ const merged = named.map((entry) => {
181
+ const match = change.find((c) => c.name === entry.name);
182
+ if (!match)
183
+ return entry;
184
+ const entryWalk = Object.assign(Object.assign({}, walk), { path: `${walk.path}[${entry.name}]` });
185
+ checkType(entry, match, entryWalk);
186
+ return merge(entry, match, entryWalk);
187
+ });
188
+ const added = change.filter((c) => !named.some((entry) => entry.name === c.name));
189
+ for (const entry of added)
190
+ walk.changed.push(`${walk.path}[${entry.name}]`);
191
+ return [...merged, ...added];
192
+ }
193
+ /**
194
+ * A typed object (the connection, an attached database) keeps its type: a
195
+ * different type is a different thing, and laying one over the other would
196
+ * keep the old type's settings and secrets beside the new ones. Called for
197
+ * those two only: elsewhere `type` is an ordinary field (a query-metadata
198
+ * tag, a proxy's kind).
199
+ */
200
+ function checkType(stored, change, walk) {
201
+ const type = stored.type;
202
+ if (typeof type !== "string")
203
+ return;
204
+ const noun = walk.path ? "entry" : "connection";
205
+ if (change.type !== undefined && change.type !== type) {
206
+ const fix = walk.path
207
+ ? "a different type is a different database; add it under another name, and remove this one in the app"
208
+ : "a different type is a different connection; create it under another name with `cred add connection`";
209
+ throw new UpdateFileError(`${where(walk)} is a ${type} ${noun}, and the file says ${String(change.type)}. Fix: ${fix}.`);
210
+ }
211
+ const own = `${type}Connection`;
212
+ const foreign = Object.keys(change).filter((key) => isTypeBlock(key) && key !== own && !isBlank(change[key]));
213
+ if (foreign.length) {
214
+ throw new UpdateFileError(`${where(walk)} is a ${type} ${noun}, so the file's ${foreign.join(", ")} does not apply to it. Fix: put the changes under ${walk.path ? `${walk.path}.` : ""}${own}.`);
215
+ }
216
+ }
217
+ /**
218
+ * The server stops indexing a connection whose `excludeAllTables` is true or
219
+ * whose `includeTables` is empty (ConnectionService.shouldSkipIndexing), and a
220
+ * read reports such a connection as `excludeAllTables: true`. A file that
221
+ * would start or keep that against what it implies is refused: an update that
222
+ * leaves a connection without `includeTables` stops its indexing, and
223
+ * `includeTables` on a connection that stays excluded is never indexed.
224
+ */
225
+ function checkIndexing(stored, changes, merged, connectionName) {
226
+ const tables = merged.includeTables;
227
+ const noTables = !Array.isArray(tables) || tables.length === 0;
228
+ if (merged.excludeAllTables !== true && !noTables)
229
+ return;
230
+ // The file turns indexing off itself.
231
+ if (changes.excludeAllTables === true)
232
+ return;
233
+ if (stored.excludeAllTables !== true) {
234
+ throw new UpdateFileError(`${connectionName} would have no includeTables after this update, and the server stops indexing a connection without them. Fix: list the tables to index in includeTables, or set excludeAllTables: true to stop indexing it.`);
235
+ }
236
+ const fileTables = Array.isArray(changes.includeTables) && changes.includeTables.length > 0;
237
+ if (merged.excludeAllTables === true && fileTables) {
238
+ throw new UpdateFileError(`${connectionName} is not indexed (excludeAllTables is true), so the file's includeTables would not be indexed either. Fix: add "excludeAllTables": false to the file.`);
239
+ }
240
+ if (changes.excludeAllTables === false) {
241
+ throw new UpdateFileError(`${connectionName} has no includeTables, so it stays unindexed with excludeAllTables false. Fix: list the tables to index in includeTables too.`);
242
+ }
243
+ }
244
+ /** `'lake'` at the top, `'lake' duckdbConnection.attachedDatabases[a]` below. */
245
+ function where(walk) {
246
+ return walk.path
247
+ ? `${walk.connectionName} ${walk.path}`
248
+ : walk.connectionName;
249
+ }
250
+ function shape(value) {
251
+ if (value === undefined || value === null)
252
+ return undefined;
253
+ if (Array.isArray(value))
254
+ return "a list";
255
+ return isObject(value) ? "an object" : "a value";
256
+ }
257
+ function isTypeBlock(key) {
258
+ // `s3Connection` has a digit.
259
+ return /^[a-z][a-z0-9]*Connection$/.test(key);
260
+ }
261
+ function isObject(value) {
262
+ return typeof value === "object" && value !== null && !Array.isArray(value);
263
+ }
264
+ function isNamed(value) {
265
+ return (isObject(value) && typeof value.name === "string" && value.name !== "");
266
+ }
267
+ function isBlank(value) {
268
+ return value === undefined || value === null || value === "";
269
+ }
270
+ function withoutBlanks(value) {
271
+ if (Array.isArray(value))
272
+ return value.map(withoutBlanks);
273
+ if (!isObject(value))
274
+ return value;
275
+ return Object.fromEntries(Object.entries(value)
276
+ .filter(([, field]) => !isBlank(field))
277
+ .map(([key, field]) => [key, withoutBlanks(field)]));
278
+ }
279
+ /**
280
+ * `cred update connection <file>`: change named fields of existing connections,
281
+ * for a rotated key or a moved host. The file takes `cred add connection`'s
282
+ * shape (an array, or one object), each entry naming a connection and holding
283
+ * only what changes.
284
+ */
285
+ const updateConnections = (controlPlane, connectionFileName, debug, autoConfirm) => __awaiter(void 0, void 0, void 0, function* () {
286
+ const clientConfig = new clientconfiguration_1.ClientConfiguration();
287
+ const organizationName = clientConfig.getOrganization();
288
+ const environmentName = clientConfig.getProject();
289
+ if (!clientConfig.doesConfigExists()) {
290
+ logger_1.logger.error("Please, make sure that you are logged in");
291
+ process.exitCode = 1;
292
+ return;
293
+ }
294
+ if (!environmentName) {
295
+ logger_1.logger.error("Please, make sure to set an environment");
296
+ process.exitCode = 1;
297
+ return;
298
+ }
299
+ const parsed = JSON.parse(fs_1.default.readFileSync(connectionFileName, "utf8"));
300
+ const entries = Array.isArray(parsed) ? parsed : [parsed];
301
+ // Read per call: a confirmation can refresh the session, and the calls
302
+ // after it have to carry the new token.
303
+ const request = () => ({
304
+ baseURL: controlPlane,
305
+ headers: clientConfig.getHeaders(),
306
+ });
307
+ for (const changes of entries) {
308
+ const name = changes.name;
309
+ if (typeof name !== "string" || !name) {
310
+ logger_1.logger.error(`Every entry in ${connectionFileName} needs the "name" of the connection to update.`);
311
+ process.exitCode = 1;
312
+ continue;
313
+ }
314
+ let merged;
315
+ try {
316
+ const stored = (yield connectionsApi.getConnection(organizationName, environmentName, name, request())).data;
317
+ merged = mergeConnectionUpdate(stored, changes);
318
+ }
319
+ catch (error) {
320
+ reportFailure(name, error, debug);
321
+ continue;
322
+ }
323
+ const { connection, changed } = merged;
324
+ if (!changed.length) {
325
+ logger_1.logger.info(`Nothing to change in ${name}: the file changes no stored value.`);
326
+ continue;
327
+ }
328
+ // Otherwise a key rotation on an unindexed connection reads as if
329
+ // indexing will pick it up.
330
+ const unindexed = connection.excludeAllTables === true
331
+ ? " It will not be indexed (excludeAllTables is true)."
332
+ : "";
333
+ // Outside the `try`s: a question that cannot be asked has to exit 2
334
+ // naming --yes, not be reported as a failed update.
335
+ if (!autoConfirm) {
336
+ const confirmation = yield (0, utils_1.getConfirmation)(`Update ${changed.join(", ")} on connection ${name} in ${organizationName}/${environmentName}?${unindexed}`, clientConfig);
337
+ // Declining one entry skips only that one; the rest are still asked.
338
+ if (!confirmation) {
339
+ logger_1.logger.info(`Skipped ${name}: not confirmed, nothing sent.`);
340
+ continue;
341
+ }
342
+ }
343
+ try {
344
+ // The server tests the merged connection before saving it, so a bad
345
+ // key is refused here and the stored one keeps working.
346
+ yield connectionsApi.updateConnection(organizationName, environmentName, name, connection, request());
347
+ console.log(`Connection ${name} updated successfully${unindexed && `.${unindexed}`}`);
348
+ }
349
+ catch (error) {
350
+ reportFailure(name, error, debug);
351
+ }
352
+ }
353
+ });
354
+ exports.updateConnections = updateConnections;
355
+ function reportFailure(name, error, debug) {
356
+ logger_1.logger.error(`Failed to update connection ${name}`);
357
+ // A refused file is expected and says its own fix; anything else is
358
+ // reported the way every command reports it.
359
+ if (error instanceof UpdateFileError)
360
+ logger_1.logger.error(error.message);
361
+ else
362
+ (0, utils_1.printOutError)(error, debug);
363
+ process.exitCode = 1;
364
+ }
365
+ //# sourceMappingURL=updateconnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateconnection.js","sourceRoot":"","sources":["../../../src/commands/connection/updateconnection.ts"],"names":[],"mappings":"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"}