@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,304 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const chai_1 = require("chai");
16
+ const crypto_1 = __importDefault(require("crypto"));
17
+ const fs_1 = __importDefault(require("fs"));
18
+ const os_1 = __importDefault(require("os"));
19
+ const path_1 = __importDefault(require("path"));
20
+ const sinon_1 = __importDefault(require("sinon"));
21
+ const api_1 = require("../../client/api");
22
+ const logger_1 = require("../../logger");
23
+ const database_spec_1 = require("../database/database.spec");
24
+ const shared_spec_1 = require("../database/shared.spec");
25
+ const addtable_1 = require("./addtable");
26
+ const deletetable_1 = require("./deletetable");
27
+ const gettable_1 = require("./gettable");
28
+ const listtables_1 = require("./listtables");
29
+ const upload = {
30
+ url: "https://storage.example/staging/orders/u/orders.csv?sig=1",
31
+ method: "PUT",
32
+ headers: { "Content-MD5": "abc==", "Content-Length": "8" },
33
+ expiresAt: "2026-10-28T12:00:00Z",
34
+ };
35
+ function table(overrides) {
36
+ return Object.assign({ name: "orders", schema: "main", status: "PENDING_UPLOAD", source: { kind: "file", filename: "orders.csv" } }, overrides);
37
+ }
38
+ const loaded = table({
39
+ status: "READY",
40
+ rowCount: 1234,
41
+ sizeBytes: 2048,
42
+ columns: [
43
+ { name: "id", type: "BIGINT" },
44
+ { name: "amount", type: "DOUBLE" },
45
+ ],
46
+ });
47
+ describe("table commands", () => {
48
+ let sandbox;
49
+ let stdout;
50
+ let dir;
51
+ let deps;
52
+ const errors = () => logger_1.logger.error.getCalls().map((c) => c.args[0]);
53
+ beforeEach(() => {
54
+ sandbox = sinon_1.default.createSandbox();
55
+ sandbox.stub(logger_1.logger);
56
+ stdout = sandbox.stub(console, "log");
57
+ sandbox
58
+ .stub(require("../../setup-core/refresh"), "ensureFreshTokens")
59
+ .resolves({ status: "fresh" });
60
+ dir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), "addtable-"));
61
+ fs_1.default.writeFileSync(path_1.default.join(dir, "Orders.csv"), "id,amount\n");
62
+ deps = {
63
+ upload: sandbox.stub().resolves(),
64
+ progress: () => ({ update: () => { }, done: () => { } }),
65
+ poll: { intervalMs: 1, sleep: () => __awaiter(void 0, void 0, void 0, function* () { }) },
66
+ };
67
+ });
68
+ afterEach(() => {
69
+ sandbox.restore();
70
+ fs_1.default.rmSync(dir, { recursive: true, force: true });
71
+ });
72
+ describe("cred add table", () => {
73
+ it("creates, uploads, reports complete, and reads by name until READY", () => __awaiter(void 0, void 0, void 0, function* () {
74
+ var _a;
75
+ const create = sandbox
76
+ .stub(api_1.DatabasesApi.prototype, "createDatabaseTable")
77
+ .resolves({ data: table({ upload }) });
78
+ const report = sandbox
79
+ .stub(api_1.DatabasesApi.prototype, "updateDatabaseTable")
80
+ .resolves({ data: table({ status: "LOADING" }) });
81
+ const get = sandbox.stub(api_1.DatabasesApi.prototype, "getDatabaseTable");
82
+ get.onCall(0).resolves({
83
+ data: table({ status: "LOADING" }),
84
+ });
85
+ get.onCall(1).resolves({ data: loaded });
86
+ const file = path_1.default.join(dir, "Orders.csv");
87
+ yield (0, addtable_1.addTables)("http://cp", "credible", [file], { option: ["header=true"], sheet: undefined }, (0, database_spec_1.fakeConfig)(), deps);
88
+ const [org, env, db, request] = create.firstCall.args;
89
+ (0, chai_1.expect)([org, env, db]).to.eql(["acme", "analytics", "credible"]);
90
+ (0, chai_1.expect)(request).to.eql({
91
+ name: "orders",
92
+ source: {
93
+ filename: "Orders.csv",
94
+ sizeBytes: 10,
95
+ sha256: crypto_1.default
96
+ .createHash("sha256")
97
+ .update("id,amount\n")
98
+ .digest("hex"),
99
+ contentMd5: crypto_1.default
100
+ .createHash("md5")
101
+ .update("id,amount\n")
102
+ .digest("base64"),
103
+ options: { header: true },
104
+ },
105
+ });
106
+ (0, chai_1.expect)(deps.upload.firstCall.args.slice(0, 3)).to.eql([
107
+ file,
108
+ upload,
109
+ 10,
110
+ ]);
111
+ (0, chai_1.expect)(report.firstCall.args.slice(2, 5)).to.eql([
112
+ "credible",
113
+ "orders",
114
+ { upload: { status: "COMPLETE" } },
115
+ ]);
116
+ (0, chai_1.expect)(get.alwaysCalledWith("acme", "analytics", "credible", "orders")).to.equal(true);
117
+ (0, chai_1.expect)(stdout.firstCall.args[0]).to.equal("credible.orders loaded from Orders.csv: 1,234 rows, 2.0 KiB; columns: id BIGINT, amount DOUBLE. Read it as credible.table('orders').");
118
+ (0, chai_1.expect)((_a = process.exitCode) !== null && _a !== void 0 ? _a : 0).to.equal(0);
119
+ }));
120
+ it("asks the create to replace under --replace and --name", () => __awaiter(void 0, void 0, void 0, function* () {
121
+ const create = sandbox
122
+ .stub(api_1.DatabasesApi.prototype, "createDatabaseTable")
123
+ .resolves({ data: table({ name: "o2", upload }) });
124
+ sandbox
125
+ .stub(api_1.DatabasesApi.prototype, "updateDatabaseTable")
126
+ .resolves({});
127
+ sandbox
128
+ .stub(api_1.DatabasesApi.prototype, "getDatabaseTable")
129
+ .resolves({ data: Object.assign(Object.assign({}, loaded), { name: "o2" }) });
130
+ yield (0, addtable_1.addTables)("http://cp", "credible", [path_1.default.join(dir, "Orders.csv")], { name: "o2", replace: true, format: "csv" }, (0, database_spec_1.fakeConfig)(), deps);
131
+ const request = create.firstCall.args[3];
132
+ (0, chai_1.expect)(request.name).to.equal("o2");
133
+ (0, chai_1.expect)(request.replace).to.equal(true);
134
+ (0, chai_1.expect)(request.source.format).to.equal("csv");
135
+ }));
136
+ it("prints a failed load's error verbatim and exits 1", () => __awaiter(void 0, void 0, void 0, function* () {
137
+ sandbox
138
+ .stub(api_1.DatabasesApi.prototype, "createDatabaseTable")
139
+ .resolves({ data: table({ upload }) });
140
+ sandbox
141
+ .stub(api_1.DatabasesApi.prototype, "updateDatabaseTable")
142
+ .resolves({});
143
+ sandbox.stub(api_1.DatabasesApi.prototype, "getDatabaseTable").resolves({
144
+ data: table({
145
+ status: "FAILED",
146
+ error: "Could not convert string 'N/A' to DOUBLE in column 'amount'",
147
+ }),
148
+ });
149
+ yield (0, addtable_1.addTables)("http://cp", "credible", [path_1.default.join(dir, "Orders.csv")], {}, (0, database_spec_1.fakeConfig)(), deps);
150
+ (0, chai_1.expect)(stdout.called).to.equal(false);
151
+ (0, chai_1.expect)(process.exitCode).to.equal(1);
152
+ (0, chai_1.expect)(errors()).to.include("credible.orders failed to load from Orders.csv: Could not convert string 'N/A' to DOUBLE in column 'amount'");
153
+ }));
154
+ it("names --replace when the table exists", () => __awaiter(void 0, void 0, void 0, function* () {
155
+ sandbox.stub(api_1.DatabasesApi.prototype, "createDatabaseTable").rejects((0, shared_spec_1.httpError)(409, {
156
+ code: "DATABASE_TABLE_EXISTS",
157
+ message: "credible already has a table named orders.",
158
+ }));
159
+ yield (0, addtable_1.addTables)("http://cp", "credible", [path_1.default.join(dir, "Orders.csv")], {}, (0, database_spec_1.fakeConfig)(), deps);
160
+ (0, chai_1.expect)(deps.upload.called).to.equal(false);
161
+ (0, chai_1.expect)(errors()[0]).to.equal("Failed to add Orders.csv → credible.orders: credible already has a table named orders. Fix: pass --replace to replace it, or --name to add it under another name.");
162
+ }));
163
+ it("does not report complete when the upload fails", () => __awaiter(void 0, void 0, void 0, function* () {
164
+ sandbox
165
+ .stub(api_1.DatabasesApi.prototype, "createDatabaseTable")
166
+ .resolves({ data: table({ upload }) });
167
+ const report = sandbox.stub(api_1.DatabasesApi.prototype, "updateDatabaseTable");
168
+ deps.upload.rejects(new Error("storage refused the upload with HTTP 403"));
169
+ yield (0, addtable_1.addTables)("http://cp", "credible", [path_1.default.join(dir, "Orders.csv")], {}, (0, database_spec_1.fakeConfig)(), deps);
170
+ (0, chai_1.expect)(report.called).to.equal(false);
171
+ (0, chai_1.expect)(process.exitCode).to.equal(1);
172
+ }));
173
+ it("adds several files as several tables, one at a time, and goes on past a failure", () => __awaiter(void 0, void 0, void 0, function* () {
174
+ fs_1.default.writeFileSync(path_1.default.join(dir, "returns.csv"), "id\n");
175
+ const create = sandbox.stub(api_1.DatabasesApi.prototype, "createDatabaseTable");
176
+ create.onCall(0).rejects((0, shared_spec_1.httpError)(413, { message: "over the cap" }));
177
+ create
178
+ .onCall(1)
179
+ .resolves({ data: table({ name: "returns", upload }) });
180
+ sandbox
181
+ .stub(api_1.DatabasesApi.prototype, "updateDatabaseTable")
182
+ .resolves({});
183
+ sandbox
184
+ .stub(api_1.DatabasesApi.prototype, "getDatabaseTable")
185
+ .resolves({ data: Object.assign(Object.assign({}, loaded), { name: "returns" }) });
186
+ yield (0, addtable_1.addTables)("http://cp", "credible", [path_1.default.join(dir, "Orders.csv"), path_1.default.join(dir, "returns.csv")], {}, (0, database_spec_1.fakeConfig)(), deps);
187
+ (0, chai_1.expect)(create.secondCall.args[3].name).to.equal("returns");
188
+ (0, chai_1.expect)(stdout.callCount).to.equal(1);
189
+ (0, chai_1.expect)(process.exitCode).to.equal(1);
190
+ }));
191
+ it("stops at the timeout while still LOADING, naming the command that shows when it is READY", () => __awaiter(void 0, void 0, void 0, function* () {
192
+ sandbox
193
+ .stub(api_1.DatabasesApi.prototype, "createDatabaseTable")
194
+ .resolves({ data: table({ upload }) });
195
+ sandbox
196
+ .stub(api_1.DatabasesApi.prototype, "updateDatabaseTable")
197
+ .resolves({});
198
+ const get = sandbox
199
+ .stub(api_1.DatabasesApi.prototype, "getDatabaseTable")
200
+ .resolves({ data: table({ status: "LOADING" }) });
201
+ yield (0, addtable_1.addTables)("http://cp", "credible", [path_1.default.join(dir, "Orders.csv")], {}, (0, database_spec_1.fakeConfig)(), Object.assign(Object.assign({}, deps), { poll: Object.assign(Object.assign({}, deps.poll), { timeoutMs: 0 }) }));
202
+ (0, chai_1.expect)(get.callCount).to.equal(1);
203
+ (0, chai_1.expect)(stdout.called).to.equal(false);
204
+ (0, chai_1.expect)(process.exitCode).to.equal(1);
205
+ (0, chai_1.expect)(errors()).to.eql([
206
+ "credible.orders is still LOADING. `cred get table credible orders` shows when it is READY.",
207
+ ]);
208
+ }));
209
+ it("fails without uploading when the create answers with no upload", () => __awaiter(void 0, void 0, void 0, function* () {
210
+ sandbox
211
+ .stub(api_1.DatabasesApi.prototype, "createDatabaseTable")
212
+ .resolves({ data: table({}) });
213
+ const report = sandbox.stub(api_1.DatabasesApi.prototype, "updateDatabaseTable");
214
+ yield (0, addtable_1.addTables)("http://cp", "credible", [path_1.default.join(dir, "Orders.csv")], {}, (0, database_spec_1.fakeConfig)(), deps);
215
+ (0, chai_1.expect)(deps.upload.called).to.equal(false);
216
+ (0, chai_1.expect)(report.called).to.equal(false);
217
+ (0, chai_1.expect)(process.exitCode).to.equal(1);
218
+ (0, chai_1.expect)(errors()).to.eql([
219
+ "Failed to add Orders.csv → credible.orders: the server answered without an upload URL (status PENDING_UPLOAD).",
220
+ ]);
221
+ }));
222
+ it("refuses usage mistakes with exit 2 before sending anything", () => __awaiter(void 0, void 0, void 0, function* () {
223
+ const create = sandbox.stub(api_1.DatabasesApi.prototype, "createDatabaseTable");
224
+ const file = path_1.default.join(dir, "Orders.csv");
225
+ for (const [files, options] of [
226
+ [[file, file], { name: "x" }],
227
+ [[file], { name: "1bad" }],
228
+ [[file], { format: "avro" }],
229
+ [[file], { option: ["nope=1"] }],
230
+ [[path_1.default.join(dir, "missing.csv")], {}],
231
+ ]) {
232
+ process.exitCode = undefined;
233
+ yield (0, addtable_1.addTables)("http://cp", "credible", [...files], Object.assign(Object.assign({}, options), { option: "option" in options ? [...options.option] : [] }), (0, database_spec_1.fakeConfig)(), deps);
234
+ (0, chai_1.expect)(process.exitCode).to.equal(2);
235
+ }
236
+ (0, chai_1.expect)(create.called).to.equal(false);
237
+ }));
238
+ });
239
+ describe("describeLoadedTable", () => {
240
+ it("says the rows are not counted yet when the server has no count, and leaves out an unknown size", () => {
241
+ (0, chai_1.expect)((0, addtable_1.describeLoadedTable)("credible", "Orders.csv", table({ status: "READY", columns: [] }))).to.equal("credible.orders loaded from Orders.csv: rows not counted yet; columns: none. Read it as credible.table('orders').");
242
+ });
243
+ it("counts one row in the singular", () => {
244
+ (0, chai_1.expect)((0, addtable_1.describeLoadedTable)("credible", "Orders.csv", table({
245
+ status: "READY",
246
+ rowCount: 1,
247
+ columns: [{ name: "id", type: "BIGINT" }],
248
+ }))).to.equal("credible.orders loaded from Orders.csv: 1 row; columns: id BIGINT. Read it as credible.table('orders').");
249
+ });
250
+ });
251
+ it("cred ls tables prints the database's tables with the total", () => __awaiter(void 0, void 0, void 0, function* () {
252
+ const list = sandbox
253
+ .stub(api_1.DatabasesApi.prototype, "listDatabaseTables")
254
+ .resolves({
255
+ data: [loaded],
256
+ headers: { "total-count": "1" },
257
+ });
258
+ yield (0, listtables_1.listTables)("http://cp", "credible", false, "1", "-1", (0, database_spec_1.fakeConfig)());
259
+ (0, chai_1.expect)(list.firstCall.args.slice(0, 5)).to.eql([
260
+ "acme",
261
+ "analytics",
262
+ "credible",
263
+ -1,
264
+ 0,
265
+ ]);
266
+ (0, chai_1.expect)(JSON.parse(stdout.firstCall.args[0])).to.eql({
267
+ tables: [loaded],
268
+ totalCount: 1,
269
+ });
270
+ }));
271
+ it("cred get table prints the table", () => __awaiter(void 0, void 0, void 0, function* () {
272
+ sandbox
273
+ .stub(api_1.DatabasesApi.prototype, "getDatabaseTable")
274
+ .resolves({ data: loaded });
275
+ yield (0, gettable_1.getTable)("http://cp", "credible", "orders", false, (0, database_spec_1.fakeConfig)());
276
+ (0, chai_1.expect)(JSON.parse(stdout.firstCall.args[0])).to.eql(loaded);
277
+ }));
278
+ describe("cred rm table", () => {
279
+ it("deletes after a yes and says the files stay recoverable for 7 days", () => __awaiter(void 0, void 0, void 0, function* () {
280
+ sandbox.stub(require("../../utils"), "getConfirmation").resolves(true);
281
+ const del = sandbox
282
+ .stub(api_1.DatabasesApi.prototype, "deleteDatabaseTable")
283
+ .resolves({});
284
+ yield (0, deletetable_1.deleteTable)("http://cp", "credible", "orders", {}, (0, database_spec_1.fakeConfig)());
285
+ (0, chai_1.expect)(del.firstCall.args.slice(0, 4)).to.eql([
286
+ "acme",
287
+ "analytics",
288
+ "credible",
289
+ "orders",
290
+ ]);
291
+ (0, chai_1.expect)(String(stdout.firstCall.args[0])).to.match(/^Table credible\.orders deleted\. Its files stay recoverable for 7 days/);
292
+ }));
293
+ it("surfaces the server's refusal of a materialized table", () => __awaiter(void 0, void 0, void 0, function* () {
294
+ sandbox.stub(api_1.DatabasesApi.prototype, "deleteDatabaseTable").rejects((0, shared_spec_1.httpError)(409, {
295
+ code: "DATABASE_TABLE_MANAGED",
296
+ message: "orders is built by the package sales.",
297
+ }));
298
+ yield (0, deletetable_1.deleteTable)("http://cp", "credible", "orders", { yes: true }, (0, database_spec_1.fakeConfig)());
299
+ (0, chai_1.expect)(process.exitCode).to.equal(1);
300
+ (0, chai_1.expect)(errors()).to.include("Failed to delete credible.orders: orders is built by the package sales.");
301
+ }));
302
+ });
303
+ });
304
+ //# sourceMappingURL=table.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.spec.js","sourceRoot":"","sources":["../../../src/commands/table/table.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TABLE_NAME_PATTERN = void 0;
7
+ exports.defaultTableName = defaultTableName;
8
+ exports.describeFile = describeFile;
9
+ exports.parseFormat = parseFormat;
10
+ exports.parseReaderOptions = parseReaderOptions;
11
+ exports.createProgress = createProgress;
12
+ exports.uploadFile = uploadFile;
13
+ const crypto_1 = __importDefault(require("crypto"));
14
+ const fs_1 = __importDefault(require("fs"));
15
+ const http_1 = __importDefault(require("http"));
16
+ const https_1 = __importDefault(require("https"));
17
+ const path_1 = __importDefault(require("path"));
18
+ const api_1 = require("../../client/api");
19
+ const shared_1 = require("../database/shared");
20
+ /**
21
+ * The name a new table may take: lowercase, as the server requires on create.
22
+ * (`DatabaseTableNamePattern` also admits uppercase, for reading or deleting a
23
+ * table a package built.)
24
+ */
25
+ exports.TABLE_NAME_PATTERN = /^[a-z_][a-z0-9_]{0,62}$/;
26
+ /**
27
+ * The table a file becomes when `--name` is not given: the file's stem,
28
+ * lowercased, each run of non-identifier characters one `_`, a leading digit
29
+ * prefixed with `_`, and cut to the 63 characters a name may hold.
30
+ * `Q3 Orders (final).csv` is `q3_orders_final_`; `2024-sales.csv.gz` is
31
+ * `_2024_sales`. A compressed file's inner extension is part of the suffix.
32
+ */
33
+ function defaultTableName(filePath) {
34
+ let stem = path_1.default.basename(filePath);
35
+ if (/\.gz$/i.test(stem))
36
+ stem = stem.slice(0, -3);
37
+ const dot = stem.lastIndexOf(".");
38
+ if (dot > 0)
39
+ stem = stem.slice(0, dot);
40
+ let name = stem.toLowerCase().replace(/[^a-z0-9_]+/g, "_");
41
+ if (!name)
42
+ name = "_";
43
+ if (/^[0-9]/.test(name))
44
+ name = `_${name}`;
45
+ return name.slice(0, 63);
46
+ }
47
+ /** Size, SHA-256 and MD5 in one streaming pass: the file is never held in memory. */
48
+ function describeFile(filePath) {
49
+ return new Promise((resolve, reject) => {
50
+ const sha256 = crypto_1.default.createHash("sha256");
51
+ const md5 = crypto_1.default.createHash("md5");
52
+ let sizeBytes = 0;
53
+ fs_1.default.createReadStream(filePath)
54
+ .on("data", (chunk) => {
55
+ const buffer = chunk;
56
+ sizeBytes += buffer.length;
57
+ sha256.update(buffer);
58
+ md5.update(buffer);
59
+ })
60
+ .on("error", reject)
61
+ .on("end", () => resolve({
62
+ sizeBytes,
63
+ sha256: sha256.digest("hex"),
64
+ contentMd5: md5.digest("base64"),
65
+ }));
66
+ });
67
+ }
68
+ const TABLE_FORMATS = Object.values(api_1.DatabaseTableFileFormatEnum);
69
+ /** `--format`, checked against the spec's enum before anything is sent. */
70
+ function parseFormat(value) {
71
+ if (value === undefined)
72
+ return undefined;
73
+ const format = value.toLowerCase();
74
+ if (!TABLE_FORMATS.includes(format)) {
75
+ throw new Error(`Unknown --format '${value}'. Fix: one of ${TABLE_FORMATS.join(", ")}, or leave it out to infer it from the file name.`);
76
+ }
77
+ return format;
78
+ }
79
+ /**
80
+ * `--option k=v` (repeatable) and `--sheet`, as the reader options the admin
81
+ * API accepts: `header` (true|false), `delimiter`, `skip` (rows, an integer).
82
+ * Anything else is refused here, where the flag can be named, rather than as
83
+ * a 400 from the server.
84
+ */
85
+ function parseReaderOptions(pairs, sheet) {
86
+ const options = {};
87
+ for (const pair of pairs) {
88
+ const at = pair.indexOf("=");
89
+ const key = at > 0 ? pair.slice(0, at).trim() : "";
90
+ const value = at > 0 ? pair.slice(at + 1) : "";
91
+ if (key === "header") {
92
+ if (!/^(true|false)$/i.test(value)) {
93
+ throw new Error(`--option header=${value}: expected true or false.`);
94
+ }
95
+ options.header = value.toLowerCase() === "true";
96
+ }
97
+ else if (key === "delimiter") {
98
+ if (!value)
99
+ throw new Error("--option delimiter= needs a value.");
100
+ options.delimiter = value;
101
+ }
102
+ else if (key === "skip") {
103
+ if (!/^\d+$/.test(value)) {
104
+ throw new Error(`--option skip=${value}: expected a whole number of rows.`);
105
+ }
106
+ options.skip = Number(value);
107
+ }
108
+ else {
109
+ throw new Error(`Unknown --option '${pair}'. Fix: header=true|false, delimiter=<char> or skip=<rows>; --sheet <name> picks a spreadsheet's sheet.`);
110
+ }
111
+ }
112
+ if (sheet !== undefined)
113
+ options.sheet = sheet;
114
+ return Object.keys(options).length ? options : undefined;
115
+ }
116
+ const BAR_WIDTH = 24;
117
+ const REDRAW_MS = 100;
118
+ function createProgress(label, total, stream = process.stderr, now = Date.now) {
119
+ if (!stream.isTTY)
120
+ return { update: () => { }, done: () => { } };
121
+ let drawnAt = -Infinity;
122
+ let last = 0;
123
+ const draw = (sent) => {
124
+ const fraction = total > 0 ? Math.min(sent / total, 1) : 1;
125
+ const filled = Math.round(fraction * BAR_WIDTH);
126
+ stream.write(`\r${label} [${"#".repeat(filled)}${"-".repeat(BAR_WIDTH - filled)}] ${String(Math.floor(fraction * 100)).padStart(3)}% ${(0, shared_1.formatBytes)(sent)} / ${(0, shared_1.formatBytes)(total)}`);
127
+ };
128
+ return {
129
+ update(sent) {
130
+ last = sent;
131
+ if (now() - drawnAt < REDRAW_MS)
132
+ return;
133
+ drawnAt = now();
134
+ draw(sent);
135
+ },
136
+ done() {
137
+ draw(last);
138
+ stream.write("\n");
139
+ },
140
+ };
141
+ }
142
+ /**
143
+ * Send the file to the signed URL, streamed from disk, with every header the
144
+ * server signed (`Content-MD5` and `Content-Length` among them: storage refuses
145
+ * any other body). Resolves on a 2xx; rejects with storage's status and the
146
+ * start of its answer, which for a signature mismatch is the only explanation.
147
+ */
148
+ function uploadFile(filePath, upload, sizeBytes, onProgress = () => { }) {
149
+ return new Promise((resolve, reject) => {
150
+ var _a;
151
+ const url = new URL(upload.url);
152
+ const headers = Object.assign({}, upload.headers);
153
+ if (!Object.keys(headers).some((h) => h.toLowerCase() === "content-length")) {
154
+ headers["Content-Length"] = String(sizeBytes);
155
+ }
156
+ const send = url.protocol === "https:" ? https_1.default.request : http_1.default.request;
157
+ const request = send(url, { method: (_a = upload.method) !== null && _a !== void 0 ? _a : "PUT", headers }, (response) => {
158
+ const chunks = [];
159
+ let kept = 0;
160
+ response.on("data", (chunk) => {
161
+ if (kept < 2048) {
162
+ chunks.push(chunk);
163
+ kept += chunk.length;
164
+ }
165
+ });
166
+ response.on("end", () => {
167
+ var _a;
168
+ const status = (_a = response.statusCode) !== null && _a !== void 0 ? _a : 0;
169
+ if (status >= 200 && status < 300) {
170
+ resolve();
171
+ return;
172
+ }
173
+ const body = Buffer.concat(chunks)
174
+ .toString("utf8")
175
+ .slice(0, 500)
176
+ .trim();
177
+ reject(new Error(`storage refused the upload with HTTP ${status}${body ? `: ${body}` : ""}`));
178
+ });
179
+ response.on("error", reject);
180
+ });
181
+ request.on("error", reject);
182
+ let sent = 0;
183
+ const file = fs_1.default.createReadStream(filePath);
184
+ file.on("data", (chunk) => {
185
+ sent += chunk.length;
186
+ onProgress(sent);
187
+ });
188
+ file.on("error", (error) => {
189
+ request.destroy(error);
190
+ reject(error);
191
+ });
192
+ file.pipe(request);
193
+ });
194
+ }
195
+ //# sourceMappingURL=tablefile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tablefile.js","sourceRoot":"","sources":["../../../src/commands/table/tablefile.ts"],"names":[],"mappings":";;;;;;AA0BA,4CASC;AAWD,oCAqBC;AAKD,kCAWC;AAQD,gDAkCC;AAWD,wCA4BC;AAQD,gCA2DC;AAvOD,oDAA4B;AAC5B,4CAAoB;AACpB,gDAAwB;AACxB,kDAA0B;AAC1B,gDAAwB;AACxB,0CAI0B;AAC1B,+CAAiD;AAEjD;;;;GAIG;AACU,QAAA,kBAAkB,GAAG,yBAAyB,CAAC;AAE5D;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,QAAgB;IAC9C,IAAI,IAAI,GAAG,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,CAAC;QAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvC,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC3D,IAAI,CAAC,IAAI;QAAE,IAAI,GAAG,GAAG,CAAC;IACtB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5B,CAAC;AAUD,qFAAqF;AACrF,SAAgB,YAAY,CAAC,QAAgB;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,gBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,gBAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,YAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC;aACzB,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,MAAM,GAAG,KAAe,CAAC;YAC/B,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;aACnB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CACb,OAAO,CAAC;YACL,SAAS;YACT,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;SAClC,CAAC,CACJ,CAAC;IACR,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,iCAA2B,CAAC,CAAC;AAEjE,2EAA2E;AAC3E,SAAgB,WAAW,CACxB,KAAyB;IAEzB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAiC,CAAC;IAClE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACZ,qBAAqB,KAAK,kBAAkB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,mDAAmD,CACzH,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAC/B,KAAe,EACf,KAAc;IAEd,MAAM,OAAO,GAA+B,EAAE,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CACZ,mBAAmB,KAAK,2BAA2B,CACrD,CAAC;YACL,CAAC;YACD,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;QACnD,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YAClE,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;QAC7B,CAAC;aAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACZ,iBAAiB,KAAK,oCAAoC,CAC5D,CAAC;YACL,CAAC;YACD,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACL,MAAM,IAAI,KAAK,CACZ,qBAAqB,IAAI,yGAAyG,CACpI,CAAC;QACL,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5D,CAAC;AAQD,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,SAAgB,cAAc,CAC3B,KAAa,EACb,KAAa,EACb,SAA6B,OAAO,CAAC,MAAM,EAC3C,MAAoB,IAAI,CAAC,GAAG;IAE5B,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAC/D,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC;IACxB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CACT,KAAK,KAAK,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAA,oBAAW,EAAC,IAAI,CAAC,MAAM,IAAA,oBAAW,EAAC,KAAK,CAAC,EAAE,CACvK,CAAC;IACL,CAAC,CAAC;IACF,OAAO;QACJ,MAAM,CAAC,IAAY;YAChB,IAAI,GAAG,IAAI,CAAC;YACZ,IAAI,GAAG,EAAE,GAAG,OAAO,GAAG,SAAS;gBAAE,OAAO;YACxC,OAAO,GAAG,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,CAAC;QACD,IAAI;YACD,IAAI,CAAC,IAAI,CAAC,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;KACH,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CACvB,QAAgB,EAChB,MAA2B,EAC3B,SAAiB,EACjB,aAAqC,GAAG,EAAE,GAAE,CAAC;IAE7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;;QACpC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,OAAO,qBAAgC,MAAM,CAAC,OAAO,CAAE,CAAC;QAC9D,IACG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,gBAAgB,CAAC,EACxE,CAAC;YACA,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC;QACtE,MAAM,OAAO,GAAG,IAAI,CACjB,GAAG,EACH,EAAE,MAAM,EAAE,MAAA,MAAM,CAAC,MAAM,mCAAI,KAAK,EAAE,OAAO,EAAE,EAC3C,CAAC,QAAQ,EAAE,EAAE;YACV,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACnC,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnB,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;gBACxB,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;;gBACrB,MAAM,MAAM,GAAG,MAAA,QAAQ,CAAC,UAAU,mCAAI,CAAC,CAAC;gBACxC,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;oBACjC,OAAO,EAAE,CAAC;oBACV,OAAO;gBACV,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;qBAC9B,QAAQ,CAAC,MAAM,CAAC;qBAChB,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;qBACb,IAAI,EAAE,CAAC;gBACX,MAAM,CACH,IAAI,KAAK,CACN,wCAAwC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5E,CACH,CAAC;YACL,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC,CACH,CAAC;QACF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,MAAM,IAAI,GAAG,YAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,IAAK,KAAgB,CAAC,MAAM,CAAC;YACjC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;AACN,CAAC"}