@keboola/api-client 12.0.0 → 15.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 (191) hide show
  1. package/API-SURFACE.md +28 -1
  2. package/dist/ai/index.cjs +3 -3
  3. package/dist/ai/index.js +2 -2
  4. package/dist/assets/index.cjs +3 -3
  5. package/dist/assets/index.js +2 -2
  6. package/dist/auth/index.cjs +41 -0
  7. package/dist/auth/index.cjs.map +1 -0
  8. package/dist/auth/index.d.cts +198 -0
  9. package/dist/auth/index.d.ts +198 -0
  10. package/dist/auth/index.js +4 -0
  11. package/dist/auth/index.js.map +1 -0
  12. package/dist/auth/types.cjs +4 -0
  13. package/dist/auth/types.cjs.map +1 -0
  14. package/dist/auth/types.d.cts +11 -0
  15. package/dist/auth/types.d.ts +11 -0
  16. package/dist/auth/types.js +3 -0
  17. package/dist/auth/types.js.map +1 -0
  18. package/dist/chat/index.cjs +3 -3
  19. package/dist/chat/index.d.cts +6 -1
  20. package/dist/chat/index.d.ts +6 -1
  21. package/dist/chat/index.js +2 -2
  22. package/dist/chat/types.d.cts +1 -1
  23. package/dist/chat/types.d.ts +1 -1
  24. package/dist/chunk-35HRT5BW.js +213 -0
  25. package/dist/chunk-35HRT5BW.js.map +1 -0
  26. package/dist/{chunk-U3W6XYQQ.cjs → chunk-3KZ2PZXV.cjs} +5 -5
  27. package/dist/{chunk-U3W6XYQQ.cjs.map → chunk-3KZ2PZXV.cjs.map} +1 -1
  28. package/dist/{chunk-SDN6SU7K.cjs → chunk-3L7OOFA6.cjs} +4 -4
  29. package/dist/{chunk-SDN6SU7K.cjs.map → chunk-3L7OOFA6.cjs.map} +1 -1
  30. package/dist/{chunk-LUHYZXJH.js → chunk-3Z2C6TYS.js} +3 -3
  31. package/dist/{chunk-LUHYZXJH.js.map → chunk-3Z2C6TYS.js.map} +1 -1
  32. package/dist/{chunk-FBGUBMJ7.js → chunk-6VILIOTV.js} +5 -3
  33. package/dist/chunk-6VILIOTV.js.map +1 -0
  34. package/dist/{chunk-GUJ5RTYJ.js → chunk-73TMXRTL.js} +3 -3
  35. package/dist/{chunk-GUJ5RTYJ.js.map → chunk-73TMXRTL.js.map} +1 -1
  36. package/dist/{chunk-I7BLN5NZ.js → chunk-7D6MDAD7.js} +3 -3
  37. package/dist/{chunk-I7BLN5NZ.js.map → chunk-7D6MDAD7.js.map} +1 -1
  38. package/dist/{chunk-PHQ66FNI.cjs → chunk-7EKSFTKQ.cjs} +5 -5
  39. package/dist/{chunk-PHQ66FNI.cjs.map → chunk-7EKSFTKQ.cjs.map} +1 -1
  40. package/dist/{chunk-IVIWWOM4.cjs → chunk-AJA4JSUB.cjs} +5 -5
  41. package/dist/{chunk-IVIWWOM4.cjs.map → chunk-AJA4JSUB.cjs.map} +1 -1
  42. package/dist/{chunk-OWGJ3PVA.cjs → chunk-ALHWNI4P.cjs} +5 -3
  43. package/dist/chunk-ALHWNI4P.cjs.map +1 -0
  44. package/dist/{chunk-AHYMMDIC.cjs → chunk-ALQYICBZ.cjs} +9 -9
  45. package/dist/{chunk-AHYMMDIC.cjs.map → chunk-ALQYICBZ.cjs.map} +1 -1
  46. package/dist/{chunk-KZLC2XSZ.cjs → chunk-AQURCB4K.cjs} +5 -5
  47. package/dist/{chunk-KZLC2XSZ.cjs.map → chunk-AQURCB4K.cjs.map} +1 -1
  48. package/dist/{chunk-W2VWZGA3.js → chunk-B2COLV6T.js} +3 -3
  49. package/dist/{chunk-W2VWZGA3.js.map → chunk-B2COLV6T.js.map} +1 -1
  50. package/dist/{chunk-SUA3D6YF.js → chunk-BZ7SEQVM.js} +3 -3
  51. package/dist/{chunk-SUA3D6YF.js.map → chunk-BZ7SEQVM.js.map} +1 -1
  52. package/dist/{chunk-GOWOD3O4.js → chunk-CITS6SLX.js} +3 -3
  53. package/dist/{chunk-GOWOD3O4.js.map → chunk-CITS6SLX.js.map} +1 -1
  54. package/dist/{chunk-IA7WBVH3.js → chunk-CWYVLIOU.js} +3 -3
  55. package/dist/{chunk-IA7WBVH3.js.map → chunk-CWYVLIOU.js.map} +1 -1
  56. package/dist/{chunk-ATVNCGTO.js → chunk-ENDD2X6P.js} +3 -3
  57. package/dist/{chunk-ATVNCGTO.js.map → chunk-ENDD2X6P.js.map} +1 -1
  58. package/dist/{chunk-RHZK7AL7.js → chunk-F2X4KSSM.js} +3 -3
  59. package/dist/{chunk-RHZK7AL7.js.map → chunk-F2X4KSSM.js.map} +1 -1
  60. package/dist/chunk-FHFURAAG.cjs +242 -0
  61. package/dist/chunk-FHFURAAG.cjs.map +1 -0
  62. package/dist/{chunk-IQOXQMON.cjs → chunk-FW35SRXA.cjs} +4 -4
  63. package/dist/{chunk-IQOXQMON.cjs.map → chunk-FW35SRXA.cjs.map} +1 -1
  64. package/dist/{chunk-SBWZKVAG.cjs → chunk-FYIAKMUH.cjs} +5 -5
  65. package/dist/{chunk-SBWZKVAG.cjs.map → chunk-FYIAKMUH.cjs.map} +1 -1
  66. package/dist/{chunk-APILLKET.js → chunk-HTDR76X5.js} +3 -3
  67. package/dist/{chunk-APILLKET.js.map → chunk-HTDR76X5.js.map} +1 -1
  68. package/dist/{chunk-XBCR6YKE.cjs → chunk-JJMROO3W.cjs} +8 -8
  69. package/dist/{chunk-XBCR6YKE.cjs.map → chunk-JJMROO3W.cjs.map} +1 -1
  70. package/dist/{chunk-J5WWYWPL.js → chunk-JOCACBVT.js} +3 -3
  71. package/dist/{chunk-J5WWYWPL.js.map → chunk-JOCACBVT.js.map} +1 -1
  72. package/dist/{chunk-XP5FQTAA.cjs → chunk-LICWQUWY.cjs} +6 -6
  73. package/dist/{chunk-XP5FQTAA.cjs.map → chunk-LICWQUWY.cjs.map} +1 -1
  74. package/dist/{chunk-XZAUQZIO.js → chunk-LO6SBV3D.js} +3 -3
  75. package/dist/{chunk-XZAUQZIO.js.map → chunk-LO6SBV3D.js.map} +1 -1
  76. package/dist/{chunk-LY7IR43M.js → chunk-LOBHLBLZ.js} +3 -3
  77. package/dist/{chunk-LY7IR43M.js.map → chunk-LOBHLBLZ.js.map} +1 -1
  78. package/dist/{chunk-MQZT4HJH.cjs → chunk-QC2EOJPP.cjs} +6 -6
  79. package/dist/{chunk-MQZT4HJH.cjs.map → chunk-QC2EOJPP.cjs.map} +1 -1
  80. package/dist/{chunk-ULZPXG4L.cjs → chunk-QFITJNNL.cjs} +4 -4
  81. package/dist/{chunk-ULZPXG4L.cjs.map → chunk-QFITJNNL.cjs.map} +1 -1
  82. package/dist/{chunk-DRIO222J.cjs → chunk-QIFJ53KD.cjs} +5 -5
  83. package/dist/{chunk-DRIO222J.cjs.map → chunk-QIFJ53KD.cjs.map} +1 -1
  84. package/dist/{chunk-HZSJXB5C.cjs → chunk-QVYMSM2Y.cjs} +5 -5
  85. package/dist/{chunk-HZSJXB5C.cjs.map → chunk-QVYMSM2Y.cjs.map} +1 -1
  86. package/dist/{chunk-CQRPG6ZN.js → chunk-QWPP4YIV.js} +3 -3
  87. package/dist/{chunk-CQRPG6ZN.js.map → chunk-QWPP4YIV.js.map} +1 -1
  88. package/dist/{chunk-MUKQ6HZE.js → chunk-RWR4AALA.js} +8 -4
  89. package/dist/{chunk-MUKQ6HZE.js.map → chunk-RWR4AALA.js.map} +1 -1
  90. package/dist/{chunk-PG4D5KCD.cjs → chunk-SDV5YRCF.cjs} +6 -6
  91. package/dist/{chunk-PG4D5KCD.cjs.map → chunk-SDV5YRCF.cjs.map} +1 -1
  92. package/dist/{chunk-AU2OPVRI.cjs → chunk-SHNWYSGO.cjs} +13 -9
  93. package/dist/{chunk-AU2OPVRI.cjs.map → chunk-SHNWYSGO.cjs.map} +1 -1
  94. package/dist/{chunk-VVDMWSSL.js → chunk-SP54TZCN.js} +3 -3
  95. package/dist/{chunk-VVDMWSSL.js.map → chunk-SP54TZCN.js.map} +1 -1
  96. package/dist/{chunk-BADSOKHM.cjs → chunk-T3QLPHMN.cjs} +5 -5
  97. package/dist/{chunk-BADSOKHM.cjs.map → chunk-T3QLPHMN.cjs.map} +1 -1
  98. package/dist/{chunk-ZIQM4R3L.js → chunk-U2AEUTMF.js} +3 -3
  99. package/dist/{chunk-ZIQM4R3L.js.map → chunk-U2AEUTMF.js.map} +1 -1
  100. package/dist/{chunk-BUY6KV2P.js → chunk-UBDOWCZP.js} +3 -3
  101. package/dist/{chunk-BUY6KV2P.js.map → chunk-UBDOWCZP.js.map} +1 -1
  102. package/dist/{chunk-WDAQJ346.js → chunk-UHFQANTC.js} +3 -3
  103. package/dist/{chunk-WDAQJ346.js.map → chunk-UHFQANTC.js.map} +1 -1
  104. package/dist/{chunk-2ZXOVTCN.cjs → chunk-W6ETXCKM.cjs} +15 -15
  105. package/dist/{chunk-2ZXOVTCN.cjs.map → chunk-W6ETXCKM.cjs.map} +1 -1
  106. package/dist/{chunk-MIAVX53Y.js → chunk-WFXTOK2T.js} +5 -5
  107. package/dist/{chunk-MIAVX53Y.js.map → chunk-WFXTOK2T.js.map} +1 -1
  108. package/dist/{chunk-NXYJKXJ4.js → chunk-WZGB5JR7.js} +3 -3
  109. package/dist/{chunk-NXYJKXJ4.js.map → chunk-WZGB5JR7.js.map} +1 -1
  110. package/dist/{chunk-YTF4RQ52.cjs → chunk-XHISE3ZF.cjs} +5 -5
  111. package/dist/{chunk-YTF4RQ52.cjs.map → chunk-XHISE3ZF.cjs.map} +1 -1
  112. package/dist/{chunk-Q24BTT5D.cjs → chunk-XJFAYKB6.cjs} +4 -4
  113. package/dist/{chunk-Q24BTT5D.cjs.map → chunk-XJFAYKB6.cjs.map} +1 -1
  114. package/dist/{chunk-H466MBV4.cjs → chunk-YEP4RESB.cjs} +5 -5
  115. package/dist/{chunk-H466MBV4.cjs.map → chunk-YEP4RESB.cjs.map} +1 -1
  116. package/dist/{chunk-NRDZL6JO.cjs → chunk-YXLXVXRD.cjs} +8 -8
  117. package/dist/{chunk-NRDZL6JO.cjs.map → chunk-YXLXVXRD.cjs.map} +1 -1
  118. package/dist/{chunk-47CIRFCO.js → chunk-Z5TJL6FJ.js} +3 -3
  119. package/dist/{chunk-47CIRFCO.js.map → chunk-Z5TJL6FJ.js.map} +1 -1
  120. package/dist/dataScience/index.cjs +4 -4
  121. package/dist/dataScience/index.d.cts +3 -2
  122. package/dist/dataScience/index.d.ts +3 -2
  123. package/dist/dataScience/index.js +2 -2
  124. package/dist/dataScience/types.d.cts +1 -1
  125. package/dist/dataScience/types.d.ts +1 -1
  126. package/dist/editor/index.cjs +3 -3
  127. package/dist/editor/index.js +2 -2
  128. package/dist/encryption/index.cjs +3 -3
  129. package/dist/encryption/index.js +2 -2
  130. package/dist/import/index.cjs +3 -3
  131. package/dist/import/index.js +2 -2
  132. package/dist/index.cjs +90 -84
  133. package/dist/index.cjs.map +1 -1
  134. package/dist/index.d.cts +244 -50
  135. package/dist/index.d.ts +244 -50
  136. package/dist/index.js +38 -32
  137. package/dist/index.js.map +1 -1
  138. package/dist/management/index.cjs +6 -6
  139. package/dist/management/index.js +4 -4
  140. package/dist/metastore/index.cjs +3 -3
  141. package/dist/metastore/index.js +2 -2
  142. package/dist/notifications/index.cjs +3 -3
  143. package/dist/notifications/index.js +2 -2
  144. package/dist/oauth/index.cjs +3 -3
  145. package/dist/oauth/index.js +2 -2
  146. package/dist/queryService/index.cjs +3 -3
  147. package/dist/queryService/index.js +2 -2
  148. package/dist/queue/index.cjs +3 -3
  149. package/dist/queue/index.js +2 -2
  150. package/dist/scheduler/index.cjs +3 -3
  151. package/dist/scheduler/index.js +2 -2
  152. package/dist/schemas-DVB6wC7L.d.cts +74 -0
  153. package/dist/schemas-DVB6wC7L.d.ts +74 -0
  154. package/dist/sdk/configurations/index.d.cts +1 -1
  155. package/dist/sdk/configurations/index.d.ts +1 -1
  156. package/dist/sdk/storage/index.d.cts +2 -2
  157. package/dist/sdk/storage/index.d.ts +2 -2
  158. package/dist/status/index.cjs +3 -3
  159. package/dist/status/index.js +2 -2
  160. package/dist/storage/index.cjs +10 -10
  161. package/dist/storage/index.d.cts +1 -1
  162. package/dist/storage/index.d.ts +1 -1
  163. package/dist/storage/index.js +3 -3
  164. package/dist/storage/types.d.cts +2 -2
  165. package/dist/storage/types.d.ts +2 -2
  166. package/dist/{storageClient-Bk4H2HIw.d.ts → storageClient-Bqd4_-xH.d.ts} +24 -24
  167. package/dist/{storageClient-CB4U57Pr.d.cts → storageClient-C0Kh5L01.d.cts} +24 -24
  168. package/dist/{storageSdk-BDrsuMDA.d.ts → storageSdk-BCUgrB3U.d.cts} +20 -20
  169. package/dist/{storageSdk-wn97Zloc.d.cts → storageSdk-C5Ea9eRR.d.ts} +20 -20
  170. package/dist/stream/index.cjs +3 -3
  171. package/dist/stream/index.js +2 -2
  172. package/dist/syncActions/index.cjs +3 -3
  173. package/dist/syncActions/index.js +2 -2
  174. package/dist/telemetry/index.cjs +3 -3
  175. package/dist/telemetry/index.js +2 -2
  176. package/dist/types-59-LNg5i.d.cts +1786 -0
  177. package/dist/{types-JvKRS8Qd.d.ts → types-BbeZapCu.d.ts} +6 -0
  178. package/dist/{types-Bc-H4gfv.d.cts → types-GRfGXouy.d.cts} +6 -0
  179. package/dist/types-oJnjpvPi.d.ts +1786 -0
  180. package/dist/{utils-Cl4emy8g.d.ts → utils-C7eSJKtG.d.ts} +2 -1
  181. package/dist/{utils-JsCYFmHj.d.cts → utils-DDERw8dM.d.cts} +2 -1
  182. package/dist/vault/index.cjs +3 -3
  183. package/dist/vault/index.js +2 -2
  184. package/dist/verify/index.cjs +3 -3
  185. package/dist/verify/index.js +2 -2
  186. package/package.json +30 -4
  187. package/surface/auth.md +56 -0
  188. package/surface/chat.md +1 -1
  189. package/surface/dataScience.md +1 -0
  190. package/dist/chunk-FBGUBMJ7.js.map +0 -1
  191. package/dist/chunk-OWGJ3PVA.cjs.map +0 -1
