@financial-times/cp-content-pipeline-schema 2.13.0 → 2.13.1

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.
Files changed (28) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/lib/model/RichText.d.ts +3 -3
  3. package/lib/model/RichText.js.map +1 -1
  4. package/lib/resolvers/content-tree/Workarounds.d.ts +10 -3
  5. package/lib/resolvers/content-tree/bodyXMLToTree.d.ts +2 -3
  6. package/lib/resolvers/content-tree/bodyXMLToTree.test.js +1 -1
  7. package/lib/resolvers/content-tree/bodyXMLToTree.test.js.map +1 -1
  8. package/lib/resolvers/content-tree/extractText.d.ts +2 -2
  9. package/lib/resolvers/content-tree/extractText.js.map +1 -1
  10. package/lib/resolvers/content-tree/nodePredicates.d.ts +2 -1
  11. package/lib/resolvers/content-tree/nodePredicates.js +19 -1
  12. package/lib/resolvers/content-tree/nodePredicates.js.map +1 -1
  13. package/lib/resolvers/content-tree/tagMappings.js +10 -6
  14. package/lib/resolvers/content-tree/tagMappings.js.map +1 -1
  15. package/lib/resolvers/content-tree/updateTreeWithReferenceIds.d.ts +3 -3
  16. package/lib/resolvers/content-tree/updateTreeWithReferenceIds.js.map +1 -1
  17. package/lib/resolvers/index.d.ts +1 -1
  18. package/lib/resolvers/richText.d.ts +1 -1
  19. package/package.json +2 -2
  20. package/src/model/RichText.ts +2 -2
  21. package/src/resolvers/content-tree/Workarounds.ts +30 -4
  22. package/src/resolvers/content-tree/bodyXMLToTree.test.ts +3 -2
  23. package/src/resolvers/content-tree/bodyXMLToTree.ts +2 -2
  24. package/src/resolvers/content-tree/extractText.ts +2 -1
  25. package/src/resolvers/content-tree/nodePredicates.ts +19 -0
  26. package/src/resolvers/content-tree/tagMappings.ts +25 -7
  27. package/src/resolvers/content-tree/updateTreeWithReferenceIds.ts +3 -3
  28. package/tsconfig.tsbuildinfo +1 -1
@@ -1,4 +1,5 @@
1
- import { ContentTree } from '@financial-times/content-tree'
1
+ import { ContentTree as ContentTreeNamespace } from '@financial-times/content-tree'
2
+ import ContentTree = ContentTreeNamespace.transit
2
3
  import type { TagMappings } from './bodyXMLToTree'
3
4
  import {
4
5
  AnyNode,
@@ -15,6 +16,7 @@ import {
15
16
  childrenOfTypes,
16
17
  findChildOftype,
17
18
  phrasingTypes,
19
+ bodyBlockTypes,
18
20
  } from './nodePredicates'
19
21
 
20
22
  import * as scrollytelling from '@financial-times/n-scrollytelling-image/server'
@@ -104,7 +106,11 @@ const liveBlogPostTagMappings: TagMappings = {
104
106
  }
105
107
 
106
108
  const commonTagMappings: TagMappings = {
107
- body: ($el, traverse) => ({ type: 'body', version: 1, children: traverse() }),
109
+ body: ($el, traverse) => ({
110
+ type: 'body',
111
+ version: 1,
112
+ children: childrenOfTypes(bodyBlockTypes, traverse(), 'body'),
113
+ }),
108
114
  'a:not([data-asset-type])': ($el, traverse, context) => ({
109
115
  type: 'link',
110
116
  url: $el.attr('href') || '',
@@ -125,7 +131,12 @@ const commonTagMappings: TagMappings = {
125
131
  }),
126
132
  blockquote: ($el, traverse, context) => ({
127
133
  type: 'blockquote',
128
- children: childrenOfTypes(phrasingTypes, traverse(), 'blockquote', context),
134
+ children: childrenOfTypes(
135
+ [...phrasingTypes, 'paragraph'],
136
+ traverse(),
137
+ 'blockquote',
138
+ context
139
+ ),
129
140
  }),
130
141
  // strip any (redundant) line breaks in between two paragraphs
131
142
  'p + br': ($el) => ($el.next()[0]?.tagName === 'p' ? [] : { type: 'break' }),
@@ -152,7 +163,12 @@ const commonTagMappings: TagMappings = {
152
163
  }),
153
164
  li: ($el, traverse, context) => ({
154
165
  type: 'list-item',
155
- children: childrenOfTypes(phrasingTypes, traverse(), 'list-item', context),
166
+ children: childrenOfTypes(
167
+ [...phrasingTypes, 'paragraph'],
168
+ traverse(),
169
+ 'list-item',
170
+ context
171
+ ),
156
172
  }),
157
173
  'a[data-asset-type="tweet"]': ($el) => ({
158
174
  type: 'tweet',
@@ -164,9 +180,11 @@ const commonTagMappings: TagMappings = {
164
180
  level: 'label',
165
181
  children: everyChildIsType('text', traverse(), 'heading', context),
166
182
  }),
167
- 'pull-quote': ($el, traverse, context) => {
183
+ 'pull-quote': ($el, traverse) => {
168
184
  const children = traverse()
169
- const image = findChildOftype('image-set', children, 'pullquote', context)
185
+ const image = children.find(
186
+ (child): child is ContentTree.ImageSet => child.type === 'image-set'
187
+ )
170
188
 
171
189
  return {
172
190
  type: 'pullquote',
@@ -422,7 +440,7 @@ const commonTagMappings: TagMappings = {
422
440
  layoutWidth: isValidLayoutWidth(layoutWidth) ? layoutWidth : 'auto',
423
441
  collapseAfterHowManyRows: $el.attr('data-table-collapse-rownum')
424
442
  ? parseInt($el.attr('data-table-collapse-rownum') || '0')
425
- : null,
443
+ : undefined,
426
444
  responsiveStyle,
427
445
  children: tableChildren,
428
446
  columnSettings: $el
@@ -1,7 +1,7 @@
1
1
  import { ContentTree } from '@financial-times/content-tree'
2
2
  import { CapiResponse } from '../../model/CapiResponse'
3
3
  import { ReferenceWithCAPIData, mapNodeToReference } from './references'
4
- import { AnyNode } from './Workarounds'
4
+ import { AnyNode, Body } from './Workarounds'
5
5
 
6
6
  function isParent(node: ContentTree.Node): node is ContentTree.Parent {
7
7
  return 'children' in node
@@ -12,10 +12,10 @@ const isValidReferenceType = (
12
12
  ): type is keyof typeof mapNodeToReference => type in mapNodeToReference
13
13
 
14
14
  export default function updateTreeWithReferenceIds(
15
- tree: ContentTree.Body,
15
+ tree: Body,
16
16
  contentApiData?: CapiResponse
17
17
  ): {
18
- tree: ContentTree.Body
18
+ tree: Body
19
19
  references: ReferenceWithCAPIData[]
20
20
  } {
21
21
  const references: ReferenceWithCAPIData[] = []