pro-editor-schema 0.1.182 → 0.1.184

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/dist/index.d.mts CHANGED
@@ -10,6 +10,11 @@ type AllowedChildren = {
10
10
  tagName: string;
11
11
  required: boolean;
12
12
  };
13
+ type ResolveTo = "unwrap" | "skip" | "remove";
14
+ type ForbiddenElement = {
15
+ code: SchemaCode;
16
+ resolveTo?: ResolveTo;
17
+ };
13
18
  type Schema<TRequiredAttributes = readonly AttributeDefinition[], TOptionalAttributes = readonly AttributeDefinition[]> = {
14
19
  code: SchemaCode;
15
20
  kind: SchemaKind;
@@ -18,7 +23,7 @@ type Schema<TRequiredAttributes = readonly AttributeDefinition[], TOptionalAttri
18
23
  optionalAttributes: TOptionalAttributes;
19
24
  defaultChildTagName?: string;
20
25
  allowedChildTagNames: ReadonlySet<AllowedChildren>;
21
- unhierarchicalAllowedChildTagNames?: readonly string[];
26
+ forbiddenElements?: ReadonlySet<ForbiddenElement>;
22
27
  };
23
28
  type SchemaCode = ElementSchemaCode | InlineSchemaCode | AtomSchemaCode;
24
29
  type ElementSchemaCode = "degrees" | "email" | "equation" | "fignote" | "figsource" | "firstname" | "footnote" | "footnoteno" | "honorific" | "img" | "informalfigure" | "keyword" | "label1" | "li" | "line" | "lrh" | "math" | "mathphrase" | "merror" | "mfrac" | "mi" | "mmultiscripts" | "mn" | "mo" | "mover" | "mpadded" | "mphantom" | "mprescripts" | "mroot" | "mrow" | "ms" | "mspace" | "msqrt" | "mstyle" | "msub" | "msubsup" | "msup" | "mtable" | "mtd" | "mtext" | "mtr" | "munder" | "munderover" | "olink" | "org" | "orgname" | "para" | "punc" | "rrh" | "source1" | "speaker" | "subtitle1" | "surname" | "tag" | "tblfn" | "tblsource" | "thead" | "title1" | "token" | "tp" | "abstract1" | "affiliation" | "alttext" | "appendix" | "author" | "authorgroup" | "blockquote" | "caption1" | "chapter" | "dialogue" | "epigraph" | "figure1" | "footnoteSection" | "heading" | "imageobject" | "info1" | "keywordset" | "mediaobject" | "ol" | "personname" | "poem" | "sidebar" | "table" | "table1" | "tbody" | "td" | "tgroup" | "tr" | "ul";
