@financial-times/cp-content-pipeline-client 0.6.17 → 0.6.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.toolkitrc.yml +0 -13
- package/CHANGELOG.md +21 -0
- package/jest.config.js +3 -0
- package/lib/client-version.d.ts +1 -0
- package/lib/client-version.js +6 -0
- package/lib/client-version.js.map +1 -0
- package/lib/generated/index.d.ts +88339 -387
- package/lib/generated/index.js +41 -25
- package/lib/generated/index.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +45 -4
- package/lib/index.js.map +1 -1
- package/lib/index.test.d.ts +1 -0
- package/lib/index.test.js +18 -0
- package/lib/index.test.js.map +1 -0
- package/lib/schema-version.d.ts +1 -1
- package/lib/schema-version.js +1 -1
- package/package.json +2 -2
- package/queries/article.graphql +28 -17
- package/src/client-version.ts +2 -0
- package/src/generated/index.ts +87 -39
- package/src/index.test.ts +25 -0
- package/src/index.ts +64 -6
- package/src/schema-version.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
package/lib/generated/index.js
CHANGED
|
@@ -3,14 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getSdk = exports.ArticleDocument = exports.ContentFragmentDoc = exports.DesignFragmentDoc = exports.StructuredContentFragmentDoc = exports.ArticleReferencesFragmentDoc = exports.ScrollyImageFragmentDoc = exports.MainImageFragmentDoc = exports.RawImageFragmentDoc = exports.FlourishFragmentDoc = exports.VideoFragmentDoc = exports.TweetFragmentDoc = exports.LayoutImageFragmentDoc = exports.ImageSetFragmentDoc = exports.PictureFragmentDoc = exports.PictureFieldsFragmentDoc = exports.RecommendedFragmentDoc = exports.TeaserFragmentDoc = exports.TopperFragmentDoc = exports.ImageFragmentDoc = exports.ImageSourceFragmentDoc = exports.ConceptFragmentDoc = exports.IntroFragmentDoc = exports.StructuredTreeFragmentDoc =
|
|
6
|
+
exports.getSdk = exports.ArticleFromJsonDocument = exports.ArticleDocument = exports.ArticleFieldsFragmentDoc = exports.MediaFragmentDoc = exports.ContentFragmentDoc = exports.DesignFragmentDoc = exports.StructuredContentFragmentDoc = exports.ArticleReferencesFragmentDoc = exports.ScrollyImageFragmentDoc = exports.MainImageFragmentDoc = exports.RawImageFragmentDoc = exports.FlourishFragmentDoc = exports.VideoFragmentDoc = exports.TweetFragmentDoc = exports.LayoutImageFragmentDoc = exports.ImageSetFragmentDoc = exports.PictureFragmentDoc = exports.PictureFieldsFragmentDoc = exports.RecommendedFragmentDoc = exports.TeaserFragmentDoc = exports.TopperFragmentDoc = exports.ImageFragmentDoc = exports.ImageSourceFragmentDoc = exports.ConceptFragmentDoc = exports.IntroFragmentDoc = exports.StructuredTreeFragmentDoc = void 0;
|
|
7
7
|
const graphql_tag_1 = __importDefault(require("graphql-tag"));
|
|
8
|
-
exports.MediaFragmentDoc = (0, graphql_tag_1.default) `
|
|
9
|
-
fragment Media on Media {
|
|
10
|
-
url
|
|
11
|
-
mediaType
|
|
12
|
-
}
|
|
13
|
-
`;
|
|
14
8
|
exports.StructuredTreeFragmentDoc = (0, graphql_tag_1.default) `
|
|
15
9
|
fragment StructuredTree on StructuredContent {
|
|
16
10
|
tree
|
|
@@ -62,6 +56,7 @@ exports.TopperFragmentDoc = (0, graphql_tag_1.default) `
|
|
|
62
56
|
backgroundColour
|
|
63
57
|
backgroundBox
|
|
64
58
|
textShadow
|
|
59
|
+
followButtonVariant
|
|
65
60
|
intro {
|
|
66
61
|
...Intro
|
|
67
62
|
}
|
|
@@ -435,37 +430,58 @@ exports.ContentFragmentDoc = (0, graphql_tag_1.default) `
|
|
|
435
430
|
${exports.StructuredContentFragmentDoc}
|
|
436
431
|
${exports.ConceptFragmentDoc}
|
|
437
432
|
${exports.DesignFragmentDoc}`;
|
|
438
|
-
exports.
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
433
|
+
exports.MediaFragmentDoc = (0, graphql_tag_1.default) `
|
|
434
|
+
fragment Media on Media {
|
|
435
|
+
url
|
|
436
|
+
mediaType
|
|
437
|
+
}
|
|
438
|
+
`;
|
|
439
|
+
exports.ArticleFieldsFragmentDoc = (0, graphql_tag_1.default) `
|
|
440
|
+
fragment ArticleFields on Content {
|
|
441
|
+
...Content
|
|
442
|
+
... on LiveBlogPackage {
|
|
443
|
+
liveBlogPosts {
|
|
444
|
+
...Content
|
|
447
445
|
}
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
446
|
+
realtime
|
|
447
|
+
}
|
|
448
|
+
... on ContentPackage {
|
|
449
|
+
contains {
|
|
450
|
+
...Teaser
|
|
451
|
+
standfirst
|
|
453
452
|
}
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
453
|
+
}
|
|
454
|
+
... on Audio {
|
|
455
|
+
media {
|
|
456
|
+
...Media
|
|
458
457
|
}
|
|
459
458
|
}
|
|
460
459
|
}
|
|
461
460
|
${exports.ContentFragmentDoc}
|
|
462
461
|
${exports.TeaserFragmentDoc}
|
|
463
462
|
${exports.MediaFragmentDoc}`;
|
|
463
|
+
exports.ArticleDocument = (0, graphql_tag_1.default) `
|
|
464
|
+
query Article($uuid: String!, $useVanities: Boolean!) {
|
|
465
|
+
content(uuid: $uuid) {
|
|
466
|
+
...ArticleFields
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
${exports.ArticleFieldsFragmentDoc}`;
|
|
470
|
+
exports.ArticleFromJsonDocument = (0, graphql_tag_1.default) `
|
|
471
|
+
query ArticleFromJSON($content: JSON!, $useVanities: Boolean!) {
|
|
472
|
+
contentFromJSON(content: $content) {
|
|
473
|
+
...ArticleFields
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
${exports.ArticleFieldsFragmentDoc}`;
|
|
464
477
|
const defaultWrapper = (action, _operationName, _operationType) => action();
|
|
465
478
|
function getSdk(client, withWrapper = defaultWrapper) {
|
|
466
479
|
return {
|
|
467
480
|
Article(variables, requestHeaders) {
|
|
468
481
|
return withWrapper((wrappedRequestHeaders) => client.request(exports.ArticleDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), 'Article', 'query');
|
|
482
|
+
},
|
|
483
|
+
ArticleFromJSON(variables, requestHeaders) {
|
|
484
|
+
return withWrapper((wrappedRequestHeaders) => client.request(exports.ArticleFromJsonDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), 'ArticleFromJSON', 'query');
|
|
469
485
|
}
|
|
470
486
|
};
|
|
471
487
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":";;;;;;AAEA,8DAA8B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -17,8 +17,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.apiUrl = void 0;
|
|
20
21
|
const generated_1 = require("./generated");
|
|
21
22
|
const schema_version_1 = require("./schema-version");
|
|
23
|
+
const client_version_1 = require("./client-version");
|
|
22
24
|
const graphql_request_1 = require("graphql-request");
|
|
23
25
|
const semver_1 = __importDefault(require("semver"));
|
|
24
26
|
const DEFAULT_CLIENT_TIMEOUT = 60000; //one minute
|
|
@@ -35,22 +37,61 @@ function apiVersion(version) {
|
|
|
35
37
|
? `v${parsedVersion.major}`
|
|
36
38
|
: `v${parsedVersion.major}.${parsedVersion.minor}`;
|
|
37
39
|
}
|
|
40
|
+
function apiUrl(apiMajorVersion, baseUrl) {
|
|
41
|
+
const baseUrlPathRegex = /\/__content(?<version>\/v(?:0\.)?\d+)?$/;
|
|
42
|
+
if (baseUrl) {
|
|
43
|
+
const pathMatches = baseUrl.match(baseUrlPathRegex);
|
|
44
|
+
if (pathMatches) {
|
|
45
|
+
if (pathMatches.groups?.version) {
|
|
46
|
+
return baseUrl;
|
|
47
|
+
}
|
|
48
|
+
return baseUrl + '/' + apiMajorVersion;
|
|
49
|
+
}
|
|
50
|
+
return baseUrl + '/__content/' + apiMajorVersion;
|
|
51
|
+
}
|
|
52
|
+
return `https://www.ft.com/__content/${apiMajorVersion}`;
|
|
53
|
+
}
|
|
54
|
+
exports.apiUrl = apiUrl;
|
|
55
|
+
// Reliability Kit doesn't provide a base class for non-operational errors.
|
|
56
|
+
// this class is more or less compatible with how log-errors serialises errors.
|
|
57
|
+
// https://github.com/Financial-Times/dotcom-reliability-kit/issues/238
|
|
58
|
+
class CustomError extends Error {
|
|
59
|
+
constructor({ message, cause, ...data }) {
|
|
60
|
+
super(message ?? 'An error occurred in cp-content-pipeline-client');
|
|
61
|
+
this.code = 'CP_CONTENT_PIPELINE_CLIENT_ERROR';
|
|
62
|
+
this.isOperational = false;
|
|
63
|
+
this.cause = cause;
|
|
64
|
+
this.data = data;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
38
67
|
function init(options) {
|
|
39
68
|
if (!options.systemCode) {
|
|
40
69
|
throw new Error('A systemCode option is required. This should be the Biz Ops system code of the app sending requests to cp-content-pipeline');
|
|
41
70
|
}
|
|
42
71
|
const apiMajorVersion = apiVersion(schema_version_1.version);
|
|
43
|
-
const
|
|
44
|
-
const client = new graphql_request_1.GraphQLClient(apiUrl, {
|
|
72
|
+
const client = new graphql_request_1.GraphQLClient(apiUrl(apiMajorVersion, options.baseUrl), {
|
|
45
73
|
timeout: options.timeout ?? DEFAULT_CLIENT_TIMEOUT,
|
|
46
74
|
headers: {
|
|
47
|
-
'user-agent': `cp-content-pipeline-client/${schema_version_1.version}; (+${options.systemCode})`,
|
|
75
|
+
'user-agent': `cp-content-pipeline-client/${client_version_1.version}; cp-content-pipeline-schema/${schema_version_1.version}; (+${options.systemCode})`,
|
|
48
76
|
'system-code': options.systemCode,
|
|
49
77
|
// Include the full schema version number as a header as it might be useful for debugging
|
|
50
78
|
'schema-version': schema_version_1.version,
|
|
51
79
|
},
|
|
52
80
|
});
|
|
53
|
-
return (0, generated_1.getSdk)(client)
|
|
81
|
+
return (0, generated_1.getSdk)(client, (action, name, type) => action().catch((error) => {
|
|
82
|
+
if (error instanceof graphql_request_1.ClientError) {
|
|
83
|
+
const newError = new CustomError({
|
|
84
|
+
code: 'CP_CONTENT_PIPELINE_CLIENT_ERROR',
|
|
85
|
+
message: error.message,
|
|
86
|
+
schemaVersion: schema_version_1.version,
|
|
87
|
+
clientVersion: client_version_1.version,
|
|
88
|
+
variables: error.request.variables,
|
|
89
|
+
operation: { name, type },
|
|
90
|
+
});
|
|
91
|
+
throw newError;
|
|
92
|
+
}
|
|
93
|
+
throw error;
|
|
94
|
+
}));
|
|
54
95
|
}
|
|
55
96
|
exports.default = init;
|
|
56
97
|
__exportStar(require("./generated"), exports);
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const _1 = require(".");
|
|
4
|
+
describe('baseUrl version logic', () => {
|
|
5
|
+
it('should use ft.com/__content with version suffix when no baseUrl', () => {
|
|
6
|
+
expect((0, _1.apiUrl)('v0.7')).toBe('https://www.ft.com/__content/v0.7');
|
|
7
|
+
});
|
|
8
|
+
it('should add version suffix to baseUrl without one', () => {
|
|
9
|
+
expect((0, _1.apiUrl)('v0.7', 'http://base-url.example.com')).toBe('http://base-url.example.com/__content/v0.7');
|
|
10
|
+
});
|
|
11
|
+
it('should add version suffix to baseUrl partial suffix', () => {
|
|
12
|
+
expect((0, _1.apiUrl)('v0.7', 'http://base-url.example.com/__content')).toBe('http://base-url.example.com/__content/v0.7');
|
|
13
|
+
});
|
|
14
|
+
it('should use version suffix from baseUrl with one', () => {
|
|
15
|
+
expect((0, _1.apiUrl)('v0.7', 'http://base-url.example.com/__content/v0.6')).toBe('http://base-url.example.com/__content/v0.6');
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":";;AAAA,wBAA0B;AAE1B,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC,IAAA,SAAM,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,IAAA,SAAM,EAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC,CAAC,IAAI,CACxD,4CAA4C,CAC7C,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,IAAA,SAAM,EAAC,MAAM,EAAE,uCAAuC,CAAC,CAAC,CAAC,IAAI,CAClE,4CAA4C,CAC7C,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,IAAA,SAAM,EAAC,MAAM,EAAE,4CAA4C,CAAC,CAAC,CAAC,IAAI,CACvE,4CAA4C,CAC7C,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/lib/schema-version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "0.7.
|
|
1
|
+
export declare const version = "0.7.18";
|
package/lib/schema-version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@financial-times/cp-content-pipeline-client",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.19",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"devDependencies": {
|
|
12
12
|
"@dotcom-tool-kit/npm": "^3.1.0",
|
|
13
13
|
"@financial-times/content-tree": "github:financial-times/content-tree#14370e3",
|
|
14
|
-
"@financial-times/cp-content-pipeline-schema": "^0.7.
|
|
14
|
+
"@financial-times/cp-content-pipeline-schema": "^0.7.18",
|
|
15
15
|
"@graphql-tools/merge": "^8.3.6",
|
|
16
16
|
"@types/lodash.mapvalues": "^4.6.7",
|
|
17
17
|
"@types/semver": "^7.3.13",
|
package/queries/article.graphql
CHANGED
|
@@ -65,6 +65,7 @@ fragment Topper on Topper {
|
|
|
65
65
|
backgroundColour
|
|
66
66
|
backgroundBox
|
|
67
67
|
textShadow
|
|
68
|
+
followButtonVariant
|
|
68
69
|
|
|
69
70
|
intro {
|
|
70
71
|
...Intro
|
|
@@ -399,25 +400,35 @@ fragment Content on Content {
|
|
|
399
400
|
url
|
|
400
401
|
}
|
|
401
402
|
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
...Content
|
|
408
|
-
}
|
|
409
|
-
realtime
|
|
403
|
+
fragment ArticleFields on Content {
|
|
404
|
+
...Content
|
|
405
|
+
... on LiveBlogPackage {
|
|
406
|
+
liveBlogPosts {
|
|
407
|
+
...Content
|
|
410
408
|
}
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
409
|
+
realtime
|
|
410
|
+
}
|
|
411
|
+
... on ContentPackage {
|
|
412
|
+
contains {
|
|
413
|
+
...Teaser
|
|
414
|
+
standfirst
|
|
416
415
|
}
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
416
|
+
}
|
|
417
|
+
... on Audio {
|
|
418
|
+
media {
|
|
419
|
+
...Media
|
|
421
420
|
}
|
|
422
421
|
}
|
|
423
422
|
}
|
|
423
|
+
|
|
424
|
+
query Article($uuid: String!, $useVanities: Boolean!) {
|
|
425
|
+
content(uuid: $uuid) {
|
|
426
|
+
...ArticleFields
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
query ArticleFromJSON($content: JSON!, $useVanities: Boolean!) {
|
|
431
|
+
contentFromJSON(content: $content) {
|
|
432
|
+
...ArticleFields
|
|
433
|
+
}
|
|
434
|
+
}
|