@keboola/api-client 39.0.0 → 41.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) hide show
  1. package/AGENTS.md +121 -100
  2. package/API-SURFACE.md +27 -2
  3. package/CHANGELOG.md +129 -0
  4. package/README.md +3 -3
  5. package/dist/{ManagementClientAuthError-FcfMJNhr.cjs → ManagementClientAuthError-DE7lNGZQ.cjs} +2 -2
  6. package/dist/{ManagementClientAuthError-FcfMJNhr.cjs.map → ManagementClientAuthError-DE7lNGZQ.cjs.map} +1 -1
  7. package/dist/{ManagementClientAuthError-Cr9IOsnJ.js → ManagementClientAuthError-H30lti_Q.js} +2 -2
  8. package/dist/{ManagementClientAuthError-Cr9IOsnJ.js.map → ManagementClientAuthError-H30lti_Q.js.map} +1 -1
  9. package/dist/{ValidationError-CLVJCCwH.cjs → ValidationError-D65QU0uq.cjs} +10 -16
  10. package/dist/ValidationError-D65QU0uq.cjs.map +1 -0
  11. package/dist/ValidationError-DjhtNMfZ.js +42 -0
  12. package/dist/ValidationError-DjhtNMfZ.js.map +1 -0
  13. package/dist/ai/index.cjs +2 -2
  14. package/dist/ai/index.d.cts +2 -2
  15. package/dist/ai/index.d.ts +2 -2
  16. package/dist/ai/index.js +2 -2
  17. package/dist/ai/types.d.cts +1 -1
  18. package/dist/ai/types.d.ts +1 -1
  19. package/dist/{appLogs-C_zP0lpv.cjs → appLogs-B9zFJIuy.cjs} +2 -2
  20. package/dist/{appLogs-C_zP0lpv.cjs.map → appLogs-B9zFJIuy.cjs.map} +1 -1
  21. package/dist/{appLogs-Cl7Q_MR9.js → appLogs-BBkkUOW1.js} +2 -2
  22. package/dist/{appLogs-Cl7Q_MR9.js.map → appLogs-BBkkUOW1.js.map} +1 -1
  23. package/dist/{appLogs-Ch7DYpzx.d.ts → appLogs-BS6ViVGR.d.ts} +2 -2
  24. package/dist/{appLogs-D5A13Y0y.d.cts → appLogs-C9YlJ2g8.d.cts} +2 -2
  25. package/dist/apps/index.cjs +30 -56
  26. package/dist/apps/index.cjs.map +1 -1
  27. package/dist/apps/index.d.cts +8 -13
  28. package/dist/apps/index.d.ts +8 -13
  29. package/dist/apps/index.js +30 -56
  30. package/dist/apps/index.js.map +1 -1
  31. package/dist/apps/types.d.cts +2 -2
  32. package/dist/apps/types.d.ts +2 -2
  33. package/dist/assets/index.cjs +1 -1
  34. package/dist/assets/index.d.cts +1 -1
  35. package/dist/assets/index.d.ts +1 -1
  36. package/dist/assets/index.js +1 -1
  37. package/dist/auth/index.cjs +8 -4
  38. package/dist/auth/index.d.cts +2 -2
  39. package/dist/auth/index.d.ts +2 -2
  40. package/dist/auth/index.js +2 -2
  41. package/dist/auth/types.d.cts +2 -2
  42. package/dist/auth/types.d.ts +2 -2
  43. package/dist/{auth-DLWnl18b.cjs → auth-Dm0F2rOh.cjs} +2 -2
  44. package/dist/{auth-DLWnl18b.cjs.map → auth-Dm0F2rOh.cjs.map} +1 -1
  45. package/dist/{auth-BjmkFOgd.js → auth-DworfoPy.js} +2 -2
  46. package/dist/{auth-BjmkFOgd.js.map → auth-DworfoPy.js.map} +1 -1
  47. package/dist/{authClient-8yU1last.cjs → authClient-BmuUo0J4.cjs} +141 -48
  48. package/dist/authClient-BmuUo0J4.cjs.map +1 -0
  49. package/dist/{authClient-CTHNs6Tq.d.cts → authClient-CHXWJ9x3.d.ts} +109 -76
  50. package/dist/{authClient-BTo4Afm6.js → authClient-CgcDGd30.js} +108 -39
  51. package/dist/authClient-CgcDGd30.js.map +1 -0
  52. package/dist/{authClient-D8i3JTM-.d.ts → authClient-vEt_7_uk.d.cts} +109 -76
  53. package/dist/billing/index.cjs +2 -2
  54. package/dist/billing/index.d.cts +1 -1
  55. package/dist/billing/index.d.ts +1 -1
  56. package/dist/billing/index.js +2 -2
  57. package/dist/billing/types.d.cts +1 -1
  58. package/dist/billing/types.d.ts +1 -1
  59. package/dist/businessWorkspaceApi/index.cjs +1 -1
  60. package/dist/businessWorkspaceApi/index.d.cts +1 -1
  61. package/dist/businessWorkspaceApi/index.d.ts +1 -1
  62. package/dist/businessWorkspaceApi/index.js +1 -1
  63. package/dist/businessWorkspaceApi/types.d.cts +1 -1
  64. package/dist/businessWorkspaceApi/types.d.ts +1 -1
  65. package/dist/{businessWorkspaceApi-wyBdbpIJ.cjs → businessWorkspaceApi-6tCDdpnY.cjs} +3 -3
  66. package/dist/{businessWorkspaceApi-wyBdbpIJ.cjs.map → businessWorkspaceApi-6tCDdpnY.cjs.map} +1 -1
  67. package/dist/{businessWorkspaceApi-BD-iUj07.js → businessWorkspaceApi-BLUdefRF.js} +3 -3
  68. package/dist/{businessWorkspaceApi-BD-iUj07.js.map → businessWorkspaceApi-BLUdefRF.js.map} +1 -1
  69. package/dist/{businessWorkspaceApiClient-CRM1U8b-.d.cts → businessWorkspaceApiClient-BHDJlHFo.d.cts} +3 -3
  70. package/dist/{businessWorkspaceApiClient-C2WyWN3b.d.ts → businessWorkspaceApiClient-DI-z1VIH.d.ts} +3 -3
  71. package/dist/chat/index.cjs +7 -3
  72. package/dist/chat/index.cjs.map +1 -1
  73. package/dist/chat/index.d.cts +2 -2
  74. package/dist/chat/index.d.ts +2 -2
  75. package/dist/chat/index.js +7 -3
  76. package/dist/chat/index.js.map +1 -1
  77. package/dist/chat/types.cjs +1 -3
  78. package/dist/chat/types.cjs.map +1 -1
  79. package/dist/chat/types.d.cts +2 -2
  80. package/dist/chat/types.d.ts +2 -2
  81. package/dist/chat/types.js +1 -3
  82. package/dist/chat/types.js.map +1 -1
  83. package/dist/{componentId-vJz-kWs6.js → componentId-BJLfnaGc.js} +6 -2
  84. package/dist/componentId-BJLfnaGc.js.map +1 -0
  85. package/dist/{componentId-DkyQ8PM0.cjs → componentId-_IKXxICq.cjs} +6 -2
  86. package/dist/componentId-_IKXxICq.cjs.map +1 -0
  87. package/dist/{concurrent-CH9fbNr3.js → concurrent-BacWxPwi.js} +5 -7
  88. package/dist/concurrent-BacWxPwi.js.map +1 -0
  89. package/dist/{concurrent-tbiIa0UL.cjs → concurrent-CdVfR1N5.cjs} +5 -7
  90. package/dist/concurrent-CdVfR1N5.cjs.map +1 -0
  91. package/dist/{configurations-CyFF9Dtu.cjs → configurations-BTRHVSRq.cjs} +20 -53
  92. package/dist/configurations-BTRHVSRq.cjs.map +1 -0
  93. package/dist/{configurations-VtNE0nrT.js → configurations-CF3xz7RB.js} +14 -22
  94. package/dist/configurations-CF3xz7RB.js.map +1 -0
  95. package/dist/{configurations-BVvcimzo.js → configurations-Chg_JwJ1.js} +20 -53
  96. package/dist/configurations-Chg_JwJ1.js.map +1 -0
  97. package/dist/{configurations-zkNjr73Q.cjs → configurations-VlfQ_37Y.cjs} +14 -22
  98. package/dist/configurations-VlfQ_37Y.cjs.map +1 -0
  99. package/dist/constants/index.cjs +1 -1
  100. package/dist/constants/index.d.cts +1 -1
  101. package/dist/constants/index.d.ts +1 -1
  102. package/dist/constants/index.js +1 -1
  103. package/dist/{createFetchClient-BlgPbjFj.cjs → createFetchClient-Cwp8max9.cjs} +11 -4
  104. package/dist/createFetchClient-Cwp8max9.cjs.map +1 -0
  105. package/dist/{createFetchClient-C-cadpBx.js → createFetchClient-DXHQK63w.js} +11 -4
  106. package/dist/createFetchClient-DXHQK63w.js.map +1 -0
  107. package/dist/{createGenericFetchClient-Bnf1QK9W.js → createGenericFetchClient-Dg1rgzmG.js} +2 -2
  108. package/dist/{createGenericFetchClient-Bnf1QK9W.js.map → createGenericFetchClient-Dg1rgzmG.js.map} +1 -1
  109. package/dist/{createGenericFetchClient-lcozzwk2.cjs → createGenericFetchClient-Dl9cqTvR.cjs} +2 -2
  110. package/dist/{createGenericFetchClient-lcozzwk2.cjs.map → createGenericFetchClient-Dl9cqTvR.cjs.map} +1 -1
  111. package/dist/{createOpenapiFetchClient-C3UmDXpe.cjs → createOpenapiFetchClient-BYqW-9tm.cjs} +2 -2
  112. package/dist/{createOpenapiFetchClient-C3UmDXpe.cjs.map → createOpenapiFetchClient-BYqW-9tm.cjs.map} +1 -1
  113. package/dist/{createOpenapiFetchClient-COaPeeQ0.js → createOpenapiFetchClient-DZUOVupy.js} +2 -2
  114. package/dist/{createOpenapiFetchClient-COaPeeQ0.js.map → createOpenapiFetchClient-DZUOVupy.js.map} +1 -1
  115. package/dist/dataScience/index.cjs +2 -2
  116. package/dist/dataScience/index.d.cts +2 -2
  117. package/dist/dataScience/index.d.ts +2 -2
  118. package/dist/dataScience/index.js +2 -2
  119. package/dist/dataScience/types.d.cts +2 -2
  120. package/dist/dataScience/types.d.ts +2 -2
  121. package/dist/{dataScience-D-hyc4GY.cjs → dataScience-B5QxZnvW.cjs} +5 -5
  122. package/dist/{dataScience-D-hyc4GY.cjs.map → dataScience-B5QxZnvW.cjs.map} +1 -1
  123. package/dist/{dataScience-B_BmnB1m.js → dataScience-OXcwdk1p.js} +5 -5
  124. package/dist/{dataScience-B_BmnB1m.js.map → dataScience-OXcwdk1p.js.map} +1 -1
  125. package/dist/dedupe-Cky1gSUu.js +21 -0
  126. package/dist/dedupe-Cky1gSUu.js.map +1 -0
  127. package/dist/dedupe-OSnnst2u.cjs +26 -0
  128. package/dist/dedupe-OSnnst2u.cjs.map +1 -0
  129. package/dist/developerPortal/index.cjs +1 -1
  130. package/dist/developerPortal/index.d.cts +2 -2
  131. package/dist/developerPortal/index.d.ts +2 -2
  132. package/dist/developerPortal/index.js +1 -1
  133. package/dist/developerPortal/types.d.cts +1 -1
  134. package/dist/developerPortal/types.d.ts +1 -1
  135. package/dist/{developerPortalClient-yHFTkKPb.js → developerPortalClient-B1QZ1rYi.js} +6 -8
  136. package/dist/{developerPortalClient-yHFTkKPb.js.map → developerPortalClient-B1QZ1rYi.js.map} +1 -1
  137. package/dist/{developerPortalClient-CutPqoAa.cjs → developerPortalClient-CLPpBksD.cjs} +6 -8
  138. package/dist/{developerPortalClient-CutPqoAa.cjs.map → developerPortalClient-CLPpBksD.cjs.map} +1 -1
  139. package/dist/domain/permissions/index.cjs +9 -30
  140. package/dist/domain/permissions/index.cjs.map +1 -1
  141. package/dist/domain/permissions/index.d.cts +29 -102
  142. package/dist/domain/permissions/index.d.ts +29 -102
  143. package/dist/domain/permissions/index.js +9 -30
  144. package/dist/domain/permissions/index.js.map +1 -1
  145. package/dist/domain/storageTable/index.d.cts +1 -1
  146. package/dist/domain/storageTable/index.d.ts +1 -1
  147. package/dist/editor/index.cjs +2 -2
  148. package/dist/editor/index.cjs.map +1 -1
  149. package/dist/editor/index.d.cts +2 -2
  150. package/dist/editor/index.d.ts +2 -2
  151. package/dist/editor/index.js +2 -2
  152. package/dist/editor/index.js.map +1 -1
  153. package/dist/editor/types.d.cts +1 -1
  154. package/dist/editor/types.d.ts +1 -1
  155. package/dist/encryption/index.cjs +2 -22
  156. package/dist/encryption/index.cjs.map +1 -1
  157. package/dist/encryption/index.d.cts +1 -1
  158. package/dist/encryption/index.d.ts +1 -1
  159. package/dist/encryption/index.js +2 -22
  160. package/dist/encryption/index.js.map +1 -1
  161. package/dist/encryption/types.d.cts +1 -1
  162. package/dist/encryption/types.d.ts +1 -1
  163. package/dist/import/index.cjs +1 -1
  164. package/dist/import/index.d.cts +3 -3
  165. package/dist/import/index.d.ts +3 -3
  166. package/dist/import/index.js +1 -1
  167. package/dist/{import-7YyyD_U_.cjs → import-CNk89mqy.cjs} +3 -3
  168. package/dist/{import-7YyyD_U_.cjs.map → import-CNk89mqy.cjs.map} +1 -1
  169. package/dist/{import-xliONVib.js → import-DiMQCzLa.js} +3 -3
  170. package/dist/{import-xliONVib.js.map → import-DiMQCzLa.js.map} +1 -1
  171. package/dist/{index-1r_CskjU.d.ts → index--ZpnE3YT.d.cts} +3 -3
  172. package/dist/{index-DBklbaTp.d.cts → index-B5w7WlaU.d.cts} +5 -1
  173. package/dist/{index-DBklbaTp.d.ts → index-B5w7WlaU.d.ts} +5 -1
  174. package/dist/{index-C77vTm2K.d.ts → index-BDZvaRud.d.ts} +6 -6
  175. package/dist/{index-KuQ79Mnz.d.ts → index-BVhHt5lx.d.cts} +18 -26
  176. package/dist/{index-NC1dXRTD.d.ts → index-BfqkgPGI.d.cts} +7 -13
  177. package/dist/{index-NC1dXRTD.d.cts → index-BfqkgPGI.d.ts} +7 -13
  178. package/dist/{index-V7XKUQm9.d.cts → index-BgR5zcjJ.d.ts} +18 -26
  179. package/dist/{index-BK-qHT39.d.ts → index-ByRpNVcs.d.cts} +83 -17
  180. package/dist/{index-pXN4LWUX.d.ts → index-C11JSxBY.d.ts} +8 -11
  181. package/dist/{index-GjcJTCbz.d.cts → index-C4TNAA8-.d.cts} +8 -11
  182. package/dist/{index-BMqLPS6S.d.ts → index-CXcWpZQ2.d.cts} +4 -12
  183. package/dist/{index-BMqLPS6S.d.cts → index-CXcWpZQ2.d.ts} +4 -12
  184. package/dist/{index-GfKzh267.d.ts → index-CaaTOANF.d.ts} +395 -297
  185. package/dist/{index-Dx52hNLP.d.cts → index-CcMHJcuP.d.cts} +3 -3
  186. package/dist/{index-DVw4Av4b.d.cts → index-Cvbjp3jx.d.cts} +6 -6
  187. package/dist/{index-DppA4k3b.d.cts → index-Cz0MXhzs.d.cts} +5 -5
  188. package/dist/{index-6Xe81qN3.d.ts → index-D-VMgpGc.d.ts} +5 -5
  189. package/dist/{index-DWf6FXOr.d.cts → index-D7-o-oGa.d.ts} +3 -3
  190. package/dist/{index-CWoEnDJ_.d.cts → index-DCRKjihs.d.ts} +83 -17
  191. package/dist/{kaiAgentClient-CHpULyeG.d.cts → index-DNThyEej.d.cts} +14 -5
  192. package/dist/{index-DXSmFkol.d.cts → index-DOAZmWvh.d.cts} +6 -6
  193. package/dist/{index-BuegqrS1.d.ts → index-D_-4uQF8.d.ts} +3 -3
  194. package/dist/index-DbLFwXgb.d.cts +116 -0
  195. package/dist/{index-De5qUWhp.d.ts → index-DnQTuc6t.d.ts} +6 -6
  196. package/dist/{kaiAgentClient-B5L4gbQ1.d.ts → index-Qb7X6-ph.d.ts} +14 -5
  197. package/dist/{index-CHXnJQ9s.d.cts → index-cWp_V6K5.d.cts} +395 -297
  198. package/dist/index-rwK7GcB2.d.ts +116 -0
  199. package/dist/index.cjs +1498 -901
  200. package/dist/index.cjs.map +1 -1
  201. package/dist/index.d.cts +7 -7
  202. package/dist/index.d.ts +7 -7
  203. package/dist/index.js +1497 -902
  204. package/dist/index.js.map +1 -1
  205. package/dist/isLoginPageRedirect-XPwAOKK3.js +14 -0
  206. package/dist/isLoginPageRedirect-XPwAOKK3.js.map +1 -0
  207. package/dist/isLoginPageRedirect-jQHiLrG7.cjs +19 -0
  208. package/dist/isLoginPageRedirect-jQHiLrG7.cjs.map +1 -0
  209. package/dist/{jobStatus-0_Y3Sr4i.cjs → jobStatus-BMlsyXWI.cjs} +19 -45
  210. package/dist/jobStatus-BMlsyXWI.cjs.map +1 -0
  211. package/dist/{jobStatus-PSZJMTiA.js → jobStatus-CfRtsIpv.js} +19 -45
  212. package/dist/jobStatus-CfRtsIpv.js.map +1 -0
  213. package/dist/kaiAgent/index.cjs +1 -1
  214. package/dist/kaiAgent/index.d.cts +3 -2
  215. package/dist/kaiAgent/index.d.ts +3 -2
  216. package/dist/kaiAgent/index.js +1 -1
  217. package/dist/kaiAgent/types.d.cts +2 -2
  218. package/dist/kaiAgent/types.d.ts +2 -2
  219. package/dist/{kaiAgent-CcT2oNip.js → kaiAgent-Dp20HLTh.js} +32 -11
  220. package/dist/kaiAgent-Dp20HLTh.js.map +1 -0
  221. package/dist/{kaiAgent-DaB6UCsh.cjs → kaiAgent-QNoeVKPs.cjs} +32 -11
  222. package/dist/kaiAgent-QNoeVKPs.cjs.map +1 -0
  223. package/dist/kaiMemory-CClSPInt.cjs +289 -0
  224. package/dist/kaiMemory-CClSPInt.cjs.map +1 -0
  225. package/dist/kaiMemory-D0Y_16U4.js +260 -0
  226. package/dist/kaiMemory-D0Y_16U4.js.map +1 -0
  227. package/dist/management/index.cjs +1 -1
  228. package/dist/management/index.d.cts +1 -1
  229. package/dist/management/index.d.ts +1 -1
  230. package/dist/management/index.js +1 -1
  231. package/dist/management/types.d.cts +2 -2
  232. package/dist/management/types.d.ts +2 -2
  233. package/dist/{management-DeZiQSlw.cjs → management-CCY0IYnq.cjs} +59 -24
  234. package/dist/management-CCY0IYnq.cjs.map +1 -0
  235. package/dist/{management-ckdnu1dA.js → management-DvmPiG64.js} +59 -24
  236. package/dist/management-DvmPiG64.js.map +1 -0
  237. package/dist/metastore/index.cjs +1 -1
  238. package/dist/metastore/index.d.cts +1 -1
  239. package/dist/metastore/index.d.ts +1 -1
  240. package/dist/metastore/index.js +1 -1
  241. package/dist/metastore/types.d.cts +2 -2
  242. package/dist/metastore/types.d.ts +2 -2
  243. package/dist/{metastore-B0PolCjQ.js → metastore-BycJxe7A.js} +14 -8
  244. package/dist/metastore-BycJxe7A.js.map +1 -0
  245. package/dist/{metastore-9AGrwjmN.cjs → metastore-XtWciCZT.cjs} +14 -8
  246. package/dist/metastore-XtWciCZT.cjs.map +1 -0
  247. package/dist/microsoftGraph/index.cjs +2 -2
  248. package/dist/microsoftGraph/index.d.cts +2 -2
  249. package/dist/microsoftGraph/index.d.ts +2 -2
  250. package/dist/microsoftGraph/index.js +2 -2
  251. package/dist/microsoftGraph/types.d.cts +1 -1
  252. package/dist/microsoftGraph/types.d.ts +1 -1
  253. package/dist/middleware-CBwrtgQd.js +34 -0
  254. package/dist/middleware-CBwrtgQd.js.map +1 -0
  255. package/dist/middleware-IjYx3d5u.cjs +45 -0
  256. package/dist/middleware-IjYx3d5u.cjs.map +1 -0
  257. package/dist/notifications/index.cjs +4 -4
  258. package/dist/notifications/index.d.cts +2 -2
  259. package/dist/notifications/index.d.ts +2 -2
  260. package/dist/notifications/index.js +4 -4
  261. package/dist/notifications/types.d.cts +1 -1
  262. package/dist/notifications/types.d.ts +1 -1
  263. package/dist/oauth/index.cjs +1 -1
  264. package/dist/oauth/index.d.cts +2 -2
  265. package/dist/oauth/index.d.ts +2 -2
  266. package/dist/oauth/index.js +1 -1
  267. package/dist/oauth/types.d.cts +1 -1
  268. package/dist/oauth/types.d.ts +1 -1
  269. package/dist/{oauth-DNtv4Ihb.cjs → oauth--2p8jkJf.cjs} +5 -5
  270. package/dist/{oauth-DNtv4Ihb.cjs.map → oauth--2p8jkJf.cjs.map} +1 -1
  271. package/dist/{oauth-BnHVf4cB.js → oauth-l5zE39cD.js} +5 -5
  272. package/dist/{oauth-BnHVf4cB.js.map → oauth-l5zE39cD.js.map} +1 -1
  273. package/dist/omnisearch/index.cjs +6 -14
  274. package/dist/omnisearch/index.cjs.map +1 -1
  275. package/dist/omnisearch/index.d.cts +6 -14
  276. package/dist/omnisearch/index.d.ts +6 -14
  277. package/dist/omnisearch/index.js +6 -14
  278. package/dist/omnisearch/index.js.map +1 -1
  279. package/dist/omnisearch/types.d.cts +1 -1
  280. package/dist/omnisearch/types.d.ts +1 -1
  281. package/dist/{project-DCHOxRWd.d.ts → project-B15gStbM.d.ts} +2 -2
  282. package/dist/{project-BRpzv3yE.d.cts → project-cHKuGvqJ.d.cts} +2 -2
  283. package/dist/queryService/index.cjs +1 -1
  284. package/dist/queryService/index.d.cts +1 -1
  285. package/dist/queryService/index.d.ts +1 -1
  286. package/dist/queryService/index.js +1 -1
  287. package/dist/queryService/types.d.cts +1 -1
  288. package/dist/queryService/types.d.ts +1 -1
  289. package/dist/{queryService-j3XZ2mX6.js → queryService-CCOYbRbw.js} +6 -6
  290. package/dist/{queryService-j3XZ2mX6.js.map → queryService-CCOYbRbw.js.map} +1 -1
  291. package/dist/{queryService-BVwD6Vmc.cjs → queryService-CQzclHdL.cjs} +6 -6
  292. package/dist/{queryService-BVwD6Vmc.cjs.map → queryService-CQzclHdL.cjs.map} +1 -1
  293. package/dist/queue/index.cjs +1 -1
  294. package/dist/queue/index.d.cts +3 -3
  295. package/dist/queue/index.d.ts +3 -3
  296. package/dist/queue/index.js +1 -1
  297. package/dist/queue/types.d.cts +1 -1
  298. package/dist/queue/types.d.ts +1 -1
  299. package/dist/{queue-Dagl0sdP.js → queue-Cowbg6bR.js} +8 -11
  300. package/dist/queue-Cowbg6bR.js.map +1 -0
  301. package/dist/{queue-e3rMWbmK.cjs → queue-UG_BWKIC.cjs} +8 -11
  302. package/dist/queue-UG_BWKIC.cjs.map +1 -0
  303. package/dist/scheduler/index.cjs +4 -4
  304. package/dist/scheduler/index.d.cts +2 -2
  305. package/dist/scheduler/index.d.ts +2 -2
  306. package/dist/scheduler/index.js +4 -4
  307. package/dist/scheduler/types.d.cts +1 -1
  308. package/dist/scheduler/types.d.ts +1 -1
  309. package/dist/sdk/configurations/index.cjs +1 -1
  310. package/dist/sdk/configurations/index.d.cts +11 -11
  311. package/dist/sdk/configurations/index.d.ts +11 -11
  312. package/dist/sdk/configurations/index.js +1 -1
  313. package/dist/sdk/developerPortal/index.cjs +10 -18
  314. package/dist/sdk/developerPortal/index.cjs.map +1 -1
  315. package/dist/sdk/developerPortal/index.d.cts +7 -15
  316. package/dist/sdk/developerPortal/index.d.ts +7 -15
  317. package/dist/sdk/developerPortal/index.js +7 -15
  318. package/dist/sdk/developerPortal/index.js.map +1 -1
  319. package/dist/sdk/kaiMemory/index.cjs +7 -0
  320. package/dist/sdk/kaiMemory/index.d.cts +41 -0
  321. package/dist/sdk/kaiMemory/index.d.ts +41 -0
  322. package/dist/sdk/kaiMemory/index.js +2 -0
  323. package/dist/sdk/kaiMemory/types.cjs +0 -0
  324. package/dist/sdk/kaiMemory/types.d.cts +2 -0
  325. package/dist/sdk/kaiMemory/types.d.ts +2 -0
  326. package/dist/sdk/kaiMemory/types.js +1 -0
  327. package/dist/sdk/queryService/index.cjs +2 -2
  328. package/dist/sdk/queryService/index.d.cts +1 -1
  329. package/dist/sdk/queryService/index.d.ts +1 -1
  330. package/dist/sdk/queryService/index.js +2 -2
  331. package/dist/sdk/semanticLayer/index.cjs +1 -1
  332. package/dist/sdk/semanticLayer/index.d.cts +16 -40
  333. package/dist/sdk/semanticLayer/index.d.ts +16 -40
  334. package/dist/sdk/semanticLayer/index.js +1 -1
  335. package/dist/sdk/semanticLayer/types.d.cts +1 -1
  336. package/dist/sdk/semanticLayer/types.d.ts +1 -1
  337. package/dist/sdk/storage/index.cjs +0 -5
  338. package/dist/sdk/storage/index.cjs.map +1 -1
  339. package/dist/sdk/storage/index.d.cts +2 -2
  340. package/dist/sdk/storage/index.d.ts +2 -2
  341. package/dist/sdk/storage/index.js +1 -5
  342. package/dist/sdk/storage/index.js.map +1 -1
  343. package/dist/sdk/tag/index.cjs +1 -1
  344. package/dist/sdk/tag/index.d.cts +3 -3
  345. package/dist/sdk/tag/index.d.ts +3 -3
  346. package/dist/sdk/tag/index.js +1 -1
  347. package/dist/sdk/tag/types.d.cts +1 -1
  348. package/dist/sdk/tag/types.d.ts +1 -1
  349. package/dist/sdk/vault/index.cjs +1 -1
  350. package/dist/sdk/vault/index.d.cts +1 -1
  351. package/dist/sdk/vault/index.d.ts +1 -1
  352. package/dist/sdk/vault/index.js +1 -1
  353. package/dist/{semanticLayer-9uTaU7UT.cjs → semanticLayer-CKDVkU56.cjs} +62 -183
  354. package/dist/semanticLayer-CKDVkU56.cjs.map +1 -0
  355. package/dist/{semanticLayer-6_gtFxDu.js → semanticLayer-pYy082Ju.js} +62 -183
  356. package/dist/semanticLayer-pYy082Ju.js.map +1 -0
  357. package/dist/status/index.cjs +1 -1
  358. package/dist/status/index.d.cts +1 -1
  359. package/dist/status/index.d.ts +1 -1
  360. package/dist/status/index.js +1 -1
  361. package/dist/storage/index.cjs +5 -5
  362. package/dist/storage/index.d.cts +2 -2
  363. package/dist/storage/index.d.ts +2 -2
  364. package/dist/storage/index.js +5 -5
  365. package/dist/storage/types.d.cts +2 -2
  366. package/dist/storage/types.d.ts +2 -2
  367. package/dist/{storage-Ob1LUIDq.js → storage-CZQHZcXG.js} +109 -302
  368. package/dist/storage-CZQHZcXG.js.map +1 -0
  369. package/dist/{storage-HFUdEy7P.cjs → storage-JinL1y1s.cjs} +109 -302
  370. package/dist/storage-JinL1y1s.cjs.map +1 -0
  371. package/dist/stream/index.cjs +3 -3
  372. package/dist/stream/index.d.cts +2 -2
  373. package/dist/stream/index.d.ts +2 -2
  374. package/dist/stream/index.js +3 -3
  375. package/dist/stream/types.d.cts +1 -1
  376. package/dist/stream/types.d.ts +1 -1
  377. package/dist/syncActions/index.cjs +1 -1
  378. package/dist/syncActions/index.d.cts +1 -1
  379. package/dist/syncActions/index.d.ts +1 -1
  380. package/dist/syncActions/index.js +1 -1
  381. package/dist/syncActions/types.d.cts +2 -2
  382. package/dist/syncActions/types.d.ts +2 -2
  383. package/dist/{syncActions-B3NS5a0g.js → syncActions-ChNWuhYA.js} +260 -111
  384. package/dist/syncActions-ChNWuhYA.js.map +1 -0
  385. package/dist/{syncActions-D2DhY6pP.cjs → syncActions-mFlF16cl.cjs} +260 -111
  386. package/dist/syncActions-mFlF16cl.cjs.map +1 -0
  387. package/dist/{tag-CsoOZWB_.cjs → tag-DHS_soa7.cjs} +2 -2
  388. package/dist/{tag-CsoOZWB_.cjs.map → tag-DHS_soa7.cjs.map} +1 -1
  389. package/dist/{tag-DCsoewjL.js → tag-hh-1nhNr.js} +2 -2
  390. package/dist/{tag-DCsoewjL.js.map → tag-hh-1nhNr.js.map} +1 -1
  391. package/dist/telemetry/index.cjs +7 -11
  392. package/dist/telemetry/index.cjs.map +1 -1
  393. package/dist/telemetry/index.d.cts +5 -9
  394. package/dist/telemetry/index.d.ts +5 -9
  395. package/dist/telemetry/index.js +7 -11
  396. package/dist/telemetry/index.js.map +1 -1
  397. package/dist/telemetry/types.d.cts +1 -1
  398. package/dist/telemetry/types.d.ts +1 -1
  399. package/dist/{types-DqxIx9Pi.d.cts → types-6kuMW4JW.d.cts} +2 -2
  400. package/dist/{types-Ct0YPy2w.d.ts → types-B2w2TtSA.d.ts} +3 -3
  401. package/dist/{types-M46WuBSm.d.cts → types-B61aCifg.d.cts} +2 -2
  402. package/dist/{types-COL1kVEB.d.cts → types-B8N_k79M.d.cts} +2 -2
  403. package/dist/{types-Jw10xuOW.d.cts → types-BIECJYun.d.ts} +171 -44
  404. package/dist/{types-DZk3XHiN.d.cts → types-BLNB882w.d.cts} +3 -3
  405. package/dist/{types-BEe50G2r.d.cts → types-BPy5Ozee.d.cts} +2 -2
  406. package/dist/{types-gi4Eay19.d.ts → types-BS4jwuMi.d.ts} +7 -15
  407. package/dist/{types-BrYkBQo4.d.ts → types-BTK7Bv3n.d.cts} +171 -44
  408. package/dist/{types-D6UmMa6E.d.ts → types-BZDV8DZk.d.ts} +3 -3
  409. package/dist/{types-Cz83RiVu.d.cts → types-B_iLJlp4.d.ts} +255 -12
  410. package/dist/{types-CmF3pR2n.d.cts → types-BiMahEK8.d.cts} +91 -237
  411. package/dist/{types-BH5LLeJy.d.ts → types-Bl03Cg2n.d.cts} +255 -12
  412. package/dist/{types-bGQb4Jtl.d.cts → types-ByLH46Dt.d.cts} +13 -8
  413. package/dist/{types-g3vU7hcg.d.cts → types-Bydx6ga_.d.cts} +2 -2
  414. package/dist/{types-B95uNQ9o.d.ts → types-CKmTZSPG.d.ts} +91 -237
  415. package/dist/{types-D_j2Uq5X.d.cts → types-CMzQSHAQ.d.cts} +3 -3
  416. package/dist/{types-N3EChotg.d.cts → types-CP_LBmw3.d.cts} +2 -2
  417. package/dist/{types-CW6lCqrC.d.cts → types-CQFOCQzk.d.ts} +230 -43
  418. package/dist/{types-zZBxJ0P-.d.ts → types-CWyXTMwy.d.ts} +2 -2
  419. package/dist/{types-CPB-eF82.d.ts → types-CZJlLCbA.d.ts} +2 -2
  420. package/dist/{types-l9o4gFsI.d.ts → types-CZXPu3gn.d.ts} +2 -2
  421. package/dist/{types-BztF4HeB.d.ts → types-CaOtNjSZ.d.ts} +6 -13
  422. package/dist/{types-BTWIPEiU.d.ts → types-CfwqVkEA.d.ts} +2 -2
  423. package/dist/types-Cg14ncdV.d.ts +63 -0
  424. package/dist/{types-BsxLGDoC.d.cts → types-CoJVrRAD.d.ts} +2 -2
  425. package/dist/{types-DYzJ6K2e.d.ts → types-CqwHP7mN.d.cts} +230 -43
  426. package/dist/{types-CKiW3n6v.d.ts → types-D3wcs4tp.d.ts} +2 -2
  427. package/dist/{types-DOyNe7oe.d.cts → types-DDOa07rU.d.cts} +7 -15
  428. package/dist/{types-BW2BXUB4.d.cts → types-DE9hgr7i.d.cts} +2 -2
  429. package/dist/{types-BOqD3Hqy.d.cts → types-DEzW1CfI.d.cts} +3 -3
  430. package/dist/{types-OaD-cbbl.d.ts → types-DIiOMV-t.d.ts} +3 -3
  431. package/dist/{types-B-P4vQe0.d.cts → types-DKc1gmd9.d.ts} +857 -131
  432. package/dist/{types-BrPlv-NS.d.ts → types-DRCMBt89.d.ts} +3 -3
  433. package/dist/{types-BQvv4RaI.d.cts → types-DUMal2E-.d.cts} +5 -8
  434. package/dist/types-DWiLcrxt.d.cts +63 -0
  435. package/dist/{types-DNxOHnZI.d.cts → types-Dd31Lw4S.d.cts} +2 -2
  436. package/dist/{types-Dmu-8g4O.d.ts → types-DekYAlA-.d.ts} +3 -3
  437. package/dist/{types-B2U9cFcx.d.ts → types-DgJeO9Nd.d.ts} +2 -2
  438. package/dist/{types-nrviNdzZ.d.ts → types-DicSaNwq.d.ts} +2 -2
  439. package/dist/{types-Crhy0c9m.d.cts → types-DinIJ1D_.d.cts} +40 -11
  440. package/dist/{types-DhDNS-5B.d.ts → types-DlQw6FCi.d.ts} +13 -8
  441. package/dist/{types-_RhBCj4_.d.cts → types-DoZtE9tz.d.cts} +3 -3
  442. package/dist/{types-Bxhh2SJr.d.ts → types-DrvKfXXd.d.cts} +2 -2
  443. package/dist/{types-DPl8pZsY.d.ts → types-Dtuvhm3K.d.cts} +857 -131
  444. package/dist/{types-CcrvrAJX.d.ts → types-DwVSj-Da.d.ts} +5 -8
  445. package/dist/{types-C2vefB4D.d.ts → types-FwRmjsNN.d.ts} +10 -34
  446. package/dist/{types-C0_2KZ-A.d.ts → types-RbrfiY8T.d.ts} +2 -2
  447. package/dist/{types-DfvdbRPL.d.ts → types-WZBztugL.d.ts} +2 -2
  448. package/dist/{types-52irAt99.d.cts → types-YHUEArkR.d.cts} +2 -2
  449. package/dist/{types-fX4gbxfV.d.cts → types-bc-4z_gc.d.cts} +10 -34
  450. package/dist/{types-3eUgOA7I.d.cts → types-ePSqbXRr.d.cts} +6 -13
  451. package/dist/{types-DrqKICcK.d.ts → types-n4PTnLii.d.ts} +40 -11
  452. package/dist/{types-DXskkNp8.d.cts → types-pvQzbgNE.d.cts} +3 -3
  453. package/dist/{types-DajzGOKB.d.ts → types-q-1r_9d1.d.ts} +2 -2
  454. package/dist/{types-D8Rrz51O.d.cts → types-tKkeLa2B.d.cts} +2 -2
  455. package/dist/{validateConnectionStatus-828HV8WL.js → validateConnectionStatus-BEGu8wXT.js} +6 -10
  456. package/dist/validateConnectionStatus-BEGu8wXT.js.map +1 -0
  457. package/dist/{validateConnectionStatus-CvBKyeDO.cjs → validateConnectionStatus-BEYkQpu9.cjs} +6 -10
  458. package/dist/validateConnectionStatus-BEYkQpu9.cjs.map +1 -0
  459. package/dist/vault/index.cjs +4 -4
  460. package/dist/vault/index.d.cts +1 -1
  461. package/dist/vault/index.d.ts +1 -1
  462. package/dist/vault/index.js +4 -4
  463. package/dist/vault/types.d.cts +1 -1
  464. package/dist/vault/types.d.ts +1 -1
  465. package/package.json +32 -4
  466. package/surface/apps.md +3 -3
  467. package/surface/auth.md +13 -6
  468. package/surface/chat.md +6 -6
  469. package/surface/kaiAgent.md +9 -8
  470. package/surface/management.md +14 -5
  471. package/surface/metastore.md +2 -2
  472. package/surface/queue.md +3 -3
  473. package/surface/sdk.md +13 -3
  474. package/surface/storage.md +6 -6
  475. package/surface/syncActions.md +16 -0
  476. package/dist/ValidationError-BekhphAq.js +0 -48
  477. package/dist/ValidationError-BekhphAq.js.map +0 -1
  478. package/dist/ValidationError-CLVJCCwH.cjs.map +0 -1
  479. package/dist/authClient-8yU1last.cjs.map +0 -1
  480. package/dist/authClient-BTo4Afm6.js.map +0 -1
  481. package/dist/componentId-DkyQ8PM0.cjs.map +0 -1
  482. package/dist/componentId-vJz-kWs6.js.map +0 -1
  483. package/dist/concurrent-CH9fbNr3.js.map +0 -1
  484. package/dist/concurrent-tbiIa0UL.cjs.map +0 -1
  485. package/dist/configurations-BVvcimzo.js.map +0 -1
  486. package/dist/configurations-CyFF9Dtu.cjs.map +0 -1
  487. package/dist/configurations-VtNE0nrT.js.map +0 -1
  488. package/dist/configurations-zkNjr73Q.cjs.map +0 -1
  489. package/dist/createFetchClient-BlgPbjFj.cjs.map +0 -1
  490. package/dist/createFetchClient-C-cadpBx.js.map +0 -1
  491. package/dist/credential-CAulvfZ-.cjs +0 -47
  492. package/dist/credential-CAulvfZ-.cjs.map +0 -1
  493. package/dist/credential-DWXbo4IX.js +0 -36
  494. package/dist/credential-DWXbo4IX.js.map +0 -1
  495. package/dist/dedupe-CiskLkGR.cjs +0 -30
  496. package/dist/dedupe-CiskLkGR.cjs.map +0 -1
  497. package/dist/dedupe-DYIHgZoG.js +0 -25
  498. package/dist/dedupe-DYIHgZoG.js.map +0 -1
  499. package/dist/index-3LUk2rpD.d.ts +0 -65
  500. package/dist/index-CW3Pj7DY.d.cts +0 -65
  501. package/dist/isLoginPageRedirect-Cm6Pn8Pj.cjs +0 -25
  502. package/dist/isLoginPageRedirect-Cm6Pn8Pj.cjs.map +0 -1
  503. package/dist/isLoginPageRedirect-hyPqyWNX.js +0 -20
  504. package/dist/isLoginPageRedirect-hyPqyWNX.js.map +0 -1
  505. package/dist/jobStatus-0_Y3Sr4i.cjs.map +0 -1
  506. package/dist/jobStatus-PSZJMTiA.js.map +0 -1
  507. package/dist/kaiAgent-CcT2oNip.js.map +0 -1
  508. package/dist/kaiAgent-DaB6UCsh.cjs.map +0 -1
  509. package/dist/management-DeZiQSlw.cjs.map +0 -1
  510. package/dist/management-ckdnu1dA.js.map +0 -1
  511. package/dist/metastore-9AGrwjmN.cjs.map +0 -1
  512. package/dist/metastore-B0PolCjQ.js.map +0 -1
  513. package/dist/queue-Dagl0sdP.js.map +0 -1
  514. package/dist/queue-e3rMWbmK.cjs.map +0 -1
  515. package/dist/semanticLayer-6_gtFxDu.js.map +0 -1
  516. package/dist/semanticLayer-9uTaU7UT.cjs.map +0 -1
  517. package/dist/storage-HFUdEy7P.cjs.map +0 -1
  518. package/dist/storage-Ob1LUIDq.js.map +0 -1
  519. package/dist/syncActions-B3NS5a0g.js.map +0 -1
  520. package/dist/syncActions-D2DhY6pP.cjs.map +0 -1
  521. package/dist/validateConnectionStatus-828HV8WL.js.map +0 -1
  522. package/dist/validateConnectionStatus-CvBKyeDO.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tag-CsoOZWB_.cjs","names":["concurrent","generateUUID"],"sources":["../src/utils/keboolaUID.ts","../src/sdks/tag/tagSdk.ts"],"sourcesContent":["type KeboolaObjectType =\n | 'data-catalog'\n | 'table'\n | 'bucket'\n | 'flow'\n | 'configuration'\n | 'transformation'\n | 'data-app'\n | 'workspace';\n\nexport type KeboolaObjectId = {\n uid: string;\n type: KeboolaObjectType;\n projectId: number;\n};\n\n//As a delimiter for serialization, we use a double hyphen (--) instead of a single hyphen in type names.\nconst KEBOOLA_OBJECT_ID_DELIMITER = '--';\n\n/**\n * There is a proposal for a string format to identify objects in Keboola.\n *\n * https://keboola.atlassian.net/wiki/spaces/ENGG/pages/3967615431/Keboola+UUID+Format\n * Unfortunately, this format will not pass BE validation as `:` is not allowed in the `uid`, and the length is limited to 50 characters only.\n *\n */\nexport const keboolaUID = {\n serialize: (input: KeboolaObjectId): string => {\n if (input.uid === '')\n throw new Error('Invalid Keboola Object ID: uid of an object cannot be empty');\n\n return ['KID', input.projectId, input.type, input.uid].join(KEBOOLA_OBJECT_ID_DELIMITER);\n },\n\n deserialize: (input: string): KeboolaObjectId => {\n const [identifier, projectId, type, uid] = input.split(KEBOOLA_OBJECT_ID_DELIMITER);\n if (identifier !== 'KID' || !projectId || !type || !uid)\n throw new Error('Invalid Keboola Object ID');\n\n return {\n projectId: Number(projectId),\n type: type as KeboolaObjectType,\n uid,\n };\n },\n};\n","import type { MetaObject, RawMetaObject } from '../../clients/metastore/repository/types';\nimport { concurrent, generateUUID, type KeboolaObjectId, keboolaUID } from '../../utils';\n\nimport type {\n CreateMetaObjectMetaDataInput,\n MetastoreClient,\n TagBindingData,\n TagData,\n TagWithBindings,\n UpdateMetaObjectMetaDataInput,\n} from './types';\n\nconst ObjectType = {\n TAG: 'tag',\n TAG_BINDING: 'tag-binding',\n};\ntype ObjectTypes = (typeof ObjectType)[keyof typeof ObjectType];\n\n// The live metastore envelope carries the data payload in `attributes`, the UUID in the\n// top-level `id`, and audit fields in `meta`. Normalize into { uuid, data, meta }.\nconst mapObject = <TData extends Record<string, unknown>>(\n item: RawMetaObject<TData>,\n): MetaObject<TData> => ({\n uuid: item.id,\n data: item.attributes,\n meta: item.meta,\n});\n\ntype Options = {\n metastoreClient: MetastoreClient;\n};\n\nexport const createTagSdk = ({ metastoreClient }: Options) => {\n const _getTagMetaObjects = async <T extends Record<string, unknown>>(\n type: ObjectTypes,\n signal?: AbortSignal,\n ) => {\n const response = await metastoreClient.repository.getMetaObjects<T>(\n {\n objectType: type,\n },\n signal,\n );\n return response.data.map(mapObject);\n };\n\n const _getAllTagBindingMapByTagId = async (signal?: AbortSignal) => {\n const tagBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING, signal);\n return Object.groupBy(tagBindings, (binding) => binding.data.tagUUID);\n };\n\n const _getTagBindingMapByTagId = async (\n tagUUIDs: string[],\n objectId: KeboolaObjectId,\n signal?: AbortSignal,\n ) => {\n const tagBindingMapByTagId = await _getAllTagBindingMapByTagId(signal);\n const objectUID = keboolaUID.serialize(objectId);\n return tagUUIDs.reduce<Record<string, MetaObject<TagBindingData> | null>>((acc, tagUUID) => {\n if (acc[tagUUID]) return acc; // filter out duplicated ids\n\n const tagBindings = tagBindingMapByTagId[tagUUID] ?? [];\n acc[tagUUID] = tagBindings.find((binding) => binding.data.objectUID === objectUID) ?? null;\n return acc;\n }, {});\n };\n\n const _deleteTagBindings = async (tagBindings: MetaObject<TagBindingData>[]) => {\n await concurrent({\n items: tagBindings,\n process: async (binding) =>\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG_BINDING,\n UUID: binding.uuid,\n }),\n concurrency: 5,\n });\n };\n\n const getTags = async (signal?: AbortSignal) => {\n const [tags, tagBindingMapByTagId] = await Promise.all([\n _getTagMetaObjects<TagData>(ObjectType.TAG, signal),\n _getAllTagBindingMapByTagId(signal),\n ]);\n\n return tags.map<TagWithBindings>((tag) => ({\n tag,\n bindings: tagBindingMapByTagId[tag.uuid] ?? [],\n }));\n };\n\n const getTagsByObjectId = async (objectId: KeboolaObjectId, signal?: AbortSignal) => {\n const tags = await getTags(signal);\n\n const keboolaObjectUID = keboolaUID.serialize(objectId);\n const mapByTagId = tags.reduce<Record<string, Set<string>>>((acc, { tag, bindings }) => {\n acc[tag.uuid] = new Set(bindings.map((binding) => binding.data.objectUID));\n return acc;\n }, {});\n\n return tags.filter(({ tag }) => mapByTagId[tag.uuid]?.has(keboolaObjectUID));\n };\n\n const createTag = async (data: TagData, meta: CreateMetaObjectMetaDataInput = {}) => {\n const response = await metastoreClient.repository.createMetaObject<TagData>({\n objectType: ObjectType.TAG,\n data,\n name: generateUUID(),\n ...meta,\n });\n\n return mapObject(response.data);\n };\n\n const updateTag = async (\n tagUUID: string,\n data: TagData,\n meta: UpdateMetaObjectMetaDataInput = {},\n ) => {\n const response = await metastoreClient.repository.updateMetaObject<TagData>({\n objectType: ObjectType.TAG,\n UUID: tagUUID,\n data,\n ...meta,\n });\n\n return mapObject(response.data);\n };\n\n const deleteTag = async (tagUUID: string) => {\n const allBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING);\n const tagBindings = allBindings.filter(({ data }) => data.tagUUID === tagUUID);\n\n await Promise.all([\n // delete tag itself\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG,\n UUID: tagUUID,\n }),\n // delete all tag associations\n _deleteTagBindings(tagBindings),\n ]);\n };\n\n const assignTags = async (\n tagUUIDs: string[],\n objectId: KeboolaObjectId,\n meta: CreateMetaObjectMetaDataInput = {},\n ) => {\n const tagBindingMapByTagId = await _getTagBindingMapByTagId(tagUUIDs, objectId);\n // Assign only the unassigned tag IDs. Ignore the rest.\n const unassignedTagUUIDs = tagUUIDs.filter((tagUUID) => tagBindingMapByTagId[tagUUID] === null);\n\n await concurrent({\n items: unassignedTagUUIDs,\n process: async (tagUUID) =>\n metastoreClient.repository.createMetaObject<TagBindingData>({\n objectType: ObjectType.TAG_BINDING,\n data: {\n objectUID: keboolaUID.serialize(objectId),\n tagUUID: tagUUID,\n },\n name: generateUUID(),\n ...meta,\n }),\n concurrency: 5,\n });\n };\n\n const unassignTags = async (tagUUIDs: string[], objectID: KeboolaObjectId) => {\n const tagBindingMapByTagId = await _getTagBindingMapByTagId(tagUUIDs, objectID);\n const assignedTagUUIDs = tagUUIDs.filter((tagUUID) => tagBindingMapByTagId[tagUUID] !== null);\n\n const tagBindings = assignedTagUUIDs.map((tagUUID) => tagBindingMapByTagId[tagUUID]!);\n\n await concurrent({\n items: tagBindings,\n process: async (tagBinding) =>\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG_BINDING,\n UUID: tagBinding.uuid,\n }),\n concurrency: 5,\n });\n };\n\n const unassignAllTags = async (objectID: KeboolaObjectId, signal?: AbortSignal) => {\n const tagBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING, signal);\n\n const objectsTagBindings = tagBindings.filter(\n ({ data }) => data.objectUID === keboolaUID.serialize(objectID),\n );\n\n await _deleteTagBindings(objectsTagBindings);\n };\n\n const createAndAssignTag = async (\n data: TagData,\n objectId: KeboolaObjectId,\n meta: CreateMetaObjectMetaDataInput = {},\n ) => {\n const tag = await createTag(data, meta);\n await assignTags([tag.uuid], objectId, meta);\n return tag;\n };\n\n return {\n // retrievals\n getTags,\n getTagsByObjectId,\n\n // modifications\n createTag,\n updateTag,\n deleteTag,\n assignTags,\n unassignTags,\n unassignAllTags,\n createAndAssignTag,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"tag-DHS_soa7.cjs","names":["concurrent","generateUUID"],"sources":["../src/utils/keboolaUID.ts","../src/sdks/tag/tagSdk.ts"],"sourcesContent":["type KeboolaObjectType =\n | 'data-catalog'\n | 'table'\n | 'bucket'\n | 'flow'\n | 'configuration'\n | 'transformation'\n | 'data-app'\n | 'workspace';\n\nexport type KeboolaObjectId = {\n uid: string;\n type: KeboolaObjectType;\n projectId: number;\n};\n\n//As a delimiter for serialization, we use a double hyphen (--) instead of a single hyphen in type names.\nconst KEBOOLA_OBJECT_ID_DELIMITER = '--';\n\n/**\n * There is a proposal for a string format to identify objects in Keboola.\n *\n * https://keboola.atlassian.net/wiki/spaces/ENGG/pages/3967615431/Keboola+UUID+Format\n * Unfortunately, this format will not pass BE validation as `:` is not allowed in the `uid`, and the length is limited to 50 characters only.\n *\n */\nexport const keboolaUID = {\n serialize: (input: KeboolaObjectId): string => {\n if (input.uid === '')\n throw new Error('Invalid Keboola Object ID: uid of an object cannot be empty');\n\n return ['KID', input.projectId, input.type, input.uid].join(KEBOOLA_OBJECT_ID_DELIMITER);\n },\n\n deserialize: (input: string): KeboolaObjectId => {\n const [identifier, projectId, type, uid] = input.split(KEBOOLA_OBJECT_ID_DELIMITER);\n if (identifier !== 'KID' || !projectId || !type || !uid)\n throw new Error('Invalid Keboola Object ID');\n\n return {\n projectId: Number(projectId),\n type: type as KeboolaObjectType,\n uid,\n };\n },\n};\n","import type { MetaObject, RawMetaObject } from '../../clients/metastore/repository/types';\nimport { concurrent, generateUUID, type KeboolaObjectId, keboolaUID } from '../../utils';\n\nimport type {\n CreateMetaObjectMetaDataInput,\n MetastoreClient,\n TagBindingData,\n TagData,\n TagWithBindings,\n UpdateMetaObjectMetaDataInput,\n} from './types';\n\nconst ObjectType = {\n TAG: 'tag',\n TAG_BINDING: 'tag-binding',\n};\ntype ObjectTypes = (typeof ObjectType)[keyof typeof ObjectType];\n\n// The live metastore envelope carries the data payload in `attributes`, the UUID in the\n// top-level `id`, and audit fields in `meta`. Normalize into { uuid, data, meta }.\nconst mapObject = <TData extends Record<string, unknown>>(\n item: RawMetaObject<TData>,\n): MetaObject<TData> => ({\n uuid: item.id,\n data: item.attributes,\n meta: item.meta,\n});\n\ntype Options = {\n metastoreClient: MetastoreClient;\n};\n\nexport const createTagSdk = ({ metastoreClient }: Options) => {\n const _getTagMetaObjects = async <T extends Record<string, unknown>>(\n type: ObjectTypes,\n signal?: AbortSignal,\n ) => {\n const response = await metastoreClient.repository.getMetaObjects<T>(\n {\n objectType: type,\n },\n signal,\n );\n return response.data.map(mapObject);\n };\n\n const _getAllTagBindingMapByTagId = async (signal?: AbortSignal) => {\n const tagBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING, signal);\n return Object.groupBy(tagBindings, (binding) => binding.data.tagUUID);\n };\n\n const _getTagBindingMapByTagId = async (\n tagUUIDs: string[],\n objectId: KeboolaObjectId,\n signal?: AbortSignal,\n ) => {\n const tagBindingMapByTagId = await _getAllTagBindingMapByTagId(signal);\n const objectUID = keboolaUID.serialize(objectId);\n return tagUUIDs.reduce<Record<string, MetaObject<TagBindingData> | null>>((acc, tagUUID) => {\n if (acc[tagUUID]) return acc; // filter out duplicated ids\n\n const tagBindings = tagBindingMapByTagId[tagUUID] ?? [];\n acc[tagUUID] = tagBindings.find((binding) => binding.data.objectUID === objectUID) ?? null;\n return acc;\n }, {});\n };\n\n const _deleteTagBindings = async (tagBindings: MetaObject<TagBindingData>[]) => {\n await concurrent({\n items: tagBindings,\n process: async (binding) =>\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG_BINDING,\n UUID: binding.uuid,\n }),\n concurrency: 5,\n });\n };\n\n const getTags = async (signal?: AbortSignal) => {\n const [tags, tagBindingMapByTagId] = await Promise.all([\n _getTagMetaObjects<TagData>(ObjectType.TAG, signal),\n _getAllTagBindingMapByTagId(signal),\n ]);\n\n return tags.map<TagWithBindings>((tag) => ({\n tag,\n bindings: tagBindingMapByTagId[tag.uuid] ?? [],\n }));\n };\n\n const getTagsByObjectId = async (objectId: KeboolaObjectId, signal?: AbortSignal) => {\n const tags = await getTags(signal);\n\n const keboolaObjectUID = keboolaUID.serialize(objectId);\n const mapByTagId = tags.reduce<Record<string, Set<string>>>((acc, { tag, bindings }) => {\n acc[tag.uuid] = new Set(bindings.map((binding) => binding.data.objectUID));\n return acc;\n }, {});\n\n return tags.filter(({ tag }) => mapByTagId[tag.uuid]?.has(keboolaObjectUID));\n };\n\n const createTag = async (data: TagData, meta: CreateMetaObjectMetaDataInput = {}) => {\n const response = await metastoreClient.repository.createMetaObject<TagData>({\n objectType: ObjectType.TAG,\n data,\n name: generateUUID(),\n ...meta,\n });\n\n return mapObject(response.data);\n };\n\n const updateTag = async (\n tagUUID: string,\n data: TagData,\n meta: UpdateMetaObjectMetaDataInput = {},\n ) => {\n const response = await metastoreClient.repository.updateMetaObject<TagData>({\n objectType: ObjectType.TAG,\n UUID: tagUUID,\n data,\n ...meta,\n });\n\n return mapObject(response.data);\n };\n\n const deleteTag = async (tagUUID: string) => {\n const allBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING);\n const tagBindings = allBindings.filter(({ data }) => data.tagUUID === tagUUID);\n\n await Promise.all([\n // delete tag itself\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG,\n UUID: tagUUID,\n }),\n // delete all tag associations\n _deleteTagBindings(tagBindings),\n ]);\n };\n\n const assignTags = async (\n tagUUIDs: string[],\n objectId: KeboolaObjectId,\n meta: CreateMetaObjectMetaDataInput = {},\n ) => {\n const tagBindingMapByTagId = await _getTagBindingMapByTagId(tagUUIDs, objectId);\n // Assign only the unassigned tag IDs. Ignore the rest.\n const unassignedTagUUIDs = tagUUIDs.filter((tagUUID) => tagBindingMapByTagId[tagUUID] === null);\n\n await concurrent({\n items: unassignedTagUUIDs,\n process: async (tagUUID) =>\n metastoreClient.repository.createMetaObject<TagBindingData>({\n objectType: ObjectType.TAG_BINDING,\n data: {\n objectUID: keboolaUID.serialize(objectId),\n tagUUID: tagUUID,\n },\n name: generateUUID(),\n ...meta,\n }),\n concurrency: 5,\n });\n };\n\n const unassignTags = async (tagUUIDs: string[], objectID: KeboolaObjectId) => {\n const tagBindingMapByTagId = await _getTagBindingMapByTagId(tagUUIDs, objectID);\n const assignedTagUUIDs = tagUUIDs.filter((tagUUID) => tagBindingMapByTagId[tagUUID] !== null);\n\n const tagBindings = assignedTagUUIDs.map((tagUUID) => tagBindingMapByTagId[tagUUID]!);\n\n await concurrent({\n items: tagBindings,\n process: async (tagBinding) =>\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG_BINDING,\n UUID: tagBinding.uuid,\n }),\n concurrency: 5,\n });\n };\n\n const unassignAllTags = async (objectID: KeboolaObjectId, signal?: AbortSignal) => {\n const tagBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING, signal);\n\n const objectsTagBindings = tagBindings.filter(\n ({ data }) => data.objectUID === keboolaUID.serialize(objectID),\n );\n\n await _deleteTagBindings(objectsTagBindings);\n };\n\n const createAndAssignTag = async (\n data: TagData,\n objectId: KeboolaObjectId,\n meta: CreateMetaObjectMetaDataInput = {},\n ) => {\n const tag = await createTag(data, meta);\n await assignTags([tag.uuid], objectId, meta);\n return tag;\n };\n\n return {\n // retrievals\n getTags,\n getTagsByObjectId,\n\n // modifications\n createTag,\n updateTag,\n deleteTag,\n assignTags,\n unassignTags,\n unassignAllTags,\n createAndAssignTag,\n };\n};\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { t as concurrent } from "./concurrent-CH9fbNr3.js";
