@financial-times/cp-content-pipeline-schema 2.5.1 → 2.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/lib/datasources/instrumented.js.map +1 -1
- package/lib/generated/index.d.ts +668 -907
- package/lib/helpers/imageService.d.ts +2 -1
- package/lib/model/Byline.js +1 -1
- package/lib/model/Byline.js.map +1 -1
- package/lib/model/CapiResponse.d.ts +14 -4
- package/lib/model/CapiResponse.js +19 -4
- package/lib/model/CapiResponse.js.map +1 -1
- package/lib/model/Clip.d.ts +3 -2
- package/lib/model/Clip.js +7 -5
- package/lib/model/Clip.js.map +1 -1
- package/lib/model/Concept.d.ts +3 -13
- package/lib/model/Concept.js +10 -10
- package/lib/model/Concept.js.map +1 -1
- package/lib/model/Image.d.ts +1 -5
- package/lib/model/Image.js.map +1 -1
- package/lib/model/Image.test.js.map +1 -1
- package/lib/model/RichText.d.ts +1 -1
- package/lib/model/RichText.js.map +1 -1
- package/lib/model/Topper.d.ts +4 -7
- package/lib/model/Topper.js +3 -3
- package/lib/model/Topper.js.map +1 -1
- package/lib/model/schemas/capi/base-schema.d.ts +0 -119
- package/lib/model/schemas/capi/base-schema.js +7 -7
- package/lib/model/schemas/capi/base-schema.js.map +1 -1
- package/lib/model/schemas/capi/content-package.d.ts +18 -0
- package/lib/model/schemas/capi/content-package.js +1 -0
- package/lib/model/schemas/capi/content-package.js.map +1 -1
- package/lib/resolvers/clip.d.ts +19 -1
- package/lib/resolvers/clip.js +10 -0
- package/lib/resolvers/clip.js.map +1 -1
- package/lib/resolvers/content-tree/nodePredicates.d.ts +0 -5
- package/lib/resolvers/content-tree/nodePredicates.js +1 -26
- package/lib/resolvers/content-tree/nodePredicates.js.map +1 -1
- package/lib/resolvers/content-tree/references/ClipSet.d.ts +13 -0
- package/lib/resolvers/content-tree/references/ClipSet.js +12 -1
- package/lib/resolvers/content-tree/references/ClipSet.js.map +1 -1
- package/lib/resolvers/content-tree/references/Flourish.d.ts +6 -0
- package/lib/resolvers/content-tree/references/Flourish.js +15 -1
- package/lib/resolvers/content-tree/references/Flourish.js.map +1 -1
- package/lib/resolvers/content-tree/references/ImageSet.d.ts +1 -0
- package/lib/resolvers/content-tree/references/ImageSet.js +3 -0
- package/lib/resolvers/content-tree/references/ImageSet.js.map +1 -1
- package/lib/resolvers/content-tree/references/LayoutImage.d.ts +1 -0
- package/lib/resolvers/content-tree/references/LayoutImage.js +3 -0
- package/lib/resolvers/content-tree/references/LayoutImage.js.map +1 -1
- package/lib/resolvers/content-tree/references/RawImage.d.ts +1 -0
- package/lib/resolvers/content-tree/references/RawImage.js +3 -0
- package/lib/resolvers/content-tree/references/RawImage.js.map +1 -1
- package/lib/resolvers/content-tree/references/Recommended.d.ts +1 -0
- package/lib/resolvers/content-tree/references/Recommended.js +3 -0
- package/lib/resolvers/content-tree/references/Recommended.js.map +1 -1
- package/lib/resolvers/content-tree/references/Reference.d.ts +1 -1
- package/lib/resolvers/content-tree/references/Reference.js +1 -3
- package/lib/resolvers/content-tree/references/Reference.js.map +1 -1
- package/lib/resolvers/content-tree/references/ScrollyImage.d.ts +1 -0
- package/lib/resolvers/content-tree/references/ScrollyImage.js +3 -0
- package/lib/resolvers/content-tree/references/ScrollyImage.js.map +1 -1
- package/lib/resolvers/content-tree/references/Tweet.d.ts +1 -0
- package/lib/resolvers/content-tree/references/Tweet.js +3 -0
- package/lib/resolvers/content-tree/references/Tweet.js.map +1 -1
- package/lib/resolvers/content-tree/references/Video.d.ts +2 -1
- package/lib/resolvers/content-tree/references/Video.js +4 -3
- package/lib/resolvers/content-tree/references/Video.js.map +1 -1
- package/lib/resolvers/content-tree/references/index.d.ts +5 -1
- package/lib/resolvers/content-tree/references/index.js +4 -0
- package/lib/resolvers/content-tree/references/index.js.map +1 -1
- package/lib/resolvers/content-tree/tagMappings.test.js +6 -9
- package/lib/resolvers/content-tree/tagMappings.test.js.map +1 -1
- package/lib/resolvers/content.d.ts +242 -33
- package/lib/resolvers/content.js +66 -31
- package/lib/resolvers/content.js.map +1 -1
- package/lib/resolvers/image.d.ts +142 -12
- package/lib/resolvers/image.js +45 -10
- package/lib/resolvers/image.js.map +1 -1
- package/lib/resolvers/index.d.ts +597 -61
- package/lib/resolvers/picture.d.ts +41 -8
- package/lib/resolvers/picture.js +19 -21
- package/lib/resolvers/picture.js.map +1 -1
- package/lib/resolvers/richText.d.ts +14 -2
- package/lib/resolvers/richText.js +8 -6
- package/lib/resolvers/richText.js.map +1 -1
- package/lib/resolvers/scalars.d.ts +2 -1
- package/lib/resolvers/scalars.js +5 -3
- package/lib/resolvers/scalars.js.map +1 -1
- package/lib/resolvers/teaser.d.ts +5 -0
- package/lib/resolvers/teaser.js +6 -1
- package/lib/resolvers/teaser.js.map +1 -1
- package/lib/resolvers/topper.d.ts +127 -7
- package/lib/resolvers/topper.js +64 -6
- package/lib/resolvers/topper.js.map +1 -1
- package/package.json +1 -1
- package/src/datasources/instrumented.ts +0 -1
- package/src/generated/index.ts +668 -668
- package/src/helpers/imageService.ts +1 -1
- package/src/model/Byline.ts +1 -1
- package/src/model/CapiResponse.ts +32 -7
- package/src/model/Clip.ts +11 -8
- package/src/model/Concept.ts +5 -9
- package/src/model/Image.test.ts +1 -6
- package/src/model/Image.ts +1 -6
- package/src/model/RichText.ts +1 -1
- package/src/model/Topper.ts +5 -9
- package/src/model/schemas/capi/base-schema.ts +3 -3
- package/src/model/schemas/capi/content-package.ts +1 -0
- package/src/resolvers/clip.ts +13 -2
- package/src/resolvers/content-tree/nodePredicates.ts +0 -42
- package/src/resolvers/content-tree/references/ClipSet.ts +22 -2
- package/src/resolvers/content-tree/references/Flourish.ts +20 -1
- package/src/resolvers/content-tree/references/ImageSet.ts +4 -0
- package/src/resolvers/content-tree/references/LayoutImage.ts +4 -0
- package/src/resolvers/content-tree/references/RawImage.ts +4 -0
- package/src/resolvers/content-tree/references/Recommended.ts +4 -0
- package/src/resolvers/content-tree/references/Reference.ts +1 -3
- package/src/resolvers/content-tree/references/ScrollyImage.ts +4 -0
- package/src/resolvers/content-tree/references/Tweet.ts +4 -0
- package/src/resolvers/content-tree/references/Video.ts +5 -3
- package/src/resolvers/content-tree/references/index.ts +13 -4
- package/src/resolvers/content-tree/tagMappings.test.ts +6 -10
- package/src/resolvers/content.ts +88 -38
- package/src/resolvers/image.ts +75 -5
- package/src/resolvers/picture.ts +35 -23
- package/src/resolvers/richText.ts +13 -8
- package/src/resolvers/scalars.ts +3 -1
- package/src/resolvers/teaser.ts +6 -2
- package/src/resolvers/topper.ts +86 -6
- package/tsconfig.tsbuildinfo +1 -1
- package/lib/fixtures/clipSet.d.ts +0 -2
- package/lib/fixtures/clipSet.js +0 -70
- package/lib/fixtures/clipSet.js.map +0 -1
- package/lib/helpers/kebabCaseToPascalCase.d.ts +0 -1
- package/lib/helpers/kebabCaseToPascalCase.js +0 -7
- package/lib/helpers/kebabCaseToPascalCase.js.map +0 -1
- package/src/fixtures/clipSet.ts +0 -72
- package/src/helpers/kebabCaseToPascalCase.ts +0 -5
package/src/resolvers/content.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Topper } from '../model/Topper'
|
|
2
|
-
import { Byline } from '../model/Byline'
|
|
3
2
|
import {
|
|
4
3
|
ArticleResolvers,
|
|
5
4
|
PlaceholderResolvers,
|
|
@@ -8,8 +7,40 @@ import {
|
|
|
8
7
|
ContentResolvers,
|
|
9
8
|
LiveBlogPackageResolvers,
|
|
10
9
|
LiveBlogPostResolvers,
|
|
10
|
+
VideoResolvers,
|
|
11
|
+
TableOfContentsResolvers,
|
|
12
|
+
AltStandfirstResolvers,
|
|
13
|
+
AltTitleResolvers,
|
|
14
|
+
DesignResolvers,
|
|
15
|
+
IndicatorsResolvers,
|
|
16
|
+
MediaResolvers,
|
|
11
17
|
} from '../generated'
|
|
12
|
-
|
|
18
|
+
|
|
19
|
+
const contentResolvers: ContentResolvers = {
|
|
20
|
+
accessLevel: (parent) => parent.accessLevel(),
|
|
21
|
+
altStandfirst: (parent) => parent.alternativeStandfirst(),
|
|
22
|
+
altTitle: (parent) => parent.alternativeTitle(),
|
|
23
|
+
annotations: (parent) => parent.annotations(),
|
|
24
|
+
body: (parent) => parent.body(),
|
|
25
|
+
bodyXML: (parent) => parent.bodyXML(),
|
|
26
|
+
byline: (parent, args) => parent.byline(args),
|
|
27
|
+
canBeSyndicated: (parent) => parent.canBeSyndicated(),
|
|
28
|
+
commentsEnabled: (parent) => parent.commentsEnabled(),
|
|
29
|
+
design: (parent) => parent.design(),
|
|
30
|
+
editorialDesk: (parent) => parent.editorialDesk(),
|
|
31
|
+
firstPublishedDate: (parent) => parent.firstPublishedDate(),
|
|
32
|
+
id: (parent) => parent.id(),
|
|
33
|
+
instantAlertConcept: (parent) => parent.instantAlertConcept(),
|
|
34
|
+
mainImage: (parent) => parent.mainImage(),
|
|
35
|
+
originatingParty: (parent) => parent.originatingParty(),
|
|
36
|
+
publishedDate: (parent) => parent.publishedDate(),
|
|
37
|
+
standfirst: (parent) => parent.standfirst(),
|
|
38
|
+
teaser: (parent) => parent.teaser(),
|
|
39
|
+
title: (parent) => parent.title(),
|
|
40
|
+
topper: (parent, _, context) => new Topper(parent, context),
|
|
41
|
+
type: (parent) => parent.type(),
|
|
42
|
+
url: (parent, args) => parent.url(args),
|
|
43
|
+
}
|
|
13
44
|
|
|
14
45
|
const resolvers = {
|
|
15
46
|
Content: {
|
|
@@ -26,78 +57,90 @@ const resolvers = {
|
|
|
26
57
|
|
|
27
58
|
return type
|
|
28
59
|
},
|
|
29
|
-
|
|
30
|
-
return new RichText('bodyXML', parent.bodyXML(), parent)
|
|
31
|
-
},
|
|
32
|
-
topper: (parent, _, context) => new Topper(parent, context),
|
|
33
|
-
byline(parent, args, context) {
|
|
34
|
-
const vanity = Boolean(args.vanity)
|
|
35
|
-
const bylineText = parent.byline()
|
|
36
|
-
|
|
37
|
-
if (!bylineText) return null
|
|
38
|
-
const authorUrlMapping = parent.getAuthorUrlMapping()
|
|
39
|
-
|
|
40
|
-
return new Byline(
|
|
41
|
-
bylineText,
|
|
42
|
-
vanity,
|
|
43
|
-
authorUrlMapping,
|
|
44
|
-
context
|
|
45
|
-
).buildBylineTree()
|
|
46
|
-
},
|
|
47
|
-
url: (parent, args) =>
|
|
48
|
-
args.relative
|
|
49
|
-
? parent.relativeUrl(args?.vanity)
|
|
50
|
-
: parent.url(args?.vanity),
|
|
51
|
-
type: (parent) => parent.type(),
|
|
52
|
-
mainImage: (parent) => parent.mainImage(),
|
|
53
|
-
altTitle: (parent) => parent.alternativeTitle(),
|
|
54
|
-
altStandfirst: (parent) => parent.alternativeStandfirst(),
|
|
55
|
-
publishedDate: (parent) => parent.publishedDate(),
|
|
56
|
-
annotations: (parent) => parent.annotations(),
|
|
57
|
-
accessLevel: (parent) => parent.accessLevel(),
|
|
58
|
-
editorialDesk: (parent) => parent.editorialDesk(),
|
|
59
|
-
canBeSyndicated: (parent) => parent.canBeSyndicated(),
|
|
60
|
-
instantAlertConcept: (parent) => parent.instantAlertConcept(),
|
|
61
|
-
originatingParty: (parent) => parent.originatingParty(),
|
|
62
|
-
commentsEnabled: (parent) => parent.commentsEnabled(),
|
|
63
|
-
design: (parent) => parent.design(),
|
|
60
|
+
...contentResolvers,
|
|
64
61
|
},
|
|
65
62
|
|
|
66
63
|
Article: {
|
|
64
|
+
...contentResolvers,
|
|
67
65
|
containedIn: (parent) => parent.containedIn(),
|
|
68
66
|
},
|
|
69
67
|
|
|
70
68
|
Placeholder: {
|
|
69
|
+
...contentResolvers,
|
|
71
70
|
containedIn: (parent) => parent.containedIn(),
|
|
72
71
|
},
|
|
73
72
|
|
|
74
73
|
LiveBlogPost: {
|
|
74
|
+
...contentResolvers,
|
|
75
75
|
containedIn: (parent) => parent.containedIn(),
|
|
76
|
-
isPinned: (parent) => parent.isPinned(),
|
|
77
76
|
indicators(parent) {
|
|
78
77
|
return {
|
|
79
78
|
isOpinion: parent.isOpinion(),
|
|
80
79
|
}
|
|
81
80
|
},
|
|
81
|
+
isPinned: (parent) => parent.isPinned(),
|
|
82
82
|
},
|
|
83
83
|
|
|
84
84
|
LiveBlogPackage: {
|
|
85
|
+
...contentResolvers,
|
|
85
86
|
liveBlogPosts: (parent) => parent.liveBlogPosts(),
|
|
86
87
|
pinnedPost: (parent) => parent.pinnedPost(),
|
|
87
88
|
realtime: (parent) => parent.realtime(),
|
|
88
89
|
},
|
|
89
90
|
|
|
90
91
|
ContentPackage: {
|
|
92
|
+
...contentResolvers,
|
|
91
93
|
contains: (parent, args) => parent.contains(args),
|
|
94
|
+
tableOfContents: (parent) => parent.tableOfContents(),
|
|
92
95
|
containsLength: (parent) => parent.containsLength(),
|
|
93
96
|
},
|
|
94
97
|
|
|
95
98
|
Audio: {
|
|
99
|
+
...contentResolvers,
|
|
96
100
|
media: (parent) =>
|
|
97
101
|
// TODO:20230712:IM should probably return captions too
|
|
98
102
|
parent.media()?.filter(({ mediaType }) => mediaType === 'audio/mpeg') ??
|
|
99
103
|
null,
|
|
100
104
|
},
|
|
105
|
+
|
|
106
|
+
Video: {
|
|
107
|
+
...contentResolvers,
|
|
108
|
+
},
|
|
109
|
+
|
|
110
|
+
AltStandfirst: {
|
|
111
|
+
promotionalStandfirst: (parent) => parent.promotionalStandfirst ?? null,
|
|
112
|
+
},
|
|
113
|
+
|
|
114
|
+
AltTitle: {
|
|
115
|
+
promotionalTitle: (parent) => parent.promotionalTitle ?? null,
|
|
116
|
+
},
|
|
117
|
+
|
|
118
|
+
Design: {
|
|
119
|
+
layout: (parent) => parent.layout ?? null,
|
|
120
|
+
theme: (parent) => parent.theme ?? null,
|
|
121
|
+
},
|
|
122
|
+
|
|
123
|
+
Indicators: {
|
|
124
|
+
accessLevel: (parent) => parent.accessLevel ?? null,
|
|
125
|
+
isOpinion: (parent) => parent.isOpinion ?? null,
|
|
126
|
+
isColumn: (parent) => parent.isColumn ?? null,
|
|
127
|
+
isPodcast: (parent) => parent.isPodcast ?? null,
|
|
128
|
+
isEditorsChoice: (parent) => parent.isEditorsChoice ?? null,
|
|
129
|
+
isExclusive: (parent) => parent.isExclusive ?? null,
|
|
130
|
+
isScoop: (parent) => parent.isScoop ?? null,
|
|
131
|
+
},
|
|
132
|
+
|
|
133
|
+
Media: {
|
|
134
|
+
url: (parent) => parent.url ?? null,
|
|
135
|
+
duration: (parent) => parent.duration ?? null,
|
|
136
|
+
filesize: (parent) => parent.filesize ?? null,
|
|
137
|
+
mediaType: (parent) => parent.mediaType ?? null,
|
|
138
|
+
},
|
|
139
|
+
|
|
140
|
+
TableOfContents: {
|
|
141
|
+
labelType: (parent) => parent.labelType ?? null,
|
|
142
|
+
sequence: (parent) => parent.sequence ?? null,
|
|
143
|
+
},
|
|
101
144
|
} satisfies {
|
|
102
145
|
Article: ArticleResolvers
|
|
103
146
|
Placeholder: PlaceholderResolvers
|
|
@@ -106,6 +149,13 @@ const resolvers = {
|
|
|
106
149
|
LiveBlogPackage: LiveBlogPackageResolvers
|
|
107
150
|
ContentPackage: ContentPackageResolvers
|
|
108
151
|
Audio: AudioResolvers
|
|
152
|
+
Video: VideoResolvers
|
|
153
|
+
AltStandfirst: AltStandfirstResolvers
|
|
154
|
+
AltTitle: AltTitleResolvers
|
|
155
|
+
Design: DesignResolvers
|
|
156
|
+
Indicators: IndicatorsResolvers
|
|
157
|
+
TableOfContents: TableOfContentsResolvers
|
|
158
|
+
Media: MediaResolvers
|
|
109
159
|
}
|
|
110
160
|
|
|
111
161
|
export default resolvers
|
package/src/resolvers/image.ts
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
ImageDesktopResolvers,
|
|
3
|
+
ImageLandscapeResolvers,
|
|
4
|
+
ImageMobileResolvers,
|
|
5
|
+
ImagePortraitResolvers,
|
|
6
|
+
ImageResolvers,
|
|
7
|
+
ImageSourceResolvers,
|
|
8
|
+
ImageSquareFtEditResolvers,
|
|
9
|
+
ImageSquareResolvers,
|
|
10
|
+
ImageStandardInlineResolvers,
|
|
11
|
+
ImageStandardResolvers,
|
|
12
|
+
ImageWideResolvers,
|
|
13
|
+
} from '../generated'
|
|
2
14
|
import { LiteralUnionScalarValues } from './literal-union'
|
|
3
15
|
import { ImageFormat } from './scalars'
|
|
4
16
|
|
|
@@ -47,9 +59,7 @@ const resolveImageTypeFromTree = (
|
|
|
47
59
|
return 'ImageStandard'
|
|
48
60
|
}
|
|
49
61
|
|
|
50
|
-
const
|
|
51
|
-
Image: {
|
|
52
|
-
__resolveType: (image) => resolveImageTypeFromTree(image.format()),
|
|
62
|
+
const imageResolvers: ImageResolvers = {
|
|
53
63
|
type: (image) => image.type(),
|
|
54
64
|
format: (image) => image.format(),
|
|
55
65
|
caption: (image) => image.caption(),
|
|
@@ -60,7 +70,67 @@ const resolvers = {
|
|
|
60
70
|
height: async (image) => (await image.dimensions())?.height ?? null,
|
|
61
71
|
sourceSet: (image, args) => image.sourceSet(args),
|
|
62
72
|
altText: (image) => image.alt(),
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const resolvers = {
|
|
76
|
+
Image: {
|
|
77
|
+
__resolveType: (image) => resolveImageTypeFromTree(image.format()),
|
|
78
|
+
...imageResolvers,
|
|
63
79
|
},
|
|
64
|
-
|
|
80
|
+
|
|
81
|
+
ImageDesktop: {
|
|
82
|
+
...imageResolvers,
|
|
83
|
+
},
|
|
84
|
+
|
|
85
|
+
ImageMobile: {
|
|
86
|
+
...imageResolvers,
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
ImagePortrait: {
|
|
90
|
+
...imageResolvers,
|
|
91
|
+
},
|
|
92
|
+
|
|
93
|
+
ImageLandscape: {
|
|
94
|
+
...imageResolvers,
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
ImageSquare: {
|
|
98
|
+
...imageResolvers,
|
|
99
|
+
},
|
|
100
|
+
|
|
101
|
+
ImageSquareFTEdit: {
|
|
102
|
+
...imageResolvers,
|
|
103
|
+
},
|
|
104
|
+
|
|
105
|
+
ImageStandard: {
|
|
106
|
+
...imageResolvers,
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
ImageStandardInline: {
|
|
110
|
+
...imageResolvers,
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
ImageWide: {
|
|
114
|
+
...imageResolvers,
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
ImageSource: {
|
|
118
|
+
url: (image) => image.url,
|
|
119
|
+
width: (image) => image.width ?? null,
|
|
120
|
+
dpr: (image) => image.dpr ?? null,
|
|
121
|
+
},
|
|
122
|
+
} satisfies {
|
|
123
|
+
Image: ImageResolvers
|
|
124
|
+
ImageDesktop: ImageDesktopResolvers
|
|
125
|
+
ImageMobile: ImageMobileResolvers
|
|
126
|
+
ImagePortrait: ImagePortraitResolvers
|
|
127
|
+
ImageLandscape: ImageLandscapeResolvers
|
|
128
|
+
ImageSquare: ImageSquareResolvers
|
|
129
|
+
ImageSquareFTEdit: ImageSquareFtEditResolvers
|
|
130
|
+
ImageStandard: ImageStandardResolvers
|
|
131
|
+
ImageStandardInline: ImageStandardInlineResolvers
|
|
132
|
+
ImageWide: ImageWideResolvers
|
|
133
|
+
ImageSource: ImageSourceResolvers
|
|
134
|
+
}
|
|
65
135
|
|
|
66
136
|
export default resolvers
|
package/src/resolvers/picture.ts
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
PictureResolvers,
|
|
3
|
+
PictureFullBleedResolvers,
|
|
4
|
+
PictureInlineResolvers,
|
|
5
|
+
PictureStandardResolvers,
|
|
6
|
+
} from '../generated'
|
|
7
|
+
|
|
8
|
+
const pictureResolvers: PictureResolvers = {
|
|
9
|
+
alt: (parent) => parent.standard().alt(),
|
|
10
|
+
caption: (parent) => parent.standard().caption(),
|
|
11
|
+
credit: (parent) => parent.standard().credit(),
|
|
12
|
+
fallbackImage: (parent) => parent.standard(),
|
|
13
|
+
images: (parent) => parent.images(),
|
|
14
|
+
imageType: (parent) => parent.standard().type(),
|
|
15
|
+
layoutWidth: (parent) => parent.layoutWidth(),
|
|
16
|
+
}
|
|
2
17
|
|
|
3
18
|
const resolvers = {
|
|
4
19
|
Picture: {
|
|
@@ -11,28 +26,25 @@ const resolvers = {
|
|
|
11
26
|
} as const
|
|
12
27
|
return layoutWidthToType[layoutWidth]
|
|
13
28
|
},
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return parent.standard().credit()
|
|
28
|
-
},
|
|
29
|
-
alt(parent) {
|
|
30
|
-
return parent.standard().alt()
|
|
31
|
-
},
|
|
32
|
-
imageType(parent) {
|
|
33
|
-
return parent.standard().type()
|
|
34
|
-
},
|
|
29
|
+
...pictureResolvers,
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
PictureStandard: {
|
|
33
|
+
...pictureResolvers,
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
PictureInline: {
|
|
37
|
+
...pictureResolvers,
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
PictureFullBleed: {
|
|
41
|
+
...pictureResolvers,
|
|
35
42
|
},
|
|
36
|
-
} satisfies {
|
|
43
|
+
} satisfies {
|
|
44
|
+
Picture: PictureResolvers
|
|
45
|
+
PictureFullBleed: PictureFullBleedResolvers
|
|
46
|
+
PictureInline: PictureInlineResolvers
|
|
47
|
+
PictureStandard: PictureStandardResolvers
|
|
48
|
+
}
|
|
37
49
|
|
|
38
50
|
export default resolvers
|
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
import { RichTextResolvers } from '../generated'
|
|
1
|
+
import { RichTextResolvers, StructuredContentResolvers } from '../generated'
|
|
2
2
|
|
|
3
3
|
const resolvers = {
|
|
4
4
|
RichText: {
|
|
5
|
-
raw(parent)
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
raw: (parent) => parent.raw(),
|
|
6
|
+
structured: (parent, _, context) => parent.structured(context),
|
|
7
|
+
source: (parent) => parent.source,
|
|
8
|
+
},
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
StructuredContent: {
|
|
11
|
+
tree: (parent) => parent.tree,
|
|
12
|
+
references: (parent) => parent.references,
|
|
13
|
+
text: (parent) => parent.text ?? null,
|
|
12
14
|
},
|
|
13
|
-
} satisfies {
|
|
15
|
+
} satisfies {
|
|
16
|
+
RichText: RichTextResolvers
|
|
17
|
+
StructuredContent: StructuredContentResolvers
|
|
18
|
+
}
|
|
14
19
|
|
|
15
20
|
export default resolvers
|
package/src/resolvers/scalars.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { GraphQLScalarType } from 'graphql'
|
|
1
2
|
import { LiteralUnionScalar } from './literal-union'
|
|
2
3
|
|
|
3
4
|
export const ImageFormat = new LiteralUnionScalar<
|
|
@@ -63,7 +64,7 @@ export const TopperBackgroundColour = new LiteralUnionScalar<
|
|
|
63
64
|
],
|
|
64
65
|
})
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
const FollowButtonVariant = new LiteralUnionScalar<
|
|
67
68
|
[
|
|
68
69
|
'standard',
|
|
69
70
|
'inverse',
|
|
@@ -155,6 +156,7 @@ const resolvers = {
|
|
|
155
156
|
ImageType,
|
|
156
157
|
RichTextSource,
|
|
157
158
|
ContentType,
|
|
159
|
+
JSON: new GraphQLScalarType({ name: 'JSON' }),
|
|
158
160
|
}
|
|
159
161
|
|
|
160
162
|
export default resolvers
|
package/src/resolvers/teaser.ts
CHANGED
|
@@ -2,8 +2,7 @@ import { TeaserResolvers } from '../generated'
|
|
|
2
2
|
|
|
3
3
|
const resolvers = {
|
|
4
4
|
Teaser: {
|
|
5
|
-
url: (parent, args) =>
|
|
6
|
-
args.relative ? parent.relativeUrl() : parent.url(),
|
|
5
|
+
url: (parent, args) => parent.url(args),
|
|
7
6
|
type: (parent) =>
|
|
8
7
|
parent
|
|
9
8
|
.type()
|
|
@@ -28,6 +27,11 @@ const resolvers = {
|
|
|
28
27
|
}
|
|
29
28
|
},
|
|
30
29
|
standfirst: (parent) => parent.standfirst(),
|
|
30
|
+
firstPublishedDate: (parent) => parent.firstPublishedDate(),
|
|
31
|
+
id: (parent) => parent.id(),
|
|
32
|
+
publishedDate: (parent) => parent.publishedDate(),
|
|
33
|
+
theme: (parent) => parent.design().theme,
|
|
34
|
+
title: (parent) => parent.title(),
|
|
31
35
|
},
|
|
32
36
|
} satisfies { Teaser: TeaserResolvers }
|
|
33
37
|
|
package/src/resolvers/topper.ts
CHANGED
|
@@ -6,17 +6,30 @@ import {
|
|
|
6
6
|
TopperWithPackageResolvers,
|
|
7
7
|
TopperWithThemeResolvers,
|
|
8
8
|
PodcastTopperResolvers,
|
|
9
|
+
TopperWithHeadshotResolvers,
|
|
10
|
+
BasicTopperResolvers,
|
|
11
|
+
SplitTextTopperResolvers,
|
|
12
|
+
FullBleedTopperResolvers,
|
|
13
|
+
DeepLandscapeTopperResolvers,
|
|
14
|
+
DeepPortraitTopperResolvers,
|
|
15
|
+
BrandedTopperResolvers,
|
|
9
16
|
} from '../generated'
|
|
10
17
|
|
|
18
|
+
const topperResolvers: TopperResolvers = {
|
|
19
|
+
backgroundBox: (topper) => topper.backgroundBox(),
|
|
20
|
+
backgroundColour: (topper) => topper.backgroundColour(),
|
|
21
|
+
displayConcept: (topper) => topper.displayConcept(),
|
|
22
|
+
followButtonVariant: (topper) => topper.followButtonVariant(),
|
|
23
|
+
genreConcept: (topper) => topper.genreConcept(),
|
|
24
|
+
headline: (topper) => topper.headline(),
|
|
25
|
+
intro: (topper) => topper.intro(),
|
|
26
|
+
textShadow: (topper) => topper.textShadow(),
|
|
27
|
+
}
|
|
28
|
+
|
|
11
29
|
const resolvers = {
|
|
12
30
|
Topper: {
|
|
13
31
|
__resolveType: (topper) => topper.type(),
|
|
14
|
-
|
|
15
|
-
intro: (topper) => topper.intro(),
|
|
16
|
-
backgroundColour: (topper) => topper.backgroundColour(),
|
|
17
|
-
displayConcept: (topper) => topper.displayConcept(),
|
|
18
|
-
followButtonVariant: (topper) => topper.followButtonVariant(),
|
|
19
|
-
genreConcept: (topper) => topper.genreConcept(),
|
|
32
|
+
...topperResolvers,
|
|
20
33
|
},
|
|
21
34
|
|
|
22
35
|
TopperWithImages: {
|
|
@@ -34,26 +47,93 @@ const resolvers = {
|
|
|
34
47
|
genreConcept: (topper) => topper.genreConcept(),
|
|
35
48
|
},
|
|
36
49
|
|
|
50
|
+
TopperWithHeadshot: {
|
|
51
|
+
headshot: (topper, args) => topper.headshot(args),
|
|
52
|
+
},
|
|
53
|
+
|
|
37
54
|
PodcastTopper: {
|
|
55
|
+
...topperResolvers,
|
|
56
|
+
brandConcept: (topper) => topper.brandConcept(),
|
|
38
57
|
headshot: (topper, args) => topper.headshot(args),
|
|
58
|
+
isLargeHeadline: (topper) => topper.isLargeHeadline(),
|
|
59
|
+
layout: (topper) => topper.layout(),
|
|
60
|
+
columnist: (topper) => topper.columnist(),
|
|
39
61
|
},
|
|
40
62
|
|
|
41
63
|
OpinionTopper: {
|
|
64
|
+
...topperResolvers,
|
|
42
65
|
headshot: (topper, args) => topper.headshot(args),
|
|
66
|
+
isLargeHeadline: (topper) => topper.isLargeHeadline(),
|
|
67
|
+
layout: (topper) => topper.layout(),
|
|
43
68
|
columnist: (topper) => topper.columnist(),
|
|
44
69
|
},
|
|
45
70
|
|
|
46
71
|
TopperWithPackage: {
|
|
47
72
|
design: (topper) => topper.design().theme,
|
|
48
73
|
},
|
|
74
|
+
|
|
75
|
+
BasicTopper: {
|
|
76
|
+
...topperResolvers,
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
BrandedTopper: {
|
|
80
|
+
...topperResolvers,
|
|
81
|
+
brandConcept: (topper) => topper.brandConcept(),
|
|
82
|
+
isLargeHeadline: (topper) => topper.isLargeHeadline(),
|
|
83
|
+
layout: (topper) => topper.layout(),
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
DeepLandscapeTopper: {
|
|
87
|
+
...topperResolvers,
|
|
88
|
+
brandConcept: (topper) => topper.brandConcept(),
|
|
89
|
+
isLargeHeadline: (topper) => topper.isLargeHeadline(),
|
|
90
|
+
layout: (topper) => topper.layout(),
|
|
91
|
+
fallbackImage: (topper) => topper.fallbackImage(),
|
|
92
|
+
images: (topper) => topper.images(),
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
DeepPortraitTopper: {
|
|
96
|
+
...topperResolvers,
|
|
97
|
+
brandConcept: (topper) => topper.brandConcept(),
|
|
98
|
+
isLargeHeadline: (topper) => topper.isLargeHeadline(),
|
|
99
|
+
layout: (topper) => topper.layout(),
|
|
100
|
+
fallbackImage: (topper) => topper.fallbackImage(),
|
|
101
|
+
images: (topper) => topper.images(),
|
|
102
|
+
},
|
|
103
|
+
|
|
104
|
+
FullBleedTopper: {
|
|
105
|
+
...topperResolvers,
|
|
106
|
+
brandConcept: (topper) => topper.brandConcept(),
|
|
107
|
+
isLargeHeadline: (topper) => topper.isLargeHeadline(),
|
|
108
|
+
layout: (topper) => topper.layout(),
|
|
109
|
+
fallbackImage: (topper) => topper.fallbackImage(),
|
|
110
|
+
images: (topper) => topper.images(),
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
SplitTextTopper: {
|
|
114
|
+
...topperResolvers,
|
|
115
|
+
design: (topper) => topper.design().theme,
|
|
116
|
+
brandConcept: (topper) => topper.brandConcept(),
|
|
117
|
+
isLargeHeadline: (topper) => topper.isLargeHeadline(),
|
|
118
|
+
layout: (topper) => topper.layout(),
|
|
119
|
+
fallbackImage: (topper) => topper.fallbackImage(),
|
|
120
|
+
images: (topper) => topper.images(),
|
|
121
|
+
},
|
|
49
122
|
} satisfies {
|
|
50
123
|
Topper: TopperResolvers
|
|
51
124
|
TopperWithImages: TopperWithImagesResolvers
|
|
52
125
|
TopperWithTheme: TopperWithThemeResolvers
|
|
53
126
|
TopperWithBrand: TopperWithBrandResolvers
|
|
127
|
+
TopperWithHeadshot: TopperWithHeadshotResolvers
|
|
54
128
|
TopperWithPackage: TopperWithPackageResolvers
|
|
55
129
|
PodcastTopper: PodcastTopperResolvers
|
|
56
130
|
OpinionTopper: OpinionTopperResolvers
|
|
131
|
+
BasicTopper: BasicTopperResolvers
|
|
132
|
+
BrandedTopper: BrandedTopperResolvers
|
|
133
|
+
DeepLandscapeTopper: DeepLandscapeTopperResolvers
|
|
134
|
+
DeepPortraitTopper: DeepPortraitTopperResolvers
|
|
135
|
+
FullBleedTopper: FullBleedTopperResolvers
|
|
136
|
+
SplitTextTopper: SplitTextTopperResolvers
|
|
57
137
|
}
|
|
58
138
|
|
|
59
139
|
export default resolvers
|