@squiz/dx-common-lib 1.39.1-alpha.8 → 1.40.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 (49) hide show
  1. package/.npm/_logs/{2023-06-26T04_04_44_628Z-debug-0.log → 2023-07-06T01_50_58_148Z-debug-0.log} +20 -20
  2. package/lib/api-key-validation/ApiKeyValidationService.d.ts +8 -3
  3. package/lib/api-key-validation/CloudflareApiKeyService.d.ts +9 -4
  4. package/lib/api-key-validation/CloudflareApiKeyService.js +24 -12
  5. package/lib/api-key-validation/CloudflareApiKeyService.js.map +1 -1
  6. package/lib/api-key-validation/CloudflareApiKeyService.spec.js +26 -23
  7. package/lib/api-key-validation/CloudflareApiKeyService.spec.js.map +1 -1
  8. package/lib/api-key-validation/DevelopmentApiKeyService.d.ts +8 -3
  9. package/lib/api-key-validation/DevelopmentApiKeyService.js +14 -5
  10. package/lib/api-key-validation/DevelopmentApiKeyService.js.map +1 -1
  11. package/lib/api-key-validation/DevelopmentApiKeyService.spec.js +10 -6
  12. package/lib/api-key-validation/DevelopmentApiKeyService.spec.js.map +1 -1
  13. package/lib/assertions/assertIsArray.d.ts +1 -0
  14. package/lib/assertions/assertIsArray.js +15 -0
  15. package/lib/assertions/assertIsArray.js.map +1 -0
  16. package/lib/assertions/assertIsArray.spec.js +16 -0
  17. package/lib/assertions/assertIsArray.spec.js.map +1 -0
  18. package/lib/assertions/index.d.ts +1 -0
  19. package/lib/assertions/index.js +1 -0
  20. package/lib/assertions/index.js.map +1 -1
  21. package/lib/formatted-text/formattedTextToHtmlString.d.ts +7 -1
  22. package/lib/formatted-text/formattedTextToHtmlString.js +32 -1
  23. package/lib/formatted-text/formattedTextToHtmlString.js.map +1 -1
  24. package/lib/formatted-text/formattedTextToHtmlString.spec.js +30 -0
  25. package/lib/formatted-text/formattedTextToHtmlString.spec.js.map +1 -1
  26. package/lib/index.d.ts +0 -1
  27. package/lib/index.js +0 -1
  28. package/lib/index.js.map +1 -1
  29. package/package.json +5 -4
  30. package/src/api-key-validation/ApiKeyValidationService.ts +9 -3
  31. package/src/api-key-validation/CloudflareApiKeyService.spec.ts +38 -24
  32. package/src/api-key-validation/CloudflareApiKeyService.ts +27 -13
  33. package/src/api-key-validation/DevelopmentApiKeyService.spec.ts +12 -6
  34. package/src/api-key-validation/DevelopmentApiKeyService.ts +16 -5
  35. package/src/assertions/assertIsArray.spec.ts +16 -0
  36. package/src/assertions/assertIsArray.ts +11 -0
  37. package/src/assertions/index.ts +1 -0
  38. package/src/formatted-text/formattedTextToHtmlString.spec.ts +40 -0
  39. package/src/formatted-text/formattedTextToHtmlString.ts +31 -2
  40. package/src/index.ts +0 -1
  41. package/tsconfig.tsbuildinfo +1 -1
  42. package/lib/server-utils/apiKeyMiddleware.d.ts +0 -6
  43. package/lib/server-utils/apiKeyMiddleware.js +0 -23
  44. package/lib/server-utils/apiKeyMiddleware.js.map +0 -1
  45. package/lib/server-utils/apiKeyMiddleware.spec.js +0 -40
  46. package/lib/server-utils/apiKeyMiddleware.spec.js.map +0 -1
  47. package/src/server-utils/apiKeyMiddleware.spec.ts +0 -51
  48. package/src/server-utils/apiKeyMiddleware.ts +0 -26
  49. /package/lib/{server-utils/apiKeyMiddleware.spec.d.ts → assertions/assertIsArray.spec.d.ts} +0 -0
@@ -2,36 +2,36 @@
2
2
  1 info using npm@9.5.0
3
3
  2 info using node@v18.15.0
4
4
  3 timing npm:load:whichnode Completed in 1ms
5
- 4 timing config:load:defaults Completed in 3ms
6
- 5 timing config:load:file:/usr/local/lib/node_modules/npm/npmrc Completed in 0ms
7
- 6 timing config:load:builtin Completed in 0ms
5
+ 4 timing config:load:defaults Completed in 2ms
6
+ 5 timing config:load:file:/usr/local/lib/node_modules/npm/npmrc Completed in 1ms
7
+ 6 timing config:load:builtin Completed in 1ms
8
8
  7 timing config:load:cli Completed in 2ms
9
- 8 timing config:load:env Completed in 2ms
9
+ 8 timing config:load:env Completed in 1ms
10
10
  9 info found workspace root at /builds/developer-experience/cmp
11
11
  10 timing config:load:file:/builds/developer-experience/cmp/.npmrc Completed in 0ms
12
- 11 timing config:load:project Completed in 28ms
13
- 12 timing config:load:file:/root/.npmrc Completed in 2ms
14
- 13 timing config:load:user Completed in 2ms
12
+ 11 timing config:load:project Completed in 25ms
13
+ 12 timing config:load:file:/root/.npmrc Completed in 1ms
14
+ 13 timing config:load:user Completed in 1ms
15
15
  14 timing config:load:file:/usr/local/etc/npmrc Completed in 0ms
