@keboola/api-client 46.0.0 → 47.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/AGENTS.md +86 -21
- package/API-SURFACE.md +49 -29
- package/CHANGELOG.md +54 -0
- package/README.md +47 -37
- package/dist/{ManagementSessionMintError-5FFyvBZi.js → ManagementSessionMintError-4Pkn5Oob.js} +2 -2
- package/dist/{ManagementSessionMintError-5FFyvBZi.js.map → ManagementSessionMintError-4Pkn5Oob.js.map} +1 -1
- package/dist/{ManagementSessionMintError-Bm8s6yDB.cjs → ManagementSessionMintError-Cu9beG7j.cjs} +2 -2
- package/dist/{ManagementSessionMintError-Bm8s6yDB.cjs.map → ManagementSessionMintError-Cu9beG7j.cjs.map} +1 -1
- package/dist/QueryJobError-ZZZ043Nm.js +22 -0
- package/dist/QueryJobError-ZZZ043Nm.js.map +1 -0
- package/dist/{QueryJobTimeoutError-CVNPdCWX.cjs → QueryJobError-irGiP5zh.cjs} +1 -29
- package/dist/QueryJobError-irGiP5zh.cjs.map +1 -0
- package/dist/QueueJobError-6qSEizWo.cjs +30 -0
- package/dist/QueueJobError-6qSEizWo.cjs.map +1 -0
- package/dist/QueueJobError-8bThS_Mc.js +19 -0
- package/dist/QueueJobError-8bThS_Mc.js.map +1 -0
- package/dist/adminRoles-B40yBcmq.js.map +1 -1
- package/dist/adminRoles-CO7J5qAy.cjs.map +1 -1
- package/dist/{adminRoles-C696kD_U.d.cts → adminRoles-CvdIUkiC.d.ts} +4 -2
- package/dist/{adminRoles-C696kD_U.d.ts → adminRoles-DGM8SuuF.d.cts} +4 -2
- package/dist/ai/index.cjs +2 -2
- package/dist/ai/index.d.cts +2 -2
- package/dist/ai/index.d.ts +2 -2
- package/dist/ai/index.js +2 -2
- package/dist/ai/types.d.cts +1 -1
- package/dist/ai/types.d.ts +1 -1
- package/dist/{appLogs-BG9ueGxA.cjs → appLogs-Cix2KWra.cjs} +2 -2
- package/dist/{appLogs-BG9ueGxA.cjs.map → appLogs-Cix2KWra.cjs.map} +1 -1
- package/dist/{appLogs-Dl0v684o.d.cts → appLogs-Cxhm2Rkn.d.cts} +2 -2
- package/dist/{appLogs-CEKz68bE.js → appLogs-KslK7qHr.js} +2 -2
- package/dist/{appLogs-CEKz68bE.js.map → appLogs-KslK7qHr.js.map} +1 -1
- package/dist/{appLogs-DGIctwbb.d.ts → appLogs-xW0-JQXg.d.ts} +2 -2
- package/dist/apps/index.cjs +3 -3
- package/dist/apps/index.d.cts +3 -3
- package/dist/apps/index.d.ts +3 -3
- package/dist/apps/index.js +3 -3
- package/dist/apps/types.d.cts +2 -2
- package/dist/apps/types.d.ts +2 -2
- package/dist/assets/index.cjs +1 -1
- package/dist/assets/index.d.cts +1 -1
- package/dist/assets/index.d.ts +1 -1
- package/dist/assets/index.js +1 -1
- package/dist/auth/index.cjs +1 -1
- package/dist/auth/index.d.cts +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.js +1 -1
- package/dist/auth/types.d.cts +2 -2
- package/dist/auth/types.d.ts +2 -2
- package/dist/{auth-C6cHWIWx.js → auth-4coY1uwo.js} +2 -2
- package/dist/{auth-C6cHWIWx.js.map → auth-4coY1uwo.js.map} +1 -1
- package/dist/{auth-C9o_0bft.cjs → auth-C8Pjl0Mu.cjs} +2 -2
- package/dist/{auth-C9o_0bft.cjs.map → auth-C8Pjl0Mu.cjs.map} +1 -1
- package/dist/{authClient-CACOwVt0.js → authClient-2e8ZmzSP.js} +71 -7
- package/dist/authClient-2e8ZmzSP.js.map +1 -0
- package/dist/{authClient-DSa5t2Ft.d.cts → authClient-Bso5UaXS.d.ts} +22 -4
- package/dist/{authClient-DZcAR-eW.cjs → authClient-DfkKlc-2.cjs} +82 -6
- package/dist/authClient-DfkKlc-2.cjs.map +1 -0
- package/dist/{authClient-ZiaKSKpp.d.ts → authClient-aud2dUZd.d.cts} +22 -4
- package/dist/billing/index.cjs +2 -2
- package/dist/billing/index.d.cts +1 -1
- package/dist/billing/index.d.ts +1 -1
- package/dist/billing/index.js +2 -2
- package/dist/billing/types.d.cts +1 -1
- package/dist/billing/types.d.ts +1 -1
- package/dist/chat/index.cjs +3 -3
- package/dist/chat/index.d.cts +2 -2
- package/dist/chat/index.d.ts +2 -2
- package/dist/chat/index.js +3 -3
- package/dist/chat/types.d.cts +1 -1
- package/dist/chat/types.d.ts +1 -1
- package/dist/{collect-97WhfEpt.js → collectByOffset-2XzJqmvr.js} +6 -6
- package/dist/collectByOffset-2XzJqmvr.js.map +1 -0
- package/dist/{collect-B5TCNiT1.cjs → collectByOffset-DQsqtmJg.cjs} +7 -7
- package/dist/collectByOffset-DQsqtmJg.cjs.map +1 -0
- package/dist/componentsMcp/index.cjs +3 -0
- package/dist/componentsMcp/index.d.cts +2 -0
- package/dist/componentsMcp/index.d.ts +2 -0
- package/dist/componentsMcp/index.js +2 -0
- package/dist/componentsMcp/types.cjs +0 -0
- package/dist/componentsMcp/types.d.cts +2 -0
- package/dist/componentsMcp/types.d.ts +2 -0
- package/dist/componentsMcp/types.js +1 -0
- package/dist/componentsMcp-CHobIsuU.js +57 -0
- package/dist/componentsMcp-CHobIsuU.js.map +1 -0
- package/dist/componentsMcp-pG-PcQrg.cjs +62 -0
- package/dist/componentsMcp-pG-PcQrg.cjs.map +1 -0
- package/dist/configurations-BTRHVSRq.cjs.map +1 -1
- package/dist/configurations-Chg_JwJ1.js.map +1 -1
- package/dist/constants/index.cjs +1 -1
- package/dist/constants/index.d.cts +2 -3
- package/dist/constants/index.d.ts +2 -3
- package/dist/constants/index.js +1 -1
- package/dist/{constants-Cifrqsls.js → constants-CA4UN2Xv.js} +11 -10
- package/dist/constants-CA4UN2Xv.js.map +1 -0
- package/dist/{constants-BDGRQqij.cjs → constants-a0jswUeK.cjs} +10 -9
- package/dist/constants-a0jswUeK.cjs.map +1 -0
- package/dist/{createFetchClient-DITkTV2k.js → createFetchClient-CkHdS_IG.js} +5 -5
- package/dist/createFetchClient-CkHdS_IG.js.map +1 -0
- package/dist/{createFetchClient-ClWD4ua3.cjs → createFetchClient-lZ_93Yrb.cjs} +5 -5
- package/dist/createFetchClient-lZ_93Yrb.cjs.map +1 -0
- package/dist/{createGenericFetchClient-KqiJhw8G.js → createGenericFetchClient-CQdNcPC3.js} +2 -2
- package/dist/{createGenericFetchClient-KqiJhw8G.js.map → createGenericFetchClient-CQdNcPC3.js.map} +1 -1
- package/dist/{createGenericFetchClient-B81Iezpb.cjs → createGenericFetchClient-MOx97wi-.cjs} +2 -2
- package/dist/{createGenericFetchClient-B81Iezpb.cjs.map → createGenericFetchClient-MOx97wi-.cjs.map} +1 -1
- package/dist/{createOpenapiFetchClient-CioTX11-.cjs → createOpenapiFetchClient-DHYo_k3t.cjs} +2 -2
- package/dist/{createOpenapiFetchClient-CioTX11-.cjs.map → createOpenapiFetchClient-DHYo_k3t.cjs.map} +1 -1
- package/dist/{createOpenapiFetchClient-wq8iGLZM.js → createOpenapiFetchClient-DXiMv9WL.js} +2 -2
- package/dist/{createOpenapiFetchClient-wq8iGLZM.js.map → createOpenapiFetchClient-DXiMv9WL.js.map} +1 -1
- package/dist/dataScience/index.cjs +2 -2
- package/dist/dataScience/index.d.cts +2 -2
- package/dist/dataScience/index.d.ts +2 -2
- package/dist/dataScience/index.js +2 -2
- package/dist/dataScience/types.d.cts +2 -2
- package/dist/dataScience/types.d.ts +2 -2
- package/dist/{dataScience-BwHmDoQb.js → dataScience-AwPMeGfz.js} +5 -5
- package/dist/{dataScience-BwHmDoQb.js.map → dataScience-AwPMeGfz.js.map} +1 -1
- package/dist/{dataScience-Hhoqoql_.cjs → dataScience-BjS1p8WO.cjs} +5 -5
- package/dist/{dataScience-Hhoqoql_.cjs.map → dataScience-BjS1p8WO.cjs.map} +1 -1
- package/dist/developerPortal/index.cjs +1 -1
- package/dist/developerPortal/index.d.cts +2 -2
- package/dist/developerPortal/index.d.ts +2 -2
- package/dist/developerPortal/index.js +1 -1
- package/dist/developerPortal/types.d.cts +1 -1
- package/dist/developerPortal/types.d.ts +1 -1
- package/dist/{developerPortalClient-loKq7X_U.js → developerPortalClient-Bb2suezr.js} +13 -5
- package/dist/{developerPortalClient-loKq7X_U.js.map → developerPortalClient-Bb2suezr.js.map} +1 -1
- package/dist/{developerPortalClient-COm7wJxS.cjs → developerPortalClient-DUerKw-7.cjs} +13 -5
- package/dist/{developerPortalClient-COm7wJxS.cjs.map → developerPortalClient-DUerKw-7.cjs.map} +1 -1
- package/dist/domain/permissions/index.d.cts +1 -2
- package/dist/domain/permissions/index.d.ts +1 -2
- package/dist/editor/index.cjs +2 -2
- package/dist/editor/index.d.cts +2 -2
- package/dist/editor/index.d.ts +2 -2
- package/dist/editor/index.js +2 -2
- package/dist/editor/types.d.cts +1 -1
- package/dist/editor/types.d.ts +1 -1
- package/dist/encryption/index.cjs +1 -1
- package/dist/encryption/index.d.cts +1 -1
- package/dist/encryption/index.d.ts +1 -1
- package/dist/encryption/index.js +1 -1
- package/dist/encryption/types.d.cts +1 -1
- package/dist/encryption/types.d.ts +1 -1
- package/dist/import/index.cjs +1 -1
- package/dist/import/index.d.cts +3 -3
- package/dist/import/index.d.ts +3 -3
- package/dist/import/index.js +1 -1
- package/dist/{import-B5DcJGMI.cjs → import-BahNYv91.cjs} +3 -3
- package/dist/{import-B5DcJGMI.cjs.map → import-BahNYv91.cjs.map} +1 -1
- package/dist/{import-JlH_QaDd.js → import-FWy_wQZ1.js} +3 -3
- package/dist/{import-JlH_QaDd.js.map → import-FWy_wQZ1.js.map} +1 -1
- package/dist/{index-DeQDdut6.d.cts → index-8ZjY7YD8.d.cts} +34 -2
- package/dist/{index-DCxVLGHH.d.ts → index-BGEuaZqI.d.cts} +11 -28
- package/dist/{index-se5ee8U1.d.ts → index-BIP0PoMW.d.ts} +4 -4
- package/dist/index-B_MzjCeE.d.ts +46 -0
- package/dist/{index-DXcTukgn.d.ts → index-BeOd45XE.d.ts} +4 -4
- package/dist/{index-DeQDdut6.d.ts → index-BnPmXDVP.d.ts} +34 -2
- package/dist/{index-yJ0HrxY6.d.ts → index-C2OAOK0s.d.ts} +4 -4
- package/dist/{index-BP3choXr.d.ts → index-CAWy1qjR.d.ts} +19771 -14468
- package/dist/{index-syAYY5LC.d.cts → index-CkwZ5x7E.d.cts} +19771 -14468
- package/dist/{index-Bt43tKyu.d.cts → index-DTysQ_yn.d.cts} +5 -5
- package/dist/{index-CTKC-mwi.d.cts → index-DUB0BwQv.d.cts} +4 -4
- package/dist/{index-BnPYPXGQ.d.ts → index-DloFSSj3.d.ts} +3 -3
- package/dist/{index-DWFxcmVD.d.ts → index-Dp-a2DdI.d.ts} +4 -4
- package/dist/{index-x8ET_BTN.d.cts → index-Ds0tViQS.d.cts} +3 -3
- package/dist/{index-DRaVzOLM.d.ts → index-HSkjm3QW.d.ts} +5 -5
- package/dist/index-URgNfi5L.d.cts +46 -0
- package/dist/{index-BhDxP0x4.d.cts → index-XG5cO-4H.d.cts} +4 -4
- package/dist/{types-CESP1ONj.d.ts → index-XaPb6unB.d.cts} +3635 -627
- package/dist/{index-D-4TT5yW.d.cts → index-ZYvgoqgW.d.cts} +4 -4
- package/dist/{index-GVxpBH6j.d.cts → index-_Va9wynk.d.ts} +11 -28
- package/dist/{types-GaOcVZ3d.d.cts → index-r6YSe8B-.d.ts} +3635 -627
- package/dist/{index-DS6O4UDB.d.cts → index-x_kS_5x_.d.cts} +4 -4
- package/dist/index.cjs +142 -161
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -7
- package/dist/index.d.ts +7 -7
- package/dist/index.js +75 -96
- package/dist/index.js.map +1 -1
- package/dist/{isLoginPageRedirect-CsyRa3_v.js → isLoginPageRedirect-B4QKSiSa.js} +2 -2
- package/dist/{isLoginPageRedirect-CsyRa3_v.js.map → isLoginPageRedirect-B4QKSiSa.js.map} +1 -1
- package/dist/{isLoginPageRedirect-iNbwl3iz.cjs → isLoginPageRedirect-r0Opgc1n.cjs} +2 -2
- package/dist/{isLoginPageRedirect-iNbwl3iz.cjs.map → isLoginPageRedirect-r0Opgc1n.cjs.map} +1 -1
- package/dist/kaiAgent/index.cjs +1 -1
- package/dist/kaiAgent/index.d.cts +2 -2
- package/dist/kaiAgent/index.d.ts +2 -2
- package/dist/kaiAgent/index.js +1 -1
- package/dist/kaiAgent/types.d.cts +1 -1
- package/dist/kaiAgent/types.d.ts +1 -1
- package/dist/{kaiAgent-BhcUsBDk.cjs → kaiAgent-BmfUG8bB.cjs} +5 -5
- package/dist/{kaiAgent-BhcUsBDk.cjs.map → kaiAgent-BmfUG8bB.cjs.map} +1 -1
- package/dist/{kaiAgent-CUeT53-K.js → kaiAgent-CBPbMwBh.js} +5 -5
- package/dist/{kaiAgent-CUeT53-K.js.map → kaiAgent-CBPbMwBh.js.map} +1 -1
- package/dist/{kaiMemory-DaOh0zVn.js → kaiMemory-C9di17bd.js} +2 -2
- package/dist/{kaiMemory-DaOh0zVn.js.map → kaiMemory-C9di17bd.js.map} +1 -1
- package/dist/{kaiMemory-Cf81ghNd.cjs → kaiMemory-Qch09f-m.cjs} +2 -2
- package/dist/{kaiMemory-Cf81ghNd.cjs.map → kaiMemory-Qch09f-m.cjs.map} +1 -1
- package/dist/management/index.cjs +1 -1
- package/dist/management/index.d.cts +1 -1
- package/dist/management/index.d.ts +1 -1
- package/dist/management/index.js +1 -1
- package/dist/management/types.d.cts +2 -2
- package/dist/management/types.d.ts +2 -2
- package/dist/{management-0cWVLHei.cjs → management-BUGPJ1Bu.cjs} +23 -6
- package/dist/{management-0cWVLHei.cjs.map → management-BUGPJ1Bu.cjs.map} +1 -1
- package/dist/{management-eg4Ig-Cx.js → management-DAg2obYt.js} +23 -6
- package/dist/{management-eg4Ig-Cx.js.map → management-DAg2obYt.js.map} +1 -1
- package/dist/metastore/index.cjs +1 -1
- package/dist/metastore/index.d.cts +1 -1
- package/dist/metastore/index.d.ts +1 -1
- package/dist/metastore/index.js +1 -1
- package/dist/metastore/types.d.cts +1 -1
- package/dist/metastore/types.d.ts +1 -1
- package/dist/{metastore-YPHUK3jJ.cjs → metastore-BXHg33ku.cjs} +4 -4
- package/dist/{metastore-YPHUK3jJ.cjs.map → metastore-BXHg33ku.cjs.map} +1 -1
- package/dist/{metastore-D0C6uaPX.js → metastore-Ywq08DBz.js} +4 -4
- package/dist/{metastore-D0C6uaPX.js.map → metastore-Ywq08DBz.js.map} +1 -1
- package/dist/microsoftGraph/index.cjs +2 -2
- package/dist/microsoftGraph/index.d.cts +2 -2
- package/dist/microsoftGraph/index.d.ts +2 -2
- package/dist/microsoftGraph/index.js +2 -2
- package/dist/microsoftGraph/types.d.cts +1 -1
- package/dist/microsoftGraph/types.d.ts +1 -1
- package/dist/{middleware-DmR6OhTY.js → middleware-CWaLMlG1.js} +2 -2
- package/dist/{middleware-DmR6OhTY.js.map → middleware-CWaLMlG1.js.map} +1 -1
- package/dist/{middleware-D_p5TctO.cjs → middleware-DU_5pFDW.cjs} +2 -2
- package/dist/{middleware-D_p5TctO.cjs.map → middleware-DU_5pFDW.cjs.map} +1 -1
- package/dist/notifications/index.cjs +3 -3
- package/dist/notifications/index.d.cts +2 -2
- package/dist/notifications/index.d.ts +2 -2
- package/dist/notifications/index.js +3 -3
- package/dist/notifications/types.d.cts +1 -1
- package/dist/notifications/types.d.ts +1 -1
- package/dist/oauth/index.cjs +1 -1
- package/dist/oauth/index.d.cts +6 -2
- package/dist/oauth/index.d.ts +6 -2
- package/dist/oauth/index.js +1 -1
- package/dist/oauth/types.d.cts +2 -2
- package/dist/oauth/types.d.ts +2 -2
- package/dist/{oauth-DyUwTqHJ.cjs → oauth-DKZPuUlt.cjs} +17 -6
- package/dist/{oauth-DyUwTqHJ.cjs.map → oauth-DKZPuUlt.cjs.map} +1 -1
- package/dist/{oauth-Ck_Fe14o.js → oauth-GXmZ9agP.js} +17 -6
- package/dist/{oauth-Ck_Fe14o.js.map → oauth-GXmZ9agP.js.map} +1 -1
- package/dist/omnisearch/index.cjs +2 -2
- package/dist/omnisearch/index.d.cts +2 -2
- package/dist/omnisearch/index.d.ts +2 -2
- package/dist/omnisearch/index.js +2 -2
- package/dist/omnisearch/types.d.cts +1 -1
- package/dist/omnisearch/types.d.ts +1 -1
- package/dist/project-BMmfPhXg.d.ts +74 -0
- package/dist/project-dxCJbFay.d.cts +74 -0
- package/dist/queryService/index.cjs +1 -1
- package/dist/queryService/index.d.cts +1 -1
- package/dist/queryService/index.d.ts +1 -1
- package/dist/queryService/index.js +1 -1
- package/dist/queryService/types.d.cts +2 -2
- package/dist/queryService/types.d.ts +2 -2
- package/dist/{queryService-Blfz59Ms.js → queryService-C-pZha5p.js} +36 -27
- package/dist/queryService-C-pZha5p.js.map +1 -0
- package/dist/{queryService-RlNYw7LG.cjs → queryService-CzK53q94.cjs} +36 -27
- package/dist/queryService-CzK53q94.cjs.map +1 -0
- package/dist/queue/index.cjs +1 -1
- package/dist/queue/index.d.cts +75 -7
- package/dist/queue/index.d.ts +75 -7
- package/dist/queue/index.js +1 -1
- package/dist/queue/types.d.cts +1 -1
- package/dist/queue/types.d.ts +1 -1
- package/dist/{queue-BrgRdtOr.cjs → queue-BJvDWriM.cjs} +35 -25
- package/dist/queue-BJvDWriM.cjs.map +1 -0
- package/dist/{queue-CNvR-M23.js → queue-D6-x4OGF.js} +35 -25
- package/dist/queue-D6-x4OGF.js.map +1 -0
- package/dist/scheduler/index.cjs +3 -3
- package/dist/scheduler/index.d.cts +2 -2
- package/dist/scheduler/index.d.ts +2 -2
- package/dist/scheduler/index.js +3 -3
- package/dist/scheduler/types.d.cts +1 -1
- package/dist/scheduler/types.d.ts +1 -1
- package/dist/sdk/configurations/index.d.cts +2 -4
- package/dist/sdk/configurations/index.d.ts +2 -4
- package/dist/sdk/developerPortal/index.cjs +3 -3
- package/dist/sdk/developerPortal/index.d.cts +3 -3
- package/dist/sdk/developerPortal/index.d.ts +3 -3
- package/dist/sdk/developerPortal/index.js +3 -3
- package/dist/sdk/kaiMemory/index.cjs +1 -1
- package/dist/sdk/kaiMemory/index.d.cts +1 -1
- package/dist/sdk/kaiMemory/index.d.ts +1 -1
- package/dist/sdk/kaiMemory/index.js +1 -1
- package/dist/sdk/kaiMemory/types.d.cts +1 -1
- package/dist/sdk/kaiMemory/types.d.ts +1 -1
- package/dist/sdk/queryService/index.cjs +34 -55
- package/dist/sdk/queryService/index.cjs.map +1 -1
- package/dist/sdk/queryService/index.d.cts +2 -2
- package/dist/sdk/queryService/index.d.ts +2 -2
- package/dist/sdk/queryService/index.js +34 -55
- package/dist/sdk/queryService/index.js.map +1 -1
- package/dist/sdk/semanticLayer/index.d.cts +1 -1
- package/dist/sdk/semanticLayer/index.d.ts +1 -1
- package/dist/sdk/semanticLayer/types.d.cts +1 -1
- package/dist/sdk/semanticLayer/types.d.ts +1 -1
- package/dist/sdk/storage/index.cjs +0 -119
- package/dist/sdk/storage/index.cjs.map +1 -1
- package/dist/sdk/storage/index.d.cts +103 -2
- package/dist/sdk/storage/index.d.ts +103 -2
- package/dist/sdk/storage/index.js +1 -119
- package/dist/sdk/storage/index.js.map +1 -1
- package/dist/sdk/tag/index.d.cts +2 -2
- package/dist/sdk/tag/index.d.ts +2 -2
- package/dist/sdk/tag/types.d.cts +1 -1
- package/dist/sdk/tag/types.d.ts +1 -1
- package/dist/sdk/vault/index.d.cts +1 -1
- package/dist/sdk/vault/index.d.ts +1 -1
- package/dist/status/index.cjs +1 -1
- package/dist/status/index.d.cts +1 -1
- package/dist/status/index.d.ts +1 -1
- package/dist/status/index.js +1 -1
- package/dist/storage/index.cjs +13 -9
- package/dist/storage/index.d.cts +3 -3
- package/dist/storage/index.d.ts +3 -3
- package/dist/storage/index.js +7 -6
- package/dist/storage/types.d.cts +6 -5
- package/dist/storage/types.d.ts +6 -5
- package/dist/{storage-RkNaOFJ-.js → storage-DyR7hDdv.js} +347 -168
- package/dist/storage-DyR7hDdv.js.map +1 -0
- package/dist/{storage-76Sf_z_H.cjs → storage-yovv11k6.cjs} +366 -169
- package/dist/storage-yovv11k6.cjs.map +1 -0
- package/dist/stream/index.cjs +3 -3
- package/dist/stream/index.d.cts +2 -2
- package/dist/stream/index.d.ts +2 -2
- package/dist/stream/index.js +3 -3
- package/dist/stream/types.d.cts +1 -1
- package/dist/stream/types.d.ts +1 -1
- package/dist/syncActions/index.cjs +1 -1
- package/dist/syncActions/index.d.cts +2 -2
- package/dist/syncActions/index.d.ts +2 -2
- package/dist/syncActions/index.js +1 -1
- package/dist/syncActions/types.d.cts +1 -1
- package/dist/syncActions/types.d.ts +1 -1
- package/dist/{syncActions-DlNPhZY4.cjs → syncActions-C1rE4R3f.cjs} +5 -5
- package/dist/{syncActions-DlNPhZY4.cjs.map → syncActions-C1rE4R3f.cjs.map} +1 -1
- package/dist/{syncActions-BvFUa9xV.js → syncActions-DM8vP7p3.js} +5 -5
- package/dist/{syncActions-BvFUa9xV.js.map → syncActions-DM8vP7p3.js.map} +1 -1
- package/dist/telemetry/index.cjs +3 -6
- package/dist/telemetry/index.cjs.map +1 -1
- package/dist/telemetry/index.d.cts +2 -5
- package/dist/telemetry/index.d.ts +2 -5
- package/dist/telemetry/index.js +3 -6
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/types.d.cts +1 -1
- package/dist/telemetry/types.d.ts +1 -1
- package/dist/{jobStatus-BJdbZ72V.js → transientRetries-B4iusp69.js} +79 -37
- package/dist/transientRetries-B4iusp69.js.map +1 -0
- package/dist/{jobStatus-B0E-MZ9I.cjs → transientRetries-DdJfH9QK.cjs} +82 -40
- package/dist/transientRetries-DdJfH9QK.cjs.map +1 -0
- package/dist/{types-5HdT1rSH.d.cts → types--qQPfxWt.d.cts} +2 -2
- package/dist/{types-sg2xnYlr.d.cts → types-4CjbcUdD.d.cts} +95 -26
- package/dist/{types-B1GN_I06.d.ts → types-4HmtNuJf.d.ts} +2 -2
- package/dist/types-4bSZLxq3.d.cts +1973 -0
- package/dist/{types-BHxsCu0f.d.ts → types-7DBpH7Rf.d.ts} +2 -2
- package/dist/{types-Btb8r9iw.d.ts → types-B2ZLjagf.d.ts} +95 -26
- package/dist/{types--owScV0r.d.cts → types-B6ozaDkl.d.cts} +11 -3
- package/dist/{types-DUDQg4ry.d.cts → types-BBbzWczQ.d.cts} +2 -2
- package/dist/{types-CyO8qCKl.d.cts → types-BG0oWq8u.d.cts} +2 -2
- package/dist/types-BIDKSQdc.d.ts +1973 -0
- package/dist/{types-CFurl1xe.d.cts → types-BKIcow3B.d.cts} +2 -2
- package/dist/{types-Nwq1QtYe.d.ts → types-BNPvFLgC.d.ts} +2 -2
- package/dist/{types-DDjp9lXD.d.ts → types-BXgINefw.d.ts} +2 -2
- package/dist/{types-C05ALlV6.d.cts → types-BZBU3mwz.d.cts} +3 -3
- package/dist/{types-LxDyOfdY.d.cts → types-B_1plf0y.d.cts} +2 -2
- package/dist/{types-DHdXufVf.d.cts → types-B_3zoXA1.d.cts} +3 -3
- package/dist/{types-BE7mRarT.d.ts → types-BcQ3j8xK.d.ts} +2 -2
- package/dist/{types-tJLoKlMX.d.cts → types-BdF6NDvo.d.cts} +2 -2
- package/dist/{types-DiE081mn.d.ts → types-BiBBKcin.d.ts} +3 -3
- package/dist/{types-fAqPUl-a.d.ts → types-BiTn_JVW.d.cts} +233 -37
- package/dist/{types-BtII5RSD.d.ts → types-BjEiUOL6.d.ts} +11 -3
- package/dist/{types-BMWeCO5M.d.ts → types-BoH7NFCh.d.ts} +3 -3
- package/dist/{types-BGICH80a.d.cts → types-BwsE-pFo.d.cts} +2 -2
- package/dist/{types-B5kkD7h4.d.cts → types-Bx0TSdwF.d.cts} +2 -2
- package/dist/{types-sI3K5t3w.d.cts → types-C2JMisvL.d.ts} +233 -37
- package/dist/{types-CaBhH99H.d.ts → types-C2j6Jsie.d.ts} +3 -3
- package/dist/{types-DSv1XS7s.d.ts → types-C3IQu1gV.d.ts} +3 -3
- package/dist/{types-DQauEri3.d.ts → types-C7t_6FLh.d.ts} +2 -2
- package/dist/{types-UI2aZ74n.d.ts → types-CBrNIgEy.d.ts} +3 -3
- package/dist/{types-Dvysi2Eo.d.ts → types-CEw2IzWk.d.ts} +2 -2
- package/dist/{types-C8oZX0oP.d.cts → types-CMKIdreQ.d.cts} +3 -3
- package/dist/{types-qGMVZGSB.d.ts → types-COQOzyac.d.ts} +45 -2
- package/dist/{types-Csmy6qFk.d.cts → types-CZCPdPqv.d.cts} +2 -2
- package/dist/{types-BksK2Eo0.d.cts → types-Cw9UISvM.d.ts} +2 -2
- package/dist/{types-YdE2VJzw.d.cts → types-D51g4h9w.d.cts} +2 -2
- package/dist/{types-DGu-wPPm.d.cts → types-D8w9lyb8.d.cts} +45 -2
- package/dist/{types-XHNJRi3-.d.cts → types-DBJ8c3hN.d.cts} +2 -2
- package/dist/{types-C4yryy-R.d.ts → types-DHlXKVEM.d.ts} +2 -2
- package/dist/{types-ggpJFEWZ.d.cts → types-DPDq8C4q.d.cts} +2 -2
- package/dist/{types-qWA5iU0j.d.ts → types-DWJVbskE.d.ts} +2 -2
- package/dist/{types-Br04cEri.d.ts → types-Dg8a7m7f.d.ts} +2 -2
- package/dist/{types-CoQET4Ep.d.ts → types-DgIzXY-Y.d.ts} +2 -2
- package/dist/{types-QroFANIW.d.cts → types-L50Y6ATu.d.cts} +3 -3
- package/dist/{types-BuKviWct.d.ts → types-OkQWmonU.d.cts} +2 -2
- package/dist/{types-DMWfdZ5C.d.cts → types-TRJiPqJr.d.cts} +2 -2
- package/dist/{types-BTqxM-IN.d.ts → types-ij6BpTzR.d.ts} +2 -2
- package/dist/{types-BoNqe_Lz.d.ts → types-ituiCs8g.d.ts} +2 -2
- package/dist/{types-BRvs3fXN.d.cts → types-kbyIaA7p.d.cts} +3 -3
- package/dist/{validateConnectionStatus-DR-0h35y.cjs → validateConnectionStatus-BalWEyRk.cjs} +3 -3
- package/dist/{validateConnectionStatus-DR-0h35y.cjs.map → validateConnectionStatus-BalWEyRk.cjs.map} +1 -1
- package/dist/{validateConnectionStatus-CdTV3gsP.js → validateConnectionStatus-DyrYpn0G.js} +3 -3
- package/dist/{validateConnectionStatus-CdTV3gsP.js.map → validateConnectionStatus-DyrYpn0G.js.map} +1 -1
- package/dist/vault/index.cjs +6 -6
- package/dist/vault/index.cjs.map +1 -1
- package/dist/vault/index.d.cts +1 -1
- package/dist/vault/index.d.ts +1 -1
- package/dist/vault/index.js +6 -6
- package/dist/vault/index.js.map +1 -1
- package/dist/vault/types.d.cts +1 -1
- package/dist/vault/types.d.ts +1 -1
- package/package.json +27 -1
- package/surface/apps.md +5 -5
- package/surface/auth.md +2 -0
- package/surface/chat.md +2 -2
- package/surface/componentsMcp.md +9 -0
- package/surface/dataScience.md +2 -2
- package/surface/kaiAgent.md +2 -2
- package/surface/management.md +4 -2
- package/surface/oauth.md +1 -0
- package/surface/queryService.md +4 -4
- package/surface/queue.md +2 -2
- package/surface/sdk.md +0 -24
- package/surface/storage.md +87 -57
- package/dist/QueryJobTimeoutError-C7JbNGOM.js +0 -38
- package/dist/QueryJobTimeoutError-C7JbNGOM.js.map +0 -1
- package/dist/QueryJobTimeoutError-CVNPdCWX.cjs.map +0 -1
- package/dist/authClient-CACOwVt0.js.map +0 -1
- package/dist/authClient-DZcAR-eW.cjs.map +0 -1
- package/dist/collect-97WhfEpt.js.map +0 -1
- package/dist/collect-B5TCNiT1.cjs.map +0 -1
- package/dist/constants-BDGRQqij.cjs.map +0 -1
- package/dist/constants-Cifrqsls.js.map +0 -1
- package/dist/createFetchClient-ClWD4ua3.cjs.map +0 -1
- package/dist/createFetchClient-DITkTV2k.js.map +0 -1
- package/dist/index-BzhLY7el.d.cts +0 -254
- package/dist/index-CH5Sg3rk.d.ts +0 -77
- package/dist/index-CiwWDu-q.d.cts +0 -16
- package/dist/index-DCAnnlcL.d.ts +0 -16
- package/dist/index-DQwjlSJi.d.cts +0 -77
- package/dist/index-PyTPrtaL.d.ts +0 -254
- package/dist/jobStatus-B0E-MZ9I.cjs.map +0 -1
- package/dist/jobStatus-BJdbZ72V.js.map +0 -1
- package/dist/project-BN7YRWFS.d.cts +0 -24
- package/dist/project-BpWTnoQ_.d.ts +0 -24
- package/dist/queryService-Blfz59Ms.js.map +0 -1
- package/dist/queryService-RlNYw7LG.cjs.map +0 -1
- package/dist/queue-BrgRdtOr.cjs.map +0 -1
- package/dist/queue-CNvR-M23.js.map +0 -1
- package/dist/serviceIds-DRcoTnSd.d.cts +0 -32
- package/dist/serviceIds-DRcoTnSd.d.ts +0 -32
- package/dist/storage-76Sf_z_H.cjs.map +0 -1
- package/dist/storage-RkNaOFJ-.js.map +0 -1
- package/dist/types-1B3ioN33.d.cts +0 -1868
- package/dist/types-BjIuVrAZ.d.ts +0 -66
- package/dist/types-CGhu0tID.d.cts +0 -1298
- package/dist/types-CclheyE7.d.cts +0 -66
- package/dist/types-M9vU_ONp.d.ts +0 -1868
- package/dist/types-P_61P9Nd.d.ts +0 -1298
- package/dist/types-j30rKMe6.d.ts +0 -957
- package/dist/types-q5lgElyc.d.cts +0 -957
package/dist/index.cjs
CHANGED
|
@@ -1,54 +1,55 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_rolldown_runtime = require("./rolldown-runtime-VH7oDXx4.cjs");
|
|
3
3
|
const require_project = require("./project-CpgplgCr.cjs");
|
|
4
|
-
const
|
|
4
|
+
const require_collectByOffset = require("./collectByOffset-DQsqtmJg.cjs");
|
|
5
|
+
const require_authClient = require("./authClient-DfkKlc-2.cjs");
|
|
5
6
|
const require_concurrent = require("./concurrent-CdVfR1N5.cjs");
|
|
6
7
|
const require_dedupe = require("./dedupe-OSnnst2u.cjs");
|
|
7
|
-
const
|
|
8
|
+
const require_transientRetries = require("./transientRetries-DdJfH9QK.cjs");
|
|
8
9
|
const require_store = require("./store-xS-Cu_VS.cjs");
|
|
9
|
-
const require_storage = require("./storage-
|
|
10
|
+
const require_storage = require("./storage-yovv11k6.cjs");
|
|
10
11
|
const require_tag = require("./tag-DHS_soa7.cjs");
|
|
11
12
|
const require_generateUUID = require("./generateUUID-C6qKBPIv.cjs");
|
|
12
13
|
const require_isPlainObject = require("./isPlainObject-BB3iy87C.cjs");
|
|
13
14
|
const require_configurations = require("./configurations-D_Rbs0Wl.cjs");
|
|
14
15
|
const require_UserError = require("./UserError-CSGO1qII.cjs");
|
|
15
|
-
const require_createFetchClient = require("./createFetchClient-
|
|
16
|
-
const require_validateConnectionStatus = require("./validateConnectionStatus-
|
|
17
|
-
const require_ManagementSessionMintError = require("./ManagementSessionMintError-
|
|
18
|
-
const
|
|
16
|
+
const require_createFetchClient = require("./createFetchClient-lZ_93Yrb.cjs");
|
|
17
|
+
const require_validateConnectionStatus = require("./validateConnectionStatus-BalWEyRk.cjs");
|
|
18
|
+
const require_ManagementSessionMintError = require("./ManagementSessionMintError-Cu9beG7j.cjs");
|
|
19
|
+
const require_QueryJobError = require("./QueryJobError-irGiP5zh.cjs");
|
|
20
|
+
const require_QueueJobError = require("./QueueJobError-6qSEizWo.cjs");
|
|
19
21
|
const require_SyncActionError = require("./SyncActionError-BG0zwchi.cjs");
|
|
20
22
|
const require_ValidationError = require("./ValidationError-D65QU0uq.cjs");
|
|
21
|
-
const require_createGenericFetchClient = require("./createGenericFetchClient-
|
|
22
|
-
const require_import = require("./import-
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const require_constants = require("./constants-BDGRQqij.cjs");
|
|
23
|
+
const require_createGenericFetchClient = require("./createGenericFetchClient-MOx97wi-.cjs");
|
|
24
|
+
const require_import = require("./import-BahNYv91.cjs");
|
|
25
|
+
const require_management = require("./management-BUGPJ1Bu.cjs");
|
|
26
|
+
const require_constants = require("./constants-a0jswUeK.cjs");
|
|
26
27
|
const require_storageTable = require("./storageTable-BNOR2FCh.cjs");
|
|
27
|
-
const require_kaiMemory = require("./kaiMemory-
|
|
28
|
+
const require_kaiMemory = require("./kaiMemory-Qch09f-m.cjs");
|
|
28
29
|
const require_semanticLayer = require("./semanticLayer-7BejcMj_.cjs");
|
|
29
|
-
const require_sdk_storage_index = require("./sdk/storage/index.cjs");
|
|
30
30
|
const require_sdk_vault_index = require("./sdk/vault/index.cjs");
|
|
31
31
|
const require_ai_index = require("./ai/index.cjs");
|
|
32
|
-
const require_appLogs = require("./appLogs-
|
|
32
|
+
const require_appLogs = require("./appLogs-Cix2KWra.cjs");
|
|
33
33
|
const require_apps_index = require("./apps/index.cjs");
|
|
34
34
|
const require_billing_index = require("./billing/index.cjs");
|
|
35
35
|
const require_chat_index = require("./chat/index.cjs");
|
|
36
|
-
const
|
|
36
|
+
const require_componentsMcp = require("./componentsMcp-pG-PcQrg.cjs");
|
|
37
|
+
const require_dataScience = require("./dataScience-BjS1p8WO.cjs");
|
|
37
38
|
const require_editor_index = require("./editor/index.cjs");
|
|
38
39
|
const require_encryption_index = require("./encryption/index.cjs");
|
|
39
|
-
const require_kaiAgent = require("./kaiAgent-
|
|
40
|
-
const require_metastore = require("./metastore-
|
|
40
|
+
const require_kaiAgent = require("./kaiAgent-BmfUG8bB.cjs");
|
|
41
|
+
const require_metastore = require("./metastore-BXHg33ku.cjs");
|
|
41
42
|
const require_notifications_index = require("./notifications/index.cjs");
|
|
42
|
-
const require_oauth = require("./oauth-
|
|
43
|
+
const require_oauth = require("./oauth-DKZPuUlt.cjs");
|
|
43
44
|
const require_omnisearch_index = require("./omnisearch/index.cjs");
|
|
44
|
-
const require_queryService = require("./queryService-
|
|
45
|
-
const require_queue = require("./queue-
|
|
45
|
+
const require_queryService = require("./queryService-CzK53q94.cjs");
|
|
46
|
+
const require_queue = require("./queue-BJvDWriM.cjs");
|
|
46
47
|
const require_scheduler_index = require("./scheduler/index.cjs");
|
|
47
48
|
const require_stream_index = require("./stream/index.cjs");
|
|
48
|
-
const require_syncActions = require("./syncActions-
|
|
49
|
+
const require_syncActions = require("./syncActions-C1rE4R3f.cjs");
|
|
49
50
|
const require_telemetry_index = require("./telemetry/index.cjs");
|
|
50
51
|
const require_vault_index = require("./vault/index.cjs");
|
|
51
|
-
const require_middleware = require("./middleware-
|
|
52
|
+
const require_middleware = require("./middleware-DU_5pFDW.cjs");
|
|
52
53
|
const require_sdk_queryService_index = require("./sdk/queryService/index.cjs");
|
|
53
54
|
let zod = require("zod");
|
|
54
55
|
zod = require_rolldown_runtime.__toESM(zod, 1);
|
|
@@ -211,11 +212,11 @@ const createDerivedAsyncStore = ({ source, dependsOn, build, keyEquals = shallow
|
|
|
211
212
|
//#endregion
|
|
212
213
|
//#region src/utils/async/poll/registry.ts
|
|
213
214
|
const DEFAULT_LIMIT = 50;
|
|
214
|
-
const isFinished = ({ snapshot }) => snapshot.state !== "idle" && snapshot.state !== "polling";
|
|
215
|
+
const isFinished = ({ snapshot }) => snapshot.state !== "idle" && snapshot.state !== "requesting" && snapshot.state !== "polling";
|
|
215
216
|
const createPollRegistry = ({ limit = DEFAULT_LIMIT } = {}) => {
|
|
216
217
|
const entries = require_store.createStore([]);
|
|
217
218
|
const unsubscribes = /* @__PURE__ */ new Map();
|
|
218
|
-
const maxEntries =
|
|
219
|
+
const maxEntries = require_transientRetries.clamp(require_transientRetries.finiteOr(limit, DEFAULT_LIMIT), 1);
|
|
219
220
|
let nextKey = 1;
|
|
220
221
|
const forget = (key) => {
|
|
221
222
|
unsubscribes.get(key)?.();
|
|
@@ -248,7 +249,7 @@ const createPollRegistry = ({ limit = DEFAULT_LIMIT } = {}) => {
|
|
|
248
249
|
entries.set(trim([entry, ...entries.get()]));
|
|
249
250
|
};
|
|
250
251
|
const collect = () => {
|
|
251
|
-
|
|
252
|
+
require_transientRetries.emitter.subscribe(register);
|
|
252
253
|
};
|
|
253
254
|
return {
|
|
254
255
|
list: entries.get,
|
|
@@ -430,8 +431,7 @@ const KeboolaErrorType = {
|
|
|
430
431
|
NotBearer: "not-bearer",
|
|
431
432
|
NotReady: "not-ready",
|
|
432
433
|
InvalidBuildTransition: "invalid-build-transition",
|
|
433
|
-
StackActive: "stack-active"
|
|
434
|
-
CredentialKindMismatch: "credential-kind-mismatch"
|
|
434
|
+
StackActive: "stack-active"
|
|
435
435
|
};
|
|
436
436
|
const MESSAGES = {
|
|
437
437
|
[KeboolaErrorType.Unconfigured]: "The session is not configured — set a baseUrl first.",
|
|
@@ -444,8 +444,7 @@ const MESSAGES = {
|
|
|
444
444
|
[KeboolaErrorType.NotBearer]: "This operation requires a bearer (OAuth) session.",
|
|
445
445
|
[KeboolaErrorType.NotReady]: "The client is not ready — authenticate the storage realm first.",
|
|
446
446
|
[KeboolaErrorType.InvalidBuildTransition]: "Invalid storage build transition — the build goes idle → initializing → ready | failed.",
|
|
447
|
-
[KeboolaErrorType.StackActive]: "The active stack cannot be closed — select another first."
|
|
448
|
-
[KeboolaErrorType.CredentialKindMismatch]: "This client renews the other credential kind — log in the way its `credentials` mode expects."
|
|
447
|
+
[KeboolaErrorType.StackActive]: "The active stack cannot be closed — select another first."
|
|
449
448
|
};
|
|
450
449
|
var KeboolaError = class KeboolaError extends Error {
|
|
451
450
|
type;
|
|
@@ -606,10 +605,12 @@ const createDefaultBranch = ({ devBranches }) => {
|
|
|
606
605
|
};
|
|
607
606
|
//#endregion
|
|
608
607
|
//#region src/domain/stack.ts
|
|
608
|
+
const isServiceId = (id) => Object.values(require_constants.ServiceId).includes(id);
|
|
609
609
|
const SERVICE_URL_OVERRIDES = { "kai-assistant": (url) => `${url}/api` };
|
|
610
610
|
const createStack = ({ stackInfo, clientServiceUrls }) => {
|
|
611
611
|
const { services, components, features, ...infoRest } = stackInfo;
|
|
612
612
|
const serviceMap = new Map(services.map((service) => {
|
|
613
|
+
if (!isServiceId(service.id)) return [service.id, service.url];
|
|
613
614
|
const devOverride = clientServiceUrls?.[service.id]?.(service.url);
|
|
614
615
|
const prodOverride = SERVICE_URL_OVERRIDES[service.id]?.(service.url);
|
|
615
616
|
const url = devOverride ?? prodOverride ?? service.url;
|
|
@@ -733,7 +734,6 @@ const createSdk = ({ storage, services, context }) => ({
|
|
|
733
734
|
tag: require_tag.createTagSdk({ metastoreClient: services.metastore }),
|
|
734
735
|
semanticLayer: require_semanticLayer.createSemanticLayerSdk({ metastoreClient: services.metastore }),
|
|
735
736
|
kaiMemory: require_kaiMemory.createKaiMemorySdk({ metastoreClient: services.metastore }),
|
|
736
|
-
storage: require_sdk_storage_index.createStorageSdk({ storageClient: storage }),
|
|
737
737
|
vault: require_sdk_vault_index.createVaultSdk({
|
|
738
738
|
vaultClient: services.vault,
|
|
739
739
|
encryptionClient: services.encryption
|
|
@@ -860,6 +860,14 @@ const createServiceClients = ({ baseUrl, auth, getServiceBaseUrl, middlewareFor,
|
|
|
860
860
|
middlewares: middlewareFor("kaiAgent", [attachTokenMiddleware]),
|
|
861
861
|
auth
|
|
862
862
|
})
|
|
863
|
+
}).add({
|
|
864
|
+
serviceId: "components-mcp",
|
|
865
|
+
clientName: "componentsMcp",
|
|
866
|
+
clientFn: (serviceBaseUrl) => require_componentsMcp.createComponentsMcpClient({
|
|
867
|
+
baseUrl: serviceBaseUrl,
|
|
868
|
+
middlewares: middlewareFor("componentsMcp", [attachTokenMiddleware]),
|
|
869
|
+
auth
|
|
870
|
+
})
|
|
863
871
|
}).add({
|
|
864
872
|
serviceId: "oauth",
|
|
865
873
|
clientName: "oauth",
|
|
@@ -1098,7 +1106,12 @@ const renew = async (client, grant) => {
|
|
|
1098
1106
|
//#region src/keboola/bearer/credentials/credentials.ts
|
|
1099
1107
|
const DEFAULT_REFRESH_THRESHOLD = .9;
|
|
1100
1108
|
const signInEnded = () => new KeboolaError(KeboolaErrorType.SignInEnded);
|
|
1101
|
-
const
|
|
1109
|
+
const toRestoreStatus = (outcome) => {
|
|
1110
|
+
if (outcome === void 0 || outcome === "skipped") return "empty";
|
|
1111
|
+
if (outcome === "refused") return "expired";
|
|
1112
|
+
return outcome;
|
|
1113
|
+
};
|
|
1114
|
+
const createCredentials = ({ state, persistor, middlewares, refreshThreshold = DEFAULT_REFRESH_THRESHOLD, onSignedOut, onExpired }) => {
|
|
1102
1115
|
const rotationMap = /* @__PURE__ */ new Map();
|
|
1103
1116
|
const generations = /* @__PURE__ */ new Map();
|
|
1104
1117
|
const generationOf = (baseUrl) => generations.get(baseUrl) ?? 0;
|
|
@@ -1107,10 +1120,10 @@ const createCredentials = ({ state, persistor, middlewares, mode = "token", refr
|
|
|
1107
1120
|
baseUrl,
|
|
1108
1121
|
middlewares
|
|
1109
1122
|
});
|
|
1110
|
-
const epochBefore =
|
|
1123
|
+
const epochBefore = require_transientRetries.Result.unwrap(state.auth.getEpoch(baseUrl));
|
|
1111
1124
|
const generationBefore = generationOf(baseUrl);
|
|
1112
|
-
const refreshed = await
|
|
1113
|
-
return
|
|
1125
|
+
const refreshed = await require_transientRetries.Result.tryCatchAsync(() => renew(client, grant));
|
|
1126
|
+
return require_transientRetries.Result.unwrapOr(state.auth.getEpoch(baseUrl), -1) === epochBefore && generationOf(baseUrl) === generationBefore ? refreshed : require_transientRetries.Result.failure(signInEnded());
|
|
1114
1127
|
};
|
|
1115
1128
|
/**
|
|
1116
1129
|
* A stack's teardown, from the credential's side.
|
|
@@ -1125,18 +1138,19 @@ const createCredentials = ({ state, persistor, middlewares, mode = "token", refr
|
|
|
1125
1138
|
/**
|
|
1126
1139
|
* The rotation, and the one place a credential is declared dead.
|
|
1127
1140
|
*
|
|
1141
|
+
* - Renews by the credential's own kind: the refresh token, or the session id with the cookie.
|
|
1128
1142
|
* - A refused refresh token or session is unambiguous.
|
|
1129
1143
|
* - The triggering 401 is not (an unreachable project answers the same), so never sign out on a replay.
|
|
1130
1144
|
*/
|
|
1131
1145
|
const rotateOnce = async (baseUrl) => {
|
|
1132
|
-
const credential = state.auth.
|
|
1146
|
+
const credential = state.auth.requireCredential(baseUrl);
|
|
1133
1147
|
if (!credential.success) return credential;
|
|
1134
1148
|
const refreshed = await refresh(baseUrl, renewalGrant(credential.data));
|
|
1135
1149
|
if (!refreshed.success) {
|
|
1136
1150
|
if (require_middleware.isUnauthorized(refreshed.error)) expire(baseUrl);
|
|
1137
1151
|
return refreshed;
|
|
1138
1152
|
}
|
|
1139
|
-
return
|
|
1153
|
+
return require_transientRetries.Result.map(state.auth.applyRefresh(baseUrl, refreshed.data), () => refreshed.data.accessToken);
|
|
1140
1154
|
};
|
|
1141
1155
|
const rotate = (baseUrl) => ensure(rotationMap, baseUrl, () => require_dedupe.dedupe(() => rotateOnce(baseUrl)))();
|
|
1142
1156
|
const restoreStack = async (baseUrl, grant) => {
|
|
@@ -1161,31 +1175,26 @@ const createCredentials = ({ state, persistor, middlewares, mode = "token", refr
|
|
|
1161
1175
|
* when persistence may start.
|
|
1162
1176
|
*/
|
|
1163
1177
|
const restore = async () => {
|
|
1164
|
-
const
|
|
1165
|
-
const stacks = hydrated.stacks.map((stack) => stack.credential && stack.credential.type !== "static" && stack.credential.type !== mode ? {
|
|
1166
|
-
...stack,
|
|
1167
|
-
credential: null
|
|
1168
|
-
} : stack);
|
|
1169
|
-
const { current } = hydrated;
|
|
1178
|
+
const { stacks, current } = persistor.hydrate();
|
|
1170
1179
|
const scoped = stacks.find(({ baseUrl }) => baseUrl === current?.baseUrl);
|
|
1171
1180
|
const restored = stacks.map(async ({ baseUrl, credential, projects }) => {
|
|
1172
1181
|
state.stacks.ensure(baseUrl);
|
|
1173
1182
|
if (!credential) return "unreachable";
|
|
1174
|
-
if (
|
|
1175
|
-
const outcome =
|
|
1183
|
+
if (require_transientRetries.Result.unwrapOr(state.auth.getEpoch(baseUrl), 0) > 0) return "skipped";
|
|
1184
|
+
const outcome = await restoreStack(baseUrl, credential);
|
|
1176
1185
|
if (outcome === "restored") restoreProjects(baseUrl, projects);
|
|
1177
1186
|
return outcome;
|
|
1178
1187
|
});
|
|
1179
1188
|
const results = await Promise.all(restored);
|
|
1180
|
-
const
|
|
1189
|
+
const scopedOutcome = scoped?.credential ? results[stacks.indexOf(scoped)] : void 0;
|
|
1181
1190
|
return {
|
|
1182
1191
|
lastActive: current,
|
|
1183
|
-
status:
|
|
1192
|
+
status: toRestoreStatus(scopedOutcome)
|
|
1184
1193
|
};
|
|
1185
1194
|
};
|
|
1186
1195
|
const isStale = (baseUrl) => {
|
|
1187
|
-
const ageing =
|
|
1188
|
-
return
|
|
1196
|
+
const ageing = require_transientRetries.Result.map(state.auth.requireCredential(baseUrl), ({ issuedAt, expiresIn }) => Date.now() >= issuedAt + expiresIn * 1e3 * refreshThreshold);
|
|
1197
|
+
return require_transientRetries.Result.unwrapOr(ageing, false);
|
|
1189
1198
|
};
|
|
1190
1199
|
const signOut = (baseUrl) => {
|
|
1191
1200
|
rotationMap.delete(baseUrl);
|
|
@@ -1194,14 +1203,18 @@ const createCredentials = ({ state, persistor, middlewares, mode = "token", refr
|
|
|
1194
1203
|
return signedOut;
|
|
1195
1204
|
};
|
|
1196
1205
|
const expire = (baseUrl) => {
|
|
1197
|
-
if (state.auth.notifyExpired(baseUrl))
|
|
1206
|
+
if (!state.auth.notifyExpired(baseUrl)) return;
|
|
1207
|
+
signOut(baseUrl);
|
|
1208
|
+
onExpired?.(baseUrl);
|
|
1198
1209
|
};
|
|
1199
|
-
const canRefresh = (baseUrl) => state.auth.requireCredentialOf(baseUrl, mode).success;
|
|
1200
1210
|
const renewIfStale = async (baseUrl) => {
|
|
1201
1211
|
if (isStale(baseUrl)) await rotate(baseUrl);
|
|
1202
1212
|
};
|
|
1203
1213
|
const middleware = (baseUrl) => require_middleware.createBearerAuthMiddleware({ getAccessToken: async ({ forceRefresh = false } = {}) => {
|
|
1204
|
-
if (forceRefresh)
|
|
1214
|
+
if (forceRefresh) {
|
|
1215
|
+
if (!state.auth.requireCredential(baseUrl).success) return null;
|
|
1216
|
+
return require_transientRetries.Result.unwrap(await rotate(baseUrl));
|
|
1217
|
+
}
|
|
1205
1218
|
await renewIfStale(baseUrl);
|
|
1206
1219
|
return state.auth.getAccessToken(baseUrl);
|
|
1207
1220
|
} });
|
|
@@ -1232,10 +1245,10 @@ const authenticatedAuth = (credential) => ({
|
|
|
1232
1245
|
status: "authenticated",
|
|
1233
1246
|
credential
|
|
1234
1247
|
});
|
|
1235
|
-
const bearerCredential = (input) =>
|
|
1248
|
+
const bearerCredential = (input) => ({
|
|
1236
1249
|
...input,
|
|
1237
1250
|
issuedAt: Date.now()
|
|
1238
|
-
};
|
|
1251
|
+
});
|
|
1239
1252
|
const expiredCredential = (credential) => ({
|
|
1240
1253
|
...credential,
|
|
1241
1254
|
issuedAt: Date.now() - credential.expiresIn * 1e3
|
|
@@ -1294,12 +1307,10 @@ const Errors = {
|
|
|
1294
1307
|
notReady: () => new KeboolaError(KeboolaErrorType.NotReady),
|
|
1295
1308
|
alreadyRestoring: (baseUrl) => /* @__PURE__ */ new Error(`Stack "${baseUrl}" is already being restored`),
|
|
1296
1309
|
notRestoring: (baseUrl) => /* @__PURE__ */ new Error(`Stack "${baseUrl}" is not being restored`),
|
|
1297
|
-
unexpectedCredentialKind: (baseUrl, kind) => /* @__PURE__ */ new Error(`Stack "${baseUrl}" holds a ${kind} credential`),
|
|
1298
|
-
notRotatingCredential: (baseUrl) => /* @__PURE__ */ new Error(`Stack "${baseUrl}" holds a static credential`),
|
|
1299
1310
|
credentialKindChanged: (from, to) => /* @__PURE__ */ new Error(`A ${from} credential cannot become ${to}`),
|
|
1300
1311
|
missingProject: (id) => /* @__PURE__ */ new Error(`No project "${id}"`)
|
|
1301
1312
|
};
|
|
1302
|
-
const authenticated = (auth) => auth.status === "authenticated" ?
|
|
1313
|
+
const authenticated = (auth) => auth.status === "authenticated" ? require_transientRetries.Result.success(auth.credential) : require_transientRetries.Result.failure(Errors.notAuthenticated());
|
|
1303
1314
|
//#endregion
|
|
1304
1315
|
//#region src/keboola/bearer/state/auth.ts
|
|
1305
1316
|
/**
|
|
@@ -1325,20 +1336,18 @@ const createExpiryLatch = () => {
|
|
|
1325
1336
|
* sign-in is this" — what an in-flight exchange compares itself against.
|
|
1326
1337
|
*/
|
|
1327
1338
|
const createAuth = ({ stacks, projects, expiry }) => {
|
|
1328
|
-
const requireUnauthenticated = (baseUrl) =>
|
|
1329
|
-
const requireAnonymous = (baseUrl) =>
|
|
1330
|
-
const requireRestoring = (baseUrl) =>
|
|
1331
|
-
const
|
|
1332
|
-
const requireCredentialOf = (baseUrl, mode) => require_jobStatus.Result.andThen(requireRotatingCredential(baseUrl), (credential) => credential.type === mode ? require_jobStatus.Result.success(credential) : require_jobStatus.Result.failure(Errors.unexpectedCredentialKind(baseUrl, credential.type)));
|
|
1333
|
-
const startRestore = (baseUrl) => require_jobStatus.Result.map(requireAnonymous(baseUrl), (stack) => stacks.set({
|
|
1339
|
+
const requireUnauthenticated = (baseUrl) => require_transientRetries.Result.andThen(stacks.get(baseUrl), (stack) => stack.auth.status === "authenticated" ? require_transientRetries.Result.failure(Errors.alreadyAuthenticated()) : require_transientRetries.Result.success(stack));
|
|
1340
|
+
const requireAnonymous = (baseUrl) => require_transientRetries.Result.andThen(requireUnauthenticated(baseUrl), (stack) => stack.auth.status === "restoring" ? require_transientRetries.Result.failure(Errors.alreadyRestoring(baseUrl)) : require_transientRetries.Result.success(stack));
|
|
1341
|
+
const requireRestoring = (baseUrl) => require_transientRetries.Result.andThen(stacks.get(baseUrl), (stack) => stack.auth.status === "restoring" ? require_transientRetries.Result.success(stack) : require_transientRetries.Result.failure(Errors.notRestoring(baseUrl)));
|
|
1342
|
+
const startRestore = (baseUrl) => require_transientRetries.Result.map(requireAnonymous(baseUrl), (stack) => stacks.set({
|
|
1334
1343
|
...stack,
|
|
1335
1344
|
auth: Entry.restoringAuth()
|
|
1336
1345
|
}));
|
|
1337
|
-
const cancelRestore = (baseUrl) =>
|
|
1346
|
+
const cancelRestore = (baseUrl) => require_transientRetries.Result.map(requireRestoring(baseUrl), (stack) => stacks.set({
|
|
1338
1347
|
...stack,
|
|
1339
1348
|
auth: Entry.anonymousAuth()
|
|
1340
1349
|
}));
|
|
1341
|
-
const authenticate = (baseUrl, input) =>
|
|
1350
|
+
const authenticate = (baseUrl, input) => require_transientRetries.Result.map(requireUnauthenticated(baseUrl), (stack) => {
|
|
1342
1351
|
expiry.arm(baseUrl);
|
|
1343
1352
|
return stacks.set({
|
|
1344
1353
|
...stack,
|
|
@@ -1346,15 +1355,15 @@ const createAuth = ({ stacks, projects, expiry }) => {
|
|
|
1346
1355
|
auth: Entry.authenticatedAuth(Entry.bearerCredential(input))
|
|
1347
1356
|
});
|
|
1348
1357
|
});
|
|
1349
|
-
const applyRefresh = (baseUrl, input) =>
|
|
1358
|
+
const applyRefresh = (baseUrl, input) => require_transientRetries.Result.andThen(stacks.requireCredential(baseUrl), (credential) => credential.type !== input.type ? require_transientRetries.Result.failure(Errors.credentialKindChanged(credential.type, input.type)) : require_transientRetries.Result.map(stacks.get(baseUrl), (stack) => stacks.set({
|
|
1350
1359
|
...stack,
|
|
1351
1360
|
auth: Entry.authenticatedAuth(Entry.bearerCredential(input))
|
|
1352
1361
|
})));
|
|
1353
|
-
const forceExpire = (baseUrl) =>
|
|
1362
|
+
const forceExpire = (baseUrl) => require_transientRetries.Result.andThen(stacks.requireCredential(baseUrl), (credential) => require_transientRetries.Result.map(stacks.get(baseUrl), (stack) => stacks.set({
|
|
1354
1363
|
...stack,
|
|
1355
1364
|
auth: Entry.authenticatedAuth(Entry.expiredCredential(credential))
|
|
1356
1365
|
})));
|
|
1357
|
-
const signOut = (baseUrl) =>
|
|
1366
|
+
const signOut = (baseUrl) => require_transientRetries.Result.map(stacks.get(baseUrl), (stack) => {
|
|
1358
1367
|
projects.closeAll(baseUrl);
|
|
1359
1368
|
return stacks.set({
|
|
1360
1369
|
...stack,
|
|
@@ -1362,8 +1371,8 @@ const createAuth = ({ stacks, projects, expiry }) => {
|
|
|
1362
1371
|
auth: Entry.anonymousAuth()
|
|
1363
1372
|
});
|
|
1364
1373
|
});
|
|
1365
|
-
const getEpoch = (baseUrl) =>
|
|
1366
|
-
const getAccessToken = (baseUrl) =>
|
|
1374
|
+
const getEpoch = (baseUrl) => require_transientRetries.Result.map(stacks.get(baseUrl), (stack) => stack.epoch);
|
|
1375
|
+
const getAccessToken = (baseUrl) => require_transientRetries.Result.unwrapOr(require_transientRetries.Result.map(stacks.requireCredential(baseUrl), ({ accessToken }) => accessToken), null);
|
|
1367
1376
|
return {
|
|
1368
1377
|
startRestore,
|
|
1369
1378
|
cancelRestore,
|
|
@@ -1373,8 +1382,6 @@ const createAuth = ({ stacks, projects, expiry }) => {
|
|
|
1373
1382
|
signOut,
|
|
1374
1383
|
notifyExpired: expiry.report,
|
|
1375
1384
|
requireCredential: stacks.requireCredential,
|
|
1376
|
-
requireRotatingCredential,
|
|
1377
|
-
requireCredentialOf,
|
|
1378
1385
|
getEpoch,
|
|
1379
1386
|
getAccessToken
|
|
1380
1387
|
};
|
|
@@ -1386,7 +1393,7 @@ const createProjects = ({ store, stacks }) => {
|
|
|
1386
1393
|
const has = (id) => id in store.get().projects;
|
|
1387
1394
|
const get = (id) => {
|
|
1388
1395
|
const project = store.get().projects[id];
|
|
1389
|
-
return project ?
|
|
1396
|
+
return project ? require_transientRetries.Result.success(project) : require_transientRetries.Result.failure(Errors.missingProject(id));
|
|
1390
1397
|
};
|
|
1391
1398
|
const list = (baseUrl) => Object.values(store.get().projects).filter((project) => project.baseUrl === baseUrl);
|
|
1392
1399
|
/** Every open project with this id, whatever stack it sits on — a project number is not unique. */
|
|
@@ -1402,7 +1409,7 @@ const createProjects = ({ store, stacks }) => {
|
|
|
1402
1409
|
});
|
|
1403
1410
|
return project;
|
|
1404
1411
|
};
|
|
1405
|
-
const update = (id, updater) =>
|
|
1412
|
+
const update = (id, updater) => require_transientRetries.Result.map(get(id), (project) => set(updater(project)));
|
|
1406
1413
|
const removeMany = (ids, nextActive) => {
|
|
1407
1414
|
const state = store.get();
|
|
1408
1415
|
const projects = { ...state.projects };
|
|
@@ -1413,13 +1420,13 @@ const createProjects = ({ store, stacks }) => {
|
|
|
1413
1420
|
projects
|
|
1414
1421
|
});
|
|
1415
1422
|
};
|
|
1416
|
-
const requireCredential = (id) =>
|
|
1423
|
+
const requireCredential = (id) => require_transientRetries.Result.andThen(get(id), (project) => stacks.requireCredential(project.baseUrl));
|
|
1417
1424
|
const open = (baseUrl, projectId) => {
|
|
1418
1425
|
const id = Entry.projectEntryId(baseUrl, projectId);
|
|
1419
1426
|
if (has(id)) return get(id);
|
|
1420
|
-
return
|
|
1427
|
+
return require_transientRetries.Result.map(stacks.requireCredential(baseUrl), () => set(Entry.project(baseUrl, projectId)));
|
|
1421
1428
|
};
|
|
1422
|
-
const close = (id) =>
|
|
1429
|
+
const close = (id) => require_transientRetries.Result.tap(get(id), ({ baseUrl, projectId }) => {
|
|
1423
1430
|
const { active } = store.get();
|
|
1424
1431
|
const isScoped = active.baseUrl === baseUrl && active.projectId === projectId;
|
|
1425
1432
|
removeMany([id], isScoped ? Entry.stackAddress(baseUrl) : active);
|
|
@@ -1487,25 +1494,25 @@ const createScope = ({ store, stacks, projects }) => {
|
|
|
1487
1494
|
return location;
|
|
1488
1495
|
};
|
|
1489
1496
|
const getActiveStack = () => getActive().stack;
|
|
1490
|
-
const activateStack = (baseUrl) =>
|
|
1497
|
+
const activateStack = (baseUrl) => require_transientRetries.Result.map(stacks.get(baseUrl), (stack) => {
|
|
1491
1498
|
const next = Entry.stackAddress(stack.baseUrl);
|
|
1492
1499
|
set(next);
|
|
1493
1500
|
return next;
|
|
1494
1501
|
});
|
|
1495
|
-
const activateProject = (baseUrl, projectId) =>
|
|
1502
|
+
const activateProject = (baseUrl, projectId) => require_transientRetries.Result.map(projects.requireCredential(Entry.projectEntryId(baseUrl, projectId)), () => {
|
|
1496
1503
|
const next = Entry.projectAddress(baseUrl, projectId);
|
|
1497
1504
|
set(next);
|
|
1498
1505
|
return next;
|
|
1499
1506
|
});
|
|
1500
1507
|
const selectStack = (baseUrl) => {
|
|
1501
1508
|
const stack = stacks.ensure(baseUrl);
|
|
1502
|
-
return
|
|
1509
|
+
return require_transientRetries.Result.map(activateStack(stack.baseUrl), () => stack);
|
|
1503
1510
|
};
|
|
1504
1511
|
const selectProject = (projectId) => {
|
|
1505
1512
|
const { baseUrl } = getActiveStack();
|
|
1506
1513
|
const project = projects.open(baseUrl, projectId);
|
|
1507
1514
|
if (!project.success) return project;
|
|
1508
|
-
return
|
|
1515
|
+
return require_transientRetries.Result.map(activateProject(baseUrl, projectId), () => project.data);
|
|
1509
1516
|
};
|
|
1510
1517
|
const deactivate = () => {
|
|
1511
1518
|
const active = get();
|
|
@@ -1514,7 +1521,7 @@ const createScope = ({ store, stacks, projects }) => {
|
|
|
1514
1521
|
};
|
|
1515
1522
|
const requireActiveProject = () => {
|
|
1516
1523
|
const { project } = getActive();
|
|
1517
|
-
return project ?
|
|
1524
|
+
return project ? require_transientRetries.Result.success(project) : require_transientRetries.Result.failure(Errors.notReady());
|
|
1518
1525
|
};
|
|
1519
1526
|
return {
|
|
1520
1527
|
get,
|
|
@@ -1535,7 +1542,7 @@ const createStacks = ({ store, forgetExpiry }) => {
|
|
|
1535
1542
|
const has = (baseUrl) => baseUrl in store.get().stacks;
|
|
1536
1543
|
const get = (baseUrl) => {
|
|
1537
1544
|
const stack = store.get().stacks[baseUrl];
|
|
1538
|
-
return stack ?
|
|
1545
|
+
return stack ? require_transientRetries.Result.success(stack) : require_transientRetries.Result.failure(Errors.unconfigured());
|
|
1539
1546
|
};
|
|
1540
1547
|
const list = () => Object.values(store.get().stacks);
|
|
1541
1548
|
const set = (stack) => {
|
|
@@ -1549,8 +1556,8 @@ const createStacks = ({ store, forgetExpiry }) => {
|
|
|
1549
1556
|
});
|
|
1550
1557
|
return stack;
|
|
1551
1558
|
};
|
|
1552
|
-
const update = (baseUrl, updater) =>
|
|
1553
|
-
const requireCredential = (baseUrl) =>
|
|
1559
|
+
const update = (baseUrl, updater) => require_transientRetries.Result.map(get(baseUrl), (stack) => set(updater(stack)));
|
|
1560
|
+
const requireCredential = (baseUrl) => require_transientRetries.Result.andThen(get(baseUrl), (stack) => authenticated(stack.auth));
|
|
1554
1561
|
const ensure = (baseUrl) => {
|
|
1555
1562
|
const existing = get(baseUrl);
|
|
1556
1563
|
if (existing.success) return existing.data;
|
|
@@ -1560,7 +1567,7 @@ const createStacks = ({ store, forgetExpiry }) => {
|
|
|
1560
1567
|
const stack = get(baseUrl);
|
|
1561
1568
|
if (!stack.success) return stack;
|
|
1562
1569
|
const state = store.get();
|
|
1563
|
-
if (state.active.baseUrl === baseUrl) return
|
|
1570
|
+
if (state.active.baseUrl === baseUrl) return require_transientRetries.Result.failure(Errors.stackActive());
|
|
1564
1571
|
const stacks = { ...state.stacks };
|
|
1565
1572
|
delete stacks[baseUrl];
|
|
1566
1573
|
const projects = Object.fromEntries(Object.entries(state.projects).filter(([, project]) => project.baseUrl !== baseUrl));
|
|
@@ -1946,24 +1953,16 @@ const SESSION_STORAGE_KEY = "keboola:session";
|
|
|
1946
1953
|
*
|
|
1947
1954
|
* - `token`: the refresh token. It rotates, is single-use and is server-revocable, so a leaked
|
|
1948
1955
|
* snapshot has limited and revocable value. The access token is never written.
|
|
1949
|
-
* - `static`: the token itself — a long-lived PAT the user pasted, which nothing can re-mint.
|
|
1950
1956
|
* - `cookie`: the session id. The session cookie is the durable half and the browser keeps it;
|
|
1951
1957
|
* the id alone renews nothing.
|
|
1952
1958
|
*/
|
|
1953
|
-
const persistedCredentialSchema = zod.discriminatedUnion("type", [
|
|
1954
|
-
zod.
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
zod.
|
|
1959
|
-
|
|
1960
|
-
sessionId: zod.string()
|
|
1961
|
-
}),
|
|
1962
|
-
zod.object({
|
|
1963
|
-
type: zod.literal("static"),
|
|
1964
|
-
accessToken: zod.string()
|
|
1965
|
-
})
|
|
1966
|
-
]);
|
|
1959
|
+
const persistedCredentialSchema = zod.discriminatedUnion("type", [zod.object({
|
|
1960
|
+
type: zod.literal("token"),
|
|
1961
|
+
refreshToken: zod.string()
|
|
1962
|
+
}), zod.object({
|
|
1963
|
+
type: zod.literal("cookie"),
|
|
1964
|
+
sessionId: zod.string()
|
|
1965
|
+
})]);
|
|
1967
1966
|
/** A record per project rather than a bare id, so a project can grow a field without a migration. */
|
|
1968
1967
|
const persistedProjectSchema = zod.object({ projectId: zod.number() });
|
|
1969
1968
|
const persistedSessionSchema = zod.object({
|
|
@@ -1973,7 +1972,7 @@ const persistedSessionSchema = zod.object({
|
|
|
1973
1972
|
}).nullable(),
|
|
1974
1973
|
stacks: zod.array(zod.object({
|
|
1975
1974
|
baseUrl: zod.string(),
|
|
1976
|
-
credential: persistedCredentialSchema.nullable(),
|
|
1975
|
+
credential: persistedCredentialSchema.nullable().catch(null),
|
|
1977
1976
|
projects: zod.array(persistedProjectSchema)
|
|
1978
1977
|
}))
|
|
1979
1978
|
});
|
|
@@ -1984,18 +1983,13 @@ const EMPTY_PERSISTED_SESSION = {
|
|
|
1984
1983
|
const durableCredential = (stack) => {
|
|
1985
1984
|
if (stack.auth.status !== "authenticated") return null;
|
|
1986
1985
|
const { credential } = stack.auth;
|
|
1987
|
-
|
|
1986
|
+
return credential.type === "token" ? {
|
|
1988
1987
|
type: "token",
|
|
1989
1988
|
refreshToken: credential.refreshToken
|
|
1990
|
-
}
|
|
1991
|
-
if (credential.type === "cookie") return {
|
|
1989
|
+
} : {
|
|
1992
1990
|
type: "cookie",
|
|
1993
1991
|
sessionId: credential.sessionId
|
|
1994
1992
|
};
|
|
1995
|
-
return {
|
|
1996
|
-
type: "static",
|
|
1997
|
-
accessToken: credential.accessToken
|
|
1998
|
-
};
|
|
1999
1993
|
};
|
|
2000
1994
|
const createSessionPersistor = (storage) => {
|
|
2001
1995
|
const persistor = createPersistor({
|
|
@@ -2062,7 +2056,7 @@ const createPerStack = ({ state, credentials, middlewareFor }) => {
|
|
|
2062
2056
|
*
|
|
2063
2057
|
* - Credential-derived state is owned by the scope whose end ends it (`perStack`, `perProject`).
|
|
2064
2058
|
*/
|
|
2065
|
-
const createKeboola = ({ defaultBaseUrl, storage, middlewares, clientServiceUrls,
|
|
2059
|
+
const createKeboola = ({ defaultBaseUrl, storage, middlewares, clientServiceUrls, onExpired }) => {
|
|
2066
2060
|
const state = createState(require_createFetchClient.normalizeBaseUrl(defaultBaseUrl));
|
|
2067
2061
|
const persistor = createSessionPersistor(storage);
|
|
2068
2062
|
const middlewareFor = createMiddlewareFor(middlewares);
|
|
@@ -2070,8 +2064,8 @@ const createKeboola = ({ defaultBaseUrl, storage, middlewares, clientServiceUrls
|
|
|
2070
2064
|
state,
|
|
2071
2065
|
persistor,
|
|
2072
2066
|
middlewares: middlewareFor("auth"),
|
|
2073
|
-
|
|
2074
|
-
|
|
2067
|
+
onSignedOut: (baseUrl) => perProject.forgetUnder(baseUrl),
|
|
2068
|
+
onExpired
|
|
2075
2069
|
});
|
|
2076
2070
|
const perStack = createPerStack({
|
|
2077
2071
|
state,
|
|
@@ -2086,33 +2080,33 @@ const createKeboola = ({ defaultBaseUrl, storage, middlewares, clientServiceUrls
|
|
|
2086
2080
|
clientServiceUrls,
|
|
2087
2081
|
buildApi: (project) => createApiFor({
|
|
2088
2082
|
stackUrl: () => project.baseUrl,
|
|
2089
|
-
project: () =>
|
|
2083
|
+
project: () => require_transientRetries.Result.unwrap(state.projects.get(project.id)),
|
|
2090
2084
|
pinned: true
|
|
2091
2085
|
})
|
|
2092
2086
|
});
|
|
2093
2087
|
state.store.subscribe(perStack.context.subscriber);
|
|
2094
2088
|
perStack.context.subscriber(state.store.get());
|
|
2095
2089
|
state.store.subscribe(perProject.context.subscriber);
|
|
2096
|
-
const selectStack = (baseUrl) =>
|
|
2097
|
-
const selectProject = (projectId) =>
|
|
2090
|
+
const selectStack = (baseUrl) => require_transientRetries.Result.unwrap(state.scope.selectStack(require_createFetchClient.normalizeBaseUrl(baseUrl)));
|
|
2091
|
+
const selectProject = (projectId) => require_transientRetries.Result.unwrap(state.scope.selectProject(projectId));
|
|
2098
2092
|
/** The scoped stack, or a named one — normalised to key like `select`. */
|
|
2099
2093
|
const requireStackUrl = (baseUrl) => baseUrl === void 0 ? state.scope.getActiveStack().baseUrl : require_createFetchClient.normalizeBaseUrl(baseUrl);
|
|
2100
2094
|
/** The scoped project, or the row a table id names — on whichever stack that is. */
|
|
2101
|
-
const requireProjectEntry = (id) => id === void 0 ?
|
|
2095
|
+
const requireProjectEntry = (id) => id === void 0 ? require_transientRetries.Result.unwrap(state.scope.requireActiveProject()) : require_transientRetries.Result.unwrap(state.projects.get(id));
|
|
2102
2096
|
/**
|
|
2103
2097
|
* The scoped project, or a named open one.
|
|
2104
2098
|
*
|
|
2105
2099
|
* - An id is ambiguous across stacks: the active stack decides, else the single one open elsewhere.
|
|
2106
2100
|
*/
|
|
2107
2101
|
const requireProject = (projectId) => {
|
|
2108
|
-
if (projectId === void 0) return
|
|
2102
|
+
if (projectId === void 0) return require_transientRetries.Result.unwrap(state.scope.requireActiveProject());
|
|
2109
2103
|
const scoped = state.projects.get(Entry.projectEntryId(requireStackUrl(), projectId));
|
|
2110
2104
|
if (scoped.success) return scoped.data;
|
|
2111
2105
|
const [only, ...rest] = state.projects.findAll(projectId);
|
|
2112
|
-
return only !== void 0 && rest.length === 0 ? only :
|
|
2106
|
+
return only !== void 0 && rest.length === 0 ? only : require_transientRetries.Result.unwrap(scoped);
|
|
2113
2107
|
};
|
|
2114
2108
|
const headersFor = (project) => {
|
|
2115
|
-
const credential =
|
|
2109
|
+
const credential = require_transientRetries.Result.unwrap(state.auth.requireCredential(project.baseUrl));
|
|
2116
2110
|
return {
|
|
2117
2111
|
[require_createFetchClient.HttpHeader.AUTHORIZATION]: `Bearer ${credential.accessToken}`,
|
|
2118
2112
|
[require_createFetchClient.KeboolaHttpHeader.PROJECT_ID]: String(project.projectId)
|
|
@@ -2133,15 +2127,14 @@ const createKeboola = ({ defaultBaseUrl, storage, middlewares, clientServiceUrls
|
|
|
2133
2127
|
const getAuthHeadersAsync = async (projectId) => {
|
|
2134
2128
|
const project = requireProject(projectId);
|
|
2135
2129
|
await credentials.renewIfStale(project.baseUrl);
|
|
2136
|
-
return headersFor(
|
|
2130
|
+
return headersFor(require_transientRetries.Result.unwrap(state.projects.get(project.id)));
|
|
2137
2131
|
};
|
|
2138
2132
|
const authenticate = (input) => {
|
|
2139
2133
|
const stack = state.scope.getActiveStack();
|
|
2140
|
-
if (input.type !== "
|
|
2141
|
-
if (input.type !== "token") return require_jobStatus.Result.unwrap(state.auth.authenticate(stack.baseUrl, input));
|
|
2134
|
+
if (input.type !== "token") return require_transientRetries.Result.unwrap(state.auth.authenticate(stack.baseUrl, input));
|
|
2142
2135
|
const { refreshToken } = input;
|
|
2143
2136
|
if (!refreshToken) throw new KeboolaError(KeboolaErrorType.NotAuthenticated);
|
|
2144
|
-
return
|
|
2137
|
+
return require_transientRetries.Result.unwrap(state.auth.authenticate(stack.baseUrl, {
|
|
2145
2138
|
...input,
|
|
2146
2139
|
refreshToken
|
|
2147
2140
|
}));
|
|
@@ -2168,7 +2161,7 @@ const createKeboola = ({ defaultBaseUrl, storage, middlewares, clientServiceUrls
|
|
|
2168
2161
|
} });
|
|
2169
2162
|
const activeApi = createApiFor({
|
|
2170
2163
|
stackUrl: () => state.scope.getActiveStack().baseUrl,
|
|
2171
|
-
project: () =>
|
|
2164
|
+
project: () => require_transientRetries.Result.unwrap(state.scope.requireActiveProject())
|
|
2172
2165
|
});
|
|
2173
2166
|
/** The scoped project's surface. Re-points when the scope moves. */
|
|
2174
2167
|
const getActiveApi = () => activeApi;
|
|
@@ -2181,13 +2174,13 @@ const createKeboola = ({ defaultBaseUrl, storage, middlewares, clientServiceUrls
|
|
|
2181
2174
|
const getApi = (projectId) => {
|
|
2182
2175
|
const { baseUrl } = state.scope.getActiveStack();
|
|
2183
2176
|
const project = Entry.project(baseUrl, projectId);
|
|
2184
|
-
|
|
2177
|
+
require_transientRetries.Result.unwrapOr(state.projects.open(baseUrl, projectId), null);
|
|
2185
2178
|
return perProject.get(project).api;
|
|
2186
2179
|
};
|
|
2187
2180
|
/** The scope's sign-in, or a named stack's — and everything that sign-in derived. */
|
|
2188
2181
|
const signOut = (baseUrl) => {
|
|
2189
2182
|
const target = requireStackUrl(baseUrl);
|
|
2190
|
-
return
|
|
2183
|
+
return require_transientRetries.Result.unwrap(credentials.signOut(target));
|
|
2191
2184
|
};
|
|
2192
2185
|
/**
|
|
2193
2186
|
* `input` replaces the active stack's sign-in, whatever it holds.
|
|
@@ -2200,26 +2193,13 @@ const createKeboola = ({ defaultBaseUrl, storage, middlewares, clientServiceUrls
|
|
|
2200
2193
|
return authenticate(input);
|
|
2201
2194
|
};
|
|
2202
2195
|
/**
|
|
2203
|
-
* A server-injected `token` credential, adopted whatever this client's mode.
|
|
2204
|
-
*
|
|
2205
|
-
* @deprecated Temporary, for the agent-project claim page only: Connection injects an API-mode
|
|
2206
|
-
* session through `UiConfig.programmaticAuth`. Remove together with that injection.
|
|
2207
|
-
*
|
|
2208
|
-
* - Replaces the active stack's sign-in, like `replace`.
|
|
2209
|
-
* - A cookie-mode client never rotates it, so it lasts as long as its access token.
|
|
2210
|
-
*/
|
|
2211
|
-
const adoptInjected = (input) => {
|
|
2212
|
-
signOut();
|
|
2213
|
-
return require_jobStatus.Result.unwrap(state.auth.authenticate(getActiveStack().baseUrl, input));
|
|
2214
|
-
};
|
|
2215
|
-
/**
|
|
2216
2196
|
* Leave one project: its row and everything built for it; its handles stop answering.
|
|
2217
2197
|
*
|
|
2218
2198
|
* - Counterpart of `getApi(projectId)`; without it the project is held and persisted until sign-out.
|
|
2219
2199
|
*/
|
|
2220
2200
|
const closeProject = (projectId) => {
|
|
2221
2201
|
const id = Entry.projectEntryId(requireStackUrl(), projectId);
|
|
2222
|
-
const closed =
|
|
2202
|
+
const closed = require_transientRetries.Result.unwrapOr(state.projects.close(id), null);
|
|
2223
2203
|
if (closed === null) return null;
|
|
2224
2204
|
perProject.forget(id);
|
|
2225
2205
|
return closed;
|
|
@@ -2227,7 +2207,7 @@ const createKeboola = ({ defaultBaseUrl, storage, middlewares, clientServiceUrls
|
|
|
2227
2207
|
const closeStack = (baseUrl) => {
|
|
2228
2208
|
const target = require_createFetchClient.normalizeBaseUrl(baseUrl);
|
|
2229
2209
|
if (state.scope.get().baseUrl === target) throw new KeboolaError(KeboolaErrorType.StackActive);
|
|
2230
|
-
const closed =
|
|
2210
|
+
const closed = require_transientRetries.Result.unwrapOr(state.stacks.close(target), null);
|
|
2231
2211
|
if (closed === null) return null;
|
|
2232
2212
|
perProject.forgetUnder(target);
|
|
2233
2213
|
perStack.forget(target);
|
|
@@ -2261,7 +2241,7 @@ const createKeboola = ({ defaultBaseUrl, storage, middlewares, clientServiceUrls
|
|
|
2261
2241
|
enablePersistence();
|
|
2262
2242
|
});
|
|
2263
2243
|
};
|
|
2264
|
-
const restore =
|
|
2244
|
+
const restore = require_transientRetries.lazy(() => credentials.restore().then((restored) => {
|
|
2265
2245
|
if (restored.status === "unreachable") enablePersistenceOnSignIn();
|
|
2266
2246
|
else enablePersistence();
|
|
2267
2247
|
return restored;
|
|
@@ -2281,7 +2261,7 @@ const createKeboola = ({ defaultBaseUrl, storage, middlewares, clientServiceUrls
|
|
|
2281
2261
|
* - Resolves with the stored credential's fate — only this tells `expired` from `empty`.
|
|
2282
2262
|
* - Other stacks still come back, persistence still starts; repeat calls share one promise.
|
|
2283
2263
|
*/
|
|
2284
|
-
const resume =
|
|
2264
|
+
const resume = require_transientRetries.lazy(() => restore().then(({ lastActive, status }) => {
|
|
2285
2265
|
if (!lastActive || callerScoped) return status;
|
|
2286
2266
|
const stack = selectStack(lastActive.baseUrl);
|
|
2287
2267
|
if (lastActive.projectId !== null && stack.auth.status === "authenticated") selectProject(lastActive.projectId);
|
|
@@ -2318,12 +2298,11 @@ const createKeboola = ({ defaultBaseUrl, storage, middlewares, clientServiceUrls
|
|
|
2318
2298
|
auth: {
|
|
2319
2299
|
authenticate: byCaller(authenticate),
|
|
2320
2300
|
replace: byCaller(replace),
|
|
2321
|
-
adoptInjected: byCaller(adoptInjected),
|
|
2322
2301
|
signOut: byCaller(signOut),
|
|
2323
2302
|
/** Whether the active stack holds a credential — `restoring` is not one yet. */
|
|
2324
2303
|
isAuthenticated,
|
|
2325
2304
|
isAuthenticatedAsync: () => resume().then(isAuthenticated),
|
|
2326
|
-
rotate: (baseUrl) => credentials.rotate(baseUrl).then(
|
|
2305
|
+
rotate: (baseUrl) => credentials.rotate(baseUrl).then(require_transientRetries.Result.unwrap),
|
|
2327
2306
|
getHeaders: getAuthHeaders,
|
|
2328
2307
|
getHeadersAsync: getAuthHeadersAsync
|
|
2329
2308
|
}
|
|
@@ -2473,7 +2452,7 @@ const createRetryMiddleware = (options) => {
|
|
|
2473
2452
|
} catch (error) {
|
|
2474
2453
|
if (attempt === maxRetries || !shouldRetry(error, attempt)) throw error;
|
|
2475
2454
|
const delayMs = backoffFactor * 1e3 * Math.pow(2, attempt);
|
|
2476
|
-
await
|
|
2455
|
+
await require_transientRetries.delay(delayMs, request.request.signal ?? void 0);
|
|
2477
2456
|
}
|
|
2478
2457
|
throw new Error("unreachable");
|
|
2479
2458
|
};
|
|
@@ -2522,18 +2501,20 @@ exports.KeboolaErrorType = KeboolaErrorType;
|
|
|
2522
2501
|
exports.KeboolaHttpHeader = require_createFetchClient.KeboolaHttpHeader;
|
|
2523
2502
|
exports.ManagementClientAuthError = require_ManagementSessionMintError.ManagementClientAuthError;
|
|
2524
2503
|
exports.ManagementSessionMintError = require_ManagementSessionMintError.ManagementSessionMintError;
|
|
2525
|
-
exports.QueryJobError =
|
|
2526
|
-
exports.
|
|
2527
|
-
exports.Result =
|
|
2504
|
+
exports.QueryJobError = require_QueryJobError.QueryJobError;
|
|
2505
|
+
exports.QueueJobError = require_QueueJobError.QueueJobError;
|
|
2506
|
+
exports.Result = require_transientRetries.Result;
|
|
2528
2507
|
exports.SESSION_STORAGE_KEY = SESSION_STORAGE_KEY;
|
|
2529
2508
|
exports.ServiceUnavailableError = require_storage.ServiceUnavailableError;
|
|
2509
|
+
exports.StorageJobError = require_storage.StorageJobError;
|
|
2530
2510
|
exports.SyncActionError = require_SyncActionError.SyncActionError;
|
|
2531
2511
|
exports.UserError = require_UserError.UserError;
|
|
2532
2512
|
exports.ValidationError = require_ValidationError.ValidationError;
|
|
2533
|
-
exports.asError =
|
|
2513
|
+
exports.asError = require_transientRetries.asError;
|
|
2534
2514
|
exports.assert = assert;
|
|
2535
2515
|
exports.coalesce = coalesce;
|
|
2536
|
-
exports.
|
|
2516
|
+
exports.collectByCursor = require_authClient.collectByCursor;
|
|
2517
|
+
exports.collectByOffset = require_collectByOffset.collectByOffset;
|
|
2537
2518
|
exports.concurrent = require_concurrent.concurrent;
|
|
2538
2519
|
exports.createAdminAccount = createAdminAccount;
|
|
2539
2520
|
exports.createDerivedAsyncStore = createDerivedAsyncStore;
|
|
@@ -2551,15 +2532,14 @@ exports.createPollRegistry = createPollRegistry;
|
|
|
2551
2532
|
exports.createQueryServiceSdk = require_sdk_queryService_index.createQueryServiceSdk;
|
|
2552
2533
|
exports.createRetryMiddleware = createRetryMiddleware;
|
|
2553
2534
|
exports.createSessionStorage = createSessionStorage;
|
|
2554
|
-
exports.createStorageSdk = require_sdk_storage_index.createStorageSdk;
|
|
2555
2535
|
exports.createStore = require_store.createStore;
|
|
2556
2536
|
exports.createUiVersionMiddleware = createUiVersionMiddleware;
|
|
2557
2537
|
exports.dedupe = require_dedupe.dedupe;
|
|
2558
2538
|
exports.deepMerge = deepMerge;
|
|
2559
|
-
exports.delay =
|
|
2560
|
-
exports.emitter =
|
|
2539
|
+
exports.delay = require_transientRetries.delay;
|
|
2540
|
+
exports.emitter = require_transientRetries.emitter;
|
|
2561
2541
|
exports.ensure = ensure;
|
|
2562
|
-
exports.failureOf =
|
|
2542
|
+
exports.failureOf = require_transientRetries.failureOf;
|
|
2563
2543
|
exports.formatValidationIssues = require_ValidationError.formatValidationIssues;
|
|
2564
2544
|
exports.generateUUID = require_generateUUID.generateUUID;
|
|
2565
2545
|
exports.isAbortError = require_createFetchClient.isAbortError;
|
|
@@ -2571,19 +2551,20 @@ exports.isKeboolaError = isKeboolaError;
|
|
|
2571
2551
|
exports.isManagementClientAuthError = require_management.isManagementClientAuthError;
|
|
2572
2552
|
exports.isManagementSessionMintError = require_management.isManagementSessionMintError;
|
|
2573
2553
|
exports.isPlainObject = require_isPlainObject.isPlainObject;
|
|
2574
|
-
exports.isQueryJobError =
|
|
2575
|
-
exports.
|
|
2554
|
+
exports.isQueryJobError = require_QueryJobError.isQueryJobError;
|
|
2555
|
+
exports.isQueueJobError = require_QueueJobError.isQueueJobError;
|
|
2556
|
+
exports.isStorageJobError = require_storage.isStorageJobError;
|
|
2576
2557
|
exports.isStorageTokenMutatingRequest = isStorageTokenMutatingRequest;
|
|
2577
2558
|
exports.isSyncActionError = require_SyncActionError.isSyncActionError;
|
|
2578
2559
|
exports.isTimeoutError = require_createFetchClient.isTimeoutError;
|
|
2579
2560
|
exports.isValidationError = require_ValidationError.isValidationError;
|
|
2580
|
-
exports.jobStatus =
|
|
2561
|
+
exports.jobStatus = require_transientRetries.jobStatus;
|
|
2581
2562
|
exports.keboolaUID = require_tag.keboolaUID;
|
|
2582
|
-
exports.lazy =
|
|
2563
|
+
exports.lazy = require_transientRetries.lazy;
|
|
2564
|
+
exports.nextCursorOf = require_authClient.nextCursorOf;
|
|
2583
2565
|
exports.parseLogLines = require_appLogs.parseLogLines;
|
|
2584
2566
|
exports.parseOrThrow = require_ValidationError.parseOrThrow;
|
|
2585
|
-
exports.
|
|
2586
|
-
exports.poller = require_jobStatus.poller;
|
|
2567
|
+
exports.poller = require_transientRetries.poller;
|
|
2587
2568
|
exports.readableReason = require_storage.readableReason;
|
|
2588
2569
|
exports.schemaGuidedMerge = require_configurations.schemaGuidedMerge;
|
|
2589
2570
|
exports.series = require_storage.series;
|