pro-editor-schema 0.1.14 → 0.1.16

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
@@ -457,19 +457,18 @@ type ValidationError = {
457
457
  description: string;
458
458
  };
459
459
 
460
- declare const validateElement: (element: Element, root: Element, referenceChapterLinkends?: readonly string[]) => ValidationError[];
461
- declare const validateXml: (xml: Element | HTMLElement, referenceChapterLinkends?: readonly string[]) => ValidationError[];
460
+ declare const validateElement: (element: Element, root: Element, elementsLinkedTo?: readonly string[]) => ValidationError[];
461
+ declare const validateXml: (xml: Element | HTMLElement, elementsLinkedTo?: readonly string[]) => ValidationError[];
462
462
 
463
463
  declare const validateFootnoteCue: (footnoteElement: Element, root: Element) => ValidationError[];
464
464
  declare const validateConsecutiveFootnotes: (root: Element) => ValidationError[];
465
465
  declare const validateConsecutiveFootnoteCues: (root: Element) => ValidationError[];
466
466
  declare const validateFootnotes: (root: Element) => ValidationError[];
467
467
 
468
- declare const validateLinkend: (linkElement: Element, root: Element, referenceChapterLinkends?: readonly string[]) => ValidationError[];
469
- declare const validateLinkends: (root: Element, referenceChapterLinkends?: readonly string[]) => ValidationError[];
468
+ declare const validateLinkend: (linkElement: Element, elementsLinkedTo?: readonly string[]) => ValidationError[];
470
469
 
471
470
  declare const validateAttributes: (element: Element, schema: Schema) => ValidationError[];
472
471
 
473
472
  declare const validateElementAgainstSchema: (element: Element, schema: Schema) => ValidationError[];
474
473
 