@@ -103,4 +108,4 @@ type ValidationError = {
103
108
  */
104
109
  declare const validateXml: (xml: Element, elementsLinkedTo: readonly string[], shouldValidateAgainstSchema?: boolean) => ValidationError[];
105
110
 
106
- export { ALIGNMENT_ATTRIBUTE, ATOM_SCHEMAS, type AllowedChildren, type AtomSchemaCode, type AttributeDefinition, ELEMENT_SCHEMAS, ELE_ID_ATTRIBUTE, type ElementSchemaCode, FIGURE_PLACEMENT_ATTRIBUTE, type FreeAttribute, ID_ATTRS, IGNORED_ATTRIBUTES, IGNORED_ATTRIBUTES_STARTS_WITH, IGNORED_ELEMENT_SELECTORS, INDENT_TYPE_ATTRIBUTE, INLINE_ELEMENT_SCHEMAS, type InlineSchemaCode, LAYOUT_ATTRIBUTES, LAYOUT_CELL_WIDTH, LAYOUT_USER_ATTRIBUTE, LEFT_INDENT_ATTRIBUTE, ORIENTATION_ATTRIBUTE, PLACEMENT_ATTRIBUTE, RIGHT_INDENT_ATTRIBUTE, type RestrictedAttribute, SCHEMAS, SPACE_ABOVE_ATTRIBUTE, SPACE_BELOW_ATTRIBUTE, SPECIAL_INDENT_ATTRIBUTE, STORE_ATTRIBUTE, STYLE_NAME_ATTRIBUTE, type Schema, type SchemaCode, type SchemaKind, TRACK_CHANGES_ATTRS, TRACK_CHANGES_ATTR_DATA_DATE, TRACK_CHANGES_ATTR_DATA_TIME, TRACK_CHANGES_ATTR_DATA_USERID, TRACK_CHANGES_ATTR_DATA_USERNAME, type ValidationError, type ValidationErrorKind, type ValidationErrorLevel, createElement, findAttributeDefinitionByName, findSchemaByCode, findSchemaByElement, getAttributeName, isAttributeRestricted, isIgnoredAttribute, isIgnoredElement, validateXml };
111
+ export { ALIGNMENT_ATTRIBUTE, ATOM_SCHEMAS, type AllowedChildren, type AtomSchemaCode, type AttributeDefinition, ELEMENT_SCHEMAS, ELE_ID_ATTRIBUTE, type ElementSchemaCode, FIGURE_PLACEMENT_ATTRIBUTE, type ForbiddenElement, type FreeAttribute, ID_ATTRS, IGNORED_ATTRIBUTES, IGNORED_ATTRIBUTES_STARTS_WITH, IGNORED_ELEMENT_SELECTORS, INDENT_TYPE_ATTRIBUTE, INLINE_ELEMENT_SCHEMAS, type InlineSchemaCode, LAYOUT_ATTRIBUTES, LAYOUT_CELL_WIDTH, LAYOUT_USER_ATTRIBUTE, LEFT_INDENT_ATTRIBUTE, ORIENTATION_ATTRIBUTE, PLACEMENT_ATTRIBUTE, RIGHT_INDENT_ATTRIBUTE, type ResolveTo, type RestrictedAttribute, SCHEMAS, SPACE_ABOVE_ATTRIBUTE, SPACE_BELOW_ATTRIBUTE, SPECIAL_INDENT_ATTRIBUTE, STORE_ATTRIBUTE, STYLE_NAME_ATTRIBUTE, type Schema, type SchemaCode, type SchemaKind, TRACK_CHANGES_ATTRS, TRACK_CHANGES_ATTR_DATA_DATE, TRACK_CHANGES_ATTR_DATA_TIME, TRACK_CHANGES_ATTR_DATA_USERID, TRACK_CHANGES_ATTR_DATA_USERNAME, type ValidationError, type ValidationErrorKind, type ValidationErrorLevel, createElement, findAttributeDefinitionByName, findSchemaByCode, findSchemaByElement, getAttributeName, isAttributeRestricted, isIgnoredAttribute, isIgnoredElement, validateXml };
package/dist/index.d.ts CHANGED
@@ -10,6 +10,11 @@ type AllowedChildren = {
10
10
  tagName: string;
11
11
  required: boolean;
12
12
  };
13
+ type ResolveTo = "unwrap" | "skip" | "remove";
14
+ type ForbiddenElement = {
15
+ code: SchemaCode;
16
+ resolveTo?: ResolveTo;
17
+ };
13
18
  type Schema<TRequiredAttributes = readonly AttributeDefinition[], TOptionalAttributes = readonly AttributeDefinition[]> = {
14
19
  code: SchemaCode;
15
20
  kind: SchemaKind;
@@ -18,7 +23,7 @@ type Schema<TRequiredAttributes = readonly AttributeDefinition[], TOptionalAttri
18
23
  optionalAttributes: TOptionalAttributes;
19
24
  defaultChildTagName?: string;
20
25
  allowedChildTagNames: ReadonlySet<AllowedChildren>;
21
- unhierarchicalAllowedChildTagNames?: readonly string[];
26
+ forbiddenElements?: ReadonlySet<ForbiddenElement>;
22
27
  };
23
28
  type SchemaCode = ElementSchemaCode | InlineSchemaCode | AtomSchemaCode;
24
29
  type ElementSchemaCode = "degrees" | "email" | "equation" | "fignote" | "figsource" | "firstname" | "footnote" | "footnoteno" | "honorific" | "img" | "informalfigure" | "keyword" | "label1" | "li" | "line" | "lrh" | "math" | "mathphrase" | "merror" | "mfrac" | "mi" | "mmultiscripts" | "mn" | "mo" | "mover" | "mpadded" | "mphantom" | "mprescripts" | "mroot" | "mrow" | "ms" | "mspace" | "msqrt" | "mstyle" | "msub" | "msubsup" | "msup" | "mtable" | "mtd" | "mtext" | "mtr" | "munder" | "munderover" | "olink" | "org" | "orgname" | "para" | "punc" | "rrh" | "source1" | "speaker" | "subtitle1" | "surname" | "tag" | "tblfn" | "tblsource" | "thead" | "title1" | "token" | "tp" | "abstract1" | "affiliation" | "alttext" | "appendix" | "author" | "authorgroup" | "blockquote" | "caption1" | "chapter" | "dialogue" | "epigraph" | "figure1" | "footnoteSection" | "heading" | "imageobject" | "info1" | "keywordset" | "mediaobject" | "ol" | "personname" | "poem" | "sidebar" | "table" | "table1" | "tbody" | "td" | "tgroup" | "tr" | "ul";
@@ -103,4 +108,4 @@ type ValidationError = {
103
108
  */
104
109
  declare const validateXml: (xml: Element, elementsLinkedTo: readonly string[], shouldValidateAgainstSchema?: boolean) => ValidationError[];
105
110
 
106
- export { ALIGNMENT_ATTRIBUTE, ATOM_SCHEMAS, type AllowedChildren, type AtomSchemaCode, type AttributeDefinition, ELEMENT_SCHEMAS, ELE_ID_ATTRIBUTE, type ElementSchemaCode, FIGURE_PLACEMENT_ATTRIBUTE, type FreeAttribute, ID_ATTRS, IGNORED_ATTRIBUTES, IGNORED_ATTRIBUTES_STARTS_WITH, IGNORED_ELEMENT_SELECTORS, INDENT_TYPE_ATTRIBUTE, INLINE_ELEMENT_SCHEMAS, type InlineSchemaCode, LAYOUT_ATTRIBUTES, LAYOUT_CELL_WIDTH, LAYOUT_USER_ATTRIBUTE, LEFT_INDENT_ATTRIBUTE, ORIENTATION_ATTRIBUTE, PLACEMENT_ATTRIBUTE, RIGHT_INDENT_ATTRIBUTE, type RestrictedAttribute, SCHEMAS, SPACE_ABOVE_ATTRIBUTE, SPACE_BELOW_ATTRIBUTE, SPECIAL_INDENT_ATTRIBUTE, STORE_ATTRIBUTE, STYLE_NAME_ATTRIBUTE, type Schema, type SchemaCode, type SchemaKind, TRACK_CHANGES_ATTRS, TRACK_CHANGES_ATTR_DATA_DATE, TRACK_CHANGES_ATTR_DATA_TIME, TRACK_CHANGES_ATTR_DATA_USERID, TRACK_CHANGES_ATTR_DATA_USERNAME, type ValidationError, type ValidationErrorKind, type ValidationErrorLevel, createElement, findAttributeDefinitionByName, findSchemaByCode, findSchemaByElement, getAttributeName, isAttributeRestricted, isIgnoredAttribute, isIgnoredElement, validateXml };
111
+ export { ALIGNMENT_ATTRIBUTE, ATOM_SCHEMAS, type AllowedChildren, type AtomSchemaCode, type AttributeDefinition, ELEMENT_SCHEMAS, ELE_ID_ATTRIBUTE, type ElementSchemaCode, FIGURE_PLACEMENT_ATTRIBUTE, type ForbiddenElement, type FreeAttribute, ID_ATTRS, IGNORED_ATTRIBUTES, IGNORED_ATTRIBUTES_STARTS_WITH, IGNORED_ELEMENT_SELECTORS, INDENT_TYPE_ATTRIBUTE, INLINE_ELEMENT_SCHEMAS, type InlineSchemaCode, LAYOUT_ATTRIBUTES, LAYOUT_CELL_WIDTH, LAYOUT_USER_ATTRIBUTE, LEFT_INDENT_ATTRIBUTE, ORIENTATION_ATTRIBUTE, PLACEMENT_ATTRIBUTE, RIGHT_INDENT_ATTRIBUTE, type ResolveTo, type RestrictedAttribute, SCHEMAS, SPACE_ABOVE_ATTRIBUTE, SPACE_BELOW_ATTRIBUTE, SPECIAL_INDENT_ATTRIBUTE, STORE_ATTRIBUTE, STYLE_NAME_ATTRIBUTE, type Schema, type SchemaCode, type SchemaKind, TRACK_CHANGES_ATTRS, TRACK_CHANGES_ATTR_DATA_DATE, TRACK_CHANGES_ATTR_DATA_TIME, TRACK_CHANGES_ATTR_DATA_USERID, TRACK_CHANGES_ATTR_DATA_USERNAME, type ValidationError, type ValidationErrorKind, type ValidationErrorLevel, createElement, findAttributeDefinitionByName, findSchemaByCode, findSchemaByElement, getAttributeName, isAttributeRestricted, isIgnoredAttribute, isIgnoredElement, validateXml };
package/dist/index.js CHANGED
@@ -70,7 +70,7 @@ var createSchema = ({
70
70
  optionalAttributes,
71
71
  defaultChildTagName,
72
72
  allowedChildTagNames,
73
- unhierarchicalAllowedChildTagNames
73
+ forbiddenElements
74
74
  }) => {
75
75
  return {
76
76
  code,
@@ -80,7 +80,7 @@ var createSchema = ({
80
80
  optionalAttributes,
81
81
  defaultChildTagName,
82
82
  allowedChildTagNames: new Set(allowedChildTagNames),
83
- unhierarchicalAllowedChildTagNames
83
+ forbiddenElements: new Set(forbiddenElements)
84
84
  };
85
85
  };
86
86
 
@@ -858,7 +858,13 @@ var EQUATION_SCHEMA = createSchema({
858
858
  defaultValue: "added"
859
859
  }
860
860
  ],
861
- allowedChildTagNames: [{ tagName: MATHPHRASE_TAG, required: true }]
861
+ allowedChildTagNames: [
862
+ { tagName: MATHPHRASE_TAG, required: true },
863
+ {
864
+ tagName: CAPTION_TAG,
865
+ required: false
866
+ }
867
+ ]
862
868
  });
863
869
 
864
870
  // src/schema/shared/allowedMathChildren.ts
@@ -896,7 +902,8 @@ var MATH_SCHEMA = createSchema({
896
902
  kind: "element",
897
903
  tag: MATH_TAG,
898
904
  requiredAttributes: [],
899
- optionalAttributes: ["xmlns"],
905
+ optionalAttributes: ["xmlns", "display"],
906
+ defaultChildTagName: MI_TAG,
900
907
  allowedChildTagNames: [...MATH_PRESENTATION_TAGS_ALLOWED_CHILDREN]
901
908
  });
902
909
 
@@ -2022,8 +2029,18 @@ var MATHPHRASE_SCHEMA = createSchema({
2022
2029
  tag: MATHPHRASE_TAG,
2023
2030
  requiredAttributes: [ELE_ID_ATTRIBUTE],
2024
2031
  optionalAttributes: [],
2025
- allowedChildTagNames: [{ tagName: MATH_TAG, required: true }],
2026
- unhierarchicalAllowedChildTagNames: [SPAN_TAG]
2032
+ allowedChildTagNames: [
2033
+ { tagName: MATH_TAG, required: true },
2034
+ {
2035
+ tagName: SPAN_TAG,
2036
+ required: false
2037
+ }
2038
+ ],
2039
+ forbiddenElements: [
2040
+ { code: QUERY_SCHEMA.code, resolveTo: "skip" },
2041
+ { code: COMMENT_SCHEMA.code, resolveTo: "skip" },
2042
+ { code: COMMENT_QUERY_SECTION_SCHEMA.code, resolveTo: "skip" }
2043
+ ]
2027
2044
  });
2028
2045
 
2029
2046
  // src/schema/elementSchemas/elements/index.ts
@@ -2584,6 +2601,21 @@ var validateChildren = (element, schema) => {
2584
2601
  });
2585
2602
  continue;
2586
2603
  }
