@natlibfi/marc-record-validators-melinda 11.6.7-alpha.1 → 12.0.0-alpha.1
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/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,7 +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/subfield-exclusion';
|
|
3
|
+
import validatorFactory from '../src/subfield-exclusion.js';
|
|
4
|
+
import {describe, it} from 'node:test';
|
|
5
5
|
|
|
6
6
|
//chai.use(chaiAsPromised);
|
|
7
7
|
|
|
@@ -17,12 +17,9 @@ describe('subfield-exclusion', () => {
|
|
|
17
17
|
];
|
|
18
18
|
|
|
19
19
|
const validator = await validatorFactory(config);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
expect(validator.description).to.be.a('string');
|
|
25
|
-
expect(validator.validate).to.be.a('function');
|
|
20
|
+
assert.equal(typeof validator, 'object');
|
|
21
|
+
assert.equal(typeof validator.description, 'string');
|
|
22
|
+
assert.equal(typeof validator.validate, 'function');
|
|
26
23
|
});
|
|
27
24
|
|
|
28
25
|
it('Creates a validator from complex config', async () => {
|
|
@@ -40,12 +37,9 @@ describe('subfield-exclusion', () => {
|
|
|
40
37
|
];
|
|
41
38
|
|
|
42
39
|
const validator = await validatorFactory(config);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
expect(validator.description).to.be.a('string');
|
|
48
|
-
expect(validator.validate).to.be.a('function');
|
|
40
|
+
assert.equal(typeof validator, 'object');
|
|
41
|
+
assert.equal(typeof validator.description, 'string');
|
|
42
|
+
assert.equal(typeof validator.validate, 'function');
|
|
49
43
|
});
|
|
50
44
|
|
|
51
45
|
it('Fails to create a validator from invalid config - subfields missing', () => {
|
|
@@ -58,7 +52,8 @@ describe('subfield-exclusion', () => {
|
|
|
58
52
|
try {
|
|
59
53
|
validatorFactory(config);
|
|
60
54
|
} catch (error) {
|
|
61
|
-
|
|
55
|
+
assert.equal(error instanceof Error, true);
|
|
56
|
+
assert.equal(error.message, 'Configuration not valid - missing mandatory element: subfields');
|
|
62
57
|
}
|
|
63
58
|
});
|
|
64
59
|
|
|
@@ -73,7 +68,8 @@ describe('subfield-exclusion', () => {
|
|
|
73
68
|
try {
|
|
74
69
|
validatorFactory(config);
|
|
75
70
|
} catch (error) {
|
|
76
|
-
|
|
71
|
+
assert.equal(error instanceof Error, true);
|
|
72
|
+
assert.equal(error.message, 'Configuration not valid - invalid data type for: tag');
|
|
77
73
|
}
|
|
78
74
|
});
|
|
79
75
|
|
|
@@ -86,7 +82,8 @@ describe('subfield-exclusion', () => {
|
|
|
86
82
|
try {
|
|
87
83
|
validatorFactory(config);
|
|
88
84
|
} catch (error) {
|
|
89
|
-
|
|
85
|
+
assert.equal(error instanceof Error, true);
|
|
86
|
+
assert.equal(error.message, 'Configuration array not provided');
|
|
90
87
|
}
|
|
91
88
|
});
|
|
92
89
|
|
|
@@ -101,7 +98,8 @@ describe('subfield-exclusion', () => {
|
|
|
101
98
|
try {
|
|
102
99
|
validatorFactory(config);
|
|
103
100
|
} catch (error) {
|
|
104
|
-
|
|
101
|
+
assert.equal(error instanceof Error, true);
|
|
102
|
+
assert.equal(error.message, 'Configuration not valid - invalid data type for: code');
|
|
105
103
|
}
|
|
106
104
|
});
|
|
107
105
|
|
|
@@ -116,7 +114,8 @@ describe('subfield-exclusion', () => {
|
|
|
116
114
|
try {
|
|
117
115
|
validatorFactory(config);
|
|
118
116
|
} catch (error) {
|
|
119
|
-
|
|
117
|
+
assert.equal(error instanceof Error, true);
|
|
118
|
+
assert.equal(error.message, 'Configuration not valid - invalid data type for: value');
|
|
120
119
|
}
|
|
121
120
|
});
|
|
122
121
|
|
|
@@ -132,7 +131,8 @@ describe('subfield-exclusion', () => {
|
|
|
132
131
|
try {
|
|
133
132
|
validatorFactory(config);
|
|
134
133
|
} catch (error) {
|
|
135
|
-
|
|
134
|
+
assert.equal(error instanceof Error, true);
|
|
135
|
+
assert.equal(error.message, 'Configuration not valid - missing mandatory element: tag');
|
|
136
136
|
}
|
|
137
137
|
});
|
|
138
138
|
|
|
@@ -150,7 +150,8 @@ describe('subfield-exclusion', () => {
|
|
|
150
150
|
try {
|
|
151
151
|
validatorFactory(config);
|
|
152
152
|
} catch (error) {
|
|
153
|
-
|
|
153
|
+
assert.equal(error instanceof Error, true);
|
|
154
|
+
assert.equal(error.message, 'Configuration not valid - subfield: /9/,/^(?!FENNI<KEEP>).*$/ not object');
|
|
154
155
|
}
|
|
155
156
|
});
|
|
156
157
|
|
|
@@ -169,7 +170,8 @@ describe('subfield-exclusion', () => {
|
|
|
169
170
|
try {
|
|
170
171
|
validatorFactory(config);
|
|
171
172
|
} catch (error) {
|
|
172
|
-
|
|
173
|
+
assert.equal(error instanceof Error, true);
|
|
174
|
+
assert.equal(error.message, 'Configuration not valid - subfield: /9/ not object');
|
|
173
175
|
}
|
|
174
176
|
});
|
|
175
177
|
|
|
@@ -187,7 +189,8 @@ describe('subfield-exclusion', () => {
|
|
|
187
189
|
try {
|
|
188
190
|
validatorFactory(config);
|
|
189
191
|
} catch (error) {
|
|
190
|
-
|
|
192
|
+
assert.equal(error instanceof Error, true);
|
|
193
|
+
assert.equal(error.message, 'Configuration not valid - missing mandatory element: code');
|
|
191
194
|
}
|
|
192
195
|
});
|
|
193
196
|
|
|
@@ -206,7 +209,9 @@ describe('subfield-exclusion', () => {
|
|
|
206
209
|
try {
|
|
207
210
|
validatorFactory(config);
|
|
208
211
|
} catch (error) {
|
|
209
|
-
|
|
212
|
+
assert.equal(error instanceof Error, true);
|
|
213
|
+
assert.equal(error.message, 'Configuration not valid - unidentified value: unidentified');
|
|
214
|
+
//assert(error).to.be.an('error').with.property('message', 'Configuration not valid - unidentified value: unidentified');
|
|
210
215
|
}
|
|
211
216
|
});
|
|
212
217
|
});
|
|
@@ -277,19 +282,20 @@ describe('subfield-exclusion', () => {
|
|
|
277
282
|
it('Finds the record valid (spec)', async () => {
|
|
278
283
|
const validator = await validatorFactory(config);
|
|
279
284
|
const result = await validator.validate(recordValid);
|
|
280
|
-
|
|
285
|
+
assert.deepEqual(result, {valid: true, message: []});
|
|
281
286
|
});
|
|
282
287
|
|
|
283
288
|
it('Finds the record invalid (spec)', async () => {
|
|
284
289
|
const validator = await validatorFactory(config);
|
|
285
290
|
const result = await validator.validate(recordInvalid);
|
|
286
|
-
|
|
291
|
+
assert.deepEqual(result, {valid: false, message: ['Subfield $100$$4should be excluded']});
|
|
287
292
|
});
|
|
288
293
|
|
|
289
294
|
it('Repairs invalid record', async () => {
|
|
290
295
|
const validator = await validatorFactory(config);
|
|
291
296
|
await validator.fix(recordInvalid);
|
|
292
|
-
|
|
297
|
+
//assert(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);
|
|
298
|
+
assert(recordInvalid.equalsTo(recordInvalidFixed), true);
|
|
293
299
|
});
|
|
294
300
|
});
|
|
295
301
|
|
|
@@ -334,13 +340,14 @@ describe('subfield-exclusion', () => {
|
|
|
334
340
|
it('Finds the record with 041$a zxx invalid (spec)', async () => {
|
|
335
341
|
const validator = await validatorFactory(config);
|
|
336
342
|
const result = await validator.validate(recordOriginal);
|
|
337
|
-
|
|
343
|
+
assert.deepEqual(result, {valid: false, message: ['Subfield $041$$ashould be excluded']});
|
|
338
344
|
});
|
|
339
345
|
|
|
340
346
|
it('Repairs invalid record', async () => {
|
|
341
347
|
const validator = await validatorFactory(config);
|
|
342
348
|
await validator.fix(recordOriginal);
|
|
343
|
-
|
|
349
|
+
//assert(recordOriginal.equalsTo(recordModified)).to.eql(true);
|
|
350
|
+
assert.equal(recordOriginal.equalsTo(recordModified), true);
|
|
344
351
|
});
|
|
345
352
|
});
|
|
346
353
|
|
|
@@ -411,19 +418,20 @@ describe('subfield-exclusion', () => {
|
|
|
411
418
|
it('Finds the record valid (spec)', async () => {
|
|
412
419
|
const validator = await validatorFactory(config);
|
|
413
420
|
const result = await validator.validate(recordValid);
|
|
414
|
-
|
|
421
|
+
assert.deepEqual(result, {valid: true, message: []});
|
|
415
422
|
});
|
|
416
423
|
|
|
417
424
|
it('Finds the record invalid (spec)', async () => {
|
|
418
425
|
const validator = await validatorFactory(config);
|
|
419
426
|
const result = await validator.validate(recordInvalid);
|
|
420
|
-
|
|
427
|
+
assert.deepEqual(result, {valid: false, message: ['Subfield $210$$2should be excluded']});
|
|
421
428
|
});
|
|
422
429
|
|
|
423
430
|
it('Repairs invalid record', async () => {
|
|
424
431
|
const validator = await validatorFactory(config);
|
|
425
432
|
await validator.fix(recordInvalid);
|
|
426
|
-
|
|
433
|
+
// assert(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);
|
|
434
|
+
assert.equal(recordInvalid.equalsTo(recordInvalidFixed), true);
|
|
427
435
|
});
|
|
428
436
|
});
|
|
429
437
|
|
|
@@ -496,19 +504,20 @@ describe('subfield-exclusion', () => {
|
|
|
496
504
|
it('Finds the record valid - Ind1&Ind2', async () => {
|
|
497
505
|
const validator = await validatorFactory(configInd);
|
|
498
506
|
const result = await validator.validate(recordValid);
|
|
499
|
-
|
|
507
|
+
assert.deepEqual(result, {valid: true, message: []});
|
|
500
508
|
});
|
|
501
509
|
|
|
502
510
|
it('Finds the record invalid - Ind', async () => {
|
|
503
511
|
const validator = await validatorFactory(configInd);
|
|
504
512
|
const result = await validator.validate(recordIndInvalid);
|
|
505
|
-
|
|
513
|
+
assert.deepEqual(result, {valid: false, message: ['Subfield $500$$2should be excluded']});
|
|
506
514
|
});
|
|
507
515
|
|
|
508
516
|
it('Repairs invalid record', async () => {
|
|
509
517
|
const validator = await validatorFactory(configInd);
|
|
510
518
|
await validator.fix(recordIndInvalid);
|
|
511
|
-
|
|
519
|
+
// assert(recordIndInvalid.equalsTo(recordIndInvalidFixed)).to.eql(true);
|
|
520
|
+
assert.equal(recordIndInvalid.equalsTo(recordIndInvalidFixed), true);
|
|
512
521
|
});
|
|
513
522
|
});
|
|
514
523
|
});
|
package/src/subfield6Utils.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import createDebugLogger from 'debug';
|
|
2
2
|
// const debug = createDebugLogger('@natlibfi/marc-record-validator-melinda/subfield6Utils');
|
|
3
3
|
|
|
4
|
-
import {add8s, fieldsGetAllSubfield8LinkingNumbers, getSubfield8LinkingNumber, isValidSubfield8} from './subfield8Utils';
|
|
5
|
-
import {fieldHasSubfield, fieldToString, fieldsToString, nvdebug, subfieldToString} from './utils';
|
|
4
|
+
import {add8s, fieldsGetAllSubfield8LinkingNumbers, getSubfield8LinkingNumber, isValidSubfield8} from './subfield8Utils.js';
|
|
5
|
+
import {fieldHasSubfield, fieldToString, fieldsToString, nvdebug, subfieldToString} from './utils.js';
|
|
6
6
|
|
|
7
7
|
const debug = createDebugLogger('@natlibfi/melinda-marc-record-merge-reducers:subfield6Utils');
|
|
8
8
|
//const debugData = debug.extend('data');
|
|
@@ -99,7 +99,7 @@ export function fieldHasOccurrenceNumber(field, occurrenceNumber) {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
export function fieldResetOccurrenceNumber(field, newOccurrenceNumber, oldOccurrenceNumber = undefined) {
|
|
102
|
-
field.subfields.forEach(subfield => innerReset(subfield));
|
|
102
|
+
field.subfields.forEach(subfield => innerReset(subfield));
|
|
103
103
|
|
|
104
104
|
function innerReset(subfield) {
|
|
105
105
|
// (Optional) Check that this is really the occurrence number we wan't to reseot
|
|
@@ -210,7 +210,7 @@ export function fieldSevenToOneOccurrenceNumber(field) {
|
|
|
210
210
|
if (field.tag !== '880') {
|
|
211
211
|
return;
|
|
212
212
|
}
|
|
213
|
-
field.subfields.forEach(sf => subfieldSevenToOneOccurrenceNumber(sf));
|
|
213
|
+
field.subfields.forEach(sf => subfieldSevenToOneOccurrenceNumber(sf));
|
|
214
214
|
}
|
|
215
215
|
|
|
216
216
|
|
|
@@ -223,12 +223,11 @@ export function fieldGetOccurrenceNumberPairs(field, candFields) {
|
|
|
223
223
|
return pairs;
|
|
224
224
|
}
|
|
225
225
|
nvdebug(`${pairs.length} PAIR(S) FOUND FOR '${fieldToString(field)}'`);
|
|
226
|
-
pairs.forEach(pairedField => nvdebug(` '${fieldToString(pairedField)}'`));
|
|
226
|
+
pairs.forEach(pairedField => nvdebug(` '${fieldToString(pairedField)}'`));
|
|
227
227
|
return pairs;
|
|
228
228
|
}
|
|
229
229
|
|
|
230
230
|
export function fieldGetOccurrenceNumbers(field) {
|
|
231
|
-
/* eslint-disable */
|
|
232
231
|
let occurrenceNumbers = [];
|
|
233
232
|
field.subfields?.forEach(sf => subfieldExtractOccurrenceNumber(sf));
|
|
234
233
|
|
|
@@ -242,12 +241,10 @@ export function fieldGetOccurrenceNumbers(field) {
|
|
|
242
241
|
}
|
|
243
242
|
occurrenceNumbers.push(occurrenceNumber);
|
|
244
243
|
}
|
|
245
|
-
/* eslint-enable */
|
|
246
244
|
return occurrenceNumbers;
|
|
247
245
|
}
|
|
248
246
|
|
|
249
247
|
export function fieldsGetOccurrenceNumbers(fields) {
|
|
250
|
-
/* eslint-disable */
|
|
251
248
|
let occurrenceNumbers = [];
|
|
252
249
|
|
|
253
250
|
fields.forEach(f => fieldProcessOccurrenceNumbers(f));
|
|
@@ -261,7 +258,6 @@ export function fieldsGetOccurrenceNumbers(fields) {
|
|
|
261
258
|
|
|
262
259
|
});
|
|
263
260
|
}
|
|
264
|
-
/* eslint-enable */
|
|
265
261
|
return occurrenceNumbers;
|
|
266
262
|
}
|
|
267
263
|
|
|
@@ -482,7 +478,7 @@ export function get6s(field, candidateFields) { // NB! Convert field to fields!!
|
|
|
482
478
|
|
|
483
479
|
const relevantFields = candidateFields.filter(f => occurrenceNumbers.some(o => fieldHasOccurrenceNumber(f, o)));
|
|
484
480
|
nvdebug(`${fieldToString(field)}: $6-RELFIELDS FOUND: ${relevantFields.length}...`);
|
|
485
|
-
relevantFields.forEach(f => nvdebug(fieldToString(f)));
|
|
481
|
+
relevantFields.forEach(f => nvdebug(fieldToString(f)));
|
|
486
482
|
return relevantFields;
|
|
487
483
|
}
|
|
488
484
|
|
package/src/subfield8Utils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// import createDebugLogger from 'debug';
|
|
2
2
|
// const debug = createDebugLogger('@natlibfi/marc-record-validator-melinda/subfield8Utils');
|
|
3
3
|
|
|
4
|
-
import {fieldToString, nvdebug} from './utils';
|
|
4
|
+
import {fieldToString, nvdebug} from './utils.js';
|
|
5
5
|
|
|
6
6
|
const sf8Regexp = /^([1-9][0-9]*)(?:\.[0-9]+)?(?:\\[acprux])?$/u;
|
|
7
7
|
|
|
@@ -77,9 +77,9 @@ export function add8s(fields, record) {
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
nvdebug(`Linking number(s): ${linkingNumbers.join(', ')}`);
|
|
80
|
-
linkingNumbers.forEach(number => collectLinkingNumberFields(number));
|
|
80
|
+
linkingNumbers.forEach(number => collectLinkingNumberFields(number));
|
|
81
81
|
|
|
82
|
-
fields.forEach(f => nvdebug(`AFTER ADDING 8s: '${fieldToString(f)}'`));
|
|
82
|
+
fields.forEach(f => nvdebug(`AFTER ADDING 8s: '${fieldToString(f)}'`));
|
|
83
83
|
|
|
84
84
|
return fields;
|
|
85
85
|
|
|
@@ -88,7 +88,7 @@ export function add8s(fields, record) {
|
|
|
88
88
|
fields = fields.filter(f => !fieldHasLinkingNumber(f, linkingNumber));
|
|
89
89
|
// Add them and their "sisters" back:
|
|
90
90
|
const addableFields = record.fields.filter(f => fieldHasLinkingNumber(f, linkingNumber));
|
|
91
|
-
addableFields.forEach(f => nvdebug(`(RE-?)ADD ${fieldToString(f)}`));
|
|
91
|
+
addableFields.forEach(f => nvdebug(`(RE-?)ADD ${fieldToString(f)}`));
|
|
92
92
|
fields = fields.concat(addableFields);
|
|
93
93
|
|
|
94
94
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
//import createDebugLogger from 'debug';
|
|
2
2
|
import clone from 'clone';
|
|
3
|
-
import {fieldHasSubfield, fieldToString, getCatalogingLanguage} from './utils';
|
|
4
|
-
import {fieldFixPunctuation} from './punctuation2';
|
|
5
|
-
import {fieldGetUnambiguousTag} from './subfield6Utils';
|
|
3
|
+
import {fieldHasSubfield, fieldToString, getCatalogingLanguage} from './utils.js';
|
|
4
|
+
import {fieldFixPunctuation} from './punctuation2.js';
|
|
5
|
+
import {fieldGetUnambiguousTag} from './subfield6Utils.js';
|
|
6
6
|
|
|
7
7
|
// NB! You should probably run punctuation fixes after this validator!
|
|
8
8
|
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
2
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
3
|
-
import validatorFactory from './subfieldValueNormalizations';
|
|
3
|
+
import validatorFactory from './subfieldValueNormalizations.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', 'normalize-subfield-value'],
|
|
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/subfieldValueNormalizations: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, 'string');
|
|
30
|
+
assert.equal(typeof validator, 'function');
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
async function callback({getFixture, enabled = true, fix = false}) {
|
|
@@ -37,16 +37,20 @@ async function callback({getFixture, enabled = true, fix = false}) {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
const validator = await validatorFactory();
|
|
40
|
-
|
|
40
|
+
|
|
41
|
+
const recordFixture = getFixture('record.json');
|
|
42
|
+
|
|
43
|
+
const record = recordFixture._validationOptions ? new MarcRecord(recordFixture, recordFixture._validationOptions) : new MarcRecord(recordFixture);
|
|
44
|
+
//const record = new MarcRecord(recordFixture, {"subfields": false}); // works
|
|
41
45
|
const expectedResult = getFixture('expectedResult.json');
|
|
42
46
|
// console.log(expectedResult); // eslint-disable-line
|
|
43
47
|
|
|
44
48
|
if (!fix) {
|
|
45
49
|
const result = await validator.validate(record);
|
|
46
|
-
|
|
50
|
+
assert.deepEqual(result, expectedResult);
|
|
47
51
|
return;
|
|
48
52
|
}
|
|
49
53
|
|
|
50
54
|
await validator.fix(record);
|
|
51
|
-
|
|
55
|
+
assert.deepEqual(record, expectedResult);
|
|
52
56
|
}
|
package/src/sync-007-and-300.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//import createDebugLogger from 'debug';
|
|
2
|
-
import {fieldToString} from './utils';
|
|
2
|
+
import {fieldToString} from './utils.js';
|
|
3
3
|
import clone from 'clone';
|
|
4
4
|
|
|
5
5
|
//const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/sanitize-vocabulary-source-codes);
|
|
@@ -14,7 +14,7 @@ export default function () {
|
|
|
14
14
|
|
|
15
15
|
function fix(record) {
|
|
16
16
|
const res = {message: [], fix: [], valid: true};
|
|
17
|
-
record.fields.forEach(f => fixField(f, record));
|
|
17
|
+
record.fields.forEach(f => fixField(f, record));
|
|
18
18
|
return res;
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
2
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
3
|
-
import validatorFactory from './sync-007-and-300';
|
|
3
|
+
import validatorFactory from './sync-007-and-300.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', 'sync-007-and-300'],
|
|
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
|
}
|
|
21
|
+
|
|
19
22
|
});
|
|
20
23
|
const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/sync-007-and-300: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
|
}
|
package/src/translate-terms.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import clone from 'clone';
|
|
2
2
|
import createDebugLogger from 'debug';
|
|
3
|
-
import {fieldHasSubfield, fieldToString, nvdebug} from './utils';
|
|
3
|
+
import {fieldHasSubfield, fieldToString, nvdebug} from './utils.js';
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda:translate-terms');
|
|
@@ -23,9 +23,9 @@ export default function () {
|
|
|
23
23
|
async function fix(record) {
|
|
24
24
|
const newFields = await getFields(record, defaultTags, []);
|
|
25
25
|
|
|
26
|
-
newFields.forEach(nf => nvdebug(`Add new field '${fieldToString(nf)}'`, debug));
|
|
26
|
+
newFields.forEach(nf => nvdebug(`Add new field '${fieldToString(nf)}'`, debug));
|
|
27
27
|
|
|
28
|
-
newFields.forEach(nf => record.insertField(nf));
|
|
28
|
+
newFields.forEach(nf => record.insertField(nf));
|
|
29
29
|
|
|
30
30
|
const newFieldsAsStrings = newFields.map(f => fieldToString(f));
|
|
31
31
|
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
2
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
3
|
-
import validatorFactory from './translate-terms';
|
|
3
|
+
import validatorFactory from './translate-terms.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', 'translate-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/translate-terms: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,20 +1,22 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
2
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
3
|
-
import validatorFactory from './typeOfDate-008';
|
|
3
|
+
import validatorFactory from './typeOfDate-008.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', 'typeOfDate-008'],
|
|
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/typeOfDate-008:test'); // eslint-disable-line
|
|
@@ -22,12 +24,9 @@ const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/typeOf
|
|
|
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, fix = false}) {
|
|
@@ -38,10 +37,10 @@ async function callback({getFixture, fix = false}) {
|
|
|
38
37
|
|
|
39
38
|
if (!fix) {
|
|
40
39
|
const result = await validator.validate(record);
|
|
41
|
-
|
|
40
|
+
assert.deepEqual(result, expectedResult);
|
|
42
41
|
return;
|
|
43
42
|
}
|
|
44
43
|
|
|
45
44
|
await validator.fix(record);
|
|
46
|
-
|
|
45
|
+
assert.deepEqual(record, expectedResult);
|
|
47
46
|
}
|