@financial-times/cp-content-pipeline-schema 0.7.21 → 0.7.23

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 CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.7.23](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v0.7.22...cp-content-pipeline-schema-v0.7.23) (2023-07-31)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * gracefully handle error response from origami for flourish fallback images ([be99900](https://github.com/Financial-Times/cp-content-pipeline/commit/be999005e79c277cc9703852c07ecc35f221e190))
9
+ * log flourish error ([fdd3ea7](https://github.com/Financial-Times/cp-content-pipeline/commit/fdd3ea7f9b1192d4903ffdc8b5dd701e4b0578c0))
10
+
11
+ ## [0.7.22](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v0.7.21...cp-content-pipeline-schema-v0.7.22) (2023-07-26)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * prefix cache key with url ([0629942](https://github.com/Financial-Times/cp-content-pipeline/commit/06299423d1905226959396b6df683b424f0708aa))
17
+
3
18
  ## [0.7.21](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v0.7.20...cp-content-pipeline-schema-v0.7.21) (2023-07-25)
4
19
 
5
20
 
@@ -0,0 +1 @@
1
+ export default function isError(error: unknown): error is Error;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isError(error) {
4
+ return error instanceof Error;
5
+ }
6
+ exports.default = isError;
7
+ //# sourceMappingURL=isError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isError.js","sourceRoot":"","sources":["../../src/helpers/isError.ts"],"names":[],"mappings":";;AAAA,SAAwB,OAAO,CAAC,KAAc;IAC5C,OAAO,KAAK,YAAY,KAAK,CAAA;AAC/B,CAAC;AAFD,0BAEC"}
@@ -21,9 +21,7 @@ const imageService_1 = __importDefault(require("../helpers/imageService"));
21
21
  const lib_1 = require("@dotcom-reliability-kit/log-error/lib");
22
22
  const literal_union_1 = require("../resolvers/literal-union");
23
23
  const scalars_1 = require("../resolvers/scalars");
24
- function isError(error) {
25
- return error instanceof Error;
26
- }
24
+ const isError_1 = __importDefault(require("../helpers/isError"));
27
25
  class CAPIImage {
28
26
  constructor(capiImage, context, leadImage) {
29
27
  this.capiImage = capiImage;
@@ -114,7 +112,7 @@ class CAPIImage {
114
112
  return imageMetadata;
115
113
  }
116
114
  catch (error) {
117
- if (isError(error)) {
115
+ if ((0, isError_1.default)(error)) {
118
116
  (0, lib_1.logRecoverableError)({
119
117
  error,
120
118
  logger: this.context.logger,
@@ -1 +1 @@
1
- {"version":3,"file":"Image.js","sourceRoot":"","sources":["../../src/model/Image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Image.js","sourceRoot":"","sources":["../../src/model/Image.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
+ import { QueryContext } from '../../..';
1
2
  export declare const Flourish: {
2
- fallbackImage(parent: import(".").ReferenceWithCAPIData<import("@financial-times/content-tree").ContentTree.Flourish>, _args: {}, context: import("../../..").QueryContext): Promise<{
3
- type: string;
3
+ fallbackImage(parent: import(".").ReferenceWithCAPIData<import("@financial-times/content-tree").ContentTree.Flourish>, _args: {}, context: QueryContext): Promise<{
4
4
  url: string;
5
- sourceSet: never[];
5
+ type: string;
6
6
  format: string;
7
+ sourceSet: never[];
7
8
  width: number;
8
9
  height: number;
9
10
  }>;
@@ -5,29 +5,54 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Flourish = void 0;
7
7
  const imageService_1 = __importDefault(require("../../../helpers/imageService"));
8
+ const isError_1 = __importDefault(require("../../../helpers/isError"));
9
+ const lib_1 = require("@dotcom-reliability-kit/log-error/lib");
8
10
  exports.Flourish = {
9
11
  async fallbackImage(parent, _args, context) {
10
- const DEFAULT_WIDTH = 2626;
11
- const DEFAULT_HEIGHT = 1459;
12
12
  const type = parent.reference.flourishType;
13
13
  const timestamp = typeof parent.reference.timestamp === 'string'
14
14
  ? parent.reference.timestamp
15
15
  : false;
16
16
  const flourishUrl = `https://public.flourish.studio/${type}/${parent.reference.id}/thumbnail${timestamp ? '?cacheBuster=' + timestamp : ''}`;
17
- const imageMetadata = await context.dataSources.origami.getImageMetadata(flourishUrl);
17
+ const imageMetadata = await getImageMetadata(context, flourishUrl);
18
+ const width = imageMetadata.width;
19
+ const height = imageMetadata.height;
18
20
  const imageServiceWrappedUrl = (0, imageService_1.default)({
19
21
  url: flourishUrl,
20
22
  systemCode: context.systemCode ?? 'cp-content-pipeline',
21
- width: imageMetadata?.width || DEFAULT_WIDTH,
23
+ width,
22
24
  });
23
25
  return {
24
- type: 'image',
25
26
  url: imageServiceWrappedUrl,
26
- sourceSet: [],
27
+ type: 'image',
27
28
  format: 'standard',
28
- width: imageMetadata?.width ? imageMetadata?.width : DEFAULT_WIDTH,
29
- height: imageMetadata?.height ? imageMetadata?.height : DEFAULT_HEIGHT,
29
+ sourceSet: [],
30
+ width,
31
+ height,
30
32
  };
31
33
  },
32
34
  };
35
+ const getImageMetadata = async (context, flourishUrl) => {
36
+ const DEFAULT_WIDTH = 2626;
37
+ const DEFAULT_HEIGHT = 1459;
38
+ try {
39
+ const imageMetadata = await context.dataSources.origami.getImageMetadata(flourishUrl);
40
+ return {
41
+ width: imageMetadata?.width || DEFAULT_WIDTH,
42
+ height: imageMetadata?.height || DEFAULT_HEIGHT,
43
+ };
44
+ }
45
+ catch (error) {
46
+ if ((0, isError_1.default)(error)) {
47
+ (0, lib_1.logRecoverableError)({
48
+ error,
49
+ logger: context.logger,
50
+ });
51
+ }
52
+ return {
53
+ width: DEFAULT_WIDTH,
54
+ height: DEFAULT_HEIGHT,
55
+ };
56
+ }
57
+ };
33
58
  //# sourceMappingURL=Flourish.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Flourish.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/Flourish.ts"],"names":[],"mappings":";;;;;;AAAA,iFAA2D;AAG9C,QAAA,QAAQ,GAAG;IACtB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO;QACxC,MAAM,aAAa,GAAG,IAAI,CAAA;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAA;QAE3B,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;QAC3D,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CACtE,WAAW,CACZ,CAAA;QAED,MAAM,sBAAsB,GAAG,IAAA,sBAAe,EAAC;YAC7C,GAAG,EAAE,WAAW;YAChB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,qBAAqB;YACvD,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,aAAa;SAC7C,CAAC,CAAA;QAEF,OAAO;YACL,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,sBAAsB;YAC3B,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,aAAa;YAClE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc;SACvE,CAAA;IACH,CAAC;CAC0B,CAAA"}
1
+ {"version":3,"file":"Flourish.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/Flourish.ts"],"names":[],"mappings":";;;;;;AAAA,iFAA2D;AAG3D,uEAA8C;AAC9C,+DAA2E;AAE9D,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;CAC0B,CAAA;AAO7B,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,IAAA,yBAAmB,EAAC;gBAClB,KAAK;gBACL,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAA;SACH;QACD,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,cAAc;SACvB,CAAA;KACF;AACH,CAAC,CAAA"}
@@ -6,9 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.RawImage = void 0;
7
7
  const lib_1 = require("@dotcom-reliability-kit/log-error/lib");
8
8
  const imageService_1 = __importDefault(require("../../../helpers/imageService"));
9
- function isError(error) {
10
- return error instanceof Error;
11
- }
9
+ const isError_1 = __importDefault(require("../../../helpers/isError"));
12
10
  class RawImageModel {
13
11
  constructor(rawImage, context) {
14
12
  this.rawImage = rawImage;
@@ -44,7 +42,7 @@ class RawImageModel {
44
42
  return imageMetadata;
45
43
  }
46
44
  catch (error) {
47
- if (isError(error)) {
45
+ if ((0, isError_1.default)(error)) {
48
46
  (0, lib_1.logRecoverableError)({
49
47
  error,
50
48
  logger: this.context.logger,
@@ -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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"}
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.Tweet = void 0;
4
7
  const log_error_1 = require("@dotcom-reliability-kit/log-error");
5
- function isError(error) {
6
- return error instanceof Error;
7
- }
8
+ const isError_1 = __importDefault(require("../../../helpers/isError"));
8
9
  exports.Tweet = {
9
10
  async html(parent, _args, context) {
10
11
  try {
@@ -12,7 +13,7 @@ exports.Tweet = {
12
13
  return tweet.html;
13
14
  }
14
15
  catch (error) {
15
- if (isError(error)) {
16
+ if ((0, isError_1.default)(error)) {
16
17
  (0, log_error_1.logRecoverableError)({
17
18
  error,
18
19
  logger: context.logger,
@@ -1 +1 @@
1
- {"version":3,"file":"Tweet.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/Tweet.ts"],"names":[],"mappings":";;;AAAA,iEAAuE;AAGvE,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,KAAK,YAAY,KAAK,CAAA;AAC/B,CAAC;AAEY,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,OAAO,CAAC,KAAK,CAAC,EAAE;gBAClB,IAAA,+BAAmB,EAAC;oBAClB,KAAK;oBACL,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC,CAAA;aACH;YACD,OAAO,IAAI,CAAA;SACZ;IACH,CAAC;CACuB,CAAA"}
1
+ {"version":3,"file":"Tweet.js","sourceRoot":"","sources":["../../../../src/resolvers/content-tree/references/Tweet.ts"],"names":[],"mappings":";;;;;;AAAA,iEAAuE;AAEvE,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,IAAA,+BAAmB,EAAC;oBAClB,KAAK;oBACL,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC,CAAA;aACH;YACD,OAAO,IAAI,CAAA;SACZ;IACH,CAAC;CACuB,CAAA"}
@@ -21,15 +21,15 @@ const resolvers = {
21
21
  },
22
22
  Mutation: {
23
23
  invalidateRedisCache: async (_, args, context) => {
24
- const response = await context.redisAdapter.delete(args.uuid);
25
- if (response === true) {
24
+ const purged = await context.redisAdapter.delete(`capi:httpcache:https://api.ft.com/internalcontent/${args.uuid}`);
25
+ if (purged) {
26
26
  return `Cache cleared for ${args.uuid}`;
27
27
  }
28
- else if (response === undefined) {
28
+ else if (purged === false) {
29
29
  return `No key '${args.uuid}' found`;
30
30
  }
31
31
  else {
32
- return 'Redis error';
32
+ return 'REDIS_DEL_ERROR';
33
33
  }
34
34
  },
35
35
  },
@@ -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,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAE7D,IAAI,QAAQ,KAAK,IAAI,EAAE;gBACrB,OAAO,qBAAqB,IAAI,CAAC,IAAI,EAAE,CAAA;aACxC;iBAAM,IAAI,QAAQ,KAAK,SAAS,EAAE;gBACjC,OAAO,WAAW,IAAI,CAAC,IAAI,SAAS,CAAA;aACrC;iBAAM;gBACL,OAAO,aAAa,CAAA;aACrB;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;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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@financial-times/cp-content-pipeline-schema",
3
- "version": "0.7.21",
3
+ "version": "0.7.23",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -0,0 +1,3 @@
1
+ export default function isError(error: unknown): error is Error {
2
+ return error instanceof Error
3
+ }
@@ -7,12 +7,12 @@ import type {
7
7
  } from '../types/internal-content'
8
8
  import type { QueryContext } from '..'
9
9
  import { logRecoverableError } from '@dotcom-reliability-kit/log-error/lib'
10
- import { ContentTree } from '@financial-times/content-tree'
11
10
  import {
12
11
  LiteralUnionScalarValues,
13
12
  validLiteralUnionValue,
14
13
  } from '../resolvers/literal-union'
15
14
  import { ImageFormat, ImageType } from '../resolvers/scalars'
15
+ import isError from '../helpers/isError'
16
16
 
17
17
  export type ImageSource = {
18
18
  url: string
@@ -25,10 +25,6 @@ export type ImageSourceArgs = {
25
25
  maxDpr?: number | null
26
26
  }
27
27
 
28
- function isError(error: unknown): error is Error {
29
- return error instanceof Error
30
- }
31
-
32
28
  export interface Image {
33
29
  type(): LiteralUnionScalarValues<typeof ImageType>
34
30
  caption(): string | null
@@ -1,11 +1,11 @@
1
1
  import imageServiceUrl from '../../../helpers/imageService'
2
2
  import { FlourishResolvers } from '../../../generated'
3
+ import { QueryContext } from '../../..'
4
+ import isError from '../../../helpers/isError'
5
+ import { logRecoverableError } from '@dotcom-reliability-kit/log-error/lib'
3
6
 
4
7
  export const Flourish = {
5
8
  async fallbackImage(parent, _args, context) {
6
- const DEFAULT_WIDTH = 2626
7
- const DEFAULT_HEIGHT = 1459
8
-
9
9
  const type = parent.reference.flourishType
10
10
  const timestamp =
11
11
  typeof parent.reference.timestamp === 'string'
@@ -15,23 +15,60 @@ export const Flourish = {
15
15
  const flourishUrl = `https://public.flourish.studio/${type}/${
16
16
  parent.reference.id
17
17
  }/thumbnail${timestamp ? '?cacheBuster=' + timestamp : ''}`
18
- const imageMetadata = await context.dataSources.origami.getImageMetadata(
19
- flourishUrl
20
- )
18
+
19
+ const imageMetadata = await getImageMetadata(context, flourishUrl)
20
+
21
+ const width = imageMetadata.width
22
+ const height = imageMetadata.height
21
23
 
22
24
  const imageServiceWrappedUrl = imageServiceUrl({
23
25
  url: flourishUrl,
24
26
  systemCode: context.systemCode ?? 'cp-content-pipeline',
25
- width: imageMetadata?.width || DEFAULT_WIDTH,
27
+ width,
26
28
  })
27
29
 
28
30
  return {
29
- type: 'image',
30
31
  url: imageServiceWrappedUrl,
31
- sourceSet: [],
32
+ type: 'image',
32
33
  format: 'standard',
33
- width: imageMetadata?.width ? imageMetadata?.width : DEFAULT_WIDTH,
34
- height: imageMetadata?.height ? imageMetadata?.height : DEFAULT_HEIGHT,
34
+ sourceSet: [],
35
+ width,
36
+ height,
35
37
  }
36
38
  },
37
39
  } satisfies FlourishResolvers
40
+
41
+ type ImageMetadata = {
42
+ width: number
43
+ height: number
44
+ }
45
+
46
+ const getImageMetadata = async (
47
+ context: QueryContext,
48
+ flourishUrl: string
49
+ ): Promise<ImageMetadata> => {
50
+ const DEFAULT_WIDTH = 2626
51
+ const DEFAULT_HEIGHT = 1459
52
+
53
+ try {
54
+ const imageMetadata = await context.dataSources.origami.getImageMetadata(
55
+ flourishUrl
56
+ )
57
+
58
+ return {
59
+ width: imageMetadata?.width || DEFAULT_WIDTH,
60
+ height: imageMetadata?.height || DEFAULT_HEIGHT,
61
+ }
62
+ } catch (error) {
63
+ if (isError(error)) {
64
+ logRecoverableError({
65
+ error,
66
+ logger: context.logger,
67
+ })
68
+ }
69
+ return {
70
+ width: DEFAULT_WIDTH,
71
+ height: DEFAULT_HEIGHT,
72
+ }
73
+ }
74
+ }
@@ -4,10 +4,7 @@ import { logRecoverableError } from '@dotcom-reliability-kit/log-error/lib'
4
4
  import imageServiceUrl from '../../../helpers/imageService'
5
5
  import { RawImage as RawImageNode } from '../Workarounds'
6
6
  import { RawImageResolvers } from '../../../generated'
7
-
8
- function isError(error: unknown): error is Error {
9
- return error instanceof Error
10
- }
7
+ import isError from '../../../helpers/isError'
11
8
 
12
9
  class RawImageModel implements Image {
13
10
  constructor(private rawImage: RawImageNode, private context: QueryContext) {}
@@ -1,9 +1,6 @@
1
1
  import { logRecoverableError } from '@dotcom-reliability-kit/log-error'
2
2
  import { TweetResolvers } from '../../../generated'
3
-
4
- function isError(error: unknown): error is Error {
5
- return error instanceof Error
6
- }
3
+ import isError from '../../../helpers/isError'
7
4
 
8
5
  export const Tweet = {
9
6
  async html(parent, _args, context) {
@@ -21,14 +21,16 @@ const resolvers = {
21
21
  },
22
22
  Mutation: {
23
23
  invalidateRedisCache: async (_, args, context) => {
24
- const response = await context.redisAdapter.delete(args.uuid)
24
+ const purged = await context.redisAdapter.delete(
25
+ `capi:httpcache:https://api.ft.com/internalcontent/${args.uuid}`
26
+ )
25
27
 
26
- if (response === true) {
28
+ if (purged) {
27
29
  return `Cache cleared for ${args.uuid}`
28
- } else if (response === undefined) {
30
+ } else if (purged === false) {
29
31
  return `No key '${args.uuid}' found`
30
32
  } else {
31
- return 'Redis error'
33
+ return 'REDIS_DEL_ERROR'
32
34
  }
33
35
  },
34
36
  },