@storyblok/management-api-client 1.0.0-alpha.1 → 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 +9 -9
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +208 -200
- package/dist/client.d.mts +208 -200
- package/dist/client.mjs +9 -9
- package/dist/client.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/{components/types.gen.d.cts → overlay/_internal.gen.d.cts} +281 -457
- package/dist/generated/{components/types.gen.d.mts → overlay/_internal.gen.d.mts} +281 -457
- 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.d.cts +9 -4
- package/dist/index.d.mts +9 -4
- 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 +64 -46
- package/dist/resources/assets.cjs.map +1 -1
- package/dist/resources/assets.d.cts +23 -28
- package/dist/resources/assets.d.mts +23 -28
- package/dist/resources/assets.mjs +64 -46
- 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 +30 -42
- package/dist/resources/stories.d.mts +30 -42
- 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/dist/utils/rate-limit.cjs +15 -74
- package/dist/utils/rate-limit.cjs.map +1 -1
- package/dist/utils/rate-limit.d.cts +5 -6
- package/dist/utils/rate-limit.d.mts +5 -6
- package/dist/utils/rate-limit.mjs +15 -74
- package/dist/utils/rate-limit.mjs.map +1 -1
- package/package.json +13 -13
- 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/{test → playground/integration-tests/test}/setup.e2e.ts +2 -2
- package/{test → playground/integration-tests/test}/specs/mapi-round-trip.spec.e2e.ts +1 -1
- 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/{vitest.config.e2e.ts → playground/integration-tests/vitest.config.e2e.ts} +1 -2
- package/playground/integration-tests/vitest.config.ts +13 -0
- package/test/GUIDE.md +2 -2
- package/vitest.config.ts +2 -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 -130
- package/dist/generated/asset_folders/types.gen.d.mts +0 -130
- 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 -343
- package/dist/generated/assets/types.gen.d.mts +0 -343
- 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 -102
- package/dist/generated/component_folders/types.gen.d.mts +0 -102
- 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/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 -130
- package/dist/generated/datasource_entries/types.gen.d.mts +0 -130
- 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 -165
- package/dist/generated/datasources/types.gen.d.mts +0 -165
- 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 -102
- package/dist/generated/internal_tags/types.gen.d.mts +0 -102
- 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 -171
- package/dist/generated/presets/types.gen.d.mts +0 -171
- 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 -504
- package/dist/generated/spaces/types.gen.d.mts +0 -504
- 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 -1314
- package/dist/generated/stories/types.gen.d.mts +0 -1314
- 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 -249
- package/dist/generated/users/types.gen.d.mts +0 -249
- /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,6 +1,6 @@
|
|
|
1
1
|
const require_error = require('../error.cjs');
|
|
2
|
+
const require_sdk_gen = require('../generated/mapi/sdk.gen.cjs');
|
|
2
3
|
const require_shared = require('./shared.cjs');
|
|
3
|
-
const require_sdk_gen = require('../generated/assets/sdk.gen.cjs');
|
|
4
4
|
|
|
5
5
|
//#region src/resources/assets.ts
|
|
6
6
|
/** Uploads the file to S3 using the signed fields from step 1. */
|
|
@@ -25,6 +25,7 @@ async function uploadToS3(signedResponse, file, filename) {
|
|
|
25
25
|
data: void 0
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
|
+
const hasDefinedFields = (value) => Object.values(value ?? {}).some((v) => v !== void 0 && v !== null);
|
|
28
29
|
function createAssetsResource(deps) {
|
|
29
30
|
const { client, spaceId, wrapRequest } = deps;
|
|
30
31
|
const getSpaceId = (path) => require_shared.resolveSpaceId(spaceId, path);
|
|
@@ -32,7 +33,7 @@ function createAssetsResource(deps) {
|
|
|
32
33
|
list(options = {}) {
|
|
33
34
|
const { query, signal, path, throwOnError, fetchOptions } = options;
|
|
34
35
|
const resolvedSpaceId = getSpaceId(path);
|
|
35
|
-
return wrapRequest(() => require_sdk_gen.
|
|
36
|
+
return wrapRequest(() => require_sdk_gen.listAssets({
|
|
36
37
|
client,
|
|
37
38
|
path: { space_id: resolvedSpaceId },
|
|
38
39
|
query,
|
|
@@ -45,12 +46,12 @@ function createAssetsResource(deps) {
|
|
|
45
46
|
}), throwOnError);
|
|
46
47
|
},
|
|
47
48
|
signResponseObject(options) {
|
|
48
|
-
const {
|
|
49
|
+
const { query, signal, path, throwOnError, fetchOptions } = options;
|
|
49
50
|
const resolvedSpaceId = getSpaceId(path);
|
|
50
|
-
return wrapRequest(() => require_sdk_gen.
|
|
51
|
+
return wrapRequest(() => require_sdk_gen.createAsset({
|
|
51
52
|
client,
|
|
52
53
|
path: { space_id: resolvedSpaceId },
|
|
53
|
-
|
|
54
|
+
query,
|
|
54
55
|
signal,
|
|
55
56
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
56
57
|
...fetchOptions ? { kyOptions: {
|
|
@@ -62,40 +63,39 @@ function createAssetsResource(deps) {
|
|
|
62
63
|
async upload(options) {
|
|
63
64
|
const { body, file, signal, path, fetchOptions } = options;
|
|
64
65
|
const { short_filename, ...rest } = body;
|
|
65
|
-
const signBody = {
|
|
66
|
-
filename: short_filename,
|
|
67
|
-
...rest
|
|
68
|
-
};
|
|
69
66
|
const resolvedSpaceId = getSpaceId(path);
|
|
70
67
|
const kyOpts = fetchOptions ? { kyOptions: {
|
|
71
68
|
...client.getConfig().kyOptions,
|
|
72
69
|
...fetchOptions
|
|
73
70
|
} } : {};
|
|
74
|
-
const signResult = await wrapRequest(() => require_sdk_gen.
|
|
71
|
+
const signResult = await wrapRequest(() => require_sdk_gen.createAsset({
|
|
75
72
|
client,
|
|
76
73
|
path: { space_id: resolvedSpaceId },
|
|
77
|
-
|
|
74
|
+
query: {
|
|
75
|
+
filename: short_filename,
|
|
76
|
+
...rest
|
|
77
|
+
},
|
|
78
78
|
signal,
|
|
79
79
|
throwOnError: true,
|
|
80
80
|
...kyOpts
|
|
81
81
|
}), true);
|
|
82
82
|
if (!signResult.data.id) throw new Error("Invalid signed response: missing id");
|
|
83
83
|
await uploadToS3(signResult.data, file, short_filename);
|
|
84
|
-
await wrapRequest(() => require_sdk_gen.
|
|
84
|
+
await wrapRequest(() => require_sdk_gen.finishAssetUpload({
|
|
85
85
|
client,
|
|
86
86
|
path: {
|
|
87
87
|
space_id: resolvedSpaceId,
|
|
88
|
-
|
|
88
|
+
id: Number(signResult.data.id)
|
|
89
89
|
},
|
|
90
90
|
signal,
|
|
91
91
|
throwOnError: true,
|
|
92
92
|
...kyOpts
|
|
93
93
|
}), true);
|
|
94
|
-
return (await wrapRequest(() => require_sdk_gen.
|
|
94
|
+
return (await wrapRequest(() => require_sdk_gen.getAsset({
|
|
95
95
|
client,
|
|
96
96
|
path: {
|
|
97
97
|
space_id: resolvedSpaceId,
|
|
98
|
-
|
|
98
|
+
id: Number(signResult.data.id)
|
|
99
99
|
},
|
|
100
100
|
signal,
|
|
101
101
|
throwOnError: true,
|
|
@@ -109,35 +109,38 @@ function createAssetsResource(deps) {
|
|
|
109
109
|
...client.getConfig().kyOptions,
|
|
110
110
|
...fetchOptions
|
|
111
111
|
} } : {};
|
|
112
|
+
const { short_filename, asset_folder_id, is_private, size, validate_upload, ext_id, ...metadataOnly } = body;
|
|
112
113
|
const asset = await this.upload({
|
|
113
114
|
body: {
|
|
114
|
-
short_filename
|
|
115
|
-
asset_folder_id
|
|
116
|
-
is_private
|
|
115
|
+
short_filename,
|
|
116
|
+
asset_folder_id,
|
|
117
|
+
is_private,
|
|
118
|
+
size,
|
|
119
|
+
validate_upload,
|
|
120
|
+
ext_id
|
|
117
121
|
},
|
|
118
122
|
file,
|
|
119
123
|
signal,
|
|
120
124
|
path: { space_id: resolvedSpaceId },
|
|
121
125
|
fetchOptions
|
|
122
126
|
});
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
await wrapRequest(() => require_sdk_gen.update({
|
|
127
|
+
if (Object.values(metadataOnly).some((v) => v !== void 0 && v !== null)) {
|
|
128
|
+
await wrapRequest(() => require_sdk_gen.updateAsset({
|
|
126
129
|
client,
|
|
127
130
|
path: {
|
|
128
131
|
space_id: resolvedSpaceId,
|
|
129
|
-
|
|
132
|
+
id: asset.id
|
|
130
133
|
},
|
|
131
|
-
body: { asset:
|
|
134
|
+
body: { asset: metadataOnly },
|
|
132
135
|
signal,
|
|
133
136
|
throwOnError: true,
|
|
134
137
|
...kyOpts
|
|
135
138
|
}), true);
|
|
136
|
-
return (await wrapRequest(() => require_sdk_gen.
|
|
139
|
+
return (await wrapRequest(() => require_sdk_gen.getAsset({
|
|
137
140
|
client,
|
|
138
141
|
path: {
|
|
139
142
|
space_id: resolvedSpaceId,
|
|
140
|
-
|
|
143
|
+
id: asset.id
|
|
141
144
|
},
|
|
142
145
|
signal,
|
|
143
146
|
throwOnError: true,
|
|
@@ -149,11 +152,11 @@ function createAssetsResource(deps) {
|
|
|
149
152
|
get(assetId, options = {}) {
|
|
150
153
|
const { signal, path, throwOnError, fetchOptions } = options;
|
|
151
154
|
const resolvedSpaceId = getSpaceId(path);
|
|
152
|
-
return wrapRequest(() => require_sdk_gen.
|
|
155
|
+
return wrapRequest(() => require_sdk_gen.getAsset({
|
|
153
156
|
client,
|
|
154
157
|
path: {
|
|
155
158
|
space_id: resolvedSpaceId,
|
|
156
|
-
|
|
159
|
+
id: assetId
|
|
157
160
|
},
|
|
158
161
|
signal,
|
|
159
162
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
@@ -172,45 +175,42 @@ function createAssetsResource(deps) {
|
|
|
172
175
|
} } : {};
|
|
173
176
|
if (file !== void 0) {
|
|
174
177
|
const { short_filename, ...assetBody } = body;
|
|
175
|
-
const signResult = await wrapRequest(() => require_sdk_gen.
|
|
178
|
+
const signResult = await wrapRequest(() => require_sdk_gen.createAsset({
|
|
176
179
|
client,
|
|
177
180
|
path: { space_id: resolvedSpaceId },
|
|
178
|
-
|
|
179
|
-
filename: short_filename,
|
|
180
|
-
id: Number(assetId)
|
|
181
|
-
},
|
|
181
|
+
query: { filename: short_filename },
|
|
182
182
|
signal,
|
|
183
183
|
throwOnError: true,
|
|
184
184
|
...kyOpts
|
|
185
185
|
}), true);
|
|
186
186
|
if (!signResult.data.id) throw new Error("Invalid signed response: missing id");
|
|
187
187
|
await uploadToS3(signResult.data, file, short_filename);
|
|
188
|
-
await wrapRequest(() => require_sdk_gen.
|
|
188
|
+
await wrapRequest(() => require_sdk_gen.finishAssetUpload({
|
|
189
189
|
client,
|
|
190
190
|
path: {
|
|
191
191
|
space_id: resolvedSpaceId,
|
|
192
|
-
|
|
192
|
+
id: Number(signResult.data.id)
|
|
193
193
|
},
|
|
194
194
|
signal,
|
|
195
195
|
throwOnError: true,
|
|
196
196
|
...kyOpts
|
|
197
197
|
}), true);
|
|
198
|
-
if (
|
|
198
|
+
if (hasDefinedFields(assetBody.asset)) await wrapRequest(() => require_sdk_gen.updateAsset({
|
|
199
199
|
client,
|
|
200
200
|
path: {
|
|
201
201
|
space_id: resolvedSpaceId,
|
|
202
|
-
|
|
202
|
+
id: assetId
|
|
203
203
|
},
|
|
204
204
|
body: assetBody,
|
|
205
205
|
signal,
|
|
206
206
|
throwOnError: true,
|
|
207
207
|
...kyOpts
|
|
208
208
|
}), true);
|
|
209
|
-
} else await wrapRequest(() => require_sdk_gen.
|
|
209
|
+
} else await wrapRequest(() => require_sdk_gen.updateAsset({
|
|
210
210
|
client,
|
|
211
211
|
path: {
|
|
212
212
|
space_id: resolvedSpaceId,
|
|
213
|
-
|
|
213
|
+
id: assetId
|
|
214
214
|
},
|
|
215
215
|
body,
|
|
216
216
|
signal,
|
|
@@ -221,11 +221,11 @@ function createAssetsResource(deps) {
|
|
|
221
221
|
delete(assetId, options = {}) {
|
|
222
222
|
const { signal, path, throwOnError, fetchOptions } = options;
|
|
223
223
|
const resolvedSpaceId = getSpaceId(path);
|
|
224
|
-
return wrapRequest(() => require_sdk_gen.
|
|
224
|
+
return wrapRequest(() => require_sdk_gen.deleteAsset({
|
|
225
225
|
client,
|
|
226
226
|
path: {
|
|
227
227
|
space_id: resolvedSpaceId,
|
|
228
|
-
|
|
228
|
+
id: assetId
|
|
229
229
|
},
|
|
230
230
|
signal,
|
|
231
231
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
@@ -235,14 +235,14 @@ function createAssetsResource(deps) {
|
|
|
235
235
|
} } : {}
|
|
236
236
|
}), throwOnError);
|
|
237
237
|
},
|
|
238
|
-
finalize(
|
|
238
|
+
finalize(assetId, options = {}) {
|
|
239
239
|
const { signal, path, throwOnError, fetchOptions } = options;
|
|
240
240
|
const resolvedSpaceId = getSpaceId(path);
|
|
241
|
-
return wrapRequest(() => require_sdk_gen.
|
|
241
|
+
return wrapRequest(() => require_sdk_gen.finishAssetUpload({
|
|
242
242
|
client,
|
|
243
243
|
path: {
|
|
244
244
|
space_id: resolvedSpaceId,
|
|
245
|
-
|
|
245
|
+
id: assetId
|
|
246
246
|
},
|
|
247
247
|
signal,
|
|
248
248
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
@@ -255,7 +255,7 @@ function createAssetsResource(deps) {
|
|
|
255
255
|
deleteMany(options) {
|
|
256
256
|
const { body, signal, path, throwOnError, fetchOptions } = options;
|
|
257
257
|
const resolvedSpaceId = getSpaceId(path);
|
|
258
|
-
return wrapRequest(() => require_sdk_gen.
|
|
258
|
+
return wrapRequest(() => require_sdk_gen.bulkDestroyAssets({
|
|
259
259
|
client,
|
|
260
260
|
path: { space_id: resolvedSpaceId },
|
|
261
261
|
body,
|
|
@@ -270,7 +270,7 @@ function createAssetsResource(deps) {
|
|
|
270
270
|
bulkMove(options) {
|
|
271
271
|
const { body, signal, path, throwOnError, fetchOptions } = options;
|
|
272
272
|
const resolvedSpaceId = getSpaceId(path);
|
|
273
|
-
return wrapRequest(() => require_sdk_gen.
|
|
273
|
+
return wrapRequest(() => require_sdk_gen.bulkUpdateAssets({
|
|
274
274
|
client,
|
|
275
275
|
path: { space_id: resolvedSpaceId },
|
|
276
276
|
body,
|
|
@@ -285,7 +285,7 @@ function createAssetsResource(deps) {
|
|
|
285
285
|
bulkRestore(options) {
|
|
286
286
|
const { body, signal, path, throwOnError, fetchOptions } = options;
|
|
287
287
|
const resolvedSpaceId = getSpaceId(path);
|
|
288
|
-
return wrapRequest(() => require_sdk_gen.
|
|
288
|
+
return wrapRequest(() => require_sdk_gen.bulkRestoreAssets({
|
|
289
289
|
client,
|
|
290
290
|
path: { space_id: resolvedSpaceId },
|
|
291
291
|
body,
|
|
@@ -296,6 +296,24 @@ function createAssetsResource(deps) {
|
|
|
296
296
|
...fetchOptions
|
|
297
297
|
} } : {}
|
|
298
298
|
}), throwOnError);
|
|
299
|
+
},
|
|
300
|
+
convertToShared(assetId, options) {
|
|
301
|
+
const { query, signal, path, throwOnError, fetchOptions } = options;
|
|
302
|
+
const resolvedSpaceId = getSpaceId(path);
|
|
303
|
+
return wrapRequest(() => client.post({
|
|
304
|
+
url: "/v1/spaces/{space_id}/assets/{asset_id}/convert",
|
|
305
|
+
path: {
|
|
306
|
+
space_id: resolvedSpaceId,
|
|
307
|
+
asset_id: assetId
|
|
308
|
+
},
|
|
309
|
+
query,
|
|
310
|
+
signal,
|
|
311
|
+
...throwOnError === void 0 ? {} : { throwOnError },
|
|
312
|
+
...fetchOptions ? { kyOptions: {
|
|
313
|
+
...client.getConfig().kyOptions,
|
|
314
|
+
...fetchOptions
|
|
315
|
+
} } : {}
|
|
316
|
+
}), throwOnError);
|
|
299
317
|
}
|
|
300
318
|
};
|
|
301
319
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.cjs","names":["ClientError","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 '../client';\nimport { ClientError } from '../error';\nimport { resolveSpaceId, type SpaceIdPathOverride } from './shared';\n\nexport type AssetListQuery = NonNullable<ListData['query']>;\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 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\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?: 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 = DefaultThrowOnError>(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 = DefaultThrowOnError>(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 = DefaultThrowOnError>(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 = DefaultThrowOnError>(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 = DefaultThrowOnError>(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 = DefaultThrowOnError>(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 = DefaultThrowOnError>(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}\n"],"mappings":";;;;;;AA4DA,eAAe,WACb,gBACA,MACA,UACe;AACf,KAAI,CAAC,eAAe,YAAY,CAAC,eAAe,OAC9C,OAAM,IAAIA,0BAAY,uDAAuD;EAC3E,QAAQ;EACR,YAAY;EACZ,MAAM;EACP,CAAC;CAEJ,MAAM,WAAW,IAAI,UAAU;AAC/B,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,eAAe,OAAO,CAC9D,UAAS,OAAO,KAAK,MAAgB;CAEvC,MAAM,cAAe,eAAe,OAAO,mBAA0C;CACrF,MAAM,OAAO,gBAAgB,OAAO,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAClF,UAAS,OAAO,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC,CAAC;CAC1E,MAAM,WAAW,MAAM,MAAM,eAAe,UAAU;EAAE,QAAQ;EAAQ,MAAM;EAAU,CAAC;AACzF,KAAI,CAAC,SAAS,GACZ,OAAM,IAAIA,0BAAY,iCAAiC,SAAS,cAAc;EAC5E,QAAQ,SAAS;EACjB,YAAY,SAAS;EACrB,MAAM;EACP,CAAC;;AAIN,SAAgB,qBAAkE,MAA6C;CAC7H,MAAM,EAAE,QAAQ,SAAS,gBAAgB;CACzC,MAAM,cAAc,SAAuCC,8BAAe,SAAS,KAAK;AAExF,QAAO;EACL,KAAyD,UAA+I,EAAE,EAA0D;GAClQ,MAAM,EAAE,OAAO,QAAQ,MAAM,cAAc,iBAAiB;GAC5D,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,uCACU;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;;EASxP,mBAAuE,SAA+N;GACpS,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;GAC3D,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,qDACwB;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;;EAQrQ,MAAM,OAAO,SAA0J;GACrK,MAAM,EAAE,MAAM,MAAM,QAAQ,MAAM,iBAAiB;GACnD,MAAM,EAAE,gBAAgB,GAAG,SAAS;GACpC,MAAM,WAA6B;IAAE,UAAU;IAAgB,GAAG;IAAM;GACxE,MAAM,kBAAkB,WAAW,KAAK;GACxC,MAAM,SAAS,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAEtG,MAAM,aAAa,MAAM,qDACM;IAAE;IAAQ,MAAM,EAAE,UAAU,iBAAiB;IAAE,MAAM;IAAU;IAAQ,cAAc;IAAM,GAAG;IAAQ,CAAC,EAAE,KAAK;AAE7I,OAAI,CAAC,WAAW,KAAK,GACnB,OAAM,IAAI,MAAM,sCAAsC;AAGxD,SAAM,WAAW,WAAW,MAAM,MAAM,eAAe;AAEvD,SAAM,2CACe;IACjB;IACA,MAAM;KAAE,UAAU;KAAiB,2BAA2B,OAAO,WAAW,KAAK,GAAG;KAAE;IAC1F;IACA,cAAc;IACd,GAAG;IACJ,CAAC,EAAE,KAAK;AAKX,WAHkB,MAAM,sCACR;IAAE;IAAQ,MAAM;KAAE,UAAU;KAAiB,UAAU,OAAO,WAAW,KAAK,GAAG;KAAE;IAAE;IAAQ,cAAc;IAAM,GAAG;IAAQ,CAAC,EAAE,KAAK,EAEnI;;EAOnB,MAAM,OAAO,SAAmJ;GAC9J,MAAM,EAAE,MAAM,MAAM,QAAQ,MAAM,iBAAiB;GACnD,MAAM,kBAAkB,WAAW,KAAK;GACxC,MAAM,SAAS,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAEtG,MAAM,QAAQ,MAAM,KAAK,OAAO;IAC9B,MAAM;KACJ,gBAAgB,KAAK;KACrB,iBAAiB,KAAK;KACtB,YAAY,KAAK;KAClB;IACD;IACA;IACA,MAAM,EAAE,UAAU,iBAAiB;IACnC;IACD,CAAC;GAEF,MAAM,EAAE,gBAAgB,iBAAiB,YAAY,MAAM,iBAAiB,GAAG,aAAa;AAE5F,OADoB,OAAO,OAAO,SAAS,CAAC,MAAK,MAAK,MAAM,UAAa,MAAM,KAAK,EACnE;AACf,UAAM,yCACa;KACf;KACA,MAAM;MAAE,UAAU;MAAiB,UAAU,MAAM;MAAI;KACvD,MAAM,EAAE,OAAO,UAAU;KACzB;KACA,cAAc;KACd,GAAG;KACJ,CAAC,EAAE,KAAK;AAGX,YAFsB,MAAM,sCACZ;KAAE;KAAQ,MAAM;MAAE,UAAU;MAAiB,UAAU,MAAM;MAAI;KAAE;KAAQ,cAAc;KAAM,GAAG;KAAQ,CAAC,EAAE,KAAK,EAC7G;;AAGvB,UAAO;;EAET,IAAwD,SAA0B,UAAoH,EAAE,EAAyD;GAC/P,MAAM,EAAE,QAAQ,MAAM,cAAc,iBAAiB;GACrD,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,sCACS;IAAE;IAAQ,MAAM;KAAE,UAAU;KAAiB,UAAU;KAAS;IAAE;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;;EAOnQ,MAAM,OACJ,SACA,SAIe;GACf,MAAM,EAAE,MAAM,MAAM,QAAQ,MAAM,iBAAiB;GACnD,MAAM,kBAAkB,WAAW,KAAK;GACxC,MAAM,SAAS,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;AAEtG,OAAI,SAAS,QAAW;IACtB,MAAM,EAAE,gBAAgB,GAAG,cAAc;IACzC,MAAM,aAAa,MAAM,qDACM;KAC3B;KACA,MAAM,EAAE,UAAU,iBAAiB;KACnC,MAAM;MAAE,UAAU;MAAgB,IAAI,OAAO,QAAQ;MAAE;KACvD;KACA,cAAc;KACd,GAAG;KACJ,CAAC,EAAE,KAAK;AAEX,QAAI,CAAC,WAAW,KAAK,GACnB,OAAM,IAAI,MAAM,sCAAsC;AAGxD,UAAM,WAAW,WAAW,MAAM,MAAM,eAAe;AAEvD,UAAM,2CACe;KACjB;KACA,MAAM;MAAE,UAAU;MAAiB,2BAA2B,OAAO,WAAW,KAAK,GAAG;MAAE;KAC1F;KACA,cAAc;KACd,GAAG;KACJ,CAAC,EAAE,KAAK;AAEX,QAAI,UAAU,SAAS,OAAO,KAAK,UAAU,MAAM,CAAC,SAAS,EAC3D,OAAM,yCACa;KAAE;KAAQ,MAAM;MAAE,UAAU;MAAiB,UAAU;MAAS;KAAE,MAAM;KAAW;KAAQ,cAAc;KAAM,GAAG;KAAQ,CAAC,EAAE,KAAK;SAIvJ,OAAM,yCACa;IAAE;IAAQ,MAAM;KAAE,UAAU;KAAiB,UAAU;KAAS;IAAE;IAAM;IAAQ,cAAc;IAAM,GAAG;IAAQ,CAAC,EAAE,KAAK;;EAG9I,OAA2D,SAA0B,UAAoH,EAAE,EAA4D;GACrQ,MAAM,EAAE,QAAQ,MAAM,cAAc,iBAAiB;GACrD,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,0CACa;IAAE;IAAQ,MAAM;KAAE,UAAU;KAAiB,UAAU;KAAS;IAAE;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;;EAEvQ,SAA6D,wBAAgC,UAAoH,EAAE,EAA8D;GAC/Q,MAAM,EAAE,QAAQ,MAAM,cAAc,iBAAiB;GACrD,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,2CACc;IACjB;IACA,MAAM;KAAE,UAAU;KAAiB,2BAA2B;KAAwB;IACtF;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,WAA+D,SAA+M;GAC5Q,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;GAC3D,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,6CACgB;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;;EAE7P,SAA6D,SAA2M;GACtQ,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;GAC3D,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,2CACc;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;;EAE3P,YAAgE,SAAiN;GAC/Q,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;GAC3D,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,8CACiB;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;;EAE/P"}
|
|
1
|
+
{"version":3,"file":"assets.cjs","names":["ClientError","resolveSpaceId"],"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":";;;;;;AAqDA,eAAe,WACb,gBACA,MACA,UACe;AACf,KAAI,CAAC,eAAe,YAAY,CAAC,eAAe,OAC9C,OAAM,IAAIA,0BAAY,uDAAuD;EAC3E,QAAQ;EACR,YAAY;EACZ,MAAM;EACP,CAAC;CAEJ,MAAM,WAAW,IAAI,UAAU;AAC/B,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,eAAe,OAAO,CAC9D,UAAS,OAAO,KAAK,MAAgB;CAEvC,MAAM,cAAe,eAAe,OAAO,mBAA0C;CACrF,MAAM,OAAO,gBAAgB,OAAO,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAClF,UAAS,OAAO,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC,CAAC;CAC1E,MAAM,WAAW,MAAM,MAAM,eAAe,UAAU;EAAE,QAAQ;EAAQ,MAAM;EAAU,CAAC;AACzF,KAAI,CAAC,SAAS,GACZ,OAAM,IAAIA,0BAAY,iCAAiC,SAAS,cAAc;EAC5E,QAAQ,SAAS;EACjB,YAAY,SAAS;EACrB,MAAM;EACP,CAAC;;AAIN,MAAM,oBAAoB,UACxB,OAAO,OAAO,SAAS,EAAE,CAAC,CAAC,MAAK,MAAK,MAAM,UAAa,MAAM,KAAK;AAErE,SAAgB,qBAAkE,MAA6C;CAC7H,MAAM,EAAE,QAAQ,SAAS,gBAAgB;CACzC,MAAM,cAAc,SAAuCC,8BAAe,SAAS,KAAK;AAExF,QAAO;EACL,KAAyD,UAAqJ,EAAE,EAAwD;GACtQ,MAAM,EAAE,OAAO,QAAQ,MAAM,cAAc,iBAAiB;GAC5D,MAAM,kBAAkB,WAAW,KAAK;AAExC,UAAO,6CACW;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;;EASzP,mBAAuE,SAAmN;GACxR,MAAM,EAAE,OAAO,QAAQ,MAAM,cAAc,iBAAiB;GAC5D,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,8CACY;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;;EAM1P,MAAM,OAAO,SAA0J;GACrK,MAAM,EAAE,MAAM,MAAM,QAAQ,MAAM,iBAAiB;GACnD,MAAM,EAAE,gBAAgB,GAAG,SAAS;GACpC,MAAM,kBAAkB,WAAW,KAAK;GACxC,MAAM,SAAS,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAEtG,MAAM,aAAa,MAAM,8CACN;IAAE;IAAQ,MAAM,EAAE,UAAU,iBAAiB;IAAE,OAAO;KAAE,UAAU;KAAgB,GAAG;KAAM;IAAE;IAAQ,cAAc;IAAM,GAAG;IAAQ,CAAC,EAAE,KAAK;AAE/J,OAAI,CAAC,WAAW,KAAK,GACnB,OAAM,IAAI,MAAM,sCAAsC;AAGxD,SAAM,WAAW,WAAW,MAAM,MAAM,eAAe;AAEvD,SAAM,oDACmB;IACrB;IACA,MAAM;KAAE,UAAU;KAAiB,IAAI,OAAO,WAAW,KAAK,GAAG;KAAE;IACnE;IACA,cAAc;IACd,GAAG;IACJ,CAAC,EAAE,KAAK;AAKX,WAHkB,MAAM,2CACR;IAAE;IAAQ,MAAM;KAAE,UAAU;KAAiB,IAAI,OAAO,WAAW,KAAK,GAAG;KAAE;IAAE;IAAQ,cAAc;IAAM,GAAG;IAAQ,CAAC,EAAE,KAAK,EAE7H;;EAMnB,MAAM,OAAO,SAAmJ;GAC9J,MAAM,EAAE,MAAM,MAAM,QAAQ,MAAM,iBAAiB;GACnD,MAAM,kBAAkB,WAAW,KAAK;GACxC,MAAM,SAAS,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAEtG,MAAM,EAAE,gBAAgB,iBAAiB,YAAY,MAAM,iBAAiB,QAAQ,GAAG,iBAAiB;GACxG,MAAM,QAAQ,MAAM,KAAK,OAAO;IAC9B,MAAM;KAAE;KAAgB;KAAiB;KAAY;KAAM;KAAiB;KAAQ;IACpF;IACA;IACA,MAAM,EAAE,UAAU,iBAAiB;IACnC;IACD,CAAC;AAGF,OADoB,OAAO,OAAO,aAAa,CAAC,MAAK,MAAK,MAAM,UAAa,MAAM,KAAK,EACvE;AACf,UAAM,8CACa;KACf;KACA,MAAM;MAAE,UAAU;MAAiB,IAAI,MAAM;MAAK;KAClD,MAAM,EAAE,OAAO,cAAc;KAC7B;KACA,cAAc;KACd,GAAG;KACJ,CAAC,EAAE,KAAK;AAGX,YAFsB,MAAM,2CACZ;KAAE;KAAQ,MAAM;MAAE,UAAU;MAAiB,IAAI,MAAM;MAAK;KAAE;KAAQ,cAAc;KAAM,GAAG;KAAQ,CAAC,EAAE,KAAK,EACxG;;AAGvB,UAAO;;EAET,IAAwD,SAAiB,UAAoH,EAAE,EAA8D;GAC3P,MAAM,EAAE,QAAQ,MAAM,cAAc,iBAAiB;GACrD,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,2CACS;IAAE;IAAQ,MAAM;KAAE,UAAU;KAAiB,IAAI;KAAS;IAAE;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;;EAO7P,MAAM,OACJ,SACA,SAIe;GACf,MAAM,EAAE,MAAM,MAAM,QAAQ,MAAM,iBAAiB;GACnD,MAAM,kBAAkB,WAAW,KAAK;GACxC,MAAM,SAAS,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;AAEtG,OAAI,SAAS,QAAW;IACtB,MAAM,EAAE,gBAAgB,GAAG,cAAc;IACzC,MAAM,aAAa,MAAM,8CACN;KACf;KACA,MAAM,EAAE,UAAU,iBAAiB;KACnC,OAAO,EAAE,UAAU,gBAAgB;KACnC;KACA,cAAc;KACd,GAAG;KACJ,CAAC,EAAE,KAAK;AAEX,QAAI,CAAC,WAAW,KAAK,GACnB,OAAM,IAAI,MAAM,sCAAsC;AAGxD,UAAM,WAAW,WAAW,MAAM,MAAM,eAAe;AAEvD,UAAM,oDACmB;KACrB;KACA,MAAM;MAAE,UAAU;MAAiB,IAAI,OAAO,WAAW,KAAK,GAAG;MAAE;KACnE;KACA,cAAc;KACd,GAAG;KACJ,CAAC,EAAE,KAAK;AAEX,QAAI,iBAAiB,UAAU,MAAM,CACnC,OAAM,8CACa;KAAE;KAAQ,MAAM;MAAE,UAAU;MAAiB,IAAI;MAAS;KAAE,MAAM;KAAW;KAAQ,cAAc;KAAM,GAAG;KAAQ,CAAC,EAAE,KAAK;SAIjJ,OAAM,8CACa;IAAE;IAAQ,MAAM;KAAE,UAAU;KAAiB,IAAI;KAAS;IAAE;IAAM;IAAQ,cAAc;IAAM,GAAG;IAAQ,CAAC,EAAE,KAAK;;EAGxI,OAA2D,SAAiB,UAAoH,EAAE,EAAiE;GACjQ,MAAM,EAAE,QAAQ,MAAM,cAAc,iBAAiB;GACrD,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,8CACY;IAAE;IAAQ,MAAM;KAAE,UAAU;KAAiB,IAAI;KAAS;IAAE;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;;EAEhQ,SAA6D,SAAiB,UAAoH,EAAE,EAAuE;GACzQ,MAAM,EAAE,QAAQ,MAAM,cAAc,iBAAiB;GACrD,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,oDACkB;IACrB;IACA,MAAM;KAAE,UAAU;KAAiB,IAAI;KAAS;IAChD;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;;EAGrB,WAA+D,SAA6N;GAC1R,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;GAC3D,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,oDACkB;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;;EAG/P,SAA6D,SAA2N;GACtR,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;GAC3D,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,mDACiB;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;;EAE9P,YAAgE,SAA6N;GAC3R,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;GAC3D,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,oDACkB;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;;EAY/P,gBACE,SACA,SAC2C;GAC3C,MAAM,EAAE,OAAO,QAAQ,MAAM,cAAc,iBAAiB;GAC5D,MAAM,kBAAkB,WAAW,KAAK;AACxC,UAAO,kBACL,OAAO,KAAK;IACV,KAAK;IACL,MAAM;KAAE,UAAU;KAAiB,UAAU;KAAS;IACtD;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;;EAEtB"}
|
|
@@ -1,37 +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
|
|
4
|
-
type AssetListQuery = NonNullable<
|
|
5
|
+
type AssetListQuery = NonNullable<ListAssetsData['query']>;
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
-
* or `update()` alongside a file buffer.
|
|
7
|
+
* Return shape of `list()`.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* `
|
|
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.
|
|
14
22
|
*/
|
|
15
|
-
|
|
16
|
-
/** The desired filename for the asset (e.g. `"hero.png"`).
|
|
17
|
-
|
|
18
|
-
/** When set, the upload replaces the file of an existing asset with this ID. */
|
|
19
|
-
id?: AssetSignRequest['id'];
|
|
20
|
-
/** Place the asset in this folder. */
|
|
21
|
-
asset_folder_id?: AssetSignRequest['asset_folder_id'];
|
|
22
|
-
/** Mark the asset as private (inaccessible without a signed URL). */
|
|
23
|
-
is_private?: AssetSignRequest['is_private'];
|
|
24
|
-
/** Image dimensions in `"<width>x<height>"` format (e.g. `"400x500"`). */
|
|
25
|
-
size?: AssetSignRequest['size'];
|
|
26
|
-
/** Set to `1` to enable server-side upload validation. */
|
|
27
|
-
validate_upload?: AssetSignRequest['validate_upload'];
|
|
28
|
-
}
|
|
23
|
+
type AssetUploadRequest = {
|
|
24
|
+
/** The desired filename for the asset (e.g. `"hero.png"`). */short_filename: string;
|
|
25
|
+
} & Partial<Omit<NonNullable<CreateAssetData['query']>, 'filename'>>;
|
|
29
26
|
/**
|
|
30
|
-
* Input for `create()`. Combines upload fields
|
|
31
|
-
* `asset_folder_id`, etc.) with writable metadata (`alt`, `title`,
|
|
32
|
-
* `copyright`, etc.). The file buffer is passed separately.
|
|
27
|
+
* Input for `create()`. Combines upload fields with writable metadata.
|
|
33
28
|
*/
|
|
34
|
-
type AssetCreate =
|
|
29
|
+
type AssetCreate = AssetUploadRequest & NonNullable<UpdateAssetData['body']['asset']>;
|
|
35
30
|
//#endregion
|
|
36
|
-
export { AssetCreate, AssetListQuery, AssetUploadRequest };
|
|
31
|
+
export { AssetCreate, AssetListQuery, AssetUploadRequest, ListAssetsResult };
|
|
37
32
|
//# sourceMappingURL=assets.d.cts.map
|
|
@@ -1,36 +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
|
|
3
|
-
type AssetListQuery = NonNullable<
|
|
4
|
+
type AssetListQuery = NonNullable<ListAssetsData['query']>;
|
|
4
5
|
/**
|
|
5
|
-
*
|
|
6
|
-
* or `update()` alongside a file buffer.
|
|
6
|
+
* Return shape of `list()`.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* `
|
|
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.
|
|
13
21
|
*/
|
|
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
|
-
}
|
|
22
|
+
type AssetUploadRequest = {
|
|
23
|
+
/** The desired filename for the asset (e.g. `"hero.png"`). */short_filename: string;
|
|
24
|
+
} & Partial<Omit<NonNullable<CreateAssetData['query']>, 'filename'>>;
|
|
28
25
|
/**
|
|
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.
|
|
26
|
+
* Input for `create()`. Combines upload fields with writable metadata.
|
|
32
27
|
*/
|
|
33
|
-
type AssetCreate =
|
|
28
|
+
type AssetCreate = AssetUploadRequest & NonNullable<UpdateAssetData['body']['asset']>;
|
|
34
29
|
//#endregion
|
|
35
|
-
export { AssetCreate, AssetListQuery, AssetUploadRequest };
|
|
30
|
+
export { AssetCreate, AssetListQuery, AssetUploadRequest, ListAssetsResult };
|
|
36
31
|
//# sourceMappingURL=assets.d.mts.map
|