475
- export { ABSTRACT_SCHEMA, ABSTRACT_TAG, AFFILIATION_SCHEMA, AFFILIATION_TAG, ALIGNMENT_ATTRIBUTE, ALTTEXT_SCHEMA, ALTTEXT_TAG, APPENDIX_SCHEMA, APPENDIX_TAG, ATOM_SCHEMAS, AUTHORGROUP_SCHEMA, AUTHORGROUP_TAG, AUTHOR_SCHEMA, AUTHOR_TAG, type AllowedChildren, type AttributeDefinition, BLOCKQUOTE_SCHEMA, BLOCKQUOTE_TAG, BOX_SCHEMA, B_SCHEMA, CAPTION_SCHEMA, CAPTION_TAG, CHAPTER_SCHEMA, CHAPTER_TAG, COMMENT_QUERY_SECTION_SCHEMA, COMMENT_SCHEMA, CONTENT_SCHEMA, DEGREES_SCHEMA, DEGREES_TAG, DELETION_SCHEMA, DIALOGUE_SCHEMA, DIALOGUE_TAG, ELEMENT_SCHEMAS, ELEMENT_TAGS, ELE_ID_ATTRIBUTE, EMAIL_SCHEMA, EMAIL_TAG, EMPHASIS_SCHEMA, EPIGRAPH_SCHEMA, EPIGRAPH_TAG, EQUATION_SCHEMA, EQUATION_TAG, FIGNOTE_SCHEMA, FIGNOTE_TAG, FIGSOURCE_SCHEMA, FIGSOURCE_TAG, FIGURE_PLACEMENT_ATTRIBUTE, FIGURE_SCHEMA, FIGURE_TAG, FIRSTNAME_SCHEMA, FIRSTNAME_TAG, FOOTNOTE_LINK_SCHEMA, FOOTNOTE_LINK_TAG, FOOTNOTE_NUMBER_SCHEMA, FOOTNOTE_NUMBER_TAG, FOOTNOTE_SCHEMA, FOOTNOTE_SECTION_SCHEMA, FOOTNOTE_TAG, type FreeAttribute, GROUP_ELEMENTS_TAGS, GROUP_ELEMENT_SCHEMAS, HEADING_SCHEMA, HIGHLIGHTMARK_SCHEMA, HONORIFIC_SCHEMA, HONORIFIC_TAG, HTML_TABLE_SCHEMA, HTML_TABLE_TAG, ID_ATTRS, IGNORED_ATTRIBUTES, IGNORED_ATTRIBUTES_STARTS_WITH, IGNORED_ELEMENT_SELECTORS, IMAGEOBJECT_SCHEMA, IMAGEOBJECT_TAG, IMG_SCHEMA, IMG_TAG, INDENT_TYPE_ATTRIBUTE, INFORMALFIGURE_SCHEMA, INFORMALFIGURE_TAG, INFO_SCHEMA, INFO_TAG, INLINEEQUATION_SCHEMA, INLINEEQUATION_TAG, INLINE_ELEMENT_SCHEMAS, INLINE_ELEMENT_TAGS_ALLOWED_CHILDREN, INSERTION_SCHEMA, I_SCHEMA, KEYWORDSET_SCHEMA, KEYWORDSET_TAG, KEYWORD_SCHEMA, KEYWORD_TAG, LABEL_SCHEMA, LABEL_TAG, LAYOUT_ATTRIBUTES, LAYOUT_CELL_WIDTH, LAYOUT_USER_ATTRIBUTE, LEFT_INDENT_ATTRIBUTE, LINE_SCHEMA, LINE_TAG, LINK_SCHEMA, LINK_TAG, LI_SCHEMA, LI_TAG, LRH_SCHEMA, LRH_TAG, MEDIAOBJECT_SCHEMA, MEDIAOBJECT_TAG, OLINK_SCHEMA, OLINK_TAG, OL_SCHEMA, OL_TAG, ORGNAME_SCHEMA, ORGNAME_TAG, ORG_SCHEMA, ORG_TAG, ORIENTATION_ATTRIBUTE, PARA_SCHEMA, PARA_TAG, PERSONNAME_SCHEMA, PERSONNAME_TAG, PLACEMENT_ATTRIBUTE, POEM_SCHEMA, POEM_TAG, POSTNOMINALS_TAG, PUNC_SCHEMA, PUNC_TAG, QUERY_SCHEMA, REPLY_SCHEMA, RIGHT_INDENT_ATTRIBUTE, RRH_SCHEMA, RRH_TAG, type RestrictedAttribute, SCHEMAS, SCHEMA_MAP, SC_SCHEMA, SECTION_TAG, SIDEBAR_TAG, SOURCE_SCHEMA, SOURCE_TAG, SPACE_ABOVE_ATTRIBUTE, SPACE_BELOW_ATTRIBUTE, SPEAKER_SCHEMA, SPEAKER_TAG, SPECIAL_INDENT_ATTRIBUTE, STORE_ATTRIBUTE, STRIKE_SCHEMA, STYLE_NAME_ATTRIBUTE, SUBTITLE_SCHEMA, SUBTITLE_TAG, SUB_SCHEMA, SUP_SCHEMA, SURNAME_SCHEMA, SURNAME_TAG, type Schema, type SchemaCode, type SchemaKind, TABLE_SCHEMA, TABLE_TAG, TAG_SCHEMA, TAG_TAG, TBLFN_SCHEMA, TBLFN_TAG, TBLSOURCE_SCHEMA, TBLSOURCE_TAG, TBODY_SCHEMA, TBODY_TAG, TD_SCHEMA, TD_TAG, TGROUP_SCHEMA, TGROUP_TAG, THEAD_SCHEMA, THEAD_TAG, TITLE_SCHEMA, TITLE_TAG, TOKEN_SCHEMA, TOKEN_TAG, TP_SCHEMA, TP_TAG, TRACK_CHANGES_ATTRS, TRACK_CHANGES_ATTR_DATA_DATE, TRACK_CHANGES_ATTR_DATA_TIME, TRACK_CHANGES_ATTR_DATA_USERID, TRACK_CHANGES_ATTR_DATA_USERNAME, TR_SCHEMA, TR_TAG, UL_SCHEMA, UL_TAG, URI_SCHEMA, URI_TAG, U_SCHEMA, type ValidationError, createElement, findAttributeDefinitionByName, findSchemaByCode, findSchemaByElement, getAttributeName, isAttributeRestricted, isIgnoredAttribute, isIgnoredElement, validateAttributes, validateConsecutiveFootnoteCues, validateConsecutiveFootnotes, validateElement, validateElementAgainstSchema, validateFootnoteCue, validateFootnotes, validateLinkend, validateLinkends, validateXml };
474
+ export { ABSTRACT_SCHEMA, ABSTRACT_TAG, AFFILIATION_SCHEMA, AFFILIATION_TAG, ALIGNMENT_ATTRIBUTE, ALTTEXT_SCHEMA, ALTTEXT_TAG, APPENDIX_SCHEMA, APPENDIX_TAG, ATOM_SCHEMAS, AUTHORGROUP_SCHEMA, AUTHORGROUP_TAG, AUTHOR_SCHEMA, AUTHOR_TAG, type AllowedChildren, type AttributeDefinition, BLOCKQUOTE_SCHEMA, BLOCKQUOTE_TAG, BOX_SCHEMA, B_SCHEMA, CAPTION_SCHEMA, CAPTION_TAG, CHAPTER_SCHEMA, CHAPTER_TAG, COMMENT_QUERY_SECTION_SCHEMA, COMMENT_SCHEMA, CONTENT_SCHEMA, DEGREES_SCHEMA, DEGREES_TAG, DELETION_SCHEMA, DIALOGUE_SCHEMA, DIALOGUE_TAG, ELEMENT_SCHEMAS, ELEMENT_TAGS, ELE_ID_ATTRIBUTE, EMAIL_SCHEMA, EMAIL_TAG, EMPHASIS_SCHEMA, EPIGRAPH_SCHEMA, EPIGRAPH_TAG, EQUATION_SCHEMA, EQUATION_TAG, FIGNOTE_SCHEMA, FIGNOTE_TAG, FIGSOURCE_SCHEMA, FIGSOURCE_TAG, FIGURE_PLACEMENT_ATTRIBUTE, FIGURE_SCHEMA, FIGURE_TAG, FIRSTNAME_SCHEMA, FIRSTNAME_TAG, FOOTNOTE_LINK_SCHEMA, FOOTNOTE_LINK_TAG, FOOTNOTE_NUMBER_SCHEMA, FOOTNOTE_NUMBER_TAG, FOOTNOTE_SCHEMA, FOOTNOTE_SECTION_SCHEMA, FOOTNOTE_TAG, type FreeAttribute, GROUP_ELEMENTS_TAGS, GROUP_ELEMENT_SCHEMAS, HEADING_SCHEMA, HIGHLIGHTMARK_SCHEMA, HONORIFIC_SCHEMA, HONORIFIC_TAG, HTML_TABLE_SCHEMA, HTML_TABLE_TAG, ID_ATTRS, IGNORED_ATTRIBUTES, IGNORED_ATTRIBUTES_STARTS_WITH, IGNORED_ELEMENT_SELECTORS, IMAGEOBJECT_SCHEMA, IMAGEOBJECT_TAG, IMG_SCHEMA, IMG_TAG, INDENT_TYPE_ATTRIBUTE, INFORMALFIGURE_SCHEMA, INFORMALFIGURE_TAG, INFO_SCHEMA, INFO_TAG, INLINEEQUATION_SCHEMA, INLINEEQUATION_TAG, INLINE_ELEMENT_SCHEMAS, INLINE_ELEMENT_TAGS_ALLOWED_CHILDREN, INSERTION_SCHEMA, I_SCHEMA, KEYWORDSET_SCHEMA, KEYWORDSET_TAG, KEYWORD_SCHEMA, KEYWORD_TAG, LABEL_SCHEMA, LABEL_TAG, LAYOUT_ATTRIBUTES, LAYOUT_CELL_WIDTH, LAYOUT_USER_ATTRIBUTE, LEFT_INDENT_ATTRIBUTE, LINE_SCHEMA, LINE_TAG, LINK_SCHEMA, LINK_TAG, LI_SCHEMA, LI_TAG, LRH_SCHEMA, LRH_TAG, MEDIAOBJECT_SCHEMA, MEDIAOBJECT_TAG, OLINK_SCHEMA, OLINK_TAG, OL_SCHEMA, OL_TAG, ORGNAME_SCHEMA, ORGNAME_TAG, ORG_SCHEMA, ORG_TAG, ORIENTATION_ATTRIBUTE, PARA_SCHEMA, PARA_TAG, PERSONNAME_SCHEMA, PERSONNAME_TAG, PLACEMENT_ATTRIBUTE, POEM_SCHEMA, POEM_TAG, POSTNOMINALS_TAG, PUNC_SCHEMA, PUNC_TAG, QUERY_SCHEMA, REPLY_SCHEMA, RIGHT_INDENT_ATTRIBUTE, RRH_SCHEMA, RRH_TAG, type RestrictedAttribute, SCHEMAS, SCHEMA_MAP, SC_SCHEMA, SECTION_TAG, SIDEBAR_TAG, SOURCE_SCHEMA, SOURCE_TAG, SPACE_ABOVE_ATTRIBUTE, SPACE_BELOW_ATTRIBUTE, SPEAKER_SCHEMA, SPEAKER_TAG, SPECIAL_INDENT_ATTRIBUTE, STORE_ATTRIBUTE, STRIKE_SCHEMA, STYLE_NAME_ATTRIBUTE, SUBTITLE_SCHEMA, SUBTITLE_TAG, SUB_SCHEMA, SUP_SCHEMA, SURNAME_SCHEMA, SURNAME_TAG, type Schema, type SchemaCode, type SchemaKind, TABLE_SCHEMA, TABLE_TAG, TAG_SCHEMA, TAG_TAG, TBLFN_SCHEMA, TBLFN_TAG, TBLSOURCE_SCHEMA, TBLSOURCE_TAG, TBODY_SCHEMA, TBODY_TAG, TD_SCHEMA, TD_TAG, TGROUP_SCHEMA, TGROUP_TAG, THEAD_SCHEMA, THEAD_TAG, TITLE_SCHEMA, TITLE_TAG, TOKEN_SCHEMA, TOKEN_TAG, TP_SCHEMA, TP_TAG, TRACK_CHANGES_ATTRS, TRACK_CHANGES_ATTR_DATA_DATE, TRACK_CHANGES_ATTR_DATA_TIME, TRACK_CHANGES_ATTR_DATA_USERID, TRACK_CHANGES_ATTR_DATA_USERNAME, TR_SCHEMA, TR_TAG, UL_SCHEMA, UL_TAG, URI_SCHEMA, URI_TAG, U_SCHEMA, type ValidationError, type ValidationErrorKind, type ValidationErrorLevel, createElement, findAttributeDefinitionByName, findSchemaByCode, findSchemaByElement, getAttributeName, isAttributeRestricted, isIgnoredAttribute, isIgnoredElement, validateAttributes, validateConsecutiveFootnoteCues, validateConsecutiveFootnotes, validateElement, validateElementAgainstSchema, validateFootnoteCue, validateFootnotes, validateLinkend, validateXml };
package/dist/index.d.ts CHANGED
@@ -457,19 +457,18 @@ type ValidationError = {
457
457
  description: string;
458
458
  };
459
459
 
460
- declare const validateElement: (element: Element, root: Element, referenceChapterLinkends?: readonly string[]) => ValidationError[];
461
- declare const validateXml: (xml: Element | HTMLElement, referenceChapterLinkends?: readonly string[]) => ValidationError[];
460
+ declare const validateElement: (element: Element, root: Element, elementsLinkedTo?: readonly string[]) => ValidationError[];
461
+ declare const validateXml: (xml: Element | HTMLElement, elementsLinkedTo?: readonly string[]) => ValidationError[];
462
462
 
463
463
  declare const validateFootnoteCue: (footnoteElement: Element, root: Element) => ValidationError[];
464
464
  declare const validateConsecutiveFootnotes: (root: Element) => ValidationError[];
465
465
  declare const validateConsecutiveFootnoteCues: (root: Element) => ValidationError[];
466
466
  declare const validateFootnotes: (root: Element) => ValidationError[];
467
467
 
