@financial-times/cp-content-pipeline-schema 3.1.1 → 3.2.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 (35) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/lib/generated/index.d.ts +9 -0
  3. package/lib/model/CapiResponse.d.ts +2 -1
  4. package/lib/model/CapiResponse.js +9 -4
  5. package/lib/model/CapiResponse.js.map +1 -1
  6. package/lib/model/CapiResponse.test.js +20 -0
  7. package/lib/model/CapiResponse.test.js.map +1 -1
  8. package/lib/model/schemas/capi/article.d.ts +5 -1
  9. package/lib/model/schemas/capi/article.js +1 -0
  10. package/lib/model/schemas/capi/article.js.map +1 -1
  11. package/lib/model/schemas/capi/audio.d.ts +2 -0
  12. package/lib/model/schemas/capi/base-schema.d.ts +5 -0
  13. package/lib/model/schemas/capi/base-schema.js +1 -0
  14. package/lib/model/schemas/capi/base-schema.js.map +1 -1
  15. package/lib/model/schemas/capi/content-package.d.ts +2 -0
  16. package/lib/model/schemas/capi/custom-code-component.d.ts +3 -0
  17. package/lib/model/schemas/capi/index.d.ts +13 -0
  18. package/lib/model/schemas/capi/list.d.ts +2 -2
  19. package/lib/model/schemas/capi/live-blog-package.d.ts +2 -0
  20. package/lib/model/schemas/capi/placeholder.d.ts +2 -0
  21. package/lib/model/schemas/capi/video.d.ts +2 -0
  22. package/lib/resolvers/content.d.ts +5 -0
  23. package/lib/resolvers/content.js +7 -0
  24. package/lib/resolvers/content.js.map +1 -1
  25. package/lib/resolvers/index.d.ts +5 -0
  26. package/package.json +1 -1
  27. package/queries/article.graphql +4 -0
  28. package/src/generated/index.ts +9 -0
  29. package/src/model/CapiResponse.test.ts +23 -0
  30. package/src/model/CapiResponse.ts +12 -4
  31. package/src/model/schemas/capi/article.ts +1 -0
  32. package/src/model/schemas/capi/base-schema.ts +1 -0
  33. package/src/resolvers/content.ts +7 -0
  34. package/tsconfig.tsbuildinfo +1 -1
  35. package/typedefs/content.graphql +9 -0
@@ -155,6 +155,7 @@ export declare const placeholderSchema: import("zod").ZodObject<import("zod").ob
155
155
  labelType: string;
156
156
  sequence: string;
157
157
  }>>;
