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 +4 -5
- package/dist/index.d.ts +4 -5
- package/dist/index.js +66 -87
- package/dist/index.mjs +66 -86
- package/package.json +1 -1
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,
|
|
461
|
-
declare const validateXml: (xml: Element | HTMLElement,
|
|
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,
|
|
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,
|
|
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,
|
|
461
|
-
declare const validateXml: (xml: Element | HTMLElement,
|
|
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,
|
|
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,
|
|
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
|
|
1970
|
-
|
|
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
|
|
1980
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
2059
|
-
return
|
|
2067
|
+
var findElementLinkedTo = (linkend, elementsLinkedTo) => {
|
|
2068
|
+
return elementsLinkedTo.includes(linkend);
|
|
2060
2069
|
};
|
|
2061
|
-
var
|
|
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 (
|
|
2077
|
+
if (findElementLinkedTo(linkend, elementsLinkedTo)) {
|
|
2076
2078
|
return [];
|
|
2077
2079
|
}
|
|
2078
2080
|
return [
|
|
2079
|
-
{
|
|
2080
|
-
|
|
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 (
|
|
2090
|
+
if (findElementLinkedTo(linkend, elementsLinkedTo)) {
|
|
2090
2091
|
return [];
|
|
2091
2092
|
}
|
|
2092
2093
|
return [
|
|
2093
|
-
{
|
|
2094
|
-
|
|
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
|
|
2124
|
-
|
|
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
|
|
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
|
|
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
|
|
2175
|
-
|
|
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
|
|
2185
|
-
|
|
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
|
|
2195
|
-
|
|
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
|
|
2205
|
-
|
|
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
|
|
2230
|
-
|
|
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
|
|
2242
|
-
|
|
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
|
|
2262
|
-
|
|
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
|
|
2273
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
2296
|
+
errors.push(...validateElement(child, root, elementsLinkedTo));
|
|
2317
2297
|
}
|
|
2318
2298
|
return errors;
|
|
2319
2299
|
};
|
|
2320
|
-
var validateXml = (xml,
|
|
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,
|
|
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
|
|
1745
|
-
|
|
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
|
|
1755
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
1834
|
-
return
|
|
1843
|
+
var findElementLinkedTo = (linkend, elementsLinkedTo) => {
|
|
1844
|
+
return elementsLinkedTo.includes(linkend);
|
|
1835
1845
|
};
|
|
1836
|
-
var
|
|
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 (
|
|
1853
|
+
if (findElementLinkedTo(linkend, elementsLinkedTo)) {
|
|
1851
1854
|
return [];
|
|
1852
1855
|
}
|
|
1853
1856
|
return [
|
|
1854
|
-
{
|
|
1855
|
-
|
|
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 (
|
|
1866
|
+
if (findElementLinkedTo(linkend, elementsLinkedTo)) {
|
|
1865
1867
|
return [];
|
|
1866
1868
|
}
|
|
1867
1869
|
return [
|
|
1868
|
-
{
|
|
1869
|
-
|
|
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
|
|
1899
|
-
|
|
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
|
|
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
|
|
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
|
|
1950
|
-
|
|
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
|
|
1960
|
-
|
|
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
|
|
1970
|
-
|
|
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
|
|
1980
|
-
|
|
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
|
|
2005
|
-
|
|
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
|
|
2017
|
-
|
|
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
|
|
2037
|
-
|
|
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
|
|
2048
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
2072
|
+
errors.push(...validateElement(child, root, elementsLinkedTo));
|
|
2092
2073
|
}
|
|
2093
2074
|
return errors;
|
|
2094
2075
|
};
|
|
2095
|
-
var validateXml = (xml,
|
|
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,
|
|
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
|
};
|