468
- declare const validateLinkend: (linkElement: Element, root: Element, referenceChapterLinkends?: readonly string[]) => ValidationError[];
469
- declare const validateLinkends: (root: Element, referenceChapterLinkends?: readonly string[]) => ValidationError[];
468
+ declare const validateLinkend: (linkElement: Element, elementsLinkedTo?: readonly string[]) => ValidationError[];
470
469
 
471
470
  declare const validateAttributes: (element: Element, schema: Schema) => ValidationError[];
472
471
 
473
472
  declare const validateElementAgainstSchema: (element: Element, schema: Schema) => ValidationError[];
474
473
 
475
- export { ABSTRACT_SCHEMA, ABSTRACT_TAG, AFFILIATION_SCHEMA, AFFILIATION_TAG, ALIGNMENT_ATTRIBUTE, ALTTEXT_SCHEMA, ALTTEXT_TAG, APPENDIX_SCHEMA, APPENDIX_TAG, ATOM_SCHEMAS, AUTHORGROUP_SCHEMA, AUTHORGROUP_TAG, AUTHOR_SCHEMA, AUTHOR_TAG, type AllowedChildren, type AttributeDefinition, BLOCKQUOTE_SCHEMA, BLOCKQUOTE_TAG, BOX_SCHEMA, B_SCHEMA, CAPTION_SCHEMA, CAPTION_TAG, CHAPTER_SCHEMA, CHAPTER_TAG, COMMENT_QUERY_SECTION_SCHEMA, COMMENT_SCHEMA, CONTENT_SCHEMA, DEGREES_SCHEMA, DEGREES_TAG, DELETION_SCHEMA, DIALOGUE_SCHEMA, DIALOGUE_TAG, ELEMENT_SCHEMAS, ELEMENT_TAGS, ELE_ID_ATTRIBUTE, EMAIL_SCHEMA, EMAIL_TAG, EMPHASIS_SCHEMA, EPIGRAPH_SCHEMA, EPIGRAPH_TAG, EQUATION_SCHEMA, EQUATION_TAG, FIGNOTE_SCHEMA, FIGNOTE_TAG, FIGSOURCE_SCHEMA, FIGSOURCE_TAG, FIGURE_PLACEMENT_ATTRIBUTE, FIGURE_SCHEMA, FIGURE_TAG, FIRSTNAME_SCHEMA, FIRSTNAME_TAG, FOOTNOTE_LINK_SCHEMA, FOOTNOTE_LINK_TAG, FOOTNOTE_NUMBER_SCHEMA, FOOTNOTE_NUMBER_TAG, FOOTNOTE_SCHEMA, FOOTNOTE_SECTION_SCHEMA, FOOTNOTE_TAG, type FreeAttribute, GROUP_ELEMENTS_TAGS, GROUP_ELEMENT_SCHEMAS, HEADING_SCHEMA, HIGHLIGHTMARK_SCHEMA, HONORIFIC_SCHEMA, HONORIFIC_TAG, HTML_TABLE_SCHEMA, HTML_TABLE_TAG, ID_ATTRS, IGNORED_ATTRIBUTES, IGNORED_ATTRIBUTES_STARTS_WITH, IGNORED_ELEMENT_SELECTORS, IMAGEOBJECT_SCHEMA, IMAGEOBJECT_TAG, IMG_SCHEMA, IMG_TAG, INDENT_TYPE_ATTRIBUTE, INFORMALFIGURE_SCHEMA, INFORMALFIGURE_TAG, INFO_SCHEMA, INFO_TAG, INLINEEQUATION_SCHEMA, INLINEEQUATION_TAG, INLINE_ELEMENT_SCHEMAS, INLINE_ELEMENT_TAGS_ALLOWED_CHILDREN, INSERTION_SCHEMA, I_SCHEMA, KEYWORDSET_SCHEMA, KEYWORDSET_TAG, KEYWORD_SCHEMA, KEYWORD_TAG, LABEL_SCHEMA, LABEL_TAG, LAYOUT_ATTRIBUTES, LAYOUT_CELL_WIDTH, LAYOUT_USER_ATTRIBUTE, LEFT_INDENT_ATTRIBUTE, LINE_SCHEMA, LINE_TAG, LINK_SCHEMA, LINK_TAG, LI_SCHEMA, LI_TAG, LRH_SCHEMA, LRH_TAG, MEDIAOBJECT_SCHEMA, MEDIAOBJECT_TAG, OLINK_SCHEMA, OLINK_TAG, OL_SCHEMA, OL_TAG, ORGNAME_SCHEMA, ORGNAME_TAG, ORG_SCHEMA, ORG_TAG, ORIENTATION_ATTRIBUTE, PARA_SCHEMA, PARA_TAG, PERSONNAME_SCHEMA, PERSONNAME_TAG, PLACEMENT_ATTRIBUTE, POEM_SCHEMA, POEM_TAG, POSTNOMINALS_TAG, PUNC_SCHEMA, PUNC_TAG, QUERY_SCHEMA, REPLY_SCHEMA, RIGHT_INDENT_ATTRIBUTE, RRH_SCHEMA, RRH_TAG, type RestrictedAttribute, SCHEMAS, SCHEMA_MAP, SC_SCHEMA, SECTION_TAG, SIDEBAR_TAG, SOURCE_SCHEMA, SOURCE_TAG, SPACE_ABOVE_ATTRIBUTE, SPACE_BELOW_ATTRIBUTE, SPEAKER_SCHEMA, SPEAKER_TAG, SPECIAL_INDENT_ATTRIBUTE, STORE_ATTRIBUTE, STRIKE_SCHEMA, STYLE_NAME_ATTRIBUTE, SUBTITLE_SCHEMA, SUBTITLE_TAG, SUB_SCHEMA, SUP_SCHEMA, SURNAME_SCHEMA, SURNAME_TAG, type Schema, type SchemaCode, type SchemaKind, TABLE_SCHEMA, TABLE_TAG, TAG_SCHEMA, TAG_TAG, TBLFN_SCHEMA, TBLFN_TAG, TBLSOURCE_SCHEMA, TBLSOURCE_TAG, TBODY_SCHEMA, TBODY_TAG, TD_SCHEMA, TD_TAG, TGROUP_SCHEMA, TGROUP_TAG, THEAD_SCHEMA, THEAD_TAG, TITLE_SCHEMA, TITLE_TAG, TOKEN_SCHEMA, TOKEN_TAG, TP_SCHEMA, TP_TAG, TRACK_CHANGES_ATTRS, TRACK_CHANGES_ATTR_DATA_DATE, TRACK_CHANGES_ATTR_DATA_TIME, TRACK_CHANGES_ATTR_DATA_USERID, TRACK_CHANGES_ATTR_DATA_USERNAME, TR_SCHEMA, TR_TAG, UL_SCHEMA, UL_TAG, URI_SCHEMA, URI_TAG, U_SCHEMA, type ValidationError, createElement, findAttributeDefinitionByName, findSchemaByCode, findSchemaByElement, getAttributeName, isAttributeRestricted, isIgnoredAttribute, isIgnoredElement, validateAttributes, validateConsecutiveFootnoteCues, validateConsecutiveFootnotes, validateElement, validateElementAgainstSchema, validateFootnoteCue, validateFootnotes, validateLinkend, validateLinkends, validateXml };
474
+ export { ABSTRACT_SCHEMA, ABSTRACT_TAG, AFFILIATION_SCHEMA, AFFILIATION_TAG, ALIGNMENT_ATTRIBUTE, ALTTEXT_SCHEMA, ALTTEXT_TAG, APPENDIX_SCHEMA, APPENDIX_TAG, ATOM_SCHEMAS, AUTHORGROUP_SCHEMA, AUTHORGROUP_TAG, AUTHOR_SCHEMA, AUTHOR_TAG, type AllowedChildren, type AttributeDefinition, BLOCKQUOTE_SCHEMA, BLOCKQUOTE_TAG, BOX_SCHEMA, B_SCHEMA, CAPTION_SCHEMA, CAPTION_TAG, CHAPTER_SCHEMA, CHAPTER_TAG, COMMENT_QUERY_SECTION_SCHEMA, COMMENT_SCHEMA, CONTENT_SCHEMA, DEGREES_SCHEMA, DEGREES_TAG, DELETION_SCHEMA, DIALOGUE_SCHEMA, DIALOGUE_TAG, ELEMENT_SCHEMAS, ELEMENT_TAGS, ELE_ID_ATTRIBUTE, EMAIL_SCHEMA, EMAIL_TAG, EMPHASIS_SCHEMA, EPIGRAPH_SCHEMA, EPIGRAPH_TAG, EQUATION_SCHEMA, EQUATION_TAG, FIGNOTE_SCHEMA, FIGNOTE_TAG, FIGSOURCE_SCHEMA, FIGSOURCE_TAG, FIGURE_PLACEMENT_ATTRIBUTE, FIGURE_SCHEMA, FIGURE_TAG, FIRSTNAME_SCHEMA, FIRSTNAME_TAG, FOOTNOTE_LINK_SCHEMA, FOOTNOTE_LINK_TAG, FOOTNOTE_NUMBER_SCHEMA, FOOTNOTE_NUMBER_TAG, FOOTNOTE_SCHEMA, FOOTNOTE_SECTION_SCHEMA, FOOTNOTE_TAG, type FreeAttribute, GROUP_ELEMENTS_TAGS, GROUP_ELEMENT_SCHEMAS, HEADING_SCHEMA, HIGHLIGHTMARK_SCHEMA, HONORIFIC_SCHEMA, HONORIFIC_TAG, HTML_TABLE_SCHEMA, HTML_TABLE_TAG, ID_ATTRS, IGNORED_ATTRIBUTES, IGNORED_ATTRIBUTES_STARTS_WITH, IGNORED_ELEMENT_SELECTORS, IMAGEOBJECT_SCHEMA, IMAGEOBJECT_TAG, IMG_SCHEMA, IMG_TAG, INDENT_TYPE_ATTRIBUTE, INFORMALFIGURE_SCHEMA, INFORMALFIGURE_TAG, INFO_SCHEMA, INFO_TAG, INLINEEQUATION_SCHEMA, INLINEEQUATION_TAG, INLINE_ELEMENT_SCHEMAS, INLINE_ELEMENT_TAGS_ALLOWED_CHILDREN, INSERTION_SCHEMA, I_SCHEMA, KEYWORDSET_SCHEMA, KEYWORDSET_TAG, KEYWORD_SCHEMA, KEYWORD_TAG, LABEL_SCHEMA, LABEL_TAG, LAYOUT_ATTRIBUTES, LAYOUT_CELL_WIDTH, LAYOUT_USER_ATTRIBUTE, LEFT_INDENT_ATTRIBUTE, LINE_SCHEMA, LINE_TAG, LINK_SCHEMA, LINK_TAG, LI_SCHEMA, LI_TAG, LRH_SCHEMA, LRH_TAG, MEDIAOBJECT_SCHEMA, MEDIAOBJECT_TAG, OLINK_SCHEMA, OLINK_TAG, OL_SCHEMA, OL_TAG, ORGNAME_SCHEMA, ORGNAME_TAG, ORG_SCHEMA, ORG_TAG, ORIENTATION_ATTRIBUTE, PARA_SCHEMA, PARA_TAG, PERSONNAME_SCHEMA, PERSONNAME_TAG, PLACEMENT_ATTRIBUTE, POEM_SCHEMA, POEM_TAG, POSTNOMINALS_TAG, PUNC_SCHEMA, PUNC_TAG, QUERY_SCHEMA, REPLY_SCHEMA, RIGHT_INDENT_ATTRIBUTE, RRH_SCHEMA, RRH_TAG, type RestrictedAttribute, SCHEMAS, SCHEMA_MAP, SC_SCHEMA, SECTION_TAG, SIDEBAR_TAG, SOURCE_SCHEMA, SOURCE_TAG, SPACE_ABOVE_ATTRIBUTE, SPACE_BELOW_ATTRIBUTE, SPEAKER_SCHEMA, SPEAKER_TAG, SPECIAL_INDENT_ATTRIBUTE, STORE_ATTRIBUTE, STRIKE_SCHEMA, STYLE_NAME_ATTRIBUTE, SUBTITLE_SCHEMA, SUBTITLE_TAG, SUB_SCHEMA, SUP_SCHEMA, SURNAME_SCHEMA, SURNAME_TAG, type Schema, type SchemaCode, type SchemaKind, TABLE_SCHEMA, TABLE_TAG, TAG_SCHEMA, TAG_TAG, TBLFN_SCHEMA, TBLFN_TAG, TBLSOURCE_SCHEMA, TBLSOURCE_TAG, TBODY_SCHEMA, TBODY_TAG, TD_SCHEMA, TD_TAG, TGROUP_SCHEMA, TGROUP_TAG, THEAD_SCHEMA, THEAD_TAG, TITLE_SCHEMA, TITLE_TAG, TOKEN_SCHEMA, TOKEN_TAG, TP_SCHEMA, TP_TAG, TRACK_CHANGES_ATTRS, TRACK_CHANGES_ATTR_DATA_DATE, TRACK_CHANGES_ATTR_DATA_TIME, TRACK_CHANGES_ATTR_DATA_USERID, TRACK_CHANGES_ATTR_DATA_USERNAME, TR_SCHEMA, TR_TAG, UL_SCHEMA, UL_TAG, URI_SCHEMA, URI_TAG, U_SCHEMA, type ValidationError, type ValidationErrorKind, type ValidationErrorLevel, createElement, findAttributeDefinitionByName, findSchemaByCode, findSchemaByElement, getAttributeName, isAttributeRestricted, isIgnoredAttribute, isIgnoredElement, validateAttributes, validateConsecutiveFootnoteCues, validateConsecutiveFootnotes, validateElement, validateElementAgainstSchema, validateFootnoteCue, validateFootnotes, validateLinkend, validateXml };
package/dist/index.js CHANGED
@@ -218,7 +218,6 @@ __export(index_exports, {
218
218
  validateFootnoteCue: () => validateFootnoteCue,
219
219
  validateFootnotes: () => validateFootnotes,
220
220
  validateLinkend: () => validateLinkend,
221
- validateLinkends: () => validateLinkends,
222
221
  validateXml: () => validateXml
223
222
  });
