@keboola/api-client 33.0.0 → 35.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 +2 -2
- package/API-SURFACE.md +16 -2
- package/CHANGELOG.md +253 -0
- package/dist/{ManagementClientAuthError-DqeXL8nv.cjs → ManagementClientAuthError-DD4u0EU7.cjs} +2 -2
- package/dist/{ManagementClientAuthError-DqeXL8nv.cjs.map → ManagementClientAuthError-DD4u0EU7.cjs.map} +1 -1
- package/dist/{ManagementClientAuthError-iKbBugKC.js → ManagementClientAuthError-ey-f03vy.js} +2 -2
- package/dist/{ManagementClientAuthError-iKbBugKC.js.map → ManagementClientAuthError-ey-f03vy.js.map} +1 -1
- package/dist/{ValidationError-CzPWydEb.js → ValidationError-BekhphAq.js} +11 -7
- package/dist/ValidationError-BekhphAq.js.map +1 -0
- package/dist/{ValidationError-h5qvwahi.cjs → ValidationError-CLVJCCwH.cjs} +16 -6
- package/dist/ValidationError-CLVJCCwH.cjs.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-D8K0VeNM.cjs → appLogs-BjfUoWzs.cjs} +2 -2
- package/dist/{appLogs-D8K0VeNM.cjs.map → appLogs-BjfUoWzs.cjs.map} +1 -1
- package/dist/{appLogs-u0XMZLjS.d.ts → appLogs-Ch7DYpzx.d.ts} +2 -2
- package/dist/{appLogs-Q4A7A_Fc.d.cts → appLogs-D5A13Y0y.d.cts} +2 -2
- package/dist/{appLogs-D72eD8vP.js → appLogs-xsVkTriU.js} +2 -2
- package/dist/{appLogs-D72eD8vP.js.map → appLogs-xsVkTriU.js.map} +1 -1
- package/dist/apps/index.cjs +3 -3
- package/dist/apps/index.d.cts +3 -3
- package/dist/apps/index.d.ts +3 -3
- package/dist/apps/index.js +3 -3
- package/dist/apps/types.d.cts +2 -2
- package/dist/apps/types.d.ts +2 -2
- package/dist/assets/index.cjs +1 -1
- package/dist/assets/index.d.cts +1 -1
- package/dist/assets/index.d.ts +1 -1
- package/dist/assets/index.js +1 -1
- package/dist/auth/index.cjs +1 -1
- package/dist/auth/index.d.cts +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.js +1 -1
- package/dist/auth/types.d.cts +1 -1
- package/dist/auth/types.d.ts +1 -1
- package/dist/{auth-C2_JLisH.cjs → auth-JQ33o3nU.cjs} +2 -2
- package/dist/{auth-C2_JLisH.cjs.map → auth-JQ33o3nU.cjs.map} +1 -1
- package/dist/{auth-CE9rQV3-.js → auth-aItmDu45.js} +2 -2
- package/dist/{auth-CE9rQV3-.js.map → auth-aItmDu45.js.map} +1 -1
- package/dist/{authClient-DZ_8lvdJ.d.cts → authClient-CTHNs6Tq.d.cts} +4 -4
- package/dist/{authClient-DEyqR7GW.js → authClient-D7W9vWPR.js} +5 -5
- package/dist/{authClient-DEyqR7GW.js.map → authClient-D7W9vWPR.js.map} +1 -1
- package/dist/{authClient-DwT6xdg5.d.ts → authClient-D8i3JTM-.d.ts} +4 -4
- package/dist/{authClient-IwQ9Ti0J.cjs → authClient-_PpvGgZJ.cjs} +5 -5
- package/dist/{authClient-IwQ9Ti0J.cjs.map → authClient-_PpvGgZJ.cjs.map} +1 -1
- package/dist/billing/index.cjs +46 -0
- package/dist/billing/index.cjs.map +1 -0
- package/dist/billing/index.d.cts +48 -0
- package/dist/billing/index.d.ts +48 -0
- package/dist/billing/index.js +45 -0
- package/dist/billing/index.js.map +1 -0
- package/dist/billing/types.cjs +0 -0
- package/dist/billing/types.d.cts +635 -0
- package/dist/billing/types.d.ts +635 -0
- package/dist/billing/types.js +1 -0
- package/dist/chat/index.cjs +3 -3
- package/dist/chat/index.d.cts +2 -2
- package/dist/chat/index.d.ts +2 -2
- package/dist/chat/index.js +3 -3
- package/dist/chat/types.cjs +18 -0
- 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 +18 -1
- package/dist/chat/types.js.map +1 -1
- package/dist/{configurations-d7SZmw69.js → configurations-BVvcimzo.js} +17 -2
- package/dist/configurations-BVvcimzo.js.map +1 -0
- package/dist/{configurations-CqwAxiQL.cjs → configurations-CyFF9Dtu.cjs} +22 -1
- package/dist/configurations-CyFF9Dtu.cjs.map +1 -0
- package/dist/{configurations-ZwBXilW-.js → configurations-VtNE0nrT.js} +2 -2
- package/dist/{configurations-ZwBXilW-.js.map → configurations-VtNE0nrT.js.map} +1 -1
- package/dist/{configurations-Ck-mNB_E.cjs → configurations-zkNjr73Q.cjs} +2 -2
- package/dist/{configurations-Ck-mNB_E.cjs.map → configurations-zkNjr73Q.cjs.map} +1 -1
- package/dist/constants/index.cjs +1 -1
- package/dist/constants/index.d.cts +1 -1
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/{constants-lIfSdTzS.cjs → constants-C4DlsF_M.cjs} +3 -2
- package/dist/constants-C4DlsF_M.cjs.map +1 -0
- package/dist/{constants-ByEwVtGf.js → constants-wfbFsqqN.js} +3 -2
- package/dist/constants-wfbFsqqN.js.map +1 -0
- package/dist/{createFetchClient-DvZvD31l.cjs → createFetchClient-DgMiqTJ8.cjs} +19 -4
- package/dist/createFetchClient-DgMiqTJ8.cjs.map +1 -0
- package/dist/{createFetchClient-DdyZMhxO.js → createFetchClient-U-ZrwPl2.js} +14 -5
- package/dist/{createFetchClient-DvZvD31l.cjs.map → createFetchClient-U-ZrwPl2.js.map} +1 -1
- package/dist/{createGenericFetchClient-qfCZlCTv.cjs → createGenericFetchClient-o3cPJeRn.cjs} +2 -2
- package/dist/{createGenericFetchClient-qfCZlCTv.cjs.map → createGenericFetchClient-o3cPJeRn.cjs.map} +1 -1
- package/dist/{createGenericFetchClient-MQeLRiNW.js → createGenericFetchClient-rxvUUbap.js} +2 -2
- package/dist/{createGenericFetchClient-MQeLRiNW.js.map → createGenericFetchClient-rxvUUbap.js.map} +1 -1
- package/dist/{createOpenapiFetchClient-E7OIVkYv.js → createOpenapiFetchClient-BVSc9ibR.js} +2 -2
- package/dist/{createOpenapiFetchClient-E7OIVkYv.js.map → createOpenapiFetchClient-BVSc9ibR.js.map} +1 -1
- package/dist/{createOpenapiFetchClient-C57Ljzi6.cjs → createOpenapiFetchClient-DhUU3M1W.cjs} +2 -2
- package/dist/{createOpenapiFetchClient-C57Ljzi6.cjs.map → createOpenapiFetchClient-DhUU3M1W.cjs.map} +1 -1
- package/dist/{credential-Bxv7yxOZ.js → credential-CihSf_xs.js} +2 -2
- package/dist/{credential-Bxv7yxOZ.js.map → credential-CihSf_xs.js.map} +1 -1
- package/dist/{credential-D-X5QQrM.cjs → credential-DVWvJFJs.cjs} +2 -2
- package/dist/{credential-D-X5QQrM.cjs.map → credential-DVWvJFJs.cjs.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-BPW993AG.cjs → dataScience-0Rl_EuV_.cjs} +5 -5
- package/dist/{dataScience-BPW993AG.cjs.map → dataScience-0Rl_EuV_.cjs.map} +1 -1
- package/dist/{dataScience-B_TA7wCB.js → dataScience-C1gO5zUn.js} +5 -5
- package/dist/{dataScience-B_TA7wCB.js.map → dataScience-C1gO5zUn.js.map} +1 -1
- package/dist/developerPortal/index.cjs +1 -1
- package/dist/developerPortal/index.d.cts +2 -2
- package/dist/developerPortal/index.d.ts +2 -2
- package/dist/developerPortal/index.js +1 -1
- package/dist/developerPortal/types.d.cts +1 -1
- package/dist/developerPortal/types.d.ts +1 -1
- package/dist/{developerPortalClient-jk46sjwP.js → developerPortalClient-C_48z8BN.js} +3 -3
- package/dist/{developerPortalClient-jk46sjwP.js.map → developerPortalClient-C_48z8BN.js.map} +1 -1
- package/dist/{developerPortalClient-Db2XVB_o.cjs → developerPortalClient-ki0XS_OD.cjs} +3 -3
- package/dist/{developerPortalClient-Db2XVB_o.cjs.map → developerPortalClient-ki0XS_OD.cjs.map} +1 -1
- package/dist/domain/permissions/index.cjs +2 -1
- package/dist/domain/permissions/index.d.cts +18 -3
- package/dist/domain/permissions/index.d.ts +18 -3
- package/dist/domain/permissions/index.js +2 -2
- package/dist/editor/index.cjs +2 -2
- package/dist/editor/index.d.cts +2 -2
- package/dist/editor/index.d.ts +2 -2
- package/dist/editor/index.js +2 -2
- package/dist/editor/types.d.cts +1 -1
- package/dist/editor/types.d.ts +1 -1
- package/dist/encryption/index.cjs +1 -1
- package/dist/encryption/index.d.cts +1 -1
- package/dist/encryption/index.d.ts +1 -1
- package/dist/encryption/index.js +1 -1
- package/dist/encryption/types.d.cts +1 -1
- package/dist/encryption/types.d.ts +1 -1
- package/dist/import/index.cjs +1 -1
- package/dist/import/index.d.cts +3 -3
- package/dist/import/index.d.ts +3 -3
- package/dist/import/index.js +1 -1
- package/dist/{import-DJilJ6tq.cjs → import-C83w7BKz.cjs} +3 -3
- package/dist/{import-DJilJ6tq.cjs.map → import-C83w7BKz.cjs.map} +1 -1
- package/dist/{import-2nqxQ9Rt.js → import-CROEK82b.js} +3 -3
- package/dist/{import-2nqxQ9Rt.js.map → import-CROEK82b.js.map} +1 -1
- package/dist/{index-DQef014j.d.ts → index-3LUk2rpD.d.ts} +4 -4
- package/dist/{index-BjKjp3Rf.d.ts → index-6Xe81qN3.d.ts} +5 -5
- package/dist/{index-DIVvL54G.d.cts → index-BLx14ZI4.d.cts} +104 -44
- package/dist/{index-CUXEFQ7i.d.cts → index-BgLnWTZU.d.cts} +6 -6
- package/dist/{index-C_cxKL1V.d.ts → index-BuegqrS1.d.ts} +3 -3
- package/dist/{index-bB6wvw1f.d.ts → index-C77vTm2K.d.ts} +4 -4
- package/dist/{index-qOK5FtAH.d.cts → index-CW3Pj7DY.d.cts} +4 -4
- package/dist/{index-B2OGaUap.d.ts → index-CqgtL2NU.d.ts} +6 -6
- package/dist/{index-C7gxKoDF.d.cts → index-D8rcUbnk.d.ts} +3 -3
- package/dist/{index-B0V1pJAa.d.ts → index-DFBFa3SS.d.ts} +104 -44
- package/dist/{index-CVqk63at.d.ts → index-DR4QqItd.d.cts} +3 -3
- package/dist/{index-DCN2lH0v.d.cts → index-DXSmFkol.d.cts} +4 -4
- package/dist/{index-CTd4YY8e.d.cts → index-Dodwl64k.d.cts} +69 -36
- package/dist/{index-t-a7kYnx.d.cts → index-DppA4k3b.d.cts} +5 -5
- package/dist/{index-DLYAvSWZ.d.cts → index-Dx52hNLP.d.cts} +3 -3
- package/dist/{index-exNi3I2Q.d.cts → index-GjcJTCbz.d.cts} +4 -4
- package/dist/{index-DhVFuQDv.d.cts → index-KuQ79Mnz.d.ts} +13 -3
- package/dist/{index-GNKwr7EQ.d.ts → index-P-iT5THa.d.ts} +69 -36
- package/dist/{index-DVhTNwvu.d.ts → index-V7XKUQm9.d.cts} +13 -3
- package/dist/{index-ChMtULt4.d.ts → index-pXN4LWUX.d.ts} +4 -4
- package/dist/index.cjs +77 -37
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.js +74 -35
- package/dist/index.js.map +1 -1
- package/dist/isLoginPageRedirect-B0EmRsHr.cjs +25 -0
- package/dist/isLoginPageRedirect-B0EmRsHr.cjs.map +1 -0
- package/dist/isLoginPageRedirect-BTTAedW-.js +20 -0
- package/dist/isLoginPageRedirect-BTTAedW-.js.map +1 -0
- package/dist/kaiAgent/index.cjs +1 -1
- package/dist/kaiAgent/index.d.cts +1 -1
- package/dist/kaiAgent/index.d.ts +1 -1
- package/dist/kaiAgent/index.js +1 -1
- package/dist/kaiAgent/types.d.cts +1 -1
- package/dist/kaiAgent/types.d.ts +1 -1
- package/dist/{kaiAgent-CYYn0QJW.js → kaiAgent-8LNzGhZc.js} +4 -4
- package/dist/{kaiAgent-CYYn0QJW.js.map → kaiAgent-8LNzGhZc.js.map} +1 -1
- package/dist/{kaiAgent-CMVub6Sc.cjs → kaiAgent-B_TaUPRt.cjs} +4 -4
- package/dist/{kaiAgent-CMVub6Sc.cjs.map → kaiAgent-B_TaUPRt.cjs.map} +1 -1
- package/dist/{kaiAgentClient-B2O0DF4d.d.ts → kaiAgentClient-BJj_2aqt.d.ts} +4 -3
- package/dist/{kaiAgentClient-iCFR2tRU.d.cts → kaiAgentClient-DhTaM3GC.d.cts} +4 -3
- package/dist/management/index.cjs +1 -1
- package/dist/management/index.d.cts +1 -1
- package/dist/management/index.d.ts +1 -1
- package/dist/management/index.js +1 -1
- package/dist/management/types.d.cts +2 -2
- package/dist/management/types.d.ts +2 -2
- package/dist/{management-DGfgKsaA.cjs → management-BoxlRNg2.cjs} +53 -10
- package/dist/management-BoxlRNg2.cjs.map +1 -0
- package/dist/{management-DNEKhR6a.js → management-Bp440RsV.js} +53 -10
- package/dist/management-Bp440RsV.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 +1 -1
- package/dist/metastore/types.d.ts +1 -1
- package/dist/{metastore-DksEte8P.cjs → metastore-BYYWTb3m.cjs} +4 -4
- package/dist/{metastore-DksEte8P.cjs.map → metastore-BYYWTb3m.cjs.map} +1 -1
- package/dist/{metastore-CjwktHvw.js → metastore-VCDRVhUT.js} +4 -4
- package/dist/{metastore-CjwktHvw.js.map → metastore-VCDRVhUT.js.map} +1 -1
- package/dist/microsoftGraph/index.cjs +2 -2
- package/dist/microsoftGraph/index.d.cts +2 -2
- package/dist/microsoftGraph/index.d.ts +2 -2
- package/dist/microsoftGraph/index.js +2 -2
- package/dist/microsoftGraph/types.d.cts +1 -1
- package/dist/microsoftGraph/types.d.ts +1 -1
- package/dist/notifications/index.cjs +3 -3
- package/dist/notifications/index.d.cts +2 -2
- package/dist/notifications/index.d.ts +2 -2
- package/dist/notifications/index.js +3 -3
- package/dist/notifications/types.d.cts +1 -1
- package/dist/notifications/types.d.ts +1 -1
- package/dist/oauth/index.cjs +1 -1
- package/dist/oauth/index.d.cts +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-Bg5zro5S.js → oauth--asfePw-.js} +5 -5
- package/dist/{oauth-Bg5zro5S.js.map → oauth--asfePw-.js.map} +1 -1
- package/dist/{oauth-DFsI1TE5.cjs → oauth-B8yqG6Sy.cjs} +5 -5
- package/dist/{oauth-DFsI1TE5.cjs.map → oauth-B8yqG6Sy.cjs.map} +1 -1
- package/dist/omnisearch/index.cjs +2 -2
- package/dist/omnisearch/index.d.cts +2 -2
- package/dist/omnisearch/index.d.ts +2 -2
- package/dist/omnisearch/index.js +2 -2
- package/dist/omnisearch/types.d.cts +1 -1
- package/dist/omnisearch/types.d.ts +1 -1
- package/dist/{project-Bh954iOA.d.ts → project-C2wvX0xZ.d.ts} +2 -2
- package/dist/{project-D25GH8zK.d.cts → project-hePfzUY0.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--t_W9PSJ.cjs → queryService-BVtjkXy1.cjs} +5 -5
- package/dist/{queryService--t_W9PSJ.cjs.map → queryService-BVtjkXy1.cjs.map} +1 -1
- package/dist/{queryService-DX6zeAs_.js → queryService-Ca65E5KH.js} +5 -5
- package/dist/{queryService-DX6zeAs_.js.map → queryService-Ca65E5KH.js.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-DrLUbk98.js → queue-DyotLFJi.js} +4 -4
- package/dist/{queue-DrLUbk98.js.map → queue-DyotLFJi.js.map} +1 -1
- package/dist/{queue-D1_TCe0z.cjs → queue-OJJUUqc2.cjs} +4 -4
- package/dist/{queue-D1_TCe0z.cjs.map → queue-OJJUUqc2.cjs.map} +1 -1
- package/dist/scheduler/index.cjs +3 -3
- package/dist/scheduler/index.d.cts +2 -2
- package/dist/scheduler/index.d.ts +2 -2
- package/dist/scheduler/index.js +3 -3
- package/dist/scheduler/types.d.cts +1 -1
- package/dist/scheduler/types.d.ts +1 -1
- package/dist/sdk/configurations/index.cjs +1 -1
- package/dist/sdk/configurations/index.d.cts +4 -4
- package/dist/sdk/configurations/index.d.ts +4 -4
- package/dist/sdk/configurations/index.js +1 -1
- package/dist/sdk/developerPortal/index.cjs +3 -3
- package/dist/sdk/developerPortal/index.d.cts +3 -3
- package/dist/sdk/developerPortal/index.d.ts +3 -3
- package/dist/sdk/developerPortal/index.js +3 -3
- package/dist/sdk/queryService/index.cjs +1 -1
- package/dist/sdk/queryService/index.d.cts +1 -1
- package/dist/sdk/queryService/index.d.ts +1 -1
- package/dist/sdk/queryService/index.js +1 -1
- package/dist/sdk/semanticLayer/index.cjs +21 -448
- package/dist/sdk/semanticLayer/index.d.cts +21 -2
- package/dist/sdk/semanticLayer/index.d.ts +21 -2
- package/dist/sdk/semanticLayer/index.js +2 -430
- package/dist/sdk/semanticLayer/types.d.cts +2 -2
- package/dist/sdk/semanticLayer/types.d.ts +2 -2
- package/dist/sdk/storage/index.d.cts +1 -1
- package/dist/sdk/storage/index.d.ts +1 -1
- package/dist/sdk/tag/index.d.cts +2 -2
- package/dist/sdk/tag/index.d.ts +2 -2
- package/dist/sdk/tag/types.d.cts +1 -1
- package/dist/sdk/tag/types.d.ts +1 -1
- package/dist/sdk/vault/index.d.cts +1 -1
- package/dist/sdk/vault/index.d.ts +1 -1
- package/dist/semanticLayer-CSqmtHRo.js +692 -0
- package/dist/semanticLayer-CSqmtHRo.js.map +1 -0
- package/dist/semanticLayer-E0Vilu8u.cjs +811 -0
- package/dist/semanticLayer-E0Vilu8u.cjs.map +1 -0
- package/dist/{serviceIds-fHLDwOg9.d.ts → serviceIds-DRcoTnSd.d.cts} +2 -1
- package/dist/{serviceIds-fHLDwOg9.d.cts → serviceIds-DRcoTnSd.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-DexWot8H.cjs → storage-BKm7cztt.cjs} +6 -6
- package/dist/{storage-DexWot8H.cjs.map → storage-BKm7cztt.cjs.map} +1 -1
- package/dist/{storage--cVaecFq.js → storage-LYwFQPNO.js} +6 -6
- package/dist/{storage--cVaecFq.js.map → storage-LYwFQPNO.js.map} +1 -1
- 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 +1 -1
- package/dist/syncActions/types.d.ts +1 -1
- package/dist/{syncActions-DQq_A9v6.cjs → syncActions-OEZdVffK.cjs} +6 -6
- package/dist/{syncActions-DQq_A9v6.cjs.map → syncActions-OEZdVffK.cjs.map} +1 -1
- package/dist/{syncActions-CkMHM-jB.js → syncActions-QeBhIVhG.js} +6 -6
- package/dist/{syncActions-CkMHM-jB.js.map → syncActions-QeBhIVhG.js.map} +1 -1
- package/dist/telemetry/index.cjs +38 -2
- package/dist/telemetry/index.cjs.map +1 -0
- package/dist/telemetry/index.d.cts +15 -8
- package/dist/telemetry/index.d.ts +15 -8
- package/dist/telemetry/index.js +37 -1
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/types.d.cts +2 -2
- package/dist/telemetry/types.d.ts +2 -2
- package/dist/{types-Be3Wgn1U.d.cts → types-3eUgOA7I.d.cts} +2 -2
- package/dist/{types-bY6K3y0O.d.cts → types-52irAt99.d.cts} +2 -2
- package/dist/{types-C2gzqtjf.d.ts → types-B2U9cFcx.d.ts} +2 -2
- package/dist/{types-C35GWNmq.d.ts → types-B3GOGUJ7.d.cts} +753 -45
- package/dist/{types-B42HhyB0.d.cts → types-BEe50G2r.d.cts} +2 -2
- package/dist/{types-6ThDkaJw.d.ts → types-BH5LLeJy.d.ts} +2 -2
- package/dist/{types-CxmV36rp.d.cts → types-BMeDOB_D.d.ts} +753 -45
- package/dist/{types-CPaluTW7.d.cts → types-BOqD3Hqy.d.cts} +3 -3
- package/dist/{types-CHCM9oNk.d.ts → types-BQsOHNI0.d.ts} +3 -3
- package/dist/{types-Cu-0LT4f.d.cts → types-BQvv4RaI.d.cts} +2 -2
- package/dist/{types-ZGAWRIBW.d.ts → types-BTWIPEiU.d.ts} +2 -2
- package/dist/{types-B4_MM5Wf.d.cts → types-BW2BXUB4.d.cts} +2 -2
- package/dist/{types-CSc8NQCY.d.ts → types-BrYkBQo4.d.ts} +2 -2
- package/dist/{types-D7Wgcp0u.d.ts → types-BsxLGDoC.d.cts} +2 -2
- package/dist/{types-CNQdtffE.d.ts → types-BupPADSm.d.ts} +10 -3
- package/dist/{types-B7O5koJb.d.cts → types-Bxhh2SJr.d.ts} +2 -2
- package/dist/{types-DAzmGzlb.d.ts → types-BztF4HeB.d.ts} +2 -2
- package/dist/{types-6ku2LeX6.d.ts → types-C0_2KZ-A.d.ts} +2 -2
- package/dist/{types-BUYqdN7B.d.ts → types-C2vefB4D.d.ts} +17 -4
- package/dist/{types-6hh_3SZs.d.ts → types-CBgLCkYe.d.ts} +3 -3
- package/dist/{types-C_ilZZkQ.d.ts → types-CKiW3n6v.d.ts} +2 -2
- package/dist/{types-sO52qIAA.d.cts → types-COL1kVEB.d.cts} +2 -2
- package/dist/types-CPB-eF82.d.ts +289 -0
- package/dist/{types-Ccgbipp4.d.cts → types-CW6lCqrC.d.cts} +2 -2
- package/dist/{types-BS5M67xm.d.cts → types-CaYtinmA.d.cts} +3 -3
- package/dist/{types-BHI8Lin9.d.ts → types-CcrvrAJX.d.ts} +2 -2
- package/dist/{types-D-98DirB.d.ts → types-Ct0YPy2w.d.ts} +2 -2
- package/dist/{types-Jt0ipbSm.d.cts → types-Cz83RiVu.d.cts} +2 -2
- package/dist/{types-B6JJCta-.d.cts → types-D8Rrz51O.d.cts} +2 -2
- package/dist/{types-3p0adMdd.d.cts → types-DARv_P6O.d.cts} +3 -3
- package/dist/{types-Cpjk0-ta.d.ts → types-DBOSvWtD.d.ts} +2 -2
- package/dist/{types-C4mr0lop.d.ts → types-DEc55spK.d.ts} +13 -4
- package/dist/{types-DqniGeDJ.d.cts → types-DNxOHnZI.d.cts} +2 -2
- package/dist/{types-CrH4H8M4.d.cts → types-DPS8nwkV.d.cts} +2 -2
- package/dist/{types-DTTC70Ac.d.ts → types-DYzJ6K2e.d.ts} +2 -2
- package/dist/{types-CCr1-9Q6.d.cts → types-DZk3XHiN.d.cts} +3 -3
- package/dist/{types-DHqIJKwx.d.ts → types-DajzGOKB.d.ts} +2 -2
- package/dist/{types-DlvZeert.d.ts → types-DfvdbRPL.d.ts} +2 -2
- package/dist/{types-k4R8gQ4U.d.ts → types-DhDNS-5B.d.ts} +21 -3
- package/dist/{types-D6ocCyGh.d.cts → types-DjrRmQUe.d.cts} +13 -4
- package/dist/{types-B6lOyHY_.d.ts → types-Dmu-8g4O.d.ts} +3 -3
- package/dist/{types-BT46XIgn.d.cts → types-DqxIx9Pi.d.cts} +2 -2
- package/dist/{types-BO3sCD0a.d.cts → types-Jw10xuOW.d.cts} +2 -2
- package/dist/{types-sp1rJY9E.d.cts → types-M46WuBSm.d.cts} +2 -2
- package/dist/{types-BOnf68s5.d.cts → types-N3EChotg.d.cts} +2 -2
- package/dist/{types-Ur37iOqb.d.ts → types-OaD-cbbl.d.ts} +3 -3
- package/dist/{types-DHI0g51U.d.cts → types-_RhBCj4_.d.cts} +2 -2
- package/dist/{types-0xa_7cgo.d.cts → types-bGQb4Jtl.d.cts} +21 -3
- package/dist/{types-E3VT-zYz.d.cts → types-f8W_j6qD.d.cts} +10 -3
- package/dist/{types-DONxb2-c.d.cts → types-fX4gbxfV.d.cts} +17 -4
- package/dist/types-g3vU7hcg.d.cts +289 -0
- package/dist/{types-BYKHr5bR.d.ts → types-l9o4gFsI.d.ts} +2 -2
- package/dist/{types-CaMfshWX.d.ts → types-nrviNdzZ.d.ts} +2 -2
- package/dist/{types-BgVKG4vg.d.ts → types-zZBxJ0P-.d.ts} +2 -2
- package/dist/{validateConnectionStatus-24zqIQ0p.cjs → validateConnectionStatus-CsvYmCOI.cjs} +5 -4
- package/dist/validateConnectionStatus-CsvYmCOI.cjs.map +1 -0
- package/dist/{validateConnectionStatus-DhkWg6Eq.js → validateConnectionStatus-olE2sQ3U.js} +5 -4
- package/dist/{validateConnectionStatus-DhkWg6Eq.js.map → validateConnectionStatus-olE2sQ3U.js.map} +1 -1
- 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 +31 -5
- package/surface/billing.md +9 -0
- package/surface/kaiAgent.md +2 -2
- package/surface/management.md +13 -3
- package/surface/telemetry.md +2 -4
- package/dist/ValidationError-CzPWydEb.js.map +0 -1
- package/dist/ValidationError-h5qvwahi.cjs.map +0 -1
- package/dist/configurations-CqwAxiQL.cjs.map +0 -1
- package/dist/configurations-d7SZmw69.js.map +0 -1
- package/dist/constants-ByEwVtGf.js.map +0 -1
- package/dist/constants-lIfSdTzS.cjs.map +0 -1
- package/dist/createFetchClient-DdyZMhxO.js.map +0 -1
- package/dist/management-DGfgKsaA.cjs.map +0 -1
- package/dist/management-DNEKhR6a.js.map +0 -1
- package/dist/sdk/semanticLayer/index.cjs.map +0 -1
- package/dist/sdk/semanticLayer/index.js.map +0 -1
- package/dist/telemetry-CAu1Qt7B.cjs +0 -29
- package/dist/telemetry-CAu1Qt7B.cjs.map +0 -1
- package/dist/telemetry-Ca6j0i9w.js +0 -24
- package/dist/telemetry-Ca6j0i9w.js.map +0 -1
- package/dist/types-lFsTSkhe.d.cts +0 -14
- package/dist/types-lFsTSkhe.d.ts +0 -14
- package/dist/validateConnectionStatus-24zqIQ0p.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["z","generateUUID","concurrent"],"sources":["../../../src/sdks/semanticLayer/errorMessage.ts","../../../src/sdks/semanticLayer/vocabulary.ts","../../../src/sdks/semanticLayer/schemas.ts","../../../src/sdks/semanticLayer/semanticLayerSdk.ts"],"sourcesContent":["/**\n * The message out of a metastore error body.\n *\n * - The metastore reports what is actually wrong with a write only inside `errors[].message`\n * (`missing property 'fqn'`). The HTTP status and the response's own message say no more than\n * \"Validation failed\", so a caller that renders those alone tells a user nothing actionable.\n * - Every shape that is not that envelope returns `undefined` rather than a placeholder, so the\n * caller keeps its own fallback (`?? error.message`) instead of rendering a stand-in for one.\n * - Only the first error: the metastore reports fields one at a time, so a list would be a list\n * of one.\n */\nexport const metastoreErrorMessage = (data: unknown): string | undefined => {\n if (typeof data !== 'object' || data === null) return undefined;\n const errors = (data as { errors?: unknown }).errors;\n if (!Array.isArray(errors)) return undefined;\n const first = errors[0];\n if (typeof first !== 'object' || first === null) return undefined;\n const message = (first as { message?: unknown }).message;\n return typeof message === 'string' && message ? message : undefined;\n};\n","/**\n * The closed value sets the metastore accepts inside a semantic object's `data`.\n *\n * - Each one is the single runtime source for a union in `./types`, which derives the type from\n * the array here. A value cannot exist in the type and be missing from the list a dropdown or\n * a validator is built from.\n * - The addressing vocabulary (`SEMANTIC_OBJECT_TYPE`, `MODEL_CHILD_OBJECT_TYPES`) is a\n * different axis — which object a call targets, not what may sit inside one — and stays beside\n * the SDK methods that take it.\n * - This file imports nothing: `./types` reads it, never the reverse.\n */\n\n/**\n * The dialects the metastore accepts, exactly as it spells them. A lowercase value is\n * rejected with `422 value must be one of 'Snowflake', 'BigQuery'`, which surfaces only as a\n * generic \"Validation failed\" — so callers need the real set rather than a bare `string`.\n *\n * `SemanticModelData.sql_dialect` stays `string` for now: narrowing it would break any caller\n * passing a `string` variable, which is a major bump. Validate against this instead.\n */\nexport const SQL_DIALECTS = ['Snowflake', 'BigQuery'] as const;\n\n/** The metastore's constraint kinds. */\nexport const CONSTRAINT_TYPES = [\n 'inequality',\n 'equality',\n 'range',\n 'composition',\n 'exclusion',\n 'temporal',\n 'conditional',\n] as const;\n\n/**\n * What a dataset field is for.\n *\n * - Enumerated, unlike a field's `type`: the metastore takes any type string, but only these\n * four roles.\n */\nexport const FIELD_ROLES = ['key', 'dimension', 'measure', 'timestamp'] as const;\n\n/**\n * How loudly a violated constraint reports.\n *\n * - An unset severity is stored as `warning`, so a reader renders that rather than nothing.\n */\nexport const CONSTRAINT_SEVERITIES = ['error', 'warning', 'info'] as const;\n\n/**\n * What a constraint's rule is evaluated per.\n *\n * - An unset scope is stored as `global`.\n */\nexport const CONSTRAINT_SCOPES = ['global', 'per_location', 'per_date', 'per_category'] as const;\n\n/** The comparisons a constraint's `ruleExpression` can make. */\nexport const RULE_OPERATORS = [\n '<',\n '<=',\n '=',\n '>=',\n '>',\n '!=',\n 'between',\n 'in',\n 'sum_equals',\n 'ratio_between',\n] as const;\n\n/** The join a relationship stands for. */\nexport const RELATIONSHIP_JOIN_TYPES = ['left', 'inner'] as const;\n","import { z } from 'zod';\n\nimport { CONSTRAINT_TYPES, SQL_DIALECTS } from './vocabulary';\n\n/**\n * Runtime validators for the semantic-layer payload shapes.\n *\n * These exist because the metastore's validation errors are opaque — a missing or misspelled\n * field surfaces only as a generic \"Validation failed\", and a wrong `sql_dialect` casing as a\n * 422 that names neither the field nor the accepted values. Parsing first turns those into a\n * message that says what is wrong.\n *\n * **Only the fields the SDK types mark as required are declared.** The metastore owns each\n * object type's full schema, so every schema is a `looseObject`: unknown fields pass through\n * untouched rather than being stripped or rejected. Re-declaring the optional fields here\n * would create a second source of truth that silently drops whatever the metastore adds next.\n *\n * The SDK does **not** parse on its own writes — these are for callers that accept untrusted\n * or hand-authored input (an agent's tool call, a form submission) and want to fail early.\n * `modelUUID` is omitted throughout: the SDK injects it, so callers never supply it.\n */\n\nexport const semanticModelSchema = z.looseObject({\n name: z.string().min(1),\n sql_dialect: z.enum(SQL_DIALECTS),\n});\n\nexport const semanticDatasetSchema = z.looseObject({\n name: z.string().min(1),\n tableId: z.string().min(1),\n fqn: z.string().min(1),\n});\n\nexport const semanticMetricSchema = z.looseObject({\n name: z.string().min(1),\n sql: z.string().min(1),\n});\n\nexport const semanticRelationshipSchema = z.looseObject({\n from: z.string().min(1),\n to: z.string().min(1),\n on: z.string().min(1),\n});\n\nexport const semanticGlossarySchema = z.looseObject({\n term: z.string().min(1),\n definition: z.string().min(1),\n});\n\nexport const semanticConstraintSchema = z.looseObject({\n name: z.string().min(1),\n constraintType: z.enum(CONSTRAINT_TYPES),\n metrics: z.array(z.string()),\n rule: z.string().min(1),\n});\n\n/** Keyed by object type so a caller can pick the schema from a `SemanticChildObjectType`. */\nexport const SEMANTIC_CHILD_OBJECT_SCHEMAS = {\n 'semantic-dataset': semanticDatasetSchema,\n 'semantic-metric': semanticMetricSchema,\n 'semantic-relationship': semanticRelationshipSchema,\n 'semantic-glossary': semanticGlossarySchema,\n 'semantic-constraint': semanticConstraintSchema,\n} as const;\n","import { concurrent, generateUUID } from '../../utils';\n\nimport type {\n CreateSemanticObjectMeta,\n MetastoreClient,\n SemanticChildObjectDataMap,\n SemanticChildObjectType,\n SemanticModelChildDeleteFailure,\n SemanticModelChildRef,\n SemanticModelData,\n SemanticObject,\n SemanticObjectMeta,\n SemanticObjectType,\n UpdateSemanticObjectMeta,\n} from './types';\n\n/**\n * Thrown by `deleteModel` when the child cascade partially fails. Every child delete has\n * settled by the time this is thrown — nothing keeps deleting in the background — and the\n * model itself was kept, so the exact remaining state is knowable: `deletedChildren` are gone,\n * `failedChildren` (and the model) still exist. `errors` carries the per-child rejection\n * reasons, AggregateError-style.\n */\nexport class SemanticLayerCascadeDeleteError extends AggregateError {\n readonly modelUUID: string;\n readonly deletedChildren: SemanticModelChildRef[];\n readonly failedChildren: SemanticModelChildDeleteFailure[];\n\n constructor({\n modelUUID,\n deletedChildren,\n failedChildren,\n }: {\n modelUUID: string;\n deletedChildren: SemanticModelChildRef[];\n failedChildren: SemanticModelChildDeleteFailure[];\n }) {\n const total = deletedChildren.length + failedChildren.length;\n super(\n failedChildren.map((failure) => failure.error),\n `The model was kept because ${failedChildren.length} of its ${total} child objects ` +\n `could not be deleted (${deletedChildren.length} deleted).`,\n );\n this.name = 'SemanticLayerCascadeDeleteError';\n this.modelUUID = modelUUID;\n this.deletedChildren = deletedChildren;\n this.failedChildren = failedChildren;\n }\n}\n\nexport const SEMANTIC_OBJECT_TYPE = {\n MODEL: 'semantic-model',\n DATASET: 'semantic-dataset',\n METRIC: 'semantic-metric',\n RELATIONSHIP: 'semantic-relationship',\n GLOSSARY: 'semantic-glossary',\n CONSTRAINT: 'semantic-constraint',\n} as const satisfies Record<string, SemanticObjectType>;\n\n/**\n * `readonly` because this drives `createModelTree`, `listModelChildren` and `deleteModel` —\n * a consumer-side `.push()` would silently change what a cascade delete touches.\n */\nexport const MODEL_CHILD_OBJECT_TYPES: readonly SemanticChildObjectType[] = [\n SEMANTIC_OBJECT_TYPE.DATASET,\n SEMANTIC_OBJECT_TYPE.METRIC,\n SEMANTIC_OBJECT_TYPE.RELATIONSHIP,\n SEMANTIC_OBJECT_TYPE.GLOSSARY,\n SEMANTIC_OBJECT_TYPE.CONSTRAINT,\n] as const;\n\nconst DEFAULT_BRANCH = 'main';\n\n// The metastore has no bulk endpoint; large semantic-layer inits are written as\n// concurrent single POSTs (the same approach the ai-kit sl-toolkit importer uses).\nconst WRITE_CONCURRENCY = 5;\n\n// The live metastore envelope: `attributes` carries the object's data payload directly,\n// the UUID is the top-level `id`, and revision/branch/audit fields live in `meta`. The\n// legacy wrapper types in clients/metastore/repository/types.ts do not match this shape.\ntype RawSemanticObject<TData> = {\n type: string;\n id: string;\n attributes: TData;\n meta: SemanticObjectMeta;\n};\n\nconst mapObject = <TData>(item: RawSemanticObject<TData>): SemanticObject<TData> => ({\n uuid: item.id,\n data: item.attributes,\n meta: item.meta,\n});\n\nconst deriveOptionalObjectName = (data: Record<string, unknown>): string | undefined => {\n if (typeof data.name === 'string') return data.name;\n if (typeof data.term === 'string') return data.term;\n return undefined;\n};\n\nconst deriveObjectName = (data: Record<string, unknown>) =>\n deriveOptionalObjectName(data) ?? generateUUID();\n\n/**\n * The label a UI shows for an object, as opposed to the identifier it is addressed by.\n *\n * Constraints carry an optional `displayName`; kbc-ui's constraint tables already render\n * `displayName ?? name`, so a confirmation listing what a cascade delete would destroy has to\n * agree with them or it names objects the user can't find on screen.\n *\n * Deliberately **not** used for lookup: `displayName` is optional and not unique, so matching on\n * it would make `findObjectsByName` ambiguous for callers that resolve a write target by name.\n */\nconst deriveObjectLabel = (data: Record<string, unknown>): string | undefined => {\n if (typeof data.displayName === 'string' && data.displayName !== '') return data.displayName;\n return deriveOptionalObjectName(data);\n};\n\ntype Options = {\n metastoreClient: MetastoreClient;\n};\n\nexport const createSemanticLayerSdk = ({ metastoreClient }: Options) => {\n const _listObjects = async <TData extends Record<string, unknown>>(\n objectType: SemanticObjectType,\n signal?: AbortSignal,\n ) => {\n const response = await metastoreClient.repository.getMetaObjects<TData>({ objectType }, signal);\n return (response.data as unknown as RawSemanticObject<TData>[]).map(mapObject);\n };\n\n const listModels = async (signal?: AbortSignal) =>\n _listObjects<SemanticModelData>(SEMANTIC_OBJECT_TYPE.MODEL, signal);\n\n const createModel = async (data: SemanticModelData, meta: CreateSemanticObjectMeta = {}) => {\n const response = await metastoreClient.repository.createMetaObject<SemanticModelData>({\n objectType: SEMANTIC_OBJECT_TYPE.MODEL,\n data,\n branch: DEFAULT_BRANCH,\n ...meta,\n // Derived name wins over meta so the metastore name stays in sync with the payload.\n name: data.name,\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticModelData>);\n };\n\n const updateModel = async (\n modelUUID: string,\n data: Partial<SemanticModelData>,\n meta: UpdateSemanticObjectMeta = {},\n ) => {\n const response = await metastoreClient.repository.updateMetaObject<SemanticModelData>({\n objectType: SEMANTIC_OBJECT_TYPE.MODEL,\n UUID: modelUUID,\n data,\n ...meta,\n // Derived rename wins over meta so the metastore name stays in sync with the payload.\n ...(data.name ? { name: data.name } : {}),\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticModelData>);\n };\n\n const listObjects = async <T extends SemanticChildObjectType>(\n objectType: T,\n modelUUID: string,\n signal?: AbortSignal,\n ) => {\n const objects = await _listObjects<SemanticChildObjectDataMap[T]>(objectType, signal);\n return objects.filter((object) => object.data.modelUUID === modelUUID);\n };\n\n /**\n * Find a model's child objects by their user-facing name.\n *\n * Returns every match rather than resolving to one, because a name is not unique: the caller\n * decides whether that's an error (an agent needs an unambiguous target) or a choice to offer\n * (a UI can render a picker). Glossary entries key on `term`, so both are matched.\n */\n const findObjectsByName = async <T extends SemanticChildObjectType>(\n objectType: T,\n name: string,\n modelUUID: string,\n signal?: AbortSignal,\n ) => {\n const objects = await listObjects(objectType, modelUUID, signal);\n return objects.filter((object) => deriveOptionalObjectName(object.data) === name);\n };\n\n const createObject = async <T extends SemanticChildObjectType>(\n objectType: T,\n data: SemanticChildObjectDataMap[T],\n meta: CreateSemanticObjectMeta = {},\n ) => {\n const response = await metastoreClient.repository.createMetaObject<\n SemanticChildObjectDataMap[T]\n >({\n objectType,\n data,\n branch: DEFAULT_BRANCH,\n ...meta,\n // Derived name wins over meta so the metastore name stays in sync with the payload.\n name: deriveObjectName(data),\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticChildObjectDataMap[T]>);\n };\n\n const createObjects = async <T extends SemanticChildObjectType>(\n objectType: T,\n items: SemanticChildObjectDataMap[T][],\n meta: CreateSemanticObjectMeta = {},\n ) =>\n concurrent({\n items,\n process: async (data) => createObject(objectType, data, meta),\n concurrency: WRITE_CONCURRENCY,\n });\n\n // Create a model and all its child objects in one call: the model first (so its\n // UUID exists), then every child concurrently with the modelUUID injected.\n const createModelTree = async (\n model: SemanticModelData,\n children: Partial<{\n [T in SemanticChildObjectType]: Omit<SemanticChildObjectDataMap[T], 'modelUUID'>[];\n }>,\n meta: CreateSemanticObjectMeta = {},\n ) => {\n const createdModel = await createModel(model, meta);\n\n const items = MODEL_CHILD_OBJECT_TYPES.flatMap((objectType) =>\n (children[objectType] ?? []).map((data) => ({\n objectType,\n data: {\n ...data,\n modelUUID: createdModel.uuid,\n } satisfies SemanticChildObjectDataMap[typeof objectType],\n })),\n );\n\n const createdChildren = await concurrent({\n items,\n process: async ({ objectType, data }) => createObject(objectType, data, meta),\n concurrency: WRITE_CONCURRENCY,\n });\n\n return { model: createdModel, children: createdChildren };\n };\n\n const updateObject = async <T extends SemanticChildObjectType>(\n objectType: T,\n objectUUID: string,\n data: Partial<SemanticChildObjectDataMap[T]>,\n meta: UpdateSemanticObjectMeta = {},\n ) => {\n const name = deriveOptionalObjectName(data);\n const response = await metastoreClient.repository.updateMetaObject<\n SemanticChildObjectDataMap[T]\n >({\n objectType,\n UUID: objectUUID,\n data,\n ...meta,\n // Derived rename wins over meta so the metastore name stays in sync with the payload.\n ...(name ? { name } : {}),\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticChildObjectDataMap[T]>);\n };\n\n const deleteObject = async (objectType: SemanticChildObjectType, objectUUID: string) => {\n await metastoreClient.repository.deleteMetaObject({\n objectType,\n UUID: objectUUID,\n });\n };\n\n /**\n * Every child object of a model, across all five types, flattened.\n *\n * `deleteModel` uses this to find what to remove; callers can use it to say what a delete\n * would destroy *before* asking the user to confirm. Each entry's `name` is the object's\n * display label (a constraint's `displayName` in preference to its `name`, matching what the\n * SL tables render), so a confirmation lists objects as the user sees them on screen.\n *\n * Costs five list requests: the metastore has no per-model filter, so `listObjects`\n * fetches each collection and filters client-side.\n */\n const listModelChildren = async (\n modelUUID: string,\n signal?: AbortSignal,\n ): Promise<SemanticModelChildRef[]> => {\n const childrenByType = await Promise.all(\n MODEL_CHILD_OBJECT_TYPES.map(async (objectType) => {\n const objects = await listObjects(objectType, modelUUID, signal);\n return objects.map((object) => ({\n objectType,\n objectUUID: object.uuid,\n name: deriveObjectLabel(object.data),\n }));\n }),\n );\n\n return childrenByType.flat();\n };\n\n /**\n * Cascade delete: every child object first, the model itself only once its whole tree is\n * gone. Child deletes all settle — a failing child never aborts the others, so no delete\n * runs on detached after this rejects — and a partial failure surfaces as\n * `SemanticLayerCascadeDeleteError`, which says exactly which children were deleted and\n * which survived. The model is kept on any child failure so it never orphans children.\n */\n const deleteModel = async (modelUUID: string) => {\n const children = await listModelChildren(modelUUID);\n\n const outcomes = await concurrent({\n items: children,\n process: async (child) => {\n try {\n await deleteObject(child.objectType, child.objectUUID);\n return { ok: true as const, child };\n } catch (error) {\n return { ok: false as const, child, error };\n }\n },\n concurrency: WRITE_CONCURRENCY,\n });\n\n const deletedChildren: SemanticModelChildRef[] = [];\n const failedChildren: SemanticModelChildDeleteFailure[] = [];\n for (const outcome of outcomes) {\n if (outcome.ok) deletedChildren.push(outcome.child);\n else failedChildren.push({ ...outcome.child, error: outcome.error });\n }\n\n if (failedChildren.length > 0) {\n throw new SemanticLayerCascadeDeleteError({ modelUUID, deletedChildren, failedChildren });\n }\n\n await metastoreClient.repository.deleteMetaObject({\n objectType: SEMANTIC_OBJECT_TYPE.MODEL,\n UUID: modelUUID,\n });\n };\n\n /**\n * Replace the sibling projects granted GET/consumption access to a `targeted`-scope object.\n *\n * Passing an empty array clears every grant, leaving the object visible to its owning project\n * only. A grant conveys read access alone — the target projects can consume the definition but\n * never edit it, which is enforced metastore-side rather than here.\n */\n const replaceTargetProjects = async (\n objectType: SemanticObjectType,\n objectUUID: string,\n targetProjectIds: number[],\n ) => {\n await metastoreClient.repository.replaceTargetProjects({\n objectType,\n UUID: objectUUID,\n targetProjectIds,\n });\n };\n\n /**\n * Step a project-scoped object up to the organization scope, in place.\n *\n * The object keeps its UUID and revision history; the step-up writes a new revision whose\n * `project_id` is null. Requires the caller to hold the organization-admin role for the target\n * organization — a project-admin gets 403 from the metastore, which callers should surface\n * rather than pre-empt (the same person is often both).\n */\n const promoteToOrganizationScope = async (objectType: SemanticObjectType, objectUUID: string) => {\n // Scope ONLY. No `data`, not even `{}`: the metastore's step-up guard rejects a PATCH that\n // also carries name or data, and `Data *JSONData` treats `{}` as present — which 400s with\n // \"A scope change cannot be combined with name or data changes\".\n const response = await metastoreClient.repository.updateMetaObject({\n objectType,\n UUID: objectUUID,\n scope: 'organization',\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<Record<string, unknown>>);\n };\n\n return {\n // models\n listModels,\n createModel,\n updateModel,\n deleteModel,\n listModelChildren,\n\n // child objects (datasets, metrics, relationships, glossary, constraints)\n listObjects,\n findObjectsByName,\n createObject,\n createObjects,\n createModelTree,\n updateObject,\n deleteObject,\n\n // scoping / sharing\n replaceTargetProjects,\n promoteToOrganizationScope,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/sdks/semanticLayer/errorMessage.ts","../../../src/sdks/semanticLayer/vocabulary.ts","../../../src/sdks/semanticLayer/schemas.ts","../../../src/sdks/semanticLayer/semanticLayerSdk.ts"],"sourcesContent":["/**\n * The message out of a metastore error body.\n *\n * - The metastore reports what is actually wrong with a write only inside `errors[].message`\n * (`missing property 'fqn'`). The HTTP status and the response's own message say no more than\n * \"Validation failed\", so a caller that renders those alone tells a user nothing actionable.\n * - Every shape that is not that envelope returns `undefined` rather than a placeholder, so the\n * caller keeps its own fallback (`?? error.message`) instead of rendering a stand-in for one.\n * - Only the first error: the metastore reports fields one at a time, so a list would be a list\n * of one.\n */\nexport const metastoreErrorMessage = (data: unknown): string | undefined => {\n if (typeof data !== 'object' || data === null) return undefined;\n const errors = (data as { errors?: unknown }).errors;\n if (!Array.isArray(errors)) return undefined;\n const first = errors[0];\n if (typeof first !== 'object' || first === null) return undefined;\n const message = (first as { message?: unknown }).message;\n return typeof message === 'string' && message ? message : undefined;\n};\n","/**\n * The closed value sets the metastore accepts inside a semantic object's `data`.\n *\n * - Each one is the single runtime source for a union in `./types`, which derives the type from\n * the array here. A value cannot exist in the type and be missing from the list a dropdown or\n * a validator is built from.\n * - The addressing vocabulary (`SEMANTIC_OBJECT_TYPE`, `MODEL_CHILD_OBJECT_TYPES`) is a\n * different axis — which object a call targets, not what may sit inside one — and stays beside\n * the SDK methods that take it.\n * - This file imports nothing: `./types` reads it, never the reverse.\n */\n\n/**\n * The dialects the metastore accepts, exactly as it spells them. A lowercase value is\n * rejected with `422 value must be one of 'Snowflake', 'BigQuery'`, which surfaces only as a\n * generic \"Validation failed\" — so callers need the real set rather than a bare `string`.\n *\n * `SemanticModelData.sql_dialect` stays `string` for now: narrowing it would break any caller\n * passing a `string` variable, which is a major bump. Validate against this instead.\n */\nexport const SQL_DIALECTS = ['Snowflake', 'BigQuery'] as const;\n\n/** The metastore's constraint kinds. */\nexport const CONSTRAINT_TYPES = [\n 'inequality',\n 'equality',\n 'range',\n 'composition',\n 'exclusion',\n 'temporal',\n 'conditional',\n] as const;\n\n/**\n * What a dataset field is for.\n *\n * - Enumerated, unlike a field's `type`: the metastore takes any type string, but only these\n * four roles.\n */\nexport const FIELD_ROLES = ['key', 'dimension', 'measure', 'timestamp'] as const;\n\n/**\n * How loudly a violated constraint reports.\n *\n * - An unset severity is stored as `warning`, so a reader renders that rather than nothing.\n */\nexport const CONSTRAINT_SEVERITIES = ['error', 'warning', 'info'] as const;\n\n/**\n * What a constraint's rule is evaluated per.\n *\n * - An unset scope is stored as `global`.\n */\nexport const CONSTRAINT_SCOPES = ['global', 'per_location', 'per_date', 'per_category'] as const;\n\n/** The comparisons a constraint's `ruleExpression` can make. */\nexport const RULE_OPERATORS = [\n '<',\n '<=',\n '=',\n '>=',\n '>',\n '!=',\n 'between',\n 'in',\n 'sum_equals',\n 'ratio_between',\n] as const;\n\n/** The join a relationship stands for. */\nexport const RELATIONSHIP_JOIN_TYPES = ['left', 'inner'] as const;\n","import { z } from 'zod';\n\nimport { CONSTRAINT_TYPES, SQL_DIALECTS } from './vocabulary';\n\n/**\n * Runtime validators for the semantic-layer payload shapes.\n *\n * These exist because the metastore's validation errors are opaque — a missing or misspelled\n * field surfaces only as a generic \"Validation failed\", and a wrong `sql_dialect` casing as a\n * 422 that names neither the field nor the accepted values. Parsing first turns those into a\n * message that says what is wrong.\n *\n * **Only the fields the SDK types mark as required are declared.** The metastore owns each\n * object type's full schema, so every schema is a `looseObject`: unknown fields pass through\n * untouched rather than being stripped or rejected. Re-declaring the optional fields here\n * would create a second source of truth that silently drops whatever the metastore adds next.\n *\n * The SDK does **not** parse on its own writes — these are for callers that accept untrusted\n * or hand-authored input (an agent's tool call, a form submission) and want to fail early.\n * `modelUUID` is omitted throughout: the SDK injects it, so callers never supply it.\n */\n\nexport const semanticModelSchema = z.looseObject({\n name: z.string().min(1),\n sql_dialect: z.enum(SQL_DIALECTS),\n});\n\nexport const semanticDatasetSchema = z.looseObject({\n name: z.string().min(1),\n tableId: z.string().min(1),\n fqn: z.string().min(1),\n});\n\nexport const semanticMetricSchema = z.looseObject({\n name: z.string().min(1),\n sql: z.string().min(1),\n});\n\nexport const semanticRelationshipSchema = z.looseObject({\n from: z.string().min(1),\n to: z.string().min(1),\n on: z.string().min(1),\n});\n\nexport const semanticGlossarySchema = z.looseObject({\n term: z.string().min(1),\n definition: z.string().min(1),\n});\n\nexport const semanticConstraintSchema = z.looseObject({\n name: z.string().min(1),\n constraintType: z.enum(CONSTRAINT_TYPES),\n metrics: z.array(z.string()),\n rule: z.string().min(1),\n});\n\n/** Keyed by object type so a caller can pick the schema from a `SemanticChildObjectType`. */\nexport const SEMANTIC_CHILD_OBJECT_SCHEMAS = {\n 'semantic-dataset': semanticDatasetSchema,\n 'semantic-metric': semanticMetricSchema,\n 'semantic-relationship': semanticRelationshipSchema,\n 'semantic-glossary': semanticGlossarySchema,\n 'semantic-constraint': semanticConstraintSchema,\n} as const;\n","import { concurrent, generateUUID } from '../../utils';\n\nimport type {\n CreateSemanticObjectMeta,\n MetastoreClient,\n SemanticChildObjectDataMap,\n SemanticChildObjectType,\n SemanticModelChildDeleteFailure,\n SemanticModelChildRef,\n SemanticModelData,\n SemanticObject,\n SemanticObjectMeta,\n SemanticObjectType,\n UpdateSemanticObjectMeta,\n} from './types';\n\n/**\n * Thrown by `deleteModel` when the child cascade partially fails. Every child delete has\n * settled by the time this is thrown — nothing keeps deleting in the background — and the\n * model itself was kept, so the exact remaining state is knowable: `deletedChildren` are gone,\n * `failedChildren` (and the model) still exist. `errors` carries the per-child rejection\n * reasons, AggregateError-style.\n */\nexport class SemanticLayerCascadeDeleteError extends AggregateError {\n readonly modelUUID: string;\n readonly deletedChildren: SemanticModelChildRef[];\n readonly failedChildren: SemanticModelChildDeleteFailure[];\n\n constructor({\n modelUUID,\n deletedChildren,\n failedChildren,\n }: {\n modelUUID: string;\n deletedChildren: SemanticModelChildRef[];\n failedChildren: SemanticModelChildDeleteFailure[];\n }) {\n const total = deletedChildren.length + failedChildren.length;\n super(\n failedChildren.map((failure) => failure.error),\n `The model was kept because ${failedChildren.length} of its ${total} child objects ` +\n `could not be deleted (${deletedChildren.length} deleted).`,\n );\n this.name = 'SemanticLayerCascadeDeleteError';\n this.modelUUID = modelUUID;\n this.deletedChildren = deletedChildren;\n this.failedChildren = failedChildren;\n }\n}\n\nexport const SEMANTIC_OBJECT_TYPE = {\n MODEL: 'semantic-model',\n DATASET: 'semantic-dataset',\n METRIC: 'semantic-metric',\n RELATIONSHIP: 'semantic-relationship',\n GLOSSARY: 'semantic-glossary',\n CONSTRAINT: 'semantic-constraint',\n} as const satisfies Record<string, SemanticObjectType>;\n\n/**\n * `readonly` because this drives `createModelTree`, `listModelChildren` and `deleteModel` —\n * a consumer-side `.push()` would silently change what a cascade delete touches.\n */\nexport const MODEL_CHILD_OBJECT_TYPES: readonly SemanticChildObjectType[] = [\n SEMANTIC_OBJECT_TYPE.DATASET,\n SEMANTIC_OBJECT_TYPE.METRIC,\n SEMANTIC_OBJECT_TYPE.RELATIONSHIP,\n SEMANTIC_OBJECT_TYPE.GLOSSARY,\n SEMANTIC_OBJECT_TYPE.CONSTRAINT,\n] as const;\n\nconst DEFAULT_BRANCH = 'main';\n\n// The metastore has no bulk endpoint; large semantic-layer inits are written as\n// concurrent single POSTs (the same approach the ai-kit sl-toolkit importer uses).\nconst WRITE_CONCURRENCY = 5;\n\n// The live metastore envelope: `attributes` carries the object's data payload directly,\n// the UUID is the top-level `id`, and revision/branch/audit fields live in `meta`. The\n// legacy wrapper types in clients/metastore/repository/types.ts do not match this shape.\ntype RawSemanticObject<TData> = {\n type: string;\n id: string;\n attributes: TData;\n meta: SemanticObjectMeta;\n};\n\nconst mapObject = <TData>(item: RawSemanticObject<TData>): SemanticObject<TData> => ({\n uuid: item.id,\n data: item.attributes,\n meta: item.meta,\n});\n\nconst deriveOptionalObjectName = (data: Record<string, unknown>): string | undefined => {\n if (typeof data.name === 'string') return data.name;\n if (typeof data.term === 'string') return data.term;\n return undefined;\n};\n\nconst deriveObjectName = (data: Record<string, unknown>) =>\n deriveOptionalObjectName(data) ?? generateUUID();\n\n/**\n * The label a UI shows for an object, as opposed to the identifier it is addressed by.\n *\n * Constraints carry an optional `displayName`; kbc-ui's constraint tables already render\n * `displayName ?? name`, so a confirmation listing what a cascade delete would destroy has to\n * agree with them or it names objects the user can't find on screen.\n *\n * Deliberately **not** used for lookup: `displayName` is optional and not unique, so matching on\n * it would make `findObjectsByName` ambiguous for callers that resolve a write target by name.\n */\nconst deriveObjectLabel = (data: Record<string, unknown>): string | undefined => {\n if (typeof data.displayName === 'string' && data.displayName !== '') return data.displayName;\n return deriveOptionalObjectName(data);\n};\n\ntype Options = {\n metastoreClient: MetastoreClient;\n};\n\nexport const createSemanticLayerSdk = ({ metastoreClient }: Options) => {\n const _listObjects = async <TData extends Record<string, unknown>>(\n objectType: SemanticObjectType,\n signal?: AbortSignal,\n ) => {\n const response = await metastoreClient.repository.getMetaObjects<TData>({ objectType }, signal);\n return (response.data as unknown as RawSemanticObject<TData>[]).map(mapObject);\n };\n\n const listModels = async (signal?: AbortSignal) =>\n _listObjects<SemanticModelData>(SEMANTIC_OBJECT_TYPE.MODEL, signal);\n\n const createModel = async (data: SemanticModelData, meta: CreateSemanticObjectMeta = {}) => {\n const response = await metastoreClient.repository.createMetaObject<SemanticModelData>({\n objectType: SEMANTIC_OBJECT_TYPE.MODEL,\n data,\n branch: DEFAULT_BRANCH,\n ...meta,\n // Derived name wins over meta so the metastore name stays in sync with the payload.\n name: data.name,\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticModelData>);\n };\n\n const updateModel = async (\n modelUUID: string,\n data: Partial<SemanticModelData>,\n meta: UpdateSemanticObjectMeta = {},\n ) => {\n const response = await metastoreClient.repository.updateMetaObject<SemanticModelData>({\n objectType: SEMANTIC_OBJECT_TYPE.MODEL,\n UUID: modelUUID,\n data,\n ...meta,\n // Derived rename wins over meta so the metastore name stays in sync with the payload.\n ...(data.name ? { name: data.name } : {}),\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticModelData>);\n };\n\n const listObjects = async <T extends SemanticChildObjectType>(\n objectType: T,\n modelUUID: string,\n signal?: AbortSignal,\n ) => {\n const objects = await _listObjects<SemanticChildObjectDataMap[T]>(objectType, signal);\n return objects.filter((object) => object.data.modelUUID === modelUUID);\n };\n\n /**\n * Find a model's child objects by their user-facing name.\n *\n * Returns every match rather than resolving to one, because a name is not unique: the caller\n * decides whether that's an error (an agent needs an unambiguous target) or a choice to offer\n * (a UI can render a picker). Glossary entries key on `term`, so both are matched.\n */\n const findObjectsByName = async <T extends SemanticChildObjectType>(\n objectType: T,\n name: string,\n modelUUID: string,\n signal?: AbortSignal,\n ) => {\n const objects = await listObjects(objectType, modelUUID, signal);\n return objects.filter((object) => deriveOptionalObjectName(object.data) === name);\n };\n\n const createObject = async <T extends SemanticChildObjectType>(\n objectType: T,\n data: SemanticChildObjectDataMap[T],\n meta: CreateSemanticObjectMeta = {},\n ) => {\n const response = await metastoreClient.repository.createMetaObject<\n SemanticChildObjectDataMap[T]\n >({\n objectType,\n data,\n branch: DEFAULT_BRANCH,\n ...meta,\n // Derived name wins over meta so the metastore name stays in sync with the payload.\n name: deriveObjectName(data),\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticChildObjectDataMap[T]>);\n };\n\n const createObjects = async <T extends SemanticChildObjectType>(\n objectType: T,\n items: SemanticChildObjectDataMap[T][],\n meta: CreateSemanticObjectMeta = {},\n ) =>\n concurrent({\n items,\n process: async (data) => createObject(objectType, data, meta),\n concurrency: WRITE_CONCURRENCY,\n });\n\n // Create a model and all its child objects in one call: the model first (so its\n // UUID exists), then every child concurrently with the modelUUID injected.\n const createModelTree = async (\n model: SemanticModelData,\n children: Partial<{\n [T in SemanticChildObjectType]: Omit<SemanticChildObjectDataMap[T], 'modelUUID'>[];\n }>,\n meta: CreateSemanticObjectMeta = {},\n ) => {\n const createdModel = await createModel(model, meta);\n\n const items = MODEL_CHILD_OBJECT_TYPES.flatMap((objectType) =>\n (children[objectType] ?? []).map((data) => ({\n objectType,\n data: {\n ...data,\n modelUUID: createdModel.uuid,\n } satisfies SemanticChildObjectDataMap[typeof objectType],\n })),\n );\n\n const createdChildren = await concurrent({\n items,\n process: async ({ objectType, data }) => createObject(objectType, data, meta),\n concurrency: WRITE_CONCURRENCY,\n });\n\n return { model: createdModel, children: createdChildren };\n };\n\n const updateObject = async <T extends SemanticChildObjectType>(\n objectType: T,\n objectUUID: string,\n data: Partial<SemanticChildObjectDataMap[T]>,\n meta: UpdateSemanticObjectMeta = {},\n ) => {\n const name = deriveOptionalObjectName(data);\n const response = await metastoreClient.repository.updateMetaObject<\n SemanticChildObjectDataMap[T]\n >({\n objectType,\n UUID: objectUUID,\n data,\n ...meta,\n // Derived rename wins over meta so the metastore name stays in sync with the payload.\n ...(name ? { name } : {}),\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticChildObjectDataMap[T]>);\n };\n\n const deleteObject = async (objectType: SemanticChildObjectType, objectUUID: string) => {\n await metastoreClient.repository.deleteMetaObject({\n objectType,\n UUID: objectUUID,\n });\n };\n\n /**\n * Every child object of a model, across all five types, flattened.\n *\n * `deleteModel` uses this to find what to remove; callers can use it to say what a delete\n * would destroy *before* asking the user to confirm. Each entry's `name` is the object's\n * display label (a constraint's `displayName` in preference to its `name`, matching what the\n * SL tables render), so a confirmation lists objects as the user sees them on screen.\n *\n * Costs five list requests: the metastore has no per-model filter, so `listObjects`\n * fetches each collection and filters client-side.\n */\n const listModelChildren = async (\n modelUUID: string,\n signal?: AbortSignal,\n ): Promise<SemanticModelChildRef[]> => {\n const childrenByType = await Promise.all(\n MODEL_CHILD_OBJECT_TYPES.map(async (objectType) => {\n const objects = await listObjects(objectType, modelUUID, signal);\n return objects.map((object) => ({\n objectType,\n objectUUID: object.uuid,\n name: deriveObjectLabel(object.data),\n }));\n }),\n );\n\n return childrenByType.flat();\n };\n\n /**\n * Cascade delete: every child object first, the model itself only once its whole tree is\n * gone. Child deletes all settle — a failing child never aborts the others, so no delete\n * runs on detached after this rejects — and a partial failure surfaces as\n * `SemanticLayerCascadeDeleteError`, which says exactly which children were deleted and\n * which survived. The model is kept on any child failure so it never orphans children.\n */\n const deleteModel = async (modelUUID: string) => {\n const children = await listModelChildren(modelUUID);\n\n const outcomes = await concurrent({\n items: children,\n process: async (child) => {\n try {\n await deleteObject(child.objectType, child.objectUUID);\n return { ok: true as const, child };\n } catch (error) {\n return { ok: false as const, child, error };\n }\n },\n concurrency: WRITE_CONCURRENCY,\n });\n\n const deletedChildren: SemanticModelChildRef[] = [];\n const failedChildren: SemanticModelChildDeleteFailure[] = [];\n for (const outcome of outcomes) {\n if (outcome.ok) deletedChildren.push(outcome.child);\n else failedChildren.push({ ...outcome.child, error: outcome.error });\n }\n\n if (failedChildren.length > 0) {\n throw new SemanticLayerCascadeDeleteError({ modelUUID, deletedChildren, failedChildren });\n }\n\n await metastoreClient.repository.deleteMetaObject({\n objectType: SEMANTIC_OBJECT_TYPE.MODEL,\n UUID: modelUUID,\n });\n };\n\n /**\n * Replace the sibling projects granted GET/consumption access to a `targeted`-scope object.\n *\n * Passing an empty array clears every grant, leaving the object visible to its owning project\n * only. A grant conveys read access alone — the target projects can consume the definition but\n * never edit it, which is enforced metastore-side rather than here.\n */\n const replaceTargetProjects = async (\n objectType: SemanticObjectType,\n objectUUID: string,\n targetProjectIds: number[],\n ) => {\n await metastoreClient.repository.replaceTargetProjects({\n objectType,\n UUID: objectUUID,\n targetProjectIds,\n });\n };\n\n /**\n * Step a project-scoped object up to the organization scope, in place.\n *\n * The object keeps its UUID and revision history; the step-up writes a new revision whose\n * `project_id` is null. Requires the caller to hold the organization-admin role for the target\n * organization — a project-admin gets 403 from the metastore, which callers should surface\n * rather than pre-empt (the same person is often both).\n */\n const promoteToOrganizationScope = async (objectType: SemanticObjectType, objectUUID: string) => {\n // Scope ONLY. No `data`, not even `{}`: the metastore's step-up guard rejects a PATCH that\n // also carries name or data, and `Data *JSONData` treats `{}` as present — which 400s with\n // \"A scope change cannot be combined with name or data changes\".\n const response = await metastoreClient.repository.updateMetaObject({\n objectType,\n UUID: objectUUID,\n scope: 'organization',\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<Record<string, unknown>>);\n };\n\n return {\n // models\n listModels,\n createModel,\n updateModel,\n deleteModel,\n listModelChildren,\n\n // child objects (datasets, metrics, relationships, glossary, constraints)\n listObjects,\n findObjectsByName,\n createObject,\n createObjects,\n createModelTree,\n updateObject,\n deleteObject,\n\n // scoping / sharing\n replaceTargetProjects,\n promoteToOrganizationScope,\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;AAWA,MAAa,yBAAyB,SAAsC;CAC1E,IAAI,OAAO,SAAS,YAAY,SAAS,MAAM,OAAO,KAAA;CACtD,MAAM,SAAU,KAA8B;CAC9C,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG,OAAO,KAAA;CACnC,MAAM,QAAQ,OAAO;CACrB,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO,KAAA;CACxD,MAAM,UAAW,MAAgC;CACjD,OAAO,OAAO,YAAY,YAAY,UAAU,UAAU,KAAA;AAC5D;;;;;;;;;;;;;;;;;;;;;;ACCA,MAAa,eAAe,CAAC,aAAa,UAAU;;AAGpD,MAAa,mBAAmB;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;;;;;;AAQA,MAAa,cAAc;CAAC;CAAO;CAAa;CAAW;AAAW;;;;;;AAOtE,MAAa,wBAAwB;CAAC;CAAS;CAAW;AAAM;;;;;;AAOhE,MAAa,oBAAoB;CAAC;CAAU;CAAgB;CAAY;AAAc;;AAGtF,MAAa,iBAAiB;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;AAGA,MAAa,0BAA0B,CAAC,QAAQ,OAAO;;;;;;;;;;;;;;;;;;;;AChDvD,MAAa,sBAAsB,EAAE,YAAY;CAC/C,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACtB,aAAa,EAAE,KAAK,YAAY;AAClC,CAAC;AAED,MAAa,wBAAwB,EAAE,YAAY;CACjD,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACtB,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACzB,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAa,uBAAuB,EAAE,YAAY;CAChD,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACtB,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAa,6BAA6B,EAAE,YAAY;CACtD,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACtB,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACpB,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;AACtB,CAAC;AAED,MAAa,yBAAyB,EAAE,YAAY;CAClD,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACtB,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;AAC9B,CAAC;AAED,MAAa,2BAA2B,EAAE,YAAY;CACpD,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACtB,gBAAgB,EAAE,KAAK,gBAAgB;CACvC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;CAC3B,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;AACxB,CAAC;;AAGD,MAAa,gCAAgC;CAC3C,oBAAoB;CACpB,mBAAmB;CACnB,yBAAyB;CACzB,qBAAqB;CACrB,uBAAuB;AACzB;;;;;;;;;;ACxCA,IAAa,kCAAb,cAAqD,eAAe;CAClE;CACA;CACA;CAEA,YAAY,EACV,WACA,iBACA,kBAKC;EACD,MAAM,QAAQ,gBAAgB,SAAS,eAAe;EACtD,MACE,eAAe,KAAK,YAAY,QAAQ,KAAK,GAC7C,8BAA8B,eAAe,OAAO,UAAU,MAAM,uCACzC,gBAAgB,OAAO,WACpD;EACA,KAAK,OAAO;EACZ,KAAK,YAAY;EACjB,KAAK,kBAAkB;EACvB,KAAK,iBAAiB;CACxB;AACF;AAEA,MAAa,uBAAuB;CAClC,OAAO;CACP,SAAS;CACT,QAAQ;CACR,cAAc;CACd,UAAU;CACV,YAAY;AACd;;;;;AAMA,MAAa,2BAA+D;CAC1E,qBAAqB;CACrB,qBAAqB;CACrB,qBAAqB;CACrB,qBAAqB;CACrB,qBAAqB;AACvB;AAEA,MAAM,iBAAiB;AAIvB,MAAM,oBAAoB;AAY1B,MAAM,aAAoB,UAA2D;CACnF,MAAM,KAAK;CACX,MAAM,KAAK;CACX,MAAM,KAAK;AACb;AAEA,MAAM,4BAA4B,SAAsD;CACtF,IAAI,OAAO,KAAK,SAAS,UAAU,OAAO,KAAK;CAC/C,IAAI,OAAO,KAAK,SAAS,UAAU,OAAO,KAAK;AAEjD;AAEA,MAAM,oBAAoB,SACxB,yBAAyB,IAAI,KAAK,aAAa;;;;;;;;;;;AAYjD,MAAM,qBAAqB,SAAsD;CAC/E,IAAI,OAAO,KAAK,gBAAgB,YAAY,KAAK,gBAAgB,IAAI,OAAO,KAAK;CACjF,OAAO,yBAAyB,IAAI;AACtC;AAMA,MAAa,0BAA0B,EAAE,sBAA+B;CACtE,MAAM,eAAe,OACnB,YACA,WACG;EAEH,QAAQ,MADe,gBAAgB,WAAW,eAAsB,EAAE,WAAW,GAAG,MAAM,EAAA,CAC7E,KAA+C,IAAI,SAAS;CAC/E;CAEA,MAAM,aAAa,OAAO,WACxB,aAAgC,qBAAqB,OAAO,MAAM;CAEpE,MAAM,cAAc,OAAO,MAAyB,OAAiC,CAAC,MAAM;EAC1F,MAAM,WAAW,MAAM,gBAAgB,WAAW,iBAAoC;GACpF,YAAY,qBAAqB;GACjC;GACA,QAAQ;GACR,GAAG;GAEH,MAAM,KAAK;EACb,CAAC;EAED,OAAO,UAAU,SAAS,IAAuD;CACnF;CAEA,MAAM,cAAc,OAClB,WACA,MACA,OAAiC,CAAC,MAC/B;EACH,MAAM,WAAW,MAAM,gBAAgB,WAAW,iBAAoC;GACpF,YAAY,qBAAqB;GACjC,MAAM;GACN;GACA,GAAG;GAEH,GAAI,KAAK,OAAO,EAAE,MAAM,KAAK,KAAK,IAAI,CAAC;EACzC,CAAC;EAED,OAAO,UAAU,SAAS,IAAuD;CACnF;CAEA,MAAM,cAAc,OAClB,YACA,WACA,WACG;EAEH,QAAO,MADe,aAA4C,YAAY,MAAM,EAAA,CACrE,QAAQ,WAAW,OAAO,KAAK,cAAc,SAAS;CACvE;;;;;;;;CASA,MAAM,oBAAoB,OACxB,YACA,MACA,WACA,WACG;EAEH,QAAO,MADe,YAAY,YAAY,WAAW,MAAM,EAAA,CAChD,QAAQ,WAAW,yBAAyB,OAAO,IAAI,MAAM,IAAI;CAClF;CAEA,MAAM,eAAe,OACnB,YACA,MACA,OAAiC,CAAC,MAC/B;EACH,MAAM,WAAW,MAAM,gBAAgB,WAAW,iBAEhD;GACA;GACA;GACA,QAAQ;GACR,GAAG;GAEH,MAAM,iBAAiB,IAAI;EAC7B,CAAC;EAED,OAAO,UAAU,SAAS,IAAmE;CAC/F;CAEA,MAAM,gBAAgB,OACpB,YACA,OACA,OAAiC,CAAC,MAElC,WAAW;EACT;EACA,SAAS,OAAO,SAAS,aAAa,YAAY,MAAM,IAAI;EAC5D,aAAa;CACf,CAAC;CAIH,MAAM,kBAAkB,OACtB,OACA,UAGA,OAAiC,CAAC,MAC/B;EACH,MAAM,eAAe,MAAM,YAAY,OAAO,IAAI;EAElD,MAAM,QAAQ,yBAAyB,SAAS,gBAC7C,SAAS,eAAe,CAAC,EAAA,CAAG,KAAK,UAAU;GAC1C;GACA,MAAM;IACJ,GAAG;IACH,WAAW,aAAa;GAC1B;EACF,EAAE,CACJ;EAQA,OAAO;GAAE,OAAO;GAAc,UAAU,MANV,WAAW;IACvC;IACA,SAAS,OAAO,EAAE,YAAY,WAAW,aAAa,YAAY,MAAM,IAAI;IAC5E,aAAa;GACf,CAAC;EAEuD;CAC1D;CAEA,MAAM,eAAe,OACnB,YACA,YACA,MACA,OAAiC,CAAC,MAC/B;EACH,MAAM,OAAO,yBAAyB,IAAI;EAC1C,MAAM,WAAW,MAAM,gBAAgB,WAAW,iBAEhD;GACA;GACA,MAAM;GACN;GACA,GAAG;GAEH,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;EACzB,CAAC;EAED,OAAO,UAAU,SAAS,IAAmE;CAC/F;CAEA,MAAM,eAAe,OAAO,YAAqC,eAAuB;EACtF,MAAM,gBAAgB,WAAW,iBAAiB;GAChD;GACA,MAAM;EACR,CAAC;CACH;;;;;;;;;;;;CAaA,MAAM,oBAAoB,OACxB,WACA,WACqC;EAYrC,QAAO,MAXsB,QAAQ,IACnC,yBAAyB,IAAI,OAAO,eAAe;GAEjD,QAAO,MADe,YAAY,YAAY,WAAW,MAAM,EAAA,CAChD,KAAK,YAAY;IAC9B;IACA,YAAY,OAAO;IACnB,MAAM,kBAAkB,OAAO,IAAI;GACrC,EAAE;EACJ,CAAC,CACH,EAAA,CAEsB,KAAK;CAC7B;;;;;;;;CASA,MAAM,cAAc,OAAO,cAAsB;EAC/C,MAAM,WAAW,MAAM,kBAAkB,SAAS;EAElD,MAAM,WAAW,MAAM,WAAW;GAChC,OAAO;GACP,SAAS,OAAO,UAAU;IACxB,IAAI;KACF,MAAM,aAAa,MAAM,YAAY,MAAM,UAAU;KACrD,OAAO;MAAE,IAAI;MAAe;KAAM;IACpC,SAAS,OAAO;KACd,OAAO;MAAE,IAAI;MAAgB;MAAO;KAAM;IAC5C;GACF;GACA,aAAa;EACf,CAAC;EAED,MAAM,kBAA2C,CAAC;EAClD,MAAM,iBAAoD,CAAC;EAC3D,KAAK,MAAM,WAAW,UACpB,IAAI,QAAQ,IAAI,gBAAgB,KAAK,QAAQ,KAAK;OAC7C,eAAe,KAAK;GAAE,GAAG,QAAQ;GAAO,OAAO,QAAQ;EAAM,CAAC;EAGrE,IAAI,eAAe,SAAS,GAC1B,MAAM,IAAI,gCAAgC;GAAE;GAAW;GAAiB;EAAe,CAAC;EAG1F,MAAM,gBAAgB,WAAW,iBAAiB;GAChD,YAAY,qBAAqB;GACjC,MAAM;EACR,CAAC;CACH;;;;;;;;CASA,MAAM,wBAAwB,OAC5B,YACA,YACA,qBACG;EACH,MAAM,gBAAgB,WAAW,sBAAsB;GACrD;GACA,MAAM;GACN;EACF,CAAC;CACH;;;;;;;;;CAUA,MAAM,6BAA6B,OAAO,YAAgC,eAAuB;EAI/F,MAAM,WAAW,MAAM,gBAAgB,WAAW,iBAAiB;GACjE;GACA,MAAM;GACN,OAAO;EACT,CAAC;EAED,OAAO,UAAU,SAAS,IAA6D;CACzF;CAEA,OAAO;EAEL;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;CACF;AACF"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
const require_createGenericFetchClient = require("./createGenericFetchClient-qfCZlCTv.cjs");
|
|
2
|
-
const require_auth = require("./auth-C2_JLisH.cjs");
|
|
3
|
-
//#region src/clients/telemetry/provisioning/provisioning.ts
|
|
4
|
-
const createProvisioning = (client) => {
|
|
5
|
-
const createCredentials = async (body, signal) => {
|
|
6
|
-
const { data } = await client.post("/provisioning/workspace", { body }, { signal });
|
|
7
|
-
return data;
|
|
8
|
-
};
|
|
9
|
-
return { createCredentials };
|
|
10
|
-
};
|
|
11
|
-
//#endregion
|
|
12
|
-
//#region src/clients/telemetry/telemetryClient.ts
|
|
13
|
-
const createTelemetryClient = ({ baseUrl, middlewares, auth }) => {
|
|
14
|
-
const client = require_createGenericFetchClient.createGenericFetchClient({
|
|
15
|
-
baseUrl,
|
|
16
|
-
middlewares,
|
|
17
|
-
headers: require_auth.createAuthHeaders(auth)
|
|
18
|
-
});
|
|
19
|
-
return { provisioning: createProvisioning(client) };
|
|
20
|
-
};
|
|
21
|
-
//#endregion
|
|
22
|
-
Object.defineProperty(exports, "createTelemetryClient", {
|
|
23
|
-
enumerable: true,
|
|
24
|
-
get: function() {
|
|
25
|
-
return createTelemetryClient;
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
//# sourceMappingURL=telemetry-CAu1Qt7B.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry-CAu1Qt7B.cjs","names":["createGenericFetchClient","createAuthHeaders"],"sources":["../src/clients/telemetry/provisioning/provisioning.ts","../src/clients/telemetry/telemetryClient.ts"],"sourcesContent":["import type { GenericFetchClient } from '../telemetryClient';\n\nimport type { CreateCredentialsBody, WorkspaceData } from './types';\n\nexport const createProvisioning = (client: GenericFetchClient) => {\n const createCredentials = async (body: CreateCredentialsBody, signal?: AbortSignal) => {\n const { data } = await client.post<WorkspaceData, void, void, CreateCredentialsBody>(\n '/provisioning/workspace',\n { body },\n { signal },\n );\n\n return data;\n };\n\n return {\n createCredentials,\n };\n};\n","import { createGenericFetchClient } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport { createProvisioning } from './provisioning/provisioning';\n\nexport type GenericFetchClient = ReturnType<typeof createGenericFetchClient>;\n\nexport const createTelemetryClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createGenericFetchClient({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n return {\n provisioning: createProvisioning(client),\n };\n};\n"],"mappings":";;;AAIA,MAAa,sBAAsB,WAA+B;CAChE,MAAM,oBAAoB,OAAO,MAA6B,WAAyB;EACrF,MAAM,EAAE,SAAS,MAAM,OAAO,KAC5B,2BACA,EAAE,KAAK,GACP,EAAE,OAAO,CACX;EAEA,OAAO;CACT;CAEA,OAAO,EACL,kBACF;AACF;;;ACVA,MAAa,yBAAyB,EAAE,SAAS,aAAa,WAA8B;CAC1F,MAAM,SAASA,iCAAAA,yBAAyB;EACtC;EACA;EACA,SAASC,aAAAA,kBAAkB,IAAI;CACjC,CAAC;CAED,OAAO,EACL,cAAc,mBAAmB,MAAM,EACzC;AACF"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { t as createGenericFetchClient } from "./createGenericFetchClient-MQeLRiNW.js";
|
|
2
|
-
import { t as createAuthHeaders } from "./auth-CE9rQV3-.js";
|
|
3
|
-
//#region src/clients/telemetry/provisioning/provisioning.ts
|
|
4
|
-
const createProvisioning = (client) => {
|
|
5
|
-
const createCredentials = async (body, signal) => {
|
|
6
|
-
const { data } = await client.post("/provisioning/workspace", { body }, { signal });
|
|
7
|
-
return data;
|
|
8
|
-
};
|
|
9
|
-
return { createCredentials };
|
|
10
|
-
};
|
|
11
|
-
//#endregion
|
|
12
|
-
//#region src/clients/telemetry/telemetryClient.ts
|
|
13
|
-
const createTelemetryClient = ({ baseUrl, middlewares, auth }) => {
|
|
14
|
-
const client = createGenericFetchClient({
|
|
15
|
-
baseUrl,
|
|
16
|
-
middlewares,
|
|
17
|
-
headers: createAuthHeaders(auth)
|
|
18
|
-
});
|
|
19
|
-
return { provisioning: createProvisioning(client) };
|
|
20
|
-
};
|
|
21
|
-
//#endregion
|
|
22
|
-
export { createTelemetryClient as t };
|
|
23
|
-
|
|
24
|
-
//# sourceMappingURL=telemetry-Ca6j0i9w.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry-Ca6j0i9w.js","names":[],"sources":["../src/clients/telemetry/provisioning/provisioning.ts","../src/clients/telemetry/telemetryClient.ts"],"sourcesContent":["import type { GenericFetchClient } from '../telemetryClient';\n\nimport type { CreateCredentialsBody, WorkspaceData } from './types';\n\nexport const createProvisioning = (client: GenericFetchClient) => {\n const createCredentials = async (body: CreateCredentialsBody, signal?: AbortSignal) => {\n const { data } = await client.post<WorkspaceData, void, void, CreateCredentialsBody>(\n '/provisioning/workspace',\n { body },\n { signal },\n );\n\n return data;\n };\n\n return {\n createCredentials,\n };\n};\n","import { createGenericFetchClient } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport { createProvisioning } from './provisioning/provisioning';\n\nexport type GenericFetchClient = ReturnType<typeof createGenericFetchClient>;\n\nexport const createTelemetryClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createGenericFetchClient({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n return {\n provisioning: createProvisioning(client),\n };\n};\n"],"mappings":";;;AAIA,MAAa,sBAAsB,WAA+B;CAChE,MAAM,oBAAoB,OAAO,MAA6B,WAAyB;EACrF,MAAM,EAAE,SAAS,MAAM,OAAO,KAC5B,2BACA,EAAE,KAAK,GACP,EAAE,OAAO,CACX;EAEA,OAAO;CACT;CAEA,OAAO,EACL,kBACF;AACF;;;ACVA,MAAa,yBAAyB,EAAE,SAAS,aAAa,WAA8B;CAC1F,MAAM,SAAS,yBAAyB;EACtC;EACA;EACA,SAAS,kBAAkB,IAAI;CACjC,CAAC;CAED,OAAO,EACL,cAAc,mBAAmB,MAAM,EACzC;AACF"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
//#region src/clients/telemetry/provisioning/types.d.ts
|
|
2
|
-
type ProjectType = 'payAsYouGo' | 'production' | 'activity-center' | 'organization-usage';
|
|
3
|
-
type CreateCredentialsBody = {
|
|
4
|
-
project_type: ProjectType;
|
|
5
|
-
};
|
|
6
|
-
type WorkspaceData = {
|
|
7
|
-
userToken: string;
|
|
8
|
-
workspaceId: string;
|
|
9
|
-
dashboardId: string;
|
|
10
|
-
gdcnHost: string;
|
|
11
|
-
};
|
|
12
|
-
//#endregion
|
|
13
|
-
export { WorkspaceData as n, CreateCredentialsBody as t };
|
|
14
|
-
//# sourceMappingURL=types-lFsTSkhe.d.cts.map
|
package/dist/types-lFsTSkhe.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
//#region src/clients/telemetry/provisioning/types.d.ts
|
|
2
|
-
type ProjectType = 'payAsYouGo' | 'production' | 'activity-center' | 'organization-usage';
|
|
3
|
-
type CreateCredentialsBody = {
|
|
4
|
-
project_type: ProjectType;
|
|
5
|
-
};
|
|
6
|
-
type WorkspaceData = {
|
|
7
|
-
userToken: string;
|
|
8
|
-
workspaceId: string;
|
|
9
|
-
dashboardId: string;
|
|
10
|
-
gdcnHost: string;
|
|
11
|
-
};
|
|
12
|
-
//#endregion
|
|
13
|
-
export { WorkspaceData as n, CreateCredentialsBody as t };
|
|
14
|
-
//# sourceMappingURL=types-lFsTSkhe.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validateConnectionStatus-24zqIQ0p.cjs","names":["ApiError","defaultValidateStatus","isHtmlResponse"],"sources":["../src/errors/HtmlResponseError.ts","../src/clients/validateConnectionStatus.ts"],"sourcesContent":["import type { ApiResponse } from '../fetchClient/createFetchClient/types';\n\nimport { ApiError } from './ApiError';\n\n/**\n * A successful response that carried an HTML page instead of the endpoint's payload.\n *\n * - Connection answers an expired session with a 302 to the login screen, and `fetch` follows it,\n * so the request resolves `200 text/html`.\n * - Without this the page reaches the caller as a string typed as the endpoint's DTO and fails much\n * later, wherever the value is first read — an Immutable accessor on a string, modules away.\n * - The message stays constant so Sentry groups every occurrence together; `request` and `response`\n * carry the per-request detail.\n * - Raised only by the clients that opt in: some APIs do serve HTML from a 200 on purpose.\n */\nexport class HtmlResponseError extends ApiError {\n constructor(res: ApiResponse) {\n super(res);\n this.message = 'Expected data, got an HTML page. The session has most likely expired.';\n }\n}\n\nexport const isHtmlResponseError = (error: unknown): error is HtmlResponseError =>\n error instanceof HtmlResponseError;\n","import { HtmlResponseError } from '../errors';\nimport { defaultValidateStatus, isHtmlResponse, type ValidateStatusFn } from '../fetchClient';\n\n/**\n * Status validation for the APIs Connection serves off its own host — storage and auth.\n *\n * - Rejects a successful response carrying an HTML page; `HtmlResponseError` says why.\n * - HTML on a *failed* response is a real error page and stays an `ApiError`.\n * - Management answers the same condition with its own session-expiry error instead.\n */\nexport const validateConnectionStatus: ValidateStatusFn = (apiResponse) => {\n const isValid = defaultValidateStatus(apiResponse);\n\n if (isValid && isHtmlResponse(apiResponse)) {\n return new HtmlResponseError(apiResponse);\n }\n\n return isValid;\n};\n"],"mappings":";;;;;;;;;;;;;AAeA,IAAa,oBAAb,cAAuCA,0BAAAA,SAAS;CAC9C,YAAY,KAAkB;EAC5B,MAAM,GAAG;EACT,KAAK,UAAU;CACjB;AACF;AAEA,MAAa,uBAAuB,UAClC,iBAAiB;;;;;;;;;;ACbnB,MAAa,4BAA8C,gBAAgB;CACzE,MAAM,UAAUC,0BAAAA,sBAAsB,WAAW;CAEjD,IAAI,WAAWC,0BAAAA,eAAe,WAAW,GACvC,OAAO,IAAI,kBAAkB,WAAW;CAG1C,OAAO;AACT"}
|