@financial-times/cp-content-pipeline-schema 3.5.0 → 3.5.2

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 (52) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/lib/generated/index.d.ts +4 -21
  3. package/lib/model/FlourishSource.d.ts +12 -5
  4. package/lib/model/FlourishSource.js +32 -28
  5. package/lib/model/FlourishSource.js.map +1 -1
  6. package/lib/model/FlourishSource.test.js +5 -5
  7. package/lib/model/FlourishSource.test.js.map +1 -1
  8. package/lib/model/Image.js +11 -20
  9. package/lib/model/Image.js.map +1 -1
  10. package/lib/model/Image.test.js +24 -54
  11. package/lib/model/Image.test.js.map +1 -1
  12. package/lib/model/LeadFlourish.d.ts +1 -1
  13. package/lib/model/LeadFlourish.js +4 -1
  14. package/lib/model/LeadFlourish.js.map +1 -1
  15. package/lib/model/LeadFlourish.test.js +5 -7
  16. package/lib/model/LeadFlourish.test.js.map +1 -1
  17. package/lib/model/schemas/capi/article.d.ts +3 -3
  18. package/lib/model/schemas/capi/audio.d.ts +5 -5
  19. package/lib/model/schemas/capi/base-schema.d.ts +5 -5
  20. package/lib/model/schemas/capi/base-schema.js +1 -1
  21. package/lib/model/schemas/capi/base-schema.js.map +1 -1
  22. package/lib/model/schemas/capi/content-package.d.ts +3 -3
  23. package/lib/model/schemas/capi/custom-code-component.d.ts +3 -3
  24. package/lib/model/schemas/capi/index.d.ts +20 -20
  25. package/lib/model/schemas/capi/live-blog-package.d.ts +3 -3
  26. package/lib/model/schemas/capi/placeholder.d.ts +3 -3
  27. package/lib/model/schemas/capi/video.d.ts +3 -3
  28. package/lib/resolvers/content-tree/references/Flourish.d.ts +9 -19
  29. package/lib/resolvers/content-tree/references/Flourish.js +10 -32
  30. package/lib/resolvers/content-tree/references/Flourish.js.map +1 -1
  31. package/lib/resolvers/content-tree/references/Flourish.test.js +3 -3
  32. package/lib/resolvers/content-tree/references/Flourish.test.js.map +1 -1
  33. package/lib/resolvers/content-tree/references/index.d.ts +2 -2
  34. package/lib/resolvers/content-tree/references/index.js +1 -1
  35. package/lib/resolvers/content-tree/references/index.js.map +1 -1
  36. package/lib/resolvers/index.d.ts +1 -2
  37. package/lib/resolvers/leadFlourish.d.ts +1 -1
  38. package/package.json +1 -1
  39. package/src/generated/index.ts +4 -23
  40. package/src/model/FlourishSource.test.ts +5 -5
  41. package/src/model/FlourishSource.ts +57 -39
  42. package/src/model/Image.test.ts +37 -60
  43. package/src/model/Image.ts +14 -22
  44. package/src/model/LeadFlourish.test.ts +6 -9
  45. package/src/model/LeadFlourish.ts +5 -1
  46. package/src/model/schemas/capi/base-schema.ts +1 -1
  47. package/src/resolvers/content-tree/references/Flourish.test.ts +4 -3
  48. package/src/resolvers/content-tree/references/Flourish.ts +16 -32
  49. package/src/resolvers/content-tree/references/index.ts +4 -4
  50. package/tsconfig.tsbuildinfo +1 -1
  51. package/typedefs/leadFlourish.graphql +1 -1
  52. package/typedefs/references/flourish.graphql +1 -11
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.5.2](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v3.5.1...cp-content-pipeline-schema-v3.5.2) (2024-10-30)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * don't call image service for any images with missing dimensions ([b3bab4b](https://github.com/Financial-Times/cp-content-pipeline/commit/b3bab4b7c30098e83bc5e1e99a953b741b3a46b6))
9
+ * set max image DPR to 2 when no dimensions ([d556e0b](https://github.com/Financial-Times/cp-content-pipeline/commit/d556e0bd6862c23f3279db717b2cab1617e98c0f))
10
+
11
+ ## [3.5.1](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v3.5.0...cp-content-pipeline-schema-v3.5.1) (2024-10-29)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * call image service once for FlourishSource ([1eb9122](https://github.com/Financial-Times/cp-content-pipeline/commit/1eb9122283d52968ce2baf2766d3180dd6927220))
17
+ * dataSource.filesize is optional ([bc3fba5](https://github.com/Financial-Times/cp-content-pipeline/commit/bc3fba574e551bf81a7864799691618321fe1366))
18
+ * don't call image service for graphics ([64064a0](https://github.com/Financial-Times/cp-content-pipeline/commit/64064a0999512d86d43eed3ff080ce4be446f76a))
19
+ * make LeadFlourish.fallbackImage nullable ([6ff7c96](https://github.com/Financial-Times/cp-content-pipeline/commit/6ff7c96d8d9873f8758c68b2a9094189d5ecb6d2))
20
+
3
21
  ## [3.5.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v3.4.0...cp-content-pipeline-schema-v3.5.0) (2024-10-24)
4
22
 
5
23
 
@@ -708,18 +708,10 @@ export type Design = {
708
708
  };
709
709
  export type Flourish = Reference & {
710
710
  /** The fallback image to be used if the flourish graphics cannot be loaded. */
711
- readonly fallbackImage?: Maybe<FlourishFallback>;
711
+ readonly fallbackImage?: Maybe<FlourishSource>;
712
712
  /** The type of the reference, eg. 'flourish'. */
713
713
  readonly type: Scalars['String']['output'];
714
714
  };
715
- export type FlourishFallback = {
716
- /** The height in pixels of the fallback image. */
717
- readonly height?: Maybe<Scalars['Int']['output']>;
718
- /** The url of the fallback image. */
719
- readonly url?: Maybe<Scalars['String']['output']>;
720
- /** The width in pixels of the fallback image. */
721
- readonly width?: Maybe<Scalars['Int']['output']>;
722
- };
723
715
  export type FlourishSource = {
724
716
  /** The format of the source, eg. 'standard'. */
725
717
  readonly format: Scalars['ImageFormat']['output'];
@@ -1051,7 +1043,7 @@ export type LayoutImage = Reference & {
1051
1043
  export type LeadFlourish = {
1052
1044
  /** The description of the Flourish chart. */
1053
1045
  readonly description?: Maybe<Scalars['String']['output']>;
1054
- readonly fallbackImage: FlourishSource;
1046
+ readonly fallbackImage?: Maybe<FlourishSource>;
1055
1047
  /** The id of the Flourish chart. */
1056
1048
  readonly id?: Maybe<Scalars['String']['output']>;
1057
1049
  /** The type of the chart, eg. 'visualisation'. */
@@ -1881,7 +1873,6 @@ export type ResolversTypes = ResolversObject<{
1881
1873
  Design: ResolverTypeWrapper<Design>;
1882
1874
  Float: ResolverTypeWrapper<Scalars['Float']['output']>;
1883
1875
  Flourish: ResolverTypeWrapper<ReferenceWithCAPIData<ContentTree.Flourish>>;
1884
- FlourishFallback: ResolverTypeWrapper<FlourishFallback>;
1885
1876
  FlourishSource: ResolverTypeWrapper<FlourishSourceModel>;
1886
1877
  FollowButtonVariant: ResolverTypeWrapper<Scalars['FollowButtonVariant']['output']>;
1887
1878
  FullBleedTopper: ResolverTypeWrapper<TopperModel>;
@@ -1990,7 +1981,6 @@ export type ResolversParentTypes = ResolversObject<{
1990
1981
  Design: Design;
1991
1982
  Float: Scalars['Float']['output'];
1992
1983
  Flourish: ReferenceWithCAPIData<ContentTree.Flourish>;
1993
- FlourishFallback: FlourishFallback;
1994
1984
  FlourishSource: FlourishSourceModel;
1995
1985
  FollowButtonVariant: Scalars['FollowButtonVariant']['output'];
1996
1986
  FullBleedTopper: TopperModel;
@@ -2379,16 +2369,10 @@ export type DesignResolvers<ContextType = QueryContext, ParentType extends Resol
2379
2369
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2380
2370
  }>;
2381
2371
  export type FlourishResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Flourish'] = ResolversParentTypes['Flourish']> = ResolversObject<{
2382
- fallbackImage: Resolver<Maybe<ResolversTypes['FlourishFallback']>, ParentType, ContextType>;
2372
+ fallbackImage: Resolver<Maybe<ResolversTypes['FlourishSource']>, ParentType, ContextType>;
2383
2373
  type: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2384
2374
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2385
2375
  }>;
2386
- export type FlourishFallbackResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['FlourishFallback'] = ResolversParentTypes['FlourishFallback']> = ResolversObject<{
2387
- height: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2388
- url: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2389
- width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2390
- __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2391
- }>;
2392
2376
  export type FlourishSourceResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['FlourishSource'] = ResolversParentTypes['FlourishSource']> = ResolversObject<{
2393
2377
  format: Resolver<ResolversTypes['ImageFormat'], ParentType, ContextType>;
2394
2378
  height: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
@@ -2582,7 +2566,7 @@ export type LayoutImageResolvers<ContextType = QueryContext, ParentType extends
2582
2566
  }>;
2583
2567
  export type LeadFlourishResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['LeadFlourish'] = ResolversParentTypes['LeadFlourish']> = ResolversObject<{
2584
2568
  description: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2585
- fallbackImage: Resolver<ResolversTypes['FlourishSource'], ParentType, ContextType>;
2569
+ fallbackImage: Resolver<Maybe<ResolversTypes['FlourishSource']>, ParentType, ContextType>;
2586
2570
  id: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2587
2571
  type: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2588
2572
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
@@ -3029,7 +3013,6 @@ export type Resolvers<ContextType = QueryContext> = ResolversObject<{
3029
3013
  DeepPortraitTopper: DeepPortraitTopperResolvers<ContextType>;
3030
3014
  Design: DesignResolvers<ContextType>;
3031
3015
  Flourish: FlourishResolvers<ContextType>;
3032
- FlourishFallback: FlourishFallbackResolvers<ContextType>;
3033
3016
  FlourishSource: FlourishSourceResolvers<ContextType>;
3034
3017
  FollowButtonVariant: GraphQLScalarType;
3035
3018
  FullBleedTopper: FullBleedTopperResolvers<ContextType>;
@@ -3,20 +3,27 @@ type FlourishData = {
3
3
  id: string;
4
4
  type?: string;
5
5
  description?: string;
6
- } | null | undefined;
6
+ width?: number;
7
+ height?: number;
8
+ };
7
9
  export declare class FlourishSource {
8
10
  #private;
9
11
  private flourishData;
10
12
  private context;
11
13
  private imageMetadata?;
14
+ static createWithMetadata(data: FlourishData, context: QueryContext): Promise<FlourishSource>;
12
15
  constructor(flourishData: FlourishData, context: QueryContext);
13
16
  id(): string;
14
17
  type(): string;
15
18
  format(): "standard";
16
19
  flourishUrl(): string;
17
- private getImageMetadata;
18
- width(): Promise<number>;
19
- height(): Promise<number>;
20
- url(): Promise<string>;
20
+ private static fallbackUrl;
21
+ static getImageMetadata(data: FlourishData, context: QueryContext): Promise<{
22
+ width: number;
23
+ height: number;
24
+ }>;
25
+ width(): number;
26
+ height(): number;
27
+ url(): string;
21
28
  }
22
29
  export {};
@@ -7,77 +7,81 @@ exports.FlourishSource = void 0;
7
7
  const imageService_1 = __importDefault(require("../helpers/imageService"));
8
8
  const isError_1 = __importDefault(require("../helpers/isError"));
9
9
  const errors_1 = require("@dotcom-reliability-kit/errors");
10
+ const DEFAULT_WIDTH = 2626;
11
+ const DEFAULT_HEIGHT = 1459;
10
12
  class FlourishSource {
11
13
  flourishData;
12
14
  context;
13
15
  #systemCode;
14
16
  imageMetadata;
17
+ static async createWithMetadata(data, context) {
18
+ const { width, height } = await FlourishSource.getImageMetadata(data, context);
19
+ return new FlourishSource({
20
+ ...data,
21
+ width,
22
+ height,
23
+ }, context);
24
+ }
15
25
  constructor(flourishData, context) {
16
26
  this.flourishData = flourishData;
17
27
  this.context = context;
18
28
  this.#systemCode = context.systemCode ?? 'cp-content-pipeline';
19
29
  }
20
30
  id() {
21
- return this.flourishData?.id || '';
31
+ return this.flourishData.id;
22
32
  }
23
33
  type() {
24
- return this.flourishData?.type || 'flourish';
34
+ return this.flourishData.type ?? 'flourish';
25
35
  }
26
36
  format() {
27
37
  return 'standard';
28
38
  }
29
39
  flourishUrl() {
30
- // Timestamp rounded to the nearest 5 minutes to bust the cache every five minutes
31
- const cacheBusterTimestamp = Math.floor(Date.now() / (5 * 60 * 1000));
32
- return `https://public.flourish.studio/${this.type()}/${this.id()}/thumbnail?cacheBuster=${cacheBusterTimestamp}`;
40
+ return FlourishSource.fallbackUrl(this.flourishData);
33
41
  }
34
- async getImageMetadata() {
35
- const DEFAULT_WIDTH = 2626;
36
- const DEFAULT_HEIGHT = 1459;
37
- if (this.imageMetadata) {
38
- return this.imageMetadata;
39
- }
42
+ static fallbackUrl(data) {
43
+ // Timestamp rounded to the nearest 30 minutes to bust the cache every half an hour
44
+ const cacheBusterTimestamp = Math.floor(Date.now() / (30 * 60 * 1000));
45
+ return `https://public.flourish.studio/${data.type ?? 'flourish'}/${data.id}/thumbnail?cacheBuster=${cacheBusterTimestamp}`;
46
+ }
47
+ static async getImageMetadata(data, context) {
48
+ const url = FlourishSource.fallbackUrl(data);
40
49
  try {
41
- const metadata = await this.context.dataSources.origami.getImageMetadata(this.flourishUrl());
42
- this.imageMetadata = {
50
+ const metadata = await context.dataSources.origami.getImageMetadata(url);
51
+ return {
43
52
  width: metadata?.width || DEFAULT_WIDTH,
44
53
  height: metadata?.height || DEFAULT_HEIGHT,
45
54
  };
46
55
  }
47
56
  catch (error) {
48
57
  if ((0, isError_1.default)(error)) {
49
- this.context.logger.warn({
58
+ context.logger.warn({
50
59
  event: 'RECOVERABLE_ERROR',
51
60
  error: new errors_1.OperationalError({
52
61
  code: 'FLOURISH_IMAGE_METADATA_ERROR',
53
- message: `Error getting image dimensions for Flourish fallback image ${this.flourishUrl()}`,
62
+ message: `Error getting image dimensions for Flourish fallback image ${url}`,
54
63
  cause: error,
55
64
  }),
56
65
  });
57
66
  }
58
- this.imageMetadata = {
67
+ return {
59
68
  width: DEFAULT_WIDTH,
60
69
  height: DEFAULT_HEIGHT,
61
70
  };
62
71
  }
63
- return this.imageMetadata;
64
72
  }
65
- async width() {
66
- const imageMetadata = await this.getImageMetadata();
67
- return imageMetadata.width;
73
+ width() {
74
+ return this.flourishData.width ?? DEFAULT_WIDTH;
68
75
  }
69
- async height() {
70
- const imageMetadata = await this.getImageMetadata();
71
- return imageMetadata.height;
76
+ height() {
77
+ return this.flourishData.height ?? DEFAULT_HEIGHT;
72
78
  }
73
- async url() {
74
- const width = await this.width();
75
- const imageServiceWrappedUrl = (0, imageService_1.default)({
79
+ url() {
80
+ return (0, imageService_1.default)({
76
81
  url: this.flourishUrl(),
77
82
  systemCode: 'cp-content-pipeline',
78
- width,
83
+ width: this.width(),
79
84
  });
80
- return imageServiceWrappedUrl;
81
85
  }
82
86
  }
83
87
  exports.FlourishSource = FlourishSource;
@@ -1 +1 @@
1
- {"version":3,"file":"FlourishSource.js","sourceRoot":"","sources":["../../src/model/FlourishSource.ts"],"names":[],"mappings":";;;;;;AAAA,2EAAqD;AACrD,iEAAwC;AACxC,2DAAiE;AAiBjE,MAAa,cAAc;IAKf;IACA;IALV,WAAW,CAAQ;IACX,aAAa,CAAgB;IAErC,YACU,YAA0B,EAC1B,OAAqB;QADrB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,YAAO,GAAP,OAAO,CAAc;QAE7B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,qBAAqB,CAAA;IAChE,CAAC;IAED,EAAE;QACA,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAA;IACpC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,UAAU,CAAA;IAC9C,CAAC;IAED,MAAM;QACJ,OAAO,UAAmB,CAAA;IAC5B,CAAC;IAED,WAAW;QACT,kFAAkF;QAClF,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;QAErE,OAAO,kCAAkC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,0BAA0B,oBAAoB,EAAE,CAAA;IACnH,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAA;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAA;QAE3B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,aAAa,CAAA;QAC3B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CACtE,IAAI,CAAC,WAAW,EAAE,CACnB,CAAA;YACD,IAAI,CAAC,aAAa,GAAG;gBACnB,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,aAAa;gBACvC,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,cAAc;aAC3C,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAA,iBAAO,EAAC,KAAK,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;oBACvB,KAAK,EAAE,mBAAmB;oBAC1B,KAAK,EAAE,IAAI,yBAAgB,CAAC;wBAC1B,IAAI,EAAE,+BAA+B;wBACrC,OAAO,EAAE,8DAA8D,IAAI,CAAC,WAAW,EAAE,EAAE;wBAC3F,KAAK,EAAE,KAAK;qBACb,CAAC;iBACH,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,CAAC,aAAa,GAAG;gBACnB,KAAK,EAAE,aAAa;gBACpB,MAAM,EAAE,cAAc;aACvB,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IACD,KAAK,CAAC,KAAK;QACT,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACnD,OAAO,aAAa,CAAC,KAAK,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACnD,OAAO,aAAa,CAAC,MAAM,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAChC,MAAM,sBAAsB,GAAG,IAAA,sBAAe,EAAC;YAC7C,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE;YACvB,UAAU,EAAE,qBAAqB;YACjC,KAAK;SACN,CAAC,CAAA;QACF,OAAO,sBAAsB,CAAA;IAC/B,CAAC;CACF;AAnFD,wCAmFC"}
1
+ {"version":3,"file":"FlourishSource.js","sourceRoot":"","sources":["../../src/model/FlourishSource.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ describe('FlourishSource', () => {
35
35
  expect(flourishSource.format()).toBe('standard');
36
36
  });
37
37
  it('should return the correct flourishUrl', () => {
38
- expect(flourishSource.flourishUrl()).toBe('https://public.flourish.studio/test-type/1234/thumbnail?cacheBuster=5717196');
38
+ expect(flourishSource.flourishUrl()).toBe('https://public.flourish.studio/test-type/1234/thumbnail?cacheBuster=952866');
39
39
  });
40
40
  it('should return the correct width', async () => {
41
41
  const width = await flourishSource.width();
@@ -52,15 +52,15 @@ describe('FlourishSource', () => {
52
52
  const flourishImageUrlRegex = new RegExp(/https:\/\/public.flourish.studio\/.*\/.*\/thumbnail/);
53
53
  expect(decodeURIComponent(url)).toMatch(flourishImageUrlRegex);
54
54
  });
55
- it('should bust the cache of the fallback image every five minutes', async () => {
56
- const oldCacheBuster = '5717196';
57
- const newCacheBuster = '5717197';
55
+ it('should bust the cache of the fallback image every thirty minutes', async () => {
56
+ const oldCacheBuster = '952866';
57
+ const newCacheBuster = '952867';
58
58
  expect(flourishSource.flourishUrl()).toBe(`https://public.flourish.studio/test-type/1234/thumbnail?cacheBuster=${oldCacheBuster}`);
59
59
  let newFlourishSource = new FlourishSource_1.FlourishSource(mockFlourishData, context);
60
60
  jest.spyOn(Date, 'now').mockImplementation(() => 1715159040000); // 8 May 2024 09:04:00
61
61
  expect(newFlourishSource.flourishUrl()).toBe(`https://public.flourish.studio/test-type/1234/thumbnail?cacheBuster=${oldCacheBuster}`);
62
62
  newFlourishSource = new FlourishSource_1.FlourishSource(mockFlourishData, context);
63
- jest.spyOn(Date, 'now').mockImplementation(() => 1715159100000); // 8 May 2024 09:05:00
63
+ jest.spyOn(Date, 'now').mockImplementation(() => 1715160840000); // 8 May 2024 09:34:00
64
64
  expect(newFlourishSource.flourishUrl()).toBe(`https://public.flourish.studio/test-type/1234/thumbnail?cacheBuster=${newCacheBuster}`);
65
65
  });
66
66
  });
@@ -1 +1 @@
1
- {"version":3,"file":"FlourishSource.test.js","sourceRoot":"","sources":["../../src/model/FlourishSource.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FlourishSource.test.js","sourceRoot":"","sources":["../../src/model/FlourishSource.test.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,6 @@ const metadata_1 = require("../helpers/metadata");
8
8
  const imageService_1 = __importDefault(require("../helpers/imageService"));
9
9
  const literal_union_1 = require("../resolvers/literal-union");
10
10
  const scalars_1 = require("../resolvers/scalars");
11
- const isError_1 = __importDefault(require("../helpers/isError"));
12
11
  const errors_1 = require("@dotcom-reliability-kit/errors");
13
12
  class CAPIImage {
14
13
  capiImage;
@@ -84,7 +83,7 @@ class CAPIImage {
84
83
  maxAllowedWidth = Math.min(requestedWidth, dimensions?.width || Infinity);
85
84
  maxDpr = dimensions
86
85
  ? Math.min(args.maxDpr || Infinity, Math.floor(dimensions.width / maxAllowedWidth))
87
- : 1;
86
+ : 2;
88
87
  const resolutions = [...Array(maxDpr + 1).keys()].slice(1);
89
88
  return resolutions.map((dpr) => ({
90
89
  url: (0, imageService_1.default)({
@@ -111,24 +110,16 @@ class CAPIImage {
111
110
  height: this.capiImage.pixelHeight,
112
111
  };
113
112
  }
114
- try {
115
- const imageMetadata = await this.#dataSources.origami.getImageMetadata(this.capiImage.binaryUrl);
116
- return imageMetadata;
117
- }
118
- catch (error) {
119
- if ((0, isError_1.default)(error)) {
120
- this.context.logger.warn({
121
- event: 'RECOVERABLE_ERROR',
122
- error: new errors_1.OperationalError({
123
- code: 'IMAGE_DIMENSIONS_ERROR',
124
- message: `Failed to get dimensions for ${this.capiImage.binaryUrl}`,
125
- url: this.capiImage.binaryUrl,
126
- cause: error,
127
- }),
128
- });
129
- }
130
- return null;
131
- }
113
+ // HACK:KB:20241029 graphics and images in layouts don't have pixelWidth/
114
+ // pixelHeight because of reasons. we want to avoid calling Image Service
115
+ // to improve performance. skip calling Image Service for the time being
116
+ this.context.logger.warn({
117
+ event: 'SKIPPING_IMAGE_DIMENSIONS',
118
+ message: 'Not calling Image Service to get graphics dimensions',
119
+ url: this.capiImage.binaryUrl,
120
+ type: this.type(),
121
+ });
122
+ return null;
132
123
  }
133
124
  credit() {
134
125
  return this.capiImage.copyright?.notice ?? null;
@@ -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,7 +1,10 @@
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
  const Image_1 = require("./Image");
4
- const globals_1 = require("@jest/globals");
7
+ const logger_1 = __importDefault(require("@dotcom-reliability-kit/logger"));
5
8
  const imageService_1 = require("../helpers/imageService");
6
9
  describe('Image', () => {
7
10
  const mockImage = {
@@ -10,40 +13,32 @@ describe('Image', () => {
10
13
  title: 'title',
11
14
  description: 'description',
12
15
  binaryUrl: 'cloudfront.com/image',
16
+ pixelWidth: 5000,
17
+ pixelHeight: 1000,
13
18
  };
14
19
  const graphic = {
15
20
  ...mockImage,
16
21
  type: 'http://www.ft.com/ontology/content/Graphic',
17
22
  };
18
- const getImageMetadata = globals_1.jest.fn();
19
23
  const context = {
20
- dataSources: {
21
- origami: {
22
- getImageMetadata,
23
- },
24
- capi: {},
25
- vanityUrls: {},
26
- },
24
+ logger: logger_1.default,
27
25
  systemCode: 'image-test',
28
26
  };
29
- beforeEach(() => {
30
- getImageMetadata.mockReset();
31
- });
32
27
  describe('sourceSet', () => {
33
28
  describe('An image that is provided with a high resolution', () => {
34
- let sourceSet;
35
- beforeAll(async () => {
36
- getImageMetadata.mockResolvedValue({ width: 5000, height: 1000 });
29
+ it('transforms the URL to use the Origami Image Service', async () => {
37
30
  const model = new Image_1.CAPIImage(mockImage, context);
38
- sourceSet = await model.sourceSet({ width: 1000 });
39
- });
40
- it('transforms the URL to use the Origami Image Service', () => {
31
+ const sourceSet = await model.sourceSet({ width: 1000 });
41
32
  expect(sourceSet.every((source) => source.url.startsWith('https://www.ft.com/__origami/service/image/v2'))).toBeTruthy();
42
33
  });
43
- it('resizes the image to the requested width', () => {
34
+ it('resizes the image to the requested width', async () => {
35
+ const model = new Image_1.CAPIImage(mockImage, context);
36
+ const sourceSet = await model.sourceSet({ width: 1000 });
44
37
  expect(sourceSet.every((source) => source.width === 1000 && source.url.includes('width=1000'))).toBeTruthy();
45
38
  });
46
- it('includes sourceSet for all the possible resolutions we can display the image at, given the requested width and the original source width', () => {
39
+ it('includes sourceSet for all the possible resolutions we can display the image at, given the requested width and the original source width', async () => {
40
+ const model = new Image_1.CAPIImage(mockImage, context);
41
+ const sourceSet = await model.sourceSet({ width: 1000 });
47
42
  expect(sourceSet.length).toEqual(5);
48
43
  expect(sourceSet[0]?.dpr).toEqual(1);
49
44
  expect(sourceSet[0]?.url).toMatch(/dpr=1/);
@@ -53,8 +48,7 @@ describe('Image', () => {
53
48
  });
54
49
  describe("An image that that isn't wide enough to generate high-resolution sourceSet for", () => {
55
50
  it('returns an array with a single resolution iamge service UR', async () => {
56
- getImageMetadata.mockResolvedValue({ width: 1500, height: 500 });
57
- const model = new Image_1.CAPIImage(mockImage, context);
51
+ const model = new Image_1.CAPIImage({ ...mockImage, pixelWidth: 1500, pixelHeight: 500 }, context);
58
52
  const sourceSet = await model.sourceSet({ width: 1000 });
59
53
  expect(sourceSet.length).toEqual(1);
60
54
  expect(sourceSet[0]).toEqual({
@@ -66,8 +60,7 @@ describe('Image', () => {
66
60
  });
67
61
  describe('An image that that is smaller than the width that was requested', () => {
68
62
  it('returns the image at the same width as the original', async () => {
69
- getImageMetadata.mockResolvedValue({ width: 500, height: 500 });
70
- const model = new Image_1.CAPIImage(mockImage, context);
63
+ const model = new Image_1.CAPIImage({ ...mockImage, pixelWidth: 500, pixelHeight: 500 }, context);
71
64
  const sourceSet = await model.sourceSet({ width: 1000 });
72
65
  expect(sourceSet.length).toEqual(1);
73
66
  expect(sourceSet[0]).toEqual({
@@ -79,8 +72,7 @@ describe('Image', () => {
79
72
  });
80
73
  describe('An image that that is bigger than the maximum width that was requested', () => {
81
74
  it('returns the image at the same width as the maximum width', async () => {
82
- getImageMetadata.mockResolvedValue({ width: 4000, height: 4000 });
83
- const model = new Image_1.CAPIImage(mockImage, context);
75
+ const model = new Image_1.CAPIImage({ ...mockImage, pixelWidth: 4000, pixelHeight: 4000 }, context);
84
76
  const sourceSet = await model.sourceSet({ width: imageService_1.MAX_IMAGE_WIDTH });
85
77
  expect(sourceSet.length).toEqual(1);
86
78
  expect(sourceSet[0]?.width).toEqual(imageService_1.MAX_IMAGE_WIDTH);
@@ -88,8 +80,7 @@ describe('Image', () => {
88
80
  });
89
81
  describe('A large image with the maxDpr argumet passed', () => {
90
82
  it('only returns sourceSet up to and including the maxDpr', async () => {
91
- getImageMetadata.mockResolvedValue({ width: 5000, height: 500 });
92
- const model = new Image_1.CAPIImage(mockImage, context);
83
+ const model = new Image_1.CAPIImage({ ...mockImage, pixelWidth: 5000, pixelHeight: 500 }, context);
93
84
  const sourceSet = await model.sourceSet({ width: 1000, maxDpr: 2 });
94
85
  expect(sourceSet.length).toEqual(2);
95
86
  expect(sourceSet[0]?.dpr).toEqual(1);
@@ -107,25 +98,6 @@ describe('Image', () => {
107
98
  };
108
99
  const model = new Image_1.CAPIImage(invalidImage, context);
109
100
  await expect(model.sourceSet({ width: 1000, maxDpr: 2 })).rejects.toThrow('not-a-uuid is not a valid Content API Image ID');
110
- expect(getImageMetadata).not.toHaveBeenCalled();
111
- });
112
- });
113
- describe('When the image service fails to return metadata', () => {
114
- let sourceSet;
115
- beforeEach(async () => {
116
- getImageMetadata.mockRejectedValue(null);
117
- const model = new Image_1.CAPIImage(mockImage, context);
118
- sourceSet = await model.sourceSet({ width: 3000 });
119
- });
120
- it('passes the requested width to the image service', async () => {
121
- expect(sourceSet.length).toEqual(1);
122
- expect(sourceSet[0]?.width).toEqual(3000);
123
- expect(sourceSet[0]?.url).toMatch(/width=3000/);
124
- });
125
- it('falls back to a single DPR source', async () => {
126
- expect(sourceSet.length).toEqual(1);
127
- expect(sourceSet[0]?.dpr).toEqual(1);
128
- expect(sourceSet[0]?.url).toMatch(/dpr=1/);
129
101
  });
130
102
  });
131
103
  });
@@ -173,16 +145,14 @@ describe('Image', () => {
173
145
  });
174
146
  });
175
147
  describe('width/height', () => {
176
- it('returns the original width and height from the image service metadata', async () => {
177
- getImageMetadata.mockResolvedValue({ width: 100, height: 200 });
148
+ it('returns the original width and height from capi data', async () => {
178
149
  const model = new Image_1.CAPIImage(mockImage, context);
179
150
  const { width, height } = (await model.dimensions()) || {};
180
- expect(width).toEqual(100);
181
- expect(height).toEqual(200);
151
+ expect(width).toEqual(5000);
152
+ expect(height).toEqual(1000);
182
153
  });
183
- it('returns null if the image service metadata call fails', async () => {
184
- getImageMetadata.mockRejectedValue(null);
185
- const model = new Image_1.CAPIImage(mockImage, context);
154
+ it('returns null if no width and height in capi data', async () => {
155
+ const model = new Image_1.CAPIImage({ ...mockImage, pixelHeight: undefined, pixelWidth: undefined }, context);
186
156
  const dimensions = await model.dimensions();
187
157
  expect(dimensions).toEqual(null);
188
158
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Image.test.js","sourceRoot":"","sources":["../../src/model/Image.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Image.test.js","sourceRoot":"","sources":["../../src/model/Image.test.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export declare class LeadFlourish {
6
6
  private capiResponse;
7
7
  private context;
8
8
  constructor(capiResponse: CapiResponse, context: QueryContext);
9
- fallbackImage(): Promise<FlourishSource>;
9
+ fallbackImage(): Promise<FlourishSource | null>;
10
10
  id(): string | null;
11
11
  type(): string;
12
12
  description(): string;
@@ -13,7 +13,10 @@ class LeadFlourish {
13
13
  }
14
14
  async fallbackImage() {
15
15
  const flourishData = this.capiResponse.leadFlourish();
16
- return new FlourishSource_1.FlourishSource(flourishData, this.context);
16
+ if (!flourishData) {
17
+ return null;
18
+ }
19
+ return FlourishSource_1.FlourishSource.createWithMetadata(flourishData, this.context);
17
20
  }
18
21
  id() {
19
22
  return this.capiResponse.leadFlourish()?.id || null;
@@ -1 +1 @@
1
- {"version":3,"file":"LeadFlourish.js","sourceRoot":"","sources":["../../src/model/LeadFlourish.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AAEjD,MAAa,YAAY;IAGb;IACA;IAHV,WAAW,CAAQ;IACnB,YACU,YAA0B,EAC1B,OAAqB;QADrB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,YAAO,GAAP,OAAO,CAAc;QAE7B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,qBAAqB,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAA;QACrD,OAAO,IAAI,+BAAc,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IACvD,CAAC;IAED,EAAE;QACA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,IAAI,CAAA;IACrD,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,IAAI,IAAI,eAAe,CAAA;IAClE,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,WAAW,IAAI,EAAE,CAAA;IAC5D,CAAC;CACF;AAzBD,oCAyBC"}
1
+ {"version":3,"file":"LeadFlourish.js","sourceRoot":"","sources":["../../src/model/LeadFlourish.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AAEjD,MAAa,YAAY;IAGb;IACA;IAHV,WAAW,CAAQ;IACnB,YACU,YAA0B,EAC1B,OAAqB;QADrB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,YAAO,GAAP,OAAO,CAAc;QAE7B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,qBAAqB,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAA;QACrD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,+BAAc,CAAC,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IACtE,CAAC;IAED,EAAE;QACA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,IAAI,CAAA;IACrD,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,IAAI,IAAI,eAAe,CAAA;IAClE,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,WAAW,IAAI,EAAE,CAAA;IAC5D,CAAC;CACF;AA7BD,oCA6BC"}