@financial-times/cp-content-pipeline-schema 2.8.0 → 2.9.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.
Files changed (55) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/lib/datasources/capi.d.ts +1 -1
  3. package/lib/datasources/capi.js +14 -39
  4. package/lib/datasources/capi.js.map +1 -1
  5. package/lib/datasources/instrumented.d.ts +4 -1
  6. package/lib/datasources/instrumented.js +16 -16
  7. package/lib/datasources/instrumented.js.map +1 -1
  8. package/lib/datasources/origami-image.d.ts +1 -1
  9. package/lib/datasources/origami-image.js +7 -21
  10. package/lib/datasources/origami-image.js.map +1 -1
  11. package/lib/datasources/twitter.d.ts +1 -1
  12. package/lib/datasources/twitter.js +7 -21
  13. package/lib/datasources/twitter.js.map +1 -1
  14. package/lib/model/CapiResponse.js +33 -4
  15. package/lib/model/CapiResponse.js.map +1 -1
  16. package/lib/model/Concept.js +1 -1
  17. package/lib/model/Concept.js.map +1 -1
  18. package/lib/model/Image.js +8 -3
  19. package/lib/model/Image.js.map +1 -1
  20. package/lib/model/Person.js +7 -2
  21. package/lib/model/Person.js.map +1 -1
  22. package/lib/resolvers/content-tree/bodyXMLToTree.js +1 -1
  23. package/lib/resolvers/content-tree/bodyXMLToTree.js.map +1 -1
  24. package/lib/resolvers/content-tree/bodyXMLToTree.test.js +7 -7
  25. package/lib/resolvers/content-tree/bodyXMLToTree.test.js.map +1 -1
  26. package/lib/resolvers/content-tree/references/Flourish.js +7 -2
  27. package/lib/resolvers/content-tree/references/Flourish.js.map +1 -1
  28. package/lib/resolvers/content-tree/references/RawImage.js +7 -2
  29. package/lib/resolvers/content-tree/references/RawImage.js.map +1 -1
  30. package/lib/resolvers/content-tree/references/Recommended.js +1 -1
  31. package/lib/resolvers/content-tree/references/Recommended.js.map +1 -1
  32. package/lib/resolvers/content-tree/references/Tweet.js +7 -2
  33. package/lib/resolvers/content-tree/references/Tweet.js.map +1 -1
  34. package/lib/resolvers/content-tree/references/Video.js +15 -2
  35. package/lib/resolvers/content-tree/references/Video.js.map +1 -1
  36. package/lib/resolvers/core.js +16 -1
  37. package/lib/resolvers/core.js.map +1 -1
  38. package/package.json +5 -2
  39. package/src/datasources/capi.ts +16 -44
  40. package/src/datasources/instrumented.ts +29 -31
  41. package/src/datasources/origami-image.ts +11 -25
  42. package/src/datasources/twitter.ts +10 -24
  43. package/src/model/CapiResponse.ts +44 -6
  44. package/src/model/Concept.ts +1 -1
  45. package/src/model/Image.ts +9 -4
  46. package/src/model/Person.ts +7 -2
  47. package/src/resolvers/content-tree/bodyXMLToTree.test.ts +7 -7
  48. package/src/resolvers/content-tree/bodyXMLToTree.ts +1 -1
  49. package/src/resolvers/content-tree/references/Flourish.ts +7 -2
  50. package/src/resolvers/content-tree/references/RawImage.ts +7 -2
  51. package/src/resolvers/content-tree/references/Recommended.ts +1 -1
  52. package/src/resolvers/content-tree/references/Tweet.ts +7 -2
  53. package/src/resolvers/content-tree/references/Video.ts +18 -4
  54. package/src/resolvers/core.ts +18 -1
  55. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Person.js","sourceRoot":"","sources":["../../src/model/Person.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,2EAAqD;AACrD,iEAAwC;AACxC,sFAAgF;AAOhF,MAAM,UAAU,GAAG;IACjB,SAAS,EAAE,iDAAiD;CACpD,CAAA;AAEV,MAAa,MAAM;IAGjB,YACU,OAAgB,EAChB,YAA0B,EAC1B,OAAqB;QAFrB,YAAO,GAAP,OAAO,CAAS;QAChB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,YAAO,GAAP,OAAO,CAAc;QAL/B,qCAAmB;QAOjB,uBAAA,IAAI,sBAAe,OAAO,CAAC,UAAU,IAAI,qBAAqB,MAAA,CAAA;IAChE,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAA;IACjC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IAC5B,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACxB,OAAO,6BAA6B,IAAI,EAAE,CAAA;IAC5C,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;IAC9B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,UAAU,CAAC,SAAS,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAwB;QACrC,IAAI;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gCAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAA;YAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAClE,MAAM,GAAG,GAAG,IAAA,6BAAmB,EAAC,MAAM,CAAC,CAAA;YAEvC,OAAO,GAAG;gBACR,CAAC,CAAC,IAAA,sBAAe,EAAC;oBACd,GAAG;oBACH,UAAU,EAAE,uBAAA,IAAI,0BAAY;oBAC5B,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,GAAG;oBACzB,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,SAAS;iBAC5B,CAAC;gBACJ,CAAC,CAAC,IAAI,CAAA;SACT;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,IAAA,iBAAO,EAAC,KAAK,CAAC,EAAE;gBAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;oBACxB,KAAK,EAAE,mBAAmB;oBAC1B,KAAK;iBACN,CAAC,CAAA;aACH;YACD,OAAO,IAAI,CAAA;SACZ;IACH,CAAC;CACF;AAzDD,wBAyDC"}
