@natlibfi/marc-record-validators-melinda 11.6.7 → 12.0.0-alpha.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/{melinda-node-tests.yml → melinda-node-tests-and-publish.yml} +37 -12
- package/dist/access-rights.js +63 -91
- package/dist/access-rights.js.map +7 -1
- package/dist/access-rights.test.js +137 -0
- package/dist/access-rights.test.js.map +7 -0
- package/dist/addMissingField041.js +21 -53
- package/dist/addMissingField041.js.map +7 -1
- package/dist/addMissingField041.test.js +39 -0
- package/dist/addMissingField041.test.js.map +7 -0
- package/dist/addMissingField336.js +99 -191
- package/dist/addMissingField336.js.map +7 -1
- package/dist/addMissingField336.test.js +39 -0
- package/dist/addMissingField336.test.js.map +7 -0
- package/dist/addMissingField337.js +63 -132
- package/dist/addMissingField337.js.map +7 -1
- package/dist/addMissingField337.test.js +39 -0
- package/dist/addMissingField337.test.js.map +7 -0
- package/dist/addMissingField338.js +147 -253
- package/dist/addMissingField338.js.map +7 -1
- package/dist/addMissingField338.test.js +39 -0
- package/dist/addMissingField338.test.js.map +7 -0
- package/dist/cyrillux-usemarcon-replacement.js +119 -272
- package/dist/cyrillux-usemarcon-replacement.js.map +7 -1
- package/dist/cyrillux-usemarcon-replacement.test.js +43 -0
- package/dist/cyrillux-usemarcon-replacement.test.js.map +7 -0
- package/dist/cyrillux.js +119 -223
- package/dist/cyrillux.js.map +7 -1
- package/dist/cyrillux.test.js +39 -0
- package/dist/cyrillux.test.js.map +7 -0
- package/dist/disambiguateSeriesStatements.js +40 -81
- package/dist/disambiguateSeriesStatements.js.map +7 -1
- package/dist/disambiguateSeriesStatements.test.js +44 -0
- package/dist/disambiguateSeriesStatements.test.js.map +7 -0
- package/dist/double-commas.js +7 -14
- package/dist/double-commas.js.map +7 -1
- package/dist/double-commas.test.js +48 -0
- package/dist/double-commas.test.js.map +7 -0
- package/dist/duplicates-ind1.js +10 -31
- package/dist/duplicates-ind1.js.map +7 -1
- package/dist/duplicates-ind1.test.js +40 -0
- package/dist/duplicates-ind1.test.js.map +7 -0
- package/dist/empty-fields.js +10 -22
- package/dist/empty-fields.js.map +7 -1
- package/dist/empty-fields.test.js +129 -0
- package/dist/empty-fields.test.js.map +7 -0
- package/dist/ending-punctuation-conf.js +873 -769
- package/dist/ending-punctuation-conf.js.map +7 -1
- package/dist/ending-punctuation.js +156 -169
- package/dist/ending-punctuation.js.map +7 -1
- package/dist/ending-punctuation.test.js +2385 -0
- package/dist/ending-punctuation.test.js.map +7 -0
- package/dist/ending-whitespace.js +10 -35
- package/dist/ending-whitespace.js.map +7 -1
- package/dist/ending-whitespace.test.js +38 -0
- package/dist/ending-whitespace.test.js.map +7 -0
- package/dist/field-008-18-34-character-groups.js +40 -125
- package/dist/field-008-18-34-character-groups.js.map +7 -1
- package/dist/field-008-18-34-character-groups.test.js +45 -0
- package/dist/field-008-18-34-character-groups.test.js.map +7 -0
- package/dist/field-505-separators.js +19 -39
- package/dist/field-505-separators.js.map +7 -1
- package/dist/field-505-separators.test.js +45 -0
- package/dist/field-505-separators.test.js.map +7 -0
- package/dist/field-521-fix.js +19 -47
- package/dist/field-521-fix.js.map +7 -1
- package/dist/field-521-fix.test.js +44 -0
- package/dist/field-521-fix.test.js.map +7 -0
- package/dist/field-exclusion.js +37 -91
- package/dist/field-exclusion.js.map +7 -1
- package/dist/field-exclusion.test.js +821 -0
- package/dist/field-exclusion.test.js.map +7 -0
- package/dist/field-structure.js +52 -104
- package/dist/field-structure.js.map +7 -1
- package/dist/field-structure.test.js +587 -0
- package/dist/field-structure.test.js.map +7 -0
- package/dist/field33XUtils.js +119 -503
- package/dist/field33XUtils.js.map +7 -1
- package/dist/fields-present.js +11 -23
- package/dist/fields-present.js.map +7 -1
- package/dist/fields-present.test.js +95 -0
- package/dist/fields-present.test.js.map +7 -0
- package/dist/fix-33X.js +393 -431
- package/dist/fix-33X.js.map +7 -1
- package/dist/fix-33X.test.js +39 -0
- package/dist/fix-33X.test.js.map +7 -0
- package/dist/fix-country-codes.js +20 -50
- package/dist/fix-country-codes.js.map +7 -1
- package/dist/fix-country-codes.test.js +44 -0
- package/dist/fix-country-codes.test.js.map +7 -0
- package/dist/fix-language-codes.js +23 -53
- package/dist/fix-language-codes.js.map +7 -1
- package/dist/fix-language-codes.test.js +38 -0
- package/dist/fix-language-codes.test.js.map +7 -0
- package/dist/fixRelatorTerms.js +82 -209
- package/dist/fixRelatorTerms.js.map +7 -1
- package/dist/fixRelatorTerms.test.js +44 -0
- package/dist/fixRelatorTerms.test.js.map +7 -0
- package/dist/fixed-fields.js +21 -30
- package/dist/fixed-fields.js.map +7 -1
- package/dist/fixed-fields.test.js +87 -0
- package/dist/fixed-fields.test.js.map +7 -0
- package/dist/identical-fields.js +8 -24
- package/dist/identical-fields.js.map +7 -1
- package/dist/identical-fields.test.js +119 -0
- package/dist/identical-fields.test.js.map +7 -0
- package/dist/index.js +182 -413
- package/dist/index.js.map +7 -1
- package/dist/indicator-fixes.js +66 -94
- package/dist/indicator-fixes.js.map +7 -1
- package/dist/indicator-fixes.test.js +42 -0
- package/dist/indicator-fixes.test.js.map +7 -0
- package/dist/isbn-issn.js +71 -128
- package/dist/isbn-issn.js.map +7 -1
- package/dist/isbn-issn.test.js +398 -0
- package/dist/isbn-issn.test.js.map +7 -0
- package/dist/item-language.js +32 -65
- package/dist/item-language.js.map +7 -1
- package/dist/item-language.test.js +322 -0
- package/dist/item-language.test.js.map +7 -0
- package/dist/melindaCustomMergeFields.js +5182 -11233
- package/dist/melindaCustomMergeFields.js.map +7 -1
- package/dist/merge-fields/controlSubfields.js +75 -142
- package/dist/merge-fields/controlSubfields.js.map +7 -1
- package/dist/merge-fields/counterpartField.js +187 -379
- package/dist/merge-fields/counterpartField.js.map +7 -1
- package/dist/merge-fields/dataProvenance.js +29 -0
- package/dist/merge-fields/dataProvenance.js.map +7 -0
- package/dist/merge-fields/index.js +25 -50
- package/dist/merge-fields/index.js.map +7 -1
- package/dist/merge-fields/mergableIndicator.js +18 -51
- package/dist/merge-fields/mergableIndicator.js.map +7 -1
- package/dist/merge-fields/mergableTag.js +78 -30
- package/dist/merge-fields/mergableTag.js.map +7 -1
- package/dist/merge-fields/mergeConfig.js +66 -171
- package/dist/merge-fields/mergeConfig.js.map +7 -1
- package/dist/merge-fields/mergeConstraints.js +323 -1214
- package/dist/merge-fields/mergeConstraints.js.map +7 -1
- package/dist/merge-fields/mergeField.js +47 -111
- package/dist/merge-fields/mergeField.js.map +7 -1
- package/dist/merge-fields/mergeIndicator.js +64 -118
- package/dist/merge-fields/mergeIndicator.js.map +7 -1
- package/dist/merge-fields/mergeOrAddPostprocess.js +14 -38
- package/dist/merge-fields/mergeOrAddPostprocess.js.map +7 -1
- package/dist/merge-fields/mergeOrAddSubfield.js +62 -104
- package/dist/merge-fields/mergeOrAddSubfield.js.map +7 -1
- package/dist/merge-fields/mergeSubfield.js +47 -95
- package/dist/merge-fields/mergeSubfield.js.map +7 -1
- package/dist/merge-fields/removeDuplicateSubfields.js +18 -31
- package/dist/merge-fields/removeDuplicateSubfields.js.map +7 -1
- package/dist/merge-fields/worldKnowledge.js +15 -40
- package/dist/merge-fields/worldKnowledge.js.map +7 -1
- package/dist/merge-fields.test.js +46 -0
- package/dist/merge-fields.test.js.map +7 -0
- package/dist/mergeField500Lisapainokset.js +27 -56
- package/dist/mergeField500Lisapainokset.js.map +7 -1
- package/dist/mergeField500Lisapainokset.test.js +44 -0
- package/dist/mergeField500Lisapainokset.test.js.map +7 -0
- package/dist/mergeRelatorTermFields.js +33 -69
- package/dist/mergeRelatorTermFields.js.map +7 -1
- package/dist/mergeRelatorTermFields.test.js +44 -0
- package/dist/mergeRelatorTermFields.test.js.map +7 -0
- package/dist/modernize-502.js +23 -55
- package/dist/modernize-502.js.map +7 -1
- package/dist/modernize-502.test.js +38 -0
- package/dist/modernize-502.test.js.map +7 -0
- package/dist/multiple-subfield-0.js +23 -48
- package/dist/multiple-subfield-0.js.map +7 -1
- package/dist/multiple-subfield-0.test.js +44 -0
- package/dist/multiple-subfield-0.test.js.map +7 -0
- package/dist/non-breaking-space.js +11 -32
- package/dist/non-breaking-space.js.map +7 -1
- package/dist/non-breaking-space.test.js +38 -0
- package/dist/non-breaking-space.test.js.map +7 -0
- package/dist/normalize-dashes.js +18 -37
- package/dist/normalize-dashes.js.map +7 -1
- package/dist/normalize-dashes.test.js +44 -0
- package/dist/normalize-dashes.test.js.map +7 -0
- package/dist/normalize-identifiers.js +54 -140
- package/dist/normalize-identifiers.js.map +7 -1
- package/dist/normalize-identifiers.test.js +44 -0
- package/dist/normalize-identifiers.test.js.map +7 -0
- package/dist/normalize-qualifying-information.js +23 -48
- package/dist/normalize-qualifying-information.js.map +7 -1
- package/dist/normalize-qualifying-information.test.js +44 -0
- package/dist/normalize-qualifying-information.test.js.map +7 -0
- package/dist/normalize-utf8-diacritics.js +19 -105
- package/dist/normalize-utf8-diacritics.js.map +7 -1
- package/dist/normalize-utf8-diacritics.test.js +44 -0
- package/dist/normalize-utf8-diacritics.test.js.map +7 -0
- package/dist/normalizeFieldForComparison.js +91 -158
- package/dist/normalizeFieldForComparison.js.map +7 -1
- package/dist/normalizeSubfieldValueForComparison.js +37 -77
- package/dist/normalizeSubfieldValueForComparison.js.map +7 -1
- package/dist/prepublicationUtils.js +58 -111
- package/dist/prepublicationUtils.js.map +7 -1
- package/dist/punctuation/index.js +56 -72
- package/dist/punctuation/index.js.map +7 -1
- package/dist/punctuation/rules/aut.js +372 -331
- package/dist/punctuation/rules/aut.js.map +7 -1
- package/dist/punctuation/rules/bib.js +420 -373
- package/dist/punctuation/rules/bib.js.map +7 -1
- package/dist/punctuation/rules/index.js +7 -21
- package/dist/punctuation/rules/index.js.map +7 -1
- package/dist/punctuation.test.js +44 -0
- package/dist/punctuation.test.js.map +7 -0
- package/dist/punctuation2.js +259 -802
- package/dist/punctuation2.js.map +7 -1
- package/dist/punctuation2.test.js +44 -0
- package/dist/punctuation2.test.js.map +7 -0
- package/dist/reindexSubfield6OccurenceNumbers.js +61 -96
- package/dist/reindexSubfield6OccurenceNumbers.js.map +7 -1
- package/dist/reindexSubfield6OccurenceNumbers.test.js +44 -0
- package/dist/reindexSubfield6OccurenceNumbers.test.js.map +7 -0
- package/dist/removeDuplicateDataFields.js +102 -202
- package/dist/removeDuplicateDataFields.js.map +7 -1
- package/dist/removeDuplicateDataFields.test.js +44 -0
- package/dist/removeDuplicateDataFields.test.js.map +7 -0
- package/dist/removeInferiorDataFields.js +104 -227
- package/dist/removeInferiorDataFields.js.map +7 -1
- package/dist/removeInferiorDataFields.test.js +44 -0
- package/dist/removeInferiorDataFields.test.js.map +7 -0
- package/dist/resolvable-ext-references-melinda.js +25 -60
- package/dist/resolvable-ext-references-melinda.js.map +7 -1
- package/dist/resolvable-ext-references-melinda.test.js +160 -0
- package/dist/resolvable-ext-references-melinda.test.js.map +7 -0
- package/dist/resolveOrphanedSubfield6s.js +32 -63
- package/dist/resolveOrphanedSubfield6s.js.map +7 -1
- package/dist/resolveOrphanedSubfield6s.test.js +44 -0
- package/dist/resolveOrphanedSubfield6s.test.js.map +7 -0
- package/dist/sanitize-vocabulary-source-codes.js +27 -55
- package/dist/sanitize-vocabulary-source-codes.js.map +7 -1
- package/dist/sanitize-vocabulary-source-codes.test.js +45 -0
- package/dist/sanitize-vocabulary-source-codes.test.js.map +7 -0
- package/dist/sort-tags.js +13 -25
- package/dist/sort-tags.js.map +7 -1
- package/dist/sort-tags.test.js +261 -0
- package/dist/sort-tags.test.js.map +7 -0
- package/dist/sortFields.js +152 -222
- package/dist/sortFields.js.map +7 -1
- package/dist/sortFields.test.js +44 -0
- package/dist/sortFields.test.js.map +7 -0
- package/dist/sortRelatorTerms.js +30 -68
- package/dist/sortRelatorTerms.js.map +7 -1
- package/dist/sortRelatorTerms.test.js +44 -0
- package/dist/sortRelatorTerms.test.js.map +7 -0
- package/dist/sortSubfields.js +102 -255
- package/dist/sortSubfields.js.map +7 -1
- package/dist/sortSubfields.test.js +44 -0
- package/dist/sortSubfields.test.js.map +7 -0
- package/dist/stripPunctuation.js +13 -36
- package/dist/stripPunctuation.js.map +7 -1
- package/dist/stripPunctuation.test.js +44 -0
- package/dist/stripPunctuation.test.js.map +7 -0
- package/dist/subfield-exclusion.js +28 -75
- package/dist/subfield-exclusion.js.map +7 -1
- package/dist/subfield-exclusion.test.js +471 -0
- package/dist/subfield-exclusion.test.js.map +7 -0
- package/dist/subfield6Utils.js +107 -269
- package/dist/subfield6Utils.js.map +7 -1
- package/dist/subfield8Utils.js +26 -50
- package/dist/subfield8Utils.js.map +7 -1
- package/dist/subfieldValueNormalizations.js +40 -74
- package/dist/subfieldValueNormalizations.js.map +7 -1
- package/dist/subfieldValueNormalizations.test.js +45 -0
- package/dist/subfieldValueNormalizations.test.js.map +7 -0
- package/dist/sync-007-and-300.js +22 -53
- package/dist/sync-007-and-300.js.map +7 -1
- package/dist/sync-007-and-300.test.js +44 -0
- package/dist/sync-007-and-300.test.js.map +7 -0
- package/dist/translate-terms.js +67 -155
- package/dist/translate-terms.js.map +7 -1
- package/dist/translate-terms.test.js +54 -0
- package/dist/translate-terms.test.js.map +7 -0
- package/dist/typeOfDate-008.js +10 -25
- package/dist/typeOfDate-008.js.map +7 -1
- package/dist/typeOfDate-008.test.js +40 -0
- package/dist/typeOfDate-008.test.js.map +7 -0
- package/dist/unicode-decomposition.js +94 -107
- package/dist/unicode-decomposition.js.map +7 -1
- package/dist/unicode-decomposition.test.js +94 -0
- package/dist/unicode-decomposition.test.js.map +7 -0
- package/dist/update-field-540.js +30 -75
- package/dist/update-field-540.js.map +7 -1
- package/dist/update-field-540.test.js +44 -0
- package/dist/update-field-540.test.js.map +7 -0
- package/dist/urn.js +55 -128
- package/dist/urn.js.map +7 -1
- package/dist/urn.test.js +44 -0
- package/dist/urn.test.js.map +7 -0
- package/dist/utils.js +78 -126
- package/dist/utils.js.map +7 -1
- package/eslint.config.mjs +1 -2
- package/package.json +28 -101
- package/src/access-rights.js +1 -1
- package/src/{access-rights.spec.js → access-rights.test.js} +9 -10
- package/src/addMissingField041.js +1 -1
- package/src/{addMissingField336.spec.js → addMissingField041.test.js} +13 -14
- package/src/addMissingField336.js +3 -3
- package/src/{addMissingField041.spec.js → addMissingField336.test.js} +13 -14
- package/src/addMissingField337.js +2 -2
- package/src/{addMissingField337.spec.js → addMissingField337.test.js} +13 -14
- package/src/addMissingField338.js +2 -2
- package/src/{addMissingField338.spec.js → addMissingField338.test.js} +13 -14
- package/src/cyrillux-usemarcon-replacement.js +18 -18
- package/src/{cyrillux-usemarcon-replacement.spec.js → cyrillux-usemarcon-replacement.test.js} +17 -14
- package/src/cyrillux.js +19 -12
- package/src/{cyrillux.spec.js → cyrillux.test.js} +13 -14
- package/src/disambiguateSeriesStatements.js +2 -2
- package/src/{disambiguateSeriesStatements.spec.js → disambiguateSeriesStatements.test.js} +12 -13
- package/src/double-commas.js +1 -1
- package/src/{double-commas.spec.js → double-commas.test.js} +9 -11
- package/src/duplicates-ind1.js +1 -1
- package/src/{duplicates-ind1.spec.js → duplicates-ind1.test.js} +12 -13
- package/src/{empty-fields.spec.js → empty-fields.test.js} +11 -13
- package/src/ending-punctuation-conf.js +6 -5
- package/src/ending-punctuation.js +115 -24
- package/src/{ending-punctuation.spec.js → ending-punctuation.test.js} +357 -275
- package/src/{ending-whitespace.spec.js → ending-whitespace.test.js} +12 -13
- package/src/field-008-18-34-character-groups.js +2 -2
- package/src/{field-008-18-34-character-groups.spec.js → field-008-18-34-character-groups.test.js} +13 -13
- package/src/field-505-separators.js +3 -3
- package/src/{field-505-separators.spec.js → field-505-separators.test.js} +16 -14
- package/src/field-521-fix.js +2 -2
- package/src/{field-521-fix.spec.js → field-521-fix.test.js} +12 -13
- package/src/field-exclusion.js +1 -1
- package/src/{field-exclusion.spec.js → field-exclusion.test.js} +60 -57
- package/src/{field-structure.spec.js → field-structure.test.js} +29 -29
- package/src/{fields-present.spec.js → fields-present.test.js} +12 -15
- package/src/fix-33X.js +4 -4
- package/src/{fix-33X.spec.js → fix-33X.test.js} +13 -14
- package/src/fix-country-codes.js +1 -1
- package/src/{fix-country-codes.spec.js → fix-country-codes.test.js} +12 -13
- package/src/fix-language-codes.js +5 -5
- package/src/{fix-language-codes.spec.js → fix-language-codes.test.js} +12 -13
- package/src/fixRelatorTerms.js +5 -5
- package/src/{fixRelatorTerms.spec.js → fixRelatorTerms.test.js} +13 -13
- package/src/{fixed-fields.spec.js → fixed-fields.test.js} +11 -14
- package/src/identical-fields.js +1 -1
- package/src/{identical-fields.spec.js → identical-fields.test.js} +9 -11
- package/src/index.js +132 -59
- package/src/indicator-fixes.js +17 -4
- package/src/{indicator-fixes.spec.js → indicator-fixes.test.js} +9 -12
- package/src/isbn-issn.js +12 -7
- package/src/{isbn-issn.spec.js → isbn-issn.test.js} +20 -22
- package/src/{item-language.spec.js → item-language.test.js} +21 -22
- package/src/melindaCustomMergeFields.js +1 -1
- package/src/merge-fields/controlSubfields.js +1 -1
- package/src/merge-fields/counterpartField.js +14 -9
- package/src/merge-fields/dataProvenance.js +41 -0
- package/src/merge-fields/index.js +12 -3
- package/src/merge-fields/mergableIndicator.js +1 -1
- package/src/merge-fields/mergeField.js +8 -8
- package/src/merge-fields/mergeIndicator.js +1 -1
- package/src/merge-fields/mergeOrAddPostprocess.js +4 -4
- package/src/merge-fields/mergeOrAddSubfield.js +2 -2
- package/src/merge-fields/mergeSubfield.js +4 -4
- package/src/merge-fields/removeDuplicateSubfields.js +2 -2
- package/src/{merge-fields.spec.js → merge-fields.test.js} +18 -15
- package/src/mergeField500Lisapainokset.js +1 -1
- package/src/{mergeField500Lisapainokset.spec.js → mergeField500Lisapainokset.test.js} +12 -13
- package/src/mergeRelatorTermFields.js +5 -7
- package/src/{mergeRelatorTermFields.spec.js → mergeRelatorTermFields.test.js} +12 -13
- package/src/modernize-502.js +1 -1
- package/src/{modernize-502.spec.js → modernize-502.test.js} +12 -13
- package/src/multiple-subfield-0.js +3 -3
- package/src/{multiple-subfield-0.spec.js → multiple-subfield-0.test.js} +13 -13
- package/src/{non-breaking-space.spec.js → non-breaking-space.test.js} +12 -13
- package/src/normalize-dashes.js +2 -2
- package/src/{normalize-dashes.spec.js → normalize-dashes.test.js} +12 -13
- package/src/normalize-identifiers.js +1 -1
- package/src/{normalize-identifiers.spec.js → normalize-identifiers.test.js} +12 -13
- package/src/normalize-qualifying-information.js +2 -2
- package/src/{normalize-qualifying-information.spec.js → normalize-qualifying-information.test.js} +12 -13
- package/src/normalize-utf8-diacritics.js +2 -2
- package/src/{normalize-utf8-diacritics.spec.js → normalize-utf8-diacritics.test.js} +13 -13
- package/src/normalizeFieldForComparison.js +32 -6
- package/src/normalizeSubfieldValueForComparison.js +1 -1
- package/src/prepublicationUtils.js +4 -4
- package/src/punctuation/index.js +1 -1
- package/src/punctuation/rules/index.js +2 -2
- package/src/{punctuation.spec.js → punctuation.test.js} +12 -13
- package/src/punctuation2.js +17 -8
- package/src/{punctuation2.spec.js → punctuation2.test.js} +12 -13
- package/src/reindexSubfield6OccurenceNumbers.js +5 -7
- package/src/{reindexSubfield6OccurenceNumbers.spec.js → reindexSubfield6OccurenceNumbers.test.js} +12 -13
- package/src/removeDuplicateDataFields.js +11 -19
- package/src/{removeDuplicateDataFields.spec.js → removeDuplicateDataFields.test.js} +12 -13
- package/src/removeInferiorDataFields.js +15 -12
- package/src/{removeInferiorDataFields.spec.js → removeInferiorDataFields.test.js} +13 -13
- package/src/resolvable-ext-references-melinda.js +1 -1
- package/src/{resolvable-ext-references-melinda.spec.js → resolvable-ext-references-melinda.test.js} +42 -27
- package/src/resolveOrphanedSubfield6s.js +6 -6
- package/src/{resolveOrphanedSubfield6s.spec.js → resolveOrphanedSubfield6s.test.js} +13 -13
- package/src/sanitize-vocabulary-source-codes.js +4 -4
- package/src/{sanitize-vocabulary-source-codes.spec.js → sanitize-vocabulary-source-codes.test.js} +16 -14
- package/src/{sort-tags.spec.js → sort-tags.test.js} +9 -11
- package/src/sortFields.js +4 -4
- package/src/{sortFields.spec.js → sortFields.test.js} +12 -13
- package/src/sortRelatorTerms.js +3 -3
- package/src/{sortRelatorTerms.spec.js → sortRelatorTerms.test.js} +13 -13
- package/src/sortSubfields.js +8 -6
- package/src/{sortSubfields.spec.js → sortSubfields.test.js} +13 -13
- package/src/stripPunctuation.js +3 -3
- package/src/{stripPunctuation.spec.js → stripPunctuation.test.js} +13 -13
- package/src/subfield-exclusion.js +1 -1
- package/src/{subfield-exclusion.spec.js → subfield-exclusion.test.js} +45 -36
- package/src/subfield6Utils.js +6 -10
- package/src/subfield8Utils.js +4 -4
- package/src/subfieldValueNormalizations.js +3 -3
- package/src/{subfieldValueNormalizations.spec.js → subfieldValueNormalizations.test.js} +18 -14
- package/src/sync-007-and-300.js +2 -2
- package/src/{sync-007-and-300.spec.js → sync-007-and-300.test.js} +13 -13
- package/src/translate-terms.js +3 -3
- package/src/translate-terms.test.js +75 -0
- package/src/{typeOfDate-008.spec.js → typeOfDate-008.test.js} +12 -13
- package/src/{unicode-decomposition.spec.js → unicode-decomposition.test.js} +10 -16
- package/src/update-field-540.js +2 -2
- package/src/{update-field-540.spec.js → update-field-540.test.js} +13 -10
- package/src/urn.js +2 -2
- package/src/{urn.spec.js → urn.test.js} +12 -13
- package/src/utils.js +21 -5
- package/test-fixtures/field-505-separators/03/expectedResult.json +3 -1
- package/test-fixtures/field-505-separators/03/record.json +3 -0
- package/test-fixtures/indicator-fixes/10/expectedResult.json +11 -0
- package/test-fixtures/indicator-fixes/10/metadata.json +4 -0
- package/test-fixtures/indicator-fixes/10/record.json +11 -0
- package/test-fixtures/merge-fields/f05/expectedResult.json +24 -0
- package/test-fixtures/merge-fields/f05/metadata.json +6 -0
- package/test-fixtures/merge-fields/f05/record.json +30 -0
- package/test-fixtures/normalize-subfield-value/01/metadata.json +4 -1
- package/test-fixtures/normalize-subfield-value/01/record.json +3 -0
- package/test-fixtures/normalize-subfield-value/02/expectedResult.json +3 -1
- package/test-fixtures/normalize-subfield-value/02/metadata.json +2 -1
- package/test-fixtures/normalize-subfield-value/02/record.json +3 -0
- package/test-fixtures/remove-inferior-datafields/f16/expectedResult.json +12 -0
- package/test-fixtures/remove-inferior-datafields/f16/metadata.json +5 -0
- package/test-fixtures/remove-inferior-datafields/f16/record.json +14 -0
- package/test-fixtures/sanitize-vocabulary-source-codes/f03/expectedResult.json +3 -1
- package/test-fixtures/sanitize-vocabulary-source-codes/f04/expectedResult.json +3 -1
- package/test-fixtures/sanitize-vocabulary-source-codes/v04/metadata.json +1 -4
- package/test-fixtures/sanitize-vocabulary-source-codes/v04/record.json +1 -1
- package/test-fixtures/translate-terms-data.js +42 -0
- package/dist/access-rights.spec.js +0 -195
- package/dist/access-rights.spec.js.map +0 -1
- package/dist/addMissingField041.spec.js +0 -45
- package/dist/addMissingField041.spec.js.map +0 -1
- package/dist/addMissingField336.spec.js +0 -45
- package/dist/addMissingField336.spec.js.map +0 -1
- package/dist/addMissingField337.spec.js +0 -43
- package/dist/addMissingField337.spec.js.map +0 -1
- package/dist/addMissingField338.spec.js +0 -45
- package/dist/addMissingField338.spec.js.map +0 -1
- package/dist/cyrillux-usemarcon-replacement.spec.js +0 -45
- package/dist/cyrillux-usemarcon-replacement.spec.js.map +0 -1
- package/dist/cyrillux.spec.js +0 -46
- package/dist/cyrillux.spec.js.map +0 -1
- package/dist/disambiguateSeriesStatements.spec.js +0 -51
- package/dist/disambiguateSeriesStatements.spec.js.map +0 -1
- package/dist/double-commas.spec.js +0 -73
- package/dist/double-commas.spec.js.map +0 -1
- package/dist/duplicates-ind1.spec.js +0 -45
- package/dist/duplicates-ind1.spec.js.map +0 -1
- package/dist/empty-fields.spec.js +0 -118
- package/dist/empty-fields.spec.js.map +0 -1
- package/dist/ending-punctuation.spec.js +0 -2654
- package/dist/ending-punctuation.spec.js.map +0 -1
- package/dist/ending-whitespace.spec.js +0 -42
- package/dist/ending-whitespace.spec.js.map +0 -1
- package/dist/field-008-18-34-character-groups.spec.js +0 -51
- package/dist/field-008-18-34-character-groups.spec.js.map +0 -1
- package/dist/field-505-separators.spec.js +0 -51
- package/dist/field-505-separators.spec.js.map +0 -1
- package/dist/field-521-fix.spec.js +0 -51
- package/dist/field-521-fix.spec.js.map +0 -1
- package/dist/field-exclusion.spec.js +0 -1054
- package/dist/field-exclusion.spec.js.map +0 -1
- package/dist/field-structure.spec.js +0 -535
- package/dist/field-structure.spec.js.map +0 -1
- package/dist/fields-present.spec.js +0 -121
- package/dist/fields-present.spec.js.map +0 -1
- package/dist/fix-33X.spec.js +0 -45
- package/dist/fix-33X.spec.js.map +0 -1
- package/dist/fix-country-codes.spec.js +0 -51
- package/dist/fix-country-codes.spec.js.map +0 -1
- package/dist/fix-language-codes.spec.js +0 -44
- package/dist/fix-language-codes.spec.js.map +0 -1
- package/dist/fixRelatorTerms.spec.js +0 -51
- package/dist/fixRelatorTerms.spec.js.map +0 -1
- package/dist/fixed-fields.spec.js +0 -140
- package/dist/fixed-fields.spec.js.map +0 -1
- package/dist/identical-fields.spec.js +0 -99
- package/dist/identical-fields.spec.js.map +0 -1
- package/dist/indicator-fixes.spec.js +0 -51
- package/dist/indicator-fixes.spec.js.map +0 -1
- package/dist/isbn-issn.spec.js +0 -595
- package/dist/isbn-issn.spec.js.map +0 -1
- package/dist/item-language.spec.js +0 -306
- package/dist/item-language.spec.js.map +0 -1
- package/dist/melindaCustomMergeFields.json +0 -5120
- package/dist/merge-fields.spec.js +0 -51
- package/dist/merge-fields.spec.js.map +0 -1
- package/dist/mergeField500Lisapainokset.spec.js +0 -51
- package/dist/mergeField500Lisapainokset.spec.js.map +0 -1
- package/dist/mergeRelatorTermFields.spec.js +0 -51
- package/dist/mergeRelatorTermFields.spec.js.map +0 -1
- package/dist/modernize-502.spec.js +0 -49
- package/dist/modernize-502.spec.js.map +0 -1
- package/dist/multiple-subfield-0.spec.js +0 -51
- package/dist/multiple-subfield-0.spec.js.map +0 -1
- package/dist/non-breaking-space.spec.js +0 -42
- package/dist/non-breaking-space.spec.js.map +0 -1
- package/dist/normalize-dashes.spec.js +0 -51
- package/dist/normalize-dashes.spec.js.map +0 -1
- package/dist/normalize-identifiers.spec.js +0 -51
- package/dist/normalize-identifiers.spec.js.map +0 -1
- package/dist/normalize-qualifying-information.spec.js +0 -51
- package/dist/normalize-qualifying-information.spec.js.map +0 -1
- package/dist/normalize-utf8-diacritics.spec.js +0 -51
- package/dist/normalize-utf8-diacritics.spec.js.map +0 -1
- package/dist/punctuation.spec.js +0 -51
- package/dist/punctuation.spec.js.map +0 -1
- package/dist/punctuation2.spec.js +0 -51
- package/dist/punctuation2.spec.js.map +0 -1
- package/dist/reindexSubfield6OccurenceNumbers.spec.js +0 -51
- package/dist/reindexSubfield6OccurenceNumbers.spec.js.map +0 -1
- package/dist/removeDuplicateDataFields.spec.js +0 -51
- package/dist/removeDuplicateDataFields.spec.js.map +0 -1
- package/dist/removeInferiorDataFields.spec.js +0 -51
- package/dist/removeInferiorDataFields.spec.js.map +0 -1
- package/dist/resolvable-ext-references-melinda.spec.js +0 -166
- package/dist/resolvable-ext-references-melinda.spec.js.map +0 -1
- package/dist/resolveOrphanedSubfield6s.spec.js +0 -51
- package/dist/resolveOrphanedSubfield6s.spec.js.map +0 -1
- package/dist/sanitize-vocabulary-source-codes.spec.js +0 -51
- package/dist/sanitize-vocabulary-source-codes.spec.js.map +0 -1
- package/dist/sort-tags.spec.js +0 -207
- package/dist/sort-tags.spec.js.map +0 -1
- package/dist/sortFields.spec.js +0 -51
- package/dist/sortFields.spec.js.map +0 -1
- package/dist/sortRelatorTerms.spec.js +0 -51
- package/dist/sortRelatorTerms.spec.js.map +0 -1
- package/dist/sortSubfields.spec.js +0 -52
- package/dist/sortSubfields.spec.js.map +0 -1
- package/dist/stripPunctuation.spec.js +0 -51
- package/dist/stripPunctuation.spec.js.map +0 -1
- package/dist/subfield-exclusion.spec.js +0 -523
- package/dist/subfield-exclusion.spec.js.map +0 -1
- package/dist/subfieldValueNormalizations.spec.js +0 -51
- package/dist/subfieldValueNormalizations.spec.js.map +0 -1
- package/dist/sync-007-and-300.spec.js +0 -51
- package/dist/sync-007-and-300.spec.js.map +0 -1
- package/dist/translate-terms.spec.js +0 -51
- package/dist/translate-terms.spec.js.map +0 -1
- package/dist/typeOfDate-008.spec.js +0 -47
- package/dist/typeOfDate-008.spec.js.map +0 -1
- package/dist/unicode-decomposition.spec.js +0 -91
- package/dist/unicode-decomposition.spec.js.map +0 -1
- package/dist/update-field-540.spec.js +0 -51
- package/dist/update-field-540.spec.js.map +0 -1
- package/dist/urn.spec.js +0 -52
- package/dist/urn.spec.js.map +0 -1
- package/src/melindaCustomMergeFields.json +0 -5120
- package/src/translate-terms.spec.js +0 -52
package/dist/subfield6Utils.js
CHANGED
|
@@ -1,131 +1,78 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.fieldGetMaxSubfield6OccurrenceNumberAsInteger = fieldGetMaxSubfield6OccurrenceNumberAsInteger;
|
|
7
|
-
exports.fieldGetOccurrenceNumberPairs = fieldGetOccurrenceNumberPairs;
|
|
8
|
-
exports.fieldGetOccurrenceNumbers = fieldGetOccurrenceNumbers;
|
|
9
|
-
exports.fieldGetUnambiguousOccurrenceNumber = fieldGetUnambiguousOccurrenceNumber;
|
|
10
|
-
exports.fieldGetUnambiguousTag = fieldGetUnambiguousTag;
|
|
11
|
-
exports.fieldHasOccurrenceNumber = fieldHasOccurrenceNumber;
|
|
12
|
-
exports.fieldHasValidSubfield6 = fieldHasValidSubfield6;
|
|
13
|
-
exports.fieldHasWantedTagAndOccurrenceNumber = fieldHasWantedTagAndOccurrenceNumber;
|
|
14
|
-
exports.fieldIsFirstFieldInChain = fieldIsFirstFieldInChain;
|
|
15
|
-
exports.fieldResetOccurrenceNumber = fieldResetOccurrenceNumber;
|
|
16
|
-
exports.fieldSevenToOneOccurrenceNumber = fieldSevenToOneOccurrenceNumber;
|
|
17
|
-
exports.fieldToNormalizedString = fieldToNormalizedString;
|
|
18
|
-
exports.fieldsGetOccurrenceNumbers = fieldsGetOccurrenceNumbers;
|
|
19
|
-
exports.fieldsToNormalizedString = fieldsToNormalizedString;
|
|
20
|
-
exports.get6s = get6s;
|
|
21
|
-
exports.getAllLinkedSubfield6Fields = getAllLinkedSubfield6Fields;
|
|
22
|
-
exports.intToOccurrenceNumberString = intToOccurrenceNumberString;
|
|
23
|
-
exports.is7XX = is7XX;
|
|
24
|
-
exports.isFirstLinkedSubfield6Field = isFirstLinkedSubfield6Field;
|
|
25
|
-
exports.isSubfield6Pair = isSubfield6Pair;
|
|
26
|
-
exports.isValidSubfield6 = isValidSubfield6;
|
|
27
|
-
exports.recordGetMaxSubfield6OccurrenceNumberAsInteger = recordGetMaxSubfield6OccurrenceNumberAsInteger;
|
|
28
|
-
exports.recordGetSubfield6ChainHeads = recordGetSubfield6ChainHeads;
|
|
29
|
-
exports.resetSubfield6Tag = resetSubfield6Tag;
|
|
30
|
-
exports.subfield6GetOccurrenceNumber = subfield6GetOccurrenceNumber;
|
|
31
|
-
exports.subfield6GetOccurrenceNumberAsInteger = subfield6GetOccurrenceNumberAsInteger;
|
|
32
|
-
exports.subfield6GetTag = subfield6GetTag;
|
|
33
|
-
exports.subfield6HasWantedTagAndOccurrenceNumber = subfield6HasWantedTagAndOccurrenceNumber;
|
|
34
|
-
exports.subfield6ResetOccurrenceNumber = subfield6ResetOccurrenceNumber;
|
|
35
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
36
|
-
var _subfield8Utils = require("./subfield8Utils");
|
|
37
|
-
var _utils = require("./utils");
|
|
38
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
39
|
-
// const debug = createDebugLogger('@natlibfi/marc-record-validator-melinda/subfield6Utils');
|
|
40
|
-
|
|
41
|
-
const debug = (0, _debug.default)('@natlibfi/melinda-marc-record-merge-reducers:subfield6Utils');
|
|
42
|
-
//const debugData = debug.extend('data');
|
|
43
|
-
const debugDev = debug.extend('dev');
|
|
44
|
-
|
|
45
|
-
// NB! Subfield 6 is non-repeatable and it should always comes first!
|
|
46
|
-
// NB! Index size should always be 2 (preceding 0 required for 01..09) However, support for 100+ was added on 2023-02-27.
|
|
47
|
-
// NB! Index value '00' are left as they are (is not paired/indexed/whatever.
|
|
1
|
+
import createDebugLogger from "debug";
|
|
2
|
+
import { add8s, fieldsGetAllSubfield8LinkingNumbers, getSubfield8LinkingNumber, isValidSubfield8 } from "./subfield8Utils.js";
|
|
3
|
+
import { fieldHasSubfield, fieldToString, fieldsToString, nvdebug, subfieldToString } from "./utils.js";
|
|
4
|
+
const debug = createDebugLogger("@natlibfi/melinda-marc-record-merge-reducers:subfield6Utils");
|
|
5
|
+
const debugDev = debug.extend("dev");
|
|
48
6
|
const sf6Regexp = /^[0-9][0-9][0-9]-(?:[0-9][0-9]|[1-9][0-9]+)(?:[^0-9].*)?$/u;
|
|
49
|
-
function isValidSubfield6(subfield) {
|
|
50
|
-
if (subfield.code !==
|
|
7
|
+
export function isValidSubfield6(subfield) {
|
|
8
|
+
if (subfield.code !== "6") {
|
|
51
9
|
return false;
|
|
52
10
|
}
|
|
53
11
|
return subfield.value.match(sf6Regexp);
|
|
54
12
|
}
|
|
55
|
-
function subfield6GetTag(subfield) {
|
|
13
|
+
export function subfield6GetTag(subfield) {
|
|
56
14
|
if (isValidSubfield6(subfield)) {
|
|
57
15
|
return subfield.value.substring(0, 3);
|
|
58
16
|
}
|
|
59
|
-
return
|
|
17
|
+
return void 0;
|
|
60
18
|
}
|
|
61
|
-
function subfield6GetOccurrenceNumber(subfield) {
|
|
19
|
+
export function subfield6GetOccurrenceNumber(subfield) {
|
|
62
20
|
if (isValidSubfield6(subfield)) {
|
|
63
|
-
|
|
64
|
-
return subfield.value.substring(4).replace(/\D.*$/u, '');
|
|
21
|
+
return subfield.value.substring(4).replace(/\D.*$/u, "");
|
|
65
22
|
}
|
|
66
|
-
return
|
|
23
|
+
return void 0;
|
|
67
24
|
}
|
|
68
|
-
function subfield6GetOccurrenceNumberAsInteger(subfield) {
|
|
25
|
+
export function subfield6GetOccurrenceNumberAsInteger(subfield) {
|
|
69
26
|
const index = subfield6GetOccurrenceNumber(subfield);
|
|
70
|
-
if (index ===
|
|
27
|
+
if (index === void 0 || index === "00") {
|
|
71
28
|
return 0;
|
|
72
29
|
}
|
|
73
30
|
const result = parseInt(index, 10);
|
|
74
|
-
//nvdebug(`SF6: ${subfield.value} => ${index} => ${result}`, debug);
|
|
75
31
|
return result;
|
|
76
32
|
}
|
|
77
|
-
function subfield6ResetOccurrenceNumber(subfield, occurrenceNumber) {
|
|
33
|
+
export function subfield6ResetOccurrenceNumber(subfield, occurrenceNumber) {
|
|
78
34
|
if (!isValidSubfield6(subfield)) {
|
|
79
35
|
return;
|
|
80
36
|
}
|
|
81
|
-
const occurrenceNumberAsString = typeof occurrenceNumber ===
|
|
37
|
+
const occurrenceNumberAsString = typeof occurrenceNumber === "number" ? intToOccurrenceNumberString(occurrenceNumber) : occurrenceNumber;
|
|
82
38
|
const newValue = subfield.value.substring(0, 4) + occurrenceNumberAsString + subfield6GetTail(subfield);
|
|
83
|
-
//nvdebug(`Set subfield $6 value from ${subfieldToString(subfield)} to ${newValue}`);
|
|
84
39
|
subfield.value = newValue;
|
|
85
40
|
}
|
|
86
41
|
function subfield6GetTail(subfield) {
|
|
87
42
|
if (isValidSubfield6(subfield)) {
|
|
88
|
-
|
|
89
|
-
return subfield.value.replace(/^\d+-\d+/u, '');
|
|
43
|
+
return subfield.value.replace(/^\d+-\d+/u, "");
|
|
90
44
|
}
|
|
91
|
-
return
|
|
45
|
+
return "";
|
|
92
46
|
}
|
|
93
|
-
function subfield6HasWantedTagAndOccurrenceNumber(subfield, tagAndOccurrenceNumber) {
|
|
94
|
-
if (subfield.code !==
|
|
47
|
+
export function subfield6HasWantedTagAndOccurrenceNumber(subfield, tagAndOccurrenceNumber) {
|
|
48
|
+
if (subfield.code !== "6") {
|
|
95
49
|
return false;
|
|
96
50
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
(0, _utils.nvdebug)(` Compare '${key}' vs '${tagAndOccurrenceNumber}'`);
|
|
51
|
+
const key = subfield.value.replace(/^([0-9][0-9][0-9]-[0-9][0-9]+).*$/u, "$1");
|
|
52
|
+
nvdebug(` Compare '${key}' vs '${tagAndOccurrenceNumber}'`);
|
|
100
53
|
return key === tagAndOccurrenceNumber;
|
|
101
54
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
function fieldGetUnambiguousTag(field) {
|
|
106
|
-
const tags = field.subfields.filter(sf => subfield6GetTag(sf));
|
|
55
|
+
export function fieldGetUnambiguousTag(field) {
|
|
56
|
+
const tags = field.subfields.filter((sf) => subfield6GetTag(sf));
|
|
107
57
|
if (tags.length === 1) {
|
|
108
58
|
return subfield6GetTag(tags[0]);
|
|
109
59
|
}
|
|
110
|
-
return
|
|
60
|
+
return void 0;
|
|
111
61
|
}
|
|
112
|
-
function fieldGetUnambiguousOccurrenceNumber(field) {
|
|
113
|
-
const occurrenceNumbers = field.subfields.filter(sf => subfield6GetOccurrenceNumber(sf));
|
|
62
|
+
export function fieldGetUnambiguousOccurrenceNumber(field) {
|
|
63
|
+
const occurrenceNumbers = field.subfields.filter((sf) => subfield6GetOccurrenceNumber(sf));
|
|
114
64
|
if (occurrenceNumbers.length === 1) {
|
|
115
65
|
return subfield6GetOccurrenceNumber(occurrenceNumbers[0]);
|
|
116
66
|
}
|
|
117
|
-
return
|
|
67
|
+
return void 0;
|
|
118
68
|
}
|
|
119
|
-
function fieldHasOccurrenceNumber(field, occurrenceNumber) {
|
|
120
|
-
|
|
121
|
-
return field.subfields && field.subfields.some(sf => subfield6GetOccurrenceNumber(sf) === occurrenceNumber);
|
|
69
|
+
export function fieldHasOccurrenceNumber(field, occurrenceNumber) {
|
|
70
|
+
return field.subfields && field.subfields.some((sf) => subfield6GetOccurrenceNumber(sf) === occurrenceNumber);
|
|
122
71
|
}
|
|
123
|
-
function fieldResetOccurrenceNumber(field, newOccurrenceNumber, oldOccurrenceNumber =
|
|
124
|
-
field.subfields.forEach(subfield => innerReset(subfield));
|
|
125
|
-
|
|
72
|
+
export function fieldResetOccurrenceNumber(field, newOccurrenceNumber, oldOccurrenceNumber = void 0) {
|
|
73
|
+
field.subfields.forEach((subfield) => innerReset(subfield));
|
|
126
74
|
function innerReset(subfield) {
|
|
127
|
-
|
|
128
|
-
if (oldOccurrenceNumber !== undefined) {
|
|
75
|
+
if (oldOccurrenceNumber !== void 0) {
|
|
129
76
|
const currOccurrenceNumber = subfield6GetOccurrenceNumber(subfield);
|
|
130
77
|
if (currOccurrenceNumber !== oldOccurrenceNumber) {
|
|
131
78
|
return;
|
|
@@ -134,170 +81,104 @@ function fieldResetOccurrenceNumber(field, newOccurrenceNumber, oldOccurrenceNum
|
|
|
134
81
|
subfield6ResetOccurrenceNumber(subfield, newOccurrenceNumber);
|
|
135
82
|
}
|
|
136
83
|
}
|
|
137
|
-
function intToOccurrenceNumberString(i) {
|
|
84
|
+
export function intToOccurrenceNumberString(i) {
|
|
138
85
|
return i < 10 ? `0${i}` : `${i}`;
|
|
139
86
|
}
|
|
140
|
-
function fieldGetMaxSubfield6OccurrenceNumberAsInteger(field) {
|
|
141
|
-
|
|
142
|
-
//nvdebug(`Checking subfields $6 from ${JSON.stringify(field)}`);
|
|
143
|
-
const sf6s = field.subfields ? field.subfields.filter(subfield => isValidSubfield6(subfield)) : [];
|
|
87
|
+
export function fieldGetMaxSubfield6OccurrenceNumberAsInteger(field) {
|
|
88
|
+
const sf6s = field.subfields ? field.subfields.filter((subfield) => isValidSubfield6(subfield)) : [];
|
|
144
89
|
if (sf6s.length === 0) {
|
|
145
90
|
return 0;
|
|
146
91
|
}
|
|
147
|
-
|
|
148
|
-
//nvdebug(`Got ${field.subfields} $6-subfield(s) from ${JSON.stringify(field)}`, debug);
|
|
149
|
-
const vals = sf6s.map(sf => subfield6GetOccurrenceNumberAsInteger(sf));
|
|
92
|
+
const vals = sf6s.map((sf) => subfield6GetOccurrenceNumberAsInteger(sf));
|
|
150
93
|
return Math.max(...vals);
|
|
151
94
|
}
|
|
152
|
-
function fieldHasWantedTagAndOccurrenceNumber(field, tagAndOccurrenceNumber) {
|
|
153
|
-
return field.subfields && field.subfields.some(sf => subfield6HasWantedTagAndOccurrenceNumber(sf, tagAndOccurrenceNumber));
|
|
95
|
+
export function fieldHasWantedTagAndOccurrenceNumber(field, tagAndOccurrenceNumber) {
|
|
96
|
+
return field.subfields && field.subfields.some((sf) => subfield6HasWantedTagAndOccurrenceNumber(sf, tagAndOccurrenceNumber));
|
|
154
97
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
export function getFieldsWithGivenOccurrenceNumberSubfield6(record, occurrenceNumberAsString) {
|
|
158
|
-
const record.fields.filter(field => field
|
|
159
|
-
|
|
160
|
-
function fieldHasIndex(field, index) {
|
|
161
|
-
if (!field.subfields) {
|
|
162
|
-
return false;
|
|
163
|
-
}
|
|
164
|
-
return field.subfields.find(sf => isValidSubfield6(sf) && subfieldGetOccurrenceNumber6(sf) === index);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
*/
|
|
168
|
-
|
|
169
|
-
function fieldHasValidSubfield6(field) {
|
|
170
|
-
return field.subfields && field.subfields.some(sf => isValidSubfield6(sf));
|
|
98
|
+
export function fieldHasValidSubfield6(field) {
|
|
99
|
+
return field.subfields && field.subfields.some((sf) => isValidSubfield6(sf));
|
|
171
100
|
}
|
|
172
|
-
function isSubfield6Pair(field, otherField) {
|
|
173
|
-
// No need to log this:
|
|
174
|
-
//nvdebug(`LOOK for $6-pair:\n ${fieldToString(field)}\n ${fieldToString(otherField)}`);
|
|
101
|
+
export function isSubfield6Pair(field, otherField) {
|
|
175
102
|
if (!fieldHasValidSubfield6(field) || !fieldHasValidSubfield6(otherField)) {
|
|
176
103
|
return false;
|
|
177
104
|
}
|
|
178
105
|
if (!tagsArePairable6(field.tag, otherField.tag)) {
|
|
179
|
-
//nvdebug(` FAILED. REASON: TAGS NOT PAIRABLE!`);
|
|
180
106
|
return false;
|
|
181
107
|
}
|
|
182
108
|
const fieldIndex = fieldGetUnambiguousOccurrenceNumber(field);
|
|
183
|
-
if (fieldIndex ===
|
|
184
|
-
//nvdebug(` FAILED. REASON: NO INDEX FOUND`);
|
|
109
|
+
if (fieldIndex === void 0 || fieldIndex === "00") {
|
|
185
110
|
return false;
|
|
186
111
|
}
|
|
187
112
|
const otherFieldIndex = fieldGetUnambiguousOccurrenceNumber(otherField);
|
|
188
113
|
if (fieldIndex !== otherFieldIndex) {
|
|
189
|
-
//nvdebug(` FAILURE: INDEXES: ${fieldIndex} vs ${otherFieldIndex}`);
|
|
190
114
|
return false;
|
|
191
115
|
}
|
|
192
116
|
if (fieldGetUnambiguousTag(field) !== otherField.tag || field.tag !== fieldGetUnambiguousTag(otherField)) {
|
|
193
|
-
//nvdebug(` FAILURE: TAG vs $6 TAG`);
|
|
194
117
|
return false;
|
|
195
118
|
}
|
|
196
119
|
return true;
|
|
197
120
|
function tagsArePairable6(tag1, tag2) {
|
|
198
|
-
|
|
199
|
-
if (tag1 === '880' && tag2 === '880') {
|
|
121
|
+
if (tag1 === "880" && tag2 === "880") {
|
|
200
122
|
return false;
|
|
201
123
|
}
|
|
202
|
-
if (tag1 !==
|
|
124
|
+
if (tag1 !== "880" && tag2 !== "880") {
|
|
203
125
|
return false;
|
|
204
126
|
}
|
|
205
127
|
return true;
|
|
206
128
|
}
|
|
207
129
|
}
|
|
208
130
|
function subfieldSevenToOneOccurrenceNumber(subfield) {
|
|
209
|
-
if (subfield.code !==
|
|
131
|
+
if (subfield.code !== "6" || subfield.value.substring(0, 1) !== "7") {
|
|
210
132
|
return;
|
|
211
133
|
}
|
|
212
134
|
subfield.value = `1${subfield.value.substring(1)}`;
|
|
213
135
|
}
|
|
214
|
-
function fieldSevenToOneOccurrenceNumber(field) {
|
|
215
|
-
if (field.tag !==
|
|
136
|
+
export function fieldSevenToOneOccurrenceNumber(field) {
|
|
137
|
+
if (field.tag !== "880") {
|
|
216
138
|
return;
|
|
217
139
|
}
|
|
218
|
-
field.subfields.forEach(sf => subfieldSevenToOneOccurrenceNumber(sf));
|
|
140
|
+
field.subfields.forEach((sf) => subfieldSevenToOneOccurrenceNumber(sf));
|
|
219
141
|
}
|
|
220
|
-
function fieldGetOccurrenceNumberPairs(field, candFields) {
|
|
221
|
-
|
|
222
|
-
//nvdebug(` Trying to finds pair for ${fieldToString(field)} in ${candFields.length} fields`);
|
|
223
|
-
const pairs = candFields.filter(otherField => isSubfield6Pair(field, otherField));
|
|
142
|
+
export function fieldGetOccurrenceNumberPairs(field, candFields) {
|
|
143
|
+
const pairs = candFields.filter((otherField) => isSubfield6Pair(field, otherField));
|
|
224
144
|
if (pairs.length === 0) {
|
|
225
|
-
|
|
145
|
+
nvdebug(`NO PAIRS FOUND FOR '${fieldToString(field)}'`);
|
|
226
146
|
return pairs;
|
|
227
147
|
}
|
|
228
|
-
|
|
229
|
-
pairs.forEach(pairedField =>
|
|
148
|
+
nvdebug(`${pairs.length} PAIR(S) FOUND FOR '${fieldToString(field)}'`);
|
|
149
|
+
pairs.forEach((pairedField) => nvdebug(` '${fieldToString(pairedField)}'`));
|
|
230
150
|
return pairs;
|
|
231
151
|
}
|
|
232
|
-
function fieldGetOccurrenceNumbers(field) {
|
|
233
|
-
/* eslint-disable */
|
|
152
|
+
export function fieldGetOccurrenceNumbers(field) {
|
|
234
153
|
let occurrenceNumbers = [];
|
|
235
|
-
field.subfields?.forEach(sf => subfieldExtractOccurrenceNumber(sf));
|
|
154
|
+
field.subfields?.forEach((sf) => subfieldExtractOccurrenceNumber(sf));
|
|
236
155
|
function subfieldExtractOccurrenceNumber(sf) {
|
|
237
156
|
if (!isValidSubfield6(sf)) {
|
|
238
157
|
return;
|
|
239
158
|
}
|
|
240
159
|
const occurrenceNumber = subfield6GetOccurrenceNumber(sf);
|
|
241
|
-
if (occurrenceNumber ===
|
|
160
|
+
if (occurrenceNumber === "00" || occurrenceNumbers.includes(occurrenceNumber)) {
|
|
242
161
|
return;
|
|
243
162
|
}
|
|
244
163
|
occurrenceNumbers.push(occurrenceNumber);
|
|
245
164
|
}
|
|
246
|
-
/* eslint-enable */
|
|
247
165
|
return occurrenceNumbers;
|
|
248
166
|
}
|
|
249
|
-
function fieldsGetOccurrenceNumbers(fields) {
|
|
250
|
-
/* eslint-disable */
|
|
167
|
+
export function fieldsGetOccurrenceNumbers(fields) {
|
|
251
168
|
let occurrenceNumbers = [];
|
|
252
|
-
fields.forEach(f => fieldProcessOccurrenceNumbers(f));
|
|
169
|
+
fields.forEach((f) => fieldProcessOccurrenceNumbers(f));
|
|
253
170
|
function fieldProcessOccurrenceNumbers(f) {
|
|
254
171
|
const newOccurrenceNumbers = fieldGetOccurrenceNumbers(f);
|
|
255
|
-
newOccurrenceNumbers.forEach(occurrenceNumber => {
|
|
172
|
+
newOccurrenceNumbers.forEach((occurrenceNumber) => {
|
|
256
173
|
if (!occurrenceNumbers.includes(occurrenceNumber)) {
|
|
257
174
|
occurrenceNumbers.push(occurrenceNumber);
|
|
258
175
|
}
|
|
259
176
|
});
|
|
260
177
|
}
|
|
261
|
-
/* eslint-enable */
|
|
262
178
|
return occurrenceNumbers;
|
|
263
179
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
export function fieldGetSubfield6Pair(field, record) {
|
|
267
|
-
const pairedFields = record.fields.filter(otherField => isSubfield6Pair(field, otherField));
|
|
268
|
-
if (pairedFields.length !== 1) {
|
|
269
|
-
return undefined;
|
|
270
|
-
}
|
|
271
|
-
// NB! It is theoretically possible to have multiple pairable 880 fields (one for each encoding)
|
|
272
|
-
nvdebug(`fieldGetSubfield6Pair(): ${fieldToString(field)} => ${fieldToString(pairedFields[0])}`);
|
|
273
|
-
return pairedFields[0];
|
|
274
|
-
}
|
|
275
|
-
*/
|
|
276
|
-
|
|
277
|
-
/*
|
|
278
|
-
export function pairAndStringify6(field, record) {
|
|
279
|
-
const pair6 = fieldGetSubfield6Pair(field, record);
|
|
280
|
-
if (!pair6) {
|
|
281
|
-
return fieldToNormalizedString(field);
|
|
282
|
-
}
|
|
283
|
-
return fieldsToNormalizedString([field, pair6]);
|
|
284
|
-
}
|
|
285
|
-
*/
|
|
286
|
-
|
|
287
|
-
// Frequencly list for $6 subfields in 1XX/7XX fields:
|
|
288
|
-
// 231115 100
|
|
289
|
-
// 183832 700
|
|
290
|
-
// 28773 710
|
|
291
|
-
// 2047 711
|
|
292
|
-
// 661 110
|
|
293
|
-
// 341 111
|
|
294
|
-
// 284 130
|
|
295
|
-
// 63 730
|
|
296
|
-
// Thus there's a real risk of ending up with, say, identical 100 vs 700 chains.
|
|
297
|
-
// Semi-hackily support 1XX/7XX-version: 7XX can be deleted if corresponding 1XX exists:
|
|
298
|
-
|
|
299
|
-
function is7XX(tag) {
|
|
300
|
-
return ['700', '710', '711', '730'].includes(tag);
|
|
180
|
+
export function is7XX(tag) {
|
|
181
|
+
return ["700", "710", "711", "730"].includes(tag);
|
|
301
182
|
}
|
|
302
183
|
function normalizeEntryTag(tag) {
|
|
303
184
|
if (tag.match(/^[17](?:00|10|11|30)$/u)) {
|
|
@@ -306,166 +187,123 @@ function normalizeEntryTag(tag) {
|
|
|
306
187
|
return tag;
|
|
307
188
|
}
|
|
308
189
|
function subfieldToNormalizedString(sf, tag, targetLinkingNumber = 0, normalizeOccurrenceNumber = false, normalizeEntryTagBoolean = false) {
|
|
309
|
-
// targetLinkingNumber refers to $8.
|
|
310
|
-
// normalizeEntryTagBoolean refers to 1XX/7XX tag values in subfield $6 value.
|
|
311
190
|
if (isValidSubfield6(sf)) {
|
|
312
|
-
// && targetLinkingNumber === 0) {
|
|
313
|
-
// 1XX/7XX (entry tag) normalization:
|
|
314
191
|
const tag2 = normalizeEntryTagBoolean ? normalizeEntryTag(tag) : tag;
|
|
315
|
-
const occurrenceNumber = normalizeOccurrenceNumber ?
|
|
316
|
-
|
|
317
|
-
// Replace $6 occurrence number with XX:
|
|
318
|
-
return ` ‡${sf.code} ${tag2}-${occurrenceNumber}${subfield6GetTail(sf)}`;
|
|
192
|
+
const occurrenceNumber = normalizeOccurrenceNumber ? "XX" : subfield6GetOccurrenceNumber(sf);
|
|
193
|
+
return ` \u2021${sf.code} ${tag2}-${occurrenceNumber}${subfield6GetTail(sf)}`;
|
|
319
194
|
}
|
|
320
|
-
if (
|
|
321
|
-
const currLinkingNumber =
|
|
195
|
+
if (isValidSubfield8(sf)) {
|
|
196
|
+
const currLinkingNumber = getSubfield8LinkingNumber(sf);
|
|
322
197
|
if (targetLinkingNumber > 0 && currLinkingNumber === targetLinkingNumber) {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
return ` ‡${sf.code} ${normVal}`;
|
|
198
|
+
const normVal = sf.value.replace(/^[0-9]+/u, "XX");
|
|
199
|
+
return ` \u2021${sf.code} ${normVal}`;
|
|
326
200
|
}
|
|
327
|
-
return
|
|
201
|
+
return "";
|
|
328
202
|
}
|
|
329
|
-
return ` ${
|
|
203
|
+
return ` ${subfieldToString(sf)}`;
|
|
330
204
|
}
|
|
331
|
-
function fieldToNormalizedString(field, targetLinkingNumber = 0, normalizeOccurrenceNumber = false, normalizeEntryTagBoolean = false) {
|
|
332
|
-
if (
|
|
205
|
+
export function fieldToNormalizedString(field, targetLinkingNumber = 0, normalizeOccurrenceNumber = false, normalizeEntryTagBoolean = false) {
|
|
206
|
+
if ("subfields" in field) {
|
|
333
207
|
const tag2 = normalizeEntryTagBoolean ? normalizeEntryTag(field.tag) : field.tag;
|
|
334
208
|
return `${tag2} ${field.ind1}${field.ind2}${formatAndNormalizeSubfields(field)}`;
|
|
335
209
|
}
|
|
336
210
|
return `${field.tag} ${field.value}`;
|
|
337
|
-
function formatAndNormalizeSubfields(
|
|
338
|
-
return
|
|
211
|
+
function formatAndNormalizeSubfields(field2) {
|
|
212
|
+
return field2.subfields.map((sf) => subfieldToNormalizedString(sf, field2.tag, targetLinkingNumber, normalizeOccurrenceNumber, normalizeEntryTagBoolean)).join("");
|
|
339
213
|
}
|
|
340
214
|
}
|
|
341
215
|
function guessTargetLinkingNumber(fields, defaultTargetLinkingNumber) {
|
|
342
216
|
if (defaultTargetLinkingNumber !== 0) {
|
|
343
217
|
return defaultTargetLinkingNumber;
|
|
344
218
|
}
|
|
345
|
-
const linkingNumbers =
|
|
219
|
+
const linkingNumbers = fieldsGetAllSubfield8LinkingNumbers(fields);
|
|
346
220
|
return linkingNumbers.length === 1 ? linkingNumbers[0] : 0;
|
|
347
221
|
}
|
|
348
|
-
function fieldsToNormalizedString(fields, defaultTargetLinkingNumber = 0, normalizeOccurrenceNumber = false,
|
|
222
|
+
export function fieldsToNormalizedString(fields, defaultTargetLinkingNumber = 0, normalizeOccurrenceNumber = false, normalizeEntryTag2 = false) {
|
|
349
223
|
const targetLinkingNumber = guessTargetLinkingNumber(fields, defaultTargetLinkingNumber);
|
|
350
|
-
|
|
351
|
-
const strings = fields.map(field => fieldToNormalizedString(field, targetLinkingNumber, normalizeOccurrenceNumber,
|
|
224
|
+
nvdebug(`fieldsToNormalizedString: OCC: ${normalizeOccurrenceNumber}`);
|
|
225
|
+
const strings = fields.map((field) => fieldToNormalizedString(field, targetLinkingNumber, normalizeOccurrenceNumber, normalizeEntryTag2));
|
|
352
226
|
strings.sort();
|
|
353
|
-
return strings.join(
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
/*
|
|
357
|
-
|
|
358
|
-
export function removeField6IfNeeded(field, record, fieldsAsString) {
|
|
359
|
-
const pairField = fieldGetSubfield6Pair(field, record);
|
|
360
|
-
const asString = pairField ? fieldsToNormalizedString([field, pairField]) : fieldToNormalizedString(field);
|
|
361
|
-
nvdebug(`SOURCE: ${asString} -- REALITY: ${fieldToString(field)}`);
|
|
362
|
-
const tmp = pairField ? fieldToString(pairField) : 'HUTI';
|
|
363
|
-
nvdebug(`PAIR: ${tmp}`);
|
|
364
|
-
nvdebug(`BASE:\n ${fieldsAsString.join('\n ')}`);
|
|
365
|
-
if (!fieldsAsString.includes(asString)) {
|
|
366
|
-
return;
|
|
367
|
-
}
|
|
368
|
-
nvdebug(`Duplicate $6 removal: ${fieldToString(field)}`);
|
|
369
|
-
record.removeField(field);
|
|
370
|
-
|
|
371
|
-
if (pairField === undefined) {
|
|
372
|
-
return;
|
|
373
|
-
}
|
|
374
|
-
nvdebug(`Duplicate $6 removal (pair): ${fieldToString(pairField)}`);
|
|
375
|
-
record.removeField(pairField);
|
|
227
|
+
return strings.join(" __SEPARATOR__ ");
|
|
376
228
|
}
|
|
377
|
-
*/
|
|
378
|
-
|
|
379
229
|
function getFirstField(record, fields) {
|
|
380
|
-
const fieldsAsStrings = fields.map(field =>
|
|
381
|
-
|
|
382
|
-
//nvdebug(`getFirstField: ${fieldsAsStrings.join('\t')}`);
|
|
383
|
-
const i = record.fields.findIndex(field => fieldsAsStrings.includes((0, _utils.fieldToString)(field)));
|
|
230
|
+
const fieldsAsStrings = fields.map((field) => fieldToString(field));
|
|
231
|
+
const i = record.fields.findIndex((field) => fieldsAsStrings.includes(fieldToString(field)));
|
|
384
232
|
if (i > -1) {
|
|
385
233
|
const field = record.fields[i];
|
|
386
|
-
//nvdebug(`1st F: ${i + 1}/${record.fields.length} ${fieldToString(field)}`);
|
|
387
234
|
return field;
|
|
388
235
|
}
|
|
389
|
-
return
|
|
236
|
+
return void 0;
|
|
390
237
|
}
|
|
391
238
|
function isRelevantSubfield6Chain(fields) {
|
|
392
239
|
if (fields.length < 2) {
|
|
393
|
-
// 1 non-880-field and 1+ 880 fields
|
|
394
240
|
return false;
|
|
395
241
|
}
|
|
396
|
-
const non880 = fields.filter(f => f.tag !==
|
|
242
|
+
const non880 = fields.filter((f) => f.tag !== "880");
|
|
397
243
|
if (non880.length !== 1) {
|
|
398
244
|
return false;
|
|
399
245
|
}
|
|
400
|
-
const linkingNumbers =
|
|
246
|
+
const linkingNumbers = fieldsGetAllSubfield8LinkingNumbers(fields);
|
|
401
247
|
if (linkingNumbers.length !== 0) {
|
|
402
248
|
return false;
|
|
403
249
|
}
|
|
404
|
-
return fields.every(f =>
|
|
250
|
+
return fields.every((f) => fieldHasSubfield(f, "6"));
|
|
405
251
|
}
|
|
406
|
-
function fieldIsFirstFieldInChain(field, chain, record) {
|
|
407
|
-
// Interpretation of first: position of field in record (however, we might have a duplicate field. See tests...)
|
|
252
|
+
export function fieldIsFirstFieldInChain(field, chain, record) {
|
|
408
253
|
const firstField = getFirstField(record, chain);
|
|
409
254
|
if (firstField) {
|
|
410
|
-
return
|
|
255
|
+
return fieldToString(field) === fieldToString(firstField);
|
|
411
256
|
}
|
|
412
257
|
return false;
|
|
413
258
|
}
|
|
414
|
-
function getAllLinkedSubfield6Fields(field, record) {
|
|
259
|
+
export function getAllLinkedSubfield6Fields(field, record) {
|
|
415
260
|
const fields = get6s(field, record);
|
|
416
|
-
const moreFields =
|
|
417
|
-
|
|
418
|
-
// Currently we don't handle fields with more than one $6 and/or $8 subfield.
|
|
261
|
+
const moreFields = add8s(fields, record);
|
|
419
262
|
if (moreFields.length > fields.length) {
|
|
420
|
-
return [];
|
|
263
|
+
return [];
|
|
421
264
|
}
|
|
422
265
|
return moreFields;
|
|
423
266
|
}
|
|
424
|
-
function isFirstLinkedSubfield6Field(field, record) {
|
|
267
|
+
export function isFirstLinkedSubfield6Field(field, record) {
|
|
425
268
|
if (!field.subfields) {
|
|
426
|
-
// Is not a datafield
|
|
427
269
|
return false;
|
|
428
270
|
}
|
|
429
271
|
const chain = getAllLinkedSubfield6Fields(field, record);
|
|
430
272
|
if (!isRelevantSubfield6Chain(chain)) {
|
|
431
|
-
|
|
273
|
+
nvdebug(`Rejected 6: ${fieldsToString(chain)}`);
|
|
432
274
|
return false;
|
|
433
275
|
}
|
|
434
276
|
return fieldIsFirstFieldInChain(field, chain, record);
|
|
435
277
|
}
|
|
436
|
-
function recordGetSubfield6ChainHeads(record) {
|
|
437
|
-
return record.fields.filter(field => isFirstLinkedSubfield6Field(field, record));
|
|
278
|
+
export function recordGetSubfield6ChainHeads(record) {
|
|
279
|
+
return record.fields.filter((field) => isFirstLinkedSubfield6Field(field, record));
|
|
438
280
|
}
|
|
439
|
-
function recordGetMaxSubfield6OccurrenceNumberAsInteger(record) {
|
|
281
|
+
export function recordGetMaxSubfield6OccurrenceNumberAsInteger(record) {
|
|
440
282
|
if (record.fields.length === 0) {
|
|
441
283
|
return 0;
|
|
442
284
|
}
|
|
443
|
-
|
|
444
|
-
const vals = record.fields.map(field => fieldGetMaxSubfield6OccurrenceNumberAsInteger(field));
|
|
285
|
+
const vals = record.fields.map((field) => fieldGetMaxSubfield6OccurrenceNumberAsInteger(field));
|
|
445
286
|
return Math.max(...vals);
|
|
446
287
|
}
|
|
447
|
-
function get6s(field, candidateFields) {
|
|
448
|
-
|
|
449
|
-
// Get all fields with given occurrence number
|
|
450
|
-
const sixes = field.subfields.filter(sf => isValidSubfield6(sf));
|
|
288
|
+
export function get6s(field, candidateFields) {
|
|
289
|
+
const sixes = field.subfields.filter((sf) => isValidSubfield6(sf));
|
|
451
290
|
if (sixes.length === 0) {
|
|
452
291
|
return [field];
|
|
453
292
|
}
|
|
454
|
-
|
|
455
|
-
const occurrenceNumbers = sixes.map(sf => subfield6GetOccurrenceNumber(sf)).filter(value => value !==
|
|
456
|
-
|
|
457
|
-
const relevantFields = candidateFields.filter(f => occurrenceNumbers.some(o => fieldHasOccurrenceNumber(f, o)));
|
|
458
|
-
|
|
459
|
-
relevantFields.forEach(f =>
|
|
293
|
+
nvdebug(`SIXES: ${sixes.length}`);
|
|
294
|
+
const occurrenceNumbers = sixes.map((sf) => subfield6GetOccurrenceNumber(sf)).filter((value) => value !== void 0 && value !== "00");
|
|
295
|
+
nvdebug(occurrenceNumbers.join(" -- "));
|
|
296
|
+
const relevantFields = candidateFields.filter((f) => occurrenceNumbers.some((o) => fieldHasOccurrenceNumber(f, o)));
|
|
297
|
+
nvdebug(`${fieldToString(field)}: $6-RELFIELDS FOUND: ${relevantFields.length}...`);
|
|
298
|
+
relevantFields.forEach((f) => nvdebug(fieldToString(f)));
|
|
460
299
|
return relevantFields;
|
|
461
300
|
}
|
|
462
|
-
function resetSubfield6Tag(subfield, tag) {
|
|
301
|
+
export function resetSubfield6Tag(subfield, tag) {
|
|
463
302
|
if (!isValidSubfield6(subfield)) {
|
|
464
303
|
return;
|
|
465
304
|
}
|
|
466
|
-
// NB! mainly for 1XX<->7XX transfers
|
|
467
305
|
const newValue = `${tag}-${subfield.value.substring(4)}`;
|
|
468
|
-
|
|
306
|
+
nvdebug(`Set subfield $6 value from ${subfieldToString(subfield)} to ${newValue}`, debugDev);
|
|
469
307
|
subfield.value = newValue;
|
|
470
308
|
}
|
|
471
|
-
//# sourceMappingURL=subfield6Utils.js.map
|
|
309
|
+
//# sourceMappingURL=subfield6Utils.js.map
|