-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathtypes.ts
More file actions
94 lines (79 loc) · 2.16 KB
/
types.ts
File metadata and controls
94 lines (79 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import { Patch } from 'generate-json-patch'
import { ListrTaskWrapper } from 'listr2'
import { createClient } from './client'
import { ResponseStatusCollector } from './client/response-status-collector'
import { ILogger } from './logger/types'
import { MemoryLogger } from './logger/memory-logger'
import { Entry } from 'contentful'
export type Client = ReturnType<typeof createClient>
export type ChangesetChangeType = 'add' | 'delete' | 'update'
type ChangesetItemType = 'Entry' | 'ContentType'
export interface EntityLink {
type: 'Link'
linkType: ChangesetItemType
id: string
}
export type BaseChangesetItem<T extends ChangesetChangeType> = {
changeType: T
}
export type ChangesetEntityLink = {
entity: {
sys: EntityLink
}
}
export type DeletedChangesetItem = BaseChangesetItem<'delete'> & ChangesetEntityLink
export type AddedChangesetItem = BaseChangesetItem<'add'> &
ChangesetEntityLink & {
data?: any
}
export type UpdatedChangesetItem = BaseChangesetItem<'update'> &
ChangesetEntityLink & {
patch: Patch
}
export type ChangesetItem = DeletedChangesetItem | AddedChangesetItem | UpdatedChangesetItem
export type Changeset = {
sys: {
type: 'Changeset'
createdAt: string
space: {
sys: {
type: 'Link'
linkType: 'Space'
id: string
}
}
source: {
sys: {
type: 'Link'
linkType: 'Environment'
id: string
}
}
target: {
sys: {
type: 'Link'
linkType: 'Environment'
id: string
}
}
}
items: Array<ChangesetItem>
}
export interface BaseContext {
client: Client
logger: MemoryLogger
accessToken: string
spaceId: string
limit?: number
}
export type BaseActionParams = {
client: Client
environmentId: string
logger: ILogger
responseCollector: ResponseStatusCollector
task: ListrTaskWrapper<any, any, any>
}
export type CommandType = 'create-changeset' | 'apply-changeset'
export type EntityType = Exclude<keyof ReturnType<typeof createClient>['cda'], 'requestCounts'>
type EntryWithoutMetadata = Omit<Entry<any>, 'metadata'>
export type EntryWithOptionalMetadata = EntryWithoutMetadata & { metadata?: any }