@squiz/dx-json-schema-lib 1.3.4-alpha.2 → 1.5.1-alpha.1
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/CHANGELOG.md +25 -1
- package/lib/JsonValidationService.d.ts +3 -1
- package/lib/JsonValidationService.js +10 -10
- package/lib/JsonValidationService.js.map +1 -1
- package/lib/formatted-text/v1/resolveFormattedTextNodes.d.ts +30 -0
- package/lib/formatted-text/v1/resolveFormattedTextNodes.js +50 -0
- package/lib/formatted-text/v1/resolveFormattedTextNodes.js.map +1 -0
- package/lib/formatted-text/v1/{higherOrderFormattedTextToBaseFormattedText.spec.d.ts → resolveFormattedTextNodes.spec.d.ts} +0 -0
- package/lib/formatted-text/v1/resolveFormattedTextNodes.spec.js +227 -0
- package/lib/formatted-text/v1/resolveFormattedTextNodes.spec.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/manifest/v1/v1.d.ts +1 -0
- package/lib/manifest/v1/v1.json +10 -0
- package/package.json +4 -3
- package/src/JsonValidationService.ts +3 -3
- package/src/formatted-text/v1/resolveFormattedTextNodes.spec.ts +246 -0
- package/src/formatted-text/v1/resolveFormattedTextNodes.ts +96 -0
- package/src/index.ts +1 -1
- package/src/manifest/v1/v1.json +10 -0
- package/src/manifest/v1/v1.ts +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.d.ts +0 -8
- package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.js +0 -21
- package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.js.map +0 -1
- package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.spec.js +0 -52
- package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.spec.js.map +0 -1
- package/src/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.spec.ts +0 -58
- 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
|
-
}
|