@financial-times/cp-content-pipeline-schema 4.1.0 → 4.3.0
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 +16 -0
- package/MAIN-IMAGE.MD +59 -0
- package/lib/datasources/capi.js.map +1 -1
- package/lib/generated/index.d.ts +151 -22
- package/lib/resolvers/content-tree/Workarounds.d.ts +1 -1
- package/lib/resolvers/content-tree/nodePredicates.d.ts +1 -0
- package/lib/resolvers/content-tree/nodePredicates.js +13 -1
- package/lib/resolvers/content-tree/nodePredicates.js.map +1 -1
- package/lib/resolvers/content-tree/tagMappings.js +12 -9
- package/lib/resolvers/content-tree/tagMappings.js.map +1 -1
- package/lib/resolvers/content-tree/tagMappings.test.js +56 -2
- package/lib/resolvers/content-tree/tagMappings.test.js.map +1 -1
- package/lib/resolvers/core.d.ts +6 -0
- package/lib/resolvers/core.js +1 -0
- package/lib/resolvers/core.js.map +1 -1
- package/lib/resolvers/debug.d.ts +63 -0
- package/lib/resolvers/debug.js +44 -0
- package/lib/resolvers/debug.js.map +1 -0
- package/lib/resolvers/index.d.ts +66 -12
- package/lib/resolvers/index.js +2 -0
- package/lib/resolvers/index.js.map +1 -1
- package/lib/resolvers/topper.d.ts +20 -12
- package/lib/resolvers/topper.js +13 -12
- package/lib/resolvers/topper.js.map +1 -1
- package/package.json +4 -4
- package/queries/article.graphql +11 -0
- package/src/datasources/capi.ts +1 -0
- package/src/generated/index.ts +173 -22
- package/src/resolvers/content-tree/Workarounds.ts +1 -0
- package/src/resolvers/content-tree/nodePredicates.ts +22 -0
- package/src/resolvers/content-tree/tagMappings.test.ts +72 -3
- package/src/resolvers/content-tree/tagMappings.ts +18 -13
- package/src/resolvers/core.ts +1 -0
- package/src/resolvers/debug.ts +62 -0
- package/src/resolvers/index.ts +2 -0
- package/src/resolvers/topper.ts +14 -12
- package/tsconfig.tsbuildinfo +1 -1
- package/typedefs/core.graphql +3 -0
- package/typedefs/debug.graphql +69 -0
- package/typedefs/topper.graphql +32 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.3.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v4.2.0...cp-content-pipeline-schema-v4.3.0) (2026-05-05)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add debug resolvers for http-based datasources ([3690e5b](https://github.com/Financial-Times/cp-content-pipeline/commit/3690e5bb9a36d7b25b9a39e215739ee307e99ae7))
|
|
9
|
+
* add new element for onward journey's find out more link ([9f916bf](https://github.com/Financial-Times/cp-content-pipeline/commit/9f916bfdcd5ee7525de6ea68a3731516f05af2b8))
|
|
10
|
+
* bump @financial-times/content-tree to 0.6.0 ([7f98a3a](https://github.com/Financial-Times/cp-content-pipeline/commit/7f98a3ae735b6a228d93236d3b08e3895016879b))
|
|
11
|
+
|
|
12
|
+
## [4.2.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v4.1.0...cp-content-pipeline-schema-v4.2.0) (2026-04-22)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* ci-3193 support main images in leadimage data ([62ce69c](https://github.com/Financial-Times/cp-content-pipeline/commit/62ce69cb437d1048236de70bc417d67a74b0132e))
|
|
18
|
+
|
|
3
19
|
## [4.1.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v4.0.0...cp-content-pipeline-schema-v4.1.0) (2026-04-16)
|
|
4
20
|
|
|
5
21
|
|
package/MAIN-IMAGE.MD
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Main Image logic
|
|
2
|
+
|
|
3
|
+
Historically, main images have come through to us as an imageset that is the first child in the body XML returned by CAPI. The main image appears between the standfirst and the byline, placing it amongst the topper data rather than the first item in the article body. The main image data should now be moving to the list of lead images.
|
|
4
|
+
|
|
5
|
+
Lead images can already contain the images used in the more stylized toppers (deep landscape, split text, full bleed) where the image is next to or underneath the topper content. These articles do not display a main image between standfirst and byline.
|
|
6
|
+
|
|
7
|
+
## Data
|
|
8
|
+
|
|
9
|
+
### Content tree
|
|
10
|
+
|
|
11
|
+
Spark has the concept of a basic topper type, and this branches out into further derived types (opinion, branded) when creating the topper data returned by this API. This is later checked by the templates.
|
|
12
|
+
|
|
13
|
+
The content tree will take the leadImages data to make a property called images on topper.
|
|
14
|
+
|
|
15
|
+
```mermaid
|
|
16
|
+
flowchart TD
|
|
17
|
+
A[Topper model] --> |CAPI data | B{has leadImages?}
|
|
18
|
+
B --> |yes| C[filter to only get leadImages with truthy image property]
|
|
19
|
+
C --> D[create newCapiImage for each valid image]
|
|
20
|
+
D --> F["images: [CAPIImage instances]"]
|
|
21
|
+
B --> |no| E["images: []"]
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Tag mapping (bodyXML)
|
|
25
|
+
|
|
26
|
+
For tag mappings, we check if the first child of the body is an imageset and that there is no topper data to determine whether this is supposed to be a main image or not. The more stylized toppers have topper data, the basic types do not.
|
|
27
|
+
|
|
28
|
+
```mermaid
|
|
29
|
+
flowchart TD
|
|
30
|
+
A[TagMapping] -->|CAPI data| B(articleMapping)
|
|
31
|
+
B --> C{check body > imageset:firstchild}
|
|
32
|
+
C -->|type is CCC OR <br />topperHasImage<sup>1</sup> AND topper exists| E[image-set]
|
|
33
|
+
C -->|else| D[main-image]
|
|
34
|
+
```
|
|
35
|
+
<sup>1</sup> `topperHasImage` is true if there are 1+ valid `leadImages` items in the CAPI response. This is because if you have lead images, then anything in the body should be part of the article, not the main image.
|
|
36
|
+
|
|
37
|
+
## Templates
|
|
38
|
+
|
|
39
|
+
#### Lead images for toppers with prominent images (split-left etc)
|
|
40
|
+
This is how we decide to render a lead image in the o-topper__visual area
|
|
41
|
+
```mermaid
|
|
42
|
+
flowchart TD
|
|
43
|
+
Start([Topper/index.tsx]) --> HasImages{Does topper have<br/>'images' property?}
|
|
44
|
+
HasImages -->|yes| CheckType{Is type basic / branded / opinion?}
|
|
45
|
+
HasImages -->|no| NoRender[Don't render Picture]
|
|
46
|
+
CheckType -->|no/false/null/undefined| RenderPicture[Render Picture component]
|
|
47
|
+
CheckType -->|yes| NoRender
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
#### Lead images for basic/opinion/branded toppers
|
|
51
|
+
This is how we decide whether to render a main image from lead images or bodyXML
|
|
52
|
+
```mermaid
|
|
53
|
+
flowchart TD
|
|
54
|
+
Start([MainImage/index.tsx]) --> HasImages{Does topper have<br/>'images' property?}
|
|
55
|
+
HasImages -->|yes| CheckType{Is type basic / branded / opinion?}
|
|
56
|
+
HasImages -->|no| Fallback[Fall through to legacy main image rendering]
|
|
57
|
+
CheckType -->|yes| RenderTopperMainImage[Render TopperMainImage component]
|
|
58
|
+
CheckType -->|no| Fallback
|
|
59
|
+
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capi.js","sourceRoot":"","sources":["../../src/datasources/capi.ts"],"names":[],"mappings":";;;AAAA,8CAA0C;AAC1C,iDAA2D;AAM3D,wCAAoC;AACpC,4CAAwC;AAGxC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B;IACjE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;IACvD,CAAC,CAAC,GAAG,CAAA;AAEP,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAmC,EAAE,CAC5E,QAAQ,IAAI,KAAK,CAAA;AAEnB,SAAS,kBAAkB,CAAC,KAAoB;IAC9C,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED,MAAa,cAAe,SAAQ,yCAA0B;IAC5D,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,uBAAuB,CAAA;IACzD,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAA;IACxC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7C,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACzC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA,CAAC,UAAU;IACnC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC3C,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACxC,CAAC,CAAC,GAAG,CAAA,CAAC,aAAa;IAErB,IAAI,iBAAiB;QACnB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,oBAAoB,CAAS;IAEpB,eAAe,CAAC,IAAY,EAAE,OAAyB;QAC9D,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEpC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QACrD,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,OAAO,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,gBAA0B;QACvD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC5B;gBACE,MAAM,EAAE,wBAAwB;gBAChC,EAAE,EAAE,IAAI;aACT;SACF,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,EAAE;YACxD,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE;SAC5C,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAA;QACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAErB,OAAO,iBAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,EAAE;YACxD,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE;SAC5C,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"capi.js","sourceRoot":"","sources":["../../src/datasources/capi.ts"],"names":[],"mappings":"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"}
|
package/lib/generated/index.d.ts
CHANGED
|
@@ -13,6 +13,11 @@ import type { FlourishSource as FlourishSourceModel } from '../model/FlourishSou
|
|
|
13
13
|
import type { ContentTree } from '@financial-times/content-tree';
|
|
14
14
|
import type { ReferenceWithCAPIData } from '../resolvers/content-tree/references';
|
|
15
15
|
import type { Author as AuthorNode, ClipSet as ClipSetNode, OldClip as OldClipNode, RawImage as RawImageNode } from '../resolvers/content-tree/Workarounds';
|
|
16
|
+
import type { DataSourceFetchResult } from '@apollo/datasource-rest';
|
|
17
|
+
import type { DataSources } from '../datasources';
|
|
18
|
+
import type { CapiDataSource } from '../datasources/capi';
|
|
19
|
+
import type { OrigamiImageDataSource } from '../datasources/origami-image';
|
|
20
|
+
import type { TwitterDataSource } from '../datasources/twitter';
|
|
16
21
|
import type { QueryContext } from '../';
|
|
17
22
|
export type Maybe<T> = T | null;
|
|
18
23
|
export type InputMaybe<T> = Maybe<T>;
|
|
@@ -312,25 +317,29 @@ export type AuthorReference = Reference & {
|
|
|
312
317
|
/** The type of the reference, 'author' */
|
|
313
318
|
readonly type: Scalars['String']['output'];
|
|
314
319
|
};
|
|
315
|
-
export type BasicTopper = Topper & {
|
|
320
|
+
export type BasicTopper = Topper & TopperWithImages & {
|
|
316
321
|
/** Whether the topper should have a background box. */
|
|
317
322
|
readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
|
|
318
323
|
/** The background colour of the topper. */
|
|
319
324
|
readonly backgroundColour?: Maybe<Scalars['TopperBackgroundColour']['output']>;
|
|
320
325
|
/** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
|
|
321
326
|
readonly displayConcept?: Maybe<Concept>;
|
|
327
|
+
/** A fallback image to be used if the 'images' are not availableimages: [Image!]. */
|
|
328
|
+
readonly fallbackImage?: Maybe<Image>;
|
|
322
329
|
/** The variant of the follow button to be displayed on the topper. */
|
|
323
330
|
readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
|
|
324
331
|
/** The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}. */
|
|
325
332
|
readonly genreConcept?: Maybe<Concept>;
|
|
326
333
|
/** The headline text of the topper. */
|
|
327
334
|
readonly headline: Scalars['String']['output'];
|
|
335
|
+
/** An array of images to be displayed on the topper. */
|
|
336
|
+
readonly images?: Maybe<ReadonlyArray<Image>>;
|
|
328
337
|
/** An abstract syntax tree of the introduction text. */
|
|
329
338
|
readonly intro?: Maybe<RichText>;
|
|
330
339
|
/** Whether the topper should have a text shadow. */
|
|
331
340
|
readonly textShadow?: Maybe<Scalars['Boolean']['output']>;
|
|
332
341
|
};
|
|
333
|
-
export type BrandedTopper = Topper & TopperWithBrand & TopperWithTheme & {
|
|
342
|
+
export type BrandedTopper = Topper & TopperWithBrand & TopperWithImages & TopperWithTheme & {
|
|
334
343
|
/** Whether the topper should have a background box. */
|
|
335
344
|
readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
|
|
336
345
|
/** The background colour of the topper. */
|
|
@@ -339,12 +348,16 @@ export type BrandedTopper = Topper & TopperWithBrand & TopperWithTheme & {
|
|
|
339
348
|
readonly brandConcept?: Maybe<Concept>;
|
|
340
349
|
/** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
|
|
341
350
|
readonly displayConcept?: Maybe<Concept>;
|
|
351
|
+
/** A fallback image to be used if the 'images' are not availableimages: [Image!]. */
|
|
352
|
+
readonly fallbackImage?: Maybe<Image>;
|
|
342
353
|
/** The variant of the follow button to be displayed on the topper. */
|
|
343
354
|
readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
|
|
344
355
|
/** The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}. */
|
|
345
356
|
readonly genreConcept?: Maybe<Concept>;
|
|
346
357
|
/** The headline text of the topper. */
|
|
347
358
|
readonly headline: Scalars['String']['output'];
|
|
359
|
+
/** An array of images to be displayed on the topper. */
|
|
360
|
+
readonly images?: Maybe<ReadonlyArray<Image>>;
|
|
348
361
|
/** An abstract syntax tree of the introduction text. */
|
|
349
362
|
readonly intro?: Maybe<RichText>;
|
|
350
363
|
/** Whether the headline should be large. */
|
|
@@ -359,6 +372,32 @@ export type BrandedTopper = Topper & TopperWithBrand & TopperWithTheme & {
|
|
|
359
372
|
/** Whether the topper should have a text shadow. */
|
|
360
373
|
readonly textShadow?: Maybe<Scalars['Boolean']['output']>;
|
|
361
374
|
};
|
|
375
|
+
export type CapiDebug = {
|
|
376
|
+
/** Call the /internalcontent endpoint for debugging */
|
|
377
|
+
readonly content: DebugResponse;
|
|
378
|
+
/** Call the /enrichedcontent endpoint for debugging */
|
|
379
|
+
readonly imageSet: DebugResponse;
|
|
380
|
+
/** Call the /lists endpoint for debugging */
|
|
381
|
+
readonly list: DebugResponse;
|
|
382
|
+
/** Call the /people endpoint for debugging */
|
|
383
|
+
readonly person: DebugResponse;
|
|
384
|
+
};
|
|
385
|
+
export type CapiDebugContentArgs = {
|
|
386
|
+
skipCache?: InputMaybe<Scalars['Boolean']['input']>;
|
|
387
|
+
uuid: Scalars['String']['input'];
|
|
388
|
+
};
|
|
389
|
+
export type CapiDebugImageSetArgs = {
|
|
390
|
+
skipCache?: InputMaybe<Scalars['Boolean']['input']>;
|
|
391
|
+
uuid: Scalars['String']['input'];
|
|
392
|
+
};
|
|
393
|
+
export type CapiDebugListArgs = {
|
|
394
|
+
skipCache?: InputMaybe<Scalars['Boolean']['input']>;
|
|
395
|
+
uuid: Scalars['String']['input'];
|
|
396
|
+
};
|
|
397
|
+
export type CapiDebugPersonArgs = {
|
|
398
|
+
skipCache?: InputMaybe<Scalars['Boolean']['input']>;
|
|
399
|
+
uuid: Scalars['String']['input'];
|
|
400
|
+
};
|
|
362
401
|
export type Caption = {
|
|
363
402
|
/** The media type of the caption eg. text/vtt. */
|
|
364
403
|
readonly mediaType?: Maybe<Scalars['String']['output']>;
|
|
@@ -669,6 +708,24 @@ export type CustomCodeComponent = Reference & {
|
|
|
669
708
|
/** Semantic version of the code of the component. */
|
|
670
709
|
readonly versionRange: Scalars['String']['output'];
|
|
671
710
|
};
|
|
711
|
+
export type DataSourceDebug = {
|
|
712
|
+
/** Call the Content API datasource for debugging */
|
|
713
|
+
readonly capi?: Maybe<CapiDebug>;
|
|
714
|
+
/** Call the Image Service datasource for debugging */
|
|
715
|
+
readonly imageService?: Maybe<ImageServiceDebug>;
|
|
716
|
+
/** Call the Twitter datasource for debugging */
|
|
717
|
+
readonly twitter?: Maybe<TwitterDebug>;
|
|
718
|
+
};
|
|
719
|
+
export type DebugResponse = {
|
|
720
|
+
/** The JSON body returned from the upstream datasource */
|
|
721
|
+
readonly body: Scalars['JSON']['output'];
|
|
722
|
+
/** Whether this response was served from the Valkey cache */
|
|
723
|
+
readonly fromCache: Scalars['Boolean']['output'];
|
|
724
|
+
/** The headers returned from the upstream datasource */
|
|
725
|
+
readonly headers: Scalars['JSON']['output'];
|
|
726
|
+
/** The status code returned by the upstream datasource */
|
|
727
|
+
readonly status: Scalars['Int']['output'];
|
|
728
|
+
};
|
|
672
729
|
export type DeepLandscapeTopper = Topper & TopperWithBrand & TopperWithImages & TopperWithTheme & {
|
|
673
730
|
/** Whether the topper should have a background box. */
|
|
674
731
|
readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
|
|
@@ -678,7 +735,7 @@ export type DeepLandscapeTopper = Topper & TopperWithBrand & TopperWithImages &
|
|
|
678
735
|
readonly brandConcept?: Maybe<Concept>;
|
|
679
736
|
/** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
|
|
680
737
|
readonly displayConcept?: Maybe<Concept>;
|
|
681
|
-
/** A fallback image to be used if the 'images' are not availableimages: [Image!]
|
|
738
|
+
/** A fallback image to be used if the 'images' are not availableimages: [Image!]. */
|
|
682
739
|
readonly fallbackImage?: Maybe<Image>;
|
|
683
740
|
/** The variant of the follow button to be displayed on the topper. */
|
|
684
741
|
readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
|
|
@@ -687,7 +744,7 @@ export type DeepLandscapeTopper = Topper & TopperWithBrand & TopperWithImages &
|
|
|
687
744
|
/** The headline text of the topper. */
|
|
688
745
|
readonly headline: Scalars['String']['output'];
|
|
689
746
|
/** An array of images to be displayed on the topper. */
|
|
690
|
-
readonly images
|
|
747
|
+
readonly images?: Maybe<ReadonlyArray<Image>>;
|
|
691
748
|
/** An abstract syntax tree of the introduction text. */
|
|
692
749
|
readonly intro?: Maybe<RichText>;
|
|
693
750
|
/** Whether the headline should be large. */
|
|
@@ -711,7 +768,7 @@ export type DeepPortraitTopper = Topper & TopperWithBrand & TopperWithImages & T
|
|
|
711
768
|
readonly brandConcept?: Maybe<Concept>;
|
|
712
769
|
/** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
|
|
713
770
|
readonly displayConcept?: Maybe<Concept>;
|
|
714
|
-
/** A fallback image to be used if the 'images' are not availableimages: [Image!]
|
|
771
|
+
/** A fallback image to be used if the 'images' are not availableimages: [Image!]. */
|
|
715
772
|
readonly fallbackImage?: Maybe<Image>;
|
|
716
773
|
/** The variant of the follow button to be displayed on the topper. */
|
|
717
774
|
readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
|
|
@@ -720,7 +777,7 @@ export type DeepPortraitTopper = Topper & TopperWithBrand & TopperWithImages & T
|
|
|
720
777
|
/** The headline text of the topper. */
|
|
721
778
|
readonly headline: Scalars['String']['output'];
|
|
722
779
|
/** An array of images to be displayed on the topper. */
|
|
723
|
-
readonly images
|
|
780
|
+
readonly images?: Maybe<ReadonlyArray<Image>>;
|
|
724
781
|
/** An abstract syntax tree of the introduction text. */
|
|
725
782
|
readonly intro?: Maybe<RichText>;
|
|
726
783
|
/** Whether the headline should be large. */
|
|
@@ -770,7 +827,7 @@ export type FullBleedTopper = Topper & TopperWithBrand & TopperWithImages & Topp
|
|
|
770
827
|
readonly brandConcept?: Maybe<Concept>;
|
|
771
828
|
/** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
|
|
772
829
|
readonly displayConcept?: Maybe<Concept>;
|
|
773
|
-
/** A fallback image to be used if the 'images' are not availableimages: [Image!]
|
|
830
|
+
/** A fallback image to be used if the 'images' are not availableimages: [Image!]. */
|
|
774
831
|
readonly fallbackImage?: Maybe<Image>;
|
|
775
832
|
/** The variant of the follow button to be displayed on the topper. */
|
|
776
833
|
readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
|
|
@@ -779,7 +836,7 @@ export type FullBleedTopper = Topper & TopperWithBrand & TopperWithImages & Topp
|
|
|
779
836
|
/** The headline text of the topper. */
|
|
780
837
|
readonly headline: Scalars['String']['output'];
|
|
781
838
|
/** An array of images to be displayed on the topper. */
|
|
782
|
-
readonly images
|
|
839
|
+
readonly images?: Maybe<ReadonlyArray<Image>>;
|
|
783
840
|
/** An abstract syntax tree of the introduction text. */
|
|
784
841
|
readonly intro?: Maybe<RichText>;
|
|
785
842
|
/** Whether the headline should be large. */
|
|
@@ -924,6 +981,14 @@ export type ImagePortraitSourceSetArgs = {
|
|
|
924
981
|
maxDpr?: InputMaybe<Scalars['Int']['input']>;
|
|
925
982
|
width?: InputMaybe<Scalars['Int']['input']>;
|
|
926
983
|
};
|
|
984
|
+
export type ImageServiceDebug = {
|
|
985
|
+
/** Call the /metadata endpoint for debugging */
|
|
986
|
+
readonly metadata: DebugResponse;
|
|
987
|
+
};
|
|
988
|
+
export type ImageServiceDebugMetadataArgs = {
|
|
989
|
+
skipCache?: InputMaybe<Scalars['Boolean']['input']>;
|
|
990
|
+
url: Scalars['String']['input'];
|
|
991
|
+
};
|
|
927
992
|
export type ImageSet = Reference & {
|
|
928
993
|
/** A set of images with different sizes and formats. */
|
|
929
994
|
readonly picture?: Maybe<Picture>;
|
|
@@ -1297,7 +1362,7 @@ export type Mutation = {
|
|
|
1297
1362
|
export type MutationInvalidateRedisCacheArgs = {
|
|
1298
1363
|
uuid: Scalars['String']['input'];
|
|
1299
1364
|
};
|
|
1300
|
-
export type OpinionTopper = Topper & TopperWithHeadshot & TopperWithTheme & {
|
|
1365
|
+
export type OpinionTopper = Topper & TopperWithHeadshot & TopperWithImages & TopperWithTheme & {
|
|
1301
1366
|
/** Whether the topper should have a background box. */
|
|
1302
1367
|
readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
|
|
1303
1368
|
/** The background colour of the topper. */
|
|
@@ -1311,6 +1376,8 @@ export type OpinionTopper = Topper & TopperWithHeadshot & TopperWithTheme & {
|
|
|
1311
1376
|
readonly columnists?: Maybe<ReadonlyArray<Concept>>;
|
|
1312
1377
|
/** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
|
|
1313
1378
|
readonly displayConcept?: Maybe<Concept>;
|
|
1379
|
+
/** A fallback image to be used if the 'images' are not availableimages: [Image!]. */
|
|
1380
|
+
readonly fallbackImage?: Maybe<Image>;
|
|
1314
1381
|
/** The variant of the follow button to be displayed on the topper. */
|
|
1315
1382
|
readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
|
|
1316
1383
|
/** The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}. */
|
|
@@ -1319,6 +1386,8 @@ export type OpinionTopper = Topper & TopperWithHeadshot & TopperWithTheme & {
|
|
|
1319
1386
|
readonly headline: Scalars['String']['output'];
|
|
1320
1387
|
/** The url of the headshot image, eg. for columns with one key author. */
|
|
1321
1388
|
readonly headshot?: Maybe<Scalars['String']['output']>;
|
|
1389
|
+
/** An array of images to be displayed on the topper. */
|
|
1390
|
+
readonly images?: Maybe<ReadonlyArray<Image>>;
|
|
1322
1391
|
/** An abstract syntax tree of the introduction text. */
|
|
1323
1392
|
readonly intro?: Maybe<RichText>;
|
|
1324
1393
|
/** Whether the headline should be large. */
|
|
@@ -1355,7 +1424,7 @@ export type PartnerContentTopper = Topper & TopperWithImages & TopperWithTheme &
|
|
|
1355
1424
|
readonly backgroundColour?: Maybe<Scalars['TopperBackgroundColour']['output']>;
|
|
1356
1425
|
/** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
|
|
1357
1426
|
readonly displayConcept?: Maybe<Concept>;
|
|
1358
|
-
/** A fallback image to be used if the 'images' are not availableimages: [Image!]
|
|
1427
|
+
/** A fallback image to be used if the 'images' are not availableimages: [Image!]. */
|
|
1359
1428
|
readonly fallbackImage?: Maybe<Image>;
|
|
1360
1429
|
/** The variant of the follow button to be displayed on the topper. */
|
|
1361
1430
|
readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
|
|
@@ -1364,7 +1433,7 @@ export type PartnerContentTopper = Topper & TopperWithImages & TopperWithTheme &
|
|
|
1364
1433
|
/** The headline text of the topper. */
|
|
1365
1434
|
readonly headline: Scalars['String']['output'];
|
|
1366
1435
|
/** An array of images to be displayed on the topper. */
|
|
1367
|
-
readonly images
|
|
1436
|
+
readonly images?: Maybe<ReadonlyArray<Image>>;
|
|
1368
1437
|
/** An abstract syntax tree of the introduction text. */
|
|
1369
1438
|
readonly intro?: Maybe<RichText>;
|
|
1370
1439
|
/** Whether the headline should be large. */
|
|
@@ -1579,6 +1648,8 @@ export type Query = {
|
|
|
1579
1648
|
readonly content: Content;
|
|
1580
1649
|
/** The article content as resolved from passed-in content-api json data. */
|
|
1581
1650
|
readonly contentFromJSON: Content;
|
|
1651
|
+
/** Directly call datasources for debugging purposes */
|
|
1652
|
+
readonly debugDataSources?: Maybe<DataSourceDebug>;
|
|
1582
1653
|
/** Resolve a content list from a uuid. */
|
|
1583
1654
|
readonly list: List;
|
|
1584
1655
|
/** The version of the schema, eg. 2.0.0. */
|
|
@@ -1642,7 +1713,7 @@ export type SplitTextTopper = Topper & TopperWithBrand & TopperWithImages & Topp
|
|
|
1642
1713
|
readonly design?: Maybe<Scalars['String']['output']>;
|
|
1643
1714
|
/** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
|
|
1644
1715
|
readonly displayConcept?: Maybe<Concept>;
|
|
1645
|
-
/** A fallback image to be used if the 'images' are not availableimages: [Image!]
|
|
1716
|
+
/** A fallback image to be used if the 'images' are not availableimages: [Image!]. */
|
|
1646
1717
|
readonly fallbackImage?: Maybe<Image>;
|
|
1647
1718
|
/** The variant of the follow button to be displayed on the topper. */
|
|
1648
1719
|
readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
|
|
@@ -1651,7 +1722,7 @@ export type SplitTextTopper = Topper & TopperWithBrand & TopperWithImages & Topp
|
|
|
1651
1722
|
/** The headline text of the topper. */
|
|
1652
1723
|
readonly headline: Scalars['String']['output'];
|
|
1653
1724
|
/** An array of images to be displayed on the topper. */
|
|
1654
|
-
readonly images
|
|
1725
|
+
readonly images?: Maybe<ReadonlyArray<Image>>;
|
|
1655
1726
|
/** An abstract syntax tree of the introduction text. */
|
|
1656
1727
|
readonly intro?: Maybe<RichText>;
|
|
1657
1728
|
/** Whether the headline should be large. */
|
|
@@ -1815,7 +1886,7 @@ export type TopperWithImages = {
|
|
|
1815
1886
|
/** A fallback image to be used if the 'images' are not available. */
|
|
1816
1887
|
readonly fallbackImage?: Maybe<Image>;
|
|
1817
1888
|
/** An array of images to be displayed on the topper. */
|
|
1818
|
-
readonly images
|
|
1889
|
+
readonly images?: Maybe<ReadonlyArray<Image>>;
|
|
1819
1890
|
};
|
|
1820
1891
|
export type TopperWithPackage = {
|
|
1821
1892
|
/** The design of the topper, eg. 'standard'. */
|
|
@@ -1838,6 +1909,14 @@ export type Tweet = Reference & {
|
|
|
1838
1909
|
/** The type of the reference, eg. 'tweet'. */
|
|
1839
1910
|
readonly type: Scalars['String']['output'];
|
|
1840
1911
|
};
|
|
1912
|
+
export type TwitterDebug = {
|
|
1913
|
+
/** Call the OEmbed API for debugging */
|
|
1914
|
+
readonly tweet: DebugResponse;
|
|
1915
|
+
};
|
|
1916
|
+
export type TwitterDebugTweetArgs = {
|
|
1917
|
+
skipCache?: InputMaybe<Scalars['Boolean']['input']>;
|
|
1918
|
+
url: Scalars['String']['input'];
|
|
1919
|
+
};
|
|
1841
1920
|
export type Video = Content & {
|
|
1842
1921
|
/** A scalar representing the access level of the article, eg. 'free'. */
|
|
1843
1922
|
readonly accessLevel?: Maybe<Scalars['AccessLevel']['output']>;
|
|
@@ -1955,7 +2034,7 @@ export type ResolversInterfaceTypes<RefType extends Record<string, unknown>> = R
|
|
|
1955
2034
|
TopperWithBrand: (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel);
|
|
1956
2035
|
TopperWithCoverImage: (TopperModel);
|
|
1957
2036
|
TopperWithHeadshot: (TopperModel) | (TopperModel);
|
|
1958
|
-
TopperWithImages: (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel);
|
|
2037
|
+
TopperWithImages: (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel);
|
|
1959
2038
|
TopperWithPackage: (TopperModel);
|
|
1960
2039
|
TopperWithTheme: (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel) | (TopperModel);
|
|
1961
2040
|
}>;
|
|
@@ -1975,6 +2054,7 @@ export type ResolversTypes = ResolversObject<{
|
|
|
1975
2054
|
Boolean: ResolverTypeWrapper<Scalars['Boolean']['output']>;
|
|
1976
2055
|
BrandedTopper: ResolverTypeWrapper<TopperModel>;
|
|
1977
2056
|
CanBeSyndicated: ResolverTypeWrapper<Scalars['CanBeSyndicated']['output']>;
|
|
2057
|
+
CapiDebug: ResolverTypeWrapper<CapiDataSource>;
|
|
1978
2058
|
Caption: ResolverTypeWrapper<Caption>;
|
|
1979
2059
|
Clip: ResolverTypeWrapper<ClipModel>;
|
|
1980
2060
|
ClipFormat: ResolverTypeWrapper<Scalars['ClipFormat']['output']>;
|
|
@@ -1992,6 +2072,8 @@ export type ResolversTypes = ResolversObject<{
|
|
|
1992
2072
|
ContentPackage: ResolverTypeWrapper<ContentModel>;
|
|
1993
2073
|
ContentType: ResolverTypeWrapper<Scalars['ContentType']['output']>;
|
|
1994
2074
|
CustomCodeComponent: ResolverTypeWrapper<ReferenceWithCAPIData<ContentTree.CustomCodeComponent>>;
|
|
2075
|
+
DataSourceDebug: ResolverTypeWrapper<DataSources>;
|
|
2076
|
+
DebugResponse: ResolverTypeWrapper<DataSourceFetchResult<any>>;
|
|
1995
2077
|
DeepLandscapeTopper: ResolverTypeWrapper<TopperModel>;
|
|
1996
2078
|
DeepPortraitTopper: ResolverTypeWrapper<TopperModel>;
|
|
1997
2079
|
Design: ResolverTypeWrapper<Design>;
|
|
@@ -2008,6 +2090,7 @@ export type ResolversTypes = ResolversObject<{
|
|
|
2008
2090
|
ImageLandscape: ResolverTypeWrapper<ImageModel>;
|
|
2009
2091
|
ImageMobile: ResolverTypeWrapper<ImageModel>;
|
|
2010
2092
|
ImagePortrait: ResolverTypeWrapper<ImageModel>;
|
|
2093
|
+
ImageServiceDebug: ResolverTypeWrapper<OrigamiImageDataSource>;
|
|
2011
2094
|
ImageSet: ResolverTypeWrapper<ReferenceWithCAPIData<ContentTree.ImageSet>>;
|
|
2012
2095
|
ImageSource: ResolverTypeWrapper<ImageSource>;
|
|
2013
2096
|
ImageSquare: ResolverTypeWrapper<ImageModel>;
|
|
@@ -2069,6 +2152,7 @@ export type ResolversTypes = ResolversObject<{
|
|
|
2069
2152
|
TopperWithPackage: ResolverTypeWrapper<TopperModel>;
|
|
2070
2153
|
TopperWithTheme: ResolverTypeWrapper<TopperModel>;
|
|
2071
2154
|
Tweet: ResolverTypeWrapper<ReferenceWithCAPIData<ContentTree.Tweet>>;
|
|
2155
|
+
TwitterDebug: ResolverTypeWrapper<TwitterDataSource>;
|
|
2072
2156
|
Video: ResolverTypeWrapper<ContentModel>;
|
|
2073
2157
|
VideoReference: ResolverTypeWrapper<ReferenceWithCAPIData<ContentTree.Video>>;
|
|
2074
2158
|
}>;
|
|
@@ -2088,6 +2172,7 @@ export type ResolversParentTypes = ResolversObject<{
|
|
|
2088
2172
|
Boolean: Scalars['Boolean']['output'];
|
|
2089
2173
|
BrandedTopper: TopperModel;
|
|
2090
2174
|
CanBeSyndicated: Scalars['CanBeSyndicated']['output'];
|
|
2175
|
+
CapiDebug: CapiDataSource;
|
|
2091
2176
|
Caption: Caption;
|
|
2092
2177
|
Clip: ClipModel;
|
|
2093
2178
|
ClipFormat: Scalars['ClipFormat']['output'];
|
|
@@ -2105,6 +2190,8 @@ export type ResolversParentTypes = ResolversObject<{
|
|
|
2105
2190
|
ContentPackage: ContentModel;
|
|
2106
2191
|
ContentType: Scalars['ContentType']['output'];
|
|
2107
2192
|
CustomCodeComponent: ReferenceWithCAPIData<ContentTree.CustomCodeComponent>;
|
|
2193
|
+
DataSourceDebug: DataSources;
|
|
2194
|
+
DebugResponse: DataSourceFetchResult<any>;
|
|
2108
2195
|
DeepLandscapeTopper: TopperModel;
|
|
2109
2196
|
DeepPortraitTopper: TopperModel;
|
|
2110
2197
|
Design: Design;
|
|
@@ -2121,6 +2208,7 @@ export type ResolversParentTypes = ResolversObject<{
|
|
|
2121
2208
|
ImageLandscape: ImageModel;
|
|
2122
2209
|
ImageMobile: ImageModel;
|
|
2123
2210
|
ImagePortrait: ImageModel;
|
|
2211
|
+
ImageServiceDebug: OrigamiImageDataSource;
|
|
2124
2212
|
ImageSet: ReferenceWithCAPIData<ContentTree.ImageSet>;
|
|
2125
2213
|
ImageSource: ImageSource;
|
|
2126
2214
|
ImageSquare: ImageModel;
|
|
@@ -2182,6 +2270,7 @@ export type ResolversParentTypes = ResolversObject<{
|
|
|
2182
2270
|
TopperWithPackage: TopperModel;
|
|
2183
2271
|
TopperWithTheme: TopperModel;
|
|
2184
2272
|
Tweet: ReferenceWithCAPIData<ContentTree.Tweet>;
|
|
2273
|
+
TwitterDebug: TwitterDataSource;
|
|
2185
2274
|
Video: ContentModel;
|
|
2186
2275
|
VideoReference: ReferenceWithCAPIData<ContentTree.Video>;
|
|
2187
2276
|
}>;
|
|
@@ -2288,9 +2377,11 @@ export type BasicTopperResolvers<ContextType = QueryContext, ParentType extends
|
|
|
2288
2377
|
backgroundBox: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
2289
2378
|
backgroundColour: Resolver<Maybe<ResolversTypes['TopperBackgroundColour']>, ParentType, ContextType>;
|
|
2290
2379
|
displayConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
|
|
2380
|
+
fallbackImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
|
|
2291
2381
|
followButtonVariant: Resolver<Maybe<ResolversTypes['FollowButtonVariant']>, ParentType, ContextType>;
|
|
2292
2382
|
genreConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
|
|
2293
2383
|
headline: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
2384
|
+
images: Resolver<Maybe<ReadonlyArray<ResolversTypes['Image']>>, ParentType, ContextType>;
|
|
2294
2385
|
intro: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
|
|
2295
2386
|
textShadow: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
2296
2387
|
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
@@ -2300,9 +2391,11 @@ export type BrandedTopperResolvers<ContextType = QueryContext, ParentType extend
|
|
|
2300
2391
|
backgroundColour: Resolver<Maybe<ResolversTypes['TopperBackgroundColour']>, ParentType, ContextType>;
|
|
2301
2392
|
brandConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
|
|
2302
2393
|
displayConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
|
|
2394
|
+
fallbackImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
|
|
2303
2395
|
followButtonVariant: Resolver<Maybe<ResolversTypes['FollowButtonVariant']>, ParentType, ContextType>;
|
|
2304
2396
|
genreConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
|
|
2305
2397
|
headline: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
2398
|
+
images: Resolver<Maybe<ReadonlyArray<ResolversTypes['Image']>>, ParentType, ContextType>;
|
|
2306
2399
|
intro: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
|
|
2307
2400
|
isLargeHeadline: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
2308
2401
|
layout: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
@@ -2313,6 +2406,13 @@ export type BrandedTopperResolvers<ContextType = QueryContext, ParentType extend
|
|
|
2313
2406
|
export interface CanBeSyndicatedScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['CanBeSyndicated'], any> {
|
|
2314
2407
|
name: 'CanBeSyndicated';
|
|
2315
2408
|
}
|
|
2409
|
+
export type CapiDebugResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['CapiDebug'] = ResolversParentTypes['CapiDebug']> = ResolversObject<{
|
|
2410
|
+
content: Resolver<ResolversTypes['DebugResponse'], ParentType, ContextType, RequireFields<CapiDebugContentArgs, 'uuid'>>;
|
|
2411
|
+
imageSet: Resolver<ResolversTypes['DebugResponse'], ParentType, ContextType, RequireFields<CapiDebugImageSetArgs, 'uuid'>>;
|
|
2412
|
+
list: Resolver<ResolversTypes['DebugResponse'], ParentType, ContextType, RequireFields<CapiDebugListArgs, 'uuid'>>;
|
|
2413
|
+
person: Resolver<ResolversTypes['DebugResponse'], ParentType, ContextType, RequireFields<CapiDebugPersonArgs, 'uuid'>>;
|
|
2414
|
+
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
2415
|
+
}>;
|
|
2316
2416
|
export type CaptionResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Caption'] = ResolversParentTypes['Caption']> = ResolversObject<{
|
|
2317
2417
|
mediaType: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
2318
2418
|
url: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
@@ -2472,6 +2572,19 @@ export type CustomCodeComponentResolvers<ContextType = QueryContext, ParentType
|
|
|
2472
2572
|
versionRange: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
2473
2573
|
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
2474
2574
|
}>;
|
|
2575
|
+
export type DataSourceDebugResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['DataSourceDebug'] = ResolversParentTypes['DataSourceDebug']> = ResolversObject<{
|
|
2576
|
+
capi: Resolver<Maybe<ResolversTypes['CapiDebug']>, ParentType, ContextType>;
|
|
2577
|
+
imageService: Resolver<Maybe<ResolversTypes['ImageServiceDebug']>, ParentType, ContextType>;
|
|
2578
|
+
twitter: Resolver<Maybe<ResolversTypes['TwitterDebug']>, ParentType, ContextType>;
|
|
2579
|
+
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
2580
|
+
}>;
|
|
2581
|
+
export type DebugResponseResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['DebugResponse'] = ResolversParentTypes['DebugResponse']> = ResolversObject<{
|
|
2582
|
+
body: Resolver<ResolversTypes['JSON'], ParentType, ContextType>;
|
|
2583
|
+
fromCache: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
|
|
2584
|
+
headers: Resolver<ResolversTypes['JSON'], ParentType, ContextType>;
|
|
2585
|
+
status: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
|
|
2586
|
+
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
2587
|
+
}>;
|
|
2475
2588
|
export type DeepLandscapeTopperResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['DeepLandscapeTopper'] = ResolversParentTypes['DeepLandscapeTopper']> = ResolversObject<{
|
|
2476
2589
|
backgroundBox: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
2477
2590
|
backgroundColour: Resolver<Maybe<ResolversTypes['TopperBackgroundColour']>, ParentType, ContextType>;
|
|
@@ -2481,7 +2594,7 @@ export type DeepLandscapeTopperResolvers<ContextType = QueryContext, ParentType
|
|
|
2481
2594
|
followButtonVariant: Resolver<Maybe<ResolversTypes['FollowButtonVariant']>, ParentType, ContextType>;
|
|
2482
2595
|
genreConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
|
|
2483
2596
|
headline: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
2484
|
-
images: Resolver<ReadonlyArray<ResolversTypes['Image']
|
|
2597
|
+
images: Resolver<Maybe<ReadonlyArray<ResolversTypes['Image']>>, ParentType, ContextType>;
|
|
2485
2598
|
intro: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
|
|
2486
2599
|
isLargeHeadline: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
2487
2600
|
layout: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
@@ -2498,7 +2611,7 @@ export type DeepPortraitTopperResolvers<ContextType = QueryContext, ParentType e
|
|
|
2498
2611
|
followButtonVariant: Resolver<Maybe<ResolversTypes['FollowButtonVariant']>, ParentType, ContextType>;
|
|
2499
2612
|
genreConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
|
|
2500
2613
|
headline: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
2501
|
-
images: Resolver<ReadonlyArray<ResolversTypes['Image']
|
|
2614
|
+
images: Resolver<Maybe<ReadonlyArray<ResolversTypes['Image']>>, ParentType, ContextType>;
|
|
2502
2615
|
intro: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
|
|
2503
2616
|
isLargeHeadline: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
2504
2617
|
layout: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
@@ -2540,7 +2653,7 @@ export type FullBleedTopperResolvers<ContextType = QueryContext, ParentType exte
|
|
|
2540
2653
|
followButtonVariant: Resolver<Maybe<ResolversTypes['FollowButtonVariant']>, ParentType, ContextType>;
|
|
2541
2654
|
genreConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
|
|
2542
2655
|
headline: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
2543
|
-
images: Resolver<ReadonlyArray<ResolversTypes['Image']
|
|
2656
|
+
images: Resolver<Maybe<ReadonlyArray<ResolversTypes['Image']>>, ParentType, ContextType>;
|
|
2544
2657
|
intro: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
|
|
2545
2658
|
isLargeHeadline: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
2546
2659
|
layout: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
@@ -2616,6 +2729,10 @@ export type ImagePortraitResolvers<ContextType = QueryContext, ParentType extend
|
|
|
2616
2729
|
width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
|
|
2617
2730
|
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
2618
2731
|
}>;
|
|
2732
|
+
export type ImageServiceDebugResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['ImageServiceDebug'] = ResolversParentTypes['ImageServiceDebug']> = ResolversObject<{
|
|
2733
|
+
metadata: Resolver<ResolversTypes['DebugResponse'], ParentType, ContextType, RequireFields<ImageServiceDebugMetadataArgs, 'url'>>;
|
|
2734
|
+
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
2735
|
+
}>;
|
|
2619
2736
|
export type ImageSetResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['ImageSet'] = ResolversParentTypes['ImageSet']> = ResolversObject<{
|
|
2620
2737
|
picture: Resolver<Maybe<ResolversTypes['Picture']>, ParentType, ContextType>;
|
|
2621
2738
|
type: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
@@ -2827,10 +2944,12 @@ export type OpinionTopperResolvers<ContextType = QueryContext, ParentType extend
|
|
|
2827
2944
|
columnist: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
|
|
2828
2945
|
columnists: Resolver<Maybe<ReadonlyArray<ResolversTypes['Concept']>>, ParentType, ContextType>;
|
|
2829
2946
|
displayConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
|
|
2947
|
+
fallbackImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
|
|
2830
2948
|
followButtonVariant: Resolver<Maybe<ResolversTypes['FollowButtonVariant']>, ParentType, ContextType>;
|
|
2831
2949
|
genreConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
|
|
2832
2950
|
headline: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
2833
2951
|
headshot: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType, Partial<OpinionTopperHeadshotArgs>>;
|
|
2952
|
+
images: Resolver<Maybe<ReadonlyArray<ResolversTypes['Image']>>, ParentType, ContextType>;
|
|
2834
2953
|
intro: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
|
|
2835
2954
|
isLargeHeadline: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
2836
2955
|
layout: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
@@ -2856,7 +2975,7 @@ export type PartnerContentTopperResolvers<ContextType = QueryContext, ParentType
|
|
|
2856
2975
|
followButtonVariant: Resolver<Maybe<ResolversTypes['FollowButtonVariant']>, ParentType, ContextType>;
|
|
2857
2976
|
genreConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
|
|
2858
2977
|
headline: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
2859
|
-
images: Resolver<ReadonlyArray<ResolversTypes['Image']
|
|
2978
|
+
images: Resolver<Maybe<ReadonlyArray<ResolversTypes['Image']>>, ParentType, ContextType>;
|
|
2860
2979
|
intro: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
|
|
2861
2980
|
isLargeHeadline: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
2862
2981
|
layout: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
@@ -2963,6 +3082,7 @@ export type PodcastTopperResolvers<ContextType = QueryContext, ParentType extend
|
|
|
2963
3082
|
export type QueryResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Query'] = ResolversParentTypes['Query']> = ResolversObject<{
|
|
2964
3083
|
content: Resolver<ResolversTypes['Content'], ParentType, ContextType, RequireFields<QueryContentArgs, 'uuid'>>;
|
|
2965
3084
|
contentFromJSON: Resolver<ResolversTypes['Content'], ParentType, ContextType, RequireFields<QueryContentFromJsonArgs, 'content'>>;
|
|
3085
|
+
debugDataSources: Resolver<Maybe<ResolversTypes['DataSourceDebug']>, ParentType, ContextType>;
|
|
2966
3086
|
list: Resolver<ResolversTypes['List'], ParentType, ContextType, RequireFields<QueryListArgs, 'uuid'>>;
|
|
2967
3087
|
version: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
2968
3088
|
}>;
|
|
@@ -3010,7 +3130,7 @@ export type SplitTextTopperResolvers<ContextType = QueryContext, ParentType exte
|
|
|
3010
3130
|
followButtonVariant: Resolver<Maybe<ResolversTypes['FollowButtonVariant']>, ParentType, ContextType>;
|
|
3011
3131
|
genreConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
|
|
3012
3132
|
headline: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
3013
|
-
images: Resolver<ReadonlyArray<ResolversTypes['Image']
|
|
3133
|
+
images: Resolver<Maybe<ReadonlyArray<ResolversTypes['Image']>>, ParentType, ContextType>;
|
|
3014
3134
|
intro: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
|
|
3015
3135
|
isLargeHeadline: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
3016
3136
|
layout: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
@@ -3110,9 +3230,9 @@ export type TopperWithHeadshotResolvers<ContextType = QueryContext, ParentType e
|
|
|
3110
3230
|
headshot: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType, Partial<TopperWithHeadshotHeadshotArgs>>;
|
|
3111
3231
|
}>;
|
|
3112
3232
|
export type TopperWithImagesResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['TopperWithImages'] = ResolversParentTypes['TopperWithImages']> = ResolversObject<{
|
|
3113
|
-
__resolveType?: TypeResolveFn<'DeepLandscapeTopper' | 'DeepPortraitTopper' | 'FullBleedTopper' | 'PartnerContentTopper' | 'SplitTextTopper', ParentType, ContextType>;
|
|
3233
|
+
__resolveType?: TypeResolveFn<'BasicTopper' | 'BrandedTopper' | 'DeepLandscapeTopper' | 'DeepPortraitTopper' | 'FullBleedTopper' | 'OpinionTopper' | 'PartnerContentTopper' | 'SplitTextTopper', ParentType, ContextType>;
|
|
3114
3234
|
fallbackImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
|
|
3115
|
-
images: Resolver<ReadonlyArray<ResolversTypes['Image']
|
|
3235
|
+
images: Resolver<Maybe<ReadonlyArray<ResolversTypes['Image']>>, ParentType, ContextType>;
|
|
3116
3236
|
}>;
|
|
3117
3237
|
export type TopperWithPackageResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['TopperWithPackage'] = ResolversParentTypes['TopperWithPackage']> = ResolversObject<{
|
|
3118
3238
|
__resolveType?: TypeResolveFn<'SplitTextTopper', ParentType, ContextType>;
|
|
@@ -3129,6 +3249,10 @@ export type TweetResolvers<ContextType = QueryContext, ParentType extends Resolv
|
|
|
3129
3249
|
type: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
3130
3250
|
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
3131
3251
|
}>;
|
|
3252
|
+
export type TwitterDebugResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['TwitterDebug'] = ResolversParentTypes['TwitterDebug']> = ResolversObject<{
|
|
3253
|
+
tweet: Resolver<ResolversTypes['DebugResponse'], ParentType, ContextType, RequireFields<TwitterDebugTweetArgs, 'url'>>;
|
|
3254
|
+
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
3255
|
+
}>;
|
|
3132
3256
|
export type VideoResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Video'] = ResolversParentTypes['Video']> = ResolversObject<{
|
|
3133
3257
|
accessLevel: Resolver<Maybe<ResolversTypes['AccessLevel']>, ParentType, ContextType>;
|
|
3134
3258
|
altStandfirst: Resolver<Maybe<ResolversTypes['AltStandfirst']>, ParentType, ContextType>;
|
|
@@ -3177,6 +3301,7 @@ export type Resolvers<ContextType = QueryContext> = ResolversObject<{
|
|
|
3177
3301
|
BasicTopper: BasicTopperResolvers<ContextType>;
|
|
3178
3302
|
BrandedTopper: BrandedTopperResolvers<ContextType>;
|
|
3179
3303
|
CanBeSyndicated: GraphQLScalarType;
|
|
3304
|
+
CapiDebug: CapiDebugResolvers<ContextType>;
|
|
3180
3305
|
Caption: CaptionResolvers<ContextType>;
|
|
3181
3306
|
Clip: ClipResolvers<ContextType>;
|
|
3182
3307
|
ClipFormat: GraphQLScalarType;
|
|
@@ -3190,6 +3315,8 @@ export type Resolvers<ContextType = QueryContext> = ResolversObject<{
|
|
|
3190
3315
|
ContentPackage: ContentPackageResolvers<ContextType>;
|
|
3191
3316
|
ContentType: GraphQLScalarType;
|
|
3192
3317
|
CustomCodeComponent: CustomCodeComponentResolvers<ContextType>;
|
|
3318
|
+
DataSourceDebug: DataSourceDebugResolvers<ContextType>;
|
|
3319
|
+
DebugResponse: DebugResponseResolvers<ContextType>;
|
|
3193
3320
|
DeepLandscapeTopper: DeepLandscapeTopperResolvers<ContextType>;
|
|
3194
3321
|
DeepPortraitTopper: DeepPortraitTopperResolvers<ContextType>;
|
|
3195
3322
|
Design: DesignResolvers<ContextType>;
|
|
@@ -3204,6 +3331,7 @@ export type Resolvers<ContextType = QueryContext> = ResolversObject<{
|
|
|
3204
3331
|
ImageLandscape: ImageLandscapeResolvers<ContextType>;
|
|
3205
3332
|
ImageMobile: ImageMobileResolvers<ContextType>;
|
|
3206
3333
|
ImagePortrait: ImagePortraitResolvers<ContextType>;
|
|
3334
|
+
ImageServiceDebug: ImageServiceDebugResolvers<ContextType>;
|
|
3207
3335
|
ImageSet: ImageSetResolvers<ContextType>;
|
|
3208
3336
|
ImageSource: ImageSourceResolvers<ContextType>;
|
|
3209
3337
|
ImageSquare: ImageSquareResolvers<ContextType>;
|
|
@@ -3261,6 +3389,7 @@ export type Resolvers<ContextType = QueryContext> = ResolversObject<{
|
|
|
3261
3389
|
TopperWithPackage: TopperWithPackageResolvers<ContextType>;
|
|
3262
3390
|
TopperWithTheme: TopperWithThemeResolvers<ContextType>;
|
|
3263
3391
|
Tweet: TweetResolvers<ContextType>;
|
|
3392
|
+
TwitterDebug: TwitterDebugResolvers<ContextType>;
|
|
3264
3393
|
Video: VideoResolvers<ContextType>;
|
|
3265
3394
|
VideoReference: VideoReferenceResolvers<ContextType>;
|
|
3266
3395
|
}>;
|