2604
+ if (schema.forbiddenElements) {
2605
+ const forbiddenChild = Array.from(schema.forbiddenElements).find(
2606
+ (candidate) => candidate.code === childSchema.code
2607
+ );
2608
+ if (forbiddenChild) {
2609
+ addValidationIssue(errors, {
2610
+ store: getStore(child),
2611
+ title: `Forbidden element ${child.tagName}`,
2612
+ level: "blocker",
2613
+ kind: "forbidden",
2614
+ description: `The element ${childSchema.code} is not permitted within ${schema.tag} content. Please delete the element or move it to a different location.`
2615
+ });
2616
+ continue;
2617
+ }
2618
+ }
2587
2619
  errors.push(...validateElementAgainstSchema(child, childSchema));
2588
2620
  }
2589
2621
  for (const allowedChild of allowedChildren) {
@@ -2606,10 +2638,10 @@ var validateChildren = (element, schema) => {
2606
2638
  if (schema.allowedChildTagNames.size === 0 && childElements.length > 0) {
2607
2639
  addValidationIssue(errors, {
2608
2640
  store: getStore(element),
2609
- title: "Leaf element cannot contain child elements",
2641
+ title: "Atom element cannot contain child elements",
2610
2642
  level: "warning",
2611
2643
  kind: "forbidden",
2612
- description: `The element is a leaf element and cannot contain child elements.`
2644
+ description: `The element is an atom element and cannot contain child elements.`
2613
2645
  });
2614
2646
  }
2615
2647
  return errors;
package/dist/index.mjs CHANGED
@@ -7,7 +7,7 @@ var createSchema = ({
7
7
  optionalAttributes,
8
8
  defaultChildTagName,
9
9
  allowedChildTagNames,
10
- unhierarchicalAllowedChildTagNames
10
+ forbiddenElements
11
11
  }) => {
12
12
  return {
13
13
  code,
@@ -17,7 +17,7 @@ var createSchema = ({
17
17
  optionalAttributes,
18
18
  defaultChildTagName,
19
19
  allowedChildTagNames: new Set(allowedChildTagNames),
20
- unhierarchicalAllowedChildTagNames
20
+ forbiddenElements: new Set(forbiddenElements)
21
21
  };
22
22
  };
23
23
 
@@ -795,7 +795,13 @@ var EQUATION_SCHEMA = createSchema({
795
795
  defaultValue: "added"
796
796
  }
797
797
  ],
798
- allowedChildTagNames: [{ tagName: MATHPHRASE_TAG, required: true }]
798
+ allowedChildTagNames: [
799
+ { tagName: MATHPHRASE_TAG, required: true },
800
+ {
801
+ tagName: CAPTION_TAG,
802
+ required: false
803
+ }
804
+ ]
799
805
  });
800
806
 
801
807
  // src/schema/shared/allowedMathChildren.ts
@@ -833,7 +839,8 @@ var MATH_SCHEMA = createSchema({
833
839
  kind: "element",
834
840
  tag: MATH_TAG,
835
841
  requiredAttributes: [],
836
- optionalAttributes: ["xmlns"],
842
+ optionalAttributes: ["xmlns", "display"],
843
+ defaultChildTagName: MI_TAG,
837
844
  allowedChildTagNames: [...MATH_PRESENTATION_TAGS_ALLOWED_CHILDREN]
838
845
  });
839
846
 
@@ -1959,8 +1966,18 @@ var MATHPHRASE_SCHEMA = createSchema({
1959
1966
  tag: MATHPHRASE_TAG,
1960
1967
  requiredAttributes: [ELE_ID_ATTRIBUTE],
1961
1968
  optionalAttributes: [],
1962
- allowedChildTagNames: [{ tagName: MATH_TAG, required: true }],
1963
- unhierarchicalAllowedChildTagNames: [SPAN_TAG]
1969
+ allowedChildTagNames: [
1970
+ { tagName: MATH_TAG, required: true },
1971
+ {
1972
+ tagName: SPAN_TAG,
1973
+ required: false
1974
+ }
1975
+ ],
1976
+ forbiddenElements: [
1977
+ { code: QUERY_SCHEMA.code, resolveTo: "skip" },
1978
+ { code: COMMENT_SCHEMA.code, resolveTo: "skip" },
1979
+ { code: COMMENT_QUERY_SECTION_SCHEMA.code, resolveTo: "skip" }
1980
+ ]
1964
1981
  });
1965
1982
 
1966
1983
  // src/schema/elementSchemas/elements/index.ts
@@ -2521,6 +2538,21 @@ var validateChildren = (element, schema) => {
2521
2538
  });
2522
2539
  continue;
2523
2540
  }