@@ -2199,6 +2199,7 @@ type GetDataAppLogsDownloadPath = OpenapiPathType<paths['/apps/{appId}/logs/down
2199
2199
  type GetDataAppLogsTailPath = OpenapiPathType<paths['/apps/{appId}/logs/tail']['get']>;
2200
2200
  type GetDataAppLogsTailQuery = OpenapiQueryType<paths['/apps/{appId}/logs/tail']['get']>;
2201
2201
  type GetSandboxPath = OpenapiPathType<paths['/sandboxes/{appId}']['get']>;
2202
+ type DeleteSandboxPath = OpenapiPathType<paths['/sandboxes/{appId}']['delete']>;
2202
2203
  type DataApp = OpenapiReturnType<paths['/apps/{appId}']['get']>;
2203
2204
  type Sandbox = OpenapiReturnType<paths['/sandboxes/{appId}']['get']>;
2204
2205
  type Runtime = OpenapiReturnType<paths['/runtimes']['get']>[number];
@@ -2218,4 +2219,4 @@ type LogEntry = {
2218
2219
  };
2219
2220
  declare const parseLogLines: (raw: unknown) => LogEntry[];
2220
2221
 
2221
- export { type CreateDataAppBody as C, type DeleteDataAppPath as D, type GetDataAppRunsPath as G, type LogEntry as L, type PatchDataAppPath as P, type ResetDataAppPasswordPath as R, type Sandbox as S, type GetDataAppRunsQuery as a, type GetDataAppRunPath as b, type GetDataAppLogsDownloadPath as c, type GetDataAppLogsTailPath as d, type GetDataAppLogsTailQuery as e, type GetAppsQuery as f, type GetDataAppPath as g, type PatchDataAppBody as h, type GetDataAppPasswordPath as i, type GetSandboxPath as j, type DataApp as k, type DataAppRun as l, type RawAppRun as m, type Runtime as n, type RuntimeImageKey as o, parseLogLines as p };
2222
+ export { type CreateDataAppBody as C, type DeleteDataAppPath as D, type GetDataAppRunsPath as G, type LogEntry as L, type PatchDataAppPath as P, type ResetDataAppPasswordPath as R, type Sandbox as S, type GetDataAppRunsQuery as a, type GetDataAppRunPath as b, type GetDataAppLogsDownloadPath as c, type GetDataAppLogsTailPath as d, type GetDataAppLogsTailQuery as e, type GetAppsQuery as f, type GetDataAppPath as g, type PatchDataAppBody as h, type GetDataAppPasswordPath as i, type GetSandboxPath as j, type DeleteSandboxPath as k, type DataApp as l, type DataAppRun as m, type RawAppRun as n, type Runtime as o, parseLogLines as p, type RuntimeImageKey as q };
@@ -2199,6 +2199,7 @@ type GetDataAppLogsDownloadPath = OpenapiPathType<paths['/apps/{appId}/logs/down
2199
2199
  type GetDataAppLogsTailPath = OpenapiPathType<paths['/apps/{appId}/logs/tail']['get']>;
2200
2200
  type GetDataAppLogsTailQuery = OpenapiQueryType<paths['/apps/{appId}/logs/tail']['get']>;
2201
2201
  type GetSandboxPath = OpenapiPathType<paths['/sandboxes/{appId}']['get']>;
2202
+ type DeleteSandboxPath = OpenapiPathType<paths['/sandboxes/{appId}']['delete']>;
2202
2203
  type DataApp = OpenapiReturnType<paths['/apps/{appId}']['get']>;
2203
2204
  type Sandbox = OpenapiReturnType<paths['/sandboxes/{appId}']['get']>;
2204
2205
  type Runtime = OpenapiReturnType<paths['/runtimes']['get']>[number];
@@ -2218,4 +2219,4 @@ type LogEntry = {
2218
2219
  };
2219
2220
  declare const parseLogLines: (raw: unknown) => LogEntry[];
2220
2221
 
2221
- export { type CreateDataAppBody as C, type DeleteDataAppPath as D, type GetDataAppRunsPath as G, type LogEntry as L, type PatchDataAppPath as P, type ResetDataAppPasswordPath as R, type Sandbox as S, type GetDataAppRunsQuery as a, type GetDataAppRunPath as b, type GetDataAppLogsDownloadPath as c, type GetDataAppLogsTailPath as d, type GetDataAppLogsTailQuery as e, type GetAppsQuery as f, type GetDataAppPath as g, type PatchDataAppBody as h, type GetDataAppPasswordPath as i, type GetSandboxPath as j, type DataApp as k, type DataAppRun as l, type RawAppRun as m, type Runtime as n, type RuntimeImageKey as o, parseLogLines as p };
2222
+ export { type CreateDataAppBody as C, type DeleteDataAppPath as D, type GetDataAppRunsPath as G, type LogEntry as L, type PatchDataAppPath as P, type ResetDataAppPasswordPath as R, type Sandbox as S, type GetDataAppRunsQuery as a, type GetDataAppRunPath as b, type GetDataAppLogsDownloadPath as c, type GetDataAppLogsTailPath as d, type GetDataAppLogsTailQuery as e, type GetAppsQuery as f, type GetDataAppPath as g, type PatchDataAppBody as h, type GetDataAppPasswordPath as i, type GetSandboxPath as j, type DeleteSandboxPath as k, type DataApp as l, type DataAppRun as m, type RawAppRun as n, type Runtime as o, parseLogLines as p, type RuntimeImageKey as q };
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var chunkMQZT4HJH_cjs = require('../chunk-MQZT4HJH.cjs');
3
+ var chunkQC2EOJPP_cjs = require('../chunk-QC2EOJPP.cjs');
4
4
  require('../chunk-RRC5RKF7.cjs');
5
- require('../chunk-OWGJ3PVA.cjs');
5
+ require('../chunk-ALHWNI4P.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "createVaultClient", {
10
10
  enumerable: true,
11
- get: function () { return chunkMQZT4HJH_cjs.createVaultClient; }
11
+ get: function () { return chunkQC2EOJPP_cjs.createVaultClient; }
12
12
  });
13
13
  //# sourceMappingURL=index.cjs.map
14
14
  //# sourceMappingURL=index.cjs.map
@@ -1,5 +1,5 @@
1
- export { createVaultClient } from '../chunk-J5WWYWPL.js';
1
+ export { createVaultClient } from '../chunk-JOCACBVT.js';
2
2
  import '../chunk-G3N5KDEY.js';
3
- import '../chunk-FBGUBMJ7.js';
3
+ import '../chunk-6VILIOTV.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkAHYMMDIC_cjs = require('../chunk-AHYMMDIC.cjs');
4
- require('../chunk-OWGJ3PVA.cjs');
3
+ var chunkALQYICBZ_cjs = require('../chunk-ALQYICBZ.cjs');
4
+ require('../chunk-ALHWNI4P.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "createVerifyClient", {
9
9
  enumerable: true,
10
- get: function () { return chunkAHYMMDIC_cjs.createVerifyClient; }
10
+ get: function () { return chunkALQYICBZ_cjs.createVerifyClient; }
11
11
  });
