@squiz/dx-json-schema-lib 1.3.4-alpha.2 → 1.5.1-alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/lib/JsonValidationService.d.ts +3 -1
  3. package/lib/JsonValidationService.js +10 -10
  4. package/lib/JsonValidationService.js.map +1 -1
  5. package/lib/formatted-text/v1/resolveFormattedTextNodes.d.ts +30 -0
  6. package/lib/formatted-text/v1/resolveFormattedTextNodes.js +50 -0
  7. package/lib/formatted-text/v1/resolveFormattedTextNodes.js.map +1 -0
  8. package/lib/formatted-text/v1/{higherOrderFormattedTextToBaseFormattedText.spec.d.ts → resolveFormattedTextNodes.spec.d.ts} +0 -0
  9. package/lib/formatted-text/v1/resolveFormattedTextNodes.spec.js +227 -0
  10. package/lib/formatted-text/v1/resolveFormattedTextNodes.spec.js.map +1 -0
  11. package/lib/index.d.ts +1 -1
  12. package/lib/index.js +1 -1
  13. package/lib/index.js.map +1 -1
  14. package/lib/manifest/v1/v1.d.ts +1 -0
  15. package/lib/manifest/v1/v1.json +10 -0
  16. package/package.json +4 -3
  17. package/src/JsonValidationService.ts +3 -3
  18. package/src/formatted-text/v1/resolveFormattedTextNodes.spec.ts +246 -0
  19. package/src/formatted-text/v1/resolveFormattedTextNodes.ts +96 -0
  20. package/src/index.ts +1 -1
  21. package/src/manifest/v1/v1.json +10 -0
  22. package/src/manifest/v1/v1.ts +1 -0
  23. package/tsconfig.tsbuildinfo +1 -1
  24. package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.d.ts +0 -8
  25. package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.js +0 -21
  26. package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.js.map +0 -1
  27. package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.spec.js +0 -52
  28. package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.spec.js.map +0 -1
  29. package/src/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.spec.ts +0 -58
  30. package/src/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.ts +0 -36
@@ -1,58 +0,0 @@
1
- import { FormattedNodes, HigherOrderFormattedNodes } from './formattedText';
2
- import {
3
- HigherOrderFormattedNodesMap,
4
- higherOrderFormattedTextToBaseFormattedText,
5
- } from './higherOrderFormattedTextToBaseFormattedText';
6
-
7
- describe('higherOrderFormattedTextToBaseFormattedText', () => {
8
- const mockResolvers: HigherOrderFormattedNodesMap = {
9
- 'link-to-matrix-asset': jest.fn((node: HigherOrderFormattedNodes) => {
10
- return Promise.resolve({ type: 'text', value: `Link to asset ${node.matrixAssetId}` });
11
- }),
12
- 'matrix-image': jest.fn((node: HigherOrderFormattedNodes) => {
13
- return Promise.resolve({ type: 'text', value: `Image ${node.matrixAssetId}` });
14
- }),
15
- };
16
-
17
- const testFormattedNodes: FormattedNodes = {
18
- tag: 'p',
19
- type: 'tag',
20
- children: [
21
- { type: 'text', value: 'This is some ' },
22
- {
23
- type: 'link-to-matrix-asset',
24
- matrixIdentifier: 'abc123',
25
- matrixDomain: 'example.com',
26
- matrixAssetId: '12345',
27
- target: '_blank',
28
- children: [{ type: 'text', value: 'linked text' }],
29
- },
30
- { type: 'text', value: ' with an image ' },
31
- {
32
- type: 'matrix-image',
33
- matrixIdentifier: 'abc123',
34
- matrixDomain: 'example.com',
35
- matrixAssetId: '54321',
36
- },
37
- { type: 'text', value: '.' },
38
- ],
39
- };
40
-
41
- const expectedFormattedNodes: FormattedNodes = {
42
- tag: 'p',
43
- type: 'tag',
44
- children: [
45
- { type: 'text', value: 'This is some ' },
46
- { type: 'text', value: 'Link to asset 12345' },
47
- { type: 'text', value: ' with an image ' },
48
- { type: 'text', value: 'Image 54321' },
49
- { type: 'text', value: '.' },
50
- ],
51
- };
52
-
53
- it('should replace higher order nodes with their resolved counterparts', async () => {
54
- const result = await higherOrderFormattedTextToBaseFormattedText(testFormattedNodes, mockResolvers);
55
-
56
- expect(result).toEqual(expectedFormattedNodes);
57
- });
58
- });
@@ -1,36 +0,0 @@
1
- import { BaseFormattedNodes, FormattedNodes, HigherOrderFormattedNodes } from './formattedText';
2
-
3
- export interface FormattedNodeWithChildren {
4
- children: FormattedNodes[];
5
- }
6
-
7
- export type HigherOrderFormattedNodesMap = {
8
- [key in HigherOrderFormattedNodes['type']]: (node: HigherOrderFormattedNodes) => Promise<BaseFormattedNodes>;
9
- };
10
-
11
- export async function higherOrderFormattedTextToBaseFormattedText(
12
- node: FormattedNodes,
13
- resolvers: HigherOrderFormattedNodesMap,
14
- ): Promise<FormattedNodes> {
15
- if (node.type in resolvers && nodeIsHigherOrder(node)) {
16
- return await resolvers[node.type](node);
17
- }
18
-
19
- if (hasChildren(node)) {
20
- const updatedChildren = await Promise.all(
21
- node.children.map((child) => higherOrderFormattedTextToBaseFormattedText(child, resolvers)),
22
- );
23
-
24
- return { ...node, children: updatedChildren };
25
- }
26
-
27
- return node;
28
- }
29
-
30
- function hasChildren(node: any): node is FormattedNodeWithChildren {
31
- return node && typeof node == 'object' && 'children' in node && Array.isArray(node.children);
32
- }
33
-
34
- function nodeIsHigherOrder(node: FormattedNodes): node is HigherOrderFormattedNodes {
35
- return node.type === 'link-to-matrix-asset' || node.type === 'matrix-image';
36
- }