@financial-times/cp-content-pipeline-schema 2.3.0 → 2.3.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 (34) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/lib/model/Concept.test.js +0 -9
  3. package/lib/model/Concept.test.js.map +1 -1
  4. package/lib/model/RichText.d.ts +1 -1
  5. package/lib/model/RichText.js +20 -34
  6. package/lib/model/RichText.js.map +1 -1
  7. package/lib/model/RichText.test.js +0 -9
  8. package/lib/model/RichText.test.js.map +1 -1
  9. package/lib/resolvers/content-tree/bodyXMLToTree.d.ts +4 -3
  10. package/lib/resolvers/content-tree/bodyXMLToTree.js +2 -2
  11. package/lib/resolvers/content-tree/bodyXMLToTree.js.map +1 -1
  12. package/lib/resolvers/content-tree/bodyXMLToTree.test.js +20 -32
  13. package/lib/resolvers/content-tree/bodyXMLToTree.test.js.map +1 -1
  14. package/lib/resolvers/content-tree/nodePredicates.d.ts +6 -13
  15. package/lib/resolvers/content-tree/nodePredicates.js +33 -33
  16. package/lib/resolvers/content-tree/nodePredicates.js.map +1 -1
  17. package/lib/resolvers/content-tree/references/Reference.d.ts +1 -1
  18. package/lib/resolvers/content-tree/tagMappings.d.ts +2 -1
  19. package/lib/resolvers/content-tree/tagMappings.js +60 -60
  20. package/lib/resolvers/content-tree/tagMappings.js.map +1 -1
  21. package/package.json +1 -2
  22. package/src/model/Concept.test.ts +0 -9
  23. package/src/model/RichText.test.ts +0 -10
  24. package/src/model/RichText.ts +27 -39
  25. package/src/resolvers/content-tree/bodyXMLToTree.test.ts +22 -32
  26. package/src/resolvers/content-tree/bodyXMLToTree.ts +11 -6
  27. package/src/resolvers/content-tree/nodePredicates.ts +39 -45
  28. package/src/resolvers/content-tree/tagMappings.ts +102 -60
  29. package/tsconfig.tsbuildinfo +1 -1
  30. package/__mocks__/worker_threads.ts +0 -3
  31. package/lib/resolvers/content-tree/bodyXMLToTreeWorker.d.ts +0 -9
  32. package/lib/resolvers/content-tree/bodyXMLToTreeWorker.js +0 -18
  33. package/lib/resolvers/content-tree/bodyXMLToTreeWorker.js.map +0 -1
  34. package/src/resolvers/content-tree/bodyXMLToTreeWorker.ts +0 -31
@@ -65,9 +65,9 @@ const validScrollytellingOption = (key, attribute) => {
65
65
  ? attribute in scrollytellingOptionsToContentTree[key]
66
66
  : false;
67
67
  };