158
+ publication: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
158
159
  }, "id" | "type" | "types" | "publishedDate" | "annotations" | "webUrl" | "canonicalWebUrl" | "standout" | "firstPublishedDate" | "publishReference" | "lastModified" | "editorialDesk" | "accessLevel" | "canBeSyndicated" | "canBeDistributed" | "topper" | "comments" | "containedIn">>, Pick<{
159
160
  mainImage: import("zod").ZodOptional<import("zod").ZodDiscriminatedUnion<"type", [import("zod").ZodObject<{
160
161
  id: import("zod").ZodString;
@@ -1411,6 +1412,7 @@ export declare const placeholderSchema: import("zod").ZodObject<import("zod").ob
1411
1412
  labelType: string;
1412
1413
  sequence: string;
1413
1414
  }>>;
1415
+ publication: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
1414
1416
  }, "id" | "publishedDate" | "canonicalWebUrl" | "firstPublishedDate" | "publishReference" | "canBeSyndicated" | "canBeDistributed">, Pick<{
1415
1417
  title: import("zod").ZodString;
1416
1418
  standfirst: import("zod").ZodOptional<import("zod").ZodString>;
@@ -155,6 +155,7 @@ export declare const videoSchema: import("zod").ZodObject<import("zod").objectUt
155
155
  labelType: string;
156
156
  sequence: string;
157
157
  }>>;
158
+ publication: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
158
159
  }, "id" | "types" | "publishedDate" | "annotations" | "webUrl" | "canonicalWebUrl" | "firstPublishedDate" | "publishReference" | "lastModified" | "editorialDesk" | "accessLevel" | "canBeSyndicated" | "canBeDistributed">>, Pick<{
159
160
  mainImage: import("zod").ZodOptional<import("zod").ZodDiscriminatedUnion<"type", [import("zod").ZodObject<{
160
161
  id: import("zod").ZodString;
@@ -1411,6 +1412,7 @@ export declare const videoSchema: import("zod").ZodObject<import("zod").objectUt
1411
1412
  labelType: string;
1412
1413
  sequence: string;
1413
1414
  }>>;
1415
+ publication: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
1414
1416
  }, "id" | "publishedDate" | "canonicalWebUrl" | "firstPublishedDate" | "publishReference" | "canBeSyndicated" | "canBeDistributed">, Pick<{
1415
1417
  title: import("zod").ZodString;
1416
1418
  standfirst: import("zod").ZodOptional<import("zod").ZodString>;
@@ -33,6 +33,10 @@ declare const resolvers: {
33
33
  };
34
34
  Article: {
35
35
  containedIn: (parent: import("../model/CapiResponse").CapiResponse) => Promise<import("../model/CapiResponse").CapiResponse | null>;
36
+ publication: (parent: import("../model/CapiResponse").CapiResponse) => string[] | null;
37
+ indicators: (parent: import("../model/CapiResponse").CapiResponse) => {
38
+ isPartnerContent: boolean | null;
39
+ };
36
40
  __resolveType?: import("../generated").TypeResolveFn<"Article" | "Placeholder" | "Video" | "Audio" | "LiveBlogPackage" | "LiveBlogPost" | "ContentPackage", import("../model/CapiResponse").CapiResponse, import("..").QueryContext> | undefined;
37
41
  accessLevel: import("../generated").Resolver<import("../generated").Maybe<import("../generated").ResolverTypeWrapper<"premium" | "subscribed" | "registered" | "free">>, import("../model/CapiResponse").CapiResponse, import("..").QueryContext, {}>;
38
42
  altStandfirst: import("../generated").Resolver<import("../generated").Maybe<import("../generated").ResolverTypeWrapper<import("../generated").AltStandfirst>>, import("../model/CapiResponse").CapiResponse, import("..").QueryContext, {}>;
@@ -276,6 +280,7 @@ declare const resolvers: {
276
280
  };
277
281
  Indicators: {
278
282
  isOpinion: (parent: import("../generated").Indicators) => boolean | null;
283
+ isPartnerContent: (parent: import("../generated").Indicators) => boolean | null;
279
284
  };
280
285
  Media: {
281
286
  url: (parent: import("../generated").Media) => string | null;
@@ -50,6 +50,12 @@ const resolvers = {
50
50
  Article: {
51
51
  ...contentResolvers,
52
52
  containedIn: (parent) => parent.containedIn(),
53
+ publication: (parent) => parent.publication() ?? null,
54
+ indicators: (parent) => {
55
+ return {
56
+ isPartnerContent: parent.isPartnerContent(),
57
+ };
58
+ },
53
59
  },
54
60
  Placeholder: {
55
61
  ...contentResolvers,
@@ -102,6 +108,7 @@ const resolvers = {
102
108
  // it from other Indicators types in the next major release.
103
109
  Indicators: {
104
110
  isOpinion: (parent) => parent.isOpinion ?? null,
111
+ isPartnerContent: (parent) => parent.isPartnerContent ?? null,
105
112
  },
106
113
  Media: {
107
114
  url: (parent) => parent.url ?? null,
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/resolvers/content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/resolvers/content.ts"],"names":[],"mappings":"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"}
@@ -544,6 +544,10 @@ declare const resolvers: {
544
544
  };
545
545
  Article: {
546
546
  containedIn: (parent: import("../model/CapiResponse").CapiResponse) => Promise<import("../model/CapiResponse").CapiResponse | null>;
547
+ publication: (parent: import("../model/CapiResponse").CapiResponse) => string[] | null;
548
+ indicators: (parent: import("../model/CapiResponse").CapiResponse) => {
549
+ isPartnerContent: boolean | null;
550
+ };
547
551
  __resolveType?: import("../generated").TypeResolveFn<"Article" | "Placeholder" | "Video" | "Audio" | "LiveBlogPackage" | "LiveBlogPost" | "ContentPackage", import("../model/CapiResponse").CapiResponse, import("..").QueryContext> | undefined;
548
552
  accessLevel: import("../generated").Resolver<import("../generated").Maybe<import("../generated").ResolverTypeWrapper<"premium" | "subscribed" | "registered" | "free">>, import("../model/CapiResponse").CapiResponse, import("..").QueryContext, {}>;
549
553
  altStandfirst: import("../generated").Resolver<import("../generated").Maybe<import("../generated").ResolverTypeWrapper<import("../generated").AltStandfirst>>, import("../model/CapiResponse").CapiResponse, import("..").QueryContext, {}>;
@@ -787,6 +791,7 @@ declare const resolvers: {
787
791
  };
788
792
  Indicators: {
789
793
  isOpinion: (parent: import("../generated").Indicators) => boolean | null;
794
+ isPartnerContent: (parent: import("../generated").Indicators) => boolean | null;
790
795
  };
791
796
  Media: {
792
797
  url: (parent: import("../generated").Media) => string | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@financial-times/cp-content-pipeline-schema",
3
- "version": "3.1.1",
3
+ "version": "3.2.0",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -644,6 +644,10 @@ fragment ArticleFields on Content {
644
644
  containedIn {
645
645
  ...PackageContainer
646
646
  }
647
+ publication
648
+ indicators {
649
+ isPartnerContent
650
+ }
647
651
  }
648
652
  ... on Placeholder {
649
653
  containedIn {
@@ -91,6 +91,8 @@ export type Article = Content & {
91
91
  readonly firstPublishedDate: Scalars['String']['output'];
92
92
  /** The unique identifier of the article - a uuid or a url. */
93
93
  readonly id: Scalars['ID']['output'];
94
+ /** An object of several flags indicating the nature of the content */
95
+ readonly indicators?: Maybe<Indicators>;
94
96
  /** The concept to use for instant alert CTAs. */
95
97
  readonly instantAlertConcept?: Maybe<Concept>;
96
98
  /** An image object containing the url and the caption, to be displayed usually before the article content. */
@@ -99,6 +101,8 @@ export type Article = Content & {
99
101
  readonly modifiedTimestamp?: Maybe<Scalars['Float']['output']>;
100
102
  /** The party that originated the article, eg. 'FT'. */
101
103
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
104
+ /** Array of publication IDs this article pertains to, e.g. 88fdde6c-2aa4-4f78-af02-9f680097cfd6 for FT Pink */
105
+ readonly publication?: Maybe<ReadonlyArray<Scalars['String']['output']>>;
102
106
  /** A string ID used to trace content publishes through the pipeline, e.g. 'republish_tid_JNhUrBjdXo'. */
103
107
  readonly publishReference?: Maybe<Scalars['String']['output']>;
104
108
  /** The ISO string date the article was marked as published, eg. '2024-04-03T10:35:52.443Z'. */
@@ -1039,6 +1043,8 @@ export type ImageWideSourceSetArgs = {
1039
1043
  export type Indicators = {
1040
1044
  /** Whether the content is an opinion piece. */
1041
1045
  readonly isOpinion?: Maybe<Scalars['Boolean']['output']>;
1046
+ /** Whether the content is Commercial Partner Content. */
1047
+ readonly isPartnerContent?: Maybe<Scalars['Boolean']['output']>;
1042
1048
  };
1043
1049
 
1044
1050
  export type LayoutImage = Reference & {
@@ -2169,10 +2175,12 @@ export type ArticleResolvers<ContextType = QueryContext, ParentType extends Reso
2169
2175
  editorialDesk: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2170
2176
  firstPublishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2171
2177
  id: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
2178
+ indicators: Resolver<Maybe<ResolversTypes['Indicators']>, ParentType, ContextType>;
2172
2179
  instantAlertConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
2173
2180
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
2174
2181
  modifiedTimestamp: Resolver<Maybe<ResolversTypes['Float']>, ParentType, ContextType>;
2175
2182
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2183
+ publication: Resolver<Maybe<ReadonlyArray<ResolversTypes['String']>>, ParentType, ContextType>;
2176
2184
  publishReference: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2177
2185
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2178
2186
  publishedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
@@ -2669,6 +2677,7 @@ export type ImageWideResolvers<ContextType = QueryContext, ParentType extends Re
2669
2677
 
2670
2678
  export type IndicatorsResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Indicators'] = ResolversParentTypes['Indicators']> = ResolversObject<{
2671
2679
  isOpinion: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
2680
+ isPartnerContent: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
2672
2681
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2673
2682
  }>;
2674
2683
 
@@ -105,4 +105,27 @@ describe('CAPI response', () => {
105
105
  )
106
106
  })
107
107
  })
108
+
109
+ describe('Partner content type articles', () => {
110
+ test('should have `isPartnerContent` set correctly as `true` when correct publication id is set', () => {
111
+ const article = cloneDeep({
112
+ ...baseCapiObject,
113
+ publication: [
114
+ 'http://www.ft.com/thing/724b5e36-6d45-4cf1-b1c2-3f676b21f21b',
115
+ ],
116
+ })
117
+ const capiResponse = new CapiResponse(article, context)
118
+
119
+ expect(capiResponse.isPartnerContent()).toBe(true)
120
+ })
121
+ test('should have `isPartnerContent` set correctly as `false` if publication field is not set', () => {
122
+ const article = cloneDeep({
123
+ ...baseCapiObject,
124
+ publication: null,
125
+ })
126
+ const capiResponse = new CapiResponse(article, context)
127
+
128
+ expect(capiResponse.isPartnerContent()).toBe(false)
129
+ })
130
+ })
108
131
  })
@@ -321,6 +321,14 @@ export class CapiResponse {
321
321
  return null
322
322
  }
323
323
 
324
+ isPartnerContent(): boolean | null {
325
+ return Boolean(
326
+ 'publication' in this.capiData &&
327
+ this.capiData.publication?.[0] ===
328
+ 'http://www.ft.com/thing/724b5e36-6d45-4cf1-b1c2-3f676b21f21b'
329
+ )
330
+ }
331
+
324
332
  canBeSyndicated(): LiteralUnionScalarValues<typeof CanBeSyndicated> {
325
333
  return this.capiData.canBeSyndicated
326
334
  }
@@ -840,10 +848,10 @@ export class CapiResponse {
840
848
  return null
841
849
  }
842
850
 
843
- isPartnerContent(): boolean {
844
- if ('editorialDesk' in this.capiData) {
845
- return this.capiData.editorialDesk === '/FT/Commercial/PartnerContent'
851
+ publication(): string[] | null {
852
+ if ('publication' in this.capiData && this.capiData.publication) {
853
+ return this.capiData.publication
846
854
  }
847
- return false
855
+ return null
848
856
  }
849
857
  }
@@ -32,6 +32,7 @@ const articleMetadataSchema = baseMetadataSchema.pick({
32
32
  topper: true,
33
33
  comments: true,
34
34
  containedIn: true,
35
+ publication: true,
35
36
  })
36
37
 
37
38
  const articleMediaSchema = baseMediaSchema.pick({
@@ -232,6 +232,7 @@ export const baseMetadataSchema = z.object({
232
232
  tableOfContents: z
233
233
  .object({ labelType: z.string(), sequence: z.string() })
234
234
  .optional(),
235
+ publication: z.array(z.string()).optional(),
235
236
  })
236
237
 
237
238
  export const baseContentSchema = z.object({
@@ -73,6 +73,12 @@ const resolvers = {
73
73
  Article: {
74
74
  ...contentResolvers,
75
75
  containedIn: (parent) => parent.containedIn(),
76
+ publication: (parent) => parent.publication() ?? null,
77
+ indicators: (parent) => {
78
+ return {
79
+ isPartnerContent: parent.isPartnerContent(),
80
+ }
81
+ },
76
82
  },
77
83
 
78
84
  Placeholder: {
@@ -135,6 +141,7 @@ const resolvers = {
135
141
  // it from other Indicators types in the next major release.
136
142
  Indicators: {
137
143
  isOpinion: (parent) => parent.isOpinion ?? null,
144
+ isPartnerContent: (parent) => parent.isPartnerContent ?? null,
138
145
  },
139
146
 
140
147
  Media: {