@natlibfi/marc-record-validators-melinda 11.6.7 → 12.0.0-alpha.12
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/.github/workflows/{melinda-node-tests.yml → melinda-node-tests-and-publish.yml} +37 -12
- package/dist/access-rights.js +63 -91
- package/dist/access-rights.js.map +7 -1
- package/dist/access-rights.test.js +137 -0
- package/dist/access-rights.test.js.map +7 -0
- package/dist/addMissingField041.js +21 -53
- package/dist/addMissingField041.js.map +7 -1
- package/dist/addMissingField041.test.js +39 -0
- package/dist/addMissingField041.test.js.map +7 -0
- package/dist/addMissingField336.js +99 -191
- package/dist/addMissingField336.js.map +7 -1
- package/dist/addMissingField336.test.js +39 -0
- package/dist/addMissingField336.test.js.map +7 -0
- package/dist/addMissingField337.js +63 -132
- package/dist/addMissingField337.js.map +7 -1
- package/dist/addMissingField337.test.js +39 -0
- package/dist/addMissingField337.test.js.map +7 -0
- package/dist/addMissingField338.js +147 -253
- package/dist/addMissingField338.js.map +7 -1
- package/dist/addMissingField338.test.js +39 -0
- package/dist/addMissingField338.test.js.map +7 -0
- package/dist/cyrillux-usemarcon-replacement.js +119 -272
- package/dist/cyrillux-usemarcon-replacement.js.map +7 -1
- package/dist/cyrillux-usemarcon-replacement.test.js +43 -0
- package/dist/cyrillux-usemarcon-replacement.test.js.map +7 -0
- package/dist/cyrillux.js +119 -223
- package/dist/cyrillux.js.map +7 -1
- package/dist/cyrillux.test.js +39 -0
- package/dist/cyrillux.test.js.map +7 -0
- package/dist/disambiguateSeriesStatements.js +40 -81
- package/dist/disambiguateSeriesStatements.js.map +7 -1
- package/dist/disambiguateSeriesStatements.test.js +44 -0
- package/dist/disambiguateSeriesStatements.test.js.map +7 -0
- package/dist/double-commas.js +7 -14
- package/dist/double-commas.js.map +7 -1
- package/dist/double-commas.test.js +48 -0
- package/dist/double-commas.test.js.map +7 -0
- package/dist/duplicates-ind1.js +10 -31
- package/dist/duplicates-ind1.js.map +7 -1
- package/dist/duplicates-ind1.test.js +40 -0
- package/dist/duplicates-ind1.test.js.map +7 -0
- package/dist/empty-fields.js +10 -22
- package/dist/empty-fields.js.map +7 -1
- package/dist/empty-fields.test.js +129 -0
- package/dist/empty-fields.test.js.map +7 -0
- package/dist/ending-punctuation-conf.js +873 -769
- package/dist/ending-punctuation-conf.js.map +7 -1
- package/dist/ending-punctuation.js +156 -169
- package/dist/ending-punctuation.js.map +7 -1
- package/dist/ending-punctuation.test.js +2385 -0
- package/dist/ending-punctuation.test.js.map +7 -0
- package/dist/ending-whitespace.js +10 -35
- package/dist/ending-whitespace.js.map +7 -1
- package/dist/ending-whitespace.test.js +38 -0
- package/dist/ending-whitespace.test.js.map +7 -0
- package/dist/field-008-18-34-character-groups.js +40 -125
- package/dist/field-008-18-34-character-groups.js.map +7 -1
- package/dist/field-008-18-34-character-groups.test.js +45 -0
- package/dist/field-008-18-34-character-groups.test.js.map +7 -0
- package/dist/field-505-separators.js +19 -39
- package/dist/field-505-separators.js.map +7 -1
- package/dist/field-505-separators.test.js +45 -0
- package/dist/field-505-separators.test.js.map +7 -0
- package/dist/field-521-fix.js +19 -47
- package/dist/field-521-fix.js.map +7 -1
- package/dist/field-521-fix.test.js +44 -0
- package/dist/field-521-fix.test.js.map +7 -0
- package/dist/field-exclusion.js +37 -91
- package/dist/field-exclusion.js.map +7 -1
- package/dist/field-exclusion.test.js +821 -0
- package/dist/field-exclusion.test.js.map +7 -0
- package/dist/field-structure.js +52 -104
- package/dist/field-structure.js.map +7 -1
- package/dist/field-structure.test.js +587 -0
- package/dist/field-structure.test.js.map +7 -0
- package/dist/field33XUtils.js +119 -503
- package/dist/field33XUtils.js.map +7 -1
- package/dist/fields-present.js +11 -23
- package/dist/fields-present.js.map +7 -1
- package/dist/fields-present.test.js +95 -0
- package/dist/fields-present.test.js.map +7 -0
- package/dist/fix-33X.js +393 -431
- package/dist/fix-33X.js.map +7 -1
- package/dist/fix-33X.test.js +39 -0
- package/dist/fix-33X.test.js.map +7 -0
- package/dist/fix-country-codes.js +20 -50
- package/dist/fix-country-codes.js.map +7 -1
- package/dist/fix-country-codes.test.js +44 -0
- package/dist/fix-country-codes.test.js.map +7 -0
- package/dist/fix-language-codes.js +23 -53
- package/dist/fix-language-codes.js.map +7 -1
- package/dist/fix-language-codes.test.js +38 -0
- package/dist/fix-language-codes.test.js.map +7 -0
- package/dist/fixRelatorTerms.js +82 -209
- package/dist/fixRelatorTerms.js.map +7 -1
- package/dist/fixRelatorTerms.test.js +44 -0
- package/dist/fixRelatorTerms.test.js.map +7 -0
- package/dist/fixed-fields.js +21 -30
- package/dist/fixed-fields.js.map +7 -1
- package/dist/fixed-fields.test.js +87 -0
- package/dist/fixed-fields.test.js.map +7 -0
- package/dist/identical-fields.js +8 -24
- package/dist/identical-fields.js.map +7 -1
- package/dist/identical-fields.test.js +119 -0
- package/dist/identical-fields.test.js.map +7 -0
- package/dist/index.js +182 -413
- package/dist/index.js.map +7 -1
- package/dist/indicator-fixes.js +66 -94
- package/dist/indicator-fixes.js.map +7 -1
- package/dist/indicator-fixes.test.js +42 -0
- package/dist/indicator-fixes.test.js.map +7 -0
- package/dist/isbn-issn.js +71 -128
- package/dist/isbn-issn.js.map +7 -1
- package/dist/isbn-issn.test.js +398 -0
- package/dist/isbn-issn.test.js.map +7 -0
- package/dist/item-language.js +32 -65
- package/dist/item-language.js.map +7 -1
- package/dist/item-language.test.js +322 -0
- package/dist/item-language.test.js.map +7 -0
- package/dist/melindaCustomMergeFields.js +5182 -11233
- package/dist/melindaCustomMergeFields.js.map +7 -1
- package/dist/merge-fields/controlSubfields.js +75 -142
- package/dist/merge-fields/controlSubfields.js.map +7 -1
- package/dist/merge-fields/counterpartField.js +187 -379
- package/dist/merge-fields/counterpartField.js.map +7 -1
- package/dist/merge-fields/dataProvenance.js +29 -0
- package/dist/merge-fields/dataProvenance.js.map +7 -0
- package/dist/merge-fields/index.js +25 -50
- package/dist/merge-fields/index.js.map +7 -1
- package/dist/merge-fields/mergableIndicator.js +18 -51
- package/dist/merge-fields/mergableIndicator.js.map +7 -1
- package/dist/merge-fields/mergableTag.js +78 -30
- package/dist/merge-fields/mergableTag.js.map +7 -1
- package/dist/merge-fields/mergeConfig.js +66 -171
- package/dist/merge-fields/mergeConfig.js.map +7 -1
- package/dist/merge-fields/mergeConstraints.js +323 -1214
- package/dist/merge-fields/mergeConstraints.js.map +7 -1
- package/dist/merge-fields/mergeField.js +47 -111
- package/dist/merge-fields/mergeField.js.map +7 -1
- package/dist/merge-fields/mergeIndicator.js +64 -118
- package/dist/merge-fields/mergeIndicator.js.map +7 -1
- package/dist/merge-fields/mergeOrAddPostprocess.js +14 -38
- package/dist/merge-fields/mergeOrAddPostprocess.js.map +7 -1
- package/dist/merge-fields/mergeOrAddSubfield.js +62 -104
- package/dist/merge-fields/mergeOrAddSubfield.js.map +7 -1
- package/dist/merge-fields/mergeSubfield.js +47 -95
- package/dist/merge-fields/mergeSubfield.js.map +7 -1
- package/dist/merge-fields/removeDuplicateSubfields.js +18 -31
- package/dist/merge-fields/removeDuplicateSubfields.js.map +7 -1
- package/dist/merge-fields/worldKnowledge.js +15 -40
- package/dist/merge-fields/worldKnowledge.js.map +7 -1
- package/dist/merge-fields.test.js +46 -0
- package/dist/merge-fields.test.js.map +7 -0
- package/dist/mergeField500Lisapainokset.js +27 -56
- package/dist/mergeField500Lisapainokset.js.map +7 -1
- package/dist/mergeField500Lisapainokset.test.js +44 -0
- package/dist/mergeField500Lisapainokset.test.js.map +7 -0
- package/dist/mergeRelatorTermFields.js +33 -69
- package/dist/mergeRelatorTermFields.js.map +7 -1
- package/dist/mergeRelatorTermFields.test.js +44 -0
- package/dist/mergeRelatorTermFields.test.js.map +7 -0
- package/dist/modernize-502.js +23 -55
- package/dist/modernize-502.js.map +7 -1
- package/dist/modernize-502.test.js +38 -0
- package/dist/modernize-502.test.js.map +7 -0
- package/dist/multiple-subfield-0.js +23 -48
- package/dist/multiple-subfield-0.js.map +7 -1
- package/dist/multiple-subfield-0.test.js +44 -0
- package/dist/multiple-subfield-0.test.js.map +7 -0
- package/dist/non-breaking-space.js +11 -32
- package/dist/non-breaking-space.js.map +7 -1
- package/dist/non-breaking-space.test.js +38 -0
- package/dist/non-breaking-space.test.js.map +7 -0
- package/dist/normalize-dashes.js +18 -37
- package/dist/normalize-dashes.js.map +7 -1
- package/dist/normalize-dashes.test.js +44 -0
- package/dist/normalize-dashes.test.js.map +7 -0
- package/dist/normalize-identifiers.js +54 -140
- package/dist/normalize-identifiers.js.map +7 -1
- package/dist/normalize-identifiers.test.js +44 -0
- package/dist/normalize-identifiers.test.js.map +7 -0
- package/dist/normalize-qualifying-information.js +23 -48
- package/dist/normalize-qualifying-information.js.map +7 -1
- package/dist/normalize-qualifying-information.test.js +44 -0
- package/dist/normalize-qualifying-information.test.js.map +7 -0
- package/dist/normalize-utf8-diacritics.js +19 -105
- package/dist/normalize-utf8-diacritics.js.map +7 -1
- package/dist/normalize-utf8-diacritics.test.js +44 -0
- package/dist/normalize-utf8-diacritics.test.js.map +7 -0
- package/dist/normalizeFieldForComparison.js +91 -158
- package/dist/normalizeFieldForComparison.js.map +7 -1
- package/dist/normalizeSubfieldValueForComparison.js +37 -77
- package/dist/normalizeSubfieldValueForComparison.js.map +7 -1
- package/dist/prepublicationUtils.js +58 -111
- package/dist/prepublicationUtils.js.map +7 -1
- package/dist/punctuation/index.js +56 -72
- package/dist/punctuation/index.js.map +7 -1
- package/dist/punctuation/rules/aut.js +372 -331
- package/dist/punctuation/rules/aut.js.map +7 -1
- package/dist/punctuation/rules/bib.js +420 -373
- package/dist/punctuation/rules/bib.js.map +7 -1
- package/dist/punctuation/rules/index.js +7 -21
- package/dist/punctuation/rules/index.js.map +7 -1
- package/dist/punctuation.test.js +44 -0
- package/dist/punctuation.test.js.map +7 -0
- package/dist/punctuation2.js +259 -802
- package/dist/punctuation2.js.map +7 -1
- package/dist/punctuation2.test.js +44 -0
- package/dist/punctuation2.test.js.map +7 -0
- package/dist/reindexSubfield6OccurenceNumbers.js +61 -96
- package/dist/reindexSubfield6OccurenceNumbers.js.map +7 -1
- package/dist/reindexSubfield6OccurenceNumbers.test.js +44 -0
- package/dist/reindexSubfield6OccurenceNumbers.test.js.map +7 -0
- package/dist/removeDuplicateDataFields.js +102 -202
- package/dist/removeDuplicateDataFields.js.map +7 -1
- package/dist/removeDuplicateDataFields.test.js +44 -0
- package/dist/removeDuplicateDataFields.test.js.map +7 -0
- package/dist/removeInferiorDataFields.js +104 -227
- package/dist/removeInferiorDataFields.js.map +7 -1
- package/dist/removeInferiorDataFields.test.js +44 -0
- package/dist/removeInferiorDataFields.test.js.map +7 -0
- package/dist/resolvable-ext-references-melinda.js +25 -60
- package/dist/resolvable-ext-references-melinda.js.map +7 -1
- package/dist/resolvable-ext-references-melinda.test.js +160 -0
- package/dist/resolvable-ext-references-melinda.test.js.map +7 -0
- package/dist/resolveOrphanedSubfield6s.js +32 -63
- package/dist/resolveOrphanedSubfield6s.js.map +7 -1
- package/dist/resolveOrphanedSubfield6s.test.js +44 -0
- package/dist/resolveOrphanedSubfield6s.test.js.map +7 -0
- package/dist/sanitize-vocabulary-source-codes.js +27 -55
- package/dist/sanitize-vocabulary-source-codes.js.map +7 -1
- package/dist/sanitize-vocabulary-source-codes.test.js +45 -0
- package/dist/sanitize-vocabulary-source-codes.test.js.map +7 -0
- package/dist/sort-tags.js +13 -25
- package/dist/sort-tags.js.map +7 -1
- package/dist/sort-tags.test.js +261 -0
- package/dist/sort-tags.test.js.map +7 -0
- package/dist/sortFields.js +152 -222
- package/dist/sortFields.js.map +7 -1
- package/dist/sortFields.test.js +44 -0
- package/dist/sortFields.test.js.map +7 -0
- package/dist/sortRelatorTerms.js +30 -68
- package/dist/sortRelatorTerms.js.map +7 -1
- package/dist/sortRelatorTerms.test.js +44 -0
- package/dist/sortRelatorTerms.test.js.map +7 -0
- package/dist/sortSubfields.js +102 -255
- package/dist/sortSubfields.js.map +7 -1
- package/dist/sortSubfields.test.js +44 -0
- package/dist/sortSubfields.test.js.map +7 -0
- package/dist/stripPunctuation.js +13 -36
- package/dist/stripPunctuation.js.map +7 -1
- package/dist/stripPunctuation.test.js +44 -0
- package/dist/stripPunctuation.test.js.map +7 -0
- package/dist/subfield-exclusion.js +28 -75
- package/dist/subfield-exclusion.js.map +7 -1
- package/dist/subfield-exclusion.test.js +471 -0
- package/dist/subfield-exclusion.test.js.map +7 -0
- package/dist/subfield6Utils.js +107 -269
- package/dist/subfield6Utils.js.map +7 -1
- package/dist/subfield8Utils.js +26 -50
- package/dist/subfield8Utils.js.map +7 -1
- package/dist/subfieldValueNormalizations.js +40 -74
- package/dist/subfieldValueNormalizations.js.map +7 -1
- package/dist/subfieldValueNormalizations.test.js +45 -0
- package/dist/subfieldValueNormalizations.test.js.map +7 -0
- package/dist/sync-007-and-300.js +22 -53
- package/dist/sync-007-and-300.js.map +7 -1
- package/dist/sync-007-and-300.test.js +44 -0
- package/dist/sync-007-and-300.test.js.map +7 -0
- package/dist/translate-terms.js +67 -155
- package/dist/translate-terms.js.map +7 -1
- package/dist/translate-terms.test.js +54 -0
- package/dist/translate-terms.test.js.map +7 -0
- package/dist/typeOfDate-008.js +10 -25
- package/dist/typeOfDate-008.js.map +7 -1
- package/dist/typeOfDate-008.test.js +40 -0
- package/dist/typeOfDate-008.test.js.map +7 -0
- package/dist/unicode-decomposition.js +94 -107
- package/dist/unicode-decomposition.js.map +7 -1
- package/dist/unicode-decomposition.test.js +94 -0
- package/dist/unicode-decomposition.test.js.map +7 -0
- package/dist/update-field-540.js +30 -75
- package/dist/update-field-540.js.map +7 -1
- package/dist/update-field-540.test.js +44 -0
- package/dist/update-field-540.test.js.map +7 -0
- package/dist/urn.js +55 -128
- package/dist/urn.js.map +7 -1
- package/dist/urn.test.js +44 -0
- package/dist/urn.test.js.map +7 -0
- package/dist/utils.js +78 -126
- package/dist/utils.js.map +7 -1
- package/eslint.config.mjs +1 -2
- package/package.json +28 -101
- package/src/access-rights.js +1 -1
- package/src/{access-rights.spec.js → access-rights.test.js} +9 -10
- package/src/addMissingField041.js +1 -1
- package/src/{addMissingField336.spec.js → addMissingField041.test.js} +13 -14
- package/src/addMissingField336.js +3 -3
- package/src/{addMissingField041.spec.js → addMissingField336.test.js} +13 -14
- package/src/addMissingField337.js +2 -2
- package/src/{addMissingField337.spec.js → addMissingField337.test.js} +13 -14
- package/src/addMissingField338.js +2 -2
- package/src/{addMissingField338.spec.js → addMissingField338.test.js} +13 -14
- package/src/cyrillux-usemarcon-replacement.js +18 -18
- package/src/{cyrillux-usemarcon-replacement.spec.js → cyrillux-usemarcon-replacement.test.js} +17 -14
- package/src/cyrillux.js +19 -12
- package/src/{cyrillux.spec.js → cyrillux.test.js} +13 -14
- package/src/disambiguateSeriesStatements.js +2 -2
- package/src/{disambiguateSeriesStatements.spec.js → disambiguateSeriesStatements.test.js} +12 -13
- package/src/double-commas.js +1 -1
- package/src/{double-commas.spec.js → double-commas.test.js} +9 -11
- package/src/duplicates-ind1.js +1 -1
- package/src/{duplicates-ind1.spec.js → duplicates-ind1.test.js} +12 -13
- package/src/{empty-fields.spec.js → empty-fields.test.js} +11 -13
- package/src/ending-punctuation-conf.js +6 -5
- package/src/ending-punctuation.js +115 -24
- package/src/{ending-punctuation.spec.js → ending-punctuation.test.js} +357 -275
- package/src/{ending-whitespace.spec.js → ending-whitespace.test.js} +12 -13
- package/src/field-008-18-34-character-groups.js +2 -2
- package/src/{field-008-18-34-character-groups.spec.js → field-008-18-34-character-groups.test.js} +13 -13
- package/src/field-505-separators.js +3 -3
- package/src/{field-505-separators.spec.js → field-505-separators.test.js} +16 -14
- package/src/field-521-fix.js +2 -2
- package/src/{field-521-fix.spec.js → field-521-fix.test.js} +12 -13
- package/src/field-exclusion.js +1 -1
- package/src/{field-exclusion.spec.js → field-exclusion.test.js} +60 -57
- package/src/{field-structure.spec.js → field-structure.test.js} +29 -29
- package/src/{fields-present.spec.js → fields-present.test.js} +12 -15
- package/src/fix-33X.js +4 -4
- package/src/{fix-33X.spec.js → fix-33X.test.js} +13 -14
- package/src/fix-country-codes.js +1 -1
- package/src/{fix-country-codes.spec.js → fix-country-codes.test.js} +12 -13
- package/src/fix-language-codes.js +5 -5
- package/src/{fix-language-codes.spec.js → fix-language-codes.test.js} +12 -13
- package/src/fixRelatorTerms.js +5 -5
- package/src/{fixRelatorTerms.spec.js → fixRelatorTerms.test.js} +13 -13
- package/src/{fixed-fields.spec.js → fixed-fields.test.js} +11 -14
- package/src/identical-fields.js +1 -1
- package/src/{identical-fields.spec.js → identical-fields.test.js} +9 -11
- package/src/index.js +132 -59
- package/src/indicator-fixes.js +17 -4
- package/src/{indicator-fixes.spec.js → indicator-fixes.test.js} +9 -12
- package/src/isbn-issn.js +12 -7
- package/src/{isbn-issn.spec.js → isbn-issn.test.js} +20 -22
- package/src/{item-language.spec.js → item-language.test.js} +21 -22
- package/src/melindaCustomMergeFields.js +1 -1
- package/src/merge-fields/controlSubfields.js +1 -1
- package/src/merge-fields/counterpartField.js +14 -9
- package/src/merge-fields/dataProvenance.js +41 -0
- package/src/merge-fields/index.js +12 -3
- package/src/merge-fields/mergableIndicator.js +1 -1
- package/src/merge-fields/mergeField.js +8 -8
- package/src/merge-fields/mergeIndicator.js +1 -1
- package/src/merge-fields/mergeOrAddPostprocess.js +4 -4
- package/src/merge-fields/mergeOrAddSubfield.js +2 -2
- package/src/merge-fields/mergeSubfield.js +4 -4
- package/src/merge-fields/removeDuplicateSubfields.js +2 -2
- package/src/{merge-fields.spec.js → merge-fields.test.js} +18 -15
- package/src/mergeField500Lisapainokset.js +1 -1
- package/src/{mergeField500Lisapainokset.spec.js → mergeField500Lisapainokset.test.js} +12 -13
- package/src/mergeRelatorTermFields.js +5 -7
- package/src/{mergeRelatorTermFields.spec.js → mergeRelatorTermFields.test.js} +12 -13
- package/src/modernize-502.js +1 -1
- package/src/{modernize-502.spec.js → modernize-502.test.js} +12 -13
- package/src/multiple-subfield-0.js +3 -3
- package/src/{multiple-subfield-0.spec.js → multiple-subfield-0.test.js} +13 -13
- package/src/{non-breaking-space.spec.js → non-breaking-space.test.js} +12 -13
- package/src/normalize-dashes.js +2 -2
- package/src/{normalize-dashes.spec.js → normalize-dashes.test.js} +12 -13
- package/src/normalize-identifiers.js +1 -1
- package/src/{normalize-identifiers.spec.js → normalize-identifiers.test.js} +12 -13
- package/src/normalize-qualifying-information.js +2 -2
- package/src/{normalize-qualifying-information.spec.js → normalize-qualifying-information.test.js} +12 -13
- package/src/normalize-utf8-diacritics.js +2 -2
- package/src/{normalize-utf8-diacritics.spec.js → normalize-utf8-diacritics.test.js} +13 -13
- package/src/normalizeFieldForComparison.js +32 -6
- package/src/normalizeSubfieldValueForComparison.js +1 -1
- package/src/prepublicationUtils.js +4 -4
- package/src/punctuation/index.js +1 -1
- package/src/punctuation/rules/index.js +2 -2
- package/src/{punctuation.spec.js → punctuation.test.js} +12 -13
- package/src/punctuation2.js +17 -8
- package/src/{punctuation2.spec.js → punctuation2.test.js} +12 -13
- package/src/reindexSubfield6OccurenceNumbers.js +5 -7
- package/src/{reindexSubfield6OccurenceNumbers.spec.js → reindexSubfield6OccurenceNumbers.test.js} +12 -13
- package/src/removeDuplicateDataFields.js +11 -19
- package/src/{removeDuplicateDataFields.spec.js → removeDuplicateDataFields.test.js} +12 -13
- package/src/removeInferiorDataFields.js +15 -12
- package/src/{removeInferiorDataFields.spec.js → removeInferiorDataFields.test.js} +13 -13
- package/src/resolvable-ext-references-melinda.js +1 -1
- package/src/{resolvable-ext-references-melinda.spec.js → resolvable-ext-references-melinda.test.js} +42 -27
- package/src/resolveOrphanedSubfield6s.js +6 -6
- package/src/{resolveOrphanedSubfield6s.spec.js → resolveOrphanedSubfield6s.test.js} +13 -13
- package/src/sanitize-vocabulary-source-codes.js +4 -4
- package/src/{sanitize-vocabulary-source-codes.spec.js → sanitize-vocabulary-source-codes.test.js} +16 -14
- package/src/{sort-tags.spec.js → sort-tags.test.js} +9 -11
- package/src/sortFields.js +4 -4
- package/src/{sortFields.spec.js → sortFields.test.js} +12 -13
- package/src/sortRelatorTerms.js +3 -3
- package/src/{sortRelatorTerms.spec.js → sortRelatorTerms.test.js} +13 -13
- package/src/sortSubfields.js +8 -6
- package/src/{sortSubfields.spec.js → sortSubfields.test.js} +13 -13
- package/src/stripPunctuation.js +3 -3
- package/src/{stripPunctuation.spec.js → stripPunctuation.test.js} +13 -13
- package/src/subfield-exclusion.js +1 -1
- package/src/{subfield-exclusion.spec.js → subfield-exclusion.test.js} +45 -36
- package/src/subfield6Utils.js +6 -10
- package/src/subfield8Utils.js +4 -4
- package/src/subfieldValueNormalizations.js +3 -3
- package/src/{subfieldValueNormalizations.spec.js → subfieldValueNormalizations.test.js} +18 -14
- package/src/sync-007-and-300.js +2 -2
- package/src/{sync-007-and-300.spec.js → sync-007-and-300.test.js} +13 -13
- package/src/translate-terms.js +3 -3
- package/src/translate-terms.test.js +75 -0
- package/src/{typeOfDate-008.spec.js → typeOfDate-008.test.js} +12 -13
- package/src/{unicode-decomposition.spec.js → unicode-decomposition.test.js} +10 -16
- package/src/update-field-540.js +2 -2
- package/src/{update-field-540.spec.js → update-field-540.test.js} +13 -10
- package/src/urn.js +2 -2
- package/src/{urn.spec.js → urn.test.js} +12 -13
- package/src/utils.js +21 -5
- package/test-fixtures/field-505-separators/03/expectedResult.json +3 -1
- package/test-fixtures/field-505-separators/03/record.json +3 -0
- package/test-fixtures/indicator-fixes/10/expectedResult.json +11 -0
- package/test-fixtures/indicator-fixes/10/metadata.json +4 -0
- package/test-fixtures/indicator-fixes/10/record.json +11 -0
- package/test-fixtures/merge-fields/f05/expectedResult.json +24 -0
- package/test-fixtures/merge-fields/f05/metadata.json +6 -0
- package/test-fixtures/merge-fields/f05/record.json +30 -0
- package/test-fixtures/normalize-subfield-value/01/metadata.json +4 -1
- package/test-fixtures/normalize-subfield-value/01/record.json +3 -0
- package/test-fixtures/normalize-subfield-value/02/expectedResult.json +3 -1
- package/test-fixtures/normalize-subfield-value/02/metadata.json +2 -1
- package/test-fixtures/normalize-subfield-value/02/record.json +3 -0
- package/test-fixtures/remove-inferior-datafields/f16/expectedResult.json +12 -0
- package/test-fixtures/remove-inferior-datafields/f16/metadata.json +5 -0
- package/test-fixtures/remove-inferior-datafields/f16/record.json +14 -0
- package/test-fixtures/sanitize-vocabulary-source-codes/f03/expectedResult.json +3 -1
- package/test-fixtures/sanitize-vocabulary-source-codes/f04/expectedResult.json +3 -1
- package/test-fixtures/sanitize-vocabulary-source-codes/v04/metadata.json +1 -4
- package/test-fixtures/sanitize-vocabulary-source-codes/v04/record.json +1 -1
- package/test-fixtures/translate-terms-data.js +42 -0
- package/dist/access-rights.spec.js +0 -195
- package/dist/access-rights.spec.js.map +0 -1
- package/dist/addMissingField041.spec.js +0 -45
- package/dist/addMissingField041.spec.js.map +0 -1
- package/dist/addMissingField336.spec.js +0 -45
- package/dist/addMissingField336.spec.js.map +0 -1
- package/dist/addMissingField337.spec.js +0 -43
- package/dist/addMissingField337.spec.js.map +0 -1
- package/dist/addMissingField338.spec.js +0 -45
- package/dist/addMissingField338.spec.js.map +0 -1
- package/dist/cyrillux-usemarcon-replacement.spec.js +0 -45
- package/dist/cyrillux-usemarcon-replacement.spec.js.map +0 -1
- package/dist/cyrillux.spec.js +0 -46
- package/dist/cyrillux.spec.js.map +0 -1
- package/dist/disambiguateSeriesStatements.spec.js +0 -51
- package/dist/disambiguateSeriesStatements.spec.js.map +0 -1
- package/dist/double-commas.spec.js +0 -73
- package/dist/double-commas.spec.js.map +0 -1
- package/dist/duplicates-ind1.spec.js +0 -45
- package/dist/duplicates-ind1.spec.js.map +0 -1
- package/dist/empty-fields.spec.js +0 -118
- package/dist/empty-fields.spec.js.map +0 -1
- package/dist/ending-punctuation.spec.js +0 -2654
- package/dist/ending-punctuation.spec.js.map +0 -1
- package/dist/ending-whitespace.spec.js +0 -42
- package/dist/ending-whitespace.spec.js.map +0 -1
- package/dist/field-008-18-34-character-groups.spec.js +0 -51
- package/dist/field-008-18-34-character-groups.spec.js.map +0 -1
- package/dist/field-505-separators.spec.js +0 -51
- package/dist/field-505-separators.spec.js.map +0 -1
- package/dist/field-521-fix.spec.js +0 -51
- package/dist/field-521-fix.spec.js.map +0 -1
- package/dist/field-exclusion.spec.js +0 -1054
- package/dist/field-exclusion.spec.js.map +0 -1
- package/dist/field-structure.spec.js +0 -535
- package/dist/field-structure.spec.js.map +0 -1
- package/dist/fields-present.spec.js +0 -121
- package/dist/fields-present.spec.js.map +0 -1
- package/dist/fix-33X.spec.js +0 -45
- package/dist/fix-33X.spec.js.map +0 -1
- package/dist/fix-country-codes.spec.js +0 -51
- package/dist/fix-country-codes.spec.js.map +0 -1
- package/dist/fix-language-codes.spec.js +0 -44
- package/dist/fix-language-codes.spec.js.map +0 -1
- package/dist/fixRelatorTerms.spec.js +0 -51
- package/dist/fixRelatorTerms.spec.js.map +0 -1
- package/dist/fixed-fields.spec.js +0 -140
- package/dist/fixed-fields.spec.js.map +0 -1
- package/dist/identical-fields.spec.js +0 -99
- package/dist/identical-fields.spec.js.map +0 -1
- package/dist/indicator-fixes.spec.js +0 -51
- package/dist/indicator-fixes.spec.js.map +0 -1
- package/dist/isbn-issn.spec.js +0 -595
- package/dist/isbn-issn.spec.js.map +0 -1
- package/dist/item-language.spec.js +0 -306
- package/dist/item-language.spec.js.map +0 -1
- package/dist/melindaCustomMergeFields.json +0 -5120
- package/dist/merge-fields.spec.js +0 -51
- package/dist/merge-fields.spec.js.map +0 -1
- package/dist/mergeField500Lisapainokset.spec.js +0 -51
- package/dist/mergeField500Lisapainokset.spec.js.map +0 -1
- package/dist/mergeRelatorTermFields.spec.js +0 -51
- package/dist/mergeRelatorTermFields.spec.js.map +0 -1
- package/dist/modernize-502.spec.js +0 -49
- package/dist/modernize-502.spec.js.map +0 -1
- package/dist/multiple-subfield-0.spec.js +0 -51
- package/dist/multiple-subfield-0.spec.js.map +0 -1
- package/dist/non-breaking-space.spec.js +0 -42
- package/dist/non-breaking-space.spec.js.map +0 -1
- package/dist/normalize-dashes.spec.js +0 -51
- package/dist/normalize-dashes.spec.js.map +0 -1
- package/dist/normalize-identifiers.spec.js +0 -51
- package/dist/normalize-identifiers.spec.js.map +0 -1
- package/dist/normalize-qualifying-information.spec.js +0 -51
- package/dist/normalize-qualifying-information.spec.js.map +0 -1
- package/dist/normalize-utf8-diacritics.spec.js +0 -51
- package/dist/normalize-utf8-diacritics.spec.js.map +0 -1
- package/dist/punctuation.spec.js +0 -51
- package/dist/punctuation.spec.js.map +0 -1
- package/dist/punctuation2.spec.js +0 -51
- package/dist/punctuation2.spec.js.map +0 -1
- package/dist/reindexSubfield6OccurenceNumbers.spec.js +0 -51
- package/dist/reindexSubfield6OccurenceNumbers.spec.js.map +0 -1
- package/dist/removeDuplicateDataFields.spec.js +0 -51
- package/dist/removeDuplicateDataFields.spec.js.map +0 -1
- package/dist/removeInferiorDataFields.spec.js +0 -51
- package/dist/removeInferiorDataFields.spec.js.map +0 -1
- package/dist/resolvable-ext-references-melinda.spec.js +0 -166
- package/dist/resolvable-ext-references-melinda.spec.js.map +0 -1
- package/dist/resolveOrphanedSubfield6s.spec.js +0 -51
- package/dist/resolveOrphanedSubfield6s.spec.js.map +0 -1
- package/dist/sanitize-vocabulary-source-codes.spec.js +0 -51
- package/dist/sanitize-vocabulary-source-codes.spec.js.map +0 -1
- package/dist/sort-tags.spec.js +0 -207
- package/dist/sort-tags.spec.js.map +0 -1
- package/dist/sortFields.spec.js +0 -51
- package/dist/sortFields.spec.js.map +0 -1
- package/dist/sortRelatorTerms.spec.js +0 -51
- package/dist/sortRelatorTerms.spec.js.map +0 -1
- package/dist/sortSubfields.spec.js +0 -52
- package/dist/sortSubfields.spec.js.map +0 -1
- package/dist/stripPunctuation.spec.js +0 -51
- package/dist/stripPunctuation.spec.js.map +0 -1
- package/dist/subfield-exclusion.spec.js +0 -523
- package/dist/subfield-exclusion.spec.js.map +0 -1
- package/dist/subfieldValueNormalizations.spec.js +0 -51
- package/dist/subfieldValueNormalizations.spec.js.map +0 -1
- package/dist/sync-007-and-300.spec.js +0 -51
- package/dist/sync-007-and-300.spec.js.map +0 -1
- package/dist/translate-terms.spec.js +0 -51
- package/dist/translate-terms.spec.js.map +0 -1
- package/dist/typeOfDate-008.spec.js +0 -47
- package/dist/typeOfDate-008.spec.js.map +0 -1
- package/dist/unicode-decomposition.spec.js +0 -91
- package/dist/unicode-decomposition.spec.js.map +0 -1
- package/dist/update-field-540.spec.js +0 -51
- package/dist/update-field-540.spec.js.map +0 -1
- package/dist/urn.spec.js +0 -52
- package/dist/urn.spec.js.map +0 -1
- package/src/melindaCustomMergeFields.json +0 -5120
- package/src/translate-terms.spec.js +0 -52
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import chaiAsPromised from 'chai-as-promised';
|
|
1
|
+
import assert from 'node:assert';
|
|
3
2
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
4
|
-
import validatorFactory from '../src/field-exclusion';
|
|
5
|
-
|
|
6
|
-
const {expect} = chai;
|
|
7
|
-
chai.use(chaiAsPromised);
|
|
3
|
+
import validatorFactory from '../src/field-exclusion.js';
|
|
4
|
+
import {describe, it} from 'node:test';
|
|
8
5
|
|
|
9
6
|
// Factory validation
|
|
10
7
|
describe('field-exclusion', () => {
|
|
@@ -13,12 +10,9 @@ describe('field-exclusion', () => {
|
|
|
13
10
|
const config = [/^500$/u];
|
|
14
11
|
|
|
15
12
|
const validator = await validatorFactory(config);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
expect(validator.description).to.be.a('string');
|
|
21
|
-
expect(validator.validate).to.be.a('function');
|
|
13
|
+
assert.equal(typeof validator, 'object');
|
|
14
|
+
assert.equal(typeof validator.description, 'string');
|
|
15
|
+
assert.equal(typeof validator.validate, 'function');
|
|
22
16
|
});
|
|
23
17
|
|
|
24
18
|
it('Creates a validator from complex config', async () => {
|
|
@@ -30,12 +24,11 @@ describe('field-exclusion', () => {
|
|
|
30
24
|
];
|
|
31
25
|
|
|
32
26
|
const validator = await validatorFactory(config);
|
|
33
|
-
expect(validator)
|
|
34
|
-
.to.be.an('object')
|
|
35
|
-
.that.has.any.keys('description', 'validate');
|
|
36
27
|
|
|
37
|
-
|
|
38
|
-
|
|
28
|
+
assert.equal(typeof validator, 'object');
|
|
29
|
+
assert.equal(typeof validator.description, 'string');
|
|
30
|
+
assert.equal(typeof validator.validate, 'function');
|
|
31
|
+
|
|
39
32
|
});
|
|
40
33
|
|
|
41
34
|
it('Fails to create a validator from invalid config - tag', async () => {
|
|
@@ -49,7 +42,8 @@ describe('field-exclusion', () => {
|
|
|
49
42
|
try {
|
|
50
43
|
await validatorFactory(config);
|
|
51
44
|
} catch (error) {
|
|
52
|
-
|
|
45
|
+
assert.equal(error instanceof Error, true);
|
|
46
|
+
assert.equal(error.message, 'Configuration not valid - invalid data type for: tag');
|
|
53
47
|
}
|
|
54
48
|
});
|
|
55
49
|
|
|
@@ -62,7 +56,8 @@ describe('field-exclusion', () => {
|
|
|
62
56
|
try {
|
|
63
57
|
await validatorFactory(config);
|
|
64
58
|
} catch (error) {
|
|
65
|
-
|
|
59
|
+
assert.equal(error instanceof Error, true);
|
|
60
|
+
assert.equal(error.message, 'Configuration array not provided');
|
|
66
61
|
}
|
|
67
62
|
});
|
|
68
63
|
|
|
@@ -77,7 +72,8 @@ describe('field-exclusion', () => {
|
|
|
77
72
|
try {
|
|
78
73
|
await validatorFactory(config);
|
|
79
74
|
} catch (error) {
|
|
80
|
-
|
|
75
|
+
assert.equal(error instanceof Error, true);
|
|
76
|
+
assert.equal(error.message, 'Configuration not valid - invalid data type for: code');
|
|
81
77
|
}
|
|
82
78
|
});
|
|
83
79
|
|
|
@@ -92,7 +88,8 @@ describe('field-exclusion', () => {
|
|
|
92
88
|
try {
|
|
93
89
|
await validatorFactory(config);
|
|
94
90
|
} catch (error) {
|
|
95
|
-
|
|
91
|
+
assert.equal(error instanceof Error, true);
|
|
92
|
+
assert.equal(error.message, 'Configuration not valid - invalid data type for: value');
|
|
96
93
|
}
|
|
97
94
|
});
|
|
98
95
|
|
|
@@ -109,7 +106,8 @@ describe('field-exclusion', () => {
|
|
|
109
106
|
try {
|
|
110
107
|
await validatorFactory(config);
|
|
111
108
|
} catch (error) {
|
|
112
|
-
|
|
109
|
+
assert.equal(error instanceof Error, true);
|
|
110
|
+
assert.equal(error.message, 'Configuration not valid - excluded element');
|
|
113
111
|
}
|
|
114
112
|
});
|
|
115
113
|
|
|
@@ -124,7 +122,8 @@ describe('field-exclusion', () => {
|
|
|
124
122
|
try {
|
|
125
123
|
await validatorFactory(config);
|
|
126
124
|
} catch (error) {
|
|
127
|
-
|
|
125
|
+
assert.equal(error instanceof Error, true);
|
|
126
|
+
assert.equal(error.message, 'Configuration not valid - missing mandatory element: tag');
|
|
128
127
|
}
|
|
129
128
|
});
|
|
130
129
|
|
|
@@ -142,7 +141,8 @@ describe('field-exclusion', () => {
|
|
|
142
141
|
try {
|
|
143
142
|
await validatorFactory(config);
|
|
144
143
|
} catch (error) {
|
|
145
|
-
|
|
144
|
+
assert.equal(error instanceof Error, true);
|
|
145
|
+
assert.equal(error.message, 'Configuration not valid - subfield: /9/,/^(?!FENNI<KEEP>).*$/ not object');
|
|
146
146
|
}
|
|
147
147
|
});
|
|
148
148
|
|
|
@@ -161,7 +161,8 @@ describe('field-exclusion', () => {
|
|
|
161
161
|
try {
|
|
162
162
|
await validatorFactory(config);
|
|
163
163
|
} catch (error) {
|
|
164
|
-
|
|
164
|
+
assert.equal(error instanceof Error, true);
|
|
165
|
+
assert.equal(error.message, 'Configuration not valid - subfield: /9/ not object');
|
|
165
166
|
}
|
|
166
167
|
});
|
|
167
168
|
|
|
@@ -179,7 +180,8 @@ describe('field-exclusion', () => {
|
|
|
179
180
|
try {
|
|
180
181
|
await validatorFactory(config);
|
|
181
182
|
} catch (error) {
|
|
182
|
-
|
|
183
|
+
assert.equal(error instanceof Error, true);
|
|
184
|
+
assert.equal(error.message, 'Configuration not valid - missing mandatory element: code');
|
|
183
185
|
}
|
|
184
186
|
});
|
|
185
187
|
|
|
@@ -198,7 +200,8 @@ describe('field-exclusion', () => {
|
|
|
198
200
|
try {
|
|
199
201
|
await validatorFactory(config);
|
|
200
202
|
} catch (error) {
|
|
201
|
-
|
|
203
|
+
assert.equal(error instanceof Error, true);
|
|
204
|
+
assert.equal(error.message, 'Configuration not valid - unidentified value: unidentified');
|
|
202
205
|
}
|
|
203
206
|
});
|
|
204
207
|
});
|
|
@@ -286,31 +289,31 @@ describe('field-exclusion', () => {
|
|
|
286
289
|
it('Finds the record valid (spec)', async () => {
|
|
287
290
|
const validator = await validatorFactory(config);
|
|
288
291
|
const {valid, message} = await validator.validate(recordValid);
|
|
289
|
-
|
|
292
|
+
assert.deepEqual({valid, message}, {valid: true, message: []});
|
|
290
293
|
});
|
|
291
294
|
|
|
292
295
|
it('Finds the record invalid (spec)', async () => {
|
|
293
296
|
const validator = await validatorFactory(config);
|
|
294
297
|
const {valid, message} = await validator.validate(recordInvalid);
|
|
295
|
-
|
|
298
|
+
assert.deepEqual({valid, message}, {valid: false, message: ['Field $500 should be excluded']});
|
|
296
299
|
});
|
|
297
300
|
|
|
298
301
|
it('Finds the record invalid - double', async () => {
|
|
299
302
|
const validator = await validatorFactory(config);
|
|
300
303
|
const {valid, message} = await validator.validate(recordInvalidDouble);
|
|
301
|
-
|
|
304
|
+
assert.deepEqual({valid, message}, {valid: false, message: ['Field $500 should be excluded', 'Field $500 should be excluded']});
|
|
302
305
|
});
|
|
303
306
|
|
|
304
307
|
it('Repairs invalid record', async () => {
|
|
305
308
|
const validator = await validatorFactory(config);
|
|
306
309
|
await validator.fix(recordInvalid);
|
|
307
|
-
|
|
310
|
+
assert.equal(recordInvalid.equalsTo(recordInvalidFixed), true);
|
|
308
311
|
});
|
|
309
312
|
|
|
310
313
|
it('Repairs invalid record - double', async () => {
|
|
311
314
|
const validator = await validatorFactory(config);
|
|
312
315
|
await validator.fix(recordInvalidDouble);
|
|
313
|
-
|
|
316
|
+
assert.equal(recordInvalidDouble.equalsTo(recordInvalidFixed), true);
|
|
314
317
|
});
|
|
315
318
|
});
|
|
316
319
|
|
|
@@ -397,31 +400,31 @@ describe('field-exclusion', () => {
|
|
|
397
400
|
it('Finds the record valid (spec)', async () => {
|
|
398
401
|
const validator = await validatorFactory(config);
|
|
399
402
|
const {valid, message} = await validator.validate(recordValid);
|
|
400
|
-
|
|
403
|
+
assert.deepEqual({valid, message}, {valid: true, message: []});
|
|
401
404
|
});
|
|
402
405
|
|
|
403
406
|
it('Finds the record invalid (spec)', async () => {
|
|
404
407
|
const validator = await validatorFactory(config);
|
|
405
408
|
const {valid, message} = await validator.validate(recordInvalid);
|
|
406
|
-
|
|
409
|
+
assert.deepEqual({valid, message}, {valid: false, message: ['Field $648 should be excluded']});
|
|
407
410
|
});
|
|
408
411
|
|
|
409
412
|
it('Finds the record invalid - double', async () => {
|
|
410
413
|
const validator = await validatorFactory(config);
|
|
411
414
|
const {valid, message} = await validator.validate(recordInvalidDouble);
|
|
412
|
-
|
|
415
|
+
assert.deepEqual({valid, message}, {valid: false, message: ['Field $648 should be excluded', 'Field $650 should be excluded']});
|
|
413
416
|
});
|
|
414
417
|
|
|
415
418
|
it('Repairs invalid record', async () => {
|
|
416
419
|
const validator = await validatorFactory(config);
|
|
417
420
|
await validator.fix(recordInvalid);
|
|
418
|
-
|
|
421
|
+
assert.equal(recordInvalid.equalsTo(recordInvalidFixed), true);
|
|
419
422
|
});
|
|
420
423
|
|
|
421
424
|
it('Repairs invalid record - double', async () => {
|
|
422
425
|
const validator = await validatorFactory(config);
|
|
423
426
|
await validator.fix(recordInvalidDouble);
|
|
424
|
-
|
|
427
|
+
assert.equal(recordInvalidDouble.equalsTo(recordInvalidFixed), true);
|
|
425
428
|
});
|
|
426
429
|
});
|
|
427
430
|
|
|
@@ -504,31 +507,31 @@ describe('field-exclusion', () => {
|
|
|
504
507
|
it('Finds the record valid (spec)', async () => {
|
|
505
508
|
const validator = await validatorFactory(config);
|
|
506
509
|
const {valid, message} = await validator.validate(recordValid);
|
|
507
|
-
|
|
510
|
+
assert.deepEqual({valid, message}, {valid: true, message: []});
|
|
508
511
|
});
|
|
509
512
|
|
|
510
513
|
it('Finds the record invalid (spec)', async () => {
|
|
511
514
|
const validator = await validatorFactory(config);
|
|
512
515
|
const {valid, message} = await validator.validate(recordInvalid);
|
|
513
|
-
|
|
516
|
+
assert.deepEqual({valid, message}, {valid: false, message: ['Field $648 should be excluded']});
|
|
514
517
|
});
|
|
515
518
|
|
|
516
519
|
it('Finds the record invalid - double', async () => {
|
|
517
520
|
const validator = await validatorFactory(config);
|
|
518
521
|
const {valid, message} = await validator.validate(recordInvalidDouble);
|
|
519
|
-
|
|
522
|
+
assert.deepEqual({valid, message}, {valid: false, message: ['Field $648 should be excluded', 'Field $650 should be excluded']});
|
|
520
523
|
});
|
|
521
524
|
|
|
522
525
|
it('Repairs invalid record', async () => {
|
|
523
526
|
const validator = await validatorFactory(config);
|
|
524
527
|
await validator.fix(recordInvalid);
|
|
525
|
-
|
|
528
|
+
assert.deepEqual(recordInvalid.equalsTo(recordInvalidFixed), true);
|
|
526
529
|
});
|
|
527
530
|
|
|
528
531
|
it('Repairs invalid record - double', async () => {
|
|
529
532
|
const validator = await validatorFactory(config);
|
|
530
533
|
await validator.fix(recordInvalidDouble);
|
|
531
|
-
|
|
534
|
+
assert.equal(recordInvalidDouble.equalsTo(recordInvalidFixed), true);
|
|
532
535
|
});
|
|
533
536
|
});
|
|
534
537
|
|
|
@@ -597,19 +600,19 @@ describe('field-exclusion', () => {
|
|
|
597
600
|
it('Finds the record valid (spec)', async () => {
|
|
598
601
|
const validator = await validatorFactory(config);
|
|
599
602
|
const {valid, message} = await validator.validate(recordValid);
|
|
600
|
-
|
|
603
|
+
assert.deepEqual({valid, message}, {valid: true, message: []});
|
|
601
604
|
});
|
|
602
605
|
|
|
603
606
|
it('Finds the record invalid (spec)', async () => {
|
|
604
607
|
const validator = await validatorFactory(config);
|
|
605
608
|
const {valid, message} = await validator.validate(recordInvalid);
|
|
606
|
-
|
|
609
|
+
assert.deepEqual({valid, message}, {valid: false, message: ['Field $500 should be excluded']});
|
|
607
610
|
});
|
|
608
611
|
|
|
609
612
|
it('Repairs invalid record', async () => {
|
|
610
613
|
const validator = await validatorFactory(config);
|
|
611
614
|
await validator.fix(recordInvalid);
|
|
612
|
-
|
|
615
|
+
assert.equal(recordInvalid.equalsTo(recordInvalidFixed), true);
|
|
613
616
|
});
|
|
614
617
|
});
|
|
615
618
|
|
|
@@ -714,19 +717,19 @@ describe('field-exclusion', () => {
|
|
|
714
717
|
it('Finds the record valid (spec)', async () => {
|
|
715
718
|
const validator = await validatorFactory(config);
|
|
716
719
|
const {valid, message} = await validator.validate(recordValid);
|
|
717
|
-
|
|
720
|
+
assert.deepEqual({valid, message}, {valid: true, message: []});
|
|
718
721
|
});
|
|
719
722
|
|
|
720
723
|
it('Finds the record invalid (spec)', async () => {
|
|
721
724
|
const validator = await validatorFactory(config);
|
|
722
725
|
const {valid, message} = await validator.validate(recordInvalid);
|
|
723
|
-
|
|
726
|
+
assert.deepEqual({valid, message}, {valid: false, message: ['Field $650 should be excluded']});
|
|
724
727
|
});
|
|
725
728
|
|
|
726
729
|
it('Finds the record invalid (spec)', async () => {
|
|
727
730
|
const validator = await validatorFactory(config);
|
|
728
731
|
const {valid, message} = await validator.validate(recordInvalidMulti);
|
|
729
|
-
|
|
732
|
+
assert.deepEqual({valid, message}, {valid: false, message: [
|
|
730
733
|
'Field $648 should be excluded',
|
|
731
734
|
'Field $650 should be excluded',
|
|
732
735
|
'Field $650 should be excluded',
|
|
@@ -738,13 +741,13 @@ describe('field-exclusion', () => {
|
|
|
738
741
|
it('Repairs invalid multi record', async () => {
|
|
739
742
|
const validator = await validatorFactory(config);
|
|
740
743
|
await validator.fix(recordInvalidMulti);
|
|
741
|
-
|
|
744
|
+
assert.equal(recordInvalidMulti.equalsTo(recordInvalidFixed), true);
|
|
742
745
|
});
|
|
743
746
|
|
|
744
747
|
it('Repairs invalid record', async () => {
|
|
745
748
|
const validator = await validatorFactory(config);
|
|
746
749
|
await validator.fix(recordInvalid);
|
|
747
|
-
|
|
750
|
+
assert.equal(recordInvalid.equalsTo(recordInvalidFixed), true);
|
|
748
751
|
});
|
|
749
752
|
});
|
|
750
753
|
|
|
@@ -830,37 +833,37 @@ describe('field-exclusion', () => {
|
|
|
830
833
|
it('Finds the record valid - Ind1&Ind2', async () => {
|
|
831
834
|
const validator = await validatorFactory(configInd);
|
|
832
835
|
const {valid, message} = await validator.validate(recordValid);
|
|
833
|
-
|
|
836
|
+
assert.deepEqual({valid, message}, {valid: true, message: []});
|
|
834
837
|
});
|
|
835
838
|
|
|
836
839
|
it('Finds the record valid - Value', async () => {
|
|
837
840
|
const validator = await validatorFactory(configValue);
|
|
838
841
|
const {valid, message} = await validator.validate(recordValid);
|
|
839
|
-
|
|
842
|
+
assert.deepEqual({valid, message}, {valid: true, message: []});
|
|
840
843
|
});
|
|
841
844
|
|
|
842
845
|
it('Finds the record invalid - Ind', async () => {
|
|
843
846
|
const validator = await validatorFactory(configInd);
|
|
844
847
|
const {valid, message} = await validator.validate(recordIndInvalid);
|
|
845
|
-
|
|
848
|
+
assert.deepEqual({valid, message}, {valid: false, message: ['Field $500 should be excluded']});
|
|
846
849
|
});
|
|
847
850
|
|
|
848
851
|
it('Finds the record invalid - Value', async () => {
|
|
849
852
|
const validator = await validatorFactory(configValue);
|
|
850
853
|
const {valid, message} = await validator.validate(recordValueInvalid);
|
|
851
|
-
|
|
854
|
+
assert.deepEqual({valid, message}, {valid: false, message: ['Field $500 should be excluded']});
|
|
852
855
|
});
|
|
853
856
|
|
|
854
857
|
it('Repairs invalid record - Ind', async () => {
|
|
855
858
|
const validator = await validatorFactory(configInd);
|
|
856
859
|
await validator.fix(recordIndInvalid);
|
|
857
|
-
|
|
860
|
+
assert.equal(recordIndInvalid.equalsTo(recordInvalidFixed), true);
|
|
858
861
|
});
|
|
859
862
|
|
|
860
863
|
it('Repairs invalid record - Value', async () => {
|
|
861
864
|
const validator = await validatorFactory(configValue);
|
|
862
865
|
await validator.fix(recordValueInvalid);
|
|
863
|
-
|
|
866
|
+
assert.equal(recordValueInvalid.equalsTo(recordInvalidFixed), true);
|
|
864
867
|
});
|
|
865
868
|
});
|
|
866
869
|
|
|
@@ -888,7 +891,7 @@ describe('field-exclusion', () => {
|
|
|
888
891
|
const validator = await validatorFactory(config);
|
|
889
892
|
const {valid, message} = await validator.validate(record);
|
|
890
893
|
|
|
891
|
-
|
|
894
|
+
assert.deepEqual({valid, message}, {valid: false, message: ['Field $041 should be excluded']});
|
|
892
895
|
});
|
|
893
896
|
});
|
|
894
897
|
});
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import {describe, it} from 'node:test';
|
|
3
3
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
4
|
-
import validatorFactory from '
|
|
4
|
+
import validatorFactory from './field-structure.js';
|
|
5
5
|
|
|
6
|
-
const {expect} = chai;
|
|
7
|
-
chai.use(chaiAsPromised);
|
|
8
6
|
|
|
9
7
|
// Factory validation
|
|
10
8
|
describe('field-structure', () => {
|
|
@@ -24,12 +22,9 @@ describe('field-structure', () => {
|
|
|
24
22
|
|
|
25
23
|
const validator = await validatorFactory(config);
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
expect(validator.description).to.be.a('string');
|
|
32
|
-
expect(validator.validate).to.be.a('function');
|
|
25
|
+
assert.equal(typeof validator, 'object');
|
|
26
|
+
assert.equal(typeof validator.description, 'string');
|
|
27
|
+
assert.equal(typeof validator.validate, 'function');
|
|
33
28
|
});
|
|
34
29
|
|
|
35
30
|
describe('#configuration', () => {
|
|
@@ -37,7 +32,8 @@ describe('field-structure', () => {
|
|
|
37
32
|
try {
|
|
38
33
|
validatorFactory();
|
|
39
34
|
} catch (error) {
|
|
40
|
-
|
|
35
|
+
assert.equal(error instanceof Error, true);
|
|
36
|
+
assert.equal(error.message, 'Configuration array not provided');
|
|
41
37
|
}
|
|
42
38
|
});
|
|
43
39
|
|
|
@@ -52,7 +48,8 @@ describe('field-structure', () => {
|
|
|
52
48
|
try {
|
|
53
49
|
validatorFactory(config);
|
|
54
50
|
} catch (error) {
|
|
55
|
-
|
|
51
|
+
assert.equal(error instanceof Error, true);
|
|
52
|
+
assert.equal(error.message, 'Configuration not valid - unidentified value: tags');
|
|
56
53
|
}
|
|
57
54
|
});
|
|
58
55
|
|
|
@@ -67,7 +64,8 @@ describe('field-structure', () => {
|
|
|
67
64
|
try {
|
|
68
65
|
validatorFactory(config);
|
|
69
66
|
} catch (error) {
|
|
70
|
-
|
|
67
|
+
assert.equal(error instanceof Error, true);
|
|
68
|
+
assert.equal(error.message, 'Configuration not valid - invalid data type for: tag');
|
|
71
69
|
}
|
|
72
70
|
});
|
|
73
71
|
|
|
@@ -82,7 +80,8 @@ describe('field-structure', () => {
|
|
|
82
80
|
try {
|
|
83
81
|
validatorFactory(config);
|
|
84
82
|
} catch (error) {
|
|
85
|
-
|
|
83
|
+
assert.equal(error instanceof Error, true);
|
|
84
|
+
assert.equal(error.message, 'Configuration not valid - excluded element');
|
|
86
85
|
}
|
|
87
86
|
});
|
|
88
87
|
|
|
@@ -101,7 +100,8 @@ describe('field-structure', () => {
|
|
|
101
100
|
try {
|
|
102
101
|
validatorFactory(config);
|
|
103
102
|
} catch (error) {
|
|
104
|
-
|
|
103
|
+
assert.equal(error instanceof Error, true);
|
|
104
|
+
assert.equal(error.message, 'Configuration not valid - subfields not object');
|
|
105
105
|
}
|
|
106
106
|
});
|
|
107
107
|
});
|
|
@@ -127,7 +127,7 @@ describe('field-structure', () => {
|
|
|
127
127
|
const validator = await validatorFactory(config);
|
|
128
128
|
const result = await validator.validate(record);
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
assert.deepEqual(result, {valid: true});
|
|
131
131
|
});
|
|
132
132
|
|
|
133
133
|
// Indicators and subfields validation
|
|
@@ -218,14 +218,14 @@ describe('field-structure', () => {
|
|
|
218
218
|
const validator = await validatorFactory(config);
|
|
219
219
|
const result = await validator.validate(recordValid);
|
|
220
220
|
|
|
221
|
-
|
|
221
|
+
assert.deepEqual(result, {valid: true});
|
|
222
222
|
});
|
|
223
223
|
|
|
224
224
|
it('Finds the record invalid: Too many subfields', async () => {
|
|
225
225
|
const validator = await validatorFactory(config);
|
|
226
226
|
const result = await validator.validate(recordInvalidMany);
|
|
227
227
|
|
|
228
|
-
|
|
228
|
+
assert.deepEqual(result, {valid: false});
|
|
229
229
|
});
|
|
230
230
|
});
|
|
231
231
|
|
|
@@ -447,41 +447,41 @@ describe('field-structure', () => {
|
|
|
447
447
|
const validator = await validatorFactory(config);
|
|
448
448
|
const result = await validator.validate(recordValid);
|
|
449
449
|
|
|
450
|
-
|
|
450
|
+
assert.deepEqual(result, {valid: true});
|
|
451
451
|
});
|
|
452
452
|
|
|
453
453
|
it('Finds the record invalid: Extra field in strict', async () => {
|
|
454
454
|
const validator = await validatorFactory(config);
|
|
455
455
|
const result = await validator.validate(recordInvalidExtra);
|
|
456
456
|
|
|
457
|
-
|
|
457
|
+
assert.deepEqual(result, {valid: false});
|
|
458
458
|
});
|
|
459
459
|
|
|
460
460
|
it('Finds the record invalid: Too many occurances', async () => {
|
|
461
461
|
const validator = await validatorFactory(config);
|
|
462
462
|
const result = await validator.validate(recordInvalidTooMany);
|
|
463
463
|
|
|
464
|
-
|
|
464
|
+
assert.deepEqual(result, {valid: false});
|
|
465
465
|
});
|
|
466
466
|
|
|
467
467
|
it('Finds the record invalid: Invalid RegExp', async () => {
|
|
468
468
|
const validator = await validatorFactory(config);
|
|
469
469
|
const result = await validator.validate(recordInvalidRegExp);
|
|
470
470
|
|
|
471
|
-
|
|
471
|
+
assert.deepEqual(result, {valid: false});
|
|
472
472
|
});
|
|
473
473
|
|
|
474
474
|
it('Finds the record invalid: Missing field', async () => {
|
|
475
475
|
const validator = await validatorFactory(config);
|
|
476
476
|
const result = await validator.validate(recordInvalidMissing);
|
|
477
477
|
|
|
478
|
-
|
|
478
|
+
assert.deepEqual(result, {valid: false});
|
|
479
479
|
});
|
|
480
480
|
it('Finds the record invalid: Missing subfield', async () => {
|
|
481
481
|
const validator = await validatorFactory(config);
|
|
482
482
|
const result = await validator.validate(recordInvalidMissingSubfield);
|
|
483
483
|
|
|
484
|
-
|
|
484
|
+
assert.deepEqual(result, {valid: false});
|
|
485
485
|
});
|
|
486
486
|
});
|
|
487
487
|
|
|
@@ -569,14 +569,14 @@ describe('field-structure', () => {
|
|
|
569
569
|
const validator = await validatorFactory(config);
|
|
570
570
|
const result = await validator.validate(recordValid);
|
|
571
571
|
|
|
572
|
-
|
|
572
|
+
assert.deepEqual(result, {valid: true});
|
|
573
573
|
});
|
|
574
574
|
|
|
575
575
|
it('Finds the record invalid', async () => {
|
|
576
576
|
const validator = await validatorFactory(config);
|
|
577
577
|
const result = await validator.validate(recordInvalid);
|
|
578
578
|
|
|
579
|
-
|
|
579
|
+
assert.deepEqual(result, {valid: false});
|
|
580
580
|
});
|
|
581
581
|
|
|
582
582
|
it('Find the record valid (Dependency on leader)', async () => {
|
|
@@ -589,7 +589,7 @@ describe('field-structure', () => {
|
|
|
589
589
|
]
|
|
590
590
|
}));
|
|
591
591
|
|
|
592
|
-
|
|
592
|
+
assert.deepEqual(result, {valid: true});
|
|
593
593
|
});
|
|
594
594
|
|
|
595
595
|
it('Find the record invalid (Dependency on leader)', async () => {
|
|
@@ -602,7 +602,7 @@ describe('field-structure', () => {
|
|
|
602
602
|
]
|
|
603
603
|
}));
|
|
604
604
|
|
|
605
|
-
|
|
605
|
+
assert.deepEqual(result, {valid: false});
|
|
606
606
|
});
|
|
607
607
|
});
|
|
608
608
|
});
|
|
@@ -1,28 +1,25 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import {describe, it} from 'node:test';
|
|
2
|
+
import assert from 'node:assert';
|
|
3
3
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
4
|
-
import validatorFactory from '../src/fields-present';
|
|
4
|
+
import validatorFactory from '../src/fields-present.js';
|
|
5
|
+
|
|
5
6
|
|
|
6
|
-
const {expect} = chai;
|
|
7
|
-
chai.use(chaiAsPromised);
|
|
8
7
|
|
|
9
8
|
describe('fields-present', () => {
|
|
10
9
|
it('Creates a validator', async () => {
|
|
11
10
|
const validator = await validatorFactory([/^500$/u, /^400$/u]);
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
expect(validator.description).to.be.a('string');
|
|
18
|
-
expect(validator.validate).to.be.a('function');
|
|
12
|
+
assert.equal(typeof validator, 'object');
|
|
13
|
+
assert.equal(typeof validator.description, 'string');
|
|
14
|
+
assert.equal(typeof validator.validate, 'function');
|
|
19
15
|
});
|
|
20
16
|
|
|
21
17
|
it('Throws an error when tagPatterns not provided', () => {
|
|
22
18
|
try {
|
|
23
19
|
validatorFactory();
|
|
24
20
|
} catch (error) {
|
|
25
|
-
|
|
21
|
+
assert.equal(error instanceof Error, true);
|
|
22
|
+
assert.equal(error.message, 'No tag pattern array provided');
|
|
26
23
|
}
|
|
27
24
|
});
|
|
28
25
|
|
|
@@ -48,7 +45,7 @@ describe('fields-present', () => {
|
|
|
48
45
|
});
|
|
49
46
|
const result = await validator.validate(record);
|
|
50
47
|
|
|
51
|
-
|
|
48
|
+
assert.deepEqual(result, {valid: true, messages: []});
|
|
52
49
|
});
|
|
53
50
|
it('Finds the record valid', async () => {
|
|
54
51
|
const tagPatterns = [/^(020|022|024)$/u];
|
|
@@ -71,7 +68,7 @@ describe('fields-present', () => {
|
|
|
71
68
|
});
|
|
72
69
|
const result = await validator.validate(record);
|
|
73
70
|
|
|
74
|
-
|
|
71
|
+
assert.deepEqual(result, {valid: true, messages: []});
|
|
75
72
|
});
|
|
76
73
|
it('Finds the record invalid', async () => {
|
|
77
74
|
const tagPatterns = [/^5..$/u, /^FOO$/u];
|
|
@@ -100,7 +97,7 @@ describe('fields-present', () => {
|
|
|
100
97
|
});
|
|
101
98
|
const result = await validator.validate(record);
|
|
102
99
|
|
|
103
|
-
|
|
100
|
+
assert.deepEqual(result, {valid: false, messages: ['The following tag patterns are not present in the record tag field: /^FOO$/u']});
|
|
104
101
|
});
|
|
105
102
|
});
|
|
106
103
|
});
|
package/src/fix-33X.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//import createDebugLogger from 'debug';
|
|
2
2
|
import clone from 'clone';
|
|
3
|
-
import {fieldToString, getCatalogingLanguage, nvdebug} from './utils';
|
|
4
|
-
import {map336CodeToTerm, map337CodeToTerm, map338CodeToTerm} from './field33XUtils';
|
|
3
|
+
import {fieldToString, getCatalogingLanguage, nvdebug} from './utils.js';
|
|
4
|
+
import {map336CodeToTerm, map337CodeToTerm, map338CodeToTerm} from './field33XUtils.js';
|
|
5
5
|
|
|
6
6
|
const description = 'Fix non-RDA 33X field(s)';
|
|
7
7
|
|
|
@@ -376,7 +376,7 @@ export default function () {
|
|
|
376
376
|
nvdebug(`FIX ${description}...`);
|
|
377
377
|
const catLang = getCatalogingLanguage(record) || 'fin';
|
|
378
378
|
const fields = getRelevantFields(record);
|
|
379
|
-
fields.forEach(f => fixField(f, catLang));
|
|
379
|
+
fields.forEach(f => fixField(f, catLang));
|
|
380
380
|
nvdebug(` GOT ${fields.length}...`);
|
|
381
381
|
// FFS: we actually need newFields array here! Videogame, for example, might be
|
|
382
382
|
// 336 ## ‡a kaksiulotteinen liikkuva kuva ‡b tdi ‡2 rdacontent
|
|
@@ -395,7 +395,7 @@ export default function () {
|
|
|
395
395
|
}
|
|
396
396
|
const originalStrings = fields.map(f => fieldToString(f));
|
|
397
397
|
const clonedFields = fields.map(f => clone(f));
|
|
398
|
-
clonedFields.forEach(f => fixField(f, catLang));
|
|
398
|
+
clonedFields.forEach(f => fixField(f, catLang));
|
|
399
399
|
const modifiedStrings = clonedFields.map(f => fieldToString(f));
|
|
400
400
|
|
|
401
401
|
const changes = originalStrings.map((str, i) => `'${str}' => '${modifiedStrings[i]}'`);
|