@keboola/api-client 24.0.0 → 25.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/API-SURFACE.md +4 -1
- package/dist/{ManagementClientAuthError-C7q1Jd9I.d.ts → ManagementClientAuthError-4J0S5tV-.d.ts} +1 -1
- package/dist/{ManagementClientAuthError-BuqHAOBO.d.cts → ManagementClientAuthError-CyDpa4NS.d.cts} +1 -1
- package/dist/ai/index.d.cts +1 -1
- package/dist/ai/index.d.ts +1 -1
- package/dist/assets/index.d.cts +1 -1
- package/dist/assets/index.d.ts +1 -1
- package/dist/auth/index.d.cts +2 -2
- package/dist/auth/index.d.ts +2 -2
- package/dist/chat/index.d.cts +1 -1
- package/dist/chat/index.d.ts +1 -1
- package/dist/{chunk-WFXW4XU3.js → chunk-AVH6F5LB.js} +48 -34
- package/dist/chunk-AVH6F5LB.js.map +1 -0
- package/dist/{chunk-KH6BHTXN.js → chunk-D4WOOKMI.js} +4 -4
- package/dist/chunk-D4WOOKMI.js.map +1 -0
- package/dist/{chunk-35MODDCL.cjs → chunk-F6ZAYTBX.cjs} +4 -4
- package/dist/chunk-F6ZAYTBX.cjs.map +1 -0
- package/dist/{chunk-3KEVPUSX.cjs → chunk-FJBP3MRI.cjs} +4 -3
- package/dist/chunk-FJBP3MRI.cjs.map +1 -0
- package/dist/chunk-HITKHHWN.cjs +174 -0
- package/dist/chunk-HITKHHWN.cjs.map +1 -0
- package/dist/{chunk-Y44G2VDC.cjs → chunk-HTVJR5WS.cjs} +120 -29
- package/dist/chunk-HTVJR5WS.cjs.map +1 -0
- package/dist/{chunk-D3ZZQIY2.cjs → chunk-IAYPOSMM.cjs} +4 -4
- package/dist/{chunk-D3ZZQIY2.cjs.map → chunk-IAYPOSMM.cjs.map} +1 -1
- package/dist/{chunk-XMC355U2.js → chunk-KEFXOJD7.js} +4 -3
- package/dist/chunk-KEFXOJD7.js.map +1 -0
- package/dist/chunk-LNZP2O4P.js +169 -0
- package/dist/chunk-LNZP2O4P.js.map +1 -0
- package/dist/chunk-N4COL54U.cjs +22 -0
- package/dist/chunk-N4COL54U.cjs.map +1 -0
- package/dist/{chunk-D6O5C67S.js → chunk-RVBGE2Z4.js} +3 -3
- package/dist/{chunk-D6O5C67S.js.map → chunk-RVBGE2Z4.js.map} +1 -1
- package/dist/{chunk-3MTY6I2W.js → chunk-UQ5CACMW.js} +120 -29
- package/dist/chunk-UQ5CACMW.js.map +1 -0
- package/dist/chunk-YGEJDWGG.js +19 -0
- package/dist/chunk-YGEJDWGG.js.map +1 -0
- package/dist/{chunk-QZKDBVAU.cjs → chunk-Z3HZ4MP4.cjs} +48 -34
- package/dist/chunk-Z3HZ4MP4.cjs.map +1 -0
- package/dist/constants/index.cjs +16 -164
- package/dist/constants/index.cjs.map +1 -1
- package/dist/constants/index.d.cts +1 -0
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.js +2 -163
- package/dist/constants/index.js.map +1 -1
- package/dist/{createGenericFetchClient-Df_wFqT8.d.cts → createGenericFetchClient-JcbIIqwF.d.cts} +1 -1
- package/dist/{createGenericFetchClient-Sl1DH71J.d.ts → createGenericFetchClient-ZGG5wbAC.d.ts} +1 -1
- package/dist/{createOpenapiFetchClient-BSy6dVM5.d.ts → createOpenapiFetchClient-6RX67Hws.d.ts} +1 -1
- package/dist/{createOpenapiFetchClient-GZxZgYHd.d.cts → createOpenapiFetchClient-BFmiJ9C5.d.cts} +1 -1
- package/dist/dataScience/index.d.cts +1 -1
- package/dist/dataScience/index.d.ts +1 -1
- package/dist/domain/permissions/index.d.cts +2 -2
- package/dist/domain/permissions/index.d.ts +2 -2
- package/dist/editor/index.d.cts +1 -1
- package/dist/editor/index.d.ts +1 -1
- package/dist/encryption/index.d.cts +2 -2
- package/dist/encryption/index.d.ts +2 -2
- package/dist/encryption/types.d.cts +1 -1
- package/dist/encryption/types.d.ts +1 -1
- package/dist/import/index.d.cts +1 -1
- package/dist/import/index.d.ts +1 -1
- package/dist/index.cjs +41 -32
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +36 -24
- package/dist/index.d.ts +36 -24
- package/dist/index.js +11 -10
- package/dist/index.js.map +1 -1
- package/dist/management/index.d.cts +3 -3
- package/dist/management/index.d.ts +3 -3
- package/dist/metastore/index.d.cts +2 -2
- package/dist/metastore/index.d.ts +2 -2
- package/dist/notifications/index.d.cts +1 -1
- package/dist/notifications/index.d.ts +1 -1
- package/dist/oauth/index.d.cts +1 -1
- package/dist/oauth/index.d.ts +1 -1
- package/dist/{project-DmC8vKnh.d.ts → project-CXqPYo4T.d.ts} +1 -1
- package/dist/{project-CSJzVylj.d.cts → project-CZPvcxRW.d.cts} +1 -1
- package/dist/queryService/index.d.cts +1 -1
- package/dist/queryService/index.d.ts +1 -1
- package/dist/queue/index.d.cts +1 -1
- package/dist/queue/index.d.ts +1 -1
- package/dist/scheduler/index.d.cts +1 -1
- package/dist/scheduler/index.d.ts +1 -1
- package/dist/sdk/configurations/index.cjs +3 -3
- package/dist/sdk/configurations/index.d.cts +6 -6
- package/dist/sdk/configurations/index.d.ts +6 -6
- package/dist/sdk/configurations/index.js +2 -2
- package/dist/sdk/semanticLayer/index.d.cts +2 -2
- package/dist/sdk/semanticLayer/index.d.ts +2 -2
- package/dist/sdk/semanticLayer/types.d.cts +2 -2
- package/dist/sdk/semanticLayer/types.d.ts +2 -2
- package/dist/sdk/storage/index.cjs +11 -11
- package/dist/sdk/storage/index.d.cts +6 -6
- package/dist/sdk/storage/index.d.ts +6 -6
- package/dist/sdk/storage/index.js +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 +2 -2
- package/dist/sdk/tag/types.d.ts +2 -2
- package/dist/sdk/vault/index.d.cts +3 -3
- package/dist/sdk/vault/index.d.ts +3 -3
- package/dist/status/index.d.cts +1 -1
- package/dist/status/index.d.ts +1 -1
- package/dist/storage/index.cjs +12 -3
- package/dist/storage/index.d.cts +25 -7
- package/dist/storage/index.d.ts +25 -7
- package/dist/storage/index.js +2 -1
- package/dist/storage/types.d.cts +72 -16
- package/dist/storage/types.d.ts +72 -16
- package/dist/{storageClient-CdFqTbn3.d.cts → storageClient-Cd4jVt58.d.ts} +14 -13
- package/dist/{storageClient-B4OooGB9.d.ts → storageClient-Dkcg7hKa.d.cts} +14 -13
- package/dist/{storageSdk-DA7U-1Hy.d.ts → storageSdk-15_Fbucc.d.cts} +3 -3
- package/dist/{storageSdk-U45zMbUb.d.cts → storageSdk-L6NOdgSJ.d.ts} +3 -3
- package/dist/stream/index.d.cts +1 -1
- package/dist/stream/index.d.ts +1 -1
- package/dist/syncActions/index.cjs +6 -2
- package/dist/syncActions/index.d.cts +26 -6
- package/dist/syncActions/index.d.ts +26 -6
- package/dist/syncActions/index.js +5 -1
- package/dist/syncActions/types.d.cts +55 -9
- package/dist/syncActions/types.d.ts +55 -9
- package/dist/telemetry/index.d.cts +2 -2
- package/dist/telemetry/index.d.ts +2 -2
- package/dist/{types-BhlJw2f2.d.ts → types-00IaLn3S.d.ts} +160 -1
- package/dist/{types-WGZN6XLN.d.cts → types-BqC3U0k0.d.cts} +1 -1
- package/dist/{types-Brc6lq7i.d.ts → types-Dkipk6NN.d.ts} +1 -1
- package/dist/{types-DNg4M5JV.d.ts → types-UwuKN9Kx.d.cts} +1 -1
- package/dist/{types-DNg4M5JV.d.cts → types-UwuKN9Kx.d.ts} +1 -1
- package/dist/{types-DVhcwrwN.d.cts → types-sVyfECai.d.cts} +160 -1
- package/dist/vault/index.d.cts +1 -1
- package/dist/vault/index.d.ts +1 -1
- package/package.json +1 -1
- package/surface/chat.md +1 -1
- package/surface/kaiAgent.md +1 -1
- package/surface/queue.md +7 -7
- package/surface/sdk.md +1 -1
- package/surface/storage.md +9 -8
- package/surface/syncActions.md +6 -1
- package/dist/chunk-35MODDCL.cjs.map +0 -1
- package/dist/chunk-3FZHFTLG.cjs +0 -12
- package/dist/chunk-3FZHFTLG.cjs.map +0 -1
- package/dist/chunk-3KEVPUSX.cjs.map +0 -1
- package/dist/chunk-3MTY6I2W.js.map +0 -1
- package/dist/chunk-GM3AKU5T.js +0 -10
- package/dist/chunk-GM3AKU5T.js.map +0 -1
- package/dist/chunk-KH6BHTXN.js.map +0 -1
- package/dist/chunk-QZKDBVAU.cjs.map +0 -1
- package/dist/chunk-WFXW4XU3.js.map +0 -1
- package/dist/chunk-XMC355U2.js.map +0 -1
- package/dist/chunk-Y44G2VDC.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/clients/syncActions/utils/response.ts","../src/clients/syncActions/constants.ts","../src/clients/syncActions/schemas.ts","../src/clients/syncActions/apify/schemas.ts","../src/clients/syncActions/apify/utils.ts","../src/clients/syncActions/apify/apify.ts","../src/clients/syncActions/gitRepository/schemas.ts","../src/clients/syncActions/gitRepository/utils.ts","../src/clients/syncActions/gitRepository/gitRepository.ts","../src/clients/syncActions/syncActionsClient.ts"],"names":["z","z2","email"],"mappings":"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","file":"chunk-UQ5CACMW.js","sourcesContent":["import { SyncActionError } from '../../../errors';\nimport type { ValidateStatusFn } from '../../../fetchClient';\nimport { defaultValidateStatus } from '../../../fetchClient';\n\ntype SyncActionErrorBody = {\n status?: unknown;\n message?: unknown;\n error?: unknown;\n exceptionId?: unknown;\n code?: unknown;\n};\n\nconst asErrorBody = (data: unknown): SyncActionErrorBody | null =>\n typeof data === 'object' && data !== null ? (data as SyncActionErrorBody) : null;\n\nconst asString = (value: unknown) => (typeof value === 'string' && value ? value : undefined);\nconst asNumber = (value: unknown) => (typeof value === 'number' ? value : undefined);\n\n/**\n * A component reports failure two ways: a non-2xx response, and a **2xx** whose body carries\n * `status: 'error'` (the component ran, and said no). Both are recognised here so every sync action\n * fails as one `SyncActionError` — `validateStatus` is the only hook that sees the parsed body of a\n * successful response, which is what the second case needs.\n *\n * Throwing rather than returning the error is deliberate. `coreFetch` only rethrows a returned value\n * that is an `ApiError`, and `SyncActionError` is a peer of `ApiError`, not a subclass: a component\n * answering `status: 'error'` on a **200** gave a business answer, not a transport failure, so it\n * must not satisfy `isApiError` / `isFetchClientError` — those drive retry and \"network problem\"\n * handling, and `err.response.status` would read 200 and mislead every status-based branch.\n */\nexport const syncActionValidateStatus: ValidateStatusFn = (apiResponse) => {\n const body = asErrorBody(apiResponse.data);\n\n if (body?.status === 'error') {\n throw new SyncActionError(\n asString(body.message) ?? asString(body.error) ?? apiResponse.response.statusText,\n {\n exceptionId: asString(body.exceptionId),\n code: asNumber(body.code),\n data: apiResponse.data,\n },\n );\n }\n\n return defaultValidateStatus(apiResponse);\n};\n","export const SyncAction = {\n DATA_APP_GIT_REPOSITORY: 'git-repository',\n GIT_REPOSITORY: 'gitRepository',\n ENROLL_MFA: 'enrollMFA',\n LIST_ACTORS: 'listActors',\n LIST_TASKS: 'listTasks',\n};\n\nexport const Component = {\n DATA_APP: 'keboola.data-apps',\n};\n","import * as z from 'zod';\n\n/**\n * The Keboola-side context every sync action carries, whichever action it is. Namespaces extend it\n * with the fields their own action needs, so a caller never assembles the rest of the body.\n */\nexport const syncActionContextSchema = z.object({\n /**\n * Required, because omitting it changes nothing: the service normalises a missing, empty or\n * `null` value to `\"default\"` and resolves that to the default branch's numeric id — the same id,\n * branch type and downstream context an explicit value resolves to, with no extra lookup either\n * way. Requiring it keeps every request self-describing. Both a numeric id and the literal\n * `\"default\"` are accepted (`keboola/runner-sync-api`: `ExecuteActionRequestProcessor` →\n * `BranchTypeResolver`).\n */\n branchId: z.string().min(1, 'Required'),\n /**\n * Leave undefined. The service then runs the component's registered tag from the Developer\n * Portal / Storage component definition — the currently published version, not Docker's\n * `latest`. Set it only to deliberately pin a specific or branch build.\n */\n tag: z.string().optional(),\n mode: z.enum(['run', 'debug']).optional(),\n});\n\n/**\n * The `/actions` request body. `configData` is whatever the component's action expects, so it is\n * only asserted to be an object here — each namespace validates the shape its own action needs\n * before handing it over.\n */\nexport const syncActionBodySchema = syncActionContextSchema.extend({\n componentId: z.string().min(1, 'Required'),\n action: z.string().min(1, 'Required'),\n configData: z.record(z.string(), z.unknown()),\n});\n\nexport type SyncActionContext = z.infer<typeof syncActionContextSchema>;\nexport type SyncActionBody = z.infer<typeof syncActionBodySchema>;\n","import * as z from 'zod';\n\nimport { syncActionContextSchema } from '../schemas';\n\nexport const apifyObjectsInputSchema = syncActionContextSchema.extend({\n '#token': z.string().min(1, 'Required'),\n});\n\nexport const apifyObjectsSchema = z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n }),\n);\n\nexport type ApifyObjectsInput = z.infer<typeof apifyObjectsInputSchema>;\n\nexport type ApifyObject = z.infer<typeof apifyObjectsSchema>[number];\n","import { SyncActionError } from '../../../errors';\nimport type { ValidateStatusFn } from '../../../fetchClient';\nimport { syncActionValidateStatus } from '../utils/response';\n\n/**\n * A slow Apify account makes the component answer `{ timeout: true }` on a 200 instead of the list —\n * a failure only this action knows how to spot, so it is checked before deferring to the shared\n * validation.\n */\nexport const apifyValidateStatus: ValidateStatusFn = (apiResponse) => {\n const data = apiResponse.data;\n\n if (typeof data === 'object' && data !== null && 'timeout' in data && data.timeout)\n throw new SyncActionError('Timed out while loading data from Apify.', { data });\n\n return syncActionValidateStatus(apiResponse);\n};\n","import { ComponentId } from '../../../constants';\nimport { SyncAction } from '../constants';\nimport type { SendSyncAction } from '../syncActionsClient';\n\nimport { type ApifyObjectsInput, apifyObjectsInputSchema, apifyObjectsSchema } from './schemas';\nimport { apifyValidateStatus } from './utils';\n\nexport const createApify = (sendSyncAction: SendSyncAction) => {\n const _getObjects = async (action: string, input: ApifyObjectsInput, signal?: AbortSignal) => {\n const { '#token': token, ...context } = apifyObjectsInputSchema.parse(input);\n\n const data = await sendSyncAction(\n {\n ...context,\n action,\n componentId: ComponentId.APIFY,\n configData: { parameters: { '#token': token } },\n },\n { signal, validateStatus: apifyValidateStatus },\n );\n\n return apifyObjectsSchema.parse(data);\n };\n\n const getActors = (input: ApifyObjectsInput, signal?: AbortSignal) => {\n return _getObjects(SyncAction.LIST_ACTORS, input, signal);\n };\n\n const getTasks = (input: ApifyObjectsInput, signal?: AbortSignal) => {\n return _getObjects(SyncAction.LIST_TASKS, input, signal);\n };\n\n return { getActors, getTasks };\n};\n","import * as z from 'zod';\n\nconst Author = z.object({\n name: z.string(),\n email: z.email(),\n});\n\nconst RepositoryBranch = z.object({\n sha: z.string(),\n date: z.string(),\n comment: z.string(),\n branch: z.string(),\n author: Author,\n});\n\nexport const Repository = z.object({\n repository: z.object({\n url: z.string(),\n }),\n branches: z.array(RepositoryBranch),\n});\n","type GitRepoConfig = {\n username?: string;\n '#password'?: string;\n '#sshKey'?: string;\n};\n\nclass GitRepoConfigDataBuilder {\n private readonly repositoryUrl: string;\n private config: GitRepoConfig = {};\n\n constructor(repositoryUrl: string) {\n this.repositoryUrl = repositoryUrl;\n }\n\n withCredentials(username: string, password: string) {\n this.config.username = username;\n\n delete this.config['#sshKey'];\n this.config['#password'] = password;\n return this;\n }\n\n withSshKey(username: string, sshKey: string) {\n this.config.username = username;\n\n delete this.config['#password'];\n this.config['#sshKey'] = sshKey;\n return this;\n }\n\n build() {\n return {\n parameters: {\n git: {\n repo: this.repositoryUrl,\n ...this.config,\n },\n },\n };\n }\n\n buildForDataApp() {\n return {\n parameters: {\n dataApp: {\n git: {\n repository: this.repositoryUrl,\n ...this.config,\n },\n },\n },\n };\n }\n}\n\nexport const createGitRepoConfigDataBuilder = (repositoryUrl: string) =>\n new GitRepoConfigDataBuilder(repositoryUrl);\n","import { Component, SyncAction } from '../constants';\nimport type { SendSyncAction } from '../syncActionsClient';\n\nimport { Repository } from './schemas';\nimport type {\n GetDataAppPasswordPrivateGitRepositoryInput,\n GetDataAppPublicGitRepositoryInput,\n GetDataAppSSHKeyPrivateGitRepositoryInput,\n GetGitPrivateRepositoryInput,\n GetPublicGitRepositoryInput,\n} from './types';\nimport { createGitRepoConfigDataBuilder } from './utils';\n\nexport const createGitRepository = (sendSyncAction: SendSyncAction) => {\n const getDataAppPublicGitRepository = async (\n { repositoryUrl, ...other }: GetDataAppPublicGitRepositoryInput,\n signal?: AbortSignal,\n ) => {\n const data = await sendSyncAction(\n {\n ...other,\n action: SyncAction.DATA_APP_GIT_REPOSITORY,\n componentId: Component.DATA_APP,\n configData: createGitRepoConfigDataBuilder(repositoryUrl).buildForDataApp(),\n },\n { signal },\n );\n\n return Repository.parse(data);\n };\n\n const getDataAppPasswordPrivateGitRepository = async (\n { repositoryUrl, username, password, ...other }: GetDataAppPasswordPrivateGitRepositoryInput,\n signal?: AbortSignal,\n ) => {\n const data = await sendSyncAction(\n {\n ...other,\n action: SyncAction.DATA_APP_GIT_REPOSITORY,\n componentId: Component.DATA_APP,\n configData: createGitRepoConfigDataBuilder(repositoryUrl)\n .withCredentials(username, password)\n .buildForDataApp(),\n },\n { signal },\n );\n\n return Repository.parse(data);\n };\n\n const getDataAppSSHKeyPrivateGitRepository = async (\n { repositoryUrl, username, sshKey, ...other }: GetDataAppSSHKeyPrivateGitRepositoryInput,\n signal?: AbortSignal,\n ) => {\n const data = await sendSyncAction(\n {\n ...other,\n action: SyncAction.DATA_APP_GIT_REPOSITORY,\n componentId: Component.DATA_APP,\n configData: createGitRepoConfigDataBuilder(repositoryUrl)\n .withSshKey(username, sshKey)\n .buildForDataApp(),\n },\n { signal },\n );\n\n return Repository.parse(data);\n };\n\n const getPublicGitRepository = async (\n { repositoryUrl, componentId, ...other }: GetPublicGitRepositoryInput,\n signal?: AbortSignal,\n ) => {\n const data = await sendSyncAction(\n {\n ...other,\n action: SyncAction.GIT_REPOSITORY,\n componentId,\n configData: createGitRepoConfigDataBuilder(repositoryUrl).build(),\n },\n { signal },\n );\n\n return Repository.parse(data);\n };\n\n const getPrivateGitRepository = async (\n { repositoryUrl, username, password, componentId, ...other }: GetGitPrivateRepositoryInput,\n signal?: AbortSignal,\n ) => {\n const data = await sendSyncAction(\n {\n ...other,\n action: SyncAction.GIT_REPOSITORY,\n componentId,\n configData: createGitRepoConfigDataBuilder(repositoryUrl)\n .withCredentials(username, password)\n .build(),\n },\n { signal },\n );\n\n return Repository.parse(data);\n };\n\n return {\n getDataAppPublicGitRepository,\n getDataAppPasswordPrivateGitRepository,\n getDataAppSSHKeyPrivateGitRepository,\n getPublicGitRepository,\n getPrivateGitRepository,\n };\n};\n","import type { ValidateStatusFn } from '../../fetchClient';\nimport { createOpenapiFetchClient } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport { syncActionValidateStatus } from './utils/response';\nimport { createApify } from './apify';\nimport { SyncAction } from './constants';\nimport { createGitRepository } from './gitRepository';\nimport { type SyncActionBody, syncActionBodySchema } from './schemas';\nimport type { EnrollMFAInput, PostActionsBodyRaw } from './types';\n\nexport type SendSyncActionOptions = {\n signal?: AbortSignal;\n /**\n * Replaces the client's `syncActionValidateStatus` for this one request. Use it where a component\n * signals failure in a way only its own action knows about — delegate to the shared one for\n * everything else.\n */\n validateStatus?: ValidateStatusFn;\n};\n\nconst createSendSyncAction = (client: SyncActionClient) => {\n return async (body: SyncActionBody, options: SendSyncActionOptions = {}) => {\n const { data } = await client.post(\n '/actions',\n // The generated body type has `configData: Record<string, never>`, which nothing can satisfy;\n // `syncActionBodySchema` is the real contract and is what the request is validated against.\n { body: syncActionBodySchema.parse(body) as unknown as PostActionsBodyRaw },\n options,\n );\n\n return data;\n };\n};\n\nexport type SendSyncAction = ReturnType<typeof createSendSyncAction>;\ntype SyncActionClient = ReturnType<typeof createOpenapiFetchClient<paths>>;\n\nexport const createSyncActionsClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n validateStatus: syncActionValidateStatus,\n });\n\n const sendSyncAction = createSendSyncAction(client);\n\n const enrollMFA = ({ email, ...rest }: EnrollMFAInput, signal?: AbortSignal) => {\n return sendSyncAction(\n {\n ...rest,\n action: SyncAction.ENROLL_MFA,\n configData: {\n parameters: {\n user: {\n email,\n },\n },\n },\n },\n { signal },\n );\n };\n\n return {\n sendSyncAction,\n enrollMFA,\n apify: createApify(sendSyncAction),\n gitRepository: createGitRepository(sendSyncAction),\n };\n};\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// src/errors/SyncActionError.ts
|
|
2
|
+
var SyncActionError = class _SyncActionError extends Error {
|
|
3
|
+
exceptionId;
|
|
4
|
+
code;
|
|
5
|
+
data;
|
|
6
|
+
constructor(message, { exceptionId, code, data } = {}) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = "SyncActionError";
|
|
9
|
+
this.exceptionId = exceptionId;
|
|
10
|
+
this.code = code;
|
|
11
|
+
this.data = data;
|
|
12
|
+
Object.setPrototypeOf(this, _SyncActionError.prototype);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
var isSyncActionError = (error) => error instanceof SyncActionError;
|
|
16
|
+
|
|
17
|
+
export { SyncActionError, isSyncActionError };
|
|
18
|
+
//# sourceMappingURL=chunk-YGEJDWGG.js.map
|
|
19
|
+
//# sourceMappingURL=chunk-YGEJDWGG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors/SyncActionError.ts"],"names":[],"mappings":";AAWO,IAAM,eAAA,GAAN,MAAM,gBAAA,SAAwB,KAAA,CAAM;AAAA,EACzC,WAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EAEA,WAAA,CAAY,SAAiB,EAAE,WAAA,EAAa,MAAM,IAAA,EAAK,GAA4B,EAAC,EAAG;AACrF,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,iBAAA;AACZ,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,gBAAA,CAAgB,SAAS,CAAA;AAAA,EACvD;AACF;AAEO,IAAM,iBAAA,GAAoB,CAAC,KAAA,KAChC,KAAA,YAAiB","file":"chunk-YGEJDWGG.js","sourcesContent":["type SyncActionErrorOptions = {\n exceptionId?: string;\n code?: number;\n data?: unknown;\n};\n\n/**\n * A sync action reports failure two ways: a non-2xx response, and a 2xx response whose body carries\n * `status: 'error'` (the component ran, and said no). Both collapse into this class so consumers\n * branch on one thing.\n */\nexport class SyncActionError extends Error {\n exceptionId?: string;\n code?: number;\n data?: unknown;\n\n constructor(message: string, { exceptionId, code, data }: SyncActionErrorOptions = {}) {\n super(message);\n this.name = 'SyncActionError';\n this.exceptionId = exceptionId;\n this.code = code;\n this.data = data;\n Object.setPrototypeOf(this, SyncActionError.prototype);\n }\n}\n\nexport const isSyncActionError = (error: unknown): error is SyncActionError =>\n error instanceof SyncActionError;\n"]}
|
|
@@ -197,7 +197,7 @@ var toBucketListing = (raw, bucketId) => ({
|
|
|
197
197
|
});
|
|
198
198
|
|
|
199
199
|
// src/clients/storage/buckets/buckets.ts
|
|
200
|
-
var createBuckets = (client) => {
|
|
200
|
+
var createBuckets = (client, openApiClient) => {
|
|
201
201
|
const getBuckets = async (branchId, query = {}, signal) => {
|
|
202
202
|
const { data } = await client.get(
|
|
203
203
|
`/v2/storage/branch/{branchId}/buckets`,
|
|
@@ -206,10 +206,10 @@ var createBuckets = (client) => {
|
|
|
206
206
|
);
|
|
207
207
|
return data;
|
|
208
208
|
};
|
|
209
|
-
const getBucket = async (
|
|
210
|
-
const { data } = await
|
|
211
|
-
|
|
212
|
-
{ path: {
|
|
209
|
+
const getBucket = async ({ branchId, bucketId, include }, signal) => {
|
|
210
|
+
const { data } = await openApiClient.get(
|
|
211
|
+
"/v2/storage/branch/{branchId}/buckets/{bucketId}",
|
|
212
|
+
{ path: { branchId, bucketId }, query: { include: include?.join(",") } },
|
|
213
213
|
{ signal }
|
|
214
214
|
);
|
|
215
215
|
return data;
|
|
@@ -360,10 +360,10 @@ var createBuckets = (client) => {
|
|
|
360
360
|
);
|
|
361
361
|
return data;
|
|
362
362
|
};
|
|
363
|
-
const getBucketOwner = async (bucketId, signal) => {
|
|
364
|
-
const { data } = await
|
|
365
|
-
|
|
366
|
-
{ path: { bucketId } },
|
|
363
|
+
const getBucketOwner = async ({ branchId, bucketId }, signal) => {
|
|
364
|
+
const { data } = await openApiClient.get(
|
|
365
|
+
"/v2/storage/branch/{branchId}/buckets/{bucketId}/owner",
|
|
366
|
+
{ path: { branchId, bucketId } },
|
|
367
367
|
{ signal }
|
|
368
368
|
);
|
|
369
369
|
return data;
|
|
@@ -824,7 +824,7 @@ var createConfigurationVersions = (client) => {
|
|
|
824
824
|
};
|
|
825
825
|
|
|
826
826
|
// src/clients/storage/events/events.ts
|
|
827
|
-
var createEvents = (client) => {
|
|
827
|
+
var createEvents = (client, openApiClient) => {
|
|
828
828
|
const getEvents = async (query, signal) => {
|
|
829
829
|
const { data } = await client.get(
|
|
830
830
|
"/v2/storage/events",
|
|
@@ -843,10 +843,18 @@ var createEvents = (client) => {
|
|
|
843
843
|
);
|
|
844
844
|
return data;
|
|
845
845
|
};
|
|
846
|
-
const getTableEvents = async (tableId, query, signal) => {
|
|
847
|
-
const { data } = await
|
|
848
|
-
"/v2/storage/tables/{tableId}/events",
|
|
849
|
-
{ path: { tableId }, query },
|
|
846
|
+
const getTableEvents = async ({ branchId, tableId, ...query }, signal) => {
|
|
847
|
+
const { data } = await openApiClient.get(
|
|
848
|
+
"/v2/storage/branch/{branchId}/tables/{tableId}/events",
|
|
849
|
+
{ path: { branchId, tableId }, query },
|
|
850
|
+
{ signal }
|
|
851
|
+
);
|
|
852
|
+
return data;
|
|
853
|
+
};
|
|
854
|
+
const getBucketEvents = async ({ branchId, bucketId, ...query }, signal) => {
|
|
855
|
+
const { data } = await openApiClient.get(
|
|
856
|
+
"/v2/storage/branch/{branchId}/buckets/{bucketId}/events",
|
|
857
|
+
{ path: { branchId, bucketId }, query },
|
|
850
858
|
{ signal }
|
|
851
859
|
);
|
|
852
860
|
return data;
|
|
@@ -865,6 +873,7 @@ var createEvents = (client) => {
|
|
|
865
873
|
getEvents,
|
|
866
874
|
getEvent,
|
|
867
875
|
getTableEvents,
|
|
876
|
+
getBucketEvents,
|
|
868
877
|
createEvent
|
|
869
878
|
};
|
|
870
879
|
};
|
|
@@ -1017,7 +1026,7 @@ var createStats = (client) => {
|
|
|
1017
1026
|
};
|
|
1018
1027
|
|
|
1019
1028
|
// src/clients/storage/tables/tables.ts
|
|
1020
|
-
var createTables = (client) => {
|
|
1029
|
+
var createTables = (client, openApiClient) => {
|
|
1021
1030
|
const getTables = async (branchId, query = { include: [] }, signal) => {
|
|
1022
1031
|
const { data } = await client.get(
|
|
1023
1032
|
`/v2/storage/branch/{branchId}/tables`,
|
|
@@ -1026,10 +1035,10 @@ var createTables = (client) => {
|
|
|
1026
1035
|
);
|
|
1027
1036
|
return data;
|
|
1028
1037
|
};
|
|
1029
|
-
const getTable = async (
|
|
1030
|
-
const { data } = await
|
|
1031
|
-
|
|
1032
|
-
{ path: { id } },
|
|
1038
|
+
const getTable = async ({ branchId, tableId }, signal) => {
|
|
1039
|
+
const { data } = await openApiClient.get(
|
|
1040
|
+
"/v2/storage/branch/{branchId}/tables/{id}",
|
|
1041
|
+
{ path: { branchId, id: tableId } },
|
|
1033
1042
|
{ signal }
|
|
1034
1043
|
);
|
|
1035
1044
|
return data;
|
|
@@ -1055,10 +1064,10 @@ var createTables = (client) => {
|
|
|
1055
1064
|
);
|
|
1056
1065
|
return data;
|
|
1057
1066
|
};
|
|
1058
|
-
const getDataPreview = async (
|
|
1067
|
+
const getDataPreview = async ({ branchId, tableId, ...query }, signal) => {
|
|
1059
1068
|
const { data } = await client.get(
|
|
1060
|
-
`/v2/storage/tables/{
|
|
1061
|
-
{ path: {
|
|
1069
|
+
`/v2/storage/branch/{branchId}/tables/{tableId}/data-preview`,
|
|
1070
|
+
{ path: { branchId, tableId }, query: { format: "json", ...query } },
|
|
1062
1071
|
{ signal }
|
|
1063
1072
|
);
|
|
1064
1073
|
return data;
|
|
@@ -1130,21 +1139,26 @@ var createTables = (client) => {
|
|
|
1130
1139
|
{ signal }
|
|
1131
1140
|
);
|
|
1132
1141
|
};
|
|
1133
|
-
const createSnapshot = async (tableId, body, signal) => {
|
|
1134
|
-
const { data } = await
|
|
1142
|
+
const createSnapshot = async ({ branchId, tableId, ...body }, signal) => {
|
|
1143
|
+
const { data } = await openApiClient.post(
|
|
1144
|
+
"/v2/storage/branch/{branchId}/tables/{id}/snapshots",
|
|
1145
|
+
{ path: { branchId, id: tableId }, body },
|
|
1146
|
+
{ signal }
|
|
1147
|
+
);
|
|
1135
1148
|
return data;
|
|
1136
1149
|
};
|
|
1137
1150
|
const deleteSnapshot = async (snapshotId, signal) => {
|
|
1138
|
-
await client.delete(
|
|
1151
|
+
const { data } = await client.delete(
|
|
1139
1152
|
"/v2/storage/snapshots/{snapshotId}",
|
|
1140
1153
|
{ path: { snapshotId } },
|
|
1141
1154
|
{ signal }
|
|
1142
1155
|
);
|
|
1156
|
+
return data;
|
|
1143
1157
|
};
|
|
1144
|
-
const loadTableSnapshots = async (tableId, signal) => {
|
|
1145
|
-
const { data } = await
|
|
1146
|
-
"/v2/storage/tables/{id}/snapshots",
|
|
1147
|
-
{ path: { id: tableId } },
|
|
1158
|
+
const loadTableSnapshots = async ({ branchId, tableId, ...query }, signal) => {
|
|
1159
|
+
const { data } = await openApiClient.get(
|
|
1160
|
+
"/v2/storage/branch/{branchId}/tables/{id}/snapshots",
|
|
1161
|
+
{ path: { branchId, id: tableId }, query },
|
|
1148
1162
|
{ signal }
|
|
1149
1163
|
);
|
|
1150
1164
|
return data;
|
|
@@ -1455,10 +1469,10 @@ var createStorageClient = ({
|
|
|
1455
1469
|
return data;
|
|
1456
1470
|
};
|
|
1457
1471
|
return {
|
|
1458
|
-
buckets: createBuckets(client),
|
|
1459
|
-
events: createEvents(client),
|
|
1472
|
+
buckets: createBuckets(client, openApiClient),
|
|
1473
|
+
events: createEvents(client, openApiClient),
|
|
1460
1474
|
files: createFiles(client),
|
|
1461
|
-
tables: createTables(client),
|
|
1475
|
+
tables: createTables(client, openApiClient),
|
|
1462
1476
|
columns: createColumns(client),
|
|
1463
1477
|
branches: createBranches(client),
|
|
1464
1478
|
workspaces: createWorkspaces(client, openApiClient),
|
|
@@ -1478,5 +1492,5 @@ var createStorageClient = ({
|
|
|
1478
1492
|
exports.ServiceUnavailableError = ServiceUnavailableError;
|
|
1479
1493
|
exports.createStorageClient = createStorageClient;
|
|
1480
1494
|
exports.series = series;
|
|
1481
|
-
//# sourceMappingURL=chunk-
|
|
1482
|
-
//# sourceMappingURL=chunk-
|
|
1495
|
+
//# sourceMappingURL=chunk-Z3HZ4MP4.cjs.map
|
|
1496
|
+
//# sourceMappingURL=chunk-Z3HZ4MP4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors/ServiceUnavailableError.ts","../src/clients/storage/mergeRequests/mergeRequests.ts","../src/clients/storage/branches/mappers.ts","../src/clients/storage/branches/branches.ts","../src/clients/storage/buckets/listingConversion.ts","../src/clients/storage/buckets/buckets.ts","../src/clients/storage/columns/columns.ts","../src/utils/async/series.ts","../src/clients/storage/componentsAndConfigurations/componentsAndConfigurations.ts","../src/clients/storage/configurationMetadata/configurationMetadata.ts","../src/clients/storage/configurationVersions/configurationVersions.ts","../src/clients/storage/events/events.ts","../src/clients/storage/files/files.ts","../src/clients/storage/jobs/jobs.ts","../src/clients/storage/refreshTokenMiddleware.ts","../src/clients/storage/search/search.ts","../src/clients/storage/stats/stats.ts","../src/clients/storage/tables/tables.ts","../src/clients/storage/tokens/tokens.ts","../src/clients/storage/triggers/triggers.ts","../src/clients/storage/workspaces/workspaces.ts","../src/clients/storage/storageClient.ts"],"names":["isApiError","concurrent","KeboolaHttpHeader","createAuthHeaders","createGenericFetchClient","createOpenapiFetchClient"],"mappings":"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","file":"chunk-Z3HZ4MP4.cjs","sourcesContent":["export class ServiceUnavailableError extends Error {\n constructor(serviceId: string, path: string[], clientName: string) {\n super(\n `Service \"${serviceId}\" is not available in this stack. Caused by: ${clientName}.${path.join('.')}()`,\n );\n this.name = 'ServiceUnavailableError';\n Object.setPrototypeOf(this, ServiceUnavailableError.prototype);\n }\n}\n","import type { StorageOpenApiFetchClient } from '../storageClient';\n\nimport type {\n CreateMergeRequestParams,\n MergeRequestDetail,\n MergeRequestDetailWithActivityLog,\n UpdateMergeRequestParams,\n} from './types';\n\nexport const createMergeRequests = (client: StorageOpenApiFetchClient) => {\n const getMergeRequests = async (signal?: AbortSignal) => {\n const { data } = await client.get('/v2/storage/merge-request', {}, { signal });\n return data;\n };\n\n const getMergeRequest = async (id: number, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/v2/storage/merge-request/{id}',\n { path: { id } },\n { signal },\n );\n // Schema types changeLog as Record<string, never>; cast to the real shape.\n return data as MergeRequestDetail;\n };\n\n const getMergeRequestWithActivityLog = async (id: number, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/v2/storage/merge-request/{id}',\n { path: { id }, query: { include: 'activityLog' } },\n { signal },\n );\n return data as MergeRequestDetailWithActivityLog;\n };\n\n const createMergeRequest = async (params: CreateMergeRequestParams) => {\n const { data } = await client.post('/v2/storage/merge-request', { body: params });\n return data;\n };\n\n const updateMergeRequest = async (id: number, params: UpdateMergeRequestParams) => {\n const { data } = await client.put('/v2/storage/merge-request/{id}', {\n path: { id },\n body: params,\n });\n return data;\n };\n\n const requestReview = async (id: number) => {\n const { data } = await client.put('/v2/storage/merge-request/{id}/request-review', {\n path: { id },\n });\n return data;\n };\n\n const approveMergeRequest = async (id: number) => {\n const { data } = await client.put('/v2/storage/merge-request/{id}/approve', {\n path: { id },\n });\n return data;\n };\n\n const requestChangesMergeRequest = async (id: number, reason?: string) => {\n const { data } = await client.put('/v2/storage/merge-request/{id}/request-changes', {\n path: { id },\n body: reason ? { reason } : undefined,\n });\n return data;\n };\n\n /**\n * Merges an approved merge request. The endpoint is async — it returns the created merge job.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/merge-requests/PUT/v2/storage/merge-request/{id}/merge\n */\n const mergeMergeRequest = async (id: number) => {\n const { data } = await client.put('/v2/storage/merge-request/{id}/merge', {\n path: { id },\n });\n return data;\n };\n\n const getMergeRequestConflicts = async (id: number, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/v2/storage/merge-request/{id}/conflicts',\n { path: { id } },\n { signal },\n );\n return data;\n };\n\n return {\n getMergeRequests,\n getMergeRequest,\n getMergeRequestWithActivityLog,\n createMergeRequest,\n updateMergeRequest,\n requestReview,\n approveMergeRequest,\n requestChangesMergeRequest,\n mergeMergeRequest,\n getMergeRequestConflicts,\n };\n};\n","import type { BranchMetadata, BranchMetadataRaw } from './types';\n\nexport const mapBranchMetadata = (data: BranchMetadataRaw): BranchMetadata => ({\n ...data,\n timestamp: new Date(data.timestamp),\n});\n","import type { Job } from '../jobs/types';\nimport type { GenericFetchClient } from '../storageClient';\n\nimport { mapBranchMetadata } from './mappers';\nimport type {\n BranchMetadataEntry,\n BranchMetadataRaw,\n CreateDevBranchJobBody,\n DevBranch,\n DevBranchPath,\n} from './types';\n\nexport const createBranches = (client: GenericFetchClient) => {\n const getDevBranches = async (signal?: AbortSignal) => {\n const { data } = await client.get<DevBranch[]>('/v2/storage/dev-branches', {}, { signal });\n return data;\n };\n\n const createDevBranchJob = async (body: CreateDevBranchJobBody) => {\n const { data } = await client.post<Job<'devBranchCreate'>, void, void, CreateDevBranchJobBody>(\n '/v2/storage/dev-branches',\n {\n body,\n },\n );\n return data;\n };\n\n const updateDevBranch = async ({\n id,\n name,\n description,\n }: CreateDevBranchJobBody & DevBranchPath) => {\n const { data } = await client.put<DevBranch, DevBranchPath, void, CreateDevBranchJobBody>(\n '/v2/storage/dev-branches/{id}',\n {\n path: { id },\n body: {\n name,\n description,\n },\n },\n );\n return data;\n };\n\n const deleteDevBranchJob = async (id: number) => {\n const { data } = await client.delete<Job<'devBranchDelete'>, DevBranchPath>(\n '/v2/storage/dev-branches/{id}',\n {\n path: { id },\n },\n );\n\n return data;\n };\n\n const getDevBranchMetadata = async (id: string, signal?: AbortSignal) => {\n const { data } = await client.get<BranchMetadataRaw[], { id: string }>(\n '/v2/storage/branch/{id}/metadata',\n { path: { id } },\n { signal },\n );\n\n return data.map(mapBranchMetadata);\n };\n\n const saveDevBranchMetadata = async (\n id: string,\n metadata: BranchMetadataEntry[],\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post<\n BranchMetadataRaw[],\n { id: string },\n void,\n { metadata: BranchMetadataEntry[] }\n >('/v2/storage/branch/{id}/metadata', { path: { id }, body: { metadata } }, { signal });\n\n return data.map(mapBranchMetadata);\n };\n\n const deleteDevBranchMetadata = async (id: string, metadataId: string, signal?: AbortSignal) => {\n await client.delete<void, { id: string; metadataId: string }>(\n '/v2/storage/branch/{id}/metadata/{metadataId}',\n { path: { id, metadataId } },\n { signal },\n );\n };\n\n return {\n getDevBranches,\n createDevBranchJob,\n updateDevBranch,\n deleteDevBranchJob,\n getDevBranchMetadata,\n saveDevBranchMetadata,\n deleteDevBranchMetadata,\n };\n};\n","import type { BucketListing, RawBucketListingResponse, Subscriber } from './types';\n\nexport const toBackendSubscribers = (subscribers: Subscriber[]): string[] =>\n subscribers.map((s) => `${s.type}:${s.email}`);\n\n// Forward-compatible: silently skip rows with an unknown prefix or a missing\n// email rather than throwing — a single bad row shouldn't break the grid.\nexport const fromBackendSubscribers = (raw: string[]): Subscriber[] => {\n const result: Subscriber[] = [];\n for (const entry of raw) {\n const colon = entry.indexOf(':');\n if (colon === -1) continue;\n const prefix = entry.slice(0, colon);\n const email = entry.slice(colon + 1);\n if (prefix !== 'user' && prefix !== 'group') continue;\n if (email.length === 0) continue;\n result.push({ type: prefix, email });\n }\n return result;\n};\n\nexport const toBucketListing = (\n raw: RawBucketListingResponse,\n bucketId: string,\n): BucketListing => ({\n bucketId,\n name: raw.name,\n description: raw.description ?? null,\n listingId: raw.bigquery.listingId,\n subscribers: fromBackendSubscribers(raw.bigquery.subscribers),\n createdAt: raw.createdAt,\n});\n","import { isApiError } from '../../../fetchClient';\nimport type { Job } from '../jobs/types';\nimport type { GenericFetchClient, StorageOpenApiFetchClient } from '../storageClient';\n\nimport { toBackendSubscribers, toBucketListing } from './listingConversion';\nimport type {\n Bucket,\n BucketDetail,\n BucketListing,\n BucketMetadata,\n BucketRegistrationGuide,\n BucketRegistrationGuideQuery,\n CreateBucketBody,\n CreateBucketListingInput,\n CreateScheduledRefreshBody,\n CreateScheduledRefreshPath,\n GetBucketInput,\n GetBucketOwnerInput,\n GetBucketsQuery,\n RawBucketListingResponse,\n RawBucketListingRow,\n RefreshExternalBucketQuery,\n RegisterBucketBody,\n SaveBucketMetadataBody,\n ScheduledTask,\n ShareBucketToProjectsBody,\n ShareBucketToUsersBody,\n SharedBuckets,\n UpdateBucketBody,\n UpdateBucketListingInput,\n UpdateBucketOwnerBody,\n} from './types';\n\n// PATCH /buckets/{id}/listing uses `exposureName` / `exposureDescription`\n// while POST uses `listingName` / `listingDescription` (see createListing).\ntype UpdateBucketListingRequestBody = {\n exposureName?: string;\n exposureDescription?: string | null;\n bigquery?: { subscribers: string[] };\n};\n\nexport const createBuckets = (\n client: GenericFetchClient,\n openApiClient: StorageOpenApiFetchClient,\n) => {\n const getBuckets = async (\n branchId: string,\n query: GetBucketsQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<Bucket[], { branchId: string }, GetBucketsQuery>(\n `/v2/storage/branch/{branchId}/buckets`,\n { path: { branchId }, query },\n { signal, queryArrayFormat: 'comma' },\n );\n\n return data;\n };\n\n /**\n * Returns a bucket from the given branch. A dev branch only contains the buckets created or\n * pulled into it, so a production bucket must be read with the default branch id.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/buckets/GET/v2/storage/branch/{branchId}/buckets/{bucketId}\n */\n const getBucket = async (\n { branchId, bucketId, include }: GetBucketInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await openApiClient.get(\n '/v2/storage/branch/{branchId}/buckets/{bucketId}',\n { path: { branchId, bucketId }, query: { include: include?.join(',') } },\n { signal },\n );\n\n // The schema types `metadata`, `linkedBy` and `tables` as `Record<string, never>[]`,\n // and has no `scheduledTasks` at all.\n return data as unknown as BucketDetail;\n };\n\n const createBucket = async (body: CreateBucketBody) => {\n const { data } = await client.post<BucketDetail, void, never, CreateBucketBody>(\n `/v2/storage/buckets`,\n {\n body,\n },\n );\n\n return data;\n };\n\n const updateBucket = async (id: string, body: UpdateBucketBody) => {\n const { data } = await client.put<BucketDetail, { id: string }, never, UpdateBucketBody>(\n `/v2/storage/buckets/{id}`,\n { path: { id }, body },\n );\n\n return data;\n };\n\n const deleteBucket = async (id: string) => {\n await client.delete<void, { id: string }>(`/v2/storage/buckets/{id}`, { path: { id } });\n };\n\n /**\n * Deletes a bucket asynchronously and returns a job to poll.\n * Required on GCP stacks where synchronous bucket deletion is not supported.\n *\n * `force` deletes all tables inside the bucket before removing it.\n * The parameter is supported by the API but not reflected in the generated OpenAPI schema.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/buckets\n */\n const deleteBucketAsync = async (id: string, options: { force?: boolean } = {}) => {\n const { data } = await client.delete<\n Job<'bucketDelete'>,\n { id: string },\n { async: true; force?: boolean }\n >(`/v2/storage/buckets/{id}`, { path: { id }, query: { async: true, ...options } });\n return data;\n };\n\n const createScheduledRefresh = async (\n input: CreateScheduledRefreshPath & CreateScheduledRefreshBody,\n ) => {\n const { branchId, bucketId, cronExpression } = input;\n const { data } = await client.post<\n ScheduledTask,\n CreateScheduledRefreshPath,\n never,\n CreateScheduledRefreshBody\n >(`/v2/storage/branch/{branchId}/buckets/{bucketId}/scheduled-tasks/refresh`, {\n path: { branchId, bucketId },\n body: { cronExpression },\n });\n\n return data;\n };\n\n const deleteScheduledTask = async (taskId: string) => {\n await client.delete<void, { taskId: string }>(`/v2/storage/scheduled-tasks/{taskId}`, {\n path: { taskId },\n });\n };\n\n const getListing = async (\n bucketId: string,\n signal?: AbortSignal,\n ): Promise<BucketListing | null> => {\n try {\n const { data } = await client.get<RawBucketListingResponse, { bucketId: string }>(\n `/v2/storage/buckets/{bucketId}/listing`,\n { path: { bucketId } },\n { signal },\n );\n return toBucketListing(data, bucketId);\n } catch (error) {\n if (isApiError(error) && error.response.status === 404) return null;\n throw error;\n }\n };\n\n const createListing = async (\n bucketId: string,\n input: CreateBucketListingInput,\n signal?: AbortSignal,\n ): Promise<Job<'bucketListingCreate'>> => {\n const { data } = await client.post<\n Job<'bucketListingCreate'>,\n { bucketId: string },\n never,\n {\n listingName: string;\n listingDescription: string | null;\n bigquery: { listingId: string; subscribers: string[] };\n }\n >(\n `/v2/storage/buckets/{bucketId}/listing`,\n {\n path: { bucketId },\n body: {\n listingName: input.name,\n listingDescription: input.description?.trim() || null,\n bigquery: {\n listingId: input.listingId,\n subscribers: toBackendSubscribers(input.subscribers),\n },\n },\n },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Update a bucket exposure. At least one of `name`, `description`, or\n * `subscribers` must be provided — the SDK throws synchronously if all three\n * are absent, since the backend would otherwise no-op a PATCH with an empty\n * body and we'd return a job that's already in `success` with no actual\n * change. Callers should gate the call against the form's \"dirty\" state.\n */\n const updateListing = async (\n bucketId: string,\n input: UpdateBucketListingInput,\n signal?: AbortSignal,\n ): Promise<Job<'bucketListingUpdate'>> => {\n // PATCH uses `exposureName` / `exposureDescription`; POST uses\n // `listingName` / `listingDescription`. Do not \"normalize\" without\n // coordinating with the bucket-listing backend owner.\n const body: UpdateBucketListingRequestBody = {};\n if (input.name !== undefined) body.exposureName = input.name;\n if (input.description !== undefined) {\n body.exposureDescription = input.description?.trim() || null;\n }\n if (input.subscribers !== undefined) {\n body.bigquery = { subscribers: toBackendSubscribers(input.subscribers) };\n }\n if (Object.keys(body).length === 0) {\n throw new Error('updateListing requires at least one field');\n }\n\n const { data } = await client.patch<\n Job<'bucketListingUpdate'>,\n { bucketId: string },\n never,\n UpdateBucketListingRequestBody\n >(`/v2/storage/buckets/{bucketId}/listing`, { path: { bucketId }, body }, { signal });\n\n return data;\n };\n\n const deleteListing = async (\n bucketId: string,\n signal?: AbortSignal,\n ): Promise<Job<'bucketListingDelete'>> => {\n const { data } = await client.delete<Job<'bucketListingDelete'>, { bucketId: string }>(\n `/v2/storage/buckets/{bucketId}/listing`,\n { path: { bucketId } },\n { signal },\n );\n\n return data;\n };\n\n const listListings = async (signal?: AbortSignal): Promise<BucketListing[]> => {\n const { data } = await client.get<RawBucketListingRow[]>(\n `/v2/storage/listings`,\n {},\n { signal },\n );\n\n return data.map((row) => toBucketListing(row, row.bucketId));\n };\n\n /**\n * Shares a bucket with everyone in the organization. Async — returns a job to poll.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/buckets/POST/v2/storage/buckets/{bucketId}/share-organization\n */\n const shareBucketToOrganization = async (bucketId: string, signal?: AbortSignal) => {\n const { data } = await client.post<\n Job<'bucketShareToOrganization'>,\n { bucketId: string },\n { async: true }\n >(\n `/v2/storage/buckets/{bucketId}/share-organization`,\n { path: { bucketId }, query: { async: true } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Shares a bucket with every project in the organization. Async — returns a job to poll.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/buckets/POST/v2/storage/buckets/{bucketId}/share-organization-project\n */\n const shareBucketToOrganizationProject = async (bucketId: string, signal?: AbortSignal) => {\n const { data } = await client.post<\n Job<'bucketShareToOrganizationProject'>,\n { bucketId: string },\n { async: true }\n >(\n `/v2/storage/buckets/{bucketId}/share-organization-project`,\n { path: { bucketId }, query: { async: true } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Shares a bucket with specific projects. Async — returns a job to poll.\n *\n * @link https://api.keboola.com/?service=storage#storage/POST/v2/storage/buckets/{bucketId}/share-to-projects\n */\n const shareBucketToProjects = async (\n bucketId: string,\n body: ShareBucketToProjectsBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post<\n Job<'bucketShareToProjects'>,\n { bucketId: string },\n { async: true },\n ShareBucketToProjectsBody\n >(\n `/v2/storage/buckets/{bucketId}/share-to-projects`,\n { path: { bucketId }, query: { async: true }, body },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Shares a bucket with specific users (by ID or e-mail). Async — returns a job to poll.\n *\n * @link https://api.keboola.com/?service=storage#storage/POST/v2/storage/buckets/{bucketId}/share-to-users\n */\n const shareBucketToUsers = async (\n bucketId: string,\n body: ShareBucketToUsersBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post<\n Job<'bucketShareToAdmins'>,\n { bucketId: string },\n { async: true },\n ShareBucketToUsersBody\n >(\n `/v2/storage/buckets/{bucketId}/share-to-users`,\n { path: { bucketId }, query: { async: true }, body },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Stops sharing a bucket. Async — returns a job to poll.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/buckets/DELETE/v2/storage/buckets/{bucketId}/share\n */\n const unshareBucket = async (bucketId: string, signal?: AbortSignal) => {\n const { data } = await client.delete<\n Job<'bucketRemoveShare'>,\n { bucketId: string },\n { async: true }\n >(\n `/v2/storage/buckets/{bucketId}/share`,\n { path: { bucketId }, query: { async: true } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Force-unlinks a bucket from a linked project. Async — returns a job to poll.\n * The path is absent from the generated OpenAPI schema, so the call is hand-typed.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/buckets\n */\n const forceUnlinkBucket = async (\n bucketId: string,\n linkedProjectId: string,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.delete<\n Job<'bucketForceUnlink'>,\n { bucketId: string; linkedProjectId: string },\n { async: true }\n >(\n `/v2/storage/buckets/{bucketId}/links/{linkedProjectId}`,\n { path: { bucketId, linkedProjectId }, query: { async: true } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Returns the owner of a bucket in the given branch.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/buckets/GET/v2/storage/branch/{branchId}/buckets/{bucketId}/owner\n */\n const getBucketOwner = async (\n { branchId, bucketId }: GetBucketOwnerInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await openApiClient.get(\n '/v2/storage/branch/{branchId}/buckets/{bucketId}/owner',\n { path: { branchId, bucketId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Changes the owner of a bucket (by `id` or `email`).\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/buckets/POST/v2/storage/buckets/{bucketId}/owner\n */\n const updateBucketOwner = async (\n bucketId: string,\n body: UpdateBucketOwnerBody,\n signal?: AbortSignal,\n ) => {\n await client.post<void, { bucketId: string }, never, UpdateBucketOwnerBody>(\n `/v2/storage/buckets/{bucketId}/owner`,\n { path: { bucketId }, body },\n { signal },\n );\n };\n\n /**\n * Refreshes an external bucket's table metadata. Async — returns a job to poll.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/buckets/PUT/v2/storage/buckets/{bucketId}/refresh\n */\n const refreshExternalBucket = async (\n bucketId: string,\n query: RefreshExternalBucketQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.put<\n Job<'bucketRefresh'>,\n { bucketId: string },\n RefreshExternalBucketQuery\n >(`/v2/storage/buckets/{bucketId}/refresh`, { path: { bucketId }, query }, { signal });\n\n return data;\n };\n\n /**\n * Registers an external bucket. Async — returns a job to poll.\n *\n * @link https://api.keboola.com/?service=storage#storage/POST/v2/storage/buckets/register\n */\n const registerBucket = async (body: RegisterBucketBody, signal?: AbortSignal) => {\n const { data } = await client.post<\n Job<'bucketRegister'>,\n void,\n { async: true },\n RegisterBucketBody\n >(`/v2/storage/buckets/register`, { query: { async: true }, body }, { signal });\n\n return data;\n };\n\n /**\n * Returns a markdown guide for registering an external bucket.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/buckets/GET/v2/storage/buckets/register-guide\n */\n const getBucketRegistrationGuide = async (\n query: BucketRegistrationGuideQuery,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<BucketRegistrationGuide, void, BucketRegistrationGuideQuery>(\n `/v2/storage/buckets/register-guide`,\n { query },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Lists buckets shared with the current project.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/shared-buckets/GET/v2/storage/shared-buckets\n */\n const sharedBuckets = async (signal?: AbortSignal) => {\n const { data } = await client.get<SharedBuckets>(`/v2/storage/shared-buckets`, {}, { signal });\n\n return data;\n };\n\n /**\n * Adds or updates metadata on a bucket.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/buckets/POST/v2/storage/buckets/{bucketId}/metadata\n */\n const saveBucketMetadata = async (\n bucketId: string,\n body: SaveBucketMetadataBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post<\n BucketMetadata,\n { bucketId: string },\n never,\n SaveBucketMetadataBody\n >(`/v2/storage/buckets/{bucketId}/metadata`, { path: { bucketId }, body }, { signal });\n\n return data;\n };\n\n /**\n * Deletes a single metadata entry from a bucket.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/buckets/DELETE/v2/storage/buckets/{bucketId}/metadata/{metadataId}\n */\n const deleteBucketMetadata = async (\n bucketId: string,\n metadataId: string,\n signal?: AbortSignal,\n ) => {\n await client.delete<void, { bucketId: string; metadataId: string }>(\n `/v2/storage/buckets/{bucketId}/metadata/{metadataId}`,\n { path: { bucketId, metadataId } },\n { signal },\n );\n };\n\n return {\n getBuckets,\n getBucket,\n createBucket,\n updateBucket,\n deleteBucket,\n deleteBucketAsync,\n createScheduledRefresh,\n deleteScheduledTask,\n getListing,\n createListing,\n updateListing,\n deleteListing,\n listListings,\n shareBucketToOrganization,\n shareBucketToOrganizationProject,\n shareBucketToProjects,\n shareBucketToUsers,\n unshareBucket,\n forceUnlinkBucket,\n getBucketOwner,\n updateBucketOwner,\n refreshExternalBucket,\n registerBucket,\n getBucketRegistrationGuide,\n sharedBuckets,\n saveBucketMetadata,\n deleteBucketMetadata,\n };\n};\n","import type { Job } from '../jobs/types';\nimport type { GenericFetchClient } from '../storageClient';\nimport type { Metadata, SaveMetadataBody } from '../tables/types';\n\nimport type {\n AddTableColumnBody,\n CreateTablePrimaryKeyBody,\n DeleteTableColumnQuery,\n} from './types';\n\nexport const createColumns = (client: GenericFetchClient) => {\n /**\n * Adds a column to a table. Async — returns a job.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/columns/POST/v2/storage/tables/{id}/columns\n */\n const addTableColumn = async (\n tableId: string,\n body: AddTableColumnBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post<\n Job<'tableColumnAdd'>,\n { id: string },\n never,\n AddTableColumnBody\n >('/v2/storage/tables/{id}/columns', { path: { id: tableId }, body }, { signal });\n\n return data;\n };\n\n /**\n * Drops a column from a table. Async — returns a job.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/columns\n */\n const deleteTableColumn = async (\n tableId: string,\n columnName: string,\n query?: DeleteTableColumnQuery,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.delete<\n Job<'tableColumnDelete'>,\n { id: string; column: string },\n DeleteTableColumnQuery\n >(\n '/v2/storage/tables/{id}/columns/{column}',\n { path: { id: tableId, column: columnName }, query },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Sets the primary key of a table. Async — returns a job.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables\n */\n const createTablePrimaryKey = async (\n tableId: string,\n body: CreateTablePrimaryKeyBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post<\n Job<'tablePrimaryKeyAdd'>,\n { id: string },\n never,\n CreateTablePrimaryKeyBody\n >('/v2/storage/tables/{id}/primary-key', { path: { id: tableId }, body }, { signal });\n\n return data;\n };\n\n /**\n * Removes the primary key of a table. Async — returns a job.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables\n */\n const removeTablePrimaryKey = async (tableId: string, signal?: AbortSignal) => {\n const { data } = await client.delete<Job<'tablePrimaryKeyDelete'>, { id: string }>(\n '/v2/storage/tables/{id}/primary-key',\n { path: { id: tableId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Adds or updates metadata on a column.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/columns/POST/v2/storage/columns/{id}/metadata\n */\n const saveColumnMetadata = async (\n columnId: string,\n body: SaveMetadataBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post<Metadata[], { id: string }, never, SaveMetadataBody>(\n '/v2/storage/columns/{id}/metadata',\n { path: { id: columnId }, body },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Deletes a single metadata entry from a column.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/columns/DELETE/v2/storage/columns/{id}/metadata/{metadataId}\n */\n const deleteColumnMetadata = async (\n columnId: string,\n metadataId: string,\n signal?: AbortSignal,\n ) => {\n await client.delete<void, { id: string; metadataId: string }>(\n '/v2/storage/columns/{id}/metadata/{metadataId}',\n { path: { id: columnId, metadataId } },\n { signal },\n );\n };\n\n return {\n addTableColumn,\n deleteTableColumn,\n createTablePrimaryKey,\n removeTablePrimaryKey,\n saveColumnMetadata,\n deleteColumnMetadata,\n };\n};\n","import type { ConcurrentOptions } from './concurrent';\nimport { concurrent } from './concurrent';\n\n/**\n * Executes an asynchronous callback function on an array of items in series (one at a time).\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 */\nexport const series = async <T, R>(\n options: Omit<ConcurrentOptions<T, R>, 'concurrency'>,\n): Promise<R[]> =>\n concurrent({\n ...options,\n concurrency: 1,\n });\n","import type { MiddlewareFn } from '../../../utils';\nimport { concurrent, series } from '../../../utils';\nimport type { Job } from '../jobs/types';\nimport type { GenericFetchClient } from '../storageClient';\nimport type { Component, PartialKey, SearchComponentConfiguration, Workspace } from '../types';\n\nimport type {\n ComponentConfig,\n ConfigType,\n ConfigurationDiff,\n ConfigurationDiffPath,\n ConfigurationPath,\n ConfigurationRowDiff,\n ConfigurationRowDiffPath,\n CreateConfigurationBody,\n CreateConfigurationInput,\n CreateConfigurationRowBody,\n CreateConfigurationRowInput,\n CreateConfigurationRowPath,\n CreateConfigurationRowsInput,\n CreateConfigurationWorkspaceBody,\n CreateConfigurationWorkspaceQuery,\n DeleteConfigurationRowBody,\n DeleteConfigurationRowInput,\n DeleteConfigurationRowPath,\n DeleteConfigurationRowsInput,\n GetComponentPath,\n GetComponentsPath,\n GetComponentsQuery,\n GetConfigurationsPath,\n GetSearchComponentConfigurationsPath,\n RebaseConfigurationBody,\n RebaseConfigurationInput,\n RebaseConfigurationPath,\n Row,\n SearchComponentConfigurationsQuery,\n UpdateConfigurationInput,\n UpdateConfigurationRequestBody,\n} from './types';\n\nexport const createComponentsAndConfigurations = (client: GenericFetchClient) => {\n const getComponent = async (\n { componentId, branchId = 'default' }: GetComponentPath,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<Component, GetComponentPath, void, void>(\n '/v2/storage/branch/{branchId}/components/{componentId}',\n { path: { componentId, branchId } },\n { signal },\n );\n return data;\n };\n\n const getComponents = async (\n { branchId = 'default', ...query }: GetComponentsPath & GetComponentsQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<Component[], GetComponentsPath, GetComponentsQuery, void>(\n '/v2/storage/branch/{branchId}/components',\n { path: { branchId }, query },\n { signal, queryArrayFormat: 'comma' },\n );\n return data;\n };\n\n const getConfiguration = async <T extends ConfigType = 'unknown'>(\n { componentId, configId, branchId = 'default' }: ConfigurationPath,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<ComponentConfig<T>, Required<ConfigurationPath>>(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}',\n { path: { componentId, configId, branchId } },\n { signal },\n );\n\n return data;\n };\n\n const getConfigurationDiff = async (\n { componentId, configId, branchId }: ConfigurationDiffPath,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<ConfigurationDiff, ConfigurationDiffPath>(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/diff',\n { path: { componentId, configId, branchId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Rebase a dev-branch configuration onto a default-branch version, carrying\n * the user's resolved values (the 3-way merge result) as the new head. After\n * a successful rebase the configuration has no outstanding merge conflict with\n * the default branch.\n *\n * The resolved row set is sent in `body.rows` (required) and reconciled by the\n * backend on row id — id in base updates, an id absent from base or a missing\n * id creates, and a base row whose id is absent from the request is deleted.\n */\n const rebaseConfiguration = async ({\n branchId,\n componentId,\n configId,\n ...body\n }: RebaseConfigurationInput) => {\n const { data } = await client.post<\n ComponentConfig,\n RebaseConfigurationPath,\n void,\n RebaseConfigurationBody\n >('/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/rebase', {\n path: { branchId, componentId, configId },\n body,\n });\n\n return data;\n };\n\n const getConfigurationRowDiff = async (\n { componentId, configId, rowId, branchId }: ConfigurationRowDiffPath,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<ConfigurationRowDiff, ConfigurationRowDiffPath>(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/rows/{rowId}/diff',\n { path: { componentId, configId, rowId, branchId } },\n { signal },\n );\n\n return data;\n };\n\n const createConfiguration = async ({\n branchId = 'default',\n componentId,\n ...body\n }: CreateConfigurationInput) => {\n const { data } = await client.post<\n ComponentConfig,\n Required<GetConfigurationsPath>,\n void,\n CreateConfigurationBody\n >('/v2/storage/branch/{branchId}/components/{componentId}/configs', {\n path: { branchId, componentId },\n body,\n });\n return data;\n };\n\n /**\n * Update an existing configuration. Only the fields provided are sent; the\n * `configuration` object is JSON-stringified into a string field, matching\n * the Storage API contract.\n * @link https://api.keboola.com/?service=storage#storage/tag/component-configurations/PUT/v2/storage/branch/{branchId}/components/{componentId}/configs/{configurationId}\n */\n const updateConfiguration = async <T extends ConfigType = 'unknown'>(\n {\n branchId = 'default',\n componentId,\n configId,\n configuration,\n ...rest\n }: PartialKey<UpdateConfigurationInput, 'branchId'>,\n signal?: AbortSignal,\n ) => {\n const body: UpdateConfigurationRequestBody = {\n ...rest,\n ...(configuration !== undefined && { configuration: JSON.stringify(configuration) }),\n };\n\n const { data } = await client.put<\n ComponentConfig<T>,\n Required<ConfigurationPath>,\n void,\n UpdateConfigurationRequestBody\n >(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}',\n { path: { branchId, componentId, configId }, body },\n { signal },\n );\n\n return data;\n };\n\n const deleteConfiguration = async (path: Required<ConfigurationPath>) => {\n await client.delete<void, Required<ConfigurationPath>, void, void>(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}',\n { path },\n );\n };\n\n /** Restore a trashed configuration. */\n const restoreConfiguration = async ({\n branchId = 'default',\n componentId,\n configId,\n }: ConfigurationPath) => {\n const { data } = await client.post<ComponentConfig, Required<ConfigurationPath>, void, void>(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/restore',\n { path: { branchId, componentId, configId } },\n );\n return data;\n };\n\n /** Reset a dev-branch configuration back to its default-branch (production) version. */\n const resetConfigurationToDefault = async ({\n branchId = 'default',\n componentId,\n configId,\n }: ConfigurationPath) => {\n const { data } = await client.post<ComponentConfig, Required<ConfigurationPath>, void, void>(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/reset-to-default',\n { path: { branchId, componentId, configId } },\n );\n return data;\n };\n\n const deleteConfigurations = async ({\n configIds,\n ...rest\n }: Required<Omit<ConfigurationPath, 'configId'>> & {\n configIds: string[];\n }) => {\n await concurrent({\n items: configIds,\n process: async (configId) => deleteConfiguration({ ...rest, configId }),\n });\n };\n\n const getConfigurations = async <T extends ConfigType = 'unknown'>(\n { componentId, branchId = 'default' }: GetConfigurationsPath,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<ComponentConfig<T>[], Required<GetConfigurationsPath>>(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs',\n { path: { componentId, branchId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * @link https://api.keboola.com/?service=storage#storage/tag/component-configurations/GET/v2/storage/branch/{branchId}/components/{componentId}/configs/{configurationId}/workspaces\n */\n const getConfigurationWorkspaces = async ({\n componentId,\n branchId,\n configId,\n }: ConfigurationPath) => {\n const { data } = await client.get<Workspace[], ConfigurationPath>(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/workspaces',\n {\n path: { componentId, branchId, configId },\n },\n );\n\n return data;\n };\n\n const createConfigurationWorkspace = async ({\n componentId,\n branchId,\n configId,\n ...body\n }: Required<ConfigurationPath> & CreateConfigurationWorkspaceBody) => {\n const { data } = await client.post<\n Workspace,\n ConfigurationPath,\n CreateConfigurationWorkspaceQuery,\n CreateConfigurationWorkspaceBody\n >('/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/workspaces', {\n path: { componentId, branchId, configId },\n body,\n });\n\n return data;\n };\n\n const createConfigurationWorkspaceJob = async ({\n componentId,\n branchId,\n configId,\n ...body\n }: Required<ConfigurationPath> & CreateConfigurationWorkspaceBody) => {\n const { data } = await client.post<\n Job<'workspaceCreate'>,\n ConfigurationPath,\n CreateConfigurationWorkspaceQuery,\n CreateConfigurationWorkspaceBody\n >('/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/workspaces', {\n path: { componentId, branchId, configId },\n body,\n query: { async: true },\n });\n\n return data;\n };\n\n /**\n * @link https://api.keboola.com/?service=storage#storage/tag/component-configuration-rows/POST/v2/storage/branch/{branchId}/components/{componentId}/configs/{configurationId}/rows\n */\n const createConfigurationRow = async ({\n branchId = 'default',\n componentId,\n configId,\n ...body\n }: PartialKey<CreateConfigurationRowInput, 'branchId'>) => {\n const { data } = await client.post<\n Row,\n CreateConfigurationRowPath,\n void,\n CreateConfigurationRowBody\n >('/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/rows', {\n path: { branchId, componentId, configId },\n body,\n });\n\n return data;\n };\n\n /**\n * NOTE: Do not run this method concurrently; BE will return 500 server errors under load due to a BE bottleneck with IDs allocation.\n * @link https://api.keboola.com/?service=storage#storage/tag/component-configuration-rows/POST/v2/storage/branch/{branchId}/components/{componentId}/configs/{configurationId}/rows\n */\n const createConfigurationRows = async (\n {\n branchId = 'default',\n componentId,\n configId,\n data,\n }: PartialKey<CreateConfigurationRowsInput, 'branchId'>,\n options?: { middlewares: MiddlewareFn<CreateConfigurationRowBody, Row>[] },\n ) => {\n return series({\n items: data,\n process: (rowBody) => {\n return createConfigurationRow({\n branchId,\n componentId,\n configId,\n ...rowBody,\n });\n },\n middlewares: options?.middlewares,\n });\n };\n\n /**\n * @link https://api.keboola.com/?service=storage#storage/tag/component-configuration-rows/DELETE/v2/storage/branch/{branchId}/components/{componentId}/configs/{configurationId}/rows/{rowId}\n */\n const deleteConfigurationRow = async ({\n changeDescription,\n ...path\n }: DeleteConfigurationRowInput) => {\n await client.delete<void, DeleteConfigurationRowPath, void, DeleteConfigurationRowBody>(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/rows/{rowId}',\n {\n path,\n body: { changeDescription },\n },\n );\n };\n\n /**\n * @link https://api.keboola.com/?service=storage#storage/tag/component-configuration-rows/DELETE/v2/storage/branch/{branchId}/components/{componentId}/configs/{configurationId}/rows/{rowId}\n */\n const deleteConfigurationRows = async (\n { rowIds, changeDescription, ...input }: DeleteConfigurationRowsInput,\n options?: { middlewares: MiddlewareFn<string, void>[] },\n ) => {\n await concurrent({\n items: rowIds,\n process: (rowId) => {\n const resolvedDescription =\n typeof changeDescription === 'string' ? changeDescription : changeDescription?.(rowId);\n\n return deleteConfigurationRow({\n rowId,\n changeDescription: resolvedDescription,\n ...input,\n });\n },\n concurrency: 5,\n middlewares: options?.middlewares,\n });\n };\n\n const searchComponentConfigurations = async (\n { branchId = 'default' }: GetSearchComponentConfigurationsPath = {},\n query?: SearchComponentConfigurationsQuery,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<\n SearchComponentConfiguration[],\n GetSearchComponentConfigurationsPath,\n SearchComponentConfigurationsQuery,\n void\n >(\n '/v2/storage/branch/{branchId}/search/component-configurations',\n { path: { branchId }, query },\n { signal, queryArrayFormat: 'comma' },\n );\n\n return data;\n };\n\n return {\n // components\n getComponent,\n getComponents,\n searchComponentConfigurations,\n\n // configurations\n createConfiguration,\n updateConfiguration,\n getConfiguration,\n getConfigurationDiff,\n getConfigurationRowDiff,\n rebaseConfiguration,\n deleteConfiguration,\n deleteConfigurations,\n getConfigurations,\n restoreConfiguration,\n resetConfigurationToDefault,\n\n // configuration's rows\n createConfigurationRow,\n createConfigurationRows,\n deleteConfigurationRow,\n deleteConfigurationRows,\n\n // configuration's workspaces\n createConfigurationWorkspace,\n createConfigurationWorkspaceJob,\n getConfigurationWorkspaces,\n };\n};\n","import type { ConfigurationPath } from '../componentsAndConfigurations/types';\nimport type { GenericFetchClient } from '../storageClient';\n\nimport type {\n ConfigurationMetadataItem,\n SaveConfigurationMetadataBody,\n SaveConfigurationMetadataInput,\n} from './types';\n\nexport const createConfigurationMetadata = (client: GenericFetchClient) => {\n /** Create or update configuration metadata (e.g. `KBC.configuration.folderName`). */\n const saveConfigurationMetadata = async ({\n branchId = 'default',\n componentId,\n configId,\n ...body\n }: SaveConfigurationMetadataInput) => {\n const { data } = await client.post<\n ConfigurationMetadataItem[],\n Required<ConfigurationPath>,\n void,\n SaveConfigurationMetadataBody\n >('/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/metadata', {\n path: { branchId, componentId, configId },\n body,\n });\n return data;\n };\n\n return { saveConfigurationMetadata };\n};\n","import type { ComponentConfig } from '../componentsAndConfigurations/types';\nimport type { GenericFetchClient } from '../storageClient';\n\nimport type {\n ConfigurationVersion,\n ConfigurationVersionDetail,\n ConfigurationVersionDetailPath,\n ConfigurationVersionPath,\n CopyConfigurationFromVersionBody,\n CopyConfigurationFromVersionInput,\n CopyConfigurationFromVersionPath,\n RollbackConfigurationToVersionInput,\n} from './types';\n\nexport const createConfigurationVersions = (client: GenericFetchClient) => {\n const getConfigurationVersions = async (\n { branchId, componentId, configId }: ConfigurationVersionPath,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<ConfigurationVersion[], ConfigurationVersionPath, void, void>(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/versions',\n { path: { branchId, componentId, configId } },\n { signal },\n );\n return data;\n };\n\n const getConfigurationVersion = async (\n { branchId, componentId, configId, versionId }: ConfigurationVersionDetailPath,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<\n ConfigurationVersionDetail,\n ConfigurationVersionDetailPath,\n void,\n void\n >(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/versions/{versionId}',\n { path: { branchId, componentId, configId, versionId } },\n { signal },\n );\n return data;\n };\n\n /** Roll a configuration back to one of its versions. */\n const rollbackConfigurationToVersion = async ({\n branchId = 'default',\n componentId,\n configId,\n versionId,\n }: RollbackConfigurationToVersionInput) => {\n const { data } = await client.post<\n ComponentConfig,\n Required<RollbackConfigurationToVersionInput>,\n void,\n void\n >(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/versions/{versionId}/rollback',\n { path: { branchId, componentId, configId, versionId } },\n );\n return data;\n };\n\n /**\n * Server-side copy of a configuration from one of its versions. Preserves the\n * full configuration including rows — unlike a read-then-create, which would\n * only carry the top-level config body.\n */\n const copyConfigurationFromVersion = async ({\n branchId = 'default',\n componentId,\n configId,\n versionId,\n ...body\n }: CopyConfigurationFromVersionInput) => {\n const { data } = await client.post<\n ComponentConfig,\n Required<CopyConfigurationFromVersionPath>,\n void,\n CopyConfigurationFromVersionBody\n >(\n '/v2/storage/branch/{branchId}/components/{componentId}/configs/{configId}/versions/{versionId}/create',\n { path: { branchId, componentId, configId, versionId }, body },\n );\n return data;\n };\n\n return {\n getConfigurationVersions,\n getConfigurationVersion,\n rollbackConfigurationToVersion,\n copyConfigurationFromVersion,\n };\n};\n","import type { GenericFetchClient, StorageOpenApiFetchClient } from '../storageClient';\n\nimport type {\n CreateEventBody,\n EventPath,\n GetBucketEventsInput,\n GetEventsQuery,\n GetTableEventsInput,\n StorageEvent,\n TableEvent,\n} from './types';\n\nexport const createEvents = (\n client: GenericFetchClient,\n openApiClient: StorageOpenApiFetchClient,\n) => {\n const getEvents = async (query?: GetEventsQuery, signal?: AbortSignal) => {\n const { data } = await client.get<StorageEvent[], never, GetEventsQuery>(\n '/v2/storage/events',\n { query },\n { signal },\n );\n\n return data;\n };\n\n const getEvent = async (eventId: string | number, signal?: AbortSignal) => {\n const { data } = await client.get<StorageEvent, EventPath, never>(\n '/v2/storage/events/{eventId}',\n {\n path: { eventId },\n },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Event feed of a table in the given branch. A dev branch only contains the tables created or\n * pulled into it, so a production table's events must be read with the default branch id.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/events/GET/v2/storage/branch/{branchId}/tables/{tableId}/events\n */\n const getTableEvents = async (\n { branchId, tableId, ...query }: GetTableEventsInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await openApiClient.get(\n '/v2/storage/branch/{branchId}/tables/{tableId}/events',\n { path: { branchId, tableId }, query },\n { signal },\n );\n\n // The schema types `params`, `results` and `performance` as bare `Record<string, never>`.\n return data as unknown as TableEvent[];\n };\n\n /**\n * Event feed of a bucket in the given branch. Same payload as the table feed.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/events/GET/v2/storage/branch/{branchId}/buckets/{bucketId}/events\n */\n const getBucketEvents = async (\n { branchId, bucketId, ...query }: GetBucketEventsInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await openApiClient.get(\n '/v2/storage/branch/{branchId}/buckets/{bucketId}/events',\n { path: { branchId, bucketId }, query },\n { signal },\n );\n\n return data as unknown as TableEvent[];\n };\n\n const createEvent = async (body: CreateEventBody, signal?: AbortSignal) => {\n const { data } = await client.post<StorageEvent, never, never, CreateEventBody>(\n '/v2/storage/events',\n {\n body,\n },\n { signal },\n );\n\n return data;\n };\n\n return {\n getEvents,\n getEvent,\n getTableEvents,\n getBucketEvents,\n createEvent,\n };\n};\n","import type { GenericFetchClient } from '../storageClient';\n\nimport type {\n AddFileTagBody,\n DeleteFileTagPath,\n File,\n FilePath,\n GetFilesQuery,\n PreparedFile,\n PrepareFileBody,\n} from './types';\n\nexport const createFiles = (client: GenericFetchClient) => {\n const getFile = async (fileId: number, signal?: AbortSignal) => {\n const { data } = await client.get<File, FilePath, never>(\n `/v2/storage/files/{fileId}`,\n {\n path: { fileId },\n },\n { signal },\n );\n\n return data;\n };\n\n const getFiles = async (query?: GetFilesQuery, signal?: AbortSignal) => {\n const { data } = await client.get<File[], never, GetFilesQuery>(\n '/v2/storage/files',\n { query },\n { signal, queryArrayFormat: 'brackets' },\n );\n\n return data;\n };\n\n const deleteFile = async (fileId: number) => {\n const { data } = await client.delete<void, FilePath, never>(`/v2/storage/files/{fileId}`, {\n path: { fileId },\n });\n\n return data;\n };\n\n const addFileTag = async (fileId: number, tag: string) => {\n const { data } = await client.post<void, FilePath, never, AddFileTagBody>(\n `/v2/storage/files/{fileId}/tags`,\n {\n path: { fileId },\n body: { tag },\n },\n );\n\n return data;\n };\n\n const getFileContent = async (fileId: number, signal?: AbortSignal) => {\n const { data } = await client.get<string, FilePath, never>(\n `/v2/storage/files/{fileId}/content`,\n {\n path: { fileId },\n },\n { signal },\n );\n\n // The fetch client auto-parses JSON responses into objects,\n // but we always need a string for file preview rendering.\n return typeof data === 'string' ? data : JSON.stringify(data, null, 2);\n };\n\n const deleteFileTag = async (\n fileId: DeleteFileTagPath['fileId'],\n tag: DeleteFileTagPath['tag'],\n ) => {\n const { data } = await client.delete<void, DeleteFileTagPath, never>(\n '/v2/storage/files/{fileId}/tags/{tag}',\n {\n path: { fileId, tag },\n },\n );\n\n return data;\n };\n\n const prepareFile = async (body: PrepareFileBody, signal?: AbortSignal) => {\n const { data } = await client.post<PreparedFile, never, never, PrepareFileBody>(\n '/v2/storage/files/prepare',\n { body },\n { signal },\n );\n\n return data;\n };\n\n return {\n getFile,\n getFileContent,\n getFiles,\n deleteFile,\n addFileTag,\n deleteFileTag,\n prepareFile,\n };\n};\n","import type { GenericFetchClient } from '../storageClient';\n\nimport type { GetJobPath, GetJobsQuery, Job, JobOperation } from './types';\n\nexport const createJobs = (client: GenericFetchClient) => {\n const getJob = async <T extends JobOperation | string = string>(\n id: GetJobPath['id'],\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<Job<T>, GetJobPath>(\n `/v2/storage/jobs/{id}`,\n {\n path: { id },\n },\n { signal },\n );\n\n return data;\n };\n\n const getJobs = async <T extends JobOperation | string = string>(\n query?: GetJobsQuery,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<Job<T>[], never, GetJobsQuery>(\n '/v2/storage/jobs',\n { query },\n { signal, queryArrayFormat: 'brackets' },\n );\n\n return data;\n };\n\n return { getJob, getJobs };\n};\n","import type { MiddlewareFn } from '../../fetchClient';\nimport { KeboolaHttpHeader } from '../../internal';\n\nconst isTokenRefreshEndpoint = (request: Request): boolean => {\n const url = new URL(request.url);\n return request.method === 'POST' && /\\/tokens\\/[^/]+\\/refresh$/.test(url.pathname);\n};\n\nconst tryParseNewToken = (data: unknown): string | null => {\n if (data === null || typeof data !== 'object') return null;\n const token = (data as Record<string, unknown>).token;\n return typeof token === 'string' ? token : null;\n};\n\ntype Options = {\n accessToken: string;\n onRefresh?: (newToken: string) => void;\n};\n\nexport const createRefreshTokenMiddlware = ({ accessToken, onRefresh }: Options): MiddlewareFn => {\n let current = accessToken;\n\n return (next) => async (request) => {\n request.request.headers.set(KeboolaHttpHeader.STORAGE_API_TOKEN, current);\n\n if (!isTokenRefreshEndpoint(request.request)) return next(request);\n\n const response = await next(request);\n const newToken = tryParseNewToken(response.data);\n if (newToken === null) return response;\n\n current = newToken;\n onRefresh?.(current);\n\n return response;\n };\n};\n","import type { GenericFetchClient } from '../storageClient';\n\nimport type { GlobalSearchQuery, GlobalSearchResponse } from './types';\n\nexport const createSearch = (client: GenericFetchClient) => {\n /**\n * Project- and organization-wide search across buckets, tables, configurations, flows, ….\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/global-search/GET/v2/storage/global-search\n */\n const globalSearch = async (query: GlobalSearchQuery, signal?: AbortSignal) => {\n const { data } = await client.get<GlobalSearchResponse, void, GlobalSearchQuery, void>(\n '/v2/storage/global-search',\n { query },\n { signal },\n );\n\n return data;\n };\n\n return { globalSearch };\n};\n","import type { GenericFetchClient } from '../storageClient';\n\nimport type { GetRunIdStatsQuery, RunIdStats } from './types';\n\nexport const createStats = (client: GenericFetchClient) => {\n /**\n * Returns import/export table stats for a job run, identified by its runId.\n *\n * @link https://api.keboola.com/?service=storage#storage/GET/v2/storage/stats\n */\n const getRunIdStats = async (runId: string, signal?: AbortSignal) => {\n const { data } = await client.get<RunIdStats, void, GetRunIdStatsQuery, void>(\n '/v2/storage/stats',\n { query: { runId } },\n { signal },\n );\n\n return data;\n };\n\n return { getRunIdStats };\n};\n","import { concurrent } from '../../../utils';\nimport type { Job, TableCreateJob, TableExportJob, TableImportJob } from '../jobs/types';\nimport type { GenericFetchClient, StorageOpenApiFetchClient } from '../storageClient';\n\nimport type {\n CreateAliasTableBody,\n CreateSnapshotInput,\n CreateTableAsyncBody,\n CreateTableDefinitionBody,\n DeleteTableRows,\n GetDataPreviewInput,\n GetDataPreviewQuery,\n GetTableInput,\n GetTablesQuery,\n LoadTableSnapshotsInput,\n Metadata,\n PreviewData,\n SaveMetadataBody,\n SetAliasTableFilterBody,\n Snapshot,\n Table,\n TableDetail,\n TableExportAsyncBody,\n TableImportAsyncBody,\n UpdateTableBody,\n UpdateTableDefinitionBody,\n UpdateTableDefinitionInput,\n UpdateTableDefinitionPath,\n} from './types';\n\nexport const createTables = (\n client: GenericFetchClient,\n openApiClient: StorageOpenApiFetchClient,\n) => {\n /**\n * Returns every table in the given branch. Filter client-side by\n * `table.bucket?.id` (requires `include: ['buckets']`) or by the\n * `{bucketId}.` prefix in `table.id` (IDs use `{bucketId}.{tableName}`,\n * e.g. `in.c-main.users`).\n *\n * @link https://api.keboola.com/?service=storage#storage/GET/v2/storage/branch/{branchId}/tables\n */\n const getTables = async (\n branchId: string,\n query: GetTablesQuery = { include: [] },\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<Table[], { branchId: string }, GetTablesQuery>(\n `/v2/storage/branch/{branchId}/tables`,\n { path: { branchId }, query },\n { signal, queryArrayFormat: 'comma' },\n );\n\n return data;\n };\n\n /**\n * Returns a table from the given branch. A dev branch only contains the tables created or pulled\n * into it, so a production table must be read with the default branch id.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables/GET/v2/storage/branch/{branchId}/tables/{id}\n */\n const getTable = async ({ branchId, tableId }: GetTableInput, signal?: AbortSignal) => {\n const { data } = await openApiClient.get(\n '/v2/storage/branch/{branchId}/tables/{id}',\n { path: { branchId, id: tableId } },\n { signal },\n );\n\n // The schema types `metadata`, `columnMetadata`, `bucket`, `sourceTable` and `definition` as\n // bare `Record<string, never>`; `TableDetail` is the real shape, including the typed/alias union.\n return data as unknown as TableDetail;\n };\n\n const deleteTable = async (id: string, signal?: AbortSignal) => {\n await client.delete<void, { id: string }>(\n `/v2/storage/tables/{id}`,\n { path: { id } },\n { signal },\n );\n };\n\n const deleteTables = async (ids: string[]) => {\n await concurrent({\n items: ids,\n process: (id) => deleteTable(id),\n });\n };\n\n const deleteTableRows = async (id: string, query?: DeleteTableRows, signal?: AbortSignal) => {\n const { data } = await client.delete<Job, { id: string }, DeleteTableRows>(\n `/v2/storage/tables/{id}/rows`,\n { path: { id }, query },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Returns the first rows of a table in the given branch.\n *\n * Stays on the generic client: the swagger declares `query?: never` for this endpoint, so the\n * OpenAPI client cannot express `limit` / `whereFilters` / `orderBy` / `fulltextSearch`, all of\n * which the endpoint accepts. `GetDataPreviewQuery` is hand-authored for the same reason.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables/GET/v2/storage/branch/{branchId}/tables/{tableId}/data-preview\n */\n const getDataPreview = async (\n { branchId, tableId, ...query }: GetDataPreviewInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get<\n PreviewData,\n { branchId: string; tableId: string },\n GetDataPreviewQuery\n >(\n `/v2/storage/branch/{branchId}/tables/{tableId}/data-preview`,\n { path: { branchId, tableId }, query: { format: 'json', ...query } },\n { signal },\n );\n\n return data;\n };\n\n const exportAsync = async (\n tableId: string,\n body?: TableExportAsyncBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post<TableExportJob, { id: string }, never, TableExportAsyncBody>(\n '/v2/storage/tables/{id}/export-async',\n { path: { id: tableId }, body },\n { signal },\n );\n\n return data;\n };\n\n const createTableAsync = async (\n bucketId: string,\n body: CreateTableAsyncBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post<\n TableCreateJob,\n { bucketId: string },\n never,\n CreateTableAsyncBody\n >('/v2/storage/buckets/{bucketId}/tables-async', { path: { bucketId }, body }, { signal });\n\n return data;\n };\n\n /**\n * Creates a typed table from an explicit column definition (no data) in the given bucket.\n * The endpoint is async: it returns a `tableDefinitionCreate` storage job the caller can poll.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/buckets/POST/v2/storage/buckets/{bucketId}/tables-definition\n */\n const createTableDefinitionAsync = async (\n bucketId: string,\n body: CreateTableDefinitionBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post<\n Job<'tableDefinitionCreate'>,\n { bucketId: string },\n never,\n CreateTableDefinitionBody\n >('/v2/storage/buckets/{bucketId}/tables-definition', { path: { bucketId }, body }, { signal });\n\n return data;\n };\n\n const importAsync = async (tableId: string, body: TableImportAsyncBody, signal?: AbortSignal) => {\n const { data } = await client.post<TableImportJob, { id: string }, never, TableImportAsyncBody>(\n '/v2/storage/tables/{id}/import-async',\n { path: { id: tableId }, body },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Updates a table's definition in place — `displayName`, `description`, and\n * per-column `length`/`nullable`/`default`/`description`. The endpoint is\n * async: it returns a `tableDefinitionUpdate` storage job that the caller\n * can poll.\n *\n * `displayName` is required by the server even when only `description` or\n * column-level fields change — read the current value from the same branch\n * (e.g. via `GET /v2/storage/branch/{branchId}/tables/{id}`) and pass it\n * through.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables/PUT/v2/storage/branch/{branchId}/tables/{tableId}/definition\n */\n const updateTableDefinition = async (\n { branchId = 'default', tableId, ...body }: UpdateTableDefinitionInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.put<\n Job<'tableDefinitionUpdate'>,\n UpdateTableDefinitionPath,\n never,\n UpdateTableDefinitionBody\n >(\n '/v2/storage/branch/{branchId}/tables/{tableId}/definition',\n { path: { branchId, tableId }, body },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Updates a table's display name (synchronous). For typed-table column/definition changes use\n * `updateTableDefinition` instead.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables\n */\n const updateTable = async (tableId: string, body: UpdateTableBody, signal?: AbortSignal) => {\n const { data } = await client.put<Table, { id: string }, never, UpdateTableBody>(\n '/v2/storage/tables/{id}',\n { path: { id: tableId }, body },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Pulls a table from the default branch into the current dev branch. Async — returns a job.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables\n */\n const pullTable = async (tableId: string, signal?: AbortSignal) => {\n const { data } = await client.post<Job<'devBranchTablePull'>, { id: string }>(\n '/v2/storage/tables/{id}/pull',\n { path: { id: tableId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Creates an alias table in the given bucket. Usually returns the created alias `Table`\n * synchronously; for BigQuery VIEW-persisted aliases the API instead returns an `aliasCreate`\n * storage job, so the response is typed as a union — narrow on `operationName` before use.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables\n */\n const createAliasTable = async (\n bucketId: string,\n body: CreateAliasTableBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post<\n Table | Job<'aliasCreate'>,\n { bucketId: string },\n never,\n CreateAliasTableBody\n >('/v2/storage/buckets/{bucketId}/table-aliases', { path: { bucketId }, body }, { signal });\n\n return data;\n };\n\n /**\n * Sets (replaces) the filter of an alias table (synchronous).\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables\n */\n const setAliasTableFilter = async (\n tableId: string,\n body: SetAliasTableFilterBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post<Table, { id: string }, never, SetAliasTableFilterBody>(\n '/v2/storage/tables/{id}/alias-filter',\n { path: { id: tableId }, body },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Removes the filter of an alias table (synchronous).\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables\n */\n const removeAliasTableFilter = async (tableId: string, signal?: AbortSignal) => {\n await client.delete<void, { id: string }>(\n '/v2/storage/tables/{id}/alias-filter',\n { path: { id: tableId } },\n { signal },\n );\n };\n\n /**\n * Creates a snapshot of a table in the given branch. Async — returns a job.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables/POST/v2/storage/branch/{branchId}/tables/{id}/snapshots\n */\n const createSnapshot = async (\n { branchId, tableId, ...body }: CreateSnapshotInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await openApiClient.post(\n '/v2/storage/branch/{branchId}/tables/{id}/snapshots',\n { path: { branchId, id: tableId }, body },\n { signal },\n );\n\n // The schema types every job the same way (`id` as a string, `operationName` as a plain\n // string); narrow to the discriminated job the rest of the client and `sdk.storage` expect.\n return data as unknown as Job<'tableSnapshotCreate'>;\n };\n\n /**\n * Deletes a snapshot, returning the storage job that performs it (`null` when the backend answers\n * with no content). The endpoint is not branch-scoped — a snapshot id is unique across branches, so\n * there is no `/branch/{branchId}/snapshots/{snapshotId}` variant.\n *\n * Stays on the generic client: the swagger documents a single bodyless `default` response, so the\n * OpenAPI client has no response shape to offer here.\n *\n * @link https://api.keboola.com/?service=storage#storage/DELETE/v2/storage/snapshots/{snapshotId}\n */\n const deleteSnapshot = async (snapshotId: string, signal?: AbortSignal) => {\n const { data } = await client.delete<Job | null, { snapshotId: string }>(\n '/v2/storage/snapshots/{snapshotId}',\n { path: { snapshotId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Lists the snapshots of a table in the given branch.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables/GET/v2/storage/branch/{branchId}/tables/{id}/snapshots\n */\n const loadTableSnapshots = async (\n { branchId, tableId, ...query }: LoadTableSnapshotsInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await openApiClient.get(\n '/v2/storage/branch/{branchId}/tables/{id}/snapshots',\n { path: { branchId, id: tableId }, query },\n { signal },\n );\n\n // Schema types the items as `Record<string, never>`; cast to the real shape.\n return data as unknown as Snapshot[];\n };\n\n /**\n * Adds or updates metadata on a table.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables/POST/v2/storage/tables/{id}/metadata\n */\n const saveTableMetadata = async (\n tableId: string,\n body: SaveMetadataBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post<Metadata[], { id: string }, never, SaveMetadataBody>(\n '/v2/storage/tables/{id}/metadata',\n { path: { id: tableId }, body },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Deletes a single metadata entry from a table.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tables/DELETE/v2/storage/tables/{id}/metadata/{metadataId}\n */\n const deleteTableMetadata = async (tableId: string, metadataId: string, signal?: AbortSignal) => {\n await client.delete<void, { id: string; metadataId: string }>(\n '/v2/storage/tables/{id}/metadata/{metadataId}',\n { path: { id: tableId, metadataId } },\n { signal },\n );\n };\n\n return {\n getTables,\n getTable,\n getDataPreview,\n deleteTable,\n deleteTables,\n deleteTableRows,\n exportAsync,\n createTableAsync,\n createTableDefinitionAsync,\n importAsync,\n updateTableDefinition,\n updateTable,\n pullTable,\n createAliasTable,\n setAliasTableFilter,\n removeAliasTableFilter,\n createSnapshot,\n deleteSnapshot,\n loadTableSnapshots,\n saveTableMetadata,\n deleteTableMetadata,\n };\n};\n","import type { GenericFetchClient } from '../storageClient';\n\nimport type {\n CreateTokenBody,\n CreateTokenResponse,\n ShareTokenBody,\n StorageToken,\n TokenListItem,\n UpdateTokenBody,\n} from './types';\n\nexport const createTokens = (client: GenericFetchClient) => {\n const verify = async (signal?: AbortSignal) => {\n const { data } = await client.get<StorageToken, void, void, void>(\n '/v2/storage/tokens/verify',\n {},\n { signal },\n );\n\n return data;\n };\n\n const refresh = async (id: string, signal?: AbortSignal) => {\n const { data } = await client.post<StorageToken, void, void, void>(\n `/v2/storage/tokens/${id}/refresh`,\n {},\n { signal },\n );\n\n return data;\n };\n\n /**\n * Lists storage tokens accessible by the current token.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tokens/GET/v2/storage/tokens\n */\n const getTokens = async (signal?: AbortSignal) => {\n const { data } = await client.get<TokenListItem[], void, void, void>(\n '/v2/storage/tokens',\n {},\n { signal },\n );\n\n return data;\n };\n\n /**\n * Creates a new storage token. The response includes the freshly issued `token` secret.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tokens/POST/v2/storage/tokens\n */\n const createToken = async (body: CreateTokenBody, signal?: AbortSignal) => {\n const { data } = await client.post<CreateTokenResponse, void, void, CreateTokenBody>(\n '/v2/storage/tokens',\n { body },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Updates an existing storage token (description, permissions, expiration, …).\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tokens/PUT/v2/storage/tokens/{id}\n */\n const updateToken = async (id: string, body: UpdateTokenBody, signal?: AbortSignal) => {\n const { data } = await client.put<StorageToken, { id: string }, void, UpdateTokenBody>(\n '/v2/storage/tokens/{id}',\n { path: { id }, body },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Deletes a storage token.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tokens/DELETE/v2/storage/tokens/{id}\n */\n const deleteToken = async (id: string, signal?: AbortSignal) => {\n await client.delete<void, { id: string }>(\n '/v2/storage/tokens/{id}',\n { path: { id } },\n { signal },\n );\n };\n\n /**\n * Shares a storage token with another user by email.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/tokens/POST/v2/storage/tokens/{id}/share\n */\n const shareToken = async (id: string, body: ShareTokenBody, signal?: AbortSignal) => {\n await client.post<void, { id: string }, void, ShareTokenBody>(\n '/v2/storage/tokens/{id}/share',\n { path: { id }, body },\n { signal },\n );\n };\n\n return {\n verify,\n refresh,\n getTokens,\n createToken,\n updateToken,\n deleteToken,\n shareToken,\n };\n};\n","import type { GenericFetchClient } from '../storageClient';\n\nimport type { CreateTriggerBody, ListTriggersQuery, Trigger, UpdateTriggerBody } from './types';\n\nexport const createTriggers = (client: GenericFetchClient) => {\n /**\n * Lists triggers in the project, optionally filtered by component / configuration.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/triggers/GET/v2/storage/triggers\n */\n const listTriggers = async (query?: ListTriggersQuery, signal?: AbortSignal) => {\n const { data } = await client.get<Trigger[], void, ListTriggersQuery, void>(\n '/v2/storage/triggers',\n { query },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Creates a new trigger for a component configuration.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/triggers/POST/v2/storage/triggers\n */\n const createTrigger = async (body: CreateTriggerBody, signal?: AbortSignal) => {\n const { data } = await client.post<Trigger, void, void, CreateTriggerBody>(\n '/v2/storage/triggers',\n { body },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Updates an existing trigger.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/triggers/PUT/v2/storage/triggers/{triggerId}\n */\n const updateTrigger = async (\n triggerId: string,\n body: UpdateTriggerBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.put<Trigger, { triggerId: string }, void, UpdateTriggerBody>(\n '/v2/storage/triggers/{triggerId}',\n { path: { triggerId }, body },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Deletes a trigger.\n *\n * @link https://api.keboola.com/?service=storage#storage/tag/triggers/DELETE/v2/storage/triggers/{triggerId}\n */\n const deleteTrigger = async (triggerId: string, signal?: AbortSignal) => {\n await client.delete<void, { triggerId: string }>(\n '/v2/storage/triggers/{triggerId}',\n { path: { triggerId } },\n { signal },\n );\n };\n\n return {\n listTriggers,\n createTrigger,\n updateTrigger,\n deleteTrigger,\n };\n};\n","import { concurrent } from '../../../utils';\nimport type { Job } from '../jobs/types';\nimport type { GenericFetchClient, StorageOpenApiFetchClient } from '../storageClient';\n\nimport type {\n DeleteWorkspaceObjectBody,\n DeleteWorkspaceObjectInput,\n DeleteWorkspaceQuery,\n GetWorkspaceSaml2LoginPath,\n ResetWorkspacePassword,\n SetWorkspacePublicInput,\n SetWorkspacePublicKeyBody,\n SetWorkspacePublicKeyPath,\n UnloadWorkspaceInput,\n Workspace,\n WorkspaceInputMappingLoadPreviewInput,\n WorkspaceObject,\n WorkspacePath,\n WorkspaceSaml2Login,\n WorkspacesPath,\n} from './types';\n\nexport const createWorkspaces = (\n client: GenericFetchClient,\n openApiClient: StorageOpenApiFetchClient,\n) => {\n const getWorkspaces = async (branchId: WorkspacesPath['branchId'], signal?: AbortSignal) => {\n const { data } = await client.get<Workspace[], WorkspacesPath>(\n '/v2/storage/branch/{branchId}/workspaces',\n { path: { branchId } },\n { signal },\n );\n\n return data;\n };\n\n const getWorkspace = async (path: WorkspacePath, signal?: AbortSignal) => {\n const { data } = await client.get<Workspace, WorkspacePath>(\n '/v2/storage/branch/{branchId}/workspaces/{workspaceId}',\n { path },\n { signal },\n );\n\n return data;\n };\n\n const deleteWorkspace = async (path: WorkspacePath) => {\n await client.delete<void, WorkspacePath, DeleteWorkspaceQuery>(\n '/v2/storage/branch/{branchId}/workspaces/{workspaceId}',\n { path },\n );\n };\n\n const deleteWorkspaces = async ({\n workspaceIds,\n branchId,\n }: Omit<WorkspacePath, 'workspaceId'> & {\n workspaceIds: WorkspacePath['workspaceId'][];\n }) => {\n await concurrent({\n items: workspaceIds,\n process: async (workspaceId) => deleteWorkspace({ branchId, workspaceId }),\n concurrency: 5,\n });\n };\n\n const deleteWorkspaceJob = async (path: WorkspacePath) => {\n const { data } = await client.delete<Job<'workspaceDrop'>, WorkspacePath, DeleteWorkspaceQuery>(\n '/v2/storage/branch/{branchId}/workspaces/{workspaceId}',\n { path, query: { async: true } },\n {},\n );\n\n return data;\n };\n\n const resetWorkspacePassword = async ({ branchId, workspaceId }: WorkspacePath) => {\n const { data } = await client.post<ResetWorkspacePassword, WorkspacePath, void, void>(\n '/v2/storage/branch/{branchId}/workspaces/{workspaceId}/password',\n {\n path: { branchId, workspaceId },\n },\n );\n\n return data;\n };\n\n const getWorkspaceSaml2Login = async (path: GetWorkspaceSaml2LoginPath, signal?: AbortSignal) => {\n const { data } = await client.get<WorkspaceSaml2Login, GetWorkspaceSaml2LoginPath>(\n '/v2/storage/branch/{branchId}/workspaces/{workspaceId}/saml2-login',\n { path },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Set the public key for the workspace user, or migrate workspace from password to key auth.\n * Supported only on Snowflake.\n * When called, either a new key is created, or the older one is replaced.\n */\n const setWorkspacePublicKey = async ({\n branchId,\n workspaceId,\n publicKey,\n }: SetWorkspacePublicInput) => {\n const { data } = await client.post<\n Workspace,\n SetWorkspacePublicKeyPath,\n void,\n SetWorkspacePublicKeyBody\n >('/v2/storage/branch/{branchId}/workspaces/{workspaceId}/public-key', {\n path: { branchId, workspaceId },\n body: { publicKey },\n });\n\n return data;\n };\n\n const getWorkspaceObjects = async (path: WorkspacePath, signal?: AbortSignal) => {\n const { data } = await client.get<WorkspaceObject[], WorkspacePath>(\n '/v2/storage/branch/{branchId}/workspaces/{workspaceId}/objects',\n { path },\n { signal },\n );\n\n return data;\n };\n\n const deleteWorkspaceObjectsAsync = async ({\n branchId,\n workspaceId,\n ...body\n }: DeleteWorkspaceObjectInput) => {\n const { data } = await client.post<\n Job<'workspaceBatchDeleteObject'>,\n WorkspacePath,\n never,\n DeleteWorkspaceObjectBody\n >('/v2/storage/branch/{branchId}/workspaces/{workspaceId}/objects/batch-delete', {\n path: { branchId, workspaceId },\n body,\n });\n\n return data;\n };\n\n const unloadWorkspace = async ({ branchId, workspaceId, ...query }: UnloadWorkspaceInput) => {\n const { data } = await openApiClient.post(\n '/v2/storage/branch/{branchId}/workspaces/{workspaceId}/unload',\n {\n path: { branchId, workspaceId },\n query,\n },\n );\n\n return data;\n };\n\n /**\n * Preview the resolved load types for a component-style input-mapping config without a workspace.\n * Returns the preferred load type plus the possible load types per table for the resolved backend,\n * without creating a job. The backend is resolved per item from the item `backend` field, then the\n * `backend` argument, then the project default.\n */\n const inputMappingLoadPreview = async (\n { branchId, body, backend }: WorkspaceInputMappingLoadPreviewInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await openApiClient.post(\n '/v2/storage/branch/{branchId}/input-mapping-load/preview',\n {\n path: { branchId: String(branchId) },\n query: backend ? { backend } : undefined,\n body,\n },\n { signal },\n );\n\n return data;\n };\n\n return {\n getWorkspace,\n getWorkspaces,\n deleteWorkspace,\n resetWorkspacePassword,\n deleteWorkspaces,\n deleteWorkspaceJob,\n setWorkspacePublicKey,\n getWorkspaceSaml2Login,\n getWorkspaceObjects,\n deleteWorkspaceObjectsAsync,\n unloadWorkspace,\n inputMappingLoadPreview,\n };\n};\n","import { type MiddlewareFn } from '../../fetchClient';\nimport { createGenericFetchClient, createOpenapiFetchClient } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport { createMergeRequests } from './mergeRequests/mergeRequests';\nimport { createBranches } from './branches';\nimport { createBuckets } from './buckets';\nimport { createColumns } from './columns';\nimport { createComponentsAndConfigurations } from './componentsAndConfigurations';\nimport { createConfigurationMetadata } from './configurationMetadata';\nimport { createConfigurationVersions } from './configurationVersions';\nimport { createEvents } from './events';\nimport { createFiles } from './files';\nimport { createJobs } from './jobs';\nimport { createRefreshTokenMiddlware } from './refreshTokenMiddleware';\nimport { createSearch } from './search';\nimport { createStats } from './stats';\nimport { createTables } from './tables';\nimport { createTokens } from './tokens';\nimport { createTriggers } from './triggers';\nimport type { GetStackInfoQuery, StackInfo } from './types';\nimport { createWorkspaces } from './workspaces';\n\nexport type GenericFetchClient = ReturnType<typeof createGenericFetchClient>;\nexport type StorageOpenApiFetchClient = ReturnType<typeof createOpenapiFetchClient<paths>>;\n\ntype StorageClientInitOptions = Omit<ClientInitOptions, 'middlewares'> & {\n middlewares?: MiddlewareFn[];\n onRefreshToken?: (newToken: string) => void;\n};\n\nexport const createStorageClient = ({\n baseUrl,\n auth,\n middlewares = [],\n onRefreshToken,\n}: StorageClientInitOptions) => {\n const headers = createAuthHeaders(auth);\n\n // Token-rotation tracking only matters on the client that calls the refresh\n // endpoint. A reader (no `onRefreshToken`) keeps its token fresh via a caller-\n // supplied token-sync middleware instead, so the refresh middleware must not\n // tag along — it would set the header from its stale private `current`.\n // SAPI in-band token rotation only applies to a project-bound storage token. Bearer carries no\n // storage token (its session middleware sets the Authorization header), so it never rotates here.\n const allMiddlewares =\n onRefreshToken && auth.type === 'sapi-token'\n ? [\n ...middlewares,\n createRefreshTokenMiddlware({ accessToken: auth.token, onRefresh: onRefreshToken }),\n ]\n : middlewares;\n\n const client = createGenericFetchClient({\n baseUrl,\n middlewares: allMiddlewares,\n headers,\n });\n\n const openApiClient = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares: allMiddlewares,\n headers,\n });\n\n const getStackInfo = async (query?: GetStackInfoQuery, signal?: AbortSignal) => {\n const { data } = await client.get<StackInfo, never, GetStackInfoQuery>(\n '/v2/storage',\n { query },\n { signal },\n );\n\n return data;\n };\n\n return {\n buckets: createBuckets(client, openApiClient),\n events: createEvents(client, openApiClient),\n files: createFiles(client),\n tables: createTables(client, openApiClient),\n columns: createColumns(client),\n branches: createBranches(client),\n workspaces: createWorkspaces(client, openApiClient),\n mergeRequests: createMergeRequests(openApiClient),\n jobs: createJobs(client),\n componentsAndConfigurations: createComponentsAndConfigurations(client),\n configurationMetadata: createConfigurationMetadata(client),\n configurationVersions: createConfigurationVersions(client),\n tokens: createTokens(client),\n triggers: createTriggers(client),\n search: createSearch(client),\n stats: createStats(client),\n getStackInfo,\n };\n};\n"]}
|