From 1b841001e73a77c0b32b5d6453467ce738653ddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andi=20Pa=CC=88tzold?= Date: Wed, 26 Mar 2025 14:49:17 +0100 Subject: [PATCH 01/12] fix: replace `SysLink` & `MetaLinkProps` with `Link` to improve type safety --- lib/common-types.ts | 37 +++++++++++------------ lib/entities/access-token.ts | 4 +-- lib/entities/api-key.ts | 8 ++--- lib/entities/app-access-token.ts | 8 ++--- lib/entities/app-action-call.ts | 13 ++++---- lib/entities/app-action.ts | 5 ++- lib/entities/app-bundle.ts | 6 ++-- lib/entities/app-definition.ts | 3 +- lib/entities/app-details.ts | 6 ++-- lib/entities/app-event-subscription.ts | 5 ++- lib/entities/app-installation.ts | 10 +++--- lib/entities/app-key.ts | 6 ++-- lib/entities/app-signed-request.ts | 8 ++--- lib/entities/app-signing-secret.ts | 6 ++-- lib/entities/app-upload.ts | 4 +-- lib/entities/comment.ts | 5 ++- lib/entities/content-type.ts | 5 ++- lib/entities/editor-interface.ts | 8 ++--- lib/entities/environment-alias.ts | 7 ++--- lib/entities/environment.ts | 10 +++--- lib/entities/extension.ts | 6 ++-- lib/entities/locale.ts | 4 +-- lib/entities/organization-invitation.ts | 4 +-- lib/entities/organization-membership.ts | 4 +-- lib/entities/resource-provider.ts | 8 ++--- lib/entities/resource-type.ts | 8 ++--- lib/entities/resource.ts | 8 ++--- lib/entities/role.ts | 4 +-- lib/entities/scheduled-action.ts | 6 ++-- lib/entities/space-member.ts | 4 +-- lib/entities/space-membership.ts | 8 ++--- lib/entities/tag.ts | 6 ++-- lib/entities/task.ts | 5 ++- lib/entities/team-membership.ts | 13 +++++--- lib/entities/team-space-membership.ts | 6 ++-- lib/entities/team.ts | 4 +-- lib/entities/ui-config.ts | 6 ++-- lib/entities/upload-credential.ts | 4 +-- lib/entities/upload.ts | 4 +-- lib/entities/usage.ts | 4 +-- lib/entities/user-ui-config.ts | 6 ++-- lib/entities/webhook.ts | 11 +++---- lib/entities/workflow-definition.ts | 5 ++- lib/entities/workflow.ts | 9 +++--- lib/entities/workflows-changelog-entry.ts | 3 +- 45 files changed, 152 insertions(+), 162 deletions(-) diff --git a/lib/common-types.ts b/lib/common-types.ts index 76b6b96261..be555deca1 100644 --- a/lib/common-types.ts +++ b/lib/common-types.ts @@ -258,25 +258,25 @@ export interface BasicMetaSysProps { type: string id: string version: number - createdBy?: SysLink + createdBy?: Link<'User'> | Link<'AppDefinition'> createdAt: string - updatedBy?: SysLink + updatedBy?: Link<'User'> | Link<'AppDefinition'> updatedAt: string } export interface MetaSysProps extends BasicMetaSysProps { - space?: SysLink + space?: Link<'Space'> /** * @deprecated `status` only exists on entities. Please refactor to use a * type guard to get the correct `EntityMetaSysProps` type with this property. */ - status?: SysLink + status?: Link<'Status'> publishedVersion?: number archivedVersion?: number - archivedBy?: SysLink + archivedBy?: Link<'User'> | Link<'AppDefinition'> archivedAt?: string deletedVersion?: number - deletedBy?: SysLink + deletedBy?: Link<'User'> | Link<'AppDefinition'> deletedAt?: string } @@ -285,10 +285,9 @@ export interface EntityMetaSysProps extends MetaSysProps { * @deprecated `contentType` only exists on entries. Please refactor to use a * type guard to get the correct `EntryMetaSysProps` type with this property. */ - contentType: SysLink - space: SysLink - status?: SysLink - environment: SysLink + contentType: Link<'ContentType'> + space: Link<'Space'> + environment: Link<'Environment'> publishedBy?: Link<'User'> | Link<'AppDefinition'> publishedAt?: string firstPublishedAt?: string @@ -299,24 +298,24 @@ export interface EntityMetaSysProps extends MetaSysProps { } export interface EntryMetaSysProps extends EntityMetaSysProps { - contentType: SysLink + contentType: Link<'ContentType'> automationTags: Link<'Tag'>[] } -export interface MetaLinkProps { - type: string - linkType: string - id: string -} +/** + * @deprecated Use more specific `Link` instead + */ +export interface MetaLinkProps extends Link {} export interface MetadataProps { tags: Link<'Tag'>[] concepts?: Link<'TaxonomyConcept'>[] } -export interface SysLink { - sys: MetaLinkProps -} +/** + * @deprecated Use more specific `Link` instead + */ +export interface SysLink extends Link {} export interface CollectionProp { sys: { diff --git a/lib/entities/access-token.ts b/lib/entities/access-token.ts index baee1e0760..17d009f359 100644 --- a/lib/entities/access-token.ts +++ b/lib/entities/access-token.ts @@ -2,12 +2,12 @@ import copy from 'fast-copy' import { freezeSys, toPlainObject } from 'contentful-sdk-core' import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' -import type { DefaultElements, MakeRequest, BasicMetaSysProps, SysLink } from '../common-types' +import type { DefaultElements, MakeRequest, BasicMetaSysProps, Link } from '../common-types' type Application = { id?: string name?: string - sys: SysLink + sys: Link<'Application'> } type AccessTokenSysProps = BasicMetaSysProps & { diff --git a/lib/entities/api-key.ts b/lib/entities/api-key.ts index d21ad2f7d1..7544e9d602 100644 --- a/lib/entities/api-key.ts +++ b/lib/entities/api-key.ts @@ -1,6 +1,6 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import copy from 'fast-copy' -import type { DefaultElements, MakeRequest, MetaLinkProps, MetaSysProps } from '../common-types' +import type { DefaultElements, Link, MakeRequest, MetaSysProps } from '../common-types' import { wrapCollection } from '../common-utils' import enhanceWithMethods from '../enhance-with-methods' @@ -8,10 +8,8 @@ export type ApiKeyProps = { sys: MetaSysProps name: string accessToken: string - environments: { - sys: MetaLinkProps - }[] - preview_api_key: { sys: MetaLinkProps } + environments: Link<'Environment'>[] + preview_api_key: Link<'PreviewApiKey'> description?: string policies?: { effect: string; action: string }[] } diff --git a/lib/entities/app-access-token.ts b/lib/entities/app-access-token.ts index 631c7c6cde..03cb768662 100644 --- a/lib/entities/app-access-token.ts +++ b/lib/entities/app-access-token.ts @@ -1,12 +1,12 @@ import copy from 'fast-copy' import { freezeSys, toPlainObject } from 'contentful-sdk-core' import type { Except } from 'type-fest' -import type { BasicMetaSysProps, DefaultElements, MakeRequest, SysLink } from '../common-types' +import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' type AppAccessTokenSys = Except & { - space: SysLink - environment: SysLink - appDefinition: SysLink + space: Link<'Space'> + environment: Link<'Environment'> + appDefinition: Link<'AppDefinition'> expiresAt: string } diff --git a/lib/entities/app-action-call.ts b/lib/entities/app-action-call.ts index eb56a277f3..9fdaa072f1 100644 --- a/lib/entities/app-action-call.ts +++ b/lib/entities/app-action-call.ts @@ -5,6 +5,7 @@ import type { BasicMetaSysProps, AppActionCallRetryOptions, DefaultElements, + Link, MakeRequest, SysLink, CreateWithResponseParams, @@ -16,10 +17,10 @@ import type { WebhookCallDetailsProps } from './webhook' import enhanceWithMethods from '../enhance-with-methods' type AppActionCallSys = Except & { - appDefinition: SysLink - space: SysLink - environment: SysLink - action: SysLink + appDefinition: Link<'AppDefinition'> + space: Link<'Space'> + environment: Link<'Environment'> + action: Link<'AppAction'> appActionCallResponse?: SysLink } & (AppActionCallSucceeded | AppActionCallProcessing | AppActionCallFailed) @@ -94,8 +95,8 @@ export interface AppActionCallRawResponseProps { export interface AppActionCallResponseData extends AppActionCallResponse, - DefaultElements, - AppActionCallApi {} + DefaultElements, + AppActionCallApi { } export type AppActionCall = AppActionCallProps & DefaultElements diff --git a/lib/entities/app-action.ts b/lib/entities/app-action.ts index 73ef9449a9..74c069f78a 100644 --- a/lib/entities/app-action.ts +++ b/lib/entities/app-action.ts @@ -7,14 +7,13 @@ import type { DefaultElements, Link, MakeRequest, - SysLink, } from '../common-types' import type { ParameterDefinition } from './widget-parameters' import enhanceWithMethods from '../enhance-with-methods' type AppActionSys = Except & { - appDefinition: SysLink - organization: SysLink + appDefinition: Link<'AppDefinition'> + organization: Link<'Organization'> } export type AppActionParameterDefinition = Omit diff --git a/lib/entities/app-bundle.ts b/lib/entities/app-bundle.ts index 9903483d34..e65fe91e74 100644 --- a/lib/entities/app-bundle.ts +++ b/lib/entities/app-bundle.ts @@ -2,12 +2,12 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import copy from 'fast-copy' import type { Except } from 'type-fest' import { wrapCollection } from '../common-utils' -import type { BasicMetaSysProps, DefaultElements, MakeRequest, SysLink } from '../common-types' +import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' import enhanceWithMethods from '../enhance-with-methods' type AppBundleSys = Except & { - appDefinition: SysLink - organization: SysLink + appDefinition: Link<'AppDefinition'> + organization: Link<'Organization'> } interface ActionManifestProps { diff --git a/lib/entities/app-definition.ts b/lib/entities/app-definition.ts index 7e536e1642..90ea82e8d5 100644 --- a/lib/entities/app-definition.ts +++ b/lib/entities/app-definition.ts @@ -3,7 +3,6 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import type { DefaultElements, BasicMetaSysProps, - SysLink, MakeRequest, Link, } from '../common-types' @@ -59,7 +58,7 @@ export type AppDefinitionProps = { * System metadata */ sys: BasicMetaSysProps & { - organization: SysLink + organization: Link<'Organization'> shared: boolean } /** diff --git a/lib/entities/app-details.ts b/lib/entities/app-details.ts index d4d5b76f46..d580e6cee1 100644 --- a/lib/entities/app-details.ts +++ b/lib/entities/app-details.ts @@ -1,12 +1,12 @@ import copy from 'fast-copy' import { toPlainObject } from 'contentful-sdk-core' import type { Except } from 'type-fest' -import type { BasicMetaSysProps, DefaultElements, MakeRequest, SysLink } from '../common-types' +import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' import enhanceWithMethods from '../enhance-with-methods' type AppDetailsSys = Except & { - appDefinition: SysLink - organization: SysLink + appDefinition: Link<'AppDefinition'> + organization: Link<'Organization'> } export type IconType = 'base64' diff --git a/lib/entities/app-event-subscription.ts b/lib/entities/app-event-subscription.ts index 52cb7d98cb..2940d11859 100644 --- a/lib/entities/app-event-subscription.ts +++ b/lib/entities/app-event-subscription.ts @@ -6,13 +6,12 @@ import type { DefaultElements, Link, MakeRequest, - SysLink, } from '../common-types' import enhanceWithMethods from '../enhance-with-methods' type AppEventSubscriptionSys = Except & { - appDefinition: SysLink - organization: SysLink + appDefinition: Link<'AppDefinition'> + organization: Link<'Organization'> } export type AppEventSubscriptionProps = { diff --git a/lib/entities/app-installation.ts b/lib/entities/app-installation.ts index 95ecb7fd0a..a561dc2c4c 100644 --- a/lib/entities/app-installation.ts +++ b/lib/entities/app-installation.ts @@ -2,16 +2,16 @@ import { toPlainObject, freezeSys } from 'contentful-sdk-core' import copy from 'fast-copy' import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' -import type { DefaultElements, BasicMetaSysProps, SysLink, MakeRequest } from '../common-types' +import type { DefaultElements, BasicMetaSysProps, MakeRequest, Link } from '../common-types' import type { Except } from 'type-fest' import type { FreeFormParameters } from './widget-parameters' export type AppInstallationProps = { sys: Omit & { - appDefinition: SysLink - environment: SysLink - space: SysLink - organization: SysLink + appDefinition: Link<'AppDefinition'> + environment: Link<'Environment'> + space: Link<'Space'> + organization: Link<'Organization'> } /** * Free-form installation parameters (API limits stringified length to 32KB) diff --git a/lib/entities/app-key.ts b/lib/entities/app-key.ts index fff467f566..cd89e83558 100644 --- a/lib/entities/app-key.ts +++ b/lib/entities/app-key.ts @@ -1,13 +1,13 @@ import copy from 'fast-copy' import { toPlainObject } from 'contentful-sdk-core' import type { Except } from 'type-fest' -import type { BasicMetaSysProps, DefaultElements, MakeRequest, SysLink } from '../common-types' +import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' type AppKeySys = Except & { - appDefinition: SysLink - organization: SysLink + appDefinition: Link<'AppDefinition'> + organization: Link<'Organization'> } export interface JWK { diff --git a/lib/entities/app-signed-request.ts b/lib/entities/app-signed-request.ts index 873ffdce3a..f3358a1d96 100644 --- a/lib/entities/app-signed-request.ts +++ b/lib/entities/app-signed-request.ts @@ -1,12 +1,12 @@ import copy from 'fast-copy' import { toPlainObject } from 'contentful-sdk-core' import type { Except } from 'type-fest' -import type { BasicMetaSysProps, DefaultElements, MakeRequest, SysLink } from '../common-types' +import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' type AppSignedRequestSys = Except & { - appDefinition: SysLink - space: SysLink - environment: SysLink + appDefinition: Link<'AppDefinition'> + space: Link<'Space'> + environment: Link<'Environment'> } export type AppSignedRequestProps = { diff --git a/lib/entities/app-signing-secret.ts b/lib/entities/app-signing-secret.ts index 102b7a6b96..1a9fa431f3 100644 --- a/lib/entities/app-signing-secret.ts +++ b/lib/entities/app-signing-secret.ts @@ -1,12 +1,12 @@ import copy from 'fast-copy' import { toPlainObject } from 'contentful-sdk-core' import type { Except } from 'type-fest' -import type { BasicMetaSysProps, DefaultElements, MakeRequest, SysLink } from '../common-types' +import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' import enhanceWithMethods from '../enhance-with-methods' type AppSigningSecretSys = Except & { - appDefinition: SysLink - organization: SysLink + appDefinition: Link<'AppDefinition'> + organization: Link<'Organization'> } export type AppSigningSecretProps = { diff --git a/lib/entities/app-upload.ts b/lib/entities/app-upload.ts index 8b36b14f7b..3c242202bd 100644 --- a/lib/entities/app-upload.ts +++ b/lib/entities/app-upload.ts @@ -1,7 +1,7 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import copy from 'fast-copy' import type { Except } from 'type-fest' -import type { BasicMetaSysProps, SysLink, DefaultElements, MakeRequest } from '../common-types' +import type { BasicMetaSysProps, DefaultElements, MakeRequest, Link } from '../common-types' import { wrapCollection } from '../common-utils' import enhanceWithMethods from '../enhance-with-methods' @@ -10,7 +10,7 @@ type AppUploadSys = Except export type AppUploadProps = { sys: AppUploadSys & { expiresAt: string - organization: SysLink + organization: Link<'Organization'> } } diff --git a/lib/entities/comment.ts b/lib/entities/comment.ts index 1fc40a5424..cbcdd92e1f 100644 --- a/lib/entities/comment.ts +++ b/lib/entities/comment.ts @@ -9,7 +9,6 @@ import type { GetSpaceEnvironmentParams, Link, MakeRequest, - SysLink, VersionedLink, } from '../common-types' import { wrapCollection } from '../common-utils' @@ -28,8 +27,8 @@ export type CommentSysProps = Pick< 'id' | 'version' | 'createdAt' | 'createdBy' | 'updatedAt' | 'updatedBy' > & { type: 'Comment' - space: SysLink - environment: SysLink + space: Link<'Space'> + environment: Link<'Environment'> parentEntity: | Link<'ContentType'> | LinkWithReference<'ContentType'> diff --git a/lib/entities/content-type.ts b/lib/entities/content-type.ts index cb8d3e40bc..e1b2745fc9 100644 --- a/lib/entities/content-type.ts +++ b/lib/entities/content-type.ts @@ -8,7 +8,6 @@ import type { Link, MakeRequest, QueryOptions, - SysLink, } from '../common-types' import { wrapCollection } from '../common-utils' import enhanceWithMethods from '../enhance-with-methods' @@ -40,8 +39,8 @@ export type AnnotationAssignment = Link<'Annotation'> & { export type ContentTypeProps = { sys: BasicMetaSysProps & { - space: SysLink - environment: SysLink + space: Link<'Space'> + environment: Link<'Environment'> firstPublishedAt?: string publishedCounter?: number publishedVersion?: number diff --git a/lib/entities/editor-interface.ts b/lib/entities/editor-interface.ts index 5072db9c01..a7da304705 100644 --- a/lib/entities/editor-interface.ts +++ b/lib/entities/editor-interface.ts @@ -1,7 +1,7 @@ import copy from 'fast-copy' import { freezeSys, toPlainObject } from 'contentful-sdk-core' import enhanceWithMethods from '../enhance-with-methods' -import type { MetaSysProps, MetaLinkProps, DefaultElements, MakeRequest } from '../common-types' +import type { MetaSysProps, DefaultElements, MakeRequest, Link } from '../common-types' import { wrapCollection } from '../common-utils' import type { DefinedParameters } from './widget-parameters' @@ -86,9 +86,9 @@ export interface SidebarItem { export type EditorInterfaceProps = { sys: MetaSysProps & { - space: { sys: MetaLinkProps } - environment: { sys: MetaLinkProps } - contentType: { sys: MetaLinkProps } + space: Link<'Space'> + environment: Link<'Environment'> + contentType: Link<'ContentType'> } /** * Array of fields and their associated widgetId diff --git a/lib/entities/environment-alias.ts b/lib/entities/environment-alias.ts index 15f53153b4..9e8e5509f1 100644 --- a/lib/entities/environment-alias.ts +++ b/lib/entities/environment-alias.ts @@ -4,18 +4,17 @@ import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' import type { DefaultElements, - MetaLinkProps, BasicMetaSysProps, - SysLink, MakeRequest, + Link, } from '../common-types' export type EnvironmentAliasProps = { /** * System meta data */ - sys: BasicMetaSysProps & { space: SysLink } - environment: { sys: MetaLinkProps } + sys: BasicMetaSysProps & { space: Link<'Space'> } + environment: Link<'Environment'> } export type CreateEnvironmentAliasProps = Omit diff --git a/lib/entities/environment.ts b/lib/entities/environment.ts index 96d89aec6f..c27cf1ce2d 100644 --- a/lib/entities/environment.ts +++ b/lib/entities/environment.ts @@ -4,13 +4,13 @@ import enhanceWithMethods from '../enhance-with-methods' import type { ContentfulEnvironmentAPI } from '../create-environment-api' import createEnvironmentApi from '../create-environment-api' import { wrapCollection } from '../common-utils' -import type { DefaultElements, SysLink, BasicMetaSysProps, MakeRequest } from '../common-types' +import type { DefaultElements, BasicMetaSysProps, MakeRequest, Link } from '../common-types' type EnvironmentMetaSys = BasicMetaSysProps & { - status: SysLink - space: SysLink - aliases?: Array - aliasedEnvironment?: SysLink + status: Link<'Status'> + space: Link<'Space'> + aliases?: Array> + aliasedEnvironment?: Link<'Environment'> } export type EnvironmentProps = { diff --git a/lib/entities/extension.ts b/lib/entities/extension.ts index e76a5f535b..a303686d50 100644 --- a/lib/entities/extension.ts +++ b/lib/entities/extension.ts @@ -8,12 +8,12 @@ import type { ParameterDefinition, } from './widget-parameters' import { wrapCollection } from '../common-utils' -import type { DefaultElements, BasicMetaSysProps, SysLink, MakeRequest } from '../common-types' +import type { DefaultElements, BasicMetaSysProps, MakeRequest, Link } from '../common-types' import type { SetRequired, RequireExactlyOne } from 'type-fest' type ExtensionSysProps = BasicMetaSysProps & { - space: SysLink - environment: SysLink + space: Link<'Space'> + environment: Link<'Environment'> srcdocSha256?: string } diff --git a/lib/entities/locale.ts b/lib/entities/locale.ts index 71ea43c70a..0f79a83c42 100644 --- a/lib/entities/locale.ts +++ b/lib/entities/locale.ts @@ -3,10 +3,10 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import type { Except, SetOptional } from 'type-fest' import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' -import type { BasicMetaSysProps, SysLink, DefaultElements, MakeRequest } from '../common-types' +import type { BasicMetaSysProps, DefaultElements, MakeRequest, Link } from '../common-types' export type LocaleProps = { - sys: BasicMetaSysProps & { space: SysLink; environment: SysLink } + sys: BasicMetaSysProps & { space: Link<'Space'>; environment: Link<'Environment'> } /** * Locale name */ diff --git a/lib/entities/organization-invitation.ts b/lib/entities/organization-invitation.ts index eab1ee80fc..32d3c1e2ca 100644 --- a/lib/entities/organization-invitation.ts +++ b/lib/entities/organization-invitation.ts @@ -1,10 +1,10 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import copy from 'fast-copy' -import type { DefaultElements, MakeRequest, MetaLinkProps, MetaSysProps } from '../common-types' +import type { DefaultElements, Link, MakeRequest, MetaSysProps } from '../common-types' export type OrganizationInvitationProps = { sys: MetaSysProps & { - organizationMembership: { sys: MetaLinkProps } + organizationMembership: Link<'OrganizationMembership'> user: Record | null invitationUrl: string status: string diff --git a/lib/entities/organization-membership.ts b/lib/entities/organization-membership.ts index b93110208b..e04548c30d 100644 --- a/lib/entities/organization-membership.ts +++ b/lib/entities/organization-membership.ts @@ -2,13 +2,13 @@ import copy from 'fast-copy' import { freezeSys, toPlainObject } from 'contentful-sdk-core' import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' -import type { MetaSysProps, DefaultElements, MetaLinkProps, MakeRequest } from '../common-types' +import type { MetaSysProps, DefaultElements, MakeRequest, Link } from '../common-types' export type OrganizationMembershipProps = { /** * System metadata */ - sys: MetaSysProps & { user: { sys: MetaLinkProps } } + sys: MetaSysProps & { user: Link<'User'> } /** * Role diff --git a/lib/entities/resource-provider.ts b/lib/entities/resource-provider.ts index f37dc1cb6f..9342135620 100644 --- a/lib/entities/resource-provider.ts +++ b/lib/entities/resource-provider.ts @@ -2,8 +2,8 @@ import type { BasicMetaSysProps, CollectionProp, DefaultElements, + Link, MakeRequest, - SysLink, } from '../common-types' import { toPlainObject, freezeSys } from 'contentful-sdk-core' import copy from 'fast-copy' @@ -16,8 +16,8 @@ export type ResourceProviderProps = { * System metadata */ sys: Omit & { - organization: SysLink - appDefinition: SysLink + organization: Link<'Organization'> + appDefinition: Link<'AppDefinition'> } /** * Resource Provider type, value is 'function' @@ -26,7 +26,7 @@ export type ResourceProviderProps = { /** * Link to a Contentful function */ - function: SysLink + function: Link<'Function'> } export type UpsertResourceProviderProps = Omit & { diff --git a/lib/entities/resource-type.ts b/lib/entities/resource-type.ts index 7855a012ef..f51ca66aea 100644 --- a/lib/entities/resource-type.ts +++ b/lib/entities/resource-type.ts @@ -3,8 +3,8 @@ import type { CursorPaginatedCollectionProp, DefaultElements, GetResourceTypeParams, + Link, MakeRequest, - SysLink, } from '../common-types' import { toPlainObject, freezeSys } from 'contentful-sdk-core' import copy from 'fast-copy' @@ -16,9 +16,9 @@ export type ResourceTypeProps = { * System metadata */ sys: Omit & { - appDefinition: SysLink - resourceProvider: SysLink - organization: SysLink + appDefinition: Link<'AppDefinition'> + resourceProvider: Link<'ResourceProvider'> + organization: Link<'Organization'> } /** * Resource Type name diff --git a/lib/entities/resource.ts b/lib/entities/resource.ts index b57e610d80..8597af70d7 100644 --- a/lib/entities/resource.ts +++ b/lib/entities/resource.ts @@ -1,8 +1,8 @@ import type { BasicCursorPaginationOptions, CursorPaginatedCollectionProp, + Link, MakeRequest, - SysLink, } from '../common-types' import { wrapCursorPaginatedCollection } from '../common-utils' import { freezeSys, toPlainObject } from 'contentful-sdk-core' @@ -23,9 +23,9 @@ export type ResourceProps = { sys: { type: 'Resource' urn: string - resourceType: SysLink - resourceProvider: SysLink - appDefinition: SysLink + resourceType: Link<'ResourceType'> + resourceProvider: Link<'ResourceProvider'> + appDefinition: Link<'AppDefinition'> } fields: { title: string diff --git a/lib/entities/role.ts b/lib/entities/role.ts index 87181fd0d6..1fb471866c 100644 --- a/lib/entities/role.ts +++ b/lib/entities/role.ts @@ -2,7 +2,7 @@ import copy from 'fast-copy' import { freezeSys, toPlainObject } from 'contentful-sdk-core' import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' -import type { DefaultElements, BasicMetaSysProps, SysLink, MakeRequest } from '../common-types' +import type { DefaultElements, BasicMetaSysProps, MakeRequest, Link } from '../common-types' export type ActionType = | 'read' @@ -20,7 +20,7 @@ export type ConstraintType = { } export type RoleProps = { - sys: BasicMetaSysProps & { space: SysLink } + sys: BasicMetaSysProps & { space: Link<'Space'> } name: string description?: string /** diff --git a/lib/entities/scheduled-action.ts b/lib/entities/scheduled-action.ts index 8f910a8685..66a69d2105 100644 --- a/lib/entities/scheduled-action.ts +++ b/lib/entities/scheduled-action.ts @@ -3,10 +3,8 @@ import copy from 'fast-copy' import type { DefaultElements, ISO8601Timestamp, - MetaLinkProps, Link, MakeRequest, - SysLink, ScheduledActionReferenceFilters, BasicCursorPaginationOptions, CollectionProp, @@ -52,7 +50,7 @@ export type ScheduledActionSysProps = { id: string type: 'ScheduledAction' version: number - space: SysLink + space: Link<'Space'> status: ScheduledActionStatus createdAt: ISO8601Timestamp createdBy: Link<'User'> | Link<'AppDefinition'> @@ -72,7 +70,7 @@ export type ScheduledActionProps = { sys: ScheduledActionSysProps action: SchedulableActionType entity: Link - environment?: { sys: MetaLinkProps } + environment?: Link<'Environment'> scheduledFor: { datetime: ISO8601Timestamp /** diff --git a/lib/entities/space-member.ts b/lib/entities/space-member.ts index a2d4818b98..a8545efad8 100644 --- a/lib/entities/space-member.ts +++ b/lib/entities/space-member.ts @@ -1,6 +1,6 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import copy from 'fast-copy' -import type { DefaultElements, MakeRequest, MetaLinkProps, MetaSysProps } from '../common-types' +import type { DefaultElements, Link, MakeRequest, MetaSysProps } from '../common-types' import { wrapCollection } from '../common-utils' export type SpaceMemberProps = { @@ -12,7 +12,7 @@ export type SpaceMemberProps = { /** * Array of Role Links */ - roles: { sys: MetaLinkProps }[] + roles: Link<'Role'>[] } export interface SpaceMember extends SpaceMemberProps, DefaultElements {} diff --git a/lib/entities/space-membership.ts b/lib/entities/space-membership.ts index a8bf6d4a7a..b677f9484a 100644 --- a/lib/entities/space-membership.ts +++ b/lib/entities/space-membership.ts @@ -2,13 +2,13 @@ import copy from 'fast-copy' import { freezeSys, toPlainObject } from 'contentful-sdk-core' import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' -import type { SysLink, MetaSysProps, DefaultElements, MakeRequest } from '../common-types' +import type { MetaSysProps, DefaultElements, MakeRequest, Link } from '../common-types' export type SpaceMembershipProps = { - sys: MetaSysProps & { space: SysLink; user: SysLink } - user: SysLink + sys: MetaSysProps & { space: Link<'Space'>; user: Link<'User'> } + user: Link<'User'> admin: boolean - roles: SysLink[] + roles: Link<'Role'>[] } export type CreateSpaceMembershipProps = Omit & { diff --git a/lib/entities/tag.ts b/lib/entities/tag.ts index 98bc4c88db..28f4e623c6 100644 --- a/lib/entities/tag.ts +++ b/lib/entities/tag.ts @@ -3,9 +3,9 @@ import copy from 'fast-copy' import type { DefaultElements, GetTagParams, + Link, MakeRequest, MetaSysProps, - SysLink, } from '../common-types' import { wrapCollection } from '../common-utils' import enhanceWithMethods from '../enhance-with-methods' @@ -18,8 +18,8 @@ export type TagSysProps = Pick< > & { type: 'Tag' visibility: TagVisibility - space: SysLink - environment: SysLink + space: Link<'Space'> + environment: Link<'Environment'> } export type TagProps = { diff --git a/lib/entities/task.ts b/lib/entities/task.ts index 30ab37f354..bd58b0c642 100644 --- a/lib/entities/task.ts +++ b/lib/entities/task.ts @@ -7,7 +7,6 @@ import type { GetTaskParams, Link, MakeRequest, - SysLink, } from '../common-types' import { wrapCollection } from '../common-utils' import enhanceWithMethods from '../enhance-with-methods' @@ -19,8 +18,8 @@ export type TaskSysProps = Pick< 'id' | 'version' | 'createdAt' | 'createdBy' | 'updatedAt' | 'updatedBy' > & { type: 'Task' - space: SysLink - environment: SysLink + space: Link<'Space'> + environment: Link<'Environment'> parentEntity: Link<'Entry'> } diff --git a/lib/entities/team-membership.ts b/lib/entities/team-membership.ts index 8f152318f5..e658a5283e 100644 --- a/lib/entities/team-membership.ts +++ b/lib/entities/team-membership.ts @@ -2,16 +2,21 @@ import copy from 'fast-copy' import { freezeSys, toPlainObject } from 'contentful-sdk-core' import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' -import type { DefaultElements, MetaSysProps, MetaLinkProps, MakeRequest } from '../common-types' +import type { + DefaultElements, + MetaSysProps, + MakeRequest, + Link, +} from '../common-types' export type TeamMembershipProps = { /** * System metadata */ sys: MetaSysProps & { - team: { sys: MetaLinkProps } - organization: { sys: MetaLinkProps } - organizationMembership: { sys: MetaLinkProps } + team: Link<'Team'> + organization: Link<'Organization'> + organizationMembership: Link<'OrganizationMembership'> } /** diff --git a/lib/entities/team-space-membership.ts b/lib/entities/team-space-membership.ts index ec30fd8896..79714f6708 100644 --- a/lib/entities/team-space-membership.ts +++ b/lib/entities/team-space-membership.ts @@ -4,8 +4,8 @@ import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' import type { DefaultElements, + Link, MakeRequest, - MetaLinkProps, MetaSysProps, QueryOptions, } from '../common-types' @@ -19,7 +19,7 @@ export type TeamSpaceMembershipProps = { /** * System metadata */ - sys: MetaSysProps & { team: { sys: MetaLinkProps }; space: { sys: MetaLinkProps } } + sys: MetaSysProps & { team: Link<'Team'>; space: Link<'Space'> } /** * Is admin @@ -29,7 +29,7 @@ export type TeamSpaceMembershipProps = { /** * Roles */ - roles: { sys: MetaLinkProps }[] + roles: Link<'Role'>[] } export type CreateTeamSpaceMembershipProps = Omit diff --git a/lib/entities/team.ts b/lib/entities/team.ts index 017069d10e..03d49b9967 100644 --- a/lib/entities/team.ts +++ b/lib/entities/team.ts @@ -2,13 +2,13 @@ import copy from 'fast-copy' import { freezeSys, toPlainObject } from 'contentful-sdk-core' import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' -import type { DefaultElements, MetaSysProps, MetaLinkProps, MakeRequest } from '../common-types' +import type { DefaultElements, MetaSysProps, MakeRequest, Link } from '../common-types' export type TeamProps = { /** * System metadata */ - sys: MetaSysProps & { memberCount: number; organization: { sys: MetaLinkProps } } + sys: MetaSysProps & { memberCount: number; organization: Link<'Organization'> } /** * Name of the team diff --git a/lib/entities/ui-config.ts b/lib/entities/ui-config.ts index 8807ba80cf..dda47cf70e 100644 --- a/lib/entities/ui-config.ts +++ b/lib/entities/ui-config.ts @@ -1,6 +1,6 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import copy from 'fast-copy' -import type { BasicMetaSysProps, DefaultElements, MakeRequest, SysLink } from '../common-types' +import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' import createUIConfigApi from '../create-ui-config-api' import enhanceWithMethods from '../enhance-with-methods' @@ -18,8 +18,8 @@ export type UIConfigProps = { } export interface UIConfigSysProps extends BasicMetaSysProps { - space: SysLink - environment: SysLink + space: Link<'Space'> + environment: Link<'Environment'> } interface HomeView { diff --git a/lib/entities/upload-credential.ts b/lib/entities/upload-credential.ts index 3e2512fa92..adfb4ff41c 100644 --- a/lib/entities/upload-credential.ts +++ b/lib/entities/upload-credential.ts @@ -1,13 +1,13 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import copy from 'fast-copy' -import type { DefaultElements, MakeRequest, MetaSysProps, SysLink } from '../common-types' +import type { DefaultElements, Link, MakeRequest, MetaSysProps } from '../common-types' import enhanceWithMethods from '../enhance-with-methods' export type UploadCredentialProps = { /** * System metadata */ - sys: MetaSysProps & { space: SysLink; environment?: SysLink } + sys: MetaSysProps & { space: Link<'Space'>; environment?: Link<'Environment'> } } export interface UploadCredential diff --git a/lib/entities/upload.ts b/lib/entities/upload.ts index 36ea3cb0a0..208976c9cd 100644 --- a/lib/entities/upload.ts +++ b/lib/entities/upload.ts @@ -1,13 +1,13 @@ import copy from 'fast-copy' import { freezeSys, toPlainObject } from 'contentful-sdk-core' import enhanceWithMethods from '../enhance-with-methods' -import type { DefaultElements, MakeRequest, MetaSysProps, SysLink } from '../common-types' +import type { DefaultElements, Link, MakeRequest, MetaSysProps } from '../common-types' export type UploadProps = { /** * System metadata */ - sys: MetaSysProps & { space: SysLink; environment?: SysLink } + sys: MetaSysProps & { space: Link<'Space'>; environment?: Link<'Environment'> } } export interface Upload extends UploadProps, DefaultElements { diff --git a/lib/entities/usage.ts b/lib/entities/usage.ts index 43ba3beece..dacc812985 100644 --- a/lib/entities/usage.ts +++ b/lib/entities/usage.ts @@ -2,8 +2,8 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import copy from 'fast-copy' import type { DefaultElements, + Link, MakeRequest, - MetaLinkProps, MetaSysProps, QueryOptions, } from '../common-types' @@ -23,7 +23,7 @@ export type UsageProps = { * System metadata */ sys: MetaSysProps & { - organization?: { sys: MetaLinkProps } + organization?: Link<'Organization'> } /** diff --git a/lib/entities/user-ui-config.ts b/lib/entities/user-ui-config.ts index 9945d89621..e441cc8b43 100644 --- a/lib/entities/user-ui-config.ts +++ b/lib/entities/user-ui-config.ts @@ -1,6 +1,6 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import copy from 'fast-copy' -import type { BasicMetaSysProps, DefaultElements, MakeRequest, SysLink } from '../common-types' +import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' import createUserUIConfigApi from '../create-user-ui-config-api' import enhanceWithMethods from '../enhance-with-methods' @@ -15,8 +15,8 @@ export type UserUIConfigProps = { } export interface UserUIConfigSysProps extends BasicMetaSysProps { - space: SysLink - environment: SysLink + space: Link<'Space'> + environment: Link<'Environment'> } interface ViewFolder { diff --git a/lib/entities/webhook.ts b/lib/entities/webhook.ts index be750cc4a1..73f15f5a1a 100644 --- a/lib/entities/webhook.ts +++ b/lib/entities/webhook.ts @@ -5,9 +5,8 @@ import type { BasicMetaSysProps, CollectionProp, DefaultElements, + Link, MakeRequest, - MetaLinkProps, - SysLink, } from '../common-types' import { wrapCollection } from '../common-utils' import enhanceWithMethods from '../enhance-with-methods' @@ -133,7 +132,7 @@ export type WebhookHealthProps = { /** * System metadata */ - sys: WebhookHealthSys & { space: { sys: MetaLinkProps } } + sys: WebhookHealthSys & { space: Link<'Space'> } /** * Webhook call statistics @@ -144,7 +143,7 @@ export type WebhookHealthProps = { export type WebhookSigningSecretSys = Except export type WebhookSigningSecretProps = { - sys: WebhookSigningSecretSys & { space: { sys: MetaLinkProps } } + sys: WebhookSigningSecretSys & { space: Link<'Space'> } redactedValue: string } @@ -155,7 +154,7 @@ export type WebhookRetryPolicyPayload = { export type WebhookRetryPolicySys = Except export type WebhookRetryPolicyProps = { - sys: WebhookRetryPolicySys & { space: { sys: MetaLinkProps } } + sys: WebhookRetryPolicySys & { space: Link<'Space'> } maxRetries: number } @@ -163,7 +162,7 @@ export type WebhookProps = { /** * System metadata */ - sys: BasicMetaSysProps & { space: SysLink } + sys: BasicMetaSysProps & { space: Link<'Space'> } /** * Webhook name diff --git a/lib/entities/workflow-definition.ts b/lib/entities/workflow-definition.ts index e3b3f93ce1..2a348dd3df 100644 --- a/lib/entities/workflow-definition.ts +++ b/lib/entities/workflow-definition.ts @@ -8,7 +8,6 @@ import type { Link, MakeRequest, PaginationQueryOptions, - SysLink, } from '../common-types' import { wrapCollection } from '../common-utils' import enhanceWithMethods from '../enhance-with-methods' @@ -101,8 +100,8 @@ export type WorkflowDefinitionSysProps = Pick< 'id' | 'version' | 'createdAt' | 'createdBy' | 'updatedAt' | 'updatedBy' > & { type: 'WorkflowDefinition' - space: SysLink - environment: SysLink + space: Link<'Space'> + environment: Link<'Environment'> isLocked: boolean } diff --git a/lib/entities/workflow.ts b/lib/entities/workflow.ts index cbbb013301..18bd0747fb 100644 --- a/lib/entities/workflow.ts +++ b/lib/entities/workflow.ts @@ -8,7 +8,6 @@ import type { Link, MakeRequest, PaginationQueryOptions, - SysLink, } from '../common-types' import { wrapCollection } from '../common-utils' import enhanceWithMethods from '../enhance-with-methods' @@ -18,11 +17,11 @@ export type WorkflowSysProps = Pick< 'id' | 'version' | 'createdAt' | 'createdBy' | 'updatedAt' | 'updatedBy' > & { type: 'Workflow' - space: SysLink - environment: SysLink - completedBy?: SysLink + space: Link<'Space'> + environment: Link<'Environment'> + completedBy?: Link<'User'> | Link<'AppDefinition'> completedAt?: string - deletedBy?: SysLink + deletedBy?: Link<'User'> | Link<'AppDefinition'> deletedAt?: string entity: Link<'Entry'> workflowDefinition: Link<'WorkflowDefinition'> diff --git a/lib/entities/workflows-changelog-entry.ts b/lib/entities/workflows-changelog-entry.ts index 0a6ba5f59c..b7083c42ee 100644 --- a/lib/entities/workflows-changelog-entry.ts +++ b/lib/entities/workflows-changelog-entry.ts @@ -5,7 +5,6 @@ import type { Link, MakeRequest, PaginationQueryOptions, - SysLink, VersionedLink, } from '../common-types' import { wrapCollection } from '../common-utils' @@ -25,7 +24,7 @@ export type WorkflowsChangelogQueryOptions = Omit | Link<'AppDefinition'> eventAt: string workflow: VersionedLink<'Workflow'> workflowDefinition: Link<'WorkflowDefinition'> From eeb2e7b3778ff0a68ae37708dd0832862cb6eb11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andi=20Pa=CC=88tzold?= Date: Wed, 26 Mar 2025 15:04:03 +0100 Subject: [PATCH 02/12] chore: prettier --- lib/entities/app-action.ts | 7 +------ lib/entities/app-definition.ts | 7 +------ lib/entities/app-event-subscription.ts | 7 +------ lib/entities/environment-alias.ts | 7 +------ lib/entities/team-membership.ts | 7 +------ 5 files changed, 5 insertions(+), 30 deletions(-) diff --git a/lib/entities/app-action.ts b/lib/entities/app-action.ts index 74c069f78a..b4faa67777 100644 --- a/lib/entities/app-action.ts +++ b/lib/entities/app-action.ts @@ -2,12 +2,7 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import copy from 'fast-copy' import type { Except } from 'type-fest' import { wrapCollection } from '../common-utils' -import type { - BasicMetaSysProps, - DefaultElements, - Link, - MakeRequest, -} from '../common-types' +import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' import type { ParameterDefinition } from './widget-parameters' import enhanceWithMethods from '../enhance-with-methods' diff --git a/lib/entities/app-definition.ts b/lib/entities/app-definition.ts index 90ea82e8d5..0e7e682b05 100644 --- a/lib/entities/app-definition.ts +++ b/lib/entities/app-definition.ts @@ -1,11 +1,6 @@ import copy from 'fast-copy' import { freezeSys, toPlainObject } from 'contentful-sdk-core' -import type { - DefaultElements, - BasicMetaSysProps, - MakeRequest, - Link, -} from '../common-types' +import type { DefaultElements, BasicMetaSysProps, MakeRequest, Link } from '../common-types' import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' import type { ContentfulAppDefinitionAPI } from '../create-app-definition-api' diff --git a/lib/entities/app-event-subscription.ts b/lib/entities/app-event-subscription.ts index 2940d11859..47efb7a3e7 100644 --- a/lib/entities/app-event-subscription.ts +++ b/lib/entities/app-event-subscription.ts @@ -1,12 +1,7 @@ import copy from 'fast-copy' import { toPlainObject } from 'contentful-sdk-core' import type { Except } from 'type-fest' -import type { - BasicMetaSysProps, - DefaultElements, - Link, - MakeRequest, -} from '../common-types' +import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' import enhanceWithMethods from '../enhance-with-methods' type AppEventSubscriptionSys = Except & { diff --git a/lib/entities/environment-alias.ts b/lib/entities/environment-alias.ts index 9e8e5509f1..49fa120c30 100644 --- a/lib/entities/environment-alias.ts +++ b/lib/entities/environment-alias.ts @@ -2,12 +2,7 @@ import copy from 'fast-copy' import { freezeSys, toPlainObject } from 'contentful-sdk-core' import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' -import type { - DefaultElements, - BasicMetaSysProps, - MakeRequest, - Link, -} from '../common-types' +import type { DefaultElements, BasicMetaSysProps, MakeRequest, Link } from '../common-types' export type EnvironmentAliasProps = { /** diff --git a/lib/entities/team-membership.ts b/lib/entities/team-membership.ts index e658a5283e..aef9c4e018 100644 --- a/lib/entities/team-membership.ts +++ b/lib/entities/team-membership.ts @@ -2,12 +2,7 @@ import copy from 'fast-copy' import { freezeSys, toPlainObject } from 'contentful-sdk-core' import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' -import type { - DefaultElements, - MetaSysProps, - MakeRequest, - Link, -} from '../common-types' +import type { DefaultElements, MetaSysProps, MakeRequest, Link } from '../common-types' export type TeamMembershipProps = { /** From 2aeb02813e3887e93b950ee54c990ed34c7960d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andi=20Pa=CC=88tzold?= Date: Fri, 28 Mar 2025 12:46:47 +0100 Subject: [PATCH 03/12] fix: more specific types for subject links --- lib/adapters/REST/endpoints/asset.ts | 2 +- lib/common-types.ts | 140 +++++++++--------- lib/create-environment-api.ts | 2 +- lib/entities/access-token.ts | 2 +- lib/entities/api-key.ts | 2 +- lib/entities/app-access-token.ts | 2 +- lib/entities/app-action-call.ts | 2 +- lib/entities/app-action.ts | 2 +- lib/entities/app-bundle.ts | 2 +- lib/entities/app-definition.ts | 2 +- lib/entities/app-details.ts | 2 +- lib/entities/app-event-subscription.ts | 2 +- lib/entities/app-installation.ts | 2 +- lib/entities/app-key.ts | 2 +- lib/entities/app-signed-request.ts | 2 +- lib/entities/app-signing-secret.ts | 2 +- lib/entities/app-upload.ts | 2 +- lib/entities/asset.ts | 1 - lib/entities/comment.ts | 2 +- lib/entities/content-type.ts | 2 +- lib/entities/editor-interface.ts | 2 +- lib/entities/entry.ts | 14 +- lib/entities/environment-alias.ts | 2 +- .../environment-template-installation.ts | 2 +- lib/entities/environment-template.ts | 2 +- lib/entities/environment.ts | 2 +- lib/entities/extension.ts | 2 +- lib/entities/locale.ts | 5 +- lib/entities/oauth-application.ts | 2 +- lib/entities/organization-invitation.ts | 2 +- lib/entities/organization-membership.ts | 2 +- lib/entities/organization.ts | 2 +- lib/entities/personal-access-token.ts | 2 +- lib/entities/preview-api-key.ts | 2 +- lib/entities/resource-provider.ts | 2 +- lib/entities/resource-type.ts | 2 +- lib/entities/role.ts | 2 +- lib/entities/snapshot.ts | 2 +- lib/entities/space-member.ts | 2 +- lib/entities/space-membership.ts | 2 +- lib/entities/space.ts | 2 +- lib/entities/tag.ts | 2 +- lib/entities/task.ts | 2 +- lib/entities/team-membership.ts | 2 +- lib/entities/team-space-membership.ts | 2 +- lib/entities/team.ts | 2 +- lib/entities/ui-config.ts | 2 +- lib/entities/upload-credential.ts | 2 +- lib/entities/upload.ts | 5 +- lib/entities/usage.ts | 12 +- lib/entities/user-ui-config.ts | 2 +- lib/entities/user.ts | 2 +- lib/entities/webhook.ts | 10 +- lib/entities/workflow-definition.ts | 2 +- lib/entities/workflow.ts | 2 +- lib/export-types.ts | 2 + lib/plain/common-types.ts | 4 +- lib/plain/entities/upload-credential.ts | 2 +- 58 files changed, 148 insertions(+), 143 deletions(-) diff --git a/lib/adapters/REST/endpoints/asset.ts b/lib/adapters/REST/endpoints/asset.ts index 9188410af1..9fc2779464 100644 --- a/lib/adapters/REST/endpoints/asset.ts +++ b/lib/adapters/REST/endpoints/asset.ts @@ -221,7 +221,7 @@ export const createWithId: RestEndpoint<'Asset', 'createWithId'> = ( export const createFromFiles: RestEndpoint<'Asset', 'createFromFiles'> = async ( http: AxiosInstance, params: GetSpaceEnvironmentParams & { uploadTimeout?: number; releaseId?: string }, - data: Omit, + data: AssetFileProp ) => { if (params.releaseId) { return releaseAsset.createFromFiles(http, params as CreateWithFilesReleaseAssetParams, data, {}) diff --git a/lib/common-types.ts b/lib/common-types.ts index be555deca1..e3811e61a4 100644 --- a/lib/common-types.ts +++ b/lib/common-types.ts @@ -254,17 +254,18 @@ export interface SpaceQueryOptions extends PaginationQueryOptions { spaceId?: string } -export interface BasicMetaSysProps { +export interface BasicMetaSysProps { type: string id: string version: number - createdBy?: Link<'User'> | Link<'AppDefinition'> + createdBy?: { [Subject in TSubject]: Link } createdAt: string - updatedBy?: Link<'User'> | Link<'AppDefinition'> + updatedBy?: { [Subject in TSubject]: Link } updatedAt: string } -export interface MetaSysProps extends BasicMetaSysProps { +export interface MetaSysProps + extends BasicMetaSysProps { space?: Link<'Space'> /** * @deprecated `status` only exists on entities. Please refactor to use a @@ -273,14 +274,14 @@ export interface MetaSysProps extends BasicMetaSysProps { status?: Link<'Status'> publishedVersion?: number archivedVersion?: number - archivedBy?: Link<'User'> | Link<'AppDefinition'> + archivedBy?: { [Subject in TSubject]: Link } archivedAt?: string deletedVersion?: number - deletedBy?: Link<'User'> | Link<'AppDefinition'> + deletedBy?: { [Subject in TSubject]: Link } deletedAt?: string } -export interface EntityMetaSysProps extends MetaSysProps { +export interface EntityMetaSysProps extends MetaSysProps<'User' | 'AppDefinition'> { /** * @deprecated `contentType` only exists on entries. Please refactor to use a * type guard to get the correct `EntryMetaSysProps` type with this property. @@ -297,15 +298,10 @@ export interface EntityMetaSysProps extends MetaSysProps { release?: Link<'Release'> } -export interface EntryMetaSysProps extends EntityMetaSysProps { - contentType: Link<'ContentType'> - automationTags: Link<'Tag'>[] -} - /** * @deprecated Use more specific `Link` instead */ -export interface MetaLinkProps extends Link {} +export interface MetaLinkProps extends Link { } export interface MetadataProps { tags: Link<'Tag'>[] @@ -315,7 +311,7 @@ export interface MetadataProps { /** * @deprecated Use more specific `Link` instead */ -export interface SysLink extends Link {} +export interface SysLink extends Link { } export interface CollectionProp { sys: { @@ -337,11 +333,11 @@ export interface CursorPaginatedCollectionProp export interface Collection extends CollectionProp, - DefaultElements> {} + DefaultElements> { } export interface CursorPaginatedCollection extends CursorPaginatedCollectionProp, - DefaultElements> {} + DefaultElements> { } /* eslint-disable @typescript-eslint/no-explicit-any */ export interface QueryOptions extends BasicQueryOptions { @@ -1265,7 +1261,7 @@ export type MRActions = { } createFromFiles: { params: GetSpaceEnvironmentParams & { uploadTimeout?: number; releaseId?: string } - payload: Omit + payload: AssetFileProp return: AssetProps } processForAllLocales: { @@ -1335,50 +1331,50 @@ export type MRActions = { } Comment: { get: - | { params: GetCommentParams & PlainTextBodyFormat; return: CommentProps } - | { params: GetCommentParams & RichTextBodyFormat; return: RichTextCommentProps } + | { params: GetCommentParams & PlainTextBodyFormat; return: CommentProps } + | { params: GetCommentParams & RichTextBodyFormat; return: RichTextCommentProps } getMany: - | { - params: GetManyCommentsParams & PlainTextBodyFormat & QueryParams - return: CollectionProp - } - | { - params: GetManyCommentsParams & QueryParams & RichTextBodyFormat - return: CollectionProp - } + | { + params: GetManyCommentsParams & PlainTextBodyFormat & QueryParams + return: CollectionProp + } + | { + params: GetManyCommentsParams & QueryParams & RichTextBodyFormat + return: CollectionProp + } getAll: - | { - params: GetManyCommentsParams & QueryParams & PlainTextBodyFormat - return: CollectionProp - } - | { - params: GetManyCommentsParams & QueryParams & RichTextBodyFormat - return: CollectionProp - } + | { + params: GetManyCommentsParams & QueryParams & PlainTextBodyFormat + return: CollectionProp + } + | { + params: GetManyCommentsParams & QueryParams & RichTextBodyFormat + return: CollectionProp + } create: - | { - params: CreateCommentParams & PlainTextBodyFormat - payload: CreateCommentProps - return: CommentProps - } - | { - params: CreateCommentParams & RichTextBodyFormat - payload: RichTextCommentBodyPayload - return: RichTextCommentProps - } + | { + params: CreateCommentParams & PlainTextBodyFormat + payload: CreateCommentProps + return: CommentProps + } + | { + params: CreateCommentParams & RichTextBodyFormat + payload: RichTextCommentBodyPayload + return: RichTextCommentProps + } update: - | { - params: UpdateCommentParams - payload: UpdateCommentProps - headers?: RawAxiosRequestHeaders - return: CommentProps - } - | { - params: UpdateCommentParams - payload: Omit & RichTextCommentBodyPayload - headers?: RawAxiosRequestHeaders - return: RichTextCommentProps - } + | { + params: UpdateCommentParams + payload: UpdateCommentProps + headers?: RawAxiosRequestHeaders + return: CommentProps + } + | { + params: UpdateCommentParams + payload: Omit & RichTextCommentBodyPayload + headers?: RawAxiosRequestHeaders + return: RichTextCommentProps + } delete: { params: DeleteCommentParams; return: void } } Concept: { @@ -1634,9 +1630,9 @@ export type MRActions = { } getForEnvironment: { params: BasicCursorPaginationOptions & - EnvironmentTemplateParams & { - installationId?: string - } + EnvironmentTemplateParams & { + installationId?: string + } return: CursorPaginatedCollectionProp } } @@ -2384,18 +2380,18 @@ export type MROpts< } & (UA extends true ? { userAgent: string } : {}) & ('params' extends keyof MRActions[ET][Action] ? undefined extends MRActions[ET][Action]['params'] - ? { params?: MRActions[ET][Action]['params'] } - : { params: MRActions[ET][Action]['params'] } + ? { params?: MRActions[ET][Action]['params'] } + : { params: MRActions[ET][Action]['params'] } : {}) & ('payload' extends keyof MRActions[ET][Action] ? undefined extends MRActions[ET][Action]['payload'] - ? { payload?: MRActions[ET][Action]['payload'] } - : { payload: MRActions[ET][Action]['payload'] } + ? { payload?: MRActions[ET][Action]['payload'] } + : { payload: MRActions[ET][Action]['payload'] } : {}) & ('headers' extends keyof MRActions[ET][Action] ? undefined extends MRActions[ET][Action]['headers'] - ? { headers?: MRActions[ET][Action]['headers'] } - : { headers: MRActions[ET][Action]['headers'] } + ? { headers?: MRActions[ET][Action]['headers'] } + : { headers: MRActions[ET][Action]['headers'] } : {}) /** @@ -2408,7 +2404,7 @@ export type MRReturn< /** Base interface for all Payload interfaces. Used as part of the MakeRequestOptions to simplify payload definitions. */ -export interface MakeRequestPayload {} +export interface MakeRequestPayload { } export interface MakeRequestOptions { entityType: keyof MRActions @@ -2549,16 +2545,16 @@ export type GetConceptDescendantsParams = GetOrganizationParams & { conceptId: s } export type GetManyConceptParams = GetOrganizationParams & { query?: - | { pageUrl?: string } - | ({ conceptScheme?: string; query?: string } & BasicCursorPaginationOptions & - Omit) + | { pageUrl?: string } + | ({ conceptScheme?: string; query?: string } & BasicCursorPaginationOptions & + Omit) } export type GetConceptSchemeParams = GetOrganizationParams & { conceptSchemeId: string } export type GetManyConceptSchemeParams = GetOrganizationParams & { query?: - | { pageUrl?: string } - | ({ query?: string } & BasicCursorPaginationOptions & Omit) + | { pageUrl?: string } + | ({ query?: string } & BasicCursorPaginationOptions & Omit) } export type DeleteConceptSchemeParams = GetOrganizationParams & { conceptSchemeId: string diff --git a/lib/create-environment-api.ts b/lib/create-environment-api.ts index fb20b81f9f..fa70c30eed 100644 --- a/lib/create-environment-api.ts +++ b/lib/create-environment-api.ts @@ -1103,7 +1103,7 @@ export default function createEnvironmentApi(makeRequest: MakeRequest) { * .catch(console.error) * ``` */ - createAssetFromFiles(data: Omit, options?: CreateAssetFromFilesOptions) { + createAssetFromFiles(data: AssetFileProp, options?: CreateAssetFromFilesOptions) { const raw = this.toPlainObject() as EnvironmentProps return makeRequest({ entityType: 'Asset', diff --git a/lib/entities/access-token.ts b/lib/entities/access-token.ts index 17d009f359..8f2186b4cc 100644 --- a/lib/entities/access-token.ts +++ b/lib/entities/access-token.ts @@ -10,7 +10,7 @@ type Application = { sys: Link<'Application'> } -type AccessTokenSysProps = BasicMetaSysProps & { +type AccessTokenSysProps = BasicMetaSysProps<'User'> & { application: Application | null expiresAt: string | null lastUsedAt: string | null diff --git a/lib/entities/api-key.ts b/lib/entities/api-key.ts index 7544e9d602..2738e010be 100644 --- a/lib/entities/api-key.ts +++ b/lib/entities/api-key.ts @@ -5,7 +5,7 @@ import { wrapCollection } from '../common-utils' import enhanceWithMethods from '../enhance-with-methods' export type ApiKeyProps = { - sys: MetaSysProps + sys: MetaSysProps<'User'> name: string accessToken: string environments: Link<'Environment'>[] diff --git a/lib/entities/app-access-token.ts b/lib/entities/app-access-token.ts index 03cb768662..8c1449cf59 100644 --- a/lib/entities/app-access-token.ts +++ b/lib/entities/app-access-token.ts @@ -3,7 +3,7 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import type { Except } from 'type-fest' import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' -type AppAccessTokenSys = Except & { +type AppAccessTokenSys = Except, 'version' | 'id'> & { space: Link<'Space'> environment: Link<'Environment'> appDefinition: Link<'AppDefinition'> diff --git a/lib/entities/app-action-call.ts b/lib/entities/app-action-call.ts index 9fdaa072f1..6de4d5beeb 100644 --- a/lib/entities/app-action-call.ts +++ b/lib/entities/app-action-call.ts @@ -16,7 +16,7 @@ import type { import type { WebhookCallDetailsProps } from './webhook' import enhanceWithMethods from '../enhance-with-methods' -type AppActionCallSys = Except & { +type AppActionCallSys = Except, 'version'> & { appDefinition: Link<'AppDefinition'> space: Link<'Space'> environment: Link<'Environment'> diff --git a/lib/entities/app-action.ts b/lib/entities/app-action.ts index b4faa67777..b49df34616 100644 --- a/lib/entities/app-action.ts +++ b/lib/entities/app-action.ts @@ -6,7 +6,7 @@ import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../c import type { ParameterDefinition } from './widget-parameters' import enhanceWithMethods from '../enhance-with-methods' -type AppActionSys = Except & { +type AppActionSys = Except, 'version'> & { appDefinition: Link<'AppDefinition'> organization: Link<'Organization'> } diff --git a/lib/entities/app-bundle.ts b/lib/entities/app-bundle.ts index e65fe91e74..f7de453bdd 100644 --- a/lib/entities/app-bundle.ts +++ b/lib/entities/app-bundle.ts @@ -5,7 +5,7 @@ import { wrapCollection } from '../common-utils' import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' import enhanceWithMethods from '../enhance-with-methods' -type AppBundleSys = Except & { +type AppBundleSys = Except, 'version'> & { appDefinition: Link<'AppDefinition'> organization: Link<'Organization'> } diff --git a/lib/entities/app-definition.ts b/lib/entities/app-definition.ts index 0e7e682b05..301844dec8 100644 --- a/lib/entities/app-definition.ts +++ b/lib/entities/app-definition.ts @@ -52,7 +52,7 @@ export type AppDefinitionProps = { /** * System metadata */ - sys: BasicMetaSysProps & { + sys: BasicMetaSysProps<'User'> & { organization: Link<'Organization'> shared: boolean } diff --git a/lib/entities/app-details.ts b/lib/entities/app-details.ts index d580e6cee1..f264fd9686 100644 --- a/lib/entities/app-details.ts +++ b/lib/entities/app-details.ts @@ -4,7 +4,7 @@ import type { Except } from 'type-fest' import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' import enhanceWithMethods from '../enhance-with-methods' -type AppDetailsSys = Except & { +type AppDetailsSys = Except, 'version' | 'id'> & { appDefinition: Link<'AppDefinition'> organization: Link<'Organization'> } diff --git a/lib/entities/app-event-subscription.ts b/lib/entities/app-event-subscription.ts index 47efb7a3e7..3277bed147 100644 --- a/lib/entities/app-event-subscription.ts +++ b/lib/entities/app-event-subscription.ts @@ -4,7 +4,7 @@ import type { Except } from 'type-fest' import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' import enhanceWithMethods from '../enhance-with-methods' -type AppEventSubscriptionSys = Except & { +type AppEventSubscriptionSys = Except, 'version' | 'id'> & { appDefinition: Link<'AppDefinition'> organization: Link<'Organization'> } diff --git a/lib/entities/app-installation.ts b/lib/entities/app-installation.ts index a561dc2c4c..706d8831cd 100644 --- a/lib/entities/app-installation.ts +++ b/lib/entities/app-installation.ts @@ -7,7 +7,7 @@ import type { Except } from 'type-fest' import type { FreeFormParameters } from './widget-parameters' export type AppInstallationProps = { - sys: Omit & { + sys: Omit, 'id'> & { appDefinition: Link<'AppDefinition'> environment: Link<'Environment'> space: Link<'Space'> diff --git a/lib/entities/app-key.ts b/lib/entities/app-key.ts index cd89e83558..54aa561873 100644 --- a/lib/entities/app-key.ts +++ b/lib/entities/app-key.ts @@ -5,7 +5,7 @@ import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../c import enhanceWithMethods from '../enhance-with-methods' import { wrapCollection } from '../common-utils' -type AppKeySys = Except & { +type AppKeySys = Except, 'version'> & { appDefinition: Link<'AppDefinition'> organization: Link<'Organization'> } diff --git a/lib/entities/app-signed-request.ts b/lib/entities/app-signed-request.ts index f3358a1d96..228279d9b3 100644 --- a/lib/entities/app-signed-request.ts +++ b/lib/entities/app-signed-request.ts @@ -3,7 +3,7 @@ import { toPlainObject } from 'contentful-sdk-core' import type { Except } from 'type-fest' import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' -type AppSignedRequestSys = Except & { +type AppSignedRequestSys = Except, 'version' | 'id'> & { appDefinition: Link<'AppDefinition'> space: Link<'Space'> environment: Link<'Environment'> diff --git a/lib/entities/app-signing-secret.ts b/lib/entities/app-signing-secret.ts index 1a9fa431f3..426a29c81c 100644 --- a/lib/entities/app-signing-secret.ts +++ b/lib/entities/app-signing-secret.ts @@ -4,7 +4,7 @@ import type { Except } from 'type-fest' import type { BasicMetaSysProps, DefaultElements, Link, MakeRequest } from '../common-types' import enhanceWithMethods from '../enhance-with-methods' -type AppSigningSecretSys = Except & { +type AppSigningSecretSys = Except, 'version' | 'id'> & { appDefinition: Link<'AppDefinition'> organization: Link<'Organization'> } diff --git a/lib/entities/app-upload.ts b/lib/entities/app-upload.ts index 3c242202bd..8c7a2d4337 100644 --- a/lib/entities/app-upload.ts +++ b/lib/entities/app-upload.ts @@ -5,7 +5,7 @@ import type { BasicMetaSysProps, DefaultElements, MakeRequest, Link } from '../c import { wrapCollection } from '../common-utils' import enhanceWithMethods from '../enhance-with-methods' -type AppUploadSys = Except +type AppUploadSys = Except, 'version'> export type AppUploadProps = { sys: AppUploadSys & { diff --git a/lib/entities/asset.ts b/lib/entities/asset.ts index 332b2ebf87..2c71cd83d9 100644 --- a/lib/entities/asset.ts +++ b/lib/entities/asset.ts @@ -42,7 +42,6 @@ export type CreateAssetProps = Omit export type CreateAssetFromFilesOptions = { uploadTimeout?: number } export interface AssetFileProp { - sys: MetaSysProps fields: { title: { [key: string]: string } description: { [key: string]: string } diff --git a/lib/entities/comment.ts b/lib/entities/comment.ts index cbcdd92e1f..ede45e096b 100644 --- a/lib/entities/comment.ts +++ b/lib/entities/comment.ts @@ -23,7 +23,7 @@ interface LinkWithReference extends Link { } export type CommentSysProps = Pick< - BasicMetaSysProps, + BasicMetaSysProps<'User'>, 'id' | 'version' | 'createdAt' | 'createdBy' | 'updatedAt' | 'updatedBy' > & { type: 'Comment' diff --git a/lib/entities/content-type.ts b/lib/entities/content-type.ts index e1b2745fc9..8196e06928 100644 --- a/lib/entities/content-type.ts +++ b/lib/entities/content-type.ts @@ -38,7 +38,7 @@ export type AnnotationAssignment = Link<'Annotation'> & { } export type ContentTypeProps = { - sys: BasicMetaSysProps & { + sys: BasicMetaSysProps<'User' | 'AppDefinition'> & { space: Link<'Space'> environment: Link<'Environment'> firstPublishedAt?: string diff --git a/lib/entities/editor-interface.ts b/lib/entities/editor-interface.ts index a7da304705..d0ab38d724 100644 --- a/lib/entities/editor-interface.ts +++ b/lib/entities/editor-interface.ts @@ -85,7 +85,7 @@ export interface SidebarItem { } export type EditorInterfaceProps = { - sys: MetaSysProps & { + sys: MetaSysProps<'User' | 'AppDefinition'> & { space: Link<'Space'> environment: Link<'Environment'> contentType: Link<'ContentType'> diff --git a/lib/entities/entry.ts b/lib/entities/entry.ts index afc0bb4736..dbb7768009 100644 --- a/lib/entities/entry.ts +++ b/lib/entities/entry.ts @@ -3,8 +3,9 @@ import copy from 'fast-copy' import type { CollectionProp, DefaultElements, - EntryMetaSysProps, + EntityMetaSysProps, KeyValueMap, + Link, MakeRequest, MetadataProps, } from '../common-types' @@ -14,6 +15,11 @@ import createEntryApi from '../create-entry-api' import enhanceWithMethods from '../enhance-with-methods' import type { AssetProps } from './asset' +export interface EntryMetaSysProps extends EntityMetaSysProps { + contentType: Link<'ContentType'> + automationTags: Link<'Tag'>[] +} + export type EntryProps = { sys: EntryMetaSysProps & S metadata?: MetadataProps @@ -46,12 +52,12 @@ export type EntryReferenceOptionsProps = { include?: number } -export interface Entry extends EntryProps, DefaultElements, ContentfulEntryApi {} +export interface Entry extends EntryProps, DefaultElements, ContentfulEntryApi { } export type WithResourceName = T extends { sys: infer Sys } ? Omit & { - sys: Sys & { urn: string } - } + sys: Sys & { urn: string } + } : never /** diff --git a/lib/entities/environment-alias.ts b/lib/entities/environment-alias.ts index 49fa120c30..0479f9791b 100644 --- a/lib/entities/environment-alias.ts +++ b/lib/entities/environment-alias.ts @@ -8,7 +8,7 @@ export type EnvironmentAliasProps = { /** * System meta data */ - sys: BasicMetaSysProps & { space: Link<'Space'> } + sys: BasicMetaSysProps<'User'> & { space: Link<'Space'> } environment: Link<'Environment'> } diff --git a/lib/entities/environment-template-installation.ts b/lib/entities/environment-template-installation.ts index b7ad4e0acc..6abc0a3a88 100644 --- a/lib/entities/environment-template-installation.ts +++ b/lib/entities/environment-template-installation.ts @@ -27,7 +27,7 @@ export type EnvironmentTemplateInstallationStatus = keyof typeof EnvironmentTemplateInstallationStatuses export type EnvironmentTemplateInstallationProps = { - sys: BasicMetaSysProps & { + sys: BasicMetaSysProps<'User'> & { type: 'EnvironmentTemplateInstallation' space: Link<'Space'> template: VersionedLink<'Template'> diff --git a/lib/entities/environment-template.ts b/lib/entities/environment-template.ts index abd87d5bcb..1d43f32a51 100644 --- a/lib/entities/environment-template.ts +++ b/lib/entities/environment-template.ts @@ -29,7 +29,7 @@ export interface ContentTypeTemplateProps extends Omit } export type EnvironmentTemplateProps = { - sys: BasicMetaSysProps & { version: number; organization: Link<'Organization'> } + sys: BasicMetaSysProps<'User'> & { version: number; organization: Link<'Organization'> } name: string description?: string versionName: string diff --git a/lib/entities/environment.ts b/lib/entities/environment.ts index c27cf1ce2d..d7652e0f1d 100644 --- a/lib/entities/environment.ts +++ b/lib/entities/environment.ts @@ -6,7 +6,7 @@ import createEnvironmentApi from '../create-environment-api' import { wrapCollection } from '../common-utils' import type { DefaultElements, BasicMetaSysProps, MakeRequest, Link } from '../common-types' -type EnvironmentMetaSys = BasicMetaSysProps & { +type EnvironmentMetaSys = BasicMetaSysProps<'User'> & { status: Link<'Status'> space: Link<'Space'> aliases?: Array> diff --git a/lib/entities/extension.ts b/lib/entities/extension.ts index a303686d50..1912ec53c2 100644 --- a/lib/entities/extension.ts +++ b/lib/entities/extension.ts @@ -11,7 +11,7 @@ import { wrapCollection } from '../common-utils' import type { DefaultElements, BasicMetaSysProps, MakeRequest, Link } from '../common-types' import type { SetRequired, RequireExactlyOne } from 'type-fest' -type ExtensionSysProps = BasicMetaSysProps & { +type ExtensionSysProps = BasicMetaSysProps<'User'> & { space: Link<'Space'> environment: Link<'Environment'> srcdocSha256?: string diff --git a/lib/entities/locale.ts b/lib/entities/locale.ts index 0f79a83c42..dd38e4a3c5 100644 --- a/lib/entities/locale.ts +++ b/lib/entities/locale.ts @@ -6,7 +6,10 @@ import { wrapCollection } from '../common-utils' import type { BasicMetaSysProps, DefaultElements, MakeRequest, Link } from '../common-types' export type LocaleProps = { - sys: BasicMetaSysProps & { space: Link<'Space'>; environment: Link<'Environment'> } + sys: BasicMetaSysProps<'User' | 'AppDefinition'> & { + space: Link<'Space'> + environment: Link<'Environment'> + } /** * Locale name */ diff --git a/lib/entities/oauth-application.ts b/lib/entities/oauth-application.ts index 9f75d5fcb9..f860ffb336 100644 --- a/lib/entities/oauth-application.ts +++ b/lib/entities/oauth-application.ts @@ -4,7 +4,7 @@ import enhanceWithMethods from '../enhance-with-methods' import copy from 'fast-copy' import { wrapCursorPaginatedCollection } from '../common-utils' -type OAuthApplicationSysProps = BasicMetaSysProps & { +type OAuthApplicationSysProps = BasicMetaSysProps<'User'> & { lastUsedAt: string | null } diff --git a/lib/entities/organization-invitation.ts b/lib/entities/organization-invitation.ts index 32d3c1e2ca..3320e8f0a2 100644 --- a/lib/entities/organization-invitation.ts +++ b/lib/entities/organization-invitation.ts @@ -3,7 +3,7 @@ import copy from 'fast-copy' import type { DefaultElements, Link, MakeRequest, MetaSysProps } from '../common-types' export type OrganizationInvitationProps = { - sys: MetaSysProps & { + sys: MetaSysProps<'User'> & { organizationMembership: Link<'OrganizationMembership'> user: Record | null invitationUrl: string diff --git a/lib/entities/organization-membership.ts b/lib/entities/organization-membership.ts index e04548c30d..d7c8b5c5db 100644 --- a/lib/entities/organization-membership.ts +++ b/lib/entities/organization-membership.ts @@ -8,7 +8,7 @@ export type OrganizationMembershipProps = { /** * System metadata */ - sys: MetaSysProps & { user: Link<'User'> } + sys: MetaSysProps<'User'> & { user: Link<'User'> } /** * Role diff --git a/lib/entities/organization.ts b/lib/entities/organization.ts index 4610d7d715..29e51e90c6 100644 --- a/lib/entities/organization.ts +++ b/lib/entities/organization.ts @@ -14,7 +14,7 @@ export type OrganizationProps = { /** * System metadata */ - sys: MetaSysProps + sys: MetaSysProps<'User'> /** * Name */ diff --git a/lib/entities/personal-access-token.ts b/lib/entities/personal-access-token.ts index 77aba58444..3f3941f57a 100644 --- a/lib/entities/personal-access-token.ts +++ b/lib/entities/personal-access-token.ts @@ -5,7 +5,7 @@ import { wrapCollection } from '../common-utils' import type { MetaSysProps, DefaultElements, MakeRequest } from '../common-types' export type PersonalAccessTokenProps = { - sys: MetaSysProps & { expiresAt?: string } + sys: MetaSysProps<'User'> & { expiresAt?: string } name: string scopes: 'content_management_manage'[] revokedAt: null | string diff --git a/lib/entities/preview-api-key.ts b/lib/entities/preview-api-key.ts index a419d82624..8986e63c61 100644 --- a/lib/entities/preview-api-key.ts +++ b/lib/entities/preview-api-key.ts @@ -5,7 +5,7 @@ import { wrapCollection } from '../common-utils' import enhanceWithMethods from '../enhance-with-methods' export type PreviewApiKeyProps = { - sys: MetaSysProps + sys: MetaSysProps<'User'> name: string description: string accessToken: string diff --git a/lib/entities/resource-provider.ts b/lib/entities/resource-provider.ts index 9342135620..4c60d85423 100644 --- a/lib/entities/resource-provider.ts +++ b/lib/entities/resource-provider.ts @@ -15,7 +15,7 @@ export type ResourceProviderProps = { /** * System metadata */ - sys: Omit & { + sys: Omit, 'version'> & { organization: Link<'Organization'> appDefinition: Link<'AppDefinition'> } diff --git a/lib/entities/resource-type.ts b/lib/entities/resource-type.ts index f51ca66aea..43a4642628 100644 --- a/lib/entities/resource-type.ts +++ b/lib/entities/resource-type.ts @@ -15,7 +15,7 @@ export type ResourceTypeProps = { /** * System metadata */ - sys: Omit & { + sys: Omit, 'version'> & { appDefinition: Link<'AppDefinition'> resourceProvider: Link<'ResourceProvider'> organization: Link<'Organization'> diff --git a/lib/entities/role.ts b/lib/entities/role.ts index 1fb471866c..3893953fe4 100644 --- a/lib/entities/role.ts +++ b/lib/entities/role.ts @@ -20,7 +20,7 @@ export type ConstraintType = { } export type RoleProps = { - sys: BasicMetaSysProps & { space: Link<'Space'> } + sys: BasicMetaSysProps<'User'> & { space: Link<'Space'> } name: string description?: string /** diff --git a/lib/entities/snapshot.ts b/lib/entities/snapshot.ts index 8dc13b1f91..a5d7e6647c 100644 --- a/lib/entities/snapshot.ts +++ b/lib/entities/snapshot.ts @@ -5,7 +5,7 @@ import { wrapCollection } from '../common-utils' import type { MetaSysProps, DefaultElements, MakeRequest } from '../common-types' export type SnapshotProps = { - sys: MetaSysProps & { + sys: MetaSysProps<'User' | 'AppDefinition'> & { snapshotType: string snapshotEntityType: string } diff --git a/lib/entities/space-member.ts b/lib/entities/space-member.ts index a8545efad8..90285bcf70 100644 --- a/lib/entities/space-member.ts +++ b/lib/entities/space-member.ts @@ -4,7 +4,7 @@ import type { DefaultElements, Link, MakeRequest, MetaSysProps } from '../common import { wrapCollection } from '../common-utils' export type SpaceMemberProps = { - sys: MetaSysProps + sys: MetaSysProps<'User'> /** * User is an admin */ diff --git a/lib/entities/space-membership.ts b/lib/entities/space-membership.ts index b677f9484a..65a846f9b5 100644 --- a/lib/entities/space-membership.ts +++ b/lib/entities/space-membership.ts @@ -5,7 +5,7 @@ import { wrapCollection } from '../common-utils' import type { MetaSysProps, DefaultElements, MakeRequest, Link } from '../common-types' export type SpaceMembershipProps = { - sys: MetaSysProps & { space: Link<'Space'>; user: Link<'User'> } + sys: MetaSysProps<'User'> & { space: Link<'Space'>; user: Link<'User'> } user: Link<'User'> admin: boolean roles: Link<'Role'>[] diff --git a/lib/entities/space.ts b/lib/entities/space.ts index f92d38f573..1e6599dd67 100644 --- a/lib/entities/space.ts +++ b/lib/entities/space.ts @@ -7,7 +7,7 @@ import createSpaceApi from '../create-space-api' import enhanceWithMethods from '../enhance-with-methods' export type SpaceProps = { - sys: BasicMetaSysProps & { organization: { sys: { id: string } }; archivedAt?: string } + sys: BasicMetaSysProps<'User'> & { organization: { sys: { id: string } }; archivedAt?: string } name: string } diff --git a/lib/entities/tag.ts b/lib/entities/tag.ts index 28f4e623c6..240912805a 100644 --- a/lib/entities/tag.ts +++ b/lib/entities/tag.ts @@ -13,7 +13,7 @@ import enhanceWithMethods from '../enhance-with-methods' export type TagVisibility = 'private' | 'public' export type TagSysProps = Pick< - MetaSysProps, + MetaSysProps<'User'>, 'id' | 'version' | 'createdAt' | 'createdBy' | 'updatedAt' | 'updatedBy' > & { type: 'Tag' diff --git a/lib/entities/task.ts b/lib/entities/task.ts index bd58b0c642..bac95bff69 100644 --- a/lib/entities/task.ts +++ b/lib/entities/task.ts @@ -14,7 +14,7 @@ import enhanceWithMethods from '../enhance-with-methods' export type TaskStatus = 'active' | 'resolved' export type TaskSysProps = Pick< - BasicMetaSysProps, + BasicMetaSysProps<'User' | 'AppDefinition'>, 'id' | 'version' | 'createdAt' | 'createdBy' | 'updatedAt' | 'updatedBy' > & { type: 'Task' diff --git a/lib/entities/team-membership.ts b/lib/entities/team-membership.ts index aef9c4e018..7030bb5e13 100644 --- a/lib/entities/team-membership.ts +++ b/lib/entities/team-membership.ts @@ -8,7 +8,7 @@ export type TeamMembershipProps = { /** * System metadata */ - sys: MetaSysProps & { + sys: MetaSysProps<'User'> & { team: Link<'Team'> organization: Link<'Organization'> organizationMembership: Link<'OrganizationMembership'> diff --git a/lib/entities/team-space-membership.ts b/lib/entities/team-space-membership.ts index 79714f6708..24e6f7a96d 100644 --- a/lib/entities/team-space-membership.ts +++ b/lib/entities/team-space-membership.ts @@ -19,7 +19,7 @@ export type TeamSpaceMembershipProps = { /** * System metadata */ - sys: MetaSysProps & { team: Link<'Team'>; space: Link<'Space'> } + sys: MetaSysProps<'User'> & { team: Link<'Team'>; space: Link<'Space'> } /** * Is admin diff --git a/lib/entities/team.ts b/lib/entities/team.ts index 03d49b9967..53af606133 100644 --- a/lib/entities/team.ts +++ b/lib/entities/team.ts @@ -8,7 +8,7 @@ export type TeamProps = { /** * System metadata */ - sys: MetaSysProps & { memberCount: number; organization: Link<'Organization'> } + sys: MetaSysProps<'User'> & { memberCount: number; organization: Link<'Organization'> } /** * Name of the team diff --git a/lib/entities/ui-config.ts b/lib/entities/ui-config.ts index dda47cf70e..84e30c96ab 100644 --- a/lib/entities/ui-config.ts +++ b/lib/entities/ui-config.ts @@ -17,7 +17,7 @@ export type UIConfigProps = { publish?: { publishMode: 'entryPublishing' | 'localePublishing' } } -export interface UIConfigSysProps extends BasicMetaSysProps { +export interface UIConfigSysProps extends BasicMetaSysProps<'User' | 'AppDefinition'> { space: Link<'Space'> environment: Link<'Environment'> } diff --git a/lib/entities/upload-credential.ts b/lib/entities/upload-credential.ts index adfb4ff41c..249b506f2f 100644 --- a/lib/entities/upload-credential.ts +++ b/lib/entities/upload-credential.ts @@ -7,7 +7,7 @@ export type UploadCredentialProps = { /** * System metadata */ - sys: MetaSysProps & { space: Link<'Space'>; environment?: Link<'Environment'> } + sys: MetaSysProps<'User'> & { space: Link<'Space'>; environment?: Link<'Environment'> } } export interface UploadCredential diff --git a/lib/entities/upload.ts b/lib/entities/upload.ts index 208976c9cd..cccf4d3906 100644 --- a/lib/entities/upload.ts +++ b/lib/entities/upload.ts @@ -7,7 +7,10 @@ export type UploadProps = { /** * System metadata */ - sys: MetaSysProps & { space: Link<'Space'>; environment?: Link<'Environment'> } + sys: MetaSysProps<'User' | 'AppDefinition'> & { + space: Link<'Space'> + environment?: Link<'Environment'> + } } export interface Upload extends UploadProps, DefaultElements { diff --git a/lib/entities/usage.ts b/lib/entities/usage.ts index dacc812985..71f0a0ea3a 100644 --- a/lib/entities/usage.ts +++ b/lib/entities/usage.ts @@ -1,12 +1,6 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import copy from 'fast-copy' -import type { - DefaultElements, - Link, - MakeRequest, - MetaSysProps, - QueryOptions, -} from '../common-types' +import type { DefaultElements, Link, MakeRequest, QueryOptions } from '../common-types' import { wrapCollection } from '../common-utils' import enhanceWithMethods from '../enhance-with-methods' @@ -22,7 +16,9 @@ export type UsageProps = { /** * System metadata */ - sys: MetaSysProps & { + sys: { + id: string + type: string organization?: Link<'Organization'> } diff --git a/lib/entities/user-ui-config.ts b/lib/entities/user-ui-config.ts index e441cc8b43..7080cbf152 100644 --- a/lib/entities/user-ui-config.ts +++ b/lib/entities/user-ui-config.ts @@ -14,7 +14,7 @@ export type UserUIConfigProps = { entryListViews: ViewFolder[] } -export interface UserUIConfigSysProps extends BasicMetaSysProps { +export interface UserUIConfigSysProps extends BasicMetaSysProps<'User' | 'AppDefinition'> { space: Link<'Space'> environment: Link<'Environment'> } diff --git a/lib/entities/user.ts b/lib/entities/user.ts index 43d9f6d962..2a3affc155 100644 --- a/lib/entities/user.ts +++ b/lib/entities/user.ts @@ -8,7 +8,7 @@ export type UserProps = { /** * System metadata */ - sys: BasicMetaSysProps + sys: BasicMetaSysProps<'User'> /** * First name of the user diff --git a/lib/entities/webhook.ts b/lib/entities/webhook.ts index 73f15f5a1a..0d0ec6c056 100644 --- a/lib/entities/webhook.ts +++ b/lib/entities/webhook.ts @@ -48,11 +48,11 @@ export type WebhookCallRequest = { export type WebhookCallResponse = WebhookCallRequest & { statusCode: number } export type WebhookHealthSys = Except< - BasicMetaSysProps, + BasicMetaSysProps<'User'>, 'version' | 'updatedAt' | 'updatedBy' | 'createdAt' > -export type WebhookCallDetailsSys = Except +export type WebhookCallDetailsSys = Except, 'version' | 'updatedAt' | 'updatedBy'> export type WebhookHeader = { key: string; value: string; secret?: boolean } @@ -140,7 +140,7 @@ export type WebhookHealthProps = { calls: WebhookCalls } -export type WebhookSigningSecretSys = Except +export type WebhookSigningSecretSys = Except, 'version'> export type WebhookSigningSecretProps = { sys: WebhookSigningSecretSys & { space: Link<'Space'> } @@ -151,7 +151,7 @@ export type WebhookRetryPolicyPayload = { maxRetries: number } -export type WebhookRetryPolicySys = Except +export type WebhookRetryPolicySys = Except, 'version'> export type WebhookRetryPolicyProps = { sys: WebhookRetryPolicySys & { space: Link<'Space'> } @@ -162,7 +162,7 @@ export type WebhookProps = { /** * System metadata */ - sys: BasicMetaSysProps & { space: Link<'Space'> } + sys: BasicMetaSysProps<'User'> & { space: Link<'Space'> } /** * Webhook name diff --git a/lib/entities/workflow-definition.ts b/lib/entities/workflow-definition.ts index 2a348dd3df..471de83d67 100644 --- a/lib/entities/workflow-definition.ts +++ b/lib/entities/workflow-definition.ts @@ -96,7 +96,7 @@ export type CreateWorkflowStepProps = Omit /* Workflow Definition */ export type WorkflowDefinitionSysProps = Pick< - BasicMetaSysProps, + BasicMetaSysProps<'User'>, 'id' | 'version' | 'createdAt' | 'createdBy' | 'updatedAt' | 'updatedBy' > & { type: 'WorkflowDefinition' diff --git a/lib/entities/workflow.ts b/lib/entities/workflow.ts index 18bd0747fb..b79ca9231d 100644 --- a/lib/entities/workflow.ts +++ b/lib/entities/workflow.ts @@ -13,7 +13,7 @@ import { wrapCollection } from '../common-utils' import enhanceWithMethods from '../enhance-with-methods' export type WorkflowSysProps = Pick< - BasicMetaSysProps, + BasicMetaSysProps<'User' | 'AppDefinition'>, 'id' | 'version' | 'createdAt' | 'createdBy' | 'updatedAt' | 'updatedBy' > & { type: 'Workflow' diff --git a/lib/export-types.ts b/lib/export-types.ts index 78e76a21c1..45c87450fa 100644 --- a/lib/export-types.ts +++ b/lib/export-types.ts @@ -133,7 +133,9 @@ export type { EntryProps, EntryReferenceProps, // was previously deep imported in user_interface WithResourceName, + EntryMetaSysProps } from './entities/entry' + export type { CreateEnvironmentProps, Environment, EnvironmentProps } from './entities/environment' export type { CreateEnvironmentAliasProps, diff --git a/lib/plain/common-types.ts b/lib/plain/common-types.ts index 1a98cf55d5..3b04a869be 100644 --- a/lib/plain/common-types.ts +++ b/lib/plain/common-types.ts @@ -412,7 +412,7 @@ export type PlainClientAPI = { ): Promise createFromFiles( params: OptionalDefaults, - data: Omit, + data: AssetFileProp, ): Promise processForAllLocales( params: OptionalDefaults, @@ -489,7 +489,7 @@ export type PlainClientAPI = { ): Promise }>> createFromFiles( params: OptionalDefaults, - data: Omit, + data: AssetFileProp, headers?: RawAxiosRequestHeaders, ): Promise }>> processForLocale( diff --git a/lib/plain/entities/upload-credential.ts b/lib/plain/entities/upload-credential.ts index 1385fa9038..d4324ffe53 100644 --- a/lib/plain/entities/upload-credential.ts +++ b/lib/plain/entities/upload-credential.ts @@ -5,7 +5,7 @@ export type UploadCredential = { /** * System metadata */ - sys: MetaSysProps & { + sys: MetaSysProps<'User'> & { type: 'UploadCredential' } From bad1c17c17fe4aae03edd6a3c8c842d1a6740ecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andi=20Pa=CC=88tzold?= Date: Fri, 28 Mar 2025 13:23:18 +0100 Subject: [PATCH 04/12] fix: snapshots are created by users --- lib/entities/snapshot.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/entities/snapshot.ts b/lib/entities/snapshot.ts index a5d7e6647c..db0508204f 100644 --- a/lib/entities/snapshot.ts +++ b/lib/entities/snapshot.ts @@ -5,7 +5,7 @@ import { wrapCollection } from '../common-utils' import type { MetaSysProps, DefaultElements, MakeRequest } from '../common-types' export type SnapshotProps = { - sys: MetaSysProps<'User' | 'AppDefinition'> & { + sys: MetaSysProps<'User'> & { snapshotType: string snapshotEntityType: string } From 335a4e6182eea591b33b2d723109d2c9aa6d01e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andi=20Pa=CC=88tzold?= Date: Fri, 28 Mar 2025 13:27:51 +0100 Subject: [PATCH 05/12] fix: webhook health is created by webhook defs --- lib/entities/webhook.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/entities/webhook.ts b/lib/entities/webhook.ts index 0d0ec6c056..29b910daad 100644 --- a/lib/entities/webhook.ts +++ b/lib/entities/webhook.ts @@ -48,7 +48,7 @@ export type WebhookCallRequest = { export type WebhookCallResponse = WebhookCallRequest & { statusCode: number } export type WebhookHealthSys = Except< - BasicMetaSysProps<'User'>, + BasicMetaSysProps<'WebhookDefinition'>, 'version' | 'updatedAt' | 'updatedBy' | 'createdAt' > From 275d011926b768501873a5e905f225f36bc767f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andi=20Pa=CC=88tzold?= Date: Fri, 28 Mar 2025 13:47:27 +0100 Subject: [PATCH 06/12] fix: webhook call is created by webhook defs --- lib/entities/webhook.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/entities/webhook.ts b/lib/entities/webhook.ts index 29b910daad..cb29595e79 100644 --- a/lib/entities/webhook.ts +++ b/lib/entities/webhook.ts @@ -52,7 +52,7 @@ export type WebhookHealthSys = Except< 'version' | 'updatedAt' | 'updatedBy' | 'createdAt' > -export type WebhookCallDetailsSys = Except, 'version' | 'updatedAt' | 'updatedBy'> +export type WebhookCallDetailsSys = Except, 'version' | 'updatedAt' | 'updatedBy'> export type WebhookHeader = { key: string; value: string; secret?: boolean } From 2f28fe3abb94e8cfa8b0016060cfa63d1c7e3f13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andi=20Pa=CC=88tzold?= Date: Fri, 28 Mar 2025 14:08:32 +0100 Subject: [PATCH 07/12] chore: formatting --- lib/entities/webhook.ts | 5 ++++- lib/export-types.ts | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/entities/webhook.ts b/lib/entities/webhook.ts index cb29595e79..67305aa44c 100644 --- a/lib/entities/webhook.ts +++ b/lib/entities/webhook.ts @@ -52,7 +52,10 @@ export type WebhookHealthSys = Except< 'version' | 'updatedAt' | 'updatedBy' | 'createdAt' > -export type WebhookCallDetailsSys = Except, 'version' | 'updatedAt' | 'updatedBy'> +export type WebhookCallDetailsSys = Except< + BasicMetaSysProps<'WebhookDefinition'>, + 'version' | 'updatedAt' | 'updatedBy' +> export type WebhookHeader = { key: string; value: string; secret?: boolean } diff --git a/lib/export-types.ts b/lib/export-types.ts index 45c87450fa..3c27a00e37 100644 --- a/lib/export-types.ts +++ b/lib/export-types.ts @@ -135,7 +135,6 @@ export type { WithResourceName, EntryMetaSysProps } from './entities/entry' - export type { CreateEnvironmentProps, Environment, EnvironmentProps } from './entities/environment' export type { CreateEnvironmentAliasProps, From 7b6057ec0a551d545e9f3be8131aff6f1e56e89f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andi=20Pa=CC=88tzold?= Date: Thu, 10 Apr 2025 09:54:35 +0200 Subject: [PATCH 08/12] fix: update AiAction links --- lib/entities/ai-action-invocation.ts | 8 +++---- lib/entities/ai-action.ts | 31 +++++++++++++--------------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/lib/entities/ai-action-invocation.ts b/lib/entities/ai-action-invocation.ts index 57cf156070..2815a306d5 100644 --- a/lib/entities/ai-action-invocation.ts +++ b/lib/entities/ai-action-invocation.ts @@ -1,6 +1,6 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import copy from 'fast-copy' -import type { DefaultElements, MakeRequest, SysLink } from '../common-types' +import type { DefaultElements, Link, MakeRequest, SysLink } from '../common-types' import { wrapCollection } from '../common-utils' import type { Document as RichTextDocument } from '@contentful/rich-text-types' @@ -40,9 +40,9 @@ export type AiActionInvocationProps = { sys: { id: string type: 'AiActionInvocation' - space: SysLink - environment: SysLink - aiAction: SysLink + space: Link<'Space'> + environment: Link<'Environment'> + aiAction: Link<'AiAction'> status: InvocationStatus errorCode?: string } diff --git a/lib/entities/ai-action.ts b/lib/entities/ai-action.ts index 7014a5e2c3..146cd85d5f 100644 --- a/lib/entities/ai-action.ts +++ b/lib/entities/ai-action.ts @@ -24,9 +24,9 @@ export type ReferenceVariableConfiguration = { export type VariableConfiguration = | { - strict: boolean - in: Array - } + strict: boolean + in: Array + } | ReferenceVariableConfiguration export type Variable = { @@ -49,17 +49,17 @@ export type Configuration = { export type AiActionTestCase = | { - type?: 'Text' - value?: string - } + type?: 'Text' + value?: string + } | { - type?: 'Reference' - value?: { - entityPath?: string - entityType?: 'Entry' - entityId?: string - } + type?: 'Reference' + value?: { + entityPath?: string + entityType?: 'Entry' + entityId?: string } + } export interface AiActionQueryOptions { limit?: number @@ -68,18 +68,15 @@ export interface AiActionQueryOptions { } export type AiActionProps = { - sys: MetaSysProps & { + sys: MetaSysProps<'User' | 'AppDefinition'> & { type: 'AiAction' - space: { sys: { id: string } } + space: Link<'Space'> publishedBy?: Link<'User'> | Link<'AppDefinition'> updatedBy: Link<'User'> | Link<'AppDefinition'> createdBy: Link<'User'> | Link<'AppDefinition'> publishedVersion?: number version: number publishedAt?: string - updatedAt: string - createdAt: string - id: string } name: string description: string From 2157a1282a8ccc3114a6cbaba0e9c1f22e6ceccc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andi=20Pa=CC=88tzold?= Date: Thu, 10 Apr 2025 09:56:27 +0200 Subject: [PATCH 09/12] fix: `createdBy` etc should be a union, not an object --- lib/common-types.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/common-types.ts b/lib/common-types.ts index e3811e61a4..4a3e898b4c 100644 --- a/lib/common-types.ts +++ b/lib/common-types.ts @@ -258,9 +258,9 @@ export interface BasicMetaSysProps { type: string id: string version: number - createdBy?: { [Subject in TSubject]: Link } + createdBy?: { [Subject in TSubject]: Link }[TSubject] createdAt: string - updatedBy?: { [Subject in TSubject]: Link } + updatedBy?: { [Subject in TSubject]: Link }[TSubject] updatedAt: string } @@ -274,10 +274,10 @@ export interface MetaSysProps status?: Link<'Status'> publishedVersion?: number archivedVersion?: number - archivedBy?: { [Subject in TSubject]: Link } + archivedBy?: { [Subject in TSubject]: Link }[TSubject] archivedAt?: string deletedVersion?: number - deletedBy?: { [Subject in TSubject]: Link } + deletedBy?: { [Subject in TSubject]: Link }[TSubject] deletedAt?: string } From 14fb0c25cb71adf54071e40ece85ce76f0c95e79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andi=20Pa=CC=88tzold?= Date: Thu, 10 Apr 2025 09:57:09 +0200 Subject: [PATCH 10/12] fix: remove unused types --- lib/common-types.ts | 10 ---------- lib/entities/ai-action.ts | 3 --- 2 files changed, 13 deletions(-) diff --git a/lib/common-types.ts b/lib/common-types.ts index 4a3e898b4c..d916b6c427 100644 --- a/lib/common-types.ts +++ b/lib/common-types.ts @@ -298,21 +298,11 @@ export interface EntityMetaSysProps extends MetaSysProps<'User' | 'AppDefinition release?: Link<'Release'> } -/** - * @deprecated Use more specific `Link` instead - */ -export interface MetaLinkProps extends Link { } - export interface MetadataProps { tags: Link<'Tag'>[] concepts?: Link<'TaxonomyConcept'>[] } -/** - * @deprecated Use more specific `Link` instead - */ -export interface SysLink extends Link { } - export interface CollectionProp { sys: { type: 'Array' diff --git a/lib/entities/ai-action.ts b/lib/entities/ai-action.ts index 146cd85d5f..0cc19ba8c0 100644 --- a/lib/entities/ai-action.ts +++ b/lib/entities/ai-action.ts @@ -72,9 +72,6 @@ export type AiActionProps = { type: 'AiAction' space: Link<'Space'> publishedBy?: Link<'User'> | Link<'AppDefinition'> - updatedBy: Link<'User'> | Link<'AppDefinition'> - createdBy: Link<'User'> | Link<'AppDefinition'> - publishedVersion?: number version: number publishedAt?: string } From 4ad535e9c5f21988ed096c54f0ed713c95376f6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andi=20Pa=CC=88tzold?= Date: Thu, 10 Apr 2025 10:01:34 +0200 Subject: [PATCH 11/12] fix: remove import --- lib/entities/ai-action-invocation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/entities/ai-action-invocation.ts b/lib/entities/ai-action-invocation.ts index 2815a306d5..913ae08a8c 100644 --- a/lib/entities/ai-action-invocation.ts +++ b/lib/entities/ai-action-invocation.ts @@ -1,6 +1,6 @@ import { freezeSys, toPlainObject } from 'contentful-sdk-core' import copy from 'fast-copy' -import type { DefaultElements, Link, MakeRequest, SysLink } from '../common-types' +import type { DefaultElements, Link, MakeRequest } from '../common-types' import { wrapCollection } from '../common-utils' import type { Document as RichTextDocument } from '@contentful/rich-text-types' From b832490e73611e338ed36b05e30bd31a6df72e46 Mon Sep 17 00:00:00 2001 From: Ethan Ozelius Date: Fri, 21 Nov 2025 15:28:25 -0700 Subject: [PATCH 12/12] chore(sys-type-changes): update Andi's type changes (breaking change) to make it as close as possible to his original work, i.e. removing whitespace changes and updating changes since April 2025 --- lib/adapters/REST/endpoints/release-asset.ts | 2 +- lib/common-types.ts | 110 +++++++++---------- lib/entities/ai-action.ts | 24 ++-- lib/entities/entry.ts | 6 +- 4 files changed, 71 insertions(+), 71 deletions(-) diff --git a/lib/adapters/REST/endpoints/release-asset.ts b/lib/adapters/REST/endpoints/release-asset.ts index a9dc001153..d510ba365f 100644 --- a/lib/adapters/REST/endpoints/release-asset.ts +++ b/lib/adapters/REST/endpoints/release-asset.ts @@ -121,7 +121,7 @@ export const createWithId: RestEndpoint<'ReleaseAsset', 'createWithId'> = ( export const createFromFiles: RestEndpoint<'ReleaseAsset', 'createFromFiles'> = async ( http: AxiosInstance, params: CreateWithFilesReleaseAssetParams, - data: Omit, + data: AssetFileProp, ) => { const httpUpload = getUploadHttpClient(http, { uploadTimeout: params.uploadTimeout }) diff --git a/lib/common-types.ts b/lib/common-types.ts index d916b6c427..341c045c67 100644 --- a/lib/common-types.ts +++ b/lib/common-types.ts @@ -323,11 +323,11 @@ export interface CursorPaginatedCollectionProp export interface Collection extends CollectionProp, - DefaultElements> { } + DefaultElements> {} export interface CursorPaginatedCollection extends CursorPaginatedCollectionProp, - DefaultElements> { } + DefaultElements> {} /* eslint-disable @typescript-eslint/no-explicit-any */ export interface QueryOptions extends BasicQueryOptions { @@ -1321,50 +1321,50 @@ export type MRActions = { } Comment: { get: - | { params: GetCommentParams & PlainTextBodyFormat; return: CommentProps } - | { params: GetCommentParams & RichTextBodyFormat; return: RichTextCommentProps } + | { params: GetCommentParams & PlainTextBodyFormat; return: CommentProps } + | { params: GetCommentParams & RichTextBodyFormat; return: RichTextCommentProps } getMany: - | { - params: GetManyCommentsParams & PlainTextBodyFormat & QueryParams - return: CollectionProp - } - | { - params: GetManyCommentsParams & QueryParams & RichTextBodyFormat - return: CollectionProp - } + | { + params: GetManyCommentsParams & PlainTextBodyFormat & QueryParams + return: CollectionProp + } + | { + params: GetManyCommentsParams & QueryParams & RichTextBodyFormat + return: CollectionProp + } getAll: - | { - params: GetManyCommentsParams & QueryParams & PlainTextBodyFormat - return: CollectionProp - } - | { - params: GetManyCommentsParams & QueryParams & RichTextBodyFormat - return: CollectionProp - } + | { + params: GetManyCommentsParams & QueryParams & PlainTextBodyFormat + return: CollectionProp + } + | { + params: GetManyCommentsParams & QueryParams & RichTextBodyFormat + return: CollectionProp + } create: - | { - params: CreateCommentParams & PlainTextBodyFormat - payload: CreateCommentProps - return: CommentProps - } - | { - params: CreateCommentParams & RichTextBodyFormat - payload: RichTextCommentBodyPayload - return: RichTextCommentProps - } + | { + params: CreateCommentParams & PlainTextBodyFormat + payload: CreateCommentProps + return: CommentProps + } + | { + params: CreateCommentParams & RichTextBodyFormat + payload: RichTextCommentBodyPayload + return: RichTextCommentProps + } update: - | { - params: UpdateCommentParams - payload: UpdateCommentProps - headers?: RawAxiosRequestHeaders - return: CommentProps - } - | { - params: UpdateCommentParams - payload: Omit & RichTextCommentBodyPayload - headers?: RawAxiosRequestHeaders - return: RichTextCommentProps - } + | { + params: UpdateCommentParams + payload: UpdateCommentProps + headers?: RawAxiosRequestHeaders + return: CommentProps + } + | { + params: UpdateCommentParams + payload: Omit & RichTextCommentBodyPayload + headers?: RawAxiosRequestHeaders + return: RichTextCommentProps + } delete: { params: DeleteCommentParams; return: void } } Concept: { @@ -1919,7 +1919,7 @@ export type MRActions = { } createFromFiles: { params: CreateWithFilesReleaseAssetParams & QueryParams - payload: Omit + payload: AssetFileProp, headers?: RawAxiosRequestHeaders return: AssetProps<{ release: Link<'Release'> }> } @@ -2370,18 +2370,18 @@ export type MROpts< } & (UA extends true ? { userAgent: string } : {}) & ('params' extends keyof MRActions[ET][Action] ? undefined extends MRActions[ET][Action]['params'] - ? { params?: MRActions[ET][Action]['params'] } - : { params: MRActions[ET][Action]['params'] } + ? { params?: MRActions[ET][Action]['params'] } + : { params: MRActions[ET][Action]['params'] } : {}) & ('payload' extends keyof MRActions[ET][Action] ? undefined extends MRActions[ET][Action]['payload'] - ? { payload?: MRActions[ET][Action]['payload'] } - : { payload: MRActions[ET][Action]['payload'] } + ? { payload?: MRActions[ET][Action]['payload'] } + : { payload: MRActions[ET][Action]['payload'] } : {}) & ('headers' extends keyof MRActions[ET][Action] ? undefined extends MRActions[ET][Action]['headers'] - ? { headers?: MRActions[ET][Action]['headers'] } - : { headers: MRActions[ET][Action]['headers'] } + ? { headers?: MRActions[ET][Action]['headers'] } + : { headers: MRActions[ET][Action]['headers'] } : {}) /** @@ -2394,7 +2394,7 @@ export type MRReturn< /** Base interface for all Payload interfaces. Used as part of the MakeRequestOptions to simplify payload definitions. */ -export interface MakeRequestPayload { } +export interface MakeRequestPayload {} export interface MakeRequestOptions { entityType: keyof MRActions @@ -2535,16 +2535,16 @@ export type GetConceptDescendantsParams = GetOrganizationParams & { conceptId: s } export type GetManyConceptParams = GetOrganizationParams & { query?: - | { pageUrl?: string } - | ({ conceptScheme?: string; query?: string } & BasicCursorPaginationOptions & - Omit) + | { pageUrl?: string } + | ({ conceptScheme?: string; query?: string } & BasicCursorPaginationOptions & + Omit) } export type GetConceptSchemeParams = GetOrganizationParams & { conceptSchemeId: string } export type GetManyConceptSchemeParams = GetOrganizationParams & { query?: - | { pageUrl?: string } - | ({ query?: string } & BasicCursorPaginationOptions & Omit) + | { pageUrl?: string } + | ({ query?: string } & BasicCursorPaginationOptions & Omit) } export type DeleteConceptSchemeParams = GetOrganizationParams & { conceptSchemeId: string diff --git a/lib/entities/ai-action.ts b/lib/entities/ai-action.ts index 0cc19ba8c0..877d5868f8 100644 --- a/lib/entities/ai-action.ts +++ b/lib/entities/ai-action.ts @@ -24,9 +24,9 @@ export type ReferenceVariableConfiguration = { export type VariableConfiguration = | { - strict: boolean - in: Array - } + strict: boolean + in: Array + } | ReferenceVariableConfiguration export type Variable = { @@ -49,17 +49,17 @@ export type Configuration = { export type AiActionTestCase = | { - type?: 'Text' - value?: string - } + type?: 'Text' + value?: string + } | { - type?: 'Reference' - value?: { - entityPath?: string - entityType?: 'Entry' - entityId?: string + type?: 'Reference' + value?: { + entityPath?: string + entityType?: 'Entry' + entityId?: string + } } - } export interface AiActionQueryOptions { limit?: number diff --git a/lib/entities/entry.ts b/lib/entities/entry.ts index dbb7768009..75bbc03bbb 100644 --- a/lib/entities/entry.ts +++ b/lib/entities/entry.ts @@ -52,12 +52,12 @@ export type EntryReferenceOptionsProps = { include?: number } -export interface Entry extends EntryProps, DefaultElements, ContentfulEntryApi { } +export interface Entry extends EntryProps, DefaultElements, ContentfulEntryApi {} export type WithResourceName = T extends { sys: infer Sys } ? Omit & { - sys: Sys & { urn: string } - } + sys: Sys & { urn: string } + } : never /**