@atlaskit/adf-schema 28.1.12 → 28.1.13
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 +6 -0
- package/package.json +1 -1
- package/src/__tests__/unit/json-schema/v1.ts +0 -55
- package/src/__tests__/unit/schema/create-schema.ts +0 -214
- package/src/__tests__/unit/schema/default-schema.ts +0 -192
- package/src/__tests__/unit/schema/marks/annotation.ts +0 -46
- package/src/__tests__/unit/schema/marks/border.ts +0 -76
- package/src/__tests__/unit/schema/marks/breakout.ts +0 -24
- package/src/__tests__/unit/schema/marks/code.ts +0 -44
- package/src/__tests__/unit/schema/marks/confluence-inline-comment.ts +0 -25
- package/src/__tests__/unit/schema/marks/data-consumer.ts +0 -52
- package/src/__tests__/unit/schema/marks/em.ts +0 -37
- package/src/__tests__/unit/schema/marks/link.ts +0 -188
- package/src/__tests__/unit/schema/marks/strike.ts +0 -37
- package/src/__tests__/unit/schema/marks/strong.ts +0 -43
- package/src/__tests__/unit/schema/marks/subsup.ts +0 -50
- package/src/__tests__/unit/schema/marks/text-color.ts +0 -61
- package/src/__tests__/unit/schema/marks/underline.ts +0 -36
- package/src/__tests__/unit/schema/nodes/_consts.ts +0 -964
- package/src/__tests__/unit/schema/nodes/block-card.ts +0 -184
- package/src/__tests__/unit/schema/nodes/blockquote.ts +0 -44
- package/src/__tests__/unit/schema/nodes/bodied-extension.ts +0 -101
- package/src/__tests__/unit/schema/nodes/code-block.ts +0 -221
- package/src/__tests__/unit/schema/nodes/confluence-unsupported-block.ts +0 -32
- package/src/__tests__/unit/schema/nodes/confluence-unsupported-inline.ts +0 -35
- package/src/__tests__/unit/schema/nodes/date.ts +0 -51
- package/src/__tests__/unit/schema/nodes/decision-item.ts +0 -46
- package/src/__tests__/unit/schema/nodes/decision-list.ts +0 -52
- package/src/__tests__/unit/schema/nodes/embed-card.ts +0 -60
- package/src/__tests__/unit/schema/nodes/emoji.ts +0 -71
- package/src/__tests__/unit/schema/nodes/expand.ts +0 -51
- package/src/__tests__/unit/schema/nodes/extension.ts +0 -101
- package/src/__tests__/unit/schema/nodes/hard-break.ts +0 -24
- package/src/__tests__/unit/schema/nodes/heading.ts +0 -56
- package/src/__tests__/unit/schema/nodes/image.ts +0 -32
- package/src/__tests__/unit/schema/nodes/inline-card.ts +0 -106
- package/src/__tests__/unit/schema/nodes/inline-extension.ts +0 -79
- package/src/__tests__/unit/schema/nodes/layout-column.ts +0 -54
- package/src/__tests__/unit/schema/nodes/layout-section.ts +0 -95
- package/src/__tests__/unit/schema/nodes/list-item.ts +0 -49
- package/src/__tests__/unit/schema/nodes/media-group.ts +0 -67
- package/src/__tests__/unit/schema/nodes/media-single.ts +0 -171
- package/src/__tests__/unit/schema/nodes/media.ts +0 -384
- package/src/__tests__/unit/schema/nodes/mention.ts +0 -115
- package/src/__tests__/unit/schema/nodes/nestedExpand.ts +0 -72
- package/src/__tests__/unit/schema/nodes/ordered-list.ts +0 -49
- package/src/__tests__/unit/schema/nodes/panel.ts +0 -180
- package/src/__tests__/unit/schema/nodes/paragraph.ts +0 -25
- package/src/__tests__/unit/schema/nodes/placeholder.ts +0 -46
- package/src/__tests__/unit/schema/nodes/rule.ts +0 -24
- package/src/__tests__/unit/schema/nodes/status.ts +0 -120
- package/src/__tests__/unit/schema/nodes/tableNodes.ts +0 -555
- package/src/__tests__/unit/schema/nodes/task-item.ts +0 -39
- package/src/__tests__/unit/schema/nodes/task-list.ts +0 -45
- package/src/__tests__/unit/schema/nodes/unknown-block.ts +0 -42
- package/src/__tests__/unit/schema/nodes/unsupported-block.ts +0 -42
- package/src/__tests__/unit/schema/nodes/unsupported-inline.ts +0 -38
- package/src/__tests__/unit/utils/colors.ts +0 -42
- package/src/__tests__/unit/utils/url.ts +0 -209
- package/src/schema/bitbucket-schema.ts +0 -43
- package/src/schema/confluence-schema.ts +0 -76
- package/src/schema/create-schema.ts +0 -337
- package/src/schema/default-schema.ts +0 -180
- package/src/schema/groups.ts +0 -30
- package/src/schema/inline-nodes.ts +0 -9
- package/src/schema/jira-schema.ts +0 -158
- package/src/schema/marks/__tests__/unit/annotation.ts +0 -18
- package/src/schema/marks/alignment.ts +0 -48
- package/src/schema/marks/annotation.ts +0 -107
- package/src/schema/marks/border.ts +0 -74
- package/src/schema/marks/breakout.ts +0 -42
- package/src/schema/marks/code.ts +0 -45
- package/src/schema/marks/confluence-inline-comment.ts +0 -32
- package/src/schema/marks/data-consumer.ts +0 -100
- package/src/schema/marks/em.ts +0 -19
- package/src/schema/marks/fragment.ts +0 -77
- package/src/schema/marks/indentation.ts +0 -47
- package/src/schema/marks/link.ts +0 -139
- package/src/schema/marks/strike.ts +0 -26
- package/src/schema/marks/strong.ts +0 -45
- package/src/schema/marks/subsup.ts +0 -53
- package/src/schema/marks/text-color.ts +0 -172
- package/src/schema/marks/type-ahead-query.ts +0 -22
- package/src/schema/marks/underline.ts +0 -24
- package/src/schema/marks/unsupported-mark.ts +0 -9
- package/src/schema/marks/unsupported-node-attributes.ts +0 -8
- package/src/schema/nodes/block-card.ts +0 -121
- package/src/schema/nodes/blockquote.ts +0 -25
- package/src/schema/nodes/bodied-extension.ts +0 -75
- package/src/schema/nodes/bullet-list.ts +0 -17
- package/src/schema/nodes/caption.ts +0 -51
- package/src/schema/nodes/code-block.ts +0 -176
- package/src/schema/nodes/confluence-jira-issue.ts +0 -43
- package/src/schema/nodes/confluence-unsupported-block.ts +0 -29
- package/src/schema/nodes/confluence-unsupported-inline.ts +0 -30
- package/src/schema/nodes/date.ts +0 -38
- package/src/schema/nodes/decision-item.ts +0 -50
- package/src/schema/nodes/decision-list.ts +0 -56
- package/src/schema/nodes/doc.ts +0 -30
- package/src/schema/nodes/embed-card.ts +0 -62
- package/src/schema/nodes/emoji.ts +0 -89
- package/src/schema/nodes/expand.ts +0 -101
- package/src/schema/nodes/extension.ts +0 -60
- package/src/schema/nodes/hard-break.ts +0 -21
- package/src/schema/nodes/heading.ts +0 -64
- package/src/schema/nodes/image.ts +0 -32
- package/src/schema/nodes/inline-card.ts +0 -70
- package/src/schema/nodes/inline-extension.ts +0 -57
- package/src/schema/nodes/layout-column.ts +0 -68
- package/src/schema/nodes/layout-section.ts +0 -93
- package/src/schema/nodes/list-item.ts +0 -13
- package/src/schema/nodes/media-group.ts +0 -44
- package/src/schema/nodes/media-inline.ts +0 -19
- package/src/schema/nodes/media-single.ts +0 -179
- package/src/schema/nodes/media.ts +0 -253
- package/src/schema/nodes/mention.ts +0 -86
- package/src/schema/nodes/nested-expand.ts +0 -77
- package/src/schema/nodes/ordered-list.ts +0 -62
- package/src/schema/nodes/panel.ts +0 -133
- package/src/schema/nodes/paragraph.ts +0 -79
- package/src/schema/nodes/placeholder.ts +0 -40
- package/src/schema/nodes/rule.ts +0 -17
- package/src/schema/nodes/status.ts +0 -58
- package/src/schema/nodes/tableNodes.ts +0 -478
- package/src/schema/nodes/task-item.ts +0 -51
- package/src/schema/nodes/task-list.ts +0 -61
- package/src/schema/nodes/text.ts +0 -19
- package/src/schema/nodes/types/block-content.ts +0 -51
- package/src/schema/nodes/types/extensions.ts +0 -36
- package/src/schema/nodes/types/inline-content.ts +0 -56
- package/src/schema/nodes/types/list.ts +0 -54
- package/src/schema/nodes/types/mark.ts +0 -16
- package/src/schema/nodes/types/non-nestable-block-content.ts +0 -39
- package/src/schema/nodes/types/rich-media-common.ts +0 -51
- package/src/schema/nodes/unknown-block.ts +0 -13
- package/src/schema/nodes/unsupported-block.ts +0 -28
- package/src/schema/nodes/unsupported-inline.ts +0 -27
- package/src/schema/unsupported.ts +0 -4
- package/src/steps/__tests__/unit/analytics.ts +0 -72
- package/src/steps/__tests__/unit/link-meta-step.ts +0 -64
- package/src/steps/__tests__/unit/override-document-step.ts +0 -174
- package/src/steps/__tests__/unit/set-attrs.ts +0 -71
- package/src/steps/analytics.ts +0 -189
- package/src/steps/link-meta-step.ts +0 -105
- package/src/steps/override-document-step.ts +0 -97
- package/src/steps/set-attrs.tsx +0 -74
- package/src/steps/table/__tests__/__fixtures__/basic/add-column-at-0.json +0 -15
- package/src/steps/table/__tests__/__fixtures__/basic/add-column-at-1.json +0 -15
- package/src/steps/table/__tests__/__fixtures__/basic/add-column-at-2.json +0 -15
- package/src/steps/table/__tests__/__fixtures__/basic/add-column-at-3.json +0 -15
- package/src/steps/table/__tests__/__fixtures__/basic/remove-column-at-0.json +0 -9
- package/src/steps/table/__tests__/__fixtures__/basic/remove-column-at-1.json +0 -9
- package/src/steps/table/__tests__/__fixtures__/basic/remove-column-at-2.json +0 -9
- package/src/steps/table/__tests__/__fixtures__/basic/remove-table/remove-last-row-inverted.json +0 -98
- package/src/steps/table/__tests__/__fixtures__/basic/remove-table/remove-last-row.json +0 -71
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/add-column-at-0-inverted.json +0 -19
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/add-column-at-0.json +0 -19
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/add-column-at-1-inverted.json +0 -21
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/add-column-at-1.json +0 -21
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/add-column-at-2-inverted.json +0 -21
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/add-column-at-2.json +0 -21
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/add-column-at-3-inverted.json +0 -19
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/add-column-at-3.json +0 -19
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/remove-column-at-0-inverted.json +0 -63
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/remove-column-at-0.json +0 -21
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/remove-column-at-1-inverted.json +0 -64
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/remove-column-at-1.json +0 -22
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/remove-column-at-2-inverted.json +0 -63
- package/src/steps/table/__tests__/__fixtures__/merge-cells/columns/remove-column-at-2.json +0 -21
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/add-column-at-0-inverted.json +0 -19
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/add-column-at-0.json +0 -19
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/add-column-at-1-inverted.json +0 -19
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/add-column-at-1.json +0 -19
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/add-column-at-2-inverted.json +0 -19
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/add-column-at-2.json +0 -19
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/add-column-at-3-inverted.json +0 -19
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/add-column-at-3.json +0 -19
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/remove-column-at-0-inverted.json +0 -52
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/remove-column-at-0.json +0 -38
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/remove-column-at-1-inverted.json +0 -52
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/remove-column-at-1.json +0 -38
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/remove-column-at-2-inverted.json +0 -25
- package/src/steps/table/__tests__/__fixtures__/merge-cells/rows/remove-column-at-2.json +0 -11
- package/src/steps/table/__tests__/_utils.ts +0 -102
- package/src/steps/table/__tests__/add-column-merge-columns.ts +0 -509
- package/src/steps/table/__tests__/add-column-merge-rows.ts +0 -466
- package/src/steps/table/__tests__/add-column.ts +0 -638
- package/src/steps/table/add-column.ts +0 -443
- package/src/steps/table/constants.ts +0 -4
- package/src/steps/table/sort-column.ts +0 -57
- package/src/steps/table/types.ts +0 -48
- package/src/steps/table/utils/cell-step.ts +0 -239
- package/src/steps/table/utils/cells-at-column.ts +0 -75
- package/src/steps/table/utils/find-column.ts +0 -90
- package/src/steps/table/utils/get-table-rect-from-doc.ts +0 -37
- package/src/steps/table/utils/side-effects/rows.ts +0 -327
- package/src/steps/table/utils/side-effects/side-effects.ts +0 -90
- package/src/steps/table/utils/side-effects/table.ts +0 -112
- package/src/steps/table/utils/side-effects/types.ts +0 -34
- package/src/steps/table/utils/table-map.ts +0 -28
- package/src/steps/type-ahead.ts +0 -100
- package/src/steps.ts +0 -16
- package/src/utils/colors.ts +0 -171
- package/src/utils/confluence/emoji.ts +0 -99
- package/src/utils/extensions.ts +0 -32
- package/src/utils/parseDOM.ts +0 -2
- package/src/utils/url.ts +0 -173
- package/src/utils/uuid.ts +0 -19
- package/src/version.json +0 -6
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
@@ -1,55 +0,0 @@
|
|
1
|
-
import { initialize } from 'adf-test-helpers/src/ajv';
|
2
|
-
|
3
|
-
import v1SchemaFull from '../../../../json-schema/v1/full.json';
|
4
|
-
import v1SchemaStage0 from '../../../../json-schema/v1/stage-0.json';
|
5
|
-
|
6
|
-
import {
|
7
|
-
fullValidJsonSchema,
|
8
|
-
fullInvalidJsonSchema,
|
9
|
-
stage0ValidJsonSchema,
|
10
|
-
stage0InvalidJsonSchema,
|
11
|
-
} from '@atlassian/adf-schema-json';
|
12
|
-
|
13
|
-
const ajv = initialize();
|
14
|
-
const packageName = process.env._PACKAGE_NAME_ as string;
|
15
|
-
|
16
|
-
describe(`${packageName} json-schema v1`, () => {
|
17
|
-
const validateFull = ajv.compile(v1SchemaFull);
|
18
|
-
const validateStage0 = ajv.compile(v1SchemaStage0);
|
19
|
-
|
20
|
-
describe('full', () => {
|
21
|
-
for (const file of fullValidJsonSchema) {
|
22
|
-
it(`validates '${file.name}'`, () => {
|
23
|
-
validateFull(file.data);
|
24
|
-
expect(validateFull.errors).toEqual(null);
|
25
|
-
// Valid `full` use cases should be valid against `stage-0` schema
|
26
|
-
validateStage0(file.data);
|
27
|
-
expect(validateStage0.errors).toEqual(null);
|
28
|
-
});
|
29
|
-
}
|
30
|
-
|
31
|
-
for (const file of fullInvalidJsonSchema) {
|
32
|
-
it(`does not validate '${file.name}'`, () => {
|
33
|
-
expect(validateFull(file.data)).toEqual(false);
|
34
|
-
});
|
35
|
-
}
|
36
|
-
});
|
37
|
-
|
38
|
-
describe('stage-0', () => {
|
39
|
-
for (const file of stage0ValidJsonSchema) {
|
40
|
-
it(`validates '${file.name}'`, () => {
|
41
|
-
validateStage0(file.data);
|
42
|
-
expect(validateStage0.errors).toEqual(null);
|
43
|
-
|
44
|
-
// Valid `stage-0` use cases should be invalid against `full` schema
|
45
|
-
expect(validateFull(file.data)).toEqual(false);
|
46
|
-
});
|
47
|
-
}
|
48
|
-
|
49
|
-
for (const file of stage0InvalidJsonSchema) {
|
50
|
-
it(`does not validate '${file.name}'`, () => {
|
51
|
-
expect(validateStage0(file.data)).toEqual(false);
|
52
|
-
});
|
53
|
-
}
|
54
|
-
});
|
55
|
-
});
|
@@ -1,214 +0,0 @@
|
|
1
|
-
const packageName = process.env._PACKAGE_NAME_ as string;
|
2
|
-
import { code as codeBase, createSchema, sanitizeNodes } from '../../..';
|
3
|
-
import { sanitizeNodeSpecContent } from '../../../schema/create-schema';
|
4
|
-
const filterGroupDecMark = (marks: Array<string>) =>
|
5
|
-
marks.filter((mark) => mark[0] !== '_' || mark[1] !== '_');
|
6
|
-
|
7
|
-
describe(`${packageName}/schema createSchema helper`, () => {
|
8
|
-
it('should add only defined marks and nodes to the schema', () => {
|
9
|
-
const nodesConfig = ['doc', 'paragraph', 'text'];
|
10
|
-
const marksConfig = ['em', 'strong', 'strike'];
|
11
|
-
const schema = createSchema({ nodes: nodesConfig, marks: marksConfig });
|
12
|
-
const nodes = Object.keys(schema.nodes);
|
13
|
-
const marks = filterGroupDecMark(Object.keys(schema.marks));
|
14
|
-
expect(nodes).toEqual(['doc', 'paragraph', 'text']);
|
15
|
-
expect(marks).toEqual(['em', 'strong', 'strike']);
|
16
|
-
});
|
17
|
-
|
18
|
-
it('should preserv order for marks and nodes in the schema', () => {
|
19
|
-
const nodesConfig = ['text', 'doc', 'paragraph'];
|
20
|
-
const marksConfig = ['strong', 'strike', 'em'];
|
21
|
-
const schema = createSchema({ nodes: nodesConfig, marks: marksConfig });
|
22
|
-
const nodes = Object.keys(schema.nodes);
|
23
|
-
const marks = filterGroupDecMark(Object.keys(schema.marks));
|
24
|
-
expect(nodes).toEqual(['doc', 'paragraph', 'text']);
|
25
|
-
expect(marks).toEqual(['em', 'strong', 'strike']);
|
26
|
-
});
|
27
|
-
|
28
|
-
it('should allow custom node spec for built-in node type', () => {
|
29
|
-
const listItem = {
|
30
|
-
content: 'paragraph block*',
|
31
|
-
parseDOM: [{ tag: 'div' }],
|
32
|
-
};
|
33
|
-
const nodesConfig = ['doc', 'paragraph', 'text'];
|
34
|
-
const schema = createSchema({
|
35
|
-
nodes: nodesConfig,
|
36
|
-
customNodeSpecs: { listItem },
|
37
|
-
});
|
38
|
-
const nodes = Object.keys(schema.nodes);
|
39
|
-
expect(nodes).toEqual(['doc', 'paragraph', 'text', 'listItem']);
|
40
|
-
expect(schema.nodes.listItem.spec).toEqual(listItem);
|
41
|
-
});
|
42
|
-
|
43
|
-
it('should allow custom node spec', () => {
|
44
|
-
const jiraIssue = {
|
45
|
-
content: 'paragraph block*',
|
46
|
-
parseDOM: [{ tag: 'div' }],
|
47
|
-
};
|
48
|
-
const nodesConfig = ['doc', 'paragraph', 'text'];
|
49
|
-
const schema = createSchema({
|
50
|
-
nodes: nodesConfig,
|
51
|
-
customNodeSpecs: { jiraIssue },
|
52
|
-
});
|
53
|
-
const nodes = Object.keys(schema.nodes);
|
54
|
-
expect(nodes).toEqual(['doc', 'paragraph', 'text', 'jiraIssue']);
|
55
|
-
});
|
56
|
-
|
57
|
-
it('should allow custom mark spec for built-in mark type', () => {
|
58
|
-
const code = { ...codeBase, excludes: 'em' };
|
59
|
-
const nodesConfig = ['doc', 'paragraph', 'text'];
|
60
|
-
const marksConfig = ['em'];
|
61
|
-
const schema = createSchema({
|
62
|
-
nodes: nodesConfig,
|
63
|
-
marks: marksConfig,
|
64
|
-
customMarkSpecs: { code },
|
65
|
-
});
|
66
|
-
const marks = filterGroupDecMark(Object.keys(schema.marks));
|
67
|
-
expect(marks).toEqual(['em', 'code']);
|
68
|
-
expect(schema.marks.code.spec).toEqual(code);
|
69
|
-
});
|
70
|
-
|
71
|
-
it('should allow custom mark spec', () => {
|
72
|
-
const monospace = { ...codeBase, excludes: 'em' };
|
73
|
-
const nodesConfig = ['doc', 'paragraph', 'text'];
|
74
|
-
const marksConfig = ['em'];
|
75
|
-
const schema = createSchema({
|
76
|
-
nodes: nodesConfig,
|
77
|
-
marks: marksConfig,
|
78
|
-
customMarkSpecs: { monospace },
|
79
|
-
});
|
80
|
-
const marks = filterGroupDecMark(Object.keys(schema.marks));
|
81
|
-
expect(marks).toEqual(['em', 'monospace']);
|
82
|
-
expect(schema.marks.monospace.spec).toEqual(monospace);
|
83
|
-
});
|
84
|
-
|
85
|
-
it('should allow only custom mark spec', () => {
|
86
|
-
const code = { ...codeBase, excludes: '' };
|
87
|
-
const nodesConfig = ['doc', 'paragraph', 'text'];
|
88
|
-
const schema = createSchema({
|
89
|
-
nodes: nodesConfig,
|
90
|
-
customMarkSpecs: { code },
|
91
|
-
});
|
92
|
-
expect(schema.marks.code.spec).toEqual(code);
|
93
|
-
});
|
94
|
-
|
95
|
-
describe('fixNodeContentSchema', () => {
|
96
|
-
it('excludes unsupported nodes in node content', () => {
|
97
|
-
const nodes = {
|
98
|
-
node1: {
|
99
|
-
content: 'node1 | nodeDoesNotExist | node2 | anotherNodeDoesNotExist',
|
100
|
-
},
|
101
|
-
node2: {
|
102
|
-
content: 'node2',
|
103
|
-
},
|
104
|
-
};
|
105
|
-
const sanitizedNodes = sanitizeNodes(nodes, {});
|
106
|
-
|
107
|
-
expect(sanitizedNodes).toEqual({
|
108
|
-
node1: {
|
109
|
-
content: 'node1 | node2',
|
110
|
-
},
|
111
|
-
node2: {
|
112
|
-
content: 'node2',
|
113
|
-
},
|
114
|
-
});
|
115
|
-
});
|
116
|
-
|
117
|
-
it('excludes unsupported nodes in node content - 2', () => {
|
118
|
-
const nodes = {
|
119
|
-
node1: {
|
120
|
-
content:
|
121
|
-
'(node1 | nodeDoesNotExist | anotherNodeDoesNotExist | node2)*',
|
122
|
-
},
|
123
|
-
node2: {
|
124
|
-
content: 'node2',
|
125
|
-
},
|
126
|
-
};
|
127
|
-
const sanitizedNodes = sanitizeNodes(nodes, {});
|
128
|
-
|
129
|
-
expect(sanitizedNodes).toEqual({
|
130
|
-
node1: {
|
131
|
-
content: '(node1 | node2)*',
|
132
|
-
},
|
133
|
-
node2: {
|
134
|
-
content: 'node2',
|
135
|
-
},
|
136
|
-
});
|
137
|
-
});
|
138
|
-
|
139
|
-
it('does not generate invalid content', () => {
|
140
|
-
const nodes = {
|
141
|
-
node1: {
|
142
|
-
content: 'nodeDoesNotExist | anotherNodeDoesNotExist',
|
143
|
-
},
|
144
|
-
node2: {
|
145
|
-
content: 'node2 | nodeDoesNotExist',
|
146
|
-
},
|
147
|
-
};
|
148
|
-
const sanitizedNodes = sanitizeNodes(nodes, {});
|
149
|
-
|
150
|
-
expect(sanitizedNodes).toEqual({
|
151
|
-
node1: {
|
152
|
-
content: '',
|
153
|
-
},
|
154
|
-
node2: {
|
155
|
-
content: 'node2',
|
156
|
-
},
|
157
|
-
});
|
158
|
-
});
|
159
|
-
|
160
|
-
it('should remove unsupported block from content', () => {
|
161
|
-
const nodes = {
|
162
|
-
node1: {
|
163
|
-
content: '(node2 | unsupportedBlock){2,3} unsupportedBlock*',
|
164
|
-
},
|
165
|
-
node2: { content: 'node2' },
|
166
|
-
};
|
167
|
-
const content = '(node2 | unsupportedBlock){2,3} unsupportedBlock*';
|
168
|
-
expect(sanitizeNodeSpecContent(nodes, content)).toEqual('(node2 ){2,3}');
|
169
|
-
});
|
170
|
-
|
171
|
-
it('modifies node immutably', () => {
|
172
|
-
const nodeSpec = {
|
173
|
-
content: 'nodeDoesNotExist',
|
174
|
-
};
|
175
|
-
const nodes = {
|
176
|
-
node: nodeSpec,
|
177
|
-
};
|
178
|
-
const sanitizedNodes = sanitizeNodes(nodes, {});
|
179
|
-
|
180
|
-
expect(sanitizedNodes).toEqual({
|
181
|
-
node: {
|
182
|
-
content: '',
|
183
|
-
},
|
184
|
-
});
|
185
|
-
|
186
|
-
expect(nodeSpec).toEqual({
|
187
|
-
content: 'nodeDoesNotExist',
|
188
|
-
});
|
189
|
-
});
|
190
|
-
|
191
|
-
it('recognizes node from group', () => {
|
192
|
-
const nodes = {
|
193
|
-
node1: {
|
194
|
-
content: 'inline+',
|
195
|
-
group: 'block',
|
196
|
-
},
|
197
|
-
node2: {
|
198
|
-
group: 'inline',
|
199
|
-
},
|
200
|
-
};
|
201
|
-
const sanitizedNodes = sanitizeNodes(nodes, {});
|
202
|
-
|
203
|
-
expect(sanitizedNodes).toEqual({
|
204
|
-
node1: {
|
205
|
-
content: 'inline+',
|
206
|
-
group: 'block',
|
207
|
-
},
|
208
|
-
node2: {
|
209
|
-
group: 'inline',
|
210
|
-
},
|
211
|
-
});
|
212
|
-
});
|
213
|
-
});
|
214
|
-
});
|
@@ -1,192 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
defaultSchema,
|
3
|
-
getSchemaBasedOnStage,
|
4
|
-
} from '../../../schema/default-schema';
|
5
|
-
|
6
|
-
describe('Default Schema', () => {
|
7
|
-
describe('Nodes', () => {
|
8
|
-
it('should contain the `mediaInline` node', () => {
|
9
|
-
expect(defaultSchema.nodes.mediaInline).toBeDefined();
|
10
|
-
});
|
11
|
-
});
|
12
|
-
|
13
|
-
describe('Marks', () => {
|
14
|
-
it('should contain the `typeAheadQuery` mark', () => {
|
15
|
-
expect(defaultSchema.marks.typeAheadQuery).toBeDefined();
|
16
|
-
});
|
17
|
-
|
18
|
-
it('should contain the `fragment` mark', () => {
|
19
|
-
expect(defaultSchema.marks.fragment).toBeDefined();
|
20
|
-
});
|
21
|
-
});
|
22
|
-
});
|
23
|
-
|
24
|
-
describe('Get Schema Based On Stage', () => {
|
25
|
-
describe('Default / Full Schema', () => {
|
26
|
-
it('should contain the nodes', () => {
|
27
|
-
const schema = getSchemaBasedOnStage();
|
28
|
-
expect(Object.keys(schema.nodes)).toEqual([
|
29
|
-
'doc',
|
30
|
-
'paragraph',
|
31
|
-
'text',
|
32
|
-
'bulletList',
|
33
|
-
'orderedList',
|
34
|
-
'listItem',
|
35
|
-
'heading',
|
36
|
-
'blockquote',
|
37
|
-
'codeBlock',
|
38
|
-
'panel',
|
39
|
-
'rule',
|
40
|
-
'image',
|
41
|
-
'mention',
|
42
|
-
'caption',
|
43
|
-
'media',
|
44
|
-
'mediaGroup',
|
45
|
-
'mediaSingle',
|
46
|
-
'mediaInline',
|
47
|
-
'placeholder',
|
48
|
-
'layoutSection',
|
49
|
-
'layoutColumn',
|
50
|
-
'hardBreak',
|
51
|
-
'emoji',
|
52
|
-
'table',
|
53
|
-
'tableCell',
|
54
|
-
'tableRow',
|
55
|
-
'tableHeader',
|
56
|
-
'confluenceJiraIssue',
|
57
|
-
'confluenceUnsupportedInline',
|
58
|
-
'confluenceUnsupportedBlock',
|
59
|
-
'decisionList',
|
60
|
-
'decisionItem',
|
61
|
-
'taskList',
|
62
|
-
'taskItem',
|
63
|
-
'date',
|
64
|
-
'status',
|
65
|
-
'expand',
|
66
|
-
'nestedExpand',
|
67
|
-
'extension',
|
68
|
-
'inlineExtension',
|
69
|
-
'bodiedExtension',
|
70
|
-
'inlineCard',
|
71
|
-
'blockCard',
|
72
|
-
'embedCard',
|
73
|
-
'unknownBlock',
|
74
|
-
'unsupportedBlock',
|
75
|
-
'unsupportedInline',
|
76
|
-
]);
|
77
|
-
});
|
78
|
-
|
79
|
-
it('should contain the marks', () => {
|
80
|
-
const schema = getSchemaBasedOnStage();
|
81
|
-
expect(Object.keys(schema.marks)).toEqual([
|
82
|
-
'link',
|
83
|
-
'em',
|
84
|
-
'strong',
|
85
|
-
'textColor',
|
86
|
-
'strike',
|
87
|
-
'subsup',
|
88
|
-
'underline',
|
89
|
-
'code',
|
90
|
-
'typeAheadQuery',
|
91
|
-
'alignment',
|
92
|
-
'annotation',
|
93
|
-
'confluenceInlineComment',
|
94
|
-
'__colorGroupDeclaration',
|
95
|
-
'__fontStyleGroupDeclaration',
|
96
|
-
'__searchQueryGroupDeclaration',
|
97
|
-
'__linkGroupDeclaration',
|
98
|
-
'breakout',
|
99
|
-
'dataConsumer',
|
100
|
-
'fragment',
|
101
|
-
'indentation',
|
102
|
-
'border',
|
103
|
-
'unsupportedMark',
|
104
|
-
'unsupportedNodeAttribute',
|
105
|
-
]);
|
106
|
-
});
|
107
|
-
});
|
108
|
-
|
109
|
-
describe('Stage-0', () => {
|
110
|
-
it('should contain the nodes', () => {
|
111
|
-
const schema = getSchemaBasedOnStage('stage0');
|
112
|
-
expect(Object.keys(schema.nodes)).toEqual([
|
113
|
-
'doc',
|
114
|
-
'paragraph',
|
115
|
-
'text',
|
116
|
-
'bulletList',
|
117
|
-
'orderedList',
|
118
|
-
'listItem',
|
119
|
-
'heading',
|
120
|
-
'blockquote',
|
121
|
-
'codeBlock',
|
122
|
-
'panel',
|
123
|
-
'rule',
|
124
|
-
'image',
|
125
|
-
'mention',
|
126
|
-
'caption',
|
127
|
-
'media',
|
128
|
-
'mediaGroup',
|
129
|
-
'mediaSingle',
|
130
|
-
'mediaInline',
|
131
|
-
'placeholder',
|
132
|
-
'layoutSection',
|
133
|
-
'layoutColumn',
|
134
|
-
'hardBreak',
|
135
|
-
'emoji',
|
136
|
-
'table',
|
137
|
-
'tableCell',
|
138
|
-
'tableRow',
|
139
|
-
'tableHeader',
|
140
|
-
'confluenceJiraIssue',
|
141
|
-
'confluenceUnsupportedInline',
|
142
|
-
'confluenceUnsupportedBlock',
|
143
|
-
'decisionList',
|
144
|
-
'decisionItem',
|
145
|
-
'taskList',
|
146
|
-
'taskItem',
|
147
|
-
'date',
|
148
|
-
'status',
|
149
|
-
'expand',
|
150
|
-
'nestedExpand',
|
151
|
-
'extension',
|
152
|
-
'inlineExtension',
|
153
|
-
'bodiedExtension',
|
154
|
-
'inlineCard',
|
155
|
-
'blockCard',
|
156
|
-
'embedCard',
|
157
|
-
'unknownBlock',
|
158
|
-
'unsupportedBlock',
|
159
|
-
'unsupportedInline',
|
160
|
-
]);
|
161
|
-
});
|
162
|
-
|
163
|
-
it('should contain the marks', () => {
|
164
|
-
const schema = getSchemaBasedOnStage('stage0');
|
165
|
-
expect(Object.keys(schema.marks)).toEqual([
|
166
|
-
'link',
|
167
|
-
'em',
|
168
|
-
'strong',
|
169
|
-
'textColor',
|
170
|
-
'strike',
|
171
|
-
'subsup',
|
172
|
-
'underline',
|
173
|
-
'code',
|
174
|
-
'typeAheadQuery',
|
175
|
-
'alignment',
|
176
|
-
'annotation',
|
177
|
-
'confluenceInlineComment',
|
178
|
-
'__colorGroupDeclaration',
|
179
|
-
'__fontStyleGroupDeclaration',
|
180
|
-
'__searchQueryGroupDeclaration',
|
181
|
-
'__linkGroupDeclaration',
|
182
|
-
'breakout',
|
183
|
-
'dataConsumer',
|
184
|
-
'fragment',
|
185
|
-
'indentation',
|
186
|
-
'border',
|
187
|
-
'unsupportedMark',
|
188
|
-
'unsupportedNodeAttribute',
|
189
|
-
]);
|
190
|
-
});
|
191
|
-
});
|
192
|
-
});
|
@@ -1,46 +0,0 @@
|
|
1
|
-
import { createSchema } from '../../../../schema/create-schema';
|
2
|
-
import { toHTML, fromHTML } from 'adf-test-helpers/src/adf-schema/html-helpers';
|
3
|
-
import { Schema } from '@atlaskit/editor-prosemirror/model';
|
4
|
-
|
5
|
-
const packageName = process.env._PACKAGE_NAME_ as string;
|
6
|
-
|
7
|
-
describe(`${packageName}/schema confluence-inline-comment mark`, () => {
|
8
|
-
let schema: Schema;
|
9
|
-
beforeEach(() => {
|
10
|
-
schema = makeSchema();
|
11
|
-
});
|
12
|
-
|
13
|
-
it('serializes to the correct HTML', () => {
|
14
|
-
const node = schema.text('foo', [
|
15
|
-
schema.marks.annotation.create({
|
16
|
-
id: 'hash-ref-goes-here',
|
17
|
-
}),
|
18
|
-
]);
|
19
|
-
|
20
|
-
const html = toHTML(node, schema);
|
21
|
-
expect(html).toContain('data-id="hash-ref-goes-here"');
|
22
|
-
expect(html).toContain('data-mark-type="annotation"');
|
23
|
-
expect(html).toContain('data-mark-annotation-type="inlineComment"');
|
24
|
-
});
|
25
|
-
|
26
|
-
it('parses annotation correctly from html', () => {
|
27
|
-
const doc = fromHTML(
|
28
|
-
`<p><span data-mark-type="annotation" data-mark-annotation-type="inlineComment" data-id="comment-id" >annotated text</span></p>`,
|
29
|
-
schema,
|
30
|
-
);
|
31
|
-
const annotationNode = doc.firstChild!.firstChild!;
|
32
|
-
expect(annotationNode.marks).toHaveLength(1);
|
33
|
-
expect(annotationNode.marks[0].type.name).toBe('annotation');
|
34
|
-
expect(annotationNode.marks[0].attrs).toEqual({
|
35
|
-
id: 'comment-id',
|
36
|
-
annotationType: 'inlineComment',
|
37
|
-
});
|
38
|
-
});
|
39
|
-
});
|
40
|
-
|
41
|
-
function makeSchema() {
|
42
|
-
return createSchema({
|
43
|
-
nodes: ['doc', 'paragraph', 'text'],
|
44
|
-
marks: ['annotation'],
|
45
|
-
});
|
46
|
-
}
|
@@ -1,76 +0,0 @@
|
|
1
|
-
import { createSchema } from '../../../../schema/create-schema';
|
2
|
-
import { fromHTML, toHTML } from 'adf-test-helpers/src/adf-schema/html-helpers';
|
3
|
-
|
4
|
-
const testAttr = { color: '#172B4D', size: 1 };
|
5
|
-
const testAttrFalse = { color: '#12345', size: 0 };
|
6
|
-
const packageName = process.env._PACKAGE_NAME_ as string;
|
7
|
-
|
8
|
-
describe(`${packageName}/schema border mark`, () => {
|
9
|
-
it('serializes to the correct HTML', () => {
|
10
|
-
const schema = makeSchema();
|
11
|
-
const node = schema.nodes.media.create(
|
12
|
-
{},
|
13
|
-
[],
|
14
|
-
[schema.marks.border.create(testAttr)],
|
15
|
-
);
|
16
|
-
const html = toHTML(node, schema);
|
17
|
-
expect(html).toContain(
|
18
|
-
`data-mark-type="border" data-color="#172B4D" data-size="1" style="--custom-palette-color: var(--ds-text, #172B4D)"`,
|
19
|
-
);
|
20
|
-
});
|
21
|
-
});
|
22
|
-
|
23
|
-
it('should parse border with color in lower case', () => {
|
24
|
-
const schema = makeSchema();
|
25
|
-
const doc = fromHTML(
|
26
|
-
`<div data-mark-type="border" data-color="${testAttr.color}" data-size="${testAttr.size}"><div data-node-type="media" data-type="file" data-id="dummy-id"></div></div>`,
|
27
|
-
schema,
|
28
|
-
);
|
29
|
-
const dataConsumerNode = doc.firstChild!.firstChild!;
|
30
|
-
|
31
|
-
expect(dataConsumerNode.marks).toHaveLength(1);
|
32
|
-
expect(dataConsumerNode.marks[0].type.name).toBe('border');
|
33
|
-
expect(dataConsumerNode.marks[0].attrs).toEqual({
|
34
|
-
size: testAttr.size,
|
35
|
-
color: '#172b4d',
|
36
|
-
});
|
37
|
-
});
|
38
|
-
|
39
|
-
it('should parse border with attributes as false if size and color are not expected values', () => {
|
40
|
-
const schema = makeSchema();
|
41
|
-
const doc = fromHTML(
|
42
|
-
`<div data-mark-type="border" data-color="${testAttrFalse.color}" data-size="${testAttrFalse.size}"><div data-node-type="media" data-type="file" data-id="dummy-id"></div></div>`,
|
43
|
-
schema,
|
44
|
-
);
|
45
|
-
const dataConsumerNode = doc.firstChild!.firstChild!;
|
46
|
-
|
47
|
-
expect(dataConsumerNode.marks).toHaveLength(1);
|
48
|
-
expect(dataConsumerNode.marks[0].type.name).toBe('border');
|
49
|
-
expect(dataConsumerNode.marks[0].attrs).toEqual({
|
50
|
-
size: false,
|
51
|
-
color: false,
|
52
|
-
});
|
53
|
-
});
|
54
|
-
|
55
|
-
it('should parse maximum size as 3', () => {
|
56
|
-
const schema = makeSchema();
|
57
|
-
const doc = fromHTML(
|
58
|
-
`<div data-mark-type="border" data-color="${testAttr.color}" data-size=5><div data-node-type="media" data-type="file" data-id="dummy-id"></div></div>`,
|
59
|
-
schema,
|
60
|
-
);
|
61
|
-
const dataConsumerNode = doc.firstChild!.firstChild!;
|
62
|
-
|
63
|
-
expect(dataConsumerNode.marks).toHaveLength(1);
|
64
|
-
expect(dataConsumerNode.marks[0].type.name).toBe('border');
|
65
|
-
expect(dataConsumerNode.marks[0].attrs).toEqual({
|
66
|
-
size: 3,
|
67
|
-
color: '#172b4d',
|
68
|
-
});
|
69
|
-
});
|
70
|
-
|
71
|
-
function makeSchema() {
|
72
|
-
return createSchema({
|
73
|
-
nodes: ['doc', 'paragraph', 'text', 'mediaSingle', 'media', 'caption'],
|
74
|
-
marks: ['border'],
|
75
|
-
});
|
76
|
-
}
|
@@ -1,24 +0,0 @@
|
|
1
|
-
import { createSchema } from '../../../../schema/create-schema';
|
2
|
-
import { toHTML } from 'adf-test-helpers/src/adf-schema/html-helpers';
|
3
|
-
|
4
|
-
const packageName = process.env._PACKAGE_NAME_ as string;
|
5
|
-
|
6
|
-
describe(`${packageName}/schema breakout mark`, () => {
|
7
|
-
it('serializes to the correct HTML', () => {
|
8
|
-
const schema = makeSchema();
|
9
|
-
const node = schema.nodes.codeBlock.create(
|
10
|
-
{},
|
11
|
-
[],
|
12
|
-
[schema.marks.breakout.create({ mode: 'wide' })],
|
13
|
-
);
|
14
|
-
const html = toHTML(node, schema);
|
15
|
-
expect(html).toContain('data-mode="wide"');
|
16
|
-
});
|
17
|
-
});
|
18
|
-
|
19
|
-
function makeSchema() {
|
20
|
-
return createSchema({
|
21
|
-
nodes: ['doc', 'paragraph', 'text', 'codeBlock'],
|
22
|
-
marks: ['breakout'],
|
23
|
-
});
|
24
|
-
}
|
@@ -1,44 +0,0 @@
|
|
1
|
-
import { createSchema } from '../../../../schema/create-schema';
|
2
|
-
import {
|
3
|
-
fromHTML,
|
4
|
-
toHTML,
|
5
|
-
textWithMarks,
|
6
|
-
} from 'adf-test-helpers/src/adf-schema';
|
7
|
-
|
8
|
-
const packageName = process.env._PACKAGE_NAME_ as string;
|
9
|
-
|
10
|
-
describe(`${packageName}/schema code mark`, () => {
|
11
|
-
itMatches('<span class="code">text</span>', 'text');
|
12
|
-
itMatches('<code>text</code>', 'text');
|
13
|
-
itMatches('<tt>text</tt>', 'text');
|
14
|
-
itMatches(
|
15
|
-
`<span style="font-family: Menlo, Monaco, 'Courier New', monospace;">text</span>`,
|
16
|
-
'text',
|
17
|
-
);
|
18
|
-
itMatches(`<span style="white-space: pre;">text</span>`, 'text');
|
19
|
-
|
20
|
-
it('serializes to <span class="code">', () => {
|
21
|
-
const schema = makeSchema();
|
22
|
-
const node = schema.text('foo', [schema.marks.code.create()]);
|
23
|
-
expect(toHTML(node, schema)).toEqual(
|
24
|
-
'<span class="code" spellcheck="false">foo</span>',
|
25
|
-
);
|
26
|
-
});
|
27
|
-
});
|
28
|
-
|
29
|
-
function makeSchema() {
|
30
|
-
return createSchema({
|
31
|
-
nodes: ['doc', 'paragraph', 'text'],
|
32
|
-
marks: ['code'],
|
33
|
-
});
|
34
|
-
}
|
35
|
-
|
36
|
-
function itMatches(html: string, expectedText: string) {
|
37
|
-
it(`matches ${html}`, () => {
|
38
|
-
const schema = makeSchema();
|
39
|
-
const doc = fromHTML(`${html}`, schema);
|
40
|
-
const codeNode = schema.marks.code.create();
|
41
|
-
|
42
|
-
expect(textWithMarks(doc, expectedText, [codeNode])).toBe(true);
|
43
|
-
});
|
44
|
-
}
|