2541
+ if (schema.forbiddenElements) {
2542
+ const forbiddenChild = Array.from(schema.forbiddenElements).find(
2543
+ (candidate) => candidate.code === childSchema.code
2544
+ );
2545
+ if (forbiddenChild) {
2546
+ addValidationIssue(errors, {
2547
+ store: getStore(child),
2548
+ title: `Forbidden element ${child.tagName}`,
2549
+ level: "blocker",
2550
+ kind: "forbidden",
2551
+ description: `The element ${childSchema.code} is not permitted within ${schema.tag} content. Please delete the element or move it to a different location.`
2552
+ });
2553
+ continue;
2554
+ }
2555
+ }
2524
2556
  errors.push(...validateElementAgainstSchema(child, childSchema));
2525
2557
  }
2526
2558
  for (const allowedChild of allowedChildren) {
@@ -2543,10 +2575,10 @@ var validateChildren = (element, schema) => {
2543
2575
  if (schema.allowedChildTagNames.size === 0 && childElements.length > 0) {
2544
2576
  addValidationIssue(errors, {
2545
2577
  store: getStore(element),
2546
- title: "Leaf element cannot contain child elements",
2578
+ title: "Atom element cannot contain child elements",
2547
2579
  level: "warning",
2548
2580
  kind: "forbidden",
2549
- description: `The element is a leaf element and cannot contain child elements.`
2581
+ description: `The element is an atom element and cannot contain child elements.`
2550
2582
  });
2551
2583
  }
2552
2584
  return errors;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pro-editor-schema",
3
- "version": "0.1.182",
3
+ "version": "0.1.184",
4
4
  "description": "Pro Editor XML schemas",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -17,6 +17,7 @@
17
17
  ],
18
18
  "scripts": {
19
19
  "build": "tsup src/index.ts --format cjs,esm --dts",
20
+ "dev": "tsup src/index.ts --format cjs,esm --dts --watch",
20
21
  "typecheck": "tsc --noEmit",
21
22
  "test": "vitest run",
22
23
  "test:watch": "vitest"