Skip to content

Commit fcd2ae1

Browse files
authored
fix: update types, add tests, and cleanup [DX-397] (#2755)
1 parent 744e073 commit fcd2ae1

File tree

10 files changed

+273
-120
lines changed

10 files changed

+273
-120
lines changed

lib/adapters/REST/endpoints/entry.ts

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,25 @@ import type { OpPatch } from 'json-patch'
55
import type { SetOptional } from 'type-fest'
66
import type {
77
CollectionProp,
8-
GetEntryParams,
9-
GetManyEntryParams,
8+
CreateReleaseEntryParams,
109
CreateWithIdReleaseEntryParams,
10+
GetManyReleaseEntryParams,
11+
GetReleaseEntryParams,
1112
GetSpaceEnvironmentParams,
1213
KeyValueMap,
13-
PatchEntryParams,
1414
PatchReleaseEntryParams,
1515
QueryParams,
16-
UpdateEntryParams,
1716
UpdateReleaseEntryParams,
18-
CreateReleaseEntryParams,
19-
GetManyReleaseEntryParams,
20-
GetReleaseEntryParams,
2117
} from '../../../common-types'
2218
import type { CreateEntryProps, EntryProps, EntryReferenceProps } from '../../../entities/entry'
2319
import type { RestEndpoint } from '../types'
2420
import * as raw from './raw'
25-
import { createWithId as createWithIdReleaseEntry } from './release-entry'
26-
import { normalizeSelect } from './utils'
2721
import * as releaseEntry from './release-entry'
22+
import { normalizeSelect } from './utils'
2823

2924
export const get: RestEndpoint<'Entry', 'get'> = <T extends KeyValueMap = KeyValueMap>(
3025
http: AxiosInstance,
31-
params: GetEntryParams & QueryParams & { releaseId?: string },
26+
params: GetSpaceEnvironmentParams & { entryId: string; releaseId?: string } & QueryParams,
3227
rawData?: unknown,
3328
headers?: RawAxiosRequestHeaders
3429
) => {
@@ -66,7 +61,7 @@ export const getPublished: RestEndpoint<'Entry', 'getPublished'> = <
6661

6762
export const getMany: RestEndpoint<'Entry', 'getMany'> = <T extends KeyValueMap = KeyValueMap>(
6863
http: AxiosInstance,
69-
params: GetManyEntryParams & QueryParams & { releaseId?: string },
64+
params: GetSpaceEnvironmentParams & QueryParams & { releaseId?: string },
7065
rawData?: unknown,
7166
headers?: RawAxiosRequestHeaders
7267
) => {
@@ -86,7 +81,7 @@ export const getMany: RestEndpoint<'Entry', 'getMany'> = <T extends KeyValueMap
8681

8782
export const patch: RestEndpoint<'Entry', 'patch'> = <T extends KeyValueMap = KeyValueMap>(
8883
http: AxiosInstance,
89-
params: PatchEntryParams & QueryParams,
84+
params: GetSpaceEnvironmentParams & { entryId: string; version: number; releaseId?: string },
9085
data: OpPatch[],
9186
headers?: RawAxiosRequestHeaders
9287
) => {
@@ -110,7 +105,7 @@ export const patch: RestEndpoint<'Entry', 'patch'> = <T extends KeyValueMap = Ke
110105

111106
export const update: RestEndpoint<'Entry', 'update'> = <T extends KeyValueMap = KeyValueMap>(
112107
http: AxiosInstance,
113-
params: UpdateEntryParams & QueryParams,
108+
params: GetSpaceEnvironmentParams & { entryId: string; releaseId?: string },
114109
rawData: EntryProps<T>,
115110
headers?: RawAxiosRequestHeaders
116111
) => {
@@ -209,7 +204,7 @@ export const unarchive: RestEndpoint<'Entry', 'unarchive'> = <T extends KeyValue
209204

210205
export const create: RestEndpoint<'Entry', 'create'> = <T extends KeyValueMap = KeyValueMap>(
211206
http: AxiosInstance,
212-
params: GetSpaceEnvironmentParams & { contentTypeId: string; releaseId?: string } & QueryParams,
207+
params: GetSpaceEnvironmentParams & { contentTypeId: string; releaseId?: string },
213208
rawData: CreateEntryProps<T>
214209
) => {
215210
if (params.releaseId) {
@@ -242,21 +237,20 @@ export const createWithId: RestEndpoint<'Entry', 'createWithId'> = <
242237
rawData: CreateEntryProps<T>
243238
) => {
244239
if (params.releaseId) {
245-
return createWithIdReleaseEntry(http, params as CreateWithIdReleaseEntryParams, rawData, {})
246-
} else {
247-
const data = copy(rawData)
248-
249-
return raw.put<EntryProps<T>>(
250-
http,
251-
`/spaces/${params.spaceId}/environments/${params.environmentId}/entries/${params.entryId}`,
252-
data,
253-
{
254-
headers: {
255-
'X-Contentful-Content-Type': params.contentTypeId,
256-
},
257-
}
258-
)
240+
return releaseEntry.createWithId(http, params as CreateWithIdReleaseEntryParams, rawData, {})
259241
}
242+
const data = copy(rawData)
243+
244+
return raw.put<EntryProps<T>>(
245+
http,
246+
`/spaces/${params.spaceId}/environments/${params.environmentId}/entries/${params.entryId}`,
247+
data,
248+
{
249+
headers: {
250+
'X-Contentful-Content-Type': params.contentTypeId,
251+
},
252+
}
253+
)
260254
}
261255

262256
export const references: RestEndpoint<'Entry', 'references'> = (

lib/adapters/REST/endpoints/release-asset.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1+
import type { RawAxiosRequestHeaders } from 'axios'
12
import { errorHandler, type AxiosInstance } from 'contentful-sdk-core'
3+
import copy from 'fast-copy'
4+
import type { SetOptional } from 'type-fest'
25
import type {
6+
CollectionProp,
37
CreateReleaseAssetParams,
4-
GetReleaseAssetParams,
8+
CreateWithFilesReleaseAssetParams,
9+
CreateWithIdReleaseAssetParams,
510
GetManyReleaseAssetParams,
6-
QueryParams,
7-
UpdateReleaseAssetParams,
11+
GetReleaseAssetParams,
812
Link,
9-
CollectionProp,
10-
CreateWithIdReleaseAssetParams,
11-
CreateWithFilesReleaseAssetParams,
12-
ProcessForLocaleReleaseAssetParams,
1313
ProcessForAllLocalesReleaseAssetParams,
14+
ProcessForLocaleReleaseAssetParams,
15+
QueryParams,
16+
UpdateReleaseAssetParams,
1417
} from '../../../common-types'
1518
import type {
16-
CreateAssetProps,
17-
AssetProps,
1819
AssetFileProp,
1920
AssetProcessingForLocale,
21+
AssetProps,
22+
CreateAssetProps,
2023
} from '../../../entities/asset'
21-
import copy from 'fast-copy'
24+
import { getUploadHttpClient } from '../../../upload-http-client'
2225
import type { RestEndpoint } from '../types'
2326
import * as raw from './raw'
24-
import type { RawAxiosRequestHeaders } from 'axios'
25-
import type { SetOptional } from 'type-fest'
26-
import { getUploadHttpClient } from '../../../upload-http-client'
2727
import { create as createUpload } from './upload'
2828
import { normalizeSelect } from './utils'
2929

lib/adapters/REST/endpoints/release-entry.ts

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
1+
import type { RawAxiosRequestHeaders } from 'axios'
12
import type { AxiosInstance } from 'contentful-sdk-core'
3+
import copy from 'fast-copy'
4+
import type { OpPatch } from 'json-patch'
5+
import type { SetOptional } from 'type-fest'
26
import type {
7+
CollectionProp,
38
CreateReleaseEntryParams,
4-
GetReleaseEntryParams,
9+
CreateWithIdReleaseEntryParams,
510
GetManyReleaseEntryParams,
11+
GetReleaseEntryParams,
612
KeyValueMap,
13+
Link,
714
PatchReleaseEntryParams,
815
QueryParams,
916
UpdateReleaseEntryParams,
10-
CreateWithIdReleaseEntryParams,
11-
Link,
12-
CollectionProp,
1317
} from '../../../common-types'
1418
import type { CreateEntryProps, EntryProps } from '../../../entities/entry'
15-
import copy from 'fast-copy'
1619
import type { RestEndpoint } from '../types'
1720
import * as raw from './raw'
18-
import type { RawAxiosRequestHeaders } from 'axios'
19-
import type { SetOptional } from 'type-fest'
20-
import type { OpPatch } from 'json-patch'
2121
import { normalizeSelect } from './utils'
2222

23-
type ReleaseEntryProps = EntryProps<unknown, { release: Link<'Release'> }>
23+
type ReleaseEntryProps<T> = EntryProps<T, { release: Link<'Release'> }>
2424

25-
export const get: RestEndpoint<'ReleaseEntry', 'get'> = (
25+
export const get: RestEndpoint<'ReleaseEntry', 'get'> = <T extends KeyValueMap = KeyValueMap>(
2626
http: AxiosInstance,
2727
params: GetReleaseEntryParams & QueryParams,
2828
rawData?: unknown,
2929
headers?: RawAxiosRequestHeaders
3030
) => {
31-
return raw.get<ReleaseEntryProps>(
31+
return raw.get<ReleaseEntryProps<T>>(
3232
http,
3333
`/spaces/${params.spaceId}/environments/${params.environmentId}/releases/${params.releaseId}/entries/${params.entryId}`,
3434
{
@@ -38,13 +38,15 @@ export const get: RestEndpoint<'ReleaseEntry', 'get'> = (
3838
)
3939
}
4040

41-
export const getMany: RestEndpoint<'ReleaseEntry', 'getMany'> = (
41+
export const getMany: RestEndpoint<'ReleaseEntry', 'getMany'> = <
42+
T extends KeyValueMap = KeyValueMap
43+
>(
4244
http: AxiosInstance,
4345
params: GetManyReleaseEntryParams & QueryParams,
4446
rawData?: unknown,
4547
headers?: RawAxiosRequestHeaders
4648
) => {
47-
return raw.get<CollectionProp<ReleaseEntryProps>>(
49+
return raw.get<CollectionProp<ReleaseEntryProps<T>>>(
4850
http,
4951
`/spaces/${params.spaceId}/environments/${params.environmentId}/releases/${params.releaseId}/entries`,
5052
{
@@ -62,7 +64,7 @@ export const update: RestEndpoint<'ReleaseEntry', 'update'> = <T extends KeyValu
6264
) => {
6365
const data: SetOptional<typeof rawData, 'sys'> = copy(rawData)
6466
delete data.sys
65-
return raw.put<ReleaseEntryProps>(
67+
return raw.put<ReleaseEntryProps<T>>(
6668
http,
6769
`/spaces/${params.spaceId}/environments/${params.environmentId}/releases/${params.releaseId}/entries/${params.entryId}`,
6870
data,
@@ -81,7 +83,7 @@ export const patch: RestEndpoint<'ReleaseEntry', 'patch'> = <T extends KeyValueM
8183
data: OpPatch[],
8284
headers?: RawAxiosRequestHeaders
8385
) => {
84-
return raw.patch<ReleaseEntryProps>(
86+
return raw.patch<ReleaseEntryProps<T>>(
8587
http,
8688
`/spaces/${params.spaceId}/environments/${params.environmentId}/releases/${params.releaseId}/entries/${params.entryId}`,
8789
data,
@@ -103,7 +105,7 @@ export const create: RestEndpoint<'ReleaseEntry', 'create'> = <T extends KeyValu
103105
) => {
104106
const data = copy(rawData)
105107

106-
return raw.post<ReleaseEntryProps>(
108+
return raw.post<ReleaseEntryProps<T>>(
107109
http,
108110
`/spaces/${params.spaceId}/environments/${params.environmentId}/releases/${params.releaseId}/entries`,
109111
data,
@@ -126,7 +128,7 @@ export const createWithId: RestEndpoint<'ReleaseEntry', 'createWithId'> = <
126128
) => {
127129
const data = copy(rawData)
128130

129-
return raw.put<ReleaseEntryProps>(
131+
return raw.put<ReleaseEntryProps<T>>(
130132
http,
131133
`/spaces/${params.spaceId}/environments/${params.environmentId}/releases/${params.releaseId}/entries/${params.entryId}`,
132134
data,

lib/adapters/REST/endpoints/release.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { RawAxiosRequestHeaders } from 'axios'
22
import type { AxiosInstance } from 'contentful-sdk-core'
3-
import type { ReleaseEnvironmentParams, GetReleaseParams } from '../../../common-types'
3+
import type { GetReleaseParams, ReleaseEnvironmentParams } from '../../../common-types'
44
import type {
55
ReleasePayload,
66
ReleasePayloadV2,

lib/common-types.ts

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1645,21 +1645,21 @@ export type MRActions = {
16451645
return: CollectionProp<EntryProps<any>>
16461646
}
16471647
getMany: {
1648-
params: GetManyEntryParams & QueryParams & { releaseId?: string }
1649-
return: CollectionProp<EntryProps<any, any>>
1648+
params: GetSpaceEnvironmentParams & QueryParams & { releaseId?: string }
1649+
return: CollectionProp<EntryProps<any>>
16501650
}
16511651
get: {
1652-
params: GetEntryParams & QueryParams & { releaseId?: string }
1653-
return: EntryProps<any, any>
1652+
params: GetSpaceEnvironmentParams & { entryId: string; releaseId?: string } & QueryParams
1653+
return: EntryProps<any>
16541654
}
16551655
patch: {
1656-
params: PatchEntryParams & QueryParams & { releaseId?: string }
1656+
params: GetSpaceEnvironmentParams & { entryId: string; version: number; releaseId?: string }
16571657
payload: OpPatch[]
16581658
headers?: RawAxiosRequestHeaders
16591659
return: EntryProps<any>
16601660
}
16611661
update: {
1662-
params: UpdateEntryParams & QueryParams & { releaseId?: string }
1662+
params: GetSpaceEnvironmentParams & { entryId: string; releaseId?: string }
16631663
payload: EntryProps<any>
16641664
headers?: RawAxiosRequestHeaders
16651665
return: EntryProps<any>
@@ -1686,7 +1686,7 @@ export type MRActions = {
16861686
params: GetSpaceEnvironmentParams & {
16871687
contentTypeId: string
16881688
releaseId?: string
1689-
} & QueryParams
1689+
}
16901690
payload: CreateEntryProps<any>
16911691
return: EntryProps<any>
16921692
}
@@ -1697,7 +1697,7 @@ export type MRActions = {
16971697
releaseId?: string
16981698
}
16991699
payload: CreateEntryProps<any>
1700-
return: EntryProps<any, any>
1700+
return: EntryProps<any>
17011701
}
17021702
references: {
17031703
params: GetSpaceEnvironmentParams & {
@@ -1866,11 +1866,11 @@ export type MRActions = {
18661866
return: ReleaseProps
18671867
}
18681868
query: {
1869-
params: GetSpaceEnvironmentParams & { query?: ReleaseQueryOptions }
1869+
params: ReleaseEnvironmentParams & { query?: ReleaseQueryOptions }
18701870
return: CollectionProp<ReleaseProps>
18711871
}
18721872
create: {
1873-
params: GetSpaceEnvironmentParams
1873+
params: ReleaseEnvironmentParams
18741874
payload: ReleasePayload | ReleasePayloadV2
18751875
return: ReleaseProps
18761876
}
@@ -1949,12 +1949,12 @@ export type MRActions = {
19491949
get: {
19501950
params: GetReleaseEntryParams & QueryParams
19511951
headers?: RawAxiosRequestHeaders
1952-
return: EntryProps<any, any>
1952+
return: EntryProps<any, { release: Link<'Release'> }>
19531953
}
19541954
getMany: {
19551955
params: GetManyReleaseEntryParams & QueryParams
19561956
headers?: RawAxiosRequestHeaders
1957-
return: CollectionProp<EntryProps<any, any>>
1957+
return: CollectionProp<EntryProps<any, { release: Link<'Release'> }>>
19581958
}
19591959
update: {
19601960
params: UpdateReleaseEntryParams & QueryParams
@@ -2457,13 +2457,6 @@ export type GetCommentParams = (GetEntryParams | GetCommentParentEntityParams) &
24572457
export type GetContentTypeParams = GetSpaceEnvironmentParams & { contentTypeId: string }
24582458
export type GetEditorInterfaceParams = GetSpaceEnvironmentParams & { contentTypeId: string }
24592459
export type GetEntryParams = GetSpaceEnvironmentParams & { entryId: string }
2460-
export type GetManyEntryParams = GetSpaceEnvironmentParams
2461-
export type PatchEntryParams = GetSpaceEnvironmentParams & {
2462-
entryId: string
2463-
version: number
2464-
releaseId?: string
2465-
}
2466-
export type UpdateEntryParams = GetSpaceEnvironmentParams & { entryId: string; releaseId?: string }
24672460
export type GetExtensionParams = GetSpaceEnvironmentParams & { extensionId: string }
24682461
export type GetEnvironmentTemplateParams = GetOrganizationParams & { environmentTemplateId: string }
24692462
export type GetFunctionParams = GetAppDefinitionParams & { functionId: string }

lib/create-environment-api.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import type {
3737
ReleasePayload,
3838
ReleaseQueryOptions,
3939
ReleaseValidatePayload,
40-
ReleasePayloadV2,
4140
} from './entities/release'
4241
import { wrapRelease, wrapReleaseCollection } from './entities/release'
4342

@@ -398,15 +397,15 @@ export default function createEnvironmentApi(makeRequest: MakeRequest) {
398397
*
399398
* // Using Thenables
400399
* client.getSpace('<space_id>')
401-
* .then((space) => space.getEnvironment('<environment-id>'))
400+
* .then((space) => space.getEnvironment('<environment_id>'))
402401
* .then((environment) => environment.createUnpublishBulkAction(payload))
403402
* .then((bulkAction) => console.log(bulkAction.waitProcessing()))
404403
* .catch(console.error)
405404
*
406405
* // Using async/await
407406
* try {
408407
* const space = await clientgetSpace('<space_id>')
409-
* const environment = await space.getEnvironment('<environment-id>')
408+
* const environment = await space.getEnvironment('<environment_id>')
410409
* const bulkActionInProgress = await environment.createUnpublishBulkAction(payload)
411410
*
412411
* // You can wait for a recently created BulkAction to be processed by using `bulkAction.waitProcessing()`
@@ -867,7 +866,7 @@ export default function createEnvironmentApi(makeRequest: MakeRequest) {
867866
*
868867
* // Get entry references
869868
* client.getSpace('<space_id>')
870-
* .then((space) => space.getEnvironment('<environment-id>'))
869+
* .then((space) => space.getEnvironment('<environment_id>'))
871870
* .then((environment) => environment.getEntryReferences('<entry_id>', {include: number}))
872871
* .then((entry) => console.log(entry.includes))
873872
* // or
@@ -2109,7 +2108,7 @@ export default function createEnvironmentApi(makeRequest: MakeRequest) {
21092108
version,
21102109
}: {
21112110
releaseId: string
2112-
payload: ReleasePayload | ReleasePayloadV2
2111+
payload: ReleasePayload
21132112
version: number
21142113
}) {
21152114
const raw: EnvironmentProps = this.toPlainObject()
@@ -2482,7 +2481,7 @@ export default function createEnvironmentApi(makeRequest: MakeRequest) {
24822481
* })
24832482
*
24842483
* client.getSpace('<space_id>')
2485-
* .then((space) => space.getEnvironment('<environment-id>'))
2484+
* .then((space) => space.getEnvironment('<environment_id>'))
24862485
* .then((environment) => environment.getResourceTypes({limit: 10}))
24872486
* .then((installations) => console.log(installations.items))
24882487
* .catch(console.error)

0 commit comments

Comments
 (0)