@keboola/api-client 1.0.1 → 2.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/dist/ai/index.cjs +5 -201
- package/dist/ai/index.cjs.map +1 -1
- package/dist/ai/index.js +2 -201
- package/dist/ai/index.js.map +1 -1
- package/dist/assets/index.cjs +5 -180
- package/dist/assets/index.cjs.map +1 -1
- package/dist/assets/index.js +2 -180
- package/dist/assets/index.js.map +1 -1
- package/dist/chat/index.cjs +6 -422
- package/dist/chat/index.cjs.map +1 -1
- package/dist/chat/index.js +3 -422
- package/dist/chat/index.js.map +1 -1
- package/dist/chat/suggestions.cjs +70 -152
- package/dist/chat/suggestions.cjs.map +1 -1
- package/dist/chat/suggestions.js +1 -138
- package/dist/chat/suggestions.js.map +1 -1
- package/dist/chunk-345V46LR.cjs +934 -0
- package/dist/chunk-345V46LR.cjs.map +1 -0
- package/dist/chunk-3B7L6MCG.js +189 -0
- package/dist/chunk-3B7L6MCG.js.map +1 -0
- package/dist/chunk-3T54WH4X.cjs +42 -0
- package/dist/chunk-3T54WH4X.cjs.map +1 -0
- package/dist/chunk-3Y6NK7TC.js +34 -0
- package/dist/chunk-3Y6NK7TC.js.map +1 -0
- package/dist/chunk-4N7XBMWP.js +930 -0
- package/dist/chunk-4N7XBMWP.js.map +1 -0
- package/dist/chunk-4RC5E3SL.js +140 -0
- package/dist/chunk-4RC5E3SL.js.map +1 -0
- package/dist/chunk-633QJMHH.cjs +73 -0
- package/dist/chunk-633QJMHH.cjs.map +1 -0
- package/dist/chunk-6RQDX6JY.cjs +132 -0
- package/dist/chunk-6RQDX6JY.cjs.map +1 -0
- package/dist/chunk-76AHKXLC.cjs +29 -0
- package/dist/chunk-76AHKXLC.cjs.map +1 -0
- package/dist/chunk-7FY6COWG.js +71 -0
- package/dist/chunk-7FY6COWG.js.map +1 -0
- package/dist/chunk-7J2R6XHB.js +3 -0
- package/dist/chunk-7J2R6XHB.js.map +1 -0
- package/dist/chunk-BGLICNTG.cjs +33 -0
- package/dist/chunk-BGLICNTG.cjs.map +1 -0
- package/dist/chunk-BR3SBEFE.cjs +182 -0
- package/dist/chunk-BR3SBEFE.cjs.map +1 -0
- package/dist/chunk-CVV4HROS.cjs +37 -0
- package/dist/chunk-CVV4HROS.cjs.map +1 -0
- package/dist/chunk-DCTDH77P.cjs +277 -0
- package/dist/chunk-DCTDH77P.cjs.map +1 -0
- package/dist/chunk-EBCZUGUX.js +35 -0
- package/dist/chunk-EBCZUGUX.js.map +1 -0
- package/dist/chunk-EY5LALX2.cjs +26 -0
- package/dist/chunk-EY5LALX2.cjs.map +1 -0
- package/dist/chunk-FBQHHAL5.js +40 -0
- package/dist/chunk-FBQHHAL5.js.map +1 -0
- package/dist/chunk-GF4XZK5N.cjs +43 -0
- package/dist/chunk-GF4XZK5N.cjs.map +1 -0
- package/dist/chunk-GNPQB3MT.js +27 -0
- package/dist/chunk-GNPQB3MT.js.map +1 -0
- package/dist/chunk-GO6SOMGL.js +181 -0
- package/dist/chunk-GO6SOMGL.js.map +1 -0
- package/dist/chunk-HCNNMUTR.cjs +36 -0
- package/dist/chunk-HCNNMUTR.cjs.map +1 -0
- package/dist/chunk-HPVTVQBJ.cjs +238 -0
- package/dist/chunk-HPVTVQBJ.cjs.map +1 -0
- package/dist/chunk-HYUGRMCY.cjs +247 -0
- package/dist/chunk-HYUGRMCY.cjs.map +1 -0
- package/dist/chunk-IJMQCOBC.js +34 -0
- package/dist/chunk-IJMQCOBC.js.map +1 -0
- package/dist/chunk-IY3VNVXD.cjs +183 -0
- package/dist/chunk-IY3VNVXD.cjs.map +1 -0
- package/dist/chunk-JKFIB6SQ.cjs +685 -0
- package/dist/chunk-JKFIB6SQ.cjs.map +1 -0
- package/dist/chunk-JLNOESHX.cjs +47 -0
- package/dist/chunk-JLNOESHX.cjs.map +1 -0
- package/dist/chunk-JURD5MC3.js +178 -0
- package/dist/chunk-JURD5MC3.js.map +1 -0
- package/dist/chunk-LV3ZWNDC.js +75 -0
- package/dist/chunk-LV3ZWNDC.js.map +1 -0
- package/dist/chunk-LZ6A6J2E.cjs +77 -0
- package/dist/chunk-LZ6A6J2E.cjs.map +1 -0
- package/dist/chunk-OKVYLO6C.js +108 -0
- package/dist/chunk-OKVYLO6C.js.map +1 -0
- package/dist/chunk-PD3LJYS2.js +218 -0
- package/dist/chunk-PD3LJYS2.js.map +1 -0
- package/dist/chunk-PV4HIVW2.js +130 -0
- package/dist/chunk-PV4HIVW2.js.map +1 -0
- package/dist/chunk-R7PD3BRA.js +261 -0
- package/dist/chunk-R7PD3BRA.js.map +1 -0
- package/dist/chunk-SAEG42HW.js +64 -0
- package/dist/chunk-SAEG42HW.js.map +1 -0
- package/dist/chunk-TIIRBQUA.cjs +110 -0
- package/dist/chunk-TIIRBQUA.cjs.map +1 -0
- package/dist/chunk-TXFQ4YIK.js +31 -0
- package/dist/chunk-TXFQ4YIK.js.map +1 -0
- package/dist/chunk-U5SE6W5M.cjs +158 -0
- package/dist/chunk-U5SE6W5M.cjs.map +1 -0
- package/dist/chunk-UABYNGBZ.js +39 -0
- package/dist/chunk-UABYNGBZ.js.map +1 -0
- package/dist/chunk-UXF53ZOV.js +220 -0
- package/dist/chunk-UXF53ZOV.js.map +1 -0
- package/dist/chunk-VAOCYA6B.js +20 -0
- package/dist/chunk-VAOCYA6B.js.map +1 -0
- package/dist/chunk-VS5PM7KL.js +45 -0
- package/dist/chunk-VS5PM7KL.js.map +1 -0
- package/dist/chunk-WQ7EZWBF.js +24 -0
- package/dist/chunk-WQ7EZWBF.js.map +1 -0
- package/dist/chunk-XPDEQND7.cjs +4 -0
- package/dist/chunk-XPDEQND7.cjs.map +1 -0
- package/dist/chunk-XUDMML5C.cjs +211 -0
- package/dist/chunk-XUDMML5C.cjs.map +1 -0
- package/dist/chunk-YPCD7M2N.cjs +22 -0
- package/dist/chunk-YPCD7M2N.cjs.map +1 -0
- package/dist/chunk-YUEYMIMI.cjs +67 -0
- package/dist/chunk-YUEYMIMI.cjs.map +1 -0
- package/dist/chunk-YXCVNX2Q.cjs +36 -0
- package/dist/chunk-YXCVNX2Q.cjs.map +1 -0
- package/dist/chunk-ZEMKE6DI.js +681 -0
- package/dist/chunk-ZEMKE6DI.js.map +1 -0
- package/dist/dataScience/index.cjs +8 -412
- package/dist/dataScience/index.cjs.map +1 -1
- package/dist/dataScience/index.js +2 -391
- package/dist/dataScience/index.js.map +1 -1
- package/dist/domain/permissions/index.cjs +131 -2
- package/dist/domain/permissions/index.cjs.map +1 -1
- package/dist/domain/permissions/index.d.cts +108 -2
- package/dist/domain/permissions/index.d.ts +108 -2
- package/dist/domain/permissions/index.js +106 -3
- package/dist/domain/permissions/index.js.map +1 -1
- package/dist/editor/index.cjs +5 -264
- package/dist/editor/index.cjs.map +1 -1
- package/dist/editor/index.js +2 -264
- package/dist/editor/index.js.map +1 -1
- package/dist/encryption/index.cjs +5 -190
- package/dist/encryption/index.cjs.map +1 -1
- package/dist/encryption/index.js +2 -190
- package/dist/encryption/index.js.map +1 -1
- package/dist/import/index.cjs +5 -196
- package/dist/import/index.cjs.map +1 -1
- package/dist/import/index.js +2 -196
- package/dist/import/index.js.map +1 -1
- package/dist/index.cjs +334 -3752
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1812 -104
- package/dist/index.d.ts +1812 -104
- package/dist/index.js +176 -3627
- package/dist/index.js.map +1 -1
- package/dist/management/index.cjs +10 -881
- package/dist/management/index.cjs.map +1 -1
- package/dist/management/index.js +3 -880
- package/dist/management/index.js.map +1 -1
- package/dist/metastore/index.cjs +5 -337
- package/dist/metastore/index.cjs.map +1 -1
- package/dist/metastore/index.js +2 -337
- package/dist/metastore/index.js.map +1 -1
- package/dist/oauth/index.cjs +5 -226
- package/dist/oauth/index.cjs.map +1 -1
- package/dist/oauth/index.js +2 -226
- package/dist/oauth/index.js.map +1 -1
- package/dist/project-Bzslbq4u.d.ts +16 -0
- package/dist/project-CYhB6rYN.d.cts +16 -0
- package/dist/queryService/index.cjs +5 -248
- package/dist/queryService/index.cjs.map +1 -1
- package/dist/queryService/index.js +2 -248
- package/dist/queryService/index.js.map +1 -1
- package/dist/queue/index.cjs +5 -190
- package/dist/queue/index.cjs.map +1 -1
- package/dist/queue/index.js +2 -190
- package/dist/queue/index.js.map +1 -1
- package/dist/sdk/configurations/index.d.cts +2 -12
- package/dist/sdk/configurations/index.d.ts +2 -12
- package/dist/sdk/storage/index.cjs +49 -267
- 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 -259
- package/dist/sdk/storage/index.js.map +1 -1
- package/dist/sdk/tag/index.cjs +6 -203
- package/dist/sdk/tag/index.cjs.map +1 -1
- package/dist/sdk/tag/index.js +2 -206
- package/dist/sdk/tag/index.js.map +1 -1
- package/dist/status/index.cjs +6 -176
- package/dist/status/index.cjs.map +1 -1
- package/dist/status/index.js +3 -176
- package/dist/status/index.js.map +1 -1
- package/dist/status/types.cjs +2 -0
- package/dist/status/types.js +1 -1
- package/dist/storage/index.cjs +9 -1110
- package/dist/storage/index.cjs.map +1 -1
- package/dist/storage/index.d.cts +1 -1
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/index.js +3 -1110
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/types.d.cts +6 -2
- package/dist/storage/types.d.ts +6 -2
- package/dist/{storageClient-DrYOs4Xm.d.ts → storageClient-BicsbzZy.d.ts} +2 -1
- package/dist/{storageClient-DSLTM3Cr.d.cts → storageClient-CmK1LPHr.d.cts} +2 -1
- package/dist/{storageSdk-BBqAo0Vx.d.cts → storageSdk-BZ7ZW6_h.d.cts} +1 -1
- package/dist/{storageSdk-ZVmKQQSl.d.ts → storageSdk-DCcD68FQ.d.ts} +1 -1
- package/dist/syncActions/index.cjs +5 -364
- package/dist/syncActions/index.cjs.map +1 -1
- package/dist/syncActions/index.js +2 -345
- package/dist/syncActions/index.js.map +1 -1
- package/dist/telemetry/index.cjs +5 -187
- package/dist/telemetry/index.cjs.map +1 -1
- package/dist/telemetry/index.js +2 -187
- package/dist/telemetry/index.js.map +1 -1
- package/dist/vault/index.cjs +5 -219
- package/dist/vault/index.cjs.map +1 -1
- package/dist/vault/index.js +2 -219
- package/dist/vault/index.js.map +1 -1
- package/dist/verify/index.cjs +5 -184
- package/dist/verify/index.cjs.map +1 -1
- package/dist/verify/index.js +2 -184
- package/dist/verify/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { createGenericFetchClient, normalizeBaseUrl, isApiError, HttpStatus } from './chunk-PD3LJYS2.js';
|
|
2
|
+
|
|
3
|
+
// src/clients/oauth/oauthClient.ts
|
|
4
|
+
var createOauthClient = ({ baseUrl, middlewares }) => {
|
|
5
|
+
const client = createGenericFetchClient({ baseUrl: normalizeBaseUrl(baseUrl), middlewares });
|
|
6
|
+
const getCredentials = async (query, signal) => {
|
|
7
|
+
const { data } = await client.get(
|
|
8
|
+
"/credentials",
|
|
9
|
+
{ query },
|
|
10
|
+
{ signal }
|
|
11
|
+
);
|
|
12
|
+
return data;
|
|
13
|
+
};
|
|
14
|
+
const getCredential = async (componentId, id, signal) => {
|
|
15
|
+
const { data } = await client.get(
|
|
16
|
+
"/credentials/{componentId}/{id}",
|
|
17
|
+
{ path: { componentId, id } },
|
|
18
|
+
{ signal }
|
|
19
|
+
);
|
|
20
|
+
return data;
|
|
21
|
+
};
|
|
22
|
+
const _createCredentials = async (componentId, body, signal) => {
|
|
23
|
+
const { data } = await client.post(
|
|
24
|
+
"/credentials/{componentId}",
|
|
25
|
+
{ path: { componentId }, body },
|
|
26
|
+
{ signal }
|
|
27
|
+
);
|
|
28
|
+
return data;
|
|
29
|
+
};
|
|
30
|
+
const _createLegacyCredentials = async (componentId, { data: credentialsData, ...rest }, signal) => {
|
|
31
|
+
const { data } = await client.post(
|
|
32
|
+
"/credentials/{componentId}",
|
|
33
|
+
{
|
|
34
|
+
path: { componentId },
|
|
35
|
+
body: {
|
|
36
|
+
...rest,
|
|
37
|
+
"#data": JSON.stringify(credentialsData)
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{ signal }
|
|
41
|
+
);
|
|
42
|
+
return data;
|
|
43
|
+
};
|
|
44
|
+
const createCredential = async (componentId, body, signal) => {
|
|
45
|
+
try {
|
|
46
|
+
return await _createCredentials(componentId, body, signal);
|
|
47
|
+
} catch (error) {
|
|
48
|
+
if (isApiError(error) && error.response.status === HttpStatus.UNPROCESSABLE_ENTITY) {
|
|
49
|
+
return _createLegacyCredentials(componentId, body, signal);
|
|
50
|
+
}
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const deleteCredential = async (componentId, id, signal) => {
|
|
55
|
+
await client.delete(
|
|
56
|
+
"/credentials/{componentId}/{id}",
|
|
57
|
+
{ path: { componentId, id } },
|
|
58
|
+
{ signal }
|
|
59
|
+
);
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
getCredentials,
|
|
63
|
+
getCredential,
|
|
64
|
+
createCredential,
|
|
65
|
+
deleteCredential
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export { createOauthClient };
|
|
70
|
+
//# sourceMappingURL=chunk-7FY6COWG.js.map
|
|
71
|
+
//# sourceMappingURL=chunk-7FY6COWG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/clients/oauth/oauthClient.ts"],"names":[],"mappings":";;;AAcO,IAAM,iBAAA,GAAoB,CAAC,EAAE,OAAA,EAAS,aAAY,KAAyB;AAChF,EAAA,MAAM,MAAA,GAAS,yBAAyB,EAAE,OAAA,EAAS,iBAAiB,OAAO,CAAA,EAAG,aAAa,CAAA;AAE3F,EAAA,MAAM,cAAA,GAAiB,OAAO,KAAA,EAA6B,MAAA,KAAyB;AAClF,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA;AAAA,MAC5B,cAAA;AAAA,MACA,EAAE,KAAA,EAAM;AAAA,MACR,EAAE,MAAA;AAAO,KACX;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,OAAO,WAAA,EAAqB,EAAA,EAAY,MAAA,KAAyB;AACrF,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA;AAAA,MAC5B,iCAAA;AAAA,MACA,EAAE,IAAA,EAAM,EAAE,WAAA,EAAa,IAAG,EAAE;AAAA,MAC5B,EAAE,MAAA;AAAO,KACX;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,OACzB,WAAA,EACA,IAAA,EACA,MAAA,KACwB;AACxB,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,IAAA;AAAA,MAC5B,4BAAA;AAAA,MACA,EAAE,IAAA,EAAM,EAAE,WAAA,IAAe,IAAA,EAAK;AAAA,MAC9B,EAAE,MAAA;AAAO,KACX;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAIA,EAAA,MAAM,wBAAA,GAA2B,OAC/B,WAAA,EACA,EAAE,MAAM,eAAA,EAAiB,GAAG,IAAA,EAAK,EACjC,MAAA,KACwB;AACxB,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,IAAA;AAAA,MAC5B,4BAAA;AAAA,MACA;AAAA,QACE,IAAA,EAAM,EAAE,WAAA,EAAY;AAAA,QACpB,IAAA,EAAM;AAAA,UACJ,GAAG,IAAA;AAAA,UACH,OAAA,EAAS,IAAA,CAAK,SAAA,CAAU,eAAe;AAAA;AACzC,OACF;AAAA,MACA,EAAE,MAAA;AAAO,KACX;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,OACvB,WAAA,EACA,IAAA,EACA,MAAA,KACwB;AACxB,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,kBAAA,CAAmB,WAAA,EAAa,IAAA,EAAM,MAAM,CAAA;AAAA,IAC3D,SAAS,KAAA,EAAO;AACd,MAAA,IAAI,WAAW,KAAK,CAAA,IAAK,MAAM,QAAA,CAAS,MAAA,KAAW,WAAW,oBAAA,EAAsB;AAClF,QAAA,OAAO,wBAAA,CAAyB,WAAA,EAAa,IAAA,EAAM,MAAM,CAAA;AAAA,MAC3D;AACA,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,OACvB,WAAA,EACA,EAAA,EACA,MAAA,KACkB;AAClB,IAAA,MAAM,MAAA,CAAO,MAAA;AAAA,MACX,iCAAA;AAAA,MACA,EAAE,IAAA,EAAM,EAAE,WAAA,EAAa,IAAG,EAAE;AAAA,MAC5B,EAAE,MAAA;AAAO,KACX;AAAA,EACF,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA,aAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-7FY6COWG.js","sourcesContent":["import { HttpStatus } from '../../constants';\nimport { createGenericFetchClient, isApiError } from '../../fetchClient';\nimport { normalizeBaseUrl } from '../../utils/normalizeBaseUrl';\nimport type { ClientInitOptions } from '../types';\n\nimport type {\n ComponentPath,\n CreateCredentialBody,\n Credential,\n CredentialPath,\n GetCredentialsQuery,\n LegacyCreateBody,\n} from './types';\n\nexport const createOauthClient = ({ baseUrl, middlewares }: ClientInitOptions) => {\n const client = createGenericFetchClient({ baseUrl: normalizeBaseUrl(baseUrl), middlewares });\n\n const getCredentials = async (query?: GetCredentialsQuery, signal?: AbortSignal) => {\n const { data } = await client.get<Credential[], void, GetCredentialsQuery>(\n '/credentials',\n { query },\n { signal },\n );\n return data;\n };\n\n const getCredential = async (componentId: string, id: string, signal?: AbortSignal) => {\n const { data } = await client.get<Credential, CredentialPath>(\n '/credentials/{componentId}/{id}',\n { path: { componentId, id } },\n { signal },\n );\n return data;\n };\n\n const _createCredentials = async (\n componentId: string,\n body: CreateCredentialBody,\n signal?: AbortSignal,\n ): Promise<Credential> => {\n const { data } = await client.post<Credential, ComponentPath, void, CreateCredentialBody>(\n '/credentials/{componentId}',\n { path: { componentId }, body },\n { signal },\n );\n return data;\n };\n\n // Legacy OAuth service rejects `data` and requires `#data` as a JSON string.\n // Retry with the legacy shape on 422; modern stacks accept the first call.\n const _createLegacyCredentials = async (\n componentId: string,\n { data: credentialsData, ...rest }: CreateCredentialBody,\n signal?: AbortSignal,\n ): Promise<Credential> => {\n const { data } = await client.post<Credential, ComponentPath, void, LegacyCreateBody>(\n '/credentials/{componentId}',\n {\n path: { componentId },\n body: {\n ...rest,\n '#data': JSON.stringify(credentialsData),\n },\n },\n { signal },\n );\n\n return data;\n };\n\n const createCredential = async (\n componentId: string,\n body: CreateCredentialBody,\n signal?: AbortSignal,\n ): Promise<Credential> => {\n try {\n return await _createCredentials(componentId, body, signal);\n } catch (error) {\n if (isApiError(error) && error.response.status === HttpStatus.UNPROCESSABLE_ENTITY) {\n return _createLegacyCredentials(componentId, body, signal);\n }\n throw error;\n }\n };\n\n const deleteCredential = async (\n componentId: string,\n id: string,\n signal?: AbortSignal,\n ): Promise<void> => {\n await client.delete<void, CredentialPath>(\n '/credentials/{componentId}/{id}',\n { path: { componentId, id } },\n { signal },\n );\n };\n\n return {\n getCredentials,\n getCredential,\n createCredential,\n deleteCredential,\n };\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-7J2R6XHB.js"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkHPVTVQBJ_cjs = require('./chunk-HPVTVQBJ.cjs');
|
|
4
|
+
|
|
5
|
+
// src/clients/telemetry/provisioning/provisioning.ts
|
|
6
|
+
var createProvisioning = (client) => {
|
|
7
|
+
const createCredentials = async (body, signal) => {
|
|
8
|
+
const { data } = await client.post(
|
|
9
|
+
"/provisioning/workspace",
|
|
10
|
+
{ body },
|
|
11
|
+
{ signal }
|
|
12
|
+
);
|
|
13
|
+
return data;
|
|
14
|
+
};
|
|
15
|
+
return {
|
|
16
|
+
createCredentials
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// src/clients/telemetry/telemetryClient.ts
|
|
21
|
+
var createTelemetryClient = ({ baseUrl, middlewares }) => {
|
|
22
|
+
const client = chunkHPVTVQBJ_cjs.createGenericFetchClient({
|
|
23
|
+
baseUrl: chunkHPVTVQBJ_cjs.normalizeBaseUrl(baseUrl),
|
|
24
|
+
middlewares
|
|
25
|
+
});
|
|
26
|
+
return {
|
|
27
|
+
provisioning: createProvisioning(client)
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
exports.createTelemetryClient = createTelemetryClient;
|
|
32
|
+
//# sourceMappingURL=chunk-BGLICNTG.cjs.map
|
|
33
|
+
//# sourceMappingURL=chunk-BGLICNTG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/clients/telemetry/provisioning/provisioning.ts","../src/clients/telemetry/telemetryClient.ts"],"names":["createGenericFetchClient","normalizeBaseUrl"],"mappings":";;;;;AAIO,IAAM,kBAAA,GAAqB,CAAC,MAAA,KAA+B;AAChE,EAAA,MAAM,iBAAA,GAAoB,OAAO,IAAA,EAA6B,MAAA,KAAyB;AACrF,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,IAAA;AAAA,MAC5B,yBAAA;AAAA,MACA,EAAE,IAAA,EAAK;AAAA,MACP,EAAE,MAAA;AAAO,KACX;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO;AAAA,IACL;AAAA,GACF;AACF,CAAA;;;ACVO,IAAM,qBAAA,GAAwB,CAAC,EAAE,OAAA,EAAS,aAAY,KAAyB;AACpF,EAAA,MAAM,SAASA,0CAAA,CAAyB;AAAA,IACtC,OAAA,EAASC,mCAAiB,OAAO,CAAA;AAAA,IACjC;AAAA,GACD,CAAA;AAED,EAAA,OAAO;AAAA,IACL,YAAA,EAAc,mBAAmB,MAAM;AAAA,GACzC;AACF","file":"chunk-BGLICNTG.cjs","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 { normalizeBaseUrl } from '../../utils/normalizeBaseUrl';\nimport type { ClientInitOptions } from '../types';\n\nimport { createProvisioning } from './provisioning/provisioning';\n\nexport type GenericFetchClient = ReturnType<typeof createGenericFetchClient>;\n\nexport const createTelemetryClient = ({ baseUrl, middlewares }: ClientInitOptions) => {\n const client = createGenericFetchClient({\n baseUrl: normalizeBaseUrl(baseUrl),\n middlewares,\n });\n\n return {\n provisioning: createProvisioning(client),\n };\n};\n"]}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkCVV4HROS_cjs = require('./chunk-CVV4HROS.cjs');
|
|
4
|
+
|
|
5
|
+
// src/utils/keboolaUID.ts
|
|
6
|
+
var KEBOOLA_OBJECT_ID_DELIMITER = "--";
|
|
7
|
+
var keboolaUID = {
|
|
8
|
+
serialize: (input) => {
|
|
9
|
+
if (input.uid === "")
|
|
10
|
+
throw new Error("Invalid Keboola Object ID: uid of an object cannot be empty");
|
|
11
|
+
return ["KID", input.projectId, input.type, input.uid].join(KEBOOLA_OBJECT_ID_DELIMITER);
|
|
12
|
+
},
|
|
13
|
+
deserialize: (input) => {
|
|
14
|
+
const [identifier, projectId, type, uid] = input.split(KEBOOLA_OBJECT_ID_DELIMITER);
|
|
15
|
+
if (identifier !== "KID" || !projectId || !type || !uid)
|
|
16
|
+
throw new Error("Invalid Keboola Object ID");
|
|
17
|
+
return {
|
|
18
|
+
projectId: Number(projectId),
|
|
19
|
+
type,
|
|
20
|
+
uid
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// src/utils/generateUUID.ts
|
|
26
|
+
var generateUUID = () => crypto.randomUUID();
|
|
27
|
+
|
|
28
|
+
// src/sdks/tag/tagSdk.ts
|
|
29
|
+
var ObjectType = {
|
|
30
|
+
TAG: "tag",
|
|
31
|
+
TAG_BINDING: "tag-binding"
|
|
32
|
+
};
|
|
33
|
+
var createTagSdk = ({ metastoreClient }) => {
|
|
34
|
+
const _getTagMetaObjects = async (type, signal) => {
|
|
35
|
+
const response = await metastoreClient.repository.getMetaObjects(
|
|
36
|
+
{
|
|
37
|
+
objectType: type
|
|
38
|
+
},
|
|
39
|
+
signal
|
|
40
|
+
);
|
|
41
|
+
return response.data.map(({ attributes }) => attributes);
|
|
42
|
+
};
|
|
43
|
+
const _getAllTagBindingMapByTagId = async (signal) => {
|
|
44
|
+
const tagBindings = await _getTagMetaObjects(ObjectType.TAG_BINDING, signal);
|
|
45
|
+
return Object.groupBy(tagBindings, (binding) => binding.data.tagUUID);
|
|
46
|
+
};
|
|
47
|
+
const _getTagBindingMapByTagId = async (tagUUIDs, objectId, signal) => {
|
|
48
|
+
const tagBindingMapByTagId = await _getAllTagBindingMapByTagId(signal);
|
|
49
|
+
const objectUID = keboolaUID.serialize(objectId);
|
|
50
|
+
return tagUUIDs.reduce((acc, tagUUID) => {
|
|
51
|
+
if (acc[tagUUID]) return acc;
|
|
52
|
+
const tagBindings = tagBindingMapByTagId[tagUUID] ?? [];
|
|
53
|
+
acc[tagUUID] = tagBindings.find((binding) => binding.data.objectUID === objectUID) ?? null;
|
|
54
|
+
return acc;
|
|
55
|
+
}, {});
|
|
56
|
+
};
|
|
57
|
+
const _deleteTagBindings = async (tagBindings) => {
|
|
58
|
+
await chunkCVV4HROS_cjs.concurrent({
|
|
59
|
+
items: tagBindings,
|
|
60
|
+
process: async (binding) => metastoreClient.repository.deleteMetaObject({
|
|
61
|
+
objectType: ObjectType.TAG_BINDING,
|
|
62
|
+
UUID: binding.uuid
|
|
63
|
+
}),
|
|
64
|
+
concurrency: 5
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
const getTags = async (signal) => {
|
|
68
|
+
const [tags, tagBindingMapByTagId] = await Promise.all([
|
|
69
|
+
_getTagMetaObjects(ObjectType.TAG, signal),
|
|
70
|
+
_getAllTagBindingMapByTagId(signal)
|
|
71
|
+
]);
|
|
72
|
+
return tags.map((tag) => ({
|
|
73
|
+
tag,
|
|
74
|
+
bindings: tagBindingMapByTagId[tag.uuid] ?? []
|
|
75
|
+
}));
|
|
76
|
+
};
|
|
77
|
+
const getTagsByObjectId = async (objectId, signal) => {
|
|
78
|
+
const tags = await getTags(signal);
|
|
79
|
+
const keboolaObjectUID = keboolaUID.serialize(objectId);
|
|
80
|
+
const mapByTagId = tags.reduce((acc, { tag, bindings }) => {
|
|
81
|
+
acc[tag.uuid] = new Set(bindings.map((binding) => binding.data.objectUID));
|
|
82
|
+
return acc;
|
|
83
|
+
}, {});
|
|
84
|
+
return tags.filter(({ tag }) => mapByTagId[tag.uuid]?.has(keboolaObjectUID));
|
|
85
|
+
};
|
|
86
|
+
const createTag = async (data, meta = {}) => {
|
|
87
|
+
const {
|
|
88
|
+
data: { attributes: tag }
|
|
89
|
+
} = await metastoreClient.repository.createMetaObject({
|
|
90
|
+
objectType: ObjectType.TAG,
|
|
91
|
+
data,
|
|
92
|
+
name: generateUUID(),
|
|
93
|
+
...meta
|
|
94
|
+
});
|
|
95
|
+
return tag;
|
|
96
|
+
};
|
|
97
|
+
const updateTag = async (tagUUID, data, meta = {}) => {
|
|
98
|
+
const {
|
|
99
|
+
data: { attributes: tag }
|
|
100
|
+
} = await metastoreClient.repository.updateMetaObject({
|
|
101
|
+
objectType: ObjectType.TAG,
|
|
102
|
+
UUID: tagUUID,
|
|
103
|
+
data,
|
|
104
|
+
...meta
|
|
105
|
+
});
|
|
106
|
+
return tag;
|
|
107
|
+
};
|
|
108
|
+
const deleteTag = async (tagUUID) => {
|
|
109
|
+
const allBindings = await _getTagMetaObjects(ObjectType.TAG_BINDING);
|
|
110
|
+
const tagBindings = allBindings.filter(({ data }) => data.tagUUID === tagUUID);
|
|
111
|
+
await Promise.all([
|
|
112
|
+
// delete tag itself
|
|
113
|
+
metastoreClient.repository.deleteMetaObject({
|
|
114
|
+
objectType: ObjectType.TAG,
|
|
115
|
+
UUID: tagUUID
|
|
116
|
+
}),
|
|
117
|
+
// delete all tag associations
|
|
118
|
+
_deleteTagBindings(tagBindings)
|
|
119
|
+
]);
|
|
120
|
+
};
|
|
121
|
+
const assignTags = async (tagUUIDs, objectId, meta = {}) => {
|
|
122
|
+
const tagBindingMapByTagId = await _getTagBindingMapByTagId(tagUUIDs, objectId);
|
|
123
|
+
const unassignedTagUUIDs = tagUUIDs.filter((tagUUID) => tagBindingMapByTagId[tagUUID] === null);
|
|
124
|
+
await chunkCVV4HROS_cjs.concurrent({
|
|
125
|
+
items: unassignedTagUUIDs,
|
|
126
|
+
process: async (tagUUID) => metastoreClient.repository.createMetaObject({
|
|
127
|
+
objectType: ObjectType.TAG_BINDING,
|
|
128
|
+
data: {
|
|
129
|
+
objectUID: keboolaUID.serialize(objectId),
|
|
130
|
+
tagUUID
|
|
131
|
+
},
|
|
132
|
+
name: generateUUID(),
|
|
133
|
+
...meta
|
|
134
|
+
}),
|
|
135
|
+
concurrency: 5
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
const unassignTags = async (tagUUIDs, objectID) => {
|
|
139
|
+
const tagBindingMapByTagId = await _getTagBindingMapByTagId(tagUUIDs, objectID);
|
|
140
|
+
const assignedTagUUIDs = tagUUIDs.filter((tagUUID) => tagBindingMapByTagId[tagUUID] !== null);
|
|
141
|
+
const tagBindings = assignedTagUUIDs.map((tagUUID) => tagBindingMapByTagId[tagUUID]);
|
|
142
|
+
await chunkCVV4HROS_cjs.concurrent({
|
|
143
|
+
items: tagBindings,
|
|
144
|
+
process: async (tagBinding) => metastoreClient.repository.deleteMetaObject({
|
|
145
|
+
objectType: ObjectType.TAG_BINDING,
|
|
146
|
+
UUID: tagBinding.uuid
|
|
147
|
+
}),
|
|
148
|
+
concurrency: 5
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
const unassignAllTags = async (objectID, signal) => {
|
|
152
|
+
const tagBindings = await _getTagMetaObjects(ObjectType.TAG_BINDING, signal);
|
|
153
|
+
const objectsTagBindings = tagBindings.filter(
|
|
154
|
+
({ data }) => data.objectUID === keboolaUID.serialize(objectID)
|
|
155
|
+
);
|
|
156
|
+
await _deleteTagBindings(objectsTagBindings);
|
|
157
|
+
};
|
|
158
|
+
const createAndAssignTag = async (data, objectId, meta = {}) => {
|
|
159
|
+
const tag = await createTag(data, meta);
|
|
160
|
+
await assignTags([tag.uuid], objectId, meta);
|
|
161
|
+
return tag;
|
|
162
|
+
};
|
|
163
|
+
return {
|
|
164
|
+
// retrievals
|
|
165
|
+
getTags,
|
|
166
|
+
getTagsByObjectId,
|
|
167
|
+
// modifications
|
|
168
|
+
createTag,
|
|
169
|
+
updateTag,
|
|
170
|
+
deleteTag,
|
|
171
|
+
assignTags,
|
|
172
|
+
unassignTags,
|
|
173
|
+
unassignAllTags,
|
|
174
|
+
createAndAssignTag
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
exports.createTagSdk = createTagSdk;
|
|
179
|
+
exports.generateUUID = generateUUID;
|
|
180
|
+
exports.keboolaUID = keboolaUID;
|
|
181
|
+
//# sourceMappingURL=chunk-BR3SBEFE.cjs.map
|
|
182
|
+
//# sourceMappingURL=chunk-BR3SBEFE.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/keboolaUID.ts","../src/utils/generateUUID.ts","../src/sdks/tag/tagSdk.ts"],"names":["concurrent"],"mappings":"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","file":"chunk-BR3SBEFE.cjs","sourcesContent":["type KeboolaObjectType =\n | 'data-catalog'\n | 'table'\n | 'bucket'\n | 'flow'\n | 'configuration'\n | 'transformation'\n | 'data-app'\n | 'workspace';\n\nexport type KeboolaObjectId = {\n uid: string;\n type: KeboolaObjectType;\n projectId: number;\n};\n\n//As a delimiter for serialization, we use a double hyphen (--) instead of a single hyphen in type names.\nconst KEBOOLA_OBJECT_ID_DELIMITER = '--';\n\n/**\n * There is a proposal for a string format to identify objects in Keboola.\n *\n * https://keboola.atlassian.net/wiki/spaces/ENGG/pages/3967615431/Keboola+UUID+Format\n * Unfortunately, this format will not pass BE validation as `:` is not allowed in the `uid`, and the length is limited to 50 characters only.\n *\n */\nexport const keboolaUID = {\n serialize: (input: KeboolaObjectId): string => {\n if (input.uid === '')\n throw new Error('Invalid Keboola Object ID: uid of an object cannot be empty');\n\n return ['KID', input.projectId, input.type, input.uid].join(KEBOOLA_OBJECT_ID_DELIMITER);\n },\n\n deserialize: (input: string): KeboolaObjectId => {\n const [identifier, projectId, type, uid] = input.split(KEBOOLA_OBJECT_ID_DELIMITER);\n if (identifier !== 'KID' || !projectId || !type || !uid)\n throw new Error('Invalid Keboola Object ID');\n\n return {\n projectId: Number(projectId),\n type: type as KeboolaObjectType,\n uid,\n };\n },\n};\n","export const generateUUID = () => crypto.randomUUID();\n","import type { MetaObject } from '../../clients/metastore/repository/types';\nimport { concurrent, generateUUID, type KeboolaObjectId, keboolaUID } from '../../utils';\n\nimport type {\n CreateMetaObjectMetaDataInput,\n MetastoreClient,\n TagBindingData,\n TagData,\n TagWithBindings,\n UpdateMetaObjectMetaDataInput,\n} from './types';\n\nconst ObjectType = {\n TAG: 'tag',\n TAG_BINDING: 'tag-binding',\n};\ntype ObjectTypes = (typeof ObjectType)[keyof typeof ObjectType];\n\ntype Options = {\n metastoreClient: MetastoreClient;\n};\n\nexport const createTagSdk = ({ metastoreClient }: Options) => {\n const _getTagMetaObjects = async <T extends Record<string, unknown>>(\n type: ObjectTypes,\n signal?: AbortSignal,\n ) => {\n const response = await metastoreClient.repository.getMetaObjects<T>(\n {\n objectType: type,\n },\n signal,\n );\n return response.data.map(({ attributes }) => attributes);\n };\n\n const _getAllTagBindingMapByTagId = async (signal?: AbortSignal) => {\n const tagBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING, signal);\n return Object.groupBy(tagBindings, (binding) => binding.data.tagUUID);\n };\n\n const _getTagBindingMapByTagId = async (\n tagUUIDs: string[],\n objectId: KeboolaObjectId,\n signal?: AbortSignal,\n ) => {\n const tagBindingMapByTagId = await _getAllTagBindingMapByTagId(signal);\n const objectUID = keboolaUID.serialize(objectId);\n return tagUUIDs.reduce<Record<string, MetaObject<TagBindingData> | null>>((acc, tagUUID) => {\n if (acc[tagUUID]) return acc; // filter out duplicated ids\n\n const tagBindings = tagBindingMapByTagId[tagUUID] ?? [];\n acc[tagUUID] = tagBindings.find((binding) => binding.data.objectUID === objectUID) ?? null;\n return acc;\n }, {});\n };\n\n const _deleteTagBindings = async (tagBindings: MetaObject<TagBindingData>[]) => {\n await concurrent({\n items: tagBindings,\n process: async (binding) =>\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG_BINDING,\n UUID: binding.uuid!,\n }),\n concurrency: 5,\n });\n };\n\n const getTags = async (signal?: AbortSignal) => {\n const [tags, tagBindingMapByTagId] = await Promise.all([\n _getTagMetaObjects<TagData>(ObjectType.TAG, signal),\n _getAllTagBindingMapByTagId(signal),\n ]);\n\n return tags.map<TagWithBindings>((tag) => ({\n tag,\n bindings: tagBindingMapByTagId[tag.uuid!] ?? [],\n }));\n };\n\n const getTagsByObjectId = async (objectId: KeboolaObjectId, signal?: AbortSignal) => {\n const tags = await getTags(signal);\n\n const keboolaObjectUID = keboolaUID.serialize(objectId);\n const mapByTagId = tags.reduce<Record<string, Set<string>>>((acc, { tag, bindings }) => {\n acc[tag.uuid!] = new Set(bindings.map((binding) => binding.data.objectUID));\n return acc;\n }, {});\n\n return tags.filter(({ tag }) => mapByTagId[tag.uuid!]?.has(keboolaObjectUID));\n };\n\n const createTag = async (data: TagData, meta: CreateMetaObjectMetaDataInput = {}) => {\n const {\n data: { attributes: tag },\n } = await metastoreClient.repository.createMetaObject({\n objectType: ObjectType.TAG,\n data,\n name: generateUUID(),\n ...meta,\n });\n\n return tag;\n };\n\n const updateTag = async (\n tagUUID: string,\n data: TagData,\n meta: UpdateMetaObjectMetaDataInput = {},\n ) => {\n const {\n data: { attributes: tag },\n } = await metastoreClient.repository.updateMetaObject<TagData>({\n objectType: ObjectType.TAG,\n UUID: tagUUID,\n data,\n ...meta,\n });\n\n return tag;\n };\n\n const deleteTag = async (tagUUID: string) => {\n const allBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING);\n const tagBindings = allBindings.filter(({ data }) => data.tagUUID === tagUUID);\n\n await Promise.all([\n // delete tag itself\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG,\n UUID: tagUUID,\n }),\n // delete all tag associations\n _deleteTagBindings(tagBindings),\n ]);\n };\n\n const assignTags = async (\n tagUUIDs: string[],\n objectId: KeboolaObjectId,\n meta: CreateMetaObjectMetaDataInput = {},\n ) => {\n const tagBindingMapByTagId = await _getTagBindingMapByTagId(tagUUIDs, objectId);\n // Assign only the unassigned tag IDs. Ignore the rest.\n const unassignedTagUUIDs = tagUUIDs.filter((tagUUID) => tagBindingMapByTagId[tagUUID] === null);\n\n await concurrent({\n items: unassignedTagUUIDs,\n process: async (tagUUID) =>\n metastoreClient.repository.createMetaObject<TagBindingData>({\n objectType: ObjectType.TAG_BINDING,\n data: {\n objectUID: keboolaUID.serialize(objectId),\n tagUUID: tagUUID,\n },\n name: generateUUID(),\n ...meta,\n }),\n concurrency: 5,\n });\n };\n\n const unassignTags = async (tagUUIDs: string[], objectID: KeboolaObjectId) => {\n const tagBindingMapByTagId = await _getTagBindingMapByTagId(tagUUIDs, objectID);\n const assignedTagUUIDs = tagUUIDs.filter((tagUUID) => tagBindingMapByTagId[tagUUID] !== null);\n\n const tagBindings = assignedTagUUIDs.map((tagUUID) => tagBindingMapByTagId[tagUUID]!);\n\n await concurrent({\n items: tagBindings,\n process: async (tagBinding) =>\n metastoreClient.repository.deleteMetaObject({\n objectType: ObjectType.TAG_BINDING,\n UUID: tagBinding.uuid!,\n }),\n concurrency: 5,\n });\n };\n\n const unassignAllTags = async (objectID: KeboolaObjectId, signal?: AbortSignal) => {\n const tagBindings = await _getTagMetaObjects<TagBindingData>(ObjectType.TAG_BINDING, signal);\n\n const objectsTagBindings = tagBindings.filter(\n ({ data }) => data.objectUID === keboolaUID.serialize(objectID),\n );\n\n await _deleteTagBindings(objectsTagBindings);\n };\n\n const createAndAssignTag = async (\n data: TagData,\n objectId: KeboolaObjectId,\n meta: CreateMetaObjectMetaDataInput = {},\n ) => {\n const tag = await createTag(data, meta);\n await assignTags([tag.uuid!], objectId, meta);\n return tag;\n };\n\n return {\n // retrievals\n getTags,\n getTagsByObjectId,\n\n // modifications\n createTag,\n updateTag,\n deleteTag,\n assignTags,\n unassignTags,\n unassignAllTags,\n createAndAssignTag,\n };\n};\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/utils/concurrent.ts
|
|
4
|
+
var concurrent = async ({
|
|
5
|
+
items,
|
|
6
|
+
process,
|
|
7
|
+
concurrency = 2,
|
|
8
|
+
middlewares = []
|
|
9
|
+
}) => {
|
|
10
|
+
if (concurrency < 1) throw new Error("Concurrency must be greater than 0");
|
|
11
|
+
if (items.length === 0) return [];
|
|
12
|
+
if (concurrency === Infinity)
|
|
13
|
+
return Promise.all(items.map((item, index) => process(item, index, items.length)));
|
|
14
|
+
const n = items.length;
|
|
15
|
+
const results = new Array(n);
|
|
16
|
+
const processWithMiddlewares = middlewares.reduceRight(
|
|
17
|
+
(next, middleware) => middleware(next),
|
|
18
|
+
process
|
|
19
|
+
);
|
|
20
|
+
const queue = items.map((item, index) => async () => {
|
|
21
|
+
results[index] = await processWithMiddlewares(item, index, items.length);
|
|
22
|
+
});
|
|
23
|
+
const workers = Array.from(
|
|
24
|
+
{ length: Math.min(concurrency, items.length) },
|
|
25
|
+
async function processQueue() {
|
|
26
|
+
while (queue.length) {
|
|
27
|
+
await queue.shift()?.();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
await Promise.all(workers);
|
|
32
|
+
return results;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
exports.concurrent = concurrent;
|
|
36
|
+
//# sourceMappingURL=chunk-CVV4HROS.cjs.map
|
|
37
|
+
//# sourceMappingURL=chunk-CVV4HROS.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/concurrent.ts"],"names":[],"mappings":";;;AAgBO,IAAM,aAAa,OAAa;AAAA,EACrC,KAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc,CAAA;AAAA,EACd,cAAc;AAChB,CAAA,KAA6C;AAC3C,EAAA,IAAI,WAAA,GAAc,CAAA,EAAG,MAAM,IAAI,MAAM,oCAAoC,CAAA;AACzE,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,EAAC;AAChC,EAAA,IAAI,WAAA,KAAgB,QAAA;AAClB,IAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU,OAAA,CAAQ,IAAA,EAAM,KAAA,EAAO,KAAA,CAAM,MAAM,CAAC,CAAC,CAAA;AAEnF,EAAA,MAAM,IAAI,KAAA,CAAM,MAAA;AAChB,EAAA,MAAM,OAAA,GAAe,IAAI,KAAA,CAAM,CAAC,CAAA;AAEhC,EAAA,MAAM,yBAAyB,WAAA,CAAY,WAAA;AAAA,IACzC,CAAC,IAAA,EAAM,UAAA,KAAe,UAAA,CAAW,IAAI,CAAA;AAAA,IACrC;AAAA,GACF;AAEA,EAAA,MAAM,QAAQ,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,UAAU,YAAY;AACnD,IAAA,OAAA,CAAQ,KAAK,CAAA,GAAI,MAAM,uBAAuB,IAAA,EAAM,KAAA,EAAO,MAAM,MAAM,CAAA;AAAA,EACzE,CAAC,CAAA;AAED,EAAA,MAAM,UAAU,KAAA,CAAM,IAAA;AAAA,IACpB,EAAE,MAAA,EAAQ,IAAA,CAAK,IAAI,WAAA,EAAa,KAAA,CAAM,MAAM,CAAA,EAAE;AAAA,IAC9C,eAAe,YAAA,GAAe;AAC5B,MAAA,OAAO,MAAM,MAAA,EAAQ;AACnB,QAAA,MAAM,KAAA,CAAM,OAAM,IAAI;AAAA,MACxB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAM,OAAA,CAAQ,IAAI,OAAO,CAAA;AACzB,EAAA,OAAO,OAAA;AACT","file":"chunk-CVV4HROS.cjs","sourcesContent":["type ProcessFn<T, R> = (item: T, index: number, arrayLength: number) => Promise<R>;\nexport type MiddlewareFn<T, R> = (next: ProcessFn<T, R>) => ProcessFn<T, R>;\n\nexport type ConcurrentOptions<T, R> = {\n items: T[];\n process: ProcessFn<T, R>;\n concurrency?: number;\n middlewares?: MiddlewareFn<T, R>[];\n};\n\n/**\n * Executes an asynchronous callback function on an array of items, processing multiple items concurrently with a specified concurrency limit.\n * It behaves similarly to Promise.all(), failing on the first rejected promise.\n * The order of the results matches the order of the promises.\n * The API is the same as Bluebird.map().\n */\nexport const concurrent = async <T, R>({\n items,\n process,\n concurrency = 2,\n middlewares = [],\n}: ConcurrentOptions<T, R>): Promise<R[]> => {\n if (concurrency < 1) throw new Error('Concurrency must be greater than 0');\n if (items.length === 0) return [];\n if (concurrency === Infinity)\n return Promise.all(items.map((item, index) => process(item, index, items.length)));\n\n const n = items.length;\n const results: R[] = new Array(n);\n\n const processWithMiddlewares = middlewares.reduceRight(\n (next, middleware) => middleware(next),\n process,\n );\n\n const queue = items.map((item, index) => async () => {\n results[index] = await processWithMiddlewares(item, index, items.length);\n });\n\n const workers = Array.from(\n { length: Math.min(concurrency, items.length) },\n async function processQueue() {\n while (queue.length) {\n await queue.shift()?.();\n }\n },\n );\n\n await Promise.all(workers);\n return results;\n};\n"]}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/utils/createAbortError.ts
|
|
4
|
+
var createAbortError = (reason) => new DOMException(reason, "AbortError");
|
|
5
|
+
|
|
6
|
+
// src/utils/delay.ts
|
|
7
|
+
var delay = (timeout, signal) => new Promise((resolve, reject) => {
|
|
8
|
+
if (signal?.aborted) return reject(createAbortError(signal.reason));
|
|
9
|
+
const timeoutId = setTimeout(resolve, timeout);
|
|
10
|
+
signal?.addEventListener(
|
|
11
|
+
"abort",
|
|
12
|
+
() => {
|
|
13
|
+
clearTimeout(timeoutId);
|
|
14
|
+
reject(createAbortError(signal.reason));
|
|
15
|
+
},
|
|
16
|
+
{ once: true }
|
|
17
|
+
);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// src/utils/poll.ts
|
|
21
|
+
var message = {
|
|
22
|
+
PollPredicateError: "Poll predicate failed",
|
|
23
|
+
PollTimeoutError: "Poll timeout exceeded",
|
|
24
|
+
PollPollTimeoutError: "Poll data failed condition"
|
|
25
|
+
};
|
|
26
|
+
var PollException = class extends Error {
|
|
27
|
+
result;
|
|
28
|
+
constructor(type, result) {
|
|
29
|
+
super(type, { cause: message[type] });
|
|
30
|
+
this.result = result;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
var poll = async ({
|
|
34
|
+
pollFn,
|
|
35
|
+
interval,
|
|
36
|
+
isDone,
|
|
37
|
+
isFailed,
|
|
38
|
+
abortSignal,
|
|
39
|
+
maxAttempts = Infinity
|
|
40
|
+
}) => {
|
|
41
|
+
if (abortSignal?.aborted) throw createAbortError(abortSignal.reason);
|
|
42
|
+
if (interval < 1) throw new Error("Invalid poll interval");
|
|
43
|
+
if (maxAttempts < 1) throw new Error("Invalid poll maxAttempts");
|
|
44
|
+
let callCount = 0;
|
|
45
|
+
while (true) {
|
|
46
|
+
callCount++;
|
|
47
|
+
const data = await pollFn(abortSignal);
|
|
48
|
+
const result = { data, callCount };
|
|
49
|
+
try {
|
|
50
|
+
if (isDone(data)) return result;
|
|
51
|
+
if (isFailed?.(data) ?? false) throw new PollException("PollPollTimeoutError", result);
|
|
52
|
+
} catch (error) {
|
|
53
|
+
if (error instanceof PollException) throw error;
|
|
54
|
+
throw new PollException("PollPredicateError", result);
|
|
55
|
+
}
|
|
56
|
+
if (callCount >= maxAttempts) throw new PollException("PollTimeoutError", result);
|
|
57
|
+
await delay(interval, abortSignal);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// src/sdks/storage/storageSdk.ts
|
|
62
|
+
var DEFAULT_POLL_INTERVAL = 2e3;
|
|
63
|
+
var JOB_TERMINAL_STATUSES = /* @__PURE__ */ new Set(["success", "warning", "error", "terminated", "cancelled"]);
|
|
64
|
+
var createStorageSdk = ({ storageClient }) => {
|
|
65
|
+
const waitForJob = async (job, options) => {
|
|
66
|
+
const { data } = await poll({
|
|
67
|
+
pollFn: (abortSignal) => storageClient.jobs.getJob(job.id, abortSignal),
|
|
68
|
+
isDone: (j) => JOB_TERMINAL_STATUSES.has(j.status),
|
|
69
|
+
interval: options?.interval ?? DEFAULT_POLL_INTERVAL,
|
|
70
|
+
maxAttempts: options?.maxAttempts,
|
|
71
|
+
abortSignal: options?.abortSignal
|
|
72
|
+
});
|
|
73
|
+
return data;
|
|
74
|
+
};
|
|
75
|
+
const createTable = async (bucketId, body, options) => {
|
|
76
|
+
const job = await storageClient.tables.createTableAsync(bucketId, body, options?.abortSignal);
|
|
77
|
+
return waitForJob(job, options);
|
|
78
|
+
};
|
|
79
|
+
const importFromFile = async (tableId, body, options) => {
|
|
80
|
+
const job = await storageClient.tables.importAsync(tableId, body, options?.abortSignal);
|
|
81
|
+
return waitForJob(job, options);
|
|
82
|
+
};
|
|
83
|
+
const exportToFile = async (tableId, body, options) => {
|
|
84
|
+
const job = await storageClient.tables.exportAsync(tableId, body, options?.abortSignal);
|
|
85
|
+
return waitForJob(job, options);
|
|
86
|
+
};
|
|
87
|
+
const getBucketListing = async (bucketId, signal) => storageClient.buckets.getListing(bucketId, signal);
|
|
88
|
+
const listBucketListings = async (signal) => storageClient.buckets.listListings(signal);
|
|
89
|
+
const createBucketListing = async (bucketId, input, options) => {
|
|
90
|
+
const job = await storageClient.buckets.createListing(bucketId, input, options?.abortSignal);
|
|
91
|
+
return waitForJob(job, options);
|
|
92
|
+
};
|
|
93
|
+
const updateBucketListing = async (bucketId, input, options) => {
|
|
94
|
+
const job = await storageClient.buckets.updateListing(bucketId, input, options?.abortSignal);
|
|
95
|
+
return waitForJob(job, options);
|
|
96
|
+
};
|
|
97
|
+
const deleteBucketListing = async (bucketId, options) => {
|
|
98
|
+
const job = await storageClient.buckets.deleteListing(bucketId, options?.abortSignal);
|
|
99
|
+
return waitForJob(job, options);
|
|
100
|
+
};
|
|
101
|
+
return {
|
|
102
|
+
createTable,
|
|
103
|
+
importFromFile,
|
|
104
|
+
exportToFile,
|
|
105
|
+
getBucketListing,
|
|
106
|
+
listBucketListings,
|
|
107
|
+
createBucketListing,
|
|
108
|
+
updateBucketListing,
|
|
109
|
+
deleteBucketListing
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// src/sdks/storage/tableIdParser.ts
|
|
114
|
+
function parseTableId(tableId, defaultStage, defaultBucket) {
|
|
115
|
+
const parts = tableId.match(/^(in|out)?\.(.+)?\.(.+)?$/);
|
|
116
|
+
return {
|
|
117
|
+
stage: parts ? parts[1] || defaultStage : defaultStage,
|
|
118
|
+
bucket: parts ? parts[2] || defaultBucket : defaultBucket,
|
|
119
|
+
table: parts ? parts[3] || "" : ""
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function parse(tableId, options = {}) {
|
|
123
|
+
const parts = parseTableId(
|
|
124
|
+
tableId || "",
|
|
125
|
+
options.defaultStage || "",
|
|
126
|
+
options.defaultBucket || ""
|
|
127
|
+
);
|
|
128
|
+
const { stage, bucket, table } = parts;
|
|
129
|
+
return {
|
|
130
|
+
tableId: `${stage}.${bucket}.${table}`,
|
|
131
|
+
parts,
|
|
132
|
+
setPart: (partNameToSet, value) => {
|
|
133
|
+
const result = ["stage", "bucket", "table"].reduce(
|
|
134
|
+
(memo, partName) => partName === partNameToSet ? `${memo}.${value}` : `${memo}.${parts[partName]}`,
|
|
135
|
+
""
|
|
136
|
+
).slice(1);
|
|
137
|
+
return parse(result);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
var tableIdParser = { parse };
|
|
142
|
+
|
|
143
|
+
// src/sdks/storage/tableName.ts
|
|
144
|
+
var stripLegacyBucketPrefix = (bucketName) => {
|
|
145
|
+
if (!bucketName.includes("c-")) {
|
|
146
|
+
return bucketName;
|
|
147
|
+
}
|
|
148
|
+
return bucketName.substring(bucketName.indexOf("c-") + "c-".length);
|
|
149
|
+
};
|
|
150
|
+
var getBucketDisplayNameFromName = (bucketName, options = {}) => {
|
|
151
|
+
if (!bucketName) return "";
|
|
152
|
+
return options.disableLegacyBucketPrefix ? bucketName : stripLegacyBucketPrefix(bucketName);
|
|
153
|
+
};
|
|
154
|
+
var tableNameParsed = (tableId, options = {}) => {
|
|
155
|
+
const { stage, bucket, table } = tableIdParser.parse(tableId).parts;
|
|
156
|
+
const bucketName = options.storageBucket?.displayName ?? getBucketDisplayNameFromName(bucket, options);
|
|
157
|
+
if (stage && bucketName && table) {
|
|
158
|
+
return `${bucketName} / ${table}`;
|
|
159
|
+
}
|
|
160
|
+
return tableId;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
// src/sdks/storage/fqid.ts
|
|
164
|
+
var FQID_TYPES = {
|
|
165
|
+
organization: "ORG",
|
|
166
|
+
maintainer: "MTR",
|
|
167
|
+
project: "PRJ",
|
|
168
|
+
bucket: "BCT",
|
|
169
|
+
table: "TBL",
|
|
170
|
+
column: "COL",
|
|
171
|
+
config: "CFG",
|
|
172
|
+
component: "CMP",
|
|
173
|
+
externalTable: "EX_TBL",
|
|
174
|
+
externalColumn: "EX_COL"
|
|
175
|
+
};
|
|
176
|
+
var isFQIDType = (value) => {
|
|
177
|
+
return Object.values(FQID_TYPES).includes(value);
|
|
178
|
+
};
|
|
179
|
+
var parseFQID = (fqid) => {
|
|
180
|
+
if (!fqid?.trim()) return {};
|
|
181
|
+
const firstSegment = fqid.split(" ")[0] ?? "";
|
|
182
|
+
const [type, ...rest] = firstSegment.split("/");
|
|
183
|
+
if (!type || !isFQIDType(type)) return {};
|
|
184
|
+
switch (type) {
|
|
185
|
+
case "ORG":
|
|
186
|
+
return { type, organizationId: rest[0] };
|
|
187
|
+
case "MTR":
|
|
188
|
+
return { type, maintainerId: rest[0] };
|
|
189
|
+
case "PRJ":
|
|
190
|
+
return { type, projectId: rest[0] };
|
|
191
|
+
case "BCT":
|
|
192
|
+
return { type, projectId: rest[0], bucketId: rest[1] };
|
|
193
|
+
case "TBL":
|
|
194
|
+
return { type, projectId: rest[0], tableId: rest[1] };
|
|
195
|
+
case "COL":
|
|
196
|
+
return { type, projectId: rest[0], tableId: rest[1], column: rest[2] };
|
|
197
|
+
case "CMP":
|
|
198
|
+
return { type, projectId: rest[0], componentId: rest[1] };
|
|
199
|
+
case "CFG":
|
|
200
|
+
return { type, projectId: rest[0], componentId: rest[1], configId: rest[2] };
|
|
201
|
+
default:
|
|
202
|
+
return {};
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
var constructFQID = ({ type, data }) => {
|
|
206
|
+
switch (type) {
|
|
207
|
+
case FQID_TYPES.organization:
|
|
208
|
+
return `ORG/${data.organizationId}`;
|
|
209
|
+
case FQID_TYPES.maintainer:
|
|
210
|
+
return `MTR/${data.maintainerId}`;
|
|
211
|
+
case FQID_TYPES.project:
|
|
212
|
+
return `PRJ/${data.projectId}`;
|
|
213
|
+
case FQID_TYPES.bucket:
|
|
214
|
+
return `BCT/${data.projectId}/${data.bucketId}`;
|
|
215
|
+
case FQID_TYPES.table:
|
|
216
|
+
return `TBL/${data.projectId}/${data.tableId}`;
|
|
217
|
+
case FQID_TYPES.column:
|
|
218
|
+
return `COL/${data.projectId}/${data.tableId}/${data.column}`;
|
|
219
|
+
case FQID_TYPES.component:
|
|
220
|
+
return `CMP/${data.projectId}/${data.componentId}`;
|
|
221
|
+
case FQID_TYPES.config:
|
|
222
|
+
return `CFG/${data.projectId}/${data.componentId}/${data.configId}`;
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
// src/sdks/storage/devBranch.ts
|
|
227
|
+
var parseDevBranchId = (path) => {
|
|
228
|
+
const pathParts = path.split("/");
|
|
229
|
+
const branchKeywordIndex = pathParts.findIndex((pathPart) => pathPart === "branch");
|
|
230
|
+
if (branchKeywordIndex === -1) {
|
|
231
|
+
return null;
|
|
232
|
+
}
|
|
233
|
+
const branchId = pathParts[branchKeywordIndex + 1];
|
|
234
|
+
if (!branchId) {
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
const branchIdInt = parseInt(branchId, 10);
|
|
238
|
+
if (/^\d+$/.test(branchId) && branchIdInt > 0) {
|
|
239
|
+
return branchIdInt;
|
|
240
|
+
}
|
|
241
|
+
return null;
|
|
242
|
+
};
|
|
243
|
+
var parseCurrentDevBranchIdFromUrl = () => {
|
|
244
|
+
if (typeof location === "undefined") {
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
return parseDevBranchId(location.pathname);
|
|
248
|
+
};
|
|
249
|
+
var prefixTagsWithDevBranchId = (tags, branchId = null, options = {}) => {
|
|
250
|
+
if (!branchId || options.hasStorageBranches) {
|
|
251
|
+
return tags;
|
|
252
|
+
}
|
|
253
|
+
return tags.map((tag) => `${branchId}-${tag}`);
|
|
254
|
+
};
|
|
255
|
+
var removeBranchFromUrl = (url) => {
|
|
256
|
+
const partToRemove = "branch/\\d+/";
|
|
257
|
+
const regex = new RegExp(partToRemove, "g");
|
|
258
|
+
return url.replace(regex, "");
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
exports.FQID_TYPES = FQID_TYPES;
|
|
262
|
+
exports.PollException = PollException;
|
|
263
|
+
exports.constructFQID = constructFQID;
|
|
264
|
+
exports.createStorageSdk = createStorageSdk;
|
|
265
|
+
exports.delay = delay;
|
|
266
|
+
exports.getBucketDisplayNameFromName = getBucketDisplayNameFromName;
|
|
267
|
+
exports.parse = parse;
|
|
268
|
+
exports.parseCurrentDevBranchIdFromUrl = parseCurrentDevBranchIdFromUrl;
|
|
269
|
+
exports.parseDevBranchId = parseDevBranchId;
|
|
270
|
+
exports.parseFQID = parseFQID;
|
|
271
|
+
exports.poll = poll;
|
|
272
|
+
exports.prefixTagsWithDevBranchId = prefixTagsWithDevBranchId;
|
|
273
|
+
exports.removeBranchFromUrl = removeBranchFromUrl;
|
|
274
|
+
exports.tableIdParser = tableIdParser;
|
|
275
|
+
exports.tableNameParsed = tableNameParsed;
|
|
276
|
+
//# sourceMappingURL=chunk-DCTDH77P.cjs.map
|
|
277
|
+
//# sourceMappingURL=chunk-DCTDH77P.cjs.map
|