@keboola/api-client 3.0.1 → 5.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.
- package/README.md +34 -6
- package/dist/ai/index.cjs +4 -3
- package/dist/ai/index.d.cts +5 -10
- package/dist/ai/index.d.ts +5 -10
- package/dist/ai/index.js +3 -2
- package/dist/ai/types.d.cts +2 -2
- package/dist/ai/types.d.ts +2 -2
- package/dist/assets/index.cjs +4 -3
- package/dist/assets/index.d.cts +2 -2
- package/dist/assets/index.d.ts +2 -2
- package/dist/assets/index.js +3 -2
- package/dist/{authMiddleware-Dcy9gRT9.d.ts → authMiddleware-B0p06GYQ.d.ts} +1 -1
- package/dist/{authMiddleware-CeIxAJQ5.d.cts → authMiddleware-vNb2hfLP.d.cts} +1 -1
- package/dist/chat/index.cjs +4 -3
- package/dist/chat/index.d.cts +4 -4
- package/dist/chat/index.d.ts +4 -4
- package/dist/chat/index.js +3 -2
- package/dist/chat/types.d.cts +2 -2
- package/dist/chat/types.d.ts +2 -2
- package/dist/{chunk-Q6T6GRDR.js → chunk-2CTHLPTU.js} +12 -5
- package/dist/chunk-2CTHLPTU.js.map +1 -0
- package/dist/{chunk-BA2JMZP6.cjs → chunk-2EWL5BAZ.cjs} +4 -4
- package/dist/{chunk-BA2JMZP6.cjs.map → chunk-2EWL5BAZ.cjs.map} +1 -1
- package/dist/{chunk-LBVYZLWL.js → chunk-2NLVV2MF.js} +3 -3
- package/dist/{chunk-LBVYZLWL.js.map → chunk-2NLVV2MF.js.map} +1 -1
- package/dist/{chunk-MTFRH3R5.cjs → chunk-3CIPWA33.cjs} +4 -23
- package/dist/chunk-3CIPWA33.cjs.map +1 -0
- package/dist/{chunk-RBGTWJ7G.js → chunk-4FU45NEU.js} +7 -5
- package/dist/chunk-4FU45NEU.js.map +1 -0
- package/dist/chunk-4I6TJWBG.cjs +38 -0
- package/dist/chunk-4I6TJWBG.cjs.map +1 -0
- package/dist/{chunk-3DW7RIEB.js → chunk-4IBEYSSA.js} +7 -5
- package/dist/chunk-4IBEYSSA.js.map +1 -0
- package/dist/{chunk-T66CY2YX.js → chunk-4NUA46VD.js} +473 -41
- package/dist/chunk-4NUA46VD.js.map +1 -0
- package/dist/{chunk-T23NVI3Q.js → chunk-5XADEX3R.js} +7 -5
- package/dist/chunk-5XADEX3R.js.map +1 -0
- package/dist/{chunk-V35JLM5Q.js → chunk-65YXOZDQ.js} +7 -4
- package/dist/chunk-65YXOZDQ.js.map +1 -0
- package/dist/{chunk-M4PFR3OS.js → chunk-6DPZQRNC.js} +8 -5
- package/dist/chunk-6DPZQRNC.js.map +1 -0
- package/dist/{chunk-GLQZHLLN.js → chunk-7JOV7PXU.js} +7 -5
- package/dist/chunk-7JOV7PXU.js.map +1 -0
- package/dist/{chunk-OAKTIIG4.js → chunk-7PPUK4HS.js} +4 -3
- package/dist/chunk-7PPUK4HS.js.map +1 -0
- package/dist/{chunk-ZIVZF6M2.cjs → chunk-7UQVB2SQ.cjs} +9 -7
- package/dist/chunk-7UQVB2SQ.cjs.map +1 -0
- package/dist/{chunk-RTD3XWBM.cjs → chunk-AB6LHU2Z.cjs} +11 -9
- package/dist/chunk-AB6LHU2Z.cjs.map +1 -0
- package/dist/{chunk-VLSN55I3.cjs → chunk-AWRMGLMT.cjs} +113 -3
- package/dist/chunk-AWRMGLMT.cjs.map +1 -0
- package/dist/{chunk-REXMA2IN.cjs → chunk-CFR2CKM6.cjs} +8 -6
- package/dist/chunk-CFR2CKM6.cjs.map +1 -0
- package/dist/{chunk-5YN6FED2.cjs → chunk-DGWPC6VR.cjs} +13 -6
- package/dist/chunk-DGWPC6VR.cjs.map +1 -0
- package/dist/{chunk-SDA2UO4X.cjs → chunk-DOUFVJJF.cjs} +9 -6
- package/dist/chunk-DOUFVJJF.cjs.map +1 -0
- package/dist/{chunk-76Q2CTFV.js → chunk-EDDRN2CO.js} +7 -5
- package/dist/chunk-EDDRN2CO.js.map +1 -0
- package/dist/chunk-FL54VJ35.js +32 -0
- package/dist/chunk-FL54VJ35.js.map +1 -0
- package/dist/chunk-GOC5UODV.cjs +30 -0
- package/dist/chunk-GOC5UODV.cjs.map +1 -0
- package/dist/{chunk-5PUNJJAR.js → chunk-JKXQFEY7.js} +7 -5
- package/dist/chunk-JKXQFEY7.js.map +1 -0
- package/dist/chunk-KKZP4DUR.cjs +340 -0
- package/dist/chunk-KKZP4DUR.cjs.map +1 -0
- package/dist/{chunk-2ZMZ4KWJ.js → chunk-KQ2QNGRX.js} +113 -3
- package/dist/chunk-KQ2QNGRX.js.map +1 -0
- package/dist/{chunk-ECQZAWH3.cjs → chunk-KT4MFNBC.cjs} +8 -6
- package/dist/chunk-KT4MFNBC.cjs.map +1 -0
- package/dist/{chunk-RBW5ABSQ.js → chunk-MUQ7TAWH.js} +126 -7
- package/dist/chunk-MUQ7TAWH.js.map +1 -0
- package/dist/{chunk-D2ZTB5R2.cjs → chunk-OAQGC32L.cjs} +135 -16
- package/dist/chunk-OAQGC32L.cjs.map +1 -0
- package/dist/chunk-OJJ3QLZP.js +338 -0
- package/dist/chunk-OJJ3QLZP.js.map +1 -0
- package/dist/{chunk-5DVEQBCD.cjs → chunk-P4CQFG3X.cjs} +11 -9
- package/dist/chunk-P4CQFG3X.cjs.map +1 -0
- package/dist/{chunk-IL2PAEG3.cjs → chunk-RF64RAHW.cjs} +8 -6
- package/dist/chunk-RF64RAHW.cjs.map +1 -0
- package/dist/{chunk-AYXQJONA.cjs → chunk-RPNL672Y.cjs} +4 -4
- package/dist/chunk-RPNL672Y.cjs.map +1 -0
- package/dist/{chunk-HLGMFFDF.js → chunk-S7HIK7XY.js} +7 -5
- package/dist/chunk-S7HIK7XY.js.map +1 -0
- package/dist/{chunk-ROBQ2CV7.cjs → chunk-T7UDL2KI.cjs} +475 -44
- package/dist/chunk-T7UDL2KI.cjs.map +1 -0
- package/dist/{chunk-PM2FAMWT.js → chunk-UT3GUUCO.js} +7 -5
- package/dist/chunk-UT3GUUCO.js.map +1 -0
- package/dist/chunk-UUY6LQT6.cjs +267 -0
- package/dist/chunk-UUY6LQT6.cjs.map +1 -0
- package/dist/{chunk-LI3BAYDV.cjs → chunk-V32CB5U2.cjs} +8 -6
- package/dist/chunk-V32CB5U2.cjs.map +1 -0
- package/dist/{chunk-6D3MJRXE.cjs → chunk-VZROPAWL.cjs} +8 -6
- package/dist/chunk-VZROPAWL.cjs.map +1 -0
- package/dist/{chunk-6HBXNLB7.cjs → chunk-WLS43HX4.cjs} +8 -6
- package/dist/chunk-WLS43HX4.cjs.map +1 -0
- package/dist/{chunk-KOO3ZG5X.cjs → chunk-WOGG723K.cjs} +8 -5
- package/dist/{chunk-V35JLM5Q.js.map → chunk-WOGG723K.cjs.map} +1 -1
- package/dist/{chunk-4TENBFWN.cjs → chunk-XHQZ4TF7.cjs} +11 -6
- package/dist/chunk-XHQZ4TF7.cjs.map +1 -0
- package/dist/{chunk-QXWPUKK2.js → chunk-XI6R76X3.js} +4 -20
- package/dist/chunk-XI6R76X3.js.map +1 -0
- package/dist/{chunk-6TUGEXVX.js → chunk-XRHAE4SD.js} +3 -3
- package/dist/{chunk-6TUGEXVX.js.map → chunk-XRHAE4SD.js.map} +1 -1
- package/dist/{chunk-ZQPET6GI.js → chunk-Y3RILILK.js} +10 -5
- package/dist/chunk-Y3RILILK.js.map +1 -0
- package/dist/{chunk-CQFZ7PGZ.js → chunk-YH52X52J.js} +7 -5
- package/dist/chunk-YH52X52J.js.map +1 -0
- package/dist/chunk-ZOREOLGE.js +264 -0
- package/dist/chunk-ZOREOLGE.js.map +1 -0
- package/dist/{createGenericFetchClient-Cp2By_KQ.d.ts → createGenericFetchClient-Gpom91V-.d.ts} +1 -1
- package/dist/{createGenericFetchClient-DuW7iSRy.d.cts → createGenericFetchClient-yfcpR7qD.d.cts} +1 -1
- package/dist/{createOpenapiFetchClient-DhL2gQvd.d.ts → createOpenapiFetchClient-B44nXiti.d.ts} +2 -2
- package/dist/{createOpenapiFetchClient-BuKDZcLD.d.cts → createOpenapiFetchClient-Ci0-Qe53.d.cts} +2 -2
- package/dist/dataScience/index.cjs +5 -4
- package/dist/dataScience/index.d.cts +26 -6
- package/dist/dataScience/index.d.ts +26 -6
- package/dist/dataScience/index.js +3 -2
- package/dist/dataScience/types.d.cts +2 -2
- package/dist/dataScience/types.d.ts +2 -2
- package/dist/domain/permissions/index.cjs +5 -11
- package/dist/domain/permissions/index.cjs.map +1 -1
- package/dist/domain/permissions/index.d.cts +3 -2
- package/dist/domain/permissions/index.d.ts +3 -2
- package/dist/domain/permissions/index.js +1 -7
- package/dist/domain/permissions/index.js.map +1 -1
- package/dist/domain/storageTable/index.cjs +9 -260
- package/dist/domain/storageTable/index.cjs.map +1 -1
- package/dist/domain/storageTable/index.js +1 -262
- package/dist/domain/storageTable/index.js.map +1 -1
- package/dist/editor/index.cjs +4 -3
- package/dist/editor/index.d.cts +4 -4
- package/dist/editor/index.d.ts +4 -4
- package/dist/editor/index.js +3 -2
- package/dist/editor/types.d.cts +2 -2
- package/dist/editor/types.d.ts +2 -2
- package/dist/encryption/index.cjs +4 -3
- package/dist/encryption/index.d.cts +2 -2
- package/dist/encryption/index.d.ts +2 -2
- package/dist/encryption/index.js +3 -2
- package/dist/import/index.cjs +4 -3
- package/dist/import/index.d.cts +2 -2
- package/dist/import/index.d.ts +2 -2
- package/dist/import/index.js +3 -2
- package/dist/index-BEE_qeId.d.ts +1511 -0
- package/dist/index-KHRrA2IR.d.cts +1511 -0
- package/dist/index.cjs +299 -160
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3048 -1028
- package/dist/index.d.ts +3048 -1028
- package/dist/index.js +244 -108
- package/dist/index.js.map +1 -1
- package/dist/management/index.cjs +6 -5
- package/dist/management/index.d.cts +137 -69
- package/dist/management/index.d.ts +137 -69
- package/dist/management/index.js +4 -3
- package/dist/management/types.d.cts +2 -2
- package/dist/management/types.d.ts +2 -2
- package/dist/metastore/index.cjs +4 -3
- package/dist/metastore/index.d.cts +5 -5
- package/dist/metastore/index.d.ts +5 -5
- package/dist/metastore/index.js +3 -2
- package/dist/metastore/types.d.cts +2 -2
- package/dist/metastore/types.d.ts +2 -2
- package/dist/oauth/index.cjs +4 -3
- package/dist/oauth/index.d.cts +2 -2
- package/dist/oauth/index.d.ts +2 -2
- package/dist/oauth/index.js +3 -2
- package/dist/{project-CYhB6rYN.d.cts → project-C4K5Dzoy.d.cts} +1 -1
- package/dist/{project-Bzslbq4u.d.ts → project-COwNmNoc.d.ts} +1 -1
- package/dist/queryService/index.cjs +4 -3
- package/dist/queryService/index.d.cts +4 -4
- package/dist/queryService/index.d.ts +4 -4
- package/dist/queryService/index.js +3 -2
- package/dist/queryService/types.d.cts +2 -2
- package/dist/queryService/types.d.ts +2 -2
- package/dist/queue/index.cjs +4 -3
- package/dist/queue/index.d.cts +4 -4
- package/dist/queue/index.d.ts +4 -4
- package/dist/queue/index.js +3 -2
- package/dist/queue/types.d.cts +2 -2
- package/dist/queue/types.d.ts +2 -2
- package/dist/sdk/configurations/index.d.cts +3 -2
- package/dist/sdk/configurations/index.d.ts +3 -2
- package/dist/sdk/storage/index.cjs +11 -11
- package/dist/sdk/storage/index.d.cts +7 -7
- package/dist/sdk/storage/index.d.ts +7 -7
- package/dist/sdk/storage/index.js +1 -1
- package/dist/sdk/tag/index.d.cts +4 -4
- package/dist/sdk/tag/index.d.ts +4 -4
- package/dist/sdk/tag/types.d.cts +4 -4
- package/dist/sdk/tag/types.d.ts +4 -4
- package/dist/sdk/vault/index.d.cts +2 -2
- package/dist/sdk/vault/index.d.ts +2 -2
- package/dist/status/index.cjs +4 -3
- package/dist/status/index.d.cts +2 -2
- package/dist/status/index.d.ts +2 -2
- package/dist/status/index.js +3 -2
- package/dist/storage/index.cjs +4 -7
- package/dist/storage/index.d.cts +6 -10
- package/dist/storage/index.d.ts +6 -10
- package/dist/storage/index.js +3 -2
- package/dist/storage/types.d.cts +451 -11617
- package/dist/storage/types.d.ts +451 -11617
- package/dist/storageSdk--0Hh4UCE.d.ts +746 -0
- package/dist/storageSdk-DJz6WcW3.d.cts +746 -0
- package/dist/stream/index.cjs +14 -0
- package/dist/stream/index.cjs.map +1 -0
- package/dist/stream/index.d.cts +348 -0
- package/dist/stream/index.d.ts +348 -0
- package/dist/stream/index.js +5 -0
- package/dist/stream/index.js.map +1 -0
- package/dist/stream/types.cjs +4 -0
- package/dist/stream/types.cjs.map +1 -0
- package/dist/stream/types.d.cts +2 -0
- package/dist/stream/types.d.ts +2 -0
- package/dist/stream/types.js +3 -0
- package/dist/stream/types.js.map +1 -0
- package/dist/syncActions/index.cjs +4 -3
- package/dist/syncActions/index.d.cts +5 -7
- package/dist/syncActions/index.d.ts +5 -7
- package/dist/syncActions/index.js +3 -2
- package/dist/syncActions/types.d.cts +1 -1
- package/dist/syncActions/types.d.ts +1 -1
- package/dist/telemetry/index.cjs +4 -3
- package/dist/telemetry/index.d.cts +3 -3
- package/dist/telemetry/index.d.ts +3 -3
- package/dist/telemetry/index.js +3 -2
- package/dist/{types-CNkgmuhe.d.cts → types-Bc-H4gfv.d.cts} +1 -1
- package/dist/{types-CRSKcua9.d.cts → types-BxjcUj-y.d.cts} +1 -1
- package/dist/{types-CqWXdTMg.d.ts → types-CFd7q2ed.d.ts} +1 -1
- package/dist/{types-DBVQGCI1.d.cts → types-CWebeQXy.d.cts} +1 -1
- package/dist/{types-DJkU9gvB.d.cts → types-D9cNOf-3.d.cts} +1 -1
- package/dist/types-DFWnAftN.d.cts +7523 -0
- package/dist/{types-B51cQMrX.d.ts → types-DFbHRDdR.d.ts} +1 -1
- package/dist/types-DMC601TE.d.cts +14375 -0
- package/dist/types-DMC601TE.d.ts +14375 -0
- package/dist/{types-C-bd4ArM.d.cts → types-DTkxk0fW.d.cts} +1 -1
- package/dist/{types-cH0_hkCW.d.ts → types-DacFMc6L.d.ts} +1 -1
- package/dist/types-DcL25GqY.d.cts +15820 -0
- package/dist/types-Dfw6a58i.d.ts +15820 -0
- package/dist/{types-Dws8mFNY.d.cts → types-DiC2wKsx.d.cts} +1 -1
- package/dist/types-Dv3vN7M9.d.ts +7523 -0
- package/dist/{types-Bom8wyth.d.ts → types-DxJD6LIN.d.cts} +1 -0
- package/dist/{types-Bom8wyth.d.cts → types-DxJD6LIN.d.ts} +1 -0
- package/dist/{types-DzwzVgyG.d.ts → types-JvKRS8Qd.d.ts} +1 -1
- package/dist/{types-BY0tjg2Q.d.ts → types-Mghz1gMD.d.ts} +1 -1
- package/dist/{types-C7mpAfq-.d.cts → types-jKnx7Tm_.d.cts} +1 -1
- package/dist/{types-C7mpAfq-.d.ts → types-jKnx7Tm_.d.ts} +1 -1
- package/dist/{types-CGMJT3JL.d.ts → types-yKV1EX6f.d.ts} +1 -1
- package/dist/{utils-BNQZiNOu.d.ts → utils-Cl4emy8g.d.ts} +567 -3
- package/dist/{utils-DE09pDTi.d.cts → utils-JsCYFmHj.d.cts} +567 -3
- package/dist/vault/index.cjs +4 -3
- package/dist/vault/index.d.cts +3 -3
- package/dist/vault/index.d.ts +3 -3
- package/dist/vault/index.js +3 -2
- package/dist/vault/types.d.cts +1 -1
- package/dist/vault/types.d.ts +1 -1
- package/dist/verify/index.cjs +4 -3
- package/dist/verify/index.d.cts +2 -1
- package/dist/verify/index.d.ts +2 -1
- package/dist/verify/index.js +3 -2
- package/package.json +31 -3
- package/dist/chunk-2ZMZ4KWJ.js.map +0 -1
- package/dist/chunk-3DW7RIEB.js.map +0 -1
- package/dist/chunk-4TENBFWN.cjs.map +0 -1
- package/dist/chunk-5DVEQBCD.cjs.map +0 -1
- package/dist/chunk-5PUNJJAR.js.map +0 -1
- package/dist/chunk-5YN6FED2.cjs.map +0 -1
- package/dist/chunk-6D3MJRXE.cjs.map +0 -1
- package/dist/chunk-6FW72PC2.cjs +0 -29
- package/dist/chunk-6FW72PC2.cjs.map +0 -1
- package/dist/chunk-6HBXNLB7.cjs.map +0 -1
- package/dist/chunk-76Q2CTFV.js.map +0 -1
- package/dist/chunk-AYXQJONA.cjs.map +0 -1
- package/dist/chunk-CQFZ7PGZ.js.map +0 -1
- package/dist/chunk-D2ZTB5R2.cjs.map +0 -1
- package/dist/chunk-ECQZAWH3.cjs.map +0 -1
- package/dist/chunk-GLQZHLLN.js.map +0 -1
- package/dist/chunk-HLGMFFDF.js.map +0 -1
- package/dist/chunk-IL2PAEG3.cjs.map +0 -1
- package/dist/chunk-KOO3ZG5X.cjs.map +0 -1
- package/dist/chunk-LI3BAYDV.cjs.map +0 -1
- package/dist/chunk-M4PFR3OS.js.map +0 -1
- package/dist/chunk-MTFRH3R5.cjs.map +0 -1
- package/dist/chunk-OAKTIIG4.js.map +0 -1
- package/dist/chunk-PM2FAMWT.js.map +0 -1
- package/dist/chunk-Q6T6GRDR.js.map +0 -1
- package/dist/chunk-QXWPUKK2.js.map +0 -1
- package/dist/chunk-RBGTWJ7G.js.map +0 -1
- package/dist/chunk-RBW5ABSQ.js.map +0 -1
- package/dist/chunk-REXMA2IN.cjs.map +0 -1
- package/dist/chunk-ROBQ2CV7.cjs.map +0 -1
- package/dist/chunk-RTD3XWBM.cjs.map +0 -1
- package/dist/chunk-SDA2UO4X.cjs.map +0 -1
- package/dist/chunk-T23NVI3Q.js.map +0 -1
- package/dist/chunk-T66CY2YX.js.map +0 -1
- package/dist/chunk-VLSN55I3.cjs.map +0 -1
- package/dist/chunk-ZIVZF6M2.cjs.map +0 -1
- package/dist/chunk-ZQPET6GI.js.map +0 -1
- package/dist/storageClient-C5R3H96R.d.cts +0 -631
- package/dist/storageClient-DBiS4voo.d.ts +0 -631
- package/dist/storageSdk-B7Iq38Vh.d.cts +0 -143
- package/dist/storageSdk-BnIemr2s.d.ts +0 -143
- package/dist/types-BTcT8Q0T.d.cts +0 -8605
- package/dist/types-BTcT8Q0T.d.ts +0 -8605
- package/dist/types-DYMMsuU0.d.cts +0 -78
- package/dist/types-DYMMsuU0.d.ts +0 -78
package/README.md
CHANGED
|
@@ -139,12 +139,14 @@ Clients backed by OpenAPI specs are marked with (OpenAPI); the rest use the gene
|
|
|
139
139
|
|
|
140
140
|
Additional accessors on the initialized client:
|
|
141
141
|
|
|
142
|
-
| Accessor
|
|
143
|
-
|
|
|
144
|
-
| `api.stack`
|
|
145
|
-
| `api.project`
|
|
146
|
-
| `api.
|
|
147
|
-
| `api.
|
|
142
|
+
| Accessor | Purpose |
|
|
143
|
+
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
144
|
+
| `api.context.stack` | Stack info: `hasFeature()`, `hasService()`, `getServiceUrl()`, `hasComponent()`, `getComponent()`, `services`, `features`, `components` |
|
|
145
|
+
| `api.context.project` | Project info: `hasFeature()`, `hasAdminFeature()`, `hasBackend()`, `sapiToken` |
|
|
146
|
+
| `api.context.defaultBranch` | Branch awareness: `id`, `name`, `getType()`, `isDev()`, `isDefault()` |
|
|
147
|
+
| `api.context.st` | Bucket/table id parse + serialize, derived from project features (rebuilds on relevant feature change). `st` mirrors kbc-ui's current naming. |
|
|
148
|
+
| `api.context.serviceMeta` | Service availability metadata from the registry |
|
|
149
|
+
| `api.sdk.tag` | Tag SDK: `getTags()`, `getTagsByObjectId()`, `createTag()`, `updateTag()`, `deleteTag()`, `assignTags()`, `unassignTags()`, `createAndAssignTag()` |
|
|
148
150
|
|
|
149
151
|
## Entry Points
|
|
150
152
|
|
|
@@ -301,6 +303,10 @@ import { ApiClientProvider, useApiClient } from '@keboola/api-client-react';
|
|
|
301
303
|
|
|
302
304
|
Bug reports and feature requests: [`keboola/ui` issues](https://github.com/keboola/ui/issues). Direction is tracked in Linear epic [UT-3919](https://linear.app/keboola/issue/UT-3919) ("UI as a Platform").
|
|
303
305
|
|
|
306
|
+
## Live E2E smoke
|
|
307
|
+
|
|
308
|
+
A nightly live smoke (kept off PR CI, not published to npm) exercises the SDK against a real Keboola backend. See [`integration/README.md`](./integration/README.md) for the suites, local runs, CI configuration, and the secret-rotation playbook.
|
|
309
|
+
|
|
304
310
|
## License
|
|
305
311
|
|
|
306
312
|
MIT. See [LICENSE](./LICENSE).
|
|
@@ -311,6 +317,28 @@ MIT. See [LICENSE](./LICENSE).
|
|
|
311
317
|
|
|
312
318
|
Internal guide for adding new service clients to this package.
|
|
313
319
|
|
|
320
|
+
### Testing conventions
|
|
321
|
+
|
|
322
|
+
Tests are co-located `*.test.ts` files run by Vitest. There are two complementary ways to fake the network — pick by what the test is about:
|
|
323
|
+
|
|
324
|
+
- **MSW (`src/test/mswServer.ts`)** — the default for request/response-shape tests and multi-endpoint flows. MSW intercepts the **global `fetch`**, so the client is constructed the way production builds it (no injected `fetchFn`) and you register handlers by URL. Use it for: request shape (headers, query, path), status→error mapping, happy-path response decoding, `init()` flows that hit `getStackInfo` + `tokens.verify`, polling, and service-availability behaviour.
|
|
325
|
+
|
|
326
|
+
```ts
|
|
327
|
+
import { http, HttpResponse, server } from '../../test/mswServer';
|
|
328
|
+
|
|
329
|
+
server.use(
|
|
330
|
+
http.get(`${BASE_URL}/v2/storage/tokens/verify`, () => HttpResponse.json({ id: '1' })),
|
|
331
|
+
);
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
The shared server is started/reset/closed globally in `src/test/setup.ts` (`onUnhandledRequest: 'error'` — an unmocked request fails loudly instead of hitting the network). Reference tests: `clients/storage/storageClient.msw.test.ts`, `clients/vault/vaultUnavailable.msw.test.ts`, `clients/queue/queuePolling.msw.test.ts`.
|
|
335
|
+
|
|
336
|
+
- **Injected `fetchFn` (`createFetchClient({ fetchFn: vi.fn() })`)** — for pure transport/composition tests where you assert on the `Request` object itself or on middleware ordering, and standing up MSW handlers adds no value. Reference tests: `fetchClient/createFetchClient/createFetchClient.test.ts`, `fetchClient/createFetchClient/middlewareOrdering.test.ts`, `clients/storage/storageTokenMiddleware.test.ts`.
|
|
337
|
+
|
|
338
|
+
- **`expectTypeOf` type tests** — pin the client's advertised return shapes; enforced by `tsc` (the `type-check` task), not the runtime. Reference: `clients/storage/storageClient.types.test.ts`.
|
|
339
|
+
|
|
340
|
+
Publish-time export-shape validation stays in `build:check` via `attw` — orthogonal to the above.
|
|
341
|
+
|
|
314
342
|
### Adding a New OpenAPI Client
|
|
315
343
|
|
|
316
344
|
#### Step 1: Register the API in `redocly.yaml`
|
package/dist/ai/index.cjs
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
3
|
+
var chunkRF64RAHW_cjs = require('../chunk-RF64RAHW.cjs');
|
|
4
|
+
require('../chunk-3CIPWA33.cjs');
|
|
5
|
+
require('../chunk-4I6TJWBG.cjs');
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
Object.defineProperty(exports, "createAiClient", {
|
|
9
10
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkRF64RAHW_cjs.createAiClient; }
|
|
11
12
|
});
|
|
12
13
|
//# sourceMappingURL=index.cjs.map
|
|
13
14
|
//# sourceMappingURL=index.cjs.map
|
package/dist/ai/index.d.cts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { D as DescribeConfigurationVersionBody, a as DescribeConfigurationMergeBody, E as ExplainErrorBody, b as DescribeConfigurationBody, S as SuggestComponentBody, c as components, F as FeedbackBody } from '../types-
|
|
2
|
-
import { C as ClientInitOptions } from '../types-
|
|
3
|
-
import '../types-
|
|
1
|
+
import { D as DescribeConfigurationVersionBody, a as DescribeConfigurationMergeBody, E as ExplainErrorBody, b as DescribeConfigurationBody, S as SuggestComponentBody, c as components, F as FeedbackBody } from '../types-DiC2wKsx.cjs';
|
|
2
|
+
import { C as ClientInitOptions } from '../types-DxJD6LIN.cjs';
|
|
3
|
+
import '../types-jKnx7Tm_.cjs';
|
|
4
4
|
import 'qs';
|
|
5
5
|
|
|
6
|
-
declare const createAiClient: ({ baseUrl, middlewares }: ClientInitOptions) => {
|
|
6
|
+
declare const createAiClient: ({ baseUrl, middlewares, token }: ClientInitOptions) => {
|
|
7
7
|
describeConfigurationVersion: (body: DescribeConfigurationVersionBody) => Promise<{
|
|
8
8
|
description: string;
|
|
9
9
|
correlationId: string;
|
|
@@ -24,12 +24,7 @@ declare const createAiClient: ({ baseUrl, middlewares }: ClientInitOptions) => {
|
|
|
24
24
|
components: components["schemas"]["SuggestedComponent"][];
|
|
25
25
|
correlationId: string;
|
|
26
26
|
}>;
|
|
27
|
-
feedback: (body: FeedbackBody) => Promise<
|
|
28
|
-
error: string;
|
|
29
|
-
code: number;
|
|
30
|
-
status: "error";
|
|
31
|
-
exceptionId?: string;
|
|
32
|
-
}>;
|
|
27
|
+
feedback: (body: FeedbackBody) => Promise<never>;
|
|
33
28
|
};
|
|
34
29
|
|
|
35
30
|
export { createAiClient };
|
package/dist/ai/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { D as DescribeConfigurationVersionBody, a as DescribeConfigurationMergeBody, E as ExplainErrorBody, b as DescribeConfigurationBody, S as SuggestComponentBody, c as components, F as FeedbackBody } from '../types-
|
|
2
|
-
import { C as ClientInitOptions } from '../types-
|
|
3
|
-
import '../types-
|
|
1
|
+
import { D as DescribeConfigurationVersionBody, a as DescribeConfigurationMergeBody, E as ExplainErrorBody, b as DescribeConfigurationBody, S as SuggestComponentBody, c as components, F as FeedbackBody } from '../types-DFbHRDdR.js';
|
|
2
|
+
import { C as ClientInitOptions } from '../types-DxJD6LIN.js';
|
|
3
|
+
import '../types-jKnx7Tm_.js';
|
|
4
4
|
import 'qs';
|
|
5
5
|
|
|
6
|
-
declare const createAiClient: ({ baseUrl, middlewares }: ClientInitOptions) => {
|
|
6
|
+
declare const createAiClient: ({ baseUrl, middlewares, token }: ClientInitOptions) => {
|
|
7
7
|
describeConfigurationVersion: (body: DescribeConfigurationVersionBody) => Promise<{
|
|
8
8
|
description: string;
|
|
9
9
|
correlationId: string;
|
|
@@ -24,12 +24,7 @@ declare const createAiClient: ({ baseUrl, middlewares }: ClientInitOptions) => {
|
|
|
24
24
|
components: components["schemas"]["SuggestedComponent"][];
|
|
25
25
|
correlationId: string;
|
|
26
26
|
}>;
|
|
27
|
-
feedback: (body: FeedbackBody) => Promise<
|
|
28
|
-
error: string;
|
|
29
|
-
code: number;
|
|
30
|
-
status: "error";
|
|
31
|
-
exceptionId?: string;
|
|
32
|
-
}>;
|
|
27
|
+
feedback: (body: FeedbackBody) => Promise<never>;
|
|
33
28
|
};
|
|
34
29
|
|
|
35
30
|
export { createAiClient };
|
package/dist/ai/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { createAiClient } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { createAiClient } from '../chunk-4IBEYSSA.js';
|
|
2
|
+
import '../chunk-XI6R76X3.js';
|
|
3
|
+
import '../chunk-FL54VJ35.js';
|
|
3
4
|
//# sourceMappingURL=index.js.map
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/dist/ai/types.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import '../types-
|
|
2
|
-
export { C as ComponentSuggestion, b as DescribeConfigurationBody, a as DescribeConfigurationMergeBody, D as DescribeConfigurationVersionBody, d as ErrorExplanation, E as ExplainErrorBody, F as FeedbackBody, O as ObjectDescription, S as SuggestComponentBody } from '../types-
|
|
1
|
+
import '../types-jKnx7Tm_.cjs';
|
|
2
|
+
export { C as ComponentSuggestion, b as DescribeConfigurationBody, a as DescribeConfigurationMergeBody, D as DescribeConfigurationVersionBody, d as ErrorExplanation, E as ExplainErrorBody, F as FeedbackBody, O as ObjectDescription, S as SuggestComponentBody } from '../types-DiC2wKsx.cjs';
|
package/dist/ai/types.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import '../types-
|
|
2
|
-
export { C as ComponentSuggestion, b as DescribeConfigurationBody, a as DescribeConfigurationMergeBody, D as DescribeConfigurationVersionBody, d as ErrorExplanation, E as ExplainErrorBody, F as FeedbackBody, O as ObjectDescription, S as SuggestComponentBody } from '../types-
|
|
1
|
+
import '../types-jKnx7Tm_.js';
|
|
2
|
+
export { C as ComponentSuggestion, b as DescribeConfigurationBody, a as DescribeConfigurationMergeBody, D as DescribeConfigurationVersionBody, d as ErrorExplanation, E as ExplainErrorBody, F as FeedbackBody, O as ObjectDescription, S as SuggestComponentBody } from '../types-DFbHRDdR.js';
|
package/dist/assets/index.cjs
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
3
|
+
var chunkRPNL672Y_cjs = require('../chunk-RPNL672Y.cjs');
|
|
4
|
+
require('../chunk-3CIPWA33.cjs');
|
|
5
|
+
require('../chunk-4I6TJWBG.cjs');
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
Object.defineProperty(exports, "createAssetsClient", {
|
|
9
10
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkRPNL672Y_cjs.createAssetsClient; }
|
|
11
12
|
});
|
|
12
13
|
//# sourceMappingURL=index.cjs.map
|
|
13
14
|
//# sourceMappingURL=index.cjs.map
|
package/dist/assets/index.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { C as ClientInitOptions } from '../types-
|
|
1
|
+
import { C as ClientInitOptions } from '../types-DxJD6LIN.cjs';
|
|
2
2
|
import { Post } from './types.cjs';
|
|
3
3
|
import 'qs';
|
|
4
4
|
|
|
5
|
-
declare const createAssetsClient: ({ baseUrl, middlewares }: ClientInitOptions) => {
|
|
5
|
+
declare const createAssetsClient: ({ baseUrl, middlewares }: Omit<ClientInitOptions, "token">) => {
|
|
6
6
|
getPublishedChangelogPosts: (signal?: AbortSignal) => Promise<Post[]>;
|
|
7
7
|
};
|
|
8
8
|
|
package/dist/assets/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { C as ClientInitOptions } from '../types-
|
|
1
|
+
import { C as ClientInitOptions } from '../types-DxJD6LIN.js';
|
|
2
2
|
import { Post } from './types.js';
|
|
3
3
|
import 'qs';
|
|
4
4
|
|
|
5
|
-
declare const createAssetsClient: ({ baseUrl, middlewares }: ClientInitOptions) => {
|
|
5
|
+
declare const createAssetsClient: ({ baseUrl, middlewares }: Omit<ClientInitOptions, "token">) => {
|
|
6
6
|
getPublishedChangelogPosts: (signal?: AbortSignal) => Promise<Post[]>;
|
|
7
7
|
};
|
|
8
8
|
|
package/dist/assets/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { createAssetsClient } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { createAssetsClient } from '../chunk-XRHAE4SD.js';
|
|
2
|
+
import '../chunk-XI6R76X3.js';
|
|
3
|
+
import '../chunk-FL54VJ35.js';
|
|
3
4
|
//# sourceMappingURL=index.js.map
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/dist/chat/index.cjs
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkDGWPC6VR_cjs = require('../chunk-DGWPC6VR.cjs');
|
|
4
4
|
require('../chunk-U5SE6W5M.cjs');
|
|
5
|
-
require('../chunk-
|
|
5
|
+
require('../chunk-3CIPWA33.cjs');
|
|
6
|
+
require('../chunk-4I6TJWBG.cjs');
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
Object.defineProperty(exports, "createChatClient", {
|
|
10
11
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
12
|
+
get: function () { return chunkDGWPC6VR_cjs.createChatClient; }
|
|
12
13
|
});
|
|
13
14
|
//# sourceMappingURL=index.cjs.map
|
|
14
15
|
//# sourceMappingURL=index.cjs.map
|
package/dist/chat/index.d.cts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { G as GetHistoryQuery, c as components, a as GetChatPath, C as ChatRequest, b as GetVotesQuery, V as VoteRequest, U as UsageResponse, A as AgentSettings, d as UpdateAgentSettingsRequest, e as UserAgentSettings, f as UpdateUserAgentSettingsRequest, T as ToolsListResponse } from '../types-
|
|
2
|
-
import { C as ClientInitOptions } from '../types-
|
|
1
|
+
import { G as GetHistoryQuery, c as components, a as GetChatPath, C as ChatRequest, b as GetVotesQuery, V as VoteRequest, U as UsageResponse, A as AgentSettings, d as UpdateAgentSettingsRequest, e as UserAgentSettings, f as UpdateUserAgentSettingsRequest, T as ToolsListResponse } from '../types-Bc-H4gfv.cjs';
|
|
2
|
+
import { C as ClientInitOptions } from '../types-DxJD6LIN.cjs';
|
|
3
3
|
import { SuggestionsRequestBody, SuggestionsApiResponse } from './suggestions.cjs';
|
|
4
4
|
import 'zod';
|
|
5
|
-
import '../types-
|
|
5
|
+
import '../types-jKnx7Tm_.cjs';
|
|
6
6
|
import 'qs';
|
|
7
7
|
|
|
8
8
|
type ChatClientOptions = ClientInitOptions & {
|
|
9
9
|
storageApiUrl: string;
|
|
10
10
|
};
|
|
11
|
-
declare const createChatClient: ({ baseUrl, middlewares, storageApiUrl }: ChatClientOptions) => {
|
|
11
|
+
declare const createChatClient: ({ baseUrl, middlewares, storageApiUrl, token, }: ChatClientOptions) => {
|
|
12
12
|
getHistory: (params?: GetHistoryQuery) => Promise<{
|
|
13
13
|
chats: components["schemas"]["Chat"][];
|
|
14
14
|
hasMore: boolean;
|
package/dist/chat/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { G as GetHistoryQuery, c as components, a as GetChatPath, C as ChatRequest, b as GetVotesQuery, V as VoteRequest, U as UsageResponse, A as AgentSettings, d as UpdateAgentSettingsRequest, e as UserAgentSettings, f as UpdateUserAgentSettingsRequest, T as ToolsListResponse } from '../types-
|
|
2
|
-
import { C as ClientInitOptions } from '../types-
|
|
1
|
+
import { G as GetHistoryQuery, c as components, a as GetChatPath, C as ChatRequest, b as GetVotesQuery, V as VoteRequest, U as UsageResponse, A as AgentSettings, d as UpdateAgentSettingsRequest, e as UserAgentSettings, f as UpdateUserAgentSettingsRequest, T as ToolsListResponse } from '../types-JvKRS8Qd.js';
|
|
2
|
+
import { C as ClientInitOptions } from '../types-DxJD6LIN.js';
|
|
3
3
|
import { SuggestionsRequestBody, SuggestionsApiResponse } from './suggestions.js';
|
|
4
4
|
import 'zod';
|
|
5
|
-
import '../types-
|
|
5
|
+
import '../types-jKnx7Tm_.js';
|
|
6
6
|
import 'qs';
|
|
7
7
|
|
|
8
8
|
type ChatClientOptions = ClientInitOptions & {
|
|
9
9
|
storageApiUrl: string;
|
|
10
10
|
};
|
|
11
|
-
declare const createChatClient: ({ baseUrl, middlewares, storageApiUrl }: ChatClientOptions) => {
|
|
11
|
+
declare const createChatClient: ({ baseUrl, middlewares, storageApiUrl, token, }: ChatClientOptions) => {
|
|
12
12
|
getHistory: (params?: GetHistoryQuery) => Promise<{
|
|
13
13
|
chats: components["schemas"]["Chat"][];
|
|
14
14
|
hasMore: boolean;
|
package/dist/chat/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { createChatClient } from '../chunk-
|
|
1
|
+
export { createChatClient } from '../chunk-2CTHLPTU.js';
|
|
2
2
|
import '../chunk-4RC5E3SL.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-XI6R76X3.js';
|
|
4
|
+
import '../chunk-FL54VJ35.js';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
package/dist/chat/types.d.cts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import 'zod';
|
|
2
|
-
import '../types-
|
|
3
|
-
export { A as AgentSettings, g as AskUserQuestionAnswers, h as Chat, i as ChatMessage, C as ChatRequest, j as ChatWithMessage, k as ChatWithMessages, a as GetChatPath, G as GetHistoryQuery, b as GetVotesQuery, H as HistoryResponse, M as MessageStatus, l as TextPart, m as ToolInfo, n as ToolPermissionValue, T as ToolsListResponse, d as UpdateAgentSettingsRequest, f as UpdateUserAgentSettingsRequest, U as UsageResponse, e as UserAgentSettings, o as UserMessage, p as Vote, V as VoteRequest, q as VotesResponse, r as askUserQuestionAnswersSchema } from '../types-
|
|
2
|
+
import '../types-jKnx7Tm_.cjs';
|
|
3
|
+
export { A as AgentSettings, g as AskUserQuestionAnswers, h as Chat, i as ChatMessage, C as ChatRequest, j as ChatWithMessage, k as ChatWithMessages, a as GetChatPath, G as GetHistoryQuery, b as GetVotesQuery, H as HistoryResponse, M as MessageStatus, l as TextPart, m as ToolInfo, n as ToolPermissionValue, T as ToolsListResponse, d as UpdateAgentSettingsRequest, f as UpdateUserAgentSettingsRequest, U as UsageResponse, e as UserAgentSettings, o as UserMessage, p as Vote, V as VoteRequest, q as VotesResponse, r as askUserQuestionAnswersSchema } from '../types-Bc-H4gfv.cjs';
|
package/dist/chat/types.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import 'zod';
|
|
2
|
-
import '../types-
|
|
3
|
-
export { A as AgentSettings, g as AskUserQuestionAnswers, h as Chat, i as ChatMessage, C as ChatRequest, j as ChatWithMessage, k as ChatWithMessages, a as GetChatPath, G as GetHistoryQuery, b as GetVotesQuery, H as HistoryResponse, M as MessageStatus, l as TextPart, m as ToolInfo, n as ToolPermissionValue, T as ToolsListResponse, d as UpdateAgentSettingsRequest, f as UpdateUserAgentSettingsRequest, U as UsageResponse, e as UserAgentSettings, o as UserMessage, p as Vote, V as VoteRequest, q as VotesResponse, r as askUserQuestionAnswersSchema } from '../types-
|
|
2
|
+
import '../types-jKnx7Tm_.js';
|
|
3
|
+
export { A as AgentSettings, g as AskUserQuestionAnswers, h as Chat, i as ChatMessage, C as ChatRequest, j as ChatWithMessage, k as ChatWithMessages, a as GetChatPath, G as GetHistoryQuery, b as GetVotesQuery, H as HistoryResponse, M as MessageStatus, l as TextPart, m as ToolInfo, n as ToolPermissionValue, T as ToolsListResponse, d as UpdateAgentSettingsRequest, f as UpdateUserAgentSettingsRequest, U as UsageResponse, e as UserAgentSettings, o as UserMessage, p as Vote, V as VoteRequest, q as VotesResponse, r as askUserQuestionAnswersSchema } from '../types-JvKRS8Qd.js';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { suggestionsApiResponseSchema } from './chunk-4RC5E3SL.js';
|
|
2
|
-
import { createOpenapiFetchClient
|
|
2
|
+
import { createOpenapiFetchClient } from './chunk-XI6R76X3.js';
|
|
3
|
+
import { KeboolaHttpHeader } from './chunk-FL54VJ35.js';
|
|
3
4
|
import { z } from 'zod';
|
|
4
5
|
|
|
5
6
|
var agentSettingsSchema = z.object({
|
|
@@ -25,11 +26,17 @@ var toolInfoSchema = z.object({
|
|
|
25
26
|
var toolsListResponseSchema = z.object({
|
|
26
27
|
tools: z.array(toolInfoSchema)
|
|
27
28
|
});
|
|
28
|
-
var createChatClient = ({
|
|
29
|
+
var createChatClient = ({
|
|
30
|
+
baseUrl,
|
|
31
|
+
middlewares,
|
|
32
|
+
storageApiUrl,
|
|
33
|
+
token
|
|
34
|
+
}) => {
|
|
29
35
|
const client = createOpenapiFetchClient({
|
|
30
36
|
baseUrl,
|
|
31
37
|
headers: new Headers({
|
|
32
|
-
[KeboolaHttpHeader.STORAGE_API_URL]: storageApiUrl
|
|
38
|
+
[KeboolaHttpHeader.STORAGE_API_URL]: storageApiUrl,
|
|
39
|
+
[KeboolaHttpHeader.STORAGE_API_TOKEN]: token
|
|
33
40
|
}),
|
|
34
41
|
middlewares
|
|
35
42
|
});
|
|
@@ -126,5 +133,5 @@ var createChatClient = ({ baseUrl, middlewares, storageApiUrl }) => {
|
|
|
126
133
|
};
|
|
127
134
|
|
|
128
135
|
export { createChatClient };
|
|
129
|
-
//# sourceMappingURL=chunk-
|
|
130
|
-
//# sourceMappingURL=chunk-
|
|
136
|
+
//# sourceMappingURL=chunk-2CTHLPTU.js.map
|
|
137
|
+
//# sourceMappingURL=chunk-2CTHLPTU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/clients/chat/chatClient.ts"],"names":[],"mappings":"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","file":"chunk-2CTHLPTU.js","sourcesContent":["import { z } from 'zod';\n\nimport { KeboolaHttpHeader } from '../../constants';\nimport { createOpenapiFetchClient } from '../../fetchClient';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type { SuggestionsApiResponse, SuggestionsRequestBody } from './suggestions';\nimport { suggestionsApiResponseSchema } from './suggestions';\nimport type {\n AgentSettings,\n ChatRequest,\n GetChatPath,\n GetHistoryQuery,\n GetVotesQuery,\n ToolsListResponse,\n UpdateAgentSettingsRequest,\n UpdateUserAgentSettingsRequest,\n UsageResponse,\n UserAgentSettings,\n VoteRequest,\n} from './types';\n\nconst agentSettingsSchema = z.object({\n projectId: z.string(),\n customInstructions: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nconst toolPermissionValueSchema = z.enum(['always_allow', 'always_ask', 'blocked']);\n\nconst userAgentSettingsSchema = z.object({\n projectId: z.string(),\n userId: z.string(),\n customInstructions: z.string().nullable(),\n toolPermissions: z.record(z.string(), toolPermissionValueSchema).nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nconst toolInfoSchema = z.object({\n name: z.string(),\n description: z.string(),\n readOnly: z.boolean(),\n});\n\nconst toolsListResponseSchema = z.object({\n tools: z.array(toolInfoSchema),\n});\n\ntype ChatClientOptions = ClientInitOptions & {\n storageApiUrl: string;\n};\n\nexport const createChatClient = ({\n baseUrl,\n middlewares,\n storageApiUrl,\n token,\n}: ChatClientOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n headers: new Headers({\n [KeboolaHttpHeader.STORAGE_API_URL]: storageApiUrl,\n [KeboolaHttpHeader.STORAGE_API_TOKEN]: token,\n }),\n middlewares,\n });\n\n const getHistory = async (params?: GetHistoryQuery) => {\n const { data } = await client.get('/history', { query: params });\n return data;\n };\n\n const getChat = async (chatId: GetChatPath['id'], signal?: AbortSignal) => {\n const { data } = await client.get('/chat/{id}', { path: { id: chatId } }, { signal });\n return data;\n };\n\n const deleteChat = async (chatId: string) => {\n const { data } = await client.delete('/chat', { query: { id: chatId } });\n return data;\n };\n\n const getVotes = async (chatId: GetVotesQuery['chatId']) => {\n const { data } = await client.get('/vote', { query: { chatId } });\n return data;\n };\n\n const submitVote = async (params: VoteRequest) => {\n await client.patch('/vote', { body: params });\n };\n\n const createChat = async (request: ChatRequest) => {\n const { response } = await client.post('/chat', { body: request });\n return response;\n };\n\n const getUsage = async (signal?: AbortSignal): Promise<UsageResponse> => {\n const { data } = await client.get('/usage', {}, { signal });\n return data;\n };\n\n const getSuggestions = async (\n request: SuggestionsRequestBody,\n signal?: AbortSignal,\n ): Promise<SuggestionsApiResponse> => {\n const { data } = await client.post('/suggestions', { body: request }, { signal });\n\n const result = suggestionsApiResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid suggestions response format');\n }\n\n return result.data;\n };\n\n const getAgentSettings = async (signal?: AbortSignal): Promise<AgentSettings> => {\n const { data } = await client.get('/settings', {}, { signal });\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const updateAgentSettings = async (\n request: UpdateAgentSettingsRequest,\n signal?: AbortSignal,\n ): Promise<AgentSettings> => {\n const { data } = await client.patch('/settings', { body: request }, { signal });\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const getUserAgentSettings = async (signal?: AbortSignal): Promise<UserAgentSettings> => {\n const { data } = await client.get('/settings/user', {}, { signal });\n const result = userAgentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user agent settings response format');\n }\n return result.data;\n };\n\n const updateUserAgentSettings = async (\n request: UpdateUserAgentSettingsRequest,\n signal?: AbortSignal,\n ): Promise<UserAgentSettings> => {\n const { data } = await client.patch('/settings/user', { body: request }, { signal });\n const result = userAgentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user agent settings response format');\n }\n return result.data;\n };\n\n const getToolsList = async (signal?: AbortSignal): Promise<ToolsListResponse> => {\n const { data } = await client.get('/settings/tools', {}, { signal });\n const result = toolsListResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid tools list response format');\n }\n return result.data;\n };\n\n return {\n getHistory,\n getChat,\n deleteChat,\n createChat,\n getVotes,\n submitVote,\n getUsage,\n getSuggestions,\n getAgentSettings,\n updateAgentSettings,\n getUserAgentSettings,\n updateUserAgentSettings,\n getToolsList,\n };\n};\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk3CIPWA33_cjs = require('./chunk-3CIPWA33.cjs');
|
|
4
4
|
|
|
5
5
|
// src/clients/status/statusClient.ts
|
|
6
6
|
var createStatusClient = ({ baseUrl, middlewares }) => {
|
|
7
|
-
const client =
|
|
7
|
+
const client = chunk3CIPWA33_cjs.createGenericFetchClient({
|
|
8
8
|
baseUrl,
|
|
9
9
|
middlewares
|
|
10
10
|
});
|
|
@@ -18,5 +18,5 @@ var createStatusClient = ({ baseUrl, middlewares }) => {
|
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
exports.createStatusClient = createStatusClient;
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
21
|
+
//# sourceMappingURL=chunk-2EWL5BAZ.cjs.map
|
|
22
|
+
//# sourceMappingURL=chunk-2EWL5BAZ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/clients/status/statusClient.ts"],"names":["createGenericFetchClient"],"mappings":";;;;;AAKO,IAAM,kBAAA,GAAqB,CAAC,EAAE,OAAA,EAAS,aAAY,
|
|
1
|
+
{"version":3,"sources":["../src/clients/status/statusClient.ts"],"names":["createGenericFetchClient"],"mappings":";;;;;AAKO,IAAM,kBAAA,GAAqB,CAAC,EAAE,OAAA,EAAS,aAAY,KAAwC;AAChG,EAAA,MAAM,SAASA,0CAAA,CAAyB;AAAA,IACtC,OAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,UAAA,GAAa,OAAO,MAAA,KAAyB;AACjD,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA,CAAmB,eAAA,EAAiB,EAAC,EAAG,EAAE,MAAA,EAAQ,CAAA;AAChF,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO;AAAA,IACL;AAAA,GACF;AACF","file":"chunk-2EWL5BAZ.cjs","sourcesContent":["import { createGenericFetchClient } from '../../fetchClient';\nimport type { ClientInitOptions } from '../types';\n\nimport type { StatusSummary } from './types';\n\nexport const createStatusClient = ({ baseUrl, middlewares }: Omit<ClientInitOptions, 'token'>) => {\n const client = createGenericFetchClient({\n baseUrl,\n middlewares,\n });\n\n const getSummary = async (signal?: AbortSignal) => {\n const { data } = await client.get<StatusSummary>('/summary.json', {}, { signal });\n return data;\n };\n\n return {\n getSummary,\n };\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createGenericFetchClient } from './chunk-
|
|
1
|
+
import { createGenericFetchClient } from './chunk-XI6R76X3.js';
|
|
2
2
|
|
|
3
3
|
// src/clients/status/statusClient.ts
|
|
4
4
|
var createStatusClient = ({ baseUrl, middlewares }) => {
|
|
@@ -16,5 +16,5 @@ var createStatusClient = ({ baseUrl, middlewares }) => {
|
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
export { createStatusClient };
|
|
19
|
-
//# sourceMappingURL=chunk-
|
|
20
|
-
//# sourceMappingURL=chunk-
|
|
19
|
+
//# sourceMappingURL=chunk-2NLVV2MF.js.map
|
|
20
|
+
//# sourceMappingURL=chunk-2NLVV2MF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/clients/status/statusClient.ts"],"names":[],"mappings":";;;AAKO,IAAM,kBAAA,GAAqB,CAAC,EAAE,OAAA,EAAS,aAAY,
|
|
1
|
+
{"version":3,"sources":["../src/clients/status/statusClient.ts"],"names":[],"mappings":";;;AAKO,IAAM,kBAAA,GAAqB,CAAC,EAAE,OAAA,EAAS,aAAY,KAAwC;AAChG,EAAA,MAAM,SAAS,wBAAA,CAAyB;AAAA,IACtC,OAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,UAAA,GAAa,OAAO,MAAA,KAAyB;AACjD,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA,CAAmB,eAAA,EAAiB,EAAC,EAAG,EAAE,MAAA,EAAQ,CAAA;AAChF,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO;AAAA,IACL;AAAA,GACF;AACF","file":"chunk-2NLVV2MF.js","sourcesContent":["import { createGenericFetchClient } from '../../fetchClient';\nimport type { ClientInitOptions } from '../types';\n\nimport type { StatusSummary } from './types';\n\nexport const createStatusClient = ({ baseUrl, middlewares }: Omit<ClientInitOptions, 'token'>) => {\n const client = createGenericFetchClient({\n baseUrl,\n middlewares,\n });\n\n const getSummary = async (signal?: AbortSignal) => {\n const { data } = await client.get<StatusSummary>('/summary.json', {}, { signal });\n return data;\n };\n\n return {\n getSummary,\n };\n};\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var chunk4I6TJWBG_cjs = require('./chunk-4I6TJWBG.cjs');
|
|
3
4
|
var qs = require('qs');
|
|
4
5
|
|
|
5
6
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -18,23 +19,6 @@ var ApiError = class extends Error {
|
|
|
18
19
|
this.data = data;
|
|
19
20
|
}
|
|
20
21
|
};
|
|
21
|
-
|
|
22
|
-
// src/constants.ts
|
|
23
|
-
var KeboolaHttpHeader = {
|
|
24
|
-
STORAGE_API_TOKEN: "X-StorageApi-Token",
|
|
25
|
-
MANAGEMENT_API_TOKEN: "X-Kbc-Manageapitoken",
|
|
26
|
-
STORAGE_API_URL: "x-storageapi-url"
|
|
27
|
-
};
|
|
28
|
-
var HttpStatus = {
|
|
29
|
-
NO_CONTENT: 204,
|
|
30
|
-
BAD_REQUEST: 400,
|
|
31
|
-
UNPROCESSABLE_ENTITY: 422,
|
|
32
|
-
INTERNAL_SERVER_ERROR: 500,
|
|
33
|
-
BAD_GATEWAY: 502,
|
|
34
|
-
SERVICE_UNAVAILABLE: 503,
|
|
35
|
-
GATEWAY_TIMEOUT: 504
|
|
36
|
-
};
|
|
37
|
-
var ENCRYPTED_VALUE_PREFIX = "KBC::";
|
|
38
22
|
var normalizeBaseUrl = (baseUrl) => baseUrl.replace(/\/+$/, "");
|
|
39
23
|
var HttpHeader = {
|
|
40
24
|
CONTENT_TYPE: "content-type",
|
|
@@ -55,7 +39,7 @@ function removeUndefined(obj) {
|
|
|
55
39
|
return objCopy;
|
|
56
40
|
}
|
|
57
41
|
var parseData = async (response) => {
|
|
58
|
-
if (response.status === HttpStatus.NO_CONTENT) return null;
|
|
42
|
+
if (response.status === chunk4I6TJWBG_cjs.HttpStatus.NO_CONTENT) return null;
|
|
59
43
|
const contentType = response.headers.get(HttpHeader.CONTENT_TYPE);
|
|
60
44
|
if (contentType && contentType == HttpContentType.JSON) {
|
|
61
45
|
return response.json();
|
|
@@ -203,11 +187,8 @@ var createGenericFetchClient = (defaultOptions) => createFetchClient(defaultOpti
|
|
|
203
187
|
var createOpenapiFetchClient = (defaultOptions) => createFetchClient(defaultOptions);
|
|
204
188
|
|
|
205
189
|
exports.ApiError = ApiError;
|
|
206
|
-
exports.ENCRYPTED_VALUE_PREFIX = ENCRYPTED_VALUE_PREFIX;
|
|
207
190
|
exports.HttpContentType = HttpContentType;
|
|
208
191
|
exports.HttpHeader = HttpHeader;
|
|
209
|
-
exports.HttpStatus = HttpStatus;
|
|
210
|
-
exports.KeboolaHttpHeader = KeboolaHttpHeader;
|
|
211
192
|
exports.createGenericFetchClient = createGenericFetchClient;
|
|
212
193
|
exports.createOpenapiFetchClient = createOpenapiFetchClient;
|
|
213
194
|
exports.defaultValidateStatus = defaultValidateStatus;
|
|
@@ -216,5 +197,5 @@ exports.isApiError = isApiError;
|
|
|
216
197
|
exports.isFetchClientError = isFetchClientError;
|
|
217
198
|
exports.normalizeBaseUrl = normalizeBaseUrl;
|
|
218
199
|
exports.parseContentDispositionHeader = parseContentDispositionHeader;
|
|
219
|
-
//# sourceMappingURL=chunk-
|
|
220
|
-
//# sourceMappingURL=chunk-
|
|
200
|
+
//# sourceMappingURL=chunk-3CIPWA33.cjs.map
|
|
201
|
+
//# sourceMappingURL=chunk-3CIPWA33.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors/ApiError.ts","../src/fetchClient/createFetchClient/utils.ts","../src/fetchClient/createFetchClient/createFetchClient.ts","../src/fetchClient/createGenericFetchClient.ts","../src/fetchClient/createOpenapiFetchClient.ts"],"names":["HttpStatus","qs"],"mappings":"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","file":"chunk-3CIPWA33.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","import type { IStringifyOptions } from 'qs';\nimport qs from 'qs';\n\nimport { HttpStatus } from '../../constants';\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,4 +1,5 @@
|
|
|
1
|
-
import { createOpenapiFetchClient, parseContentDispositionHeader, HttpHeader, isApiError
|
|
1
|
+
import { createOpenapiFetchClient, parseContentDispositionHeader, HttpHeader, isApiError } from './chunk-XI6R76X3.js';
|
|
2
|
+
import { KeboolaHttpHeader, HttpStatus } from './chunk-FL54VJ35.js';
|
|
2
3
|
import * as z from 'zod';
|
|
3
4
|
import dayjs from 'dayjs';
|
|
4
5
|
import utc from 'dayjs/plugin/utc';
|
|
@@ -93,10 +94,11 @@ var prepareAppRun = (appRun) => {
|
|
|
93
94
|
};
|
|
94
95
|
|
|
95
96
|
// src/clients/dataScience/dataScienceClient.ts
|
|
96
|
-
var createDataScienceClient = ({ baseUrl, middlewares }) => {
|
|
97
|
+
var createDataScienceClient = ({ baseUrl, middlewares, token }) => {
|
|
97
98
|
const client = createOpenapiFetchClient({
|
|
98
99
|
baseUrl,
|
|
99
|
-
middlewares
|
|
100
|
+
middlewares,
|
|
101
|
+
headers: { [KeboolaHttpHeader.STORAGE_API_TOKEN]: token }
|
|
100
102
|
});
|
|
101
103
|
const getAppRuns = async (appId, query, signal) => {
|
|
102
104
|
const { data } = await client.get("/apps/{appId}/runs", { path: { appId }, query }, { signal });
|
|
@@ -216,5 +218,5 @@ var createDataScienceClient = ({ baseUrl, middlewares }) => {
|
|
|
216
218
|
};
|
|
217
219
|
|
|
218
220
|
export { createDataScienceClient, parseLogLines };
|
|
219
|
-
//# sourceMappingURL=chunk-
|
|
220
|
-
//# sourceMappingURL=chunk-
|
|
221
|
+
//# sourceMappingURL=chunk-4FU45NEU.js.map
|
|
222
|
+
//# sourceMappingURL=chunk-4FU45NEU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/clients/dataScience/schemas.ts","../src/clients/dataScience/utils.ts","../src/clients/dataScience/dataScienceClient.ts"],"names":[],"mappings":";;;;;;AAEO,IAAM,YAAc,CAAA,CAAA,MAAA,CAAO;AAAA,EAChC,SAAW,CAAA,CAAA,MAAA,CAAO;AAAA,IAChB,MAAQ,CAAA,CAAA,MAAA;AAAO,GAChB;AACH,CAAC,CAAA;ACDD,KAAA,CAAM,OAAO,GAAG,CAAA;AAOhB,IAAM,mBAAA,GAAsB,gDAAA;AAC5B,IAAM,2BAAA,GAA8B,sDAAA;AAEpC,IAAM,aAAA,GAAgB,CAAC,IAAA,KAAkC;AACvD,EAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,GAAG,GAAG,OAAO,IAAA;AAElC,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI;AACF,IAAA,MAAA,GAAS,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,EAC1B,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,KAAW,MAAM,OAAO,IAAA;AAE1D,EAAA,MAAM,MAAA,GAAS,MAAA;AACf,EAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAI,MAAA;AAE/B,EAAA,IAAI,OAAO,SAAA,KAAc,QAAA,IAAY,OAAO,OAAA,KAAY,UAAU,OAAO,IAAA;AAEzE,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AAEA,IAAM,kBAAA,GAAqB,CAAC,IAAA,KAA2B;AACrD,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,2BAA2B,CAAA;AACpD,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,OAAO,EAAE,SAAA,EAAW,KAAA,CAAM,CAAC,CAAA,EAAI,OAAA,EAAS,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAA,EAAE;AAAA,EACtE;AACA,EAAA,OAAO,EAAE,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,IAAA,EAAK;AAC1C,CAAA;AAEO,IAAM,eAAe,CAAC,IAAA,KAC3B,cAAc,IAAI,CAAA,IAAK,mBAAmB,IAAI,CAAA;AAEhD,IAAM,oBAAA,GAAuB,CAAC,GAAA,KAAkD;AAC9E,EAAA,IAAI,OAAO,GAAA,CAAI,OAAA,KAAY,QAAA,EAAU,OAAO,IAAA;AAC5C,EAAA,OAAO;AAAA,IACL,WAAW,OAAO,GAAA,CAAI,SAAA,KAAc,QAAA,GAAW,IAAI,SAAA,GAAY,IAAA;AAAA,IAC/D,SAAS,GAAA,CAAI;AAAA,GACf;AACF,CAAA;AAEA,IAAM,aAAA,GAAgB,CAAC,KAAA,KACrB,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,IAAQ,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AAE9D,IAAM,aAAA,GAAgB,CAAC,GAAA,KAA6B;AACzD,EAAA,IAAI,QAAQ,IAAA,IAAQ,GAAA,KAAQ,UAAa,GAAA,KAAQ,EAAA,SAAW,EAAC;AAE7D,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,IAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,CAAC,IAAA,KAAS;AAC3B,MAAA,IAAI,OAAO,IAAA,KAAS,QAAA,EAAU,OAAO,IAAA,KAAS,EAAA,GAAK,EAAC,GAAI,CAAC,YAAA,CAAa,IAAI,CAAC,CAAA;AAC3E,MAAA,IAAI,aAAA,CAAc,IAAI,CAAA,EAAG;AACvB,QAAA,MAAM,KAAA,GAAQ,qBAAqB,IAAI,CAAA;AACvC,QAAA,OAAO,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAC;AAAA,MAC5B;AACA,MAAA,OAAO,EAAC;AAAA,IACV,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,aAAA,CAAc,GAAG,CAAA,EAAG;AACtB,IAAA,MAAM,KAAA,GAAQ,qBAAqB,GAAG,CAAA;AACtC,IAAA,OAAO,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAC;AAAA,EAC5B;AAEA,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,EAAU,OAAO,EAAC;AAErC,EAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA;AAC5B,EAAA,MAAM,UAAsB,EAAC;AAC7B,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,SAAS,EAAA,EAAI;AACjB,IAAA,OAAA,CAAQ,IAAA,CAAK,YAAA,CAAa,IAAI,CAAC,CAAA;AAAA,EACjC;AACA,EAAA,OAAO,OAAA;AACT;AAEO,IAAM,qBAAA,GAAwB,CAAC,IAAA,KAAkB;AACtD,EAAA,MAAM,OAAA,GAAU,cAAc,IAAI,CAAA;AAClC,EAAA,KAAA,IAAS,IAAI,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC5C,IAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,IAAI,KAAA,CAAM,SAAA,EAAW,OAAO,KAAA,CAAM,SAAA;AAGlC,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,mBAAmB,CAAA;AACrD,IAAA,IAAI,KAAA,EAAO,OAAO,KAAA,CAAM,CAAC,CAAA;AAAA,EAC3B;AACA,EAAA,OAAO,IAAA;AACT,CAAA;AAEO,IAAM,yBAAA,GAA4B,CAAC,SAAA,KAA6B;AACrE,EAAA,IAAI,SAAA,KAAc,MAAM,OAAO,IAAA;AAC/B,EAAA,OAAO,KAAA,CAAM,SAAS,CAAA,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAA,EAAG,QAAQ,CAAA,CAAE,GAAA,EAAI,CAAE,MAAA,EAAO;AAC9D,CAAA;AAEO,IAAM,aAAA,GAAgB,CAAC,MAAA,KAAsB;AAClD,EAAA,OAAO;AAAA,IACL,GAAG,MAAA;AAAA,IACH,KAAA,EAAO,MAAA,CAAO,KAAA,KAAU,MAAA,CAAO,YAAY,UAAA,GAAa,SAAA;AAAA;AAAA,GAC1D;AACF,CAAA;;;AC/EO,IAAM,0BAA0B,CAAC,EAAE,OAAA,EAAS,WAAA,EAAa,OAAM,KAAyB;AAC7F,EAAA,MAAM,SAAS,wBAAA,CAAgC;AAAA,IAC7C,OAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAS,EAAE,CAAC,iBAAA,CAAkB,iBAAiB,GAAG,KAAA;AAAM,GACzD,CAAA;AAED,EAAA,MAAM,UAAA,GAAa,OACjB,KAAA,EACA,KAAA,EACA,MAAA,KACG;AACH,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,IAAI,oBAAA,EAAsB,EAAE,IAAA,EAAM,EAAE,OAAM,EAAG,KAAA,EAAM,EAAG,EAAE,QAAQ,CAAA;AAE9F,IAAA,OAAO,IAAA,CAAK,IAAI,aAAa,CAAA;AAAA,EAC/B,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,OAChB,KAAA,EACA,KAAA,EACA,MAAA,KACG;AACH,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA;AAAA,MAC5B,4BAAA;AAAA,MACA,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,OAAM,EAAE;AAAA,MACzB,EAAE,MAAA;AAAO,KACX;AAEA,IAAA,OAAO,cAAc,IAAI,CAAA;AAAA,EAC3B,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,OACzB,EAAA,EACA,MAAA,KACG;AACH,IAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,MAAM,MAAA,CAAO,GAAA;AAAA,MACtC,6BAAA;AAAA,MACA,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,IAAG,EAAE;AAAA,MACtB,EAAE,MAAA;AAAO,KACX;AAEA,IAAA,MAAM,kBAAA,GAAqB,6BAAA;AAAA,MACzB,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,UAAA,CAAW,mBAAmB;AAAA,KACrD;AAEA,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,IAAA;AAAA,MACN,QAAA,EAAU,oBAAoB,QAAA,IAAY;AAAA,KAC5C;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,OACrB,EAAA,EACA,EAAE,OAAO,MAAA,EAAO,GAA+D,EAAC,KAC7E;AACH,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA;AAAA,QAC5B,yBAAA;AAAA,QACA;AAAA,UACE,KAAA;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,KAAA,EAAO;AAAA;AACT,SACF;AAAA,QACA;AAAA,UACE;AAAA;AACF,OACF;AAEA,MAAA,MAAM,IAAA,GAAO,IAAA,KAAS,EAAA,GAAK,IAAA,GAAO,IAAA;AAClC,MAAA,MAAM,gBAAA,GAAmB,sBAAsB,IAAI,CAAA;AACnD,MAAA,MAAM,gBAAA,GAAmB,0BAA0B,gBAAgB,CAAA;AAEnE,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,cAAc,IAAI,CAAA;AAAA,QAC3B;AAAA,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,IACE,WAAW,KAAK,CAAA,IAChB,KAAA,CAAM,QAAA,CAAS,WAAW,UAAA,CAAW,WAAA,IACrC,SAAA,CAAU,SAAA,CAAU,MAAM,IAAI,CAAA,CAAE,IAAA,EAAM,OAAA,EAAS,SAAS,oBAAA,EACxD;AACA,QAAA,OAAO,EAAE,OAAA,EAAS,EAAC,EAAG,kBAAkB,IAAA,EAAK;AAAA,MAC/C;AACA,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,OAAO,KAAA,EAAqB,MAAA,KAAyB;AACnE,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA,CAAI,OAAA,EAAS,EAAE,KAAA,EAAM,EAAG,EAAE,MAAA,EAAQ,CAAA;AAEhE,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,OAAO,KAAA,EAAgC,MAAA,KAAyB;AAC7E,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,OAAO,GAAA,CAAI,eAAA,EAAiB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAM,EAAE,EAAG,EAAE,QAAQ,CAAA;AAElF,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,OAAO,IAAA,EAAyB,MAAA,KAAyB;AACzE,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,EAAE,IAAA,EAAK,EAAG,EAAE,MAAA,EAAQ,CAAA;AAEhE,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,OACf,KAAA,EACA,IAAA,EACA,MAAA,KACG;AACH,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,KAAA;AAAA,MAC5B,eAAA;AAAA,MACA;AAAA,QACE,IAAA,EAAM,EAAE,KAAA,EAAa;AAAA,QACrB;AAAA,OACF;AAAA,MACA,EAAE,MAAA;AAAO,KACX;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,OAAO,KAAA,EAAmC,MAAA,KAAyB;AACnF,IAAA,OAAO,MAAA,CAAO,MAAA,CAAO,eAAA,EAAiB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAM,EAAE,EAAG,EAAE,MAAA,EAAQ,CAAA;AAAA,EACvE,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,OAAO,KAAA,EAAwC,MAAA,KAAyB;AAC7F,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,OAAO,GAAA,CAAI,wBAAA,EAA0B,EAAE,IAAA,EAAM,EAAE,KAAA,EAAM,EAAE,EAAG,EAAE,QAAQ,CAAA;AAE3F,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,OACvB,KAAA,EACA,MAAA,KACG;AACH,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,IAAA;AAAA,MAC5B,8BAAA;AAAA,MACA,EAAE,IAAA,EAAM,EAAE,KAAA,EAAM,EAAE;AAAA,MAClB,EAAE,MAAA;AAAO,KACX;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,OAAO,MAAA,KAAyB;AAClD,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA,CAAI,WAAA,EAAa,EAAC,EAAG,EAAE,MAAA,EAAQ,CAAA;AAE7D,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,OAAO,KAAA,EAAgC,MAAA,KAAyB;AACjF,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,OAAO,GAAA,CAAI,oBAAA,EAAsB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAM,EAAE,EAAG,EAAE,QAAQ,CAAA;AAEvF,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,SAAA;AAAA,IACA,kBAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,gBAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-4FU45NEU.js","sourcesContent":["import * as z from 'zod';\n\nexport const TailError = z.object({\n context: z.object({\n code: z.string(),\n }),\n});\n","import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\n\nimport type { RawAppRun } from './types';\n\ndayjs.extend(utc);\n\nexport type LogEntry = {\n timestamp: string | null;\n message: string;\n};\n\nconst ISO_TIMESTAMP_REGEX = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z/;\nconst LEADING_ISO_TIMESTAMP_REGEX = /^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z)\\s?/;\n\nconst tryParseJsonl = (line: string): LogEntry | null => {\n if (!line.startsWith('{')) return null;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(line);\n } catch {\n return null;\n }\n\n if (typeof parsed !== 'object' || parsed === null) return null;\n\n const record = parsed as Record<string, unknown>;\n const { timestamp, message } = record;\n\n if (typeof timestamp !== 'string' || typeof message !== 'string') return null;\n\n return {\n timestamp,\n message,\n };\n};\n\nconst parsePlainTextLine = (line: string): LogEntry => {\n const match = line.match(LEADING_ISO_TIMESTAMP_REGEX);\n if (match) {\n return { timestamp: match[1]!, message: line.slice(match[0].length) };\n }\n return { timestamp: null, message: line };\n};\n\nexport const parseLogLine = (line: string): LogEntry =>\n tryParseJsonl(line) ?? parsePlainTextLine(line);\n\nconst toLogEntryFromObject = (raw: Record<string, unknown>): LogEntry | null => {\n if (typeof raw.message !== 'string') return null;\n return {\n timestamp: typeof raw.timestamp === 'string' ? raw.timestamp : null,\n message: raw.message,\n };\n};\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport const parseLogLines = (raw: unknown): LogEntry[] => {\n if (raw === null || raw === undefined || raw === '') return [];\n\n if (Array.isArray(raw)) {\n return raw.flatMap((item) => {\n if (typeof item === 'string') return item === '' ? [] : [parseLogLine(item)];\n if (isPlainObject(item)) {\n const entry = toLogEntryFromObject(item);\n return entry ? [entry] : [];\n }\n return [];\n });\n }\n\n if (isPlainObject(raw)) {\n const entry = toLogEntryFromObject(raw);\n return entry ? [entry] : [];\n }\n\n if (typeof raw !== 'string') return [];\n\n const lines = raw.split('\\n');\n const entries: LogEntry[] = [];\n for (const line of lines) {\n if (line === '') continue;\n entries.push(parseLogLine(line));\n }\n return entries;\n};\n\nexport const parseLastLogTimestamp = (logs: unknown) => {\n const entries = parseLogLines(logs);\n for (let i = entries.length - 1; i >= 0; i--) {\n const entry = entries[i];\n if (!entry) continue;\n if (entry.timestamp) return entry.timestamp;\n\n // A plain-text line may carry a timestamp embedded mid-line (legacy format).\n const match = entry.message.match(ISO_TIMESTAMP_REGEX);\n if (match) return match[0];\n }\n return null;\n};\n\nexport const calculateNextLogTimestamp = (timestamp: string | null) => {\n if (timestamp === null) return null;\n return dayjs(timestamp).utc().add(1, 'second').utc().format();\n};\n\nexport const prepareAppRun = (appRun: RawAppRun) => {\n return {\n ...appRun,\n state: appRun.state ?? (appRun.stoppedAt ? 'finished' : 'running'), // fallback state for historic non migrated runs\n };\n};\n","import { HttpStatus, KeboolaHttpHeader } from '../../constants';\nimport {\n createOpenapiFetchClient,\n HttpHeader,\n isApiError,\n parseContentDispositionHeader,\n} from '../../fetchClient';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport { TailError } from './schemas';\nimport type {\n CreateDataAppBody,\n DeleteDataAppPath,\n GetAppsQuery,\n GetDataAppLogsDownloadPath,\n GetDataAppLogsTailPath,\n GetDataAppLogsTailQuery,\n GetDataAppPasswordPath,\n GetDataAppPath,\n GetDataAppRunPath,\n GetDataAppRunsPath,\n GetDataAppRunsQuery,\n GetSandboxPath,\n PatchDataAppBody,\n PatchDataAppPath,\n ResetDataAppPasswordPath,\n} from './types';\nimport {\n calculateNextLogTimestamp,\n parseLastLogTimestamp,\n parseLogLines,\n prepareAppRun,\n} from './utils';\n\nexport const createDataScienceClient = ({ baseUrl, middlewares, token }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: { [KeboolaHttpHeader.STORAGE_API_TOKEN]: token },\n });\n\n const getAppRuns = async (\n appId: GetDataAppRunsPath['appId'],\n query?: GetDataAppRunsQuery,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get('/apps/{appId}/runs', { path: { appId }, query }, { signal });\n\n return data.map(prepareAppRun);\n };\n\n const getAppRun = async (\n appId: GetDataAppRunPath['appId'],\n runId: GetDataAppRunPath['runId'],\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/apps/{appId}/runs/{runId}',\n { path: { appId, runId } },\n { signal },\n );\n\n return prepareAppRun(data);\n };\n\n const getAppLogsDownload = async (\n id: GetDataAppLogsDownloadPath['appId'],\n signal?: AbortSignal,\n ) => {\n const { data, response } = await client.get(\n '/apps/{appId}/logs/download',\n { path: { appId: id } },\n { signal },\n );\n\n const contentDisposition = parseContentDispositionHeader(\n response.headers.get(HttpHeader.CONTENT_DISPOSITION),\n );\n\n return {\n logs: data,\n fileName: contentDisposition?.filename ?? 'logs.txt',\n };\n };\n\n const getAppLogsTail = async (\n id: GetDataAppLogsTailPath['appId'],\n { query, signal }: { query?: GetDataAppLogsTailQuery; signal?: AbortSignal } = {},\n ) => {\n try {\n const { data } = await client.get(\n '/apps/{appId}/logs/tail',\n {\n query,\n path: {\n appId: id,\n },\n },\n {\n signal,\n },\n );\n\n const logs = data === '' ? null : data;\n const lastLogTimestamp = parseLastLogTimestamp(logs);\n const nextLogTimestamp = calculateNextLogTimestamp(lastLogTimestamp);\n\n return {\n entries: parseLogLines(logs),\n nextLogTimestamp: nextLogTimestamp,\n };\n } catch (error) {\n if (\n isApiError(error) &&\n error.response.status === HttpStatus.BAD_REQUEST &&\n TailError.safeParse(error.data).data?.context?.code === 'apps.appNotRunning'\n ) {\n return { entries: [], nextLogTimestamp: null };\n }\n throw error;\n }\n };\n\n const getApps = async (query: GetAppsQuery, signal?: AbortSignal) => {\n const { data } = await client.get('/apps', { query }, { signal });\n\n return data;\n };\n\n const getApp = async (appId: GetDataAppPath['appId'], signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}', { path: { appId } }, { signal });\n\n return data;\n };\n\n const createApp = async (body: CreateDataAppBody, signal?: AbortSignal) => {\n const { data } = await client.post('/apps', { body }, { signal });\n\n return data;\n };\n\n const patchApp = async (\n appId: PatchDataAppPath['appId'],\n body: PatchDataAppBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.patch(\n '/apps/{appId}',\n {\n path: { appId: appId },\n body: body,\n },\n { signal },\n );\n return data;\n };\n\n const deleteApp = async (appId: DeleteDataAppPath['appId'], signal?: AbortSignal) => {\n return client.delete('/apps/{appId}', { path: { appId } }, { signal });\n };\n\n const getAppPassword = async (appId: GetDataAppPasswordPath['appId'], signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}/password', { path: { appId } }, { signal });\n\n return data;\n };\n\n const resetAppPassword = async (\n appId: ResetDataAppPasswordPath['appId'],\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post(\n '/apps/{appId}/reset-password',\n { path: { appId } },\n { signal },\n );\n\n return data;\n };\n\n const getRuntimes = async (signal?: AbortSignal) => {\n const { data } = await client.get('/runtimes', {}, { signal });\n\n return data;\n };\n\n const getSandbox = async (appId: GetSandboxPath['appId'], signal?: AbortSignal) => {\n const { data } = await client.get('/sandboxes/{appId}', { path: { appId } }, { signal });\n\n return data;\n };\n\n return {\n getAppRuns,\n getAppRun,\n getAppLogsDownload,\n getAppLogsTail,\n getApps,\n getApp,\n createApp,\n patchApp,\n deleteApp,\n getAppPassword,\n resetAppPassword,\n getRuntimes,\n getSandbox,\n };\n};\n"]}
|