@storyblok/management-api-client 0.3.0 → 1.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/client.cjs +190 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.cts +632 -0
- package/dist/client.d.mts +632 -0
- package/dist/client.mjs +189 -0
- package/dist/client.mjs.map +1 -0
- package/dist/error.cjs.map +1 -1
- package/dist/error.d.cts +12 -2
- package/dist/error.d.mts +12 -2
- package/dist/error.mjs.map +1 -1
- package/dist/generated/mapi/_internal.gen.d.cts +541 -0
- package/dist/generated/mapi/_internal.gen.d.mts +541 -0
- package/dist/generated/{shared → mapi}/client/client.gen.cjs +1 -1
- package/dist/generated/mapi/client/client.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/client/client.gen.mjs +1 -1
- package/dist/generated/mapi/client/client.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/client/types.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/client/types.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/client/utils.gen.cjs +1 -1
- package/dist/generated/mapi/client/utils.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/client/utils.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/client/utils.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/client/utils.gen.mjs +1 -1
- package/dist/generated/mapi/client/utils.gen.mjs.map +1 -0
- package/dist/generated/mapi/client.gen.cjs +10 -0
- package/dist/generated/mapi/client.gen.cjs.map +1 -0
- package/dist/generated/mapi/client.gen.mjs +10 -0
- package/dist/generated/mapi/client.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/auth.gen.cjs +1 -1
- package/dist/generated/mapi/core/auth.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/auth.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/core/auth.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/core/auth.gen.mjs +1 -1
- package/dist/generated/mapi/core/auth.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/bodySerializer.gen.cjs +1 -1
- package/dist/generated/mapi/core/bodySerializer.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/bodySerializer.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/core/bodySerializer.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/core/bodySerializer.gen.mjs +1 -1
- package/dist/generated/mapi/core/bodySerializer.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/params.gen.cjs +1 -1
- package/dist/generated/mapi/core/params.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/params.gen.mjs +1 -1
- package/dist/generated/mapi/core/params.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/pathSerializer.gen.cjs +1 -1
- package/dist/generated/mapi/core/pathSerializer.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/pathSerializer.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/core/pathSerializer.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/core/pathSerializer.gen.mjs +1 -1
- package/dist/generated/mapi/core/pathSerializer.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.cjs +1 -1
- package/dist/generated/mapi/core/serverSentEvents.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.mjs +1 -1
- package/dist/generated/mapi/core/serverSentEvents.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/types.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/core/types.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/core/utils.gen.cjs +1 -1
- package/dist/generated/mapi/core/utils.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/utils.gen.mjs +1 -1
- package/dist/generated/mapi/core/utils.gen.mjs.map +1 -0
- package/dist/generated/mapi/sdk.gen.cjs +1477 -0
- package/dist/generated/mapi/sdk.gen.cjs.map +1 -0
- package/dist/generated/mapi/sdk.gen.mjs +1399 -0
- package/dist/generated/mapi/sdk.gen.mjs.map +1 -0
- package/dist/generated/mapi/types-aliased.gen.d.cts +1428 -0
- package/dist/generated/mapi/types-aliased.gen.d.mts +1428 -0
- package/dist/generated/mapi/types.gen.d.cts +5075 -0
- package/dist/generated/mapi/types.gen.d.mts +5075 -0
- package/dist/generated/overlay/_internal.gen.d.cts +850 -0
- package/dist/generated/overlay/_internal.gen.d.mts +850 -0
- package/dist/generated/types/_utils.d.cts +7 -0
- package/dist/generated/types/_utils.d.mts +7 -0
- package/dist/generated/types/block.d.cts +30 -0
- package/dist/generated/types/block.d.mts +30 -0
- package/dist/generated/types/field.d.cts +75 -0
- package/dist/generated/types/field.d.mts +75 -0
- package/dist/generated/types/mapi-story.d.cts +29 -0
- package/dist/generated/types/mapi-story.d.mts +29 -0
- package/dist/index.cjs +3 -173
- package/dist/index.d.cts +13 -433
- package/dist/index.d.mts +13 -433
- package/dist/index.mjs +2 -171
- package/dist/resources/asset-folders.cjs +9 -9
- package/dist/resources/asset-folders.cjs.map +1 -1
- package/dist/resources/asset-folders.mjs +9 -9
- package/dist/resources/asset-folders.mjs.map +1 -1
- package/dist/resources/assets.cjs +57 -48
- package/dist/resources/assets.cjs.map +1 -1
- package/dist/resources/assets.d.cts +23 -27
- package/dist/resources/assets.d.mts +23 -27
- package/dist/resources/assets.mjs +57 -48
- package/dist/resources/assets.mjs.map +1 -1
- package/dist/resources/component-folders.cjs +9 -9
- package/dist/resources/component-folders.cjs.map +1 -1
- package/dist/resources/component-folders.mjs +9 -9
- package/dist/resources/component-folders.mjs.map +1 -1
- package/dist/resources/components.cjs +28 -20
- package/dist/resources/components.cjs.map +1 -1
- package/dist/resources/components.d.cts +76 -0
- package/dist/resources/components.d.mts +76 -0
- package/dist/resources/components.mjs +28 -20
- package/dist/resources/components.mjs.map +1 -1
- package/dist/resources/datasource-entries.cjs +28 -34
- package/dist/resources/datasource-entries.cjs.map +1 -1
- package/dist/resources/datasource-entries.mjs +29 -35
- package/dist/resources/datasource-entries.mjs.map +1 -1
- package/dist/resources/datasources.cjs +27 -9
- package/dist/resources/datasources.cjs.map +1 -1
- package/dist/resources/datasources.mjs +27 -9
- package/dist/resources/datasources.mjs.map +1 -1
- package/dist/resources/experiments.cjs +299 -0
- package/dist/resources/experiments.cjs.map +1 -0
- package/dist/resources/experiments.mjs +299 -0
- package/dist/resources/experiments.mjs.map +1 -0
- package/dist/resources/internal-tags.cjs +7 -7
- package/dist/resources/internal-tags.cjs.map +1 -1
- package/dist/resources/internal-tags.mjs +7 -7
- package/dist/resources/internal-tags.mjs.map +1 -1
- package/dist/resources/presets.cjs +9 -9
- package/dist/resources/presets.cjs.map +1 -1
- package/dist/resources/presets.mjs +9 -9
- package/dist/resources/presets.mjs.map +1 -1
- package/dist/resources/shared.cjs +15 -0
- package/dist/resources/shared.cjs.map +1 -1
- package/dist/resources/shared.mjs +15 -1
- package/dist/resources/shared.mjs.map +1 -1
- package/dist/resources/spaces.cjs +8 -7
- package/dist/resources/spaces.cjs.map +1 -1
- package/dist/resources/spaces.d.cts +8 -0
- package/dist/resources/spaces.d.mts +7 -0
- package/dist/resources/spaces.mjs +8 -7
- package/dist/resources/spaces.mjs.map +1 -1
- package/dist/resources/stories.cjs +20 -16
- package/dist/resources/stories.cjs.map +1 -1
- package/dist/resources/stories.d.cts +93 -0
- package/dist/resources/stories.d.mts +93 -0
- package/dist/resources/stories.mjs +20 -16
- package/dist/resources/stories.mjs.map +1 -1
- package/dist/resources/users.cjs +3 -3
- package/dist/resources/users.cjs.map +1 -1
- package/dist/resources/users.mjs +3 -3
- package/dist/resources/users.mjs.map +1 -1
- package/dist/utils/query-serializer.cjs +54 -0
- package/dist/utils/query-serializer.cjs.map +1 -0
- package/dist/utils/query-serializer.mjs +54 -0
- package/dist/utils/query-serializer.mjs.map +1 -0
- package/package.json +16 -14
- package/playground/integration-tests/README.md +24 -0
- package/playground/integration-tests/eslint.config.js +5 -0
- package/playground/integration-tests/node_modules/.bin/eslint +16 -0
- package/playground/integration-tests/node_modules/.bin/tsc +16 -0
- package/playground/integration-tests/node_modules/.bin/tsserver +16 -0
- package/playground/integration-tests/node_modules/.bin/vitest +16 -0
- package/playground/integration-tests/package.json +24 -0
- package/playground/integration-tests/test/setup.e2e.ts +11 -0
- package/playground/integration-tests/test/specs/mapi-round-trip.spec.e2e.ts +520 -0
- package/playground/integration-tests/test/types/components.test-d.ts +113 -0
- package/playground/integration-tests/test/types/resources.test-d.ts +364 -0
- package/playground/integration-tests/test/types/stories.test-d.ts +306 -0
- package/playground/integration-tests/vitest.config.e2e.ts +25 -0
- package/playground/integration-tests/vitest.config.ts +13 -0
- package/test/GUIDE.md +59 -0
- package/vitest.config.ts +5 -0
- package/dist/generated/asset_folders/client.gen.cjs +0 -10
- package/dist/generated/asset_folders/client.gen.cjs.map +0 -1
- package/dist/generated/asset_folders/client.gen.mjs +0 -10
- package/dist/generated/asset_folders/client.gen.mjs.map +0 -1
- package/dist/generated/asset_folders/sdk.gen.cjs +0 -99
- package/dist/generated/asset_folders/sdk.gen.cjs.map +0 -1
- package/dist/generated/asset_folders/sdk.gen.mjs +0 -95
- package/dist/generated/asset_folders/sdk.gen.mjs.map +0 -1
- package/dist/generated/asset_folders/types.gen.d.cts +0 -156
- package/dist/generated/asset_folders/types.gen.d.mts +0 -156
- package/dist/generated/assets/client.gen.cjs +0 -10
- package/dist/generated/assets/client.gen.cjs.map +0 -1
- package/dist/generated/assets/client.gen.mjs +0 -10
- package/dist/generated/assets/client.gen.mjs.map +0 -1
- package/dist/generated/assets/sdk.gen.cjs +0 -179
- package/dist/generated/assets/sdk.gen.cjs.map +0 -1
- package/dist/generated/assets/sdk.gen.mjs +0 -171
- package/dist/generated/assets/sdk.gen.mjs.map +0 -1
- package/dist/generated/assets/types.gen.d.cts +0 -415
- package/dist/generated/assets/types.gen.d.mts +0 -415
- package/dist/generated/component_folders/client.gen.cjs +0 -10
- package/dist/generated/component_folders/client.gen.cjs.map +0 -1
- package/dist/generated/component_folders/client.gen.mjs +0 -10
- package/dist/generated/component_folders/client.gen.mjs.map +0 -1
- package/dist/generated/component_folders/sdk.gen.cjs +0 -99
- package/dist/generated/component_folders/sdk.gen.cjs.map +0 -1
- package/dist/generated/component_folders/sdk.gen.mjs +0 -95
- package/dist/generated/component_folders/sdk.gen.mjs.map +0 -1
- package/dist/generated/component_folders/types.gen.d.cts +0 -118
- package/dist/generated/component_folders/types.gen.d.mts +0 -118
- package/dist/generated/components/client.gen.cjs +0 -10
- package/dist/generated/components/client.gen.cjs.map +0 -1
- package/dist/generated/components/client.gen.mjs +0 -10
- package/dist/generated/components/client.gen.mjs.map +0 -1
- package/dist/generated/components/sdk.gen.cjs +0 -171
- package/dist/generated/components/sdk.gen.cjs.map +0 -1
- package/dist/generated/components/sdk.gen.mjs +0 -163
- package/dist/generated/components/sdk.gen.mjs.map +0 -1
- package/dist/generated/components/types.gen.d.cts +0 -855
- package/dist/generated/components/types.gen.d.mts +0 -855
- package/dist/generated/datasource_entries/client.gen.cjs +0 -10
- package/dist/generated/datasource_entries/client.gen.cjs.map +0 -1
- package/dist/generated/datasource_entries/client.gen.mjs +0 -10
- package/dist/generated/datasource_entries/client.gen.mjs.map +0 -1
- package/dist/generated/datasource_entries/sdk.gen.cjs +0 -89
- package/dist/generated/datasource_entries/sdk.gen.cjs.map +0 -1
- package/dist/generated/datasource_entries/sdk.gen.mjs +0 -85
- package/dist/generated/datasource_entries/sdk.gen.mjs.map +0 -1
- package/dist/generated/datasource_entries/types.gen.d.cts +0 -156
- package/dist/generated/datasource_entries/types.gen.d.mts +0 -156
- package/dist/generated/datasources/client.gen.cjs +0 -10
- package/dist/generated/datasources/client.gen.cjs.map +0 -1
- package/dist/generated/datasources/client.gen.mjs +0 -10
- package/dist/generated/datasources/client.gen.mjs.map +0 -1
- package/dist/generated/datasources/sdk.gen.cjs +0 -89
- package/dist/generated/datasources/sdk.gen.cjs.map +0 -1
- package/dist/generated/datasources/sdk.gen.mjs +0 -85
- package/dist/generated/datasources/sdk.gen.mjs.map +0 -1
- package/dist/generated/datasources/types.gen.d.cts +0 -186
- package/dist/generated/datasources/types.gen.d.mts +0 -186
- package/dist/generated/internal_tags/client.gen.cjs +0 -10
- package/dist/generated/internal_tags/client.gen.cjs.map +0 -1
- package/dist/generated/internal_tags/client.gen.mjs +0 -10
- package/dist/generated/internal_tags/client.gen.mjs.map +0 -1
- package/dist/generated/internal_tags/sdk.gen.cjs +0 -74
- package/dist/generated/internal_tags/sdk.gen.cjs.map +0 -1
- package/dist/generated/internal_tags/sdk.gen.mjs +0 -71
- package/dist/generated/internal_tags/sdk.gen.mjs.map +0 -1
- package/dist/generated/internal_tags/types.gen.d.cts +0 -106
- package/dist/generated/internal_tags/types.gen.d.mts +0 -106
- package/dist/generated/presets/client.gen.cjs +0 -10
- package/dist/generated/presets/client.gen.cjs.map +0 -1
- package/dist/generated/presets/client.gen.mjs +0 -10
- package/dist/generated/presets/client.gen.mjs.map +0 -1
- package/dist/generated/presets/sdk.gen.cjs +0 -99
- package/dist/generated/presets/sdk.gen.cjs.map +0 -1
- package/dist/generated/presets/sdk.gen.mjs +0 -95
- package/dist/generated/presets/sdk.gen.mjs.map +0 -1
- package/dist/generated/presets/types.gen.d.cts +0 -176
- package/dist/generated/presets/types.gen.d.mts +0 -176
- package/dist/generated/shared/client/client.gen.cjs.map +0 -1
- package/dist/generated/shared/client/client.gen.mjs.map +0 -1
- package/dist/generated/shared/client/utils.gen.cjs.map +0 -1
- package/dist/generated/shared/client/utils.gen.mjs.map +0 -1
- package/dist/generated/shared/core/auth.gen.cjs.map +0 -1
- package/dist/generated/shared/core/auth.gen.mjs.map +0 -1
- package/dist/generated/shared/core/bodySerializer.gen.cjs.map +0 -1
- package/dist/generated/shared/core/bodySerializer.gen.mjs.map +0 -1
- package/dist/generated/shared/core/params.gen.cjs.map +0 -1
- package/dist/generated/shared/core/params.gen.mjs.map +0 -1
- package/dist/generated/shared/core/pathSerializer.gen.cjs.map +0 -1
- package/dist/generated/shared/core/pathSerializer.gen.mjs.map +0 -1
- package/dist/generated/shared/core/serverSentEvents.gen.cjs.map +0 -1
- package/dist/generated/shared/core/serverSentEvents.gen.mjs.map +0 -1
- package/dist/generated/shared/core/utils.gen.cjs.map +0 -1
- package/dist/generated/shared/core/utils.gen.mjs.map +0 -1
- package/dist/generated/spaces/client.gen.cjs +0 -10
- package/dist/generated/spaces/client.gen.cjs.map +0 -1
- package/dist/generated/spaces/client.gen.mjs +0 -10
- package/dist/generated/spaces/client.gen.mjs.map +0 -1
- package/dist/generated/spaces/sdk.gen.cjs +0 -99
- package/dist/generated/spaces/sdk.gen.cjs.map +0 -1
- package/dist/generated/spaces/sdk.gen.mjs +0 -95
- package/dist/generated/spaces/sdk.gen.mjs.map +0 -1
- package/dist/generated/spaces/types.gen.d.cts +0 -544
- package/dist/generated/spaces/types.gen.d.mts +0 -544
- package/dist/generated/stories/client.gen.cjs +0 -10
- package/dist/generated/stories/client.gen.cjs.map +0 -1
- package/dist/generated/stories/client.gen.mjs +0 -10
- package/dist/generated/stories/client.gen.mjs.map +0 -1
- package/dist/generated/stories/sdk.gen.cjs +0 -138
- package/dist/generated/stories/sdk.gen.cjs.map +0 -1
- package/dist/generated/stories/sdk.gen.mjs +0 -131
- package/dist/generated/stories/sdk.gen.mjs.map +0 -1
- package/dist/generated/stories/types.gen.d.cts +0 -1306
- package/dist/generated/stories/types.gen.d.mts +0 -1306
- package/dist/generated/users/client.gen.cjs +0 -10
- package/dist/generated/users/client.gen.cjs.map +0 -1
- package/dist/generated/users/client.gen.mjs +0 -10
- package/dist/generated/users/client.gen.mjs.map +0 -1
- package/dist/generated/users/sdk.gen.cjs +0 -44
- package/dist/generated/users/sdk.gen.cjs.map +0 -1
- package/dist/generated/users/sdk.gen.mjs +0 -43
- package/dist/generated/users/sdk.gen.mjs.map +0 -1
- package/dist/generated/users/types.gen.d.cts +0 -348
- package/dist/generated/users/types.gen.d.mts +0 -348
- package/dist/index.cjs.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/types.d.cts +0 -130
- package/dist/types.d.mts +0 -130
- /package/dist/generated/{shared → mapi}/client/client.gen.d.mts +0 -0
- /package/dist/generated/{shared → mapi}/client/index.cjs +0 -0
- /package/dist/generated/{shared → mapi}/client/index.d.mts +0 -0
- /package/dist/generated/{shared → mapi}/client/index.mjs +0 -0
|
@@ -1,36 +1,32 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CreateAssetData, ListAssetsData, ListAssetsResponses, UpdateAssetData } from "../generated/mapi/types.gen.cjs";
|
|
2
|
+
import { Asset } from "../generated/mapi/types-aliased.gen.cjs";
|
|
2
3
|
|
|
3
4
|
//#region src/resources/assets.d.ts
|
|
5
|
+
type AssetListQuery = NonNullable<ListAssetsData['query']>;
|
|
4
6
|
/**
|
|
5
|
-
*
|
|
6
|
-
* or `update()` alongside a file buffer.
|
|
7
|
+
* Return shape of `list()`.
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* `
|
|
9
|
+
* The list endpoint serializes rows with MAPI's `IndexAsset` serializer, which
|
|
10
|
+
* is NOT identical to the `ShowAsset` (= `Asset`) shape returned by `get()`:
|
|
11
|
+
* `IndexAsset` omits `file` and `permanently_deleted`. We deliberately surface
|
|
12
|
+
* list rows as `Asset` so consumers work against a single asset type. The lie:
|
|
13
|
+
* `file`/`permanently_deleted` are absent on list rows at runtime — consumers
|
|
14
|
+
* needing those must re-fetch via `get()`.
|
|
15
|
+
*/
|
|
16
|
+
type ListAssetsResult = Omit<ListAssetsResponses[200], 'assets'> & {
|
|
17
|
+
assets: Array<Asset>;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Fields for initiating an asset upload. Pass this to `upload()` or `create()`
|
|
21
|
+
* alongside a file buffer.
|
|
13
22
|
*/
|
|
14
|
-
|
|
15
|
-
/** The desired filename for the asset (e.g. `"hero.png"`).
|
|
16
|
-
|
|
17
|
-
/** When set, the upload replaces the file of an existing asset with this ID. */
|
|
18
|
-
id?: AssetSignRequest['id'];
|
|
19
|
-
/** Place the asset in this folder. */
|
|
20
|
-
asset_folder_id?: AssetSignRequest['asset_folder_id'];
|
|
21
|
-
/** Mark the asset as private (inaccessible without a signed URL). */
|
|
22
|
-
is_private?: AssetSignRequest['is_private'];
|
|
23
|
-
/** Image dimensions in `"<width>x<height>"` format (e.g. `"400x500"`). */
|
|
24
|
-
size?: AssetSignRequest['size'];
|
|
25
|
-
/** Set to `1` to enable server-side upload validation. */
|
|
26
|
-
validate_upload?: AssetSignRequest['validate_upload'];
|
|
27
|
-
}
|
|
23
|
+
type AssetUploadRequest = {
|
|
24
|
+
/** The desired filename for the asset (e.g. `"hero.png"`). */short_filename: string;
|
|
25
|
+
} & Partial<Omit<NonNullable<CreateAssetData['query']>, 'filename'>>;
|
|
28
26
|
/**
|
|
29
|
-
* Input for `create()`. Combines upload fields
|
|
30
|
-
* `asset_folder_id`, etc.) with writable metadata (`alt`, `title`,
|
|
31
|
-
* `copyright`, etc.). The file buffer is passed separately.
|
|
27
|
+
* Input for `create()`. Combines upload fields with writable metadata.
|
|
32
28
|
*/
|
|
33
|
-
type AssetCreate =
|
|
29
|
+
type AssetCreate = AssetUploadRequest & NonNullable<UpdateAssetData['body']['asset']>;
|
|
34
30
|
//#endregion
|
|
35
|
-
export { AssetCreate, AssetUploadRequest };
|
|
31
|
+
export { AssetCreate, AssetListQuery, AssetUploadRequest, ListAssetsResult };
|
|
36
32
|
//# sourceMappingURL=assets.d.cts.map
|
|
@@ -1,35 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CreateAssetData, ListAssetsData, ListAssetsResponses, UpdateAssetData } from "../generated/mapi/types.gen.mjs";
|
|
2
|
+
import { Asset } from "../generated/mapi/types-aliased.gen.mjs";
|
|
2
3
|
//#region src/resources/assets.d.ts
|
|
4
|
+
type AssetListQuery = NonNullable<ListAssetsData['query']>;
|
|
3
5
|
/**
|
|
4
|
-
*
|
|
5
|
-
* or `update()` alongside a file buffer.
|
|
6
|
+
* Return shape of `list()`.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* `
|
|
8
|
+
* The list endpoint serializes rows with MAPI's `IndexAsset` serializer, which
|
|
9
|
+
* is NOT identical to the `ShowAsset` (= `Asset`) shape returned by `get()`:
|
|
10
|
+
* `IndexAsset` omits `file` and `permanently_deleted`. We deliberately surface
|
|
11
|
+
* list rows as `Asset` so consumers work against a single asset type. The lie:
|
|
12
|
+
* `file`/`permanently_deleted` are absent on list rows at runtime — consumers
|
|
13
|
+
* needing those must re-fetch via `get()`.
|
|
14
|
+
*/
|
|
15
|
+
type ListAssetsResult = Omit<ListAssetsResponses[200], 'assets'> & {
|
|
16
|
+
assets: Array<Asset>;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Fields for initiating an asset upload. Pass this to `upload()` or `create()`
|
|
20
|
+
* alongside a file buffer.
|
|
12
21
|
*/
|
|
13
|
-
|
|
14
|
-
/** The desired filename for the asset (e.g. `"hero.png"`).
|
|
15
|
-
|
|
16
|
-
/** When set, the upload replaces the file of an existing asset with this ID. */
|
|
17
|
-
id?: AssetSignRequest['id'];
|
|
18
|
-
/** Place the asset in this folder. */
|
|
19
|
-
asset_folder_id?: AssetSignRequest['asset_folder_id'];
|
|
20
|
-
/** Mark the asset as private (inaccessible without a signed URL). */
|
|
21
|
-
is_private?: AssetSignRequest['is_private'];
|
|
22
|
-
/** Image dimensions in `"<width>x<height>"` format (e.g. `"400x500"`). */
|
|
23
|
-
size?: AssetSignRequest['size'];
|
|
24
|
-
/** Set to `1` to enable server-side upload validation. */
|
|
25
|
-
validate_upload?: AssetSignRequest['validate_upload'];
|
|
26
|
-
}
|
|
22
|
+
type AssetUploadRequest = {
|
|
23
|
+
/** The desired filename for the asset (e.g. `"hero.png"`). */short_filename: string;
|
|
24
|
+
} & Partial<Omit<NonNullable<CreateAssetData['query']>, 'filename'>>;
|
|
27
25
|
/**
|
|
28
|
-
* Input for `create()`. Combines upload fields
|
|
29
|
-
* `asset_folder_id`, etc.) with writable metadata (`alt`, `title`,
|
|
30
|
-
* `copyright`, etc.). The file buffer is passed separately.
|
|
26
|
+
* Input for `create()`. Combines upload fields with writable metadata.
|
|
31
27
|
*/
|
|
32
|
-
type AssetCreate =
|
|
28
|
+
type AssetCreate = AssetUploadRequest & NonNullable<UpdateAssetData['body']['asset']>;
|
|
33
29
|
//#endregion
|
|
34
|
-
export { AssetCreate, AssetUploadRequest };
|
|
30
|
+
export { AssetCreate, AssetListQuery, AssetUploadRequest, ListAssetsResult };
|
|
35
31
|
//# sourceMappingURL=assets.d.mts.map
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
+
import { ClientError } from "../error.mjs";
|
|
2
|
+
import { bulkDestroyAssets, bulkRestoreAssets, bulkUpdateAssets, createAsset, deleteAsset, finishAssetUpload, getAsset, listAssets, updateAsset } from "../generated/mapi/sdk.gen.mjs";
|
|
1
3
|
import { resolveSpaceId } from "./shared.mjs";
|
|
2
|
-
import { bulkMove, bulkRestore, deleteMany, delete_, finalize, get, list, signResponseObject, update } from "../generated/assets/sdk.gen.mjs";
|
|
3
4
|
|
|
4
5
|
//#region src/resources/assets.ts
|
|
5
6
|
/** Uploads the file to S3 using the signed fields from step 1. */
|
|
6
7
|
async function uploadToS3(signedResponse, file, filename) {
|
|
7
|
-
if (!signedResponse.post_url || !signedResponse.fields) throw new
|
|
8
|
+
if (!signedResponse.post_url || !signedResponse.fields) throw new ClientError("Invalid signed response: missing post_url or fields", {
|
|
9
|
+
status: 0,
|
|
10
|
+
statusText: "Invalid signed response",
|
|
11
|
+
data: signedResponse
|
|
12
|
+
});
|
|
8
13
|
const formData = new FormData();
|
|
9
14
|
for (const [key, value] of Object.entries(signedResponse.fields)) formData.append(key, value);
|
|
10
15
|
const contentType = signedResponse.fields["Content-Type"] ?? "application/octet-stream";
|
|
@@ -14,8 +19,13 @@ async function uploadToS3(signedResponse, file, filename) {
|
|
|
14
19
|
method: "POST",
|
|
15
20
|
body: formData
|
|
16
21
|
});
|
|
17
|
-
if (!response.ok) throw new
|
|
22
|
+
if (!response.ok) throw new ClientError(`Failed to upload asset to S3: ${response.statusText}`, {
|
|
23
|
+
status: response.status,
|
|
24
|
+
statusText: response.statusText,
|
|
25
|
+
data: void 0
|
|
26
|
+
});
|
|
18
27
|
}
|
|
28
|
+
const hasDefinedFields = (value) => Object.values(value ?? {}).some((v) => v !== void 0 && v !== null);
|
|
19
29
|
function createAssetsResource(deps) {
|
|
20
30
|
const { client, spaceId, wrapRequest } = deps;
|
|
21
31
|
const getSpaceId = (path) => resolveSpaceId(spaceId, path);
|
|
@@ -23,7 +33,7 @@ function createAssetsResource(deps) {
|
|
|
23
33
|
list(options = {}) {
|
|
24
34
|
const { query, signal, path, throwOnError, fetchOptions } = options;
|
|
25
35
|
const resolvedSpaceId = getSpaceId(path);
|
|
26
|
-
return wrapRequest(() =>
|
|
36
|
+
return wrapRequest(() => listAssets({
|
|
27
37
|
client,
|
|
28
38
|
path: { space_id: resolvedSpaceId },
|
|
29
39
|
query,
|
|
@@ -36,12 +46,12 @@ function createAssetsResource(deps) {
|
|
|
36
46
|
}), throwOnError);
|
|
37
47
|
},
|
|
38
48
|
signResponseObject(options) {
|
|
39
|
-
const {
|
|
49
|
+
const { query, signal, path, throwOnError, fetchOptions } = options;
|
|
40
50
|
const resolvedSpaceId = getSpaceId(path);
|
|
41
|
-
return wrapRequest(() =>
|
|
51
|
+
return wrapRequest(() => createAsset({
|
|
42
52
|
client,
|
|
43
53
|
path: { space_id: resolvedSpaceId },
|
|
44
|
-
|
|
54
|
+
query,
|
|
45
55
|
signal,
|
|
46
56
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
47
57
|
...fetchOptions ? { kyOptions: {
|
|
@@ -53,40 +63,39 @@ function createAssetsResource(deps) {
|
|
|
53
63
|
async upload(options) {
|
|
54
64
|
const { body, file, signal, path, fetchOptions } = options;
|
|
55
65
|
const { short_filename, ...rest } = body;
|
|
56
|
-
const signBody = {
|
|
57
|
-
filename: short_filename,
|
|
58
|
-
...rest
|
|
59
|
-
};
|
|
60
66
|
const resolvedSpaceId = getSpaceId(path);
|
|
61
67
|
const kyOpts = fetchOptions ? { kyOptions: {
|
|
62
68
|
...client.getConfig().kyOptions,
|
|
63
69
|
...fetchOptions
|
|
64
70
|
} } : {};
|
|
65
|
-
const signResult = await wrapRequest(() =>
|
|
71
|
+
const signResult = await wrapRequest(() => createAsset({
|
|
66
72
|
client,
|
|
67
73
|
path: { space_id: resolvedSpaceId },
|
|
68
|
-
|
|
74
|
+
query: {
|
|
75
|
+
filename: short_filename,
|
|
76
|
+
...rest
|
|
77
|
+
},
|
|
69
78
|
signal,
|
|
70
79
|
throwOnError: true,
|
|
71
80
|
...kyOpts
|
|
72
81
|
}), true);
|
|
73
82
|
if (!signResult.data.id) throw new Error("Invalid signed response: missing id");
|
|
74
83
|
await uploadToS3(signResult.data, file, short_filename);
|
|
75
|
-
await wrapRequest(() =>
|
|
84
|
+
await wrapRequest(() => finishAssetUpload({
|
|
76
85
|
client,
|
|
77
86
|
path: {
|
|
78
87
|
space_id: resolvedSpaceId,
|
|
79
|
-
|
|
88
|
+
id: Number(signResult.data.id)
|
|
80
89
|
},
|
|
81
90
|
signal,
|
|
82
91
|
throwOnError: true,
|
|
83
92
|
...kyOpts
|
|
84
93
|
}), true);
|
|
85
|
-
return (await wrapRequest(() =>
|
|
94
|
+
return (await wrapRequest(() => getAsset({
|
|
86
95
|
client,
|
|
87
96
|
path: {
|
|
88
97
|
space_id: resolvedSpaceId,
|
|
89
|
-
|
|
98
|
+
id: Number(signResult.data.id)
|
|
90
99
|
},
|
|
91
100
|
signal,
|
|
92
101
|
throwOnError: true,
|
|
@@ -100,35 +109,38 @@ function createAssetsResource(deps) {
|
|
|
100
109
|
...client.getConfig().kyOptions,
|
|
101
110
|
...fetchOptions
|
|
102
111
|
} } : {};
|
|
112
|
+
const { short_filename, asset_folder_id, is_private, size, validate_upload, ext_id, ...metadataOnly } = body;
|
|
103
113
|
const asset = await this.upload({
|
|
104
114
|
body: {
|
|
105
|
-
short_filename
|
|
106
|
-
asset_folder_id
|
|
107
|
-
is_private
|
|
115
|
+
short_filename,
|
|
116
|
+
asset_folder_id,
|
|
117
|
+
is_private,
|
|
118
|
+
size,
|
|
119
|
+
validate_upload,
|
|
120
|
+
ext_id
|
|
108
121
|
},
|
|
109
122
|
file,
|
|
110
123
|
signal,
|
|
111
124
|
path: { space_id: resolvedSpaceId },
|
|
112
125
|
fetchOptions
|
|
113
126
|
});
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
await wrapRequest(() => update({
|
|
127
|
+
if (Object.values(metadataOnly).some((v) => v !== void 0 && v !== null)) {
|
|
128
|
+
await wrapRequest(() => updateAsset({
|
|
117
129
|
client,
|
|
118
130
|
path: {
|
|
119
131
|
space_id: resolvedSpaceId,
|
|
120
|
-
|
|
132
|
+
id: asset.id
|
|
121
133
|
},
|
|
122
|
-
body: { asset:
|
|
134
|
+
body: { asset: metadataOnly },
|
|
123
135
|
signal,
|
|
124
136
|
throwOnError: true,
|
|
125
137
|
...kyOpts
|
|
126
138
|
}), true);
|
|
127
|
-
return (await wrapRequest(() =>
|
|
139
|
+
return (await wrapRequest(() => getAsset({
|
|
128
140
|
client,
|
|
129
141
|
path: {
|
|
130
142
|
space_id: resolvedSpaceId,
|
|
131
|
-
|
|
143
|
+
id: asset.id
|
|
132
144
|
},
|
|
133
145
|
signal,
|
|
134
146
|
throwOnError: true,
|
|
@@ -140,11 +152,11 @@ function createAssetsResource(deps) {
|
|
|
140
152
|
get(assetId, options = {}) {
|
|
141
153
|
const { signal, path, throwOnError, fetchOptions } = options;
|
|
142
154
|
const resolvedSpaceId = getSpaceId(path);
|
|
143
|
-
return wrapRequest(() =>
|
|
155
|
+
return wrapRequest(() => getAsset({
|
|
144
156
|
client,
|
|
145
157
|
path: {
|
|
146
158
|
space_id: resolvedSpaceId,
|
|
147
|
-
|
|
159
|
+
id: assetId
|
|
148
160
|
},
|
|
149
161
|
signal,
|
|
150
162
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
@@ -163,45 +175,42 @@ function createAssetsResource(deps) {
|
|
|
163
175
|
} } : {};
|
|
164
176
|
if (file !== void 0) {
|
|
165
177
|
const { short_filename, ...assetBody } = body;
|
|
166
|
-
const signResult = await wrapRequest(() =>
|
|
178
|
+
const signResult = await wrapRequest(() => createAsset({
|
|
167
179
|
client,
|
|
168
180
|
path: { space_id: resolvedSpaceId },
|
|
169
|
-
|
|
170
|
-
filename: short_filename,
|
|
171
|
-
id: Number(assetId)
|
|
172
|
-
},
|
|
181
|
+
query: { filename: short_filename },
|
|
173
182
|
signal,
|
|
174
183
|
throwOnError: true,
|
|
175
184
|
...kyOpts
|
|
176
185
|
}), true);
|
|
177
186
|
if (!signResult.data.id) throw new Error("Invalid signed response: missing id");
|
|
178
187
|
await uploadToS3(signResult.data, file, short_filename);
|
|
179
|
-
await wrapRequest(() =>
|
|
188
|
+
await wrapRequest(() => finishAssetUpload({
|
|
180
189
|
client,
|
|
181
190
|
path: {
|
|
182
191
|
space_id: resolvedSpaceId,
|
|
183
|
-
|
|
192
|
+
id: Number(signResult.data.id)
|
|
184
193
|
},
|
|
185
194
|
signal,
|
|
186
195
|
throwOnError: true,
|
|
187
196
|
...kyOpts
|
|
188
197
|
}), true);
|
|
189
|
-
if (
|
|
198
|
+
if (hasDefinedFields(assetBody.asset)) await wrapRequest(() => updateAsset({
|
|
190
199
|
client,
|
|
191
200
|
path: {
|
|
192
201
|
space_id: resolvedSpaceId,
|
|
193
|
-
|
|
202
|
+
id: assetId
|
|
194
203
|
},
|
|
195
204
|
body: assetBody,
|
|
196
205
|
signal,
|
|
197
206
|
throwOnError: true,
|
|
198
207
|
...kyOpts
|
|
199
208
|
}), true);
|
|
200
|
-
} else await wrapRequest(() =>
|
|
209
|
+
} else await wrapRequest(() => updateAsset({
|
|
201
210
|
client,
|
|
202
211
|
path: {
|
|
203
212
|
space_id: resolvedSpaceId,
|
|
204
|
-
|
|
213
|
+
id: assetId
|
|
205
214
|
},
|
|
206
215
|
body,
|
|
207
216
|
signal,
|
|
@@ -212,11 +221,11 @@ function createAssetsResource(deps) {
|
|
|
212
221
|
delete(assetId, options = {}) {
|
|
213
222
|
const { signal, path, throwOnError, fetchOptions } = options;
|
|
214
223
|
const resolvedSpaceId = getSpaceId(path);
|
|
215
|
-
return wrapRequest(() =>
|
|
224
|
+
return wrapRequest(() => deleteAsset({
|
|
216
225
|
client,
|
|
217
226
|
path: {
|
|
218
227
|
space_id: resolvedSpaceId,
|
|
219
|
-
|
|
228
|
+
id: assetId
|
|
220
229
|
},
|
|
221
230
|
signal,
|
|
222
231
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
@@ -226,14 +235,14 @@ function createAssetsResource(deps) {
|
|
|
226
235
|
} } : {}
|
|
227
236
|
}), throwOnError);
|
|
228
237
|
},
|
|
229
|
-
finalize(
|
|
238
|
+
finalize(assetId, options = {}) {
|
|
230
239
|
const { signal, path, throwOnError, fetchOptions } = options;
|
|
231
240
|
const resolvedSpaceId = getSpaceId(path);
|
|
232
|
-
return wrapRequest(() =>
|
|
241
|
+
return wrapRequest(() => finishAssetUpload({
|
|
233
242
|
client,
|
|
234
243
|
path: {
|
|
235
244
|
space_id: resolvedSpaceId,
|
|
236
|
-
|
|
245
|
+
id: assetId
|
|
237
246
|
},
|
|
238
247
|
signal,
|
|
239
248
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
@@ -246,7 +255,7 @@ function createAssetsResource(deps) {
|
|
|
246
255
|
deleteMany(options) {
|
|
247
256
|
const { body, signal, path, throwOnError, fetchOptions } = options;
|
|
248
257
|
const resolvedSpaceId = getSpaceId(path);
|
|
249
|
-
return wrapRequest(() =>
|
|
258
|
+
return wrapRequest(() => bulkDestroyAssets({
|
|
250
259
|
client,
|
|
251
260
|
path: { space_id: resolvedSpaceId },
|
|
252
261
|
body,
|
|
@@ -261,7 +270,7 @@ function createAssetsResource(deps) {
|
|
|
261
270
|
bulkMove(options) {
|
|
262
271
|
const { body, signal, path, throwOnError, fetchOptions } = options;
|
|
263
272
|
const resolvedSpaceId = getSpaceId(path);
|
|
264
|
-
return wrapRequest(() =>
|
|
273
|
+
return wrapRequest(() => bulkUpdateAssets({
|
|
265
274
|
client,
|
|
266
275
|
path: { space_id: resolvedSpaceId },
|
|
267
276
|
body,
|
|
@@ -276,7 +285,7 @@ function createAssetsResource(deps) {
|
|
|
276
285
|
bulkRestore(options) {
|
|
277
286
|
const { body, signal, path, throwOnError, fetchOptions } = options;
|
|
278
287
|
const resolvedSpaceId = getSpaceId(path);
|
|
279
|
-
return wrapRequest(() =>
|
|
288
|
+
return wrapRequest(() => bulkRestoreAssets({
|
|
280
289
|
client,
|
|
281
290
|
path: { space_id: resolvedSpaceId },
|
|
282
291
|
body,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.mjs","names":["assetsApi.list","assetsApi.signResponseObject","assetsApi.finalize","assetsApi.get","assetsApi.update","assetsApi.delete_","assetsApi.deleteMany","assetsApi.bulkMove","assetsApi.bulkRestore"],"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 },\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.mjs","names":["mapi.listAssets","mapi.createAsset","mapi.finishAssetUpload","mapi.getAsset","mapi.updateAsset","mapi.deleteAsset","mapi.bulkDestroyAssets","mapi.bulkUpdateAssets","mapi.bulkRestoreAssets"],"sources":["../../src/resources/assets.ts"],"sourcesContent":["import * as mapi from '../generated/mapi/sdk.gen';\nimport type {\n BulkDestroyAssetsData,\n BulkDestroyAssetsResponses,\n BulkRestoreAssetsData,\n BulkRestoreAssetsResponses,\n BulkUpdateAssetsData,\n BulkUpdateAssetsResponses,\n CreateAssetData,\n CreateAssetResponses,\n DeleteAssetResponses,\n FinishAssetUploadResponses,\n GetAssetResponses,\n ListAssetsData,\n ListAssetsResponses,\n CreateAsset as SignedResponseObject,\n UpdateAssetData,\n UpdateAssetResponses,\n} from '../generated/mapi/types.gen';\nimport type { Asset } from '../generated/mapi/types-aliased.gen';\nimport type { ApiResponse, FetchOptions, MapiResourceDeps } from '../client';\nimport { ClientError } from '../error';\nimport { resolveSpaceId, type SpaceIdPathOverride } from './shared';\n\nexport type AssetListQuery = NonNullable<ListAssetsData['query']>;\n\n/**\n * Return shape of `list()`.\n *\n * The list endpoint serializes rows with MAPI's `IndexAsset` serializer, which\n * is NOT identical to the `ShowAsset` (= `Asset`) shape returned by `get()`:\n * `IndexAsset` omits `file` and `permanently_deleted`. We deliberately surface\n * list rows as `Asset` so consumers work against a single asset type. The lie:\n * `file`/`permanently_deleted` are absent on list rows at runtime — consumers\n * needing those must re-fetch via `get()`.\n */\nexport type ListAssetsResult = Omit<ListAssetsResponses[200], 'assets'> & { assets: Array<Asset> };\n\n/**\n * Fields for initiating an asset upload. Pass this to `upload()` or `create()`\n * alongside a file buffer.\n */\nexport type AssetUploadRequest = {\n /** The desired filename for the asset (e.g. `\"hero.png\"`). */\n short_filename: string;\n} & Partial<Omit<NonNullable<CreateAssetData['query']>, 'filename'>>;\n\n/**\n * Input for `create()`. Combines upload fields with writable metadata.\n */\nexport type AssetCreate = AssetUploadRequest & NonNullable<UpdateAssetData['body']['asset']>;\n\n/** Uploads the file to S3 using the signed fields from step 1. */\nasync function uploadToS3(\n signedResponse: SignedResponseObject,\n file: Blob | ArrayBuffer,\n filename: string,\n): Promise<void> {\n if (!signedResponse.post_url || !signedResponse.fields) {\n throw new ClientError('Invalid signed response: missing post_url or fields', {\n status: 0,\n statusText: 'Invalid signed response',\n data: signedResponse,\n });\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 ClientError(`Failed to upload asset to S3: ${response.statusText}`, {\n status: response.status,\n statusText: response.statusText,\n data: undefined,\n });\n }\n}\n\nconst hasDefinedFields = (value: Record<string, unknown> | undefined): boolean =>\n Object.values(value ?? {}).some(v => v !== undefined && v !== null);\n\nexport function createAssetsResource<DefaultThrowOnError extends boolean = false>(deps: MapiResourceDeps<DefaultThrowOnError>) {\n const { client, spaceId, wrapRequest } = deps;\n const getSpaceId = (path?: SpaceIdPathOverride['path']) => resolveSpaceId(spaceId, path);\n\n return {\n list<ThrowOnError extends boolean = DefaultThrowOnError>(options: { query?: ListAssetsData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<ListAssetsResult, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n // `listAssets` returns `IndexAsset` rows; we present them as `Asset` (see `ListAssetsResult`).\n return wrapRequest<ListAssetsResult, ThrowOnError>(() =>\n mapi.listAssets({ client, path: { space_id: resolvedSpaceId }, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n /**\n * Step 1 of the upload flow: requests a signed S3 upload object from MAPI.\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 = DefaultThrowOnError>(options: { query: CreateAssetData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<CreateAssetResponses[200], ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<CreateAssetResponses[200], ThrowOnError>(() =>\n mapi.createAsset({ client, path: { space_id: resolvedSpaceId }, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n /**\n * Uploads a file to Storyblok (sign → S3 upload → finish) and returns the\n * resulting `Asset`.\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 resolvedSpaceId = getSpaceId(path);\n const kyOpts = fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {};\n\n const signResult = await wrapRequest<CreateAssetResponses[200], true>(() =>\n mapi.createAsset({ client, path: { space_id: resolvedSpaceId }, query: { filename: short_filename, ...rest }, 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<FinishAssetUploadResponses[200], true>(() =>\n mapi.finishAssetUpload({\n client,\n path: { space_id: resolvedSpaceId, id: Number(signResult.data.id) },\n signal,\n throwOnError: true,\n ...kyOpts,\n }), true);\n\n const getResult = await wrapRequest<GetAssetResponses[200], true>(() =>\n mapi.getAsset({ client, path: { space_id: resolvedSpaceId, 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 in a follow-up update call.\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 { short_filename, asset_folder_id, is_private, size, validate_upload, ext_id, ...metadataOnly } = body;\n const asset = await this.upload({\n body: { short_filename, asset_folder_id, is_private, size, validate_upload, ext_id },\n file,\n signal,\n path: { space_id: resolvedSpaceId },\n fetchOptions,\n });\n\n const hasMetadata = Object.values(metadataOnly).some(v => v !== undefined && v !== null);\n if (hasMetadata) {\n await wrapRequest<UpdateAssetResponses[204], true>(() =>\n mapi.updateAsset({\n client,\n path: { space_id: resolvedSpaceId, id: asset.id! },\n body: { asset: metadataOnly },\n signal,\n throwOnError: true,\n ...kyOpts,\n }), true);\n const updatedResult = await wrapRequest<GetAssetResponses[200], true>(() =>\n mapi.getAsset({ client, path: { space_id: resolvedSpaceId, id: asset.id! }, signal, throwOnError: true, ...kyOpts }), true);\n return updatedResult.data;\n }\n\n return asset;\n },\n get<ThrowOnError extends boolean = DefaultThrowOnError>(assetId: number, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<GetAssetResponses[200], ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<GetAssetResponses[200], ThrowOnError>(() =>\n mapi.getAsset({ client, path: { space_id: resolvedSpaceId, id: assetId }, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n /**\n * Updates an asset's metadata. When `file` and `body.short_filename` are\n * provided, the file is replaced first (sign → S3 → finish), then metadata\n * is updated.\n */\n async update(\n assetId: number,\n options: (\n | { body: UpdateAssetData['body']; file?: undefined }\n | { body: UpdateAssetData['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<CreateAssetResponses[200], true>(() =>\n mapi.createAsset({\n client,\n path: { space_id: resolvedSpaceId },\n query: { filename: short_filename },\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<FinishAssetUploadResponses[200], true>(() =>\n mapi.finishAssetUpload({\n client,\n path: { space_id: resolvedSpaceId, id: Number(signResult.data.id) },\n signal,\n throwOnError: true,\n ...kyOpts,\n }), true);\n\n if (hasDefinedFields(assetBody.asset)) {\n await wrapRequest<UpdateAssetResponses[204], true>(() =>\n mapi.updateAsset({ client, path: { space_id: resolvedSpaceId, id: assetId }, body: assetBody, signal, throwOnError: true, ...kyOpts }), true);\n }\n }\n else {\n await wrapRequest<UpdateAssetResponses[204], true>(() =>\n mapi.updateAsset({ client, path: { space_id: resolvedSpaceId, id: assetId }, body, signal, throwOnError: true, ...kyOpts }), true);\n }\n },\n delete<ThrowOnError extends boolean = DefaultThrowOnError>(assetId: number, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<DeleteAssetResponses[200], ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<DeleteAssetResponses[200], ThrowOnError>(() =>\n mapi.deleteAsset({ client, path: { space_id: resolvedSpaceId, id: assetId }, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n finalize<ThrowOnError extends boolean = DefaultThrowOnError>(assetId: number, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<FinishAssetUploadResponses[200], ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<FinishAssetUploadResponses[200], ThrowOnError>(() =>\n mapi.finishAssetUpload({\n client,\n path: { space_id: resolvedSpaceId, id: assetId },\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n }), throwOnError);\n },\n /** POST /assets/bulk_destroy: hard-delete many assets in one call. */\n deleteMany<ThrowOnError extends boolean = DefaultThrowOnError>(options: { body: BulkDestroyAssetsData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<BulkDestroyAssetsResponses[200], ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<BulkDestroyAssetsResponses[200], ThrowOnError>(() =>\n mapi.bulkDestroyAssets({ client, path: { space_id: resolvedSpaceId }, body, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n /** POST /assets/bulk_update: move many assets between folders in one call. */\n bulkMove<ThrowOnError extends boolean = DefaultThrowOnError>(options: { body: BulkUpdateAssetsData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<BulkUpdateAssetsResponses[200], ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<BulkUpdateAssetsResponses[200], ThrowOnError>(() =>\n mapi.bulkUpdateAssets({ client, path: { space_id: resolvedSpaceId }, body, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n bulkRestore<ThrowOnError extends boolean = DefaultThrowOnError>(options: { body: BulkRestoreAssetsData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<BulkRestoreAssetsResponses[200], ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<BulkRestoreAssetsResponses[200], ThrowOnError>(() =>\n mapi.bulkRestoreAssets({ 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,5 +1,5 @@
|
|
|
1
|
+
const require_sdk_gen = require('../generated/mapi/sdk.gen.cjs');
|
|
1
2
|
const require_shared = require('./shared.cjs');
|
|
2
|
-
const require_sdk_gen = require('../generated/component_folders/sdk.gen.cjs');
|
|
3
3
|
|
|
4
4
|
//#region src/resources/component-folders.ts
|
|
5
5
|
function createComponentFoldersResource(deps) {
|
|
@@ -9,7 +9,7 @@ function createComponentFoldersResource(deps) {
|
|
|
9
9
|
list(options = {}) {
|
|
10
10
|
const { query, signal, path, throwOnError, fetchOptions } = options;
|
|
11
11
|
const resolvedSpaceId = getSpaceId(path);
|
|
12
|
-
return wrapRequest(() => require_sdk_gen.
|
|
12
|
+
return wrapRequest(() => require_sdk_gen.listComponentGroups({
|
|
13
13
|
client,
|
|
14
14
|
path: { space_id: resolvedSpaceId },
|
|
15
15
|
query,
|
|
@@ -24,11 +24,11 @@ function createComponentFoldersResource(deps) {
|
|
|
24
24
|
get(componentGroupId, options = {}) {
|
|
25
25
|
const { signal, path, throwOnError, fetchOptions } = options;
|
|
26
26
|
const resolvedSpaceId = getSpaceId(path);
|
|
27
|
-
return wrapRequest(() => require_sdk_gen.
|
|
27
|
+
return wrapRequest(() => require_sdk_gen.getComponentGroup({
|
|
28
28
|
client,
|
|
29
29
|
path: {
|
|
30
30
|
space_id: resolvedSpaceId,
|
|
31
|
-
|
|
31
|
+
id: componentGroupId
|
|
32
32
|
},
|
|
33
33
|
signal,
|
|
34
34
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
@@ -41,7 +41,7 @@ function createComponentFoldersResource(deps) {
|
|
|
41
41
|
create(options) {
|
|
42
42
|
const { body, signal, path, throwOnError, fetchOptions } = options;
|
|
43
43
|
const resolvedSpaceId = getSpaceId(path);
|
|
44
|
-
return wrapRequest(() => require_sdk_gen.
|
|
44
|
+
return wrapRequest(() => require_sdk_gen.createComponentGroup({
|
|
45
45
|
client,
|
|
46
46
|
path: { space_id: resolvedSpaceId },
|
|
47
47
|
body,
|
|
@@ -56,11 +56,11 @@ function createComponentFoldersResource(deps) {
|
|
|
56
56
|
update(componentGroupId, options) {
|
|
57
57
|
const { body, signal, path, throwOnError, fetchOptions } = options;
|
|
58
58
|
const resolvedSpaceId = getSpaceId(path);
|
|
59
|
-
return wrapRequest(() => require_sdk_gen.
|
|
59
|
+
return wrapRequest(() => require_sdk_gen.updateComponentGroup({
|
|
60
60
|
client,
|
|
61
61
|
path: {
|
|
62
62
|
space_id: resolvedSpaceId,
|
|
63
|
-
|
|
63
|
+
id: componentGroupId
|
|
64
64
|
},
|
|
65
65
|
body,
|
|
66
66
|
signal,
|
|
@@ -74,11 +74,11 @@ function createComponentFoldersResource(deps) {
|
|
|
74
74
|
delete(componentGroupId, options = {}) {
|
|
75
75
|
const { signal, path, throwOnError, fetchOptions } = options;
|
|
76
76
|
const resolvedSpaceId = getSpaceId(path);
|
|
77
|
-
return wrapRequest(() => require_sdk_gen.
|
|
77
|
+
return wrapRequest(() => require_sdk_gen.deleteComponentGroup({
|
|
78
78
|
client,
|
|
79
79
|
path: {
|
|
80
80
|
space_id: resolvedSpaceId,
|
|
81
|
-
|
|
81
|
+
id: componentGroupId
|
|
82
82
|
},
|
|
83
83
|
signal,
|
|
84
84
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-folders.cjs","names":["resolveSpaceId"],"sources":["../../src/resources/component-folders.ts"],"sourcesContent":["import * as
|
|
1
|
+
{"version":3,"file":"component-folders.cjs","names":["resolveSpaceId"],"sources":["../../src/resources/component-folders.ts"],"sourcesContent":["import * as mapi from '../generated/mapi/sdk.gen';\nimport type {\n CreateComponentGroupData,\n CreateComponentGroupResponses,\n GetComponentGroupResponses,\n ListComponentGroupsData,\n ListComponentGroupsResponses,\n UpdateComponentGroupData,\n UpdateComponentGroupResponses,\n} from '../generated/mapi/types.gen';\nimport type { ApiResponse, FetchOptions, MapiResourceDeps } from '../client';\nimport { resolveSpaceId, type SpaceIdPathOverride } from './shared';\n\nexport function createComponentFoldersResource<DefaultThrowOnError extends boolean = false>(deps: MapiResourceDeps<DefaultThrowOnError>) {\n const { client, spaceId, wrapRequest } = deps;\n const getSpaceId = (path?: SpaceIdPathOverride['path']) => resolveSpaceId(spaceId, path);\n\n return {\n list<ThrowOnError extends boolean = DefaultThrowOnError>(options: { query?: ListComponentGroupsData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<ListComponentGroupsResponses[200], ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<ListComponentGroupsResponses[200], ThrowOnError>(() =>\n mapi.listComponentGroups({ client, path: { space_id: resolvedSpaceId }, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n get<ThrowOnError extends boolean = DefaultThrowOnError>(componentGroupId: number, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<GetComponentGroupResponses[200], ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<GetComponentGroupResponses[200], ThrowOnError>(() =>\n mapi.getComponentGroup({\n client,\n path: { space_id: resolvedSpaceId, id: componentGroupId },\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n }), throwOnError);\n },\n create<ThrowOnError extends boolean = DefaultThrowOnError>(options: { body: CreateComponentGroupData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<CreateComponentGroupResponses[201], ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<CreateComponentGroupResponses[201], ThrowOnError>(() =>\n mapi.createComponentGroup({ client, path: { space_id: resolvedSpaceId }, body, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n update<ThrowOnError extends boolean = DefaultThrowOnError>(\n componentGroupId: number,\n options: { body: UpdateComponentGroupData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride,\n ): Promise<ApiResponse<UpdateComponentGroupResponses[200], ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<UpdateComponentGroupResponses[200], ThrowOnError>(() =>\n mapi.updateComponentGroup({\n client,\n path: { space_id: resolvedSpaceId, id: componentGroupId },\n body,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n }), throwOnError);\n },\n delete<ThrowOnError extends boolean = DefaultThrowOnError>(componentGroupId: number, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<void, ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<void, ThrowOnError>(() =>\n mapi.deleteComponentGroup({\n client,\n path: { space_id: resolvedSpaceId, id: componentGroupId },\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n }), throwOnError);\n },\n };\n}\n"],"mappings":";;;;AAaA,SAAgB,+BAA4E,MAA6C;CACvI,MAAM,EAAE,QAAQ,SAAS,gBAAgB;CACzC,MAAM,cAAc,SAAuCA,8BAAe,SAAS,KAAK;AAExF,QAAO;EACL,KAAyD,UAA8J,EAAE,EAAyE;GAChS,MAAM,EAAE,OAAO,QAAQ,MAAM,cAAc,iBAAiB;GAC5D,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,sDACoB;IAAE;IAAQ,MAAM,EAAE,UAAU,iBAAiB;IAAE;IAAO;IAAQ,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IAAG,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAAG,CAAC,EAAE,aAAa;;EAElQ,IAAwD,kBAA0B,UAAoH,EAAE,EAAuE;GAC7Q,MAAM,EAAE,QAAQ,MAAM,cAAc,iBAAiB;GACrD,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,oDACkB;IACrB;IACA,MAAM;KAAE,UAAU;KAAiB,IAAI;KAAkB;IACzD;IACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IACtD,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAC5F,CAAC,EAAE,aAAa;;EAErB,OAA2D,SAAmO;GAC5R,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;GAC3D,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,uDACqB;IAAE;IAAQ,MAAM,EAAE,UAAU,iBAAiB;IAAE;IAAM;IAAQ,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IAAG,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAAG,CAAC,EAAE,aAAa;;EAElQ,OACE,kBACA,SACwE;GACxE,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;GAC3D,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,uDACqB;IACxB;IACA,MAAM;KAAE,UAAU;KAAiB,IAAI;KAAkB;IACzD;IACA;IACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IACtD,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAC5F,CAAC,EAAE,aAAa;;EAErB,OAA2D,kBAA0B,UAAoH,EAAE,EAA4C;GACrP,MAAM,EAAE,QAAQ,MAAM,cAAc,iBAAiB;GACrD,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,uDACqB;IACxB;IACA,MAAM;KAAE,UAAU;KAAiB,IAAI;KAAkB;IACzD;IACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IACtD,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAC5F,CAAC,EAAE,aAAa;;EAEtB"}
|