68
- const articleTagMappings = (topperHasImage) => ({
68
+ const articleTagMappings = (capiData) => ({
69
69
  'body > ft-content[type="http://www.ft.com/ontology/content/ImageSet"]:first-child': ($el) => ({
70
- type: topperHasImage ? 'image-set' : 'main-image',
70
+ type: capiData?.topperHasImage() ? 'image-set' : 'main-image',
71
71
  id: $el.attr('url') || '',
72
72
  }),
73
73
  'body > ft-content[type="http://www.ft.com/ontology/content/ImageSet"]:not(:first-child),:not(body) > ft-content[type="http://www.ft.com/ontology/content/ImageSet"]': ($el) => ({
@@ -85,54 +85,54 @@ const liveBlogPostTagMappings = {
85
85
  exports.liveBlogPostTagMappings = liveBlogPostTagMappings;
86
86
  const commonTagMappings = {
87
87
  body: ($el, traverse) => ({ type: 'body', version: 1, children: traverse() }),
88
- 'a:not([data-asset-type])': ($el, traverse) => ({
88
+ 'a:not([data-asset-type])': ($el, traverse, context) => ({
89
89
  type: 'link',
90
90
  url: $el.attr('href') || '',
91
91
  title: '',
92
- children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'link'),
92
+ children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'link', context),
93
93
  }),
94
- strong: ($el, traverse) => ({
94
+ strong: ($el, traverse, context) => ({
95
95
  type: 'strong',
96
- children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'strong'),
96
+ children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'strong', context),
97
97
  }),
98
- em: ($el, traverse) => ({
98
+ em: ($el, traverse, context) => ({
99
99
  type: 'emphasis',
100
- children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'emphasis'),
100
+ children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'emphasis', context),
101
101
  }),
102
- blockquote: ($el, traverse) => ({
102
+ blockquote: ($el, traverse, context) => ({
103
103
  type: 'blockquote',
104
- children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'blockquote'),
104
+ children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'blockquote', context),
105
105
  }),
106
106
  // strip any (redundant) line breaks in between two paragraphs
107
107
  'p + br': ($el) => ($el.next()[0]?.tagName === 'p' ? [] : { type: 'break' }),
108
108
  br: () => ({ type: 'break' }),
109
109
  hr: () => ({ type: 'thematic-break' }),
110
- s: ($el, traverse) => ({
110
+ s: ($el, traverse, context) => ({
111
111
  type: 'strikethrough',
112
- children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'strikethrough'),
112
+ children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'strikethrough', context),
113
113
  }),
114
- ul: ($el, traverse) => ({
114
+ ul: ($el, traverse, context) => ({
115
115
  type: 'list',
116
- children: (0, nodePredicates_1.everyChildIsType)('list-item', traverse(), 'list'),
116
+ children: (0, nodePredicates_1.everyChildIsType)('list-item', traverse(), 'list', context),
117
117
  ordered: false,
118
118
  }),
119
- ol: ($el, traverse) => ({
119
+ ol: ($el, traverse, context) => ({
120
120
  type: 'list',
121
- children: (0, nodePredicates_1.everyChildIsType)('list-item', traverse(), 'list'),
121
+ children: (0, nodePredicates_1.everyChildIsType)('list-item', traverse(), 'list', context),
122
122
  ordered: true,
123
123
  }),
124
- li: ($el, traverse) => ({
124
+ li: ($el, traverse, context) => ({
125
125
  type: 'list-item',
126
- children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'list-item'),
126
+ children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'list-item', context),
127
127
  }),
128
128
  'a[data-asset-type="tweet"]': ($el) => ({
129
129
  type: 'tweet',
130
130
  id: $el.attr('href') || '',
131
131
  }),
132
- 'h4,h5,h6': ($el, traverse) => ({
132
+ 'h4,h5,h6': ($el, traverse, context) => ({
133
133
  type: 'heading',
134
134
  level: 'label',
135
- children: (0, nodePredicates_1.everyChildIsType)('text', traverse(), 'heading'),
135
+ children: (0, nodePredicates_1.everyChildIsType)('text', traverse(), 'heading', context),
136
136
  }),
137
137
  'pull-quote': ($el) => ({
138
138
  type: 'pullquote',
@@ -206,7 +206,7 @@ const commonTagMappings = {
206
206
  description: $description.text(),
207
207
  };
208
208
  },
209
- '.n-content-layout': ($el, traverse) => {
209
+ '.n-content-layout': ($el, traverse, context) => {
210
210
  //TODO: this is a bit gross??
211
211
  const isValidWidth = (str) => {
212
212
  return ['inset-left', 'full-grid', 'full-width'].includes(str);
@@ -221,11 +221,11 @@ const commonTagMappings = {
221
221
  if (firstChild.type === 'heading') {
222
222
  return [
223
223
  firstChild,
224
- ...(0, nodePredicates_1.everyChildIsType)('layout-slot', otherChildren, 'layout'),
224
+ ...(0, nodePredicates_1.everyChildIsType)('layout-slot', otherChildren, 'layout', context),
225
225
  ];
226
226
  }
227
227
  else {
228
- return (0, nodePredicates_1.everyChildIsType)('layout-slot', children, 'layout');
228
+ return (0, nodePredicates_1.everyChildIsType)('layout-slot', children, 'layout', context);
229
229
  }
230
230
  };
231
231
  return {
@@ -235,12 +235,12 @@ const commonTagMappings = {
235
235
  children: getChildren(traverse()),
236
236
  };
237
237
  },
238
- '.n-content-layout__slot': ($el, traverse) => ({
238
+ '.n-content-layout__slot': ($el, traverse, context) => ({
239
239
  type: 'layout-slot',
240
240
  children: (0, nodePredicates_1.childrenOfTypes)(['heading', 'paragraph', 'layout-image'], traverse()
241
241
  // HACK:20230516:KB for "Comparison" layouts, Spark used to output nested `.n-content-layout__slot`
242
242
  // elements. if we find one, skip it and use its children
243
- .flatMap((node) => node.type === 'layout-slot' ? node.children : [node]), 'layout-slot'),
243
+ .flatMap((node) => node.type === 'layout-slot' ? node.children : [node]), 'layout-slot', context),
244
244
  }),
245
245
  '.n-content-layout img': ($el) => ({
246
246
  type: 'layout-image',
@@ -249,29 +249,29 @@ const commonTagMappings = {
249
249
  alt: $el.attr('alt') || '',
250
250
  credit: $el.attr('data-copyright') || '',
251
251
  }),
252
- table: ($el, traverse) => {
252
+ table: ($el, traverse, context) => {
253
253
  const layoutSmallscreen = $el.attr('data-table-layout-smallscreen');
254
254
  const responsiveStyle = layoutSmallscreen && layoutSmallscreen in tableResponsiveStyleMap
255
255
  ? tableResponsiveStyleMap[layoutSmallscreen]
256
256
  : 'overflow';
257
257
  const children = traverse();
258
258
  const bodies = children.filter((child) => child.type === 'table-body');
259
- const caption = (0, nodePredicates_1.findChildOftype)('table-caption', children, 'table');
260
- const footer = (0, nodePredicates_1.findChildOftype)('table-footer', children, 'table');
259
+ const caption = (0, nodePredicates_1.findChildOftype)('table-caption', children, 'table', context);
260
+ const footer = (0, nodePredicates_1.findChildOftype)('table-footer', children, 'table', context);
261
261
  // HACK:KB:20230523 transform single-cell tables into infoboxes, for legacy articles
262
262
  if (bodies.length === 1 &&
263
263
  bodies[0].children.length === 1 &&
264
264
  bodies[0].children[0].children.length === 1) {
265
265
  const slot = {
266
266
  type: 'layout-slot',
267
- children: (0, nodePredicates_1.childrenOfTypes)(['paragraph', 'heading'], bodies[0].children[0].children[0].children, 'layout-slot'),
267
+ children: (0, nodePredicates_1.childrenOfTypes)(['paragraph', 'heading'], bodies[0].children[0].children[0].children, 'layout-slot', context),
268
268
  };
269
269
  const layoutChildren = caption
270
270
  ? [
271
271
  {
272
272
  type: 'heading',
273
273
  level: 'subheading',
274
- children: (0, nodePredicates_1.everyChildIsType)('text', caption.children, 'heading'),
274
+ children: (0, nodePredicates_1.everyChildIsType)('text', caption.children, 'heading', context),
275
275
  },
276
276
  slot,
277
277
  ]
@@ -336,34 +336,34 @@ const commonTagMappings = {
336
336
  // HACK needs to come before tr. TODO sort by selector specificity
337
337
  'tfoot > tr': ($el, traverse) => traverse(),
338
338
  // HACK needs to come before td. TODO sort by selector specificity
339
- 'tfoot > tr > td': ($el, traverse) => ({
339
+ 'tfoot > tr > td': ($el, traverse, context) => ({
340
340
  type: 'table-footer',
341
- children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'table-footer'),
341
+ children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'table-footer', context),
342
342
  }),
343
- tr: ($el, traverse) => ({
343
+ tr: ($el, traverse, context) => ({
344
344
  type: 'table-row',
345
- children: (0, nodePredicates_1.everyChildIsType)('table-cell', traverse(), 'table-row'),
345
+ children: (0, nodePredicates_1.everyChildIsType)('table-cell', traverse(), 'table-row', context),
346
346
  }),
347
- td: ($el, traverse) => ({
347
+ td: ($el, traverse, context) => ({
348
348
  type: 'table-cell',
349
- children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'table-cell'),
349
+ children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'table-cell', context),
350
350
  }),
351
- th: ($el, traverse) => ({
351
+ th: ($el, traverse, context) => ({
352
352
  type: 'table-cell',
353
353
  heading: true,
354
- children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'table-cell'),
354
+ children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'table-cell', context),
355
355
  }),
356
- thead: ($el, traverse) => ({
356
+ thead: ($el, traverse, context) => ({
357
357
  type: 'table-body',
358
- children: (0, nodePredicates_1.everyChildIsType)('table-row', traverse(), 'table-body'),
358
+ children: (0, nodePredicates_1.everyChildIsType)('table-row', traverse(), 'table-body', context),
359
359
  }),
360
- tbody: ($el, traverse) => ({
360
+ tbody: ($el, traverse, context) => ({
361
361
  type: 'table-body',
362
- children: (0, nodePredicates_1.everyChildIsType)('table-row', traverse(), 'table-body'),
362
+ children: (0, nodePredicates_1.everyChildIsType)('table-row', traverse(), 'table-body', context),
363
363
  }),
364
- caption: ($el, traverse) => ({
364
+ caption: ($el, traverse, context) => ({
365
365
  type: 'table-caption',
366
- children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'table-caption'),
366
+ children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'table-caption', context),
367
367
  }),
368
368
  // HACK needs to come after LayoutImage. TODO sort by selector specificity
369
369
  'body > img:first-child': ($el) => ({
@@ -384,18 +384,18 @@ const commonTagMappings = {
384
384
  width: ($el.attr('width') && Number($el.attr('width'))) || undefined,
385
385
  format: 'standard',
386
386
  }),
387
- 'scrollable-block': ($el, traverse) => {
387
+ 'scrollable-block': ($el, traverse, context) => {
388
388
  return {
389
389
  type: 'scrolly-block',
390
390
  theme: $el.attr('theme') === '2' ? 'serif' : 'sans',
391
- children: (0, nodePredicates_1.everyChildIsType)('scrolly-section', traverse(), 'scrolly-block'),
391
+ children: (0, nodePredicates_1.everyChildIsType)('scrolly-section', traverse(), 'scrolly-block', context),
392
392
  };
393
393
  },
394
394
  'scrollable-section > ft-content[type="http://www.ft.com/ontology/content/ImageSet"]': ($el) => ({
395
395
  type: 'scrolly-image',
396
396
  id: $el.attr('url') ?? '',
397
397
  }),
398
- 'scrollable-section': ($el, traverse) => {
398
+ 'scrollable-section': ($el, traverse, context) => {
399
399
  const [firstChild, ...restChildren] = traverse();
400
400
  const display = $el.attr('theme-display');
401
401
  const position = $el.attr('theme-position');
@@ -414,43 +414,43 @@ const commonTagMappings = {
414
414
  : undefined,
415
415
  noBox: validScrollytellingOption('noBox', noBox) ? true : undefined,
416
416
  children: [
417
- ...(0, nodePredicates_1.everyChildIsType)('scrolly-image', [firstChild], 'scrolly-section'),
418
- ...(0, nodePredicates_1.everyChildIsType)('scrolly-copy', restChildren, 'scrolly-section'),
417
+ ...(0, nodePredicates_1.everyChildIsType)('scrolly-image', [firstChild], 'scrolly-section', context),
418
+ ...(0, nodePredicates_1.everyChildIsType)('scrolly-copy', restChildren, 'scrolly-section', context),
419
419
  ],
420
420
  };
421
421
  },
422
- 'scrollable-text': ($el, traverse) => ({
422
+ 'scrollable-text': ($el, traverse, context) => ({
423
423
  type: 'scrolly-copy',
424
- children: (0, nodePredicates_1.childrenOfTypes)(['scrolly-heading', 'paragraph'], traverse(), 'scrolly-copy'),
424
+ children: (0, nodePredicates_1.childrenOfTypes)(['scrolly-heading', 'paragraph'], traverse(), 'scrolly-copy', context),
425
425
  }),
426
- 'scrollable-text > p, scrollable-text > h1, scrollable-text > h2': ($el, traverse) => {
426
+ 'scrollable-text > p, scrollable-text > h1, scrollable-text > h2': ($el, traverse, context) => {
427
427
  const textStyle = $el.attr('theme-style');
428
428
  if (validScrollytellingOption('textStyle', textStyle)) {
429
429
  return {
430
430
  type: 'scrolly-heading',
431
431
  level: scrollytellingOptionsToContentTree.textStyle[textStyle],
432
- children: (0, nodePredicates_1.everyChildIsType)('text', traverse(), 'scrolly-heading'),
432
+ children: (0, nodePredicates_1.everyChildIsType)('text', traverse(), 'scrolly-heading', context),
433
433
  };
434
434
  }
435
435
  return {
436
436
  type: 'paragraph',
437
- children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'paragraph'),
437
+ children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'paragraph', context),
438
438
  };
439
439
  },
440
440
  // HACK:KB:20230703 needs to come after `scrollable-text > X`. todo sort by specificity
441
- p: ($el, traverse) => ({
441
+ p: ($el, traverse, context) => ({
442
442
  type: 'paragraph',
443
- children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'paragraph'),
443
+ children: (0, nodePredicates_1.childrenOfTypes)(nodePredicates_1.phrasingTypes, traverse(), 'paragraph', context),
444
444
  }),
445
- h1: ($el, traverse) => ({
445
+ h1: ($el, traverse, context) => ({
446
446
  type: 'heading',
447
447
  level: 'chapter',
448
- children: (0, nodePredicates_1.everyChildIsType)('text', traverse(), 'heading'),
448
+ children: (0, nodePredicates_1.everyChildIsType)('text', traverse(), 'heading', context),
449
449
  }),
450
- 'h2,h3': ($el, traverse) => ({
450
+ 'h2,h3': ($el, traverse, context) => ({
451
451
  type: 'heading',
452
452
  level: 'subheading',
453
- children: (0, nodePredicates_1.everyChildIsType)('text', traverse(), 'heading'),
453
+ children: (0, nodePredicates_1.everyChildIsType)('text', traverse(), 'heading', context),
454
454
  }),
455
455
  'ft-content[type="http://www.ft.com/ontology/content/ClipSet"]': ($el) => ({
456
456
  type: 'clip-set',
@@ -1 +1 @@
1
- {"version":3,"file":"tagMappings.js","sourceRoot":"","sources":["../../../src/resolvers/content-tree/tagMappings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tagMappings.js","sourceRoot":"","sources":["../../../src/resolvers/content-tree/tagMappings.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@financial-times/cp-content-pipeline-schema",
3
- "version": "2.3.0",
3
+ "version": "2.3.1",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -38,7 +38,6 @@
38
38
  "graphql": "^16.6.0",
39
39
  "graphql-tag": "^2.12.6",
40
40
  "lodash.sortby": "^4.7.0",
41
- "piscina": "^4.4.0",
42
41
  "rehype-parse": "^8.0.4",
43
42
  "zod": "^3.19.1"
44
43
  },
@@ -6,15 +6,6 @@ import { URLManagementDataSource } from '../datasources/url-management'
6
6
  import { CapiDataSource } from '../datasources/capi'
7
7
  import { Logger } from '@dotcom-reliability-kit/logger'
8
8
 
9
- jest.mock('@dotcom-reliability-kit/logger', () => ({
10
- Logger: jest.fn(() => ({
11
- debug: jest.fn(),
12
- error: jest.fn(),
13
- fatal: jest.fn(),
14
- info: jest.fn(),
15
- warn: jest.fn(),
16
- })),
17
- }))
18
9
  const vanityMock = jest.fn<URLManagementDataSource['get']>()
19
10
  const getPersonMock = jest.fn<CapiDataSource['getPerson']>()
20
11
  const context = {
@@ -1,16 +1,6 @@
1
1
  import { baseCapiObject } from '../fixtures/capiObject'
2
2
  import { RichText } from '../model/RichText'
3
3
 
4
- jest.mock('@dotcom-reliability-kit/logger', () => ({
5
- Logger: jest.fn(() => ({
6
- debug: jest.fn(),
7
- error: jest.fn(),
8
- fatal: jest.fn(),
9
- info: jest.fn(),
10
- warn: jest.fn(),
11
- })),
12
- }))
13
-
14
4
  describe('RichText resolver', () => {
15
5
  it('should transform bodyXML to an AST', async () => {
16
6
  const model = new RichText('bodyXML', baseCapiObject.bodyXML)
@@ -1,26 +1,16 @@
1
- import Piscina from 'piscina'
2
-
3
- import type { QueryContext } from '..'
4
- import bodyXMLToTreeWorker from '../resolvers/content-tree/bodyXMLToTreeWorker'
1
+ import bodyXMLToTree from '../resolvers/content-tree/bodyXMLToTree'
5
2
  import extractText from '../resolvers/content-tree/extractText'
6
- import type { PredicateError } from '../resolvers/content-tree/nodePredicates'
7
3
  import updateTreeWithReferenceIds from '../resolvers/content-tree/updateTreeWithReferenceIds'
8
4
  import { LiteralUnionScalarValues } from '../resolvers/literal-union'
9
5
  import { RichTextSource } from '../resolvers/scalars'
10
6
  import { CapiResponse } from './CapiResponse'
11
- import { OperationalError } from '@dotcom-reliability-kit/errors'
7
+ import {
8
+ commonTagMappings,
9
+ articleTagMappings,
10
+ liveBlogPostTagMappings,
11
+ } from '../resolvers/content-tree/tagMappings'
12
12
  import { ContentTree } from '@financial-times/content-tree'
13
-
14
- let piscina: Piscina | undefined
15
- // Don't run the thread pool during tests as it creates loads of threads that
16
- // aren't properly closed and leaves the process hanging. We do our best to
17
- // keep the same behaviour when running on the main thread vs a worker thread,
18
- // with the main difference being the lack of logs on the main thread.
19
- if (process.env.NODE_ENV !== 'test') {
20
- piscina = new Piscina({
21
- filename: require.resolve('../resolvers/content-tree/bodyXMLToTreeWorker'),
22
- })
23
- }
13
+ import { QueryContext } from '..'
24
14
 
25
15
  export class RichText {
26
16
  constructor(
@@ -34,29 +24,27 @@ export class RichText {
34
24
  }
35
25
 
36
26
  async structured(context?: QueryContext) {
37
- const args = {
38
- xml: this.value ?? '',
39
- responseMetadata: this.contentApiData
40
- ? {
41
- isLiveBlogPost: this.contentApiData.type() === 'LiveBlogPost',
42
- topperHasImage: this.contentApiData.topperHasImage(),
43
- }
44
- : undefined,
45
- }
46
- // forward errors from the worker threads to the logger
47
- piscina?.on('message', ({ event, error, ...predError }: PredicateError) => {
48
- const { stack } = error
49
- const opError = new OperationalError(predError)
50
- opError.stack = stack
51
- context?.logger.error({ event, error: opError })
27
+ const tree = await new Promise<ContentTree.Body>((resolve, reject) => {
28
+ // bodyXMLToTree is synchronous and slow. scheduling it in a setImmediate
29
+ // prevents it from blocking the event loop, so the app can still handle
30
+ // requests, and it won't skew resolver timing metrics by blocking the
31
+ // timers for quicker, asynchronous resolvers from finishing.
32
+
33
+ const tagMappings =
34
+ this.contentApiData?.type() === 'LiveBlogPost'
35
+ ? { ...commonTagMappings, ...liveBlogPostTagMappings }
36
+ : {
37
+ ...commonTagMappings,
38
+ ...articleTagMappings(this.contentApiData),
39
+ }
40
+ setImmediate(() => {
41
+ try {
42
+ resolve(bodyXMLToTree(this.value ?? '', tagMappings, context))
43
+ } catch (error) {
44
+ reject(error)
45
+ }
46
+ })
52
47
  })
53
- // bodyXMLToTree is synchronous and slow. Offload its processing to a
54
- // worker thread so that it does not block the event loop. This allows the
55
- // app to continue to handle other requests whilst processing an expensive
56
- // one, as well as not skewing timing metrics.
57
- const tree: ContentTree.Body = piscina
58
- ? await piscina.run(args)
59
- : bodyXMLToTreeWorker(args)
60
48
 
61
49
  const { tree: treeWithReferences, references } = updateTreeWithReferenceIds(
62
50
  tree,
@@ -1,16 +1,20 @@
1
- import { parentPort } from 'worker_threads'
2
1
  import { ContentTree } from '@financial-times/content-tree'
3
2
  import bodyXMLToTree, { TagMappings } from './bodyXMLToTree'
4
3
  import tags from './tagMappings'
4
+ import { Logger } from '@dotcom-reliability-kit/logger'
5
+ import { QueryContext } from '../..'
5
6
 
6
- jest.mock('worker_threads')
7
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
8
- const mockPostMessage = jest.mocked(parentPort)!.postMessage
7
+ const mockLogger = new Logger()
8
+ const mockLogError = jest.spyOn(mockLogger, 'error')
9
+
10
+ const mockContext = {
11
+ logger: mockLogger,
12
+ } as QueryContext
9
13
 
10
14
  describe('bodyXMLToTree', () => {
11
15
  it('converts XML to tree', () => {
12
16
  const xml = `<body><p>Hello world</p></body>`
13
- expect(bodyXMLToTree(xml, tags)).toMatchInlineSnapshot(`
17
+ expect(bodyXMLToTree(xml, tags, mockContext)).toMatchInlineSnapshot(`
14
18
  Object {
15
19
  "children": Array [
16
20
  Object {
@@ -216,14 +220,14 @@ describe('bodyXMLToTree', () => {
216
220
  "version": 1,
217
221
  }
218
222
  `)
219
- expect(mockPostMessage).not.toBeCalled()
223
+ expect(mockLogError).not.toBeCalled()
220
224
  })
221
225
 
222
226
  it('should handle heading and slots', () => {
223
227
  const xml =
224
228
  '<body><div class="n-content-layout"><h3></h3><div class="n-content-layout__slot"></div><div class="n-content-layout__slot"></div></body>'
225
229
 
226
- expect(bodyXMLToTree(xml, tags)).toMatchInlineSnapshot(`
230
+ expect(bodyXMLToTree(xml, tags, mockContext)).toMatchInlineSnapshot(`
227
231
  Object {
228
232
  "children": Array [
229
233
  Object {
@@ -251,14 +255,14 @@ describe('bodyXMLToTree', () => {
251
255
  "version": 1,
252
256
  }
253
257
  `)
254
- expect(mockPostMessage).not.toBeCalled()
258
+ expect(mockLogError).not.toBeCalled()
255
259
  })
256
260
 
257
261
  it('should log an error on unexpected child after heading', () => {
258
262
  const xml =
259
263
  '<body><div class="n-content-layout"><h3></h3><div class="n-content-layout__slot"></div><p></p></body>'
260
264
 
261
- expect(bodyXMLToTree(xml, tags)).toMatchInlineSnapshot(`
265
+ expect(bodyXMLToTree(xml, tags, mockContext)).toMatchInlineSnapshot(`
262
266
  Object {
263
267
  "children": Array [
264
268
  Object {
@@ -286,19 +290,12 @@ describe('bodyXMLToTree', () => {
286
290
  "version": 1,
287
291
  }
288
292
  `)
289
- expect(mockPostMessage).toBeCalled()
290
- expect(mockPostMessage.mock.lastCall).toMatchInlineSnapshot(`
293
+ expect(mockLogError).toBeCalled()
294
+ expect(mockLogError.mock.lastCall).toMatchInlineSnapshot(`
291
295
  Array [
292
296
  Object {
293
- "actual": Array [
294
- "layout-slot",
295
- "paragraph",
296
- ],
297
- "code": "BODY_XML_UNEXPECTED_STRUCTURE",
298
- "error": [Error],
297
+ "error": [OperationalError: Unexpected children types for layout],
299
298
  "event": "RECOVERABLE_ERROR",
300
- "expected": "layout-slot",
301
- "message": "Unexpected children types for layout",
302
299
  },
303
300
  ]
304
301
  `)
@@ -308,7 +305,7 @@ describe('bodyXMLToTree', () => {
308
305
  const xml =
309
306
  '<body><div class="n-content-layout"><div class="n-content-layout__slot"></div><p></p></body>'
310
307
 
311
- expect(bodyXMLToTree(xml, tags)).toMatchInlineSnapshot(`
308
+ expect(bodyXMLToTree(xml, tags, mockContext)).toMatchInlineSnapshot(`
312
309
  Object {
313
310
  "children": Array [
314
311
  Object {
@@ -331,19 +328,12 @@ describe('bodyXMLToTree', () => {
331
328
  "version": 1,
332
329
  }
333
330
  `)
334
- expect(mockPostMessage).toBeCalled()
335
- expect(mockPostMessage.mock.lastCall).toMatchInlineSnapshot(`
331
+ expect(mockLogError).toBeCalled()
332
+ expect(mockLogError.mock.lastCall).toMatchInlineSnapshot(`
336
333
  Array [
337
334
  Object {
338
- "actual": Array [
339
- "layout-slot",
340
- "paragraph",
341
- ],
342
- "code": "BODY_XML_UNEXPECTED_STRUCTURE",
343
- "error": [Error],
335
+ "error": [OperationalError: Unexpected children types for layout],
344
336
  "event": "RECOVERABLE_ERROR",
345
- "expected": "layout-slot",
346
- "message": "Unexpected children types for layout",
347
337
  },
348
338
  ]
349
339
  `)
@@ -355,7 +345,7 @@ describe('bodyXMLToTree', () => {
355
345
  const xml =
356
346
  '<table class="data-table" data-table-collapse-rownum="" data-table-layout-largescreen="auto" data-table-layout-smallscreen="auto" data-table-theme="auto"><caption>Nulla iaculis tempus augue</caption><thead><tr><th data-column-hidden="none" data-column-sortable="false" data-column-type="string">libero mollis</th><th data-column-hidden="none" data-column-sortable="false" data-column-type="string">pretium nunc</th><th data-column-hidden="none" data-column-sortable="false" data-column-type="string">euismod nunc</th></tr></thead><tbody><tr><td>Aenean </td><td>14134</td><td>dfdsfd</td></tr><tr><td>lobortis </td><td>3434</td><td>fdsf dsf </td></tr><tr><td>volutpat </td><td>234234</td><td>sd fsd</td></tr><tr><td>vitae </td><td>2423</td><td>s fsdf</td></tr><tr><td>elementumus</td><td>23423</td><td>f sdf</td></tr></tbody><tfoot><tr><td colspan="1000">Aenean sodales sapien</td></tr></tfoot></table>'
357
347
 
358
- expect(bodyXMLToTree(xml, tags)).toMatchInlineSnapshot(`
348
+ expect(bodyXMLToTree(xml, tags, mockContext)).toMatchInlineSnapshot(`
359
349
  Object {
360
350
  "children": Array [
361
351
  Object {
@@ -614,7 +604,7 @@ describe('bodyXMLToTree', () => {
614
604
  const xml =
615
605
  '<table class="data-table" id="U1140244733565W0C"><caption>Emerging markets outlook for 2017</caption><tbody><tr><td colspan="2"><p>Brazil</p><p>Brazilian shares were the best-performing asset globally over the 12 months to the end of January, returning 121 per cent, according to data from BofA Merrill Lynch. Brazilian stocks did very well through January, but investors including Lazard and Eastspring have scaled back their exposure after strong growth last year.</p></td></tr></tbody></table>'
616
606
 
617
- expect(bodyXMLToTree(xml, tags)).toMatchInlineSnapshot(`
607
+ expect(bodyXMLToTree(xml, tags, mockContext)).toMatchInlineSnapshot(`
618
608
  Object {
619
609
  "children": Array [
620
610
  Object {