@keboola/api-client 48.0.0 → 50.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 (574) hide show
  1. package/AGENTS.md +109 -95
  2. package/API-SURFACE.md +14 -32
  3. package/CHANGELOG.md +78 -0
  4. package/README.md +33 -29
  5. package/dist/{ManagementSessionMintError-Cu9beG7j.cjs → ManagementSessionMintError-ByOulHQH.cjs} +4 -6
  6. package/dist/{ManagementSessionMintError-Cu9beG7j.cjs.map → ManagementSessionMintError-ByOulHQH.cjs.map} +1 -1
  7. package/dist/{ManagementSessionMintError-4Pkn5Oob.js → ManagementSessionMintError-DNMbYauw.js} +4 -6
  8. package/dist/{ManagementSessionMintError-4Pkn5Oob.js.map → ManagementSessionMintError-DNMbYauw.js.map} +1 -1
  9. package/dist/{QueryJobError-ZZZ043Nm.js → QueryJobError-Iq9O90Uh.js} +2 -3
  10. package/dist/{QueryJobError-ZZZ043Nm.js.map → QueryJobError-Iq9O90Uh.js.map} +1 -1
  11. package/dist/{QueryJobError-irGiP5zh.cjs → QueryJobError-Oy0fl4aw.cjs} +2 -3
  12. package/dist/{QueryJobError-irGiP5zh.cjs.map → QueryJobError-Oy0fl4aw.cjs.map} +1 -1
  13. package/dist/{QueueJobError-8bThS_Mc.js → QueueJobError-BJNUINXW.js} +2 -3
  14. package/dist/{QueueJobError-8bThS_Mc.js.map → QueueJobError-BJNUINXW.js.map} +1 -1
  15. package/dist/{QueueJobError-6qSEizWo.cjs → QueueJobError-DruZK3tc.cjs} +2 -3
  16. package/dist/{QueueJobError-6qSEizWo.cjs.map → QueueJobError-DruZK3tc.cjs.map} +1 -1
  17. package/dist/{SyncActionError-CoZFsdUk.js → SyncActionError-DuGcDbkd.js} +2 -3
  18. package/dist/{SyncActionError-CoZFsdUk.js.map → SyncActionError-DuGcDbkd.js.map} +1 -1
  19. package/dist/{SyncActionError-BG0zwchi.cjs → SyncActionError-mbpVg63X.cjs} +2 -3
  20. package/dist/{SyncActionError-BG0zwchi.cjs.map → SyncActionError-mbpVg63X.cjs.map} +1 -1
  21. package/dist/{UserError-By_Zckmc.js → UserError-BxoOJJ_u.js} +2 -3
  22. package/dist/{UserError-By_Zckmc.js.map → UserError-BxoOJJ_u.js.map} +1 -1
  23. package/dist/{UserError-CSGO1qII.cjs → UserError-D4P9Tbhf.cjs} +2 -3
  24. package/dist/{UserError-CSGO1qII.cjs.map → UserError-D4P9Tbhf.cjs.map} +1 -1
  25. package/dist/{ValidationError-D65QU0uq.cjs → ValidationError-BXcFX4nD.cjs} +2 -3
  26. package/dist/{ValidationError-D65QU0uq.cjs.map → ValidationError-BXcFX4nD.cjs.map} +1 -1
  27. package/dist/{ValidationError-DjhtNMfZ.js → ValidationError-BsdFDGY2.js} +2 -3
  28. package/dist/{ValidationError-DjhtNMfZ.js.map → ValidationError-BsdFDGY2.js.map} +1 -1
  29. package/dist/{configurations-CL0ouUMa.js → admin-CbMOsfgs.js} +5 -53
  30. package/dist/admin-CbMOsfgs.js.map +1 -0
  31. package/dist/{configurations-D9J3jh3g.cjs → admin-Di-MmGFP.cjs} +4 -124
  32. package/dist/admin-Di-MmGFP.cjs.map +1 -0
  33. package/dist/{adminRoles-DsoGQipO.d.ts → adminRoles-DAwl657q.d.ts} +2 -4
  34. package/dist/{adminRoles-CO7J5qAy.cjs → adminRoles-DnFpO_2W.cjs} +2 -3
  35. package/dist/{adminRoles-CO7J5qAy.cjs.map → adminRoles-DnFpO_2W.cjs.map} +1 -1
  36. package/dist/{adminRoles-BgpaBE7h.d.cts → adminRoles-FFyl7Dyx.d.cts} +2 -4
  37. package/dist/{adminRoles-B40yBcmq.js → adminRoles-asa-MhDD.js} +2 -3
  38. package/dist/{adminRoles-B40yBcmq.js.map → adminRoles-asa-MhDD.js.map} +1 -1
  39. package/dist/ai/index.cjs +3 -4
  40. package/dist/ai/index.d.cts +2 -4
  41. package/dist/ai/index.d.ts +2 -4
  42. package/dist/ai/index.js +3 -4
  43. package/dist/ai/types.d.cts +1 -1
  44. package/dist/ai/types.d.ts +1 -1
  45. package/dist/{appLogs-DpcqeOe5.d.ts → appLogs-CTvZAihm.d.ts} +2 -4
  46. package/dist/{appLogs-SjrflOHk.d.cts → appLogs-CnLNMH7M.d.cts} +2 -4
  47. package/dist/{appLogs-Cix2KWra.cjs → appLogs-CoAWQGxs.cjs} +5 -6
  48. package/dist/{appLogs-Cix2KWra.cjs.map → appLogs-CoAWQGxs.cjs.map} +1 -1
  49. package/dist/{appLogs-KslK7qHr.js → appLogs-DFcPwVk8.js} +4 -5
  50. package/dist/{appLogs-KslK7qHr.js.map → appLogs-DFcPwVk8.js.map} +1 -1
  51. package/dist/apps/index.cjs +29 -6
  52. package/dist/apps/index.cjs.map +1 -1
  53. package/dist/apps/index.d.cts +16 -5
  54. package/dist/apps/index.d.ts +16 -5
  55. package/dist/apps/index.js +29 -6
  56. package/dist/apps/index.js.map +1 -1
  57. package/dist/apps/types.d.cts +3 -3
  58. package/dist/apps/types.d.ts +3 -3
  59. package/dist/assets/index.cjs +2 -3
  60. package/dist/assets/index.d.cts +1 -3
  61. package/dist/assets/index.d.ts +1 -3
  62. package/dist/assets/index.js +2 -3
  63. package/dist/assets/schema.cjs +2 -3
  64. package/dist/assets/schema.d.cts +0 -2
  65. package/dist/assets/schema.d.ts +0 -2
  66. package/dist/assets/schema.js +1 -2
  67. package/dist/auth/index.cjs +1 -1
  68. package/dist/auth/index.d.cts +1 -1
  69. package/dist/auth/index.d.ts +1 -1
  70. package/dist/auth/index.js +1 -2
  71. package/dist/auth/types.d.cts +1 -1
  72. package/dist/auth/types.d.ts +1 -1
  73. package/dist/{auth-C8Pjl0Mu.cjs → auth-CvB4MukT.cjs} +3 -4
  74. package/dist/{auth-C8Pjl0Mu.cjs.map → auth-CvB4MukT.cjs.map} +1 -1
  75. package/dist/{auth-4coY1uwo.js → auth-DYfQMQCs.js} +3 -4
  76. package/dist/{auth-4coY1uwo.js.map → auth-DYfQMQCs.js.map} +1 -1
  77. package/dist/{authClient-DfkKlc-2.cjs → authClient-DcKBpMcU.cjs} +66 -85
  78. package/dist/{authClient-DfkKlc-2.cjs.map → authClient-DcKBpMcU.cjs.map} +1 -1
  79. package/dist/{authClient-BYIGzL_u.d.ts → authClient-Df3U4q_6.d.cts} +4 -16
  80. package/dist/{authClient-D06srBQE.d.cts → authClient-JtMVJWXY.d.ts} +4 -16
  81. package/dist/{authClient-2e8ZmzSP.js → authClient-oB5ydxWp.js} +66 -85
  82. package/dist/{authClient-2e8ZmzSP.js.map → authClient-oB5ydxWp.js.map} +1 -1
  83. package/dist/{backends-DKBz5OxE.d.ts → backends-BHotIdL0.d.cts} +1 -3
  84. package/dist/{backends-DKBz5OxE.d.cts → backends-BHotIdL0.d.ts} +1 -3
  85. package/dist/billing/index.cjs +3 -5
  86. package/dist/billing/index.cjs.map +1 -1
  87. package/dist/billing/index.d.cts +27 -29
  88. package/dist/billing/index.d.ts +27 -29
  89. package/dist/billing/index.js +3 -5
  90. package/dist/billing/index.js.map +1 -1
  91. package/dist/billing/types.d.cts +26 -26
  92. package/dist/billing/types.d.ts +26 -26
  93. package/dist/chat/index.cjs +4 -5
  94. package/dist/chat/index.d.cts +3 -5
  95. package/dist/chat/index.d.ts +3 -5
  96. package/dist/chat/index.js +4 -5
  97. package/dist/chat/suggestions.cjs +1 -2
  98. package/dist/chat/suggestions.d.cts +1 -1
  99. package/dist/chat/suggestions.d.ts +1 -1
  100. package/dist/chat/suggestions.js +1 -2
  101. package/dist/chat/types.cjs +1 -2
  102. package/dist/chat/types.d.cts +1 -1
  103. package/dist/chat/types.d.ts +1 -1
  104. package/dist/chat/types.js +1 -2
  105. package/dist/{collectByOffset-DQsqtmJg.cjs → collectByOffset-DgxJ3zT9.cjs} +3 -4
  106. package/dist/{collectByOffset-DQsqtmJg.cjs.map → collectByOffset-DgxJ3zT9.cjs.map} +1 -1
  107. package/dist/{collectByOffset-2XzJqmvr.js → collectByOffset-i8Tdoze7.js} +3 -4
  108. package/dist/{collectByOffset-2XzJqmvr.js.map → collectByOffset-i8Tdoze7.js.map} +1 -1
  109. package/dist/{componentId-D4jp6a13.cjs → componentId-C8ZTXXDo.cjs} +2 -3
  110. package/dist/{componentId-D4jp6a13.cjs.map → componentId-C8ZTXXDo.cjs.map} +1 -1
  111. package/dist/{componentId-DmHwHG5V.js → componentId-b_qBbJEM.js} +2 -3
  112. package/dist/{componentId-DmHwHG5V.js.map → componentId-b_qBbJEM.js.map} +1 -1
  113. package/dist/componentsMcp/index.cjs +1 -1
  114. package/dist/componentsMcp/index.d.cts +1 -1
  115. package/dist/componentsMcp/index.d.ts +1 -1
  116. package/dist/componentsMcp/index.js +1 -2
  117. package/dist/componentsMcp/types.d.cts +1 -1
  118. package/dist/componentsMcp/types.d.ts +1 -1
  119. package/dist/{componentsMcp-pG-PcQrg.cjs → componentsMcp-BaHy5iLr.cjs} +5 -7
  120. package/dist/{componentsMcp-pG-PcQrg.cjs.map → componentsMcp-BaHy5iLr.cjs.map} +1 -1
  121. package/dist/{componentsMcp-CHobIsuU.js → componentsMcp-BrB4js6b.js} +5 -7
  122. package/dist/{componentsMcp-CHobIsuU.js.map → componentsMcp-BrB4js6b.js.map} +1 -1
  123. package/dist/{concurrent-BacWxPwi.js → concurrent-BtsT10Xe.js} +2 -3
  124. package/dist/{concurrent-BacWxPwi.js.map → concurrent-BtsT10Xe.js.map} +1 -1
  125. package/dist/{concurrent-CdVfR1N5.cjs → concurrent-DnTV_ppY.cjs} +2 -3
  126. package/dist/{concurrent-CdVfR1N5.cjs.map → concurrent-DnTV_ppY.cjs.map} +1 -1
  127. package/dist/configurations-Cd6Nsox-.js +49 -0
  128. package/dist/configurations-Cd6Nsox-.js.map +1 -0
  129. package/dist/configurations-WI8H4zLk.cjs +120 -0
  130. package/dist/configurations-WI8H4zLk.cjs.map +1 -0
  131. package/dist/constants/index.cjs +6 -3
  132. package/dist/constants/index.d.cts +5 -4
  133. package/dist/constants/index.d.ts +5 -4
  134. package/dist/constants/index.js +4 -4
  135. package/dist/{constants-CA4UN2Xv.js → constants-BMSHGwOR.js} +86 -17
  136. package/dist/constants-BMSHGwOR.js.map +1 -0
  137. package/dist/{constants-a0jswUeK.cjs → constants-DhFQWQgy.cjs} +103 -16
  138. package/dist/constants-DhFQWQgy.cjs.map +1 -0
  139. package/dist/{createAbortError-RendOpo7.cjs → createAbortError-Dzc9yObN.cjs} +2 -3
  140. package/dist/{createAbortError-RendOpo7.cjs.map → createAbortError-Dzc9yObN.cjs.map} +1 -1
  141. package/dist/{createAbortError-BxupOt-6.js → createAbortError-c6ekCpRy.js} +2 -3
  142. package/dist/{createAbortError-BxupOt-6.js.map → createAbortError-c6ekCpRy.js.map} +1 -1
  143. package/dist/{createFetchClient-lZ_93Yrb.cjs → createFetchClient-DEkUH662.cjs} +6 -10
  144. package/dist/{createFetchClient-lZ_93Yrb.cjs.map → createFetchClient-DEkUH662.cjs.map} +1 -1
  145. package/dist/{createFetchClient-CkHdS_IG.js → createFetchClient-DlGCbltR.js} +5 -9
  146. package/dist/{createFetchClient-CkHdS_IG.js.map → createFetchClient-DlGCbltR.js.map} +1 -1
  147. package/dist/{createGenericFetchClient-MOx97wi-.cjs → createGenericFetchClient-2oU-PXVo.cjs} +3 -4
  148. package/dist/{createGenericFetchClient-MOx97wi-.cjs.map → createGenericFetchClient-2oU-PXVo.cjs.map} +1 -1
  149. package/dist/createGenericFetchClient-wGxemBwR.js +6 -0
  150. package/dist/{createGenericFetchClient-CQdNcPC3.js.map → createGenericFetchClient-wGxemBwR.js.map} +1 -1
  151. package/dist/createOpenapiFetchClient-Bhz62MUE.js +6 -0
  152. package/dist/{createOpenapiFetchClient-DXiMv9WL.js.map → createOpenapiFetchClient-Bhz62MUE.js.map} +1 -1
  153. package/dist/{createOpenapiFetchClient-DHYo_k3t.cjs → createOpenapiFetchClient-DL9w7vU-.cjs} +3 -4
  154. package/dist/{createOpenapiFetchClient-DHYo_k3t.cjs.map → createOpenapiFetchClient-DL9w7vU-.cjs.map} +1 -1
  155. package/dist/dataScience/index.cjs +2 -2
  156. package/dist/dataScience/index.d.cts +2 -2
  157. package/dist/dataScience/index.d.ts +2 -2
  158. package/dist/dataScience/index.js +2 -2
  159. package/dist/dataScience/types.d.cts +2 -2
  160. package/dist/dataScience/types.d.ts +2 -2
  161. package/dist/{dataScience-AwPMeGfz.js → dataScience-CXmkEOAi.js} +7 -9
  162. package/dist/{dataScience-AwPMeGfz.js.map → dataScience-CXmkEOAi.js.map} +1 -1
  163. package/dist/{dataScience-BjS1p8WO.cjs → dataScience-CufjHPSd.cjs} +7 -9
  164. package/dist/{dataScience-BjS1p8WO.cjs.map → dataScience-CufjHPSd.cjs.map} +1 -1
  165. package/dist/{dedupe-OSnnst2u.cjs → dedupe-Bf0gl9TJ.cjs} +2 -3
  166. package/dist/{dedupe-OSnnst2u.cjs.map → dedupe-Bf0gl9TJ.cjs.map} +1 -1
  167. package/dist/{dedupe-Cky1gSUu.js → dedupe-Bu0d2i_w.js} +2 -3
  168. package/dist/{dedupe-Cky1gSUu.js.map → dedupe-Bu0d2i_w.js.map} +1 -1
  169. package/dist/developerPortal/index.cjs +1 -1
  170. package/dist/developerPortal/index.d.cts +2 -2
  171. package/dist/developerPortal/index.d.ts +2 -2
  172. package/dist/developerPortal/index.js +1 -2
  173. package/dist/developerPortal/types.d.cts +1 -1
  174. package/dist/developerPortal/types.d.ts +1 -1
  175. package/dist/{developerPortalClient-DUerKw-7.cjs → developerPortalClient-BfRxYrWj.cjs} +9 -15
  176. package/dist/{developerPortalClient-DUerKw-7.cjs.map → developerPortalClient-BfRxYrWj.cjs.map} +1 -1
  177. package/dist/{developerPortalClient-Bb2suezr.js → developerPortalClient-D9XOYwWF.js} +9 -15
  178. package/dist/{developerPortalClient-Bb2suezr.js.map → developerPortalClient-D9XOYwWF.js.map} +1 -1
  179. package/dist/domain/permissions/index.cjs +24 -58
  180. package/dist/domain/permissions/index.d.cts +4 -10
  181. package/dist/domain/permissions/index.d.ts +4 -10
  182. package/dist/domain/permissions/index.js +4 -39
  183. package/dist/domain/storageTable/index.cjs +403 -9
  184. package/dist/domain/storageTable/index.cjs.map +1 -0
  185. package/dist/domain/storageTable/index.d.cts +189 -2
  186. package/dist/domain/storageTable/index.d.ts +189 -2
  187. package/dist/domain/storageTable/index.js +395 -1
  188. package/dist/domain/storageTable/index.js.map +1 -0
  189. package/dist/editor/index.cjs +3 -4
  190. package/dist/editor/index.d.cts +2 -4
  191. package/dist/editor/index.d.ts +2 -4
  192. package/dist/editor/index.js +3 -4
  193. package/dist/editor/types.d.cts +1 -1
  194. package/dist/editor/types.d.ts +1 -1
  195. package/dist/{emitter-dLF1Fyfg.d.ts → emitter-raKkIqRp.d.cts} +1 -3
  196. package/dist/{emitter-dLF1Fyfg.d.cts → emitter-raKkIqRp.d.ts} +1 -3
  197. package/dist/encryption/index.cjs +2 -3
  198. package/dist/encryption/index.d.cts +1 -1
  199. package/dist/encryption/index.d.ts +1 -1
  200. package/dist/encryption/index.js +2 -3
  201. package/dist/encryption/types.d.cts +1 -1
  202. package/dist/encryption/types.d.ts +1 -1
  203. package/dist/generateUUID-DE9sNyJF.js +5 -0
  204. package/dist/{generateUUID-Dr8l-aoc.js.map → generateUUID-DE9sNyJF.js.map} +1 -1
  205. package/dist/{generateUUID-C6qKBPIv.cjs → generateUUID-DbSTmvVP.cjs} +2 -3
  206. package/dist/{generateUUID-C6qKBPIv.cjs.map → generateUUID-DbSTmvVP.cjs.map} +1 -1
  207. package/dist/import/index.cjs +1 -1
  208. package/dist/import/index.d.cts +3 -5
  209. package/dist/import/index.d.ts +3 -5
  210. package/dist/import/index.js +1 -2
  211. package/dist/{import-BahNYv91.cjs → import-CABlFMQX.cjs} +6 -9
  212. package/dist/{import-BahNYv91.cjs.map → import-CABlFMQX.cjs.map} +1 -1
  213. package/dist/{import-FWy_wQZ1.js → import-CT1Ce5Rp.js} +6 -9
  214. package/dist/{import-FWy_wQZ1.js.map → import-CT1Ce5Rp.js.map} +1 -1
  215. package/dist/index-24GpnYhn.d.cts +150 -0
  216. package/dist/{index-VlzlOBkc.d.cts → index-AA3MRfRn.d.cts} +71 -13
  217. package/dist/{index-BLvmyehw.d.ts → index-BDPxm9qu.d.ts} +3 -7
  218. package/dist/index-BUZ-vTRt.d.ts +150 -0
  219. package/dist/{index-DzLXtE4Q.d.ts → index-BZDxWvZW.d.ts} +5 -7
  220. package/dist/index-C9iNazAc.d.ts +15103 -0
  221. package/dist/{index-avzO5sLa.d.ts → index-CCcdySOC.d.cts} +5 -7
  222. package/dist/{index-D91RxB_S.d.cts → index-CN0--VsY.d.ts} +5 -7
  223. package/dist/index-CTMnmISl.d.cts +15103 -0
  224. package/dist/{index-m7fX76x3.d.ts → index-CbSh3KFw.d.cts} +4 -12
  225. package/dist/{index-Cc5wSIRJ.d.cts → index-ClIV2Lch.d.cts} +5 -7
  226. package/dist/{index-BIldED4N.d.ts → index-CuI8OI9E.d.ts} +4 -13
  227. package/dist/{index-ChDl6ig5.d.cts → index-D1mduJne.d.cts} +11 -48
  228. package/dist/{index-sDHBkJhU.d.ts → index-D1mduJne.d.ts} +12 -49
  229. package/dist/{index-DlZiWfQb.d.ts → index-DIPMzH--.d.ts} +17 -10
  230. package/dist/{index-Co2Cd-nw.d.cts → index-DQagqTVa.d.cts} +3 -7
  231. package/dist/{index-CIqWOEWD.d.ts → index-DVBQgFg0.d.ts} +4 -6
  232. package/dist/index-DXoN8VwV.d.cts +10 -0
  233. package/dist/{index-BHiJu8LF.d.cts → index-Db266tLz.d.cts} +17 -10
  234. package/dist/{index-ByLCYBaw.d.cts → index-DgGpQsAT.d.cts} +4 -6
  235. package/dist/{index-CzHrIfZS.d.ts → index-DjSthn8d.d.ts} +71 -13
  236. package/dist/index-Xpu7qIZk.d.ts +10 -0
  237. package/dist/{index-BTrxCk90.d.ts → index-lTrNMlj6.d.ts} +3 -5
  238. package/dist/{index-CpGmmJbt.d.cts → index-m9-mN8Gg.d.ts} +4 -12
  239. package/dist/{index-CpUYVB-d.d.cts → index-xX8-Stoq.d.cts} +4 -13
  240. package/dist/{index-BCjU-g9t.d.cts → index-z-2okomN.d.cts} +3 -5
  241. package/dist/index.cjs +434 -1053
  242. package/dist/index.cjs.map +1 -1
  243. package/dist/index.d.cts +9 -8
  244. package/dist/index.d.ts +9 -8
  245. package/dist/index.js +427 -1050
  246. package/dist/index.js.map +1 -1
  247. package/dist/{isLoginPageRedirect-r0Opgc1n.cjs → isLoginPageRedirect-CoUxJi2x.cjs} +3 -4
  248. package/dist/{isLoginPageRedirect-r0Opgc1n.cjs.map → isLoginPageRedirect-CoUxJi2x.cjs.map} +1 -1
  249. package/dist/{isLoginPageRedirect-B4QKSiSa.js → isLoginPageRedirect-D-lqF_kZ.js} +3 -4
  250. package/dist/{isLoginPageRedirect-B4QKSiSa.js.map → isLoginPageRedirect-D-lqF_kZ.js.map} +1 -1
  251. package/dist/{isPlainObject-LYW-03uB.js → isPlainObject-BxsT8_t2.js} +2 -3
  252. package/dist/{isPlainObject-LYW-03uB.js.map → isPlainObject-BxsT8_t2.js.map} +1 -1
  253. package/dist/{isPlainObject-BB3iy87C.cjs → isPlainObject-CcvQt0qB.cjs} +2 -3
  254. package/dist/{isPlainObject-BB3iy87C.cjs.map → isPlainObject-CcvQt0qB.cjs.map} +1 -1
  255. package/dist/kaiAgent/index.cjs +1 -1
  256. package/dist/kaiAgent/index.d.cts +2 -2
  257. package/dist/kaiAgent/index.d.ts +2 -2
  258. package/dist/kaiAgent/index.js +1 -2
  259. package/dist/kaiAgent/types.d.cts +1 -1
  260. package/dist/kaiAgent/types.d.ts +1 -1
  261. package/dist/{kaiAgent-CYvrS8oZ.js → kaiAgent-D2TiMDjW.js} +6 -7
  262. package/dist/{kaiAgent-CYvrS8oZ.js.map → kaiAgent-D2TiMDjW.js.map} +1 -1
  263. package/dist/{kaiAgent-N2qbUFZm.cjs → kaiAgent-gaA7dqki.cjs} +6 -7
  264. package/dist/{kaiAgent-N2qbUFZm.cjs.map → kaiAgent-gaA7dqki.cjs.map} +1 -1
  265. package/dist/{kaiMemory-Qch09f-m.cjs → kaiMemory-CkLQfJXD.cjs} +6 -9
  266. package/dist/{kaiMemory-Qch09f-m.cjs.map → kaiMemory-CkLQfJXD.cjs.map} +1 -1
  267. package/dist/{kaiMemory-C9di17bd.js → kaiMemory-oir_qCo_.js} +6 -9
  268. package/dist/{kaiMemory-C9di17bd.js.map → kaiMemory-oir_qCo_.js.map} +1 -1
  269. package/dist/management/index.cjs +1 -1
  270. package/dist/management/index.d.cts +1 -1
  271. package/dist/management/index.d.ts +1 -1
  272. package/dist/management/index.js +1 -2
  273. package/dist/management/types.cjs +13 -0
  274. package/dist/management/types.cjs.map +1 -0
  275. package/dist/management/types.d.cts +2 -2
  276. package/dist/management/types.d.ts +2 -2
  277. package/dist/management/types.js +11 -1
  278. package/dist/management/types.js.map +1 -0
  279. package/dist/{management-CXHnxVaZ.cjs → management-BEGOEQxM.cjs} +34 -59
  280. package/dist/management-BEGOEQxM.cjs.map +1 -0
  281. package/dist/{management-NYAD6ej4.js → management-BcGHyxAP.js} +34 -59
  282. package/dist/management-BcGHyxAP.js.map +1 -0
  283. package/dist/metastore/index.cjs +1 -1
  284. package/dist/metastore/index.d.cts +1 -1
  285. package/dist/metastore/index.d.ts +1 -1
  286. package/dist/metastore/index.js +1 -2
  287. package/dist/metastore/types.d.cts +1 -1
  288. package/dist/metastore/types.d.ts +1 -1
  289. package/dist/{metastore-Ywq08DBz.js → metastore-CGsgxjng.js} +7 -10
  290. package/dist/{metastore-Ywq08DBz.js.map → metastore-CGsgxjng.js.map} +1 -1
  291. package/dist/{metastore-BXHg33ku.cjs → metastore-DeRQ2VIv.cjs} +7 -10
  292. package/dist/{metastore-BXHg33ku.cjs.map → metastore-DeRQ2VIv.cjs.map} +1 -1
  293. package/dist/microsoftGraph/index.cjs +5 -8
  294. package/dist/microsoftGraph/index.cjs.map +1 -1
  295. package/dist/microsoftGraph/index.d.cts +3 -7
  296. package/dist/microsoftGraph/index.d.ts +3 -7
  297. package/dist/microsoftGraph/index.js +5 -8
  298. package/dist/microsoftGraph/index.js.map +1 -1
  299. package/dist/microsoftGraph/types.d.cts +2 -4
  300. package/dist/microsoftGraph/types.d.ts +2 -4
  301. package/dist/{middleware-GOfx8Apu.js → middleware-8zaJWcyU.js} +3 -5
  302. package/dist/middleware-8zaJWcyU.js.map +1 -0
  303. package/dist/{middleware-CEP6uu_D.cjs → middleware-B9RNuLfD.cjs} +3 -5
  304. package/dist/middleware-B9RNuLfD.cjs.map +1 -0
  305. package/dist/notifications/index.cjs +5 -6
  306. package/dist/notifications/index.d.cts +2 -4
  307. package/dist/notifications/index.d.ts +2 -4
  308. package/dist/notifications/index.js +5 -6
  309. package/dist/notifications/types.d.cts +1 -1
  310. package/dist/notifications/types.d.ts +1 -1
  311. package/dist/oauth/index.cjs +1 -1
  312. package/dist/oauth/index.d.cts +2 -4
  313. package/dist/oauth/index.d.ts +2 -4
  314. package/dist/oauth/index.js +1 -2
  315. package/dist/oauth/types.d.cts +1 -1
  316. package/dist/oauth/types.d.ts +1 -1
  317. package/dist/{oauth-DKZPuUlt.cjs → oauth-B5Biqz21.cjs} +7 -9
  318. package/dist/{oauth-DKZPuUlt.cjs.map → oauth-B5Biqz21.cjs.map} +1 -1
  319. package/dist/{oauth-GXmZ9agP.js → oauth-ByCdISsV.js} +7 -9
  320. package/dist/{oauth-GXmZ9agP.js.map → oauth-ByCdISsV.js.map} +1 -1
  321. package/dist/omnisearch/index.cjs +3 -4
  322. package/dist/omnisearch/index.d.cts +2 -4
  323. package/dist/omnisearch/index.d.ts +2 -4
  324. package/dist/omnisearch/index.js +3 -4
  325. package/dist/omnisearch/types.d.cts +1 -1
  326. package/dist/omnisearch/types.d.ts +1 -1
  327. package/dist/project-DmuC0bMK.js +83 -0
  328. package/dist/project-DmuC0bMK.js.map +1 -0
  329. package/dist/project-Onf-IcPW.cjs +136 -0
  330. package/dist/project-Onf-IcPW.cjs.map +1 -0
  331. package/dist/{project-nbv9yjpl.d.ts → project-UHZGFmmG.d.cts} +6 -9
  332. package/dist/{project-Dzu85cqr.d.cts → project-iBm4cIIR.d.ts} +6 -9
  333. package/dist/queryService/index.cjs +1 -1
  334. package/dist/queryService/index.d.cts +1 -1
  335. package/dist/queryService/index.d.ts +1 -1
  336. package/dist/queryService/index.js +1 -2
  337. package/dist/queryService/types.d.cts +1 -1
  338. package/dist/queryService/types.d.ts +1 -1
  339. package/dist/{queryService-CzK53q94.cjs → queryService-Cg-eMysa.cjs} +9 -11
  340. package/dist/{queryService-CzK53q94.cjs.map → queryService-Cg-eMysa.cjs.map} +1 -1
  341. package/dist/{queryService-C-pZha5p.js → queryService-x8kq8Z2-.js} +9 -11
  342. package/dist/{queryService-C-pZha5p.js.map → queryService-x8kq8Z2-.js.map} +1 -1
  343. package/dist/queue/index.cjs +1 -1
  344. package/dist/queue/index.d.cts +4 -5
  345. package/dist/queue/index.d.ts +4 -5
  346. package/dist/queue/index.js +1 -2
  347. package/dist/queue/types.d.cts +1 -1
  348. package/dist/queue/types.d.ts +1 -1
  349. package/dist/{queue-D6-x4OGF.js → queue-BiIs9fX4.js} +9 -11
  350. package/dist/{queue-D6-x4OGF.js.map → queue-BiIs9fX4.js.map} +1 -1
  351. package/dist/{queue-BJvDWriM.cjs → queue-CBi9Q8vp.cjs} +9 -11
  352. package/dist/{queue-BJvDWriM.cjs.map → queue-CBi9Q8vp.cjs.map} +1 -1
  353. package/dist/{rolldown-runtime-VH7oDXx4.cjs → rolldown-runtime-CmQyd0Gu.cjs} +1 -2
  354. package/dist/scheduler/index.cjs +5 -6
  355. package/dist/scheduler/index.d.cts +2 -4
  356. package/dist/scheduler/index.d.ts +2 -4
  357. package/dist/scheduler/index.js +5 -6
  358. package/dist/scheduler/types.d.cts +1 -1
  359. package/dist/scheduler/types.d.ts +1 -1
  360. package/dist/{schema-BUyMwQnM.d.cts → schema-DLmBEgPM.d.cts} +1 -3
  361. package/dist/{schema-BUyMwQnM.d.ts → schema-DLmBEgPM.d.ts} +1 -3
  362. package/dist/schemaGuidedMerge-C8CqrNGe.cjs +55 -0
  363. package/dist/schemaGuidedMerge-C8CqrNGe.cjs.map +1 -0
  364. package/dist/schemaGuidedMerge-DFNqj9Nz.js +44 -0
  365. package/dist/schemaGuidedMerge-DFNqj9Nz.js.map +1 -0
  366. package/dist/sdk/configurations/index.cjs +634 -2
  367. package/dist/sdk/configurations/index.cjs.map +1 -0
  368. package/dist/sdk/configurations/index.d.cts +1030 -4
  369. package/dist/sdk/configurations/index.d.ts +1030 -4
  370. package/dist/sdk/configurations/index.js +633 -1
  371. package/dist/sdk/configurations/index.js.map +1 -0
  372. package/dist/sdk/developerPortal/index.cjs +9 -13
  373. package/dist/sdk/developerPortal/index.cjs.map +1 -1
  374. package/dist/sdk/developerPortal/index.d.cts +4 -6
  375. package/dist/sdk/developerPortal/index.d.ts +4 -6
  376. package/dist/sdk/developerPortal/index.js +9 -13
  377. package/dist/sdk/developerPortal/index.js.map +1 -1
  378. package/dist/sdk/kaiMemory/index.cjs +1 -1
  379. package/dist/sdk/kaiMemory/index.d.cts +1 -3
  380. package/dist/sdk/kaiMemory/index.d.ts +1 -3
  381. package/dist/sdk/kaiMemory/index.js +1 -2
  382. package/dist/sdk/kaiMemory/types.d.cts +1 -1
  383. package/dist/sdk/kaiMemory/types.d.ts +1 -1
  384. package/dist/sdk/queryService/index.cjs +3 -4
  385. package/dist/sdk/queryService/index.d.cts +1 -1
  386. package/dist/sdk/queryService/index.d.ts +1 -1
  387. package/dist/sdk/queryService/index.js +3 -4
  388. package/dist/sdk/semanticLayer/index.cjs +1 -1
  389. package/dist/sdk/semanticLayer/index.d.cts +1 -7
  390. package/dist/sdk/semanticLayer/index.d.ts +1 -7
  391. package/dist/sdk/semanticLayer/index.js +1 -2
  392. package/dist/sdk/semanticLayer/types.d.cts +1 -1
  393. package/dist/sdk/semanticLayer/types.d.ts +1 -1
  394. package/dist/sdk/storage/index.cjs +3 -6
  395. package/dist/sdk/storage/index.cjs.map +1 -1
  396. package/dist/sdk/storage/index.d.cts +0 -6
  397. package/dist/sdk/storage/index.d.ts +0 -6
  398. package/dist/sdk/storage/index.js +3 -6
  399. package/dist/sdk/storage/index.js.map +1 -1
  400. package/dist/sdk/tag/index.cjs +1 -1
  401. package/dist/sdk/tag/index.d.cts +3 -5
  402. package/dist/sdk/tag/index.d.ts +3 -5
  403. package/dist/sdk/tag/index.js +1 -2
  404. package/dist/sdk/tag/types.d.cts +1 -1
  405. package/dist/sdk/tag/types.d.ts +1 -1
  406. package/dist/sdk/vault/index.cjs +3 -5
  407. package/dist/sdk/vault/index.cjs.map +1 -1
  408. package/dist/sdk/vault/index.d.cts +1 -1
  409. package/dist/sdk/vault/index.d.ts +1 -1
  410. package/dist/sdk/vault/index.js +3 -5
  411. package/dist/sdk/vault/index.js.map +1 -1
  412. package/dist/{semanticLayer-DvjS_nzo.js → semanticLayer-BdPW_wLo.js} +9 -14
  413. package/dist/{semanticLayer-DvjS_nzo.js.map → semanticLayer-BdPW_wLo.js.map} +1 -1
  414. package/dist/{semanticLayer-7BejcMj_.cjs → semanticLayer-djom-J78.cjs} +9 -14
  415. package/dist/{semanticLayer-7BejcMj_.cjs.map → semanticLayer-djom-J78.cjs.map} +1 -1
  416. package/dist/status/index.cjs +2 -3
  417. package/dist/status/index.d.cts +1 -3
  418. package/dist/status/index.d.ts +1 -3
  419. package/dist/status/index.js +2 -3
  420. package/dist/status/types.d.cts +0 -2
  421. package/dist/status/types.d.ts +0 -2
  422. package/dist/storage/index.cjs +12 -9
  423. package/dist/storage/index.d.cts +4 -3
  424. package/dist/storage/index.d.ts +4 -3
  425. package/dist/storage/index.js +10 -10
  426. package/dist/storage/types.d.cts +6 -6
  427. package/dist/storage/types.d.ts +6 -6
  428. package/dist/{storage-BR-Kgi-6.js → storage-BpOLWT6h.js} +73 -85
  429. package/dist/{storage-CVBXivpB.cjs.map → storage-BpOLWT6h.js.map} +1 -1
  430. package/dist/{storage-CVBXivpB.cjs → storage-KJ5Ki_ma.cjs} +90 -84
  431. package/dist/storage-KJ5Ki_ma.cjs.map +1 -0
  432. package/dist/{store-xS-Cu_VS.cjs → store-2OyH1XOP.cjs} +3 -5
  433. package/dist/{store-xS-Cu_VS.cjs.map → store-2OyH1XOP.cjs.map} +1 -1
  434. package/dist/{store-C9FQCHGe.js → store-HP0zRcLz.js} +3 -5
  435. package/dist/{store-C9FQCHGe.js.map → store-HP0zRcLz.js.map} +1 -1
  436. package/dist/stream/index.cjs +4 -5
  437. package/dist/stream/index.d.cts +2 -4
  438. package/dist/stream/index.d.ts +2 -4
  439. package/dist/stream/index.js +4 -5
  440. package/dist/stream/types.d.cts +1 -1
  441. package/dist/stream/types.d.ts +1 -1
  442. package/dist/{suggestions-BH3x7xU7.d.ts → suggestions-xhIjrlvi.d.cts} +1 -3
  443. package/dist/{suggestions-BH3x7xU7.d.cts → suggestions-xhIjrlvi.d.ts} +1 -3
  444. package/dist/syncActions/index.cjs +1 -1
  445. package/dist/syncActions/index.d.cts +2 -2
  446. package/dist/syncActions/index.d.ts +2 -2
  447. package/dist/syncActions/index.js +1 -2
  448. package/dist/syncActions/types.d.cts +2 -2
  449. package/dist/syncActions/types.d.ts +2 -2
  450. package/dist/{syncActions-C1rE4R3f.cjs → syncActions-BcX3jm2E.cjs} +74 -187
  451. package/dist/syncActions-BcX3jm2E.cjs.map +1 -0
  452. package/dist/{syncActions-DM8vP7p3.js → syncActions-giPLTfje.js} +73 -186
  453. package/dist/syncActions-giPLTfje.js.map +1 -0
  454. package/dist/{tag-DHS_soa7.cjs → tag-A5z4tJn1.cjs} +5 -7
  455. package/dist/{tag-DHS_soa7.cjs.map → tag-A5z4tJn1.cjs.map} +1 -1
  456. package/dist/{tag-hh-1nhNr.js → tag-BwjbG3tT.js} +5 -7
  457. package/dist/{tag-hh-1nhNr.js.map → tag-BwjbG3tT.js.map} +1 -1
  458. package/dist/telemetry/index.cjs +4 -5
  459. package/dist/telemetry/index.d.cts +2 -4
  460. package/dist/telemetry/index.d.ts +2 -4
  461. package/dist/telemetry/index.js +4 -5
  462. package/dist/telemetry/types.d.cts +1 -1
  463. package/dist/telemetry/types.d.ts +1 -1
  464. package/dist/{transientRetries-B4iusp69.js → transientRetries-BKqmb85B.js} +13 -22
  465. package/dist/{transientRetries-B4iusp69.js.map → transientRetries-BKqmb85B.js.map} +1 -1
  466. package/dist/{transientRetries-DdJfH9QK.cjs → transientRetries-CM7rAEXQ.cjs} +13 -22
  467. package/dist/{transientRetries-DdJfH9QK.cjs.map → transientRetries-CM7rAEXQ.cjs.map} +1 -1
  468. package/dist/{types-DfJP6Dti.d.ts → types--Rp5wvaz.d.ts} +2 -6
  469. package/dist/{types-DlgqPU_4.d.cts → types-1IBnjBVJ.d.cts} +2 -6
  470. package/dist/{types-BXHZQvGy.d.ts → types-37vwxse4.d.cts} +2 -6
  471. package/dist/{types-QPW-7dPm.d.ts → types-6T04_qUf.d.ts} +2 -6
  472. package/dist/{types-CwQ8_n8q.d.ts → types-B0e-no6u.d.ts} +41 -62
  473. package/dist/{types-C_raqbl-.d.cts → types-B1qe1etN.d.cts} +3 -7
  474. package/dist/{types-Cc4yTEdK.d.ts → types-B3ri-iiC.d.ts} +2 -26
  475. package/dist/{types-0ZAMQhva.d.cts → types-BB49alHP.d.cts} +245 -9
  476. package/dist/{types-NSxpnYW5.d.cts → types-BCGrKW1K.d.cts} +6 -10
  477. package/dist/{types-BaqdM92a.d.ts → types-BE8abIig.d.cts} +2 -6
  478. package/dist/{types-c4h2YDMC.d.ts → types-BWMOK6eL.d.cts} +2 -6
  479. package/dist/{types-VehpPOQX.d.ts → types-Bat0SIZA.d.cts} +16 -97
  480. package/dist/{types-CpWE6Yg2.d.ts → types-Bdl7EFMc.d.ts} +2 -6
  481. package/dist/{types-DgOLSRiy.d.ts → types-BfB-XXLF.d.ts} +245 -9
  482. package/dist/{types-C9VaQSqV.d.ts → types-BiDdBXSm.d.ts} +2 -8
  483. package/dist/{types-EkyQ0_10.d.cts → types-BuclMPeY.d.cts} +2 -26
  484. package/dist/{types-CfZLdfAL.d.ts → types-C9okze_R.d.ts} +3 -7
  485. package/dist/{types-Dn1G-qv4.d.cts → types-CPWjRdnj.d.cts} +41 -62
  486. package/dist/{types-D3mj56iq.d.cts → types-CRubbBcU.d.cts} +2 -6
  487. package/dist/{types-BTy_FFSu.d.ts → types-CWcdaq-K.d.ts} +2 -6
  488. package/dist/{types-Bt8CEZ6K.d.ts → types-CcGp6O3B.d.cts} +3 -7
  489. package/dist/{types-BWYtQkHu.d.ts → types-Cr5lyI99.d.ts} +2 -6
  490. package/dist/{types-CNkQuWnO.d.cts → types-CxEJ77m3.d.cts} +3 -7
  491. package/dist/{types-CrJIILXf.d.cts → types-D-tJt0hQ.d.cts} +2 -6
  492. package/dist/{types-BYFU_6Iz.d.ts → types-D6lre27s.d.ts} +2 -8
  493. package/dist/{types-Cn8I0vcr.d.ts → types-DHMxPJZq.d.cts} +2 -6
  494. package/dist/{types-BtS3DhGu.d.cts → types-DJzTVMu1.d.ts} +2 -6
  495. package/dist/{types-DXF6faow.d.cts → types-DNgazFnF.d.cts} +2 -8
  496. package/dist/{types-UySfduQo.d.ts → types-DRCttnIN.d.ts} +2 -6
  497. package/dist/{types-D3H3EAre.d.ts → types-DUpVIuk7.d.ts} +2 -6
  498. package/dist/{types-Ce5Blzhg.d.ts → types-DeyXJzWz.d.cts} +2 -6
  499. package/dist/{types-sOM2_KPc.d.cts → types-Dryq2GGE.d.cts} +2 -6
  500. package/dist/{types-CwGbiMF-.d.cts → types-DschSZHf.d.cts} +3 -5
  501. package/dist/{types-C-GSYDTN.d.ts → types-DtOfhDzz.d.ts} +3 -5
  502. package/dist/{types-C4eQ-Zcx.d.cts → types-Du5o-tud.d.ts} +16 -97
  503. package/dist/{types-BbwrMl0Q.d.cts → types-DwbTiyhZ.d.cts} +2 -6
  504. package/dist/{types-B7L6uSYb.d.ts → types-Dz9vyloX.d.ts} +6 -10
  505. package/dist/{types-6KabdIyO.d.cts → types-E8tzafsk.d.cts} +3 -7
  506. package/dist/{types-EmIcG-8K.d.cts → types-LconaX98.d.cts} +2 -6
  507. package/dist/{types-Cfc-fYbq.d.cts → types-YpOm4yXE.d.cts} +2 -8
  508. package/dist/{types-CXv_e6xC.d.cts → types-ZZwdKCBl.d.ts} +2 -6
  509. package/dist/{types-D8d5tyGi.d.cts → types-eFi8xJIM.d.cts} +2 -6
  510. package/dist/{types-wNuJUhco.d.cts → types-inG9y3dP.d.ts} +2 -6
  511. package/dist/{types-Vu09EUZs.d.ts → types-ir7T2a9a.d.ts} +3 -7
  512. package/dist/{types-DMpiG2q4.d.cts → types-jjOulnni.d.ts} +2 -6
  513. package/dist/{types-DSBrhK_K.d.cts → types-wYrC2boT.d.ts} +3 -7
  514. package/dist/{types-1LENlL5h.d.ts → types-xzt_2H63.d.ts} +3 -7
  515. package/dist/{types-9d8ihjZh.d.cts → types-zPY-XGnM.d.ts} +2 -6
  516. package/dist/{validateConnectionStatus-BalWEyRk.cjs → validateConnectionStatus-BjemGI1e.cjs} +5 -7
  517. package/dist/{validateConnectionStatus-BalWEyRk.cjs.map → validateConnectionStatus-BjemGI1e.cjs.map} +1 -1
  518. package/dist/{validateConnectionStatus-DyrYpn0G.js → validateConnectionStatus-DYwWeWVo.js} +5 -7
  519. package/dist/{validateConnectionStatus-DyrYpn0G.js.map → validateConnectionStatus-DYwWeWVo.js.map} +1 -1
  520. package/dist/vault/index.cjs +7 -8
  521. package/dist/vault/index.d.cts +1 -1
  522. package/dist/vault/index.d.ts +1 -1
  523. package/dist/vault/index.js +7 -8
  524. package/dist/vault/types.d.cts +1 -1
  525. package/dist/vault/types.d.ts +1 -1
  526. package/package.json +7 -7
  527. package/surface/apps.md +12 -10
  528. package/surface/billing.md +2 -2
  529. package/surface/chat.md +1 -1
  530. package/surface/dataScience.md +1 -1
  531. package/surface/editor.md +5 -5
  532. package/surface/kaiAgent.md +4 -4
  533. package/surface/management.md +3 -2
  534. package/surface/queue.md +3 -3
  535. package/surface/sdk.md +0 -6
  536. package/surface/stack.md +11 -0
  537. package/surface/storage.md +2 -2
  538. package/surface/stream.md +6 -6
  539. package/surface/syncActions.md +1 -2
  540. package/dist/configurations-B2O8AAy0.cjs +0 -735
  541. package/dist/configurations-B2O8AAy0.cjs.map +0 -1
  542. package/dist/configurations-CL0ouUMa.js.map +0 -1
  543. package/dist/configurations-D9J3jh3g.cjs.map +0 -1
  544. package/dist/configurations-DKINmjA3.js +0 -718
  545. package/dist/configurations-DKINmjA3.js.map +0 -1
  546. package/dist/constants-CA4UN2Xv.js.map +0 -1
  547. package/dist/constants-a0jswUeK.cjs.map +0 -1
  548. package/dist/createGenericFetchClient-CQdNcPC3.js +0 -7
  549. package/dist/createOpenapiFetchClient-DXiMv9WL.js +0 -7
  550. package/dist/domain/permissions/index.cjs.map +0 -1
  551. package/dist/domain/permissions/index.js.map +0 -1
  552. package/dist/generateUUID-Dr8l-aoc.js +0 -6
  553. package/dist/index-B3QTeqfL.d.ts +0 -23575
  554. package/dist/index-BfqkgPGI.d.cts +0 -34
  555. package/dist/index-BfqkgPGI.d.ts +0 -34
  556. package/dist/index-C40Fbj-6.d.cts +0 -23575
  557. package/dist/index-P1vR966i.d.cts +0 -199
  558. package/dist/index-P1vR966i.d.ts +0 -199
  559. package/dist/management-CXHnxVaZ.cjs.map +0 -1
  560. package/dist/management-NYAD6ej4.js.map +0 -1
  561. package/dist/middleware-CEP6uu_D.cjs.map +0 -1
  562. package/dist/middleware-GOfx8Apu.js.map +0 -1
  563. package/dist/project-BXLFrWJ6.js +0 -45
  564. package/dist/project-BXLFrWJ6.js.map +0 -1
  565. package/dist/project-CpgplgCr.cjs +0 -62
  566. package/dist/project-CpgplgCr.cjs.map +0 -1
  567. package/dist/storage-BR-Kgi-6.js.map +0 -1
  568. package/dist/storageTable-BNOR2FCh.cjs +0 -442
  569. package/dist/storageTable-BNOR2FCh.cjs.map +0 -1
  570. package/dist/storageTable-BldTNyEk.js +0 -395
  571. package/dist/storageTable-BldTNyEk.js.map +0 -1
  572. package/dist/syncActions-C1rE4R3f.cjs.map +0 -1
  573. package/dist/syncActions-DM8vP7p3.js.map +0 -1
  574. package/surface/context.md +0 -40
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants-BMSHGwOR.js","names":[],"sources":["../src/constants/serviceIds.ts","../src/constants/manageErrorCodes.ts","../src/constants/projectFeatures.ts","../src/constants/stackFeatures.ts","../src/constants/adminFeatures.ts","../src/constants/backends.ts","../src/constants/stacks.ts","../src/constants/index.ts"],"sourcesContent":["/**\n * Every service a Keboola stack can announce in its `GET /v2/storage` index.\n *\n * - The values are the `id`s the stack reports; the service-client registry and `createStack`'s\n * lookups narrow on them. The index itself stays `string` — a stack may announce more.\n * - Callers enumerate them at runtime — a test double announcing every service, for one.\n */\nexport const ServiceId = {\n Vault: 'vault',\n DataScience: 'data-science',\n Encryption: 'encryption',\n Telemetry: 'telemetry',\n Ai: 'ai',\n Editor: 'editor',\n Import: 'import',\n Oauth: 'oauth',\n Query: 'query',\n Queue: 'queue',\n KaiAssistant: 'kai-assistant',\n KaiAgent: 'kai-agent',\n ComponentsMcp: 'components-mcp',\n SyncActions: 'sync-actions',\n Stream: 'stream',\n Notification: 'notification',\n Scheduler: 'scheduler',\n Metastore: 'metastore',\n Billing: 'billing',\n} as const;\n\nexport type ServiceId = (typeof ServiceId)[keyof typeof ServiceId];\n","export const ManageErrorCode = {\n ProgrammaticProjectInvalidClaim: 'manage.programmaticProjects.invalidClaim',\n ProgrammaticProjectRateLimited: 'manage.programmaticProjects.rateLimited',\n ProgrammaticProjectProvisioningFailed: 'manage.programmaticProjects.provisioningFailed',\n} as const;\n\nexport type ManageErrorCode = (typeof ManageErrorCode)[keyof typeof ManageErrorCode];\n","export const ProjectFeature = {\n SandboxesPythonSpark: 'sandboxes-python-spark',\n GcpMarketplaceByodb: 'gcp-marketplace-byodb',\n GcpMarketplaceByodbEmpty: 'gcp-marketplace-byodb-empty',\n FrontendLogin: 'frontend-login',\n ComponentsMcp: 'ai-components-mcp',\n PayAsYouGo: 'pay-as-you-go',\n ShowVault: 'show-vault',\n DeprecatedGoogleDriveTranspose: 'deprecated-google-drive-transpose',\n SandboxesPersistentVolume: 'sandboxes-persistent-volume',\n WorkspaceSnowflakeDynamicBackendSize: 'workspace-snowflake-dynamic-backend-size',\n DynamicBackendJobs: 'dynamic-backend-jobs',\n HasSimplifiedComponents: 'has-simplified-components',\n FlowMigration: 'flow-migration',\n FlowMigrationBatch1: 'flow-migration-batch1',\n FlowMigrationBatch2: 'flow-migration-batch2',\n FlowMigrationBatch3: 'flow-migration-batch3',\n OracleTransformations: 'oracle-transformations',\n ExternalBuckets: 'external-buckets',\n InputMappingReadOnlyStorage: 'input-mapping-read-only-storage',\n Artifacts: 'artifacts',\n SnowflakePartnerConnect: 'snowflake-partner-connect',\n SnowflakePartnerConnectLimited: 'snowflake-partner-connect-limited',\n NewNativeTypes: 'new-native-types',\n DisableLegacyBucketPrefix: 'disable-legacy-bucket-prefix',\n SoxProtectedDefaultBranch: 'protected-default-branch',\n StorageBranches: 'storage-branches',\n DataStreams: 'data-streams',\n AiLineage: 'ai-lineage',\n AiComponentSuggestion: 'ai-component-suggestion',\n AgentChat: 'agent-chat',\n AgentChatUseKaiAgentUrl: 'agent-chat-use-kai-agent-url',\n AgentChatModelTiers: 'agent-chat-model-tiers',\n BucketExposure: 'bucket-exposure',\n WebMcp: 'webmcp',\n SnowflakeRegisterExternalSecureDataShare: 'snowflake-register-external-secure-data-share',\n DirectGrantOutputMapping: 'direct-grant-output-mapping',\n EditorWithoutReadOnlyStorage: 'editor-without-read-only-storage',\n BranchesMergeRequests: 'branches-merge-requests',\n DenyExternalDatasetInputMapping: 'deny-external-dataset-input-mapping',\n AllowSharedSnowflakeAccess: 'allow-shared-snowflake-access',\n BigqueryDefaultImView: 'bigquery-default-im-view',\n BigqueryPolicyTags: 'bigquery-policy-tags',\n} as const;\n\nexport type ProjectFeature = (typeof ProjectFeature)[keyof typeof ProjectFeature];\n","export const StackFeature = {\n SingleTenant: 'single-tenant',\n CanaryStack: 'canary-stack',\n DisableJuliaAndR: 'disable-julia-and-r',\n SamlRoles: 'saml-roles',\n NewOauthService: 'new-oauth-service-enabled',\n DataAppsEnforceAuth: 'data-apps-enforce-auth',\n AllowAi: 'allow-ai',\n UserWorkspaceDynamicBackendEnabled: 'user-workspace-dynamic-backend-enabled',\n McpEnabled: 'mcp-enabled',\n KaiEnabled: 'kai-enabled',\n AgentProvisioning: 'agent-provisioning',\n SandboxesPythonSpark: 'sandboxes-python-spark',\n} as const;\n\nexport type StackFeature = (typeof StackFeature)[keyof typeof StackFeature];\n","export const AdminFeature = {\n DisableAutosavingInFlows: 'disable-autosaving-in-flows',\n CanUpdateProjectSettings: 'can-update-project-settings',\n CanManageFeatures: 'can-manage-features',\n CanManageUsers: 'can-manage-users',\n CanManageDeletedProjects: 'can-manage-deleted-projects',\n CanManageProjectLimits: 'can-manage-project-limits',\n CanManageMaintainers: 'can-manage-maintainers',\n CanDisableProjects: 'can-disable-projects',\n CanReactivateWorkspaces: 'can-reactivate-workspaces',\n PowerUser: 'power-user',\n MuteSoundNotifications: 'mute-sound-notifications',\n} as const;\n\nexport type AdminFeature = (typeof AdminFeature)[keyof typeof AdminFeature];\n","export const Backend = {\n Snowflake: 'snowflake',\n Bigquery: 'bigquery',\n} as const;\n\nexport type Backend = (typeof Backend)[keyof typeof Backend];\n","export const Provider = {\n Aws: 'aws',\n Azure: 'azure',\n Gcp: 'gcp',\n} as const;\n\nexport type Provider = (typeof Provider)[keyof typeof Provider];\n\nexport const Continent = {\n Us: 'us',\n Europe: 'europe',\n} as const;\n\nexport type Continent = (typeof Continent)[keyof typeof Continent];\n\nexport type KeboolaStack = {\n id: string;\n host: string;\n isSingleTenant?: boolean;\n isTesting?: boolean;\n isPayg?: boolean;\n provider?: Provider;\n continent?: Continent;\n region?: string;\n isCanary?: boolean;\n};\n\nconst stacks = {\n NORTH_EUROPE_AZURE: {\n id: 'com-keboola-azure-north-europe',\n region: 'north-europe',\n host: 'connection.north-europe.azure.keboola.com',\n provider: 'azure',\n continent: 'europe',\n isPayg: true,\n },\n EU_CENTRAL_1_AWS: {\n id: 'kbc-eu-central-1',\n region: 'eu-central-1',\n host: 'connection.eu-central-1.keboola.com',\n provider: 'aws',\n continent: 'europe',\n },\n US_EAST_1_AWS: {\n id: 'kbc-us-east-1',\n region: 'us-east-1',\n host: 'connection.keboola.com',\n provider: 'aws',\n continent: 'us',\n },\n EUROPE_WEST3_GCP: {\n id: 'com-keboola-gcp-europe-west3',\n region: 'europe-west3',\n host: 'connection.europe-west3.gcp.keboola.com',\n provider: 'gcp',\n continent: 'europe',\n },\n US_EAST_4_GCP: {\n id: 'com-keboola-gcp-us-east4',\n region: 'us-east4',\n host: 'connection.us-east4.gcp.keboola.com',\n provider: 'gcp',\n continent: 'us',\n isPayg: true,\n },\n\n /* PRIVATE SINGLE TENANT STACKS\n ---------------------------- */\n HCI: {\n id: 'cloud-keboola-hci',\n host: 'connection.hci.keboola.cloud',\n isSingleTenant: true,\n },\n CSAS_PROD: {\n id: 'cloud-keboola-cs',\n host: 'connection.cs.keboola.cloud',\n isSingleTenant: true,\n },\n CSAS_TEST: {\n id: 'cloud-keboola-cs-test',\n host: 'connection.cs-test.keboola.cloud',\n isSingleTenant: true,\n },\n INNOGY: {\n id: 'cloud-keboola-innogy-hub',\n host: 'connection.innogy-hub.keboola.cloud',\n isSingleTenant: true,\n },\n GROUPON: {\n id: 'cloud-keboola-groupon',\n host: 'connection.groupon.keboola.cloud',\n isSingleTenant: true,\n },\n CREDIT_INFO: {\n id: 'cloud-keboola-creditinfo',\n host: 'connection.creditinfo.keboola.cloud',\n isSingleTenant: true,\n },\n COATES: {\n id: 'cloud-keboola-coates',\n host: 'connection.coates.keboola.cloud',\n isSingleTenant: true,\n },\n SLSP: {\n id: 'cloud-keboola-slsp',\n host: 'connection.slsp.keboola.cloud',\n isSingleTenant: true,\n },\n HCKZ: {\n id: 'cloud-keboola-hckz',\n host: 'connection.hckz.keboola.cloud',\n isSingleTenant: true,\n },\n PASHA: {\n id: 'cloud-keboola-pasha',\n host: 'connection.pasha.keboola.cloud',\n isSingleTenant: true,\n },\n RBI: {\n id: 'cloud-keboola-rbi',\n host: 'connection.rbi.keboola.cloud',\n isSingleTenant: true,\n },\n NAH: {\n id: 'cloud-keboola-nah',\n host: 'connection.nah.keboola.cloud',\n isSingleTenant: true,\n provider: 'azure',\n continent: 'us',\n },\n\n /* DEV STACKS\n ---------------------------- */\n DEV_US_CENTRAL_1_GCP: {\n id: 'dev-keboola-gcp-us-central1',\n region: 'us-central1',\n host: 'connection.us-central1.gcp.keboola.dev',\n provider: 'gcp',\n continent: 'us',\n isTesting: true,\n },\n DEV_EU_WEST_1_AWS: {\n id: 'dev-keboola-aws-eu-west-1',\n region: 'eu-west-1',\n host: 'connection.eu-west-1.aws.keboola.dev',\n provider: 'aws',\n continent: 'europe',\n isTesting: true,\n },\n DEV_US_EAST_1_AWS_E2E: {\n id: 'dev-keboola-aws-us-east-1-e2e',\n region: 'us-east-1',\n host: 'connection.e2e.us-east-1.aws.keboola.dev',\n provider: 'aws',\n continent: 'us',\n isTesting: true,\n },\n DEV_US_EAST_2_AZURE: {\n id: 'kbc-testing-azure-east-us-2',\n region: 'east-us-2',\n host: 'connection.east-us-2.azure.keboola-testing.com',\n provider: 'azure',\n continent: 'us',\n isTesting: true,\n },\n DEV_KEBOOLA_CANARY_ORION: {\n id: 'dev-keboola-canary-orion',\n region: 'europe-west3',\n host: 'connection.canary-orion.keboola.dev',\n provider: 'gcp',\n continent: 'europe',\n isCanary: true,\n },\n} satisfies Record<string, Readonly<KeboolaStack>>;\n\n/**\n * Every stack the platform knows, keyed by name.\n *\n * - The key set is literal, so a name that is not in the object is a compile error at the call site\n * rather than an `undefined` to fall back from.\n * - The value type stays the uniform `KeboolaStack`, so `stack.isCanary` reads on any entry, not\n * only on the ones that carry the flag.\n */\nexport const STACKS: Record<keyof typeof stacks, Readonly<KeboolaStack>> = stacks;\n","export { ComponentId } from './componentId';\nexport { ManageErrorCode } from './manageErrorCodes';\nexport { ProjectFeature } from './projectFeatures';\nexport { StackFeature } from './stackFeatures';\nexport { AdminFeature } from './adminFeatures';\nexport { Backend } from './backends';\nexport { AdminRole } from './adminRoles';\nexport { ServiceId } from './serviceIds';\nexport { Continent, Provider, STACKS } from './stacks';\nexport type { KeboolaStack } from './stacks';\n\nexport const URLS = {\n USER_DOCUMENTATION: 'https://help.keboola.com',\n COMPONENTS: 'https://components.keboola.com',\n DEVELOPERS_DOCUMENTATION: 'https://developers.keboola.com',\n ACADEMY: 'https://academy.keboola.com',\n SALES_CONTACT_FORM: 'https://keboola.com/contact',\n SNOWFLAKE: 'https://www.snowflake.com',\n SNOWFLAKE_DOCS: 'https://docs.snowflake.com',\n MCP: 'https://www.keboola.com/mcp',\n CLI: 'https://www.keboola.com/cli',\n NODE_JS: 'https://nodejs.org/en',\n CLAUDE_CONNECTORS: 'https://claude.ai/customize/connectors',\n // Vendor \"how do I get this client\" pages linked from the connect surfaces.\n CLIENT_CLAUDE_CODE_QUICKSTART: 'https://code.claude.com/docs/en/quickstart',\n CLIENT_CLAUDE_AI: 'https://claude.ai',\n CLIENT_CLAUDE_DESKTOP_DOWNLOAD: 'https://claude.com/download',\n CLIENT_CURSOR_QUICKSTART: 'https://cursor.com/docs/get-started/quickstart',\n CLIENT_VS_CODE_SETUP: 'https://code.visualstudio.com/docs/setup/setup-overview',\n CLIENT_CODEX_QUICKSTART: 'https://developers.openai.com/codex/cli',\n CLIENT_CHATGPT_DOWNLOAD: 'https://chatgpt.com/download',\n CLIENT_MAKE_GET_STARTED: 'https://help.make.com/get-started',\n CLIENT_DEVIN_DESKTOP: 'https://docs.devin.ai/desktop/getting-started',\n} as const;\n"],"mappings":";;;;;;;;AAOA,MAAa,YAAY;CACvB,OAAO;CACP,aAAa;CACb,YAAY;CACZ,WAAW;CACX,IAAI;CACJ,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;CACP,cAAc;CACd,UAAU;CACV,eAAe;CACf,aAAa;CACb,QAAQ;CACR,cAAc;CACd,WAAW;CACX,WAAW;CACX,SAAS;AACX;;AC3BA,MAAa,kBAAkB;CAC7B,iCAAiC;CACjC,gCAAgC;CAChC,uCAAuC;AACzC;;ACJA,MAAa,iBAAiB;CAC5B,sBAAsB;CACtB,qBAAqB;CACrB,0BAA0B;CAC1B,eAAe;CACf,eAAe;CACf,YAAY;CACZ,WAAW;CACX,gCAAgC;CAChC,2BAA2B;CAC3B,sCAAsC;CACtC,oBAAoB;CACpB,yBAAyB;CACzB,eAAe;CACf,qBAAqB;CACrB,qBAAqB;CACrB,qBAAqB;CACrB,uBAAuB;CACvB,iBAAiB;CACjB,6BAA6B;CAC7B,WAAW;CACX,yBAAyB;CACzB,gCAAgC;CAChC,gBAAgB;CAChB,2BAA2B;CAC3B,2BAA2B;CAC3B,iBAAiB;CACjB,aAAa;CACb,WAAW;CACX,uBAAuB;CACvB,WAAW;CACX,yBAAyB;CACzB,qBAAqB;CACrB,gBAAgB;CAChB,QAAQ;CACR,0CAA0C;CAC1C,0BAA0B;CAC1B,8BAA8B;CAC9B,uBAAuB;CACvB,iCAAiC;CACjC,4BAA4B;CAC5B,uBAAuB;CACvB,oBAAoB;AACtB;;AC3CA,MAAa,eAAe;CAC1B,cAAc;CACd,aAAa;CACb,kBAAkB;CAClB,WAAW;CACX,iBAAiB;CACjB,qBAAqB;CACrB,SAAS;CACT,oCAAoC;CACpC,YAAY;CACZ,YAAY;CACZ,mBAAmB;CACnB,sBAAsB;AACxB;;ACbA,MAAa,eAAe;CAC1B,0BAA0B;CAC1B,0BAA0B;CAC1B,mBAAmB;CACnB,gBAAgB;CAChB,0BAA0B;CAC1B,wBAAwB;CACxB,sBAAsB;CACtB,oBAAoB;CACpB,yBAAyB;CACzB,WAAW;CACX,wBAAwB;AAC1B;;ACZA,MAAa,UAAU;CACrB,WAAW;CACX,UAAU;AACZ;;ACHA,MAAa,WAAW;CACtB,KAAK;CACL,OAAO;CACP,KAAK;AACP;AAIA,MAAa,YAAY;CACvB,IAAI;CACJ,QAAQ;AACV;;;;;;;;;AA4KA,MAAa,SAA8D;CA3JzE,oBAAoB;EAClB,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,UAAU;EACV,WAAW;EACX,QAAQ;CACV;CACA,kBAAkB;EAChB,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,UAAU;EACV,WAAW;CACb;CACA,eAAe;EACb,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,UAAU;EACV,WAAW;CACb;CACA,kBAAkB;EAChB,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,UAAU;EACV,WAAW;CACb;CACA,eAAe;EACb,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,UAAU;EACV,WAAW;EACX,QAAQ;CACV;CAIA,KAAK;EACH,IAAI;EACJ,MAAM;EACN,gBAAgB;CAClB;CACA,WAAW;EACT,IAAI;EACJ,MAAM;EACN,gBAAgB;CAClB;CACA,WAAW;EACT,IAAI;EACJ,MAAM;EACN,gBAAgB;CAClB;CACA,QAAQ;EACN,IAAI;EACJ,MAAM;EACN,gBAAgB;CAClB;CACA,SAAS;EACP,IAAI;EACJ,MAAM;EACN,gBAAgB;CAClB;CACA,aAAa;EACX,IAAI;EACJ,MAAM;EACN,gBAAgB;CAClB;CACA,QAAQ;EACN,IAAI;EACJ,MAAM;EACN,gBAAgB;CAClB;CACA,MAAM;EACJ,IAAI;EACJ,MAAM;EACN,gBAAgB;CAClB;CACA,MAAM;EACJ,IAAI;EACJ,MAAM;EACN,gBAAgB;CAClB;CACA,OAAO;EACL,IAAI;EACJ,MAAM;EACN,gBAAgB;CAClB;CACA,KAAK;EACH,IAAI;EACJ,MAAM;EACN,gBAAgB;CAClB;CACA,KAAK;EACH,IAAI;EACJ,MAAM;EACN,gBAAgB;EAChB,UAAU;EACV,WAAW;CACb;CAIA,sBAAsB;EACpB,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,UAAU;EACV,WAAW;EACX,WAAW;CACb;CACA,mBAAmB;EACjB,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,UAAU;EACV,WAAW;EACX,WAAW;CACb;CACA,uBAAuB;EACrB,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,UAAU;EACV,WAAW;EACX,WAAW;CACb;CACA,qBAAqB;EACnB,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,UAAU;EACV,WAAW;EACX,WAAW;CACb;CACA,0BAA0B;EACxB,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,UAAU;EACV,WAAW;EACX,UAAU;CACZ;AAWyE;;AC5K3E,MAAa,OAAO;CAClB,oBAAoB;CACpB,YAAY;CACZ,0BAA0B;CAC1B,SAAS;CACT,oBAAoB;CACpB,WAAW;CACX,gBAAgB;CAChB,KAAK;CACL,KAAK;CACL,SAAS;CACT,mBAAmB;CAEnB,+BAA+B;CAC/B,kBAAkB;CAClB,gCAAgC;CAChC,0BAA0B;CAC1B,sBAAsB;CACtB,yBAAyB;CACzB,yBAAyB;CACzB,yBAAyB;CACzB,sBAAsB;AACxB"}
@@ -1,11 +1,4 @@
1
- //#region src/constants/projectFeatures.ts
2
- const ProjectFeature = {
3
- DisableLegacyBucketPrefix: "disable-legacy-bucket-prefix",
4
- SoxProtectedDefaultBranch: "protected-default-branch",
5
- StorageBranches: "storage-branches"
6
- };
7
- //#endregion
8
- //#region src/constants/serviceIds.ts
1
+ // src/constants/serviceIds.ts
9
2
  /**
10
3
  * Every service a Keboola stack can announce in its `GET /v2/storage` index.
11
4
  *
@@ -34,14 +27,92 @@ const ServiceId = {
34
27
  Metastore: "metastore",
35
28
  Billing: "billing"
36
29
  };
37
- //#endregion
38
- //#region src/constants/backends.ts
30
+ // src/constants/manageErrorCodes.ts
31
+ const ManageErrorCode = {
32
+ ProgrammaticProjectInvalidClaim: "manage.programmaticProjects.invalidClaim",
33
+ ProgrammaticProjectRateLimited: "manage.programmaticProjects.rateLimited",
34
+ ProgrammaticProjectProvisioningFailed: "manage.programmaticProjects.provisioningFailed"
35
+ };
36
+ // src/constants/projectFeatures.ts
37
+ const ProjectFeature = {
38
+ SandboxesPythonSpark: "sandboxes-python-spark",
39
+ GcpMarketplaceByodb: "gcp-marketplace-byodb",
40
+ GcpMarketplaceByodbEmpty: "gcp-marketplace-byodb-empty",
41
+ FrontendLogin: "frontend-login",
42
+ ComponentsMcp: "ai-components-mcp",
43
+ PayAsYouGo: "pay-as-you-go",
44
+ ShowVault: "show-vault",
45
+ DeprecatedGoogleDriveTranspose: "deprecated-google-drive-transpose",
46
+ SandboxesPersistentVolume: "sandboxes-persistent-volume",
47
+ WorkspaceSnowflakeDynamicBackendSize: "workspace-snowflake-dynamic-backend-size",
48
+ DynamicBackendJobs: "dynamic-backend-jobs",
49
+ HasSimplifiedComponents: "has-simplified-components",
50
+ FlowMigration: "flow-migration",
51
+ FlowMigrationBatch1: "flow-migration-batch1",
52
+ FlowMigrationBatch2: "flow-migration-batch2",
53
+ FlowMigrationBatch3: "flow-migration-batch3",
54
+ OracleTransformations: "oracle-transformations",
55
+ ExternalBuckets: "external-buckets",
56
+ InputMappingReadOnlyStorage: "input-mapping-read-only-storage",
57
+ Artifacts: "artifacts",
58
+ SnowflakePartnerConnect: "snowflake-partner-connect",
59
+ SnowflakePartnerConnectLimited: "snowflake-partner-connect-limited",
60
+ NewNativeTypes: "new-native-types",
61
+ DisableLegacyBucketPrefix: "disable-legacy-bucket-prefix",
62
+ SoxProtectedDefaultBranch: "protected-default-branch",
63
+ StorageBranches: "storage-branches",
64
+ DataStreams: "data-streams",
65
+ AiLineage: "ai-lineage",
66
+ AiComponentSuggestion: "ai-component-suggestion",
67
+ AgentChat: "agent-chat",
68
+ AgentChatUseKaiAgentUrl: "agent-chat-use-kai-agent-url",
69
+ AgentChatModelTiers: "agent-chat-model-tiers",
70
+ BucketExposure: "bucket-exposure",
71
+ WebMcp: "webmcp",
72
+ SnowflakeRegisterExternalSecureDataShare: "snowflake-register-external-secure-data-share",
73
+ DirectGrantOutputMapping: "direct-grant-output-mapping",
74
+ EditorWithoutReadOnlyStorage: "editor-without-read-only-storage",
75
+ BranchesMergeRequests: "branches-merge-requests",
76
+ DenyExternalDatasetInputMapping: "deny-external-dataset-input-mapping",
77
+ AllowSharedSnowflakeAccess: "allow-shared-snowflake-access",
78
+ BigqueryDefaultImView: "bigquery-default-im-view",
79
+ BigqueryPolicyTags: "bigquery-policy-tags"
80
+ };
81
+ // src/constants/stackFeatures.ts
82
+ const StackFeature = {
83
+ SingleTenant: "single-tenant",
84
+ CanaryStack: "canary-stack",
85
+ DisableJuliaAndR: "disable-julia-and-r",
86
+ SamlRoles: "saml-roles",
87
+ NewOauthService: "new-oauth-service-enabled",
88
+ DataAppsEnforceAuth: "data-apps-enforce-auth",
89
+ AllowAi: "allow-ai",
90
+ UserWorkspaceDynamicBackendEnabled: "user-workspace-dynamic-backend-enabled",
91
+ McpEnabled: "mcp-enabled",
92
+ KaiEnabled: "kai-enabled",
93
+ AgentProvisioning: "agent-provisioning",
94
+ SandboxesPythonSpark: "sandboxes-python-spark"
95
+ };
96
+ // src/constants/adminFeatures.ts
97
+ const AdminFeature = {
98
+ DisableAutosavingInFlows: "disable-autosaving-in-flows",
99
+ CanUpdateProjectSettings: "can-update-project-settings",
100
+ CanManageFeatures: "can-manage-features",
101
+ CanManageUsers: "can-manage-users",
102
+ CanManageDeletedProjects: "can-manage-deleted-projects",
103
+ CanManageProjectLimits: "can-manage-project-limits",
104
+ CanManageMaintainers: "can-manage-maintainers",
105
+ CanDisableProjects: "can-disable-projects",
106
+ CanReactivateWorkspaces: "can-reactivate-workspaces",
107
+ PowerUser: "power-user",
108
+ MuteSoundNotifications: "mute-sound-notifications"
109
+ };
110
+ // src/constants/backends.ts
39
111
  const Backend = {
40
112
  Snowflake: "snowflake",
41
113
  Bigquery: "bigquery"
42
114
  };
43
- //#endregion
44
- //#region src/constants/stacks.ts
115
+ // src/constants/stacks.ts
45
116
  const Provider = {
46
117
  Aws: "aws",
47
118
  Azure: "azure",
@@ -200,8 +271,7 @@ const STACKS = {
200
271
  isCanary: true
201
272
  }
202
273
  };
203
- //#endregion
204
- //#region src/constants/index.ts
274
+ // src/constants/index.ts
205
275
  const URLS = {
206
276
  USER_DOCUMENTATION: "https://help.keboola.com",
207
277
  COMPONENTS: "https://components.keboola.com",
@@ -224,7 +294,12 @@ const URLS = {
224
294
  CLIENT_MAKE_GET_STARTED: "https://help.make.com/get-started",
225
295
  CLIENT_DEVIN_DESKTOP: "https://docs.devin.ai/desktop/getting-started"
226
296
  };
227
- //#endregion
297
+ Object.defineProperty(exports, "AdminFeature", {
298
+ enumerable: true,
299
+ get: function() {
300
+ return AdminFeature;
301
+ }
302
+ });
228
303
  Object.defineProperty(exports, "Backend", {
229
304
  enumerable: true,
230
305
  get: function() {
@@ -237,6 +312,12 @@ Object.defineProperty(exports, "Continent", {
237
312
  return Continent;
238
313
  }
239
314
  });
315
+ Object.defineProperty(exports, "ManageErrorCode", {
316
+ enumerable: true,
317
+ get: function() {
318
+ return ManageErrorCode;
319
+ }
320
+ });
240
321
  Object.defineProperty(exports, "ProjectFeature", {
241
322
  enumerable: true,
242
323
  get: function() {
@@ -261,6 +342,12 @@ Object.defineProperty(exports, "ServiceId", {
261
342
  return ServiceId;
262
343
  }
263
344
  });
345
+ Object.defineProperty(exports, "StackFeature", {
346
+ enumerable: true,
347
+ get: function() {
348
+ return StackFeature;
349
+ }
350
+ });
264
351
  Object.defineProperty(exports, "URLS", {
265
352
  enumerable: true,
266
353
  get: function() {
@@ -268,4 +355,4 @@ Object.defineProperty(exports, "URLS", {
268
355
  }
269
356
  });
270
357
 
271
- //# sourceMappingURL=constants-a0jswUeK.cjs.map
358
+ //# sourceMappingURL=constants-DhFQWQgy.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants-DhFQWQgy.cjs","names":[],"sources":["../src/constants/serviceIds.ts","../src/constants/manageErrorCodes.ts","../src/constants/projectFeatures.ts","../src/constants/stackFeatures.ts","../src/constants/adminFeatures.ts","../src/constants/backends.ts","../src/constants/stacks.ts","../src/constants/index.ts"],"sourcesContent":["/**\n * Every service a Keboola stack can announce in its `GET /v2/storage` index.\n *\n * - The values are the `id`s the stack reports; the service-client registry and `createStack`'s\n * lookups narrow on them. The index itself stays `string` — a stack may announce more.\n * - Callers enumerate them at runtime — a test double announcing every service, for one.\n */\nexport const ServiceId = {\n Vault: 'vault',\n DataScience: 'data-science',\n Encryption: 'encryption',\n Telemetry: 'telemetry',\n Ai: 'ai',\n Editor: 'editor',\n Import: 'import',\n Oauth: 'oauth',\n Query: 'query',\n Queue: 'queue',\n KaiAssistant: 'kai-assistant',\n KaiAgent: 'kai-agent',\n ComponentsMcp: 'components-mcp',\n SyncActions: 'sync-actions',\n Stream: 'stream',\n Notification: 'notification',\n Scheduler: 'scheduler',\n Metastore: 'metastore',\n Billing: 'billing',\n} as const;\n\nexport type ServiceId = (typeof ServiceId)[keyof typeof ServiceId];\n","export const ManageErrorCode = {\n ProgrammaticProjectInvalidClaim: 'manage.programmaticProjects.invalidClaim',\n ProgrammaticProjectRateLimited: 'manage.programmaticProjects.rateLimited',\n ProgrammaticProjectProvisioningFailed: 'manage.programmaticProjects.provisioningFailed',\n} as const;\n\nexport type ManageErrorCode = (typeof ManageErrorCode)[keyof typeof ManageErrorCode];\n","export const ProjectFeature = {\n SandboxesPythonSpark: 'sandboxes-python-spark',\n GcpMarketplaceByodb: 'gcp-marketplace-byodb',\n GcpMarketplaceByodbEmpty: 'gcp-marketplace-byodb-empty',\n FrontendLogin: 'frontend-login',\n ComponentsMcp: 'ai-components-mcp',\n PayAsYouGo: 'pay-as-you-go',\n ShowVault: 'show-vault',\n DeprecatedGoogleDriveTranspose: 'deprecated-google-drive-transpose',\n SandboxesPersistentVolume: 'sandboxes-persistent-volume',\n WorkspaceSnowflakeDynamicBackendSize: 'workspace-snowflake-dynamic-backend-size',\n DynamicBackendJobs: 'dynamic-backend-jobs',\n HasSimplifiedComponents: 'has-simplified-components',\n FlowMigration: 'flow-migration',\n FlowMigrationBatch1: 'flow-migration-batch1',\n FlowMigrationBatch2: 'flow-migration-batch2',\n FlowMigrationBatch3: 'flow-migration-batch3',\n OracleTransformations: 'oracle-transformations',\n ExternalBuckets: 'external-buckets',\n InputMappingReadOnlyStorage: 'input-mapping-read-only-storage',\n Artifacts: 'artifacts',\n SnowflakePartnerConnect: 'snowflake-partner-connect',\n SnowflakePartnerConnectLimited: 'snowflake-partner-connect-limited',\n NewNativeTypes: 'new-native-types',\n DisableLegacyBucketPrefix: 'disable-legacy-bucket-prefix',\n SoxProtectedDefaultBranch: 'protected-default-branch',\n StorageBranches: 'storage-branches',\n DataStreams: 'data-streams',\n AiLineage: 'ai-lineage',\n AiComponentSuggestion: 'ai-component-suggestion',\n AgentChat: 'agent-chat',\n AgentChatUseKaiAgentUrl: 'agent-chat-use-kai-agent-url',\n AgentChatModelTiers: 'agent-chat-model-tiers',\n BucketExposure: 'bucket-exposure',\n WebMcp: 'webmcp',\n SnowflakeRegisterExternalSecureDataShare: 'snowflake-register-external-secure-data-share',\n DirectGrantOutputMapping: 'direct-grant-output-mapping',\n EditorWithoutReadOnlyStorage: 'editor-without-read-only-storage',\n BranchesMergeRequests: 'branches-merge-requests',\n DenyExternalDatasetInputMapping: 'deny-external-dataset-input-mapping',\n AllowSharedSnowflakeAccess: 'allow-shared-snowflake-access',\n BigqueryDefaultImView: 'bigquery-default-im-view',\n BigqueryPolicyTags: 'bigquery-policy-tags',\n} as const;\n\nexport type ProjectFeature = (typeof ProjectFeature)[keyof typeof ProjectFeature];\n","export const StackFeature = {\n SingleTenant: 'single-tenant',\n CanaryStack: 'canary-stack',\n DisableJuliaAndR: 'disable-julia-and-r',\n SamlRoles: 'saml-roles',\n NewOauthService: 'new-oauth-service-enabled',\n DataAppsEnforceAuth: 'data-apps-enforce-auth',\n AllowAi: 'allow-ai',\n UserWorkspaceDynamicBackendEnabled: 'user-workspace-dynamic-backend-enabled',\n McpEnabled: 'mcp-enabled',\n KaiEnabled: 'kai-enabled',\n AgentProvisioning: 'agent-provisioning',\n SandboxesPythonSpark: 'sandboxes-python-spark',\n} as const;\n\nexport type StackFeature = (typeof StackFeature)[keyof typeof StackFeature];\n","export const AdminFeature = {\n DisableAutosavingInFlows: 'disable-autosaving-in-flows',\n CanUpdateProjectSettings: 'can-update-project-settings',\n CanManageFeatures: 'can-manage-features',\n CanManageUsers: 'can-manage-users',\n CanManageDeletedProjects: 'can-manage-deleted-projects',\n CanManageProjectLimits: 'can-manage-project-limits',\n CanManageMaintainers: 'can-manage-maintainers',\n CanDisableProjects: 'can-disable-projects',\n CanReactivateWorkspaces: 'can-reactivate-workspaces',\n PowerUser: 'power-user',\n MuteSoundNotifications: 'mute-sound-notifications',\n} as const;\n\nexport type AdminFeature = (typeof AdminFeature)[keyof typeof AdminFeature];\n","export const Backend = {\n Snowflake: 'snowflake',\n Bigquery: 'bigquery',\n} as const;\n\nexport type Backend = (typeof Backend)[keyof typeof Backend];\n","export const Provider = {\n Aws: 'aws',\n Azure: 'azure',\n Gcp: 'gcp',\n} as const;\n\nexport type Provider = (typeof Provider)[keyof typeof Provider];\n\nexport const Continent = {\n Us: 'us',\n Europe: 'europe',\n} as const;\n\nexport type Continent = (typeof Continent)[keyof typeof Continent];\n\nexport type KeboolaStack = {\n id: string;\n host: string;\n isSingleTenant?: boolean;\n isTesting?: boolean;\n isPayg?: boolean;\n provider?: Provider;\n continent?: Continent;\n region?: string;\n isCanary?: boolean;\n};\n\nconst stacks = {\n NORTH_EUROPE_AZURE: {\n id: 'com-keboola-azure-north-europe',\n region: 'north-europe',\n host: 'connection.north-europe.azure.keboola.com',\n provider: 'azure',\n continent: 'europe',\n isPayg: true,\n },\n EU_CENTRAL_1_AWS: {\n id: 'kbc-eu-central-1',\n region: 'eu-central-1',\n host: 'connection.eu-central-1.keboola.com',\n provider: 'aws',\n continent: 'europe',\n },\n US_EAST_1_AWS: {\n id: 'kbc-us-east-1',\n region: 'us-east-1',\n host: 'connection.keboola.com',\n provider: 'aws',\n continent: 'us',\n },\n EUROPE_WEST3_GCP: {\n id: 'com-keboola-gcp-europe-west3',\n region: 'europe-west3',\n host: 'connection.europe-west3.gcp.keboola.com',\n provider: 'gcp',\n continent: 'europe',\n },\n US_EAST_4_GCP: {\n id: 'com-keboola-gcp-us-east4',\n region: 'us-east4',\n host: 'connection.us-east4.gcp.keboola.com',\n provider: 'gcp',\n continent: 'us',\n isPayg: true,\n },\n\n /* PRIVATE SINGLE TENANT STACKS\n ---------------------------- */\n HCI: {\n id: 'cloud-keboola-hci',\n host: 'connection.hci.keboola.cloud',\n isSingleTenant: true,\n },\n CSAS_PROD: {\n id: 'cloud-keboola-cs',\n host: 'connection.cs.keboola.cloud',\n isSingleTenant: true,\n },\n CSAS_TEST: {\n id: 'cloud-keboola-cs-test',\n host: 'connection.cs-test.keboola.cloud',\n isSingleTenant: true,\n },\n INNOGY: {\n id: 'cloud-keboola-innogy-hub',\n host: 'connection.innogy-hub.keboola.cloud',\n isSingleTenant: true,\n },\n GROUPON: {\n id: 'cloud-keboola-groupon',\n host: 'connection.groupon.keboola.cloud',\n isSingleTenant: true,\n },\n CREDIT_INFO: {\n id: 'cloud-keboola-creditinfo',\n host: 'connection.creditinfo.keboola.cloud',\n isSingleTenant: true,\n },\n COATES: {\n id: 'cloud-keboola-coates',\n host: 'connection.coates.keboola.cloud',\n isSingleTenant: true,\n },\n SLSP: {\n id: 'cloud-keboola-slsp',\n host: 'connection.slsp.keboola.cloud',\n isSingleTenant: true,\n },\n HCKZ: {\n id: 'cloud-keboola-hckz',\n host: 'connection.hckz.keboola.cloud',\n isSingleTenant: true,\n },\n PASHA: {\n id: 'cloud-keboola-pasha',\n host: 'connection.pasha.keboola.cloud',\n isSingleTenant: true,\n },\n RBI: {\n id: 'cloud-keboola-rbi',\n host: 'connection.rbi.keboola.cloud',\n isSingleTenant: true,\n },\n NAH: {\n id: 'cloud-keboola-nah',\n host: 'connection.nah.keboola.cloud',\n isSingleTenant: true,\n provider: 'azure',\n continent: 'us',\n },\n\n /* DEV STACKS\n ---------------------------- */\n DEV_US_CENTRAL_1_GCP: {\n id: 'dev-keboola-gcp-us-central1',\n region: 'us-central1',\n host: 'connection.us-central1.gcp.keboola.dev',\n provider: 'gcp',\n continent: 'us',\n isTesting: true,\n },\n DEV_EU_WEST_1_AWS: {\n id: 'dev-keboola-aws-eu-west-1',\n region: 'eu-west-1',\n host: 'connection.eu-west-1.aws.keboola.dev',\n provider: 'aws',\n continent: 'europe',\n isTesting: true,\n },\n DEV_US_EAST_1_AWS_E2E: {\n id: 'dev-keboola-aws-us-east-1-e2e',\n region: 'us-east-1',\n host: 'connection.e2e.us-east-1.aws.keboola.dev',\n provider: 'aws',\n continent: 'us',\n isTesting: true,\n },\n DEV_US_EAST_2_AZURE: {\n id: 'kbc-testing-azure-east-us-2',\n region: 'east-us-2',\n host: 'connection.east-us-2.azure.keboola-testing.com',\n provider: 'azure',\n continent: 'us',\n isTesting: true,\n },\n DEV_KEBOOLA_CANARY_ORION: {\n id: 'dev-keboola-canary-orion',\n region: 'europe-west3',\n host: 'connection.canary-orion.keboola.dev',\n provider: 'gcp',\n continent: 'europe',\n isCanary: true,\n },\n} satisfies Record<string, Readonly<KeboolaStack>>;\n\n/**\n * Every stack the platform knows, keyed by name.\n *\n * - The key set is literal, so a name that is not in the object is a compile error at the call site\n * rather than an `undefined` to fall back from.\n * - The value type stays the uniform `KeboolaStack`, so `stack.isCanary` reads on any entry, not\n * only on the ones that carry the flag.\n */\nexport const STACKS: Record<keyof typeof stacks, Readonly<KeboolaStack>> = stacks;\n","export { ComponentId } from './componentId';\nexport { ManageErrorCode } from './manageErrorCodes';\nexport { ProjectFeature } from './projectFeatures';\nexport { StackFeature } from './stackFeatures';\nexport { AdminFeature } from './adminFeatures';\nexport { Backend } from './backends';\nexport { AdminRole } from './adminRoles';\nexport { ServiceId } from './serviceIds';\nexport { Continent, Provider, STACKS } from './stacks';\nexport type { KeboolaStack } from './stacks';\n\nexport const URLS = {\n USER_DOCUMENTATION: 'https://help.keboola.com',\n COMPONENTS: 'https://components.keboola.com',\n DEVELOPERS_DOCUMENTATION: 'https://developers.keboola.com',\n ACADEMY: 'https://academy.keboola.com',\n SALES_CONTACT_FORM: 'https://keboola.com/contact',\n SNOWFLAKE: 'https://www.snowflake.com',\n SNOWFLAKE_DOCS: 'https://docs.snowflake.com',\n MCP: 'https://www.keboola.com/mcp',\n CLI: 'https://www.keboola.com/cli',\n NODE_JS: 'https://nodejs.org/en',\n CLAUDE_CONNECTORS: 'https://claude.ai/customize/connectors',\n // Vendor \"how do I get this client\" pages linked from the connect surfaces.\n CLIENT_CLAUDE_CODE_QUICKSTART: 'https://code.claude.com/docs/en/quickstart',\n CLIENT_CLAUDE_AI: 'https://claude.ai',\n CLIENT_CLAUDE_DESKTOP_DOWNLOAD: 'https://claude.com/download',\n CLIENT_CURSOR_QUICKSTART: 'https://cursor.com/docs/get-started/quickstart',\n CLIENT_VS_CODE_SETUP: 'https://code.visualstudio.com/docs/setup/setup-overview',\n CLIENT_CODEX_QUICKSTART: 'https://developers.openai.com/codex/cli',\n CLIENT_CHATGPT_DOWNLOAD: 'https://chatgpt.com/download',\n CLIENT_MAKE_GET_STARTED: 'https://help.make.com/get-started',\n CLIENT_DEVIN_DESKTOP: 'https://docs.devin.ai/desktop/getting-started',\n} as const;\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- //#region src/utils/createAbortError.ts
1
+ // src/utils/createAbortError.ts
2
2
  const createAbortError = (reason) => new DOMException(reason, "AbortError");
3
- //#endregion
4
3
  Object.defineProperty(exports, "createAbortError", {
5
4
  enumerable: true,
6
5
  get: function() {
@@ -8,4 +7,4 @@ Object.defineProperty(exports, "createAbortError", {
8
7
  }
9
8
  });
10
9
 
11
- //# sourceMappingURL=createAbortError-RendOpo7.cjs.map
10
+ //# sourceMappingURL=createAbortError-Dzc9yObN.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"createAbortError-RendOpo7.cjs","names":[],"sources":["../src/utils/createAbortError.ts"],"sourcesContent":["export const createAbortError = (reason?: string) => new DOMException(reason, 'AbortError');\n"],"mappings":";AAAA,MAAa,oBAAoB,WAAoB,IAAI,aAAa,QAAQ,YAAY"}
1
+ {"version":3,"file":"createAbortError-Dzc9yObN.cjs","names":[],"sources":["../src/utils/createAbortError.ts"],"sourcesContent":["export const createAbortError = (reason?: string) => new DOMException(reason, 'AbortError');\n"],"mappings":";AAAA,MAAa,oBAAoB,WAAoB,IAAI,aAAa,QAAQ,YAAY"}
@@ -1,6 +1,5 @@
1
- //#region src/utils/createAbortError.ts
1
+ // src/utils/createAbortError.ts
2
2
  const createAbortError = (reason) => new DOMException(reason, "AbortError");
3
- //#endregion
4
3
  export { createAbortError as t };
5
4
 
6
- //# sourceMappingURL=createAbortError-BxupOt-6.js.map
5
+ //# sourceMappingURL=createAbortError-c6ekCpRy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createAbortError-BxupOt-6.js","names":[],"sources":["../src/utils/createAbortError.ts"],"sourcesContent":["export const createAbortError = (reason?: string) => new DOMException(reason, 'AbortError');\n"],"mappings":";AAAA,MAAa,oBAAoB,WAAoB,IAAI,aAAa,QAAQ,YAAY"}
1
+ {"version":3,"file":"createAbortError-c6ekCpRy.js","names":[],"sources":["../src/utils/createAbortError.ts"],"sourcesContent":["export const createAbortError = (reason?: string) => new DOMException(reason, 'AbortError');\n"],"mappings":";AAAA,MAAa,oBAAoB,WAAoB,IAAI,aAAa,QAAQ,YAAY"}
@@ -1,7 +1,7 @@
1
- const require_rolldown_runtime = require("./rolldown-runtime-VH7oDXx4.cjs");
1
+ const require_rolldown_runtime = require("./rolldown-runtime-CmQyd0Gu.cjs");
2
2
  let qs = require("qs");
3
3
  qs = require_rolldown_runtime.__toESM(qs, 1);
4
- //#region src/internal.ts
4
+ // src/internal.ts
5
5
  const KeboolaHttpHeader = {
6
6
  STORAGE_API_TOKEN: "X-StorageApi-Token",
7
7
  MANAGEMENT_API_TOKEN: "X-Kbc-Manageapitoken",
@@ -42,8 +42,7 @@ const HttpStatus = {
42
42
  GATEWAY_TIMEOUT: 504
43
43
  };
44
44
  const ENCRYPTED_VALUE_PREFIX = "KBC::";
45
- //#endregion
46
- //#region src/errors/ApiError.ts
45
+ // src/errors/ApiError.ts
47
46
  /**
48
47
  * The status line, as a message an error reporter can group on.
49
48
  *
@@ -77,8 +76,7 @@ var ApiError = class extends Error {
77
76
  this.data = data;
78
77
  }
79
78
  };
80
- //#endregion
81
- //#region src/fetchClient/createFetchClient/utils.ts
79
+ // src/fetchClient/createFetchClient/utils.ts
82
80
  /**
83
81
  * Strips trailing slashes from a base URL so concatenating a leading-slash
84
82
  * path (e.g. `/v2/storage`) never produces a double slash.
@@ -208,8 +206,7 @@ const createFetchRequest = ({ url, method, params, options = {}, defaultOptions
208
206
  parseAs
209
207
  };
210
208
  };
211
- //#endregion
212
- //#region src/fetchClient/createFetchClient/createFetchClient.ts
209
+ // src/fetchClient/createFetchClient/createFetchClient.ts
213
210
  const isApiError = (error) => error instanceof ApiError;
214
211
  const isAbortError = (error) => error instanceof DOMException && error.name === "AbortError";
215
212
  const isTimeoutError = (error) => error instanceof DOMException && error.name === "TimeoutError";
@@ -251,7 +248,6 @@ const createFetchClient = ({ middlewares = [], baseUrl: _baseUrl, ...defaultOpti
251
248
  delete: createFetchMethod("delete")
252
249
  };
253
250
  };
254
- //#endregion
255
251
  Object.defineProperty(exports, "ApiError", {
256
252
  enumerable: true,
257
253
  get: function() {
@@ -367,4 +363,4 @@ Object.defineProperty(exports, "redactHeaders", {
367
363
  }
368
364
  });
369
365
 
370
- //# sourceMappingURL=createFetchClient-lZ_93Yrb.cjs.map
366
+ //# sourceMappingURL=createFetchClient-DEkUH662.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"createFetchClient-lZ_93Yrb.cjs","names":[],"sources":["../src/internal.ts","../src/errors/ApiError.ts","../src/fetchClient/createFetchClient/utils.ts","../src/fetchClient/createFetchClient/createFetchClient.ts"],"sourcesContent":["// Package-internal constants. Not part of the public\n// `@keboola/api-client/constants` sub-path (that is the `constants/` directory).\n\nexport const KeboolaHttpHeader = {\n STORAGE_API_TOKEN: 'X-StorageApi-Token',\n MANAGEMENT_API_TOKEN: 'X-Kbc-Manageapitoken',\n STORAGE_API_URL: 'x-storageapi-url',\n PROJECT_ID: 'X-KBC-ProjectId',\n UI_VERSION: 'X-KBC-Ui-Version',\n /** Storage job a request enqueued, reported on the response rather than in its body. */\n STORAGE_API_JOB_ID: 'X-StorageApi-Job-Id',\n /** Set to \"1\" to opt an auth call into browser/cookie mode. */\n CSRF: 'X-KBC-CSRF',\n} as const;\n\n/** Request headers that carry a credential — never kept on an error or written to a log. */\nexport const CREDENTIAL_HEADERS = [\n KeboolaHttpHeader.STORAGE_API_TOKEN,\n KeboolaHttpHeader.MANAGEMENT_API_TOKEN,\n 'authorization',\n 'cookie',\n];\n\nexport const REDACTED = '[REDACTED]';\n\n/** The headers as a record, each one named in `redacted` (any case) set to `[REDACTED]`. */\nexport const redactHeaders = (headers: Headers, redacted: readonly string[]) => {\n const redactedSet = new Set(redacted.map((name) => name.toLowerCase()));\n const result: Record<string, string> = {};\n headers.forEach((value, name) => {\n result[name] = redactedSet.has(name.toLowerCase()) ? REDACTED : value;\n });\n return result;\n};\n\nexport const HttpStatus = {\n NO_CONTENT: 204,\n BAD_REQUEST: 400,\n UNAUTHORIZED: 401,\n NOT_FOUND: 404,\n UNPROCESSABLE_ENTITY: 422,\n INTERNAL_SERVER_ERROR: 500,\n BAD_GATEWAY: 502,\n SERVICE_UNAVAILABLE: 503,\n GATEWAY_TIMEOUT: 504,\n} as const;\n\nexport const ENCRYPTED_VALUE_PREFIX = 'KBC::';\n","import type { ApiResponse } from '../fetchClient/createFetchClient/types';\nimport { CREDENTIAL_HEADERS, redactHeaders } from '../internal';\n\n/**\n * The status line, as a message an error reporter can group on.\n *\n * - `statusText` is empty on every HTTP/2 response: the protocol dropped the reason phrase, and\n * `fetch` reports that as `''` rather than synthesising one.\n * - So the status number leads, and `statusText` only decorates it where a server sent one.\n * - Without this an HTTP/2 failure reaches Sentry as `Error:` with an empty message, and the\n * status — the one field that says what went wrong — is absent from the report.\n */\nconst statusLine = (response: Response) =>\n response.statusText ? `${response.status} ${response.statusText}` : `${response.status}`;\n\n/**\n * A body-less copy of the request with every credential header masked.\n *\n * - Keeps the method, URL and the remaining headers for whoever handles the error.\n * - A masked header still appears, as `[REDACTED]`, so a reader sees it was sent.\n * - A copy, not an edit: the original request may still be retried with its token.\n */\nconst withoutCredentials = (request: Request) =>\n new Request(request.url, {\n method: request.method,\n headers: redactHeaders(request.headers, CREDENTIAL_HEADERS),\n });\n\nexport class ApiError extends Error {\n response: Response;\n request: Request;\n data: unknown;\n\n constructor({ response, request, data }: ApiResponse) {\n super(statusLine(response));\n this.name = 'ApiError';\n this.response = response;\n this.request = withoutCredentials(request);\n this.data = data;\n }\n}\n","import type { IStringifyOptions } from 'qs';\nimport qs from 'qs';\n\nimport { HttpStatus } from '../../internal';\n\nimport type {\n ApiResponse,\n BodyParam,\n CreateFetchRequestFn,\n ParseAs,\n PathParam,\n ValidateStatusFn,\n} from './types';\n\n/**\n * Strips trailing slashes from a base URL so concatenating a leading-slash\n * path (e.g. `/v2/storage`) never produces a double slash.\n *\n * Without this, callers that pass `https://connection.keboola.com/` end up\n * issuing requests to `https://connection.keboola.com//v2/storage/...`, which\n * the Storage API rejects with a 404.\n */\nexport const normalizeBaseUrl = (baseUrl: string): string => baseUrl.replace(/\\/+$/, '');\n\nexport const HttpHeader = {\n CONTENT_TYPE: 'content-type',\n CONTENT_DISPOSITION: 'content-disposition',\n AUTHORIZATION: 'Authorization',\n IDEMPOTENCY_KEY: 'Idempotency-Key',\n IF_MATCH: 'If-Match',\n};\n\nexport const HttpContentType = {\n JSON: 'application/json',\n TEXT_PLAIN: 'text/plain',\n FORM_DATA: 'multipart/form-data',\n TEXT_HTML: 'text/html',\n};\n\nexport const defaultValidateStatus: ValidateStatusFn = ({ response }) =>\n response.status >= 200 && response.status <= 299;\n\n/**\n * Whether a response declares HTML.\n *\n * - Media types are case-insensitive, so `Text/HTML` counts.\n * - A header fact only: a `text/html` response may still carry no body at all.\n */\nexport const isHtmlResponse = ({ response }: ApiResponse) =>\n !!response.headers\n .get(HttpHeader.CONTENT_TYPE)\n ?.toLowerCase()\n .includes(HttpContentType.TEXT_HTML);\n\n/**\n * Whether a response carried no payload, across every shape `parseData` produces for one:\n *\n * 1. `null` — a `204`, or a JSON body that was empty or whitespace.\n * 2. `''` — any other media type with an empty body, read as text.\n *\n * Whitespace-only text counts as empty, matching how `parseJson` already treats it.\n */\nexport const isContentEmpty = ({ data }: ApiResponse) =>\n data === null || data === undefined || (typeof data === 'string' && data.trim() === '');\n\nfunction removeUndefined(obj: Record<string, string>) {\n const objCopy = { ...obj };\n for (const [key, value] of Object.entries(objCopy)) {\n if (value == null) delete objCopy[key];\n }\n return objCopy;\n}\n\n// `application/json`, but also `application/json; charset=utf-8` and the `+json` suffix family.\n// Comparing the raw header for equality misses every response that carries a charset.\nconst JSON_MEDIA_TYPE = /^application\\/([\\w.-]+\\+)?json$/;\n\nconst getMediaType = (response: Response) =>\n response.headers.get(HttpHeader.CONTENT_TYPE)?.split(';')[0]?.trim().toLowerCase() ?? '';\n\n// Declared JSON is parsed strictly: a body that doesn't parse is a broken response, not a text\n// payload, and `JSON.parse` throwing is the right answer. Read it as text first only so an empty\n// body can resolve to `null` like a 204 — matching the charset form brings `application/json;\n// charset=utf-8` onto this path, where `response.json()` would turn a 200-with-no-body into a\n// `SyntaxError` it never used to be.\nconst parseJson = async (response: Response) => {\n const text = await response.text();\n return text.trim() === '' ? null : JSON.parse(text);\n};\n\nexport const parseData = async (response: Response, parseAs: ParseAs = 'auto') => {\n // No body to read, whatever the caller asked for.\n if (response.status === HttpStatus.NO_CONTENT) return null;\n\n // Per-method-call override\n if (parseAs === 'text') return response.text();\n if (parseAs === 'blob') return response.blob();\n if (parseAs === 'json') return parseJson(response);\n\n const mediaType = getMediaType(response);\n if (JSON_MEDIA_TYPE.test(mediaType)) return parseJson(response);\n\n // A declared binary payload must come back as bytes — `text()` would decode it as UTF-8 and\n // corrupt it. `application/octet-stream` is the only binary type an endpoint declares today\n // (kai-agent's sandbox file download); widen deliberately, never by sniffing.\n if (mediaType === 'application/octet-stream') return response.blob();\n\n // Any other declared type describes its own payload — the query-service CSV export, the\n // data-science `text/plain` endpoints — so hand back the exact bytes instead of sniffing them.\n return response.text();\n};\n\n// Header instance serialize undefined value as `undefined`, we do not want that\nconst cleanHeadersInit = (headersInit: HeadersInit | undefined) => {\n if (Array.isArray(headersInit)) return headersInit;\n if (headersInit instanceof Headers) return headersInit;\n if (headersInit == null) return headersInit;\n\n return removeUndefined(headersInit);\n};\n\nconst createHeaders = (\n headersInitA: HeadersInit | undefined,\n headersInitB: HeadersInit | undefined,\n) => {\n const headersA = new Headers(cleanHeadersInit(headersInitA));\n const headersB = new Headers(cleanHeadersInit(headersInitB));\n\n headersB.forEach((value, key) => {\n headersA.set(key, value);\n });\n\n return headersA;\n};\n\nexport const createPath = (\n path: string,\n pathParam: PathParam = {},\n encodePathParam: (value: string) => string = encodeURIComponent,\n) =>\n path.replace(/\\{([^}]+)}/g, (_, key) => {\n if (!(key in pathParam))\n throw new Error(`Path parameter \"${key}\" is missing in the path \"${path}\"`);\n\n return encodePathParam(String(pathParam[key]!));\n });\n\nexport const createSearch = (\n query: Record<string, unknown>,\n options: Pick<IStringifyOptions, 'arrayFormat'> = {},\n) => {\n return qs.stringify(query, {\n encodeValuesOnly: true,\n skipNulls: true,\n ...options,\n });\n};\n\nexport const createBody = (body: BodyParam, headers: Headers) => {\n if (body == null) return null;\n if (body instanceof FormData) return body; // fetch automatically sets content-type header\n if (typeof body === 'string') return body; // fetch automatically sets content-type header\n\n const stringifyBody = JSON.stringify(body);\n const stringBody = stringifyBody === '{}' ? null : stringifyBody;\n if (stringBody) headers.set(HttpHeader.CONTENT_TYPE, HttpContentType.JSON);\n\n return stringBody;\n};\n\nexport const parseContentDispositionHeader = (contentDisposition?: string | null) => {\n // extract the type ('inline' or 'attachment'), default the type to 'unknown'\n const type = (() => {\n const typeMatch = contentDisposition?.match(/^\\s*(inline|attachment)\\s*;/i);\n return (typeMatch?.[1]?.toLowerCase() ?? 'unknown') as 'inline' | 'attachment' | 'unknown';\n })();\n\n // extract the filename, default the type to null\n const filename = (() => {\n const filenameMatch = contentDisposition?.match(/filename=\"([^\"]+)\"/i);\n if (filenameMatch) return filenameMatch[1];\n\n // If no filename=\"...\", check for encoded filename*=UTF-8''\n const encodedFilenameMatch = contentDisposition?.match(/filename\\*=(?:UTF-8'')?([^;]+)/i);\n if (encodedFilenameMatch?.[1]) return decodeURIComponent(encodedFilenameMatch[1]);\n\n // Check for unquoted filenames (rare but possible)\n const unquotedFilenameMatch = contentDisposition?.match(/filename=([^;]+)/i);\n return unquotedFilenameMatch?.[1] ?? null;\n })();\n\n // Return the parsed result\n return { type, filename };\n};\n\nexport const createFetchRequest: CreateFetchRequestFn = ({\n url,\n method,\n params,\n options = {},\n defaultOptions,\n}) => {\n const {\n baseUrl,\n validateStatus: defValidateStatus = defaultValidateStatus,\n headers: defaultHeaders,\n fetchFn: defaultFetchFn,\n encodePathParam,\n ...restDefaultOptions\n } = defaultOptions;\n const {\n validateStatus,\n queryArrayFormat,\n headers: endpointHeaders,\n fetchFn,\n parseAs,\n ...restOptions\n } = options;\n\n const headers = createHeaders(defaultHeaders, endpointHeaders);\n const path = createPath(url, params.path, encodePathParam);\n const search = createSearch(params.query ?? {}, { arrayFormat: queryArrayFormat });\n const body = createBody(params.body, headers);\n\n const urlInstance = new URL(normalizeBaseUrl(baseUrl) + path);\n urlInstance.search = search;\n\n const request = new Request(urlInstance, {\n ...restDefaultOptions,\n ...restOptions,\n headers,\n method: method.toUpperCase(),\n body,\n });\n\n return {\n request,\n validateStatus: validateStatus ?? defValidateStatus,\n fetchFn: fetchFn ?? defaultFetchFn,\n parseAs,\n };\n};\n","import { ApiError } from '../../errors';\n\nimport type {\n BaseFetchParams,\n CoreFetchFn,\n CreateFetchClientOptions,\n FetchClientOptions,\n HttpMethod,\n} from './types';\nimport { createFetchRequest, parseData } from './utils';\n\nexport type FetchClientError = TypeError | ApiError | SyntaxError | DOMException;\n\nexport const isApiError = (error: unknown): error is ApiError => error instanceof ApiError;\n\nexport const isAbortError = (error: unknown): error is DOMException =>\n error instanceof DOMException && error.name === 'AbortError';\n\nexport const isTimeoutError = (error: unknown): error is DOMException =>\n error instanceof DOMException && error.name === 'TimeoutError';\n\nexport const isFetchClientError = (error: unknown): error is FetchClientError =>\n error instanceof TypeError || error instanceof SyntaxError || isApiError(error);\n\n// `fetchFn` is resolved per request by `createFetchRequest` (endpoint option beats client option),\n// so a single request can swap the transport without rebuilding the client.\nconst coreFetch: CoreFetchFn = async ({ request, validateStatus, fetchFn = fetch, parseAs }) => {\n const response = await fetchFn(request);\n const data = await parseData(response, parseAs);\n\n const apiResponse = {\n request,\n response,\n data,\n };\n\n const boolOrError = validateStatus(apiResponse);\n if (isApiError(boolOrError)) throw boolOrError;\n if (!boolOrError) throw new ApiError(apiResponse);\n\n return apiResponse;\n};\n\nexport const createFetchClient = ({\n middlewares = [],\n baseUrl: _baseUrl,\n ...defaultOptions\n}: CreateFetchClientOptions) => {\n const fetchWithMiddlewares = middlewares.reduceRight(\n (next, middleware) => middleware(next),\n coreFetch,\n );\n const resolveBaseUrl = async () => (typeof _baseUrl === 'function' ? _baseUrl() : _baseUrl);\n\n const createFetchMethod =\n (method: HttpMethod) =>\n async (url: string, params: BaseFetchParams, options: FetchClientOptions = {}) => {\n const baseUrl = await resolveBaseUrl();\n const request = createFetchRequest({\n url,\n method,\n params,\n defaultOptions: { ...defaultOptions, baseUrl: baseUrl },\n options,\n });\n\n const methodMiddlewares = options?.middlewares ?? [];\n\n return methodMiddlewares.reduceRight(\n (next, middleware) => middleware(next),\n fetchWithMiddlewares,\n )(request);\n };\n\n return {\n get: createFetchMethod('get'),\n post: createFetchMethod('post'),\n put: createFetchMethod('put'),\n patch: createFetchMethod('patch'),\n delete: createFetchMethod('delete'),\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"createFetchClient-DEkUH662.cjs","names":[],"sources":["../src/internal.ts","../src/errors/ApiError.ts","../src/fetchClient/createFetchClient/utils.ts","../src/fetchClient/createFetchClient/createFetchClient.ts"],"sourcesContent":["// Package-internal constants. Not part of the public\n// `@keboola/api-client/constants` sub-path (that is the `constants/` directory).\n\nexport const KeboolaHttpHeader = {\n STORAGE_API_TOKEN: 'X-StorageApi-Token',\n MANAGEMENT_API_TOKEN: 'X-Kbc-Manageapitoken',\n STORAGE_API_URL: 'x-storageapi-url',\n PROJECT_ID: 'X-KBC-ProjectId',\n UI_VERSION: 'X-KBC-Ui-Version',\n /** Storage job a request enqueued, reported on the response rather than in its body. */\n STORAGE_API_JOB_ID: 'X-StorageApi-Job-Id',\n /** Set to \"1\" to opt an auth call into browser/cookie mode. */\n CSRF: 'X-KBC-CSRF',\n} as const;\n\n/** Request headers that carry a credential — never kept on an error or written to a log. */\nexport const CREDENTIAL_HEADERS = [\n KeboolaHttpHeader.STORAGE_API_TOKEN,\n KeboolaHttpHeader.MANAGEMENT_API_TOKEN,\n 'authorization',\n 'cookie',\n];\n\nexport const REDACTED = '[REDACTED]';\n\n/** The headers as a record, each one named in `redacted` (any case) set to `[REDACTED]`. */\nexport const redactHeaders = (headers: Headers, redacted: readonly string[]) => {\n const redactedSet = new Set(redacted.map((name) => name.toLowerCase()));\n const result: Record<string, string> = {};\n headers.forEach((value, name) => {\n result[name] = redactedSet.has(name.toLowerCase()) ? REDACTED : value;\n });\n return result;\n};\n\nexport const HttpStatus = {\n NO_CONTENT: 204,\n BAD_REQUEST: 400,\n UNAUTHORIZED: 401,\n NOT_FOUND: 404,\n UNPROCESSABLE_ENTITY: 422,\n INTERNAL_SERVER_ERROR: 500,\n BAD_GATEWAY: 502,\n SERVICE_UNAVAILABLE: 503,\n GATEWAY_TIMEOUT: 504,\n} as const;\n\nexport const ENCRYPTED_VALUE_PREFIX = 'KBC::';\n","import type { ApiResponse } from '../fetchClient/createFetchClient/types';\nimport { CREDENTIAL_HEADERS, redactHeaders } from '../internal';\n\n/**\n * The status line, as a message an error reporter can group on.\n *\n * - `statusText` is empty on every HTTP/2 response: the protocol dropped the reason phrase, and\n * `fetch` reports that as `''` rather than synthesising one.\n * - So the status number leads, and `statusText` only decorates it where a server sent one.\n * - Without this an HTTP/2 failure reaches Sentry as `Error:` with an empty message, and the\n * status — the one field that says what went wrong — is absent from the report.\n */\nconst statusLine = (response: Response) =>\n response.statusText ? `${response.status} ${response.statusText}` : `${response.status}`;\n\n/**\n * A body-less copy of the request with every credential header masked.\n *\n * - Keeps the method, URL and the remaining headers for whoever handles the error.\n * - A masked header still appears, as `[REDACTED]`, so a reader sees it was sent.\n * - A copy, not an edit: the original request may still be retried with its token.\n */\nconst withoutCredentials = (request: Request) =>\n new Request(request.url, {\n method: request.method,\n headers: redactHeaders(request.headers, CREDENTIAL_HEADERS),\n });\n\nexport class ApiError extends Error {\n response: Response;\n request: Request;\n data: unknown;\n\n constructor({ response, request, data }: ApiResponse) {\n super(statusLine(response));\n this.name = 'ApiError';\n this.response = response;\n this.request = withoutCredentials(request);\n this.data = data;\n }\n}\n","import type { IStringifyOptions } from 'qs';\nimport qs from 'qs';\n\nimport { HttpStatus } from '../../internal';\n\nimport type {\n ApiResponse,\n BodyParam,\n CreateFetchRequestFn,\n ParseAs,\n PathParam,\n ValidateStatusFn,\n} from './types';\n\n/**\n * Strips trailing slashes from a base URL so concatenating a leading-slash\n * path (e.g. `/v2/storage`) never produces a double slash.\n *\n * Without this, callers that pass `https://connection.keboola.com/` end up\n * issuing requests to `https://connection.keboola.com//v2/storage/...`, which\n * the Storage API rejects with a 404.\n */\nexport const normalizeBaseUrl = (baseUrl: string): string => baseUrl.replace(/\\/+$/, '');\n\nexport const HttpHeader = {\n CONTENT_TYPE: 'content-type',\n CONTENT_DISPOSITION: 'content-disposition',\n AUTHORIZATION: 'Authorization',\n IDEMPOTENCY_KEY: 'Idempotency-Key',\n IF_MATCH: 'If-Match',\n};\n\nexport const HttpContentType = {\n JSON: 'application/json',\n TEXT_PLAIN: 'text/plain',\n FORM_DATA: 'multipart/form-data',\n TEXT_HTML: 'text/html',\n};\n\nexport const defaultValidateStatus: ValidateStatusFn = ({ response }) =>\n response.status >= 200 && response.status <= 299;\n\n/**\n * Whether a response declares HTML.\n *\n * - Media types are case-insensitive, so `Text/HTML` counts.\n * - A header fact only: a `text/html` response may still carry no body at all.\n */\nexport const isHtmlResponse = ({ response }: ApiResponse) =>\n !!response.headers\n .get(HttpHeader.CONTENT_TYPE)\n ?.toLowerCase()\n .includes(HttpContentType.TEXT_HTML);\n\n/**\n * Whether a response carried no payload, across every shape `parseData` produces for one:\n *\n * 1. `null` — a `204`, or a JSON body that was empty or whitespace.\n * 2. `''` — any other media type with an empty body, read as text.\n *\n * Whitespace-only text counts as empty, matching how `parseJson` already treats it.\n */\nexport const isContentEmpty = ({ data }: ApiResponse) =>\n data === null || data === undefined || (typeof data === 'string' && data.trim() === '');\n\nfunction removeUndefined(obj: Record<string, string>) {\n const objCopy = { ...obj };\n for (const [key, value] of Object.entries(objCopy)) {\n if (value == null) delete objCopy[key];\n }\n return objCopy;\n}\n\n// `application/json`, but also `application/json; charset=utf-8` and the `+json` suffix family.\n// Comparing the raw header for equality misses every response that carries a charset.\nconst JSON_MEDIA_TYPE = /^application\\/([\\w.-]+\\+)?json$/;\n\nconst getMediaType = (response: Response) =>\n response.headers.get(HttpHeader.CONTENT_TYPE)?.split(';')[0]?.trim().toLowerCase() ?? '';\n\n// Declared JSON is parsed strictly: a body that doesn't parse is a broken response, not a text\n// payload, and `JSON.parse` throwing is the right answer. Read it as text first only so an empty\n// body can resolve to `null` like a 204 — matching the charset form brings `application/json;\n// charset=utf-8` onto this path, where `response.json()` would turn a 200-with-no-body into a\n// `SyntaxError` it never used to be.\nconst parseJson = async (response: Response) => {\n const text = await response.text();\n return text.trim() === '' ? null : JSON.parse(text);\n};\n\nexport const parseData = async (response: Response, parseAs: ParseAs = 'auto') => {\n // No body to read, whatever the caller asked for.\n if (response.status === HttpStatus.NO_CONTENT) return null;\n\n // Per-method-call override\n if (parseAs === 'text') return response.text();\n if (parseAs === 'blob') return response.blob();\n if (parseAs === 'json') return parseJson(response);\n\n const mediaType = getMediaType(response);\n if (JSON_MEDIA_TYPE.test(mediaType)) return parseJson(response);\n\n // A declared binary payload must come back as bytes — `text()` would decode it as UTF-8 and\n // corrupt it. `application/octet-stream` is the only binary type an endpoint declares today\n // (kai-agent's sandbox file download); widen deliberately, never by sniffing.\n if (mediaType === 'application/octet-stream') return response.blob();\n\n // Any other declared type describes its own payload — the query-service CSV export, the\n // data-science `text/plain` endpoints — so hand back the exact bytes instead of sniffing them.\n return response.text();\n};\n\n// Header instance serialize undefined value as `undefined`, we do not want that\nconst cleanHeadersInit = (headersInit: HeadersInit | undefined) => {\n if (Array.isArray(headersInit)) return headersInit;\n if (headersInit instanceof Headers) return headersInit;\n if (headersInit == null) return headersInit;\n\n return removeUndefined(headersInit);\n};\n\nconst createHeaders = (\n headersInitA: HeadersInit | undefined,\n headersInitB: HeadersInit | undefined,\n) => {\n const headersA = new Headers(cleanHeadersInit(headersInitA));\n const headersB = new Headers(cleanHeadersInit(headersInitB));\n\n headersB.forEach((value, key) => {\n headersA.set(key, value);\n });\n\n return headersA;\n};\n\nexport const createPath = (\n path: string,\n pathParam: PathParam = {},\n encodePathParam: (value: string) => string = encodeURIComponent,\n) =>\n path.replace(/\\{([^}]+)}/g, (_, key) => {\n if (!(key in pathParam))\n throw new Error(`Path parameter \"${key}\" is missing in the path \"${path}\"`);\n\n return encodePathParam(String(pathParam[key]!));\n });\n\nexport const createSearch = (\n query: Record<string, unknown>,\n options: Pick<IStringifyOptions, 'arrayFormat'> = {},\n) => {\n return qs.stringify(query, {\n encodeValuesOnly: true,\n skipNulls: true,\n ...options,\n });\n};\n\nexport const createBody = (body: BodyParam, headers: Headers) => {\n if (body == null) return null;\n if (body instanceof FormData) return body; // fetch automatically sets content-type header\n if (typeof body === 'string') return body; // fetch automatically sets content-type header\n\n const stringifyBody = JSON.stringify(body);\n const stringBody = stringifyBody === '{}' ? null : stringifyBody;\n if (stringBody) headers.set(HttpHeader.CONTENT_TYPE, HttpContentType.JSON);\n\n return stringBody;\n};\n\nexport const parseContentDispositionHeader = (contentDisposition?: string | null) => {\n // extract the type ('inline' or 'attachment'), default the type to 'unknown'\n const type = (() => {\n const typeMatch = contentDisposition?.match(/^\\s*(inline|attachment)\\s*;/i);\n return (typeMatch?.[1]?.toLowerCase() ?? 'unknown') as 'inline' | 'attachment' | 'unknown';\n })();\n\n // extract the filename, default the type to null\n const filename = (() => {\n const filenameMatch = contentDisposition?.match(/filename=\"([^\"]+)\"/i);\n if (filenameMatch) return filenameMatch[1];\n\n // If no filename=\"...\", check for encoded filename*=UTF-8''\n const encodedFilenameMatch = contentDisposition?.match(/filename\\*=(?:UTF-8'')?([^;]+)/i);\n if (encodedFilenameMatch?.[1]) return decodeURIComponent(encodedFilenameMatch[1]);\n\n // Check for unquoted filenames (rare but possible)\n const unquotedFilenameMatch = contentDisposition?.match(/filename=([^;]+)/i);\n return unquotedFilenameMatch?.[1] ?? null;\n })();\n\n // Return the parsed result\n return { type, filename };\n};\n\nexport const createFetchRequest: CreateFetchRequestFn = ({\n url,\n method,\n params,\n options = {},\n defaultOptions,\n}) => {\n const {\n baseUrl,\n validateStatus: defValidateStatus = defaultValidateStatus,\n headers: defaultHeaders,\n fetchFn: defaultFetchFn,\n encodePathParam,\n ...restDefaultOptions\n } = defaultOptions;\n const {\n validateStatus,\n queryArrayFormat,\n headers: endpointHeaders,\n fetchFn,\n parseAs,\n ...restOptions\n } = options;\n\n const headers = createHeaders(defaultHeaders, endpointHeaders);\n const path = createPath(url, params.path, encodePathParam);\n const search = createSearch(params.query ?? {}, { arrayFormat: queryArrayFormat });\n const body = createBody(params.body, headers);\n\n const urlInstance = new URL(normalizeBaseUrl(baseUrl) + path);\n urlInstance.search = search;\n\n const request = new Request(urlInstance, {\n ...restDefaultOptions,\n ...restOptions,\n headers,\n method: method.toUpperCase(),\n body,\n });\n\n return {\n request,\n validateStatus: validateStatus ?? defValidateStatus,\n fetchFn: fetchFn ?? defaultFetchFn,\n parseAs,\n };\n};\n","import { ApiError } from '../../errors';\n\nimport type {\n BaseFetchParams,\n CoreFetchFn,\n CreateFetchClientOptions,\n FetchClientOptions,\n HttpMethod,\n} from './types';\nimport { createFetchRequest, parseData } from './utils';\n\nexport type FetchClientError = TypeError | ApiError | SyntaxError | DOMException;\n\nexport const isApiError = (error: unknown): error is ApiError => error instanceof ApiError;\n\nexport const isAbortError = (error: unknown): error is DOMException =>\n error instanceof DOMException && error.name === 'AbortError';\n\nexport const isTimeoutError = (error: unknown): error is DOMException =>\n error instanceof DOMException && error.name === 'TimeoutError';\n\nexport const isFetchClientError = (error: unknown): error is FetchClientError =>\n error instanceof TypeError || error instanceof SyntaxError || isApiError(error);\n\n// `fetchFn` is resolved per request by `createFetchRequest` (endpoint option beats client option),\n// so a single request can swap the transport without rebuilding the client.\nconst coreFetch: CoreFetchFn = async ({ request, validateStatus, fetchFn = fetch, parseAs }) => {\n const response = await fetchFn(request);\n const data = await parseData(response, parseAs);\n\n const apiResponse = {\n request,\n response,\n data,\n };\n\n const boolOrError = validateStatus(apiResponse);\n if (isApiError(boolOrError)) throw boolOrError;\n if (!boolOrError) throw new ApiError(apiResponse);\n\n return apiResponse;\n};\n\nexport const createFetchClient = ({\n middlewares = [],\n baseUrl: _baseUrl,\n ...defaultOptions\n}: CreateFetchClientOptions) => {\n const fetchWithMiddlewares = middlewares.reduceRight(\n (next, middleware) => middleware(next),\n coreFetch,\n );\n const resolveBaseUrl = async () => (typeof _baseUrl === 'function' ? _baseUrl() : _baseUrl);\n\n const createFetchMethod =\n (method: HttpMethod) =>\n async (url: string, params: BaseFetchParams, options: FetchClientOptions = {}) => {\n const baseUrl = await resolveBaseUrl();\n const request = createFetchRequest({\n url,\n method,\n params,\n defaultOptions: { ...defaultOptions, baseUrl: baseUrl },\n options,\n });\n\n const methodMiddlewares = options?.middlewares ?? [];\n\n return methodMiddlewares.reduceRight(\n (next, middleware) => middleware(next),\n fetchWithMiddlewares,\n )(request);\n };\n\n return {\n get: createFetchMethod('get'),\n post: createFetchMethod('post'),\n put: createFetchMethod('put'),\n patch: createFetchMethod('patch'),\n delete: createFetchMethod('delete'),\n };\n};\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import qs from "qs";
2
- //#region src/internal.ts
2
+ // src/internal.ts
3
3
  const KeboolaHttpHeader = {
4
4
  STORAGE_API_TOKEN: "X-StorageApi-Token",
5
5
  MANAGEMENT_API_TOKEN: "X-Kbc-Manageapitoken",
@@ -40,8 +40,7 @@ const HttpStatus = {
40
40
  GATEWAY_TIMEOUT: 504
41
41
  };
42
42
  const ENCRYPTED_VALUE_PREFIX = "KBC::";
43
- //#endregion
44
- //#region src/errors/ApiError.ts
43
+ // src/errors/ApiError.ts
45
44
  /**
46
45
  * The status line, as a message an error reporter can group on.
47
46
  *
@@ -75,8 +74,7 @@ var ApiError = class extends Error {
75
74
  this.data = data;
76
75
  }
77
76
  };
78
- //#endregion
79
- //#region src/fetchClient/createFetchClient/utils.ts
77
+ // src/fetchClient/createFetchClient/utils.ts
80
78
  /**
81
79
  * Strips trailing slashes from a base URL so concatenating a leading-slash
82
80
  * path (e.g. `/v2/storage`) never produces a double slash.
@@ -206,8 +204,7 @@ const createFetchRequest = ({ url, method, params, options = {}, defaultOptions
206
204
  parseAs
207
205
  };
208
206
  };
209
- //#endregion
210
- //#region src/fetchClient/createFetchClient/createFetchClient.ts
207
+ // src/fetchClient/createFetchClient/createFetchClient.ts
211
208
  const isApiError = (error) => error instanceof ApiError;
212
209
  const isAbortError = (error) => error instanceof DOMException && error.name === "AbortError";
213
210
  const isTimeoutError = (error) => error instanceof DOMException && error.name === "TimeoutError";
@@ -249,7 +246,6 @@ const createFetchClient = ({ middlewares = [], baseUrl: _baseUrl, ...defaultOpti
249
246
  delete: createFetchMethod("delete")
250
247
  };
251
248
  };
252
- //#endregion
253
249
  export { KeboolaHttpHeader as _, isTimeoutError as a, defaultValidateStatus as c, normalizeBaseUrl as d, parseContentDispositionHeader as f, HttpStatus as g, ENCRYPTED_VALUE_PREFIX as h, isFetchClientError as i, isContentEmpty as l, CREDENTIAL_HEADERS as m, isAbortError as n, HttpContentType as o, ApiError as p, isApiError as r, HttpHeader as s, createFetchClient as t, isHtmlResponse as u, REDACTED as v, redactHeaders as y };
254
250
 
255
- //# sourceMappingURL=createFetchClient-CkHdS_IG.js.map
251
+ //# sourceMappingURL=createFetchClient-DlGCbltR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createFetchClient-CkHdS_IG.js","names":[],"sources":["../src/internal.ts","../src/errors/ApiError.ts","../src/fetchClient/createFetchClient/utils.ts","../src/fetchClient/createFetchClient/createFetchClient.ts"],"sourcesContent":["// Package-internal constants. Not part of the public\n// `@keboola/api-client/constants` sub-path (that is the `constants/` directory).\n\nexport const KeboolaHttpHeader = {\n STORAGE_API_TOKEN: 'X-StorageApi-Token',\n MANAGEMENT_API_TOKEN: 'X-Kbc-Manageapitoken',\n STORAGE_API_URL: 'x-storageapi-url',\n PROJECT_ID: 'X-KBC-ProjectId',\n UI_VERSION: 'X-KBC-Ui-Version',\n /** Storage job a request enqueued, reported on the response rather than in its body. */\n STORAGE_API_JOB_ID: 'X-StorageApi-Job-Id',\n /** Set to \"1\" to opt an auth call into browser/cookie mode. */\n CSRF: 'X-KBC-CSRF',\n} as const;\n\n/** Request headers that carry a credential — never kept on an error or written to a log. */\nexport const CREDENTIAL_HEADERS = [\n KeboolaHttpHeader.STORAGE_API_TOKEN,\n KeboolaHttpHeader.MANAGEMENT_API_TOKEN,\n 'authorization',\n 'cookie',\n];\n\nexport const REDACTED = '[REDACTED]';\n\n/** The headers as a record, each one named in `redacted` (any case) set to `[REDACTED]`. */\nexport const redactHeaders = (headers: Headers, redacted: readonly string[]) => {\n const redactedSet = new Set(redacted.map((name) => name.toLowerCase()));\n const result: Record<string, string> = {};\n headers.forEach((value, name) => {\n result[name] = redactedSet.has(name.toLowerCase()) ? REDACTED : value;\n });\n return result;\n};\n\nexport const HttpStatus = {\n NO_CONTENT: 204,\n BAD_REQUEST: 400,\n UNAUTHORIZED: 401,\n NOT_FOUND: 404,\n UNPROCESSABLE_ENTITY: 422,\n INTERNAL_SERVER_ERROR: 500,\n BAD_GATEWAY: 502,\n SERVICE_UNAVAILABLE: 503,\n GATEWAY_TIMEOUT: 504,\n} as const;\n\nexport const ENCRYPTED_VALUE_PREFIX = 'KBC::';\n","import type { ApiResponse } from '../fetchClient/createFetchClient/types';\nimport { CREDENTIAL_HEADERS, redactHeaders } from '../internal';\n\n/**\n * The status line, as a message an error reporter can group on.\n *\n * - `statusText` is empty on every HTTP/2 response: the protocol dropped the reason phrase, and\n * `fetch` reports that as `''` rather than synthesising one.\n * - So the status number leads, and `statusText` only decorates it where a server sent one.\n * - Without this an HTTP/2 failure reaches Sentry as `Error:` with an empty message, and the\n * status — the one field that says what went wrong — is absent from the report.\n */\nconst statusLine = (response: Response) =>\n response.statusText ? `${response.status} ${response.statusText}` : `${response.status}`;\n\n/**\n * A body-less copy of the request with every credential header masked.\n *\n * - Keeps the method, URL and the remaining headers for whoever handles the error.\n * - A masked header still appears, as `[REDACTED]`, so a reader sees it was sent.\n * - A copy, not an edit: the original request may still be retried with its token.\n */\nconst withoutCredentials = (request: Request) =>\n new Request(request.url, {\n method: request.method,\n headers: redactHeaders(request.headers, CREDENTIAL_HEADERS),\n });\n\nexport class ApiError extends Error {\n response: Response;\n request: Request;\n data: unknown;\n\n constructor({ response, request, data }: ApiResponse) {\n super(statusLine(response));\n this.name = 'ApiError';\n this.response = response;\n this.request = withoutCredentials(request);\n this.data = data;\n }\n}\n","import type { IStringifyOptions } from 'qs';\nimport qs from 'qs';\n\nimport { HttpStatus } from '../../internal';\n\nimport type {\n ApiResponse,\n BodyParam,\n CreateFetchRequestFn,\n ParseAs,\n PathParam,\n ValidateStatusFn,\n} from './types';\n\n/**\n * Strips trailing slashes from a base URL so concatenating a leading-slash\n * path (e.g. `/v2/storage`) never produces a double slash.\n *\n * Without this, callers that pass `https://connection.keboola.com/` end up\n * issuing requests to `https://connection.keboola.com//v2/storage/...`, which\n * the Storage API rejects with a 404.\n */\nexport const normalizeBaseUrl = (baseUrl: string): string => baseUrl.replace(/\\/+$/, '');\n\nexport const HttpHeader = {\n CONTENT_TYPE: 'content-type',\n CONTENT_DISPOSITION: 'content-disposition',\n AUTHORIZATION: 'Authorization',\n IDEMPOTENCY_KEY: 'Idempotency-Key',\n IF_MATCH: 'If-Match',\n};\n\nexport const HttpContentType = {\n JSON: 'application/json',\n TEXT_PLAIN: 'text/plain',\n FORM_DATA: 'multipart/form-data',\n TEXT_HTML: 'text/html',\n};\n\nexport const defaultValidateStatus: ValidateStatusFn = ({ response }) =>\n response.status >= 200 && response.status <= 299;\n\n/**\n * Whether a response declares HTML.\n *\n * - Media types are case-insensitive, so `Text/HTML` counts.\n * - A header fact only: a `text/html` response may still carry no body at all.\n */\nexport const isHtmlResponse = ({ response }: ApiResponse) =>\n !!response.headers\n .get(HttpHeader.CONTENT_TYPE)\n ?.toLowerCase()\n .includes(HttpContentType.TEXT_HTML);\n\n/**\n * Whether a response carried no payload, across every shape `parseData` produces for one:\n *\n * 1. `null` — a `204`, or a JSON body that was empty or whitespace.\n * 2. `''` — any other media type with an empty body, read as text.\n *\n * Whitespace-only text counts as empty, matching how `parseJson` already treats it.\n */\nexport const isContentEmpty = ({ data }: ApiResponse) =>\n data === null || data === undefined || (typeof data === 'string' && data.trim() === '');\n\nfunction removeUndefined(obj: Record<string, string>) {\n const objCopy = { ...obj };\n for (const [key, value] of Object.entries(objCopy)) {\n if (value == null) delete objCopy[key];\n }\n return objCopy;\n}\n\n// `application/json`, but also `application/json; charset=utf-8` and the `+json` suffix family.\n// Comparing the raw header for equality misses every response that carries a charset.\nconst JSON_MEDIA_TYPE = /^application\\/([\\w.-]+\\+)?json$/;\n\nconst getMediaType = (response: Response) =>\n response.headers.get(HttpHeader.CONTENT_TYPE)?.split(';')[0]?.trim().toLowerCase() ?? '';\n\n// Declared JSON is parsed strictly: a body that doesn't parse is a broken response, not a text\n// payload, and `JSON.parse` throwing is the right answer. Read it as text first only so an empty\n// body can resolve to `null` like a 204 — matching the charset form brings `application/json;\n// charset=utf-8` onto this path, where `response.json()` would turn a 200-with-no-body into a\n// `SyntaxError` it never used to be.\nconst parseJson = async (response: Response) => {\n const text = await response.text();\n return text.trim() === '' ? null : JSON.parse(text);\n};\n\nexport const parseData = async (response: Response, parseAs: ParseAs = 'auto') => {\n // No body to read, whatever the caller asked for.\n if (response.status === HttpStatus.NO_CONTENT) return null;\n\n // Per-method-call override\n if (parseAs === 'text') return response.text();\n if (parseAs === 'blob') return response.blob();\n if (parseAs === 'json') return parseJson(response);\n\n const mediaType = getMediaType(response);\n if (JSON_MEDIA_TYPE.test(mediaType)) return parseJson(response);\n\n // A declared binary payload must come back as bytes — `text()` would decode it as UTF-8 and\n // corrupt it. `application/octet-stream` is the only binary type an endpoint declares today\n // (kai-agent's sandbox file download); widen deliberately, never by sniffing.\n if (mediaType === 'application/octet-stream') return response.blob();\n\n // Any other declared type describes its own payload — the query-service CSV export, the\n // data-science `text/plain` endpoints — so hand back the exact bytes instead of sniffing them.\n return response.text();\n};\n\n// Header instance serialize undefined value as `undefined`, we do not want that\nconst cleanHeadersInit = (headersInit: HeadersInit | undefined) => {\n if (Array.isArray(headersInit)) return headersInit;\n if (headersInit instanceof Headers) return headersInit;\n if (headersInit == null) return headersInit;\n\n return removeUndefined(headersInit);\n};\n\nconst createHeaders = (\n headersInitA: HeadersInit | undefined,\n headersInitB: HeadersInit | undefined,\n) => {\n const headersA = new Headers(cleanHeadersInit(headersInitA));\n const headersB = new Headers(cleanHeadersInit(headersInitB));\n\n headersB.forEach((value, key) => {\n headersA.set(key, value);\n });\n\n return headersA;\n};\n\nexport const createPath = (\n path: string,\n pathParam: PathParam = {},\n encodePathParam: (value: string) => string = encodeURIComponent,\n) =>\n path.replace(/\\{([^}]+)}/g, (_, key) => {\n if (!(key in pathParam))\n throw new Error(`Path parameter \"${key}\" is missing in the path \"${path}\"`);\n\n return encodePathParam(String(pathParam[key]!));\n });\n\nexport const createSearch = (\n query: Record<string, unknown>,\n options: Pick<IStringifyOptions, 'arrayFormat'> = {},\n) => {\n return qs.stringify(query, {\n encodeValuesOnly: true,\n skipNulls: true,\n ...options,\n });\n};\n\nexport const createBody = (body: BodyParam, headers: Headers) => {\n if (body == null) return null;\n if (body instanceof FormData) return body; // fetch automatically sets content-type header\n if (typeof body === 'string') return body; // fetch automatically sets content-type header\n\n const stringifyBody = JSON.stringify(body);\n const stringBody = stringifyBody === '{}' ? null : stringifyBody;\n if (stringBody) headers.set(HttpHeader.CONTENT_TYPE, HttpContentType.JSON);\n\n return stringBody;\n};\n\nexport const parseContentDispositionHeader = (contentDisposition?: string | null) => {\n // extract the type ('inline' or 'attachment'), default the type to 'unknown'\n const type = (() => {\n const typeMatch = contentDisposition?.match(/^\\s*(inline|attachment)\\s*;/i);\n return (typeMatch?.[1]?.toLowerCase() ?? 'unknown') as 'inline' | 'attachment' | 'unknown';\n })();\n\n // extract the filename, default the type to null\n const filename = (() => {\n const filenameMatch = contentDisposition?.match(/filename=\"([^\"]+)\"/i);\n if (filenameMatch) return filenameMatch[1];\n\n // If no filename=\"...\", check for encoded filename*=UTF-8''\n const encodedFilenameMatch = contentDisposition?.match(/filename\\*=(?:UTF-8'')?([^;]+)/i);\n if (encodedFilenameMatch?.[1]) return decodeURIComponent(encodedFilenameMatch[1]);\n\n // Check for unquoted filenames (rare but possible)\n const unquotedFilenameMatch = contentDisposition?.match(/filename=([^;]+)/i);\n return unquotedFilenameMatch?.[1] ?? null;\n })();\n\n // Return the parsed result\n return { type, filename };\n};\n\nexport const createFetchRequest: CreateFetchRequestFn = ({\n url,\n method,\n params,\n options = {},\n defaultOptions,\n}) => {\n const {\n baseUrl,\n validateStatus: defValidateStatus = defaultValidateStatus,\n headers: defaultHeaders,\n fetchFn: defaultFetchFn,\n encodePathParam,\n ...restDefaultOptions\n } = defaultOptions;\n const {\n validateStatus,\n queryArrayFormat,\n headers: endpointHeaders,\n fetchFn,\n parseAs,\n ...restOptions\n } = options;\n\n const headers = createHeaders(defaultHeaders, endpointHeaders);\n const path = createPath(url, params.path, encodePathParam);\n const search = createSearch(params.query ?? {}, { arrayFormat: queryArrayFormat });\n const body = createBody(params.body, headers);\n\n const urlInstance = new URL(normalizeBaseUrl(baseUrl) + path);\n urlInstance.search = search;\n\n const request = new Request(urlInstance, {\n ...restDefaultOptions,\n ...restOptions,\n headers,\n method: method.toUpperCase(),\n body,\n });\n\n return {\n request,\n validateStatus: validateStatus ?? defValidateStatus,\n fetchFn: fetchFn ?? defaultFetchFn,\n parseAs,\n };\n};\n","import { ApiError } from '../../errors';\n\nimport type {\n BaseFetchParams,\n CoreFetchFn,\n CreateFetchClientOptions,\n FetchClientOptions,\n HttpMethod,\n} from './types';\nimport { createFetchRequest, parseData } from './utils';\n\nexport type FetchClientError = TypeError | ApiError | SyntaxError | DOMException;\n\nexport const isApiError = (error: unknown): error is ApiError => error instanceof ApiError;\n\nexport const isAbortError = (error: unknown): error is DOMException =>\n error instanceof DOMException && error.name === 'AbortError';\n\nexport const isTimeoutError = (error: unknown): error is DOMException =>\n error instanceof DOMException && error.name === 'TimeoutError';\n\nexport const isFetchClientError = (error: unknown): error is FetchClientError =>\n error instanceof TypeError || error instanceof SyntaxError || isApiError(error);\n\n// `fetchFn` is resolved per request by `createFetchRequest` (endpoint option beats client option),\n// so a single request can swap the transport without rebuilding the client.\nconst coreFetch: CoreFetchFn = async ({ request, validateStatus, fetchFn = fetch, parseAs }) => {\n const response = await fetchFn(request);\n const data = await parseData(response, parseAs);\n\n const apiResponse = {\n request,\n response,\n data,\n };\n\n const boolOrError = validateStatus(apiResponse);\n if (isApiError(boolOrError)) throw boolOrError;\n if (!boolOrError) throw new ApiError(apiResponse);\n\n return apiResponse;\n};\n\nexport const createFetchClient = ({\n middlewares = [],\n baseUrl: _baseUrl,\n ...defaultOptions\n}: CreateFetchClientOptions) => {\n const fetchWithMiddlewares = middlewares.reduceRight(\n (next, middleware) => middleware(next),\n coreFetch,\n );\n const resolveBaseUrl = async () => (typeof _baseUrl === 'function' ? _baseUrl() : _baseUrl);\n\n const createFetchMethod =\n (method: HttpMethod) =>\n async (url: string, params: BaseFetchParams, options: FetchClientOptions = {}) => {\n const baseUrl = await resolveBaseUrl();\n const request = createFetchRequest({\n url,\n method,\n params,\n defaultOptions: { ...defaultOptions, baseUrl: baseUrl },\n options,\n });\n\n const methodMiddlewares = options?.middlewares ?? [];\n\n return methodMiddlewares.reduceRight(\n (next, middleware) => middleware(next),\n fetchWithMiddlewares,\n )(request);\n };\n\n return {\n get: createFetchMethod('get'),\n post: createFetchMethod('post'),\n put: createFetchMethod('put'),\n patch: createFetchMethod('patch'),\n delete: createFetchMethod('delete'),\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"createFetchClient-DlGCbltR.js","names":[],"sources":["../src/internal.ts","../src/errors/ApiError.ts","../src/fetchClient/createFetchClient/utils.ts","../src/fetchClient/createFetchClient/createFetchClient.ts"],"sourcesContent":["// Package-internal constants. Not part of the public\n// `@keboola/api-client/constants` sub-path (that is the `constants/` directory).\n\nexport const KeboolaHttpHeader = {\n STORAGE_API_TOKEN: 'X-StorageApi-Token',\n MANAGEMENT_API_TOKEN: 'X-Kbc-Manageapitoken',\n STORAGE_API_URL: 'x-storageapi-url',\n PROJECT_ID: 'X-KBC-ProjectId',\n UI_VERSION: 'X-KBC-Ui-Version',\n /** Storage job a request enqueued, reported on the response rather than in its body. */\n STORAGE_API_JOB_ID: 'X-StorageApi-Job-Id',\n /** Set to \"1\" to opt an auth call into browser/cookie mode. */\n CSRF: 'X-KBC-CSRF',\n} as const;\n\n/** Request headers that carry a credential — never kept on an error or written to a log. */\nexport const CREDENTIAL_HEADERS = [\n KeboolaHttpHeader.STORAGE_API_TOKEN,\n KeboolaHttpHeader.MANAGEMENT_API_TOKEN,\n 'authorization',\n 'cookie',\n];\n\nexport const REDACTED = '[REDACTED]';\n\n/** The headers as a record, each one named in `redacted` (any case) set to `[REDACTED]`. */\nexport const redactHeaders = (headers: Headers, redacted: readonly string[]) => {\n const redactedSet = new Set(redacted.map((name) => name.toLowerCase()));\n const result: Record<string, string> = {};\n headers.forEach((value, name) => {\n result[name] = redactedSet.has(name.toLowerCase()) ? REDACTED : value;\n });\n return result;\n};\n\nexport const HttpStatus = {\n NO_CONTENT: 204,\n BAD_REQUEST: 400,\n UNAUTHORIZED: 401,\n NOT_FOUND: 404,\n UNPROCESSABLE_ENTITY: 422,\n INTERNAL_SERVER_ERROR: 500,\n BAD_GATEWAY: 502,\n SERVICE_UNAVAILABLE: 503,\n GATEWAY_TIMEOUT: 504,\n} as const;\n\nexport const ENCRYPTED_VALUE_PREFIX = 'KBC::';\n","import type { ApiResponse } from '../fetchClient/createFetchClient/types';\nimport { CREDENTIAL_HEADERS, redactHeaders } from '../internal';\n\n/**\n * The status line, as a message an error reporter can group on.\n *\n * - `statusText` is empty on every HTTP/2 response: the protocol dropped the reason phrase, and\n * `fetch` reports that as `''` rather than synthesising one.\n * - So the status number leads, and `statusText` only decorates it where a server sent one.\n * - Without this an HTTP/2 failure reaches Sentry as `Error:` with an empty message, and the\n * status — the one field that says what went wrong — is absent from the report.\n */\nconst statusLine = (response: Response) =>\n response.statusText ? `${response.status} ${response.statusText}` : `${response.status}`;\n\n/**\n * A body-less copy of the request with every credential header masked.\n *\n * - Keeps the method, URL and the remaining headers for whoever handles the error.\n * - A masked header still appears, as `[REDACTED]`, so a reader sees it was sent.\n * - A copy, not an edit: the original request may still be retried with its token.\n */\nconst withoutCredentials = (request: Request) =>\n new Request(request.url, {\n method: request.method,\n headers: redactHeaders(request.headers, CREDENTIAL_HEADERS),\n });\n\nexport class ApiError extends Error {\n response: Response;\n request: Request;\n data: unknown;\n\n constructor({ response, request, data }: ApiResponse) {\n super(statusLine(response));\n this.name = 'ApiError';\n this.response = response;\n this.request = withoutCredentials(request);\n this.data = data;\n }\n}\n","import type { IStringifyOptions } from 'qs';\nimport qs from 'qs';\n\nimport { HttpStatus } from '../../internal';\n\nimport type {\n ApiResponse,\n BodyParam,\n CreateFetchRequestFn,\n ParseAs,\n PathParam,\n ValidateStatusFn,\n} from './types';\n\n/**\n * Strips trailing slashes from a base URL so concatenating a leading-slash\n * path (e.g. `/v2/storage`) never produces a double slash.\n *\n * Without this, callers that pass `https://connection.keboola.com/` end up\n * issuing requests to `https://connection.keboola.com//v2/storage/...`, which\n * the Storage API rejects with a 404.\n */\nexport const normalizeBaseUrl = (baseUrl: string): string => baseUrl.replace(/\\/+$/, '');\n\nexport const HttpHeader = {\n CONTENT_TYPE: 'content-type',\n CONTENT_DISPOSITION: 'content-disposition',\n AUTHORIZATION: 'Authorization',\n IDEMPOTENCY_KEY: 'Idempotency-Key',\n IF_MATCH: 'If-Match',\n};\n\nexport const HttpContentType = {\n JSON: 'application/json',\n TEXT_PLAIN: 'text/plain',\n FORM_DATA: 'multipart/form-data',\n TEXT_HTML: 'text/html',\n};\n\nexport const defaultValidateStatus: ValidateStatusFn = ({ response }) =>\n response.status >= 200 && response.status <= 299;\n\n/**\n * Whether a response declares HTML.\n *\n * - Media types are case-insensitive, so `Text/HTML` counts.\n * - A header fact only: a `text/html` response may still carry no body at all.\n */\nexport const isHtmlResponse = ({ response }: ApiResponse) =>\n !!response.headers\n .get(HttpHeader.CONTENT_TYPE)\n ?.toLowerCase()\n .includes(HttpContentType.TEXT_HTML);\n\n/**\n * Whether a response carried no payload, across every shape `parseData` produces for one:\n *\n * 1. `null` — a `204`, or a JSON body that was empty or whitespace.\n * 2. `''` — any other media type with an empty body, read as text.\n *\n * Whitespace-only text counts as empty, matching how `parseJson` already treats it.\n */\nexport const isContentEmpty = ({ data }: ApiResponse) =>\n data === null || data === undefined || (typeof data === 'string' && data.trim() === '');\n\nfunction removeUndefined(obj: Record<string, string>) {\n const objCopy = { ...obj };\n for (const [key, value] of Object.entries(objCopy)) {\n if (value == null) delete objCopy[key];\n }\n return objCopy;\n}\n\n// `application/json`, but also `application/json; charset=utf-8` and the `+json` suffix family.\n// Comparing the raw header for equality misses every response that carries a charset.\nconst JSON_MEDIA_TYPE = /^application\\/([\\w.-]+\\+)?json$/;\n\nconst getMediaType = (response: Response) =>\n response.headers.get(HttpHeader.CONTENT_TYPE)?.split(';')[0]?.trim().toLowerCase() ?? '';\n\n// Declared JSON is parsed strictly: a body that doesn't parse is a broken response, not a text\n// payload, and `JSON.parse` throwing is the right answer. Read it as text first only so an empty\n// body can resolve to `null` like a 204 — matching the charset form brings `application/json;\n// charset=utf-8` onto this path, where `response.json()` would turn a 200-with-no-body into a\n// `SyntaxError` it never used to be.\nconst parseJson = async (response: Response) => {\n const text = await response.text();\n return text.trim() === '' ? null : JSON.parse(text);\n};\n\nexport const parseData = async (response: Response, parseAs: ParseAs = 'auto') => {\n // No body to read, whatever the caller asked for.\n if (response.status === HttpStatus.NO_CONTENT) return null;\n\n // Per-method-call override\n if (parseAs === 'text') return response.text();\n if (parseAs === 'blob') return response.blob();\n if (parseAs === 'json') return parseJson(response);\n\n const mediaType = getMediaType(response);\n if (JSON_MEDIA_TYPE.test(mediaType)) return parseJson(response);\n\n // A declared binary payload must come back as bytes — `text()` would decode it as UTF-8 and\n // corrupt it. `application/octet-stream` is the only binary type an endpoint declares today\n // (kai-agent's sandbox file download); widen deliberately, never by sniffing.\n if (mediaType === 'application/octet-stream') return response.blob();\n\n // Any other declared type describes its own payload — the query-service CSV export, the\n // data-science `text/plain` endpoints — so hand back the exact bytes instead of sniffing them.\n return response.text();\n};\n\n// Header instance serialize undefined value as `undefined`, we do not want that\nconst cleanHeadersInit = (headersInit: HeadersInit | undefined) => {\n if (Array.isArray(headersInit)) return headersInit;\n if (headersInit instanceof Headers) return headersInit;\n if (headersInit == null) return headersInit;\n\n return removeUndefined(headersInit);\n};\n\nconst createHeaders = (\n headersInitA: HeadersInit | undefined,\n headersInitB: HeadersInit | undefined,\n) => {\n const headersA = new Headers(cleanHeadersInit(headersInitA));\n const headersB = new Headers(cleanHeadersInit(headersInitB));\n\n headersB.forEach((value, key) => {\n headersA.set(key, value);\n });\n\n return headersA;\n};\n\nexport const createPath = (\n path: string,\n pathParam: PathParam = {},\n encodePathParam: (value: string) => string = encodeURIComponent,\n) =>\n path.replace(/\\{([^}]+)}/g, (_, key) => {\n if (!(key in pathParam))\n throw new Error(`Path parameter \"${key}\" is missing in the path \"${path}\"`);\n\n return encodePathParam(String(pathParam[key]!));\n });\n\nexport const createSearch = (\n query: Record<string, unknown>,\n options: Pick<IStringifyOptions, 'arrayFormat'> = {},\n) => {\n return qs.stringify(query, {\n encodeValuesOnly: true,\n skipNulls: true,\n ...options,\n });\n};\n\nexport const createBody = (body: BodyParam, headers: Headers) => {\n if (body == null) return null;\n if (body instanceof FormData) return body; // fetch automatically sets content-type header\n if (typeof body === 'string') return body; // fetch automatically sets content-type header\n\n const stringifyBody = JSON.stringify(body);\n const stringBody = stringifyBody === '{}' ? null : stringifyBody;\n if (stringBody) headers.set(HttpHeader.CONTENT_TYPE, HttpContentType.JSON);\n\n return stringBody;\n};\n\nexport const parseContentDispositionHeader = (contentDisposition?: string | null) => {\n // extract the type ('inline' or 'attachment'), default the type to 'unknown'\n const type = (() => {\n const typeMatch = contentDisposition?.match(/^\\s*(inline|attachment)\\s*;/i);\n return (typeMatch?.[1]?.toLowerCase() ?? 'unknown') as 'inline' | 'attachment' | 'unknown';\n })();\n\n // extract the filename, default the type to null\n const filename = (() => {\n const filenameMatch = contentDisposition?.match(/filename=\"([^\"]+)\"/i);\n if (filenameMatch) return filenameMatch[1];\n\n // If no filename=\"...\", check for encoded filename*=UTF-8''\n const encodedFilenameMatch = contentDisposition?.match(/filename\\*=(?:UTF-8'')?([^;]+)/i);\n if (encodedFilenameMatch?.[1]) return decodeURIComponent(encodedFilenameMatch[1]);\n\n // Check for unquoted filenames (rare but possible)\n const unquotedFilenameMatch = contentDisposition?.match(/filename=([^;]+)/i);\n return unquotedFilenameMatch?.[1] ?? null;\n })();\n\n // Return the parsed result\n return { type, filename };\n};\n\nexport const createFetchRequest: CreateFetchRequestFn = ({\n url,\n method,\n params,\n options = {},\n defaultOptions,\n}) => {\n const {\n baseUrl,\n validateStatus: defValidateStatus = defaultValidateStatus,\n headers: defaultHeaders,\n fetchFn: defaultFetchFn,\n encodePathParam,\n ...restDefaultOptions\n } = defaultOptions;\n const {\n validateStatus,\n queryArrayFormat,\n headers: endpointHeaders,\n fetchFn,\n parseAs,\n ...restOptions\n } = options;\n\n const headers = createHeaders(defaultHeaders, endpointHeaders);\n const path = createPath(url, params.path, encodePathParam);\n const search = createSearch(params.query ?? {}, { arrayFormat: queryArrayFormat });\n const body = createBody(params.body, headers);\n\n const urlInstance = new URL(normalizeBaseUrl(baseUrl) + path);\n urlInstance.search = search;\n\n const request = new Request(urlInstance, {\n ...restDefaultOptions,\n ...restOptions,\n headers,\n method: method.toUpperCase(),\n body,\n });\n\n return {\n request,\n validateStatus: validateStatus ?? defValidateStatus,\n fetchFn: fetchFn ?? defaultFetchFn,\n parseAs,\n };\n};\n","import { ApiError } from '../../errors';\n\nimport type {\n BaseFetchParams,\n CoreFetchFn,\n CreateFetchClientOptions,\n FetchClientOptions,\n HttpMethod,\n} from './types';\nimport { createFetchRequest, parseData } from './utils';\n\nexport type FetchClientError = TypeError | ApiError | SyntaxError | DOMException;\n\nexport const isApiError = (error: unknown): error is ApiError => error instanceof ApiError;\n\nexport const isAbortError = (error: unknown): error is DOMException =>\n error instanceof DOMException && error.name === 'AbortError';\n\nexport const isTimeoutError = (error: unknown): error is DOMException =>\n error instanceof DOMException && error.name === 'TimeoutError';\n\nexport const isFetchClientError = (error: unknown): error is FetchClientError =>\n error instanceof TypeError || error instanceof SyntaxError || isApiError(error);\n\n// `fetchFn` is resolved per request by `createFetchRequest` (endpoint option beats client option),\n// so a single request can swap the transport without rebuilding the client.\nconst coreFetch: CoreFetchFn = async ({ request, validateStatus, fetchFn = fetch, parseAs }) => {\n const response = await fetchFn(request);\n const data = await parseData(response, parseAs);\n\n const apiResponse = {\n request,\n response,\n data,\n };\n\n const boolOrError = validateStatus(apiResponse);\n if (isApiError(boolOrError)) throw boolOrError;\n if (!boolOrError) throw new ApiError(apiResponse);\n\n return apiResponse;\n};\n\nexport const createFetchClient = ({\n middlewares = [],\n baseUrl: _baseUrl,\n ...defaultOptions\n}: CreateFetchClientOptions) => {\n const fetchWithMiddlewares = middlewares.reduceRight(\n (next, middleware) => middleware(next),\n coreFetch,\n );\n const resolveBaseUrl = async () => (typeof _baseUrl === 'function' ? _baseUrl() : _baseUrl);\n\n const createFetchMethod =\n (method: HttpMethod) =>\n async (url: string, params: BaseFetchParams, options: FetchClientOptions = {}) => {\n const baseUrl = await resolveBaseUrl();\n const request = createFetchRequest({\n url,\n method,\n params,\n defaultOptions: { ...defaultOptions, baseUrl: baseUrl },\n options,\n });\n\n const methodMiddlewares = options?.middlewares ?? [];\n\n return methodMiddlewares.reduceRight(\n (next, middleware) => middleware(next),\n fetchWithMiddlewares,\n )(request);\n };\n\n return {\n get: createFetchMethod('get'),\n post: createFetchMethod('post'),\n put: createFetchMethod('put'),\n patch: createFetchMethod('patch'),\n delete: createFetchMethod('delete'),\n };\n};\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- const require_createFetchClient = require("./createFetchClient-lZ_93Yrb.cjs");
2
- //#region src/fetchClient/createGenericFetchClient.ts
1
+ const require_createFetchClient = require("./createFetchClient-DEkUH662.cjs");
2
+ // src/fetchClient/createGenericFetchClient.ts
3
3
  const createGenericFetchClient = (defaultOptions) => require_createFetchClient.createFetchClient(defaultOptions);
4
- //#endregion
5
4
  Object.defineProperty(exports, "createGenericFetchClient", {
6
5
  enumerable: true,
7
6
  get: function() {
@@ -9,4 +8,4 @@ Object.defineProperty(exports, "createGenericFetchClient", {
9
8
  }
10
9
  });
11
10
 
12
- //# sourceMappingURL=createGenericFetchClient-MOx97wi-.cjs.map
11
+ //# sourceMappingURL=createGenericFetchClient-2oU-PXVo.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"createGenericFetchClient-MOx97wi-.cjs","names":["createFetchClient"],"sources":["../src/fetchClient/createGenericFetchClient.ts"],"sourcesContent":["import type {\n ApiResponse,\n BodyParam,\n CreateFetchClientOptions,\n FetchClientOptions,\n PathParam,\n QueryParam,\n} from './createFetchClient';\nimport { createFetchClient } from './createFetchClient';\n\ntype FetchParams<Path = PathParam, Query = QueryParam, Body = BodyParam> = {\n path?: Path;\n query?: Query;\n body?: Body;\n};\n\ntype FetchMethod = <Data, Path = PathParam, Query = QueryParam, Body = BodyParam>(\n url: string,\n params: FetchParams<Path, Query, Body>,\n options?: FetchClientOptions,\n) => Promise<ApiResponse<Data>>;\n\ntype FetchClient = {\n get: FetchMethod;\n post: FetchMethod;\n put: FetchMethod;\n patch: FetchMethod;\n delete: FetchMethod;\n};\n\nexport const createGenericFetchClient = (defaultOptions: CreateFetchClientOptions) =>\n createFetchClient(defaultOptions) as FetchClient;\n"],"mappings":";;AA8BA,MAAa,4BAA4B,mBACvCA,0BAAAA,kBAAkB,cAAc"}
1
+ {"version":3,"file":"createGenericFetchClient-2oU-PXVo.cjs","names":["createFetchClient"],"sources":["../src/fetchClient/createGenericFetchClient.ts"],"sourcesContent":["import type {\n ApiResponse,\n BodyParam,\n CreateFetchClientOptions,\n FetchClientOptions,\n PathParam,\n QueryParam,\n} from './createFetchClient';\nimport { createFetchClient } from './createFetchClient';\n\ntype FetchParams<Path = PathParam, Query = QueryParam, Body = BodyParam> = {\n path?: Path;\n query?: Query;\n body?: Body;\n};\n\ntype FetchMethod = <Data, Path = PathParam, Query = QueryParam, Body = BodyParam>(\n url: string,\n params: FetchParams<Path, Query, Body>,\n options?: FetchClientOptions,\n) => Promise<ApiResponse<Data>>;\n\ntype FetchClient = {\n get: FetchMethod;\n post: FetchMethod;\n put: FetchMethod;\n patch: FetchMethod;\n delete: FetchMethod;\n};\n\nexport const createGenericFetchClient = (defaultOptions: CreateFetchClientOptions) =>\n createFetchClient(defaultOptions) as FetchClient;\n"],"mappings":";;AA8BA,MAAa,4BAA4B,mBACvCA,0BAAAA,kBAAkB,cAAc"}
@@ -0,0 +1,6 @@
1
+ import { t as createFetchClient } from "./createFetchClient-DlGCbltR.js";
2
+ // src/fetchClient/createGenericFetchClient.ts
3
+ const createGenericFetchClient = (defaultOptions) => createFetchClient(defaultOptions);
4
+ export { createGenericFetchClient as t };
5
+
6
+ //# sourceMappingURL=createGenericFetchClient-wGxemBwR.js.map