1
+ {"version":3,"file":"Person.js","sourceRoot":"","sources":["../../src/model/Person.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,2EAAqD;AACrD,iEAAwC;AACxC,sFAAgF;AAChF,2DAAiE;AAOjE,MAAM,UAAU,GAAG;IACjB,SAAS,EAAE,iDAAiD;CACpD,CAAA;AAEV,MAAa,MAAM;IAGjB,YACU,OAAgB,EAChB,YAA0B,EAC1B,OAAqB;QAFrB,YAAO,GAAP,OAAO,CAAS;QAChB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,YAAO,GAAP,OAAO,CAAc;QAL/B,qCAAmB;QAOjB,uBAAA,IAAI,sBAAe,OAAO,CAAC,UAAU,IAAI,qBAAqB,MAAA,CAAA;IAChE,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAA;IACjC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IAC5B,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACxB,OAAO,6BAA6B,IAAI,EAAE,CAAA;IAC5C,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;IAC9B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,UAAU,CAAC,SAAS,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAwB;QACrC,IAAI;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gCAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAA;YAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAClE,MAAM,GAAG,GAAG,IAAA,6BAAmB,EAAC,MAAM,CAAC,CAAA;YAEvC,OAAO,GAAG;gBACR,CAAC,CAAC,IAAA,sBAAe,EAAC;oBACd,GAAG;oBACH,UAAU,EAAE,uBAAA,IAAI,0BAAY;oBAC5B,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,GAAG;oBACzB,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,SAAS;iBAC5B,CAAC;gBACJ,CAAC,CAAC,IAAI,CAAA;SACT;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,IAAA,iBAAO,EAAC,KAAK,CAAC,EAAE;gBAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;oBACvB,KAAK,EAAE,mBAAmB;oBAC1B,KAAK,EAAE,IAAI,yBAAgB,CAAC;wBAC1B,OAAO,EAAE,mDAAmD,IAAI,CAAC,SAAS,EAAE,EAAE;wBAC9E,IAAI,EAAE,6BAA6B;wBACnC,KAAK,EAAE,KAAK;qBACb,CAAC;iBACH,CAAC,CAAA;aACH;YACD,OAAO,IAAI,CAAA;SACZ;IACH,CAAC;CACF;AA7DD,wBA6DC"}
@@ -67,7 +67,7 @@ exports.default = bodyXMLToTree;
67
67
  function logErrors(context) {
68
68
  if (!context?.aggregatedErrors?.bodyXMLToTree.length)
69
69
  return;
70
- context.logger.error({
70
+ context.logger.warn({
71
71
  event: 'RECOVERABLE_ERROR',
72
72
  message: 'Unexpected structure in bodyXMLToTree',
73
73
  error: new errors_1.OperationalError({
@@ -1 +1 @@
1
- {"version":3,"file":"bodyXMLToTree.js","sourceRoot":"","sources":["../../../src/resolvers/content-tree/bodyXMLToTree.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAkC;AAKlC,2CAA0C;AAC1C,2DAAiE;AAEjE,SAAS,MAAM,CAAC,IAAkC;IAChD,OAAO,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,CAAA;AACxC,CAAC;AAUD;;;EAGE;AACF,SAAwB,aAAa,CACnC,GAAW,EACX,WAAwB,EACxB,OAAsB;IAEtB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAE3B,MAAM,0BAA0B,GAAG,CAAC,QAAwB,EAAa,EAAE,CACzE,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAE5B,SAAS,QAAQ,CAAC,IAAkB;QAClC,IAAI,IAAA,mBAAM,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;YAC7B,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,IAAI,CAAC,IAAI;aACjB,CAAA;SACF;aAAM,IAAI,IAAA,kBAAK,EAAC,IAAI,CAAC,EAAE;YACtB,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CACnD,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAC7D,CAAA;YAED,IAAI,eAAe,EAAE;gBACnB,MAAM,oBAAoB,GAAG,WAAW,CAAC,eAAe,CAAC,CAAA;gBACzD,OAAO,oBAAoB,CACzB,CAAC,CAAC,IAAI,CAAC,EACP,GAAG,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC/C,OAAO,CACR,CAAA;aACF;YAED,OAAO,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SACjD;QAED,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEnC,SAAS,CAAC,OAAO,CAAC,CAAA;IAElB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM,IAAI,KAAK,CACb,qDAAqD,IAAI,CAAC,SAAS,CACjE,IAAI,CACL,EAAE,CACJ,CAAA;KACF;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;KACzE;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AArDD,gCAqDC;AAED,SAAS,SAAS,CAAC,OAAsB;IACvC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,aAAa,CAAC,MAAM;QAAE,OAAM;IAE5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QACnB,KAAK,EAAE,mBAAmB;QAC1B,OAAO,EAAE,uCAAuC;QAChD,KAAK,EAAE,IAAI,yBAAgB,CAAC;YAC1B,IAAI,EAAE,0CAA0C;YAChD,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE,aAAa;SAChD,CAAC;KACH,CAAC,CAAA;IAEF,OAAO,CAAC,gBAAgB,CAAC,aAAa,GAAG,EAAE,CAAA;AAC7C,CAAC"}
1
+ {"version":3,"file":"bodyXMLToTree.js","sourceRoot":"","sources":["../../../src/resolvers/content-tree/bodyXMLToTree.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAkC;AAKlC,2CAA0C;AAC1C,2DAAiE;AAEjE,SAAS,MAAM,CAAC,IAAkC;IAChD,OAAO,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,CAAA;AACxC,CAAC;AAUD;;;EAGE;AACF,SAAwB,aAAa,CACnC,GAAW,EACX,WAAwB,EACxB,OAAsB;IAEtB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAE3B,MAAM,0BAA0B,GAAG,CAAC,QAAwB,EAAa,EAAE,CACzE,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAE5B,SAAS,QAAQ,CAAC,IAAkB;QAClC,IAAI,IAAA,mBAAM,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;YAC7B,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,IAAI,CAAC,IAAI;aACjB,CAAA;SACF;aAAM,IAAI,IAAA,kBAAK,EAAC,IAAI,CAAC,EAAE;YACtB,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CACnD,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAC7D,CAAA;YAED,IAAI,eAAe,EAAE;gBACnB,MAAM,oBAAoB,GAAG,WAAW,CAAC,eAAe,CAAC,CAAA;gBACzD,OAAO,oBAAoB,CACzB,CAAC,CAAC,IAAI,CAAC,EACP,GAAG,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC/C,OAAO,CACR,CAAA;aACF;YAED,OAAO,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SACjD;QAED,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEnC,SAAS,CAAC,OAAO,CAAC,CAAA;IAElB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM,IAAI,KAAK,CACb,qDAAqD,IAAI,CAAC,SAAS,CACjE,IAAI,CACL,EAAE,CACJ,CAAA;KACF;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;KACzE;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AArDD,gCAqDC;AAED,SAAS,SAAS,CAAC,OAAsB;IACvC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,aAAa,CAAC,MAAM;QAAE,OAAM;IAE5D,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QAClB,KAAK,EAAE,mBAAmB;QAC1B,OAAO,EAAE,uCAAuC;QAChD,KAAK,EAAE,IAAI,yBAAgB,CAAC;YAC1B,IAAI,EAAE,0CAA0C;YAChD,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE,aAAa;SAChD,CAAC;KACH,CAAC,CAAA;IAEF,OAAO,CAAC,gBAAgB,CAAC,aAAa,GAAG,EAAE,CAAA;AAC7C,CAAC"}
@@ -8,7 +8,7 @@ const tagMappings_1 = __importDefault(require("./tagMappings"));
8
8
  const logger_1 = require("@dotcom-reliability-kit/logger");
9
9
  const errors_1 = require("@dotcom-reliability-kit/errors");
10
10
  const mockLogger = new logger_1.Logger();
11
- const mockLogError = jest.spyOn(mockLogger, 'error');
11
+ const mockLogWarn = jest.spyOn(mockLogger, 'warn');
12
12
  const mockContext = {
13
13
  logger: mockLogger,
14
14
  };
@@ -213,7 +213,7 @@ describe('bodyXMLToTree', () => {
213
213
  "version": 1,
214
214
  }
215
215
  `);
216
- expect(mockLogError).not.toBeCalled();
216
+ expect(mockLogWarn).not.toBeCalled();
217
217
  });
218
218
  it('should handle heading and slots', () => {
219
219
  const xml = '<body><div class="n-content-layout"><h3></h3><div class="n-content-layout__slot"></div><div class="n-content-layout__slot"></div></body>';
@@ -245,7 +245,7 @@ describe('bodyXMLToTree', () => {
245
245
  "version": 1,
246
246
  }
247
247
  `);
248
- expect(mockLogError).not.toBeCalled();
248
+ expect(mockLogWarn).not.toBeCalled();
249
249
  });
250
250
  it('should log an error on unexpected child after heading', () => {
251
251
  const xml = '<body><div class="n-content-layout"><h3></h3><div class="n-content-layout__slot"></div><p></p></body>';
@@ -277,8 +277,8 @@ describe('bodyXMLToTree', () => {
277
277
  "version": 1,
278
278
  }
279
279
  `);
280
- expect(mockLogError).toBeCalled();
281
- expect(mockLogError.mock.lastCall).toMatchInlineSnapshot(`
280
+ expect(mockLogWarn).toBeCalled();
281
+ expect(mockLogWarn.mock.lastCall).toMatchInlineSnapshot(`
282
282
  Array [
283
283
  Object {
284
284
  "error": Object {
@@ -320,8 +320,8 @@ describe('bodyXMLToTree', () => {
320
320
  "version": 1,
321
321
  }
322
322
  `);
323
- expect(mockLogError).toBeCalled();
324
- expect(mockLogError.mock.lastCall).toMatchInlineSnapshot(`
323
+ expect(mockLogWarn).toBeCalled();
324
+ expect(mockLogWarn.mock.lastCall).toMatchInlineSnapshot(`
325
325
  Array [
326
326
  Object {
327
327
  "error": Object {
@@ -1 +1 @@
1
- {"version":3,"file":"bodyXMLToTree.test.js","sourceRoot":"","sources":["../../../src/resolvers/content-tree/bodyXMLToTree.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bodyXMLToTree.test.js","sourceRoot":"","sources":["../../../src/resolvers/content-tree/bodyXMLToTree.test.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.FlourishFallback = exports.Flourish = void 0;
7
7
  const imageService_1 = __importDefault(require("../../../helpers/imageService"));
8
8
  const isError_1 = __importDefault(require("../../../helpers/isError"));
9
+ const errors_1 = require("@dotcom-reliability-kit/errors");
9
10
  exports.Flourish = {
10
11
  async fallbackImage(parent, _args, context) {
11
12
  const type = parent.reference.flourishType;
@@ -57,9 +58,13 @@ const getImageMetadata = async (context, flourishUrl) => {
57
58
  }
58
59
  catch (error) {
59
60
  if ((0, isError_1.default)(error)) {
60
- context.logger.error({
61
+ context.logger.warn({
61
62
  event: 'RECOVERABLE_ERROR',
62
- error,
63
+ error: new errors_1.OperationalError({
64
+ code: 'FLOURISH_IMAGE_METADATA_ERROR',
65
+ message: `Error getting image dimensions for Flourish fallback image ${flourishUrl}`,
66
+ cause: error,
67
+ }),
63
68
  });
64
69
  }
65
70
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"Flourish.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/Flourish.ts"],"names":[],"mappings":";;;;;;AAAA,iFAA2D;AAM3D,uEAA8C;AAEjC,QAAA,QAAQ,GAAG;IACtB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAA;QAC1C,MAAM,SAAS,GACb,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,KAAK,QAAQ;YAC5C,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS;YAC5B,CAAC,CAAC,KAAK,CAAA;QAEX,MAAM,WAAW,GAAG,kCAAkC,IAAI,IACxD,MAAM,CAAC,SAAS,CAAC,EACnB,aAAa,SAAS,CAAC,CAAC,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;QAE3D,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QAElE,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAA;QACjC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAA;QAEnC,MAAM,sBAAsB,GAAG,IAAA,sBAAe,EAAC;YAC7C,GAAG,EAAE,WAAW;YAChB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,qBAAqB;YACvD,KAAK;SACN,CAAC,CAAA;QAEF,OAAO;YACL,GAAG,EAAE,sBAAsB;YAC3B,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,EAAE;YACb,KAAK;YACL,MAAM;SACP,CAAA;IACH,CAAC;IAED,IAAI,CAAC,MAAM;QACT,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAA;IAC9B,CAAC;CAC0B,CAAA;AAEhB,QAAA,gBAAgB,GAAG;IAC9B,KAAK,CAAC,MAAM,CAAC,MAAM;QACjB,OAAO,MAAM,CAAC,MAAM,IAAI,IAAI,CAAA;IAC9B,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,MAAM;QAChB,OAAO,MAAM,CAAC,KAAK,IAAI,IAAI,CAAA;IAC7B,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,MAAM;QACd,OAAO,MAAM,CAAC,GAAG,IAAI,IAAI,CAAA;IAC3B,CAAC;CACkC,CAAA;AAOrC,MAAM,gBAAgB,GAAG,KAAK,EAC5B,OAAqB,EACrB,WAAmB,EACK,EAAE;IAC1B,MAAM,aAAa,GAAG,IAAI,CAAA;IAC1B,MAAM,cAAc,GAAG,IAAI,CAAA;IAE3B,IAAI;QACF,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CACtE,WAAW,CACZ,CAAA;QAED,OAAO;YACL,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,aAAa;YAC5C,MAAM,EAAE,aAAa,EAAE,MAAM,IAAI,cAAc;SAChD,CAAA;KACF;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,IAAA,iBAAO,EAAC,KAAK,CAAC,EAAE;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;gBACnB,KAAK,EAAE,mBAAmB;gBAC1B,KAAK;aACN,CAAC,CAAA;SACH;QACD,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,cAAc;SACvB,CAAA;KACF;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"Flourish.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/Flourish.ts"],"names":[],"mappings":";;;;;;AAAA,iFAA2D;AAM3D,uEAA8C;AAC9C,2DAAiE;AAEpD,QAAA,QAAQ,GAAG;IACtB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAA;QAC1C,MAAM,SAAS,GACb,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,KAAK,QAAQ;YAC5C,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS;YAC5B,CAAC,CAAC,KAAK,CAAA;QAEX,MAAM,WAAW,GAAG,kCAAkC,IAAI,IACxD,MAAM,CAAC,SAAS,CAAC,EACnB,aAAa,SAAS,CAAC,CAAC,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;QAE3D,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QAElE,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAA;QACjC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAA;QAEnC,MAAM,sBAAsB,GAAG,IAAA,sBAAe,EAAC;YAC7C,GAAG,EAAE,WAAW;YAChB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,qBAAqB;YACvD,KAAK;SACN,CAAC,CAAA;QAEF,OAAO;YACL,GAAG,EAAE,sBAAsB;YAC3B,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,EAAE;YACb,KAAK;YACL,MAAM;SACP,CAAA;IACH,CAAC;IAED,IAAI,CAAC,MAAM;QACT,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAA;IAC9B,CAAC;CAC0B,CAAA;AAEhB,QAAA,gBAAgB,GAAG;IAC9B,KAAK,CAAC,MAAM,CAAC,MAAM;QACjB,OAAO,MAAM,CAAC,MAAM,IAAI,IAAI,CAAA;IAC9B,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,MAAM;QAChB,OAAO,MAAM,CAAC,KAAK,IAAI,IAAI,CAAA;IAC7B,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,MAAM;QACd,OAAO,MAAM,CAAC,GAAG,IAAI,IAAI,CAAA;IAC3B,CAAC;CACkC,CAAA;AAOrC,MAAM,gBAAgB,GAAG,KAAK,EAC5B,OAAqB,EACrB,WAAmB,EACK,EAAE;IAC1B,MAAM,aAAa,GAAG,IAAI,CAAA;IAC1B,MAAM,cAAc,GAAG,IAAI,CAAA;IAE3B,IAAI;QACF,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CACtE,WAAW,CACZ,CAAA;QAED,OAAO;YACL,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,aAAa;YAC5C,MAAM,EAAE,aAAa,EAAE,MAAM,IAAI,cAAc;SAChD,CAAA;KACF;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,IAAA,iBAAO,EAAC,KAAK,CAAC,EAAE;YAClB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;gBAClB,KAAK,EAAE,mBAAmB;gBAC1B,KAAK,EAAE,IAAI,yBAAgB,CAAC;oBAC1B,IAAI,EAAE,+BAA+B;oBACrC,OAAO,EAAE,8DAA8D,WAAW,EAAE;oBACpF,KAAK,EAAE,KAAK;iBACb,CAAC;aACH,CAAC,CAAA;SACH;QACD,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,cAAc;SACvB,CAAA;KACF;AACH,CAAC,CAAA"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.RawImage = void 0;
7
7
  const imageService_1 = __importDefault(require("../../../helpers/imageService"));
8
8
  const isError_1 = __importDefault(require("../../../helpers/isError"));
9
+ const errors_1 = require("@dotcom-reliability-kit/errors");
9
10
  class RawImageModel {
10
11
  constructor(rawImage, context) {
11
12
  this.rawImage = rawImage;
@@ -46,9 +47,13 @@ class RawImageModel {
46
47
  }
47
48
  catch (error) {
48
49
  if ((0, isError_1.default)(error)) {
49
- this.context.logger.error({
50
+ this.context.logger.warn({
50
51
  event: 'RECOVERABLE_ERROR',
51
- error,
52
+ error: new errors_1.OperationalError({
53
+ code: 'RAW_IMAGE_DIMENSIONS_ERROR',
54
+ message: `Error getting dimensions for raw image ${this.url()}`,
55
+ cause: error,
56
+ }),
52
57
  });
53
58
  }
54
59
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"RawImage.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/RawImage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RawImage.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/RawImage.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ exports.Recommended = {
14
14
  }
15
15
  catch (error) {
16
16
  if (error instanceof Error) {
17
- context.logger.error({
17
+ context.logger.warn({
18
18
  event: 'RECOVERABLE_ERROR',
19
19
  error: new errors_1.OperationalError({
20
20
  code: 'RECOMMENDED_TEASER_ERROR',
@@ -1 +1 @@
1
- {"version":3,"file":"Recommended.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/Recommended.ts"],"names":[],"mappings":";;;AAAA,wDAAuD;AAEvD,2DAAiE;AAEpD,QAAA,WAAW,GAAG;IACzB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO;QACjC,IAAI;YACF,IAAI,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CACrD,IAAA,sBAAW,EAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CACjC,CAAA;YAED,IAAI,MAAM,CAAC,SAAS,CAAC,mBAAmB,EAAE;gBACxC,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;aACtE;YACD,OAAO,OAAO,CAAA;SACf;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,YAAY,KAAK,EAAE;gBAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;oBACnB,KAAK,EAAE,mBAAmB;oBAC1B,KAAK,EAAE,IAAI,yBAAgB,CAAC;wBAC1B,IAAI,EAAE,0BAA0B;wBAChC,OAAO,EAAE,gDAAgD,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE;wBAC9E,KAAK,EAAE,KAAK;qBACb,CAAC;iBACH,CAAC,CAAA;aACH;YAED,OAAO,IAAI,CAAA;SACZ;IACH,CAAC;IAED,IAAI,CAAC,MAAM;QACT,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,YAAY,CAAC,MAAM;QACjB,OAAO,OAAO,CACZ,MAAM,EAAE,cAAc;YACpB,EAAE,KAAK,EAAE;YACT,EAAE,QAAQ,CAAC,iDAAiD,CAAC,CAChE,CAAA;IACH,CAAC;CAC6B,CAAA"}
1
+ {"version":3,"file":"Recommended.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/Recommended.ts"],"names":[],"mappings":";;;AAAA,wDAAuD;AAEvD,2DAAiE;AAEpD,QAAA,WAAW,GAAG;IACzB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO;QACjC,IAAI;YACF,IAAI,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CACrD,IAAA,sBAAW,EAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CACjC,CAAA;YAED,IAAI,MAAM,CAAC,SAAS,CAAC,mBAAmB,EAAE;gBACxC,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;aACtE;YACD,OAAO,OAAO,CAAA;SACf;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,YAAY,KAAK,EAAE;gBAC1B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;oBAClB,KAAK,EAAE,mBAAmB;oBAC1B,KAAK,EAAE,IAAI,yBAAgB,CAAC;wBAC1B,IAAI,EAAE,0BAA0B;wBAChC,OAAO,EAAE,gDAAgD,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE;wBAC9E,KAAK,EAAE,KAAK;qBACb,CAAC;iBACH,CAAC,CAAA;aACH;YAED,OAAO,IAAI,CAAA;SACZ;IACH,CAAC;IAED,IAAI,CAAC,MAAM;QACT,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,YAAY,CAAC,MAAM;QACjB,OAAO,OAAO,CACZ,MAAM,EAAE,cAAc;YACpB,EAAE,KAAK,EAAE;YACT,EAAE,QAAQ,CAAC,iDAAiD,CAAC,CAChE,CAAA;IACH,CAAC;CAC6B,CAAA"}
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Tweet = void 0;
7
+ const errors_1 = require("@dotcom-reliability-kit/errors");
7
8
  const isError_1 = __importDefault(require("../../../helpers/isError"));
8
9
  exports.Tweet = {
9
10
  async html(parent, _args, context) {
@@ -13,9 +14,13 @@ exports.Tweet = {
13
14
  }
14
15
  catch (error) {
15
16
  if ((0, isError_1.default)(error)) {
16
- context.logger.error({
17
+ context.logger.warn({
17
18
  event: 'RECOVERABLE_ERROR',
18
- error,
19
+ error: new errors_1.OperationalError({
20
+ code: 'TWEET_EMBED_ERROR',
21
+ message: `Failed to get HTML embed for tweet ${parent.reference.id}`,
22
+ cause: error,
23
+ }),
19
24
  });
20
25
  }
21
26
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"Tweet.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/Tweet.ts"],"names":[],"mappings":";;;;;;AACA,uEAA8C;AAEjC,QAAA,KAAK,GAAG;IACnB,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO;QAC/B,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CACtD,MAAM,CAAC,SAAS,CAAC,EAAE,CACpB,CAAA;YACD,OAAO,KAAK,CAAC,IAAI,CAAA;SAClB;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,IAAA,iBAAO,EAAC,KAAK,CAAC,EAAE;gBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;oBACnB,KAAK,EAAE,mBAAmB;oBAC1B,KAAK;iBACN,CAAC,CAAA;aACH;YACD,OAAO,IAAI,CAAA;SACZ;IACH,CAAC;IAED,IAAI,CAAC,MAAM;QACT,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAA;IAC9B,CAAC;CACuB,CAAA"}
1
+ {"version":3,"file":"Tweet.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/Tweet.ts"],"names":[],"mappings":";;;;;;AAAA,2DAAiE;AAEjE,uEAA8C;AAEjC,QAAA,KAAK,GAAG;IACnB,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO;QAC/B,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CACtD,MAAM,CAAC,SAAS,CAAC,EAAE,CACpB,CAAA;YACD,OAAO,KAAK,CAAC,IAAI,CAAA;SAClB;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,IAAA,iBAAO,EAAC,KAAK,CAAC,EAAE;gBAClB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;oBAClB,KAAK,EAAE,mBAAmB;oBAC1B,KAAK,EAAE,IAAI,yBAAgB,CAAC;wBAC1B,IAAI,EAAE,mBAAmB;wBACzB,OAAO,EAAE,sCAAsC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE;wBACpE,KAAK,EAAE,KAAK;qBACb,CAAC;iBACH,CAAC,CAAA;aACH;YACD,OAAO,IAAI,CAAA;SACZ;IACH,CAAC;IAED,IAAI,CAAC,MAAM;QACT,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAA;IAC9B,CAAC;CACuB,CAAA"}
@@ -2,12 +2,25 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Video = void 0;
4
4
  const metadata_1 = require("../../../helpers/metadata");
5
+ const errors_1 = require("@dotcom-reliability-kit/errors");
5
6
  exports.Video = {
6
7
  // This will override the original id from the parent that is a URL.
7
8
  id: (parent) => (0, metadata_1.uuidFromUrl)(parent.reference.id),
8
9
  async title(parent, _args, context) {
9
- const capiResponse = await context.dataSources.capi.getContent((0, metadata_1.uuidFromUrl)(parent.reference.id));
10
- return capiResponse.title();
10
+ try {
11
+ const capiResponse = await context.dataSources.capi.getContent((0, metadata_1.uuidFromUrl)(parent.reference.id));
12
+ return capiResponse.title();
13
+ }
14
+ catch (error) {
15
+ if (error instanceof Error) {
16
+ throw new errors_1.OperationalError({
17
+ code: 'VIDEO_CONTENT_FETCH_ERROR',
18
+ message: `Error getting content object for video ${parent.reference.id}`,
19
+ cause: error,
20
+ });
21
+ }
22
+ throw error;
23
+ }
11
24
  },
12
25
  type(parent) {
13
26
  return parent.reference.type;
@@ -1 +1 @@
1
- {"version":3,"file":"Video.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/Video.ts"],"names":[],"mappings":";;;AAAA,wDAAuD;AAG1C,QAAA,KAAK,GAAG;IACnB,oEAAoE;IACpE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,sBAAW,EAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;IAEhD,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO;QAChC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAC5D,IAAA,sBAAW,EAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CACjC,CAAA;QACD,OAAO,YAAY,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IAED,IAAI,CAAC,MAAM;QACT,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAA;IAC9B,CAAC;CACgC,CAAA"}
1
+ {"version":3,"file":"Video.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/Video.ts"],"names":[],"mappings":";;;AAAA,wDAAuD;AAEvD,2DAAiE;AAEpD,QAAA,KAAK,GAAG;IACnB,oEAAoE;IACpE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,sBAAW,EAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;IAEhD,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO;QAChC,IAAI;YACF,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAC5D,IAAA,sBAAW,EAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CACjC,CAAA;YAED,OAAO,YAAY,CAAC,KAAK,EAAE,CAAA;SAC5B;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,YAAY,KAAK,EAAE;gBAC1B,MAAM,IAAI,yBAAgB,CAAC;oBACzB,IAAI,EAAE,2BAA2B;oBACjC,OAAO,EAAE,0CAA0C,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE;oBACxE,KAAK,EAAE,KAAK;iBACb,CAAC,CAAA;aACH;YAED,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAED,IAAI,CAAC,MAAM;QACT,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAA;IAC9B,CAAC;CACgC,CAAA"}
@@ -7,13 +7,28 @@ exports.version = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const CapiResponse_1 = require("../model/CapiResponse");
10
+ const errors_1 = require("@dotcom-reliability-kit/errors");
10
11
  const packageJson = JSON.parse(fs_1.default.readFileSync(path_1.default.resolve(__dirname, '../../package.json'), 'utf-8'));
11
12
  exports.version = packageJson.version;
12
13
  const resolvers = {
13
14
  Query: {
14
15
  version: () => exports.version,
15
16
  async content(_, args, context) {
16
- return context.dataSources.capi.getContent(args.uuid);
17
+ try {
18
+ return await context.dataSources.capi.getContent(args.uuid);
19
+ }
20
+ catch (error) {
21
+ if (error instanceof errors_1.BaseError &&
22
+ error.data.upstreamStatusCode === 404) {
23
+ throw new errors_1.HttpError({
24
+ code: 'CONTENT_NOT_FOUND',
25
+ message: `Content ${args.uuid} not found in Content API`,
26
+ statusCode: 404,
27
+ relatesToSystems: ['up-ica'],
28
+ });
29
+ }
30
+ throw error;
31
+ }
17
32
  },
18
33
  contentFromJSON(_, { content }, context) {
19
34
  return CapiResponse_1.CapiResponse.fromJSON(content, context);
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/resolvers/core.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAmB;AACnB,gDAAuB;AAEvB,wDAAoD;AAEpD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CACxE,CAAA;AAEY,QAAA,OAAO,GAAG,WAAW,CAAC,OAAO,CAAA;AAE1C,MAAM,SAAS,GAAG;IAChB,KAAK,EAAE;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,eAAO;QACtB,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO;YAC5B,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvD,CAAC;QACD,eAAe,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO;YACrC,OAAO,2BAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAChD,CAAC;KACF;IACD,QAAQ,EAAE;QACR,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAC9C,qDAAqD,IAAI,CAAC,IAAI,EAAE,CACjE,CAAA;YAED,IAAI,MAAM,EAAE;gBACV,OAAO,qBAAqB,IAAI,CAAC,IAAI,EAAE,CAAA;aACxC;iBAAM,IAAI,MAAM,KAAK,KAAK,EAAE;gBAC3B,OAAO,WAAW,IAAI,CAAC,IAAI,SAAS,CAAA;aACrC;iBAAM;gBACL,OAAO,iBAAiB,CAAA;aACzB;QACH,CAAC;KACF;CAIF,CAAA;AAED,kBAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/resolvers/core.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAmB;AACnB,gDAAuB;AAEvB,wDAAoD;AACpD,2DAAqE;AAErE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CACxE,CAAA;AAEY,QAAA,OAAO,GAAG,WAAW,CAAC,OAAO,CAAA;AAE1C,MAAM,SAAS,GAAG;IAChB,KAAK,EAAE;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,eAAO;QACtB,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO;YAC5B,IAAI;gBACF,OAAO,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aAC5D;YAAC,OAAO,KAAK,EAAE;gBACd,IACE,KAAK,YAAY,kBAAS;oBAC1B,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,GAAG,EACrC;oBACA,MAAM,IAAI,kBAAS,CAAC;wBAClB,IAAI,EAAE,mBAAmB;wBACzB,OAAO,EAAE,WAAW,IAAI,CAAC,IAAI,2BAA2B;wBACxD,UAAU,EAAE,GAAG;wBACf,gBAAgB,EAAE,CAAC,QAAQ,CAAC;qBAC7B,CAAC,CAAA;iBACH;gBAED,MAAM,KAAK,CAAA;aACZ;QACH,CAAC;QACD,eAAe,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO;YACrC,OAAO,2BAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAChD,CAAC;KACF;IACD,QAAQ,EAAE;QACR,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAC9C,qDAAqD,IAAI,CAAC,IAAI,EAAE,CACjE,CAAA;YAED,IAAI,MAAM,EAAE;gBACV,OAAO,qBAAqB,IAAI,CAAC,IAAI,EAAE,CAAA;aACxC;iBAAM,IAAI,MAAM,KAAK,KAAK,EAAE;gBAC3B,OAAO,WAAW,IAAI,CAAC,IAAI,SAAS,CAAA;aACrC;iBAAM;gBACL,OAAO,iBAAiB,CAAA;aACzB;QACH,CAAC;KACF;CAIF,CAAA;AAED,kBAAe,SAAS,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@financial-times/cp-content-pipeline-schema",
3
- "version": "2.8.0",
3
+ "version": "2.9.0",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -20,7 +20,7 @@
20
20
  "dependencies": {
21
21
  "@apollo/datasource-rest": "^6.2.2",
22
22
  "@apollo/utils.keyvaluecache": "^1.0.1",
23
- "@dotcom-reliability-kit/errors": "^2.0.0",
23
+ "@dotcom-reliability-kit/fetch-error-handler": "^0.2.3",
24
24
  "@dotcom-reliability-kit/log-error": "^2.0.0",
25
25
  "@dotcom-reliability-kit/serialize-request": "^2.0.0",
26
26
  "@financial-times/n-concept-ids": "^2.1.0",
@@ -50,6 +50,9 @@
50
50
  "@types/lodash.sortby": "^4.7.7",
51
51
  "type-fest": "^3.13.1"
52
52
  },
53
+ "peerDependencies": {
54
+ "@dotcom-reliability-kit/errors": "^3.1.0"
55
+ },
53
56
  "engines": {
54
57
  "node": "18.x"
55
58
  }
@@ -2,10 +2,6 @@ import { CapiResponse } from '../model/CapiResponse'
2
2
  import { InstrumentedRESTDataSource } from './instrumented'
3
3
  import { CapiPerson } from '../types/internal-content'
4
4
  import { AugmentedRequest } from '@apollo/datasource-rest'
5
- import {
6
- OperationalError,
7
- UpstreamServiceError,
8
- } from '@dotcom-reliability-kit/errors'
9
5
 
10
6
  const REQUEST_TIMEOUT = 5000 // 5 seconds
11
7
 
@@ -19,7 +15,7 @@ export class CapiDataSource extends InstrumentedRESTDataSource {
19
15
  ? parseInt(process.env.PEOPLE_CACHE_TTL)
20
16
  : 600 // 10 minutes
21
17
 
22
- backendSystemCodes = ['up-ica']
18
+ backendSystemCode = 'up-ica'
23
19
 
24
20
  abortController = new AbortController()
25
21
  timeout: ReturnType<typeof setTimeout> | undefined = undefined
@@ -41,47 +37,23 @@ export class CapiDataSource extends InstrumentedRESTDataSource {
41
37
  uuid: string,
42
38
  packageContainer?: CapiResponse
43
39
  ): Promise<CapiResponse> {
44
- try {
45
- const content = await this.get(`internalcontent/${uuid}`, {
46
- cacheOptions: { ttl: this.articleCacheTTL },
47
- })
48
- this.context.contentRequestedOnce = true
49
- this.calls.push(uuid)
50
-
51
- if (this.timeout) {
52
- clearTimeout(this.timeout)
53
- this.timeout = undefined
54
- }
55
-
56
- return CapiResponse.fromJSON(content, this.context, packageContainer)
57
- } catch (error) {
58
- if (error instanceof Error && error.name === 'AbortError') {
59
- throw new UpstreamServiceError({
60
- code: 'CAPI_DATASOURCE_TIMEOUT',
61
- message: `Request to Internal Content API took longer than ${REQUEST_TIMEOUT}ms, and so has been aborted.`,
62
- statusCode: 408,
63
- relatesToSystems: this.backendSystemCodes,
64
- })
65
- }
66
-
67
- throw error
40
+ const content = await this.get(`internalcontent/${uuid}`, {
41
+ cacheOptions: { ttl: this.articleCacheTTL },
42
+ })
43
+ this.context.contentRequestedOnce = true
44
+ this.calls.push(uuid)
45
+
46
+ if (this.timeout) {
47
+ clearTimeout(this.timeout)
48
+ this.timeout = undefined
68
49
  }
69
- }
70
50
 
71
- async getPerson(uuid: string): Promise<CapiPerson> {
72
- try {
73
- return await this.get(`people/${uuid}`, {
74
- cacheOptions: { ttl: this.peopleCacheTTL },
75
- })
76
- } catch (error) {
77
- if (error instanceof Error) {
78
- throw new OperationalError({
79
- cause: error,
80
- code: 'CAPI_DATASOURCE_PERSON_ERROR',
81
- })
82
- }
51
+ return CapiResponse.fromJSON(content, this.context, packageContainer)
52
+ }
83
53
 
84
- throw error
85
- }
54
+ getPerson(uuid: string): Promise<CapiPerson> {
55
+ return this.get(`people/${uuid}`, {
56
+ cacheOptions: { ttl: this.peopleCacheTTL },
57
+ })
86
58
  }
87
59
  }
@@ -6,19 +6,22 @@ import {
6
6
  AugmentedRequest,
7
7
  } from '@apollo/datasource-rest'
8
8
  import { PrefixingKeyValueCache } from '@apollo/utils.keyvaluecache'
9
- import { UpstreamServiceError } from '@dotcom-reliability-kit/errors'
9
+ import { createFetchErrorHandler } from '@dotcom-reliability-kit/fetch-error-handler'
10
+ import type { FetchErrorHandler } from '@dotcom-reliability-kit/fetch-error-handler/lib/create-handler'
10
11
  import { QueryContext } from '..'
11
12
  import { isContextableCache } from '../types/cache'
12
13
  import { BaseDataSource, BaseDataSourceOptions } from './base'
14
+ import { BaseError } from '@dotcom-reliability-kit/errors'
13
15
 
14
16
  export class InstrumentedRESTDataSource
15
17
  extends RESTDataSource
16
18
  implements BaseDataSource
17
19
  {
18
20
  startTime?: bigint
19
- backendSystemCodes: string[] = []
21
+ backendSystemCode: string | undefined
20
22
  context: QueryContext
21
23
  calls: string[] = []
24
+ errorHandler: FetchErrorHandler
22
25
 
23
26
  constructor({ cache, context }: BaseDataSourceOptions) {
24
27
  const wrappedCache = new PrefixingKeyValueCache(
@@ -28,6 +31,11 @@ export class InstrumentedRESTDataSource
28
31
 
29
32
  super({
30
33
  cache: wrappedCache,
34
+ fetch: (url, init) => this.errorHandler(global.fetch(url, init)),
35
+ })
36
+
37
+ this.errorHandler = createFetchErrorHandler({
38
+ upstreamSystemCode: this.backendSystemCode,
31
39
  })
32
40
 
33
41
  // okay _now_ we can use `this`
@@ -59,6 +67,18 @@ export class InstrumentedRESTDataSource
59
67
  // eslint-disable-next-line @typescript-eslint/no-empty-function
60
68
  async throwIfResponseIsError() {}
61
69
 
70
+ logResponseMetrics(status: number, duration: bigint): void {
71
+ this.context.metrics?.count(
72
+ `graphql.datasource.${this.constructor.name}.response.${status}.count`,
73
+ 1
74
+ )
75
+
76
+ this.context.metrics?.count(
77
+ `graphql.datasource.${this.constructor.name}.response.${status}.time`,
78
+ Number(duration)
79
+ )
80
+ }
81
+
62
82
  async fetch<TResult>(
63
83
  path: string,
64
84
  incomingRequest?: DataSourceRequest<CacheOptions>
@@ -74,40 +94,18 @@ export class InstrumentedRESTDataSource
74
94
  const result = await super.fetch<TResult>(path, incomingRequest)
75
95
  const duration = (process.hrtime.bigint() - startTime) / BigInt(1e6)
76
96
 
77
- this.context.metrics?.count(
78
- `graphql.datasource.${this.constructor.name}.response.${result.response.status}.count`,
79
- 1
80
- )
81
-
82
- this.context.metrics?.count(
83
- `graphql.datasource.${this.constructor.name}.response.${result.response.status}.time`,
84
- Number(duration)
85
- )
86
-
87
- if (!result.response.ok) {
88
- throw new UpstreamServiceError({
89
- message: `${result.response.status}: ${result.response.statusText} from ${this.constructor.name}`,
90
- statusCode: result.response.status,
91
- relatesToSystems: this.backendSystemCodes,
92
- url: result.response.url,
93
- body: result.parsedBody,
94
- })
95
- }
97
+ this.logResponseMetrics(result.response.status, duration)
96
98
 
97
99
  return result
98
100
  } catch (error) {
99
- if (error instanceof Error && error.name === 'AbortError') {
101
+ if (error instanceof BaseError) {
102
+ const status =
103
+ error.code === 'FETCH_ABORT_ERROR'
104
+ ? 408
105
+ : Number(error.data.upstreamStatusCode ?? 0)
100
106
  const duration = (process.hrtime.bigint() - startTime) / BigInt(1e6)
101
107
 
102
- this.context.metrics?.count(
103
- `graphql.datasource.${this.constructor.name}.response.408.count`,
104
- 1
105
- )
106
-
107
- this.context.metrics?.count(
108
- `graphql.datasource.${this.constructor.name}.response.408.time`,
109
- Number(duration)
110
- )
108
+ this.logResponseMetrics(status, duration)
111
109
  }
112
110
 
113
111
  throw error
@@ -1,4 +1,3 @@
1
- import { UpstreamServiceError } from '@dotcom-reliability-kit/errors'
2
1
  import { InstrumentedRESTDataSource } from './instrumented'
3
2
  import { AugmentedRequest, CacheOptions } from '@apollo/datasource-rest'
4
3
 
@@ -6,7 +5,7 @@ const REQUEST_TIMEOUT = 5000 // 5 seconds
6
5
 
7
6
  export class OrigamiImageDataSource extends InstrumentedRESTDataSource {
8
7
  baseURL = 'https://www.ft.com/__origami/service/image/v2/'
9
- backendSystemCodes = ['origami-image-service-v2']
8
+ backendSystemCode = 'origami-image-service-v2'
10
9
 
11
10
  abortController = new AbortController()
12
11
  timeout: ReturnType<typeof setTimeout> | undefined = undefined
@@ -32,29 +31,16 @@ export class OrigamiImageDataSource extends InstrumentedRESTDataSource {
32
31
  async getImageMetadata(
33
32
  url: string
34
33
  ): Promise<{ width: number; height: number }> {
35
- try {
36
- const imageMetadata = await this.get(
37
- `images/metadata/${encodeURIComponent(url)}?source=next`
38
- )
39
-
40
- this.calls.push(url)
41
-
42
- if (this.timeout) {
43
- clearTimeout(this.timeout)
44
- this.timeout = undefined
45
- }
46
- return imageMetadata
47
- } catch (error) {
48
- if (error instanceof Error && error.name === 'AbortError') {
49
- throw new UpstreamServiceError({
50
- code: 'ORIGAMI_DATASOURCE_TIMEOUT',
51
- message: `Request to Image Service took longer than ${REQUEST_TIMEOUT}ms, and so has been aborted.`,
52
- statusCode: 408,
53
- relatesToSystems: this.backendSystemCodes,
54
- })
55
- }
56
-
57
- throw error
34
+ const imageMetadata = await this.get(
35
+ `images/metadata/${encodeURIComponent(url)}?source=next`
36
+ )
37
+
38
+ this.calls.push(url)
39
+
40
+ if (this.timeout) {
41
+ clearTimeout(this.timeout)
42
+ this.timeout = undefined
58
43
  }
44
+ return imageMetadata
59
45
  }
60
46
  }
@@ -1,11 +1,10 @@
1
1
  import { AugmentedRequest, CacheOptions } from '@apollo/datasource-rest'
2
- import { UpstreamServiceError } from '@dotcom-reliability-kit/errors'
3
2
  import { InstrumentedRESTDataSource } from './instrumented'
4
3
 
5
4
  const REQUEST_TIMEOUT = 5000 // 5 seconds
6
5
  export class TwitterDataSource extends InstrumentedRESTDataSource {
7
6
  baseURL = 'https://publish.twitter.com'
8
- backendSystemCodes = ['twitter-oembed-api']
7
+ backendSystemCode = 'twitter-oembed-api'
9
8
 
10
9
  abortController = new AbortController()
11
10
  timeout: ReturnType<typeof setTimeout> | undefined = undefined
@@ -21,29 +20,16 @@ export class TwitterDataSource extends InstrumentedRESTDataSource {
21
20
  }
22
21
 
23
22
  async getTweet(tweetUrl: string) {
24
- try {
25
- const tweet = await this.get(`oembed?url=${tweetUrl}&omit_script=true`)
26
-
27
- this.calls.push(tweetUrl)
28
-
29
- if (this.timeout) {
30
- clearTimeout(this.timeout)
31
- this.timeout = undefined
32
- }
33
-
34
- return tweet
35
- } catch (error) {
36
- if (error instanceof Error && error.name === 'AbortError') {
37
- throw new UpstreamServiceError({
38
- code: 'TWITTER_DATASOURCE_TIMEOUT',
39
- message: `Request to Twitter API took longer than ${REQUEST_TIMEOUT}ms, and so has been aborted.`,
40
- statusCode: 408,
41
- relatesToSystems: this.backendSystemCodes,
42
- })
43
- }
44
-
45
- throw error
23
+ const tweet = await this.get(`oembed?url=${tweetUrl}&omit_script=true`)
24
+
25
+ this.calls.push(tweetUrl)
26
+
27
+ if (this.timeout) {
28
+ clearTimeout(this.timeout)
29
+ this.timeout = undefined
46
30
  }
31
+
32
+ return tweet
47
33
  }
48
34
 
49
35
  cacheOptionsFor(): CacheOptions {