12
12
  //# sourceMappingURL=index.cjs.map
13
13
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- export { createVerifyClient } from '../chunk-LUHYZXJH.js';
2
- import '../chunk-FBGUBMJ7.js';
1
+ export { createVerifyClient } from '../chunk-3Z2C6TYS.js';
2
+ import '../chunk-6VILIOTV.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keboola/api-client",
3
- "version": "12.0.0",
3
+ "version": "15.0.0",
4
4
  "description": "TypeScript SDK for Keboola APIs",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -27,6 +27,12 @@
27
27
  "assets/types": [
28
28
  "./dist/assets/types.d.ts"
29
29
  ],
30
+ "auth": [
31
+ "./dist/auth/index.d.ts"
32
+ ],
33
+ "auth/types": [
34
+ "./dist/auth/types.d.ts"
35
+ ],
30
36
  "chat": [
31
37
  "./dist/chat/index.d.ts"
32
38
  ],
@@ -242,6 +248,26 @@
242
248
  "default": "./dist/assets/types.cjs"
243
249
  }
244
250
  },
251
+ "./auth": {
252
+ "import": {
253
+ "types": "./dist/auth/index.d.ts",
254
+ "default": "./dist/auth/index.js"
255
+ },
256
+ "require": {
257
+ "types": "./dist/auth/index.d.cts",
258
+ "default": "./dist/auth/index.cjs"
259
+ }
260
+ },
261
+ "./auth/types": {
262
+ "import": {
263
+ "types": "./dist/auth/types.d.ts",
264
+ "default": "./dist/auth/types.js"
265
+ },
266
+ "require": {
267
+ "types": "./dist/auth/types.d.cts",
268
+ "default": "./dist/auth/types.cjs"
269
+ }
270
+ },
245
271
  "./chat": {
246
272
  "import": {
247
273
  "types": "./dist/chat/index.d.ts",
@@ -715,14 +741,14 @@
715
741
  "esbuild": "^0.28.1",
716
742
  "msw": "^2.14.6",
717
743
  "openapi-typescript": "7.10.1",
718
- "oxfmt": "^0.44.0",
719
- "oxlint": "^1.56.0",
744
+ "oxfmt": "^0.57.0",
745
+ "oxlint": "^1.72.0",
720
746
  "tsup": "^8.5.1",
721
747
  "typescript": "^6.0.3",
722
748
  "vite": "^8.0.16",
723
749
  "vitest": "^4.1.8",
724
750
  "yaml": "^2.8.3",
725
- "@keboola/oxlint-config": "^2.0.0",
751
+ "@keboola/oxlint-config": "^4.0.0",
726
752
  "@keboola/tsconfig": "^0.1.2"
727
753
  },
728
754
  "scripts": {
@@ -0,0 +1,56 @@
1
+ # `api.auth` — `@keboola/api-client` surface
2
+
3
+ <!-- GENERATED FILE — do not edit by hand. Run `pnpm --filter @keboola/api-client surface` to regenerate. -->
4
+
5
+ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
6
+
7
+
8
+ ### `api.auth.device`
9
+
10
+ - `api.auth.device.approve(body: { userCode: string; decision: "approve" | "deny"; }, signal?: AbortSignal | undefined): Promise<{ status: "approved" | "denied"; idempotent: boolean; decision: "approve" | "deny"; }>`
11
+ - `api.auth.device.create(body: { clientId: string; scope: { credentialType?: "session" | undefined; }; requestedCredentialType: string; }, signal?: AbortSignal | undefined): Promise<{ deviceCode: string; userCode: string; verificationUri: string; verificationUriComplete: string; expiresIn: number; interval: number; }>`
12
+ - `api.auth.device.getToken(body: { clientId: string; deviceCode: string; }, signal?: AbortSignal | undefined): Promise<{ accessToken: string; refreshToken: string; tokenType: string; expiresIn: number; sessionId: string; user: { id: number; email: string; name: string; }; }>`
13
+
14
+ ### `api.auth.login`
15
+
16
+ - `api.auth.login.withOidc(input: { grantType: "google" | "microsoft"; idToken: string; }, signal?: AbortSignal | undefined): Promise<{ mfaRequired: false; accessToken: string; refreshToken: string; tokenType: string; expiresIn: number; sessionId: string; user: { id: number; email: string; name: string; }; } | { mfaRequired: true; mfaType: string; mfaToken: string; expiresIn: number; allowedMethods: string[]; webauthn: Record<string, unknown> | null; }>`
17
+ - `api.auth.login.withPassword(input: { email: string; password: string; }, signal?: AbortSignal | undefined): Promise<{ mfaRequired: false; accessToken: string; refreshToken: string; tokenType: string; expiresIn: number; sessionId: string; user: { id: number; email: string; name: string; }; } | { mfaRequired: true; mfaType: string; mfaToken: string; expiresIn: number; allowedMethods: string[]; webauthn: Record<string, unknown> | null; }>`
18
+
19
+ ### `api.auth.mfa`
20
+
21
+ - `api.auth.mfa.regenerateRecoveryCodes(signal?: AbortSignal | undefined): Promise<{ codes: string[]; }>`
22
+ - `api.auth.mfa.verifyWithCode(input: { mfaToken: string; type: "totp" | "recovery_code"; code: string; }, signal?: AbortSignal | undefined): Promise<{ accessToken: string; refreshToken: string; tokenType: string; expiresIn: number; sessionId: string; user: { id: number; email: string; name: string; }; }>`
23
+ - `api.auth.mfa.verifyWithWebauthn(input: { mfaToken: string; assertion: string; }, signal?: AbortSignal | undefined): Promise<{ accessToken: string; refreshToken: string; tokenType: string; expiresIn: number; sessionId: string; user: { id: number; email: string; name: string; }; }>`
24
+
25
+ ### `api.auth.pat`
26
+
27
+ - `api.auth.pat.create(body: { name: string; expiresIn: number | null; scope: { projects: string[] | null; readOnly: boolean | null; } | null; }, signal?: AbortSignal | undefined): Promise<{ accessToken: string; tokenType: string; expiresIn: number; pat: { id: string; name: string; scope: Record<string, never>; projects: { id: number; name: string | null; role: string | null; }[]; readOnly: boolean; parentTokenId?: string | null | undefined; parentTokenType?: "session" | "pat" | null | undefined; expiresAt: string; lastUsedAt?: string | null | undefined; createdAt: string; }; }>`
28
+ - `api.auth.pat.exchange(body?: { expiresIn: number | null; scope: { projects: string[] | null; readOnly: boolean | null; } | null; } | undefined, signal?: AbortSignal | undefined): Promise<{ accessToken: string; tokenType: string; expiresIn: number; scope: Record<string, never>; readOnly: boolean; parentTokenId: string; parentTokenType: "session" | "pat"; expiresAt: string; pat: { id: string; name: string; scope: Record<string, never>; projects: { id: number; name: string | null; role: string | null; }[]; readOnly: boolean; parentTokenId?: string | null | undefined; parentTokenType?: "session" | "pat" | null | undefined; expiresAt: string; lastUsedAt?: string | null | undefined; createdAt: string; }; }>`
29
+ - `api.auth.pat.getAll(signal?: AbortSignal | undefined): Promise<{ items: { id: string; name: string; scope: Record<string, never>; projects: { id: number; name: string | null; role: string | null; }[]; readOnly: boolean; parentTokenId?: string | null | undefined; parentTokenType?: "session" | "pat" | null | undefined; expiresAt: string; lastUsedAt?: string | null | undefined; createdAt: string; }[]; }>`
30
+ - `api.auth.pat.revoke(id: string, signal?: AbortSignal | undefined): Promise<void>`
31
+
32
+ ### `api.auth.pkce`
33
+
34
+ - `api.auth.pkce.getToken(body: { clientId: string; code: string; redirectUri: string; state: string; codeVerifier: string; }, signal?: AbortSignal | undefined): Promise<{ accessToken: string; refreshToken: string; tokenType: string; expiresIn: number; sessionId: string; user: { id: number; email: string; name: string; }; }>`
35
+
36
+ ### `api.auth.saml`
37
+
38
+ - `api.auth.saml.assert(body: { samlResponse: string; requestHandle: string; customerSlug: string | null; }, signal?: AbortSignal | undefined): Promise<{ accessToken: string; refreshToken: string; tokenType: string; expiresIn: number; sessionId: string; user: { id: number; email: string; name: string; }; } | { mfaRequired: boolean; mfaType: string; mfaToken: string; expiresIn: number; allowedMethods: string[]; webauthn: Record<string, never> | null; }>`
39
+ - `api.auth.saml.initiate(body?: { customerSlug: string | null; } | undefined, signal?: AbortSignal | undefined): Promise<{ ssoUrl: string; requestHandle: string; expiresIn: number; }>`
40
+
41
+ ### `api.auth.session`
42
+
43
+ - `api.auth.session.getAll(signal?: AbortSignal | undefined): Promise<{ sessions?: { id: string; grantType: string; createdAt: string; lastUsedAt?: string | null | undefined; lastUsedIp?: string | null | undefined; userAgent?: string | null | undefined; accessTokenExpiresAt: string; refreshTokenExpiresAt: string; isCurrent: boolean; }[] | undefined; }>`
44
+ - `api.auth.session.revoke(sessionId: string, signal?: AbortSignal | undefined): Promise<void>`
45
+ - `api.auth.session.revokeAll(signal?: AbortSignal | undefined): Promise<void>`
46
+
47
+ ### `api.auth.sudo`
48
+
49
+ - `api.auth.sudo.challenge(signal?: AbortSignal | undefined): Promise<{ challengeToken: string; options: Record<string, never>; expiresIn: number; }>`
50
+ - `api.auth.sudo.verify(body: { totpCode: string | null; recoveryCode: string | null; webauthnAssertion: string | null; challengeToken: string | null; type: string; }, signal?: AbortSignal | undefined): Promise<{ sudoVerified: boolean; sudoExpiresAt: string; sudoTimeoutSeconds: number; }>`
51
+
52
+ ### `api.auth.token`
53
+
54
+ - `api.auth.token.introspect(token?: string | undefined, signal?: AbortSignal | undefined): Promise<{ sessionId: string; user: { id: number; email: string; name: string; }; grantType: string; sudoVerified: boolean; createdAt: string; expiresAt: string; lastUsedAt?: string | null | undefined; lastUsedIp?: string | null | undefined; userAgent?: string | null | undefined; projects: { id: number; name: string | null; role: string | null; }[]; }>`
55
+ - `api.auth.token.refresh(refreshToken: string, signal?: AbortSignal | undefined): Promise<{ accessToken: string; refreshToken: string; tokenType: string; expiresIn: number; sessionId: string; user: { id: number; email: string; name: string; }; }>`
56
+ - `api.auth.token.revoke(body: { token: string; tokenTypeHint: "accessToken" | "refreshToken" | null; }, signal?: AbortSignal | undefined): Promise<void>`
package/surface/chat.md CHANGED
@@ -7,7 +7,7 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
7
7
  - `api.chat.createChat(request: { id: string; message: { id: string; role: "user" | "assistant"; parts: ({ type: "text"; text: string; state?: "done" | undefined; } | { type: "tool-result"; toolCallId: string; toolName: string; result: string; } | { type: "step-start"; } | { type: string; toolCallId: string; state: "output-available" | "output-error" | "output-denied" | "input-available" | "input-streaming" | "approval-requested" | "approval-responded"; input?: { [key: string]: unknown; } | undefined; output?: unknown; errorText?: string | undefined; approval?: { id?: string | undefined; approved?: boolean | undefined; reason?: string | undefined; } | undefined; })[]; metadata?: { createdAt?: string | undefined; hidden?: boolean | undefined; requestContext?: { path?: string | undefined; sqlEditorActive?: boolean | undefined; } | undefined; compactedTo?: string | undefined; compactedFrom?: string | undefined; } | undefined; status?: "failed" | "completed" | "pending" | "interrupted" | undefined; }; selectedChatModel: "chat-model" | "chat-model-reasoning"; selectedVisibilityType: "public" | "private"; branchId?: number | undefined; telemetryMetadata?: { [key: string]: string | number | boolean; } | undefined; }): Promise<Response>`
8
8
  - `api.chat.deleteChat(chatId: string): Promise<{ id: string; title: string; userId: string; createdAt: string; lastMessageAt: string; visibility: "public" | "private"; branchId?: number | null | undefined; }>`
9
9
  - `api.chat.getAgentSettings(signal?: AbortSignal | undefined): Promise<{ projectId: string; customInstructions: string | null; createdAt: string; updatedAt: string; }>`
10
- - `api.chat.getChat(chatId: string, signal?: AbortSignal | undefined): Promise<{ id: string; title: string; userId: string; createdAt: string; lastMessageAt: string; visibility: "public" | "private"; branchId?: number | null | undefined; messages: { id: string; role: "user" | "assistant"; parts: ({ type: "text"; text: string; state?: "done" | undefined; } | { type: "tool-result"; toolCallId: string; toolName: string; result: string; } | { type: "step-start"; } | { type: string; toolCallId: string; state: "output-available" | "output-error" | "output-denied" | "input-available" | "input-streaming" | "approval-requested" | "approval-responded"; input?: { [key: string]: unknown; } | undefined; output?: unknown; errorText?: string | undefined; approval?: { id?: string | undefined; approved?: boolean | undefined; reason?: string | undefined; } | undefined; })[]; metadata?: { createdAt?: string | undefined; hidden?: boolean | undefined; requestContext?: { path?: string | undefined; sqlEditorActive?: boolean | undefined; } | undefined; compactedTo?: string | undefined; compactedFrom?: string | undefined; } | undefined; status?: "failed" | "completed" | "pending" | "interrupted" | undefined; }[]; }>`
10
+ - `api.chat.getChat(chatId: string, signal?: AbortSignal | undefined): Promise<{ id: string; title: string; userId: string; createdAt: string; lastMessageAt: string; visibility: "public" | "private"; branchId?: number | null | undefined; contextWindow?: { usedTokens: number; maxTokens: number; percentage: number; } | null | undefined; messages: { id: string; role: "user" | "assistant"; parts: ({ type: "text"; text: string; state?: "done" | undefined; } | { type: "tool-result"; toolCallId: string; toolName: string; result: string; } | { type: "step-start"; } | { type: string; toolCallId: string; state: "output-available" | "output-error" | "output-denied" | "input-available" | "input-streaming" | "approval-requested" | "approval-responded"; input?: { [key: string]: unknown; } | undefined; output?: unknown; errorText?: string | undefined; approval?: { id?: string | undefined; approved?: boolean | undefined; reason?: string | undefined; } | undefined; })[]; metadata?: { createdAt?: string | undefined; hidden?: boolean | undefined; requestContext?: { path?: string | undefined; sqlEditorActive?: boolean | undefined; } | undefined; compactedTo?: string | undefined; compactedFrom?: string | undefined; } | undefined; status?: "failed" | "completed" | "pending" | "interrupted" | undefined; }[]; }>`
11
11
  - `api.chat.getHistory(params?: { limit?: number | undefined; starting_after?: string | undefined; ending_before?: string | undefined; } | undefined): Promise<{ chats: { id: string; title: string; userId: string; createdAt: string; lastMessageAt: string; visibility: "public" | "private"; branchId?: number | null | undefined; }[]; hasMore: boolean; }>`
12
12
  - `api.chat.getSuggestions(request: { context: "dashboard"; data: { recentFailedJobs: { id: string; status: "error" | "warning"; component: string; configId: string; createdTime: string; configName?: string | undefined; durationSeconds?: number | undefined; errorMessage?: string | undefined; }[]; deprecatedComponents: { id: string; name: string; type: string; expiredOn: string; configCount: number; }[]; userRecentEdits: { component: string; configId: string; configName: string; lastEdited: string; }[]; currentUserEmail: string; }; } | { context: "job-detail"; data: { job: { id: string; status: "error" | "warning" | "success" | "created" | "waiting" | "processing" | "terminating" | "terminated" | "cancelled"; component: string; createdTime: string; configId?: string | undefined; configName?: string | undefined; startTime?: string | undefined; endTime?: string | undefined; durationSeconds?: number | undefined; errorMessage?: string | undefined; errorType?: "user" | "application" | undefined; backendSize?: string | undefined; }; currentUserEmail: string; component?: { id: string; name: string; type: string; } | undefined; runtimeHistory?: { recentJobsCount: number; averageDurationSeconds?: number | undefined; minDurationSeconds?: number | undefined; maxDurationSeconds?: number | undefined; isSlowerThanAverage?: boolean | undefined; isFasterThanAverage?: boolean | undefined; percentageDifference?: number | undefined; } | undefined; }; } | { context: "configuration-detail"; data: { configuration: { id: string; name: string; component: string; hasRows: boolean; description?: string | undefined; rowCount?: number | undefined; lastChangeDescription?: string | undefined; }; currentUserEmail: string; component?: { id: string; name: string; type: string; } | undefined; latestJobs?: { id: string; status: "error" | "warning" | "success" | "created" | "waiting" | "processing" | "terminating" | "terminated" | "cancelled"; createdTime: string; durationSeconds?: number | undefined; errorMessage?: string | undefined; }[] | undefined; }; }, signal?: AbortSignal | undefined): Promise<{ suggestions: { label: string; prompt: string; priority: number; category: "documentation" | "error" | "maintenance"; reasoning: string; id: string; }[]; suggestionSessionId: string; }>`
13
13
  - `api.chat.getToolsList(signal?: AbortSignal | undefined): Promise<{ tools: { name: string; description: string; readOnly: boolean; }[]; }>`
@@ -6,6 +6,7 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
6
6
 
7
7
  - `api.dataScience.createApp(body: { type: string; branchId: string | null; name: string; description?: string | null | undefined; config?: { [key: string]: unknown; } | null | undefined; useManagedGitRepo?: boolean | undefined; mode?: "dev" | "prod" | undefined; }, signal?: AbortSignal | undefined): Promise<{ id: string; type?: string | null | undefined; projectId: string; componentId: string; branchId: string | null; configId: string; configVersion: string; state: "created" | "starting" | "running" | "restarting" | "stopping" | "stopped" | "deleting" | "deleted"; desiredState: "running" | "stopped" | "deleted"; mode: "dev" | "prod"; lastRequestTimestamp: string | null; lastStartTimestamp?: string | null | undefined; url?: string | null | undefined; autoSuspendAfterSeconds?: number | undefined; autoRestartEnabled?: boolean | undefined; size?: string | null | undefined; provisioningStrategy: "jobQueue" | "operator"; hasManagedGitRepo?: boolean | undefined; }>`
8
8
  - `api.dataScience.deleteApp(appId: string, signal?: AbortSignal | undefined): Promise<ApiResponse<never>>`
9
+ - `api.dataScience.deleteSandbox(appId: string, signal?: AbortSignal | undefined): Promise<ApiResponse<never>>`
9
10
  - `api.dataScience.getApp(appId: string, signal?: AbortSignal | undefined): Promise<{ id: string; type?: string | null | undefined; projectId: string; componentId: string; branchId: string | null; configId: string; configVersion: string; state: "created" | "starting" | "running" | "restarting" | "stopping" | "stopped" | "deleting" | "deleted"; desiredState: "running" | "stopped" | "deleted"; mode: "dev" | "prod"; lastRequestTimestamp: string | null; lastStartTimestamp?: string | null | undefined; url?: string | null | undefined; autoSuspendAfterSeconds?: number | undefined; autoRestartEnabled?: boolean | undefined; size?: string | null | undefined; provisioningStrategy: "jobQueue" | "operator"; hasManagedGitRepo?: boolean | undefined; }>`
10
11
  - `api.dataScience.getAppLogsDownload(id: string, signal?: AbortSignal | undefined): Promise<{ logs: string; fileName: string; }>`
11
12
  - `api.dataScience.getAppLogsTail(id: string, { query, signal }?: { query?: { since?: string | undefined; lines?: number | undefined; } | undefined; signal?: AbortSignal | undefined; }): Promise<{ entries: LogEntry[]; nextLogTimestamp: string | null; }>`
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/errors/ApiError.ts","../src/internal.ts","../src/fetchClient/createFetchClient/utils.ts","../src/fetchClient/createFetchClient/createFetchClient.ts","../src/fetchClient/createGenericFetchClient.ts","../src/fetchClient/createOpenapiFetchClient.ts"],"names":[],"mappings":"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","file":"chunk-FBGUBMJ7.js","sourcesContent":["import type { ApiResponse } from '../fetchClient/createFetchClient/types';\n\nexport class ApiError extends Error {\n response: Response;\n request: Request;\n data: unknown;\n\n constructor({ response, request, data }: ApiResponse) {\n super(response.statusText);\n this.response = response;\n this.request = request;\n this.data = data;\n }\n}\n","// 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} as const;\n\nexport const HttpStatus = {\n NO_CONTENT: 204,\n BAD_REQUEST: 400,\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 { IStringifyOptions } from 'qs';\nimport qs from 'qs';\n\nimport { HttpStatus } from '../../internal';\n\nimport type { BodyParam, CreateFetchRequestFn, PathParam, ValidateStatusFn } 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};\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\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\nexport const parseData = async (response: Response) => {\n if (response.status === HttpStatus.NO_CONTENT) return null;\n\n // headers indicates that the content is JSON, so parse it.\n const contentType = response.headers.get(HttpHeader.CONTENT_TYPE);\n if (contentType && contentType == HttpContentType.JSON) {\n return response.json();\n }\n\n // try JSON parsing on the text\n // If it fails, return the string. The headers does not have a content type.\n const text = await response.text();\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\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 = (path: string, pathParam: PathParam = {}) =>\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 encodeURIComponent(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 ...restDefaultOptions\n } = defaultOptions;\n const { validateStatus, queryArrayFormat, headers: endpointHeaders, ...restOptions } = options;\n\n const headers = createHeaders(defaultHeaders, endpointHeaders);\n const path = createPath(url, params.path);\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 { request, validateStatus: validateStatus ?? defValidateStatus };\n};\n","import { ApiError } from '../../errors';\n\nimport type {\n BaseFetchParams,\n CoreFetchFn,\n CreateFetchClientOptions,\n FetchClientOptions,\n FetchFn,\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 isFetchClientError = (error: unknown): error is FetchClientError =>\n error instanceof TypeError || error instanceof SyntaxError || isApiError(error);\n\nconst createCoreFetch =\n (fetchFn: FetchFn): CoreFetchFn =>\n async ({ request, validateStatus }) => {\n const response = await fetchFn(request);\n const data = await parseData(response);\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 ...defaultOptions\n}: CreateFetchClientOptions) => {\n const coreFetch = createCoreFetch(defaultOptions.fetchFn ?? fetch);\n const fetchWithMiddlewares = middlewares.reduceRight(\n (next, middleware) => middleware(next),\n coreFetch,\n );\n\n const createFetchMethod =\n (method: HttpMethod) =>\n async (url: string, params: BaseFetchParams, options: FetchClientOptions = {}) => {\n const request = createFetchRequest({\n url,\n method,\n params,\n defaultOptions,\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","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","import {\n type ApiResponse,\n createFetchClient,\n type CreateFetchClientOptions,\n type FetchClientOptions,\n type HttpMethod,\n} from './createFetchClient';\nimport type { OpenapiParametersType, OpenapiReturnType } from './types';\n\ntype OpenapiPaths<Paths> = {\n [P in keyof Paths]: {\n [M in HttpMethod]?: unknown;\n };\n};\n\ntype PathsWithMethod<Paths extends OpenapiPaths<Paths>, PathnameMethod extends HttpMethod> = {\n [Pathname in keyof Paths]: Paths[Pathname] extends {\n [K in PathnameMethod]: any;\n }\n ? Pathname\n : never;\n}[keyof Paths];\n\ntype FetchMethod<Paths extends OpenapiPaths<Paths>, Method extends HttpMethod> = <\n Path extends PathsWithMethod<Paths, Method>,\n>(\n url: Path,\n params: OpenapiParametersType<Paths[Path][Method]>,\n options?: FetchClientOptions,\n) => Promise<ApiResponse<OpenapiReturnType<Paths[Path][Method]>>>;\n\ntype FetchClient<Paths extends OpenapiPaths<Paths>> = {\n get: FetchMethod<Paths, 'get'>;\n post: FetchMethod<Paths, 'post'>;\n put: FetchMethod<Paths, 'put'>;\n patch: FetchMethod<Paths, 'patch'>;\n delete: FetchMethod<Paths, 'delete'>;\n};\n\nexport const createOpenapiFetchClient = <Paths extends OpenapiPaths<Paths>>(\n defaultOptions: CreateFetchClientOptions,\n) => createFetchClient(defaultOptions) as FetchClient<Paths>;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/errors/ApiError.ts","../src/internal.ts","../src/fetchClient/createFetchClient/utils.ts","../src/fetchClient/createFetchClient/createFetchClient.ts","../src/fetchClient/createGenericFetchClient.ts","../src/fetchClient/createOpenapiFetchClient.ts"],"names":["qs"],"mappings":"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","file":"chunk-OWGJ3PVA.cjs","sourcesContent":["import type { ApiResponse } from '../fetchClient/createFetchClient/types';\n\nexport class ApiError extends Error {\n response: Response;\n request: Request;\n data: unknown;\n\n constructor({ response, request, data }: ApiResponse) {\n super(response.statusText);\n this.response = response;\n this.request = request;\n this.data = data;\n }\n}\n","// 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} as const;\n\nexport const HttpStatus = {\n NO_CONTENT: 204,\n BAD_REQUEST: 400,\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 { IStringifyOptions } from 'qs';\nimport qs from 'qs';\n\nimport { HttpStatus } from '../../internal';\n\nimport type { BodyParam, CreateFetchRequestFn, PathParam, ValidateStatusFn } 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};\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\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\nexport const parseData = async (response: Response) => {\n if (response.status === HttpStatus.NO_CONTENT) return null;\n\n // headers indicates that the content is JSON, so parse it.\n const contentType = response.headers.get(HttpHeader.CONTENT_TYPE);\n if (contentType && contentType == HttpContentType.JSON) {\n return response.json();\n }\n\n // try JSON parsing on the text\n // If it fails, return the string. The headers does not have a content type.\n const text = await response.text();\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\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 = (path: string, pathParam: PathParam = {}) =>\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 encodeURIComponent(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 ...restDefaultOptions\n } = defaultOptions;\n const { validateStatus, queryArrayFormat, headers: endpointHeaders, ...restOptions } = options;\n\n const headers = createHeaders(defaultHeaders, endpointHeaders);\n const path = createPath(url, params.path);\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 { request, validateStatus: validateStatus ?? defValidateStatus };\n};\n","import { ApiError } from '../../errors';\n\nimport type {\n BaseFetchParams,\n CoreFetchFn,\n CreateFetchClientOptions,\n FetchClientOptions,\n FetchFn,\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 isFetchClientError = (error: unknown): error is FetchClientError =>\n error instanceof TypeError || error instanceof SyntaxError || isApiError(error);\n\nconst createCoreFetch =\n (fetchFn: FetchFn): CoreFetchFn =>\n async ({ request, validateStatus }) => {\n const response = await fetchFn(request);\n const data = await parseData(response);\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 ...defaultOptions\n}: CreateFetchClientOptions) => {\n const coreFetch = createCoreFetch(defaultOptions.fetchFn ?? fetch);\n const fetchWithMiddlewares = middlewares.reduceRight(\n (next, middleware) => middleware(next),\n coreFetch,\n );\n\n const createFetchMethod =\n (method: HttpMethod) =>\n async (url: string, params: BaseFetchParams, options: FetchClientOptions = {}) => {\n const request = createFetchRequest({\n url,\n method,\n params,\n defaultOptions,\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","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","import {\n type ApiResponse,\n createFetchClient,\n type CreateFetchClientOptions,\n type FetchClientOptions,\n type HttpMethod,\n} from './createFetchClient';\nimport type { OpenapiParametersType, OpenapiReturnType } from './types';\n\ntype OpenapiPaths<Paths> = {\n [P in keyof Paths]: {\n [M in HttpMethod]?: unknown;\n };\n};\n\ntype PathsWithMethod<Paths extends OpenapiPaths<Paths>, PathnameMethod extends HttpMethod> = {\n [Pathname in keyof Paths]: Paths[Pathname] extends {\n [K in PathnameMethod]: any;\n }\n ? Pathname\n : never;\n}[keyof Paths];\n\ntype FetchMethod<Paths extends OpenapiPaths<Paths>, Method extends HttpMethod> = <\n Path extends PathsWithMethod<Paths, Method>,\n>(\n url: Path,\n params: OpenapiParametersType<Paths[Path][Method]>,\n options?: FetchClientOptions,\n) => Promise<ApiResponse<OpenapiReturnType<Paths[Path][Method]>>>;\n\ntype FetchClient<Paths extends OpenapiPaths<Paths>> = {\n get: FetchMethod<Paths, 'get'>;\n post: FetchMethod<Paths, 'post'>;\n put: FetchMethod<Paths, 'put'>;\n patch: FetchMethod<Paths, 'patch'>;\n delete: FetchMethod<Paths, 'delete'>;\n};\n\nexport const createOpenapiFetchClient = <Paths extends OpenapiPaths<Paths>>(\n defaultOptions: CreateFetchClientOptions,\n) => createFetchClient(defaultOptions) as FetchClient<Paths>;\n"]}