@financial-times/cp-content-pipeline-client 0.6.17 → 0.6.18
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 +15 -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 +165 -0
- package/lib/generated/index.js +1 -0
- 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 +1 -0
- package/src/client-version.ts +2 -0
- package/src/generated/index.ts +26 -15
- 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
|
@@ -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.17";
|
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.18",
|
|
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.17",
|
|
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