@keboola/api-client 36.0.0 → 40.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 +133 -103
- package/API-SURFACE.md +36 -2
- package/CHANGELOG.md +194 -0
- package/README.md +22 -20
- package/dist/{ManagementClientAuthError-DD4u0EU7.cjs → ManagementClientAuthError-DE7lNGZQ.cjs} +3 -2
- package/dist/{ManagementClientAuthError-DD4u0EU7.cjs.map → ManagementClientAuthError-DE7lNGZQ.cjs.map} +1 -1
- package/dist/{ManagementClientAuthError-ey-f03vy.js → ManagementClientAuthError-H30lti_Q.js} +3 -2
- package/dist/{ManagementClientAuthError-ey-f03vy.js.map → ManagementClientAuthError-H30lti_Q.js.map} +1 -1
- package/dist/{ValidationError-CLVJCCwH.cjs → ValidationError-D65QU0uq.cjs} +10 -16
- package/dist/ValidationError-D65QU0uq.cjs.map +1 -0
- package/dist/ValidationError-DjhtNMfZ.js +42 -0
- package/dist/ValidationError-DjhtNMfZ.js.map +1 -0
- 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-BjfUoWzs.cjs → appLogs-B9zFJIuy.cjs} +2 -2
- package/dist/{appLogs-BjfUoWzs.cjs.map → appLogs-B9zFJIuy.cjs.map} +1 -1
- package/dist/{appLogs-xsVkTriU.js → appLogs-BBkkUOW1.js} +2 -2
- package/dist/{appLogs-xsVkTriU.js.map → appLogs-BBkkUOW1.js.map} +1 -1
- package/dist/{appLogs-Ch7DYpzx.d.ts → appLogs-BS6ViVGR.d.ts} +2 -2
- package/dist/{appLogs-D5A13Y0y.d.cts → appLogs-C9YlJ2g8.d.cts} +2 -2
- package/dist/apps/index.cjs +30 -56
- package/dist/apps/index.cjs.map +1 -1
- package/dist/apps/index.d.cts +8 -13
- package/dist/apps/index.d.ts +8 -13
- package/dist/apps/index.js +30 -56
- package/dist/apps/index.js.map +1 -1
- 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 +8 -4
- package/dist/auth/index.d.cts +2 -2
- package/dist/auth/index.d.ts +2 -2
- package/dist/auth/index.js +2 -2
- package/dist/auth/types.d.cts +2 -2
- package/dist/auth/types.d.ts +2 -2
- package/dist/{auth-JQ33o3nU.cjs → auth-Dm0F2rOh.cjs} +2 -2
- package/dist/{auth-JQ33o3nU.cjs.map → auth-Dm0F2rOh.cjs.map} +1 -1
- package/dist/{auth-aItmDu45.js → auth-DworfoPy.js} +2 -2
- package/dist/{auth-aItmDu45.js.map → auth-DworfoPy.js.map} +1 -1
- package/dist/{authClient-_PpvGgZJ.cjs → authClient-BmuUo0J4.cjs} +141 -48
- package/dist/authClient-BmuUo0J4.cjs.map +1 -0
- package/dist/{authClient-D8i3JTM-.d.ts → authClient-CHXWJ9x3.d.ts} +109 -76
- package/dist/{authClient-D7W9vWPR.js → authClient-CgcDGd30.js} +108 -39
- package/dist/authClient-CgcDGd30.js.map +1 -0
- package/dist/{authClient-CTHNs6Tq.d.cts → authClient-vEt_7_uk.d.cts} +109 -76
- 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/businessWorkspaceApi/index.cjs +3 -0
- package/dist/businessWorkspaceApi/index.d.cts +2 -0
- package/dist/businessWorkspaceApi/index.d.ts +2 -0
- package/dist/businessWorkspaceApi/index.js +2 -0
- package/dist/businessWorkspaceApi/types.cjs +0 -0
- package/dist/businessWorkspaceApi/types.d.cts +2 -0
- package/dist/businessWorkspaceApi/types.d.ts +2 -0
- package/dist/businessWorkspaceApi/types.js +1 -0
- package/dist/businessWorkspaceApi-6tCDdpnY.cjs +66 -0
- package/dist/businessWorkspaceApi-6tCDdpnY.cjs.map +1 -0
- package/dist/businessWorkspaceApi-BLUdefRF.js +61 -0
- package/dist/businessWorkspaceApi-BLUdefRF.js.map +1 -0
- package/dist/businessWorkspaceApiClient-BHDJlHFo.d.cts +529 -0
- package/dist/businessWorkspaceApiClient-DI-z1VIH.d.ts +529 -0
- package/dist/chat/index.cjs +9 -5
- package/dist/chat/index.cjs.map +1 -1
- package/dist/chat/index.d.cts +3 -3
- package/dist/chat/index.d.ts +3 -3
- package/dist/chat/index.js +9 -5
- package/dist/chat/index.js.map +1 -1
- package/dist/chat/types.cjs +1 -3
- package/dist/chat/types.cjs.map +1 -1
- package/dist/chat/types.d.cts +2 -2
- package/dist/chat/types.d.ts +2 -2
- package/dist/chat/types.js +1 -3
- package/dist/chat/types.js.map +1 -1
- package/dist/{componentId-DkyQ8PM0.cjs → componentId-57vjsa2i.cjs} +4 -2
- package/dist/{componentId-DkyQ8PM0.cjs.map → componentId-57vjsa2i.cjs.map} +1 -1
- package/dist/{componentId-vJz-kWs6.js → componentId-C6WZa_R1.js} +4 -2
- package/dist/{componentId-vJz-kWs6.js.map → componentId-C6WZa_R1.js.map} +1 -1
- package/dist/{concurrent-CH9fbNr3.js → concurrent-BacWxPwi.js} +5 -7
- package/dist/concurrent-BacWxPwi.js.map +1 -0
- package/dist/{concurrent-tbiIa0UL.cjs → concurrent-CdVfR1N5.cjs} +5 -7
- package/dist/concurrent-CdVfR1N5.cjs.map +1 -0
- package/dist/{configurations-VtNE0nrT.js → configurations-BPKGGy-M.js} +14 -22
- package/dist/configurations-BPKGGy-M.js.map +1 -0
- package/dist/{configurations-CyFF9Dtu.cjs → configurations-BTRHVSRq.cjs} +20 -53
- package/dist/configurations-BTRHVSRq.cjs.map +1 -0
- package/dist/{configurations-BVvcimzo.js → configurations-Chg_JwJ1.js} +20 -53
- package/dist/configurations-Chg_JwJ1.js.map +1 -0
- package/dist/{configurations-zkNjr73Q.cjs → configurations-IYyOvhI3.cjs} +14 -22
- package/dist/configurations-IYyOvhI3.cjs.map +1 -0
- package/dist/constants/index.cjs +2 -2
- package/dist/constants/index.d.cts +2 -2
- package/dist/constants/index.d.ts +2 -2
- package/dist/constants/index.js +2 -2
- package/dist/{constants-wfbFsqqN.js → constants-C2tYAJSj.js} +10 -1
- package/dist/constants-C2tYAJSj.js.map +1 -0
- package/dist/{constants-C4DlsF_M.cjs → constants-C6xku_Vx.cjs} +10 -1
- package/dist/constants-C6xku_Vx.cjs.map +1 -0
- package/dist/{createFetchClient-DgMiqTJ8.cjs → createFetchClient-Cwp8max9.cjs} +24 -5
- package/dist/createFetchClient-Cwp8max9.cjs.map +1 -0
- package/dist/{createFetchClient-U-ZrwPl2.js → createFetchClient-DXHQK63w.js} +24 -5
- package/dist/createFetchClient-DXHQK63w.js.map +1 -0
- package/dist/{createGenericFetchClient-rxvUUbap.js → createGenericFetchClient-Dg1rgzmG.js} +2 -2
- package/dist/{createGenericFetchClient-rxvUUbap.js.map → createGenericFetchClient-Dg1rgzmG.js.map} +1 -1
- package/dist/{createGenericFetchClient-o3cPJeRn.cjs → createGenericFetchClient-Dl9cqTvR.cjs} +2 -2
- package/dist/{createGenericFetchClient-o3cPJeRn.cjs.map → createGenericFetchClient-Dl9cqTvR.cjs.map} +1 -1
- package/dist/{createOpenapiFetchClient-DhUU3M1W.cjs → createOpenapiFetchClient-BYqW-9tm.cjs} +2 -2
- package/dist/{createOpenapiFetchClient-DhUU3M1W.cjs.map → createOpenapiFetchClient-BYqW-9tm.cjs.map} +1 -1
- package/dist/{createOpenapiFetchClient-BVSc9ibR.js → createOpenapiFetchClient-DZUOVupy.js} +2 -2
- package/dist/{createOpenapiFetchClient-BVSc9ibR.js.map → createOpenapiFetchClient-DZUOVupy.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-0Rl_EuV_.cjs → dataScience-B5QxZnvW.cjs} +5 -5
- package/dist/{dataScience-0Rl_EuV_.cjs.map → dataScience-B5QxZnvW.cjs.map} +1 -1
- package/dist/{dataScience-C1gO5zUn.js → dataScience-OXcwdk1p.js} +5 -5
- package/dist/{dataScience-C1gO5zUn.js.map → dataScience-OXcwdk1p.js.map} +1 -1
- package/dist/dedupe-Cky1gSUu.js +21 -0
- package/dist/dedupe-Cky1gSUu.js.map +1 -0
- package/dist/dedupe-OSnnst2u.cjs +26 -0
- package/dist/dedupe-OSnnst2u.cjs.map +1 -0
- 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-C_48z8BN.js → developerPortalClient-B1QZ1rYi.js} +6 -8
- package/dist/{developerPortalClient-C_48z8BN.js.map → developerPortalClient-B1QZ1rYi.js.map} +1 -1
- package/dist/{developerPortalClient-ki0XS_OD.cjs → developerPortalClient-CLPpBksD.cjs} +6 -8
- package/dist/{developerPortalClient-ki0XS_OD.cjs.map → developerPortalClient-CLPpBksD.cjs.map} +1 -1
- package/dist/domain/permissions/index.cjs +9 -30
- package/dist/domain/permissions/index.cjs.map +1 -1
- package/dist/domain/permissions/index.d.cts +29 -102
- package/dist/domain/permissions/index.d.ts +29 -102
- package/dist/domain/permissions/index.js +9 -30
- package/dist/domain/permissions/index.js.map +1 -1
- package/dist/domain/storageTable/index.d.cts +1 -1
- package/dist/domain/storageTable/index.d.ts +1 -1
- package/dist/editor/index.cjs +2 -2
- package/dist/editor/index.cjs.map +1 -1
- 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/index.js.map +1 -1
- package/dist/editor/types.d.cts +1 -1
- package/dist/editor/types.d.ts +1 -1
- package/dist/encryption/index.cjs +2 -22
- package/dist/encryption/index.cjs.map +1 -1
- package/dist/encryption/index.d.cts +1 -1
- package/dist/encryption/index.d.ts +1 -1
- package/dist/encryption/index.js +2 -22
- package/dist/encryption/index.js.map +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-C83w7BKz.cjs → import-CNk89mqy.cjs} +3 -3
- package/dist/{import-C83w7BKz.cjs.map → import-CNk89mqy.cjs.map} +1 -1
- package/dist/{import-CROEK82b.js → import-DiMQCzLa.js} +3 -3
- package/dist/{import-CROEK82b.js.map → import-DiMQCzLa.js.map} +1 -1
- package/dist/{index-DR4QqItd.d.cts → index--ZpnE3YT.d.cts} +3 -3
- package/dist/{index-C77vTm2K.d.ts → index-BDZvaRud.d.ts} +6 -6
- package/dist/{index-KuQ79Mnz.d.ts → index-BVhHt5lx.d.cts} +18 -26
- package/dist/{index-NC1dXRTD.d.ts → index-BfqkgPGI.d.cts} +7 -13
- package/dist/{index-NC1dXRTD.d.cts → index-BfqkgPGI.d.ts} +7 -13
- package/dist/{index-V7XKUQm9.d.cts → index-BgR5zcjJ.d.ts} +18 -26
- package/dist/{index-2JM0gyAf.d.ts → index-BkqackZf.d.ts} +439 -289
- package/dist/{index-BDG-LKXj.d.cts → index-ByRpNVcs.d.cts} +88 -18
- package/dist/{index-pXN4LWUX.d.ts → index-C11JSxBY.d.ts} +8 -11
- package/dist/{index-GjcJTCbz.d.cts → index-C4TNAA8-.d.cts} +8 -11
- package/dist/{index-NaYLwG_h.d.cts → index-C8gRRWHL.d.cts} +11 -1
- package/dist/{index-NaYLwG_h.d.ts → index-C8gRRWHL.d.ts} +11 -1
- package/dist/{index-3LUk2rpD.d.ts → index-CPu4Nezo.d.cts} +34 -9
- package/dist/{index-BMqLPS6S.d.ts → index-CXcWpZQ2.d.cts} +4 -12
- package/dist/{index-BMqLPS6S.d.cts → index-CXcWpZQ2.d.ts} +4 -12
- package/dist/{index-Dx52hNLP.d.cts → index-CcMHJcuP.d.cts} +3 -3
- package/dist/{index-BgLnWTZU.d.cts → index-Cvbjp3jx.d.cts} +6 -6
- package/dist/{index-DppA4k3b.d.cts → index-Cz0MXhzs.d.cts} +5 -5
- package/dist/{index-6Xe81qN3.d.ts → index-D-VMgpGc.d.ts} +5 -5
- package/dist/{index-D8rcUbnk.d.ts → index-D7-o-oGa.d.ts} +3 -3
- package/dist/{index-BXF-bs2d.d.ts → index-DCRKjihs.d.ts} +88 -18
- package/dist/{kaiAgentClient-DhTaM3GC.d.cts → index-DNThyEej.d.cts} +19 -5
- package/dist/{index-DXSmFkol.d.cts → index-DOAZmWvh.d.cts} +6 -6
- package/dist/{index-DIAyi-EZ.d.cts → index-DXYASsPP.d.cts} +439 -289
- package/dist/{index-BuegqrS1.d.ts → index-D_-4uQF8.d.ts} +3 -3
- package/dist/{index-CW3Pj7DY.d.cts → index-Dazy-meb.d.ts} +34 -9
- package/dist/{index-CqgtL2NU.d.ts → index-DnQTuc6t.d.ts} +6 -6
- package/dist/{kaiAgentClient-BJj_2aqt.d.ts → index-Qb7X6-ph.d.ts} +19 -5
- package/dist/index.cjs +1503 -895
- 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 +1501 -896
- package/dist/index.js.map +1 -1
- package/dist/isLoginPageRedirect-XPwAOKK3.js +14 -0
- package/dist/isLoginPageRedirect-XPwAOKK3.js.map +1 -0
- package/dist/isLoginPageRedirect-jQHiLrG7.cjs +19 -0
- package/dist/isLoginPageRedirect-jQHiLrG7.cjs.map +1 -0
- package/dist/{jobStatus-0_Y3Sr4i.cjs → jobStatus-BMlsyXWI.cjs} +19 -45
- package/dist/jobStatus-BMlsyXWI.cjs.map +1 -0
- package/dist/{jobStatus-PSZJMTiA.js → jobStatus-CfRtsIpv.js} +19 -45
- package/dist/jobStatus-CfRtsIpv.js.map +1 -0
- package/dist/kaiAgent/index.cjs +1 -1
- package/dist/kaiAgent/index.d.cts +3 -2
- package/dist/kaiAgent/index.d.ts +3 -2
- package/dist/kaiAgent/index.js +1 -1
- package/dist/kaiAgent/types.d.cts +2 -2
- package/dist/kaiAgent/types.d.ts +2 -2
- package/dist/{kaiAgent-8LNzGhZc.js → kaiAgent-Dp20HLTh.js} +63 -7
- package/dist/kaiAgent-Dp20HLTh.js.map +1 -0
- package/dist/{kaiAgent-B_TaUPRt.cjs → kaiAgent-QNoeVKPs.cjs} +63 -7
- package/dist/kaiAgent-QNoeVKPs.cjs.map +1 -0
- package/dist/kaiMemory-CClSPInt.cjs +289 -0
- package/dist/kaiMemory-CClSPInt.cjs.map +1 -0
- package/dist/kaiMemory-D0Y_16U4.js +260 -0
- package/dist/kaiMemory-D0Y_16U4.js.map +1 -0
- package/dist/management/index.cjs +1 -1
- package/dist/management/index.d.cts +2 -2
- package/dist/management/index.d.ts +2 -2
- 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-BoxlRNg2.cjs → management-CCY0IYnq.cjs} +93 -25
- package/dist/management-CCY0IYnq.cjs.map +1 -0
- package/dist/{management-Bp440RsV.js → management-DvmPiG64.js} +93 -25
- package/dist/management-DvmPiG64.js.map +1 -0
- 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 +2 -2
- package/dist/metastore/types.d.ts +2 -2
- package/dist/{metastore-VCDRVhUT.js → metastore-BycJxe7A.js} +14 -8
- package/dist/metastore-BycJxe7A.js.map +1 -0
- package/dist/{metastore-BYYWTb3m.cjs → metastore-XtWciCZT.cjs} +14 -8
- package/dist/metastore-XtWciCZT.cjs.map +1 -0
- 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-CBwrtgQd.js +34 -0
- package/dist/middleware-CBwrtgQd.js.map +1 -0
- package/dist/middleware-IjYx3d5u.cjs +45 -0
- package/dist/middleware-IjYx3d5u.cjs.map +1 -0
- package/dist/notifications/index.cjs +4 -4
- package/dist/notifications/index.d.cts +2 -2
- package/dist/notifications/index.d.ts +2 -2
- package/dist/notifications/index.js +4 -4
- 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 +2 -2
- package/dist/oauth/index.d.ts +2 -2
- package/dist/oauth/index.js +1 -1
- package/dist/oauth/types.d.cts +1 -1
- package/dist/oauth/types.d.ts +1 -1
- package/dist/{oauth-B8yqG6Sy.cjs → oauth--2p8jkJf.cjs} +5 -5
- package/dist/{oauth-B8yqG6Sy.cjs.map → oauth--2p8jkJf.cjs.map} +1 -1
- package/dist/{oauth--asfePw-.js → oauth-l5zE39cD.js} +5 -5
- package/dist/{oauth--asfePw-.js.map → oauth-l5zE39cD.js.map} +1 -1
- package/dist/omnisearch/index.cjs +6 -14
- package/dist/omnisearch/index.cjs.map +1 -1
- package/dist/omnisearch/index.d.cts +6 -14
- package/dist/omnisearch/index.d.ts +6 -14
- package/dist/omnisearch/index.js +6 -14
- package/dist/omnisearch/index.js.map +1 -1
- package/dist/omnisearch/types.d.cts +1 -1
- package/dist/omnisearch/types.d.ts +1 -1
- package/dist/{project-C2wvX0xZ.d.ts → project-B15gStbM.d.ts} +2 -2
- package/dist/{project-hePfzUY0.d.cts → project-cHKuGvqJ.d.cts} +2 -2
- 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 +1 -1
- package/dist/queryService/types.d.ts +1 -1
- package/dist/{queryService-Ca65E5KH.js → queryService-CCOYbRbw.js} +6 -6
- package/dist/{queryService-Ca65E5KH.js.map → queryService-CCOYbRbw.js.map} +1 -1
- package/dist/{queryService-BVtjkXy1.cjs → queryService-CQzclHdL.cjs} +6 -6
- package/dist/{queryService-BVtjkXy1.cjs.map → queryService-CQzclHdL.cjs.map} +1 -1
- package/dist/queue/index.cjs +1 -1
- package/dist/queue/index.d.cts +3 -3
- package/dist/queue/index.d.ts +3 -3
- 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-DyotLFJi.js → queue-Cowbg6bR.js} +8 -11
- package/dist/queue-Cowbg6bR.js.map +1 -0
- package/dist/{queue-OJJUUqc2.cjs → queue-UG_BWKIC.cjs} +8 -11
- package/dist/queue-UG_BWKIC.cjs.map +1 -0
- package/dist/scheduler/index.cjs +4 -4
- package/dist/scheduler/index.d.cts +2 -2
- package/dist/scheduler/index.d.ts +2 -2
- package/dist/scheduler/index.js +4 -4
- package/dist/scheduler/types.d.cts +1 -1
- package/dist/scheduler/types.d.ts +1 -1
- package/dist/sdk/configurations/index.cjs +1 -1
- package/dist/sdk/configurations/index.d.cts +11 -11
- package/dist/sdk/configurations/index.d.ts +11 -11
- package/dist/sdk/configurations/index.js +1 -1
- package/dist/sdk/developerPortal/index.cjs +10 -18
- package/dist/sdk/developerPortal/index.cjs.map +1 -1
- package/dist/sdk/developerPortal/index.d.cts +7 -15
- package/dist/sdk/developerPortal/index.d.ts +7 -15
- package/dist/sdk/developerPortal/index.js +7 -15
- package/dist/sdk/developerPortal/index.js.map +1 -1
- package/dist/sdk/kaiMemory/index.cjs +7 -0
- package/dist/sdk/kaiMemory/index.d.cts +41 -0
- package/dist/sdk/kaiMemory/index.d.ts +41 -0
- package/dist/sdk/kaiMemory/index.js +2 -0
- package/dist/sdk/kaiMemory/types.cjs +0 -0
- package/dist/sdk/kaiMemory/types.d.cts +2 -0
- package/dist/sdk/kaiMemory/types.d.ts +2 -0
- package/dist/sdk/kaiMemory/types.js +1 -0
- package/dist/sdk/queryService/index.cjs +2 -2
- package/dist/sdk/queryService/index.d.cts +1 -1
- package/dist/sdk/queryService/index.d.ts +1 -1
- package/dist/sdk/queryService/index.js +2 -2
- package/dist/sdk/semanticLayer/index.cjs +1 -1
- package/dist/sdk/semanticLayer/index.d.cts +16 -40
- package/dist/sdk/semanticLayer/index.d.ts +16 -40
- package/dist/sdk/semanticLayer/index.js +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 -5
- package/dist/sdk/storage/index.cjs.map +1 -1
- package/dist/sdk/storage/index.d.cts +2 -2
- package/dist/sdk/storage/index.d.ts +2 -2
- package/dist/sdk/storage/index.js +1 -5
- package/dist/sdk/storage/index.js.map +1 -1
- package/dist/sdk/tag/index.cjs +1 -1
- package/dist/sdk/tag/index.d.cts +3 -3
- package/dist/sdk/tag/index.d.ts +3 -3
- package/dist/sdk/tag/index.js +1 -1
- package/dist/sdk/tag/types.d.cts +1 -1
- package/dist/sdk/tag/types.d.ts +1 -1
- package/dist/sdk/vault/index.cjs +1 -1
- package/dist/sdk/vault/index.d.cts +1 -1
- package/dist/sdk/vault/index.d.ts +1 -1
- package/dist/sdk/vault/index.js +1 -1
- package/dist/{semanticLayer-E0Vilu8u.cjs → semanticLayer-CKDVkU56.cjs} +78 -166
- package/dist/semanticLayer-CKDVkU56.cjs.map +1 -0
- package/dist/{semanticLayer-CSqmtHRo.js → semanticLayer-pYy082Ju.js} +78 -166
- package/dist/semanticLayer-pYy082Ju.js.map +1 -0
- package/dist/{serviceIds-DRcoTnSd.d.cts → serviceIds-DC-H6ZD9.d.cts} +2 -1
- package/dist/{serviceIds-DRcoTnSd.d.ts → serviceIds-DC-H6ZD9.d.ts} +2 -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 +6 -5
- package/dist/storage/index.d.cts +3 -3
- package/dist/storage/index.d.ts +3 -3
- package/dist/storage/index.js +6 -6
- package/dist/storage/types.d.cts +3 -3
- package/dist/storage/types.d.ts +3 -3
- package/dist/{storage-LYwFQPNO.js → storage-CZQHZcXG.js} +127 -289
- package/dist/storage-CZQHZcXG.js.map +1 -0
- package/dist/{storage-BKm7cztt.cjs → storage-JinL1y1s.cjs} +132 -288
- package/dist/storage-JinL1y1s.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 +1 -1
- package/dist/syncActions/index.d.ts +1 -1
- package/dist/syncActions/index.js +1 -1
- package/dist/syncActions/types.d.cts +2 -2
- package/dist/syncActions/types.d.ts +2 -2
- package/dist/{syncActions-QeBhIVhG.js → syncActions-BmmoqZO_.js} +130 -111
- package/dist/syncActions-BmmoqZO_.js.map +1 -0
- package/dist/{syncActions-OEZdVffK.cjs → syncActions-CtcLGQiy.cjs} +130 -111
- package/dist/syncActions-CtcLGQiy.cjs.map +1 -0
- package/dist/{tag-CsoOZWB_.cjs → tag-DHS_soa7.cjs} +2 -2
- package/dist/{tag-CsoOZWB_.cjs.map → tag-DHS_soa7.cjs.map} +1 -1
- package/dist/{tag-DCsoewjL.js → tag-hh-1nhNr.js} +2 -2
- package/dist/{tag-DCsoewjL.js.map → tag-hh-1nhNr.js.map} +1 -1
- package/dist/telemetry/index.cjs +7 -11
- package/dist/telemetry/index.cjs.map +1 -1
- package/dist/telemetry/index.d.cts +5 -9
- package/dist/telemetry/index.d.ts +5 -9
- package/dist/telemetry/index.js +7 -11
- 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/{types-DqxIx9Pi.d.cts → types-6kuMW4JW.d.cts} +2 -2
- package/dist/{types-Ct0YPy2w.d.ts → types-B2w2TtSA.d.ts} +3 -3
- package/dist/{types-M46WuBSm.d.cts → types-B61aCifg.d.cts} +2 -2
- package/dist/{types-COL1kVEB.d.cts → types-B8N_k79M.d.cts} +2 -2
- package/dist/{types-Jw10xuOW.d.cts → types-BIECJYun.d.ts} +171 -44
- package/dist/{types-DZk3XHiN.d.cts → types-BLNB882w.d.cts} +3 -3
- package/dist/{types-BEe50G2r.d.cts → types-BPy5Ozee.d.cts} +2 -2
- package/dist/{types-DBOSvWtD.d.ts → types-BS4jwuMi.d.ts} +8 -15
- package/dist/{types-BrYkBQo4.d.ts → types-BTK7Bv3n.d.cts} +171 -44
- package/dist/{types-CW6lCqrC.d.cts → types-BYM9Ptz5.d.ts} +93 -43
- package/dist/{types-D6UmMa6E.d.ts → types-BZDV8DZk.d.ts} +3 -3
- package/dist/{types-Cz83RiVu.d.cts → types-B_iLJlp4.d.ts} +255 -12
- package/dist/{types-DjrRmQUe.d.cts → types-BiMahEK8.d.cts} +92 -238
- package/dist/{types-BH5LLeJy.d.ts → types-Bl03Cg2n.d.cts} +255 -12
- package/dist/{types-bGQb4Jtl.d.cts → types-ByLH46Dt.d.cts} +13 -8
- package/dist/{types-g3vU7hcg.d.cts → types-Bydx6ga_.d.cts} +2 -2
- package/dist/{types-DYzJ6K2e.d.ts → types-CFeZCQ9p.d.cts} +93 -43
- package/dist/{types-DEc55spK.d.ts → types-CKmTZSPG.d.ts} +92 -238
- package/dist/{types-CaYtinmA.d.cts → types-CMzQSHAQ.d.cts} +3 -3
- package/dist/{types-N3EChotg.d.cts → types-CP_LBmw3.d.cts} +2 -2
- package/dist/{types-zZBxJ0P-.d.ts → types-CWyXTMwy.d.ts} +2 -2
- package/dist/{types-CPB-eF82.d.ts → types-CZJlLCbA.d.ts} +2 -2
- package/dist/{types-l9o4gFsI.d.ts → types-CZXPu3gn.d.ts} +2 -2
- package/dist/{types-BztF4HeB.d.ts → types-CaOtNjSZ.d.ts} +6 -13
- package/dist/{types-BTWIPEiU.d.ts → types-CfwqVkEA.d.ts} +2 -2
- package/dist/types-Cg14ncdV.d.ts +63 -0
- package/dist/{types-Bxhh2SJr.d.ts → types-CoJVrRAD.d.ts} +2 -2
- package/dist/{types-CKiW3n6v.d.ts → types-D3wcs4tp.d.ts} +2 -2
- package/dist/{types-DPS8nwkV.d.cts → types-DDOa07rU.d.cts} +8 -15
- package/dist/{types-BW2BXUB4.d.cts → types-DE9hgr7i.d.cts} +2 -2
- package/dist/{types-BOqD3Hqy.d.cts → types-DEzW1CfI.d.cts} +3 -3
- package/dist/{types-OaD-cbbl.d.ts → types-DIiOMV-t.d.ts} +3 -3
- package/dist/{types-BuqxXXYP.d.ts → types-DKc1gmd9.d.ts} +949 -190
- package/dist/{types-BQsOHNI0.d.ts → types-DRCMBt89.d.ts} +3 -3
- package/dist/{types-BQvv4RaI.d.cts → types-DUMal2E-.d.cts} +5 -8
- package/dist/types-DWiLcrxt.d.cts +63 -0
- package/dist/{types-DNxOHnZI.d.cts → types-Dd31Lw4S.d.cts} +2 -2
- package/dist/{types-Dmu-8g4O.d.ts → types-DekYAlA-.d.ts} +3 -3
- package/dist/{types-B2U9cFcx.d.ts → types-DgJeO9Nd.d.ts} +2 -2
- package/dist/{types-nrviNdzZ.d.ts → types-DicSaNwq.d.ts} +2 -2
- package/dist/{types-f8W_j6qD.d.cts → types-DinIJ1D_.d.cts} +688 -201
- package/dist/{types-DhDNS-5B.d.ts → types-DlQw6FCi.d.ts} +13 -8
- package/dist/{types-_RhBCj4_.d.cts → types-DoZtE9tz.d.cts} +3 -3
- package/dist/{types-BsxLGDoC.d.cts → types-DrvKfXXd.d.cts} +2 -2
- package/dist/{types-CzsnuPFh.d.cts → types-Dtuvhm3K.d.cts} +949 -190
- package/dist/{types-CcrvrAJX.d.ts → types-DwVSj-Da.d.ts} +5 -8
- package/dist/{types-C2vefB4D.d.ts → types-FwRmjsNN.d.ts} +10 -34
- package/dist/{types-C0_2KZ-A.d.ts → types-RbrfiY8T.d.ts} +2 -2
- package/dist/{types-DfvdbRPL.d.ts → types-WZBztugL.d.ts} +2 -2
- package/dist/{types-52irAt99.d.cts → types-YHUEArkR.d.cts} +2 -2
- package/dist/{types-fX4gbxfV.d.cts → types-bc-4z_gc.d.cts} +10 -34
- package/dist/{types-3eUgOA7I.d.cts → types-ePSqbXRr.d.cts} +6 -13
- package/dist/{types-BupPADSm.d.ts → types-n4PTnLii.d.ts} +688 -201
- package/dist/{types-DXskkNp8.d.cts → types-pvQzbgNE.d.cts} +3 -3
- package/dist/{types-DajzGOKB.d.ts → types-q-1r_9d1.d.ts} +2 -2
- package/dist/{types-D8Rrz51O.d.cts → types-tKkeLa2B.d.cts} +2 -2
- package/dist/{validateConnectionStatus-olE2sQ3U.js → validateConnectionStatus-BEGu8wXT.js} +7 -10
- package/dist/validateConnectionStatus-BEGu8wXT.js.map +1 -0
- package/dist/{validateConnectionStatus-CsvYmCOI.cjs → validateConnectionStatus-BEYkQpu9.cjs} +7 -10
- package/dist/validateConnectionStatus-BEYkQpu9.cjs.map +1 -0
- package/dist/vault/index.cjs +4 -4
- package/dist/vault/index.d.cts +1 -1
- package/dist/vault/index.d.ts +1 -1
- package/dist/vault/index.js +4 -4
- package/dist/vault/types.d.cts +1 -1
- package/dist/vault/types.d.ts +1 -1
- package/package.json +58 -4
- package/surface/apps.md +3 -3
- package/surface/auth.md +13 -6
- package/surface/businessWorkspaceApi.md +12 -0
- package/surface/chat.md +7 -7
- package/surface/kaiAgent.md +13 -9
- package/surface/management.md +18 -5
- package/surface/metastore.md +2 -2
- package/surface/queue.md +3 -3
- package/surface/sdk.md +13 -3
- package/surface/storage.md +6 -6
- package/surface/syncActions.md +9 -0
- package/dist/ValidationError-BekhphAq.js +0 -48
- package/dist/ValidationError-BekhphAq.js.map +0 -1
- package/dist/ValidationError-CLVJCCwH.cjs.map +0 -1
- package/dist/authClient-D7W9vWPR.js.map +0 -1
- package/dist/authClient-_PpvGgZJ.cjs.map +0 -1
- package/dist/concurrent-CH9fbNr3.js.map +0 -1
- package/dist/concurrent-tbiIa0UL.cjs.map +0 -1
- package/dist/configurations-BVvcimzo.js.map +0 -1
- package/dist/configurations-CyFF9Dtu.cjs.map +0 -1
- package/dist/configurations-VtNE0nrT.js.map +0 -1
- package/dist/configurations-zkNjr73Q.cjs.map +0 -1
- package/dist/constants-C4DlsF_M.cjs.map +0 -1
- package/dist/constants-wfbFsqqN.js.map +0 -1
- package/dist/createFetchClient-DgMiqTJ8.cjs.map +0 -1
- package/dist/createFetchClient-U-ZrwPl2.js.map +0 -1
- package/dist/credential-CihSf_xs.js +0 -36
- package/dist/credential-CihSf_xs.js.map +0 -1
- package/dist/credential-DVWvJFJs.cjs +0 -47
- package/dist/credential-DVWvJFJs.cjs.map +0 -1
- package/dist/dedupe-CiskLkGR.cjs +0 -30
- package/dist/dedupe-CiskLkGR.cjs.map +0 -1
- package/dist/dedupe-DYIHgZoG.js +0 -25
- package/dist/dedupe-DYIHgZoG.js.map +0 -1
- package/dist/isLoginPageRedirect-B0EmRsHr.cjs +0 -25
- package/dist/isLoginPageRedirect-B0EmRsHr.cjs.map +0 -1
- package/dist/isLoginPageRedirect-BTTAedW-.js +0 -20
- package/dist/isLoginPageRedirect-BTTAedW-.js.map +0 -1
- package/dist/jobStatus-0_Y3Sr4i.cjs.map +0 -1
- package/dist/jobStatus-PSZJMTiA.js.map +0 -1
- package/dist/kaiAgent-8LNzGhZc.js.map +0 -1
- package/dist/kaiAgent-B_TaUPRt.cjs.map +0 -1
- package/dist/management-BoxlRNg2.cjs.map +0 -1
- package/dist/management-Bp440RsV.js.map +0 -1
- package/dist/metastore-BYYWTb3m.cjs.map +0 -1
- package/dist/metastore-VCDRVhUT.js.map +0 -1
- package/dist/queue-DyotLFJi.js.map +0 -1
- package/dist/queue-OJJUUqc2.cjs.map +0 -1
- package/dist/semanticLayer-CSqmtHRo.js.map +0 -1
- package/dist/semanticLayer-E0Vilu8u.cjs.map +0 -1
- package/dist/storage-BKm7cztt.cjs.map +0 -1
- package/dist/storage-LYwFQPNO.js.map +0 -1
- package/dist/syncActions-OEZdVffK.cjs.map +0 -1
- package/dist/syncActions-QeBhIVhG.js.map +0 -1
- package/dist/validateConnectionStatus-CsvYmCOI.cjs.map +0 -1
- package/dist/validateConnectionStatus-olE2sQ3U.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/sdks/developerPortal/tokenExpiry.ts","../../../src/sdks/developerPortal/credential.ts","../../../src/sdks/developerPortal/middleware.ts","../../../src/sdks/developerPortal/developerPortalSdk.ts"],"sourcesContent":["/**\n * Reads a JWT's `exp` claim as milliseconds, or `null` when unparseable (\"expiry unknown\", which the\n * caller leaves to the 401 path). A read, not a verification.\n *\n * Needed because apps-api reports `expiresIn` on login but never on refresh, so it cannot keep a\n * proactive-refresh clock honest past the first rotation. The token always carries its own expiry.\n */\nexport const readTokenExpiry = (token: string): number | null => {\n const segments = token.split('.');\n if (segments.length !== 3) return null;\n\n const payload = segments[1];\n if (payload === undefined || payload === '') return null;\n\n try {\n // base64url -> base64, and re-pad: `atob` requires padding, base64url omits it.\n const base64 = payload.replaceAll('-', '+').replaceAll('_', '/');\n const padded = base64.padEnd(base64.length + ((4 - (base64.length % 4)) % 4), '=');\n const claims: unknown = JSON.parse(atob(padded));\n if (typeof claims !== 'object' || claims === null || !('exp' in claims)) return null;\n const { exp } = claims as { exp: unknown };\n if (typeof exp !== 'number' || !Number.isFinite(exp)) return null;\n return exp * 1000;\n } catch {\n return null;\n }\n};\n","import type { DeveloperPortalTokens } from '../../clients/developerPortal/tokens';\nimport { isUnauthorized } from '../../keboola/bearer/credential';\nimport { dedupe } from '../../utils';\n\nimport { readTokenExpiry } from './tokenExpiry';\n\ntype Options = {\n refresh: () => Promise<DeveloperPortalTokens>;\n /** Live read from the session, so this holds no token of its own. `null` when signed out. */\n getTokens: () => DeveloperPortalTokens | null;\n /** May fire more than once; the caller owns any fire-once latch. */\n onSessionExpired?: () => void;\n /**\n * An absolute lead time rather than `createBearerCredential`'s fractional threshold: that needs the\n * token's full lifetime, and apps-api reports `expiresIn` on login only, never on refresh.\n */\n refreshLeadTimeMs?: number;\n};\n\nconst DEFAULT_REFRESH_LEAD_TIME_MS = 5 * 60 * 1000;\n\nexport type DeveloperPortalCredential = {\n getIdToken: (options?: { forceRefresh?: boolean }) => Promise<string | null>;\n getTokens: () => DeveloperPortalTokens | null;\n notifyExpired: () => void;\n};\n\n/** Mirrors `createBearerCredential`, over the id token of the trio. */\nexport const createDeveloperPortalCredential = ({\n refresh,\n getTokens,\n onSessionExpired,\n refreshLeadTimeMs = DEFAULT_REFRESH_LEAD_TIME_MS,\n}: Options): DeveloperPortalCredential => {\n const doRefresh = async (): Promise<DeveloperPortalTokens> => {\n try {\n return await refresh();\n } catch (error) {\n // Only a 401 means the refresh token is dead. Signing out over a 5xx would be a self-inflicted\n // logout, so anything else propagates without expiring the session.\n if (isUnauthorized(error)) onSessionExpired?.();\n throw error;\n }\n };\n\n // N concurrent 401s must cause one rotation: each extra one invalidates the tokens the others got.\n const refreshShared = dedupe(doRefresh);\n\n const getIdToken = async ({ forceRefresh = false } = {}): Promise<string | null> => {\n const tokens = getTokens();\n if (tokens === null) return null;\n if (forceRefresh) return (await refreshShared()).token;\n\n const expiresAt = readTokenExpiry(tokens.token);\n // Unknown expiry is left to the 401 path; a `0` here would rotate on every request.\n if (expiresAt === null) return tokens.token;\n if (Date.now() < expiresAt - refreshLeadTimeMs) return tokens.token;\n\n // Proactive rotation is best-effort — a real 401 drives the mandatory one.\n return refreshShared()\n .then((fresh) => fresh.token)\n .catch(() => tokens.token);\n };\n\n return { getIdToken, getTokens, notifyExpired: () => onSessionExpired?.() };\n};\n","import { HttpHeader, type MiddlewareFn } from '../../fetchClient';\nimport { isUnauthorized } from '../../keboola/bearer/credential';\n\nimport type { DeveloperPortalCredential } from './credential';\n\n/**\n * Stamps the id token, and on a 401 force-refreshes and replays once. Mirrors\n * `createBearerAuthMiddleware`, minus the `Bearer ` prefix apps-api does not use.\n *\n * An anonymous session passes through unstamped, so a failed login is never read as session expiry.\n */\nexport const createDeveloperPortalAuthMiddleware = (\n credential: DeveloperPortalCredential,\n): MiddlewareFn => {\n return (next) => async (request) => {\n const token = await credential.getIdToken();\n if (token === null) return next(request);\n\n // Cloned before the first attempt consumes the body. Cloning the `Request` carries a binary or\n // FormData payload through byte-for-byte.\n const retryRequest = request.request.clone();\n request.request.headers.set(HttpHeader.AUTHORIZATION, token);\n\n try {\n return await next(request);\n } catch (error) {\n if (!isUnauthorized(error)) throw error;\n\n const refreshed = await credential.getIdToken({ forceRefresh: true }).catch(() => null);\n // Nothing to replay with, because a concurrent sign-out landed or the rotation failed. The\n // caller's request failed with a 401, so that is what they see.\n if (refreshed === null) throw error;\n retryRequest.headers.set(HttpHeader.AUTHORIZATION, refreshed);\n\n try {\n return await next({ ...request, request: retryRequest });\n } catch (retryError) {\n if (isUnauthorized(retryError)) credential.notifyExpired();\n throw retryError;\n }\n }\n };\n};\n","import { createDeveloperPortalClient } from '../../clients/developerPortal/developerPortalClient';\nimport type { DeveloperPortalTokens } from '../../clients/developerPortal/tokens';\nimport type { LoginSuccess } from '../../clients/developerPortal/types';\nimport type { MiddlewareFn } from '../../fetchClient';\nimport { createStore } from '../../utils';\n\nimport { createDeveloperPortalCredential } from './credential';\nimport { createDeveloperPortalAuthMiddleware } from './middleware';\n\nexport type DeveloperPortalSdkOptions = {\n baseUrl: string;\n /** Session to restore on construction — e.g. a trio read back out of `localStorage`. */\n tokens?: DeveloperPortalTokens | null;\n /** Persistence hook, fired on sign-in, every rotation, and with `null` on sign-out or expiry. */\n onTokensChange?: (tokens: DeveloperPortalTokens | null) => void;\n /** The session is dead; tokens are already cleared. The consumer redirects to sign-in. */\n onSessionExpired?: () => void;\n refreshLeadTimeMs?: number;\n middlewares?: MiddlewareFn[];\n};\n\n/**\n * `createDeveloperPortalClient` plus the session that keeps it authenticated: the token store, the\n * credential, the auth middleware, and the tokens the four self-authenticating endpoints need.\n *\n * It constructs its client rather than receiving one like `createTagSdk` does, because the middleware\n * needs the credential, the credential needs the session, and the session needs a client to rotate\n * with. `createKeboola` closes the same cycle the same way, and stays separate from this one because\n * apps-api is its own identity domain.\n */\nexport const createDeveloperPortalSdk = ({\n baseUrl,\n tokens: initialTokens = null,\n onTokensChange,\n onSessionExpired,\n refreshLeadTimeMs,\n middlewares = [],\n}: DeveloperPortalSdkOptions) => {\n const store = createStore<DeveloperPortalTokens | null>(initialTokens);\n store.subscribe((value) => onTokensChange?.(value));\n\n const getTokens = () => store.get();\n\n const requireTokens = (action: string): DeveloperPortalTokens => {\n const tokens = store.get();\n if (tokens === null) {\n throw new Error(`Developer Portal: ${action} requires a signed-in session.`);\n }\n return tokens;\n };\n\n // No auth middleware: `refreshTokens` sets its own header, so a rotation cannot recurse into the\n // middleware that triggered it.\n const refreshClient = createDeveloperPortalClient({ baseUrl, middlewares });\n\n const refresh = async (): Promise<DeveloperPortalTokens> => {\n const before = store.get();\n if (before === null) {\n throw new Error('Cannot refresh the Developer Portal session: signed out.');\n }\n\n const { token, accessToken } = await refreshClient.auth.refreshTokens(before.refreshToken);\n const next: DeveloperPortalTokens = { token, accessToken, refreshToken: before.refreshToken };\n\n // Sign-out wins over an in-flight rotation: without this, a `clear()` that lands while the request\n // is on the wire is undone by the response, silently signing the user back in.\n const after = store.get();\n if (after === null || after.refreshToken !== before.refreshToken) {\n throw new Error('Developer Portal session changed while refreshing; discarding the result.');\n }\n\n store.set(next);\n return next;\n };\n\n const clear = () => store.set(null);\n\n const credential = createDeveloperPortalCredential({\n refresh,\n getTokens,\n refreshLeadTimeMs,\n onSessionExpired: () => {\n clear();\n onSessionExpired?.();\n },\n });\n\n const client = createDeveloperPortalClient({\n baseUrl,\n middlewares,\n authMiddleware: createDeveloperPortalAuthMiddleware(credential),\n });\n\n // `refreshTokens` is not re-exposed: rotating outside the store would leave the session holding\n // tokens the server has moved past. `session.refresh()` is the supported way.\n const { refreshTokens: _storeBypassingRotation, ...auth } = client.auth;\n\n const api = {\n ...client,\n auth: {\n ...auth,\n logout: async (signal?: AbortSignal) =>\n client.auth.logout(requireTokens('sign-out').accessToken, signal),\n // Both MFA calls bypass the reactive 401 path, so rotate proactively first.\n setupMfa: async (signal?: AbortSignal) => {\n await credential.getIdToken();\n const { token, accessToken } = requireTokens('MFA enrolment');\n return client.auth.setupMfa({ idToken: token, accessToken }, signal);\n },\n confirmMfa: async (code: string, signal?: AbortSignal) => {\n await credential.getIdToken();\n const { token, accessToken } = requireTokens('MFA confirmation');\n return client.auth.confirmMfa({ idToken: token, accessToken, code }, signal);\n },\n },\n };\n\n const session = {\n set: (result: LoginSuccess) => {\n store.set({\n token: result.token,\n accessToken: result.accessToken,\n refreshToken: result.refreshToken,\n });\n },\n get: getTokens,\n subscribe: store.subscribe,\n clear,\n /** Rotates if the id token is inside the lead time. Best-effort; the 401 path is the guarantee. */\n ensureFresh: async (): Promise<void> => {\n await credential.getIdToken();\n },\n /**\n * Rotates now, for a change of *claims* rather than age — leaving a vendor is the case that\n * matters, since the stale `profile` claim keeps scoping requests to a vendor the user just left.\n * Propagates failure: a caller forcing this needs to know whether the claims actually changed.\n */\n refresh: async (): Promise<void> => {\n await credential.getIdToken({ forceRefresh: true });\n },\n isAuthenticated: () => store.get() !== null,\n };\n\n return { api, session };\n};\n\nexport type DeveloperPortalSdk = ReturnType<typeof createDeveloperPortalSdk>;\nexport type DeveloperPortalSession = DeveloperPortalSdk['session'];\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/sdks/developerPortal/tokenExpiry.ts","../../../src/sdks/developerPortal/credential.ts","../../../src/sdks/developerPortal/middleware.ts","../../../src/sdks/developerPortal/developerPortalSdk.ts"],"sourcesContent":["/**\n * Reads a JWT's `exp` claim as milliseconds, or `null` when unparseable (\"expiry unknown\", which the\n * caller leaves to the 401 path). A read, not a verification.\n *\n * Needed because apps-api reports `expiresIn` on login but never on refresh, so it cannot keep a\n * proactive-refresh clock honest past the first rotation. The token always carries its own expiry.\n */\nexport const readTokenExpiry = (token: string): number | null => {\n const segments = token.split('.');\n if (segments.length !== 3) return null;\n\n const payload = segments[1];\n if (payload === undefined || payload === '') return null;\n\n try {\n // base64url -> base64, and re-pad: `atob` requires padding, base64url omits it.\n const base64 = payload.replaceAll('-', '+').replaceAll('_', '/');\n const padded = base64.padEnd(base64.length + ((4 - (base64.length % 4)) % 4), '=');\n const claims: unknown = JSON.parse(atob(padded));\n if (typeof claims !== 'object' || claims === null || !('exp' in claims)) return null;\n const { exp } = claims as { exp: unknown };\n if (typeof exp !== 'number' || !Number.isFinite(exp)) return null;\n return exp * 1000;\n } catch {\n return null;\n }\n};\n","import type { DeveloperPortalTokens } from '../../clients/developerPortal/tokens';\nimport { isUnauthorized } from '../../keboola/bearer/credentials';\nimport { dedupe } from '../../utils';\n\nimport { readTokenExpiry } from './tokenExpiry';\n\ntype Options = {\n refresh: () => Promise<DeveloperPortalTokens>;\n /** Live read from the session, so this holds no token of its own. `null` when signed out. */\n getTokens: () => DeveloperPortalTokens | null;\n /** May fire more than once; the caller owns any fire-once latch. */\n onSessionExpired?: () => void;\n /**\n * An absolute lead time rather than `createBearerCredential`'s fractional threshold: that needs the\n * token's full lifetime, and apps-api reports `expiresIn` on login only, never on refresh.\n */\n refreshLeadTimeMs?: number;\n};\n\nconst DEFAULT_REFRESH_LEAD_TIME_MS = 5 * 60 * 1000;\n\nexport type DeveloperPortalCredential = {\n getIdToken: (options?: { forceRefresh?: boolean }) => Promise<string | null>;\n getTokens: () => DeveloperPortalTokens | null;\n notifyExpired: () => void;\n};\n\n/** Mirrors `createBearerCredential`, over the id token of the trio. */\nexport const createDeveloperPortalCredential = ({\n refresh,\n getTokens,\n onSessionExpired,\n refreshLeadTimeMs = DEFAULT_REFRESH_LEAD_TIME_MS,\n}: Options): DeveloperPortalCredential => {\n const doRefresh = async (): Promise<DeveloperPortalTokens> => {\n try {\n return await refresh();\n } catch (error) {\n // Only a 401 means the refresh token is dead. Signing out over a 5xx would be a self-inflicted\n // logout, so anything else propagates without expiring the session.\n if (isUnauthorized(error)) onSessionExpired?.();\n throw error;\n }\n };\n\n // N concurrent 401s must cause one rotation: each extra one invalidates the tokens the others got.\n const refreshShared = dedupe(doRefresh);\n\n const getIdToken = async ({ forceRefresh = false } = {}): Promise<string | null> => {\n const tokens = getTokens();\n if (tokens === null) return null;\n if (forceRefresh) return (await refreshShared()).token;\n\n const expiresAt = readTokenExpiry(tokens.token);\n // Unknown expiry is left to the 401 path; a `0` here would rotate on every request.\n if (expiresAt === null) return tokens.token;\n if (Date.now() < expiresAt - refreshLeadTimeMs) return tokens.token;\n\n // Proactive rotation is best-effort — a real 401 drives the mandatory one.\n return refreshShared()\n .then((fresh) => fresh.token)\n .catch(() => tokens.token);\n };\n\n return { getIdToken, getTokens, notifyExpired: () => onSessionExpired?.() };\n};\n","import { HttpHeader, type MiddlewareFn } from '../../fetchClient';\nimport { isUnauthorized } from '../../keboola/bearer/credentials';\n\nimport type { DeveloperPortalCredential } from './credential';\n\n/**\n * Stamps the id token, and on a 401 force-refreshes and replays once. Mirrors\n * `createBearerAuthMiddleware`, minus the `Bearer ` prefix apps-api does not use.\n *\n * An anonymous session passes through unstamped, so a failed login is never read as session expiry.\n */\nexport const createDeveloperPortalAuthMiddleware = (\n credential: DeveloperPortalCredential,\n): MiddlewareFn => {\n return (next) => async (request) => {\n const token = await credential.getIdToken();\n if (token === null) return next(request);\n\n // Cloned before the first attempt consumes the body. Cloning the `Request` carries a binary or\n // FormData payload through byte-for-byte.\n const retryRequest = request.request.clone();\n request.request.headers.set(HttpHeader.AUTHORIZATION, token);\n\n try {\n return await next(request);\n } catch (error) {\n if (!isUnauthorized(error)) throw error;\n\n const refreshed = await credential.getIdToken({ forceRefresh: true }).catch(() => null);\n // Nothing to replay with, because a concurrent sign-out landed or the rotation failed. The\n // caller's request failed with a 401, so that is what they see.\n if (refreshed === null) throw error;\n retryRequest.headers.set(HttpHeader.AUTHORIZATION, refreshed);\n\n try {\n return await next({ ...request, request: retryRequest });\n } catch (retryError) {\n if (isUnauthorized(retryError)) credential.notifyExpired();\n throw retryError;\n }\n }\n };\n};\n","import { createDeveloperPortalClient } from '../../clients/developerPortal/developerPortalClient';\nimport type { DeveloperPortalTokens } from '../../clients/developerPortal/tokens';\nimport type { LoginSuccess } from '../../clients/developerPortal/types';\nimport type { MiddlewareFn } from '../../fetchClient';\nimport { createStore } from '../../utils';\n\nimport { createDeveloperPortalCredential } from './credential';\nimport { createDeveloperPortalAuthMiddleware } from './middleware';\n\nexport type DeveloperPortalSdkOptions = {\n baseUrl: string;\n /** Session to restore on construction. */\n tokens?: DeveloperPortalTokens | null;\n /** Persistence hook, fired on sign-in, every rotation, and with `null` on sign-out or expiry. */\n onTokensChange?: (tokens: DeveloperPortalTokens | null) => void;\n /** The session is dead; tokens are already cleared. The consumer redirects to sign-in. */\n onSessionExpired?: () => void;\n refreshLeadTimeMs?: number;\n middlewares?: MiddlewareFn[];\n};\n\n/**\n * `createDeveloperPortalClient` plus the session that keeps it authenticated.\n *\n * - Builds its own client: middleware, credential and session depend on each other in a cycle.\n */\nexport const createDeveloperPortalSdk = ({\n baseUrl,\n tokens: initialTokens = null,\n onTokensChange,\n onSessionExpired,\n refreshLeadTimeMs,\n middlewares = [],\n}: DeveloperPortalSdkOptions) => {\n const store = createStore<DeveloperPortalTokens | null>(initialTokens);\n store.subscribe((value) => onTokensChange?.(value));\n\n const getTokens = () => store.get();\n\n const requireTokens = (action: string): DeveloperPortalTokens => {\n const tokens = store.get();\n if (tokens === null) {\n throw new Error(`Developer Portal: ${action} requires a signed-in session.`);\n }\n return tokens;\n };\n\n // No auth middleware, so a rotation cannot recurse into the middleware that triggered it.\n const refreshClient = createDeveloperPortalClient({ baseUrl, middlewares });\n\n const refresh = async (): Promise<DeveloperPortalTokens> => {\n const before = store.get();\n if (before === null) {\n throw new Error('Cannot refresh the Developer Portal session: signed out.');\n }\n\n const { token, accessToken } = await refreshClient.auth.refreshTokens(before.refreshToken);\n const next: DeveloperPortalTokens = { token, accessToken, refreshToken: before.refreshToken };\n\n // Sign-out wins over an in-flight rotation; otherwise the response signs the user back in.\n const after = store.get();\n if (after === null || after.refreshToken !== before.refreshToken) {\n throw new Error('Developer Portal session changed while refreshing; discarding the result.');\n }\n\n store.set(next);\n return next;\n };\n\n const clear = () => store.set(null);\n\n const credential = createDeveloperPortalCredential({\n refresh,\n getTokens,\n refreshLeadTimeMs,\n onSessionExpired: () => {\n clear();\n onSessionExpired?.();\n },\n });\n\n const client = createDeveloperPortalClient({\n baseUrl,\n middlewares,\n authMiddleware: createDeveloperPortalAuthMiddleware(credential),\n });\n\n // `refreshTokens` is not re-exposed: rotating outside the store leaves stale tokens.\n const { refreshTokens: _storeBypassingRotation, ...auth } = client.auth;\n\n const api = {\n ...client,\n auth: {\n ...auth,\n logout: async (signal?: AbortSignal) =>\n client.auth.logout(requireTokens('sign-out').accessToken, signal),\n // Both MFA calls bypass the reactive 401 path, so rotate proactively first.\n setupMfa: async (signal?: AbortSignal) => {\n await credential.getIdToken();\n const { token, accessToken } = requireTokens('MFA enrolment');\n return client.auth.setupMfa({ idToken: token, accessToken }, signal);\n },\n confirmMfa: async (code: string, signal?: AbortSignal) => {\n await credential.getIdToken();\n const { token, accessToken } = requireTokens('MFA confirmation');\n return client.auth.confirmMfa({ idToken: token, accessToken, code }, signal);\n },\n },\n };\n\n const session = {\n set: (result: LoginSuccess) => {\n store.set({\n token: result.token,\n accessToken: result.accessToken,\n refreshToken: result.refreshToken,\n });\n },\n get: getTokens,\n subscribe: store.subscribe,\n clear,\n /** Rotates if the id token is inside the lead time. Best-effort; the 401 path is the guarantee. */\n ensureFresh: async (): Promise<void> => {\n await credential.getIdToken();\n },\n /** Rotates now, for a change of claims (e.g. leaving a vendor). Propagates failure. */\n refresh: async (): Promise<void> => {\n await credential.getIdToken({ forceRefresh: true });\n },\n isAuthenticated: () => store.get() !== null,\n };\n\n return { api, session };\n};\n\nexport type DeveloperPortalSdk = ReturnType<typeof createDeveloperPortalSdk>;\nexport type DeveloperPortalSession = DeveloperPortalSdk['session'];\n"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_kaiMemory = require("../../kaiMemory-CClSPInt.cjs");
|
|
3
|
+
exports.KAI_MEMORY_OBJECT_TYPE = require_kaiMemory.KAI_MEMORY_OBJECT_TYPE;
|
|
4
|
+
exports.KAI_MEMORY_STATUSES = require_kaiMemory.KAI_MEMORY_STATUSES;
|
|
5
|
+
exports.KaiMemoryReviewConflictError = require_kaiMemory.KaiMemoryReviewConflictError;
|
|
6
|
+
exports.KaiMemoryUnreadableItemsError = require_kaiMemory.KaiMemoryUnreadableItemsError;
|
|
7
|
+
exports.createKaiMemorySdk = require_kaiMemory.createKaiMemorySdk;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { a as KaiMemoryStatus, c as KAI_MEMORY_STATUSES, o as MetastoreClient, r as KaiMemoryItem, s as UpdateKaiMemoryMeta, t as CreateKaiMemoryMeta } from "../../types-DWiLcrxt.cjs";
|
|
2
|
+
//#region src/sdks/kaiMemory/kaiMemorySdk.d.ts
|
|
3
|
+
/** The metastore object type this SDK addresses — see `SEMANTIC_OBJECT_TYPE` for the convention. */
|
|
4
|
+
declare const KAI_MEMORY_OBJECT_TYPE = "kai-memory";
|
|
5
|
+
/**
|
|
6
|
+
* Thrown by `getItemsByStatusStrict` when any `kai-memory` item — of any status, not only the
|
|
7
|
+
* one asked for — could not be parsed. See that function's docstring for why an unreadable item
|
|
8
|
+
* anywhere in the collection fails the whole read rather than being dropped.
|
|
9
|
+
*/
|
|
10
|
+
declare class KaiMemoryUnreadableItemsError extends Error {
|
|
11
|
+
readonly unreadableIds: string[];
|
|
12
|
+
constructor(unreadableIds: string[]);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Thrown by `updateStatus` when the item is no longer `pending` at write time — see that
|
|
16
|
+
* function's docstring for the race it closes.
|
|
17
|
+
*/
|
|
18
|
+
declare class KaiMemoryReviewConflictError extends Error {
|
|
19
|
+
readonly uuid: string;
|
|
20
|
+
readonly currentStatus: KaiMemoryStatus;
|
|
21
|
+
constructor(uuid: string, currentStatus: KaiMemoryStatus);
|
|
22
|
+
}
|
|
23
|
+
type Options = {
|
|
24
|
+
metastoreClient: MetastoreClient;
|
|
25
|
+
};
|
|
26
|
+
declare const createKaiMemorySdk: ({ metastoreClient }: Options) => {
|
|
27
|
+
getItems: (signal?: AbortSignal) => Promise<KaiMemoryItem[]>;
|
|
28
|
+
getItemsByStatus: (status: KaiMemoryStatus, signal?: AbortSignal) => Promise<KaiMemoryItem[]>;
|
|
29
|
+
getItemsByStatusStrict: (status: KaiMemoryStatus, signal?: AbortSignal) => Promise<KaiMemoryItem[]>;
|
|
30
|
+
getUnreadableItemIds: (signal?: AbortSignal) => Promise<string[]>;
|
|
31
|
+
deleteUnreadableItem: (uuid: string) => Promise<void>;
|
|
32
|
+
createItem: ({ content, chatId, createdBy }: {
|
|
33
|
+
content: string;
|
|
34
|
+
chatId: string;
|
|
35
|
+
createdBy?: string;
|
|
36
|
+
}, meta?: CreateKaiMemoryMeta) => Promise<KaiMemoryItem>;
|
|
37
|
+
updateStatus: (uuid: string, status: KaiMemoryStatus, meta?: UpdateKaiMemoryMeta) => Promise<KaiMemoryItem>;
|
|
38
|
+
};
|
|
39
|
+
//#endregion
|
|
40
|
+
export { KAI_MEMORY_OBJECT_TYPE, KAI_MEMORY_STATUSES, KaiMemoryReviewConflictError, KaiMemoryUnreadableItemsError, createKaiMemorySdk };
|
|
41
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { a as KaiMemoryStatus, c as KAI_MEMORY_STATUSES, o as MetastoreClient, r as KaiMemoryItem, s as UpdateKaiMemoryMeta, t as CreateKaiMemoryMeta } from "../../types-Cg14ncdV.js";
|
|
2
|
+
//#region src/sdks/kaiMemory/kaiMemorySdk.d.ts
|
|
3
|
+
/** The metastore object type this SDK addresses — see `SEMANTIC_OBJECT_TYPE` for the convention. */
|
|
4
|
+
declare const KAI_MEMORY_OBJECT_TYPE = "kai-memory";
|
|
5
|
+
/**
|
|
6
|
+
* Thrown by `getItemsByStatusStrict` when any `kai-memory` item — of any status, not only the
|
|
7
|
+
* one asked for — could not be parsed. See that function's docstring for why an unreadable item
|
|
8
|
+
* anywhere in the collection fails the whole read rather than being dropped.
|
|
9
|
+
*/
|
|
10
|
+
declare class KaiMemoryUnreadableItemsError extends Error {
|
|
11
|
+
readonly unreadableIds: string[];
|
|
12
|
+
constructor(unreadableIds: string[]);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Thrown by `updateStatus` when the item is no longer `pending` at write time — see that
|
|
16
|
+
* function's docstring for the race it closes.
|
|
17
|
+
*/
|
|
18
|
+
declare class KaiMemoryReviewConflictError extends Error {
|
|
19
|
+
readonly uuid: string;
|
|
20
|
+
readonly currentStatus: KaiMemoryStatus;
|
|
21
|
+
constructor(uuid: string, currentStatus: KaiMemoryStatus);
|
|
22
|
+
}
|
|
23
|
+
type Options = {
|
|
24
|
+
metastoreClient: MetastoreClient;
|
|
25
|
+
};
|
|
26
|
+
declare const createKaiMemorySdk: ({ metastoreClient }: Options) => {
|
|
27
|
+
getItems: (signal?: AbortSignal) => Promise<KaiMemoryItem[]>;
|
|
28
|
+
getItemsByStatus: (status: KaiMemoryStatus, signal?: AbortSignal) => Promise<KaiMemoryItem[]>;
|
|
29
|
+
getItemsByStatusStrict: (status: KaiMemoryStatus, signal?: AbortSignal) => Promise<KaiMemoryItem[]>;
|
|
30
|
+
getUnreadableItemIds: (signal?: AbortSignal) => Promise<string[]>;
|
|
31
|
+
deleteUnreadableItem: (uuid: string) => Promise<void>;
|
|
32
|
+
createItem: ({ content, chatId, createdBy }: {
|
|
33
|
+
content: string;
|
|
34
|
+
chatId: string;
|
|
35
|
+
createdBy?: string;
|
|
36
|
+
}, meta?: CreateKaiMemoryMeta) => Promise<KaiMemoryItem>;
|
|
37
|
+
updateStatus: (uuid: string, status: KaiMemoryStatus, meta?: UpdateKaiMemoryMeta) => Promise<KaiMemoryItem>;
|
|
38
|
+
};
|
|
39
|
+
//#endregion
|
|
40
|
+
export { KAI_MEMORY_OBJECT_TYPE, KAI_MEMORY_STATUSES, KaiMemoryReviewConflictError, KaiMemoryUnreadableItemsError, createKaiMemorySdk };
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as KAI_MEMORY_STATUSES, i as createKaiMemorySdk, n as KaiMemoryReviewConflictError, r as KaiMemoryUnreadableItemsError, t as KAI_MEMORY_OBJECT_TYPE } from "../../kaiMemory-D0Y_16U4.js";
|
|
2
|
+
export { KAI_MEMORY_OBJECT_TYPE, KAI_MEMORY_STATUSES, KaiMemoryReviewConflictError, KaiMemoryUnreadableItemsError, createKaiMemorySdk };
|
|
File without changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as KaiMemoryStatus, i as KaiMemoryMeta, n as KaiMemoryData, o as MetastoreClient, r as KaiMemoryItem, s as UpdateKaiMemoryMeta, t as CreateKaiMemoryMeta } from "../../types-DWiLcrxt.cjs";
|
|
2
|
+
export { CreateKaiMemoryMeta, KaiMemoryData, KaiMemoryItem, KaiMemoryMeta, KaiMemoryStatus, MetastoreClient, UpdateKaiMemoryMeta };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as KaiMemoryStatus, i as KaiMemoryMeta, n as KaiMemoryData, o as MetastoreClient, r as KaiMemoryItem, s as UpdateKaiMemoryMeta, t as CreateKaiMemoryMeta } from "../../types-Cg14ncdV.js";
|
|
2
|
+
export { CreateKaiMemoryMeta, KaiMemoryData, KaiMemoryItem, KaiMemoryMeta, KaiMemoryStatus, MetastoreClient, UpdateKaiMemoryMeta };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_jobStatus = require("../../jobStatus-
|
|
2
|
+
const require_jobStatus = require("../../jobStatus-BMlsyXWI.cjs");
|
|
3
3
|
const require_QueryJobTimeoutError = require("../../QueryJobTimeoutError-CVNPdCWX.cjs");
|
|
4
|
-
const require_ValidationError = require("../../ValidationError-
|
|
4
|
+
const require_ValidationError = require("../../ValidationError-D65QU0uq.cjs");
|
|
5
5
|
//#region src/sdks/queryService/queryServiceSdk.ts
|
|
6
6
|
const DEFAULT_WAIT_FOR_JOB_INTERVAL = 500;
|
|
7
7
|
const DEFAULT_MAX_WAIT_TIME = 3e5;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as createQueryServiceSdk, n as ExecuteQueryOptions, r as WaitForJobOptions } from "../../index-
|
|
1
|
+
import { i as createQueryServiceSdk, n as ExecuteQueryOptions, r as WaitForJobOptions } from "../../index-DXYASsPP.cjs";
|
|
2
2
|
export { ExecuteQueryOptions, WaitForJobOptions, createQueryServiceSdk };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as createQueryServiceSdk, n as ExecuteQueryOptions, r as WaitForJobOptions } from "../../index-
|
|
1
|
+
import { i as createQueryServiceSdk, n as ExecuteQueryOptions, r as WaitForJobOptions } from "../../index-BkqackZf.js";
|
|
2
2
|
export { ExecuteQueryOptions, WaitForJobOptions, createQueryServiceSdk };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { i as poll, t as jobStatus } from "../../jobStatus-
|
|
1
|
+
import { i as poll, t as jobStatus } from "../../jobStatus-CfRtsIpv.js";
|
|
2
2
|
import { r as QueryJobError, t as QueryJobTimeoutError } from "../../QueryJobTimeoutError-C7JbNGOM.js";
|
|
3
|
-
import { t as ValidationError } from "../../ValidationError-
|
|
3
|
+
import { t as ValidationError } from "../../ValidationError-DjhtNMfZ.js";
|
|
4
4
|
//#region src/sdks/queryService/queryServiceSdk.ts
|
|
5
5
|
const DEFAULT_WAIT_FOR_JOB_INTERVAL = 500;
|
|
6
6
|
const DEFAULT_MAX_WAIT_TIME = 3e5;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_semanticLayer = require("../../semanticLayer-
|
|
2
|
+
const require_semanticLayer = require("../../semanticLayer-CKDVkU56.cjs");
|
|
3
3
|
exports.CONSTRAINT_SCOPES = require_semanticLayer.CONSTRAINT_SCOPES;
|
|
4
4
|
exports.CONSTRAINT_SEVERITIES = require_semanticLayer.CONSTRAINT_SEVERITIES;
|
|
5
5
|
exports.CONSTRAINT_TYPES = require_semanticLayer.CONSTRAINT_TYPES;
|
|
@@ -1,36 +1,22 @@
|
|
|
1
|
-
import { A as CONSTRAINT_TYPES, D as UpdateSemanticObjectMeta, M as RELATIONSHIP_JOIN_TYPES, N as RULE_OPERATORS, O as CONSTRAINT_SCOPES, P as SQL_DIALECTS, T as SemanticUnreadableObjectRef, _ as SemanticModelData, a as SemanticChildObjectType, b as SemanticObjectType, g as SemanticModelChildRef, h as SemanticModelChildDeleteFailure, i as SemanticChildObjectDataMap, j as FIELD_ROLES, k as CONSTRAINT_SEVERITIES, m as SemanticMetricData, n as MetastoreClient, o as SemanticConstraintData, p as SemanticGlossaryData, t as CreateSemanticObjectMeta, u as SemanticDatasetData, v as SemanticObject, x as SemanticRelationshipData } from "../../types-
|
|
1
|
+
import { A as CONSTRAINT_TYPES, D as UpdateSemanticObjectMeta, M as RELATIONSHIP_JOIN_TYPES, N as RULE_OPERATORS, O as CONSTRAINT_SCOPES, P as SQL_DIALECTS, T as SemanticUnreadableObjectRef, _ as SemanticModelData, a as SemanticChildObjectType, b as SemanticObjectType, g as SemanticModelChildRef, h as SemanticModelChildDeleteFailure, i as SemanticChildObjectDataMap, j as FIELD_ROLES, k as CONSTRAINT_SEVERITIES, m as SemanticMetricData, n as MetastoreClient, o as SemanticConstraintData, p as SemanticGlossaryData, t as CreateSemanticObjectMeta, u as SemanticDatasetData, v as SemanticObject, x as SemanticRelationshipData } from "../../types-bc-4z_gc.cjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
//#region src/sdks/semanticLayer/errorMessage.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* The message out of a metastore error body.
|
|
6
6
|
*
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* - Every shape that is not that envelope returns `undefined` rather than a placeholder, so the
|
|
11
|
-
* caller keeps its own fallback (`?? error.message`) instead of rendering a stand-in for one.
|
|
12
|
-
* - Only the first error: the metastore reports fields one at a time, so a list would be a list
|
|
13
|
-
* of one.
|
|
7
|
+
* - Only `errors[].message` says what is wrong; the top-level message is just "Validation failed".
|
|
8
|
+
* - Any other shape returns `undefined`, so the caller keeps its own fallback.
|
|
9
|
+
* - Only the first error: the metastore reports fields one at a time.
|
|
14
10
|
*/
|
|
15
11
|
declare const metastoreErrorMessage: (data: unknown) => string | undefined;
|
|
16
12
|
//#endregion
|
|
17
13
|
//#region src/sdks/semanticLayer/schemas.d.ts
|
|
18
14
|
/**
|
|
19
|
-
*
|
|
15
|
+
* Write validators for untrusted input; the metastore's own validation errors are opaque.
|
|
20
16
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* message that says what is wrong.
|
|
25
|
-
*
|
|
26
|
-
* **Only the fields the SDK types mark as required are declared.** The metastore owns each
|
|
27
|
-
* object type's full schema, so every schema is a `looseObject`: unknown fields pass through
|
|
28
|
-
* untouched rather than being stripped or rejected. Re-declaring the optional fields here
|
|
29
|
-
* would create a second source of truth that silently drops whatever the metastore adds next.
|
|
30
|
-
*
|
|
31
|
-
* The SDK does **not** parse on its own writes — these are for callers that accept untrusted
|
|
32
|
-
* or hand-authored input (an agent's tool call, a form submission) and want to fail early.
|
|
33
|
-
* `modelUUID` is omitted throughout: the SDK injects it, so callers never supply it.
|
|
17
|
+
* - Only required fields are declared; `looseObject` passes the rest through (the metastore owns the full schema).
|
|
18
|
+
* - The SDK does not parse its own writes.
|
|
19
|
+
* - `modelUUID` is omitted: the SDK injects it.
|
|
34
20
|
*/
|
|
35
21
|
declare const semanticModelSchema: z.ZodObject<{
|
|
36
22
|
name: z.ZodString;
|
|
@@ -71,7 +57,6 @@ declare const semanticConstraintSchema: z.ZodObject<{
|
|
|
71
57
|
metrics: z.ZodArray<z.ZodString>;
|
|
72
58
|
rule: z.ZodString;
|
|
73
59
|
}, z.core.$loose>;
|
|
74
|
-
/** Keyed by object type so a caller can pick the schema from a `SemanticChildObjectType`. */
|
|
75
60
|
declare const SEMANTIC_CHILD_OBJECT_SCHEMAS: {
|
|
76
61
|
readonly 'semantic-dataset': z.ZodObject<{
|
|
77
62
|
name: z.ZodString;
|
|
@@ -109,11 +94,10 @@ declare const SEMANTIC_CHILD_OBJECT_SCHEMAS: {
|
|
|
109
94
|
//#endregion
|
|
110
95
|
//#region src/sdks/semanticLayer/semanticLayerSdk.d.ts
|
|
111
96
|
/**
|
|
112
|
-
* Thrown by `deleteModel` when the child cascade partially fails.
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* `
|
|
116
|
-
* reasons, AggregateError-style.
|
|
97
|
+
* Thrown by `deleteModel` when the child cascade partially fails.
|
|
98
|
+
*
|
|
99
|
+
* - Every child delete has settled; the model was kept.
|
|
100
|
+
* - `deletedChildren` are gone, `failedChildren` still exist; `errors` holds per-child reasons.
|
|
117
101
|
*/
|
|
118
102
|
declare class SemanticLayerCascadeDeleteError extends AggregateError {
|
|
119
103
|
readonly modelUUID: string;
|
|
@@ -126,15 +110,10 @@ declare class SemanticLayerCascadeDeleteError extends AggregateError {
|
|
|
126
110
|
});
|
|
127
111
|
}
|
|
128
112
|
/**
|
|
129
|
-
* Thrown by `listModelChildren` when
|
|
113
|
+
* Thrown by `listModelChildren` when some child could not be parsed; fails closed.
|
|
130
114
|
*
|
|
131
|
-
* -
|
|
132
|
-
*
|
|
133
|
-
* - So this one read fails closed where a display read degrades. `deleteModel` calls it before
|
|
134
|
-
* the cascade starts, so nothing is deleted when it throws.
|
|
135
|
-
* - `unreadable` lists what could not be parsed. `modelUUID` is `null` when that field is itself
|
|
136
|
-
* part of what failed — an object that cannot name its model is counted against every model,
|
|
137
|
-
* because the alternative is deleting the model it turns out to belong to.
|
|
115
|
+
* - `deleteModel` reads before the cascade, so nothing is deleted when this throws.
|
|
116
|
+
* - An `unreadable` entry with `modelUUID: null` counts against every model.
|
|
138
117
|
*/
|
|
139
118
|
declare class SemanticLayerUnreadableChildrenError extends Error {
|
|
140
119
|
readonly modelUUID: string;
|
|
@@ -152,10 +131,7 @@ declare const SEMANTIC_OBJECT_TYPE: {
|
|
|
152
131
|
readonly GLOSSARY: 'semantic-glossary';
|
|
153
132
|
readonly CONSTRAINT: 'semantic-constraint';
|
|
154
133
|
};
|
|
155
|
-
/**
|
|
156
|
-
* `readonly` because this drives `createModelTree`, `listModelChildren` and `deleteModel` —
|
|
157
|
-
* a consumer-side `.push()` would silently change what a cascade delete touches.
|
|
158
|
-
*/
|
|
134
|
+
/** `readonly`: it drives what a cascade delete touches. */
|
|
159
135
|
declare const MODEL_CHILD_OBJECT_TYPES: readonly SemanticChildObjectType[];
|
|
160
136
|
type Options = {
|
|
161
137
|
metastoreClient: MetastoreClient;
|
|
@@ -1,36 +1,22 @@
|
|
|
1
|
-
import { A as CONSTRAINT_TYPES, D as UpdateSemanticObjectMeta, M as RELATIONSHIP_JOIN_TYPES, N as RULE_OPERATORS, O as CONSTRAINT_SCOPES, P as SQL_DIALECTS, T as SemanticUnreadableObjectRef, _ as SemanticModelData, a as SemanticChildObjectType, b as SemanticObjectType, g as SemanticModelChildRef, h as SemanticModelChildDeleteFailure, i as SemanticChildObjectDataMap, j as FIELD_ROLES, k as CONSTRAINT_SEVERITIES, m as SemanticMetricData, n as MetastoreClient, o as SemanticConstraintData, p as SemanticGlossaryData, t as CreateSemanticObjectMeta, u as SemanticDatasetData, v as SemanticObject, x as SemanticRelationshipData } from "../../types-
|
|
1
|
+
import { A as CONSTRAINT_TYPES, D as UpdateSemanticObjectMeta, M as RELATIONSHIP_JOIN_TYPES, N as RULE_OPERATORS, O as CONSTRAINT_SCOPES, P as SQL_DIALECTS, T as SemanticUnreadableObjectRef, _ as SemanticModelData, a as SemanticChildObjectType, b as SemanticObjectType, g as SemanticModelChildRef, h as SemanticModelChildDeleteFailure, i as SemanticChildObjectDataMap, j as FIELD_ROLES, k as CONSTRAINT_SEVERITIES, m as SemanticMetricData, n as MetastoreClient, o as SemanticConstraintData, p as SemanticGlossaryData, t as CreateSemanticObjectMeta, u as SemanticDatasetData, v as SemanticObject, x as SemanticRelationshipData } from "../../types-FwRmjsNN.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
//#region src/sdks/semanticLayer/errorMessage.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* The message out of a metastore error body.
|
|
6
6
|
*
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* - Every shape that is not that envelope returns `undefined` rather than a placeholder, so the
|
|
11
|
-
* caller keeps its own fallback (`?? error.message`) instead of rendering a stand-in for one.
|
|
12
|
-
* - Only the first error: the metastore reports fields one at a time, so a list would be a list
|
|
13
|
-
* of one.
|
|
7
|
+
* - Only `errors[].message` says what is wrong; the top-level message is just "Validation failed".
|
|
8
|
+
* - Any other shape returns `undefined`, so the caller keeps its own fallback.
|
|
9
|
+
* - Only the first error: the metastore reports fields one at a time.
|
|
14
10
|
*/
|
|
15
11
|
declare const metastoreErrorMessage: (data: unknown) => string | undefined;
|
|
16
12
|
//#endregion
|
|
17
13
|
//#region src/sdks/semanticLayer/schemas.d.ts
|
|
18
14
|
/**
|
|
19
|
-
*
|
|
15
|
+
* Write validators for untrusted input; the metastore's own validation errors are opaque.
|
|
20
16
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* message that says what is wrong.
|
|
25
|
-
*
|
|
26
|
-
* **Only the fields the SDK types mark as required are declared.** The metastore owns each
|
|
27
|
-
* object type's full schema, so every schema is a `looseObject`: unknown fields pass through
|
|
28
|
-
* untouched rather than being stripped or rejected. Re-declaring the optional fields here
|
|
29
|
-
* would create a second source of truth that silently drops whatever the metastore adds next.
|
|
30
|
-
*
|
|
31
|
-
* The SDK does **not** parse on its own writes — these are for callers that accept untrusted
|
|
32
|
-
* or hand-authored input (an agent's tool call, a form submission) and want to fail early.
|
|
33
|
-
* `modelUUID` is omitted throughout: the SDK injects it, so callers never supply it.
|
|
17
|
+
* - Only required fields are declared; `looseObject` passes the rest through (the metastore owns the full schema).
|
|
18
|
+
* - The SDK does not parse its own writes.
|
|
19
|
+
* - `modelUUID` is omitted: the SDK injects it.
|
|
34
20
|
*/
|
|
35
21
|
declare const semanticModelSchema: z.ZodObject<{
|
|
36
22
|
name: z.ZodString;
|
|
@@ -71,7 +57,6 @@ declare const semanticConstraintSchema: z.ZodObject<{
|
|
|
71
57
|
metrics: z.ZodArray<z.ZodString>;
|
|
72
58
|
rule: z.ZodString;
|
|
73
59
|
}, z.core.$loose>;
|
|
74
|
-
/** Keyed by object type so a caller can pick the schema from a `SemanticChildObjectType`. */
|
|
75
60
|
declare const SEMANTIC_CHILD_OBJECT_SCHEMAS: {
|
|
76
61
|
readonly 'semantic-dataset': z.ZodObject<{
|
|
77
62
|
name: z.ZodString;
|
|
@@ -109,11 +94,10 @@ declare const SEMANTIC_CHILD_OBJECT_SCHEMAS: {
|
|
|
109
94
|
//#endregion
|
|
110
95
|
//#region src/sdks/semanticLayer/semanticLayerSdk.d.ts
|
|
111
96
|
/**
|
|
112
|
-
* Thrown by `deleteModel` when the child cascade partially fails.
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* `
|
|
116
|
-
* reasons, AggregateError-style.
|
|
97
|
+
* Thrown by `deleteModel` when the child cascade partially fails.
|
|
98
|
+
*
|
|
99
|
+
* - Every child delete has settled; the model was kept.
|
|
100
|
+
* - `deletedChildren` are gone, `failedChildren` still exist; `errors` holds per-child reasons.
|
|
117
101
|
*/
|
|
118
102
|
declare class SemanticLayerCascadeDeleteError extends AggregateError {
|
|
119
103
|
readonly modelUUID: string;
|
|
@@ -126,15 +110,10 @@ declare class SemanticLayerCascadeDeleteError extends AggregateError {
|
|
|
126
110
|
});
|
|
127
111
|
}
|
|
128
112
|
/**
|
|
129
|
-
* Thrown by `listModelChildren` when
|
|
113
|
+
* Thrown by `listModelChildren` when some child could not be parsed; fails closed.
|
|
130
114
|
*
|
|
131
|
-
* -
|
|
132
|
-
*
|
|
133
|
-
* - So this one read fails closed where a display read degrades. `deleteModel` calls it before
|
|
134
|
-
* the cascade starts, so nothing is deleted when it throws.
|
|
135
|
-
* - `unreadable` lists what could not be parsed. `modelUUID` is `null` when that field is itself
|
|
136
|
-
* part of what failed — an object that cannot name its model is counted against every model,
|
|
137
|
-
* because the alternative is deleting the model it turns out to belong to.
|
|
115
|
+
* - `deleteModel` reads before the cascade, so nothing is deleted when this throws.
|
|
116
|
+
* - An `unreadable` entry with `modelUUID: null` counts against every model.
|
|
138
117
|
*/
|
|
139
118
|
declare class SemanticLayerUnreadableChildrenError extends Error {
|
|
140
119
|
readonly modelUUID: string;
|
|
@@ -152,10 +131,7 @@ declare const SEMANTIC_OBJECT_TYPE: {
|
|
|
152
131
|
readonly GLOSSARY: 'semantic-glossary';
|
|
153
132
|
readonly CONSTRAINT: 'semantic-constraint';
|
|
154
133
|
};
|
|
155
|
-
/**
|
|
156
|
-
* `readonly` because this drives `createModelTree`, `listModelChildren` and `deleteModel` —
|
|
157
|
-
* a consumer-side `.push()` would silently change what a cascade delete touches.
|
|
158
|
-
*/
|
|
134
|
+
/** `readonly`: it drives what a cascade delete touches. */
|
|
159
135
|
declare const MODEL_CHILD_OBJECT_TYPES: readonly SemanticChildObjectType[];
|
|
160
136
|
type Options = {
|
|
161
137
|
metastoreClient: MetastoreClient;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as RELATIONSHIP_JOIN_TYPES, a as createSemanticLayerSdk, b as metastoreErrorMessage, c as semanticDatasetSchema, d as semanticModelSchema, f as semanticRelationshipSchema, g as FIELD_ROLES, h as CONSTRAINT_TYPES, i as SemanticLayerUnreadableChildrenError, l as semanticGlossarySchema, m as CONSTRAINT_SEVERITIES, n as SEMANTIC_OBJECT_TYPE, o as SEMANTIC_CHILD_OBJECT_SCHEMAS, p as CONSTRAINT_SCOPES, r as SemanticLayerCascadeDeleteError, s as semanticConstraintSchema, t as MODEL_CHILD_OBJECT_TYPES, u as semanticMetricSchema, v as RULE_OPERATORS, y as SQL_DIALECTS } from "../../semanticLayer-
|
|
1
|
+
import { _ as RELATIONSHIP_JOIN_TYPES, a as createSemanticLayerSdk, b as metastoreErrorMessage, c as semanticDatasetSchema, d as semanticModelSchema, f as semanticRelationshipSchema, g as FIELD_ROLES, h as CONSTRAINT_TYPES, i as SemanticLayerUnreadableChildrenError, l as semanticGlossarySchema, m as CONSTRAINT_SEVERITIES, n as SEMANTIC_OBJECT_TYPE, o as SEMANTIC_CHILD_OBJECT_SCHEMAS, p as CONSTRAINT_SCOPES, r as SemanticLayerCascadeDeleteError, s as semanticConstraintSchema, t as MODEL_CHILD_OBJECT_TYPES, u as semanticMetricSchema, v as RULE_OPERATORS, y as SQL_DIALECTS } from "../../semanticLayer-pYy082Ju.js";
|
|
2
2
|
export { CONSTRAINT_SCOPES, CONSTRAINT_SEVERITIES, CONSTRAINT_TYPES, FIELD_ROLES, MODEL_CHILD_OBJECT_TYPES, RELATIONSHIP_JOIN_TYPES, RULE_OPERATORS, SEMANTIC_CHILD_OBJECT_SCHEMAS, SEMANTIC_OBJECT_TYPE, SQL_DIALECTS, SemanticLayerCascadeDeleteError, SemanticLayerUnreadableChildrenError, createSemanticLayerSdk, metastoreErrorMessage, semanticConstraintSchema, semanticDatasetSchema, semanticGlossarySchema, semanticMetricSchema, semanticModelSchema, semanticRelationshipSchema };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as SemanticRuleExpression, D as UpdateSemanticObjectMeta, E as SemanticValidationQuery, S as SemanticRelationshipJoinType, T as SemanticUnreadableObjectRef, _ as SemanticModelData, a as SemanticChildObjectType, b as SemanticObjectType, c as SemanticConstraintSeverity, d as SemanticFieldData, f as SemanticFieldRole, g as SemanticModelChildRef, h as SemanticModelChildDeleteFailure, i as SemanticChildObjectDataMap, l as SemanticConstraintType, m as SemanticMetricData, n as MetastoreClient, o as SemanticConstraintData, p as SemanticGlossaryData, r as SemanticAiMetadata, s as SemanticConstraintScope, t as CreateSemanticObjectMeta, u as SemanticDatasetData, v as SemanticObject, w as SemanticRuleOperator, x as SemanticRelationshipData, y as SemanticObjectMeta } from "../../types-
|
|
1
|
+
import { C as SemanticRuleExpression, D as UpdateSemanticObjectMeta, E as SemanticValidationQuery, S as SemanticRelationshipJoinType, T as SemanticUnreadableObjectRef, _ as SemanticModelData, a as SemanticChildObjectType, b as SemanticObjectType, c as SemanticConstraintSeverity, d as SemanticFieldData, f as SemanticFieldRole, g as SemanticModelChildRef, h as SemanticModelChildDeleteFailure, i as SemanticChildObjectDataMap, l as SemanticConstraintType, m as SemanticMetricData, n as MetastoreClient, o as SemanticConstraintData, p as SemanticGlossaryData, r as SemanticAiMetadata, s as SemanticConstraintScope, t as CreateSemanticObjectMeta, u as SemanticDatasetData, v as SemanticObject, w as SemanticRuleOperator, x as SemanticRelationshipData, y as SemanticObjectMeta } from "../../types-bc-4z_gc.cjs";
|
|
2
2
|
export { CreateSemanticObjectMeta, MetastoreClient, SemanticAiMetadata, SemanticChildObjectDataMap, SemanticChildObjectType, SemanticConstraintData, SemanticConstraintScope, SemanticConstraintSeverity, SemanticConstraintType, SemanticDatasetData, SemanticFieldData, SemanticFieldRole, SemanticGlossaryData, SemanticMetricData, SemanticModelChildDeleteFailure, SemanticModelChildRef, SemanticModelData, SemanticObject, SemanticObjectMeta, SemanticObjectType, SemanticRelationshipData, SemanticRelationshipJoinType, SemanticRuleExpression, SemanticRuleOperator, SemanticUnreadableObjectRef, SemanticValidationQuery, UpdateSemanticObjectMeta };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as SemanticRuleExpression, D as UpdateSemanticObjectMeta, E as SemanticValidationQuery, S as SemanticRelationshipJoinType, T as SemanticUnreadableObjectRef, _ as SemanticModelData, a as SemanticChildObjectType, b as SemanticObjectType, c as SemanticConstraintSeverity, d as SemanticFieldData, f as SemanticFieldRole, g as SemanticModelChildRef, h as SemanticModelChildDeleteFailure, i as SemanticChildObjectDataMap, l as SemanticConstraintType, m as SemanticMetricData, n as MetastoreClient, o as SemanticConstraintData, p as SemanticGlossaryData, r as SemanticAiMetadata, s as SemanticConstraintScope, t as CreateSemanticObjectMeta, u as SemanticDatasetData, v as SemanticObject, w as SemanticRuleOperator, x as SemanticRelationshipData, y as SemanticObjectMeta } from "../../types-
|
|
1
|
+
import { C as SemanticRuleExpression, D as UpdateSemanticObjectMeta, E as SemanticValidationQuery, S as SemanticRelationshipJoinType, T as SemanticUnreadableObjectRef, _ as SemanticModelData, a as SemanticChildObjectType, b as SemanticObjectType, c as SemanticConstraintSeverity, d as SemanticFieldData, f as SemanticFieldRole, g as SemanticModelChildRef, h as SemanticModelChildDeleteFailure, i as SemanticChildObjectDataMap, l as SemanticConstraintType, m as SemanticMetricData, n as MetastoreClient, o as SemanticConstraintData, p as SemanticGlossaryData, r as SemanticAiMetadata, s as SemanticConstraintScope, t as CreateSemanticObjectMeta, u as SemanticDatasetData, v as SemanticObject, w as SemanticRuleOperator, x as SemanticRelationshipData, y as SemanticObjectMeta } from "../../types-FwRmjsNN.js";
|
|
2
2
|
export { CreateSemanticObjectMeta, MetastoreClient, SemanticAiMetadata, SemanticChildObjectDataMap, SemanticChildObjectType, SemanticConstraintData, SemanticConstraintScope, SemanticConstraintSeverity, SemanticConstraintType, SemanticDatasetData, SemanticFieldData, SemanticFieldRole, SemanticGlossaryData, SemanticMetricData, SemanticModelChildDeleteFailure, SemanticModelChildRef, SemanticModelData, SemanticObject, SemanticObjectMeta, SemanticObjectType, SemanticRelationshipData, SemanticRelationshipJoinType, SemanticRuleExpression, SemanticRuleOperator, SemanticUnreadableObjectRef, SemanticValidationQuery, UpdateSemanticObjectMeta };
|
|
@@ -250,10 +250,6 @@ const prefixTagsWithDevBranchId = (tags, branchId = null, options = {}) => {
|
|
|
250
250
|
if (!branchId || options.hasStorageBranches) return tags;
|
|
251
251
|
return tags.map((tag) => `${branchId}-${tag}`);
|
|
252
252
|
};
|
|
253
|
-
const removeBranchFromUrl = (url) => {
|
|
254
|
-
const regex = /* @__PURE__ */ new RegExp("branch/\\d+/", "g");
|
|
255
|
-
return url.replace(regex, "");
|
|
256
|
-
};
|
|
257
253
|
//#endregion
|
|
258
254
|
exports.FQID_TYPES = FQID_TYPES;
|
|
259
255
|
exports.constructFQID = constructFQID;
|
|
@@ -263,7 +259,6 @@ exports.parseCurrentDevBranchIdFromUrl = parseCurrentDevBranchIdFromUrl;
|
|
|
263
259
|
exports.parseDevBranchId = parseDevBranchId;
|
|
264
260
|
exports.parseFQID = parseFQID;
|
|
265
261
|
exports.prefixTagsWithDevBranchId = prefixTagsWithDevBranchId;
|
|
266
|
-
exports.removeBranchFromUrl = removeBranchFromUrl;
|
|
267
262
|
exports.tableIdParser = tableIdParser;
|
|
268
263
|
|
|
269
264
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":[],"sources":["../../../src/sdks/storage/storageSdk.ts","../../../src/sdks/storage/tableIdParser.ts","../../../src/sdks/storage/fqid.ts","../../../src/sdks/storage/devBranch.ts"],"sourcesContent":["import type { createStorageClient } from '../../clients/storage';\nimport type {\n RefreshExternalBucketQuery,\n RegisterBucketBody,\n} from '../../clients/storage/bucketExternal/types';\nimport type {\n CreateBucketListingBody,\n UpdateBucketListingBody,\n} from '../../clients/storage/bucketListings/types';\nimport type {\n ForceUnlinkBucketInput,\n ShareBucketToOrganizationInput,\n ShareBucketToOrganizationProjectInput,\n ShareBucketToProjectsInput,\n ShareBucketToUsersInput,\n UnshareBucketInput,\n} from '../../clients/storage/bucketSharing/types';\nimport type {\n AddTableColumnInput,\n CreateTablePrimaryKeyInput,\n DeleteTableColumnInput,\n RemoveTablePrimaryKeyInput,\n} from '../../clients/storage/columns/types';\nimport type { Job, JobOperation } from '../../clients/storage/jobs/types';\nimport type { CreateSnapshotInput } from '../../clients/storage/snapshots/types';\nimport type {\n CreateTableAsyncInput,\n CreateTableDefinitionInput,\n ImportAsyncInput,\n PullTableAsyncInput,\n TableExportAsyncBody,\n} from '../../clients/storage/tables/types';\n\ntype Options = {\n interval?: number;\n maxAttempts?: number;\n abortSignal?: AbortSignal;\n};\n\ntype StorageSdkOptions = {\n storageClient: ReturnType<typeof createStorageClient>;\n};\n\nexport const createStorageSdk = ({ storageClient }: StorageSdkOptions) => {\n const waitForJob = async <Operation extends JobOperation | string>(\n job: Job<Operation> & { operationName: Operation },\n options?: Options,\n ) => {\n // A poll reports its ending; this SDK throws, so a caller can keep awaiting the job it asked for.\n return storageClient\n .poller<Operation>(job, {\n interval: options?.interval,\n maxAttempts: options?.maxAttempts,\n signal: options?.abortSignal,\n })\n .unwrap();\n };\n\n const createTable = async (input: CreateTableAsyncInput, options?: Options) => {\n const job = await storageClient.tables.createTableAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const createTableDefinition = async (input: CreateTableDefinitionInput, options?: Options) => {\n const job = await storageClient.tables.createTableDefinitionAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const importFromFile = async (input: ImportAsyncInput, options?: Options) => {\n const job = await storageClient.tables.importAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const exportToFile = async (tableId: string, body?: TableExportAsyncBody, options?: Options) => {\n const job = await storageClient.tables.exportAsync({ tableId, ...body }, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const createBucketListing = async (\n bucketId: string,\n input: CreateBucketListingBody,\n options?: Options,\n ) => {\n const job = await storageClient.bucketListings.createListingAsync(\n { bucketId, ...input },\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const updateBucketListing = async (\n bucketId: string,\n input: UpdateBucketListingBody,\n options?: Options,\n ) => {\n const job = await storageClient.bucketListings.updateListingAsync(\n { bucketId, ...input },\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const deleteBucketListing = async (bucketId: string, options?: Options) => {\n const job = await storageClient.bucketListings.deleteListingAsync(\n bucketId,\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const shareBucketToOrganization = async (\n input: ShareBucketToOrganizationInput,\n options?: Options,\n ) => {\n const job = await storageClient.bucketSharing.shareBucketToOrganizationAsync(\n input,\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const shareBucketToOrganizationProject = async (\n input: ShareBucketToOrganizationProjectInput,\n options?: Options,\n ) => {\n const job = await storageClient.bucketSharing.shareBucketToOrganizationProjectAsync(\n input,\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const shareBucketToProjects = async (input: ShareBucketToProjectsInput, options?: Options) => {\n const job = await storageClient.bucketSharing.shareBucketToProjectsAsync(\n input,\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const shareBucketToUsers = async (input: ShareBucketToUsersInput, options?: Options) => {\n const job = await storageClient.bucketSharing.shareBucketToUsersAsync(\n input,\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const unshareBucket = async (input: UnshareBucketInput, options?: Options) => {\n const job = await storageClient.bucketSharing.unshareBucketAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const forceUnlinkBucket = async (input: ForceUnlinkBucketInput, options?: Options) => {\n const job = await storageClient.bucketSharing.forceUnlinkBucketAsync(\n input,\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const registerBucket = async (body: RegisterBucketBody, options?: Options) => {\n const job = await storageClient.bucketExternal.registerBucketAsync(body, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const refreshExternalBucket = async (\n bucketId: string,\n query?: RefreshExternalBucketQuery,\n options?: Options,\n ) => {\n const job = await storageClient.bucketExternal.refreshExternalBucketAsync(\n { bucketId, ...query },\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const createSnapshot = async (input: CreateSnapshotInput, options?: Options) => {\n const job = await storageClient.snapshots.createSnapshotAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const pullTable = async (input: PullTableAsyncInput, options?: Options) => {\n const job = await storageClient.tables.pullTableAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const addTableColumn = async (input: AddTableColumnInput, options?: Options) => {\n const job = await storageClient.columns.addTableColumnAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const deleteTableColumn = async (input: DeleteTableColumnInput, options?: Options) => {\n const job = await storageClient.columns.deleteTableColumnAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const createTablePrimaryKey = async (input: CreateTablePrimaryKeyInput, options?: Options) => {\n const job = await storageClient.columns.createTablePrimaryKeyAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const removeTablePrimaryKey = async (input: RemoveTablePrimaryKeyInput, options?: Options) => {\n const job = await storageClient.columns.removeTablePrimaryKeyAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n return {\n createTable,\n createTableDefinition,\n importFromFile,\n exportToFile,\n createBucketListing,\n updateBucketListing,\n deleteBucketListing,\n shareBucketToOrganization,\n shareBucketToOrganizationProject,\n shareBucketToProjects,\n shareBucketToUsers,\n unshareBucket,\n forceUnlinkBucket,\n registerBucket,\n refreshExternalBucket,\n createSnapshot,\n pullTable,\n addTableColumn,\n deleteTableColumn,\n createTablePrimaryKey,\n removeTablePrimaryKey,\n };\n};\n","function parseTableId(tableId: string, defaultStage: string, defaultBucket: string) {\n const parts = tableId.match(/^(in|out)?\\.(.+)?\\.(.+)?$/);\n\n return {\n stage: parts ? parts[1] || defaultStage : defaultStage,\n bucket: parts ? parts[2] || defaultBucket : defaultBucket,\n table: parts ? parts[3] || '' : '',\n };\n}\n\nexport function parse(\n tableId: string | null,\n options: { defaultStage?: string; defaultBucket?: string } = {},\n) {\n const parts = parseTableId(\n tableId || '',\n options.defaultStage || '',\n options.defaultBucket || '',\n );\n\n const { stage, bucket, table } = parts;\n return {\n tableId: `${stage}.${bucket}.${table}`,\n parts,\n setPart: (partNameToSet: string, value: string) => {\n const result = (['stage', 'bucket', 'table'] as const)\n .reduce(\n (memo, partName) =>\n partName === partNameToSet ? `${memo}.${value}` : `${memo}.${parts[partName]}`,\n '',\n )\n .slice(1);\n return parse(result);\n },\n };\n}\n\nexport const tableIdParser = { parse };\n","export const FQID_TYPES = {\n organization: 'ORG',\n maintainer: 'MTR',\n project: 'PRJ',\n bucket: 'BCT',\n table: 'TBL',\n column: 'COL',\n config: 'CFG',\n component: 'CMP',\n externalTable: 'EX_TBL',\n externalColumn: 'EX_COL',\n} as const;\n\ntype FQIDTypes = typeof FQID_TYPES;\n\nexport type ParsedFQID = {\n type?: (typeof FQID_TYPES)[keyof typeof FQID_TYPES];\n organizationId?: string;\n maintainerId?: string;\n projectId?: string;\n bucketId?: string;\n tableId?: string;\n componentId?: string;\n configId?: string;\n column?: string;\n};\n\nconst isFQIDType = (value: string): value is FQIDTypes[keyof FQIDTypes] => {\n return Object.values(FQID_TYPES).includes(value as FQIDTypes[keyof FQIDTypes]);\n};\n\nconst parseFQID = (fqid?: string): ParsedFQID | Record<string, never> => {\n if (!fqid?.trim()) return {};\n\n const firstSegment = fqid.split(' ')[0] ?? '';\n const [type, ...rest] = firstSegment.split('/');\n\n if (!type || !isFQIDType(type)) return {};\n\n switch (type) {\n case 'ORG':\n return { type, organizationId: rest[0] };\n case 'MTR':\n return { type, maintainerId: rest[0] };\n case 'PRJ':\n return { type, projectId: rest[0] };\n case 'BCT':\n return { type, projectId: rest[0], bucketId: rest[1] };\n case 'TBL':\n return { type, projectId: rest[0], tableId: rest[1] };\n case 'COL':\n return { type, projectId: rest[0], tableId: rest[1], column: rest[2] };\n case 'CMP':\n return { type, projectId: rest[0], componentId: rest[1] };\n case 'CFG':\n return { type, projectId: rest[0], componentId: rest[1], configId: rest[2] };\n default:\n return {};\n }\n};\n\ntype FQIDData =\n | {\n type: FQIDTypes['organization'];\n data: { organizationId: string };\n }\n | {\n type: FQIDTypes['maintainer'];\n data: { maintainerId: string };\n }\n | {\n type: FQIDTypes['project'];\n data: { projectId: string };\n }\n | {\n type: FQIDTypes['bucket'];\n data: { projectId: string; bucketId: string };\n }\n | {\n type: FQIDTypes['table'];\n data: { projectId: string; tableId: string };\n }\n | {\n type: FQIDTypes['column'];\n data: { projectId: string; tableId: string; column: string };\n }\n | {\n type: FQIDTypes['component'];\n data: { projectId: string; componentId: string };\n }\n | {\n type: FQIDTypes['config'];\n data: { projectId: string; componentId: string; configId: string };\n };\n\nconst constructFQID = ({ type, data }: FQIDData) => {\n switch (type) {\n case FQID_TYPES.organization:\n return `ORG/${data.organizationId}`;\n case FQID_TYPES.maintainer:\n return `MTR/${data.maintainerId}`;\n case FQID_TYPES.project:\n return `PRJ/${data.projectId}`;\n case FQID_TYPES.bucket:\n return `BCT/${data.projectId}/${data.bucketId}`;\n case FQID_TYPES.table:\n return `TBL/${data.projectId}/${data.tableId}`;\n case FQID_TYPES.column:\n return `COL/${data.projectId}/${data.tableId}/${data.column}`;\n case FQID_TYPES.component:\n return `CMP/${data.projectId}/${data.componentId}`;\n case FQID_TYPES.config:\n return `CFG/${data.projectId}/${data.componentId}/${data.configId}`;\n }\n};\n\nexport { parseFQID, constructFQID };\n","export const parseDevBranchId = (path: string): number | null => {\n const pathParts = path.split('/');\n const branchKeywordIndex = pathParts.findIndex((pathPart) => pathPart === 'branch');\n if (branchKeywordIndex === -1) {\n return null;\n }\n const branchId = pathParts[branchKeywordIndex + 1];\n if (!branchId) {\n return null;\n }\n const branchIdInt = parseInt(branchId, 10);\n if (/^\\d+$/.test(branchId) && branchIdInt > 0) {\n return branchIdInt;\n }\n return null;\n};\n\nexport const parseCurrentDevBranchIdFromUrl = (): number | null => {\n if (typeof location === 'undefined') {\n return null;\n }\n return parseDevBranchId(location.pathname);\n};\n\ntype PrefixTagsOptions = {\n hasStorageBranches?: boolean;\n};\n\nexport const prefixTagsWithDevBranchId = (\n tags: string[],\n branchId: number | string | null = null,\n options: PrefixTagsOptions = {},\n): string[] => {\n if (!branchId || options.hasStorageBranches) {\n return tags;\n }\n\n return tags.map((tag) => `${branchId}-${tag}`);\n};\n\nexport const removeBranchFromUrl = (url: string): string => {\n const partToRemove = 'branch/\\\\d+/'; // This pattern matches \"branch/\" followed by one or more digits\n const regex = new RegExp(partToRemove, 'g');\n\n return url.replace(regex, '');\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../src/sdks/storage/storageSdk.ts","../../../src/sdks/storage/tableIdParser.ts","../../../src/sdks/storage/fqid.ts","../../../src/sdks/storage/devBranch.ts"],"sourcesContent":["import type { createStorageClient } from '../../clients/storage';\nimport type {\n RefreshExternalBucketQuery,\n RegisterBucketBody,\n} from '../../clients/storage/bucketExternal/types';\nimport type {\n CreateBucketListingBody,\n UpdateBucketListingBody,\n} from '../../clients/storage/bucketListings/types';\nimport type {\n ForceUnlinkBucketInput,\n ShareBucketToOrganizationInput,\n ShareBucketToOrganizationProjectInput,\n ShareBucketToProjectsInput,\n ShareBucketToUsersInput,\n UnshareBucketInput,\n} from '../../clients/storage/bucketSharing/types';\nimport type {\n AddTableColumnInput,\n CreateTablePrimaryKeyInput,\n DeleteTableColumnInput,\n RemoveTablePrimaryKeyInput,\n} from '../../clients/storage/columns/types';\nimport type { Job, JobOperation } from '../../clients/storage/jobs/types';\nimport type { CreateSnapshotInput } from '../../clients/storage/snapshots/types';\nimport type {\n CreateTableAsyncInput,\n CreateTableDefinitionInput,\n ImportAsyncInput,\n PullTableAsyncInput,\n TableExportAsyncBody,\n} from '../../clients/storage/tables/types';\n\ntype Options = {\n interval?: number;\n maxAttempts?: number;\n abortSignal?: AbortSignal;\n};\n\ntype StorageSdkOptions = {\n storageClient: ReturnType<typeof createStorageClient>;\n};\n\nexport const createStorageSdk = ({ storageClient }: StorageSdkOptions) => {\n const waitForJob = async <Operation extends JobOperation | string>(\n job: Job<Operation> & { operationName: Operation },\n options?: Options,\n ) => {\n // A poll reports its ending; this SDK throws, so a caller can keep awaiting the job it asked for.\n return storageClient\n .poller<Operation>(job, {\n interval: options?.interval,\n maxAttempts: options?.maxAttempts,\n signal: options?.abortSignal,\n })\n .unwrap();\n };\n\n const createTable = async (input: CreateTableAsyncInput, options?: Options) => {\n const job = await storageClient.tables.createTableAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const createTableDefinition = async (input: CreateTableDefinitionInput, options?: Options) => {\n const job = await storageClient.tables.createTableDefinitionAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const importFromFile = async (input: ImportAsyncInput, options?: Options) => {\n const job = await storageClient.tables.importAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const exportToFile = async (tableId: string, body?: TableExportAsyncBody, options?: Options) => {\n const job = await storageClient.tables.exportAsync({ tableId, ...body }, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const createBucketListing = async (\n bucketId: string,\n input: CreateBucketListingBody,\n options?: Options,\n ) => {\n const job = await storageClient.bucketListings.createListingAsync(\n { bucketId, ...input },\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const updateBucketListing = async (\n bucketId: string,\n input: UpdateBucketListingBody,\n options?: Options,\n ) => {\n const job = await storageClient.bucketListings.updateListingAsync(\n { bucketId, ...input },\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const deleteBucketListing = async (bucketId: string, options?: Options) => {\n const job = await storageClient.bucketListings.deleteListingAsync(\n bucketId,\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const shareBucketToOrganization = async (\n input: ShareBucketToOrganizationInput,\n options?: Options,\n ) => {\n const job = await storageClient.bucketSharing.shareBucketToOrganizationAsync(\n input,\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const shareBucketToOrganizationProject = async (\n input: ShareBucketToOrganizationProjectInput,\n options?: Options,\n ) => {\n const job = await storageClient.bucketSharing.shareBucketToOrganizationProjectAsync(\n input,\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const shareBucketToProjects = async (input: ShareBucketToProjectsInput, options?: Options) => {\n const job = await storageClient.bucketSharing.shareBucketToProjectsAsync(\n input,\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const shareBucketToUsers = async (input: ShareBucketToUsersInput, options?: Options) => {\n const job = await storageClient.bucketSharing.shareBucketToUsersAsync(\n input,\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const unshareBucket = async (input: UnshareBucketInput, options?: Options) => {\n const job = await storageClient.bucketSharing.unshareBucketAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const forceUnlinkBucket = async (input: ForceUnlinkBucketInput, options?: Options) => {\n const job = await storageClient.bucketSharing.forceUnlinkBucketAsync(\n input,\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const registerBucket = async (body: RegisterBucketBody, options?: Options) => {\n const job = await storageClient.bucketExternal.registerBucketAsync(body, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const refreshExternalBucket = async (\n bucketId: string,\n query?: RefreshExternalBucketQuery,\n options?: Options,\n ) => {\n const job = await storageClient.bucketExternal.refreshExternalBucketAsync(\n { bucketId, ...query },\n options?.abortSignal,\n );\n return waitForJob(job, options);\n };\n\n const createSnapshot = async (input: CreateSnapshotInput, options?: Options) => {\n const job = await storageClient.snapshots.createSnapshotAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const pullTable = async (input: PullTableAsyncInput, options?: Options) => {\n const job = await storageClient.tables.pullTableAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const addTableColumn = async (input: AddTableColumnInput, options?: Options) => {\n const job = await storageClient.columns.addTableColumnAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const deleteTableColumn = async (input: DeleteTableColumnInput, options?: Options) => {\n const job = await storageClient.columns.deleteTableColumnAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const createTablePrimaryKey = async (input: CreateTablePrimaryKeyInput, options?: Options) => {\n const job = await storageClient.columns.createTablePrimaryKeyAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n const removeTablePrimaryKey = async (input: RemoveTablePrimaryKeyInput, options?: Options) => {\n const job = await storageClient.columns.removeTablePrimaryKeyAsync(input, options?.abortSignal);\n return waitForJob(job, options);\n };\n\n return {\n createTable,\n createTableDefinition,\n importFromFile,\n exportToFile,\n createBucketListing,\n updateBucketListing,\n deleteBucketListing,\n shareBucketToOrganization,\n shareBucketToOrganizationProject,\n shareBucketToProjects,\n shareBucketToUsers,\n unshareBucket,\n forceUnlinkBucket,\n registerBucket,\n refreshExternalBucket,\n createSnapshot,\n pullTable,\n addTableColumn,\n deleteTableColumn,\n createTablePrimaryKey,\n removeTablePrimaryKey,\n };\n};\n","function parseTableId(tableId: string, defaultStage: string, defaultBucket: string) {\n const parts = tableId.match(/^(in|out)?\\.(.+)?\\.(.+)?$/);\n\n return {\n stage: parts ? parts[1] || defaultStage : defaultStage,\n bucket: parts ? parts[2] || defaultBucket : defaultBucket,\n table: parts ? parts[3] || '' : '',\n };\n}\n\nexport function parse(\n tableId: string | null,\n options: { defaultStage?: string; defaultBucket?: string } = {},\n) {\n const parts = parseTableId(\n tableId || '',\n options.defaultStage || '',\n options.defaultBucket || '',\n );\n\n const { stage, bucket, table } = parts;\n return {\n tableId: `${stage}.${bucket}.${table}`,\n parts,\n setPart: (partNameToSet: string, value: string) => {\n const result = (['stage', 'bucket', 'table'] as const)\n .reduce(\n (memo, partName) =>\n partName === partNameToSet ? `${memo}.${value}` : `${memo}.${parts[partName]}`,\n '',\n )\n .slice(1);\n return parse(result);\n },\n };\n}\n\nexport const tableIdParser = { parse };\n","export const FQID_TYPES = {\n organization: 'ORG',\n maintainer: 'MTR',\n project: 'PRJ',\n bucket: 'BCT',\n table: 'TBL',\n column: 'COL',\n config: 'CFG',\n component: 'CMP',\n externalTable: 'EX_TBL',\n externalColumn: 'EX_COL',\n} as const;\n\ntype FQIDTypes = typeof FQID_TYPES;\n\nexport type ParsedFQID = {\n type?: (typeof FQID_TYPES)[keyof typeof FQID_TYPES];\n organizationId?: string;\n maintainerId?: string;\n projectId?: string;\n bucketId?: string;\n tableId?: string;\n componentId?: string;\n configId?: string;\n column?: string;\n};\n\nconst isFQIDType = (value: string): value is FQIDTypes[keyof FQIDTypes] => {\n return Object.values(FQID_TYPES).includes(value as FQIDTypes[keyof FQIDTypes]);\n};\n\nconst parseFQID = (fqid?: string): ParsedFQID | Record<string, never> => {\n if (!fqid?.trim()) return {};\n\n const firstSegment = fqid.split(' ')[0] ?? '';\n const [type, ...rest] = firstSegment.split('/');\n\n if (!type || !isFQIDType(type)) return {};\n\n switch (type) {\n case 'ORG':\n return { type, organizationId: rest[0] };\n case 'MTR':\n return { type, maintainerId: rest[0] };\n case 'PRJ':\n return { type, projectId: rest[0] };\n case 'BCT':\n return { type, projectId: rest[0], bucketId: rest[1] };\n case 'TBL':\n return { type, projectId: rest[0], tableId: rest[1] };\n case 'COL':\n return { type, projectId: rest[0], tableId: rest[1], column: rest[2] };\n case 'CMP':\n return { type, projectId: rest[0], componentId: rest[1] };\n case 'CFG':\n return { type, projectId: rest[0], componentId: rest[1], configId: rest[2] };\n default:\n return {};\n }\n};\n\ntype FQIDData =\n | {\n type: FQIDTypes['organization'];\n data: { organizationId: string };\n }\n | {\n type: FQIDTypes['maintainer'];\n data: { maintainerId: string };\n }\n | {\n type: FQIDTypes['project'];\n data: { projectId: string };\n }\n | {\n type: FQIDTypes['bucket'];\n data: { projectId: string; bucketId: string };\n }\n | {\n type: FQIDTypes['table'];\n data: { projectId: string; tableId: string };\n }\n | {\n type: FQIDTypes['column'];\n data: { projectId: string; tableId: string; column: string };\n }\n | {\n type: FQIDTypes['component'];\n data: { projectId: string; componentId: string };\n }\n | {\n type: FQIDTypes['config'];\n data: { projectId: string; componentId: string; configId: string };\n };\n\nconst constructFQID = ({ type, data }: FQIDData) => {\n switch (type) {\n case FQID_TYPES.organization:\n return `ORG/${data.organizationId}`;\n case FQID_TYPES.maintainer:\n return `MTR/${data.maintainerId}`;\n case FQID_TYPES.project:\n return `PRJ/${data.projectId}`;\n case FQID_TYPES.bucket:\n return `BCT/${data.projectId}/${data.bucketId}`;\n case FQID_TYPES.table:\n return `TBL/${data.projectId}/${data.tableId}`;\n case FQID_TYPES.column:\n return `COL/${data.projectId}/${data.tableId}/${data.column}`;\n case FQID_TYPES.component:\n return `CMP/${data.projectId}/${data.componentId}`;\n case FQID_TYPES.config:\n return `CFG/${data.projectId}/${data.componentId}/${data.configId}`;\n }\n};\n\nexport { parseFQID, constructFQID };\n","export const parseDevBranchId = (path: string): number | null => {\n const pathParts = path.split('/');\n const branchKeywordIndex = pathParts.findIndex((pathPart) => pathPart === 'branch');\n if (branchKeywordIndex === -1) {\n return null;\n }\n const branchId = pathParts[branchKeywordIndex + 1];\n if (!branchId) {\n return null;\n }\n const branchIdInt = parseInt(branchId, 10);\n if (/^\\d+$/.test(branchId) && branchIdInt > 0) {\n return branchIdInt;\n }\n return null;\n};\n\nexport const parseCurrentDevBranchIdFromUrl = (): number | null => {\n if (typeof location === 'undefined') {\n return null;\n }\n return parseDevBranchId(location.pathname);\n};\n\ntype PrefixTagsOptions = {\n hasStorageBranches?: boolean;\n};\n\nexport const prefixTagsWithDevBranchId = (\n tags: string[],\n branchId: number | string | null = null,\n options: PrefixTagsOptions = {},\n): string[] => {\n if (!branchId || options.hasStorageBranches) {\n return tags;\n }\n\n return tags.map((tag) => `${branchId}-${tag}`);\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as parseCurrentDevBranchIdFromUrl, c as
|
|
2
|
-
export { FQID_TYPES, ParsedFQID, constructFQID, createStorageSdk, parse, parseCurrentDevBranchIdFromUrl, parseDevBranchId, parseFQID, prefixTagsWithDevBranchId,
|
|
1
|
+
import { a as parseCurrentDevBranchIdFromUrl, c as FQID_TYPES, d as parseFQID, f as parse, l as ParsedFQID, m as createStorageSdk, o as parseDevBranchId, p as tableIdParser, s as prefixTagsWithDevBranchId, u as constructFQID } from "../../index-DXYASsPP.cjs";
|
|
2
|
+
export { FQID_TYPES, ParsedFQID, constructFQID, createStorageSdk, parse, parseCurrentDevBranchIdFromUrl, parseDevBranchId, parseFQID, prefixTagsWithDevBranchId, tableIdParser };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as parseCurrentDevBranchIdFromUrl, c as
|
|
2
|
-
export { FQID_TYPES, ParsedFQID, constructFQID, createStorageSdk, parse, parseCurrentDevBranchIdFromUrl, parseDevBranchId, parseFQID, prefixTagsWithDevBranchId,
|
|
1
|
+
import { a as parseCurrentDevBranchIdFromUrl, c as FQID_TYPES, d as parseFQID, f as parse, l as ParsedFQID, m as createStorageSdk, o as parseDevBranchId, p as tableIdParser, s as prefixTagsWithDevBranchId, u as constructFQID } from "../../index-BkqackZf.js";
|
|
2
|
+
export { FQID_TYPES, ParsedFQID, constructFQID, createStorageSdk, parse, parseCurrentDevBranchIdFromUrl, parseDevBranchId, parseFQID, prefixTagsWithDevBranchId, tableIdParser };
|