@financial-times/cp-content-pipeline-schema 3.4.0 → 3.5.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 (76) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/lib/datasources/capi.d.ts +0 -2
  3. package/lib/datasources/capi.js +10 -23
  4. package/lib/datasources/capi.js.map +1 -1
  5. package/lib/datasources/instrumented.js +4 -1
  6. package/lib/datasources/instrumented.js.map +1 -1
  7. package/lib/datasources/origami-image.d.ts +0 -2
  8. package/lib/datasources/origami-image.js +5 -19
  9. package/lib/datasources/origami-image.js.map +1 -1
  10. package/lib/datasources/twitter.d.ts +0 -2
  11. package/lib/datasources/twitter.js +2 -16
  12. package/lib/datasources/twitter.js.map +1 -1
  13. package/lib/datasources/url-management.js +5 -3
  14. package/lib/datasources/url-management.js.map +1 -1
  15. package/lib/fixtures/dummyContext.js +1 -1
  16. package/lib/generated/index.d.ts +69 -1
  17. package/lib/index.d.ts +1 -0
  18. package/lib/index.js.map +1 -1
  19. package/lib/model/Byline.js +11 -14
  20. package/lib/model/Byline.js.map +1 -1
  21. package/lib/model/CapiList.js +2 -0
  22. package/lib/model/CapiList.js.map +1 -1
  23. package/lib/model/CapiResponse.d.ts +7 -3
  24. package/lib/model/CapiResponse.js +125 -57
  25. package/lib/model/CapiResponse.js.map +1 -1
  26. package/lib/model/CapiResponse.test.js +92 -7
  27. package/lib/model/CapiResponse.test.js.map +1 -1
  28. package/lib/model/Clip.js +2 -0
  29. package/lib/model/Clip.js.map +1 -1
  30. package/lib/model/Concept.js +4 -10
  31. package/lib/model/Concept.js.map +1 -1
  32. package/lib/model/FlourishSource.js +5 -10
  33. package/lib/model/FlourishSource.js.map +1 -1
  34. package/lib/model/Image.js +10 -20
  35. package/lib/model/Image.js.map +1 -1
  36. package/lib/model/LeadFlourish.js +4 -10
  37. package/lib/model/LeadFlourish.js.map +1 -1
  38. package/lib/model/Person.js +5 -16
  39. package/lib/model/Person.js.map +1 -1
  40. package/lib/model/Picture.js +3 -0
  41. package/lib/model/Picture.js.map +1 -1
  42. package/lib/model/RichText.js +3 -0
  43. package/lib/model/RichText.js.map +1 -1
  44. package/lib/model/Topper.js +5 -16
  45. package/lib/model/Topper.js.map +1 -1
  46. package/lib/model/schemas/capi/internal-content.d.ts +1 -1
  47. package/lib/resolvers/content-tree/references/RawImage.js +2 -0
  48. package/lib/resolvers/content-tree/references/RawImage.js.map +1 -1
  49. package/lib/resolvers/content.d.ts +26 -1
  50. package/lib/resolvers/content.js +21 -1
  51. package/lib/resolvers/content.js.map +1 -1
  52. package/lib/resolvers/index.d.ts +26 -1
  53. package/lib/resolvers/literal-union.js +1 -0
  54. package/lib/resolvers/literal-union.js.map +1 -1
  55. package/lib/types/connection.d.ts +21 -0
  56. package/lib/types/connection.js +5 -0
  57. package/lib/types/connection.js.map +1 -0
  58. package/package.json +1 -1
  59. package/queries/article.graphql +8 -2
  60. package/src/datasources/capi.ts +1 -14
  61. package/src/datasources/origami-image.ts +1 -13
  62. package/src/datasources/twitter.ts +1 -14
  63. package/src/fixtures/dummyContext.ts +1 -1
  64. package/src/generated/index.ts +71 -1
  65. package/src/index.ts +1 -0
  66. package/src/model/CapiResponse.test.ts +137 -7
  67. package/src/model/CapiResponse.ts +129 -37
  68. package/src/model/schemas/capi/internal-content.ts +1 -1
  69. package/src/resolvers/content.ts +31 -1
  70. package/src/types/connection.ts +28 -0
  71. package/tsconfig.tsbuildinfo +1 -1
  72. package/typedefs/content.graphql +40 -2
  73. package/lib/helpers/timeout-error.d.ts +0 -6
  74. package/lib/helpers/timeout-error.js +0 -15
  75. package/lib/helpers/timeout-error.js.map +0 -1
  76. package/src/helpers/timeout-error.ts +0 -13
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Changelog
2
2
 
