@financial-times/cp-content-pipeline-schema 2.15.1 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/lib/datasources/capi.d.ts +2 -2
  3. package/lib/datasources/capi.js +4 -2
  4. package/lib/datasources/capi.js.map +1 -1
  5. package/lib/datasources/capi.test.js +2 -2
  6. package/lib/datasources/twitter.d.ts +3 -1
  7. package/lib/datasources/twitter.js +26 -1
  8. package/lib/datasources/twitter.js.map +1 -1
  9. package/lib/fixtures/capiObject.d.ts +2 -2
  10. package/lib/fixtures/capiObject.js +2 -0
  11. package/lib/fixtures/capiObject.js.map +1 -1
  12. package/lib/fixtures/capiPerson.d.ts +1 -1
  13. package/lib/generated/index.d.ts +278 -113
  14. package/lib/helpers/decorateHeadshotUrl.d.ts +1 -2
  15. package/lib/helpers/decorateHeadshotUrl.js +2 -3
  16. package/lib/helpers/decorateHeadshotUrl.js.map +1 -1
  17. package/lib/model/Byline.d.ts +8 -10
  18. package/lib/model/Byline.js +34 -33
  19. package/lib/model/Byline.js.map +1 -1
  20. package/lib/model/Byline.test.js +105 -52
  21. package/lib/model/Byline.test.js.map +1 -1
  22. package/lib/model/CapiResponse.d.ts +11 -15
  23. package/lib/model/CapiResponse.js +37 -40
  24. package/lib/model/CapiResponse.js.map +1 -1
  25. package/lib/model/CapiResponse.test.js +7 -18
  26. package/lib/model/CapiResponse.test.js.map +1 -1
  27. package/lib/model/Clip.d.ts +1 -1
  28. package/lib/model/Concept.d.ts +1 -1
  29. package/lib/model/Concept.js +1 -2
  30. package/lib/model/Concept.js.map +1 -1
  31. package/lib/model/FlourishSource.d.ts +1 -1
  32. package/lib/model/FlourishSource.js.map +1 -1
  33. package/lib/model/Image.d.ts +1 -1
  34. package/lib/model/LeadFlourish.test.js +1 -0
  35. package/lib/model/LeadFlourish.test.js.map +1 -1
  36. package/lib/model/Person.d.ts +6 -12
  37. package/lib/model/Person.js +39 -66
  38. package/lib/model/Person.js.map +1 -1
  39. package/lib/model/Person.test.js +7 -60
  40. package/lib/model/Person.test.js.map +1 -1
  41. package/lib/model/Picture.d.ts +1 -1
  42. package/lib/model/RichText.d.ts +1 -2
  43. package/lib/model/Topper.d.ts +1 -1
  44. package/lib/model/Topper.js +10 -8
  45. package/lib/model/Topper.js.map +1 -1
  46. package/lib/model/Topper.test.js +9 -10
  47. package/lib/model/Topper.test.js.map +1 -1
  48. package/lib/model/schemas/capi/article.d.ts +4 -1
  49. package/lib/model/schemas/capi/article.js +1 -0
  50. package/lib/model/schemas/capi/article.js.map +1 -1
  51. package/lib/model/schemas/capi/audio.d.ts +4 -1
  52. package/lib/model/schemas/capi/audio.js +1 -0
  53. package/lib/model/schemas/capi/audio.js.map +1 -1
  54. package/lib/model/schemas/capi/base-schema.d.ts +11 -120
  55. package/lib/model/schemas/capi/base-schema.js +6 -5
  56. package/lib/model/schemas/capi/base-schema.js.map +1 -1
  57. package/lib/model/schemas/capi/content-package.d.ts +7 -2
  58. package/lib/model/schemas/capi/content-package.js +2 -0
  59. package/lib/model/schemas/capi/content-package.js.map +1 -1
  60. package/lib/model/schemas/capi/index.d.ts +26 -7
  61. package/lib/model/schemas/capi/internal-content.d.ts +24 -0
  62. package/lib/model/schemas/capi/internal-content.js +3 -0
  63. package/lib/model/schemas/capi/internal-content.js.map +1 -0
  64. package/lib/model/schemas/capi/live-blog-package.d.ts +4 -1
  65. package/lib/model/schemas/capi/live-blog-package.js +1 -0
  66. package/lib/model/schemas/capi/live-blog-package.js.map +1 -1
  67. package/lib/model/schemas/capi/placeholder.d.ts +4 -1
  68. package/lib/model/schemas/capi/placeholder.js +1 -0
  69. package/lib/model/schemas/capi/placeholder.js.map +1 -1
  70. package/lib/model/schemas/capi/video.d.ts +7 -2
  71. package/lib/model/schemas/capi/video.js +2 -0
  72. package/lib/model/schemas/capi/video.js.map +1 -1
  73. package/lib/resolvers/concept.d.ts +37 -2
  74. package/lib/resolvers/concept.js +17 -10
  75. package/lib/resolvers/concept.js.map +1 -1
  76. package/lib/resolvers/content-tree/Workarounds.d.ts +19 -11
  77. package/lib/resolvers/content-tree/references/Author.d.ts +4 -0
  78. package/lib/resolvers/content-tree/references/Author.js +14 -0
  79. package/lib/resolvers/content-tree/references/Author.js.map +1 -0
  80. package/lib/resolvers/content-tree/references/ClipSet.d.ts +1 -1
  81. package/lib/resolvers/content-tree/references/ClipSet.js +1 -1
  82. package/lib/resolvers/content-tree/references/ClipSet.js.map +1 -1
  83. package/lib/resolvers/content-tree/references/Flourish.d.ts +1 -1
  84. package/lib/resolvers/content-tree/references/Reference.d.ts +1 -1
  85. package/lib/resolvers/content-tree/references/Tweet.d.ts +1 -1
  86. package/lib/resolvers/content-tree/references/index.d.ts +4 -2
  87. package/lib/resolvers/content-tree/references/index.js +4 -1
  88. package/lib/resolvers/content-tree/references/index.js.map +1 -1
  89. package/lib/resolvers/content-tree/updateTreeWithReferenceIds.d.ts +3 -3
  90. package/lib/resolvers/content-tree/updateTreeWithReferenceIds.js +2 -3
  91. package/lib/resolvers/content-tree/updateTreeWithReferenceIds.js.map +1 -1
  92. package/lib/resolvers/content.d.ts +19 -10
  93. package/lib/resolvers/content.js +4 -2
  94. package/lib/resolvers/content.js.map +1 -1
  95. package/lib/resolvers/image.d.ts +12 -12
  96. package/lib/resolvers/index.d.ts +81 -34
  97. package/lib/resolvers/leadFlourish.d.ts +2 -1
  98. package/lib/resolvers/leadFlourish.js +1 -0
  99. package/lib/resolvers/leadFlourish.js.map +1 -1
  100. package/lib/resolvers/person.d.ts +1 -1
  101. package/lib/resolvers/person.js +1 -1
  102. package/lib/resolvers/person.js.map +1 -1
  103. package/lib/resolvers/picture.d.ts +4 -4
  104. package/lib/resolvers/richText.d.ts +1 -1
  105. package/lib/resolvers/teaser.d.ts +1 -1
  106. package/lib/resolvers/topper.d.ts +3 -3
  107. package/package.json +1 -1
  108. package/queries/article.graphql +35 -13
  109. package/src/datasources/capi.test.ts +3 -3
  110. package/src/datasources/capi.ts +5 -3
  111. package/src/datasources/twitter.ts +5 -1
  112. package/src/fixtures/capiObject.ts +4 -2
  113. package/src/fixtures/capiPerson.ts +1 -1
  114. package/src/generated/index.ts +303 -114
  115. package/src/helpers/decorateHeadshotUrl.ts +2 -2
  116. package/src/model/Byline.test.ts +136 -55
  117. package/src/model/Byline.ts +49 -39
  118. package/src/model/CapiResponse.test.ts +9 -25
  119. package/src/model/CapiResponse.ts +82 -55
  120. package/src/model/Clip.ts +1 -1
  121. package/src/model/Concept.ts +3 -3
  122. package/src/model/FlourishSource.ts +1 -1
  123. package/src/model/Image.test.ts +1 -1
  124. package/src/model/Image.ts +1 -1
  125. package/src/model/LeadFlourish.test.ts +1 -0
  126. package/src/model/Person.test.ts +11 -62
  127. package/src/model/Person.ts +47 -51
  128. package/src/model/Picture.test.ts +1 -1
  129. package/src/model/Picture.ts +1 -1
  130. package/src/model/Topper.test.ts +22 -18
  131. package/src/model/Topper.ts +10 -9
  132. package/src/model/__snapshots__/Byline.test.ts.snap +166 -27
  133. package/src/model/schemas/capi/article.ts +1 -0
  134. package/src/model/schemas/capi/audio.ts +1 -0
  135. package/src/model/schemas/capi/base-schema.ts +4 -3
  136. package/src/model/schemas/capi/content-package.ts +2 -0
  137. package/src/model/schemas/capi/internal-content.ts +45 -0
  138. package/src/model/schemas/capi/live-blog-package.ts +1 -0
  139. package/src/model/schemas/capi/placeholder.ts +1 -0
  140. package/src/model/schemas/capi/video.ts +2 -0
  141. package/src/resolvers/concept.ts +29 -12
  142. package/src/resolvers/content-tree/Workarounds.ts +39 -20
  143. package/src/resolvers/content-tree/references/Author.ts +18 -0
  144. package/src/resolvers/content-tree/references/ClipSet.ts +6 -8
  145. package/src/resolvers/content-tree/references/ImageSet.ts +1 -1
  146. package/src/resolvers/content-tree/references/ScrollyImage.ts +1 -1
  147. package/src/resolvers/content-tree/references/index.ts +6 -1
  148. package/src/resolvers/content-tree/updateTreeWithReferenceIds.ts +6 -8
  149. package/src/resolvers/content.ts +4 -2
  150. package/src/resolvers/leadFlourish.ts +1 -0
  151. package/src/resolvers/person.ts +1 -1
  152. package/src/types/n-display-metadata.d.ts +1 -1
  153. package/tsconfig.tsbuildinfo +1 -1
  154. package/typedefs/clip.graphql +2 -2
  155. package/typedefs/concept.graphql +64 -2
  156. package/typedefs/content.graphql +55 -31
  157. package/typedefs/image.graphql +12 -12
  158. package/typedefs/leadFlourish.graphql +32 -0
  159. package/typedefs/person.graphql +2 -2
  160. package/typedefs/picture.graphql +6 -6
  161. package/typedefs/references/author.graphql +7 -0
  162. package/typedefs/references/clipSet.graphql +14 -2
  163. package/typedefs/teaser.graphql +10 -10
  164. package/src/types/internal-content.d.ts +0 -55
  165. package/typedefs/leadFlouish.graphql +0 -29
