@storyblok/management-api-client 1.0.0-alpha.2 → 1.0.0-alpha.4

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.
Files changed (54) hide show
  1. package/dist/client.cjs +6 -0
  2. package/dist/client.cjs.map +1 -1
  3. package/dist/client.d.cts +133 -7
  4. package/dist/client.d.mts +133 -7
  5. package/dist/client.mjs +6 -0
  6. package/dist/client.mjs.map +1 -1
  7. package/dist/generated/mapi/_internal.gen.d.cts +1 -171
  8. package/dist/generated/mapi/_internal.gen.d.mts +1 -171
  9. package/dist/generated/mapi/types-aliased.gen.d.cts +171 -1
  10. package/dist/generated/mapi/types-aliased.gen.d.mts +171 -1
  11. package/dist/generated/types/block.d.cts +27 -8
  12. package/dist/generated/types/block.d.mts +27 -8
  13. package/dist/generated/types/field.d.cts +45 -17
  14. package/dist/generated/types/field.d.mts +45 -17
  15. package/dist/generated/types/mapi-story.d.cts +6 -6
  16. package/dist/generated/types/mapi-story.d.mts +6 -6
  17. package/dist/index.d.cts +6 -4
  18. package/dist/index.d.mts +6 -4
  19. package/dist/resources/assets.cjs +1 -0
  20. package/dist/resources/assets.cjs.map +1 -1
  21. package/dist/resources/assets.mjs +1 -1
  22. package/dist/resources/assets.mjs.map +1 -1
  23. package/dist/resources/components.cjs.map +1 -1
  24. package/dist/resources/components.d.cts +17 -17
  25. package/dist/resources/components.d.mts +17 -17
  26. package/dist/resources/components.mjs.map +1 -1
  27. package/dist/resources/shared-asset-folders.cjs +81 -0
  28. package/dist/resources/shared-asset-folders.cjs.map +1 -0
  29. package/dist/resources/shared-asset-folders.d.cts +41 -0
  30. package/dist/resources/shared-asset-folders.d.mts +41 -0
  31. package/dist/resources/shared-asset-folders.mjs +81 -0
  32. package/dist/resources/shared-asset-folders.mjs.map +1 -0
  33. package/dist/resources/shared-assets.cjs +197 -0
  34. package/dist/resources/shared-assets.cjs.map +1 -0
  35. package/dist/resources/shared-assets.d.cts +29 -0
  36. package/dist/resources/shared-assets.d.mts +28 -0
  37. package/dist/resources/shared-assets.mjs +197 -0
  38. package/dist/resources/shared-assets.mjs.map +1 -0
  39. package/dist/resources/shared-internal-tags.cjs +73 -0
  40. package/dist/resources/shared-internal-tags.cjs.map +1 -0
  41. package/dist/resources/shared-internal-tags.d.cts +32 -0
  42. package/dist/resources/shared-internal-tags.d.mts +32 -0
  43. package/dist/resources/shared-internal-tags.mjs +73 -0
  44. package/dist/resources/shared-internal-tags.mjs.map +1 -0
  45. package/dist/resources/stories.cjs.map +1 -1
  46. package/dist/resources/stories.d.cts +26 -26
  47. package/dist/resources/stories.d.mts +26 -26
  48. package/dist/resources/stories.mjs.map +1 -1
  49. package/package.json +3 -3
  50. package/playground/integration-tests/test/specs/mapi-round-trip.spec.e2e.ts +30 -40
  51. package/playground/integration-tests/test/types/components.test-d.ts +7 -46
  52. package/playground/integration-tests/test/types/resources.test-d.ts +0 -152
  53. package/playground/integration-tests/test/types/stories.test-d.ts +47 -43
  54. package/test/GUIDE.md +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-asset-folders.cjs","names":["resolveSpaceId"],"sources":["../../src/resources/shared-asset-folders.ts"],"sourcesContent":["import type { ApiResponse, FetchOptions, MapiResourceDeps } from '../client';\nimport { resolveSpaceId, type SpaceIdPathOverride } from './shared';\n\nexport type AccessLevel = 'read' | 'write';\n\nexport interface AssetFolderAccess {\n space_id: number;\n access_level: AccessLevel;\n}\n\n/**\n * A shared (organization-level) asset folder. Top-level folders\n * (`parent_id === null`) are \"libraries\"; per-space access is exposed via\n * `asset_folder_access`. Not part of the generated SDK — these endpoints are\n * issued as raw `client.*` calls.\n */\nexport interface SharedAssetFolder {\n id: number;\n name: string;\n parent_id: number | null;\n uuid: string;\n parent_uuid: string | null;\n description?: string | null;\n color?: string | null;\n regions?: string[];\n asset_folder_access?: AssetFolderAccess[];\n}\n\nexport interface SharedAssetFolderCreate {\n name: string;\n parent_id?: number | null;\n description?: string | null;\n color?: string | null;\n regions?: string[];\n asset_folder_access?: AssetFolderAccess[];\n}\n\nexport type SharedAssetFolderUpdate = Partial<SharedAssetFolderCreate>;\n\nexport interface SharedAssetFolderListResponse {\n shared_asset_folders: SharedAssetFolder[];\n}\n\nexport interface SharedAssetFolderGetResponse {\n shared_asset_folder: SharedAssetFolder;\n}\n\nexport function createSharedAssetFoldersResource<DefaultThrowOnError extends boolean = false>(deps: MapiResourceDeps<DefaultThrowOnError>) {\n const { client, spaceId, wrapRequest } = deps;\n const getSpaceId = (path?: SpaceIdPathOverride['path']) => resolveSpaceId(spaceId, path);\n const kyOpts = (fetchOptions?: FetchOptions) =>\n fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {};\n const maybeThrow = (throwOnError?: boolean) => (throwOnError === undefined ? {} : { throwOnError });\n\n return {\n list<ThrowOnError extends boolean = false>(options: { query?: { search?: string; with_parent?: string; by_ids?: string }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<SharedAssetFolderListResponse, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<SharedAssetFolderListResponse, ThrowOnError>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_asset_folders', path: { space_id: getSpaceId(path) }, query, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n get<ThrowOnError extends boolean = false>(folderId: number | string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<SharedAssetFolderGetResponse, ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<SharedAssetFolderGetResponse, ThrowOnError>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_asset_folders/{asset_folder_id}', path: { space_id: getSpaceId(path), asset_folder_id: folderId }, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n create<ThrowOnError extends boolean = false>(options: { body: { shared_asset_folder: SharedAssetFolderCreate }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<SharedAssetFolderGetResponse, ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<SharedAssetFolderGetResponse, ThrowOnError>(() =>\n client.post({ url: '/v1/spaces/{space_id}/shared_asset_folders', path: { space_id: getSpaceId(path) }, body, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n update<ThrowOnError extends boolean = false>(folderId: number | string, options: { body: { shared_asset_folder: SharedAssetFolderUpdate }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<void, ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<void, ThrowOnError>(() =>\n client.put({ url: '/v1/spaces/{space_id}/shared_asset_folders/{asset_folder_id}', path: { space_id: getSpaceId(path), asset_folder_id: folderId }, body, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n delete<ThrowOnError extends boolean = false>(folderId: number | string, options: { query?: { recursive?: boolean }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<void, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<void, ThrowOnError>(() =>\n client.delete({ url: '/v1/spaces/{space_id}/shared_asset_folders/{asset_folder_id}', path: { space_id: getSpaceId(path), asset_folder_id: folderId }, query, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n };\n}\n"],"mappings":";;;AA+CA,SAAgB,iCAA8E,MAA6C;CACzI,MAAM,EAAE,QAAQ,SAAS,gBAAgB;CACzC,MAAM,cAAc,SAAuCA,8BAAe,SAAS,KAAK;CACxF,MAAM,UAAU,iBACd,eAAe,EAAE,WAAW;EAAE,GAAG,OAAO,WAAW,CAAC;EAAW,GAAG;EAAc,EAAE,GAAG,EAAE;CACzF,MAAM,cAAc,iBAA4B,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;AAElG,QAAO;EACL,KAA2C,UAAwL,EAAE,EAAqE;GACxS,MAAM,EAAE,OAAO,QAAQ,MAAM,cAAc,iBAAiB;AAC5D,UAAO,kBACL,OAAO,IAAI;IAAE,KAAK;IAA8C,MAAM,EAAE,UAAU,WAAW,KAAK,EAAE;IAAE;IAAO;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAE/L,IAA0C,UAA2B,UAAoH,EAAE,EAAoE;GAC7P,MAAM,EAAE,QAAQ,MAAM,cAAc,iBAAiB;AACrD,UAAO,kBACL,OAAO,IAAI;IAAE,KAAK;IAAgE,MAAM;KAAE,UAAU,WAAW,KAAK;KAAE,iBAAiB;KAAU;IAAE;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAErO,OAA6C,SAA6O;GACxR,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;AAC3D,UAAO,kBACL,OAAO,KAAK;IAAE,KAAK;IAA8C,MAAM,EAAE,UAAU,WAAW,KAAK,EAAE;IAAE;IAAM;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAE/L,OAA6C,UAA2B,SAAqN;GAC3R,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;AAC3D,UAAO,kBACL,OAAO,IAAI;IAAE,KAAK;IAAgE,MAAM;KAAE,UAAU,WAAW,KAAK;KAAE,iBAAiB;KAAU;IAAE;IAAM;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAE3O,OAA6C,UAA2B,UAAqJ,EAAE,EAA4C;GACzQ,MAAM,EAAE,OAAO,QAAQ,MAAM,cAAc,iBAAiB;AAC5D,UAAO,kBACL,OAAO,OAAO;IAAE,KAAK;IAAgE,MAAM;KAAE,UAAU,WAAW,KAAK;KAAE,iBAAiB;KAAU;IAAE;IAAO;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAEhP"}
@@ -0,0 +1,41 @@
1
+ //#region src/resources/shared-asset-folders.d.ts
2
+ type AccessLevel = 'read' | 'write';
3
+ interface AssetFolderAccess {
4
+ space_id: number;
5
+ access_level: AccessLevel;
6
+ }
7
+ /**
8
+ * A shared (organization-level) asset folder. Top-level folders
9
+ * (`parent_id === null`) are "libraries"; per-space access is exposed via
10
+ * `asset_folder_access`. Not part of the generated SDK — these endpoints are
11
+ * issued as raw `client.*` calls.
12
+ */
13
+ interface SharedAssetFolder {
14
+ id: number;
15
+ name: string;
16
+ parent_id: number | null;
17
+ uuid: string;
18
+ parent_uuid: string | null;
19
+ description?: string | null;
20
+ color?: string | null;
21
+ regions?: string[];
22
+ asset_folder_access?: AssetFolderAccess[];
23
+ }
24
+ interface SharedAssetFolderCreate {
25
+ name: string;
26
+ parent_id?: number | null;
27
+ description?: string | null;
28
+ color?: string | null;
29
+ regions?: string[];
30
+ asset_folder_access?: AssetFolderAccess[];
31
+ }
32
+ type SharedAssetFolderUpdate = Partial<SharedAssetFolderCreate>;
33
+ interface SharedAssetFolderListResponse {
34
+ shared_asset_folders: SharedAssetFolder[];
35
+ }
36
+ interface SharedAssetFolderGetResponse {
37
+ shared_asset_folder: SharedAssetFolder;
38
+ }
39
+ //#endregion
40
+ export { AccessLevel, AssetFolderAccess, SharedAssetFolder, SharedAssetFolderCreate, SharedAssetFolderGetResponse, SharedAssetFolderListResponse, SharedAssetFolderUpdate };
41
+ //# sourceMappingURL=shared-asset-folders.d.cts.map
@@ -0,0 +1,41 @@
1
+ //#region src/resources/shared-asset-folders.d.ts
2
+ type AccessLevel = 'read' | 'write';
3
+ interface AssetFolderAccess {
4
+ space_id: number;
5
+ access_level: AccessLevel;
6
+ }
7
+ /**
8
+ * A shared (organization-level) asset folder. Top-level folders
9
+ * (`parent_id === null`) are "libraries"; per-space access is exposed via
10
+ * `asset_folder_access`. Not part of the generated SDK — these endpoints are
11
+ * issued as raw `client.*` calls.
12
+ */
13
+ interface SharedAssetFolder {
14
+ id: number;
15
+ name: string;
16
+ parent_id: number | null;
17
+ uuid: string;
18
+ parent_uuid: string | null;
19
+ description?: string | null;
20
+ color?: string | null;
21
+ regions?: string[];
22
+ asset_folder_access?: AssetFolderAccess[];
23
+ }
24
+ interface SharedAssetFolderCreate {
25
+ name: string;
26
+ parent_id?: number | null;
27
+ description?: string | null;
28
+ color?: string | null;
29
+ regions?: string[];
30
+ asset_folder_access?: AssetFolderAccess[];
31
+ }
32
+ type SharedAssetFolderUpdate = Partial<SharedAssetFolderCreate>;
33
+ interface SharedAssetFolderListResponse {
34
+ shared_asset_folders: SharedAssetFolder[];
35
+ }
36
+ interface SharedAssetFolderGetResponse {
37
+ shared_asset_folder: SharedAssetFolder;
38
+ }
39
+ //#endregion
40
+ export { AccessLevel, AssetFolderAccess, SharedAssetFolder, SharedAssetFolderCreate, SharedAssetFolderGetResponse, SharedAssetFolderListResponse, SharedAssetFolderUpdate };
41
+ //# sourceMappingURL=shared-asset-folders.d.mts.map
@@ -0,0 +1,81 @@
1
+ import { resolveSpaceId } from "./shared.mjs";
2
+
3
+ //#region src/resources/shared-asset-folders.ts
4
+ function createSharedAssetFoldersResource(deps) {
5
+ const { client, spaceId, wrapRequest } = deps;
6
+ const getSpaceId = (path) => resolveSpaceId(spaceId, path);
7
+ const kyOpts = (fetchOptions) => fetchOptions ? { kyOptions: {
8
+ ...client.getConfig().kyOptions,
9
+ ...fetchOptions
10
+ } } : {};
11
+ const maybeThrow = (throwOnError) => throwOnError === void 0 ? {} : { throwOnError };
12
+ return {
13
+ list(options = {}) {
14
+ const { query, signal, path, throwOnError, fetchOptions } = options;
15
+ return wrapRequest(() => client.get({
16
+ url: "/v1/spaces/{space_id}/shared_asset_folders",
17
+ path: { space_id: getSpaceId(path) },
18
+ query,
19
+ signal,
20
+ ...maybeThrow(throwOnError),
21
+ ...kyOpts(fetchOptions)
22
+ }), throwOnError);
23
+ },
24
+ get(folderId, options = {}) {
25
+ const { signal, path, throwOnError, fetchOptions } = options;
26
+ return wrapRequest(() => client.get({
27
+ url: "/v1/spaces/{space_id}/shared_asset_folders/{asset_folder_id}",
28
+ path: {
29
+ space_id: getSpaceId(path),
30
+ asset_folder_id: folderId
31
+ },
32
+ signal,
33
+ ...maybeThrow(throwOnError),
34
+ ...kyOpts(fetchOptions)
35
+ }), throwOnError);
36
+ },
37
+ create(options) {
38
+ const { body, signal, path, throwOnError, fetchOptions } = options;
39
+ return wrapRequest(() => client.post({
40
+ url: "/v1/spaces/{space_id}/shared_asset_folders",
41
+ path: { space_id: getSpaceId(path) },
42
+ body,
43
+ signal,
44
+ ...maybeThrow(throwOnError),
45
+ ...kyOpts(fetchOptions)
46
+ }), throwOnError);
47
+ },
48
+ update(folderId, options) {
49
+ const { body, signal, path, throwOnError, fetchOptions } = options;
50
+ return wrapRequest(() => client.put({
51
+ url: "/v1/spaces/{space_id}/shared_asset_folders/{asset_folder_id}",
52
+ path: {
53
+ space_id: getSpaceId(path),
54
+ asset_folder_id: folderId
55
+ },
56
+ body,
57
+ signal,
58
+ ...maybeThrow(throwOnError),
59
+ ...kyOpts(fetchOptions)
60
+ }), throwOnError);
61
+ },
62
+ delete(folderId, options = {}) {
63
+ const { query, signal, path, throwOnError, fetchOptions } = options;
64
+ return wrapRequest(() => client.delete({
65
+ url: "/v1/spaces/{space_id}/shared_asset_folders/{asset_folder_id}",
66
+ path: {
67
+ space_id: getSpaceId(path),
68
+ asset_folder_id: folderId
69
+ },
70
+ query,
71
+ signal,
72
+ ...maybeThrow(throwOnError),
73
+ ...kyOpts(fetchOptions)
74
+ }), throwOnError);
75
+ }
76
+ };
77
+ }
78
+
79
+ //#endregion
80
+ export { createSharedAssetFoldersResource };
81
+ //# sourceMappingURL=shared-asset-folders.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-asset-folders.mjs","names":[],"sources":["../../src/resources/shared-asset-folders.ts"],"sourcesContent":["import type { ApiResponse, FetchOptions, MapiResourceDeps } from '../client';\nimport { resolveSpaceId, type SpaceIdPathOverride } from './shared';\n\nexport type AccessLevel = 'read' | 'write';\n\nexport interface AssetFolderAccess {\n space_id: number;\n access_level: AccessLevel;\n}\n\n/**\n * A shared (organization-level) asset folder. Top-level folders\n * (`parent_id === null`) are \"libraries\"; per-space access is exposed via\n * `asset_folder_access`. Not part of the generated SDK — these endpoints are\n * issued as raw `client.*` calls.\n */\nexport interface SharedAssetFolder {\n id: number;\n name: string;\n parent_id: number | null;\n uuid: string;\n parent_uuid: string | null;\n description?: string | null;\n color?: string | null;\n regions?: string[];\n asset_folder_access?: AssetFolderAccess[];\n}\n\nexport interface SharedAssetFolderCreate {\n name: string;\n parent_id?: number | null;\n description?: string | null;\n color?: string | null;\n regions?: string[];\n asset_folder_access?: AssetFolderAccess[];\n}\n\nexport type SharedAssetFolderUpdate = Partial<SharedAssetFolderCreate>;\n\nexport interface SharedAssetFolderListResponse {\n shared_asset_folders: SharedAssetFolder[];\n}\n\nexport interface SharedAssetFolderGetResponse {\n shared_asset_folder: SharedAssetFolder;\n}\n\nexport function createSharedAssetFoldersResource<DefaultThrowOnError extends boolean = false>(deps: MapiResourceDeps<DefaultThrowOnError>) {\n const { client, spaceId, wrapRequest } = deps;\n const getSpaceId = (path?: SpaceIdPathOverride['path']) => resolveSpaceId(spaceId, path);\n const kyOpts = (fetchOptions?: FetchOptions) =>\n fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {};\n const maybeThrow = (throwOnError?: boolean) => (throwOnError === undefined ? {} : { throwOnError });\n\n return {\n list<ThrowOnError extends boolean = false>(options: { query?: { search?: string; with_parent?: string; by_ids?: string }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<SharedAssetFolderListResponse, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<SharedAssetFolderListResponse, ThrowOnError>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_asset_folders', path: { space_id: getSpaceId(path) }, query, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n get<ThrowOnError extends boolean = false>(folderId: number | string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<SharedAssetFolderGetResponse, ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<SharedAssetFolderGetResponse, ThrowOnError>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_asset_folders/{asset_folder_id}', path: { space_id: getSpaceId(path), asset_folder_id: folderId }, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n create<ThrowOnError extends boolean = false>(options: { body: { shared_asset_folder: SharedAssetFolderCreate }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<SharedAssetFolderGetResponse, ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<SharedAssetFolderGetResponse, ThrowOnError>(() =>\n client.post({ url: '/v1/spaces/{space_id}/shared_asset_folders', path: { space_id: getSpaceId(path) }, body, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n update<ThrowOnError extends boolean = false>(folderId: number | string, options: { body: { shared_asset_folder: SharedAssetFolderUpdate }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<void, ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<void, ThrowOnError>(() =>\n client.put({ url: '/v1/spaces/{space_id}/shared_asset_folders/{asset_folder_id}', path: { space_id: getSpaceId(path), asset_folder_id: folderId }, body, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n delete<ThrowOnError extends boolean = false>(folderId: number | string, options: { query?: { recursive?: boolean }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<void, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<void, ThrowOnError>(() =>\n client.delete({ url: '/v1/spaces/{space_id}/shared_asset_folders/{asset_folder_id}', path: { space_id: getSpaceId(path), asset_folder_id: folderId }, query, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n };\n}\n"],"mappings":";;;AA+CA,SAAgB,iCAA8E,MAA6C;CACzI,MAAM,EAAE,QAAQ,SAAS,gBAAgB;CACzC,MAAM,cAAc,SAAuC,eAAe,SAAS,KAAK;CACxF,MAAM,UAAU,iBACd,eAAe,EAAE,WAAW;EAAE,GAAG,OAAO,WAAW,CAAC;EAAW,GAAG;EAAc,EAAE,GAAG,EAAE;CACzF,MAAM,cAAc,iBAA4B,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;AAElG,QAAO;EACL,KAA2C,UAAwL,EAAE,EAAqE;GACxS,MAAM,EAAE,OAAO,QAAQ,MAAM,cAAc,iBAAiB;AAC5D,UAAO,kBACL,OAAO,IAAI;IAAE,KAAK;IAA8C,MAAM,EAAE,UAAU,WAAW,KAAK,EAAE;IAAE;IAAO;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAE/L,IAA0C,UAA2B,UAAoH,EAAE,EAAoE;GAC7P,MAAM,EAAE,QAAQ,MAAM,cAAc,iBAAiB;AACrD,UAAO,kBACL,OAAO,IAAI;IAAE,KAAK;IAAgE,MAAM;KAAE,UAAU,WAAW,KAAK;KAAE,iBAAiB;KAAU;IAAE;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAErO,OAA6C,SAA6O;GACxR,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;AAC3D,UAAO,kBACL,OAAO,KAAK;IAAE,KAAK;IAA8C,MAAM,EAAE,UAAU,WAAW,KAAK,EAAE;IAAE;IAAM;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAE/L,OAA6C,UAA2B,SAAqN;GAC3R,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;AAC3D,UAAO,kBACL,OAAO,IAAI;IAAE,KAAK;IAAgE,MAAM;KAAE,UAAU,WAAW,KAAK;KAAE,iBAAiB;KAAU;IAAE;IAAM;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAE3O,OAA6C,UAA2B,UAAqJ,EAAE,EAA4C;GACzQ,MAAM,EAAE,OAAO,QAAQ,MAAM,cAAc,iBAAiB;AAC5D,UAAO,kBACL,OAAO,OAAO;IAAE,KAAK;IAAgE,MAAM;KAAE,UAAU,WAAW,KAAK;KAAE,iBAAiB;KAAU;IAAE;IAAO;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAEhP"}
@@ -0,0 +1,197 @@
1
+ const require_shared = require('./shared.cjs');
2
+ const require_assets = require('./assets.cjs');
3
+
4
+ //#region src/resources/shared-assets.ts
5
+ /**
6
+ * Shared (organization-level) assets. These endpoints are not part of the
7
+ * generated SDK, so methods issue raw `client.*` calls. The active space must
8
+ * have read (list/get) or write (create/update/delete) access to the library.
9
+ */
10
+ function createSharedAssetsResource(deps) {
11
+ const { client, spaceId, wrapRequest } = deps;
12
+ const getSpaceId = (path) => require_shared.resolveSpaceId(spaceId, path);
13
+ const kyOpts = (fetchOptions) => fetchOptions ? { kyOptions: {
14
+ ...client.getConfig().kyOptions,
15
+ ...fetchOptions
16
+ } } : {};
17
+ const maybeThrow = (throwOnError) => throwOnError === void 0 ? {} : { throwOnError };
18
+ return {
19
+ list(options = {}) {
20
+ const { query, signal, path, throwOnError, fetchOptions } = options;
21
+ return wrapRequest(() => client.get({
22
+ url: "/v1/spaces/{space_id}/shared_assets",
23
+ path: { space_id: getSpaceId(path) },
24
+ query: query && { ...query },
25
+ signal,
26
+ ...maybeThrow(throwOnError),
27
+ ...kyOpts(fetchOptions)
28
+ }), throwOnError);
29
+ },
30
+ get(assetId, options = {}) {
31
+ const { signal, path, throwOnError, fetchOptions } = options;
32
+ return wrapRequest(() => client.get({
33
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
34
+ path: {
35
+ space_id: getSpaceId(path),
36
+ asset_id: assetId
37
+ },
38
+ signal,
39
+ ...maybeThrow(throwOnError),
40
+ ...kyOpts(fetchOptions)
41
+ }), throwOnError);
42
+ },
43
+ async upload(options) {
44
+ const { body, file, signal, path, fetchOptions } = options;
45
+ const { short_filename, ...rest } = body;
46
+ const resolvedSpaceId = getSpaceId(path);
47
+ const opts = kyOpts(fetchOptions);
48
+ const signResult = await wrapRequest(() => client.post({
49
+ url: "/v1/spaces/{space_id}/shared_assets",
50
+ path: { space_id: resolvedSpaceId },
51
+ query: {
52
+ filename: short_filename,
53
+ ...rest
54
+ },
55
+ signal,
56
+ throwOnError: true,
57
+ ...opts
58
+ }), true);
59
+ if (!signResult.data.id) throw new Error("Invalid signed response: missing id");
60
+ const assetId = signResult.data.id;
61
+ await require_assets.uploadToS3(signResult.data, file, short_filename);
62
+ await wrapRequest(() => client.get({
63
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload",
64
+ path: {
65
+ space_id: resolvedSpaceId,
66
+ asset_id: assetId
67
+ },
68
+ signal,
69
+ throwOnError: true,
70
+ ...opts
71
+ }), true);
72
+ return (await wrapRequest(() => client.get({
73
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
74
+ path: {
75
+ space_id: resolvedSpaceId,
76
+ asset_id: assetId
77
+ },
78
+ signal,
79
+ throwOnError: true,
80
+ ...opts
81
+ }), true)).data;
82
+ },
83
+ async create(options) {
84
+ const { body, file, signal, path, fetchOptions } = options;
85
+ const resolvedSpaceId = getSpaceId(path);
86
+ const opts = kyOpts(fetchOptions);
87
+ const asset = await this.upload({
88
+ body: {
89
+ short_filename: body.short_filename,
90
+ asset_folder_id: body.asset_folder_id,
91
+ is_private: body.is_private
92
+ },
93
+ file,
94
+ signal,
95
+ path: { space_id: resolvedSpaceId },
96
+ fetchOptions
97
+ });
98
+ const { short_filename, asset_folder_id, is_private, size, validate_upload, ...metadata } = body;
99
+ if (Object.values(metadata).some((v) => v !== void 0 && v !== null)) {
100
+ await wrapRequest(() => client.put({
101
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
102
+ path: {
103
+ space_id: resolvedSpaceId,
104
+ asset_id: asset.id
105
+ },
106
+ body: { asset: {
107
+ ...metadata,
108
+ asset_folder_id
109
+ } },
110
+ signal,
111
+ throwOnError: true,
112
+ ...opts
113
+ }), true);
114
+ return (await wrapRequest(() => client.get({
115
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
116
+ path: {
117
+ space_id: resolvedSpaceId,
118
+ asset_id: asset.id
119
+ },
120
+ signal,
121
+ throwOnError: true,
122
+ ...opts
123
+ }), true)).data;
124
+ }
125
+ return asset;
126
+ },
127
+ async update(assetId, options) {
128
+ const { body, file, signal, path, fetchOptions } = options;
129
+ const resolvedSpaceId = getSpaceId(path);
130
+ const opts = kyOpts(fetchOptions);
131
+ if (file !== void 0) {
132
+ const { short_filename, ...assetBody } = body;
133
+ const signResult = await wrapRequest(() => client.post({
134
+ url: "/v1/spaces/{space_id}/shared_assets",
135
+ path: { space_id: resolvedSpaceId },
136
+ query: {
137
+ filename: short_filename,
138
+ id: Number(assetId)
139
+ },
140
+ signal,
141
+ throwOnError: true,
142
+ ...opts
143
+ }), true);
144
+ if (!signResult.data.id) throw new Error("Invalid signed response: missing id");
145
+ await require_assets.uploadToS3(signResult.data, file, short_filename);
146
+ await wrapRequest(() => client.get({
147
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload",
148
+ path: {
149
+ space_id: resolvedSpaceId,
150
+ asset_id: signResult.data.id
151
+ },
152
+ signal,
153
+ throwOnError: true,
154
+ ...opts
155
+ }), true);
156
+ if (assetBody.asset && Object.keys(assetBody.asset).length > 0) await wrapRequest(() => client.put({
157
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
158
+ path: {
159
+ space_id: resolvedSpaceId,
160
+ asset_id: assetId
161
+ },
162
+ body: assetBody,
163
+ signal,
164
+ throwOnError: true,
165
+ ...opts
166
+ }), true);
167
+ } else await wrapRequest(() => client.put({
168
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
169
+ path: {
170
+ space_id: resolvedSpaceId,
171
+ asset_id: assetId
172
+ },
173
+ body,
174
+ signal,
175
+ throwOnError: true,
176
+ ...opts
177
+ }), true);
178
+ },
179
+ delete(assetId, options = {}) {
180
+ const { signal, path, throwOnError, fetchOptions } = options;
181
+ return wrapRequest(() => client.delete({
182
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
183
+ path: {
184
+ space_id: getSpaceId(path),
185
+ asset_id: assetId
186
+ },
187
+ signal,
188
+ ...maybeThrow(throwOnError),
189
+ ...kyOpts(fetchOptions)
190
+ }), throwOnError);
191
+ }
192
+ };
193
+ }
194
+
195
+ //#endregion
196
+ exports.createSharedAssetsResource = createSharedAssetsResource;
197
+ //# sourceMappingURL=shared-assets.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-assets.cjs","names":["resolveSpaceId","uploadToS3"],"sources":["../../src/resources/shared-assets.ts"],"sourcesContent":["import type { Asset, AssetUpdate } from '../generated/mapi/types-aliased.gen';\nimport type { ApiResponse, FetchOptions, MapiResourceDeps } from '../client';\nimport { uploadToS3 } from './assets';\nimport { resolveSpaceId, type SpaceIdPathOverride } from './shared';\n\n/**\n * Fields for initiating a shared (org-level) asset upload. Mirrors the local\n * asset upload request; `short_filename` maps to the server's `filename`.\n */\nexport interface SharedAssetUploadRequest {\n short_filename: string;\n id?: number;\n asset_folder_id?: number;\n is_private?: boolean;\n size?: string;\n validate_upload?: boolean;\n}\n\nexport type SharedAssetCreate = AssetUpdate & SharedAssetUploadRequest;\n\nexport interface SharedAssetListQuery {\n in_folder?: number;\n page?: number;\n per_page?: number;\n search?: string;\n sort_by?: string;\n}\n\nexport interface SharedAssetListResponse {\n assets: Asset[];\n}\n\ninterface SignResponse {\n id?: number;\n post_url?: string;\n fields?: Record<string, unknown>;\n}\n\n/**\n * Shared (organization-level) assets. These endpoints are not part of the\n * generated SDK, so methods issue raw `client.*` calls. The active space must\n * have read (list/get) or write (create/update/delete) access to the library.\n */\nexport function createSharedAssetsResource<DefaultThrowOnError extends boolean = false>(deps: MapiResourceDeps<DefaultThrowOnError>) {\n const { client, spaceId, wrapRequest } = deps;\n const getSpaceId = (path?: SpaceIdPathOverride['path']) => resolveSpaceId(spaceId, path);\n const kyOpts = (fetchOptions?: FetchOptions) =>\n fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {};\n const maybeThrow = (throwOnError?: boolean) => (throwOnError === undefined ? {} : { throwOnError });\n\n return {\n list<ThrowOnError extends boolean = false>(options: { query?: SharedAssetListQuery; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<SharedAssetListResponse, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<SharedAssetListResponse, ThrowOnError>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets', path: { space_id: getSpaceId(path) }, query: query && { ...query }, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n get<ThrowOnError extends boolean = false>(assetId: number | string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<Asset, ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<Asset, ThrowOnError>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: getSpaceId(path), asset_id: assetId }, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n /** Uploads a file to a shared library (sign → S3 → finish_upload → get). */\n async upload(options: { body: SharedAssetUploadRequest; 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 opts = kyOpts(fetchOptions);\n\n const signResult = await wrapRequest<SignResponse, true>(() =>\n client.post({ url: '/v1/spaces/{space_id}/shared_assets', path: { space_id: resolvedSpaceId }, query: { filename: short_filename, ...rest }, signal, throwOnError: true, ...opts }), true);\n if (!signResult.data.id) {\n throw new Error('Invalid signed response: missing id');\n }\n const assetId = signResult.data.id;\n\n await uploadToS3(signResult.data, file, short_filename);\n\n await wrapRequest<unknown, true>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload', path: { space_id: resolvedSpaceId, asset_id: assetId }, signal, throwOnError: true, ...opts }), true);\n\n const getResult = await wrapRequest<Asset, true>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: assetId }, signal, throwOnError: true, ...opts }), true);\n return getResult.data;\n },\n /** Creates a shared asset (upload + metadata). Returns the resulting `Asset`. */\n async create(options: { body: SharedAssetCreate; 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 opts = kyOpts(fetchOptions);\n\n const asset = await this.upload({\n body: { short_filename: body.short_filename, asset_folder_id: body.asset_folder_id, is_private: body.is_private },\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<void, true>(() =>\n client.put({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: asset.id }, body: { asset: { ...metadata, asset_folder_id } }, signal, throwOnError: true, ...opts }), true);\n const updated = await wrapRequest<Asset, true>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: asset.id }, signal, throwOnError: true, ...opts }), true);\n return updated.data;\n }\n return asset;\n },\n /** Updates a shared asset's metadata, optionally replacing the file. */\n async update(assetId: number | string, options: ({ body: { asset: AssetUpdate }; file?: undefined } | { body: { asset: AssetUpdate; short_filename: string }; file: Blob | ArrayBuffer }) & { signal?: AbortSignal; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<void> {\n const { body, file, signal, path, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n const opts = kyOpts(fetchOptions);\n\n if (file !== undefined) {\n const { short_filename, ...assetBody } = body as { short_filename: string; asset: AssetUpdate };\n const signResult = await wrapRequest<SignResponse, true>(() =>\n client.post({ url: '/v1/spaces/{space_id}/shared_assets', path: { space_id: resolvedSpaceId }, query: { filename: short_filename, id: Number(assetId) }, signal, throwOnError: true, ...opts }), true);\n if (!signResult.data.id) {\n throw new Error('Invalid signed response: missing id');\n }\n await uploadToS3(signResult.data, file, short_filename);\n await wrapRequest<unknown, true>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload', path: { space_id: resolvedSpaceId, asset_id: signResult.data.id }, signal, throwOnError: true, ...opts }), true);\n if (assetBody.asset && Object.keys(assetBody.asset).length > 0) {\n await wrapRequest<void, true>(() =>\n client.put({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: assetId }, body: assetBody, signal, throwOnError: true, ...opts }), true);\n }\n }\n else {\n await wrapRequest<void, true>(() =>\n client.put({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: assetId }, body, signal, throwOnError: true, ...opts }), true);\n }\n },\n delete<ThrowOnError extends boolean = false>(assetId: number | string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<Asset, ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<Asset, ThrowOnError>(() =>\n client.delete({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: getSpaceId(path), asset_id: assetId }, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { Asset, AssetUpdate } from "../generated/mapi/types-aliased.gen.cjs";
2
+
3
+ //#region src/resources/shared-assets.d.ts
4
+ /**
5
+ * Fields for initiating a shared (org-level) asset upload. Mirrors the local
6
+ * asset upload request; `short_filename` maps to the server's `filename`.
7
+ */
8
+ interface SharedAssetUploadRequest {
9
+ short_filename: string;
10
+ id?: number;
11
+ asset_folder_id?: number;
12
+ is_private?: boolean;
13
+ size?: string;
14
+ validate_upload?: boolean;
15
+ }
16
+ type SharedAssetCreate = AssetUpdate & SharedAssetUploadRequest;
17
+ interface SharedAssetListQuery {
18
+ in_folder?: number;
19
+ page?: number;
20
+ per_page?: number;
21
+ search?: string;
22
+ sort_by?: string;
23
+ }
24
+ interface SharedAssetListResponse {
25
+ assets: Asset[];
26
+ }
27
+ //#endregion
28
+ export { SharedAssetCreate, SharedAssetListQuery, SharedAssetListResponse, SharedAssetUploadRequest };
29
+ //# sourceMappingURL=shared-assets.d.cts.map
@@ -0,0 +1,28 @@
1
+ import { Asset, AssetUpdate } from "../generated/mapi/types-aliased.gen.mjs";
2
+ //#region src/resources/shared-assets.d.ts
3
+ /**
4
+ * Fields for initiating a shared (org-level) asset upload. Mirrors the local
5
+ * asset upload request; `short_filename` maps to the server's `filename`.
6
+ */
7
+ interface SharedAssetUploadRequest {
8
+ short_filename: string;
9
+ id?: number;
10
+ asset_folder_id?: number;
11
+ is_private?: boolean;
12
+ size?: string;
13
+ validate_upload?: boolean;
14
+ }
15
+ type SharedAssetCreate = AssetUpdate & SharedAssetUploadRequest;
16
+ interface SharedAssetListQuery {
17
+ in_folder?: number;
18
+ page?: number;
19
+ per_page?: number;
20
+ search?: string;
21
+ sort_by?: string;
22
+ }
23
+ interface SharedAssetListResponse {
24
+ assets: Asset[];
25
+ }
26
+ //#endregion
27
+ export { SharedAssetCreate, SharedAssetListQuery, SharedAssetListResponse, SharedAssetUploadRequest };
28
+ //# sourceMappingURL=shared-assets.d.mts.map
@@ -0,0 +1,197 @@
1
+ import { resolveSpaceId } from "./shared.mjs";
2
+ import { uploadToS3 } from "./assets.mjs";
3
+
4
+ //#region src/resources/shared-assets.ts
5
+ /**
6
+ * Shared (organization-level) assets. These endpoints are not part of the
7
+ * generated SDK, so methods issue raw `client.*` calls. The active space must
8
+ * have read (list/get) or write (create/update/delete) access to the library.
9
+ */
10
+ function createSharedAssetsResource(deps) {
11
+ const { client, spaceId, wrapRequest } = deps;
12
+ const getSpaceId = (path) => resolveSpaceId(spaceId, path);
13
+ const kyOpts = (fetchOptions) => fetchOptions ? { kyOptions: {
14
+ ...client.getConfig().kyOptions,
15
+ ...fetchOptions
16
+ } } : {};
17
+ const maybeThrow = (throwOnError) => throwOnError === void 0 ? {} : { throwOnError };
18
+ return {
19
+ list(options = {}) {
20
+ const { query, signal, path, throwOnError, fetchOptions } = options;
21
+ return wrapRequest(() => client.get({
22
+ url: "/v1/spaces/{space_id}/shared_assets",
23
+ path: { space_id: getSpaceId(path) },
24
+ query: query && { ...query },
25
+ signal,
26
+ ...maybeThrow(throwOnError),
27
+ ...kyOpts(fetchOptions)
28
+ }), throwOnError);
29
+ },
30
+ get(assetId, options = {}) {
31
+ const { signal, path, throwOnError, fetchOptions } = options;
32
+ return wrapRequest(() => client.get({
33
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
34
+ path: {
35
+ space_id: getSpaceId(path),
36
+ asset_id: assetId
37
+ },
38
+ signal,
39
+ ...maybeThrow(throwOnError),
40
+ ...kyOpts(fetchOptions)
41
+ }), throwOnError);
42
+ },
43
+ async upload(options) {
44
+ const { body, file, signal, path, fetchOptions } = options;
45
+ const { short_filename, ...rest } = body;
46
+ const resolvedSpaceId = getSpaceId(path);
47
+ const opts = kyOpts(fetchOptions);
48
+ const signResult = await wrapRequest(() => client.post({
49
+ url: "/v1/spaces/{space_id}/shared_assets",
50
+ path: { space_id: resolvedSpaceId },
51
+ query: {
52
+ filename: short_filename,
53
+ ...rest
54
+ },
55
+ signal,
56
+ throwOnError: true,
57
+ ...opts
58
+ }), true);
59
+ if (!signResult.data.id) throw new Error("Invalid signed response: missing id");
60
+ const assetId = signResult.data.id;
61
+ await uploadToS3(signResult.data, file, short_filename);
62
+ await wrapRequest(() => client.get({
63
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload",
64
+ path: {
65
+ space_id: resolvedSpaceId,
66
+ asset_id: assetId
67
+ },
68
+ signal,
69
+ throwOnError: true,
70
+ ...opts
71
+ }), true);
72
+ return (await wrapRequest(() => client.get({
73
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
74
+ path: {
75
+ space_id: resolvedSpaceId,
76
+ asset_id: assetId
77
+ },
78
+ signal,
79
+ throwOnError: true,
80
+ ...opts
81
+ }), true)).data;
82
+ },
83
+ async create(options) {
84
+ const { body, file, signal, path, fetchOptions } = options;
85
+ const resolvedSpaceId = getSpaceId(path);
86
+ const opts = kyOpts(fetchOptions);
87
+ const asset = await this.upload({
88
+ body: {
89
+ short_filename: body.short_filename,
90
+ asset_folder_id: body.asset_folder_id,
91
+ is_private: body.is_private
92
+ },
93
+ file,
94
+ signal,
95
+ path: { space_id: resolvedSpaceId },
96
+ fetchOptions
97
+ });
98
+ const { short_filename, asset_folder_id, is_private, size, validate_upload, ...metadata } = body;
99
+ if (Object.values(metadata).some((v) => v !== void 0 && v !== null)) {
100
+ await wrapRequest(() => client.put({
101
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
102
+ path: {
103
+ space_id: resolvedSpaceId,
104
+ asset_id: asset.id
105
+ },
106
+ body: { asset: {
107
+ ...metadata,
108
+ asset_folder_id
109
+ } },
110
+ signal,
111
+ throwOnError: true,
112
+ ...opts
113
+ }), true);
114
+ return (await wrapRequest(() => client.get({
115
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
116
+ path: {
117
+ space_id: resolvedSpaceId,
118
+ asset_id: asset.id
119
+ },
120
+ signal,
121
+ throwOnError: true,
122
+ ...opts
123
+ }), true)).data;
124
+ }
125
+ return asset;
126
+ },
127
+ async update(assetId, options) {
128
+ const { body, file, signal, path, fetchOptions } = options;
129
+ const resolvedSpaceId = getSpaceId(path);
130
+ const opts = kyOpts(fetchOptions);
131
+ if (file !== void 0) {
132
+ const { short_filename, ...assetBody } = body;
133
+ const signResult = await wrapRequest(() => client.post({
134
+ url: "/v1/spaces/{space_id}/shared_assets",
135
+ path: { space_id: resolvedSpaceId },
136
+ query: {
137
+ filename: short_filename,
138
+ id: Number(assetId)
139
+ },
140
+ signal,
141
+ throwOnError: true,
142
+ ...opts
143
+ }), true);
144
+ if (!signResult.data.id) throw new Error("Invalid signed response: missing id");
145
+ await uploadToS3(signResult.data, file, short_filename);
146
+ await wrapRequest(() => client.get({
147
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload",
148
+ path: {
149
+ space_id: resolvedSpaceId,
150
+ asset_id: signResult.data.id
151
+ },
152
+ signal,
153
+ throwOnError: true,
154
+ ...opts
155
+ }), true);
156
+ if (assetBody.asset && Object.keys(assetBody.asset).length > 0) await wrapRequest(() => client.put({
157
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
158
+ path: {
159
+ space_id: resolvedSpaceId,
160
+ asset_id: assetId
161
+ },
162
+ body: assetBody,
163
+ signal,
164
+ throwOnError: true,
165
+ ...opts
166
+ }), true);
167
+ } else await wrapRequest(() => client.put({
168
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
169
+ path: {
170
+ space_id: resolvedSpaceId,
171
+ asset_id: assetId
172
+ },
173
+ body,
174
+ signal,
175
+ throwOnError: true,
176
+ ...opts
177
+ }), true);
178
+ },
179
+ delete(assetId, options = {}) {
180
+ const { signal, path, throwOnError, fetchOptions } = options;
181
+ return wrapRequest(() => client.delete({
182
+ url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
183
+ path: {
184
+ space_id: getSpaceId(path),
185
+ asset_id: assetId
186
+ },
187
+ signal,
188
+ ...maybeThrow(throwOnError),
189
+ ...kyOpts(fetchOptions)
190
+ }), throwOnError);
191
+ }
192
+ };
193
+ }
194
+
195
+ //#endregion
196
+ export { createSharedAssetsResource };
197
+ //# sourceMappingURL=shared-assets.mjs.map