@storyblok/management-api-client 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +125 -1
- package/dist/index.d.mts +125 -2
- package/dist/index.mjs +6 -0
- package/dist/index.mjs.map +1 -1
- package/dist/resources/assets.cjs +1 -0
- package/dist/resources/assets.cjs.map +1 -1
- package/dist/resources/assets.mjs +1 -1
- package/dist/resources/assets.mjs.map +1 -1
- package/dist/resources/datasource-entries.cjs +2 -1
- package/dist/resources/datasource-entries.cjs.map +1 -1
- package/dist/resources/datasource-entries.mjs +2 -1
- package/dist/resources/datasource-entries.mjs.map +1 -1
- package/dist/resources/shared-asset-folders.cjs +81 -0
- package/dist/resources/shared-asset-folders.cjs.map +1 -0
- package/dist/resources/shared-asset-folders.d.cts +41 -0
- package/dist/resources/shared-asset-folders.d.mts +41 -0
- package/dist/resources/shared-asset-folders.mjs +81 -0
- package/dist/resources/shared-asset-folders.mjs.map +1 -0
- package/dist/resources/shared-assets.cjs +197 -0
- package/dist/resources/shared-assets.cjs.map +1 -0
- package/dist/resources/shared-assets.d.cts +29 -0
- package/dist/resources/shared-assets.d.mts +28 -0
- package/dist/resources/shared-assets.mjs +197 -0
- package/dist/resources/shared-assets.mjs.map +1 -0
- package/dist/resources/shared-internal-tags.cjs +73 -0
- package/dist/resources/shared-internal-tags.cjs.map +1 -0
- package/dist/resources/shared-internal-tags.d.cts +32 -0
- package/dist/resources/shared-internal-tags.d.mts +32 -0
- package/dist/resources/shared-internal-tags.mjs +73 -0
- package/dist/resources/shared-internal-tags.mjs.map +1 -0
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -14,6 +14,9 @@ const require_datasources = require('./resources/datasources.cjs');
|
|
|
14
14
|
const require_experiments = require('./resources/experiments.cjs');
|
|
15
15
|
const require_internal_tags = require('./resources/internal-tags.cjs');
|
|
16
16
|
const require_presets = require('./resources/presets.cjs');
|
|
17
|
+
const require_shared_asset_folders = require('./resources/shared-asset-folders.cjs');
|
|
18
|
+
const require_shared_assets = require('./resources/shared-assets.cjs');
|
|
19
|
+
const require_shared_internal_tags = require('./resources/shared-internal-tags.cjs');
|
|
17
20
|
const require_spaces = require('./resources/spaces.cjs');
|
|
18
21
|
const require_stories = require('./resources/stories.cjs');
|
|
19
22
|
const require_users = require('./resources/users.cjs');
|
|
@@ -164,6 +167,9 @@ const createManagementApiClient = (config) => {
|
|
|
164
167
|
post: httpPost,
|
|
165
168
|
presets: require_presets.createPresetsResource(deps),
|
|
166
169
|
put: httpPut,
|
|
170
|
+
sharedAssetFolders: require_shared_asset_folders.createSharedAssetFoldersResource(deps),
|
|
171
|
+
sharedAssets: require_shared_assets.createSharedAssetsResource(deps),
|
|
172
|
+
sharedInternalTags: require_shared_internal_tags.createSharedInternalTagsResource(deps),
|
|
167
173
|
spaces: require_spaces.createSpacesResource(deps),
|
|
168
174
|
stories: require_stories.createStoriesResource(deps),
|
|
169
175
|
users: require_users.createUsersResource({
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["createThrottleManager","createClient","createConfig","ClientError","createAssetFoldersResource","createAssetsResource","createComponentFoldersResource","createComponentsResource","createDatasourceEntriesResource","createDatasourcesResource","createExperimentsResource","createInternalTagsResource","createPresetsResource","createSpacesResource","createStoriesResource","createUsersResource"],"sources":["../src/index.ts"],"sourcesContent":["import type { Client, ResolvedRequestOptions } from './generated/shared/client';\nimport type { Middleware } from './generated/shared/client/utils.gen';\nimport { createClient, createConfig } from './generated/shared/client';\nimport { getManagementBaseUrl } from '@storyblok/region-helper';\nimport { ClientError } from './error';\nimport { createThrottleManager } from './utils/rate-limit';\nimport { createAssetFoldersResource } from './resources/asset-folders';\nimport { createAssetsResource } from './resources/assets';\nimport { createComponentFoldersResource } from './resources/component-folders';\nimport { createComponentsResource } from './resources/components';\nimport { createDatasourceEntriesResource } from './resources/datasource-entries';\nimport { createDatasourcesResource } from './resources/datasources';\nimport { createExperimentsResource } from './resources/experiments';\nimport { createInternalTagsResource } from './resources/internal-tags';\nimport { createPresetsResource } from './resources/presets';\nimport { createSpacesResource } from './resources/spaces';\nimport { createStoriesResource } from './resources/stories';\nimport { createUsersResource } from './resources/users';\nimport type {\n ApiResponse,\n HttpRequestOptions,\n ManagementApiClientConfig,\n MapiResourceDeps,\n} from './types';\n\nexport { ClientError } from './error';\n\nfunction getAuthorizationHeader(config: ManagementApiClientConfig): string | undefined {\n if (config.personalAccessToken) {\n return config.personalAccessToken;\n }\n if (config.oauthToken) {\n return `Bearer ${config.oauthToken.replace(/^Bearer\\s+/i, '')}`;\n }\n return undefined;\n}\n\nexport const createManagementApiClient = (config: ManagementApiClientConfig) => {\n const {\n spaceId,\n region = 'eu',\n baseUrl,\n headers = {},\n throwOnError = false,\n retry = {\n limit: 12,\n backoffLimit: 20_000,\n methods: ['get', 'post', 'put', 'delete', 'patch', 'head', 'options', 'trace'],\n statusCodes: [429],\n },\n timeout = 30_000,\n rateLimit,\n } = config;\n\n const throttleManager = createThrottleManager(rateLimit ?? {});\n const authHeader = getAuthorizationHeader(config);\n\n const client: Client = createClient(\n createConfig({\n baseUrl: baseUrl || getManagementBaseUrl(region),\n headers: {\n ...(authHeader ? { Authorization: authHeader } : {}),\n ...headers,\n },\n throwOnError,\n kyOptions: {\n throwHttpErrors: true,\n timeout,\n retry,\n },\n }),\n );\n\n client.interceptors.error.use(\n (error: unknown, response: Response) =>\n new ClientError(response?.statusText || 'API request failed', {\n status: response?.status ?? 0,\n statusText: response?.statusText ?? '',\n data: error,\n }),\n );\n\n /**\n * Wraps an SDK call with throttling.\n * When throwOnError is true, errors throw and data is guaranteed non-null.\n */\n function wrapRequest<TData, ThrowOnError extends boolean = false>(\n fn: () => Promise<unknown>,\n _throwOnError?: ThrowOnError,\n ): Promise<ApiResponse<TData, ThrowOnError>> {\n return throttleManager.execute(\n () => fn() as Promise<ApiResponse<TData, ThrowOnError>>,\n );\n }\n\n const deps: MapiResourceDeps = { client, spaceId, wrapRequest };\n\n /**\n * Escape hatch: send a GET request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpGet = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.get({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a POST request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPost = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.post({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PUT request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPut = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.put({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PATCH request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPatch = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.patch({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a DELETE request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpDelete = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.delete({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n return {\n assetFolders: createAssetFoldersResource(deps),\n assets: createAssetsResource(deps),\n componentFolders: createComponentFoldersResource(deps),\n components: createComponentsResource(deps),\n datasourceEntries: createDatasourceEntriesResource(deps),\n datasources: createDatasourcesResource(deps),\n experiments: createExperimentsResource(deps),\n delete: httpDelete,\n get: httpGet,\n patch: httpPatch,\n interceptors: client.interceptors as Middleware<Request, Response, unknown, ResolvedRequestOptions>,\n internalTags: createInternalTagsResource(deps),\n post: httpPost,\n presets: createPresetsResource(deps),\n put: httpPut,\n spaces: createSpacesResource(deps),\n stories: createStoriesResource(deps),\n users: createUsersResource({ client, wrapRequest }),\n };\n};\n\nexport type ManagementApiClient = ReturnType<typeof createManagementApiClient>;\n\nexport type {\n ApiResponse,\n Asset,\n AssetCreate,\n AssetField,\n AssetFolder,\n AssetFolderCreate,\n AssetFolderUpdate,\n AssetListQuery,\n AssetSignRequest,\n AssetUpdate,\n AssetUpdateRequest,\n AssetUploadRequest,\n Component,\n ComponentCreate,\n ComponentFolder,\n ComponentSchemaField,\n ComponentUpdate,\n Datasource,\n DatasourceCreate,\n DatasourceEntry,\n DatasourceEntryCreate,\n DatasourceEntryUpdate,\n DatasourceUpdate,\n FetchOptions,\n HttpRequestOptions,\n InternalTag,\n ManagementApiClientConfig,\n MapiResourceDeps,\n MultilinkField,\n PluginField,\n Preset,\n RateLimitConfig,\n RequestConfigOverrides,\n RichtextField,\n SignedResponseObject,\n Space,\n SpaceCreate,\n SpaceUpdate,\n Story,\n StoryAlternate,\n StoryContent,\n StoryCreate,\n StoryListQuery,\n StoryLocalizedPath,\n StoryTranslatedSlug,\n StoryUpdate,\n TableField,\n User,\n} from './types';\nexport { normalizeAssetUrl } from './utils/normalize-asset-url';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["createThrottleManager","createClient","createConfig","ClientError","createAssetFoldersResource","createAssetsResource","createComponentFoldersResource","createComponentsResource","createDatasourceEntriesResource","createDatasourcesResource","createExperimentsResource","createInternalTagsResource","createPresetsResource","createSharedAssetFoldersResource","createSharedAssetsResource","createSharedInternalTagsResource","createSpacesResource","createStoriesResource","createUsersResource"],"sources":["../src/index.ts"],"sourcesContent":["import type { Client, ResolvedRequestOptions } from './generated/shared/client';\nimport type { Middleware } from './generated/shared/client/utils.gen';\nimport { createClient, createConfig } from './generated/shared/client';\nimport { getManagementBaseUrl } from '@storyblok/region-helper';\nimport { ClientError } from './error';\nimport { createThrottleManager } from './utils/rate-limit';\nimport { createAssetFoldersResource } from './resources/asset-folders';\nimport { createAssetsResource } from './resources/assets';\nimport { createComponentFoldersResource } from './resources/component-folders';\nimport { createComponentsResource } from './resources/components';\nimport { createDatasourceEntriesResource } from './resources/datasource-entries';\nimport { createDatasourcesResource } from './resources/datasources';\nimport { createExperimentsResource } from './resources/experiments';\nimport { createInternalTagsResource } from './resources/internal-tags';\nimport { createPresetsResource } from './resources/presets';\nimport { createSharedAssetFoldersResource } from './resources/shared-asset-folders';\nimport { createSharedAssetsResource } from './resources/shared-assets';\nimport { createSharedInternalTagsResource } from './resources/shared-internal-tags';\nimport { createSpacesResource } from './resources/spaces';\nimport { createStoriesResource } from './resources/stories';\nimport { createUsersResource } from './resources/users';\nimport type {\n ApiResponse,\n HttpRequestOptions,\n ManagementApiClientConfig,\n MapiResourceDeps,\n} from './types';\n\nexport { ClientError } from './error';\n\nfunction getAuthorizationHeader(config: ManagementApiClientConfig): string | undefined {\n if (config.personalAccessToken) {\n return config.personalAccessToken;\n }\n if (config.oauthToken) {\n return `Bearer ${config.oauthToken.replace(/^Bearer\\s+/i, '')}`;\n }\n return undefined;\n}\n\nexport const createManagementApiClient = (config: ManagementApiClientConfig) => {\n const {\n spaceId,\n region = 'eu',\n baseUrl,\n headers = {},\n throwOnError = false,\n retry = {\n limit: 12,\n backoffLimit: 20_000,\n methods: ['get', 'post', 'put', 'delete', 'patch', 'head', 'options', 'trace'],\n statusCodes: [429],\n },\n timeout = 30_000,\n rateLimit,\n } = config;\n\n const throttleManager = createThrottleManager(rateLimit ?? {});\n const authHeader = getAuthorizationHeader(config);\n\n const client: Client = createClient(\n createConfig({\n baseUrl: baseUrl || getManagementBaseUrl(region),\n headers: {\n ...(authHeader ? { Authorization: authHeader } : {}),\n ...headers,\n },\n throwOnError,\n kyOptions: {\n throwHttpErrors: true,\n timeout,\n retry,\n },\n }),\n );\n\n client.interceptors.error.use(\n (error: unknown, response: Response) =>\n new ClientError(response?.statusText || 'API request failed', {\n status: response?.status ?? 0,\n statusText: response?.statusText ?? '',\n data: error,\n }),\n );\n\n /**\n * Wraps an SDK call with throttling.\n * When throwOnError is true, errors throw and data is guaranteed non-null.\n */\n function wrapRequest<TData, ThrowOnError extends boolean = false>(\n fn: () => Promise<unknown>,\n _throwOnError?: ThrowOnError,\n ): Promise<ApiResponse<TData, ThrowOnError>> {\n return throttleManager.execute(\n () => fn() as Promise<ApiResponse<TData, ThrowOnError>>,\n );\n }\n\n const deps: MapiResourceDeps = { client, spaceId, wrapRequest };\n\n /**\n * Escape hatch: send a GET request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpGet = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.get({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a POST request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPost = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.post({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PUT request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPut = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.put({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PATCH request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPatch = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.patch({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a DELETE request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpDelete = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.delete({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n return {\n assetFolders: createAssetFoldersResource(deps),\n assets: createAssetsResource(deps),\n componentFolders: createComponentFoldersResource(deps),\n components: createComponentsResource(deps),\n datasourceEntries: createDatasourceEntriesResource(deps),\n datasources: createDatasourcesResource(deps),\n experiments: createExperimentsResource(deps),\n delete: httpDelete,\n get: httpGet,\n patch: httpPatch,\n interceptors: client.interceptors as Middleware<Request, Response, unknown, ResolvedRequestOptions>,\n internalTags: createInternalTagsResource(deps),\n post: httpPost,\n presets: createPresetsResource(deps),\n put: httpPut,\n sharedAssetFolders: createSharedAssetFoldersResource(deps),\n sharedAssets: createSharedAssetsResource(deps),\n sharedInternalTags: createSharedInternalTagsResource(deps),\n spaces: createSpacesResource(deps),\n stories: createStoriesResource(deps),\n users: createUsersResource({ client, wrapRequest }),\n };\n};\n\nexport type ManagementApiClient = ReturnType<typeof createManagementApiClient>;\n\nexport type { AccessLevel, AssetFolderAccess, SharedAssetFolder, SharedAssetFolderCreate, SharedAssetFolderGetResponse, SharedAssetFolderListResponse, SharedAssetFolderUpdate } from './resources/shared-asset-folders';\nexport type { SharedAssetCreate, SharedAssetListQuery, SharedAssetListResponse, SharedAssetUploadRequest } from './resources/shared-assets';\nexport type { SharedInternalTag, SharedInternalTagCreate, SharedInternalTagListQuery, SharedInternalTagListResponse, SharedInternalTagMutateResponse, SharedInternalTagObjectType } from './resources/shared-internal-tags';\nexport type {\n ApiResponse,\n Asset,\n AssetCreate,\n AssetField,\n AssetFolder,\n AssetFolderCreate,\n AssetFolderUpdate,\n AssetListQuery,\n AssetSignRequest,\n AssetUpdate,\n AssetUpdateRequest,\n AssetUploadRequest,\n Component,\n ComponentCreate,\n ComponentFolder,\n ComponentSchemaField,\n ComponentUpdate,\n Datasource,\n DatasourceCreate,\n DatasourceEntry,\n DatasourceEntryCreate,\n DatasourceEntryUpdate,\n DatasourceUpdate,\n FetchOptions,\n HttpRequestOptions,\n InternalTag,\n ManagementApiClientConfig,\n MapiResourceDeps,\n MultilinkField,\n PluginField,\n Preset,\n RateLimitConfig,\n RequestConfigOverrides,\n RichtextField,\n SignedResponseObject,\n Space,\n SpaceCreate,\n SpaceUpdate,\n Story,\n StoryAlternate,\n StoryContent,\n StoryCreate,\n StoryListQuery,\n StoryLocalizedPath,\n StoryTranslatedSlug,\n StoryUpdate,\n TableField,\n User,\n} from './types';\nexport { normalizeAssetUrl } from './utils/normalize-asset-url';\n"],"mappings":"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"}
|
package/dist/index.d.cts
CHANGED
|
@@ -17,6 +17,9 @@ import { SpaceIdPathOverride } from "./resources/shared.cjs";
|
|
|
17
17
|
import { AssetCreate, AssetUploadRequest } from "./resources/assets.cjs";
|
|
18
18
|
import { ApiResponse, AssetListQuery, FetchOptions, HttpRequestOptions, ManagementApiClientConfig, MapiResourceDeps, RequestConfigOverrides, Story, StoryListQuery } from "./types.cjs";
|
|
19
19
|
import { ActivateData, ActivateResponses, CompleteResponses, CompleteWithWinnerResponses, CreateData as CreateData$9, CreateExperimentStoryData, CreateExperimentStoryResponses, CreateResponses as CreateResponses$9, CreateStoryMappingData, CreateStoryMappingResponses, DeleteExperimentStoryResponses, DeleteResponses as DeleteResponses$5, DeleteStoryMappingResponses, GetResponses as GetResponses$9, GetResultsResponses, ListData as ListData$10, ListResponses as ListResponses$10, PauseResponses, PushResultsData, PushResultsResponses, SelectWinnerResponses, UpdateData as UpdateData$10, UpdateResponses as UpdateResponses$7 } from "./generated/experiments/types.gen.cjs";
|
|
20
|
+
import { AccessLevel, AssetFolderAccess, SharedAssetFolder, SharedAssetFolderCreate, SharedAssetFolderGetResponse, SharedAssetFolderListResponse, SharedAssetFolderUpdate } from "./resources/shared-asset-folders.cjs";
|
|
21
|
+
import { SharedAssetCreate, SharedAssetListQuery, SharedAssetListResponse, SharedAssetUploadRequest } from "./resources/shared-assets.cjs";
|
|
22
|
+
import { SharedInternalTag, SharedInternalTagCreate, SharedInternalTagListQuery, SharedInternalTagListResponse, SharedInternalTagMutateResponse, SharedInternalTagObjectType } from "./resources/shared-internal-tags.cjs";
|
|
20
23
|
import { normalizeAssetUrl } from "./utils/normalize-asset-url.cjs";
|
|
21
24
|
|
|
22
25
|
//#region src/index.d.ts
|
|
@@ -233,6 +236,9 @@ declare const createManagementApiClient: (config: ManagementApiClientConfig) =>
|
|
|
233
236
|
} & SpaceIdPathOverride): Promise<ApiResponse<CreateResponses$4[201], ThrowOnError>>;
|
|
234
237
|
update<ThrowOnError extends boolean = false>(datasourceEntryId: number, options: {
|
|
235
238
|
body: UpdateData$5["body"];
|
|
239
|
+
query?: {
|
|
240
|
+
dimension_id?: number;
|
|
241
|
+
};
|
|
236
242
|
signal?: AbortSignal;
|
|
237
243
|
throwOnError?: ThrowOnError;
|
|
238
244
|
fetchOptions?: FetchOptions;
|
|
@@ -429,6 +435,124 @@ declare const createManagementApiClient: (config: ManagementApiClientConfig) =>
|
|
|
429
435
|
} & SpaceIdPathOverride): Promise<ApiResponse<DeleteResponses$3[200], ThrowOnError>>;
|
|
430
436
|
};
|
|
431
437
|
put: <TData = unknown>(path: string, options?: HttpRequestOptions) => Promise<ApiResponse<TData>>;
|
|
438
|
+
sharedAssetFolders: {
|
|
439
|
+
list<ThrowOnError extends boolean = false>(options?: {
|
|
440
|
+
query?: {
|
|
441
|
+
search?: string;
|
|
442
|
+
with_parent?: string;
|
|
443
|
+
by_ids?: string;
|
|
444
|
+
};
|
|
445
|
+
signal?: AbortSignal;
|
|
446
|
+
throwOnError?: ThrowOnError;
|
|
447
|
+
fetchOptions?: FetchOptions;
|
|
448
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedAssetFolderListResponse, ThrowOnError>>;
|
|
449
|
+
get<ThrowOnError extends boolean = false>(folderId: number | string, options?: {
|
|
450
|
+
signal?: AbortSignal;
|
|
451
|
+
throwOnError?: ThrowOnError;
|
|
452
|
+
fetchOptions?: FetchOptions;
|
|
453
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedAssetFolderGetResponse, ThrowOnError>>;
|
|
454
|
+
create<ThrowOnError extends boolean = false>(options: {
|
|
455
|
+
body: {
|
|
456
|
+
shared_asset_folder: SharedAssetFolderCreate;
|
|
457
|
+
};
|
|
458
|
+
signal?: AbortSignal;
|
|
459
|
+
throwOnError?: ThrowOnError;
|
|
460
|
+
fetchOptions?: FetchOptions;
|
|
461
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedAssetFolderGetResponse, ThrowOnError>>;
|
|
462
|
+
update<ThrowOnError extends boolean = false>(folderId: number | string, options: {
|
|
463
|
+
body: {
|
|
464
|
+
shared_asset_folder: SharedAssetFolderUpdate;
|
|
465
|
+
};
|
|
466
|
+
signal?: AbortSignal;
|
|
467
|
+
throwOnError?: ThrowOnError;
|
|
468
|
+
fetchOptions?: FetchOptions;
|
|
469
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<void, ThrowOnError>>;
|
|
470
|
+
delete<ThrowOnError extends boolean = false>(folderId: number | string, options?: {
|
|
471
|
+
query?: {
|
|
472
|
+
recursive?: boolean;
|
|
473
|
+
};
|
|
474
|
+
signal?: AbortSignal;
|
|
475
|
+
throwOnError?: ThrowOnError;
|
|
476
|
+
fetchOptions?: FetchOptions;
|
|
477
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<void, ThrowOnError>>;
|
|
478
|
+
};
|
|
479
|
+
sharedAssets: {
|
|
480
|
+
list<ThrowOnError extends boolean = false>(options?: {
|
|
481
|
+
query?: SharedAssetListQuery;
|
|
482
|
+
signal?: AbortSignal;
|
|
483
|
+
throwOnError?: ThrowOnError;
|
|
484
|
+
fetchOptions?: FetchOptions;
|
|
485
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedAssetListResponse, ThrowOnError>>;
|
|
486
|
+
get<ThrowOnError extends boolean = false>(assetId: number | string, options?: {
|
|
487
|
+
signal?: AbortSignal;
|
|
488
|
+
throwOnError?: ThrowOnError;
|
|
489
|
+
fetchOptions?: FetchOptions;
|
|
490
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<Asset, ThrowOnError>>;
|
|
491
|
+
upload(options: {
|
|
492
|
+
body: SharedAssetUploadRequest;
|
|
493
|
+
file: Blob | ArrayBuffer;
|
|
494
|
+
signal?: AbortSignal;
|
|
495
|
+
fetchOptions?: FetchOptions;
|
|
496
|
+
} & SpaceIdPathOverride): Promise<Asset>;
|
|
497
|
+
create(options: {
|
|
498
|
+
body: SharedAssetCreate;
|
|
499
|
+
file: Blob | ArrayBuffer;
|
|
500
|
+
signal?: AbortSignal;
|
|
501
|
+
fetchOptions?: FetchOptions;
|
|
502
|
+
} & SpaceIdPathOverride): Promise<Asset>;
|
|
503
|
+
update(assetId: number | string, options: ({
|
|
504
|
+
body: {
|
|
505
|
+
asset: AssetUpdate;
|
|
506
|
+
};
|
|
507
|
+
file?: undefined;
|
|
508
|
+
} | {
|
|
509
|
+
body: {
|
|
510
|
+
asset: AssetUpdate;
|
|
511
|
+
short_filename: string;
|
|
512
|
+
};
|
|
513
|
+
file: Blob | ArrayBuffer;
|
|
514
|
+
}) & {
|
|
515
|
+
signal?: AbortSignal;
|
|
516
|
+
fetchOptions?: FetchOptions;
|
|
517
|
+
} & SpaceIdPathOverride): Promise<void>;
|
|
518
|
+
delete<ThrowOnError extends boolean = false>(assetId: number | string, options?: {
|
|
519
|
+
signal?: AbortSignal;
|
|
520
|
+
throwOnError?: ThrowOnError;
|
|
521
|
+
fetchOptions?: FetchOptions;
|
|
522
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<Asset, ThrowOnError>>;
|
|
523
|
+
};
|
|
524
|
+
sharedInternalTags: {
|
|
525
|
+
list<ThrowOnError extends boolean = false>(options: {
|
|
526
|
+
query: SharedInternalTagListQuery;
|
|
527
|
+
signal?: AbortSignal;
|
|
528
|
+
throwOnError?: ThrowOnError;
|
|
529
|
+
fetchOptions?: FetchOptions;
|
|
530
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedInternalTagListResponse, ThrowOnError>>;
|
|
531
|
+
create<ThrowOnError extends boolean = false>(options: {
|
|
532
|
+
body: {
|
|
533
|
+
shared_internal_tag: SharedInternalTagCreate;
|
|
534
|
+
};
|
|
535
|
+
signal?: AbortSignal;
|
|
536
|
+
throwOnError?: ThrowOnError;
|
|
537
|
+
fetchOptions?: FetchOptions;
|
|
538
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedInternalTagMutateResponse, ThrowOnError>>;
|
|
539
|
+
update<ThrowOnError extends boolean = false>(tagId: number, options: {
|
|
540
|
+
body: {
|
|
541
|
+
shared_internal_tag: SharedInternalTagCreate;
|
|
542
|
+
};
|
|
543
|
+
signal?: AbortSignal;
|
|
544
|
+
throwOnError?: ThrowOnError;
|
|
545
|
+
fetchOptions?: FetchOptions;
|
|
546
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedInternalTagMutateResponse, ThrowOnError>>;
|
|
547
|
+
delete<ThrowOnError extends boolean = false>(tagId: number, options: {
|
|
548
|
+
query: {
|
|
549
|
+
asset_folder_id: number;
|
|
550
|
+
};
|
|
551
|
+
signal?: AbortSignal;
|
|
552
|
+
throwOnError?: ThrowOnError;
|
|
553
|
+
fetchOptions?: FetchOptions;
|
|
554
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<void, ThrowOnError>>;
|
|
555
|
+
};
|
|
432
556
|
spaces: {
|
|
433
557
|
list<ThrowOnError extends boolean = false>(options?: {
|
|
434
558
|
query?: ListData$9["query"];
|
|
@@ -527,5 +651,5 @@ declare const createManagementApiClient: (config: ManagementApiClientConfig) =>
|
|
|
527
651
|
};
|
|
528
652
|
type ManagementApiClient = ReturnType<typeof createManagementApiClient>;
|
|
529
653
|
//#endregion
|
|
530
|
-
export { type ApiResponse, type Asset, type AssetCreate, type AssetField, type AssetFolder, type AssetFolderCreate, type AssetFolderUpdate, type AssetListQuery, type AssetSignRequest, type AssetUpdate, type AssetUpdateRequest, type AssetUploadRequest, ClientError, type Component, type ComponentCreate, type ComponentFolder, type ComponentSchemaField, type ComponentUpdate, type Datasource, type DatasourceCreate, type DatasourceEntry, type DatasourceEntryCreate, type DatasourceEntryUpdate, type DatasourceUpdate, type FetchOptions, type HttpRequestOptions, type InternalTag, ManagementApiClient, type ManagementApiClientConfig, type MapiResourceDeps, type MultilinkField, type PluginField, type Preset, type RateLimitConfig, type RequestConfigOverrides, type RichtextField, type SignedResponseObject, type Space, type SpaceCreate, type SpaceUpdate, type Story, type StoryAlternate, type StoryContent, type StoryCreate, type StoryListQuery, type StoryLocalizedPath, type StoryTranslatedSlug, type StoryUpdate, type TableField, type User, createManagementApiClient, normalizeAssetUrl };
|
|
654
|
+
export { type AccessLevel, type ApiResponse, type Asset, type AssetCreate, type AssetField, type AssetFolder, type AssetFolderAccess, type AssetFolderCreate, type AssetFolderUpdate, type AssetListQuery, type AssetSignRequest, type AssetUpdate, type AssetUpdateRequest, type AssetUploadRequest, ClientError, type Component, type ComponentCreate, type ComponentFolder, type ComponentSchemaField, type ComponentUpdate, type Datasource, type DatasourceCreate, type DatasourceEntry, type DatasourceEntryCreate, type DatasourceEntryUpdate, type DatasourceUpdate, type FetchOptions, type HttpRequestOptions, type InternalTag, ManagementApiClient, type ManagementApiClientConfig, type MapiResourceDeps, type MultilinkField, type PluginField, type Preset, type RateLimitConfig, type RequestConfigOverrides, type RichtextField, type SharedAssetCreate, type SharedAssetFolder, type SharedAssetFolderCreate, type SharedAssetFolderGetResponse, type SharedAssetFolderListResponse, type SharedAssetFolderUpdate, type SharedAssetListQuery, type SharedAssetListResponse, type SharedAssetUploadRequest, type SharedInternalTag, type SharedInternalTagCreate, type SharedInternalTagListQuery, type SharedInternalTagListResponse, type SharedInternalTagMutateResponse, type SharedInternalTagObjectType, type SignedResponseObject, type Space, type SpaceCreate, type SpaceUpdate, type Story, type StoryAlternate, type StoryContent, type StoryCreate, type StoryListQuery, type StoryLocalizedPath, type StoryTranslatedSlug, type StoryUpdate, type TableField, type User, createManagementApiClient, normalizeAssetUrl };
|
|
531
655
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.mts
CHANGED
|
@@ -17,8 +17,10 @@ import { SpaceIdPathOverride } from "./resources/shared.mjs";
|
|
|
17
17
|
import { AssetCreate, AssetUploadRequest } from "./resources/assets.mjs";
|
|
18
18
|
import { ApiResponse, AssetListQuery, FetchOptions, HttpRequestOptions, ManagementApiClientConfig, MapiResourceDeps, RequestConfigOverrides, Story, StoryListQuery } from "./types.mjs";
|
|
19
19
|
import { ActivateData, ActivateResponses, CompleteResponses, CompleteWithWinnerResponses, CreateData as CreateData$9, CreateExperimentStoryData, CreateExperimentStoryResponses, CreateResponses as CreateResponses$9, CreateStoryMappingData, CreateStoryMappingResponses, DeleteExperimentStoryResponses, DeleteResponses as DeleteResponses$5, DeleteStoryMappingResponses, GetResponses as GetResponses$9, GetResultsResponses, ListData as ListData$10, ListResponses as ListResponses$10, PauseResponses, PushResultsData, PushResultsResponses, SelectWinnerResponses, UpdateData as UpdateData$10, UpdateResponses as UpdateResponses$7 } from "./generated/experiments/types.gen.mjs";
|
|
20
|
+
import { AccessLevel, AssetFolderAccess, SharedAssetFolder, SharedAssetFolderCreate, SharedAssetFolderGetResponse, SharedAssetFolderListResponse, SharedAssetFolderUpdate } from "./resources/shared-asset-folders.mjs";
|
|
21
|
+
import { SharedAssetCreate, SharedAssetListQuery, SharedAssetListResponse, SharedAssetUploadRequest } from "./resources/shared-assets.mjs";
|
|
22
|
+
import { SharedInternalTag, SharedInternalTagCreate, SharedInternalTagListQuery, SharedInternalTagListResponse, SharedInternalTagMutateResponse, SharedInternalTagObjectType } from "./resources/shared-internal-tags.mjs";
|
|
20
23
|
import { normalizeAssetUrl } from "./utils/normalize-asset-url.mjs";
|
|
21
|
-
|
|
22
24
|
//#region src/index.d.ts
|
|
23
25
|
declare const createManagementApiClient: (config: ManagementApiClientConfig) => {
|
|
24
26
|
assetFolders: {
|
|
@@ -233,6 +235,9 @@ declare const createManagementApiClient: (config: ManagementApiClientConfig) =>
|
|
|
233
235
|
} & SpaceIdPathOverride): Promise<ApiResponse<CreateResponses$4[201], ThrowOnError>>;
|
|
234
236
|
update<ThrowOnError extends boolean = false>(datasourceEntryId: number, options: {
|
|
235
237
|
body: UpdateData$5["body"];
|
|
238
|
+
query?: {
|
|
239
|
+
dimension_id?: number;
|
|
240
|
+
};
|
|
236
241
|
signal?: AbortSignal;
|
|
237
242
|
throwOnError?: ThrowOnError;
|
|
238
243
|
fetchOptions?: FetchOptions;
|
|
@@ -429,6 +434,124 @@ declare const createManagementApiClient: (config: ManagementApiClientConfig) =>
|
|
|
429
434
|
} & SpaceIdPathOverride): Promise<ApiResponse<DeleteResponses$3[200], ThrowOnError>>;
|
|
430
435
|
};
|
|
431
436
|
put: <TData = unknown>(path: string, options?: HttpRequestOptions) => Promise<ApiResponse<TData>>;
|
|
437
|
+
sharedAssetFolders: {
|
|
438
|
+
list<ThrowOnError extends boolean = false>(options?: {
|
|
439
|
+
query?: {
|
|
440
|
+
search?: string;
|
|
441
|
+
with_parent?: string;
|
|
442
|
+
by_ids?: string;
|
|
443
|
+
};
|
|
444
|
+
signal?: AbortSignal;
|
|
445
|
+
throwOnError?: ThrowOnError;
|
|
446
|
+
fetchOptions?: FetchOptions;
|
|
447
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedAssetFolderListResponse, ThrowOnError>>;
|
|
448
|
+
get<ThrowOnError extends boolean = false>(folderId: number | string, options?: {
|
|
449
|
+
signal?: AbortSignal;
|
|
450
|
+
throwOnError?: ThrowOnError;
|
|
451
|
+
fetchOptions?: FetchOptions;
|
|
452
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedAssetFolderGetResponse, ThrowOnError>>;
|
|
453
|
+
create<ThrowOnError extends boolean = false>(options: {
|
|
454
|
+
body: {
|
|
455
|
+
shared_asset_folder: SharedAssetFolderCreate;
|
|
456
|
+
};
|
|
457
|
+
signal?: AbortSignal;
|
|
458
|
+
throwOnError?: ThrowOnError;
|
|
459
|
+
fetchOptions?: FetchOptions;
|
|
460
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedAssetFolderGetResponse, ThrowOnError>>;
|
|
461
|
+
update<ThrowOnError extends boolean = false>(folderId: number | string, options: {
|
|
462
|
+
body: {
|
|
463
|
+
shared_asset_folder: SharedAssetFolderUpdate;
|
|
464
|
+
};
|
|
465
|
+
signal?: AbortSignal;
|
|
466
|
+
throwOnError?: ThrowOnError;
|
|
467
|
+
fetchOptions?: FetchOptions;
|
|
468
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<void, ThrowOnError>>;
|
|
469
|
+
delete<ThrowOnError extends boolean = false>(folderId: number | string, options?: {
|
|
470
|
+
query?: {
|
|
471
|
+
recursive?: boolean;
|
|
472
|
+
};
|
|
473
|
+
signal?: AbortSignal;
|
|
474
|
+
throwOnError?: ThrowOnError;
|
|
475
|
+
fetchOptions?: FetchOptions;
|
|
476
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<void, ThrowOnError>>;
|
|
477
|
+
};
|
|
478
|
+
sharedAssets: {
|
|
479
|
+
list<ThrowOnError extends boolean = false>(options?: {
|
|
480
|
+
query?: SharedAssetListQuery;
|
|
481
|
+
signal?: AbortSignal;
|
|
482
|
+
throwOnError?: ThrowOnError;
|
|
483
|
+
fetchOptions?: FetchOptions;
|
|
484
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedAssetListResponse, ThrowOnError>>;
|
|
485
|
+
get<ThrowOnError extends boolean = false>(assetId: number | string, options?: {
|
|
486
|
+
signal?: AbortSignal;
|
|
487
|
+
throwOnError?: ThrowOnError;
|
|
488
|
+
fetchOptions?: FetchOptions;
|
|
489
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<Asset, ThrowOnError>>;
|
|
490
|
+
upload(options: {
|
|
491
|
+
body: SharedAssetUploadRequest;
|
|
492
|
+
file: Blob | ArrayBuffer;
|
|
493
|
+
signal?: AbortSignal;
|
|
494
|
+
fetchOptions?: FetchOptions;
|
|
495
|
+
} & SpaceIdPathOverride): Promise<Asset>;
|
|
496
|
+
create(options: {
|
|
497
|
+
body: SharedAssetCreate;
|
|
498
|
+
file: Blob | ArrayBuffer;
|
|
499
|
+
signal?: AbortSignal;
|
|
500
|
+
fetchOptions?: FetchOptions;
|
|
501
|
+
} & SpaceIdPathOverride): Promise<Asset>;
|
|
502
|
+
update(assetId: number | string, options: ({
|
|
503
|
+
body: {
|
|
504
|
+
asset: AssetUpdate;
|
|
505
|
+
};
|
|
506
|
+
file?: undefined;
|
|
507
|
+
} | {
|
|
508
|
+
body: {
|
|
509
|
+
asset: AssetUpdate;
|
|
510
|
+
short_filename: string;
|
|
511
|
+
};
|
|
512
|
+
file: Blob | ArrayBuffer;
|
|
513
|
+
}) & {
|
|
514
|
+
signal?: AbortSignal;
|
|
515
|
+
fetchOptions?: FetchOptions;
|
|
516
|
+
} & SpaceIdPathOverride): Promise<void>;
|
|
517
|
+
delete<ThrowOnError extends boolean = false>(assetId: number | string, options?: {
|
|
518
|
+
signal?: AbortSignal;
|
|
519
|
+
throwOnError?: ThrowOnError;
|
|
520
|
+
fetchOptions?: FetchOptions;
|
|
521
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<Asset, ThrowOnError>>;
|
|
522
|
+
};
|
|
523
|
+
sharedInternalTags: {
|
|
524
|
+
list<ThrowOnError extends boolean = false>(options: {
|
|
525
|
+
query: SharedInternalTagListQuery;
|
|
526
|
+
signal?: AbortSignal;
|
|
527
|
+
throwOnError?: ThrowOnError;
|
|
528
|
+
fetchOptions?: FetchOptions;
|
|
529
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedInternalTagListResponse, ThrowOnError>>;
|
|
530
|
+
create<ThrowOnError extends boolean = false>(options: {
|
|
531
|
+
body: {
|
|
532
|
+
shared_internal_tag: SharedInternalTagCreate;
|
|
533
|
+
};
|
|
534
|
+
signal?: AbortSignal;
|
|
535
|
+
throwOnError?: ThrowOnError;
|
|
536
|
+
fetchOptions?: FetchOptions;
|
|
537
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedInternalTagMutateResponse, ThrowOnError>>;
|
|
538
|
+
update<ThrowOnError extends boolean = false>(tagId: number, options: {
|
|
539
|
+
body: {
|
|
540
|
+
shared_internal_tag: SharedInternalTagCreate;
|
|
541
|
+
};
|
|
542
|
+
signal?: AbortSignal;
|
|
543
|
+
throwOnError?: ThrowOnError;
|
|
544
|
+
fetchOptions?: FetchOptions;
|
|
545
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<SharedInternalTagMutateResponse, ThrowOnError>>;
|
|
546
|
+
delete<ThrowOnError extends boolean = false>(tagId: number, options: {
|
|
547
|
+
query: {
|
|
548
|
+
asset_folder_id: number;
|
|
549
|
+
};
|
|
550
|
+
signal?: AbortSignal;
|
|
551
|
+
throwOnError?: ThrowOnError;
|
|
552
|
+
fetchOptions?: FetchOptions;
|
|
553
|
+
} & SpaceIdPathOverride): Promise<ApiResponse<void, ThrowOnError>>;
|
|
554
|
+
};
|
|
432
555
|
spaces: {
|
|
433
556
|
list<ThrowOnError extends boolean = false>(options?: {
|
|
434
557
|
query?: ListData$9["query"];
|
|
@@ -527,5 +650,5 @@ declare const createManagementApiClient: (config: ManagementApiClientConfig) =>
|
|
|
527
650
|
};
|
|
528
651
|
type ManagementApiClient = ReturnType<typeof createManagementApiClient>;
|
|
529
652
|
//#endregion
|
|
530
|
-
export { type ApiResponse, type Asset, type AssetCreate, type AssetField, type AssetFolder, type AssetFolderCreate, type AssetFolderUpdate, type AssetListQuery, type AssetSignRequest, type AssetUpdate, type AssetUpdateRequest, type AssetUploadRequest, ClientError, type Component, type ComponentCreate, type ComponentFolder, type ComponentSchemaField, type ComponentUpdate, type Datasource, type DatasourceCreate, type DatasourceEntry, type DatasourceEntryCreate, type DatasourceEntryUpdate, type DatasourceUpdate, type FetchOptions, type HttpRequestOptions, type InternalTag, ManagementApiClient, type ManagementApiClientConfig, type MapiResourceDeps, type MultilinkField, type PluginField, type Preset, type RateLimitConfig, type RequestConfigOverrides, type RichtextField, type SignedResponseObject, type Space, type SpaceCreate, type SpaceUpdate, type Story, type StoryAlternate, type StoryContent, type StoryCreate, type StoryListQuery, type StoryLocalizedPath, type StoryTranslatedSlug, type StoryUpdate, type TableField, type User, createManagementApiClient, normalizeAssetUrl };
|
|
653
|
+
export { type AccessLevel, type ApiResponse, type Asset, type AssetCreate, type AssetField, type AssetFolder, type AssetFolderAccess, type AssetFolderCreate, type AssetFolderUpdate, type AssetListQuery, type AssetSignRequest, type AssetUpdate, type AssetUpdateRequest, type AssetUploadRequest, ClientError, type Component, type ComponentCreate, type ComponentFolder, type ComponentSchemaField, type ComponentUpdate, type Datasource, type DatasourceCreate, type DatasourceEntry, type DatasourceEntryCreate, type DatasourceEntryUpdate, type DatasourceUpdate, type FetchOptions, type HttpRequestOptions, type InternalTag, ManagementApiClient, type ManagementApiClientConfig, type MapiResourceDeps, type MultilinkField, type PluginField, type Preset, type RateLimitConfig, type RequestConfigOverrides, type RichtextField, type SharedAssetCreate, type SharedAssetFolder, type SharedAssetFolderCreate, type SharedAssetFolderGetResponse, type SharedAssetFolderListResponse, type SharedAssetFolderUpdate, type SharedAssetListQuery, type SharedAssetListResponse, type SharedAssetUploadRequest, type SharedInternalTag, type SharedInternalTagCreate, type SharedInternalTagListQuery, type SharedInternalTagListResponse, type SharedInternalTagMutateResponse, type SharedInternalTagObjectType, type SignedResponseObject, type Space, type SpaceCreate, type SpaceUpdate, type Story, type StoryAlternate, type StoryContent, type StoryCreate, type StoryListQuery, type StoryLocalizedPath, type StoryTranslatedSlug, type StoryUpdate, type TableField, type User, createManagementApiClient, normalizeAssetUrl };
|
|
531
654
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.mjs
CHANGED
|
@@ -12,6 +12,9 @@ import { createDatasourcesResource } from "./resources/datasources.mjs";
|
|
|
12
12
|
import { createExperimentsResource } from "./resources/experiments.mjs";
|
|
13
13
|
import { createInternalTagsResource } from "./resources/internal-tags.mjs";
|
|
14
14
|
import { createPresetsResource } from "./resources/presets.mjs";
|
|
15
|
+
import { createSharedAssetFoldersResource } from "./resources/shared-asset-folders.mjs";
|
|
16
|
+
import { createSharedAssetsResource } from "./resources/shared-assets.mjs";
|
|
17
|
+
import { createSharedInternalTagsResource } from "./resources/shared-internal-tags.mjs";
|
|
15
18
|
import { createSpacesResource } from "./resources/spaces.mjs";
|
|
16
19
|
import { createStoriesResource } from "./resources/stories.mjs";
|
|
17
20
|
import { createUsersResource } from "./resources/users.mjs";
|
|
@@ -162,6 +165,9 @@ const createManagementApiClient = (config) => {
|
|
|
162
165
|
post: httpPost,
|
|
163
166
|
presets: createPresetsResource(deps),
|
|
164
167
|
put: httpPut,
|
|
168
|
+
sharedAssetFolders: createSharedAssetFoldersResource(deps),
|
|
169
|
+
sharedAssets: createSharedAssetsResource(deps),
|
|
170
|
+
sharedInternalTags: createSharedInternalTagsResource(deps),
|
|
165
171
|
spaces: createSpacesResource(deps),
|
|
166
172
|
stories: createStoriesResource(deps),
|
|
167
173
|
users: createUsersResource({
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { Client, ResolvedRequestOptions } from './generated/shared/client';\nimport type { Middleware } from './generated/shared/client/utils.gen';\nimport { createClient, createConfig } from './generated/shared/client';\nimport { getManagementBaseUrl } from '@storyblok/region-helper';\nimport { ClientError } from './error';\nimport { createThrottleManager } from './utils/rate-limit';\nimport { createAssetFoldersResource } from './resources/asset-folders';\nimport { createAssetsResource } from './resources/assets';\nimport { createComponentFoldersResource } from './resources/component-folders';\nimport { createComponentsResource } from './resources/components';\nimport { createDatasourceEntriesResource } from './resources/datasource-entries';\nimport { createDatasourcesResource } from './resources/datasources';\nimport { createExperimentsResource } from './resources/experiments';\nimport { createInternalTagsResource } from './resources/internal-tags';\nimport { createPresetsResource } from './resources/presets';\nimport { createSpacesResource } from './resources/spaces';\nimport { createStoriesResource } from './resources/stories';\nimport { createUsersResource } from './resources/users';\nimport type {\n ApiResponse,\n HttpRequestOptions,\n ManagementApiClientConfig,\n MapiResourceDeps,\n} from './types';\n\nexport { ClientError } from './error';\n\nfunction getAuthorizationHeader(config: ManagementApiClientConfig): string | undefined {\n if (config.personalAccessToken) {\n return config.personalAccessToken;\n }\n if (config.oauthToken) {\n return `Bearer ${config.oauthToken.replace(/^Bearer\\s+/i, '')}`;\n }\n return undefined;\n}\n\nexport const createManagementApiClient = (config: ManagementApiClientConfig) => {\n const {\n spaceId,\n region = 'eu',\n baseUrl,\n headers = {},\n throwOnError = false,\n retry = {\n limit: 12,\n backoffLimit: 20_000,\n methods: ['get', 'post', 'put', 'delete', 'patch', 'head', 'options', 'trace'],\n statusCodes: [429],\n },\n timeout = 30_000,\n rateLimit,\n } = config;\n\n const throttleManager = createThrottleManager(rateLimit ?? {});\n const authHeader = getAuthorizationHeader(config);\n\n const client: Client = createClient(\n createConfig({\n baseUrl: baseUrl || getManagementBaseUrl(region),\n headers: {\n ...(authHeader ? { Authorization: authHeader } : {}),\n ...headers,\n },\n throwOnError,\n kyOptions: {\n throwHttpErrors: true,\n timeout,\n retry,\n },\n }),\n );\n\n client.interceptors.error.use(\n (error: unknown, response: Response) =>\n new ClientError(response?.statusText || 'API request failed', {\n status: response?.status ?? 0,\n statusText: response?.statusText ?? '',\n data: error,\n }),\n );\n\n /**\n * Wraps an SDK call with throttling.\n * When throwOnError is true, errors throw and data is guaranteed non-null.\n */\n function wrapRequest<TData, ThrowOnError extends boolean = false>(\n fn: () => Promise<unknown>,\n _throwOnError?: ThrowOnError,\n ): Promise<ApiResponse<TData, ThrowOnError>> {\n return throttleManager.execute(\n () => fn() as Promise<ApiResponse<TData, ThrowOnError>>,\n );\n }\n\n const deps: MapiResourceDeps = { client, spaceId, wrapRequest };\n\n /**\n * Escape hatch: send a GET request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpGet = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.get({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a POST request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPost = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.post({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PUT request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPut = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.put({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PATCH request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPatch = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.patch({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a DELETE request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpDelete = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.delete({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n return {\n assetFolders: createAssetFoldersResource(deps),\n assets: createAssetsResource(deps),\n componentFolders: createComponentFoldersResource(deps),\n components: createComponentsResource(deps),\n datasourceEntries: createDatasourceEntriesResource(deps),\n datasources: createDatasourcesResource(deps),\n experiments: createExperimentsResource(deps),\n delete: httpDelete,\n get: httpGet,\n patch: httpPatch,\n interceptors: client.interceptors as Middleware<Request, Response, unknown, ResolvedRequestOptions>,\n internalTags: createInternalTagsResource(deps),\n post: httpPost,\n presets: createPresetsResource(deps),\n put: httpPut,\n spaces: createSpacesResource(deps),\n stories: createStoriesResource(deps),\n users: createUsersResource({ client, wrapRequest }),\n };\n};\n\nexport type ManagementApiClient = ReturnType<typeof createManagementApiClient>;\n\nexport type {\n ApiResponse,\n Asset,\n AssetCreate,\n AssetField,\n AssetFolder,\n AssetFolderCreate,\n AssetFolderUpdate,\n AssetListQuery,\n AssetSignRequest,\n AssetUpdate,\n AssetUpdateRequest,\n AssetUploadRequest,\n Component,\n ComponentCreate,\n ComponentFolder,\n ComponentSchemaField,\n ComponentUpdate,\n Datasource,\n DatasourceCreate,\n DatasourceEntry,\n DatasourceEntryCreate,\n DatasourceEntryUpdate,\n DatasourceUpdate,\n FetchOptions,\n HttpRequestOptions,\n InternalTag,\n ManagementApiClientConfig,\n MapiResourceDeps,\n MultilinkField,\n PluginField,\n Preset,\n RateLimitConfig,\n RequestConfigOverrides,\n RichtextField,\n SignedResponseObject,\n Space,\n SpaceCreate,\n SpaceUpdate,\n Story,\n StoryAlternate,\n StoryContent,\n StoryCreate,\n StoryListQuery,\n StoryLocalizedPath,\n StoryTranslatedSlug,\n StoryUpdate,\n TableField,\n User,\n} from './types';\nexport { normalizeAssetUrl } from './utils/normalize-asset-url';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { Client, ResolvedRequestOptions } from './generated/shared/client';\nimport type { Middleware } from './generated/shared/client/utils.gen';\nimport { createClient, createConfig } from './generated/shared/client';\nimport { getManagementBaseUrl } from '@storyblok/region-helper';\nimport { ClientError } from './error';\nimport { createThrottleManager } from './utils/rate-limit';\nimport { createAssetFoldersResource } from './resources/asset-folders';\nimport { createAssetsResource } from './resources/assets';\nimport { createComponentFoldersResource } from './resources/component-folders';\nimport { createComponentsResource } from './resources/components';\nimport { createDatasourceEntriesResource } from './resources/datasource-entries';\nimport { createDatasourcesResource } from './resources/datasources';\nimport { createExperimentsResource } from './resources/experiments';\nimport { createInternalTagsResource } from './resources/internal-tags';\nimport { createPresetsResource } from './resources/presets';\nimport { createSharedAssetFoldersResource } from './resources/shared-asset-folders';\nimport { createSharedAssetsResource } from './resources/shared-assets';\nimport { createSharedInternalTagsResource } from './resources/shared-internal-tags';\nimport { createSpacesResource } from './resources/spaces';\nimport { createStoriesResource } from './resources/stories';\nimport { createUsersResource } from './resources/users';\nimport type {\n ApiResponse,\n HttpRequestOptions,\n ManagementApiClientConfig,\n MapiResourceDeps,\n} from './types';\n\nexport { ClientError } from './error';\n\nfunction getAuthorizationHeader(config: ManagementApiClientConfig): string | undefined {\n if (config.personalAccessToken) {\n return config.personalAccessToken;\n }\n if (config.oauthToken) {\n return `Bearer ${config.oauthToken.replace(/^Bearer\\s+/i, '')}`;\n }\n return undefined;\n}\n\nexport const createManagementApiClient = (config: ManagementApiClientConfig) => {\n const {\n spaceId,\n region = 'eu',\n baseUrl,\n headers = {},\n throwOnError = false,\n retry = {\n limit: 12,\n backoffLimit: 20_000,\n methods: ['get', 'post', 'put', 'delete', 'patch', 'head', 'options', 'trace'],\n statusCodes: [429],\n },\n timeout = 30_000,\n rateLimit,\n } = config;\n\n const throttleManager = createThrottleManager(rateLimit ?? {});\n const authHeader = getAuthorizationHeader(config);\n\n const client: Client = createClient(\n createConfig({\n baseUrl: baseUrl || getManagementBaseUrl(region),\n headers: {\n ...(authHeader ? { Authorization: authHeader } : {}),\n ...headers,\n },\n throwOnError,\n kyOptions: {\n throwHttpErrors: true,\n timeout,\n retry,\n },\n }),\n );\n\n client.interceptors.error.use(\n (error: unknown, response: Response) =>\n new ClientError(response?.statusText || 'API request failed', {\n status: response?.status ?? 0,\n statusText: response?.statusText ?? '',\n data: error,\n }),\n );\n\n /**\n * Wraps an SDK call with throttling.\n * When throwOnError is true, errors throw and data is guaranteed non-null.\n */\n function wrapRequest<TData, ThrowOnError extends boolean = false>(\n fn: () => Promise<unknown>,\n _throwOnError?: ThrowOnError,\n ): Promise<ApiResponse<TData, ThrowOnError>> {\n return throttleManager.execute(\n () => fn() as Promise<ApiResponse<TData, ThrowOnError>>,\n );\n }\n\n const deps: MapiResourceDeps = { client, spaceId, wrapRequest };\n\n /**\n * Escape hatch: send a GET request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpGet = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.get({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a POST request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPost = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.post({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PUT request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPut = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.put({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PATCH request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPatch = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.patch({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a DELETE request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpDelete = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData>> => {\n const { fetchOptions, ...rest } = options;\n return wrapRequest<TData>(() =>\n client.delete({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n return {\n assetFolders: createAssetFoldersResource(deps),\n assets: createAssetsResource(deps),\n componentFolders: createComponentFoldersResource(deps),\n components: createComponentsResource(deps),\n datasourceEntries: createDatasourceEntriesResource(deps),\n datasources: createDatasourcesResource(deps),\n experiments: createExperimentsResource(deps),\n delete: httpDelete,\n get: httpGet,\n patch: httpPatch,\n interceptors: client.interceptors as Middleware<Request, Response, unknown, ResolvedRequestOptions>,\n internalTags: createInternalTagsResource(deps),\n post: httpPost,\n presets: createPresetsResource(deps),\n put: httpPut,\n sharedAssetFolders: createSharedAssetFoldersResource(deps),\n sharedAssets: createSharedAssetsResource(deps),\n sharedInternalTags: createSharedInternalTagsResource(deps),\n spaces: createSpacesResource(deps),\n stories: createStoriesResource(deps),\n users: createUsersResource({ client, wrapRequest }),\n };\n};\n\nexport type ManagementApiClient = ReturnType<typeof createManagementApiClient>;\n\nexport type { AccessLevel, AssetFolderAccess, SharedAssetFolder, SharedAssetFolderCreate, SharedAssetFolderGetResponse, SharedAssetFolderListResponse, SharedAssetFolderUpdate } from './resources/shared-asset-folders';\nexport type { SharedAssetCreate, SharedAssetListQuery, SharedAssetListResponse, SharedAssetUploadRequest } from './resources/shared-assets';\nexport type { SharedInternalTag, SharedInternalTagCreate, SharedInternalTagListQuery, SharedInternalTagListResponse, SharedInternalTagMutateResponse, SharedInternalTagObjectType } from './resources/shared-internal-tags';\nexport type {\n ApiResponse,\n Asset,\n AssetCreate,\n AssetField,\n AssetFolder,\n AssetFolderCreate,\n AssetFolderUpdate,\n AssetListQuery,\n AssetSignRequest,\n AssetUpdate,\n AssetUpdateRequest,\n AssetUploadRequest,\n Component,\n ComponentCreate,\n ComponentFolder,\n ComponentSchemaField,\n ComponentUpdate,\n Datasource,\n DatasourceCreate,\n DatasourceEntry,\n DatasourceEntryCreate,\n DatasourceEntryUpdate,\n DatasourceUpdate,\n FetchOptions,\n HttpRequestOptions,\n InternalTag,\n ManagementApiClientConfig,\n MapiResourceDeps,\n MultilinkField,\n PluginField,\n Preset,\n RateLimitConfig,\n RequestConfigOverrides,\n RichtextField,\n SignedResponseObject,\n Space,\n SpaceCreate,\n SpaceUpdate,\n Story,\n StoryAlternate,\n StoryContent,\n StoryCreate,\n StoryListQuery,\n StoryLocalizedPath,\n StoryTranslatedSlug,\n StoryUpdate,\n TableField,\n User,\n} from './types';\nexport { normalizeAssetUrl } from './utils/normalize-asset-url';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA8BA,SAAS,uBAAuB,QAAuD;AACrF,KAAI,OAAO,oBACT,QAAO,OAAO;AAEhB,KAAI,OAAO,WACT,QAAO,UAAU,OAAO,WAAW,QAAQ,eAAe,GAAG;;AAKjE,MAAa,6BAA6B,WAAsC;CAC9E,MAAM,EACJ,SACA,SAAS,MACT,SACA,UAAU,EAAE,EACZ,eAAe,OACf,QAAQ;EACN,OAAO;EACP,cAAc;EACd,SAAS;GAAC;GAAO;GAAQ;GAAO;GAAU;GAAS;GAAQ;GAAW;GAAQ;EAC9E,aAAa,CAAC,IAAI;EACnB,EACD,UAAU,KACV,cACE;CAEJ,MAAM,kBAAkB,sBAAsB,aAAa,EAAE,CAAC;CAC9D,MAAM,aAAa,uBAAuB,OAAO;CAEjD,MAAM,SAAiB,aACrB,aAAa;EACX,SAAS,WAAW,qBAAqB,OAAO;EAChD,SAAS;GACP,GAAI,aAAa,EAAE,eAAe,YAAY,GAAG,EAAE;GACnD,GAAG;GACJ;EACD;EACA,WAAW;GACT,iBAAiB;GACjB;GACA;GACD;EACF,CAAC,CACH;AAED,QAAO,aAAa,MAAM,KACvB,OAAgB,aACf,IAAI,YAAY,UAAU,cAAc,sBAAsB;EAC5D,QAAQ,UAAU,UAAU;EAC5B,YAAY,UAAU,cAAc;EACpC,MAAM;EACP,CAAC,CACL;;;;;CAMD,SAAS,YACP,IACA,eAC2C;AAC3C,SAAO,gBAAgB,cACf,IAAI,CACX;;CAGH,MAAM,OAAyB;EAAE;EAAQ;EAAS;EAAa;;;;;CAM/D,MAAM,WACJ,MACA,UAA8B,EAAE,KACA;EAChC,MAAM,EAAE,cAAc,GAAG,SAAS;AAClC,SAAO,kBACL,OAAO,IAAI;GAAE,KAAK;GAAM,GAAG;GAAM,GAAI,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAAG,CAAC,CACjI;;;;;;CAOH,MAAM,YACJ,MACA,UAA8B,EAAE,KACA;EAChC,MAAM,EAAE,cAAc,GAAG,SAAS;AAClC,SAAO,kBACL,OAAO,KAAK;GAAE,KAAK;GAAM,GAAG;GAAM,GAAI,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAAG,CAAC,CAClI;;;;;;CAOH,MAAM,WACJ,MACA,UAA8B,EAAE,KACA;EAChC,MAAM,EAAE,cAAc,GAAG,SAAS;AAClC,SAAO,kBACL,OAAO,IAAI;GAAE,KAAK;GAAM,GAAG;GAAM,GAAI,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAAG,CAAC,CACjI;;;;;;CAOH,MAAM,aACJ,MACA,UAA8B,EAAE,KACA;EAChC,MAAM,EAAE,cAAc,GAAG,SAAS;AAClC,SAAO,kBACL,OAAO,MAAM;GAAE,KAAK;GAAM,GAAG;GAAM,GAAI,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAAG,CAAC,CACnI;;;;;;CAOH,MAAM,cACJ,MACA,UAA8B,EAAE,KACA;EAChC,MAAM,EAAE,cAAc,GAAG,SAAS;AAClC,SAAO,kBACL,OAAO,OAAO;GAAE,KAAK;GAAM,GAAG;GAAM,GAAI,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAAG,CAAC,CACpI;;AAGH,QAAO;EACL,cAAc,2BAA2B,KAAK;EAC9C,QAAQ,qBAAqB,KAAK;EAClC,kBAAkB,+BAA+B,KAAK;EACtD,YAAY,yBAAyB,KAAK;EAC1C,mBAAmB,gCAAgC,KAAK;EACxD,aAAa,0BAA0B,KAAK;EAC5C,aAAa,0BAA0B,KAAK;EAC5C,QAAQ;EACR,KAAK;EACL,OAAO;EACP,cAAc,OAAO;EACrB,cAAc,2BAA2B,KAAK;EAC9C,MAAM;EACN,SAAS,sBAAsB,KAAK;EACpC,KAAK;EACL,oBAAoB,iCAAiC,KAAK;EAC1D,cAAc,2BAA2B,KAAK;EAC9C,oBAAoB,iCAAiC,KAAK;EAC1D,QAAQ,qBAAqB,KAAK;EAClC,SAAS,sBAAsB,KAAK;EACpC,OAAO,oBAAoB;GAAE;GAAQ;GAAa,CAAC;EACpD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.cjs","names":["resolveSpaceId"],"sources":["../../src/resources/assets.ts"],"sourcesContent":["import * as assetsApi from '../generated/assets/sdk.gen';\nimport type {\n Asset,\n AssetSignRequest,\n AssetUpdate,\n BulkMoveData,\n BulkMoveResponses,\n BulkRestoreData,\n BulkRestoreResponses,\n DeleteManyData,\n DeleteManyResponses,\n DeleteResponses,\n FinalizeResponses,\n GetResponses,\n ListData,\n ListResponses,\n SignResponseObjectData,\n SignResponseObjectResponses,\n UpdateData,\n UpdateResponses,\n} from '../generated/assets/types.gen';\nimport type { ApiResponse, FetchOptions, MapiResourceDeps } from '../index';\nimport { resolveSpaceId, type SpaceIdPathOverride } from './shared';\n\n/**\n * Fields for initiating an asset upload. Pass this to `upload()`, `create()`,\n * or `update()` alongside a file buffer.\n *\n * Uses `short_filename` (e.g. `\"hero.png\"`) to clearly distinguish it from\n * `Asset.filename`, which is the full CDN URL assigned by Storyblok after upload.\n *\n * If you need to call the raw sign endpoint directly, use\n * `signResponseObject()` with `AssetSignRequest` instead.\n */\nexport interface AssetUploadRequest {\n /** The desired filename for the asset (e.g. `\"hero.png\"`). Corresponds to `Asset.short_filename`. */\n short_filename: string;\n /** When set, the upload replaces the file of an existing asset with this ID. */\n id?: AssetSignRequest['id'];\n /** Place the asset in this folder. */\n asset_folder_id?: AssetSignRequest['asset_folder_id'];\n /** Mark the asset as private (inaccessible without a signed URL). */\n is_private?: AssetSignRequest['is_private'];\n /** Image dimensions in `\"<width>x<height>\"` format (e.g. `\"400x500\"`). */\n size?: AssetSignRequest['size'];\n /** Set to `1` to enable server-side upload validation. */\n validate_upload?: AssetSignRequest['validate_upload'];\n}\n\n/**\n * Input for `create()`. Combines upload fields (`short_filename`,\n * `asset_folder_id`, etc.) with writable metadata (`alt`, `title`,\n * `copyright`, etc.). The file buffer is passed separately.\n */\nexport type AssetCreate = AssetUpdate & AssetUploadRequest;\n\n/** Uploads the file to S3 using the signed fields from step 1. */\nasync function uploadToS3(\n signedResponse: SignResponseObjectResponses[200],\n file: Blob | ArrayBuffer,\n filename: string,\n): Promise<void> {\n if (!signedResponse.post_url || !signedResponse.fields) {\n throw new Error('Invalid signed response: missing post_url or fields');\n }\n const formData = new FormData();\n for (const [key, value] of Object.entries(signedResponse.fields)) {\n formData.append(key, value as string);\n }\n const contentType = (signedResponse.fields['Content-Type'] as string | undefined) ?? 'application/octet-stream';\n const blob = file instanceof Blob ? file : new Blob([file], { type: contentType });\n formData.append('file', new File([blob], filename, { type: contentType }));\n const response = await fetch(signedResponse.post_url, { method: 'POST', body: formData });\n if (!response.ok) {\n throw new Error(`Failed to upload asset to S3: ${response.statusText}`);\n }\n}\n\nexport function createAssetsResource(deps: MapiResourceDeps) {\n const { client, spaceId, wrapRequest } = deps;\n const getSpaceId = (path?: SpaceIdPathOverride['path']) => resolveSpaceId(spaceId, path);\n\n return {\n list<ThrowOnError extends boolean = false>(options: { query?: ListData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<ListResponses[200], ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<ListResponses[200], ThrowOnError>(() =>\n assetsApi.list({ client, path: { space_id: resolvedSpaceId }, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n /**\n * Requests a signed response object (step 1 of the upload flow).\n * Returns the S3 `post_url` and form `fields` needed for the actual upload.\n *\n * In most cases, prefer `upload()` or `create()` which handle all three\n * steps automatically.\n */\n signResponseObject<ThrowOnError extends boolean = false>(options: { body: SignResponseObjectData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<SignResponseObjectResponses[200], ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<SignResponseObjectResponses[200], ThrowOnError>(() =>\n assetsApi.signResponseObject({ client, path: { space_id: resolvedSpaceId }, body, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n /**\n * Uploads a file to Storyblok (sign → S3 upload → finalize) and returns\n * the resulting `Asset`.\n *\n * To also set metadata (alt, title, etc.) in one call, use `create()`.\n */\n async upload(options: { body: AssetUploadRequest; file: Blob | ArrayBuffer; signal?: AbortSignal; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<Asset> {\n const { body, file, signal, path, fetchOptions } = options;\n const { short_filename, ...rest } = body;\n const signBody: AssetSignRequest = { filename: short_filename, ...rest };\n const resolvedSpaceId = getSpaceId(path);\n const kyOpts = fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {};\n\n const signResult = await wrapRequest<SignResponseObjectResponses[200], true>(() =>\n assetsApi.signResponseObject({ client, path: { space_id: resolvedSpaceId }, body: signBody, signal, throwOnError: true, ...kyOpts }), true);\n\n if (!signResult.data.id) {\n throw new Error('Invalid signed response: missing id');\n }\n\n await uploadToS3(signResult.data, file, short_filename);\n\n await wrapRequest<FinalizeResponses[200], true>(() =>\n assetsApi.finalize({\n client,\n path: { space_id: resolvedSpaceId, signed_response_object_id: String(signResult.data.id) },\n signal,\n throwOnError: true,\n ...kyOpts,\n }), true);\n\n const getResult = await wrapRequest<GetResponses[200], true>(() =>\n assetsApi.get({ client, path: { space_id: resolvedSpaceId, asset_id: Number(signResult.data.id) }, signal, throwOnError: true, ...kyOpts }), true);\n\n return getResult.data;\n },\n /**\n * Creates a new asset with metadata. Performs the full upload flow, then\n * applies any provided metadata (alt, title, copyright, etc.) in a\n * follow-up update call. Returns the resulting `Asset`.\n */\n async create(options: { body: AssetCreate; file: Blob | ArrayBuffer; signal?: AbortSignal; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<Asset> {\n const { body, file, signal, path, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n const kyOpts = fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {};\n\n const asset = await this.upload({\n body: {\n short_filename: body.short_filename,\n asset_folder_id: body.asset_folder_id,\n is_private: body.is_private,\n size: body.size,\n validate_upload: body.validate_upload,\n },\n file,\n signal,\n path: { space_id: resolvedSpaceId },\n fetchOptions,\n });\n\n const { short_filename, asset_folder_id, is_private, size, validate_upload, ...metadata } = body;\n const hasMetadata = Object.values(metadata).some(v => v !== undefined && v !== null);\n if (hasMetadata) {\n await wrapRequest<UpdateResponses[204], true>(() =>\n assetsApi.update({\n client,\n path: { space_id: resolvedSpaceId, asset_id: asset.id },\n body: { asset: metadata },\n signal,\n throwOnError: true,\n ...kyOpts,\n }), true);\n const updatedResult = await wrapRequest<GetResponses[200], true>(() =>\n assetsApi.get({ client, path: { space_id: resolvedSpaceId, asset_id: asset.id }, signal, throwOnError: true, ...kyOpts }), true);\n return updatedResult.data;\n }\n\n return asset;\n },\n get<ThrowOnError extends boolean = false>(assetId: number | string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<GetResponses[200], ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<GetResponses[200], ThrowOnError>(() =>\n assetsApi.get({ client, path: { space_id: resolvedSpaceId, asset_id: assetId }, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n /**\n * Updates an asset's metadata. When `file` and `short_filename` are\n * provided, the file is replaced first (sign → S3 → finalize), then\n * metadata is updated.\n */\n async update(\n assetId: number | string,\n options: (\n | { body: UpdateData['body']; file?: undefined }\n | { body: UpdateData['body'] & { short_filename: string }; file: Blob | ArrayBuffer }\n ) & { signal?: AbortSignal; fetchOptions?: FetchOptions } & SpaceIdPathOverride,\n ): Promise<void> {\n const { body, file, signal, path, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n const kyOpts = fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {};\n\n if (file !== undefined) {\n const { short_filename, ...assetBody } = body;\n const signResult = await wrapRequest<SignResponseObjectResponses[200], true>(() =>\n assetsApi.signResponseObject({\n client,\n path: { space_id: resolvedSpaceId },\n body: { filename: short_filename, id: Number(assetId) },\n signal,\n throwOnError: true,\n ...kyOpts,\n }), true);\n\n if (!signResult.data.id) {\n throw new Error('Invalid signed response: missing id');\n }\n\n await uploadToS3(signResult.data, file, short_filename);\n\n await wrapRequest<FinalizeResponses[200], true>(() =>\n assetsApi.finalize({\n client,\n path: { space_id: resolvedSpaceId, signed_response_object_id: String(signResult.data.id) },\n signal,\n throwOnError: true,\n ...kyOpts,\n }), true);\n\n if (assetBody.asset && Object.keys(assetBody.asset).length > 0) {\n await wrapRequest<UpdateResponses[204], true>(() =>\n assetsApi.update({ client, path: { space_id: resolvedSpaceId, asset_id: assetId }, body: assetBody, signal, throwOnError: true, ...kyOpts }), true);\n }\n }\n else {\n await wrapRequest<UpdateResponses[204], true>(() =>\n assetsApi.update({ client, path: { space_id: resolvedSpaceId, asset_id: assetId }, body, signal, throwOnError: true, ...kyOpts }), true);\n }\n },\n delete<ThrowOnError extends boolean = false>(assetId: number | string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<DeleteResponses[200], ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<DeleteResponses[200], ThrowOnError>(() =>\n assetsApi.delete_({ client, path: { space_id: resolvedSpaceId, asset_id: assetId }, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n finalize<ThrowOnError extends boolean = false>(signedResponseObjectId: string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<FinalizeResponses[200], ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<FinalizeResponses[200], ThrowOnError>(() =>\n assetsApi.finalize({\n client,\n path: { space_id: resolvedSpaceId, signed_response_object_id: signedResponseObjectId },\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n }), throwOnError);\n },\n deleteMany<ThrowOnError extends boolean = false>(options: { body: DeleteManyData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<DeleteManyResponses[200], ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<DeleteManyResponses[200], ThrowOnError>(() =>\n assetsApi.deleteMany({ client, path: { space_id: resolvedSpaceId }, body, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n bulkMove<ThrowOnError extends boolean = false>(options: { body: BulkMoveData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<BulkMoveResponses[200], ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<BulkMoveResponses[200], ThrowOnError>(() =>\n assetsApi.bulkMove({ client, path: { space_id: resolvedSpaceId }, body, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n bulkRestore<ThrowOnError extends boolean = false>(options: { body: BulkRestoreData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<BulkRestoreResponses[200], ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<BulkRestoreResponses[200], ThrowOnError>(() =>\n assetsApi.bulkRestore({ client, path: { space_id: resolvedSpaceId }, body, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n /**\n * Converts a space-local asset into a shared (org-level) asset.\n *\n * Wraps `POST /v1/spaces/{space_id}/assets/{asset_id}/convert`, which takes\n * the destination folder as the required `target_asset_folder_id` query\n * param and no request body. One-way only (space to org).\n *\n * Not part of the generated SDK, so this issues a raw `client.post`.\n * The response is assumed to match `Asset`.\n */\n convertToShared<ThrowOnError extends boolean = false>(\n assetId: number | string,\n options: { query: { target_asset_folder_id: number }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride,\n ): Promise<ApiResponse<Asset, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<Asset, ThrowOnError>(() =>\n client.post({\n url: '/v1/spaces/{space_id}/assets/{asset_id}/convert',\n path: { space_id: resolvedSpaceId, asset_id: assetId },\n query,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n }), throwOnError);\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assets.cjs","names":["resolveSpaceId"],"sources":["../../src/resources/assets.ts"],"sourcesContent":["import * as assetsApi from '../generated/assets/sdk.gen';\nimport type {\n Asset,\n AssetSignRequest,\n AssetUpdate,\n BulkMoveData,\n BulkMoveResponses,\n BulkRestoreData,\n BulkRestoreResponses,\n DeleteManyData,\n DeleteManyResponses,\n DeleteResponses,\n FinalizeResponses,\n GetResponses,\n ListData,\n ListResponses,\n SignResponseObjectData,\n SignResponseObjectResponses,\n UpdateData,\n UpdateResponses,\n} from '../generated/assets/types.gen';\nimport type { ApiResponse, FetchOptions, MapiResourceDeps } from '../index';\nimport { resolveSpaceId, type SpaceIdPathOverride } from './shared';\n\n/**\n * Fields for initiating an asset upload. Pass this to `upload()`, `create()`,\n * or `update()` alongside a file buffer.\n *\n * Uses `short_filename` (e.g. `\"hero.png\"`) to clearly distinguish it from\n * `Asset.filename`, which is the full CDN URL assigned by Storyblok after upload.\n *\n * If you need to call the raw sign endpoint directly, use\n * `signResponseObject()` with `AssetSignRequest` instead.\n */\nexport interface AssetUploadRequest {\n /** The desired filename for the asset (e.g. `\"hero.png\"`). Corresponds to `Asset.short_filename`. */\n short_filename: string;\n /** When set, the upload replaces the file of an existing asset with this ID. */\n id?: AssetSignRequest['id'];\n /** Place the asset in this folder. */\n asset_folder_id?: AssetSignRequest['asset_folder_id'];\n /** Mark the asset as private (inaccessible without a signed URL). */\n is_private?: AssetSignRequest['is_private'];\n /** Image dimensions in `\"<width>x<height>\"` format (e.g. `\"400x500\"`). */\n size?: AssetSignRequest['size'];\n /** Set to `1` to enable server-side upload validation. */\n validate_upload?: AssetSignRequest['validate_upload'];\n}\n\n/**\n * Input for `create()`. Combines upload fields (`short_filename`,\n * `asset_folder_id`, etc.) with writable metadata (`alt`, `title`,\n * `copyright`, etc.). The file buffer is passed separately.\n */\nexport type AssetCreate = AssetUpdate & AssetUploadRequest;\n\n/** Uploads the file to S3 using the signed fields from step 1. */\nexport async function uploadToS3(\n signedResponse: { post_url?: string; fields?: Record<string, unknown> },\n file: Blob | ArrayBuffer,\n filename: string,\n): Promise<void> {\n if (!signedResponse.post_url || !signedResponse.fields) {\n throw new Error('Invalid signed response: missing post_url or fields');\n }\n const formData = new FormData();\n for (const [key, value] of Object.entries(signedResponse.fields)) {\n formData.append(key, value as string);\n }\n const contentType = (signedResponse.fields['Content-Type'] as string | undefined) ?? 'application/octet-stream';\n const blob = file instanceof Blob ? file : new Blob([file], { type: contentType });\n formData.append('file', new File([blob], filename, { type: contentType }));\n const response = await fetch(signedResponse.post_url, { method: 'POST', body: formData });\n if (!response.ok) {\n throw new Error(`Failed to upload asset to S3: ${response.statusText}`);\n }\n}\n\nexport function createAssetsResource(deps: MapiResourceDeps) {\n const { client, spaceId, wrapRequest } = deps;\n const getSpaceId = (path?: SpaceIdPathOverride['path']) => resolveSpaceId(spaceId, path);\n\n return {\n list<ThrowOnError extends boolean = false>(options: { query?: ListData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<ListResponses[200], ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<ListResponses[200], ThrowOnError>(() =>\n assetsApi.list({ client, path: { space_id: resolvedSpaceId }, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n /**\n * Requests a signed response object (step 1 of the upload flow).\n * Returns the S3 `post_url` and form `fields` needed for the actual upload.\n *\n * In most cases, prefer `upload()` or `create()` which handle all three\n * steps automatically.\n */\n signResponseObject<ThrowOnError extends boolean = false>(options: { body: SignResponseObjectData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<SignResponseObjectResponses[200], ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<SignResponseObjectResponses[200], ThrowOnError>(() =>\n assetsApi.signResponseObject({ client, path: { space_id: resolvedSpaceId }, body, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n /**\n * Uploads a file to Storyblok (sign → S3 upload → finalize) and returns\n * the resulting `Asset`.\n *\n * To also set metadata (alt, title, etc.) in one call, use `create()`.\n */\n async upload(options: { body: AssetUploadRequest; file: Blob | ArrayBuffer; signal?: AbortSignal; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<Asset> {\n const { body, file, signal, path, fetchOptions } = options;\n const { short_filename, ...rest } = body;\n const signBody: AssetSignRequest = { filename: short_filename, ...rest };\n const resolvedSpaceId = getSpaceId(path);\n const kyOpts = fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {};\n\n const signResult = await wrapRequest<SignResponseObjectResponses[200], true>(() =>\n assetsApi.signResponseObject({ client, path: { space_id: resolvedSpaceId }, body: signBody, signal, throwOnError: true, ...kyOpts }), true);\n\n if (!signResult.data.id) {\n throw new Error('Invalid signed response: missing id');\n }\n\n await uploadToS3(signResult.data, file, short_filename);\n\n await wrapRequest<FinalizeResponses[200], true>(() =>\n assetsApi.finalize({\n client,\n path: { space_id: resolvedSpaceId, signed_response_object_id: String(signResult.data.id) },\n signal,\n throwOnError: true,\n ...kyOpts,\n }), true);\n\n const getResult = await wrapRequest<GetResponses[200], true>(() =>\n assetsApi.get({ client, path: { space_id: resolvedSpaceId, asset_id: Number(signResult.data.id) }, signal, throwOnError: true, ...kyOpts }), true);\n\n return getResult.data;\n },\n /**\n * Creates a new asset with metadata. Performs the full upload flow, then\n * applies any provided metadata (alt, title, copyright, etc.) in a\n * follow-up update call. Returns the resulting `Asset`.\n */\n async create(options: { body: AssetCreate; file: Blob | ArrayBuffer; signal?: AbortSignal; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<Asset> {\n const { body, file, signal, path, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n const kyOpts = fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {};\n\n const asset = await this.upload({\n body: {\n short_filename: body.short_filename,\n asset_folder_id: body.asset_folder_id,\n is_private: body.is_private,\n size: body.size,\n validate_upload: body.validate_upload,\n },\n file,\n signal,\n path: { space_id: resolvedSpaceId },\n fetchOptions,\n });\n\n const { short_filename, asset_folder_id, is_private, size, validate_upload, ...metadata } = body;\n const hasMetadata = Object.values(metadata).some(v => v !== undefined && v !== null);\n if (hasMetadata) {\n await wrapRequest<UpdateResponses[204], true>(() =>\n assetsApi.update({\n client,\n path: { space_id: resolvedSpaceId, asset_id: asset.id },\n body: { asset: metadata },\n signal,\n throwOnError: true,\n ...kyOpts,\n }), true);\n const updatedResult = await wrapRequest<GetResponses[200], true>(() =>\n assetsApi.get({ client, path: { space_id: resolvedSpaceId, asset_id: asset.id }, signal, throwOnError: true, ...kyOpts }), true);\n return updatedResult.data;\n }\n\n return asset;\n },\n get<ThrowOnError extends boolean = false>(assetId: number | string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<GetResponses[200], ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<GetResponses[200], ThrowOnError>(() =>\n assetsApi.get({ client, path: { space_id: resolvedSpaceId, asset_id: assetId }, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n /**\n * Updates an asset's metadata. When `file` and `short_filename` are\n * provided, the file is replaced first (sign → S3 → finalize), then\n * metadata is updated.\n */\n async update(\n assetId: number | string,\n options: (\n | { body: UpdateData['body']; file?: undefined }\n | { body: UpdateData['body'] & { short_filename: string }; file: Blob | ArrayBuffer }\n ) & { signal?: AbortSignal; fetchOptions?: FetchOptions } & SpaceIdPathOverride,\n ): Promise<void> {\n const { body, file, signal, path, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n const kyOpts = fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {};\n\n if (file !== undefined) {\n const { short_filename, ...assetBody } = body;\n const signResult = await wrapRequest<SignResponseObjectResponses[200], true>(() =>\n assetsApi.signResponseObject({\n client,\n path: { space_id: resolvedSpaceId },\n body: { filename: short_filename, id: Number(assetId) },\n signal,\n throwOnError: true,\n ...kyOpts,\n }), true);\n\n if (!signResult.data.id) {\n throw new Error('Invalid signed response: missing id');\n }\n\n await uploadToS3(signResult.data, file, short_filename);\n\n await wrapRequest<FinalizeResponses[200], true>(() =>\n assetsApi.finalize({\n client,\n path: { space_id: resolvedSpaceId, signed_response_object_id: String(signResult.data.id) },\n signal,\n throwOnError: true,\n ...kyOpts,\n }), true);\n\n if (assetBody.asset && Object.keys(assetBody.asset).length > 0) {\n await wrapRequest<UpdateResponses[204], true>(() =>\n assetsApi.update({ client, path: { space_id: resolvedSpaceId, asset_id: assetId }, body: assetBody, signal, throwOnError: true, ...kyOpts }), true);\n }\n }\n else {\n await wrapRequest<UpdateResponses[204], true>(() =>\n assetsApi.update({ client, path: { space_id: resolvedSpaceId, asset_id: assetId }, body, signal, throwOnError: true, ...kyOpts }), true);\n }\n },\n delete<ThrowOnError extends boolean = false>(assetId: number | string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<DeleteResponses[200], ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<DeleteResponses[200], ThrowOnError>(() =>\n assetsApi.delete_({ client, path: { space_id: resolvedSpaceId, asset_id: assetId }, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n finalize<ThrowOnError extends boolean = false>(signedResponseObjectId: string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<FinalizeResponses[200], ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<FinalizeResponses[200], ThrowOnError>(() =>\n assetsApi.finalize({\n client,\n path: { space_id: resolvedSpaceId, signed_response_object_id: signedResponseObjectId },\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n }), throwOnError);\n },\n deleteMany<ThrowOnError extends boolean = false>(options: { body: DeleteManyData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<DeleteManyResponses[200], ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<DeleteManyResponses[200], ThrowOnError>(() =>\n assetsApi.deleteMany({ client, path: { space_id: resolvedSpaceId }, body, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n bulkMove<ThrowOnError extends boolean = false>(options: { body: BulkMoveData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<BulkMoveResponses[200], ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<BulkMoveResponses[200], ThrowOnError>(() =>\n assetsApi.bulkMove({ client, path: { space_id: resolvedSpaceId }, body, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n bulkRestore<ThrowOnError extends boolean = false>(options: { body: BulkRestoreData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<BulkRestoreResponses[200], ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<BulkRestoreResponses[200], ThrowOnError>(() =>\n assetsApi.bulkRestore({ client, path: { space_id: resolvedSpaceId }, body, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n /**\n * Converts a space-local asset into a shared (org-level) asset.\n *\n * Wraps `POST /v1/spaces/{space_id}/assets/{asset_id}/convert`, which takes\n * the destination folder as the required `target_asset_folder_id` query\n * param and no request body. One-way only (space to org).\n *\n * Not part of the generated SDK, so this issues a raw `client.post`.\n * The response is assumed to match `Asset`.\n */\n convertToShared<ThrowOnError extends boolean = false>(\n assetId: number | string,\n options: { query: { target_asset_folder_id: number }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride,\n ): Promise<ApiResponse<Asset, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<Asset, ThrowOnError>(() =>\n client.post({\n url: '/v1/spaces/{space_id}/assets/{asset_id}/convert',\n path: { space_id: resolvedSpaceId, asset_id: assetId },\n query,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n }), throwOnError);\n },\n };\n}\n"],"mappings":"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"}
|