package/CHANGELOG.md CHANGED
@@ -1,5 +1,45 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.0.1](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v3.0.0...cp-content-pipeline-schema-v3.0.1) (2024-08-28)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * allow Tweet's html field to be nullable again ([b60e18e](https://github.com/Financial-Times/cp-content-pipeline/commit/b60e18e8bf62820bce04380709279c2adc745321))
9
+ * **schema:** validate and typecheck Tweet embed API response ([7646dba](https://github.com/Financial-Times/cp-content-pipeline/commit/7646dba5201c90faa2cba008fbd5a0bd259fdc4a))
10
+
11
+ ## [3.0.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v2.15.1...cp-content-pipeline-schema-v3.0.0) (2024-08-27)
12
+
13
+
14
+ ### ⚠ BREAKING CHANGES
15
+
16
+ * switch author-link node for author w/ concept field, populate from annotations via reference
17
+ * remove deprecated liveBlogPosts(includePinned) field argument
18
+
19
+ ### Features
20
+
21
+ * add a modifiedTimestamp() (from capi `lastModified`) to allow tracking all changes to articles ([b81dfeb](https://github.com/Financial-Times/cp-content-pipeline/commit/b81dfeb8c3966ec9d7a1f277d50e234efa619551))
22
+ * add author type implementing concept plus a person field ([7fc04ec](https://github.com/Financial-Times/cp-content-pipeline/commit/7fc04ec4b80c6a27c1d5000c167cf6354c5da3d8))
23
+ * deprecate LiveBlogPost.authors ([a230e4c](https://github.com/Financial-Times/cp-content-pipeline/commit/a230e4c81b20d29bc17b0908f640f651d3b0fb07))
24
+ * deprecate Person.streamPage field ([0e972c1](https://github.com/Financial-Times/cp-content-pipeline/commit/0e972c1a0c5aff06fccbd217e3fc443d07c0209f))
25
+ * move person fetching a level up to the parent resolver/model, validate response against schema ([eee15fe](https://github.com/Financial-Times/cp-content-pipeline/commit/eee15fe1dba40f95b92263dcc0f16f4485189eb6))
26
+ * remove deprecated liveBlogPosts(includePinned) field argument ([bb242a6](https://github.com/Financial-Times/cp-content-pipeline/commit/bb242a64571a83f3c58ee1c3c341b74691c99111))
27
+ * return new byline reference data in article.graphql ([39ec54d](https://github.com/Financial-Times/cp-content-pipeline/commit/39ec54db2b24e8959b30ca22d2220a3ce50e4e58))
28
+ * return person data for author concepts in query ([ae54919](https://github.com/Financial-Times/cp-content-pipeline/commit/ae54919d56e9a88e6e61b199dce5d83281615afc))
29
+ * **schema:** improve Flourish schema ([c8bf133](https://github.com/Financial-Times/cp-content-pipeline/commit/c8bf133852a0e444643ac213b8a0f99437789878))
30
+ * **schema:** make GraphQL fields non-optional if possible ([17fe894](https://github.com/Financial-Times/cp-content-pipeline/commit/17fe894dc4941d3bf5e90ce502b344d67911504d))
31
+ * **schema:** use ContentTree instead of workarounds where possible ([34bddf4](https://github.com/Financial-Times/cp-content-pipeline/commit/34bddf4955815371bb1a1f9a7f03849b55209c31))
32
+ * support filtering annotations by predicate ([ccdd33f](https://github.com/Financial-Times/cp-content-pipeline/commit/ccdd33f0bfad819b5aabcd7af808ab388ba04141))
33
+ * switch author-link node for author w/ concept field, populate from annotations via reference ([d47de59](https://github.com/Financial-Times/cp-content-pipeline/commit/d47de591fe67afca00186618343aeeb7ded9f1d2))
34
+
35
+
36
+ ### Bug Fixes
37
+
38
+ * move byline quote normalisation to single place, and make sure it replaces every quote ([4a815f4](https://github.com/Financial-Times/cp-content-pipeline/commit/4a815f4888f1f7974433a47d40dd164f53c92940))
39
+ * **schema:** correct n-display-metadata type that can return undefined ([69adaba](https://github.com/Financial-Times/cp-content-pipeline/commit/69adaba3e7714ece83b8f9bc82538b8379ee5cc7))
40
+ * **schema:** deprecate Clip reference fields that are already in node ([e6203a5](https://github.com/Financial-Times/cp-content-pipeline/commit/e6203a5a110f2a5d49175c3d5bad3ab5b452554c))
41
+ * **schema:** use correct (albeit equivalent) reference for MainImage ([f4f57db](https://github.com/Financial-Times/cp-content-pipeline/commit/f4f57db403f47051cdbed0bcb7ff0bfa523ddadb))
42
+
3
43
  ## [2.15.1](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v2.15.0...cp-content-pipeline-schema-v2.15.1) (2024-07-24)
4
44
 
5
45
 
@@ -1,8 +1,8 @@
1
1
  import { CapiResponse } from '../model/CapiResponse';
2
2
  import { InstrumentedRESTDataSource } from './instrumented';
3
- import { CapiPerson } from '../types/internal-content';
4
3
  import { AugmentedRequest } from '@apollo/datasource-rest';
5
4
  import { CapiList } from '../model/CapiList';
5
+ import { Person } from '../model/Person';
6
6
  export declare class CapiDataSource extends InstrumentedRESTDataSource {
7
7
  baseURL: string;
8
8
  capiKey: string;
@@ -14,7 +14,7 @@ export declare class CapiDataSource extends InstrumentedRESTDataSource {
14
14
  nextNotificationLink?: string;
15
15
  willSendRequest(path: string, request: AugmentedRequest): void;
16
16
  getContent(uuid: string, packageContainer?: CapiResponse): Promise<CapiResponse>;
17
- getPerson(uuid: string): Promise<CapiPerson>;
17
+ getPerson(uuid: string): Promise<Person>;
18
18
  getList(uuid: string): Promise<CapiList>;
19
19
  getHTTPCacheKeyForContent(uuid: string): Promise<string>;
20
20
  }
@@ -8,6 +8,7 @@ const CapiResponse_1 = require("../model/CapiResponse");
8
8
  const instrumented_1 = require("./instrumented");
9
9
  const CapiList_1 = require("../model/CapiList");
10
10
  const timeout_error_1 = __importDefault(require("../helpers/timeout-error"));
11
+ const Person_1 = require("../model/Person");
11
12
  const REQUEST_TIMEOUT = process.env.CAPI_DATASOURCE_REQUEST_TIMEOUT
12
13
  ? parseInt(process.env.CAPI_DATASOURCE_REQUEST_TIMEOUT)
13
14
  : 500;
@@ -59,10 +60,11 @@ class CapiDataSource extends instrumented_1.InstrumentedRESTDataSource {
59
60
  }
60
61
  return CapiResponse_1.CapiResponse.fromJSON(content, this.context, packageContainer);
61
62
  }
62
- getPerson(uuid) {
63
- return this.get(`people/${uuid}`, {
63
+ async getPerson(uuid) {
64
+ const person = await this.get(`people/${uuid}`, {
64
65
  cacheOptions: { ttl: this.peopleCacheTTL },
65
66
  });
67
+ return Person_1.Person.fromJson(person, this.context);
66
68
  }
67
69
  async getList(uuid) {
68
70
  this.context.addSurrogateKeys([
@@ -1 +1 @@
1
- {"version":3,"file":"capi.js","sourceRoot":"","sources":["../../src/datasources/capi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capi.js","sourceRoot":"","sources":["../../src/datasources/capi.ts"],"names":[],"mappings":"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"}
@@ -43,8 +43,8 @@ describe('CapiDataSource', () => {
43
43
  expect(context.addSurrogateKeys).toBeCalledWith(expect.arrayContaining([
44
44
  expect.objectContaining({
45
45
  prefix: 'contentPipelineArticle',
46
- id
47
- })
46
+ id,
47
+ }),
48
48
  ]));
49
49
  });
50
50
  });
@@ -6,6 +6,8 @@ export declare class TwitterDataSource extends InstrumentedRESTDataSource {
6
6
  abortController: AbortController;
7
7
  timeout: ReturnType<typeof setTimeout> | undefined;
8
8
  willSendRequest(path: string, request: AugmentedRequest): void;
9
- getTweet(tweetUrl: string): Promise<any>;
9
+ getTweet(tweetUrl: string): Promise<{
10
+ html: string;
11
+ }>;
10
12
  cacheOptionsFor(): CacheOptions;
11
13
  }
@@ -1,14 +1,39 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
29
  exports.TwitterDataSource = void 0;
30
+ const z = __importStar(require("zod"));
7
31
  const instrumented_1 = require("./instrumented");
8
32
  const timeout_error_1 = __importDefault(require("../helpers/timeout-error"));
9
33
  const REQUEST_TIMEOUT = process.env.TWITTER_DATASOURCE_REQUEST_TIMEOUT
10
34
  ? parseInt(process.env.TWITTER_DATASOURCE_REQUEST_TIMEOUT)
11
35
  : 1000;
36
+ const Tweet = z.object({ html: z.string() });
12
37
  class TwitterDataSource extends instrumented_1.InstrumentedRESTDataSource {
13
38
  constructor() {
14
39
  super(...arguments);
@@ -31,7 +56,7 @@ class TwitterDataSource extends instrumented_1.InstrumentedRESTDataSource {
31
56
  clearTimeout(this.timeout);
32
57
  this.timeout = undefined;
33
58
  }
34
- return tweet;
59
+ return Tweet.parse(tweet);
35
60
  }
36
61
  cacheOptionsFor() {
37
62
  // HACK:20221110:KB twitter does return a cache_age property, but cacheOptionsFor
@@ -1 +1 @@
1
- {"version":3,"file":"twitter.js","sourceRoot":"","sources":["../../src/datasources/twitter.ts"],"names":[],"mappings":";;;;;;AACA,iDAA2D;AAC3D,6EAAmD;AAEnD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC;IACpE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;IAC1D,CAAC,CAAC,IAAI,CAAA;AAER,MAAa,iBAAkB,SAAQ,yCAA0B;IAAjE;;QACE,YAAO,GAAG,6BAA6B,CAAA;QAKvC,oBAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QACvC,YAAO,GAA8C,SAAS,CAAA;IA8BhE,CAAC;IAnCC,IAAI,iBAAiB;QACnB,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IAKQ,eAAe,CAAC,IAAY,EAAE,OAAyB;QAC9D,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEpC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA;QAC5C,IAAI,CAAC,OAAO,GAAG,UAAU,CACvB,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,uBAAY,CAAC,eAAe,CAAC,CAAC,EACnE,eAAe,CAChB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,QAAQ,mBAAmB,CAAC,CAAA;QAEvE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEzB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC1B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;QAC1B,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,eAAe;QACb,iFAAiF;QACjF,oFAAoF;QACpF,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;IACtB,CAAC;CACF;AArCD,8CAqCC"}
1
+ {"version":3,"file":"twitter.js","sourceRoot":"","sources":["../../src/datasources/twitter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAwB;AAExB,iDAA2D;AAC3D,6EAAmD;AAEnD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC;IACpE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;IAC1D,CAAC,CAAC,IAAI,CAAA;AAER,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AAE5C,MAAa,iBAAkB,SAAQ,yCAA0B;IAAjE;;QACE,YAAO,GAAG,6BAA6B,CAAA;QAKvC,oBAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QACvC,YAAO,GAA8C,SAAS,CAAA;IA8BhE,CAAC;IAnCC,IAAI,iBAAiB;QACnB,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IAKQ,eAAe,CAAC,IAAY,EAAE,OAAyB;QAC9D,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEpC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA;QAC5C,IAAI,CAAC,OAAO,GAAG,UAAU,CACvB,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,uBAAY,CAAC,eAAe,CAAC,CAAC,EACnE,eAAe,CAChB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,QAAQ,mBAAmB,CAAC,CAAA;QAEvE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEzB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC1B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;QAC1B,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,eAAe;QACb,iFAAiF;QACjF,oFAAoF;QACpF,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;IACtB,CAAC;CACF;AArCD,8CAqCC"}
@@ -1,2 +1,2 @@
1
- import { InternalContent } from '../types/internal-content';
2
- export declare const baseCapiObject: InternalContent;
1
+ import { Article } from '../model/schemas/capi/internal-content';
2
+ export declare const baseCapiObject: Article;
@@ -58,6 +58,8 @@ exports.baseCapiObject = {
58
58
  accessLevel: 'premium',
59
59
  embeds: [],
60
60
  publishedDate: '2024-04-02T10:00:09.935Z',
61
+ lastModified: '2024-04-02T12:34:56.789Z',
61
62
  firstPublishedDate: '',
63
+ canBeSyndicated: 'yes',
62
64
  };
63
65
  //# sourceMappingURL=capiObject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"capiObject.js","sourceRoot":"","sources":["../../src/fixtures/capiObject.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAoB;IAC7C,EAAE,EAAE,8DAA8D;IAClE,IAAI,EAAE,4CAA4C;IAClD,KAAK,EAAE,CAAC,4CAA4C,CAAC;IACrD,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,4DAA4D;IACnE,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,uBAAuB;IAC/B,OAAO,EAAE,imQAAimQ;IAC1mQ,WAAW,EAAE;QACX;YACE,MAAM,EAAE,+DAA+D;YACvE,UAAU,EAAE,kCAAkC;YAC9C,EAAE,EAAE,+DAA+D;YACnE,SAAS,EAAE,6CAA6C;YACxD,SAAS,EAAE,qBAAqB;YAChC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,uCAAuC;gBACvC,4CAA4C;gBAC5C,kCAAkC;aACnC;SACF;QACD;YACE,MAAM,EAAE,+DAA+D;YACvE,UAAU,EAAE,kCAAkC;YAC9C,EAAE,EAAE,+DAA+D;YACnE,SAAS,EAAE,0CAA0C;YACrD,SAAS,EAAE,sBAAsB;YACjC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,uCAAuC;gBACvC,4CAA4C;gBAC5C,kCAAkC;aACnC;SACF;QACD;YACE,EAAE,EAAE,+DAA+D;YACnE,SAAS,EAAE,iDAAiD;YAC5D,SAAS,EAAE,aAAa;YACxB,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,EAAE;YACd,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;SACV;KACF;IACD,SAAS,EAAE;QACT,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,0CAAmD;QACzD,KAAK,EAAE,EAAE;QACT,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,uCAAuC;KACnD;IACD,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,SAAkB;IAC/B,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,0BAA0B;IACzC,kBAAkB,EAAE,EAAE;CACvB,CAAA"}
1
+ {"version":3,"file":"capiObject.js","sourceRoot":"","sources":["../../src/fixtures/capiObject.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAY;IACrC,EAAE,EAAE,8DAA8D;IAClE,IAAI,EAAE,4CAA4C;IAClD,KAAK,EAAE,CAAC,4CAA4C,CAAC;IACrD,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,4DAA4D;IACnE,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,uBAAuB;IAC/B,OAAO,EAAE,imQAAimQ;IAC1mQ,WAAW,EAAE;QACX;YACE,MAAM,EAAE,+DAA+D;YACvE,UAAU,EAAE,kCAAkC;YAC9C,EAAE,EAAE,+DAA+D;YACnE,SAAS,EAAE,6CAA6C;YACxD,SAAS,EAAE,qBAAqB;YAChC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,uCAAuC;gBACvC,4CAA4C;gBAC5C,kCAAkC;aACnC;SACF;QACD;YACE,MAAM,EAAE,+DAA+D;YACvE,UAAU,EAAE,kCAAkC;YAC9C,EAAE,EAAE,+DAA+D;YACnE,SAAS,EAAE,0CAA0C;YACrD,SAAS,EAAE,sBAAsB;YACjC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,uCAAuC;gBACvC,4CAA4C;gBAC5C,kCAAkC;aACnC;SACF;QACD;YACE,EAAE,EAAE,+DAA+D;YACnE,SAAS,EAAE,iDAAiD;YAC5D,SAAS,EAAE,aAAa;YACxB,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,EAAE;YACd,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;SACV;KACF;IACD,SAAS,EAAE;QACT,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,0CAAmD;QACzD,KAAK,EAAE,EAAE;QACT,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,uCAAuC;KACnD;IACD,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,SAAkB;IAC/B,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,0BAA0B;IACzC,YAAY,EAAE,0BAA0B;IACxC,kBAAkB,EAAE,EAAE;IACtB,eAAe,EAAE,KAAK;CACvB,CAAA"}
@@ -1,2 +1,2 @@
1
- import type { CapiPerson } from '../types/internal-content';
1
+ import type { CapiPerson } from '../model/schemas/capi/internal-content';
2
2
  export declare const capiPerson: CapiPerson;