@financial-times/cp-content-pipeline-schema 1.4.3 → 1.5.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 +24 -0
- package/lib/fixtures/capiObject.js +1 -1
- package/lib/fixtures/capiObject.js.map +1 -1
- package/lib/fixtures/clipSet.d.ts +2 -0
- package/lib/fixtures/clipSet.js +70 -0
- package/lib/fixtures/clipSet.js.map +1 -0
- package/lib/generated/index.d.ts +136 -3
- package/lib/model/CapiResponse.d.ts +3 -2
- package/lib/model/CapiResponse.js +10 -1
- package/lib/model/CapiResponse.js.map +1 -1
- package/lib/model/Clip.d.ts +28 -0
- package/lib/model/Clip.js +51 -0
- package/lib/model/Clip.js.map +1 -0
- package/lib/model/schemas/capi/article.d.ts +605 -9
- package/lib/model/schemas/capi/article.js +1 -0
- package/lib/model/schemas/capi/article.js.map +1 -1
- package/lib/model/schemas/capi/audio.d.ts +34 -31
- package/lib/model/schemas/capi/audio.js +1 -0
- package/lib/model/schemas/capi/audio.js.map +1 -1
- package/lib/model/schemas/capi/base-schema.d.ts +1358 -14
- package/lib/model/schemas/capi/base-schema.js +46 -2
- package/lib/model/schemas/capi/base-schema.js.map +1 -1
- package/lib/model/schemas/capi/content-package.d.ts +6 -3
- package/lib/model/schemas/capi/content-package.js +1 -0
- package/lib/model/schemas/capi/content-package.js.map +1 -1
- package/lib/model/schemas/capi/live-blog-package.d.ts +605 -9
- package/lib/model/schemas/capi/live-blog-package.js +1 -0
- package/lib/model/schemas/capi/live-blog-package.js.map +1 -1
- package/lib/model/schemas/capi/placeholder.d.ts +605 -9
- package/lib/model/schemas/capi/placeholder.js +1 -0
- package/lib/model/schemas/capi/placeholder.js.map +1 -1
- package/lib/resolvers/clip.d.ts +10 -0
- package/lib/resolvers/clip.js +13 -0
- package/lib/resolvers/clip.js.map +1 -0
- package/lib/resolvers/content-tree/Workarounds.d.ts +10 -2
- package/lib/resolvers/content-tree/nodePredicates.d.ts +3 -3
- package/lib/resolvers/content-tree/references/ClipSet.d.ts +27 -0
- package/lib/resolvers/content-tree/references/ClipSet.js +37 -0
- package/lib/resolvers/content-tree/references/ClipSet.js.map +1 -0
- package/lib/resolvers/content-tree/references/ImageSet.js +3 -2
- package/lib/resolvers/content-tree/references/ImageSet.js.map +1 -1
- package/lib/resolvers/content-tree/references/Reference.d.ts +1 -1
- package/lib/resolvers/content-tree/references/ScrollyImage.js +3 -2
- package/lib/resolvers/content-tree/references/ScrollyImage.js.map +1 -1
- package/lib/resolvers/content-tree/references/index.d.ts +4 -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.js +9 -0
- package/lib/resolvers/content-tree/tagMappings.js.map +1 -1
- package/lib/resolvers/content.d.ts +1 -0
- package/lib/resolvers/content.js +1 -0
- package/lib/resolvers/content.js.map +1 -1
- package/lib/resolvers/index.d.ts +10 -0
- package/lib/resolvers/index.js +2 -0
- package/lib/resolvers/index.js.map +1 -1
- package/lib/resolvers/scalars.d.ts +2 -0
- package/lib/resolvers/scalars.js +6 -1
- package/lib/resolvers/scalars.js.map +1 -1
- package/package.json +1 -1
- package/src/fixtures/capiObject.ts +1 -1
- package/src/fixtures/clipSet.ts +72 -0
- package/src/generated/index.ts +144 -3
- package/src/model/CapiResponse.ts +12 -2
- package/src/model/Clip.ts +75 -0
- package/src/model/__snapshots__/RichText.test.ts.snap +25 -0
- package/src/model/schemas/capi/article.ts +1 -0
- package/src/model/schemas/capi/audio.ts +1 -0
- package/src/model/schemas/capi/base-schema.ts +50 -1
- package/src/model/schemas/capi/content-package.ts +1 -0
- package/src/model/schemas/capi/live-blog-package.ts +1 -0
- package/src/model/schemas/capi/placeholder.ts +1 -0
- package/src/resolvers/clip.ts +13 -0
- package/src/resolvers/content-tree/Workarounds.ts +13 -2
- package/src/resolvers/content-tree/references/ClipSet.ts +49 -0
- package/src/resolvers/content-tree/references/ImageSet.ts +9 -5
- package/src/resolvers/content-tree/references/ScrollyImage.ts +9 -5
- package/src/resolvers/content-tree/references/index.ts +6 -0
- package/src/resolvers/content-tree/tagMappings.ts +10 -0
- package/src/resolvers/content.ts +1 -0
- package/src/resolvers/index.ts +2 -0
- package/src/resolvers/scalars.ts +8 -0
- package/src/types/internal-content.d.ts +4 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/typedefs/clip.graphql +28 -0
- package/typedefs/content.graphql +8 -2
- package/typedefs/references/clipSet.graphql +19 -0
- package/typedefs/scalars.graphql +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.5.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v1.4.4...cp-content-pipeline-schema-v1.5.0) (2023-10-31)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add accessibility to ClipSet schema ([9eb2dde](https://github.com/Financial-Times/cp-content-pipeline/commit/9eb2dde1377965f315b9c702b4abb683cc37d12e))
|
|
9
|
+
* add clip and clipset schema ([a765b91](https://github.com/Financial-Times/cp-content-pipeline/commit/a765b917fc3f3ffa05b52662687239a27ec29d0c))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* correct dataLayout attribute ([59bee9a](https://github.com/Financial-Times/cp-content-pipeline/commit/59bee9a018f703b5e94cf87ca68492ddf25a7532))
|
|
15
|
+
* get this working with old clips ([ca5944a](https://github.com/Financial-Times/cp-content-pipeline/commit/ca5944a74683c23102287f452a684bdf2b84e1a7))
|
|
16
|
+
* make poster optional ([af793fd](https://github.com/Financial-Times/cp-content-pipeline/commit/af793fd10dc7034a91bba35e2ca550d535fe6303))
|
|
17
|
+
* resolve v1 caption, description, credits ([b3ec137](https://github.com/Financial-Times/cp-content-pipeline/commit/b3ec1374bfda8d899c18d6cfebbe52bc79b89a0a))
|
|
18
|
+
* sort dataSource to avoid video not showing ([724ef51](https://github.com/Financial-Times/cp-content-pipeline/commit/724ef510e45a604e2bd29836b1a6bd6f4f160076))
|
|
19
|
+
|
|
20
|
+
## [1.4.4](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v1.4.3...cp-content-pipeline-schema-v1.4.4) (2023-10-26)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Bug Fixes
|
|
24
|
+
|
|
25
|
+
* add missing originatingParty property ([8f684a8](https://github.com/Financial-Times/cp-content-pipeline/commit/8f684a8fd252b4f0d4196f77ee4cfd319f2a679a))
|
|
26
|
+
|
|
3
27
|
## [1.4.3](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v1.4.2...cp-content-pipeline-schema-v1.4.3) (2023-10-17)
|
|
4
28
|
|
|
5
29
|
|
|
@@ -9,7 +9,7 @@ exports.baseCapiObject = {
|
|
|
9
9
|
title: 'Kwarteng faces test persuading UK watchdog of fiscal plans',
|
|
10
10
|
standfirst: '',
|
|
11
11
|
byline: 'Chris Giles in London',
|
|
12
|
-
bodyXML: `<body><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/c45f7393-62c8-4a6b-b53d-641725351851" data-embedded="true"></ft-content><p><a href="https://amzn.to/3V3cwPP"><strong>Eliot After The Waste Land</strong></a><strong> (Eliot Biographies, 2)<br/></strong>by Robert Crawford, <em>Jonathan Cape £25</em></p><p>After a six-year wait, Robert Crawford follows up <em>Young Eliot</em> (2016) with his <a href="https://www.ft.com/content/210d7f37-115e-4197-b392-ffb094ed2699">second (and final) volume</a> on the life of TS Eliot in time for the centenary of “The Waste Land”. Here, he explores Eliot’s marriage, religious life and draws on the 1,131 letters written to American friend Emily Hale that were only released from embargo in 2020 to probe the poet’s later years with tact and empathy.</p><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/bf48b0fc-ad4b-4ce9-a734-faf3e9aab225" data-embedded="true"></ft-content><p><a href="https://amzn.to/3UFKeul"><strong>All the Knowledge in the World</strong></a><strong>: The Extraordinary History of the Encyclopaedia<br/></strong>by Simon Garfield, <em>Weidenfeld & Nicolson £18.99</em></p><p>Simon Garfield, author of quirky histories on everything from fonts to maps, surveys the publishing phenomenon that is the encyclopedia. Tracing its origins from Ancient Greece right up to its modern incarnation in Wikipedia, his handsome book offers an erudite and amusing exploration of the human quest for knowledge.</p><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/cc74e2ec-3314-4b9f-81c1-bcfdf9dbaf99" data-embedded="true"></ft-content><p><a href="https://amzn.to/3VbW1AB"><strong>The Waste Land</strong></a><strong>: A Biography of a Poem<br/></strong>by Matthew Hollis, <em>Faber £20</em></p><p>In the 100 years since TS Eliot penned his famous poem, it has taken on a life of its own. So it’s fitting, perhaps, that Matthew Hollis treats Eliot’s work to its own biography. This richly analytical book locates the poem’s genesis in the aftermath of the first world war and the “nightmare agony” of Eliot’s disastrous marriage.</p><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/7393690b-e02e-4cdb-a263-57e7d1a6eedf" data-embedded="true"></ft-content><p><a href="https://amzn.to/3OgAT9M"><strong>Endless Flight</strong></a><strong>: The Life of Joseph Roth<br/></strong>by Keiron Pim, <em>Granta £25</em></p><p>“I paint the portrait of the age,” Joseph Roth once claimed. Certainly, his work as a journalist from 1917-1939, dissecting central and eastern Europe in more than a thousand essays and anticipating the collapse of democracy on the continent as well as 19 novels provides an exceptional anatomy of a tumultuous period of history. Keiron Pim’s <a href="https://www.ft.com/content/fee9056b-277e-41b4-9572-9fbac39f957b">biography</a> goes some way to introducing the great Austro-Hungarian writer to a new age.</p><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/6e7b048f-d08f-43f7-b1fa-95e98c8ca811" data-embedded="true"></ft-content><p><a href="https://amzn.to/3hX8PfS"><strong>Super-Infinite</strong></a><strong>: The Transformations of John Donne<br/></strong>by Katherine Rundell, <em>Faber £16.99</em></p><p>Katherine Rundell, a Fellow of All Souls College, Oxford, has produced a remarkable life of John Donne, the great poet of love, sex and death. Winner of this year’s Baillie Gifford Prize, her <a href="https://www.ft.com/content/c229396d-5448-44fa-b423-b018695d65d8">biography</a> of the man who was at once soldier, poet, prisoner and priest is sensitive and witty, capturing the essence of a tricky subject. </p><experimental><div class="n-content-layout" data-layout-name="card" data-layout-width="true"><div class="n-content-layout__container"><h2 theme-style="3">Books of the Year 2022</h2><div class="n-content-layout__slot" data-slot-width="true"><h4></h4><div class="n-content-layout__slot" data-slot-width="true"><img alt="" data-copyright="" data-image-type="image" longdesc="" src="https://d1e00ek4ebabms.cloudfront.net/production/43c41a77-ab10-40ed-a2a2-efa99ef32a10.jpg"/></div></div><div class="n-content-layout__slot" data-slot-width="true"><h4></h4><div class="n-content-layout__slot" data-slot-width="true"><p>All this week, FT writers and critics share <a href="https://www.ft.com/content/2dd61d03-13ac-4278-8214-678c1d9a33c1">their favourites</a>. Some highlights are: <br/><br/><strong>Monday:</strong> <a href="https://www.ft.com/content/416e1e1d-22e7-439b-9388-5d0cd56f5a9c">Business</a> by Andrew Hill<br/><strong>Tuesday:</strong> <a href="https://www.ft.com/content/db8aaeb6-141f-4a7c-b364-2296fb0d8065">Environment</a> by Pilita Clark<br/><strong>Wednesday:</strong> <a href="https://www.ft.com/content/634c1974-bc76-4f56-9548-274816dcc638">Economics</a> by Martin Wolf<br/><strong>Thursday:</strong> Fiction by Laura Battle<br/><strong>Friday:</strong> Politics by Gideon Rachman<br/><strong>Saturday:</strong> Critics’ choice</p></div></div></div></div></experimental><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/fde6576e-ab0c-41ec-8e18-bcdb3d6c21c0" data-embedded="true"></ft-content><p><a href="https://amzn.to/3gn2kCl"><strong>The Book of Phobias and Manias</strong></a><strong>: A History of the World in 99 Obsessions<br/></strong>by Kate Summerscale, <em>Profile £16.99</em></p><p>This neat compendium from the prizewinning author of <em>The Suspicions of Mr Whicher</em> charts a broad and intriguing range of fears and madness. Although these phobias and manias are alphabetised, Kate Summerscale suggests groupings (textures, animals, communal crazes) that — accompanied by a lightly erudite introduction — illuminate some of the darker corners of our collective psyche.</p><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/a07a6f3b-41cf-47c7-9b79-1c755ebfe54c" data-embedded="true"></ft-content><p><a href="https://amzn.to/3hX9oq0"><strong>Papyrus</strong></a><strong>: The Invention of Books in the Ancient World<br/></strong>by Irene Vallejo, <em>Hodder & Stoughton £25</em></p><p>Described as “a masterpiece” by Mario Vargas Llosa when it was first published in Spain in 2019, this bestselling phenomenon is now available in English. In it, Irene Vallejo recounts the birth of literary culture in the ancient world while interweaving dynamic, thrilling tales that underscore and celebrate the power of words to change the world.</p><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/60b81603-654d-46ac-85ef-5865eb7bc1e8" data-embedded="true"></ft-content><p><a href="https://amzn.to/3EIwiKD"><strong>Magnificent Rebels</strong></a><strong>: The First Romantics and the Invention of the Self</strong><br/>by Andrea Wulf, <em>John Murray £25/Knopf $35</em></p><p>Between 1794-1806, the cream of Germany’s intelligentsia descended on the tiny university town of Jena. There, Johann Wolfgang von Goethe mingled with philosophers Friedrich Schelling and Georg Wilhelm Friedrich Hegel, the scientist-explorer Alexander von Humboldt and the playwright Friedrich Schiller during the first flush of Romanticism. Andrea Wulf’s wonderful <a href="https://www.ft.com/content/391e2bcd-f14e-44e5-b6de-40990ce7272f">book</a> brings to life the “Jena set” and a golden age of German culture. </p><experimental><div class="n-content-layout" data-layout-name="card" data-layout-width="fullWidth"><div class="n-content-layout__container"><h3>Tell us what you think</h3><div class="n-content-layout__slot" data-slot-width="true"><p>What are your favourites from this list — and what books have we missed? Tell us in the comments below</p></div></div></div></experimental><p><em>Join our online book group on Facebook at </em><a href="https://www.facebook.com/groups/139838140082304/"><em>FT Books Café</em></a></p></body>`,
|
|
12
|
+
bodyXML: `<body><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/c45f7393-62c8-4a6b-b53d-641725351851" data-embedded="true"></ft-content><p><a href="https://amzn.to/3V3cwPP"><strong>Eliot After The Waste Land</strong></a><strong> (Eliot Biographies, 2)<br/></strong>by Robert Crawford, <em>Jonathan Cape £25</em></p><p>After a six-year wait, Robert Crawford follows up <em>Young Eliot</em> (2016) with his <a href="https://www.ft.com/content/210d7f37-115e-4197-b392-ffb094ed2699">second (and final) volume</a> on the life of TS Eliot in time for the centenary of “The Waste Land”. Here, he explores Eliot’s marriage, religious life and draws on the 1,131 letters written to American friend Emily Hale that were only released from embargo in 2020 to probe the poet’s later years with tact and empathy.</p><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/bf48b0fc-ad4b-4ce9-a734-faf3e9aab225" data-embedded="true"></ft-content><p><a href="https://amzn.to/3UFKeul"><strong>All the Knowledge in the World</strong></a><strong>: The Extraordinary History of the Encyclopaedia<br/></strong>by Simon Garfield, <em>Weidenfeld & Nicolson £18.99</em></p><p>Simon Garfield, author of quirky histories on everything from fonts to maps, surveys the publishing phenomenon that is the encyclopedia. Tracing its origins from Ancient Greece right up to its modern incarnation in Wikipedia, his handsome book offers an erudite and amusing exploration of the human quest for knowledge.</p><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/cc74e2ec-3314-4b9f-81c1-bcfdf9dbaf99" data-embedded="true"></ft-content><p><a href="https://amzn.to/3VbW1AB"><strong>The Waste Land</strong></a><strong>: A Biography of a Poem<br/></strong>by Matthew Hollis, <em>Faber £20</em></p><p>In the 100 years since TS Eliot penned his famous poem, it has taken on a life of its own. So it’s fitting, perhaps, that Matthew Hollis treats Eliot’s work to its own biography. This richly analytical book locates the poem’s genesis in the aftermath of the first world war and the “nightmare agony” of Eliot’s disastrous marriage.</p><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/7393690b-e02e-4cdb-a263-57e7d1a6eedf" data-embedded="true"></ft-content><p><a href="https://amzn.to/3OgAT9M"><strong>Endless Flight</strong></a><strong>: The Life of Joseph Roth<br/></strong>by Keiron Pim, <em>Granta £25</em></p><p>“I paint the portrait of the age,” Joseph Roth once claimed. Certainly, his work as a journalist from 1917-1939, dissecting central and eastern Europe in more than a thousand essays and anticipating the collapse of democracy on the continent as well as 19 novels provides an exceptional anatomy of a tumultuous period of history. Keiron Pim’s <a href="https://www.ft.com/content/fee9056b-277e-41b4-9572-9fbac39f957b">biography</a> goes some way to introducing the great Austro-Hungarian writer to a new age.</p><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/6e7b048f-d08f-43f7-b1fa-95e98c8ca811" data-embedded="true"></ft-content><p><a href="https://amzn.to/3hX8PfS"><strong>Super-Infinite</strong></a><strong>: The Transformations of John Donne<br/></strong>by Katherine Rundell, <em>Faber £16.99</em></p><p>Katherine Rundell, a Fellow of All Souls College, Oxford, has produced a remarkable life of John Donne, the great poet of love, sex and death. Winner of this year’s Baillie Gifford Prize, her <a href="https://www.ft.com/content/c229396d-5448-44fa-b423-b018695d65d8">biography</a> of the man who was at once soldier, poet, prisoner and priest is sensitive and witty, capturing the essence of a tricky subject. </p><experimental><div class="n-content-layout" data-layout-name="card" data-layout-width="true"><div class="n-content-layout__container"><h2 theme-style="3">Books of the Year 2022</h2><div class="n-content-layout__slot" data-slot-width="true"><h4></h4><div class="n-content-layout__slot" data-slot-width="true"><img alt="" data-copyright="" data-image-type="image" longdesc="" src="https://d1e00ek4ebabms.cloudfront.net/production/43c41a77-ab10-40ed-a2a2-efa99ef32a10.jpg"/></div></div><div class="n-content-layout__slot" data-slot-width="true"><h4></h4><div class="n-content-layout__slot" data-slot-width="true"><p>All this week, FT writers and critics share <a href="https://www.ft.com/content/2dd61d03-13ac-4278-8214-678c1d9a33c1">their favourites</a>. Some highlights are: <br/><br/><strong>Monday:</strong> <a href="https://www.ft.com/content/416e1e1d-22e7-439b-9388-5d0cd56f5a9c">Business</a> by Andrew Hill<br/><strong>Tuesday:</strong> <a href="https://www.ft.com/content/db8aaeb6-141f-4a7c-b364-2296fb0d8065">Environment</a> by Pilita Clark<br/><strong>Wednesday:</strong> <a href="https://www.ft.com/content/634c1974-bc76-4f56-9548-274816dcc638">Economics</a> by Martin Wolf<br/><strong>Thursday:</strong> Fiction by Laura Battle<br/><strong>Friday:</strong> Politics by Gideon Rachman<br/><strong>Saturday:</strong> Critics’ choice</p></div></div></div></div></experimental><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/fde6576e-ab0c-41ec-8e18-bcdb3d6c21c0" data-embedded="true"></ft-content><p><a href="https://amzn.to/3gn2kCl"><strong>The Book of Phobias and Manias</strong></a><strong>: A History of the World in 99 Obsessions<br/></strong>by Kate Summerscale, <em>Profile £16.99</em></p><p>This neat compendium from the prizewinning author of <em>The Suspicions of Mr Whicher</em> charts a broad and intriguing range of fears and madness. Although these phobias and manias are alphabetised, Kate Summerscale suggests groupings (textures, animals, communal crazes) that — accompanied by a lightly erudite introduction — illuminate some of the darker corners of our collective psyche.</p><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/a07a6f3b-41cf-47c7-9b79-1c755ebfe54c" data-embedded="true"></ft-content><p><a href="https://amzn.to/3hX9oq0"><strong>Papyrus</strong></a><strong>: The Invention of Books in the Ancient World<br/></strong>by Irene Vallejo, <em>Hodder & Stoughton £25</em></p><p>Described as “a masterpiece” by Mario Vargas Llosa when it was first published in Spain in 2019, this bestselling phenomenon is now available in English. In it, Irene Vallejo recounts the birth of literary culture in the ancient world while interweaving dynamic, thrilling tales that underscore and celebrate the power of words to change the world.</p><ft-content type="http://www.ft.com/ontology/content/ImageSet" url="http://api.ft.com/content/60b81603-654d-46ac-85ef-5865eb7bc1e8" data-embedded="true"></ft-content><p><a href="https://amzn.to/3EIwiKD"><strong>Magnificent Rebels</strong></a><strong>: The First Romantics and the Invention of the Self</strong><br/>by Andrea Wulf, <em>John Murray £25/Knopf $35</em></p><ft-content type="http://www.ft.com/ontology/content/ClipSet" url="http://api-t.ft.com/content/f17fe25b-cdea-4d5f-a6af-40e56e33e888" autoplay="true" data-layout="in-line" loop="true" muted="true"></ft-content><p>Between 1794-1806, the cream of Germany’s intelligentsia descended on the tiny university town of Jena. There, Johann Wolfgang von Goethe mingled with philosophers Friedrich Schelling and Georg Wilhelm Friedrich Hegel, the scientist-explorer Alexander von Humboldt and the playwright Friedrich Schiller during the first flush of Romanticism. Andrea Wulf’s wonderful <a href="https://www.ft.com/content/391e2bcd-f14e-44e5-b6de-40990ce7272f">book</a> brings to life the “Jena set” and a golden age of German culture. </p><experimental><div class="n-content-layout" data-layout-name="card" data-layout-width="fullWidth"><div class="n-content-layout__container"><h3>Tell us what you think</h3><div class="n-content-layout__slot" data-slot-width="true"><p>What are your favourites from this list — and what books have we missed? Tell us in the comments below</p></div></div></div></experimental><p><em>Join our online book group on Facebook at </em><a href="https://www.facebook.com/groups/139838140082304/"><em>FT Books Café</em></a></p></body>`,
|
|
13
13
|
annotations: [
|
|
14
14
|
{
|
|
15
15
|
apiUrl: 'http://api.ft.com/things/9bfe954c-e0ec-4716-ae91-24bd0f7860c9',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capiObject.js","sourceRoot":"","sources":["../../src/fixtures/capiObject.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAoB;IAC7C,EAAE,EAAE,8DAA8D;IAClE,IAAI,EAAE,4CAA4C;IAClD,KAAK,EAAE,CAAC,4CAA4C,CAAC;IACrD,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,4DAA4D;IACnE,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,uBAAuB;IAC/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"capiObject.js","sourceRoot":"","sources":["../../src/fixtures/capiObject.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAoB;IAC7C,EAAE,EAAE,8DAA8D;IAClE,IAAI,EAAE,4CAA4C;IAClD,KAAK,EAAE,CAAC,4CAA4C,CAAC;IACrD,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,4DAA4D;IACnE,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,uBAAuB;IAC/B,OAAO,EAAE,imQAAimQ;IAC1mQ,WAAW,EAAE;QACX;YACE,MAAM,EAAE,+DAA+D;YACvE,UAAU,EAAE,kCAAkC;YAC9C,EAAE,EAAE,+DAA+D;YACnE,SAAS,EAAE,6CAA6C;YACxD,SAAS,EAAE,qBAAqB;YAChC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,uCAAuC;gBACvC,4CAA4C;gBAC5C,kCAAkC;aACnC;SACF;QACD;YACE,MAAM,EAAE,+DAA+D;YACvE,UAAU,EAAE,kCAAkC;YAC9C,EAAE,EAAE,+DAA+D;YACnE,SAAS,EAAE,0CAA0C;YACrD,SAAS,EAAE,sBAAsB;YACjC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,uCAAuC;gBACvC,4CAA4C;gBAC5C,kCAAkC;aACnC;SACF;QACD;YACE,EAAE,EAAE,+DAA+D;YACnE,SAAS,EAAE,iDAAiD;YAC5D,SAAS,EAAE,aAAa;YACxB,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,EAAE;YACd,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;SACV;KACF;IACD,SAAS,EAAE;QACT,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,0CAAmD;QACzD,KAAK,EAAE,EAAE;QACT,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,uCAAuC;KACnD;IACD,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,SAAkB;IAC/B,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,EAAE;IACjB,kBAAkB,EAAE,EAAE;CACvB,CAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClipSet = void 0;
|
|
4
|
+
exports.ClipSet = {
|
|
5
|
+
accessibility: {
|
|
6
|
+
captions: [
|
|
7
|
+
{
|
|
8
|
+
mediaType: 'text/vtt',
|
|
9
|
+
url: 'https://next-media-api.ft.com/captions/16862228218010.vtt',
|
|
10
|
+
},
|
|
11
|
+
],
|
|
12
|
+
transcript: '<p>Hydrogen is this magic molecule which is the lightest, the most energetic and the most abundant in the universe. ... </p>',
|
|
13
|
+
},
|
|
14
|
+
description: "The global push for net zero carbon emissions is one of humanity's greatest challenges. ...",
|
|
15
|
+
displayTitle: 'Ukranians fight back',
|
|
16
|
+
contentWarning: ['graphic violence', 'animal cruelty'],
|
|
17
|
+
id: 'http://www.ft.com/thing/f17fe25b-cdea-4d5f-a6af-40e56e33e888',
|
|
18
|
+
members: [
|
|
19
|
+
{
|
|
20
|
+
format: 'standardInline',
|
|
21
|
+
id: 'https://api.ft.com/content/4d000e07-d679-4e3b-bd6d-afa3461243a8',
|
|
22
|
+
type: 'http://www.ft.com/ontology/content/Clip',
|
|
23
|
+
dataSource: [
|
|
24
|
+
{
|
|
25
|
+
audioCodec: 'mp3',
|
|
26
|
+
binaryUrl: 'https://next-media-api.ft.com/renditions/16868569859480/0x0.mp3',
|
|
27
|
+
duration: 1057,
|
|
28
|
+
mediaType: 'audio/mpeg',
|
|
29
|
+
pixelHeight: 720,
|
|
30
|
+
pixelWidth: 1280,
|
|
31
|
+
videoCodec: 'h264',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
poster: {
|
|
35
|
+
id: 'https://api.ft.com/content/2f730c3c-1fb2-4131-9697-c534fe1ee488',
|
|
36
|
+
type: 'http://www.ft.com/ontology/content/ImageSet',
|
|
37
|
+
description: 'Picture for video',
|
|
38
|
+
members: [],
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
format: 'mobile',
|
|
43
|
+
id: 'https://api.ft.com/content/b529ba2b-d424-4f85-a93f-8413636dac82',
|
|
44
|
+
type: 'http://www.ft.com/ontology/content/Clip',
|
|
45
|
+
dataSource: [
|
|
46
|
+
{
|
|
47
|
+
audioCodec: 'mp3',
|
|
48
|
+
binaryUrl: 'https://next-media-api.ft.com/renditions/16868569859480/0x0.mp3',
|
|
49
|
+
duration: 1057,
|
|
50
|
+
mediaType: 'audio/mpeg',
|
|
51
|
+
pixelHeight: 720,
|
|
52
|
+
pixelWidth: 1280,
|
|
53
|
+
videoCodec: 'h264',
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
poster: {
|
|
57
|
+
id: 'https://api.ft.com/content/2f730c3c-1fb2-4131-9697-c534fe1ee488',
|
|
58
|
+
type: 'http://www.ft.com/ontology/content/ImageSet',
|
|
59
|
+
description: 'Picture for video',
|
|
60
|
+
members: [],
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
noAudio: false,
|
|
65
|
+
publishedDate: '2023-06-14T03:59:47.543Z',
|
|
66
|
+
source: 'YouGov',
|
|
67
|
+
subtitle: 'Drone hits Moscow tower block',
|
|
68
|
+
type: 'http://www.ft.com/ontology/content/ClipSet',
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=clipSet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipSet.js","sourceRoot":"","sources":["../../src/fixtures/clipSet.ts"],"names":[],"mappings":";;;AAEa,QAAA,OAAO,GAAgB;IAClC,aAAa,EAAE;QACb,QAAQ,EAAE;YACR;gBACE,SAAS,EAAE,UAAU;gBACrB,GAAG,EAAE,2DAA2D;aACjE;SACF;QACD,UAAU,EACR,8HAA8H;KACjI;IACD,WAAW,EACT,6FAA6F;IAC/F,YAAY,EAAE,sBAAsB;IACpC,cAAc,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IACtD,EAAE,EAAE,8DAA8D;IAClE,OAAO,EAAE;QACP;YACE,MAAM,EAAE,gBAAgB;YACxB,EAAE,EAAE,iEAAiE;YACrE,IAAI,EAAE,yCAAyC;YAC/C,UAAU,EAAE;gBACV;oBACE,UAAU,EAAE,KAAK;oBACjB,SAAS,EACP,iEAAiE;oBACnE,QAAQ,EAAE,IAAI;oBACd,SAAS,EAAE,YAAY;oBACvB,WAAW,EAAE,GAAG;oBAChB,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,MAAM;iBACnB;aACF;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,iEAAiE;gBACrE,IAAI,EAAE,6CAA6C;gBACnD,WAAW,EAAE,mBAAmB;gBAChC,OAAO,EAAE,EAAE;aACZ;SACF;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,EAAE,EAAE,iEAAiE;YACrE,IAAI,EAAE,yCAAyC;YAC/C,UAAU,EAAE;gBACV;oBACE,UAAU,EAAE,KAAK;oBACjB,SAAS,EACP,iEAAiE;oBACnE,QAAQ,EAAE,IAAI;oBACd,SAAS,EAAE,YAAY;oBACvB,WAAW,EAAE,GAAG;oBAChB,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,MAAM;iBACnB;aACF;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,iEAAiE;gBACrE,IAAI,EAAE,6CAA6C;gBACnD,WAAW,EAAE,mBAAmB;gBAChC,OAAO,EAAE,EAAE;aACZ;SACF;KACF;IACD,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,0BAA0B;IACzC,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,+BAA+B;IACzC,IAAI,EAAE,4CAA4C;CACnD,CAAA"}
|
package/lib/generated/index.d.ts
CHANGED
|
@@ -2,12 +2,13 @@ import type { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } f
|
|
|
2
2
|
import type { Concept as ConceptModel } from '../model/Concept';
|
|
3
3
|
import type { CapiResponse } from '../model/CapiResponse';
|
|
4
4
|
import type { Image as ImageModel } from '../model/Image';
|
|
5
|
+
import type { Clip as ClipModel } from '../model/Clip';
|
|
5
6
|
import type { Picture as PictureModel } from '../model/Picture';
|
|
6
7
|
import type { RichText as RichTextModel } from '../model/RichText';
|
|
7
8
|
import type { Topper as TopperModel } from '../model/Topper';
|
|
8
9
|
import type { ContentTree } from '@financial-times/content-tree';
|
|
9
10
|
import type { ReferenceWithCAPIData } from '../resolvers/content-tree/references';
|
|
10
|
-
import type { Video as VideoNode, RawImage as RawImageNode } from '../resolvers/content-tree/Workarounds';
|
|
11
|
+
import type { Video as VideoNode, ClipSet as ClipSetNode, OldClip as OldClipNode, RawImage as RawImageNode } from '../resolvers/content-tree/Workarounds';
|
|
11
12
|
import type { QueryContext } from '../';
|
|
12
13
|
export type Maybe<T> = T | null;
|
|
13
14
|
export type InputMaybe<T> = Maybe<T>;
|
|
@@ -64,6 +65,10 @@ export type Scalars = {
|
|
|
64
65
|
input: 'yes' | 'no' | 'verify' | 'withContributorPayment' | 'unknown';
|
|
65
66
|
output: 'yes' | 'no' | 'verify' | 'withContributorPayment' | 'unknown';
|
|
66
67
|
};
|
|
68
|
+
ClipFormat: {
|
|
69
|
+
input: 'standard-inline' | 'mobile';
|
|
70
|
+
output: 'standard-inline' | 'mobile';
|
|
71
|
+
};
|
|
67
72
|
ContentType: {
|
|
68
73
|
input: 'Article' | 'Placeholder' | 'Video' | 'Audio' | 'LiveBlogPackage' | 'LiveBlogPost' | 'ContentPackage' | 'Content' | 'MediaResource';
|
|
69
74
|
output: 'Article' | 'Placeholder' | 'Video' | 'Audio' | 'LiveBlogPackage' | 'LiveBlogPost' | 'ContentPackage' | 'Content' | 'MediaResource';
|
|
@@ -97,6 +102,10 @@ export type Scalars = {
|
|
|
97
102
|
output: 'paper' | 'wheat' | 'white' | 'black' | 'claret' | 'oxford' | 'slate' | 'crimson' | 'sky' | 'matisse';
|
|
98
103
|
};
|
|
99
104
|
};
|
|
105
|
+
export type Accessibility = {
|
|
106
|
+
readonly captions?: Maybe<ReadonlyArray<Maybe<Caption>>>;
|
|
107
|
+
readonly transcript?: Maybe<Scalars['String']['output']>;
|
|
108
|
+
};
|
|
100
109
|
export type AltStandfirst = {
|
|
101
110
|
readonly promotionalStandfirst?: Maybe<Scalars['String']['output']>;
|
|
102
111
|
};
|
|
@@ -118,6 +127,7 @@ export type Article = Content & {
|
|
|
118
127
|
readonly firstPublishedDate: Scalars['String']['output'];
|
|
119
128
|
readonly id: Scalars['ID']['output'];
|
|
120
129
|
readonly mainImage?: Maybe<Image>;
|
|
130
|
+
readonly originatingParty?: Maybe<Scalars['String']['output']>;
|
|
121
131
|
readonly publishedDate: Scalars['String']['output'];
|
|
122
132
|
readonly standfirst?: Maybe<Scalars['String']['output']>;
|
|
123
133
|
readonly teaser?: Maybe<Teaser>;
|
|
@@ -148,6 +158,7 @@ export type Audio = Content & {
|
|
|
148
158
|
readonly id: Scalars['ID']['output'];
|
|
149
159
|
readonly mainImage?: Maybe<Image>;
|
|
150
160
|
readonly media?: Maybe<ReadonlyArray<Maybe<Media>>>;
|
|
161
|
+
readonly originatingParty?: Maybe<Scalars['String']['output']>;
|
|
151
162
|
readonly publishedDate: Scalars['String']['output'];
|
|
152
163
|
readonly standfirst?: Maybe<Scalars['String']['output']>;
|
|
153
164
|
readonly teaser?: Maybe<Teaser>;
|
|
@@ -186,6 +197,45 @@ export type BrandedTopper = Topper & TopperWithBrand & TopperWithTheme & {
|
|
|
186
197
|
readonly layout?: Maybe<Scalars['String']['output']>;
|
|
187
198
|
readonly textShadow?: Maybe<Scalars['Boolean']['output']>;
|
|
188
199
|
};
|
|
200
|
+
export type Caption = {
|
|
201
|
+
readonly mediaType?: Maybe<Scalars['String']['output']>;
|
|
202
|
+
readonly url?: Maybe<Scalars['String']['output']>;
|
|
203
|
+
};
|
|
204
|
+
export type Clip = {
|
|
205
|
+
readonly dataSource: ReadonlyArray<ClipSource>;
|
|
206
|
+
readonly format?: Maybe<Scalars['ClipFormat']['output']>;
|
|
207
|
+
readonly id: Scalars['String']['output'];
|
|
208
|
+
readonly poster?: Maybe<Scalars['String']['output']>;
|
|
209
|
+
readonly type?: Maybe<Scalars['String']['output']>;
|
|
210
|
+
};
|
|
211
|
+
export type ClipSet = Reference & {
|
|
212
|
+
readonly accessibility?: Maybe<Accessibility>;
|
|
213
|
+
readonly autoplay?: Maybe<Scalars['Boolean']['output']>;
|
|
214
|
+
readonly caption?: Maybe<Scalars['String']['output']>;
|
|
215
|
+
readonly clips?: Maybe<ReadonlyArray<Maybe<Clip>>>;
|
|
216
|
+
readonly contentWarning?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;
|
|
217
|
+
readonly credits?: Maybe<Scalars['String']['output']>;
|
|
218
|
+
readonly dataLayout?: Maybe<Scalars['String']['output']>;
|
|
219
|
+
readonly description?: Maybe<Scalars['String']['output']>;
|
|
220
|
+
readonly displayTitle?: Maybe<Scalars['String']['output']>;
|
|
221
|
+
readonly id: Scalars['String']['output'];
|
|
222
|
+
readonly loop?: Maybe<Scalars['Boolean']['output']>;
|
|
223
|
+
readonly muted?: Maybe<Scalars['Boolean']['output']>;
|
|
224
|
+
readonly noAudio?: Maybe<Scalars['Boolean']['output']>;
|
|
225
|
+
readonly publishedDate?: Maybe<Scalars['String']['output']>;
|
|
226
|
+
readonly source?: Maybe<Scalars['String']['output']>;
|
|
227
|
+
readonly subtitle?: Maybe<Scalars['String']['output']>;
|
|
228
|
+
readonly type: Scalars['String']['output'];
|
|
229
|
+
};
|
|
230
|
+
export type ClipSource = {
|
|
231
|
+
readonly audioCodec?: Maybe<Scalars['String']['output']>;
|
|
232
|
+
readonly binaryUrl: Scalars['String']['output'];
|
|
233
|
+
readonly duration?: Maybe<Scalars['Int']['output']>;
|
|
234
|
+
readonly mediaType: Scalars['String']['output'];
|
|
235
|
+
readonly pixelHeight?: Maybe<Scalars['Int']['output']>;
|
|
236
|
+
readonly pixelWidth?: Maybe<Scalars['Int']['output']>;
|
|
237
|
+
readonly videoCodec?: Maybe<Scalars['String']['output']>;
|
|
238
|
+
};
|
|
189
239
|
export type Concept = {
|
|
190
240
|
readonly apiUrl?: Maybe<Scalars['String']['output']>;
|
|
191
241
|
readonly directType?: Maybe<Scalars['String']['output']>;
|
|
@@ -215,6 +265,7 @@ export type Content = {
|
|
|
215
265
|
readonly firstPublishedDate: Scalars['String']['output'];
|
|
216
266
|
readonly id: Scalars['ID']['output'];
|
|
217
267
|
readonly mainImage?: Maybe<Image>;
|
|
268
|
+
readonly originatingParty?: Maybe<Scalars['String']['output']>;
|
|
218
269
|
readonly publishedDate: Scalars['String']['output'];
|
|
219
270
|
readonly standfirst?: Maybe<Scalars['String']['output']>;
|
|
220
271
|
readonly teaser?: Maybe<Teaser>;
|
|
@@ -246,6 +297,7 @@ export type ContentPackage = Content & {
|
|
|
246
297
|
readonly firstPublishedDate: Scalars['String']['output'];
|
|
247
298
|
readonly id: Scalars['ID']['output'];
|
|
248
299
|
readonly mainImage?: Maybe<Image>;
|
|
300
|
+
readonly originatingParty?: Maybe<Scalars['String']['output']>;
|
|
249
301
|
readonly publishedDate: Scalars['String']['output'];
|
|
250
302
|
readonly standfirst?: Maybe<Scalars['String']['output']>;
|
|
251
303
|
readonly tableOfContents?: Maybe<TableOfContents>;
|
|
@@ -521,6 +573,7 @@ export type LiveBlogPackage = Content & {
|
|
|
521
573
|
readonly id: Scalars['ID']['output'];
|
|
522
574
|
readonly liveBlogPosts?: Maybe<ReadonlyArray<Maybe<Content>>>;
|
|
523
575
|
readonly mainImage?: Maybe<Image>;
|
|
576
|
+
readonly originatingParty?: Maybe<Scalars['String']['output']>;
|
|
524
577
|
readonly pinnedPost?: Maybe<Content>;
|
|
525
578
|
readonly publishedDate: Scalars['String']['output'];
|
|
526
579
|
readonly realtime?: Maybe<Scalars['Boolean']['output']>;
|
|
@@ -553,6 +606,7 @@ export type LiveBlogPost = Content & {
|
|
|
553
606
|
readonly firstPublishedDate: Scalars['String']['output'];
|
|
554
607
|
readonly id: Scalars['ID']['output'];
|
|
555
608
|
readonly mainImage?: Maybe<Image>;
|
|
609
|
+
readonly originatingParty?: Maybe<Scalars['String']['output']>;
|
|
556
610
|
readonly publishedDate: Scalars['String']['output'];
|
|
557
611
|
readonly standfirst?: Maybe<Scalars['String']['output']>;
|
|
558
612
|
readonly teaser?: Maybe<Teaser>;
|
|
@@ -654,6 +708,7 @@ export type Placeholder = Content & {
|
|
|
654
708
|
readonly firstPublishedDate: Scalars['String']['output'];
|
|
655
709
|
readonly id: Scalars['ID']['output'];
|
|
656
710
|
readonly mainImage?: Maybe<Image>;
|
|
711
|
+
readonly originatingParty?: Maybe<Scalars['String']['output']>;
|
|
657
712
|
readonly publishedDate: Scalars['String']['output'];
|
|
658
713
|
readonly standfirst?: Maybe<Scalars['String']['output']>;
|
|
659
714
|
readonly teaser?: Maybe<Teaser>;
|
|
@@ -813,6 +868,7 @@ export type Video = Content & {
|
|
|
813
868
|
readonly firstPublishedDate: Scalars['String']['output'];
|
|
814
869
|
readonly id: Scalars['ID']['output'];
|
|
815
870
|
readonly mainImage?: Maybe<Image>;
|
|
871
|
+
readonly originatingParty?: Maybe<Scalars['String']['output']>;
|
|
816
872
|
readonly publishedDate: Scalars['String']['output'];
|
|
817
873
|
readonly standfirst?: Maybe<Scalars['String']['output']>;
|
|
818
874
|
readonly teaser?: Maybe<Teaser>;
|
|
@@ -879,7 +935,7 @@ export type ResolversInterfaceTypes<RefType extends Record<string, unknown>> = R
|
|
|
879
935
|
fallbackImage: RefType['Image'];
|
|
880
936
|
images: ReadonlyArray<RefType['Image']>;
|
|
881
937
|
});
|
|
882
|
-
Reference: (ReferenceWithCAPIData<ContentTree.Flourish>) | (ReferenceWithCAPIData<ContentTree.ImageSet>) | (ReferenceWithCAPIData<ContentTree.LayoutImage>) | (ReferenceWithCAPIData<ContentTree.ImageSet>) | (ReferenceWithCAPIData<RawImageNode>) | (ReferenceWithCAPIData<ContentTree.Recommended>) | (ReferenceWithCAPIData<ContentTree.ScrollyImage>) | (ReferenceWithCAPIData<ContentTree.Tweet>) | (ReferenceWithCAPIData<VideoNode>);
|
|
938
|
+
Reference: (ReferenceWithCAPIData<ClipSetNode | OldClipNode>) | (ReferenceWithCAPIData<ContentTree.Flourish>) | (ReferenceWithCAPIData<ContentTree.ImageSet>) | (ReferenceWithCAPIData<ContentTree.LayoutImage>) | (ReferenceWithCAPIData<ContentTree.ImageSet>) | (ReferenceWithCAPIData<RawImageNode>) | (ReferenceWithCAPIData<ContentTree.Recommended>) | (ReferenceWithCAPIData<ContentTree.ScrollyImage>) | (ReferenceWithCAPIData<ContentTree.Tweet>) | (ReferenceWithCAPIData<VideoNode>);
|
|
883
939
|
Topper: (Omit<BasicTopper, 'displayConcept' | 'genreConcept' | 'intro'> & {
|
|
884
940
|
displayConcept?: Maybe<RefType['Concept']>;
|
|
885
941
|
genreConcept?: Maybe<RefType['Concept']>;
|
|
@@ -1028,6 +1084,7 @@ export type ResolversInterfaceTypes<RefType extends Record<string, unknown>> = R
|
|
|
1028
1084
|
/** Mapping between all available schema types and the resolvers types */
|
|
1029
1085
|
export type ResolversTypes = ResolversObject<{
|
|
1030
1086
|
AccessLevel: ResolverTypeWrapper<Scalars['AccessLevel']['output']>;
|
|
1087
|
+
Accessibility: ResolverTypeWrapper<Accessibility>;
|
|
1031
1088
|
AltStandfirst: ResolverTypeWrapper<AltStandfirst>;
|
|
1032
1089
|
AltTitle: ResolverTypeWrapper<AltTitle>;
|
|
1033
1090
|
Article: ResolverTypeWrapper<CapiResponse>;
|
|
@@ -1045,6 +1102,11 @@ export type ResolversTypes = ResolversObject<{
|
|
|
1045
1102
|
intro?: Maybe<ResolversTypes['RichText']>;
|
|
1046
1103
|
}>;
|
|
1047
1104
|
CanBeSyndicated: ResolverTypeWrapper<Scalars['CanBeSyndicated']['output']>;
|
|
1105
|
+
Caption: ResolverTypeWrapper<Caption>;
|
|
1106
|
+
Clip: ResolverTypeWrapper<ClipModel>;
|
|
1107
|
+
ClipFormat: ResolverTypeWrapper<Scalars['ClipFormat']['output']>;
|
|
1108
|
+
ClipSet: ResolverTypeWrapper<ReferenceWithCAPIData<ClipSetNode | OldClipNode>>;
|
|
1109
|
+
ClipSource: ResolverTypeWrapper<ClipSource>;
|
|
1048
1110
|
Concept: ResolverTypeWrapper<ConceptModel>;
|
|
1049
1111
|
Content: ResolverTypeWrapper<ResolversInterfaceTypes<ResolversTypes>['Content']>;
|
|
1050
1112
|
ContentPackage: ResolverTypeWrapper<CapiResponse>;
|
|
@@ -1154,6 +1216,7 @@ export type ResolversTypes = ResolversObject<{
|
|
|
1154
1216
|
/** Mapping between all available schema types and the resolvers parents */
|
|
1155
1217
|
export type ResolversParentTypes = ResolversObject<{
|
|
1156
1218
|
AccessLevel: Scalars['AccessLevel']['output'];
|
|
1219
|
+
Accessibility: Accessibility;
|
|
1157
1220
|
AltStandfirst: AltStandfirst;
|
|
1158
1221
|
AltTitle: AltTitle;
|
|
1159
1222
|
Article: CapiResponse;
|
|
@@ -1171,6 +1234,11 @@ export type ResolversParentTypes = ResolversObject<{
|
|
|
1171
1234
|
intro?: Maybe<ResolversParentTypes['RichText']>;
|
|
1172
1235
|
};
|
|
1173
1236
|
CanBeSyndicated: Scalars['CanBeSyndicated']['output'];
|
|
1237
|
+
Caption: Caption;
|
|
1238
|
+
Clip: ClipModel;
|
|
1239
|
+
ClipFormat: Scalars['ClipFormat']['output'];
|
|
1240
|
+
ClipSet: ReferenceWithCAPIData<ClipSetNode | OldClipNode>;
|
|
1241
|
+
ClipSource: ClipSource;
|
|
1174
1242
|
Concept: ConceptModel;
|
|
1175
1243
|
Content: ResolversInterfaceTypes<ResolversParentTypes>['Content'];
|
|
1176
1244
|
ContentPackage: CapiResponse;
|
|
@@ -1280,6 +1348,11 @@ export type ResolversParentTypes = ResolversObject<{
|
|
|
1280
1348
|
export interface AccessLevelScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['AccessLevel'], any> {
|
|
1281
1349
|
name: 'AccessLevel';
|
|
1282
1350
|
}
|
|
1351
|
+
export type AccessibilityResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Accessibility'] = ResolversParentTypes['Accessibility']> = ResolversObject<{
|
|
1352
|
+
captions?: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Caption']>>>, ParentType, ContextType>;
|
|
1353
|
+
transcript?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1354
|
+
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
1355
|
+
}>;
|
|
1283
1356
|
export type AltStandfirstResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['AltStandfirst'] = ResolversParentTypes['AltStandfirst']> = ResolversObject<{
|
|
1284
1357
|
promotionalStandfirst?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1285
1358
|
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
@@ -1303,6 +1376,7 @@ export type ArticleResolvers<ContextType = QueryContext, ParentType extends Reso
|
|
|
1303
1376
|
firstPublishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1304
1377
|
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
|
|
1305
1378
|
mainImage?: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
|
|
1379
|
+
originatingParty?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1306
1380
|
publishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1307
1381
|
standfirst?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1308
1382
|
teaser?: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
|
|
@@ -1327,6 +1401,7 @@ export type AudioResolvers<ContextType = QueryContext, ParentType extends Resolv
|
|
|
1327
1401
|
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
|
|
1328
1402
|
mainImage?: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
|
|
1329
1403
|
media?: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Media']>>>, ParentType, ContextType>;
|
|
1404
|
+
originatingParty?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1330
1405
|
publishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1331
1406
|
standfirst?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1332
1407
|
teaser?: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
|
|
@@ -1364,6 +1439,52 @@ export type BrandedTopperResolvers<ContextType = QueryContext, ParentType extend
|
|
|
1364
1439
|
export interface CanBeSyndicatedScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['CanBeSyndicated'], any> {
|
|
1365
1440
|
name: 'CanBeSyndicated';
|
|
1366
1441
|
}
|
|
1442
|
+
export type CaptionResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Caption'] = ResolversParentTypes['Caption']> = ResolversObject<{
|
|
1443
|
+
mediaType?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1444
|
+
url?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1445
|
+
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
1446
|
+
}>;
|
|
1447
|
+
export type ClipResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Clip'] = ResolversParentTypes['Clip']> = ResolversObject<{
|
|
1448
|
+
dataSource?: Resolver<ReadonlyArray<ResolversTypes['ClipSource']>, ParentType, ContextType>;
|
|
1449
|
+
format?: Resolver<Maybe<ResolversTypes['ClipFormat']>, ParentType, ContextType>;
|
|
1450
|
+
id?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1451
|
+
poster?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1452
|
+
type?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1453
|
+
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
1454
|
+
}>;
|
|
1455
|
+
export interface ClipFormatScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['ClipFormat'], any> {
|
|
1456
|
+
name: 'ClipFormat';
|
|
1457
|
+
}
|
|
1458
|
+
export type ClipSetResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['ClipSet'] = ResolversParentTypes['ClipSet']> = ResolversObject<{
|
|
1459
|
+
accessibility?: Resolver<Maybe<ResolversTypes['Accessibility']>, ParentType, ContextType>;
|
|
1460
|
+
autoplay?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
1461
|
+
caption?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1462
|
+
clips?: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Clip']>>>, ParentType, ContextType>;
|
|
1463
|
+
contentWarning?: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;
|
|
1464
|
+
credits?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1465
|
+
dataLayout?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1466
|
+
description?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1467
|
+
displayTitle?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1468
|
+
id?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1469
|
+
loop?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
1470
|
+
muted?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
1471
|
+
noAudio?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
1472
|
+
publishedDate?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1473
|
+
source?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1474
|
+
subtitle?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1475
|
+
type?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1476
|
+
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
1477
|
+
}>;
|
|
1478
|
+
export type ClipSourceResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['ClipSource'] = ResolversParentTypes['ClipSource']> = ResolversObject<{
|
|
1479
|
+
audioCodec?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1480
|
+
binaryUrl?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1481
|
+
duration?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
|
|
1482
|
+
mediaType?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1483
|
+
pixelHeight?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
|
|
1484
|
+
pixelWidth?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
|
|
1485
|
+
videoCodec?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1486
|
+
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
1487
|
+
}>;
|
|
1367
1488
|
export type ConceptResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Concept'] = ResolversParentTypes['Concept']> = ResolversObject<{
|
|
1368
1489
|
apiUrl?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1369
1490
|
directType?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
@@ -1391,6 +1512,7 @@ export type ContentResolvers<ContextType = QueryContext, ParentType extends Reso
|
|
|
1391
1512
|
firstPublishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1392
1513
|
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
|
|
1393
1514
|
mainImage?: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
|
|
1515
|
+
originatingParty?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1394
1516
|
publishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1395
1517
|
standfirst?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1396
1518
|
teaser?: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
|
|
@@ -1415,6 +1537,7 @@ export type ContentPackageResolvers<ContextType = QueryContext, ParentType exten
|
|
|
1415
1537
|
firstPublishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1416
1538
|
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
|
|
1417
1539
|
mainImage?: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
|
|
1540
|
+
originatingParty?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1418
1541
|
publishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1419
1542
|
standfirst?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1420
1543
|
tableOfContents?: Resolver<Maybe<ResolversTypes['TableOfContents']>, ParentType, ContextType>;
|
|
@@ -1675,6 +1798,7 @@ export type LiveBlogPackageResolvers<ContextType = QueryContext, ParentType exte
|
|
|
1675
1798
|
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
|
|
1676
1799
|
liveBlogPosts?: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Content']>>>, ParentType, ContextType>;
|
|
1677
1800
|
mainImage?: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
|
|
1801
|
+
originatingParty?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1678
1802
|
pinnedPost?: Resolver<Maybe<ResolversTypes['Content']>, ParentType, ContextType>;
|
|
1679
1803
|
publishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1680
1804
|
realtime?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
|
@@ -1701,6 +1825,7 @@ export type LiveBlogPostResolvers<ContextType = QueryContext, ParentType extends
|
|
|
1701
1825
|
firstPublishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1702
1826
|
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
|
|
1703
1827
|
mainImage?: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
|
|
1828
|
+
originatingParty?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1704
1829
|
publishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1705
1830
|
standfirst?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1706
1831
|
teaser?: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
|
|
@@ -1801,6 +1926,7 @@ export type PlaceholderResolvers<ContextType = QueryContext, ParentType extends
|
|
|
1801
1926
|
firstPublishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1802
1927
|
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
|
|
1803
1928
|
mainImage?: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
|
|
1929
|
+
originatingParty?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1804
1930
|
publishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1805
1931
|
standfirst?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1806
1932
|
teaser?: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
|
|
@@ -1842,7 +1968,7 @@ export type RecommendedResolvers<ContextType = QueryContext, ParentType extends
|
|
|
1842
1968
|
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
|
1843
1969
|
}>;
|
|
1844
1970
|
export type ReferenceResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Reference'] = ResolversParentTypes['Reference']> = ResolversObject<{
|
|
1845
|
-
__resolveType?: TypeResolveFn<'Flourish' | 'ImageSet' | 'LayoutImage' | 'MainImage' | 'RawImage' | 'Recommended' | 'ScrollyImage' | 'Tweet' | 'VideoReference', ParentType, ContextType>;
|
|
1971
|
+
__resolveType?: TypeResolveFn<'ClipSet' | 'Flourish' | 'ImageSet' | 'LayoutImage' | 'MainImage' | 'RawImage' | 'Recommended' | 'ScrollyImage' | 'Tweet' | 'VideoReference', ParentType, ContextType>;
|
|
1846
1972
|
type?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1847
1973
|
}>;
|
|
1848
1974
|
export type RichTextResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['RichText'] = ResolversParentTypes['RichText']> = ResolversObject<{
|
|
@@ -1960,6 +2086,7 @@ export type VideoResolvers<ContextType = QueryContext, ParentType extends Resolv
|
|
|
1960
2086
|
firstPublishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1961
2087
|
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
|
|
1962
2088
|
mainImage?: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
|
|
2089
|
+
originatingParty?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1963
2090
|
publishedDate?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
|
1964
2091
|
standfirst?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
|
1965
2092
|
teaser?: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
|
|
@@ -1977,6 +2104,7 @@ export type VideoReferenceResolvers<ContextType = QueryContext, ParentType exten
|
|
|
1977
2104
|
}>;
|
|
1978
2105
|
export type Resolvers<ContextType = QueryContext> = ResolversObject<{
|
|
1979
2106
|
AccessLevel?: GraphQLScalarType;
|
|
2107
|
+
Accessibility?: AccessibilityResolvers<ContextType>;
|
|
1980
2108
|
AltStandfirst?: AltStandfirstResolvers<ContextType>;
|
|
1981
2109
|
AltTitle?: AltTitleResolvers<ContextType>;
|
|
1982
2110
|
Article?: ArticleResolvers<ContextType>;
|
|
@@ -1984,6 +2112,11 @@ export type Resolvers<ContextType = QueryContext> = ResolversObject<{
|
|
|
1984
2112
|
BasicTopper?: BasicTopperResolvers<ContextType>;
|
|
1985
2113
|
BrandedTopper?: BrandedTopperResolvers<ContextType>;
|
|
1986
2114
|
CanBeSyndicated?: GraphQLScalarType;
|
|
2115
|
+
Caption?: CaptionResolvers<ContextType>;
|
|
2116
|
+
Clip?: ClipResolvers<ContextType>;
|
|
2117
|
+
ClipFormat?: GraphQLScalarType;
|
|
2118
|
+
ClipSet?: ClipSetResolvers<ContextType>;
|
|
2119
|
+
ClipSource?: ClipSourceResolvers<ContextType>;
|
|
1987
2120
|
Concept?: ConceptResolvers<ContextType>;
|
|
1988
2121
|
Content?: ContentResolvers<ContextType>;
|
|
1989
2122
|
ContentPackage?: ContentPackageResolvers<ContextType>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ImageSet, ContentTypeSchemas } from '../types/internal-content';
|
|
1
|
+
import type { ImageSet, ContentTypeSchemas, ClipSet } from '../types/internal-content';
|
|
2
2
|
import type { QueryContext } from '..';
|
|
3
3
|
import { CAPIImage } from './Image';
|
|
4
4
|
import { Concept } from './Concept';
|
|
@@ -66,7 +66,7 @@ export declare class CapiResponse {
|
|
|
66
66
|
title: string;
|
|
67
67
|
}>;
|
|
68
68
|
bodyXML(): string | null;
|
|
69
|
-
embeds(): ImageSet[];
|
|
69
|
+
embeds(): (ImageSet | ClipSet)[];
|
|
70
70
|
byline(): string | null;
|
|
71
71
|
annotations(): Concept[];
|
|
72
72
|
types(): string[];
|
|
@@ -114,6 +114,7 @@ export declare class CapiResponse {
|
|
|
114
114
|
} | null | undefined;
|
|
115
115
|
accessLevel(): LiteralUnionScalarValues<typeof AccessLevel>;
|
|
116
116
|
canBeSyndicated(): LiteralUnionScalarValues<typeof CanBeSyndicated>;
|
|
117
|
+
originatingParty(): string | null;
|
|
117
118
|
summary(): {
|
|
118
119
|
bodyXML: string;
|
|
119
120
|
} | null | undefined;
|
|
@@ -64,7 +64,7 @@ class CapiResponse {
|
|
|
64
64
|
/*
|
|
65
65
|
* Check if the incoming data matches the types defined in our data source schema
|
|
66
66
|
* Our data source schema should handle all possible response from CAPI
|
|
67
|
-
* As there is no agreed schema provided by CAPI there is a chance it will out of date / incorrect at times
|
|
67
|
+
* As there is no agreed schema provided by CAPI there is a chance it will be out of date / incorrect at times
|
|
68
68
|
* Manual updates will be required at times to keep it in sync with the responses we receive
|
|
69
69
|
*/
|
|
70
70
|
const schemaResponse = model.schema().safeParse(content);
|
|
@@ -156,6 +156,15 @@ class CapiResponse {
|
|
|
156
156
|
canBeSyndicated() {
|
|
157
157
|
return this.capiData.canBeSyndicated;
|
|
158
158
|
}
|
|
159
|
+
originatingParty() {
|
|
160
|
+
return this.capiData.canBeDistributed === 'no' &&
|
|
161
|
+
this.annotations().some((annotation) => {
|
|
162
|
+
annotation.id() ===
|
|
163
|
+
'http://api.ft.com/things/ed3b6ec5-6466-47ef-b1d8-16952fd522c7';
|
|
164
|
+
})
|
|
165
|
+
? 'Reuters'
|
|
166
|
+
: 'FT';
|
|
167
|
+
}
|
|
159
168
|
summary() {
|
|
160
169
|
if ('summary' in this.capiData)
|
|
161
170
|
return this.capiData.summary;
|