224
223
  module.exports = __toCommonJS(index_exports);
@@ -1930,6 +1929,26 @@ var createElement = ({
1930
1929
  return element;
1931
1930
  };
1932
1931
 
1932
+ // src/validation/utils/generateValidationIssueId.ts
1933
+ var generateValidationIssueId = () => {
1934
+ if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
1935
+ return crypto.randomUUID();
1936
+ }
1937
+ return `${Date.now()}-${Math.random().toString(36).slice(2)}`;
1938
+ };
1939
+
1940
+ // src/validation/utils/addValidationIssue.ts
1941
+ var createValidationIssue = (issue) => ({
1942
+ id: generateValidationIssueId(),
1943
+ ...issue
1944
+ });
1945
+ var addValidationIssue = (errors, issue) => {
1946
+ errors.push(createValidationIssue(issue));
1947
+ };
1948
+ var getStore = (element) => {
1949
+ return element.getAttribute("store") || "";
1950
+ };
1951
+
1933
1952
  // src/validation/utils/retrieveTextIgnoringNodesWithSelector.ts
1934
1953
  var retrieveTextIgnoringNodesWithSelector = (element, selector = ".del") => {
1935
1954
  const clonedElement = element.cloneNode(true);
@@ -1951,10 +1970,6 @@ var extractFootnoteNumber = (footnote) => {
1951
1970
  };
1952
1971
  var validateFootnoteCue = (footnoteElement, root) => {
1953
1972
  const errors = [];
1954
- const store = footnoteElement.getAttribute("store");
1955
- if (!store) {
1956
- return errors;
1957
- }
1958
1973
  const linkend = footnoteElement.getAttribute("xmlid") || "";
1959
1974
  const footnoteNumber = footnoteElement.querySelector(
1960
1975
  FOOTNOTE_NUMBER_SCHEMA.tag
@@ -1966,9 +1981,8 @@ var validateFootnoteCue = (footnoteElement, root) => {
1966
1981
  return errors;
1967
1982
  }
1968
1983
  if (!footnoteNumber) {
1969
- errors.push({
1970
- id: `footnote-number-missing-${store}`,
1971
- store,
1984
+ addValidationIssue(errors, {
1985
+ store: getStore(footnoteElement),
1972
1986
  title: "Footnote number missing",
1973
1987
  kind: "missing",
1974
1988
  description: "The footnote number is missing. Please add it to the footnote.",
@@ -1976,9 +1990,8 @@ var validateFootnoteCue = (footnoteElement, root) => {
1976
1990
  });
1977
1991
  }
1978
1992
  const label = extractFootnoteNumber(footnoteNumber);
1979
- errors.push({
1980
- id: `unreferenced-footnote-${store}`,
1981
- store,
1993
+ addValidationIssue(errors, {
1994
+ store: getStore(footnoteElement),
1982
1995
  title: "Unreferenced footnote",
1983
1996
  kind: "unlinked",
1984
1997
  description: `The footnote ${label} is not referenced to any footnote cue in this chapter. Please reference it in the chapter.`,
@@ -1992,7 +2005,6 @@ var validateConsecutiveFootnotes = (root) => {
1992
2005
  return [];
1993
2006
  }
1994
2007
  for (const [index, footnote] of footnotes.entries()) {
1995
- const store = footnote.getAttribute("store") || "";
1996
2008
  const expectedNumber = index + 1;
1997
2009
  const footnoteNumberElement = footnote.querySelector(
1998
2010
  FOOTNOTE_NUMBER_SCHEMA.tag
@@ -2005,14 +2017,13 @@ var validateConsecutiveFootnotes = (root) => {
2005
2017
  continue;
2006
2018
  }
2007
2019
  return [
2008
- {
2009
- id: `non-consecutive-footnote-numbers-${store}`,
2010
- store,
2020
+ createValidationIssue({
2021
+ store: getStore(footnote),
2011
2022
  title: "Non-consecutive footnote numbers",
2012
2023
  kind: "missing",
2013
2024
  description: "Footnote numbers must be consecutive. Please reorder the footnotes.",
2014
2025
  level: "warning"
2015
- }
2026
+ })
2016
2027
  ];
2017
2028
  }
2018
2029
  return [];
@@ -2025,21 +2036,19 @@ var validateConsecutiveFootnoteCues = (root) => {
2025
2036
  return [];
2026
2037
  }
2027
2038
  for (const [index, footnoteLink] of footnoteLinks.entries()) {
2028
- const store = footnoteLink.getAttribute("store") || "";
2029
2039
  const expectedNumber = index + 1;
2030
2040
  const label = extractFootnoteNumber(footnoteLink);
2031
2041
  if (label === expectedNumber) {
2032
2042
  continue;
2033
2043
  }
2034
2044
  return [
2035
- {
2036
- id: `non-consecutive-footnote-cues-${store}`,
2037
- store,
2045
+ createValidationIssue({
2046
+ store: getStore(footnoteLink),
2038
2047
  title: "Non-consecutive footnote cues",
2039
2048
  kind: "missing",
2040
2049
  description: "Footnote cues must be consecutive. Please reorder the footnote cues.",
2041
2050
  level: "warning"
2042
- }
2051
+ })
2043
2052
  ];
2044
2053
  }
2045
2054
  return [];
@@ -2055,60 +2064,42 @@ var validateFootnotes = (root) => {
2055
2064
  };
2056
2065
 
2057
2066
  // src/validation/validateLinkend.ts
2058
- var findElementInCurrentChapter = (root, linkend) => {
2059
- return !!root.querySelector(`[xmlid='${CSS.escape(linkend)}']`);
2067
+ var findElementLinkedTo = (linkend, elementsLinkedTo) => {
2068
+ return elementsLinkedTo.includes(linkend);
2060
2069
  };
2061
- var findElementInReferenceChapters = (linkend, referenceChapterLinkends) => {
2062
- return referenceChapterLinkends.includes(linkend);
2063
- };
2064
- var validateLinkend = (linkElement, root, referenceChapterLinkends = []) => {
2065
- const store = linkElement.getAttribute("store");
2066
- if (!store) {
2067
- return [];
2068
- }
2070
+ var validateLinkend = (linkElement, elementsLinkedTo = []) => {
2069
2071
  const linkend = linkElement.getAttribute("linkend");
2070
2072
  if (!linkend) {
2071
2073
  return [];
2072
2074
  }
2073
2075
  const isLinkFootnoteCue = linkElement.tagName.toUpperCase() === FOOTNOTE_LINK_SCHEMA.tag;
2074
2076
  if (isLinkFootnoteCue) {
2075
- if (findElementInCurrentChapter(root, linkend)) {
2077
+ if (findElementLinkedTo(linkend, elementsLinkedTo)) {
2076
2078
  return [];
2077
2079
  }
2078
2080
  return [
2079
- {
2080
- id: `unlinked-footnote-cue-${store}`,
2081
- store,
2081
+ createValidationIssue({
2082
+ store: getStore(linkElement),
2082
2083
  title: "Unlinked footnote cue",
2083
2084
  kind: "unlinked",
2084
2085
  description: "This footnote cue is not referenced to any footnote in this chapter. Please link it again manually.",
2085
2086
  level: "blocker"
2086
- }
2087
+ })
2087
2088
  ];
2088
2089
  }
2089
- if (findElementInCurrentChapter(root, linkend) || findElementInReferenceChapters(linkend, referenceChapterLinkends)) {
2090
+ if (findElementLinkedTo(linkend, elementsLinkedTo)) {
2090
2091
  return [];
2091
2092
  }
2092
2093
  return [
2093
- {
2094
- id: `unlinked-element-${store}`,
2095
- store,
2094
+ createValidationIssue({
2095
+ store: getStore(linkElement),
2096
2096
  title: "Unlinked element",
2097
2097
  kind: "unlinked",
2098
2098
  description: "This link is not referenced to any element in the current chapter or reference chapters. Please link it again manually.",
2099
2099
  level: "blocker"
2100
- }
2100
+ })
2101
2101
  ];
2102
2102
  };
2103
- var validateLinkends = (root, referenceChapterLinkends = []) => {
2104
- const errors = [];
2105
- for (const linkElement of root.querySelectorAll("[linkend]")) {
2106
- errors.push(
2107
- ...validateLinkend(linkElement, root, referenceChapterLinkends)
2108
- );
2109
- }
2110
- return errors;
2111
- };
2112
2103
 
2113
2104
  // src/validation/validateAttributes.ts
2114
2105
  var validateAttributes = (element, schema) => {
@@ -2120,9 +2111,8 @@ var validateAttributes = (element, schema) => {
2120
2111
  for (const attribute of schema.requiredAttributes) {
2121
2112
  const name = getAttributeName(attribute);
2122
2113
  if (!element.hasAttribute(name)) {
2123
- errors.push({
2124
- id: `missing-required-attribute-${name}`,
2125
- store: element.id,
2114
+ addValidationIssue(errors, {
2115
+ store: getStore(element),
2126
2116
  title: `Missing required attribute "${name}"`,
2127
2117
  level: "warning",
2128
2118
  kind: "missing",
@@ -2136,8 +2126,7 @@ var validateAttributes = (element, schema) => {
2136
2126
  }
2137
2127
  const definition = findAttributeDefinitionByName(definitions, name);
2138
2128
  if (!definition) {
2139
- errors.push({
2140
- id: `unexpected-attribute-${name}`,
2129
+ addValidationIssue(errors, {
2141
2130
  store: element.id,
2142
2131
  title: `Unexpected attribute "${name}"`,
2143
2132
  level: "warning",
@@ -2154,8 +2143,7 @@ var validateAttributes = (element, schema) => {
2154
2143
  continue;
2155
2144
  }
2156
2145
  if (!definition.values.includes(value)) {
2157
- errors.push({
2158
- id: `forbidden-attribute-value-${name}-${value}`,
2146
+ addValidationIssue(errors, {
2159
2147
  store: element.id,
2160
2148
  title: `Invalid attribute value "${value}"`,
2161
2149
  level: "warning",
@@ -2171,9 +2159,8 @@ var validateAttributes = (element, schema) => {
2171
2159
  var validateElementAgainstSchema = (element, schema) => {
2172
2160
  const errors = [];
2173
2161
  if (element.tagName.toUpperCase() !== schema.tag) {
2174
- errors.push({
2175
- id: `expected-element-${schema.tag}`,
2176
- store: element.id,
2162
+ addValidationIssue(errors, {
2163
+ store: getStore(element),
2177
2164
  title: `Expected ${schema.tag}, got ${element.tagName}`,
2178
2165
  level: "warning",
2179
2166
  kind: "forbidden",
@@ -2181,9 +2168,8 @@ var validateElementAgainstSchema = (element, schema) => {
2181
2168
  });
2182
2169
  }
2183
2170
  if (schema.code === "insertion" && !element.classList.contains("ins")) {
2184
- errors.push({
2185
- id: `missing-class-ins-${element.id}`,
2186
- store: element.id,
2171
+ addValidationIssue(errors, {
2172
+ store: getStore(element),
2187
2173
  title: 'Missing class "ins" for insertion element',
2188
2174
  level: "warning",
2189
2175
  kind: "missing",
@@ -2191,9 +2177,8 @@ var validateElementAgainstSchema = (element, schema) => {
2191
2177
  });
2192
2178
  }
2193
2179
  if (schema.code === "deletion" && !element.classList.contains("del")) {
2194
- errors.push({
2195
- id: `missing-class-del-${element.id}`,
2196
- store: element.id,
2180
+ addValidationIssue(errors, {
2181
+ store: getStore(element),
2197
2182
  title: 'Missing class "del" for deletion element',
2198
2183
  level: "warning",
2199
2184
  kind: "missing",
@@ -2201,9 +2186,8 @@ var validateElementAgainstSchema = (element, schema) => {
2201
2186
  });
2202
2187
  }
2203
2188
  if (schema.code === "commentQuerySection" && !element.classList.contains("cmtQurySection")) {
2204
- errors.push({
2205
- id: `missing-class-cmtQurySection-${element.id}`,
2206
- store: element.id,
2189
+ addValidationIssue(errors, {
2190
+ store: getStore(element),
2207
2191
  title: 'Missing class "cmtQurySection" for comment query section',
2208
2192
  level: "warning",
2209
2193
  kind: "missing",
@@ -2226,9 +2210,8 @@ var validateChildren = (element, schema) => {
2226
2210
  (candidate) => candidate.tagName === childTag
2227
2211
  );
2228
2212
  if (!allowedChild) {
2229
- errors.push({
2230
- id: `forbidden-child-element-${child.tagName}`,
2231
- store: child.id,
2213
+ addValidationIssue(errors, {
2214
+ store: getStore(child),
2232
2215
  title: `Forbidden child element ${child.tagName}`,
2233
2216
  level: "warning",
2234
2217
  kind: "forbidden",
@@ -2238,9 +2221,8 @@ var validateChildren = (element, schema) => {
2238
2221
  }
2239
2222
  const childSchema = findSchemaByElement(child);
2240
2223
  if (!childSchema) {
2241
- errors.push({
2242
- id: `no-schema-found-for-child-element-${child.tagName}`,
2243
- store: child.id,
2224
+ addValidationIssue(errors, {
2225
+ store: getStore(child),
2244
2226
  title: `No schema found for child element ${child.tagName}`,
2245
2227
  level: "warning",
2246
2228
  kind: "missing",
@@ -2258,9 +2240,8 @@ var validateChildren = (element, schema) => {
2258
2240
  (child) => child.tagName.toUpperCase() === allowedChild.tagName
2259
2241
  );
2260
2242
  if (!hasChild) {
2261
- errors.push({
2262
- id: `missing-required-child-element-${allowedChild.tagName}`,
2263
- store: element.id,
2243
+ addValidationIssue(errors, {
2244
+ store: getStore(element),
2264
2245
  title: `Missing required child element ${allowedChild.tagName}`,
2265
2246
  level: "warning",
2266
2247
  kind: "missing",
@@ -2269,9 +2250,8 @@ var validateChildren = (element, schema) => {
2269
2250
  }
2270
2251
  }
2271
2252
  if (schema.allowedChildTagNames.size === 0 && childElements.length > 0) {
2272
- errors.push({
2273
- id: `leaf-element-cannot-contain-child-elements-${element.id}`,
2274
- store: element.id,
2253
+ addValidationIssue(errors, {
2254
+ store: getStore(element),
2275
2255
  title: "Leaf element cannot contain child elements",
2276
2256
  level: "warning",
2277
2257
  kind: "forbidden",
@@ -2295,7 +2275,7 @@ var getLinkableRoles = () => {
2295
2275
  }
2296
2276
  return [];
2297
2277
  };
2298
- var validateElement = (element, root, referenceChapterLinkends) => {
2278
+ var validateElement = (element, root, elementsLinkedTo) => {
2299
2279
  if (isIgnoredElement(element)) {
2300
2280
  return [];
2301
2281
  }
@@ -2306,23 +2286,23 @@ var validateElement = (element, root, referenceChapterLinkends) => {
2306
2286
  const role = element.getAttribute("role") || "";
2307
2287
  const linkableRoles = getLinkableRoles();
2308
2288
  if (schema.tag === LINK_SCHEMA.tag && linkableRoles.includes(role) || schema.tag === FOOTNOTE_LINK_SCHEMA.tag) {
2309
- errors.push(...validateLinkend(element, root, referenceChapterLinkends));
2289
+ errors.push(...validateLinkend(element, elementsLinkedTo));
2310
2290
  }
2311
2291
  if (schema.tag === FOOTNOTE_SCHEMA.tag) {
2312
2292
  errors.push(...validateFootnoteCue(element, root));
2313
2293
  }
2314
2294
  }
2315
2295
  for (const child of Array.from(element.children)) {
2316
- errors.push(...validateElement(child, root, referenceChapterLinkends));
2296
+ errors.push(...validateElement(child, root, elementsLinkedTo));
2317
2297
  }
2318
2298
  return errors;
2319
2299
  };
2320
- var validateXml = (xml, referenceChapterLinkends) => {
2300
+ var validateXml = (xml, elementsLinkedTo) => {
2321
2301
  const errors = [];
2322
2302
  errors.push(...validateConsecutiveFootnotes(xml));
2323
2303
  errors.push(...validateConsecutiveFootnoteCues(xml));
2324
2304
  for (const child of Array.from(xml.children)) {
2325
- errors.push(...validateElement(child, xml, referenceChapterLinkends));
2305
+ errors.push(...validateElement(child, xml, elementsLinkedTo));
2326
2306
  }
2327
2307
  return errors;
2328
2308
  };
@@ -2526,6 +2506,5 @@ var validateXml = (xml, referenceChapterLinkends) => {
2526
2506
  validateFootnoteCue,
2527
2507
  validateFootnotes,
2528
2508
  validateLinkend,
2529
- validateLinkends,
2530
2509
  validateXml
2531
2510
  });
package/dist/index.mjs CHANGED
@@ -1705,6 +1705,26 @@ var createElement = ({
1705
1705
  return element;
1706
1706
  };
1707
1707
 
1708
+ // src/validation/utils/generateValidationIssueId.ts
1709
+ var generateValidationIssueId = () => {
1710
+ if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
1711
+ return crypto.randomUUID();
1712
+ }
1713
+ return `${Date.now()}-${Math.random().toString(36).slice(2)}`;
1714
+ };
1715
+
1716
+ // src/validation/utils/addValidationIssue.ts
1717
+ var createValidationIssue = (issue) => ({
1718
+ id: generateValidationIssueId(),
1719
+ ...issue
1720
+ });
1721
+ var addValidationIssue = (errors, issue) => {
1722
+ errors.push(createValidationIssue(issue));
1723
+ };
1724
+ var getStore = (element) => {
1725
+ return element.getAttribute("store") || "";
1726
+ };
1727
+
1708
1728
  // src/validation/utils/retrieveTextIgnoringNodesWithSelector.ts
1709
1729
  var retrieveTextIgnoringNodesWithSelector = (element, selector = ".del") => {
1710
1730
  const clonedElement = element.cloneNode(true);
@@ -1726,10 +1746,6 @@ var extractFootnoteNumber = (footnote) => {
1726
1746
  };
1727
1747
  var validateFootnoteCue = (footnoteElement, root) => {
1728
1748
  const errors = [];
1729
- const store = footnoteElement.getAttribute("store");
1730
- if (!store) {
1731
- return errors;
1732
- }
1733
1749
  const linkend = footnoteElement.getAttribute("xmlid") || "";
1734
1750
  const footnoteNumber = footnoteElement.querySelector(
1735
1751
  FOOTNOTE_NUMBER_SCHEMA.tag
@@ -1741,9 +1757,8 @@ var validateFootnoteCue = (footnoteElement, root) => {
1741
1757
  return errors;
1742
1758
  }
1743
1759
  if (!footnoteNumber) {
1744
- errors.push({
1745
- id: `footnote-number-missing-${store}`,
1746
- store,
1760
+ addValidationIssue(errors, {
1761
+ store: getStore(footnoteElement),
1747
1762
  title: "Footnote number missing",
1748
1763
  kind: "missing",
1749
1764
  description: "The footnote number is missing. Please add it to the footnote.",
@@ -1751,9 +1766,8 @@ var validateFootnoteCue = (footnoteElement, root) => {
1751
1766
  });
1752
1767
  }
1753
1768
  const label = extractFootnoteNumber(footnoteNumber);
1754
- errors.push({
1755
- id: `unreferenced-footnote-${store}`,
1756
- store,
1769
+ addValidationIssue(errors, {
1770
+ store: getStore(footnoteElement),
1757
1771
  title: "Unreferenced footnote",
1758
1772
  kind: "unlinked",
1759
1773
  description: `The footnote ${label} is not referenced to any footnote cue in this chapter. Please reference it in the chapter.`,
@@ -1767,7 +1781,6 @@ var validateConsecutiveFootnotes = (root) => {
1767
1781
  return [];
1768
1782
  }
1769
1783
  for (const [index, footnote] of footnotes.entries()) {
1770
- const store = footnote.getAttribute("store") || "";
1771
1784
  const expectedNumber = index + 1;
1772
1785
  const footnoteNumberElement = footnote.querySelector(
1773
1786
  FOOTNOTE_NUMBER_SCHEMA.tag
@@ -1780,14 +1793,13 @@ var validateConsecutiveFootnotes = (root) => {
1780
1793
  continue;
1781
1794
  }
1782
1795
  return [
1783
- {
1784
- id: `non-consecutive-footnote-numbers-${store}`,
1785
- store,
1796
+ createValidationIssue({
1797
+ store: getStore(footnote),
1786
1798
  title: "Non-consecutive footnote numbers",
1787
1799
  kind: "missing",
1788
1800
  description: "Footnote numbers must be consecutive. Please reorder the footnotes.",
1789
1801
  level: "warning"
1790
- }
1802
+ })
1791
1803
  ];
1792
1804
  }
1793
1805
  return [];
@@ -1800,21 +1812,19 @@ var validateConsecutiveFootnoteCues = (root) => {
1800
1812
  return [];
1801
1813
  }
1802
1814
  for (const [index, footnoteLink] of footnoteLinks.entries()) {
1803
- const store = footnoteLink.getAttribute("store") || "";
1804
1815
  const expectedNumber = index + 1;
1805
1816
  const label = extractFootnoteNumber(footnoteLink);
1806
1817
  if (label === expectedNumber) {
1807
1818
  continue;
1808
1819
  }
1809
1820
  return [
1810
- {
1811
- id: `non-consecutive-footnote-cues-${store}`,
1812
- store,
1821
+ createValidationIssue({
1822
+ store: getStore(footnoteLink),
1813
1823
  title: "Non-consecutive footnote cues",
1814
1824
  kind: "missing",
1815
1825
  description: "Footnote cues must be consecutive. Please reorder the footnote cues.",
1816
1826
  level: "warning"
1817
- }
1827
+ })
1818
1828
  ];
1819
1829
  }
1820
1830
  return [];
@@ -1830,60 +1840,42 @@ var validateFootnotes = (root) => {
1830
1840
  };
1831
1841
 
1832
1842
  // src/validation/validateLinkend.ts
1833
- var findElementInCurrentChapter = (root, linkend) => {
1834
- return !!root.querySelector(`[xmlid='${CSS.escape(linkend)}']`);
1843
+ var findElementLinkedTo = (linkend, elementsLinkedTo) => {
1844
+ return elementsLinkedTo.includes(linkend);
1835
1845
  };
1836
- var findElementInReferenceChapters = (linkend, referenceChapterLinkends) => {
1837
- return referenceChapterLinkends.includes(linkend);
1838
- };
1839
- var validateLinkend = (linkElement, root, referenceChapterLinkends = []) => {
1840
- const store = linkElement.getAttribute("store");
1841
- if (!store) {
1842
- return [];
1843
- }
1846
+ var validateLinkend = (linkElement, elementsLinkedTo = []) => {
1844
1847
  const linkend = linkElement.getAttribute("linkend");
1845
1848
  if (!linkend) {
1846
1849
  return [];
1847
1850
  }
1848
1851
  const isLinkFootnoteCue = linkElement.tagName.toUpperCase() === FOOTNOTE_LINK_SCHEMA.tag;
1849
1852
  if (isLinkFootnoteCue) {
1850
- if (findElementInCurrentChapter(root, linkend)) {
1853
+ if (findElementLinkedTo(linkend, elementsLinkedTo)) {
1851
1854
  return [];
1852
1855
  }
1853
1856
  return [
1854
- {
1855
- id: `unlinked-footnote-cue-${store}`,
1856
- store,
1857
+ createValidationIssue({
1858
+ store: getStore(linkElement),
1857
1859
  title: "Unlinked footnote cue",
1858
1860
  kind: "unlinked",
1859
1861
  description: "This footnote cue is not referenced to any footnote in this chapter. Please link it again manually.",
1860
1862
  level: "blocker"
1861
- }
1863
+ })
1862
1864
  ];
1863
1865
  }
1864
- if (findElementInCurrentChapter(root, linkend) || findElementInReferenceChapters(linkend, referenceChapterLinkends)) {
1866
+ if (findElementLinkedTo(linkend, elementsLinkedTo)) {
1865
1867
  return [];
1866
1868
  }
1867
1869
  return [
1868
- {
1869
- id: `unlinked-element-${store}`,
1870
- store,
1870
+ createValidationIssue({
1871
+ store: getStore(linkElement),
1871
1872
  title: "Unlinked element",
1872
1873
  kind: "unlinked",
1873
1874
  description: "This link is not referenced to any element in the current chapter or reference chapters. Please link it again manually.",
1874
1875
  level: "blocker"
1875
- }
1876
+ })
1876
1877
  ];
1877
1878
  };
1878
- var validateLinkends = (root, referenceChapterLinkends = []) => {
1879
- const errors = [];
1880
- for (const linkElement of root.querySelectorAll("[linkend]")) {
1881
- errors.push(
1882
- ...validateLinkend(linkElement, root, referenceChapterLinkends)
1883
- );
1884
- }
1885
- return errors;
1886
- };
1887
1879
 
1888
1880
  // src/validation/validateAttributes.ts
1889
1881
  var validateAttributes = (element, schema) => {
@@ -1895,9 +1887,8 @@ var validateAttributes = (element, schema) => {
1895
1887
  for (const attribute of schema.requiredAttributes) {
1896
1888
  const name = getAttributeName(attribute);
1897
1889
  if (!element.hasAttribute(name)) {
1898
- errors.push({
1899
- id: `missing-required-attribute-${name}`,
1900
- store: element.id,
1890
+ addValidationIssue(errors, {
1891
+ store: getStore(element),
1901
1892
  title: `Missing required attribute "${name}"`,
1902
1893
  level: "warning",
1903
1894
  kind: "missing",
@@ -1911,8 +1902,7 @@ var validateAttributes = (element, schema) => {
1911
1902
  }
1912
1903
  const definition = findAttributeDefinitionByName(definitions, name);
1913
1904
  if (!definition) {
1914
- errors.push({
1915
- id: `unexpected-attribute-${name}`,
1905
+ addValidationIssue(errors, {
1916
1906
  store: element.id,
1917
1907
  title: `Unexpected attribute "${name}"`,
1918
1908
  level: "warning",
@@ -1929,8 +1919,7 @@ var validateAttributes = (element, schema) => {
1929
1919
  continue;
1930
1920
  }
1931
1921
  if (!definition.values.includes(value)) {
1932
- errors.push({
1933
- id: `forbidden-attribute-value-${name}-${value}`,
1922
+ addValidationIssue(errors, {
1934
1923
  store: element.id,
1935
1924
  title: `Invalid attribute value "${value}"`,
1936
1925
  level: "warning",
@@ -1946,9 +1935,8 @@ var validateAttributes = (element, schema) => {
1946
1935
  var validateElementAgainstSchema = (element, schema) => {
1947
1936
  const errors = [];
1948
1937
  if (element.tagName.toUpperCase() !== schema.tag) {
1949
- errors.push({
1950
- id: `expected-element-${schema.tag}`,
1951
- store: element.id,
1938
+ addValidationIssue(errors, {
1939
+ store: getStore(element),
1952
1940
  title: `Expected ${schema.tag}, got ${element.tagName}`,
1953
1941
  level: "warning",
1954
1942
  kind: "forbidden",
@@ -1956,9 +1944,8 @@ var validateElementAgainstSchema = (element, schema) => {
1956
1944
  });
1957
1945
  }
1958
1946
  if (schema.code === "insertion" && !element.classList.contains("ins")) {
1959
- errors.push({
1960
- id: `missing-class-ins-${element.id}`,
1961
- store: element.id,
1947
+ addValidationIssue(errors, {
1948
+ store: getStore(element),
1962
1949
  title: 'Missing class "ins" for insertion element',
1963
1950
  level: "warning",
1964
1951
  kind: "missing",
@@ -1966,9 +1953,8 @@ var validateElementAgainstSchema = (element, schema) => {
1966
1953
  });
1967
1954
  }
1968
1955
  if (schema.code === "deletion" && !element.classList.contains("del")) {
1969
- errors.push({
1970
- id: `missing-class-del-${element.id}`,
1971
- store: element.id,
1956
+ addValidationIssue(errors, {
1957
+ store: getStore(element),
1972
1958
  title: 'Missing class "del" for deletion element',
1973
1959
  level: "warning",
1974
1960
  kind: "missing",
@@ -1976,9 +1962,8 @@ var validateElementAgainstSchema = (element, schema) => {
1976
1962
  });
1977
1963
  }
1978
1964
  if (schema.code === "commentQuerySection" && !element.classList.contains("cmtQurySection")) {
1979
- errors.push({
1980
- id: `missing-class-cmtQurySection-${element.id}`,
1981
- store: element.id,
1965
+ addValidationIssue(errors, {
1966
+ store: getStore(element),
1982
1967
  title: 'Missing class "cmtQurySection" for comment query section',
1983
1968
  level: "warning",
1984
1969
  kind: "missing",
@@ -2001,9 +1986,8 @@ var validateChildren = (element, schema) => {
2001
1986
  (candidate) => candidate.tagName === childTag
2002
1987
  );
2003
1988
  if (!allowedChild) {
2004
- errors.push({
2005
- id: `forbidden-child-element-${child.tagName}`,
2006
- store: child.id,
1989
+ addValidationIssue(errors, {
1990
+ store: getStore(child),
2007
1991
  title: `Forbidden child element ${child.tagName}`,
2008
1992
  level: "warning",
2009
1993
  kind: "forbidden",
@@ -2013,9 +1997,8 @@ var validateChildren = (element, schema) => {
2013
1997
  }
2014
1998
  const childSchema = findSchemaByElement(child);
2015
1999
  if (!childSchema) {
2016
- errors.push({
2017
- id: `no-schema-found-for-child-element-${child.tagName}`,
2018
- store: child.id,
2000
+ addValidationIssue(errors, {
2001
+ store: getStore(child),
2019
2002
  title: `No schema found for child element ${child.tagName}`,
2020
2003
  level: "warning",
2021
2004
  kind: "missing",
@@ -2033,9 +2016,8 @@ var validateChildren = (element, schema) => {
2033
2016
  (child) => child.tagName.toUpperCase() === allowedChild.tagName
2034
2017
  );
2035
2018
  if (!hasChild) {
2036
- errors.push({
2037
- id: `missing-required-child-element-${allowedChild.tagName}`,
2038
- store: element.id,
2019
+ addValidationIssue(errors, {
2020
+ store: getStore(element),
2039
2021
  title: `Missing required child element ${allowedChild.tagName}`,
2040
2022
  level: "warning",
2041
2023
  kind: "missing",
@@ -2044,9 +2026,8 @@ var validateChildren = (element, schema) => {
2044
2026
  }
2045
2027
  }
2046
2028
  if (schema.allowedChildTagNames.size === 0 && childElements.length > 0) {
2047
- errors.push({
2048
- id: `leaf-element-cannot-contain-child-elements-${element.id}`,
2049
- store: element.id,
2029
+ addValidationIssue(errors, {
2030
+ store: getStore(element),
2050
2031
  title: "Leaf element cannot contain child elements",
2051
2032
  level: "warning",
2052
2033
  kind: "forbidden",
@@ -2070,7 +2051,7 @@ var getLinkableRoles = () => {
2070
2051
  }
2071
2052
  return [];
2072
2053
  };
2073
- var validateElement = (element, root, referenceChapterLinkends) => {
2054
+ var validateElement = (element, root, elementsLinkedTo) => {
2074
2055
  if (isIgnoredElement(element)) {
2075
2056
  return [];
2076
2057
  }
@@ -2081,23 +2062,23 @@ var validateElement = (element, root, referenceChapterLinkends) => {
2081
2062
  const role = element.getAttribute("role") || "";
2082
2063
  const linkableRoles = getLinkableRoles();
2083
2064
  if (schema.tag === LINK_SCHEMA.tag && linkableRoles.includes(role) || schema.tag === FOOTNOTE_LINK_SCHEMA.tag) {
2084
- errors.push(...validateLinkend(element, root, referenceChapterLinkends));
2065
+ errors.push(...validateLinkend(element, elementsLinkedTo));
2085
2066
  }
2086
2067
  if (schema.tag === FOOTNOTE_SCHEMA.tag) {
2087
2068
  errors.push(...validateFootnoteCue(element, root));
2088
2069
  }
2089
2070
  }
2090
2071
  for (const child of Array.from(element.children)) {
2091
- errors.push(...validateElement(child, root, referenceChapterLinkends));
2072
+ errors.push(...validateElement(child, root, elementsLinkedTo));
2092
2073
  }
2093
2074
  return errors;
2094
2075
  };
2095
- var validateXml = (xml, referenceChapterLinkends) => {
2076
+ var validateXml = (xml, elementsLinkedTo) => {
2096
2077
  const errors = [];
2097
2078
  errors.push(...validateConsecutiveFootnotes(xml));
2098
2079
  errors.push(...validateConsecutiveFootnoteCues(xml));
2099
2080
  for (const child of Array.from(xml.children)) {
2100
- errors.push(...validateElement(child, xml, referenceChapterLinkends));
2081
+ errors.push(...validateElement(child, xml, elementsLinkedTo));
2101
2082
  }
2102
2083
  return errors;
2103
2084
  };
@@ -2300,6 +2281,5 @@ export {
2300
2281
  validateFootnoteCue,
2301
2282
  validateFootnotes,
2302
2283
  validateLinkend,
2303
- validateLinkends,
2304
2284
  validateXml
2305
2285
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pro-editor-schema",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "description": "Pro Editor XML schemas",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",