1
+ import { t as concurrent } from "./concurrent-BacWxPwi.js";
2
2
  import { t as generateUUID } from "./generateUUID-Dr8l-aoc.js";
3
3
  //#region src/utils/keboolaUID.ts
4
4
  const KEBOOLA_OBJECT_ID_DELIMITER = "--";
@@ -161,4 +161,4 @@ const createTagSdk = ({ metastoreClient }) => {
161
161
  //#endregion
162
162
  export { keboolaUID as n, createTagSdk as t };
163
163
 
164
- //# sourceMappingURL=tag-DCsoewjL.js.map
164
+ //# sourceMappingURL=tag-hh-1nhNr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tag-DCsoewjL.js","names":[],"sources":["../src/utils/keboolaUID.ts","../src/sdks/tag/tagSdk.ts"],"sourcesContent":["type KeboolaObjectType =\n | 'data-catalog'\n | 'table'\n | 'bucket'\n | 'flow'\n | 'configuration'\n | 'transformation'\n | 'data-app'\n | 'workspace';\n\nexport type KeboolaObjectId = {\n uid: string;\n type: KeboolaObjectType;\n projectId: number;\n};\n\n//As a delimiter for serialization, we use a double hyphen (--) instead of a single hyphen in type names.\nconst KEBOOLA_OBJECT_ID_DELIMITER = '--';\n\n/**\n * There is a proposal for a string format to identify objects in Keboola.\n *\n * https://keboola.atlassian.net/wiki/spaces/ENGG/pages/3967615431/Keboola+UUID+Format\n * Unfortunately, this format will not pass BE validation as `:` is not allowed in the `uid`, and the length is limited to 50 characters only.\n *\n */\nexport const keboolaUID = {\n serialize: (input: KeboolaObjectId): string => {\n if (input.uid === '')\n throw new Error('Invalid Keboola Object ID: uid of an object cannot be empty');\n\n return ['KID', input.projectId, input.type, input.uid].join(KEBOOLA_OBJECT_ID_DELIMITER);\n },\n\n deserialize: (input: string): KeboolaObjectId => {\n const [identifier, projectId, type, uid] = input.split(KEBOOLA_OBJECT_ID_DELIMITER);\n if (identifier !== 'KID' || !projectId || !type || !uid)\n throw new Error('Invalid Keboola Object ID');\n\n return {\n projectId: Number(projectId),\n type: type as KeboolaObjectType,\n uid,\n };\n },\n};\n","import type { MetaObject, RawMetaObject } from '../../clients/metastore/repository/types';\nimport { concurrent, generateUUID, type KeboolaObjectId, keboolaUID } from '../../utils';\n\nimport type {\n CreateMetaObjectMetaDataInput,\n MetastoreClient,\n TagBindingData,\n TagData,\n TagWithBindings,\n UpdateMetaObjectMetaDataInput,\n} from './types';\n\nconst ObjectType = {\n TAG: 'tag',\n TAG_BINDING: 'tag-binding',\n};\ntype ObjectTypes = (typeof ObjectType)[keyof typeof ObjectType];\n\n// The live metastore envelope carries the data payload in `attributes`, the UUID in the\n// top-level `id`, and audit fields in `meta`. Normalize into { uuid, data, meta }.\nconst mapObject = <TData extends Record<string, unknown>>(\n item: RawMetaObject<TData>,\n): MetaObject<TData> => ({\n uuid: item.id,\n data: item.attributes,\n meta: item.meta,\n});\n\ntype Options = {\n metastoreClient: MetastoreClient;\n};\n\nexport const createTagSdk = ({ metastoreClient }: Options) => {\n const _getTagMetaObjects = async <T extends Record<string, unknown>>(\n type: ObjectTypes,\n signal?: AbortSignal,\n ) => {\n const response = await metastoreClient.repository.getMetaObjects<T>(\n {\n objectType: type,\n },\n signal,\n );\n return response.data.map(mapObject);\n };\n\n const _getAllTagBindingMapByTagId = async (signal?: AbortSignal) => {\n const tagBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING, signal);\n return Object.groupBy(tagBindings, (binding) => binding.data.tagUUID);\n };\n\n const _getTagBindingMapByTagId = async (\n tagUUIDs: string[],\n objectId: KeboolaObjectId,\n signal?: AbortSignal,\n ) => {\n const tagBindingMapByTagId = await _getAllTagBindingMapByTagId(signal);\n const objectUID = keboolaUID.serialize(objectId);\n return tagUUIDs.reduce<Record<string, MetaObject<TagBindingData> | null>>((acc, tagUUID) => {\n if (acc[tagUUID]) return acc; // filter out duplicated ids\n\n const tagBindings = tagBindingMapByTagId[tagUUID] ?? [];\n acc[tagUUID] = tagBindings.find((binding) => binding.data.objectUID === objectUID) ?? null;\n return acc;\n }, {});\n };\n\n const _deleteTagBindings = async (tagBindings: MetaObject<TagBindingData>[]) => {\n await concurrent({\n items: tagBindings,\n process: async (binding) =>\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG_BINDING,\n UUID: binding.uuid,\n }),\n concurrency: 5,\n });\n };\n\n const getTags = async (signal?: AbortSignal) => {\n const [tags, tagBindingMapByTagId] = await Promise.all([\n _getTagMetaObjects<TagData>(ObjectType.TAG, signal),\n _getAllTagBindingMapByTagId(signal),\n ]);\n\n return tags.map<TagWithBindings>((tag) => ({\n tag,\n bindings: tagBindingMapByTagId[tag.uuid] ?? [],\n }));\n };\n\n const getTagsByObjectId = async (objectId: KeboolaObjectId, signal?: AbortSignal) => {\n const tags = await getTags(signal);\n\n const keboolaObjectUID = keboolaUID.serialize(objectId);\n const mapByTagId = tags.reduce<Record<string, Set<string>>>((acc, { tag, bindings }) => {\n acc[tag.uuid] = new Set(bindings.map((binding) => binding.data.objectUID));\n return acc;\n }, {});\n\n return tags.filter(({ tag }) => mapByTagId[tag.uuid]?.has(keboolaObjectUID));\n };\n\n const createTag = async (data: TagData, meta: CreateMetaObjectMetaDataInput = {}) => {\n const response = await metastoreClient.repository.createMetaObject<TagData>({\n objectType: ObjectType.TAG,\n data,\n name: generateUUID(),\n ...meta,\n });\n\n return mapObject(response.data);\n };\n\n const updateTag = async (\n tagUUID: string,\n data: TagData,\n meta: UpdateMetaObjectMetaDataInput = {},\n ) => {\n const response = await metastoreClient.repository.updateMetaObject<TagData>({\n objectType: ObjectType.TAG,\n UUID: tagUUID,\n data,\n ...meta,\n });\n\n return mapObject(response.data);\n };\n\n const deleteTag = async (tagUUID: string) => {\n const allBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING);\n const tagBindings = allBindings.filter(({ data }) => data.tagUUID === tagUUID);\n\n await Promise.all([\n // delete tag itself\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG,\n UUID: tagUUID,\n }),\n // delete all tag associations\n _deleteTagBindings(tagBindings),\n ]);\n };\n\n const assignTags = async (\n tagUUIDs: string[],\n objectId: KeboolaObjectId,\n meta: CreateMetaObjectMetaDataInput = {},\n ) => {\n const tagBindingMapByTagId = await _getTagBindingMapByTagId(tagUUIDs, objectId);\n // Assign only the unassigned tag IDs. Ignore the rest.\n const unassignedTagUUIDs = tagUUIDs.filter((tagUUID) => tagBindingMapByTagId[tagUUID] === null);\n\n await concurrent({\n items: unassignedTagUUIDs,\n process: async (tagUUID) =>\n metastoreClient.repository.createMetaObject<TagBindingData>({\n objectType: ObjectType.TAG_BINDING,\n data: {\n objectUID: keboolaUID.serialize(objectId),\n tagUUID: tagUUID,\n },\n name: generateUUID(),\n ...meta,\n }),\n concurrency: 5,\n });\n };\n\n const unassignTags = async (tagUUIDs: string[], objectID: KeboolaObjectId) => {\n const tagBindingMapByTagId = await _getTagBindingMapByTagId(tagUUIDs, objectID);\n const assignedTagUUIDs = tagUUIDs.filter((tagUUID) => tagBindingMapByTagId[tagUUID] !== null);\n\n const tagBindings = assignedTagUUIDs.map((tagUUID) => tagBindingMapByTagId[tagUUID]!);\n\n await concurrent({\n items: tagBindings,\n process: async (tagBinding) =>\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG_BINDING,\n UUID: tagBinding.uuid,\n }),\n concurrency: 5,\n });\n };\n\n const unassignAllTags = async (objectID: KeboolaObjectId, signal?: AbortSignal) => {\n const tagBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING, signal);\n\n const objectsTagBindings = tagBindings.filter(\n ({ data }) => data.objectUID === keboolaUID.serialize(objectID),\n );\n\n await _deleteTagBindings(objectsTagBindings);\n };\n\n const createAndAssignTag = async (\n data: TagData,\n objectId: KeboolaObjectId,\n meta: CreateMetaObjectMetaDataInput = {},\n ) => {\n const tag = await createTag(data, meta);\n await assignTags([tag.uuid], objectId, meta);\n return tag;\n };\n\n return {\n // retrievals\n getTags,\n getTagsByObjectId,\n\n // modifications\n createTag,\n updateTag,\n deleteTag,\n assignTags,\n unassignTags,\n unassignAllTags,\n createAndAssignTag,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"tag-hh-1nhNr.js","names":[],"sources":["../src/utils/keboolaUID.ts","../src/sdks/tag/tagSdk.ts"],"sourcesContent":["type KeboolaObjectType =\n | 'data-catalog'\n | 'table'\n | 'bucket'\n | 'flow'\n | 'configuration'\n | 'transformation'\n | 'data-app'\n | 'workspace';\n\nexport type KeboolaObjectId = {\n uid: string;\n type: KeboolaObjectType;\n projectId: number;\n};\n\n//As a delimiter for serialization, we use a double hyphen (--) instead of a single hyphen in type names.\nconst KEBOOLA_OBJECT_ID_DELIMITER = '--';\n\n/**\n * There is a proposal for a string format to identify objects in Keboola.\n *\n * https://keboola.atlassian.net/wiki/spaces/ENGG/pages/3967615431/Keboola+UUID+Format\n * Unfortunately, this format will not pass BE validation as `:` is not allowed in the `uid`, and the length is limited to 50 characters only.\n *\n */\nexport const keboolaUID = {\n serialize: (input: KeboolaObjectId): string => {\n if (input.uid === '')\n throw new Error('Invalid Keboola Object ID: uid of an object cannot be empty');\n\n return ['KID', input.projectId, input.type, input.uid].join(KEBOOLA_OBJECT_ID_DELIMITER);\n },\n\n deserialize: (input: string): KeboolaObjectId => {\n const [identifier, projectId, type, uid] = input.split(KEBOOLA_OBJECT_ID_DELIMITER);\n if (identifier !== 'KID' || !projectId || !type || !uid)\n throw new Error('Invalid Keboola Object ID');\n\n return {\n projectId: Number(projectId),\n type: type as KeboolaObjectType,\n uid,\n };\n },\n};\n","import type { MetaObject, RawMetaObject } from '../../clients/metastore/repository/types';\nimport { concurrent, generateUUID, type KeboolaObjectId, keboolaUID } from '../../utils';\n\nimport type {\n CreateMetaObjectMetaDataInput,\n MetastoreClient,\n TagBindingData,\n TagData,\n TagWithBindings,\n UpdateMetaObjectMetaDataInput,\n} from './types';\n\nconst ObjectType = {\n TAG: 'tag',\n TAG_BINDING: 'tag-binding',\n};\ntype ObjectTypes = (typeof ObjectType)[keyof typeof ObjectType];\n\n// The live metastore envelope carries the data payload in `attributes`, the UUID in the\n// top-level `id`, and audit fields in `meta`. Normalize into { uuid, data, meta }.\nconst mapObject = <TData extends Record<string, unknown>>(\n item: RawMetaObject<TData>,\n): MetaObject<TData> => ({\n uuid: item.id,\n data: item.attributes,\n meta: item.meta,\n});\n\ntype Options = {\n metastoreClient: MetastoreClient;\n};\n\nexport const createTagSdk = ({ metastoreClient }: Options) => {\n const _getTagMetaObjects = async <T extends Record<string, unknown>>(\n type: ObjectTypes,\n signal?: AbortSignal,\n ) => {\n const response = await metastoreClient.repository.getMetaObjects<T>(\n {\n objectType: type,\n },\n signal,\n );\n return response.data.map(mapObject);\n };\n\n const _getAllTagBindingMapByTagId = async (signal?: AbortSignal) => {\n const tagBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING, signal);\n return Object.groupBy(tagBindings, (binding) => binding.data.tagUUID);\n };\n\n const _getTagBindingMapByTagId = async (\n tagUUIDs: string[],\n objectId: KeboolaObjectId,\n signal?: AbortSignal,\n ) => {\n const tagBindingMapByTagId = await _getAllTagBindingMapByTagId(signal);\n const objectUID = keboolaUID.serialize(objectId);\n return tagUUIDs.reduce<Record<string, MetaObject<TagBindingData> | null>>((acc, tagUUID) => {\n if (acc[tagUUID]) return acc; // filter out duplicated ids\n\n const tagBindings = tagBindingMapByTagId[tagUUID] ?? [];\n acc[tagUUID] = tagBindings.find((binding) => binding.data.objectUID === objectUID) ?? null;\n return acc;\n }, {});\n };\n\n const _deleteTagBindings = async (tagBindings: MetaObject<TagBindingData>[]) => {\n await concurrent({\n items: tagBindings,\n process: async (binding) =>\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG_BINDING,\n UUID: binding.uuid,\n }),\n concurrency: 5,\n });\n };\n\n const getTags = async (signal?: AbortSignal) => {\n const [tags, tagBindingMapByTagId] = await Promise.all([\n _getTagMetaObjects<TagData>(ObjectType.TAG, signal),\n _getAllTagBindingMapByTagId(signal),\n ]);\n\n return tags.map<TagWithBindings>((tag) => ({\n tag,\n bindings: tagBindingMapByTagId[tag.uuid] ?? [],\n }));\n };\n\n const getTagsByObjectId = async (objectId: KeboolaObjectId, signal?: AbortSignal) => {\n const tags = await getTags(signal);\n\n const keboolaObjectUID = keboolaUID.serialize(objectId);\n const mapByTagId = tags.reduce<Record<string, Set<string>>>((acc, { tag, bindings }) => {\n acc[tag.uuid] = new Set(bindings.map((binding) => binding.data.objectUID));\n return acc;\n }, {});\n\n return tags.filter(({ tag }) => mapByTagId[tag.uuid]?.has(keboolaObjectUID));\n };\n\n const createTag = async (data: TagData, meta: CreateMetaObjectMetaDataInput = {}) => {\n const response = await metastoreClient.repository.createMetaObject<TagData>({\n objectType: ObjectType.TAG,\n data,\n name: generateUUID(),\n ...meta,\n });\n\n return mapObject(response.data);\n };\n\n const updateTag = async (\n tagUUID: string,\n data: TagData,\n meta: UpdateMetaObjectMetaDataInput = {},\n ) => {\n const response = await metastoreClient.repository.updateMetaObject<TagData>({\n objectType: ObjectType.TAG,\n UUID: tagUUID,\n data,\n ...meta,\n });\n\n return mapObject(response.data);\n };\n\n const deleteTag = async (tagUUID: string) => {\n const allBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING);\n const tagBindings = allBindings.filter(({ data }) => data.tagUUID === tagUUID);\n\n await Promise.all([\n // delete tag itself\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG,\n UUID: tagUUID,\n }),\n // delete all tag associations\n _deleteTagBindings(tagBindings),\n ]);\n };\n\n const assignTags = async (\n tagUUIDs: string[],\n objectId: KeboolaObjectId,\n meta: CreateMetaObjectMetaDataInput = {},\n ) => {\n const tagBindingMapByTagId = await _getTagBindingMapByTagId(tagUUIDs, objectId);\n // Assign only the unassigned tag IDs. Ignore the rest.\n const unassignedTagUUIDs = tagUUIDs.filter((tagUUID) => tagBindingMapByTagId[tagUUID] === null);\n\n await concurrent({\n items: unassignedTagUUIDs,\n process: async (tagUUID) =>\n metastoreClient.repository.createMetaObject<TagBindingData>({\n objectType: ObjectType.TAG_BINDING,\n data: {\n objectUID: keboolaUID.serialize(objectId),\n tagUUID: tagUUID,\n },\n name: generateUUID(),\n ...meta,\n }),\n concurrency: 5,\n });\n };\n\n const unassignTags = async (tagUUIDs: string[], objectID: KeboolaObjectId) => {\n const tagBindingMapByTagId = await _getTagBindingMapByTagId(tagUUIDs, objectID);\n const assignedTagUUIDs = tagUUIDs.filter((tagUUID) => tagBindingMapByTagId[tagUUID] !== null);\n\n const tagBindings = assignedTagUUIDs.map((tagUUID) => tagBindingMapByTagId[tagUUID]!);\n\n await concurrent({\n items: tagBindings,\n process: async (tagBinding) =>\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG_BINDING,\n UUID: tagBinding.uuid,\n }),\n concurrency: 5,\n });\n };\n\n const unassignAllTags = async (objectID: KeboolaObjectId, signal?: AbortSignal) => {\n const tagBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING, signal);\n\n const objectsTagBindings = tagBindings.filter(\n ({ data }) => data.objectUID === keboolaUID.serialize(objectID),\n );\n\n await _deleteTagBindings(objectsTagBindings);\n };\n\n const createAndAssignTag = async (\n data: TagData,\n objectId: KeboolaObjectId,\n meta: CreateMetaObjectMetaDataInput = {},\n ) => {\n const tag = await createTag(data, meta);\n await assignTags([tag.uuid], objectId, meta);\n return tag;\n };\n\n return {\n // retrievals\n getTags,\n getTagsByObjectId,\n\n // modifications\n createTag,\n updateTag,\n deleteTag,\n assignTags,\n unassignTags,\n unassignAllTags,\n createAndAssignTag,\n };\n};\n"],"mappings":"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"}
@@ -1,21 +1,17 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_createFetchClient = require("../createFetchClient-BlgPbjFj.cjs");
3
- const require_createOpenapiFetchClient = require("../createOpenapiFetchClient-C3UmDXpe.cjs");
4
- const require_auth = require("../auth-DLWnl18b.cjs");
2
+ const require_createFetchClient = require("../createFetchClient-Cwp8max9.cjs");
3
+ const require_createOpenapiFetchClient = require("../createOpenapiFetchClient-BYqW-9tm.cjs");
4
+ const require_auth = require("../auth-Dm0F2rOh.cjs");
5
5
  //#region src/clients/telemetry/telemetryClient.ts
6
6
  /**
7
- * Takes the plain telemetry service URL. An ingress rule routes the service under `/provisioning` on
8
- * that host, so this client appends the prefix and no caller carries it.
7
+ * Takes the plain telemetry URL and appends the `/provisioning` ingress prefix.
9
8
  *
10
- * - **No bearer support yet.** The service reads `X-Storageapi-Token` and nothing else, and its CORS
11
- * `Access-Control-Allow-Headers` omits `authorization` — so under bearer auth a browser blocks the
12
- * request before it is sent, and a non-browser caller gets `401 Missing storage api token`. Both
13
- * halves need fixing in `keboola/gooddata-cn-provisioning` before these methods work.
14
- * - It also requires a **master** token, answering 403 for anything narrower.
9
+ * - No bearer auth: the service reads only `X-Storageapi-Token` and CORS omits `authorization`.
10
+ * - Requires a master token (403 otherwise).
15
11
  */
16
12
  const createTelemetryClient = ({ baseUrl, middlewares, auth }) => {
17
13
  const client = require_createOpenapiFetchClient.createOpenapiFetchClient({
18
- baseUrl: `${require_createFetchClient.normalizeBaseUrl(baseUrl)}/provisioning`,
14
+ baseUrl: typeof baseUrl === "string" ? `${require_createFetchClient.normalizeBaseUrl(baseUrl)}/provisioning` : async () => `${require_createFetchClient.normalizeBaseUrl(await baseUrl())}/provisioning`,
19
15
  middlewares,
20
16
  headers: require_auth.createAuthHeaders(auth)
21
17
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["createOpenapiFetchClient","normalizeBaseUrl","createAuthHeaders"],"sources":["../../src/clients/telemetry/telemetryClient.ts"],"sourcesContent":["import { createOpenapiFetchClient, normalizeBaseUrl } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type { GetProvisioningTokenBody, ProvisioningToken } from './types';\n\n/**\n * Takes the plain telemetry service URL. An ingress rule routes the service under `/provisioning` on\n * that host, so this client appends the prefix and no caller carries it.\n *\n * - **No bearer support yet.** The service reads `X-Storageapi-Token` and nothing else, and its CORS\n * `Access-Control-Allow-Headers` omits `authorization` — so under bearer auth a browser blocks the\n * request before it is sent, and a non-browser caller gets `401 Missing storage api token`. Both\n * halves need fixing in `keboola/gooddata-cn-provisioning` before these methods work.\n * - It also requires a **master** token, answering 403 for anything narrower.\n */\nexport const createTelemetryClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl: `${normalizeBaseUrl(baseUrl)}/provisioning`,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/health', {}, { signal });\n\n return data;\n };\n\n /** The short-lived JWT an embedded telemetry dashboard authenticates with. */\n const getProvisioningToken = async (\n body: GetProvisioningTokenBody,\n signal?: AbortSignal,\n ): Promise<ProvisioningToken> => {\n const { data } = await client.post('/token', { body }, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n getProvisioningToken,\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;AAiBA,MAAa,yBAAyB,EAAE,SAAS,aAAa,WAA8B;CAC1F,MAAM,SAASA,iCAAAA,yBAAgC;EAC7C,SAAS,GAAGC,0BAAAA,iBAAiB,OAAO,EAAE;EACtC;EACA,SAASC,aAAAA,kBAAkB,IAAI;CACjC,CAAC;CAED,MAAM,cAAc,OAAO,WAAyB;EAClD,MAAM,EAAE,SAAS,MAAM,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC;EAE3D,OAAO;CACT;;CAGA,MAAM,uBAAuB,OAC3B,MACA,WAC+B;EAC/B,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,UAAU,EAAE,KAAK,GAAG,EAAE,OAAO,CAAC;EAEjE,OAAO;CACT;CAEA,OAAO;EACL;EACA;CACF;AACF"}
1
+ {"version":3,"file":"index.cjs","names":["createOpenapiFetchClient","normalizeBaseUrl","createAuthHeaders"],"sources":["../../src/clients/telemetry/telemetryClient.ts"],"sourcesContent":["import { createOpenapiFetchClient, normalizeBaseUrl } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type { GetProvisioningTokenBody, ProvisioningToken } from './types';\n\n/**\n * Takes the plain telemetry URL and appends the `/provisioning` ingress prefix.\n *\n * - No bearer auth: the service reads only `X-Storageapi-Token` and CORS omits `authorization`.\n * - Requires a master token (403 otherwise).\n */\nexport const createTelemetryClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl:\n typeof baseUrl === 'string'\n ? `${normalizeBaseUrl(baseUrl)}/provisioning`\n : async () => `${normalizeBaseUrl(await baseUrl())}/provisioning`,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/health', {}, { signal });\n\n return data;\n };\n\n /** The short-lived JWT an embedded telemetry dashboard authenticates with. */\n const getProvisioningToken = async (\n body: GetProvisioningTokenBody,\n signal?: AbortSignal,\n ): Promise<ProvisioningToken> => {\n const { data } = await client.post('/token', { body }, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n getProvisioningToken,\n };\n};\n"],"mappings":";;;;;;;;;;;AAaA,MAAa,yBAAyB,EAAE,SAAS,aAAa,WAA8B;CAC1F,MAAM,SAASA,iCAAAA,yBAAgC;EAC7C,SACE,OAAO,YAAY,WACf,GAAGC,0BAAAA,iBAAiB,OAAO,EAAE,iBAC7B,YAAY,GAAGA,0BAAAA,iBAAiB,MAAM,QAAQ,CAAC,EAAE;EACvD;EACA,SAASC,aAAAA,kBAAkB,IAAI;CACjC,CAAC;CAED,MAAM,cAAc,OAAO,WAAyB;EAClD,MAAM,EAAE,SAAS,MAAM,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC;EAE3D,OAAO;CACT;;CAGA,MAAM,uBAAuB,OAC3B,MACA,WAC+B;EAC/B,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,UAAU,EAAE,KAAK,GAAG,EAAE,OAAO,CAAC;EAEjE,OAAO;CACT;CAEA,OAAO;EACL;EACA;CACF;AACF"}
@@ -1,15 +1,11 @@
1
- import { n as ClientInitOptions } from "../types-_RhBCj4_.cjs";
2
- import { n as ProvisioningToken, t as GetProvisioningTokenBody } from "../types-g3vU7hcg.cjs";
1
+ import { n as ClientInitOptions } from "../types-DoZtE9tz.cjs";
2
+ import { n as ProvisioningToken, t as GetProvisioningTokenBody } from "../types-Bydx6ga_.cjs";
3
3
  //#region src/clients/telemetry/telemetryClient.d.ts
4
4
  /**
5
- * Takes the plain telemetry service URL. An ingress rule routes the service under `/provisioning` on
6
- * that host, so this client appends the prefix and no caller carries it.
5
+ * Takes the plain telemetry URL and appends the `/provisioning` ingress prefix.
7
6
  *
8
- * - **No bearer support yet.** The service reads `X-Storageapi-Token` and nothing else, and its CORS
9
- * `Access-Control-Allow-Headers` omits `authorization` — so under bearer auth a browser blocks the
10
- * request before it is sent, and a non-browser caller gets `401 Missing storage api token`. Both
11
- * halves need fixing in `keboola/gooddata-cn-provisioning` before these methods work.
12
- * - It also requires a **master** token, answering 403 for anything narrower.
7
+ * - No bearer auth: the service reads only `X-Storageapi-Token` and CORS omits `authorization`.
8
+ * - Requires a master token (403 otherwise).
13
9
  */
14
10
  declare const createTelemetryClient: ({ baseUrl, middlewares, auth }: ClientInitOptions) => {
15
11
  healthCheck: (signal?: AbortSignal) => Promise<string>;
@@ -1,15 +1,11 @@
1
- import { n as ClientInitOptions } from "../types-Ct0YPy2w.js";
2
- import { n as ProvisioningToken, t as GetProvisioningTokenBody } from "../types-CPB-eF82.js";
1
+ import { n as ClientInitOptions } from "../types-B2w2TtSA.js";
2
+ import { n as ProvisioningToken, t as GetProvisioningTokenBody } from "../types-CZJlLCbA.js";
3
3
  //#region src/clients/telemetry/telemetryClient.d.ts
4
4
  /**
5
- * Takes the plain telemetry service URL. An ingress rule routes the service under `/provisioning` on
6
- * that host, so this client appends the prefix and no caller carries it.
5
+ * Takes the plain telemetry URL and appends the `/provisioning` ingress prefix.
7
6
  *
8
- * - **No bearer support yet.** The service reads `X-Storageapi-Token` and nothing else, and its CORS
9
- * `Access-Control-Allow-Headers` omits `authorization` — so under bearer auth a browser blocks the
10
- * request before it is sent, and a non-browser caller gets `401 Missing storage api token`. Both
11
- * halves need fixing in `keboola/gooddata-cn-provisioning` before these methods work.
12
- * - It also requires a **master** token, answering 403 for anything narrower.
7
+ * - No bearer auth: the service reads only `X-Storageapi-Token` and CORS omits `authorization`.
8
+ * - Requires a master token (403 otherwise).
13
9
  */
14
10
  declare const createTelemetryClient: ({ baseUrl, middlewares, auth }: ClientInitOptions) => {
15
11
  healthCheck: (signal?: AbortSignal) => Promise<string>;
@@ -1,20 +1,16 @@
1
- import { d as normalizeBaseUrl } from "../createFetchClient-C-cadpBx.js";
2
- import { t as createOpenapiFetchClient } from "../createOpenapiFetchClient-COaPeeQ0.js";
3
- import { t as createAuthHeaders } from "../auth-BjmkFOgd.js";
1
+ import { d as normalizeBaseUrl } from "../createFetchClient-DXHQK63w.js";
2
+ import { t as createOpenapiFetchClient } from "../createOpenapiFetchClient-DZUOVupy.js";
3
+ import { t as createAuthHeaders } from "../auth-DworfoPy.js";
4
4
  //#region src/clients/telemetry/telemetryClient.ts
5
5
  /**
6
- * Takes the plain telemetry service URL. An ingress rule routes the service under `/provisioning` on
7
- * that host, so this client appends the prefix and no caller carries it.
6
+ * Takes the plain telemetry URL and appends the `/provisioning` ingress prefix.
8
7
  *
9
- * - **No bearer support yet.** The service reads `X-Storageapi-Token` and nothing else, and its CORS
10
- * `Access-Control-Allow-Headers` omits `authorization` — so under bearer auth a browser blocks the
11
- * request before it is sent, and a non-browser caller gets `401 Missing storage api token`. Both
12
- * halves need fixing in `keboola/gooddata-cn-provisioning` before these methods work.
13
- * - It also requires a **master** token, answering 403 for anything narrower.
8
+ * - No bearer auth: the service reads only `X-Storageapi-Token` and CORS omits `authorization`.
9
+ * - Requires a master token (403 otherwise).
14
10
  */
15
11
  const createTelemetryClient = ({ baseUrl, middlewares, auth }) => {
16
12
  const client = createOpenapiFetchClient({
17
- baseUrl: `${normalizeBaseUrl(baseUrl)}/provisioning`,
13
+ baseUrl: typeof baseUrl === "string" ? `${normalizeBaseUrl(baseUrl)}/provisioning` : async () => `${normalizeBaseUrl(await baseUrl())}/provisioning`,
18
14
  middlewares,
19
15
  headers: createAuthHeaders(auth)
20
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/clients/telemetry/telemetryClient.ts"],"sourcesContent":["import { createOpenapiFetchClient, normalizeBaseUrl } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type { GetProvisioningTokenBody, ProvisioningToken } from './types';\n\n/**\n * Takes the plain telemetry service URL. An ingress rule routes the service under `/provisioning` on\n * that host, so this client appends the prefix and no caller carries it.\n *\n * - **No bearer support yet.** The service reads `X-Storageapi-Token` and nothing else, and its CORS\n * `Access-Control-Allow-Headers` omits `authorization` — so under bearer auth a browser blocks the\n * request before it is sent, and a non-browser caller gets `401 Missing storage api token`. Both\n * halves need fixing in `keboola/gooddata-cn-provisioning` before these methods work.\n * - It also requires a **master** token, answering 403 for anything narrower.\n */\nexport const createTelemetryClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl: `${normalizeBaseUrl(baseUrl)}/provisioning`,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/health', {}, { signal });\n\n return data;\n };\n\n /** The short-lived JWT an embedded telemetry dashboard authenticates with. */\n const getProvisioningToken = async (\n body: GetProvisioningTokenBody,\n signal?: AbortSignal,\n ): Promise<ProvisioningToken> => {\n const { data } = await client.post('/token', { body }, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n getProvisioningToken,\n };\n};\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAa,yBAAyB,EAAE,SAAS,aAAa,WAA8B;CAC1F,MAAM,SAAS,yBAAgC;EAC7C,SAAS,GAAG,iBAAiB,OAAO,EAAE;EACtC;EACA,SAAS,kBAAkB,IAAI;CACjC,CAAC;CAED,MAAM,cAAc,OAAO,WAAyB;EAClD,MAAM,EAAE,SAAS,MAAM,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC;EAE3D,OAAO;CACT;;CAGA,MAAM,uBAAuB,OAC3B,MACA,WAC+B;EAC/B,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,UAAU,EAAE,KAAK,GAAG,EAAE,OAAO,CAAC;EAEjE,OAAO;CACT;CAEA,OAAO;EACL;EACA;CACF;AACF"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/clients/telemetry/telemetryClient.ts"],"sourcesContent":["import { createOpenapiFetchClient, normalizeBaseUrl } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type { GetProvisioningTokenBody, ProvisioningToken } from './types';\n\n/**\n * Takes the plain telemetry URL and appends the `/provisioning` ingress prefix.\n *\n * - No bearer auth: the service reads only `X-Storageapi-Token` and CORS omits `authorization`.\n * - Requires a master token (403 otherwise).\n */\nexport const createTelemetryClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl:\n typeof baseUrl === 'string'\n ? `${normalizeBaseUrl(baseUrl)}/provisioning`\n : async () => `${normalizeBaseUrl(await baseUrl())}/provisioning`,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/health', {}, { signal });\n\n return data;\n };\n\n /** The short-lived JWT an embedded telemetry dashboard authenticates with. */\n const getProvisioningToken = async (\n body: GetProvisioningTokenBody,\n signal?: AbortSignal,\n ): Promise<ProvisioningToken> => {\n const { data } = await client.post('/token', { body }, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n getProvisioningToken,\n };\n};\n"],"mappings":";;;;;;;;;;AAaA,MAAa,yBAAyB,EAAE,SAAS,aAAa,WAA8B;CAC1F,MAAM,SAAS,yBAAgC;EAC7C,SACE,OAAO,YAAY,WACf,GAAG,iBAAiB,OAAO,EAAE,iBAC7B,YAAY,GAAG,iBAAiB,MAAM,QAAQ,CAAC,EAAE;EACvD;EACA,SAAS,kBAAkB,IAAI;CACjC,CAAC;CAED,MAAM,cAAc,OAAO,WAAyB;EAClD,MAAM,EAAE,SAAS,MAAM,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC;EAE3D,OAAO;CACT;;CAGA,MAAM,uBAAuB,OAC3B,MACA,WAC+B;EAC/B,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,UAAU,EAAE,KAAK,GAAG,EAAE,OAAO,CAAC;EAEjE,OAAO;CACT;CAEA,OAAO;EACL;EACA;CACF;AACF"}
@@ -1,2 +1,2 @@
1
- import { n as ProvisioningToken, t as GetProvisioningTokenBody } from "../types-g3vU7hcg.cjs";
1
+ import { n as ProvisioningToken, t as GetProvisioningTokenBody } from "../types-Bydx6ga_.cjs";
2
2
  export { GetProvisioningTokenBody, ProvisioningToken };
@@ -1,2 +1,2 @@
1
- import { n as ProvisioningToken, t as GetProvisioningTokenBody } from "../types-CPB-eF82.js";
1
+ import { n as ProvisioningToken, t as GetProvisioningTokenBody } from "../types-CZJlLCbA.js";
2
2
  export { GetProvisioningTokenBody, ProvisioningToken };
@@ -1,4 +1,4 @@
1
- import { s as OpenapiQueryType } from "./index-V7XKUQm9.cjs";
1
+ import { s as OpenapiQueryType } from "./index-BVhHt5lx.cjs";
2
2
  import { t as Backend } from "./backends-DKBz5OxE.cjs";
3
3
  //#region src/clients/omnisearch/__generated__/schema.d.ts
4
4
  /**
@@ -599,4 +599,4 @@ type LineageTable = components['schemas']['TableNode'] & {
599
599
  };
600
600
  //#endregion
601
601
  export { LineageMetadata as a, LineageTable as c, ProjectsLineageResponse as d, TableLineageRelation as f, components as h, LineageConfiguration as i, ProjectLineageRelation as l, TablesLineageResponse as m, GetTablesLineageQuery as n, LineageProject as o, TablesLineage as p, LineageBucket as r, LineageSource as s, GetProjectsLineageQuery as t, ProjectsLineage as u };
602
- //# sourceMappingURL=types-DqxIx9Pi.d.cts.map
602
+ //# sourceMappingURL=types-6kuMW4JW.d.cts.map
@@ -1,4 +1,4 @@
1
- import { D as MiddlewareFn } from "./index-KuQ79Mnz.js";
1
+ import { E as BaseUrl, O as MiddlewareFn } from "./index-BgR5zcjJ.js";
2
2
  //#region src/clients/auth.d.ts
3
3
  type AuthStrategy = {
4
4
  type: 'sapi-token';
@@ -14,10 +14,10 @@ type BaseClientOptions = {
14
14
  baseUrl: string;
15
15
  };
16
16
  type ClientInitOptions = {
17
- baseUrl: string;
17
+ baseUrl: BaseUrl;
18
18
  auth: AuthStrategy;
19
19
  middlewares: MiddlewareFn[];
20
20
  };
21
21
  //#endregion
22
22
  export { ClientInitOptions as n, AuthStrategy as r, BaseClientOptions as t };
23
- //# sourceMappingURL=types-Ct0YPy2w.d.ts.map
23
+ //# sourceMappingURL=types-B2w2TtSA.d.ts.map
@@ -1,4 +1,4 @@
1
- import { c as OpenapiReturnType, n as ArrayElement, o as OpenapiPathType, r as OpenapiBodyType, s as OpenapiQueryType } from "./index-V7XKUQm9.cjs";
1
+ import { c as OpenapiReturnType, n as ArrayElement, o as OpenapiPathType, r as OpenapiBodyType, s as OpenapiQueryType } from "./index-BVhHt5lx.cjs";
2
2
  //#region src/clients/vault/__generated__/schema.d.ts
3
3
  /**
4
4
  * This file was auto-generated by openapi-typescript.
@@ -383,4 +383,4 @@ type VariableWithHash = Omit<VariableWithHashRaw, 'hash'> & {
383
383
  type AnyVariable = VariableWithHash | CreateVariableBody;
384
384
  //#endregion
385
385
  export { GetVariablesQuery as a, GetVariablesByBranchId as i, CreateVariableBody as n, VariableWithHash as o, DeleteVariablePath as r, AnyVariable as t };
386
- //# sourceMappingURL=types-M46WuBSm.d.cts.map
386
+ //# sourceMappingURL=types-B61aCifg.d.cts.map
@@ -1,4 +1,4 @@
1
- import { c as OpenapiReturnType, o as OpenapiPathType, r as OpenapiBodyType, s as OpenapiQueryType } from "./index-V7XKUQm9.cjs";
1
+ import { c as OpenapiReturnType, o as OpenapiPathType, r as OpenapiBodyType, s as OpenapiQueryType } from "./index-BVhHt5lx.cjs";
2
2
  //#region src/clients/editor/__generated__/schema.d.ts
3
3
  /**
4
4
  * This file was auto-generated by openapi-typescript.
@@ -1408,4 +1408,4 @@ type PostSqlSessionUnloadPath = OpenapiPathType<paths['/sql/sessions/{id}/unload
1408
1408
  type PostSqlSessionUnloadBody = OpenapiBodyType<paths['/sql/sessions/{id}/unload']['post']>;
1409
1409
  //#endregion
1410
1410
  export { components as C, SqlSession as S, SessionSchema as _, GetSqlSessionTableDdlPath as a, SessionSchemaDatabase as b, PostSqlRunQueryBody as c, PostSqlSessionLoadPath as d, PostSqlSessionUnloadBody as f, Session as g, PostSqlTablePreviewPath as h, GetSqlSessionSchemaQuery as i, PostSqlRunQueryPath as l, PostSqlTablePreviewBody as m, GetSqlSessionPath as n, GetSqlSessionTableDdlQuery as o, PostSqlSessionUnloadPath as p, GetSqlSessionSchemaPath as r, GetSqlSessionsQuery as s, CreateSqlSessionBody as t, PostSqlSessionLoadBody as u, SessionSchemaBucket as v, SessionSchemaTable as x, SessionSchemaColumn as y };
1411
- //# sourceMappingURL=types-COL1kVEB.d.cts.map
1411
+ //# sourceMappingURL=types-B8N_k79M.d.cts.map