@keboola/api-client 0.1.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -1
- package/dist/ai/index.cjs +7 -1
- package/dist/ai/index.cjs.map +1 -1
- package/dist/ai/index.js +7 -1
- package/dist/ai/index.js.map +1 -1
- package/dist/assets/index.cjs +7 -1
- package/dist/assets/index.cjs.map +1 -1
- package/dist/assets/index.js +7 -1
- package/dist/assets/index.js.map +1 -1
- package/dist/chat/index.cjs +3 -1
- package/dist/chat/index.cjs.map +1 -1
- package/dist/chat/index.d.cts +1 -1
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +3 -1
- package/dist/chat/index.js.map +1 -1
- package/dist/chat/types.d.cts +1 -1
- package/dist/chat/types.d.ts +1 -1
- package/dist/constants/index.cjs +145 -0
- package/dist/constants/index.cjs.map +1 -0
- package/dist/constants/index.d.cts +28 -0
- package/dist/constants/index.d.ts +28 -0
- package/dist/constants/index.js +142 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/dataScience/index.cjs +7 -2
- package/dist/dataScience/index.cjs.map +1 -1
- package/dist/dataScience/index.js +7 -2
- package/dist/dataScience/index.js.map +1 -1
- package/dist/domain/permissions/index.cjs +13 -0
- package/dist/domain/permissions/index.cjs.map +1 -0
- package/dist/domain/permissions/index.d.cts +5 -0
- package/dist/domain/permissions/index.d.ts +5 -0
- package/dist/domain/permissions/index.js +11 -0
- package/dist/domain/permissions/index.js.map +1 -0
- package/dist/editor/index.cjs +7 -10
- package/dist/editor/index.cjs.map +1 -1
- package/dist/editor/index.d.cts +11 -19
- package/dist/editor/index.d.ts +11 -19
- package/dist/editor/index.js +7 -10
- package/dist/editor/index.js.map +1 -1
- package/dist/editor/types.d.cts +1 -1
- package/dist/editor/types.d.ts +1 -1
- package/dist/encryption/index.cjs +7 -1
- package/dist/encryption/index.cjs.map +1 -1
- package/dist/encryption/index.js +7 -1
- package/dist/encryption/index.js.map +1 -1
- package/dist/import/index.cjs +7 -1
- package/dist/import/index.cjs.map +1 -1
- package/dist/import/index.js +7 -1
- package/dist/import/index.js.map +1 -1
- package/dist/index.cjs +308 -42
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1085 -122
- package/dist/index.d.ts +1085 -122
- package/dist/index.js +308 -42
- package/dist/index.js.map +1 -1
- package/dist/management/index.cjs +40 -23
- package/dist/management/index.cjs.map +1 -1
- package/dist/management/index.d.cts +59 -23
- package/dist/management/index.d.ts +59 -23
- package/dist/management/index.js +40 -23
- package/dist/management/index.js.map +1 -1
- package/dist/management/types.d.cts +2 -2
- package/dist/management/types.d.ts +2 -2
- package/dist/metastore/index.cjs +7 -1
- package/dist/metastore/index.cjs.map +1 -1
- package/dist/metastore/index.js +7 -1
- package/dist/metastore/index.js.map +1 -1
- package/dist/oauth/index.cjs +234 -0
- package/dist/oauth/index.cjs.map +1 -0
- package/dist/oauth/index.d.cts +12 -0
- package/dist/oauth/index.d.ts +12 -0
- package/dist/oauth/index.js +228 -0
- package/dist/oauth/index.js.map +1 -0
- package/dist/oauth/types.cjs +4 -0
- package/dist/oauth/types.cjs.map +1 -0
- package/dist/oauth/types.d.cts +34 -0
- package/dist/oauth/types.d.ts +34 -0
- package/dist/oauth/types.js +3 -0
- package/dist/oauth/types.js.map +1 -0
- package/dist/queryService/index.cjs +7 -1
- package/dist/queryService/index.cjs.map +1 -1
- package/dist/queryService/index.js +7 -1
- package/dist/queryService/index.js.map +1 -1
- package/dist/queue/index.cjs +7 -1
- package/dist/queue/index.cjs.map +1 -1
- package/dist/queue/index.js +7 -1
- package/dist/queue/index.js.map +1 -1
- package/dist/sdk/configurations/index.cjs +14 -0
- package/dist/sdk/configurations/index.cjs.map +1 -0
- package/dist/sdk/configurations/index.d.cts +24 -0
- package/dist/sdk/configurations/index.d.ts +24 -0
- package/dist/sdk/configurations/index.js +11 -0
- package/dist/sdk/configurations/index.js.map +1 -0
- package/dist/sdk/storage/index.cjs +179 -1
- package/dist/sdk/storage/index.cjs.map +1 -1
- package/dist/sdk/storage/index.d.cts +118 -13
- package/dist/sdk/storage/index.d.ts +118 -13
- package/dist/sdk/storage/index.js +169 -2
- package/dist/sdk/storage/index.js.map +1 -1
- package/dist/status/index.cjs +7 -1
- package/dist/status/index.cjs.map +1 -1
- package/dist/status/index.js +7 -1
- package/dist/status/index.js.map +1 -1
- package/dist/storage/index.cjs +107 -9
- 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 +107 -9
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/types.d.cts +2977 -1306
- package/dist/storage/types.d.ts +2977 -1306
- package/dist/{storageClient-DPLh_p0V.d.cts → storageClient-DSLTM3Cr.d.cts} +20 -1
- package/dist/{storageClient-YVWer22Y.d.ts → storageClient-DrYOs4Xm.d.ts} +20 -1
- package/dist/storageSdk-BBqAo0Vx.d.cts +143 -0
- package/dist/storageSdk-ZVmKQQSl.d.ts +143 -0
- package/dist/syncActions/index.cjs +7 -1
- package/dist/syncActions/index.cjs.map +1 -1
- package/dist/syncActions/index.js +7 -1
- package/dist/syncActions/index.js.map +1 -1
- package/dist/telemetry/index.cjs +7 -1
- package/dist/telemetry/index.cjs.map +1 -1
- package/dist/telemetry/index.js +7 -1
- package/dist/telemetry/index.js.map +1 -1
- package/dist/{types-B7k8S4ki.d.ts → types-B--u7l2H.d.ts} +33 -118
- package/dist/{types-BeShtGlc.d.cts → types-BTcT8Q0T.d.cts} +15 -1
- package/dist/{types-BeShtGlc.d.ts → types-BTcT8Q0T.d.ts} +15 -1
- package/dist/{types-BNQK_jR_.d.cts → types-C0Owx2P7.d.cts} +33 -118
- package/dist/{types-DJ6nbNq5.d.cts → types-CNkgmuhe.d.cts} +1 -1
- package/dist/{types-BjrNNn5I.d.ts → types-DzwzVgyG.d.ts} +1 -1
- package/dist/vault/index.cjs +3 -1
- package/dist/vault/index.cjs.map +1 -1
- package/dist/vault/index.js +3 -1
- package/dist/vault/index.js.map +1 -1
- package/dist/verify/index.cjs +3 -1
- package/dist/verify/index.cjs.map +1 -1
- package/dist/verify/index.js +3 -1
- package/dist/verify/index.js.map +1 -1
- package/package.json +71 -5
package/dist/index.js
CHANGED
|
@@ -45,6 +45,25 @@ var ServiceUnavailableError = class _ServiceUnavailableError extends Error {
|
|
|
45
45
|
Object.setPrototypeOf(this, _ServiceUnavailableError.prototype);
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
|
+
|
|
49
|
+
// src/constants.ts
|
|
50
|
+
var KeboolaHttpHeader = {
|
|
51
|
+
STORAGE_API_TOKEN: "X-StorageApi-Token",
|
|
52
|
+
MANAGEMENT_API_TOKEN: "X-Kbc-Manageapitoken",
|
|
53
|
+
STORAGE_API_URL: "x-storageapi-url"
|
|
54
|
+
};
|
|
55
|
+
var HttpStatus = {
|
|
56
|
+
NO_CONTENT: 204,
|
|
57
|
+
BAD_REQUEST: 400,
|
|
58
|
+
UNPROCESSABLE_ENTITY: 422,
|
|
59
|
+
INTERNAL_SERVER_ERROR: 500,
|
|
60
|
+
BAD_GATEWAY: 502,
|
|
61
|
+
SERVICE_UNAVAILABLE: 503,
|
|
62
|
+
GATEWAY_TIMEOUT: 504
|
|
63
|
+
};
|
|
64
|
+
var ENCRYPTED_VALUE_PREFIX = "KBC::";
|
|
65
|
+
|
|
66
|
+
// src/fetchClient/createFetchClient/utils.ts
|
|
48
67
|
var HttpHeader = {
|
|
49
68
|
CONTENT_TYPE: "content-type",
|
|
50
69
|
CONTENT_DISPOSITION: "content-disposition"
|
|
@@ -64,7 +83,7 @@ function removeUndefined(obj) {
|
|
|
64
83
|
return objCopy;
|
|
65
84
|
}
|
|
66
85
|
var parseData = async (response) => {
|
|
67
|
-
if (response.status ===
|
|
86
|
+
if (response.status === HttpStatus.NO_CONTENT) return null;
|
|
68
87
|
const contentType = response.headers.get(HttpHeader.CONTENT_TYPE);
|
|
69
88
|
if (contentType && contentType == HttpContentType.JSON) {
|
|
70
89
|
return response.json();
|
|
@@ -284,14 +303,6 @@ var createAssetsClient = ({ baseUrl, middlewares }) => {
|
|
|
284
303
|
getPublishedChangelogPosts
|
|
285
304
|
};
|
|
286
305
|
};
|
|
287
|
-
|
|
288
|
-
// src/constants.ts
|
|
289
|
-
var KeboolaHttpHeader = {
|
|
290
|
-
STORAGE_API_TOKEN: "X-StorageApi-Token",
|
|
291
|
-
MANAGEMENT_API_TOKEN: "X-Kbc-Manageapitoken",
|
|
292
|
-
STORAGE_API_URL: "x-storageapi-url"
|
|
293
|
-
};
|
|
294
|
-
var ENCRYPTED_VALUE_PREFIX = "KBC::";
|
|
295
306
|
var SUGGESTION_CATEGORIES = ["error", "maintenance", "documentation"];
|
|
296
307
|
var suggestionCategorySchema = z.enum(SUGGESTION_CATEGORIES);
|
|
297
308
|
var suggestionSchema = z.object({
|
|
@@ -692,7 +703,7 @@ var createDataScienceClient = ({ baseUrl, middlewares }) => {
|
|
|
692
703
|
nextLogTimestamp
|
|
693
704
|
};
|
|
694
705
|
} catch (error) {
|
|
695
|
-
if (isApiError(error) && error.response.status ===
|
|
706
|
+
if (isApiError(error) && error.response.status === HttpStatus.BAD_REQUEST && TailError.safeParse(error.data).data?.context?.code === "apps.appNotRunning") {
|
|
696
707
|
return { entries: [], nextLogTimestamp: null };
|
|
697
708
|
}
|
|
698
709
|
throw error;
|
|
@@ -835,14 +846,6 @@ var createEditorClient = ({ baseUrl, middlewares }) => {
|
|
|
835
846
|
});
|
|
836
847
|
return data;
|
|
837
848
|
};
|
|
838
|
-
const getWorkspacePassword = async (id, signal) => {
|
|
839
|
-
const { data } = await client.get(
|
|
840
|
-
`/sql/sessions/{id}/workspace-password`,
|
|
841
|
-
{ path: { id } },
|
|
842
|
-
{ signal }
|
|
843
|
-
);
|
|
844
|
-
return data;
|
|
845
|
-
};
|
|
846
849
|
const resetWorkspacePassword = async (id) => {
|
|
847
850
|
const { data } = await client.post(`/sql/sessions/{id}/reset-password`, {
|
|
848
851
|
path: { id }
|
|
@@ -867,7 +870,6 @@ var createEditorClient = ({ baseUrl, middlewares }) => {
|
|
|
867
870
|
tableDefinition,
|
|
868
871
|
load,
|
|
869
872
|
unload,
|
|
870
|
-
getWorkspacePassword,
|
|
871
873
|
resetWorkspacePassword,
|
|
872
874
|
getSessionCredentials
|
|
873
875
|
};
|
|
@@ -959,6 +961,24 @@ var toolInfoSchema2 = z.object({
|
|
|
959
961
|
var toolsListResponseSchema2 = z.object({
|
|
960
962
|
tools: z.array(toolInfoSchema2)
|
|
961
963
|
});
|
|
964
|
+
var sandboxFileEntrySchema = z.object({
|
|
965
|
+
name: z.string(),
|
|
966
|
+
path: z.string(),
|
|
967
|
+
type: z.enum(["file", "dir"]),
|
|
968
|
+
size: z.number().int().nonnegative().optional()
|
|
969
|
+
});
|
|
970
|
+
var sandboxFileListingSchema = z.object({
|
|
971
|
+
entries: z.array(sandboxFileEntrySchema)
|
|
972
|
+
});
|
|
973
|
+
var sandboxFileContentSchema = z.object({
|
|
974
|
+
content: z.string(),
|
|
975
|
+
encoding: z.enum(["utf-8", "binary"]),
|
|
976
|
+
truncated: z.boolean(),
|
|
977
|
+
size: z.number().int().nonnegative()
|
|
978
|
+
});
|
|
979
|
+
var sandboxGitBranchSchema = z.object({
|
|
980
|
+
branch: z.string().nullable()
|
|
981
|
+
});
|
|
962
982
|
var createKaiAgentClient = ({ baseUrl, middlewares }) => {
|
|
963
983
|
const clientOptions = { baseUrl, middlewares };
|
|
964
984
|
const client = createOpenapiFetchClient(clientOptions);
|
|
@@ -996,6 +1016,10 @@ var createKaiAgentClient = ({ baseUrl, middlewares }) => {
|
|
|
996
1016
|
const submitToolOutput = async (chatId, body) => {
|
|
997
1017
|
await client.post("/api/chat/{id}/ui-tool-result", { path: { id: chatId }, body });
|
|
998
1018
|
};
|
|
1019
|
+
const stopChat = async (chatId) => {
|
|
1020
|
+
const { data } = await client.post("/api/chat/{id}/stop", { path: { id: chatId } });
|
|
1021
|
+
return data;
|
|
1022
|
+
};
|
|
999
1023
|
const getSuggestions = async (request, signal) => {
|
|
1000
1024
|
const { data } = await genericClient.post(
|
|
1001
1025
|
"/api/suggestions",
|
|
@@ -1064,6 +1088,42 @@ var createKaiAgentClient = ({ baseUrl, middlewares }) => {
|
|
|
1064
1088
|
}
|
|
1065
1089
|
return result.data;
|
|
1066
1090
|
};
|
|
1091
|
+
const listSandboxFiles = async (chatId, path, signal) => {
|
|
1092
|
+
const { data } = await genericClient.get(
|
|
1093
|
+
`/api/chat/${encodeURIComponent(chatId)}/sandbox/files`,
|
|
1094
|
+
{ query: path ? { path } : void 0 },
|
|
1095
|
+
{ signal }
|
|
1096
|
+
);
|
|
1097
|
+
const result = sandboxFileListingSchema.safeParse(data);
|
|
1098
|
+
if (!result.success) {
|
|
1099
|
+
throw new Error("Invalid sandbox files response format");
|
|
1100
|
+
}
|
|
1101
|
+
return result.data;
|
|
1102
|
+
};
|
|
1103
|
+
const readSandboxFile = async (chatId, path, signal) => {
|
|
1104
|
+
const { data } = await genericClient.get(
|
|
1105
|
+
`/api/chat/${encodeURIComponent(chatId)}/sandbox/file`,
|
|
1106
|
+
{ query: { path } },
|
|
1107
|
+
{ signal }
|
|
1108
|
+
);
|
|
1109
|
+
const result = sandboxFileContentSchema.safeParse(data);
|
|
1110
|
+
if (!result.success) {
|
|
1111
|
+
throw new Error("Invalid sandbox file response format");
|
|
1112
|
+
}
|
|
1113
|
+
return result.data;
|
|
1114
|
+
};
|
|
1115
|
+
const getSandboxGitBranch = async (chatId, signal) => {
|
|
1116
|
+
const { data } = await genericClient.get(
|
|
1117
|
+
`/api/chat/${encodeURIComponent(chatId)}/sandbox/git-branch`,
|
|
1118
|
+
{},
|
|
1119
|
+
{ signal }
|
|
1120
|
+
);
|
|
1121
|
+
const result = sandboxGitBranchSchema.safeParse(data);
|
|
1122
|
+
if (!result.success) {
|
|
1123
|
+
throw new Error("Invalid sandbox git-branch response format");
|
|
1124
|
+
}
|
|
1125
|
+
return result.data;
|
|
1126
|
+
};
|
|
1067
1127
|
const chatStreamUrl = baseUrl + "/api/chat";
|
|
1068
1128
|
return {
|
|
1069
1129
|
getHistory,
|
|
@@ -1075,12 +1135,16 @@ var createKaiAgentClient = ({ baseUrl, middlewares }) => {
|
|
|
1075
1135
|
getUsage,
|
|
1076
1136
|
approveToolCall,
|
|
1077
1137
|
submitToolOutput,
|
|
1138
|
+
stopChat,
|
|
1078
1139
|
getSuggestions,
|
|
1079
1140
|
getAgentSettings,
|
|
1080
1141
|
updateAgentSettings,
|
|
1081
1142
|
getUserAgentSettings,
|
|
1082
1143
|
updateUserAgentSettings,
|
|
1083
1144
|
getToolsList,
|
|
1145
|
+
listSandboxFiles,
|
|
1146
|
+
readSandboxFile,
|
|
1147
|
+
getSandboxGitBranch,
|
|
1084
1148
|
chatStreamUrl
|
|
1085
1149
|
};
|
|
1086
1150
|
};
|
|
@@ -1108,6 +1172,7 @@ var createVerifyClient = () => {
|
|
|
1108
1172
|
};
|
|
1109
1173
|
|
|
1110
1174
|
// src/clients/management/authMiddleware.ts
|
|
1175
|
+
var TOKEN_CACHE_TTL_MS = 6e4;
|
|
1111
1176
|
var isManagementClientAuthError = (error) => error instanceof ManagementClientAuthError;
|
|
1112
1177
|
var createAuth = (baseUrl) => {
|
|
1113
1178
|
const fetchClient = createGenericFetchClient({ baseUrl });
|
|
@@ -1153,18 +1218,34 @@ var createAuthMiddleware = ({
|
|
|
1153
1218
|
const auth = createAuth(baseUrl);
|
|
1154
1219
|
const verify = createVerifyClient();
|
|
1155
1220
|
let token = accessToken;
|
|
1221
|
+
let tokenValidUntil = 0;
|
|
1222
|
+
let inflightAuth = null;
|
|
1156
1223
|
const isDevelopment = process.env.NODE_ENV === "development";
|
|
1157
|
-
|
|
1158
|
-
if (
|
|
1224
|
+
const ensureValidToken = async () => {
|
|
1225
|
+
if (token && Date.now() < tokenValidUntil) return token;
|
|
1226
|
+
if (token) {
|
|
1159
1227
|
const tokenInfo = await verify.managementApiToken(baseUrl, token);
|
|
1160
1228
|
const isTokenValid = !tokenInfo.isDisabled && !tokenInfo.isExpired;
|
|
1161
|
-
if (
|
|
1162
|
-
|
|
1229
|
+
if (isTokenValid) {
|
|
1230
|
+
tokenValidUntil = Date.now() + TOKEN_CACHE_TTL_MS;
|
|
1231
|
+
return token;
|
|
1163
1232
|
}
|
|
1164
|
-
|
|
1165
|
-
|
|
1233
|
+
token = isDevelopment ? await auth.createCurrentUserSessionToken(token) : await auth.createAdminAccountSessionToken();
|
|
1234
|
+
tokenValidUntil = Date.now() + TOKEN_CACHE_TTL_MS;
|
|
1235
|
+
return token;
|
|
1236
|
+
}
|
|
1237
|
+
token = await auth.createAdminAccountSessionToken();
|
|
1238
|
+
tokenValidUntil = Date.now() + TOKEN_CACHE_TTL_MS;
|
|
1239
|
+
return token;
|
|
1240
|
+
};
|
|
1241
|
+
return (next) => async (request) => {
|
|
1242
|
+
if (!inflightAuth) {
|
|
1243
|
+
inflightAuth = ensureValidToken().finally(() => {
|
|
1244
|
+
inflightAuth = null;
|
|
1245
|
+
});
|
|
1166
1246
|
}
|
|
1167
|
-
|
|
1247
|
+
const validToken = await inflightAuth;
|
|
1248
|
+
request.request.headers.set(KeboolaHttpHeader.MANAGEMENT_API_TOKEN, validToken);
|
|
1168
1249
|
return next(request);
|
|
1169
1250
|
};
|
|
1170
1251
|
};
|
|
@@ -1368,14 +1449,6 @@ var createMaintainers = (client) => {
|
|
|
1368
1449
|
path: { id: maintainerId, invitationId }
|
|
1369
1450
|
});
|
|
1370
1451
|
};
|
|
1371
|
-
const getMaintainerOrganizations = async (maintainerId, signal) => {
|
|
1372
|
-
const { data } = await client.get(
|
|
1373
|
-
"/manage/maintainers/{id}/organizations",
|
|
1374
|
-
{ path: { id: maintainerId } },
|
|
1375
|
-
{ signal }
|
|
1376
|
-
);
|
|
1377
|
-
return data;
|
|
1378
|
-
};
|
|
1379
1452
|
const createMaintainerOrganization = async ({
|
|
1380
1453
|
maintainerId,
|
|
1381
1454
|
...body
|
|
@@ -1425,7 +1498,6 @@ var createMaintainers = (client) => {
|
|
|
1425
1498
|
getMaintainerInvitation,
|
|
1426
1499
|
createMaintainerInvitation,
|
|
1427
1500
|
deleteMaintainerInvitation,
|
|
1428
|
-
getMaintainerOrganizations,
|
|
1429
1501
|
createMaintainerOrganization,
|
|
1430
1502
|
getMaintainerMetadata,
|
|
1431
1503
|
setMaintainerMetadata,
|
|
@@ -1747,13 +1819,18 @@ var createManagementClient = ({
|
|
|
1747
1819
|
baseUrl,
|
|
1748
1820
|
middlewares
|
|
1749
1821
|
});
|
|
1822
|
+
const verifyToken = async (signal) => {
|
|
1823
|
+
const { data } = await openApiClient.get("/manage/tokens/verify", {}, { signal });
|
|
1824
|
+
return data;
|
|
1825
|
+
};
|
|
1750
1826
|
return {
|
|
1751
1827
|
currentUser: createCurrentUser(openApiClient),
|
|
1752
1828
|
features: createFeatures(client),
|
|
1753
1829
|
maintainers: createMaintainers(openApiClient),
|
|
1754
1830
|
organizations: createOrganizations(openApiClient),
|
|
1755
1831
|
projects: createProjects(client),
|
|
1756
|
-
users: createUsers(client)
|
|
1832
|
+
users: createUsers(client),
|
|
1833
|
+
verifyToken
|
|
1757
1834
|
};
|
|
1758
1835
|
};
|
|
1759
1836
|
|
|
@@ -1933,6 +2010,72 @@ var createMetastoreClient = ({ baseUrl, middlewares }) => {
|
|
|
1933
2010
|
};
|
|
1934
2011
|
};
|
|
1935
2012
|
|
|
2013
|
+
// src/clients/oauth/oauthClient.ts
|
|
2014
|
+
var createOauthClient = ({ baseUrl, middlewares }) => {
|
|
2015
|
+
const client = createGenericFetchClient({ baseUrl, middlewares });
|
|
2016
|
+
const getCredentials = async (query, signal) => {
|
|
2017
|
+
const { data } = await client.get(
|
|
2018
|
+
"/credentials",
|
|
2019
|
+
{ query },
|
|
2020
|
+
{ signal }
|
|
2021
|
+
);
|
|
2022
|
+
return data;
|
|
2023
|
+
};
|
|
2024
|
+
const getCredential = async (componentId, id, signal) => {
|
|
2025
|
+
const { data } = await client.get(
|
|
2026
|
+
"/credentials/{componentId}/{id}",
|
|
2027
|
+
{ path: { componentId, id } },
|
|
2028
|
+
{ signal }
|
|
2029
|
+
);
|
|
2030
|
+
return data;
|
|
2031
|
+
};
|
|
2032
|
+
const _createCredentials = async (componentId, body, signal) => {
|
|
2033
|
+
const { data } = await client.post(
|
|
2034
|
+
"/credentials/{componentId}",
|
|
2035
|
+
{ path: { componentId }, body },
|
|
2036
|
+
{ signal }
|
|
2037
|
+
);
|
|
2038
|
+
return data;
|
|
2039
|
+
};
|
|
2040
|
+
const _createLegacyCredentials = async (componentId, { data: credentialsData, ...rest }, signal) => {
|
|
2041
|
+
const { data } = await client.post(
|
|
2042
|
+
"/credentials/{componentId}",
|
|
2043
|
+
{
|
|
2044
|
+
path: { componentId },
|
|
2045
|
+
body: {
|
|
2046
|
+
...rest,
|
|
2047
|
+
"#data": JSON.stringify(credentialsData)
|
|
2048
|
+
}
|
|
2049
|
+
},
|
|
2050
|
+
{ signal }
|
|
2051
|
+
);
|
|
2052
|
+
return data;
|
|
2053
|
+
};
|
|
2054
|
+
const createCredential = async (componentId, body, signal) => {
|
|
2055
|
+
try {
|
|
2056
|
+
return await _createCredentials(componentId, body, signal);
|
|
2057
|
+
} catch (error) {
|
|
2058
|
+
if (isApiError(error) && error.response.status === HttpStatus.UNPROCESSABLE_ENTITY) {
|
|
2059
|
+
return _createLegacyCredentials(componentId, body, signal);
|
|
2060
|
+
}
|
|
2061
|
+
throw error;
|
|
2062
|
+
}
|
|
2063
|
+
};
|
|
2064
|
+
const deleteCredential = async (componentId, id, signal) => {
|
|
2065
|
+
await client.delete(
|
|
2066
|
+
"/credentials/{componentId}/{id}",
|
|
2067
|
+
{ path: { componentId, id } },
|
|
2068
|
+
{ signal }
|
|
2069
|
+
);
|
|
2070
|
+
};
|
|
2071
|
+
return {
|
|
2072
|
+
getCredentials,
|
|
2073
|
+
getCredential,
|
|
2074
|
+
createCredential,
|
|
2075
|
+
deleteCredential
|
|
2076
|
+
};
|
|
2077
|
+
};
|
|
2078
|
+
|
|
1936
2079
|
// src/clients/queryService/queryServiceClient.ts
|
|
1937
2080
|
var createQueryServiceClient = ({ baseUrl, middlewares }) => {
|
|
1938
2081
|
const client = createOpenapiFetchClient({
|
|
@@ -2088,7 +2231,6 @@ var createMergeRequests = (client) => {
|
|
|
2088
2231
|
const getMergeRequestWithActivityLog = async (id, signal) => {
|
|
2089
2232
|
const { data } = await client.get(
|
|
2090
2233
|
"/v2/storage/merge-request/{id}",
|
|
2091
|
-
// @ts-expect-error backend accepts `?include=activityLog`; OpenAPI schema regen pending (connection#7250).
|
|
2092
2234
|
{ path: { id }, query: { include: "activityLog" } },
|
|
2093
2235
|
{ signal }
|
|
2094
2236
|
);
|
|
@@ -2120,11 +2262,18 @@ var createMergeRequests = (client) => {
|
|
|
2120
2262
|
const requestChangesMergeRequest = async (id, reason) => {
|
|
2121
2263
|
const { data } = await client.put("/v2/storage/merge-request/{id}/request-changes", {
|
|
2122
2264
|
path: { id },
|
|
2123
|
-
// @ts-expect-error backend accepts optional `{ reason }` body; OpenAPI schema regen pending (connection#7250).
|
|
2124
2265
|
body: reason ? { reason } : void 0
|
|
2125
2266
|
});
|
|
2126
2267
|
return data;
|
|
2127
2268
|
};
|
|
2269
|
+
const getMergeRequestConflicts = async (id, signal) => {
|
|
2270
|
+
const { data } = await client.get(
|
|
2271
|
+
"/v2/storage/merge-request/{id}/conflicts",
|
|
2272
|
+
{ path: { id } },
|
|
2273
|
+
{ signal }
|
|
2274
|
+
);
|
|
2275
|
+
return data;
|
|
2276
|
+
};
|
|
2128
2277
|
return {
|
|
2129
2278
|
getMergeRequests,
|
|
2130
2279
|
getMergeRequest,
|
|
@@ -2133,7 +2282,8 @@ var createMergeRequests = (client) => {
|
|
|
2133
2282
|
updateMergeRequest,
|
|
2134
2283
|
requestReview,
|
|
2135
2284
|
approveMergeRequest,
|
|
2136
|
-
requestChangesMergeRequest
|
|
2285
|
+
requestChangesMergeRequest,
|
|
2286
|
+
getMergeRequestConflicts
|
|
2137
2287
|
};
|
|
2138
2288
|
};
|
|
2139
2289
|
|
|
@@ -2214,6 +2364,30 @@ var createBranches = (client) => {
|
|
|
2214
2364
|
};
|
|
2215
2365
|
};
|
|
2216
2366
|
|
|
2367
|
+
// src/clients/storage/buckets/listingConversion.ts
|
|
2368
|
+
var toBackendSubscribers = (subscribers) => subscribers.map((s) => `${s.type}:${s.email}`);
|
|
2369
|
+
var fromBackendSubscribers = (raw) => {
|
|
2370
|
+
const result = [];
|
|
2371
|
+
for (const entry of raw) {
|
|
2372
|
+
const colon = entry.indexOf(":");
|
|
2373
|
+
if (colon === -1) continue;
|
|
2374
|
+
const prefix = entry.slice(0, colon);
|
|
2375
|
+
const email2 = entry.slice(colon + 1);
|
|
2376
|
+
if (prefix !== "user" && prefix !== "group") continue;
|
|
2377
|
+
if (email2.length === 0) continue;
|
|
2378
|
+
result.push({ type: prefix, email: email2 });
|
|
2379
|
+
}
|
|
2380
|
+
return result;
|
|
2381
|
+
};
|
|
2382
|
+
var toBucketListing = (raw, bucketId) => ({
|
|
2383
|
+
bucketId,
|
|
2384
|
+
name: raw.name,
|
|
2385
|
+
description: raw.description ?? null,
|
|
2386
|
+
listingId: raw.bigquery.listingId,
|
|
2387
|
+
subscribers: fromBackendSubscribers(raw.bigquery.subscribers),
|
|
2388
|
+
createdAt: raw.createdAt
|
|
2389
|
+
});
|
|
2390
|
+
|
|
2217
2391
|
// src/clients/storage/buckets/buckets.ts
|
|
2218
2392
|
var createBuckets = (client) => {
|
|
2219
2393
|
const getBuckets = async (query = {}, signal) => {
|
|
@@ -2265,6 +2439,64 @@ var createBuckets = (client) => {
|
|
|
2265
2439
|
path: { taskId }
|
|
2266
2440
|
});
|
|
2267
2441
|
};
|
|
2442
|
+
const getListing = async (bucketId, signal) => {
|
|
2443
|
+
try {
|
|
2444
|
+
const { data } = await client.get(
|
|
2445
|
+
`/buckets/{bucketId}/listing`,
|
|
2446
|
+
{ path: { bucketId } },
|
|
2447
|
+
{ signal }
|
|
2448
|
+
);
|
|
2449
|
+
return toBucketListing(data, bucketId);
|
|
2450
|
+
} catch (error) {
|
|
2451
|
+
if (isApiError(error) && error.response.status === 404) return null;
|
|
2452
|
+
throw error;
|
|
2453
|
+
}
|
|
2454
|
+
};
|
|
2455
|
+
const createListing = async (bucketId, input, signal) => {
|
|
2456
|
+
const { data } = await client.post(
|
|
2457
|
+
`/buckets/{bucketId}/listing`,
|
|
2458
|
+
{
|
|
2459
|
+
path: { bucketId },
|
|
2460
|
+
body: {
|
|
2461
|
+
listingName: input.name,
|
|
2462
|
+
listingDescription: input.description?.trim() || null,
|
|
2463
|
+
bigquery: {
|
|
2464
|
+
listingId: input.listingId,
|
|
2465
|
+
subscribers: toBackendSubscribers(input.subscribers)
|
|
2466
|
+
}
|
|
2467
|
+
}
|
|
2468
|
+
},
|
|
2469
|
+
{ signal }
|
|
2470
|
+
);
|
|
2471
|
+
return data;
|
|
2472
|
+
};
|
|
2473
|
+
const updateListing = async (bucketId, input, signal) => {
|
|
2474
|
+
const body = {};
|
|
2475
|
+
if (input.name !== void 0) body.exposureName = input.name;
|
|
2476
|
+
if (input.description !== void 0) {
|
|
2477
|
+
body.exposureDescription = input.description?.trim() || null;
|
|
2478
|
+
}
|
|
2479
|
+
if (input.subscribers !== void 0) {
|
|
2480
|
+
body.bigquery = { subscribers: toBackendSubscribers(input.subscribers) };
|
|
2481
|
+
}
|
|
2482
|
+
if (Object.keys(body).length === 0) {
|
|
2483
|
+
throw new Error("updateListing requires at least one field");
|
|
2484
|
+
}
|
|
2485
|
+
const { data } = await client.patch(`/buckets/{bucketId}/listing`, { path: { bucketId }, body }, { signal });
|
|
2486
|
+
return data;
|
|
2487
|
+
};
|
|
2488
|
+
const deleteListing = async (bucketId, signal) => {
|
|
2489
|
+
const { data } = await client.delete(
|
|
2490
|
+
`/buckets/{bucketId}/listing`,
|
|
2491
|
+
{ path: { bucketId } },
|
|
2492
|
+
{ signal }
|
|
2493
|
+
);
|
|
2494
|
+
return data;
|
|
2495
|
+
};
|
|
2496
|
+
const listListings = async (signal) => {
|
|
2497
|
+
const { data } = await client.get(`/listings`, {}, { signal });
|
|
2498
|
+
return data.map((row) => toBucketListing(row, row.bucketId));
|
|
2499
|
+
};
|
|
2268
2500
|
return {
|
|
2269
2501
|
getBuckets,
|
|
2270
2502
|
getBucket,
|
|
@@ -2273,7 +2505,12 @@ var createBuckets = (client) => {
|
|
|
2273
2505
|
deleteBucket,
|
|
2274
2506
|
deleteBucketAsync,
|
|
2275
2507
|
createScheduledRefresh,
|
|
2276
|
-
deleteScheduledTask
|
|
2508
|
+
deleteScheduledTask,
|
|
2509
|
+
getListing,
|
|
2510
|
+
createListing,
|
|
2511
|
+
updateListing,
|
|
2512
|
+
deleteListing,
|
|
2513
|
+
listListings
|
|
2277
2514
|
};
|
|
2278
2515
|
};
|
|
2279
2516
|
|
|
@@ -3340,10 +3577,29 @@ var createStorageSdk = ({ storageClient }) => {
|
|
|
3340
3577
|
const job = await storageClient.tables.exportAsync(tableId, body, options?.abortSignal);
|
|
3341
3578
|
return waitForJob(job, options);
|
|
3342
3579
|
};
|
|
3580
|
+
const getBucketListing = async (bucketId, signal) => storageClient.buckets.getListing(bucketId, signal);
|
|
3581
|
+
const listBucketListings = async (signal) => storageClient.buckets.listListings(signal);
|
|
3582
|
+
const createBucketListing = async (bucketId, input, options) => {
|
|
3583
|
+
const job = await storageClient.buckets.createListing(bucketId, input, options?.abortSignal);
|
|
3584
|
+
return waitForJob(job, options);
|
|
3585
|
+
};
|
|
3586
|
+
const updateBucketListing = async (bucketId, input, options) => {
|
|
3587
|
+
const job = await storageClient.buckets.updateListing(bucketId, input, options?.abortSignal);
|
|
3588
|
+
return waitForJob(job, options);
|
|
3589
|
+
};
|
|
3590
|
+
const deleteBucketListing = async (bucketId, options) => {
|
|
3591
|
+
const job = await storageClient.buckets.deleteListing(bucketId, options?.abortSignal);
|
|
3592
|
+
return waitForJob(job, options);
|
|
3593
|
+
};
|
|
3343
3594
|
return {
|
|
3344
3595
|
createTable,
|
|
3345
3596
|
importFromFile,
|
|
3346
|
-
exportToFile
|
|
3597
|
+
exportToFile,
|
|
3598
|
+
getBucketListing,
|
|
3599
|
+
listBucketListings,
|
|
3600
|
+
createBucketListing,
|
|
3601
|
+
updateBucketListing,
|
|
3602
|
+
deleteBucketListing
|
|
3347
3603
|
};
|
|
3348
3604
|
};
|
|
3349
3605
|
|
|
@@ -3648,6 +3904,11 @@ var createClients = async ({
|
|
|
3648
3904
|
baseUrl: serviceBaseUrl,
|
|
3649
3905
|
middlewares: commonMiddlewares
|
|
3650
3906
|
})
|
|
3907
|
+
},
|
|
3908
|
+
{
|
|
3909
|
+
serviceId: "oauth",
|
|
3910
|
+
clientName: "oauth",
|
|
3911
|
+
clientFn: (serviceBaseUrl) => createOauthClient({ baseUrl: serviceBaseUrl, middlewares: commonMiddlewares })
|
|
3651
3912
|
}
|
|
3652
3913
|
]
|
|
3653
3914
|
});
|
|
@@ -3817,7 +4078,12 @@ var createLoggingMiddleware = (options = {}) => {
|
|
|
3817
4078
|
|
|
3818
4079
|
// src/middlewares/retryMiddleware.ts
|
|
3819
4080
|
var DEFAULT_MAX_RETRIES = 5;
|
|
3820
|
-
var DEFAULT_RETRYABLE_STATUSES = [
|
|
4081
|
+
var DEFAULT_RETRYABLE_STATUSES = [
|
|
4082
|
+
HttpStatus.INTERNAL_SERVER_ERROR,
|
|
4083
|
+
HttpStatus.BAD_GATEWAY,
|
|
4084
|
+
HttpStatus.SERVICE_UNAVAILABLE,
|
|
4085
|
+
HttpStatus.GATEWAY_TIMEOUT
|
|
4086
|
+
];
|
|
3821
4087
|
var DEFAULT_BACKOFF_FACTOR = 0.3;
|
|
3822
4088
|
var defaultShouldRetry = (error) => error instanceof ApiError && DEFAULT_RETRYABLE_STATUSES.includes(error.response.status);
|
|
3823
4089
|
var createRetryMiddleware = (options) => {
|