@@ -3,7 +3,17 @@ import type { AxiosInstance } from 'contentful-sdk-core'
33import { errorHandler } from 'contentful-sdk-core'
44import copy from 'fast-copy'
55import type { SetOptional } from 'type-fest'
6- import type { CollectionProp , GetSpaceEnvironmentParams , QueryParams } from '../../../common-types'
6+ import type {
7+ CollectionProp ,
8+ CreateReleaseAssetParams ,
9+ CreateWithFilesReleaseAssetParams ,
10+ CreateWithIdReleaseAssetParams ,
11+ GetReleaseAssetParams ,
12+ GetSpaceEnvironmentParams ,
13+ Link ,
14+ QueryParams ,
15+ UpdateReleaseAssetParams ,
16+ } from '../../../common-types'
717import type {
818 AssetFileProp ,
919 AssetProcessingForLocale ,
@@ -15,13 +25,18 @@ import type { RestEndpoint } from '../types'
1525import * as raw from './raw'
1626import { create as createUpload } from './upload'
1727import { normalizeSelect } from './utils'
28+ import * as releaseAsset from './release-asset'
1829
1930export const get : RestEndpoint < 'Asset' , 'get' > = (
2031 http : AxiosInstance ,
21- params : GetSpaceEnvironmentParams & { assetId : string } & QueryParams ,
32+ params : GetSpaceEnvironmentParams & { assetId : string ; releaseId ?: string } & QueryParams ,
2233 rawData ?: unknown ,
2334 headers ?: RawAxiosRequestHeaders ,
2435) => {
36+ if ( params . releaseId ) {
37+ return releaseAsset . get ( http , params as GetReleaseAssetParams )
38+ }
39+
2540 return raw . get < AssetProps > (
2641 http ,
2742 `/spaces/${ params . spaceId } /environments/${ params . environmentId } /assets/${ params . assetId } ` ,
@@ -50,10 +65,14 @@ export const getPublished: RestEndpoint<'Asset', 'getPublished'> = (
5065
5166export const getMany : RestEndpoint < 'Asset' , 'getMany' > = (
5267 http : AxiosInstance ,
53- params : GetSpaceEnvironmentParams & QueryParams ,
68+ params : GetSpaceEnvironmentParams & QueryParams & { releaseId ?: string } ,
5469 rawData ?: unknown ,
5570 headers ?: RawAxiosRequestHeaders ,
5671) => {
72+ if ( params . releaseId ) {
73+ return releaseAsset . getMany ( http , params as GetReleaseAssetParams )
74+ }
75+
5776 return raw . get < CollectionProp < AssetProps > > (
5877 http ,
5978 `/spaces/${ params . spaceId } /environments/${ params . environmentId } /assets` ,
@@ -66,10 +85,14 @@ export const getMany: RestEndpoint<'Asset', 'getMany'> = (
6685
6786export const update : RestEndpoint < 'Asset' , 'update' > = (
6887 http : AxiosInstance ,
69- params : GetSpaceEnvironmentParams & { assetId : string } ,
88+ params : GetSpaceEnvironmentParams & { assetId : string ; releaseId ?: string } ,
7089 rawData : AssetProps ,
7190 headers ?: RawAxiosRequestHeaders ,
7291) => {
92+ if ( params . releaseId ) {
93+ return releaseAsset . update ( http , params as UpdateReleaseAssetParams , rawData , headers ?? { } )
94+ }
95+
7396 const data : SetOptional < typeof rawData , 'sys' > = copy ( rawData )
7497 delete data . sys
7598 return raw . put < AssetProps > (
@@ -161,9 +184,13 @@ export const unarchive: RestEndpoint<'Asset', 'unarchive'> = (
161184
162185export const create : RestEndpoint < 'Asset' , 'create' > = (
163186 http : AxiosInstance ,
164- params : GetSpaceEnvironmentParams ,
187+ params : GetSpaceEnvironmentParams & { releaseId ?: string } ,
165188 rawData : CreateAssetProps ,
166189) => {
190+ if ( params . releaseId ) {
191+ return releaseAsset . create ( http , params as CreateReleaseAssetParams , rawData , { } )
192+ }
193+
167194 const data = copy ( rawData )
168195
169196 return raw . post < AssetProps > (
@@ -175,9 +202,13 @@ export const create: RestEndpoint<'Asset', 'create'> = (
175202
176203export const createWithId : RestEndpoint < 'Asset' , 'createWithId' > = (
177204 http : AxiosInstance ,
178- params : GetSpaceEnvironmentParams & { assetId : string } ,
205+ params : GetSpaceEnvironmentParams & { assetId : string ; releaseId ?: string } ,
179206 rawData : CreateAssetProps ,
180207) => {
208+ if ( params . releaseId ) {
209+ return releaseAsset . createWithId ( http , params as CreateWithIdReleaseAssetParams , rawData , { } )
210+ }
211+
181212 const data = copy ( rawData )
182213
183214 return raw . put < AssetProps > (
@@ -189,9 +220,13 @@ export const createWithId: RestEndpoint<'Asset', 'createWithId'> = (
189220
190221export const createFromFiles : RestEndpoint < 'Asset' , 'createFromFiles' > = async (
191222 http : AxiosInstance ,
192- params : GetSpaceEnvironmentParams & { uploadTimeout ?: number } ,
223+ params : GetSpaceEnvironmentParams & { uploadTimeout ?: number ; releaseId ?: string } ,
193224 data : Omit < AssetFileProp , 'sys' > ,
194225) => {
226+ if ( params . releaseId ) {
227+ return releaseAsset . createFromFiles ( http , params as CreateWithFilesReleaseAssetParams , data , { } )
228+ }
229+
195230 const httpUpload = getUploadHttpClient ( http , { uploadTimeout : params . uploadTimeout } )
196231
197232 const { file } = data . fields
@@ -293,6 +328,15 @@ export const processForLocale: RestEndpoint<'Asset', 'processForLocale'> = async
293328 options ?: AssetProcessingForLocale
294329 } ,
295330) => {
331+ if ( asset . sys . release ) {
332+ return releaseAsset . processForLocale ( http , {
333+ asset : asset as AssetProps < { release : Link < 'Release' > } > ,
334+ locale,
335+ options : { processingCheckRetries, processingCheckWait } ,
336+ ...params ,
337+ } )
338+ }
339+
296340 return raw
297341 . put < AssetProps > (
298342 http ,
@@ -333,6 +377,14 @@ export const processForAllLocales: RestEndpoint<'Asset', 'processForAllLocales'>
333377 ...params
334378 } : GetSpaceEnvironmentParams & { asset : AssetProps ; options ?: AssetProcessingForLocale } ,
335379) => {
380+ if ( asset . sys . release ) {
381+ return releaseAsset . processForAllLocales ( http , {
382+ asset : asset as AssetProps < { release : Link < 'Release' > } > ,
383+ options,
384+ ...params ,
385+ } )
386+ }
387+
336388 const locales = Object . keys ( asset . fields . file || { } )
337389
338390 let mostUpToDateAssetVersion : AssetProps = asset
0 commit comments