16
16
  15 timing config:load:global Completed in 0ms
17
- 16 timing config:load:setEnvs Completed in 2ms
18
- 17 timing config:load Completed in 39ms
19
- 18 timing npm:load:configload Completed in 39ms
17
+ 16 timing config:load:setEnvs Completed in 1ms
18
+ 17 timing config:load Completed in 34ms
19
+ 18 timing npm:load:configload Completed in 34ms
20
20
  19 timing npm:load:mkdirpcache Completed in 0ms
21
21
  20 timing npm:load:mkdirplogs Completed in 0ms
22
22
  21 verbose title npm run compile
23
23
  22 verbose argv "run" "compile" "--"
24
- 23 timing npm:load:setTitle Completed in 2ms
25
- 24 timing config:load:flatten Completed in 5ms
26
- 25 timing npm:load:display Completed in 6ms
27
- 26 verbose logfile logs-max:10 dir:/builds/developer-experience/cmp/packages/dx-common-lib/.npm/_logs/2023-06-26T04_04_44_628Z-
28
- 27 verbose logfile /builds/developer-experience/cmp/packages/dx-common-lib/.npm/_logs/2023-06-26T04_04_44_628Z-debug-0.log
29
- 28 timing npm:load:logFile Completed in 4ms
24
+ 23 timing npm:load:setTitle Completed in 1ms
25
+ 24 timing config:load:flatten Completed in 4ms
26
+ 25 timing npm:load:display Completed in 5ms
27
+ 26 verbose logfile logs-max:10 dir:/builds/developer-experience/cmp/packages/dx-common-lib/.npm/_logs/2023-07-06T01_50_58_148Z-
28
+ 27 verbose logfile /builds/developer-experience/cmp/packages/dx-common-lib/.npm/_logs/2023-07-06T01_50_58_148Z-debug-0.log
29
+ 28 timing npm:load:logFile Completed in 3ms
30
30
  29 timing npm:load:timers Completed in 0ms
31
- 30 timing npm:load:configScope Completed in 0ms
32
- 31 timing npm:load Completed in 52ms
31
+ 30 timing npm:load:configScope Completed in 1ms
32
+ 31 timing npm:load Completed in 48ms
33
33
  32 silly logfile done cleaning log files
34
- 33 timing command:run Completed in 4325ms
34
+ 33 timing command:run Completed in 5161ms
35
35
  34 verbose exit 0
36
- 35 timing npm Completed in 4390ms
36
+ 35 timing npm Completed in 5221ms
37
37
  36 info ok
@@ -1,5 +1,10 @@
1
+ /// <reference types="node" />
2
+ import { IncomingMessage } from 'http';
1
3
  export interface ApiKeyValidationService {
2
- keyIsValid(key: string | undefined): boolean;
3
- matrixKeyIsValid(key: string | undefined): boolean;
4
- getMatrixKeys(): string[];
4
+ interServiceKeyIsValid(key: string | undefined): boolean;
5
+ /**
6
+ * @deprecated Suggest moving towards using JWT authentication.
7
+ */
8
+ matrixKeyIsValid(key: string | undefined, request: IncomingMessage): boolean;
9
+ getInterServiceKeys(): string[];
5
10
  }
@@ -1,18 +1,23 @@
1
+ /// <reference types="node" />
1
2
  import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
2
3
  import { ApiKeyValidationService } from './ApiKeyValidationService';
3
4
  import { Logger } from '@squiz/dx-logger-lib';
5
+ import { IncomingMessage } from 'http';
4
6
  export interface CloudFlareKeys {
5
- keys: string[];
6
7
  'matrix-keys': string[];
8
+ 'inter-service-keys': string[];
7
9
  }
8
10
  export declare class CloudflareApiKeyService implements ApiKeyValidationService {
9
11
  protected secretName: string;
10
12
  protected secretsClient: SecretsManagerClient;
11
13
  protected logger: Logger;
12
14
  constructor(secretName: string, logger?: Logger);
13
- keyIsValid(key: string): boolean;
14
- matrixKeyIsValid(key: string): boolean;
15
+ /**
16
+ * @deprecated Suggest moving towards using JWT authentication.
17
+ */
18
+ matrixKeyIsValid(key: string, request: IncomingMessage): boolean;
19
+ interServiceKeyIsValid(key: string): boolean;
15
20
  protected getValidApiKeys(): Promise<CloudFlareKeys>;
16
21
  refreshApiKeys(): Promise<void>;
17
- getMatrixKeys(): string[];
22
+ getInterServiceKeys(): string[];
18
23
  }
@@ -5,8 +5,8 @@ const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
5
5
  const UnAuthenticatedRequestError_1 = require("../error/UnAuthenticatedRequestError");
6
6
  const dx_logger_lib_1 = require("@squiz/dx-logger-lib");
7
7
  let validKeys = {
8
- keys: [],
9
8
  'matrix-keys': [],
9
+ 'inter-service-keys': [],
10
10
  };
11
11
  let refreshInterval;
12
12
  // number must be smaller than 24 days.
@@ -23,17 +23,28 @@ class CloudflareApiKeyService {
23
23
  }
24
24
  this.logger = logger;
25
25
  }