3
+ ## [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
+
5
+
6
+ ### Features
7
+
8
+ * **api:** request how many live blog posts to fetch in query parameter ([bde0da2](https://github.com/Financial-Times/cp-content-pipeline/commit/bde0da2c58c575b4f1d2fe80d30beb1b36a696a3))
9
+ * **client:** return whether more blog posts can be requested ([4fc05d5](https://github.com/Financial-Times/cp-content-pipeline/commit/4fc05d536db53d33315abc7752e5d24649d28e64))
10
+ * **schema:** add GraphQL argument to request first x live blog posts ([8be94cc](https://github.com/Financial-Times/cp-content-pipeline/commit/8be94cca226cfcfe746ff6861b203db188943cd0))
11
+ * **schema:** add pagination support for live blog posts ([5b9aa4f](https://github.com/Financial-Times/cp-content-pipeline/commit/5b9aa4f26150a13645031b3de40d695cd5308cca))
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * don't cache responses when CAPI timed out ([0a84a51](https://github.com/Financial-Times/cp-content-pipeline/commit/0a84a5168a15b4898204c48c19797ef496ccda87))
17
+ * **schema:** don't erroneously throw timeout errors ([54b8b41](https://github.com/Financial-Times/cp-content-pipeline/commit/54b8b415b1851b496c5eadcef9172c5960e73ac3))
18
+ * **schema:** sort live blog posts by published date after pagination ([7ed26f2](https://github.com/Financial-Times/cp-content-pipeline/commit/7ed26f24f64b7502c1e8610f4814c515dc046135))
19
+
20
+
21
+ ### Performance Improvements
22
+
23
+ * **schema:** only call CAPI once in pinnedPost resolver ([ea1b5be](https://github.com/Financial-Times/cp-content-pipeline/commit/ea1b5beee8e361050df4334a5e5592c7d6247103))
24
+ * **schema:** refactor connections logic into contains method ([022213e](https://github.com/Financial-Times/cp-content-pipeline/commit/022213ead8517d90d211a1d08541869485965618))
25
+
3
26
  ## [3.4.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-schema-v3.3.2...cp-content-pipeline-schema-v3.4.0) (2024-10-21)
4
27
 
5
28
 
@@ -9,8 +9,6 @@ export declare class CapiDataSource extends InstrumentedRESTDataSource {
9
9
  articleCacheTTL: number;
10
10
  peopleCacheTTL: number;
11
11
  get backendSystemCode(): string;
12
- abortController: AbortController;
13
- timeout: ReturnType<typeof setTimeout> | undefined;
14
12
  nextNotificationLink?: string;
15
13
  willSendRequest(path: string, request: AugmentedRequest): void;
16
14
  getContent(uuid: string, packageContainer?: CapiResponse): Promise<CapiResponse>;
@@ -1,13 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.CapiDataSource = void 0;
7
4
  const CapiResponse_1 = require("../model/CapiResponse");
8
5
  const instrumented_1 = require("./instrumented");
9
6
  const CapiList_1 = require("../model/CapiList");
10
- const timeout_error_1 = __importDefault(require("../helpers/timeout-error"));
11
7
  const Person_1 = require("../model/Person");
12
8
  const REQUEST_TIMEOUT = process.env.CAPI_DATASOURCE_REQUEST_TIMEOUT
13
9
  ? parseInt(process.env.CAPI_DATASOURCE_REQUEST_TIMEOUT)
@@ -20,27 +16,22 @@ function getWrappedCacheKey(cache) {
20
16
  return '';
21
17
  }
22
18
  class CapiDataSource extends instrumented_1.InstrumentedRESTDataSource {
23
- constructor() {
24
- super(...arguments);
25
- this.baseURL = process.env.CAPI_URL || 'https://api-t.ft.com/';
26
- this.capiKey = process.env.CAPI_API_KEY || '';
27
- this.articleCacheTTL = process.env.ARTICLE_CACHE_TTL
28
- ? parseInt(process.env.ARTICLE_CACHE_TTL)
29
- : 60 * 60 * 24 * 7 * 4; // 4 weeks
30
- this.peopleCacheTTL = process.env.PEOPLE_CACHE_TTL
31
- ? parseInt(process.env.PEOPLE_CACHE_TTL)
32
- : 600; // 10 minutes
33
- this.abortController = new AbortController();
34
- this.timeout = undefined;
35
- }
19
+ baseURL = process.env.CAPI_URL || 'https://api-t.ft.com/';
20
+ capiKey = process.env.CAPI_API_KEY || '';
21
+ articleCacheTTL = process.env.ARTICLE_CACHE_TTL
22
+ ? parseInt(process.env.ARTICLE_CACHE_TTL)
23
+ : 60 * 60 * 24 * 7 * 4; // 4 weeks
24
+ peopleCacheTTL = process.env.PEOPLE_CACHE_TTL
25
+ ? parseInt(process.env.PEOPLE_CACHE_TTL)
26
+ : 600; // 10 minutes
36
27
  get backendSystemCode() {
37
28
  return 'up-ica';
38
29
  }
30
+ nextNotificationLink;
39
31
  willSendRequest(path, request) {
40
32
  super.willSendRequest(path, request);
33
+ request.signal = AbortSignal.timeout(REQUEST_TIMEOUT);
41
34
  request.headers['x-api-key'] = this.capiKey;
42
- request.signal = this.abortController.signal;
43
- this.timeout = setTimeout(() => this.abortController.abort(new timeout_error_1.default(REQUEST_TIMEOUT)), REQUEST_TIMEOUT);
44
35
  }
45
36
  async getContent(uuid, packageContainer) {
46
37
  this.context.addSurrogateKeys([
@@ -54,10 +45,6 @@ class CapiDataSource extends instrumented_1.InstrumentedRESTDataSource {
54
45
  });
55
46
  this.context.contentRequestedOnce = true;
56
47
  this.calls.push(uuid);
57
- if (this.timeout) {
58
- clearTimeout(this.timeout);
59
- this.timeout = undefined;
60
- }
61
48
  return CapiResponse_1.CapiResponse.fromJSON(content, this.context, packageContainer);
62
49
  }
63
50
  async getPerson(uuid) {
@@ -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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"}
@@ -7,6 +7,10 @@ const fetch_error_handler_1 = require("@dotcom-reliability-kit/fetch-error-handl
7
7
  const cache_1 = require("../types/cache");
8
8
  const errors_1 = require("@dotcom-reliability-kit/errors");
9
9
  class InstrumentedRESTDataSource extends datasource_rest_1.RESTDataSource {
10
+ startTime;
11
+ context;
12
+ calls = [];
13
+ errorHandler;
10
14
  get backendSystemCode() {
11
15
  return undefined;
12
16
  }
@@ -17,7 +21,6 @@ class InstrumentedRESTDataSource extends datasource_rest_1.RESTDataSource {
17
21
  cache: wrappedCache,
18
22
  fetch: (url, init) => this.errorHandler(global.fetch(url, init)),
19
23
  });
20
- this.calls = [];
21
24
  this.errorHandler = (0, fetch_error_handler_1.createFetchErrorHandler)({
22
25
  upstreamSystemCode: this.backendSystemCode,
23
26
  });
@@ -1 +1 @@
1
- {"version":3,"file":"instrumented.js","sourceRoot":"","sources":["../../src/datasources/instrumented.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instrumented.js","sourceRoot":"","sources":["../../src/datasources/instrumented.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,6 @@ import { AugmentedRequest, CacheOptions } from '@apollo/datasource-rest';
3
3
  export declare class OrigamiImageDataSource extends InstrumentedRESTDataSource {
4
4
  baseURL: string;
5
5
  get backendSystemCode(): string;
6
- abortController: AbortController;
7
- timeout: ReturnType<typeof setTimeout> | undefined;
8
6
  imageMetadataCacheTTL: number;
9
7
  willSendRequest(path: string, request: AugmentedRequest): void;
10
8
  protected cacheOptionsFor(): CacheOptions;
@@ -1,31 +1,21 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.OrigamiImageDataSource = void 0;
7
- const timeout_error_1 = __importDefault(require("../helpers/timeout-error"));
8
4
  const instrumented_1 = require("./instrumented");
9
5
  const REQUEST_TIMEOUT = process.env.ORIGAMI_DATASOURCE_REQUEST_TIMEOUT
10
6
  ? parseInt(process.env.ORIGAMI_DATASOURCE_REQUEST_TIMEOUT)
11
7
  : 200;
12
8
  class OrigamiImageDataSource extends instrumented_1.InstrumentedRESTDataSource {
13
- constructor() {
14
- super(...arguments);
15
- this.baseURL = 'https://www.ft.com/__origami/service/image/v2/';
16
- this.abortController = new AbortController();
17
- this.timeout = undefined;
18
- this.imageMetadataCacheTTL = process.env.IMAGE_METADATA_CACHE_TTL
19
- ? parseInt(process.env.IMAGE_METADATA_CACHE_TTL)
20
- : 60 * 60 * 24 * 7; // 1 week
21
- }
9
+ baseURL = 'https://www.ft.com/__origami/service/image/v2/';
22
10
  get backendSystemCode() {
23
11
  return 'origami-image-service-v2';
24
12
  }
13
+ imageMetadataCacheTTL = process.env.IMAGE_METADATA_CACHE_TTL
14
+ ? parseInt(process.env.IMAGE_METADATA_CACHE_TTL)
15
+ : 60 * 60 * 24 * 7; // 1 week
25
16
  willSendRequest(path, request) {
26
17
  super.willSendRequest(path, request);
27
- request.signal = this.abortController.signal;
28
- this.timeout = setTimeout(() => this.abortController.abort(new timeout_error_1.default(REQUEST_TIMEOUT)), REQUEST_TIMEOUT);
18
+ request.signal = AbortSignal.timeout(REQUEST_TIMEOUT);
29
19
  }
30
20
  cacheOptionsFor() {
31
21
  return { ttl: this.imageMetadataCacheTTL };
@@ -33,10 +23,6 @@ class OrigamiImageDataSource extends instrumented_1.InstrumentedRESTDataSource {
33
23
  async getImageMetadata(url) {
34
24
  const imageMetadata = await this.get(`images/metadata/${encodeURIComponent(url)}?source=next`);
35
25
  this.calls.push(url);
36
- if (this.timeout) {
37
- clearTimeout(this.timeout);
38
- this.timeout = undefined;
39
- }
40
26
  return imageMetadata;
41
27
  }
42
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"origami-image.js","sourceRoot":"","sources":["../../src/datasources/origami-image.ts"],"names":[],"mappings":";;;;;;AAAA,6EAAmD;AACnD,iDAA2D;AAG3D,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC;IACpE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;IAC1D,CAAC,CAAC,GAAG,CAAA;AAEP,MAAa,sBAAuB,SAAQ,yCAA0B;IAAtE;;QACE,YAAO,GAAG,gDAAgD,CAAA;QAK1D,oBAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QACvC,YAAO,GAA8C,SAAS,CAAA;QAE9D,0BAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB;YAC1D,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;YAChD,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA,CAAC,SAAS;IA+BhC,CAAC;IAxCC,IAAI,iBAAiB;QACnB,OAAO,0BAA0B,CAAA;IACnC,CAAC;IASQ,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;IAES,eAAe;QACvB,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,GAAW;QAEX,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,GAAG,CAClC,mBAAmB,kBAAkB,CAAC,GAAG,CAAC,cAAc,CACzD,CAAA;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEpB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC1B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;QAC1B,CAAC;QACD,OAAO,aAAa,CAAA;IACtB,CAAC;CACF;AA1CD,wDA0CC"}
1
+ {"version":3,"file":"origami-image.js","sourceRoot":"","sources":["../../src/datasources/origami-image.ts"],"names":[],"mappings":";;;AAAA,iDAA2D;AAG3D,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC;IACpE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;IAC1D,CAAC,CAAC,GAAG,CAAA;AAEP,MAAa,sBAAuB,SAAQ,yCAA0B;IACpE,OAAO,GAAG,gDAAgD,CAAA;IAC1D,IAAI,iBAAiB;QACnB,OAAO,0BAA0B,CAAA;IACnC,CAAC;IAED,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB;QAC1D,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;QAChD,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA,CAAC,SAAS;IAErB,eAAe,CAAC,IAAY,EAAE,OAAyB;QAC9D,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEpC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IACvD,CAAC;IAES,eAAe;QACvB,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,GAAW;QAEX,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,GAAG,CAClC,mBAAmB,kBAAkB,CAAC,GAAG,CAAC,cAAc,CACzD,CAAA;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEpB,OAAO,aAAa,CAAA;IACtB,CAAC;CACF;AA/BD,wDA+BC"}
@@ -3,8 +3,6 @@ import { InstrumentedRESTDataSource } from './instrumented';
3
3
  export declare class TwitterDataSource extends InstrumentedRESTDataSource {
4
4
  baseURL: string;
5
5
  get backendSystemCode(): string;
6
- abortController: AbortController;
7
- timeout: ReturnType<typeof setTimeout> | undefined;
8
6
  willSendRequest(path: string, request: AugmentedRequest): void;
9
7
  getTweet(tweetUrl: string): Promise<{
10
8
  html: string;
@@ -22,40 +22,26 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
26
  exports.TwitterDataSource = void 0;
30
27
  const z = __importStar(require("zod"));
31
28
  const instrumented_1 = require("./instrumented");
32
- const timeout_error_1 = __importDefault(require("../helpers/timeout-error"));
33
29
  const REQUEST_TIMEOUT = process.env.TWITTER_DATASOURCE_REQUEST_TIMEOUT
34
30
  ? parseInt(process.env.TWITTER_DATASOURCE_REQUEST_TIMEOUT)
35
31
  : 1000;
36
32
  const Tweet = z.object({ html: z.string() });
37
33
  class TwitterDataSource extends instrumented_1.InstrumentedRESTDataSource {
38
- constructor() {
39
- super(...arguments);
40
- this.baseURL = 'https://publish.twitter.com';
41
- this.abortController = new AbortController();
42
- this.timeout = undefined;
43
- }
34
+ baseURL = 'https://publish.twitter.com';
44
35
  get backendSystemCode() {
45
36
  return 'twitter-oembed-api';
46
37
  }
47
38
  willSendRequest(path, request) {
48
39
  super.willSendRequest(path, request);
49
- request.signal = this.abortController.signal;
50
- this.timeout = setTimeout(() => this.abortController.abort(new timeout_error_1.default(REQUEST_TIMEOUT)), REQUEST_TIMEOUT);
40
+ request.signal = AbortSignal.timeout(REQUEST_TIMEOUT);
51
41
  }
52
42
  async getTweet(tweetUrl) {
53
43
  const tweet = await this.get(`oembed?url=${tweetUrl}&omit_script=true`);
54
44
  this.calls.push(tweetUrl);
55
- if (this.timeout) {
56
- clearTimeout(this.timeout);
57
- this.timeout = undefined;
58
- }
59
45
  return Tweet.parse(tweet);
60
46
  }
61
47
  cacheOptionsFor() {
@@ -1 +1 @@
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
+ {"version":3,"file":"twitter.js","sourceRoot":"","sources":["../../src/datasources/twitter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAwB;AAExB,iDAA2D;AAE3D,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;IAC/D,OAAO,GAAG,6BAA6B,CAAA;IACvC,IAAI,iBAAiB;QACnB,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IAEQ,eAAe,CAAC,IAAY,EAAE,OAAyB;QAC9D,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEpC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IACvD,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,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;AAzBD,8CAyBC"}
@@ -9,9 +9,12 @@ const n_url_management_api_read_client_1 = __importDefault(require("@financial-t
9
9
  const CACHE_PREFIX = 'nurlmgmtapi:';
10
10
  const DEFAULT_TTL_IN_SECONDS = 60 * 60; // one hour
11
11
  class URLManagementDataSource {
12
+ memoizedResults = new Map();
13
+ cache;
14
+ context;
15
+ calls = [];
16
+ static clientInitialised = false;
12
17
  constructor({ context, cache }) {
13
- this.memoizedResults = new Map();
14
- this.calls = [];
15
18
  if (!URLManagementDataSource.clientInitialised) {
16
19
  // n-url-management-api-read-client uses next-metrics histograms
17
20
  // but our custom Graphite client doesn't support that and also
@@ -48,5 +51,4 @@ class URLManagementDataSource {
48
51
  }
49
52
  }
50
53
  exports.URLManagementDataSource = URLManagementDataSource;
51
- URLManagementDataSource.clientInitialised = false;
52
54
  //# sourceMappingURL=url-management.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"url-management.js","sourceRoot":"","sources":["../../src/datasources/url-management.ts"],"names":[],"mappings":";;;;;;AAAA,qEAGoC;AAEpC,yHAA2F;AAK3F,MAAM,YAAY,GAAG,cAAc,CAAA;AACnC,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,CAAA,CAAC,WAAW;AAElD,MAAa,uBAAuB;IAQlC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAyB;QAPrD,oBAAe,GAAG,IAAI,GAAG,EAA2B,CAAA;QAGpD,UAAK,GAAa,EAAE,CAAA;QAKlB,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,EAAE,CAAC;YAC/C,gEAAgE;YAChE,+DAA+D;YAC/D,+DAA+D;YAC/D,0CAA2B,CAAC,IAAI,CAAC;gBAC/B,OAAO,EAAE;oBACP,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK;oBACtB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;iBACnB;aACF,CAAC,CAAA;YACF,uBAAuB,CAAC,iBAAiB,GAAG,IAAI,CAAA;QAClD,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,4CAAsB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,GAAG,CACP,OAAe,EACf,MAAc,sBAAsB;QAEpC,MAAM,SAAS,GAAG,KAAK,IAAqB,EAAE;YAC5C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAC/C,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,SAAS,CAAA;YAClB,CAAC;YAED,MAAM,YAAY,GAChB,MAAM,0CAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAChD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YAC1D,OAAO,YAAY,CAAC,KAAK,CAAA;QAC3B,CAAC,CAAA;QAED,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAE/C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,OAAO,GAAG,SAAS,EAAE,CAAA;QACrB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAE1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,OAAO,OAAO,CAAA;IAChB,CAAC;;AArDH,0DAsDC;AAhDQ,yCAAiB,GAAG,KAAK,AAAR,CAAQ"}
1
+ {"version":3,"file":"url-management.js","sourceRoot":"","sources":["../../src/datasources/url-management.ts"],"names":[],"mappings":";;;;;;AAAA,qEAGoC;AAEpC,yHAA2F;AAK3F,MAAM,YAAY,GAAG,cAAc,CAAA;AACnC,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,CAAA,CAAC,WAAW;AAElD,MAAa,uBAAuB;IAClC,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAA;IACpD,KAAK,CAAe;IACpB,OAAO,CAAc;IACrB,KAAK,GAAa,EAAE,CAAA;IAEpB,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAA;IAEhC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAyB;QACnD,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,EAAE,CAAC;YAC/C,gEAAgE;YAChE,+DAA+D;YAC/D,+DAA+D;YAC/D,0CAA2B,CAAC,IAAI,CAAC;gBAC/B,OAAO,EAAE;oBACP,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK;oBACtB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;iBACnB;aACF,CAAC,CAAA;YACF,uBAAuB,CAAC,iBAAiB,GAAG,IAAI,CAAA;QAClD,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,4CAAsB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,GAAG,CACP,OAAe,EACf,MAAc,sBAAsB;QAEpC,MAAM,SAAS,GAAG,KAAK,IAAqB,EAAE;YAC5C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAC/C,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,SAAS,CAAA;YAClB,CAAC;YAED,MAAM,YAAY,GAChB,MAAM,0CAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAChD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YAC1D,OAAO,YAAY,CAAC,KAAK,CAAA;QAC3B,CAAC,CAAA;QAED,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAE/C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,OAAO,GAAG,SAAS,EAAE,CAAA;QACrB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAE1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,OAAO,OAAO,CAAA;IAChB,CAAC;;AArDH,0DAsDC"}
@@ -21,7 +21,7 @@ exports.default = {
21
21
  getContent: (id) => Promise.resolve(new CapiResponse_1.CapiResponse((0, clone_deep_1.default)({
22
22
  ...capiObject_1.baseCapiObject,
23
23
  id,
24
- publishedDate: new Date(now + parseInt(id.slice(-1), 10)).toISOString(),
24
+ publishedDate: new Date(now + parseInt(id.slice(-2), 10)).toISOString(),
25
25
  }), { addSurrogateKeys })),
26
26
  },
27
27
  },
@@ -542,6 +542,18 @@ export type ContentUrlArgs = {
542
542
  relative?: InputMaybe<Scalars['Boolean']['input']>;
543
543
  vanity?: InputMaybe<Scalars['Boolean']['input']>;
544
544
  };
545
+ export type ContentConnection = {
546
+ /** A list of edges for the connection. */
547
+ readonly edges: ReadonlyArray<Maybe<ContentEdge>>;
548
+ /** Pagination data for the connection. */
549
+ readonly pageInfo: PageInfo;
550
+ };
551
+ export type ContentEdge = {
552
+ /** The opaque cursor for this edge that can be used for future requests. */
553
+ readonly cursor: Scalars['String']['output'];
554
+ /** The child article of this edge. */
555
+ readonly node?: Maybe<Content>;
556
+ };
545
557
  export type ContentPackage = Content & {
546
558
  /** A scalar representing the access level of the article, eg. 'free'. */
547
559
  readonly accessLevel?: Maybe<Scalars['AccessLevel']['output']>;
@@ -1096,6 +1108,8 @@ export type LiveBlogPackage = Content & {
1096
1108
  readonly instantAlertConcept?: Maybe<Concept>;
1097
1109
  /** The child articles of this live blog package. */
1098
1110
  readonly liveBlogPosts?: Maybe<ReadonlyArray<Maybe<Content>>>;
1111
+ /** The child articles of this live blog package following the [Connections](https://relay.dev/graphql/connections.htm) spec. */
1112
+ readonly liveBlogPostsConnection?: Maybe<ContentConnection>;
1099
1113
  /** An image object containing the url and the caption, to be displayed usually before the article content. */
1100
1114
  readonly mainImage?: Maybe<Image>;
1101
1115
  /** The number of milliseconds since the unix epoch the article was last changed, eg '1712140552443'. */
@@ -1131,6 +1145,15 @@ export type LiveBlogPackageAnnotationsArgs = {
1131
1145
  export type LiveBlogPackageBylineArgs = {
1132
1146
  vanity?: InputMaybe<Scalars['Boolean']['input']>;
1133
1147
  };
1148
+ export type LiveBlogPackageLiveBlogPostsArgs = {
1149
+ count?: InputMaybe<Scalars['Int']['input']>;
1150
+ };
1151
+ export type LiveBlogPackageLiveBlogPostsConnectionArgs = {
1152
+ after?: InputMaybe<Scalars['String']['input']>;
1153
+ before?: InputMaybe<Scalars['String']['input']>;
1154
+ first?: InputMaybe<Scalars['Int']['input']>;
1155
+ last?: InputMaybe<Scalars['Int']['input']>;
1156
+ };
1134
1157
  export type LiveBlogPackageUrlArgs = {
1135
1158
  relative?: InputMaybe<Scalars['Boolean']['input']>;
1136
1159
  vanity?: InputMaybe<Scalars['Boolean']['input']>;
@@ -1265,6 +1288,16 @@ export type OpinionTopperHeadshotArgs = {
1265
1288
  url?: InputMaybe<Scalars['String']['input']>;
1266
1289
  width?: InputMaybe<Scalars['Int']['input']>;
1267
1290
  };
1291
+ export type PageInfo = {
1292
+ /** The cursor for the last edge. */
1293
+ readonly endCursor?: Maybe<Scalars['String']['output']>;
1294
+ /** Whether a subsequent page of edges is available on request. */
1295
+ readonly hasNextPage: Scalars['Boolean']['output'];
1296
+ /** Whether a previous page of edges is available on request. */
1297
+ readonly hasPreviousPage: Scalars['Boolean']['output'];
1298
+ /** The cursor for the first edge. */
1299
+ readonly startCursor?: Maybe<Scalars['String']['output']>;
1300
+ };
1268
1301
  export type PartnerContentTopper = Topper & TopperWithImages & TopperWithTheme & {
1269
1302
  /** Whether the topper should have a background box. */
1270
1303
  readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
@@ -1834,6 +1867,12 @@ export type ResolversTypes = ResolversObject<{
1834
1867
  Concept: ResolverTypeWrapper<ConceptModel>;
1835
1868
  ConceptInterface: ResolverTypeWrapper<ConceptModel>;
1836
1869
  Content: ResolverTypeWrapper<ResolversInterfaceTypes<ResolversTypes>['Content']>;
1870
+ ContentConnection: ResolverTypeWrapper<Omit<ContentConnection, 'edges'> & {
1871
+ edges: ReadonlyArray<Maybe<ResolversTypes['ContentEdge']>>;
1872
+ }>;
1873
+ ContentEdge: ResolverTypeWrapper<Omit<ContentEdge, 'node'> & {
1874
+ node: Maybe<ResolversTypes['Content']>;
1875
+ }>;
1837
1876
  ContentPackage: ResolverTypeWrapper<CapiResponse>;
1838
1877
  ContentType: ResolverTypeWrapper<Scalars['ContentType']['output']>;
1839
1878
  CustomCodeComponent: ResolverTypeWrapper<ReferenceWithCAPIData<ContentTree.CustomCodeComponent>>;
@@ -1877,6 +1916,7 @@ export type ResolversTypes = ResolversObject<{
1877
1916
  Mutation: ResolverTypeWrapper<{}>;
1878
1917
  OpinionTopper: ResolverTypeWrapper<TopperModel>;
1879
1918
  PackageDesign: ResolverTypeWrapper<Scalars['PackageDesign']['output']>;
1919
+ PageInfo: ResolverTypeWrapper<PageInfo>;
1880
1920
  PartnerContentTopper: ResolverTypeWrapper<TopperModel>;
1881
1921
  Person: ResolverTypeWrapper<PersonModel>;
1882
1922
  Picture: ResolverTypeWrapper<PictureModel>;
@@ -1936,6 +1976,12 @@ export type ResolversParentTypes = ResolversObject<{
1936
1976
  Concept: ConceptModel;
1937
1977
  ConceptInterface: ConceptModel;
1938
1978
  Content: ResolversInterfaceTypes<ResolversParentTypes>['Content'];
1979
+ ContentConnection: Omit<ContentConnection, 'edges'> & {
1980
+ edges: ReadonlyArray<Maybe<ResolversParentTypes['ContentEdge']>>;
1981
+ };
1982
+ ContentEdge: Omit<ContentEdge, 'node'> & {
1983
+ node: Maybe<ResolversParentTypes['Content']>;
1984
+ };
1939
1985
  ContentPackage: CapiResponse;
1940
1986
  ContentType: Scalars['ContentType']['output'];
1941
1987
  CustomCodeComponent: ReferenceWithCAPIData<ContentTree.CustomCodeComponent>;
@@ -1979,6 +2025,7 @@ export type ResolversParentTypes = ResolversObject<{
1979
2025
  Mutation: {};
1980
2026
  OpinionTopper: TopperModel;
1981
2027
  PackageDesign: Scalars['PackageDesign']['output'];
2028
+ PageInfo: PageInfo;
1982
2029
  PartnerContentTopper: TopperModel;
1983
2030
  Person: PersonModel;
1984
2031
  Picture: PictureModel;
@@ -2239,6 +2286,16 @@ export type ContentResolvers<ContextType = QueryContext, ParentType extends Reso
2239
2286
  type: Resolver<ResolversTypes['ContentType'], ParentType, ContextType>;
2240
2287
  url: Resolver<ResolversTypes['String'], ParentType, ContextType, Partial<ContentUrlArgs>>;
2241
2288
  }>;
2289
+ export type ContentConnectionResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['ContentConnection'] = ResolversParentTypes['ContentConnection']> = ResolversObject<{
2290
+ edges: Resolver<ReadonlyArray<Maybe<ResolversTypes['ContentEdge']>>, ParentType, ContextType>;
2291
+ pageInfo: Resolver<ResolversTypes['PageInfo'], ParentType, ContextType>;
2292
+ __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2293
+ }>;
2294
+ export type ContentEdgeResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['ContentEdge'] = ResolversParentTypes['ContentEdge']> = ResolversObject<{
2295
+ cursor: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2296
+ node: Resolver<Maybe<ResolversTypes['Content']>, ParentType, ContextType>;
2297
+ __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2298
+ }>;
2242
2299
  export type ContentPackageResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['ContentPackage'] = ResolversParentTypes['ContentPackage']> = ResolversObject<{
2243
2300
  accessLevel: Resolver<Maybe<ResolversTypes['AccessLevel']>, ParentType, ContextType>;
2244
2301
  altStandfirst: Resolver<Maybe<ResolversTypes['AltStandfirst']>, ParentType, ContextType>;
@@ -2560,7 +2617,8 @@ export type LiveBlogPackageResolvers<ContextType = QueryContext, ParentType exte
2560
2617
  firstPublishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2561
2618
  id: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
2562
2619
  instantAlertConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
2563
- liveBlogPosts: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Content']>>>, ParentType, ContextType>;
2620
+ liveBlogPosts: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Content']>>>, ParentType, ContextType, Partial<LiveBlogPackageLiveBlogPostsArgs>>;
2621
+ liveBlogPostsConnection: Resolver<Maybe<ResolversTypes['ContentConnection']>, ParentType, ContextType, Partial<LiveBlogPackageLiveBlogPostsConnectionArgs>>;
2564
2622
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
2565
2623
  modifiedTimestamp: Resolver<Maybe<ResolversTypes['Float']>, ParentType, ContextType>;
2566
2624
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
@@ -2646,6 +2704,13 @@ export type OpinionTopperResolvers<ContextType = QueryContext, ParentType extend
2646
2704
  export interface PackageDesignScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['PackageDesign'], any> {
2647
2705
  name: 'PackageDesign';
2648
2706
  }
2707
+ export type PageInfoResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['PageInfo'] = ResolversParentTypes['PageInfo']> = ResolversObject<{
2708
+ endCursor: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2709
+ hasNextPage: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
2710
+ hasPreviousPage: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
2711
+ startCursor: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2712
+ __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2713
+ }>;
2649
2714
  export type PartnerContentTopperResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['PartnerContentTopper'] = ResolversParentTypes['PartnerContentTopper']> = ResolversObject<{
2650
2715
  backgroundBox: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
2651
2716
  backgroundColour: Resolver<Maybe<ResolversTypes['TopperBackgroundColour']>, ParentType, ContextType>;
@@ -2955,6 +3020,8 @@ export type Resolvers<ContextType = QueryContext> = ResolversObject<{
2955
3020
  Concept: ConceptResolvers<ContextType>;
2956
3021
  ConceptInterface: ConceptInterfaceResolvers<ContextType>;
2957
3022
  Content: ContentResolvers<ContextType>;
3023
+ ContentConnection: ContentConnectionResolvers<ContextType>;
3024
+ ContentEdge: ContentEdgeResolvers<ContextType>;
2958
3025
  ContentPackage: ContentPackageResolvers<ContextType>;
2959
3026
  ContentType: GraphQLScalarType;
2960
3027
  CustomCodeComponent: CustomCodeComponentResolvers<ContextType>;
@@ -2995,6 +3062,7 @@ export type Resolvers<ContextType = QueryContext> = ResolversObject<{
2995
3062
  Mutation: MutationResolvers<ContextType>;
2996
3063
  OpinionTopper: OpinionTopperResolvers<ContextType>;
2997
3064
  PackageDesign: GraphQLScalarType;
3065
+ PageInfo: PageInfoResolvers<ContextType>;
2998
3066
  PartnerContentTopper: PartnerContentTopperResolvers<ContextType>;
2999
3067
  Person: PersonResolvers<ContextType>;
3000
3068
  Picture: PictureResolvers<ContextType>;
package/lib/index.d.ts CHANGED
@@ -21,6 +21,7 @@ export interface QueryContext {
21
21
  systemCode?: string;
22
22
  requestId?: string;
23
23
  contentRequestedOnce?: boolean;
24
+ contentTimedOut?: boolean;
24
25
  logger: Logger;
25
26
  versions: {
26
27
  api: string;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA4D;AAiDnD,gGAjDA,6BAAe,OAiDA;AA9CxB,8CAAoD;AACpD,4EAAsE;AACtE,2CAA4B;AAC5B,2BAAiC;AA+BpB,QAAA,oBAAoB,GAAG,IAAA,iBAAY,EAC9C,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,EAC7C,OAAO,CACR,CAAA;AAEY,QAAA,QAAQ,GAAG,IAAA,qBAAc,EACpC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,EAChD;IACE,OAAO,EAAE,CAAC,IAAI,uCAAiB,EAAE,CAAC;CACnC,CACF,CAAA;AAGD,yCAAkD;AAAzC,uHAAA,OAAO,OAAa;AAC7B,+CAAwD;AAA/C,mHAAA,OAAO,OAAW;AAC3B,yCAA0C;AAAjC,+FAAA,OAAO,OAAA;AAEhB,+FAA8E"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA4D;AAkDnD,gGAlDA,6BAAe,OAkDA;AA/CxB,8CAAoD;AACpD,4EAAsE;AACtE,2CAA4B;AAC5B,2BAAiC;AAgCpB,QAAA,oBAAoB,GAAG,IAAA,iBAAY,EAC9C,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,EAC7C,OAAO,CACR,CAAA;AAEY,QAAA,QAAQ,GAAG,IAAA,qBAAc,EACpC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,EAChD;IACE,OAAO,EAAE,CAAC,IAAI,uCAAiB,EAAE,CAAC;CACnC,CACF,CAAA;AAGD,yCAAkD;AAAzC,uHAAA,OAAO,OAAa;AAC7B,+CAAwD;AAA/C,mHAAA,OAAO,OAAW;AAC3B,yCAA0C;AAAjC,+FAAA,OAAO,OAAA;AAEhB,+FAA8E"}
@@ -1,22 +1,19 @@
1
1
  "use strict";
2
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
- };
7
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
8
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
9
4
  };
10
- var _Byline_instances, _Byline_splitBylineByName;
11
5
  Object.defineProperty(exports, "__esModule", { value: true });
12
6
  exports.Byline = void 0;
13
7
  const updateTreeWithReferenceIds_1 = __importDefault(require("../resolvers/content-tree/updateTreeWithReferenceIds"));
14
8
  class Byline {
9
+ byline;
10
+ vanity;
11
+ authors;
12
+ contentApiData;
15
13
  static normaliseQuotes(str) {
16
14
  return str.replaceAll("'", '’');
17
15
  }
18
16
  constructor(byline, vanity, authors, contentApiData) {
19
- _Byline_instances.add(this);
20
17
  this.byline = byline;
21
18
  this.vanity = vanity;
22
19
  this.authors = authors;
@@ -25,7 +22,7 @@ class Byline {
25
22
  async buildBylineTree() {
26
23
  // Normalise apostrophes in byline string
27
24
  const normalisedByline = Byline.normaliseQuotes(this.byline);
28
- const bylineParts = __classPrivateFieldGet(this, _Byline_instances, "m", _Byline_splitBylineByName).call(this, normalisedByline, this.authors.map((author) => Byline.normaliseQuotes(author.prefLabel())));
25
+ const bylineParts = this.#splitBylineByName(normalisedByline, this.authors.map((author) => Byline.normaliseQuotes(author.prefLabel())));
29
26
  const authorNameMapping = Object.fromEntries(this.authors.map((author) => {
30
27
  return [Byline.normaliseQuotes(author.prefLabel()), author];
31
28
  }));
@@ -48,12 +45,12 @@ class Byline {
48
45
  children,
49
46
  }, this.contentApiData);
50
47
  }
48
+ #splitBylineByName(byline, names) {
49
+ if (!names.length)
50
+ return [byline];
51
+ const regex = new RegExp(`(${names.join('|')})`, 'ig');
52
+ return byline.split(regex).filter((string) => string !== '');
53
+ }
51
54
  }
52
55
  exports.Byline = Byline;
53
- _Byline_instances = new WeakSet(), _Byline_splitBylineByName = function _Byline_splitBylineByName(byline, names) {
54
- if (!names.length)
55
- return [byline];
56
- const regex = new RegExp(`(${names.join('|')})`, 'ig');
57
- return byline.split(regex).filter((string) => string !== '');
58
- };
59
56
  //# sourceMappingURL=Byline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Byline.js","sourceRoot":"","sources":["../../src/model/Byline.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,sHAA6F;AAG7F,MAAa,MAAM;IACjB,MAAM,CAAC,eAAe,CAAC,GAAW;QAChC,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,YACU,MAAc,EACd,MAAe,EACf,OAAkB,EAClB,cAA6B;;QAH7B,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAS;QACf,YAAO,GAAP,OAAO,CAAW;QAClB,mBAAc,GAAd,cAAc,CAAe;IACpC,CAAC;IAEJ,KAAK,CAAC,eAAe;QACnB,yCAAyC;QACzC,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE5D,MAAM,WAAW,GAAG,uBAAA,IAAI,oDAAmB,MAAvB,IAAI,EACtB,gBAAgB,EAChB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CACzE,CAAA;QAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1B,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAU,CAAA;QACtE,CAAC,CAAC,CACH,CAAA;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAiC,EAAE;YACvE,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,IAAI,GAAqB;gBAC7B,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,IAAI;aACZ,CAAA;YAED,OAAO,MAAM;gBACX,CAAC,CAAC;oBACE,IAAI,EAAE,QAAQ;oBACd,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE;oBACjB,QAAQ,EAAE,CAAC,IAAI,CAAC;iBACjB;gBACH,CAAC,CAAC,IAAI,CAAA;QACV,CAAC,CAAC,CAAA;QAEF,OAAO,IAAA,oCAA0B,EAC/B;YACE,IAAI,EAAE,QAAQ;YACd,QAAQ;SACY,EACtB,IAAI,CAAC,cAAc,CACpB,CAAA;IACH,CAAC;CAQF;AA1DD,wBA0DC;kGANoB,MAAc,EAAE,KAAe;IAChD,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAElC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACtD,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,CAAA;AAC9D,CAAC"}
1
+ {"version":3,"file":"Byline.js","sourceRoot":"","sources":["../../src/model/Byline.ts"],"names":[],"mappings":";;;;;;AAMA,sHAA6F;AAG7F,MAAa,MAAM;IAMP;IACA;IACA;IACA;IARV,MAAM,CAAC,eAAe,CAAC,GAAW;QAChC,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,YACU,MAAc,EACd,MAAe,EACf,OAAkB,EAClB,cAA6B;QAH7B,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAS;QACf,YAAO,GAAP,OAAO,CAAW;QAClB,mBAAc,GAAd,cAAc,CAAe;IACpC,CAAC;IAEJ,KAAK,CAAC,eAAe;QACnB,yCAAyC;QACzC,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE5D,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CACzC,gBAAgB,EAChB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CACzE,CAAA;QAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1B,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAU,CAAA;QACtE,CAAC,CAAC,CACH,CAAA;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAiC,EAAE;YACvE,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,IAAI,GAAqB;gBAC7B,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,IAAI;aACZ,CAAA;YAED,OAAO,MAAM;gBACX,CAAC,CAAC;oBACE,IAAI,EAAE,QAAQ;oBACd,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE;oBACjB,QAAQ,EAAE,CAAC,IAAI,CAAC;iBACjB;gBACH,CAAC,CAAC,IAAI,CAAA;QACV,CAAC,CAAC,CAAA;QAEF,OAAO,IAAA,oCAA0B,EAC/B;YACE,IAAI,EAAE,QAAQ;YACd,QAAQ;SACY,EACtB,IAAI,CAAC,cAAc,CACpB,CAAA;IACH,CAAC;IAED,kBAAkB,CAAC,MAAc,EAAE,KAAe;QAChD,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAElC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACtD,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,CAAA;IAC9D,CAAC;CACF;AA1DD,wBA0DC"}
@@ -9,6 +9,8 @@ const metadata_1 = require("../helpers/metadata");
9
9
  const list_1 = require("./schemas/capi/list");
10
10
  const flatten_formatted_zod_errors_1 = __importDefault(require("../helpers/flatten-formatted-zod-errors"));
11
11
  class CapiList {
12
+ list;
13
+ context;
12
14
  static fromJSON(list, context) {
13
15
  const result = list_1.listSchema.safeParse(list);
14
16
  if (!result.success) {
@@ -1 +1 @@
1
- {"version":3,"file":"CapiList.js","sourceRoot":"","sources":["../../src/model/CapiList.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA4E;AAE5E,kDAAiD;AACjD,8CAAsD;AACtD,2GAA+E;AAE/E,MAAa,QAAQ;IACnB,MAAM,CAAC,QAAQ,CAAC,IAAa,EAAE,OAAqB;QAClD,MAAM,MAAM,GAAG,iBAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAEzC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;gBAClB,KAAK,EAAE,mBAAmB;gBAC1B,KAAK,EAAE,IAAI,yBAAgB,CAAC;oBAC1B,OAAO,EACL,mLAAmL;oBACrL,IAAI,EAAE,gCAAgC;oBACtC,WAAW,EAAE,IAAA,sCAAyB,EAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC;oBACnE,SAAS,EAAG,IAAwB,CAAC,EAAE;oBACvC,WAAW,EAAE,MAAM;iBACpB,CAAC;aACH,CAAC,CAAA;YACF,OAAO,CAAC,OAAO,EAAE,KAAK,CACpB,iEAAiE,EACjE,CAAC,CACF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,EAAE,KAAK,CACpB,iEAAiE,EACjE,CAAC,CACF,CAAA;QACH,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,IAAY,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,YAAoB,IAAU,EAAU,OAAqB;QAAzC,SAAI,GAAJ,IAAI,CAAM;QAAU,YAAO,GAAP,OAAO,CAAc;IAAG,CAAC;IAEjE,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAA;QAE/B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAC7B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI;aAC1B,UAAU,CAAC,IAAA,sBAAW,EAAC,EAAE,CAAC,CAAC;aAC3B,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAI,KAAK,YAAY,kBAAS,EAAE,CAAC;gBAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,GAAG,EAAE,CAAC;oBAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;wBACvB,KAAK,EAAE,mBAAmB;wBAC1B,KAAK,EAAE,IAAI,yBAAgB,CAAC;4BAC1B,IAAI,EAAE,wBAAwB;4BAC9B,OAAO,EAAE,uCAAuC;4BAChD,IAAI,EAAE,IAAA,sBAAW,EAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;4BACzC,KAAK,EAAE,KAAK;yBACb,CAAC;qBACH,CAAC,CAAA;oBAEF,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC;YAED,MAAM,KAAK,CAAA;QACb,CAAC,CAAC,CACL,CACF,CAAA;QAED,kEAAkE;QAClE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAC9C,CAAC;IAED,EAAE;QACA,OAAO,IAAA,sBAAW,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAClC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;IACzB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA;IAC3B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAA;IAChC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAA;IACrC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAA;IACtC,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAA;IAC3C,CAAC;CACF;AAhGD,4BAgGC"}
1
+ {"version":3,"file":"CapiList.js","sourceRoot":"","sources":["../../src/model/CapiList.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA4E;AAE5E,kDAAiD;AACjD,8CAAsD;AACtD,2GAA+E;AAE/E,MAAa,QAAQ;IA8BC;IAAoB;IA7BxC,MAAM,CAAC,QAAQ,CAAC,IAAa,EAAE,OAAqB;QAClD,MAAM,MAAM,GAAG,iBAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAEzC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;gBAClB,KAAK,EAAE,mBAAmB;gBAC1B,KAAK,EAAE,IAAI,yBAAgB,CAAC;oBAC1B,OAAO,EACL,mLAAmL;oBACrL,IAAI,EAAE,gCAAgC;oBACtC,WAAW,EAAE,IAAA,sCAAyB,EAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC;oBACnE,SAAS,EAAG,IAAwB,CAAC,EAAE;oBACvC,WAAW,EAAE,MAAM;iBACpB,CAAC;aACH,CAAC,CAAA;YACF,OAAO,CAAC,OAAO,EAAE,KAAK,CACpB,iEAAiE,EACjE,CAAC,CACF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,EAAE,KAAK,CACpB,iEAAiE,EACjE,CAAC,CACF,CAAA;QACH,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,IAAY,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,YAAoB,IAAU,EAAU,OAAqB;QAAzC,SAAI,GAAJ,IAAI,CAAM;QAAU,YAAO,GAAP,OAAO,CAAc;IAAG,CAAC;IAEjE,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAA;QAE/B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAC7B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI;aAC1B,UAAU,CAAC,IAAA,sBAAW,EAAC,EAAE,CAAC,CAAC;aAC3B,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAI,KAAK,YAAY,kBAAS,EAAE,CAAC;gBAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,GAAG,EAAE,CAAC;oBAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;wBACvB,KAAK,EAAE,mBAAmB;wBAC1B,KAAK,EAAE,IAAI,yBAAgB,CAAC;4BAC1B,IAAI,EAAE,wBAAwB;4BAC9B,OAAO,EAAE,uCAAuC;4BAChD,IAAI,EAAE,IAAA,sBAAW,EAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;4BACzC,KAAK,EAAE,KAAK;yBACb,CAAC;qBACH,CAAC,CAAA;oBAEF,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC;YAED,MAAM,KAAK,CAAA;QACb,CAAC,CAAC,CACL,CACF,CAAA;QAED,kEAAkE;QAClE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAC9C,CAAC;IAED,EAAE;QACA,OAAO,IAAA,sBAAW,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAClC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;IACzB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA;IAC3B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAA;IAChC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAA;IACrC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAA;IACtC,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAA;IAC3C,CAAC;CACF;AAhGD,4BAgGC"}
@@ -1,12 +1,13 @@
1
- import type { ImageSet, ContentTypeSchemas, ClipSet, CustomCodeComponentReference } from './schemas/capi/internal-content';
1
+ import type { ImageSet, ContentTypeSchemas, ClipSet, CustomCodeComponentReference, LiveBlogPackage } from './schemas/capi/internal-content';
2
2
  import type { QueryContext } from '..';
3
3
  import { CAPIImage } from './Image';
4
4
  import { Concept } from './Concept';
5
5
  import { Person } from './Person';
6
6
  import { AccessLevel, ContentType, PackageDesign, CanBeSyndicated } from '../resolvers/scalars';
7
7
  import { LiteralUnionScalarValues } from '../resolvers/literal-union';
8
- import { ContentAnnotationsArgs, ContentPackageContainsArgs, ContentUrlArgs, Media, TableOfContents } from '../generated';
8
+ import { ContentAnnotationsArgs, ContentPackageContainsArgs, ContentUrlArgs, LiveBlogPackageLiveBlogPostsArgs, Media, TableOfContents } from '../generated';
9
9
  import { RichText } from './RichText';
10
+ import { Connection, ConnectionArguments } from '../types/connection';
10
11
  type Design = {
11
12
  theme: LiteralUnionScalarValues<typeof PackageDesign>;
12
13
  layout?: 'default' | 'wide';
@@ -131,9 +132,12 @@ export declare class CapiResponse {
131
132
  isPlaceholder(): boolean;
132
133
  isPodcast(): boolean;
133
134
  contains({ surroundingArticles, fromId, }?: Partial<ContentPackageContainsArgs>): Promise<CapiResponse[] | null>;
135
+ containsConnection({ before, after, first, last }?: ConnectionArguments, transformer?: (contains: LiveBlogPackage['contains']) => LiveBlogPackage['contains']): Promise<Connection<CapiResponse>>;
134
136
  containsLength(): number | null;
135
137
  tableOfContents(): Promise<TableOfContents | null>;
136
- liveBlogPosts(): Promise<CapiResponse[] | []>;
138
+ private handleLiveBlogPosts;
139
+ liveBlogPosts(args?: LiveBlogPackageLiveBlogPostsArgs): Promise<CapiResponse[] | []>;
140
+ liveBlogPostsConnection(args: ConnectionArguments): Promise<Connection<CapiResponse>>;
137
141
  isPinned(): boolean;
138
142
  pinnedPost(): Promise<CapiResponse | null>;
139
143
  isContainedInPackage(): boolean;