@natlibfi/marc-record-validators-melinda 11.6.6 → 11.6.7-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 +1 -5
- package/dist/access-rights.js.map +1 -1
- package/dist/addMissingField336.js +1 -1
- package/dist/addMissingField336.js.map +1 -1
- package/dist/cyrillux-usemarcon-replacement.js +41 -45
- package/dist/cyrillux-usemarcon-replacement.js.map +1 -1
- package/dist/cyrillux.js +13 -17
- package/dist/cyrillux.js.map +1 -1
- package/dist/disambiguateSeriesStatements.js +3 -4
- package/dist/disambiguateSeriesStatements.js.map +1 -1
- package/dist/double-commas.js +2 -1
- package/dist/double-commas.js.map +1 -1
- package/dist/duplicates-ind1.js +1 -1
- package/dist/duplicates-ind1.js.map +1 -1
- package/dist/empty-fields.js +0 -4
- package/dist/empty-fields.js.map +1 -1
- package/dist/ending-punctuation.js +21 -49
- package/dist/ending-punctuation.js.map +1 -1
- package/dist/ending-whitespace.js +0 -4
- package/dist/ending-whitespace.js.map +1 -1
- package/dist/field-008-18-34-character-groups.js +4 -5
- package/dist/field-008-18-34-character-groups.js.map +1 -1
- package/dist/field-505-separators.js +8 -6
- package/dist/field-505-separators.js.map +1 -1
- package/dist/field-521-fix.js +5 -6
- package/dist/field-521-fix.js.map +1 -1
- package/dist/field-exclusion.js +5 -12
- package/dist/field-exclusion.js.map +1 -1
- package/dist/field-exclusion.spec.js +3 -5
- package/dist/field-exclusion.spec.js.map +1 -1
- package/dist/field-structure.js +2 -5
- package/dist/field-structure.js.map +1 -1
- package/dist/fields-present.js +1 -1
- package/dist/fields-present.js.map +1 -1
- package/dist/fields-present.spec.js +1 -1
- package/dist/fields-present.spec.js.map +1 -1
- package/dist/fix-33X.js +5 -6
- package/dist/fix-33X.js.map +1 -1
- package/dist/fix-country-codes.js +3 -4
- package/dist/fix-country-codes.js.map +1 -1
- package/dist/fix-language-codes.js +12 -9
- package/dist/fix-language-codes.js.map +1 -1
- package/dist/fixRelatorTerms.js +8 -8
- package/dist/fixRelatorTerms.js.map +1 -1
- package/dist/fixed-fields.js +1 -4
- package/dist/fixed-fields.js.map +1 -1
- package/dist/identical-fields.js +2 -3
- package/dist/identical-fields.js.map +1 -1
- package/dist/indicator-fixes.js +14 -15
- package/dist/indicator-fixes.js.map +1 -1
- package/dist/isbn-issn.js +8 -11
- package/dist/isbn-issn.js.map +1 -1
- package/dist/item-language.js +5 -12
- package/dist/item-language.js.map +1 -1
- package/dist/merge-fields/counterpartField.js +6 -8
- package/dist/merge-fields/counterpartField.js.map +1 -1
- package/dist/merge-fields/index.js +3 -3
- package/dist/merge-fields/index.js.map +1 -1
- package/dist/merge-fields/mergeConstraints.js +0 -1
- package/dist/merge-fields/mergeConstraints.js.map +1 -1
- package/dist/merge-fields/mergeField.js +12 -18
- package/dist/merge-fields/mergeField.js.map +1 -1
- package/dist/merge-fields/mergeIndicator.js +5 -5
- package/dist/merge-fields/mergeIndicator.js.map +1 -1
- package/dist/merge-fields/mergeOrAddPostprocess.js +6 -9
- package/dist/merge-fields/mergeOrAddPostprocess.js.map +1 -1
- package/dist/merge-fields/mergeOrAddSubfield.js +6 -8
- package/dist/merge-fields/mergeOrAddSubfield.js.map +1 -1
- package/dist/merge-fields/mergeSubfield.js +8 -8
- package/dist/merge-fields/mergeSubfield.js.map +1 -1
- package/dist/merge-fields/removeDuplicateSubfields.js +1 -2
- package/dist/merge-fields/removeDuplicateSubfields.js.map +1 -1
- package/dist/merge-fields/worldKnowledge.js +1 -1
- package/dist/merge-fields/worldKnowledge.js.map +1 -1
- package/dist/mergeField500Lisapainokset.js +0 -3
- package/dist/mergeField500Lisapainokset.js.map +1 -1
- package/dist/mergeRelatorTermFields.js +3 -3
- package/dist/mergeRelatorTermFields.js.map +1 -1
- package/dist/modernize-502.js +6 -6
- package/dist/modernize-502.js.map +1 -1
- package/dist/multiple-subfield-0.js +4 -4
- package/dist/multiple-subfield-0.js.map +1 -1
- package/dist/non-breaking-space.js +0 -4
- package/dist/non-breaking-space.js.map +1 -1
- package/dist/normalize-dashes.js +5 -4
- package/dist/normalize-dashes.js.map +1 -1
- package/dist/normalize-identifiers.js +6 -6
- package/dist/normalize-identifiers.js.map +1 -1
- package/dist/normalize-qualifying-information.js +4 -4
- package/dist/normalize-qualifying-information.js.map +1 -1
- package/dist/normalize-utf8-diacritics.js +7 -7
- package/dist/normalize-utf8-diacritics.js.map +1 -1
- package/dist/normalizeFieldForComparison.js +21 -20
- package/dist/normalizeFieldForComparison.js.map +1 -1
- package/dist/normalizeSubfieldValueForComparison.js +1 -2
- package/dist/normalizeSubfieldValueForComparison.js.map +1 -1
- package/dist/prepublicationUtils.js +3 -3
- package/dist/prepublicationUtils.js.map +1 -1
- package/dist/punctuation/index.js +14 -31
- package/dist/punctuation/index.js.map +1 -1
- package/dist/punctuation2.js +9 -10
- package/dist/punctuation2.js.map +1 -1
- package/dist/reindexSubfield6OccurenceNumbers.js +8 -9
- package/dist/reindexSubfield6OccurenceNumbers.js.map +1 -1
- package/dist/removeDuplicateDataFields.js +18 -20
- package/dist/removeDuplicateDataFields.js.map +1 -1
- package/dist/removeInferiorDataFields.js +16 -19
- package/dist/removeInferiorDataFields.js.map +1 -1
- package/dist/resolvable-ext-references-melinda.js +4 -8
- package/dist/resolvable-ext-references-melinda.js.map +1 -1
- package/dist/resolveOrphanedSubfield6s.js +9 -9
- package/dist/resolveOrphanedSubfield6s.js.map +1 -1
- package/dist/sanitize-vocabulary-source-codes.js +9 -9
- package/dist/sanitize-vocabulary-source-codes.js.map +1 -1
- package/dist/sort-tags.js +2 -2
- package/dist/sort-tags.js.map +1 -1
- package/dist/sortFields.js +4 -9
- package/dist/sortFields.js.map +1 -1
- package/dist/sortRelatorTerms.js +4 -5
- package/dist/sortRelatorTerms.js.map +1 -1
- package/dist/sortSubfields.js +5 -6
- package/dist/sortSubfields.js.map +1 -1
- package/dist/stripPunctuation.js +2 -2
- package/dist/stripPunctuation.js.map +1 -1
- package/dist/subfield-exclusion.js +4 -11
- package/dist/subfield-exclusion.js.map +1 -1
- package/dist/subfield6Utils.js +12 -11
- package/dist/subfield6Utils.js.map +1 -1
- package/dist/subfield8Utils.js +8 -9
- package/dist/subfield8Utils.js.map +1 -1
- package/dist/subfieldValueNormalizations.js +5 -8
- package/dist/subfieldValueNormalizations.js.map +1 -1
- package/dist/sync-007-and-300.js +8 -8
- package/dist/sync-007-and-300.js.map +1 -1
- package/dist/translate-terms.js +5 -6
- package/dist/translate-terms.js.map +1 -1
- package/dist/typeOfDate-008.js +3 -4
- package/dist/typeOfDate-008.js.map +1 -1
- package/dist/unicode-decomposition.js +1 -1
- package/dist/unicode-decomposition.js.map +1 -1
- package/dist/update-field-540.js +5 -6
- package/dist/update-field-540.js.map +1 -1
- package/dist/urn.js +4 -9
- package/dist/urn.js.map +1 -1
- package/dist/utils.js +5 -9
- package/dist/utils.js.map +1 -1
- package/eslint.config.mjs +53 -0
- package/package.json +12 -13
- package/src/access-rights.js +4 -4
- package/src/addMissingField336.js +1 -1
- package/src/cyrillux-usemarcon-replacement.js +38 -38
- package/src/cyrillux.js +14 -14
- package/src/disambiguateSeriesStatements.js +3 -3
- package/src/double-commas.js +2 -2
- package/src/duplicates-ind1.js +1 -1
- package/src/empty-fields.js +4 -4
- package/src/ending-punctuation.js +46 -49
- package/src/ending-whitespace.js +0 -2
- package/src/field-008-18-34-character-groups.js +5 -5
- package/src/field-505-separators.js +6 -6
- package/src/field-521-fix.js +6 -6
- package/src/field-exclusion.js +12 -12
- package/src/field-exclusion.spec.js +4 -4
- package/src/field-structure.js +5 -5
- package/src/fields-present.js +1 -1
- package/src/fields-present.spec.js +1 -1
- package/src/fix-33X.js +5 -5
- package/src/fix-country-codes.js +3 -3
- package/src/fix-language-codes.js +10 -9
- package/src/fixRelatorTerms.js +8 -8
- package/src/fixed-fields.js +3 -3
- package/src/identical-fields.js +3 -3
- package/src/indicator-fixes.js +15 -15
- package/src/isbn-issn.js +11 -11
- package/src/item-language.js +10 -10
- package/src/merge-fields/counterpartField.js +7 -7
- package/src/merge-fields/index.js +3 -3
- package/src/merge-fields/mergeConstraints.js +1 -1
- package/src/merge-fields/mergeField.js +16 -17
- package/src/merge-fields/mergeIndicator.js +5 -5
- package/src/merge-fields/mergeOrAddPostprocess.js +9 -9
- package/src/merge-fields/mergeOrAddSubfield.js +6 -6
- package/src/merge-fields/mergeSubfield.js +8 -8
- package/src/merge-fields/removeDuplicateSubfields.js +1 -2
- package/src/merge-fields/worldKnowledge.js +1 -1
- package/src/mergeField500Lisapainokset.js +0 -2
- package/src/mergeRelatorTermFields.js +3 -3
- package/src/modernize-502.js +6 -6
- package/src/multiple-subfield-0.js +4 -4
- package/src/non-breaking-space.js +0 -2
- package/src/normalize-dashes.js +4 -4
- package/src/normalize-identifiers.js +6 -6
- package/src/normalize-qualifying-information.js +4 -4
- package/src/normalize-utf8-diacritics.js +7 -7
- package/src/normalizeFieldForComparison.js +20 -20
- package/src/normalizeSubfieldValueForComparison.js +1 -1
- package/src/prepublicationUtils.js +3 -3
- package/src/punctuation/index.js +29 -29
- package/src/punctuation2.js +10 -10
- package/src/reindexSubfield6OccurenceNumbers.js +9 -9
- package/src/removeDuplicateDataFields.js +21 -23
- package/src/removeInferiorDataFields.js +19 -19
- package/src/resolvable-ext-references-melinda.js +8 -8
- package/src/resolveOrphanedSubfield6s.js +9 -9
- package/src/sanitize-vocabulary-source-codes.js +8 -8
- package/src/sort-tags.js +2 -2
- package/src/sortFields.js +6 -6
- package/src/sortRelatorTerms.js +5 -5
- package/src/sortSubfields.js +6 -6
- package/src/stripPunctuation.js +2 -2
- package/src/subfield-exclusion.js +11 -11
- package/src/subfield6Utils.js +11 -11
- package/src/subfield8Utils.js +6 -9
- package/src/subfieldValueNormalizations.js +5 -7
- package/src/sync-007-and-300.js +8 -8
- package/src/translate-terms.js +3 -5
- package/src/typeOfDate-008.js +3 -3
- package/src/unicode-decomposition.js +1 -1
- package/src/update-field-540.js +6 -6
- package/src/urn.js +8 -6
- package/src/utils.js +8 -8
- package/.eslintignore +0 -1
|
@@ -22,7 +22,7 @@ export default function () {
|
|
|
22
22
|
normalizeSubfieldValues(field, catLang);
|
|
23
23
|
});
|
|
24
24
|
|
|
25
|
-
// message.valid = !(message.message.length >= 1);
|
|
25
|
+
// message.valid = !(message.message.length >= 1);
|
|
26
26
|
return res;
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -34,7 +34,7 @@ export default function () {
|
|
|
34
34
|
validateField(field, res, catLang);
|
|
35
35
|
});
|
|
36
36
|
|
|
37
|
-
res.valid = !(res.message.length >= 1);
|
|
37
|
+
res.valid = !(res.message.length >= 1);
|
|
38
38
|
return res;
|
|
39
39
|
}
|
|
40
40
|
|
|
@@ -47,7 +47,7 @@ export default function () {
|
|
|
47
47
|
const normalizedField = normalizeSubfieldValues(clone(field), catLang);
|
|
48
48
|
const mod = fieldToString(normalizedField);
|
|
49
49
|
if (orig !== mod) { // Fail as the input is "broken"/"crap"/sumthing
|
|
50
|
-
res.message.push(`'${orig}' requires subfield internal mods/normalization`);
|
|
50
|
+
res.message.push(`'${orig}' requires subfield internal mods/normalization`);
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
53
|
return;
|
|
@@ -57,7 +57,6 @@ export default function () {
|
|
|
57
57
|
|
|
58
58
|
function handleInitials(value, subfieldCode, field) {
|
|
59
59
|
// MRA-267/273
|
|
60
|
-
/* eslint-disable */
|
|
61
60
|
if (field.ind1 === '1' && subfieldCode === 'a' && ['100', '600', '700', '800'].includes(field.tag) && !fieldHasSubfield(field, '0')) {
|
|
62
61
|
// Fix MRA-267/273 (partial): Handle the most common case(s). (And extend them rules later on if the need arises):
|
|
63
62
|
// No longest initial sequence I've seen is six (in a Sri Lankan name).
|
|
@@ -69,7 +68,6 @@ function handleInitials(value, subfieldCode, field) {
|
|
|
69
68
|
|
|
70
69
|
return value;
|
|
71
70
|
|
|
72
|
-
/* eslint-enable */
|
|
73
71
|
function initialsInRow(str) {
|
|
74
72
|
// initial space confirms us that it's an initial
|
|
75
73
|
return str.match(/ (?:[A-Z]|Å|Ä|Ö)\.(?:[A-Z]|Å|Ä|Ö)/u);
|
|
@@ -120,7 +118,7 @@ function getNormalizedValue(subfield, field, catLang) {
|
|
|
120
118
|
function handleMovies(value) {
|
|
121
119
|
if (subfield.code === 'a' && ['130', '630', '730'].includes(field.tag)) {
|
|
122
120
|
// MRA-614: "(elokuva, 2000)" => "(elokuva : 2000)""
|
|
123
|
-
return value.replace(/\((elokuva), (19[0-9][0-9]|20[0-2][0-9])\)/u, '($1 : $2)');
|
|
121
|
+
return value.replace(/\((elokuva), (19[0-9][0-9]|20[0-2][0-9])\)/u, '($1 : $2)');
|
|
124
122
|
}
|
|
125
123
|
return value;
|
|
126
124
|
}
|
|
@@ -157,7 +155,7 @@ function normalizeSubfieldValues(field, catLang) {
|
|
|
157
155
|
if (!field.subfields[index].value) {
|
|
158
156
|
return;
|
|
159
157
|
}
|
|
160
|
-
field.subfields[index].value = getNormalizedValue(subfield, field, catLang);
|
|
158
|
+
field.subfields[index].value = getNormalizedValue(subfield, field, catLang);
|
|
161
159
|
});
|
|
162
160
|
return field;
|
|
163
161
|
}
|
package/src/sync-007-and-300.js
CHANGED
|
@@ -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)); // eslint-disable-line array-callback-return
|
|
18
18
|
return res;
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -25,7 +25,7 @@ export default function () {
|
|
|
25
25
|
validateField(field, res, record);
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
-
res.valid = !(res.message.length >= 1);
|
|
28
|
+
res.valid = !(res.message.length >= 1);
|
|
29
29
|
return res;
|
|
30
30
|
}
|
|
31
31
|
|
|
@@ -38,13 +38,13 @@ export default function () {
|
|
|
38
38
|
const normalizedField = fixField(clone(field), record);
|
|
39
39
|
const mod = fieldToString(normalizedField);
|
|
40
40
|
if (orig !== mod) { // Fail as the input is "broken"/"crap"/sumthing
|
|
41
|
-
res.message.push(`FIXABLE: '${orig}' => '${mod}'`);
|
|
41
|
+
res.message.push(`FIXABLE: '${orig}' => '${mod}'`);
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
/*
|
|
46
46
|
if (fieldHasUnfixableStuff(field)) {
|
|
47
|
-
res.message.push(`CAN'T BE FIXED AUTOMATICALLY: '${orig}'`);
|
|
47
|
+
res.message.push(`CAN'T BE FIXED AUTOMATICALLY: '${orig}'`);
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
50
|
*/
|
|
@@ -91,17 +91,17 @@ export default function () {
|
|
|
91
91
|
if (!fieldIsBluray007(field)) {
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
|
-
//field.value = field.value.substring(0, 4) + 's' + field.value.substring(5);
|
|
94
|
+
//field.value = field.value.substring(0, 4) + 's' + field.value.substring(5);
|
|
95
95
|
//field.value = field.value.replace(/^(?:v...)s/u, `${1}v`); // eslint-disable-line functional/immutable-data, no-template-curly-in-string
|
|
96
|
-
field.value = `${field.value.substring(0, 4)}v${field.value.substring(5)}`;
|
|
96
|
+
field.value = `${field.value.substring(0, 4)}v${field.value.substring(5)}`;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
function convert007DvdToBluray(field) {
|
|
100
100
|
if (!fieldIsDvd007(field)) {
|
|
101
101
|
return;
|
|
102
102
|
}
|
|
103
|
-
//field.value = field.value.replace(/^(?:v...)v/u, `${1}s`);
|
|
104
|
-
field.value = `${field.value.substring(0, 4)}s${field.value.substring(5)}`;
|
|
103
|
+
//field.value = field.value.replace(/^(?:v...)v/u, `${1}s`);
|
|
104
|
+
field.value = `${field.value.substring(0, 4)}s${field.value.substring(5)}`;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
function fixField(field, record) {
|
package/src/translate-terms.js
CHANGED
|
@@ -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)); // eslint-disable-line array-callback-return
|
|
27
27
|
|
|
28
|
-
newFields.forEach(nf => record.insertField(nf));
|
|
28
|
+
newFields.forEach(nf => record.insertField(nf)); // eslint-disable-line array-callback-return
|
|
29
29
|
|
|
30
30
|
const newFieldsAsStrings = newFields.map(f => fieldToString(f));
|
|
31
31
|
|
|
@@ -78,13 +78,11 @@ export default function () {
|
|
|
78
78
|
async function deriveMissingFields(record, tag) {
|
|
79
79
|
const pairlessFields = getPairlessFinnishAndSwedishFields(record, tag);
|
|
80
80
|
|
|
81
|
-
/* eslint-disable */
|
|
82
81
|
// Dunno how to handle loop+promise combo in our normal coding style. Spent half a day trying... (I reckon it takes like 2 minuts to do this properly...)
|
|
83
82
|
let prefLabels = [];
|
|
84
83
|
for (let i=0; i < pairlessFields.length; i += 1) {
|
|
85
84
|
prefLabels[i] = await getPrefLabel(pairlessFields[i]);
|
|
86
85
|
}
|
|
87
|
-
/* eslint-enable */
|
|
88
86
|
|
|
89
87
|
const missingFields = pairlessFields.map((f, i) => pairField(f, prefLabels[i]));
|
|
90
88
|
return missingFields.filter(f => f);
|
|
@@ -176,7 +174,7 @@ export default function () {
|
|
|
176
174
|
return termCache[uri];
|
|
177
175
|
}
|
|
178
176
|
const tmp = await getTermDataFromFinto(uri);
|
|
179
|
-
termCache[uri] = tmp;
|
|
177
|
+
termCache[uri] = tmp;
|
|
180
178
|
return tmp;
|
|
181
179
|
}
|
|
182
180
|
|
package/src/typeOfDate-008.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import createDebugLogger from 'debug';
|
|
2
2
|
|
|
3
|
-
const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/typeOfDate-008');
|
|
3
|
+
const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/typeOfDate-008');
|
|
4
4
|
|
|
5
5
|
export default function () {
|
|
6
6
|
return {
|
|
@@ -24,12 +24,12 @@ export default function () {
|
|
|
24
24
|
|
|
25
25
|
function fix(record) {
|
|
26
26
|
// LDR/06=t ja 11-14=####, niin LDR/06 muutetaan s:ksi
|
|
27
|
-
const [f008] = record.pop(/008/u);
|
|
27
|
+
const [f008] = record.pop(/008/u);
|
|
28
28
|
const c06 = f008.value.substring(6, 7);
|
|
29
29
|
const c1114 = f008.value.substring(11, 15);
|
|
30
30
|
// if 008 06 = s, and 11-14 = #### (not year/digits)
|
|
31
31
|
if (c06 === 't' && !(/[0-9u]{4}/u).test(c1114)) {
|
|
32
|
-
f008.value = `${f008.value.substring(0, 6)}s${f008.value.substring(7)}`;
|
|
32
|
+
f008.value = `${f008.value.substring(0, 6)}s${f008.value.substring(7)}`;
|
|
33
33
|
record.insertField(f008);
|
|
34
34
|
return true;
|
|
35
35
|
}
|
|
@@ -122,7 +122,7 @@ export default function () {
|
|
|
122
122
|
field.subfields
|
|
123
123
|
.filter(subfield => PATTERN.test(subfield.value))
|
|
124
124
|
.forEach(subfield => {
|
|
125
|
-
subfield.value = convert(subfield.value);
|
|
125
|
+
subfield.value = convert(subfield.value);
|
|
126
126
|
});
|
|
127
127
|
});
|
|
128
128
|
}
|
package/src/update-field-540.js
CHANGED
|
@@ -44,9 +44,9 @@ const licences = [
|
|
|
44
44
|
];
|
|
45
45
|
|
|
46
46
|
function findSubfieldIndex(field, subfield) {
|
|
47
|
-
subfield.nvtmp = 1;
|
|
47
|
+
subfield.nvtmp = 1;
|
|
48
48
|
const index = field.subfields.findIndex(sf => sf.nvtmp === 1);
|
|
49
|
-
delete subfield.nvtmp;
|
|
49
|
+
delete subfield.nvtmp;
|
|
50
50
|
return index;
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -69,9 +69,9 @@ function validUrlInSubfieldU(subfieldU, license) {
|
|
|
69
69
|
|
|
70
70
|
function fixC(field, subfieldC) {
|
|
71
71
|
// MELINDA-2431_
|
|
72
|
-
subfieldC.code = 'f';
|
|
72
|
+
subfieldC.code = 'f';
|
|
73
73
|
const index = findSubfieldIndex(field, subfieldC);
|
|
74
|
-
field.subfields.splice(index + 1, 0, {'code': '2', 'value': 'cc'});
|
|
74
|
+
field.subfields.splice(index + 1, 0, {'code': '2', 'value': 'cc'});
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
function fieldHasOldCcLicense(field, fix) {
|
|
@@ -84,9 +84,9 @@ function fieldHasOldCcLicense(field, fix) {
|
|
|
84
84
|
return false;
|
|
85
85
|
}
|
|
86
86
|
//nvdebug(` Found valid license`);
|
|
87
|
-
if (fix) {
|
|
87
|
+
if (fix) {
|
|
88
88
|
const subfieldsC = field.subfields.filter(sf => validLicenseInSubfieldC(sf, validLicense));
|
|
89
|
-
subfieldsC.forEach(c => fixC(field, c));
|
|
89
|
+
subfieldsC.forEach(c => fixC(field, c)); // eslint-disable-line array-callback-return
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
return true;
|
package/src/urn.js
CHANGED
|
@@ -45,7 +45,7 @@ export default function (isLegalDeposit = false, useMelindaTemp = true) {
|
|
|
45
45
|
// We add the URN even if we're not getting the legalDeposit - where does this URN resolve?
|
|
46
46
|
// We probably should not do these additions
|
|
47
47
|
|
|
48
|
-
if (f856sUrn.length === 0) {
|
|
48
|
+
if (f856sUrn.length === 0) {
|
|
49
49
|
const {code, value, generated} = await createURNSubfield(record);
|
|
50
50
|
|
|
51
51
|
if (generated && useMelindaTemp) {
|
|
@@ -69,7 +69,9 @@ export default function (isLegalDeposit = false, useMelindaTemp = true) {
|
|
|
69
69
|
});
|
|
70
70
|
|
|
71
71
|
return true;
|
|
72
|
-
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (isLegalDeposit) {
|
|
73
75
|
|
|
74
76
|
// We add here legal deposit information to all URN-f856s - we probably should not do this
|
|
75
77
|
// We should add extra f856 URN / URNs for legal deposits that already have a open (non-legal-deposit) URN
|
|
@@ -78,16 +80,16 @@ export default function (isLegalDeposit = false, useMelindaTemp = true) {
|
|
|
78
80
|
|
|
79
81
|
f856sUrn.forEach(f => {
|
|
80
82
|
// Change phrase from old to new if field with old phrase is found
|
|
81
|
-
if (f.subfields.some(sf => hasOld856LdPhrase(sf))) {
|
|
82
|
-
f.subfields
|
|
83
|
+
if (f.subfields.some(sf => hasOld856LdPhrase(sf))) {
|
|
84
|
+
f.subfields
|
|
83
85
|
.find(sf => hasOld856LdPhrase(sf))
|
|
84
86
|
.value = 'Käytettävissä vapaakappaletyöasemilla';
|
|
85
87
|
}
|
|
86
88
|
|
|
87
89
|
// Create subfields if necessary
|
|
88
90
|
ldSubfields.forEach(ldsf => {
|
|
89
|
-
if (!f.subfields.some(sf => sf.code === ldsf.code && sf.value === ldsf.value && !hasOld856LdPhrase(sf))) {
|
|
90
|
-
f.subfields.push(ldsf);
|
|
91
|
+
if (!f.subfields.some(sf => sf.code === ldsf.code && sf.value === ldsf.value && !hasOld856LdPhrase(sf))) {
|
|
92
|
+
f.subfields.push(ldsf);
|
|
91
93
|
}
|
|
92
94
|
});
|
|
93
95
|
});
|
package/src/utils.js
CHANGED
|
@@ -18,7 +18,7 @@ export function isElectronicMaterial(record) {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
export function nvdebug(message, func = undefined) {
|
|
21
|
-
if (func) {
|
|
21
|
+
if (func) {
|
|
22
22
|
func(message);
|
|
23
23
|
}
|
|
24
24
|
//console.info(message); // eslint-disable-line no-console
|
|
@@ -55,11 +55,11 @@ export function recordToString(record) {
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
export function removeSubfield(record, tag, subfieldCode) {
|
|
58
|
-
record.fields = record.fields.map(field => {
|
|
58
|
+
record.fields = record.fields.map(field => {
|
|
59
59
|
if (field.tag !== tag || !field.subfields) { // Don't procss irrelevant fields
|
|
60
60
|
return field;
|
|
61
61
|
}
|
|
62
|
-
field.subfields = field.subfields.filter(sf => sf.code !== subfieldCode);
|
|
62
|
+
field.subfields = field.subfields.filter(sf => sf.code !== subfieldCode);
|
|
63
63
|
if (field.subfields.length === 0) {
|
|
64
64
|
return false;
|
|
65
65
|
}
|
|
@@ -68,12 +68,12 @@ export function removeSubfield(record, tag, subfieldCode) {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
export function recordRemoveValuelessSubfields(record) {
|
|
71
|
-
record.fields = record.fields.map(field => {
|
|
71
|
+
record.fields = record.fields.map(field => {
|
|
72
72
|
if (!field.subfields) { // Keep control fields
|
|
73
73
|
return field;
|
|
74
74
|
}
|
|
75
75
|
// Remove empty subfields from datafields:
|
|
76
|
-
field.subfields = field.subfields.filter(sf => sf.value);
|
|
76
|
+
field.subfields = field.subfields.filter(sf => sf.value);
|
|
77
77
|
|
|
78
78
|
if (field.subfields && field.subfields.length === 0) {
|
|
79
79
|
return false; // Return false instead of a field if field has no subfields left. These will soon be filtered out.
|
|
@@ -99,7 +99,7 @@ export function fieldsToString(fields) {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
export function nvdebugFieldArray(fields, prefix = ' ', func = undefined) {
|
|
102
|
-
fields.forEach(field => nvdebug(`${prefix}${fieldToString(field)}`, func));
|
|
102
|
+
fields.forEach(field => nvdebug(`${prefix}${fieldToString(field)}`, func)); // eslint-disable-line array-callback-return
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
export function isControlSubfieldCode(subfieldCode) {
|
|
@@ -146,7 +146,7 @@ export function fieldHasNSubfields(field, subfieldCode/*, subfieldValue = null*/
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
export function removeCopyright(value) {
|
|
149
|
-
return value.replace(/^(?:c|p|©|℗|Cop\. ?) ?((?:1[0-9][0-9][0-9]|20[012][0-9])\.?)$/ui, '$1');
|
|
149
|
+
return value.replace(/^(?:c|p|©|℗|Cop\. ?) ?((?:1[0-9][0-9][0-9]|20[012][0-9])\.?)$/ui, '$1');
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
function isNonStandardNonrepeatableSubfield(tag, subfieldCode) {
|
|
@@ -217,7 +217,7 @@ export function marc21GetTagsLegalInd2Value(tag) {
|
|
|
217
217
|
}
|
|
218
218
|
|
|
219
219
|
export function nvdebugSubfieldArray(subfields, prefix = ' ', func = undefined) {
|
|
220
|
-
subfields.forEach(subfield => nvdebug(`${prefix}${subfieldToString(subfield)}`, func));
|
|
220
|
+
subfields.forEach(subfield => nvdebug(`${prefix}${subfieldToString(subfield)}`, func)); // eslint-disable-line array-callback-return
|
|
221
221
|
}
|
|
222
222
|
|
|
223
223
|
export function subfieldsAreIdentical(subfieldA, subfieldB) {
|
package/.eslintignore
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
coverage/
|