26
- keyIsValid(key) {
27
- if (validKeys.keys.length == 0) {
26
+ /**
27
+ * @deprecated Suggest moving towards using JWT authentication.
28
+ */
29
+ matrixKeyIsValid(key, request) {
30
+ var _a;
31
+ if (validKeys['matrix-keys'].length == 0) {
28
32
  throw new UnAuthenticatedRequestError_1.UnAuthenticatedRequestError('No api keys to check against');
29
33
  }
30
- return validKeys.keys.includes(key);
34
+ if (validKeys['matrix-keys'].includes(key)) {
35
+ this.logger.info('Request authenticated using legacy Matrix API key', {
36
+ url: request.url,
37
+ userAgent: (_a = request.headers) === null || _a === void 0 ? void 0 : _a['user-agent'],
38
+ });
39
+ return true;
40
+ }
41
+ return false;
31
42
  }
32
- matrixKeyIsValid(key) {
33
- if (validKeys['matrix-keys'].length == 0) {
34
- throw new UnAuthenticatedRequestError_1.UnAuthenticatedRequestError('No api keys to check against');
43
+ interServiceKeyIsValid(key) {
44
+ if (validKeys['inter-service-keys'].length == 0) {
45
+ throw new UnAuthenticatedRequestError_1.UnAuthenticatedRequestError('No inter service api keys to check against');
35
46
  }
36
- return validKeys['matrix-keys'].includes(key);
47
+ return validKeys['inter-service-keys'].includes(key);
37
48
  }
38
49
  async getValidApiKeys() {
39
50
  let secretValue;
@@ -51,7 +62,7 @@ class CloudflareApiKeyService {
51
62
  throw new Error('cloudflare api key SecretString undefined');
52
63
  }
53
64
  const secret = JSON.parse(secretValue.SecretString);
54
- if (secret.keys) {
65
+ if (secret['matrix-keys'] && secret['inter-service-keys']) {
55
66
  return secret;
56
67
  }
57
68
  throw new Error('api keys retrieved and decoded successfully but contained no values');
@@ -63,7 +74,8 @@ class CloudflareApiKeyService {
63
74
  async refreshApiKeys() {
64
75
  this.logger.info('refreshing keys');
65
76
  validKeys = await this.getValidApiKeys();
66
- this.logger.info(`number of valid keys found: ${validKeys.keys.length}`);
77
+ this.logger.info(`found ${validKeys['matrix-keys'].length} valid matrix keys`);
78
+ this.logger.info(`found ${validKeys['inter-service-keys'].length} valid inter service keys`);
67
79
  if (!refreshInterval) {
68
80
  refreshInterval = setInterval(async () => {
69
81
  await this.refreshApiKeys();
@@ -71,8 +83,8 @@ class CloudflareApiKeyService {
71
83
  }
72
84
  }
73
85
  // temporary method, to be removed when DXP auth is properly implemented
74
- getMatrixKeys() {
75
- return validKeys['matrix-keys'];
86
+ getInterServiceKeys() {
87
+ return validKeys['inter-service-keys'];
76
88
  }
77
89
  }
78
90
  exports.CloudflareApiKeyService = CloudflareApiKeyService;
@@ -1 +1 @@
1
- {"version":3,"file":"CloudflareApiKeyService.js","sourceRoot":"","sources":["../../src/api-key-validation/CloudflareApiKeyService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CloudflareApiKeyService.js","sourceRoot":"","sources":["../../src/api-key-validation/CloudflareApiKeyService.ts"],"names":[],"mappings":";;;AAAA,4EAIyC;AACzC,sFAAmF;AAEnF,wDAAyD;AAQzD,IAAI,SAAS,GAAmB;IAC9B,aAAa,EAAE,EAAE;IACjB,oBAAoB,EAAE,EAAE;CACzB,CAAC;AAEF,IAAI,eAA+C,CAAC;AACpD,uCAAuC;AACvC,2EAA2E;AAC3E,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,qCAAqC;AAEjF,MAAa,uBAAuB;IAIlC,YAAsB,UAAkB,EAAE,MAAe;QAAnC,eAAU,GAAV,UAAU,CAAQ;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,6CAAoB,CAAC;YAC5C,MAAM,EAAE,gBAAgB;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAA,yBAAS,EAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;SACzD;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,GAAW,EAAE,OAAwB;;QAC3D,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;YACxC,MAAM,IAAI,yDAA2B,CAAC,8BAA8B,CAAC,CAAC;SACvE;QAED,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE;gBACpE,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,SAAS,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAG,YAAY,CAAC;aAC3C,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,sBAAsB,CAAC,GAAW;QACvC,IAAI,SAAS,CAAC,oBAAoB,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/C,MAAM,IAAI,yDAA2B,CAAC,4CAA4C,CAAC,CAAC;SACrF;QAED,OAAO,SAAS,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAES,KAAK,CAAC,eAAe;QAC7B,IAAI,WAAwC,CAAC;QAE7C,IAAI;YACF,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CACzC,IAAI,8CAAqB,CAAC;gBACxB,QAAQ,EAAE,IAAI,CAAC,UAAU;aAC1B,CAAC,CACH,CAAC;SACH;QAAC,OAAO,CAAM,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;SACnE;QAED,IAAI;YACF,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;gBAC7B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;aAC9D;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAEpD,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,oBAAoB,CAAC,EAAE;gBACzD,OAAO,MAAM,CAAC;aACf;YAED,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;SACxF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;SAC/D;IACH,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACpC,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAEzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,aAAa,CAAC,CAAC,MAAM,oBAAoB,CAAC,CAAC;QAC/E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,oBAAoB,CAAC,CAAC,MAAM,2BAA2B,CAAC,CAAC;QAE7F,IAAI,CAAC,eAAe,EAAE;YACpB,eAAe,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;gBACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC,EAAE,aAAa,CAAC,CAAC;SACnB;IACH,CAAC;IAED,wEAAwE;IACjE,mBAAmB;QACxB,OAAO,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACzC,CAAC;CACF;AA5FD,0DA4FC"}
@@ -15,14 +15,14 @@ describe('CloudflareApiKeyService', () => {
15
15
  });
16
16
  it('should make a request to the aws secrets manager when refreshing the keys', async () => {
17
17
  sendSpy.mockClear();
18
- sendSpy.mockImplementationOnce(() => Promise.resolve({ SecretString: '{"keys":[]}' }));
18
+ sendSpy.mockImplementationOnce(() => Promise.resolve({ SecretString: '{"matrix-keys":[], "inter-service-keys":[]}' }));
19
19
  await service.refreshApiKeys();
20
20
  expect(sendSpy.mock.lastCall[0].input).toEqual({ SecretId: 'my-secret-name' });
21
21
  expect(sendSpy.mock.lastCall[0]).toBeInstanceOf(client_secrets_manager_1.GetSecretValueCommand);
22
22
  });
23
23
  it('should start a refresh timer once called, but only once', (done) => {
24
24
  sendSpy.mockClear();
25
- sendSpy.mockImplementationOnce(() => Promise.resolve({ SecretString: '{"keys":["my-new-key"]}' }));
25
+ sendSpy.mockImplementationOnce(() => Promise.resolve({ SecretString: '{"matrix-keys":[], "inter-service-keys":["my-new-key"]}' }));
26
26
  const spy = jest.spyOn(service, 'refreshApiKeys');
27
27
  expect(spy).not.toBeCalled();
28
28
  expect(setInterval).toHaveBeenCalledTimes(1); // for the above 2 tests
@@ -30,62 +30,65 @@ describe('CloudflareApiKeyService', () => {
30
30
  expect(spy).toHaveBeenCalled();
31
31
  jest.useRealTimers();
32
32
  setTimeout(() => {
33
- expect(service.keyIsValid('my-new-key')).toEqual(true);
33
+ expect(service.interServiceKeyIsValid('my-new-key')).toEqual(true);
34
34
  done();
35
35
  }, 5);
36
36
  });
37
37
  });
38
- describe('keyIsValid', () => {
38
+ describe('matrixKeyIsValid', () => {
39
39
  describe('when there are no api keys', () => {
40
40
  beforeAll(async () => {
41
- sendSpy.mockImplementation(() => Promise.resolve({ SecretString: '{"keys":[]}' }));
41
+ sendSpy.mockImplementation(() => Promise.resolve({ SecretString: '{"matrix-keys":[], "inter-service-keys":[]}' }));
42
42
  await service.refreshApiKeys();
43
43
  });
44
44
  it('should throw an unauthenticated request error when validating a key if there are no keys to validate against', () => {
45
- expect(() => service.keyIsValid('anything')).toThrowError(new UnAuthenticatedRequestError_1.UnAuthenticatedRequestError('No api keys to check against'));
45
+ expect(() => service.matrixKeyIsValid('anything', {})).toThrowError(new UnAuthenticatedRequestError_1.UnAuthenticatedRequestError('No api keys to check against'));
46
46
  });
47
47
  });
48
48
  describe('when there are api keys', () => {
49
49
  beforeAll(async () => {
50
- sendSpy.mockImplementation(() => Promise.resolve({ SecretString: '{"keys":["my-key", "my-other-key"], "matrix-keys":["my-matrix-key"]}' }));
50
+ sendSpy.mockImplementation(() => Promise.resolve({
51
+ SecretString: '{"matrix-keys":["my-matrix-key"], "inter-service-keys":["my-inter-service-key"]}',
52
+ }));
51
53
  await service.refreshApiKeys();
52
54
  });
53
- it('should return true when there are keys loaded and the input key is in the list of valid keys', () => {
54
- expect(service.keyIsValid('my-key')).toEqual(true);
55
- expect(service.keyIsValid('my-other-key')).toEqual(true);
55
+ it('should return true when there are keys loaded and the input key is in the list of valid matrix keys', () => {
56
+ expect(service.matrixKeyIsValid('my-matrix-key', {})).toEqual(true);
56
57
  });
57
- it('should return false when there are keys loaded and the input key is not in the list of valid keys', async () => {
58
- expect(service.keyIsValid('not-my-key')).toEqual(false);
58
+ it('should return false when there are keys loaded and the input key is not in the list of valid matrix keys', async () => {
59
+ expect(service.matrixKeyIsValid('not-my-key', {})).toEqual(false);
59
60
  });
60
- it('should return false if trying to validate a matrix key', () => {
61
- expect(service.keyIsValid('my-matrix-key')).toEqual(false);
61
+ it('should return false when using non matrix keys', async () => {
62
+ expect(service.matrixKeyIsValid('my-inter-service-key', {})).toEqual(false);
62
63
  });
63
64
  });
64
65
  });
65
- describe('matrixKeyIsValid', () => {
66
+ describe('interServiceKeyIsValid', () => {
66
67
  describe('when there are no api keys', () => {
67
68
  beforeAll(async () => {
68
- sendSpy.mockImplementation(() => Promise.resolve({ SecretString: '{"keys":[], "matrix-keys":[]}' }));
69
+ sendSpy.mockImplementation(() => Promise.resolve({ SecretString: '{"matrix-keys":[], "inter-service-keys":[]}' }));
69
70
  await service.refreshApiKeys();
70
71
  });
71
72
  it('should throw an unauthenticated request error when validating a key if there are no keys to validate against', () => {
72
- expect(() => service.matrixKeyIsValid('anything')).toThrowError(new UnAuthenticatedRequestError_1.UnAuthenticatedRequestError('No api keys to check against'));
73
+ expect(() => service.interServiceKeyIsValid('anything')).toThrowError(new UnAuthenticatedRequestError_1.UnAuthenticatedRequestError('No inter service api keys to check against'));
73
74
  });
74
75
  });
75
76
  describe('when there are api keys', () => {
76
77
  beforeAll(async () => {
77
- sendSpy.mockImplementation(() => Promise.resolve({ SecretString: '{"keys":["my-key", "my-other-key"], "matrix-keys":["my-matrix-key"]}' }));
78
+ sendSpy.mockImplementation(() => Promise.resolve({
79
+ SecretString: '{"keys":["my-key", "my-other-key"], "matrix-keys":["my-matrix-key"], "inter-service-keys":["my-inter-service-key"]}',
80
+ }));
78
81
  await service.refreshApiKeys();
79
82
  });
80
83
  it('should return true when there are keys loaded and the input key is in the list of valid matrix keys', () => {
81
- expect(service.matrixKeyIsValid('my-matrix-key')).toEqual(true);
84
+ expect(service.interServiceKeyIsValid('my-inter-service-key')).toEqual(true);
82
85
  });
83
86
  it('should return false when there are keys loaded and the input key is not in the list of valid matrix keys', async () => {
84
- expect(service.matrixKeyIsValid('not-my-key')).toEqual(false);
87
+ expect(service.interServiceKeyIsValid('not-my-key')).toEqual(false);
85
88
  });
86
- it('should return false when using non matrix keys', async () => {
87
- expect(service.matrixKeyIsValid('my-key')).toEqual(false);
88
- expect(service.matrixKeyIsValid('my-other-key')).toEqual(false);
89
+ it('should return false when using non inter-service keys', async () => {
90
+ expect(service.interServiceKeyIsValid('my-key')).toEqual(false);
91
+ expect(service.interServiceKeyIsValid('my-matrix-key')).toEqual(false);
89
92
  });
90
93
  });
91
94
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CloudflareApiKeyService.spec.js","sourceRoot":"","sources":["../../src/api-key-validation/CloudflareApiKeyService.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CloudflareApiKeyService.spec.js","sourceRoot":"","sources":["../../src/api-key-validation/CloudflareApiKeyService.spec.ts"],"names":[],"mappings":";;AAAA,4EAA8F;AAC9F,sFAAmF;AACnF,uEAAoE;AAGpE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,6CAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAEnE,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAElC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,MAAM,OAAO,GAAG,IAAI,iDAAuB,CAAC,gBAAgB,CAAC,CAAC;IAE9D,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;YACvF,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAEpF,MAAM,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CACzD,IAAI,KAAK,CAAC,4CAA4C,CAAC,CACxD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;YACzF,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAClC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,6CAA6C,EAAE,CAAC,CACjF,CAAC;YACF,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;YAE/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC/E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,8CAAqB,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,CAAC,IAAI,EAAE,EAAE;YACrE,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAClC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,yDAAyD,EAAE,CAAC,CAC7F,CAAC;YACF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAElD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YAC7B,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB;YACtE,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAE5B,MAAM,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAE/B,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnE,IAAI,EAAE,CAAC;YACT,CAAC,EAAE,CAAC,CAAC,CAAC;QACR,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;YAC1C,SAAS,CAAC,KAAK,IAAI,EAAE;gBACnB,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAC9B,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,6CAA6C,EAAE,CAAC,CACjF,CAAC;gBACF,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8GAA8G,EAAE,GAAG,EAAE;gBACtH,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAqB,CAAC,CAAC,CAAC,YAAY,CACpF,IAAI,yDAA2B,CAAC,8BAA8B,CAAC,CAChE,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACvC,SAAS,CAAC,KAAK,IAAI,EAAE;gBACnB,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAC9B,OAAO,CAAC,OAAO,CAAC;oBACd,YAAY,EAAE,kFAAkF;iBACjG,CAAC,CACH,CAAC;gBACF,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qGAAqG,EAAE,GAAG,EAAE;gBAC7G,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,EAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0GAA0G,EAAE,KAAK,IAAI,EAAE;gBACxH,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACvF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;gBAC9D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,EAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACjG,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;YAC1C,SAAS,CAAC,KAAK,IAAI,EAAE;gBACnB,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAC9B,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,6CAA6C,EAAE,CAAC,CACjF,CAAC;gBACF,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8GAA8G,EAAE,GAAG,EAAE;gBACtH,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CACnE,IAAI,yDAA2B,CAAC,4CAA4C,CAAC,CAC9E,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACvC,SAAS,CAAC,KAAK,IAAI,EAAE;gBACnB,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAC9B,OAAO,CAAC,OAAO,CAAC;oBACd,YAAY,EACV,qHAAqH;iBACxH,CAAC,CACH,CAAC;gBACF,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qGAAqG,EAAE,GAAG,EAAE;gBAC7G,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0GAA0G,EAAE,KAAK,IAAI,EAAE;gBACxH,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;gBACrE,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChE,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,6 +1,11 @@
1
+ /// <reference types="node" />
2
+ import { Logger } from '@squiz/dx-logger-lib';
1
3
  import { ApiKeyValidationService } from './ApiKeyValidationService';
4
+ import { IncomingMessage } from 'http';
2
5
  export declare class DevelopmentApiKeyService implements ApiKeyValidationService {
3
- keyIsValid(): boolean;
4
- matrixKeyIsValid(): boolean;
5
- getMatrixKeys(): string[];
6
+ private logger;
7
+ constructor(logger?: Logger);
8
+ matrixKeyIsValid(key: string | undefined, request: IncomingMessage): boolean;
9
+ interServiceKeyIsValid(key: string | undefined): boolean;
10
+ getInterServiceKeys(): string[];
6
11
  }
@@ -1,16 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DevelopmentApiKeyService = void 0;
4
+ const dx_logger_lib_1 = require("@squiz/dx-logger-lib");
4
5
  class DevelopmentApiKeyService {
5
- keyIsValid() {
6
- return true;
6
+ constructor(logger) {
7
+ this.logger = logger || (0, dx_logger_lib_1.getLogger)({ name: 'DevelopmentApiKeyService' });
7
8
  }
8
- matrixKeyIsValid() {
9
+ matrixKeyIsValid(key, request) {
10
+ var _a;
11
+ this.logger.info('Request authenticated using legacy Matrix API key', {
12
+ url: request.url,
13
+ userAgent: (_a = request.headers) === null || _a === void 0 ? void 0 : _a['user-agent'],
14
+ });
9
15
  return true;
10
16
  }
17
+ interServiceKeyIsValid(key) {
18
+ return Boolean(key && this.getInterServiceKeys().includes(key));
19
+ }
11
20
  // temporary method, to be removed when DXP auth is properly implemented
12
- getMatrixKeys() {
13
- return ['matrix-api-key'];
21
+ getInterServiceKeys() {
22
+ return ['inter-service-api-key'];
14
23
  }
15
24
  }
16
25
  exports.DevelopmentApiKeyService = DevelopmentApiKeyService;
@@ -1 +1 @@
1
- {"version":3,"file":"DevelopmentApiKeyService.js","sourceRoot":"","sources":["../../src/api-key-validation/DevelopmentApiKeyService.ts"],"names":[],"mappings":";;;AAEA,MAAa,wBAAwB;IAC5B,UAAU;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACM,gBAAgB;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,wEAAwE;IACxE,aAAa;QACX,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC;CACF;AAXD,4DAWC"}
1
+ {"version":3,"file":"DevelopmentApiKeyService.js","sourceRoot":"","sources":["../../src/api-key-validation/DevelopmentApiKeyService.ts"],"names":[],"mappings":";;;AAAA,wDAAyD;AAIzD,MAAa,wBAAwB;IAGnC,YAAmB,MAAe;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAA,yBAAS,EAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAC1E,CAAC;IACM,gBAAgB,CAAC,GAAuB,EAAE,OAAwB;;QACvE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE;YACpE,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAG,YAAY,CAAC;SAC3C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IACM,sBAAsB,CAAC,GAAuB;QACnD,OAAO,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,wEAAwE;IACjE,mBAAmB;QACxB,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACnC,CAAC;CACF;AApBD,4DAoBC"}
@@ -1,16 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const DevelopmentApiKeyService_1 = require("./DevelopmentApiKeyService");
4
+ const dx_logger_lib_1 = require("@squiz/dx-logger-lib");
4
5
  describe('DevelopmentApiKeyService', () => {
5
- const service = new DevelopmentApiKeyService_1.DevelopmentApiKeyService();
6
- describe('keyIsValid', () => {
6
+ const service = new DevelopmentApiKeyService_1.DevelopmentApiKeyService((0, dx_logger_lib_1.getLogger)({ name: 'test', silent: true }));
7
+ describe('matrixKeyIsValid', () => {
7
8
  it('should always return true', () => {
8
- expect(service.keyIsValid()).toEqual(true);
9
+ expect(service.matrixKeyIsValid(undefined, {})).toEqual(true);
9
10
  });
10
11
  });
11
- describe('matrixKeyIsValid', () => {
12
- it('should always return true', () => {
13
- expect(service.matrixKeyIsValid()).toEqual(true);
12
+ describe('interServiceKeyIsValid', () => {
13
+ it('should return true if key is "inter-service-api-key"', () => {
14
+ expect(service.interServiceKeyIsValid('inter-service-api-key')).toEqual(true);
15
+ });
16
+ it('should return false if key is not "inter-service-api-key"', () => {
17
+ expect(service.interServiceKeyIsValid('invalid-api-key')).toEqual(false);
14
18
  });
15
19
  });
16
20
  });
@@ -1 +1 @@
1
- {"version":3,"file":"DevelopmentApiKeyService.spec.js","sourceRoot":"","sources":["../../src/api-key-validation/DevelopmentApiKeyService.spec.ts"],"names":[],"mappings":";;AAAA,yEAAsE;AAEtE,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,MAAM,OAAO,GAAG,IAAI,mDAAwB,EAAE,CAAC;IAE/C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"DevelopmentApiKeyService.spec.js","sourceRoot":"","sources":["../../src/api-key-validation/DevelopmentApiKeyService.spec.ts"],"names":[],"mappings":";;AAAA,yEAAsE;AAEtE,wDAAiD;AAEjD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,MAAM,OAAO,GAAG,IAAI,mDAAwB,CAAC,IAAA,yBAAS,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAExF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function assertIsArray(val: any): asserts val is Array<any>;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertIsArray = void 0;
4
+ const assert_1 = require("assert");
5
+ function assertIsArray(val) {
6
+ if (!Array.isArray(val)) {
7
+ throw new assert_1.AssertionError({
8
+ actual: val,
9
+ expected: 'array',
10
+ message: `Expected ${val} to be array`,
11
+ });
12
+ }
13
+ }
14
+ exports.assertIsArray = assertIsArray;
15
+ //# sourceMappingURL=assertIsArray.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertIsArray.js","sourceRoot":"","sources":["../../src/assertions/assertIsArray.ts"],"names":[],"mappings":";;;AAAA,mCAAwC;AAExC,SAAgB,aAAa,CAAC,GAAQ;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACvB,MAAM,IAAI,uBAAc,CAAC;YACvB,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,YAAY,GAAG,cAAc;SACvC,CAAC,CAAC;KACJ;AACH,CAAC;AARD,sCAQC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assertIsArray_1 = require("./assertIsArray");
4
+ describe('assertIsArray', () => {
5
+ it('should throw an assertion error if input is undefined', () => {
6
+ expect(() => (0, assertIsArray_1.assertIsArray)(undefined)).toThrowErrorMatchingInlineSnapshot(`"Expected undefined to be array"`);
7
+ });
8
+ it('should throw an assertion error if input is null', () => {
9
+ expect(() => (0, assertIsArray_1.assertIsArray)(null)).toThrowErrorMatchingInlineSnapshot(`"Expected null to be array"`);
10
+ });
11
+ it('should return "void" or undefined if valid', () => {
12
+ expect((0, assertIsArray_1.assertIsArray)(['test'])).toBeUndefined();
13
+ expect(() => (0, assertIsArray_1.assertIsArray)(['test'])).not.toThrowError();
14
+ });
15
+ });
16
+ //# sourceMappingURL=assertIsArray.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertIsArray.spec.js","sourceRoot":"","sources":["../../src/assertions/assertIsArray.spec.ts"],"names":[],"mappings":";;AAAA,mDAAgD;AAEhD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,6BAAa,EAAC,SAAS,CAAC,CAAC,CAAC,kCAAkC,CAAC,kCAAkC,CAAC,CAAC;IAChH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,CAAC,CAAC,kCAAkC,CAAC,6BAA6B,CAAC,CAAC;IACtG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,IAAA,6BAAa,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,6BAAa,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -5,5 +5,6 @@ export * from './assertIsObject';
5
5
  export * from './assertIsNotAnEmptyString';
6
6
  export * from './assertIsEnumValue';
7
7
  export * from './assertIsBoolean';
8
+ export * from './assertIsArray';
8
9
  export * from './assertAssignWithDefaultUndefinedValue';
9
10
  export * from './assertAssign';
@@ -22,6 +22,7 @@ __exportStar(require("./assertIsObject"), exports);
22
22
  __exportStar(require("./assertIsNotAnEmptyString"), exports);
23
23
  __exportStar(require("./assertIsEnumValue"), exports);
24
24
  __exportStar(require("./assertIsBoolean"), exports);
25
+ __exportStar(require("./assertIsArray"), exports);
25
26
  // Assert assign
26
27
  __exportStar(require("./assertAssignWithDefaultUndefinedValue"), exports);
27
28
  __exportStar(require("./assertAssign"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assertions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oBAAoB;AACpB,mDAAiC;AACjC,oDAAkC;AAClC,8DAA4C;AAC5C,mDAAiC;AACjC,6DAA2C;AAC3C,sDAAoC;AACpC,oDAAkC;AAElC,gBAAgB;AAChB,0EAAwD;AACxD,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assertions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oBAAoB;AACpB,mDAAiC;AACjC,oDAAkC;AAClC,8DAA4C;AAC5C,mDAAiC;AACjC,6DAA2C;AAC3C,sDAAoC;AACpC,oDAAkC;AAClC,kDAAgC;AAEhC,gBAAgB;AAChB,0EAAwD;AACxD,iDAA+B"}
@@ -1,3 +1,9 @@
1
- import { BaseResolvedNodes, FullyResolvedNodesMap } from '@squiz/dx-json-schema-lib';
1
+ import { BaseResolvedNodes, FORMATTED_TEXT_MODELS, FullyResolvedNodesMap } from '@squiz/dx-json-schema-lib';
2
+ type FormattedNodeFontProperties = FORMATTED_TEXT_MODELS.v1.FormattedNodeFontProperties;
2
3
  export declare const formattedTextToHtmlStringResolvers: FullyResolvedNodesMap;
3
4
  export declare function formattedTextToHtmlString(formattedText: BaseResolvedNodes): Promise<string>;
5
+ export declare function buildAttributesString(attributes: {
6
+ [k: string]: string;
7
+ } | undefined): string;
8
+ export declare function buildFontClasses(font: FormattedNodeFontProperties | undefined): string[];
9
+ export {};
@@ -1,10 +1,17 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formattedTextToHtmlString = exports.formattedTextToHtmlStringResolvers = void 0;
6
+ exports.buildFontClasses = exports.buildAttributesString = exports.formattedTextToHtmlString = exports.formattedTextToHtmlStringResolvers = void 0;
4
7
  const dx_json_schema_lib_1 = require("@squiz/dx-json-schema-lib");
8
+ const axios_1 = __importDefault(require("axios"));
5
9
  exports.formattedTextToHtmlStringResolvers = {
6
10
  tag: async (node) => buildTagHTML(node),
7
11
  text: async (node) => node.value,
12
+ component: async (node) => {
13
+ return await buildComponentHtml(node);
14
+ },
8
15
  default: async (node) => {
9
16
  return `<p class="invalid-node-type"> node of type "${node.type}" cannot be converted to html</p>`;
10
17
  },
@@ -25,6 +32,11 @@ function buildTagHTML(formattedTextTag) {
25
32
  const attributesStr = buildAttributesString(formattedTextTag.attributes);
26
33
  return `<${formattedTextTag.tag}${attributesStr}>${formattedTextTag.children.join('')}</${formattedTextTag.tag}>`;
27
34
  }
35
+ async function buildComponentHtml(node) {
36
+ const renderUrl = buildComponentRenderUrl(node);
37
+ const componentHtml = await axios_1.default.get(renderUrl);
38
+ return componentHtml.data;
39
+ }
28
40
  function getClassString(formattedTextTag) {
29
41
  var _a, _b, _c;
30
42
  const fontClasses = buildFontClasses(formattedTextTag.font);
@@ -49,6 +61,7 @@ function buildAttributesString(attributes) {
49
61
  }
50
62
  return attributesString;
51
63
  }
64
+ exports.buildAttributesString = buildAttributesString;
52
65
  function buildFontClasses(font) {
53
66
  if (!font) {
54
67
  return [];
@@ -74,4 +87,22 @@ function buildFontClasses(font) {
74
87
  }
75
88
  return classes;
76
89
  }
90
+ exports.buildFontClasses = buildFontClasses;
91
+ function buildComponentRenderUrl(node) {
92
+ var _a;
93
+ const [baseUrl, namespace, name, version] = getComponentDetails(node.schemaName);
94
+ let query = `_componentSet=${node.componentSet}`;
95
+ if ((_a = node.content) === null || _a === void 0 ? void 0 : _a.contentItemId.length) {
96
+ query = query.concat(`&_contentItemId=${node.content.contentItemId}`);
97
+ }
98
+ const renderUrl = `${baseUrl}/r/${namespace}/${name}/${version}?${query}`;
99
+ return renderUrl;
100
+ }
101
+ function getComponentDetails(str) {
102
+ const baseUrl = str.split('/d/')[0];
103
+ const sections = str.split('/');
104
+ const lastThreeSections = sections.slice(-3);
105
+ const [namespace, version, name] = lastThreeSections;
106
+ return [baseUrl, namespace, version, name];
107
+ }
77
108
  //# sourceMappingURL=formattedTextToHtmlString.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formattedTextToHtmlString.js","sourceRoot":"","sources":["../../src/formatted-text/formattedTextToHtmlString.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formattedTextToHtmlString.js","sourceRoot":"","sources":["../../src/formatted-text/formattedTextToHtmlString.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,15 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const formattedTextToHtmlString_1 = require("./formattedTextToHtmlString");
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const mockedResponse = {
9
+ data: `<div>component-html</div>`,
10
+ };
11
+ const axiosGetSpy = jest.spyOn(axios_1.default, 'get');
12
+ axiosGetSpy.mockResolvedValue(mockedResponse);
4
13
  describe('formattedTextToHtmlString', () => {
5
14
  it('should convert text nodes to HTML', async () => {
6
15
  const textNode = {
@@ -208,5 +217,26 @@ describe('formattedTextToHtmlString', () => {
208
217
  };
209
218
  await expect((0, formattedTextToHtmlString_1.formattedTextToHtmlString)(formattedNodes)).resolves.toMatchInlineSnapshot(`"<div class="justify">Lorem ipsum dolor sit amet, consectetur adipiscing elit. <strong class="bold">Vestibulum dictum</strong> mi vel urna maximus, et luctus ipsum tincidunt</div>"`);
210
219
  });
220
+ it('should handle component nodes', async () => {
221
+ const formattedNodes = {
222
+ type: 'component',
223
+ componentSet: 'test',
224
+ schemaName: 'https://some.render-runtime.url/d/page-demo/demo-button/1.0.0',
225
+ };
226
+ await expect((0, formattedTextToHtmlString_1.formattedTextToHtmlString)(formattedNodes)).resolves.toMatchInlineSnapshot(`"<div>component-html</div>"`);
227
+ expect(axiosGetSpy).toBeCalledWith('https://some.render-runtime.url/r/page-demo/demo-button/1.0.0?_componentSet=test');
228
+ });
229
+ it('should handle component nodes - with content provided', async () => {
230
+ const formattedNodes = {
231
+ type: 'component',
232
+ componentSet: 'test',
233
+ content: {
234
+ contentItemId: '123',
235
+ },
236
+ schemaName: 'https://some.render-runtime.url/d/page-demo/demo-button/1.0.0',
237
+ };
238
+ await expect((0, formattedTextToHtmlString_1.formattedTextToHtmlString)(formattedNodes)).resolves.toMatchInlineSnapshot(`"<div>component-html</div>"`);
239
+ expect(axiosGetSpy).toBeCalledWith('https://some.render-runtime.url/r/page-demo/demo-button/1.0.0?_componentSet=test&_contentItemId=123');
240
+ });
211
241
  });
212
242
  //# sourceMappingURL=formattedTextToHtmlString.spec.js.map