@natlibfi/marc-record-validators-melinda 11.6.7 → 12.0.0-alpha.2
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 +1 -1
- 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 +46 -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 +871 -769
- package/dist/ending-punctuation-conf.js.map +7 -1
- package/dist/ending-punctuation.js +84 -167
- package/dist/ending-punctuation.js.map +7 -1
- package/dist/ending-punctuation.test.js +2290 -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 +119 -413
- package/dist/index.js.map +7 -1
- package/dist/indicator-fixes.js +57 -95
- 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 +66 -126
- 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 +182 -379
- package/dist/merge-fields/counterpartField.js.map +7 -1
- package/dist/merge-fields/index.js +15 -49
- 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 +44 -0
- package/dist/merge-fields.test.js.map +7 -0
- package/dist/mergeField500Lisapainokset.js +28 -57
- 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 +67 -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 +251 -800
- 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 +103 -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 +33 -64
- 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 +44 -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 +72 -126
- package/dist/utils.js.map +7 -1
- package/eslint.config.mjs +1 -2
- package/package.json +21 -93
- 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.test.js +55 -0
- 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.js +1 -1
- package/src/{ending-punctuation.spec.js → ending-punctuation.test.js} +172 -173
- 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 +58 -58
- package/src/indicator-fixes.js +3 -3
- package/src/{indicator-fixes.spec.js → indicator-fixes.test.js} +9 -12
- package/src/isbn-issn.js +1 -1
- 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/merge-fields/controlSubfields.js +1 -1
- package/src/merge-fields/counterpartField.js +8 -9
- package/src/merge-fields/index.js +1 -1
- package/src/merge-fields/mergableIndicator.js +1 -1
- package/src/merge-fields/mergeField.js +6 -6
- 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} +12 -13
- 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 +6 -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 +4 -4
- 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 +11 -11
- 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 +5 -5
- 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 +1 -1
- 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.spec.js → translate-terms.test.js} +13 -13
- 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 +3 -3
- 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/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/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/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/cyrillux-usemarcon-replacement.spec.js +0 -47
|
@@ -1,32 +1,31 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
2
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
3
|
-
import validatorFactory from './fix-33X';
|
|
3
|
+
import validatorFactory from './fix-33X.js';
|
|
4
4
|
import {READERS} from '@natlibfi/fixura';
|
|
5
5
|
import generateTests from '@natlibfi/fixugen';
|
|
6
6
|
|
|
7
7
|
generateTests({
|
|
8
8
|
callback,
|
|
9
|
-
path: [
|
|
9
|
+
path: [import.meta.dirname, '..', 'test-fixtures', 'fix-33X'],
|
|
10
10
|
useMetadataFile: true,
|
|
11
11
|
recurse: false,
|
|
12
12
|
fixura: {
|
|
13
13
|
reader: READERS.JSON
|
|
14
14
|
},
|
|
15
|
-
|
|
16
|
-
before: () =>
|
|
15
|
+
hooks: {
|
|
16
|
+
before: async () => {
|
|
17
|
+
testValidatorFactory();
|
|
18
|
+
}
|
|
17
19
|
}
|
|
18
20
|
});
|
|
19
21
|
|
|
20
22
|
async function testValidatorFactory() {
|
|
21
23
|
const validator = await validatorFactory();
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
expect(validator.description).to.be.a('string');
|
|
28
|
-
expect(validator.validate).to.be.a('function');
|
|
29
|
-
expect(validator.fix).to.be.a('function');
|
|
25
|
+
assert.equal(typeof validator, 'objecr');
|
|
26
|
+
assert.equal(typeof validator.description, 'string');
|
|
27
|
+
assert.equal(typeof validator.validate, 'function');
|
|
28
|
+
assert.equal(typeof validator.fix, 'function');
|
|
30
29
|
}
|
|
31
30
|
|
|
32
31
|
async function callback({getFixture, fix = false}) {
|
|
@@ -37,10 +36,10 @@ async function callback({getFixture, fix = false}) {
|
|
|
37
36
|
|
|
38
37
|
if (!fix) {
|
|
39
38
|
const result = await validator.validate(record);
|
|
40
|
-
|
|
39
|
+
assert.deepEqual(result, expectedResult);
|
|
41
40
|
return;
|
|
42
41
|
}
|
|
43
42
|
|
|
44
43
|
await validator.fix(record);
|
|
45
|
-
|
|
44
|
+
assert.deepEqual(record, expectedResult);
|
|
46
45
|
}
|
package/src/fix-country-codes.js
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
2
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
3
|
-
import validatorFactory from './fix-country-codes';
|
|
3
|
+
import validatorFactory from './fix-country-codes.js';
|
|
4
4
|
import {READERS} from '@natlibfi/fixura';
|
|
5
5
|
import generateTests from '@natlibfi/fixugen';
|
|
6
6
|
import createDebugLogger from 'debug';
|
|
7
7
|
|
|
8
8
|
generateTests({
|
|
9
9
|
callback,
|
|
10
|
-
path: [
|
|
10
|
+
path: [import.meta.dirname, '..', 'test-fixtures', 'fix-country-codes'],
|
|
11
11
|
useMetadataFile: true,
|
|
12
12
|
recurse: false,
|
|
13
13
|
fixura: {
|
|
14
14
|
reader: READERS.JSON
|
|
15
15
|
},
|
|
16
|
-
|
|
17
|
-
before: () =>
|
|
16
|
+
hooks: {
|
|
17
|
+
before: async () => {
|
|
18
|
+
testValidatorFactory();
|
|
19
|
+
}
|
|
18
20
|
}
|
|
19
21
|
});
|
|
20
22
|
const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/fix-country-codes:test');
|
|
@@ -22,12 +24,9 @@ const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/fix-co
|
|
|
22
24
|
async function testValidatorFactory() {
|
|
23
25
|
const validator = await validatorFactory();
|
|
24
26
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
expect(validator.description).to.be.a('string');
|
|
30
|
-
expect(validator.validate).to.be.a('function');
|
|
27
|
+
assert.equal(typeof validator, 'object');
|
|
28
|
+
assert.equal(typeof validator.description, 'string');
|
|
29
|
+
assert.equal(typeof validator.validate, 'function');
|
|
31
30
|
}
|
|
32
31
|
|
|
33
32
|
async function callback({getFixture, enabled = true, fix = false}) {
|
|
@@ -43,10 +42,10 @@ async function callback({getFixture, enabled = true, fix = false}) {
|
|
|
43
42
|
|
|
44
43
|
if (!fix) {
|
|
45
44
|
const result = await validator.validate(record);
|
|
46
|
-
|
|
45
|
+
assert.deepEqual(result, expectedResult);
|
|
47
46
|
return;
|
|
48
47
|
}
|
|
49
48
|
|
|
50
49
|
await validator.fix(record);
|
|
51
|
-
|
|
50
|
+
assert.deepEqual(record, expectedResult);
|
|
52
51
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import clone from 'clone';
|
|
2
|
-
import {fieldToString} from './utils';
|
|
2
|
+
import {fieldToString} from './utils.js';
|
|
3
3
|
// Fix language codes in 008/35-37 and 041 (does not sync them)
|
|
4
4
|
//
|
|
5
5
|
// Author(s): Nicholas Volk
|
|
6
6
|
|
|
7
7
|
//import createDebugLogger from 'debug';
|
|
8
|
-
//import {fieldToString, nvdebug} from './utils';
|
|
8
|
+
//import {fieldToString, nvdebug} from './utils.js';
|
|
9
9
|
|
|
10
10
|
const description = 'Fix language codes';
|
|
11
11
|
|
|
@@ -25,7 +25,7 @@ export default function () {
|
|
|
25
25
|
fixLanguageField008(field008);
|
|
26
26
|
|
|
27
27
|
const f041 = record.get('041');
|
|
28
|
-
f041.forEach(f => fixField041(f));
|
|
28
|
+
f041.forEach(f => fixField041(f));
|
|
29
29
|
|
|
30
30
|
return res;
|
|
31
31
|
}
|
|
@@ -38,7 +38,7 @@ export default function () {
|
|
|
38
38
|
|
|
39
39
|
const f041 = record.get('041');
|
|
40
40
|
|
|
41
|
-
f041.forEach(f => validateField041(f, res));
|
|
41
|
+
f041.forEach(f => validateField041(f, res));
|
|
42
42
|
|
|
43
43
|
res.valid = !(res.message.length >= 1);
|
|
44
44
|
return res;
|
|
@@ -98,7 +98,7 @@ export default function () {
|
|
|
98
98
|
return;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
field.subfields.forEach(sf => fixField041Subfield(sf));
|
|
101
|
+
field.subfields.forEach(sf => fixField041Subfield(sf));
|
|
102
102
|
|
|
103
103
|
function fixField041Subfield(subfield) {
|
|
104
104
|
if (!isRelevantField041SubfieldCode(subfield)) {
|
|
@@ -1,31 +1,30 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
2
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
3
|
-
import validatorFactory from './fix-language-codes';
|
|
3
|
+
import validatorFactory from './fix-language-codes.js';
|
|
4
4
|
import {READERS} from '@natlibfi/fixura';
|
|
5
5
|
import generateTests from '@natlibfi/fixugen';
|
|
6
6
|
|
|
7
7
|
generateTests({
|
|
8
8
|
callback,
|
|
9
|
-
path: [
|
|
9
|
+
path: [import.meta.dirname, '..', 'test-fixtures', 'fix-language-codes'],
|
|
10
10
|
useMetadataFile: true,
|
|
11
11
|
recurse: false,
|
|
12
12
|
fixura: {
|
|
13
13
|
reader: READERS.JSON
|
|
14
14
|
},
|
|
15
|
-
|
|
16
|
-
before: () =>
|
|
15
|
+
hooks: {
|
|
16
|
+
before: async () => {
|
|
17
|
+
testValidatorFactory();
|
|
18
|
+
}
|
|
17
19
|
}
|
|
18
20
|
});
|
|
19
21
|
|
|
20
22
|
async function testValidatorFactory() {
|
|
21
23
|
const validator = await validatorFactory();
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
expect(validator.description).to.be.a('string');
|
|
28
|
-
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');
|
|
29
28
|
}
|
|
30
29
|
|
|
31
30
|
async function callback({getFixture, fix = false}) {
|
|
@@ -36,10 +35,10 @@ async function callback({getFixture, fix = false}) {
|
|
|
36
35
|
|
|
37
36
|
if (!fix) {
|
|
38
37
|
const result = await validator.validate(record);
|
|
39
|
-
|
|
38
|
+
assert.deepEqual(result, expectedResult);
|
|
40
39
|
return;
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
await validator.fix(record);
|
|
44
|
-
|
|
43
|
+
assert.deepEqual(record, expectedResult);
|
|
45
44
|
}
|
package/src/fixRelatorTerms.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import clone from 'clone';
|
|
2
|
-
import {fieldFixPunctuation} from './punctuation2';
|
|
3
|
-
import {fieldToString, getCatalogingLanguage, nvdebug, subfieldToString} from './utils';
|
|
2
|
+
import {fieldFixPunctuation} from './punctuation2.js';
|
|
3
|
+
import {fieldToString, getCatalogingLanguage, nvdebug, subfieldToString} from './utils.js';
|
|
4
4
|
import createDebugLogger from 'debug';
|
|
5
5
|
|
|
6
6
|
// Currently mainly translates X00$e values, so that we don't have "$a Name, $e kirjoittaja, $e författare.".
|
|
@@ -157,7 +157,7 @@ function fieldHandleRelatorTermAbbreviations(field, language) {
|
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
const originalValue = fieldToString(field);
|
|
160
|
-
field.subfields.forEach(sf => subfieldHandleRelatorTermAbbreviation(sf, language));
|
|
160
|
+
field.subfields.forEach(sf => subfieldHandleRelatorTermAbbreviation(sf, language));
|
|
161
161
|
const modifiedValue = fieldToString(field);
|
|
162
162
|
if (modifiedValue === originalValue) {
|
|
163
163
|
return;
|
|
@@ -222,7 +222,7 @@ export function fieldFixRelatorTerms(field, fromLanguage, toLanguage) {
|
|
|
222
222
|
}
|
|
223
223
|
fieldHandleRelatorTermAbbreviations(field, fromLanguage);
|
|
224
224
|
|
|
225
|
-
field.subfields.forEach(sf => subfieldTranslateRelatorTerm(sf, fromLanguage, toLanguage));
|
|
225
|
+
field.subfields.forEach(sf => subfieldTranslateRelatorTerm(sf, fromLanguage, toLanguage));
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
|
|
@@ -230,7 +230,7 @@ export function recordFixRelatorTerms(record, defaultToLanguage = null, defaultF
|
|
|
230
230
|
const fromLanguage = defaultFromLanguage ? defaultFromLanguage : getCatalogingLanguage(record);
|
|
231
231
|
const toLanguage = defaultToLanguage ? defaultToLanguage : getCatalogingLanguage(record);
|
|
232
232
|
|
|
233
|
-
record.fields.forEach(field => translateField(field, fromLanguage, toLanguage));
|
|
233
|
+
record.fields.forEach(field => translateField(field, fromLanguage, toLanguage));
|
|
234
234
|
|
|
235
235
|
function translateField(field, from, to) {
|
|
236
236
|
fieldFixRelatorTerms(field, from, to);
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
2
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
3
|
-
import validatorFactory from '
|
|
3
|
+
import validatorFactory from '../src/fixRelatorTerms.js';
|
|
4
4
|
import {READERS} from '@natlibfi/fixura';
|
|
5
5
|
import generateTests from '@natlibfi/fixugen';
|
|
6
6
|
import createDebugLogger from 'debug';
|
|
7
7
|
|
|
8
8
|
generateTests({
|
|
9
9
|
callback,
|
|
10
|
-
path: [
|
|
10
|
+
path: [import.meta.dirname, '..', 'test-fixtures', 'fix-relator-terms'],
|
|
11
11
|
useMetadataFile: true,
|
|
12
12
|
recurse: false,
|
|
13
13
|
fixura: {
|
|
14
14
|
reader: READERS.JSON
|
|
15
15
|
},
|
|
16
|
-
|
|
17
|
-
before: () =>
|
|
16
|
+
hooks: {
|
|
17
|
+
before: async () => {
|
|
18
|
+
testValidatorFactory();
|
|
19
|
+
}
|
|
18
20
|
}
|
|
19
21
|
});
|
|
22
|
+
|
|
20
23
|
const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/fixRelatorTerms:test');
|
|
21
24
|
|
|
22
25
|
async function testValidatorFactory() {
|
|
23
26
|
const validator = await validatorFactory();
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
expect(validator.description).to.be.a('string');
|
|
30
|
-
expect(validator.validate).to.be.a('function');
|
|
28
|
+
assert.equal(typeof validator, 'object');
|
|
29
|
+
assert.equal(typeof validator.description, 'string');
|
|
30
|
+
assert.equal(typeof validator.validate, 'function');
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
async function callback({getFixture, enabled = true, fix = false}) {
|
|
@@ -43,10 +43,10 @@ async function callback({getFixture, enabled = true, fix = false}) {
|
|
|
43
43
|
|
|
44
44
|
if (!fix) {
|
|
45
45
|
const result = await validator.validate(record);
|
|
46
|
-
|
|
46
|
+
assert.deepEqual(result, expectedResult);
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
await validator.fix(record);
|
|
51
|
-
|
|
51
|
+
assert.deepEqual(record, expectedResult);
|
|
52
52
|
}
|
|
@@ -1,28 +1,24 @@
|
|
|
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/fixed-fields';
|
|
3
|
+
import validatorFactory from '../src/fixed-fields.js';
|
|
4
|
+
import {describe, it} from 'node:test';
|
|
5
5
|
|
|
6
|
-
const {expect} = chai;
|
|
7
|
-
chai.use(chaiAsPromised);
|
|
8
6
|
|
|
9
7
|
describe('fixed-fields: language', () => {
|
|
10
8
|
it('Creates a validator', async () => {
|
|
11
9
|
const validator = await validatorFactory([]);
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
expect(validator.description).to.be.a('string');
|
|
18
|
-
expect(validator.validate).to.be.a('function');
|
|
11
|
+
assert.equal(typeof validator, 'object');
|
|
12
|
+
assert.equal(typeof validator.description, 'string');
|
|
13
|
+
assert.equal(typeof validator.validate, 'function');
|
|
19
14
|
});
|
|
20
15
|
|
|
21
16
|
it('Throws an error when configuration is not provided', () => {
|
|
22
17
|
try {
|
|
23
18
|
validatorFactory();
|
|
24
19
|
} catch (error) {
|
|
25
|
-
|
|
20
|
+
assert.equal(error instanceof Error, true);
|
|
21
|
+
assert.equal(error.message, 'No configuration provided');
|
|
26
22
|
}
|
|
27
23
|
});
|
|
28
24
|
|
|
@@ -52,7 +48,8 @@ describe('fixed-fields: language', () => {
|
|
|
52
48
|
});
|
|
53
49
|
const result = await validator.validate(record);
|
|
54
50
|
|
|
55
|
-
|
|
51
|
+
assert.equal(typeof result, 'object');
|
|
52
|
+
assert.partialDeepStrictEqual(result, {valid: true});
|
|
56
53
|
});
|
|
57
54
|
|
|
58
55
|
it('Finds the record invalid', async () => {
|
|
@@ -86,7 +83,7 @@ describe('fixed-fields: language', () => {
|
|
|
86
83
|
|
|
87
84
|
const result = await validator.validate(record);
|
|
88
85
|
|
|
89
|
-
|
|
86
|
+
assert.deepEqual(result, {valid: false, messages: [
|
|
90
87
|
'Leader has invalid values at positions: 3 (Rule index 0)',
|
|
91
88
|
'Field FOO has invalid values at positions: 0 (Rule index 0)',
|
|
92
89
|
'Field BAR has invalid values at positions: 1 (Rule index 1)',
|
package/src/identical-fields.js
CHANGED
|
@@ -23,7 +23,7 @@ export default function () {
|
|
|
23
23
|
function fix(record) {
|
|
24
24
|
record.fields
|
|
25
25
|
.filter(tag => !uniqWith(record.fields).includes(tag))
|
|
26
|
-
.forEach(tag => record.removeField(tag));
|
|
26
|
+
.forEach(tag => record.removeField(tag));
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
function uniqWith(fields) {
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
2
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
3
|
-
import validatorFactory from '../src/identical-fields';
|
|
3
|
+
import validatorFactory from '../src/identical-fields.js';
|
|
4
|
+
import {describe, it} from 'node:test';
|
|
4
5
|
|
|
5
6
|
describe('identical-fields', () => {
|
|
6
7
|
it('Creates a validator', async () => {
|
|
7
8
|
const validator = await validatorFactory();
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
expect(validator.description).to.be.a('string');
|
|
14
|
-
expect(validator.validate).to.be.a('function');
|
|
10
|
+
assert.equal(typeof validator, 'object');
|
|
11
|
+
assert.equal(typeof validator.description, 'string');
|
|
12
|
+
assert.equal(typeof validator.validate, 'function');
|
|
15
13
|
});
|
|
16
14
|
|
|
17
15
|
describe('#validate', () => {
|
|
@@ -32,7 +30,7 @@ describe('identical-fields', () => {
|
|
|
32
30
|
});
|
|
33
31
|
const result = await validator.validate(record);
|
|
34
32
|
|
|
35
|
-
|
|
33
|
+
assert.deepEqual(result, {valid: true, messages: []});
|
|
36
34
|
});
|
|
37
35
|
it('Finds the record invalid', async () => {
|
|
38
36
|
const validator = await validatorFactory();
|
|
@@ -80,7 +78,7 @@ describe('identical-fields', () => {
|
|
|
80
78
|
|
|
81
79
|
const result = await validator.validate(record);
|
|
82
80
|
|
|
83
|
-
|
|
81
|
+
assert.deepEqual(result, {valid: false, messages: ['Field 800 has duplicates', 'Field 700 has duplicates']});
|
|
84
82
|
});
|
|
85
83
|
});
|
|
86
84
|
|
|
@@ -111,7 +109,7 @@ describe('identical-fields', () => {
|
|
|
111
109
|
});
|
|
112
110
|
await validator.fix(record);
|
|
113
111
|
|
|
114
|
-
|
|
112
|
+
assert.deepEqual(record.fields, [
|
|
115
113
|
{
|
|
116
114
|
tag: '700',
|
|
117
115
|
ind1: ' ',
|
package/src/index.js
CHANGED
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
import AccessRights from './access-rights';
|
|
2
|
-
import AddMissingField041 from './addMissingField041';
|
|
3
|
-
import AddMissingField336 from './addMissingField336';
|
|
4
|
-
import AddMissingField337 from './addMissingField337';
|
|
5
|
-
import AddMissingField338 from './addMissingField338';
|
|
6
|
-
import Cyrillux from './cyrillux';
|
|
7
|
-
import CyrilluxUsemarconReplacement from './cyrillux-usemarcon-replacement';
|
|
8
|
-
import DisambiguateSeriesStatements from './disambiguateSeriesStatements';
|
|
9
|
-
import DoubleCommas from './double-commas';
|
|
10
|
-
import DuplicatesInd1 from './duplicates-ind1';
|
|
11
|
-
import EmptyFields from './empty-fields';
|
|
12
|
-
import EndingPunctuation from './ending-punctuation';
|
|
13
|
-
import EndingWhitespace from './ending-whitespace';
|
|
14
|
-
import Field008CharacterGroups from './field-008-18-34-character-groups';
|
|
15
|
-
import Field505Separators from './field-505-separators';
|
|
16
|
-
import Field521Fix from './field-521-fix';
|
|
17
|
-
import FieldExclusion from './field-exclusion';
|
|
18
|
-
import FieldStructure from './field-structure';
|
|
19
|
-
import FieldsPresent from './fields-present';
|
|
20
|
-
import Fix33X from './fix-33X';
|
|
21
|
-
import FixCountryCodes from './fix-country-codes';
|
|
22
|
-
import FixLanguageCodes from './fix-language-codes';
|
|
23
|
-
import FixRelatorTerms from './fixRelatorTerms';
|
|
24
|
-
import FixedFields from './fixed-fields';
|
|
25
|
-
import IdenticalFields from './identical-fields';
|
|
26
|
-
import IndicatorFixes from './indicator-fixes';
|
|
27
|
-
import IsbnIssn from './isbn-issn';
|
|
28
|
-
import ItemLanguage from './item-language';
|
|
29
|
-
import MergeField500Lisapainokset from './mergeField500Lisapainokset';
|
|
30
|
-
import MergeFields from './merge-fields/';
|
|
31
|
-
import MergeRelatorTermFields from './mergeRelatorTermFields';
|
|
32
|
-
import Modernize502 from './modernize-502';
|
|
33
|
-
import MultipleSubfield0s from './multiple-subfield-0';
|
|
34
|
-
import NonBreakingSpace from './non-breaking-space';
|
|
35
|
-
import NormalizeDashes from './normalize-dashes';
|
|
36
|
-
import NormalizeIdentifiers from './normalize-identifiers';
|
|
37
|
-
import NormalizeQualifyingInformation from './normalize-qualifying-information';
|
|
38
|
-
import NormalizeUTF8Diacritics from './normalize-utf8-diacritics';
|
|
39
|
-
import Punctuation from './punctuation/';
|
|
40
|
-
import Punctuation2 from './punctuation2';
|
|
41
|
-
import ReindexSubfield6OccurenceNumbers from './reindexSubfield6OccurenceNumbers';
|
|
42
|
-
import RemoveDuplicateDataFields from './removeDuplicateDataFields';
|
|
43
|
-
import RemoveInferiorDataFields from './removeInferiorDataFields';
|
|
44
|
-
import ResolvableExtReferences from './resolvable-ext-references-melinda';
|
|
45
|
-
import ResolveOrphanedSubfield6s from './resolveOrphanedSubfield6s';
|
|
46
|
-
import SanitizeVocabularySourceCodes from './sanitize-vocabulary-source-codes';
|
|
47
|
-
import SortFields from './sortFields';
|
|
48
|
-
import SortRelatorTerms from './sortRelatorTerms';
|
|
49
|
-
import SortSubfields from './sortSubfields';
|
|
50
|
-
import SortTags from './sort-tags';
|
|
1
|
+
import AccessRights from './access-rights.js';
|
|
2
|
+
import AddMissingField041 from './addMissingField041.js';
|
|
3
|
+
import AddMissingField336 from './addMissingField336.js';
|
|
4
|
+
import AddMissingField337 from './addMissingField337.js';
|
|
5
|
+
import AddMissingField338 from './addMissingField338.js';
|
|
6
|
+
import Cyrillux from './cyrillux.js';
|
|
7
|
+
import CyrilluxUsemarconReplacement from './cyrillux-usemarcon-replacement.js';
|
|
8
|
+
import DisambiguateSeriesStatements from './disambiguateSeriesStatements.js';
|
|
9
|
+
import DoubleCommas from './double-commas.js';
|
|
10
|
+
import DuplicatesInd1 from './duplicates-ind1.js';
|
|
11
|
+
import EmptyFields from './empty-fields.js';
|
|
12
|
+
import EndingPunctuation from './ending-punctuation.js';
|
|
13
|
+
import EndingWhitespace from './ending-whitespace.js';
|
|
14
|
+
import Field008CharacterGroups from './field-008-18-34-character-groups.js';
|
|
15
|
+
import Field505Separators from './field-505-separators.js';
|
|
16
|
+
import Field521Fix from './field-521-fix.js';
|
|
17
|
+
import FieldExclusion from './field-exclusion.js';
|
|
18
|
+
import FieldStructure from './field-structure.js';
|
|
19
|
+
import FieldsPresent from './fields-present.js';
|
|
20
|
+
import Fix33X from './fix-33X.js';
|
|
21
|
+
import FixCountryCodes from './fix-country-codes.js';
|
|
22
|
+
import FixLanguageCodes from './fix-language-codes.js';
|
|
23
|
+
import FixRelatorTerms from './fixRelatorTerms.js';
|
|
24
|
+
import FixedFields from './fixed-fields.js';
|
|
25
|
+
import IdenticalFields from './identical-fields.js';
|
|
26
|
+
import IndicatorFixes from './indicator-fixes.js';
|
|
27
|
+
import IsbnIssn from './isbn-issn.js';
|
|
28
|
+
import ItemLanguage from './item-language.js';
|
|
29
|
+
import MergeField500Lisapainokset from './mergeField500Lisapainokset.js';
|
|
30
|
+
import MergeFields from './merge-fields/index.js';
|
|
31
|
+
import MergeRelatorTermFields from './mergeRelatorTermFields.js';
|
|
32
|
+
import Modernize502 from './modernize-502.js';
|
|
33
|
+
import MultipleSubfield0s from './multiple-subfield-0.js';
|
|
34
|
+
import NonBreakingSpace from './non-breaking-space.js';
|
|
35
|
+
import NormalizeDashes from './normalize-dashes.js';
|
|
36
|
+
import NormalizeIdentifiers from './normalize-identifiers.js';
|
|
37
|
+
import NormalizeQualifyingInformation from './normalize-qualifying-information.js';
|
|
38
|
+
import NormalizeUTF8Diacritics from './normalize-utf8-diacritics.js';
|
|
39
|
+
import Punctuation from './punctuation/index.js';
|
|
40
|
+
import Punctuation2 from './punctuation2.js';
|
|
41
|
+
import ReindexSubfield6OccurenceNumbers from './reindexSubfield6OccurenceNumbers.js';
|
|
42
|
+
import RemoveDuplicateDataFields from './removeDuplicateDataFields.js';
|
|
43
|
+
import RemoveInferiorDataFields from './removeInferiorDataFields.js';
|
|
44
|
+
import ResolvableExtReferences from './resolvable-ext-references-melinda.js';
|
|
45
|
+
import ResolveOrphanedSubfield6s from './resolveOrphanedSubfield6s.js';
|
|
46
|
+
import SanitizeVocabularySourceCodes from './sanitize-vocabulary-source-codes.js';
|
|
47
|
+
import SortFields from './sortFields.js';
|
|
48
|
+
import SortRelatorTerms from './sortRelatorTerms.js';
|
|
49
|
+
import SortSubfields from './sortSubfields.js';
|
|
50
|
+
import SortTags from './sort-tags.js';
|
|
51
51
|
// import StripPunctuation from './stripPunctuation'; // Can we add this here? Should be used very cautiosly!
|
|
52
|
-
import SubfieldValueNormalizations from './subfieldValueNormalizations';
|
|
53
|
-
import SubfieldExclusion from './subfield-exclusion';
|
|
54
|
-
import Sync007And300 from './sync-007-and-300';
|
|
55
|
-
import TranslateTerms from './translate-terms';
|
|
56
|
-
import TypeOfDateF008 from './typeOfDate-008';
|
|
57
|
-
import UnicodeDecomposition from './unicode-decomposition';
|
|
58
|
-
import UpdateField540 from './update-field-540';
|
|
59
|
-
import Urn from './urn';
|
|
52
|
+
import SubfieldValueNormalizations from './subfieldValueNormalizations.js';
|
|
53
|
+
import SubfieldExclusion from './subfield-exclusion.js';
|
|
54
|
+
import Sync007And300 from './sync-007-and-300.js';
|
|
55
|
+
import TranslateTerms from './translate-terms.js';
|
|
56
|
+
import TypeOfDateF008 from './typeOfDate-008.js';
|
|
57
|
+
import UnicodeDecomposition from './unicode-decomposition.js';
|
|
58
|
+
import UpdateField540 from './update-field-540.js';
|
|
59
|
+
import Urn from './urn.js';
|
|
60
60
|
|
|
61
61
|
export {
|
|
62
62
|
AccessRights,
|
package/src/indicator-fixes.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
//import createDebugLogger from 'debug';
|
|
3
3
|
//const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda:normalizeIdentifiers');
|
|
4
4
|
|
|
5
|
-
import {fieldToString} from './utils';
|
|
5
|
+
import {fieldToString} from './utils.js';
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
export default function () {
|
|
@@ -35,7 +35,7 @@ export default function () {
|
|
|
35
35
|
const clonedFields = JSON.parse(JSON.stringify(record.fields));
|
|
36
36
|
recordNormalizeIndicators(record);
|
|
37
37
|
|
|
38
|
-
record.fields.forEach((field, index) => compareFields(field, index));
|
|
38
|
+
record.fields.forEach((field, index) => compareFields(field, index));
|
|
39
39
|
|
|
40
40
|
function compareFields(field, index) {
|
|
41
41
|
const origFieldAsString = fieldToString(clonedFields[index]);
|
|
@@ -235,7 +235,7 @@ export function recordNormalizeIndicators(record) {
|
|
|
235
235
|
// Language is used to handle non-filing indicators
|
|
236
236
|
const languages = getLanguages(record);
|
|
237
237
|
|
|
238
|
-
record.fields.forEach(field => fieldNormalizeIndicators(field, record, languages));
|
|
238
|
+
record.fields.forEach(field => fieldNormalizeIndicators(field, record, languages));
|
|
239
239
|
|
|
240
240
|
}
|
|
241
241
|
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
2
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
3
|
-
import validatorFactory from './indicator-fixes';
|
|
3
|
+
import validatorFactory from './indicator-fixes.js';
|
|
4
4
|
import {READERS} from '@natlibfi/fixura';
|
|
5
5
|
import generateTests from '@natlibfi/fixugen';
|
|
6
6
|
import createDebugLogger from 'debug';
|
|
7
7
|
|
|
8
8
|
generateTests({
|
|
9
9
|
callback,
|
|
10
|
-
path: [
|
|
10
|
+
path: [import.meta.dirname, '..', 'test-fixtures', 'indicator-fixes'],
|
|
11
11
|
useMetadataFile: true,
|
|
12
12
|
recurse: false,
|
|
13
13
|
fixura: {
|
|
14
14
|
reader: READERS.JSON
|
|
15
15
|
},
|
|
16
|
-
|
|
16
|
+
hooks: {
|
|
17
17
|
before: () => testValidatorFactory()
|
|
18
18
|
}
|
|
19
19
|
});
|
|
@@ -22,12 +22,9 @@ const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/indica
|
|
|
22
22
|
async function testValidatorFactory() {
|
|
23
23
|
const validator = await validatorFactory();
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
expect(validator.description).to.be.a('string');
|
|
30
|
-
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');
|
|
31
28
|
}
|
|
32
29
|
|
|
33
30
|
async function callback({getFixture, enabled = true, fix = false}) {
|
|
@@ -43,10 +40,10 @@ async function callback({getFixture, enabled = true, fix = false}) {
|
|
|
43
40
|
|
|
44
41
|
if (!fix) {
|
|
45
42
|
const result = await validator.validate(record);
|
|
46
|
-
|
|
43
|
+
assert.deepEqual(result, expectedResult);
|
|
47
44
|
return;
|
|
48
45
|
}
|
|
49
46
|
|
|
50
47
|
await validator.fix(record);
|
|
51
|
-
|
|
48
|
+
assert.deepEqual(record, expectedResult);
|
|
52
49
|
}
|
package/src/isbn-issn.js
CHANGED
|
@@ -173,7 +173,7 @@ export default ({hyphenateISBN = false, handleInvalid = false} = {}) => {
|
|
|
173
173
|
function fix(record) {
|
|
174
174
|
getRelevantFields(record).forEach(field => {
|
|
175
175
|
if (field.tag === '020') {
|
|
176
|
-
field.subfields.forEach(subfield => fixField020Subfield(field, subfield));
|
|
176
|
+
field.subfields.forEach(subfield => fixField020Subfield(field, subfield));
|
|
177
177
|
return;
|
|
178
178
|
}
|
|
179
179
|
// 022 ISSN:
|