@natlibfi/marc-record-validators-melinda 9.0.12 → 9.0.13
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.
|
@@ -5,8 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
exports.fieldNormalizeControlNumbers = fieldNormalizeControlNumbers;
|
|
8
|
+
exports.isIsni = isIsni;
|
|
8
9
|
exports.normalizeAs = normalizeAs;
|
|
9
10
|
exports.normalizeControlSubfieldValue = normalizeControlSubfieldValue;
|
|
11
|
+
exports.normalizeIsni = normalizeIsni;
|
|
10
12
|
|
|
11
13
|
var _clone = _interopRequireDefault(require("clone"));
|
|
12
14
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-identifiers.js","names":["fieldToString","f","tag","ind1","ind2","formatSubfields","field","subfields","map","sf","code","value","join","description","validate","fix","record","res","message","valid","fields","forEach","fieldNormalizeControlNumbers","validateField","length","normalizedField","clone","orig","mod","push","alephInternal01","alephInternal10","alephInternal11","alephInternal12","alephInternal13","standard01","standard10","standard11","standard12","standard13","both01","ALEPH_INTERNAL","STANDARD","both10","both11","both12","both13","mappings","normalizeNineDigitIDs","targetFormat","nineDigitTail","slice","test","currPrefix","isIsni","normalizeIsni","replace","normalizeControlSubfieldValue","normalizedValue","normalizeAs","subfieldCode","includes","undefined"],"sources":["../src/normalize-identifiers.js"],"sourcesContent":["// Relocated from melinda-marc-record-merge-reducers (and renamed)\n//import createDebugLogger from 'debug';\nimport clone from 'clone';\n//const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda:normalizeIdentifiers');\n\n\nfunction fieldToString(f) {\n return `${f.tag} ${f.ind1}${f.ind2} ‡${formatSubfields(f)}`;\n\n function formatSubfields(field) {\n //return field.subfields.map(sf => `${sf.code}${sf.value || ''}`).join('‡');\n return field.subfields.map(sf => `${sf.code}${sf.value}`).join(' ‡');\n }\n}\n\n/*\nfunction nvdebug(message, func) {\n if (func) { // eslint-disable-line functional/no-conditional-statement\n func(message);\n }\n console.info(message); // eslint-disable-line no-console\n}\n*/\n\nexport default function () {\n\n // NB! We should and could handle ISNIs here as well.\n return {\n description: 'Normalizes identifiers such as subfield $0 values',\n validate, fix\n };\n\n function fix(record) {\n const res = {message: [], fix: [], valid: true};\n //message.fix = []; // eslint-disable-line functional/immutable-data\n\n // Actual parsing of all fields\n /*\n if (!record.fields) {\n return false;\n }\n */\n\n //nvdebug(`NORMALIZE CONTROL NUMBER FIX`, debug);\n record.fields.forEach(field => {\n //nvdebug(` NORMALIZE CONTROL NUMBER FIX ${fieldToString(field)}`, debug);\n\n fieldNormalizeControlNumbers(field);\n //validateField(field, true, message);\n });\n\n // message.valid = !(message.message.length >= 1); // eslint-disable-line functional/immutable-data\n return res;\n }\n\n function validate(record) {\n const res = {message: []};\n //nvdebug(`NORMALIZE CONTROL NUMBER VALIDATE`, debug);\n // Actual parsing of all fields\n /*\n if (!record.fields) {\n return false;\n }\n */\n\n record.fields.forEach(field => {\n //nvdebug(` NORMALIZE CONTROL NUMBER VALIDATE ${fieldToString(field)}`, debug);\n validateField(field, res);\n });\n\n res.valid = !(res.message.length >= 1); // eslint-disable-line functional/immutable-data\n return res;\n }\n\n function validateField(field, res) {\n if (!field.subfields) {\n return;\n }\n\n const normalizedField = clone(field);\n fieldNormalizeControlNumbers(normalizedField);\n\n const orig = fieldToString(field);\n const mod = fieldToString(normalizedField);\n if (orig !== mod) { // Fail as the input is \"broken\"/\"crap\"/sumthing\n res.message.push(`'${orig}' could do with control number identifier normalization`); // eslint-disable-line functional/immutable-data\n return;\n }\n\n return;\n }\n}\n\nconst alephInternal01 = '(FIN01)';\nconst alephInternal10 = '(FIN10)';\nconst alephInternal11 = '(FIN11)';\nconst alephInternal12 = '(FIN12)';\nconst alephInternal13 = '(FIN13)';\n\nconst standard01 = '(FI-MELINDA)';\nconst standard10 = '(FI-ASTERI-S)';\nconst standard11 = '(FI-ASTERI-N)';\nconst standard12 = '(FI-ASTERI-A)';\nconst standard13 = '(FI-ASTERI-W)';\n\nconst both01 = {ALEPH_INTERNAL: alephInternal01, STANDARD: standard01};\nconst both10 = {ALEPH_INTERNAL: alephInternal10, STANDARD: standard10};\nconst both11 = {ALEPH_INTERNAL: alephInternal11, STANDARD: standard11};\nconst both12 = {ALEPH_INTERNAL: alephInternal12, STANDARD: standard12};\nconst both13 = {ALEPH_INTERNAL: alephInternal13, STANDARD: standard13};\n\nconst mappings = {\n 'FCC': both01,\n '(FI-ASTERI-A)': both12,\n '(FI-ASTERI-N)': both11,\n '(FI-ASTERI-S)': both10,\n '(FI-ASTERI-W)': both13,\n '(FI-MELINDA)': both01,\n '(FIN01)': both01,\n '(FIN10)': both10,\n '(FIN11)': both11,\n '(FIN12)': both12,\n '(FIN13)': both13,\n 'http://urn.fi/URN:NBN:fi:au:finaf:': both11,\n 'https://urn.fi/URN:NBN:fi:au:finaf:': both11\n};\n\nfunction normalizeNineDigitIDs(value, targetFormat = 'ALEPH_INTERNAL') {\n // $value should be prefix + nine-digits. Do nothing if nine-digit tail condition is not met:\n const nineDigitTail = value.slice(-9);\n if (!(/^[0-9]{9}$/u).test(nineDigitTail)) {\n return value;\n }\n // Normalize prefix:\n const currPrefix = value.slice(0, -9);\n\n if (currPrefix in mappings) {\n //nvdebug(`${currPrefix}, TF:${targetFormat}...`);\n //nvdebug(`${JSON.stringify(mappings[currPrefix])}`);\n return `${mappings[currPrefix][targetFormat]}${nineDigitTail}`;\n }\n return value;\n}\n\nfunction isIsni(value) {\n if ((/^\\(isni\\)(?: ?[0-9]{4}){4}$/u).test(value)) {\n return true;\n }\n if ((/^https:\\/\\/isni.org\\/isni\\/[0-9]{16}$/u).test(value)) {\n return true;\n }\n return false;\n}\n\nfunction normalizeIsni(value) {\n if (isIsni(value)) {\n return `https://isni.org/isni/${value.replace(/[^0-9]/gu, '')}`;\n }\n return value;\n}\n\n\nexport function normalizeControlSubfieldValue(value = '', targetFormat = 'ALEPH_INTERNAL') {\n if (isIsni(value)) {\n return normalizeIsni(value);\n }\n\n const normalizedValue = normalizeNineDigitIDs(value, targetFormat);\n if (normalizedValue !== value) {\n return normalizedValue;\n }\n\n // Something for isni IDs?\n return value;\n}\n\n//export function normalizableSubfieldPrefix(tag, sf) {\nexport function normalizeAs(tag, subfieldCode) {\n //nvdebug(`nAs ${tag}, ${subfieldCode}`);\n if (subfieldCode === '0' || subfieldCode === '1' || subfieldCode === 'w') {\n return 'ALEPH_INTERNAL';\n }\n\n if (tag === '035' && ['a', 'z'].includes(subfieldCode)) {\n return 'STANDARD';\n }\n return undefined;\n}\n\nexport function fieldNormalizeControlNumbers(field) {\n // Rename \"Prefixes\" as \"ControlNumberIdentifiers\"?\n // No, since isni etc... however, just \"ControlNumber\" would do...\n // \"identifiers\" ?\n if (!field.subfields) {\n return;\n }\n\n field.subfields.forEach(sf => {\n const targetFormat = normalizeAs(field.tag, sf.code);\n if (targetFormat !== undefined) {\n //nvdebug(`NORMALIZE SUBFIELD $${sf.code} IN FIELD: '${fieldToString(field)}' TO ${targetFormat}`);\n sf.value = normalizeControlSubfieldValue(sf.value, targetFormat); // eslint-disable-line functional/immutable-data\n return;\n }\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"normalize-identifiers.js","names":["fieldToString","f","tag","ind1","ind2","formatSubfields","field","subfields","map","sf","code","value","join","description","validate","fix","record","res","message","valid","fields","forEach","fieldNormalizeControlNumbers","validateField","length","normalizedField","clone","orig","mod","push","alephInternal01","alephInternal10","alephInternal11","alephInternal12","alephInternal13","standard01","standard10","standard11","standard12","standard13","both01","ALEPH_INTERNAL","STANDARD","both10","both11","both12","both13","mappings","normalizeNineDigitIDs","targetFormat","nineDigitTail","slice","test","currPrefix","isIsni","normalizeIsni","replace","normalizeControlSubfieldValue","normalizedValue","normalizeAs","subfieldCode","includes","undefined"],"sources":["../src/normalize-identifiers.js"],"sourcesContent":["// Relocated from melinda-marc-record-merge-reducers (and renamed)\n//import createDebugLogger from 'debug';\nimport clone from 'clone';\n//const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda:normalizeIdentifiers');\n\n\nfunction fieldToString(f) {\n return `${f.tag} ${f.ind1}${f.ind2} ‡${formatSubfields(f)}`;\n\n function formatSubfields(field) {\n //return field.subfields.map(sf => `${sf.code}${sf.value || ''}`).join('‡');\n return field.subfields.map(sf => `${sf.code}${sf.value}`).join(' ‡');\n }\n}\n\n/*\nfunction nvdebug(message, func) {\n if (func) { // eslint-disable-line functional/no-conditional-statement\n func(message);\n }\n console.info(message); // eslint-disable-line no-console\n}\n*/\n\nexport default function () {\n\n // NB! We should and could handle ISNIs here as well.\n return {\n description: 'Normalizes identifiers such as subfield $0 values',\n validate, fix\n };\n\n function fix(record) {\n const res = {message: [], fix: [], valid: true};\n //message.fix = []; // eslint-disable-line functional/immutable-data\n\n // Actual parsing of all fields\n /*\n if (!record.fields) {\n return false;\n }\n */\n\n //nvdebug(`NORMALIZE CONTROL NUMBER FIX`, debug);\n record.fields.forEach(field => {\n //nvdebug(` NORMALIZE CONTROL NUMBER FIX ${fieldToString(field)}`, debug);\n\n fieldNormalizeControlNumbers(field);\n //validateField(field, true, message);\n });\n\n // message.valid = !(message.message.length >= 1); // eslint-disable-line functional/immutable-data\n return res;\n }\n\n function validate(record) {\n const res = {message: []};\n //nvdebug(`NORMALIZE CONTROL NUMBER VALIDATE`, debug);\n // Actual parsing of all fields\n /*\n if (!record.fields) {\n return false;\n }\n */\n\n record.fields.forEach(field => {\n //nvdebug(` NORMALIZE CONTROL NUMBER VALIDATE ${fieldToString(field)}`, debug);\n validateField(field, res);\n });\n\n res.valid = !(res.message.length >= 1); // eslint-disable-line functional/immutable-data\n return res;\n }\n\n function validateField(field, res) {\n if (!field.subfields) {\n return;\n }\n\n const normalizedField = clone(field);\n fieldNormalizeControlNumbers(normalizedField);\n\n const orig = fieldToString(field);\n const mod = fieldToString(normalizedField);\n if (orig !== mod) { // Fail as the input is \"broken\"/\"crap\"/sumthing\n res.message.push(`'${orig}' could do with control number identifier normalization`); // eslint-disable-line functional/immutable-data\n return;\n }\n\n return;\n }\n}\n\nconst alephInternal01 = '(FIN01)';\nconst alephInternal10 = '(FIN10)';\nconst alephInternal11 = '(FIN11)';\nconst alephInternal12 = '(FIN12)';\nconst alephInternal13 = '(FIN13)';\n\nconst standard01 = '(FI-MELINDA)';\nconst standard10 = '(FI-ASTERI-S)';\nconst standard11 = '(FI-ASTERI-N)';\nconst standard12 = '(FI-ASTERI-A)';\nconst standard13 = '(FI-ASTERI-W)';\n\nconst both01 = {ALEPH_INTERNAL: alephInternal01, STANDARD: standard01};\nconst both10 = {ALEPH_INTERNAL: alephInternal10, STANDARD: standard10};\nconst both11 = {ALEPH_INTERNAL: alephInternal11, STANDARD: standard11};\nconst both12 = {ALEPH_INTERNAL: alephInternal12, STANDARD: standard12};\nconst both13 = {ALEPH_INTERNAL: alephInternal13, STANDARD: standard13};\n\nconst mappings = {\n 'FCC': both01,\n '(FI-ASTERI-A)': both12,\n '(FI-ASTERI-N)': both11,\n '(FI-ASTERI-S)': both10,\n '(FI-ASTERI-W)': both13,\n '(FI-MELINDA)': both01,\n '(FIN01)': both01,\n '(FIN10)': both10,\n '(FIN11)': both11,\n '(FIN12)': both12,\n '(FIN13)': both13,\n 'http://urn.fi/URN:NBN:fi:au:finaf:': both11,\n 'https://urn.fi/URN:NBN:fi:au:finaf:': both11\n};\n\nfunction normalizeNineDigitIDs(value, targetFormat = 'ALEPH_INTERNAL') {\n // $value should be prefix + nine-digits. Do nothing if nine-digit tail condition is not met:\n const nineDigitTail = value.slice(-9);\n if (!(/^[0-9]{9}$/u).test(nineDigitTail)) {\n return value;\n }\n // Normalize prefix:\n const currPrefix = value.slice(0, -9);\n\n if (currPrefix in mappings) {\n //nvdebug(`${currPrefix}, TF:${targetFormat}...`);\n //nvdebug(`${JSON.stringify(mappings[currPrefix])}`);\n return `${mappings[currPrefix][targetFormat]}${nineDigitTail}`;\n }\n return value;\n}\n\nexport function isIsni(value) {\n if ((/^\\(isni\\)(?: ?[0-9]{4}){4}$/u).test(value)) {\n return true;\n }\n if ((/^https:\\/\\/isni.org\\/isni\\/[0-9]{16}$/u).test(value)) {\n return true;\n }\n return false;\n}\n\nexport function normalizeIsni(value) {\n if (isIsni(value)) {\n return `https://isni.org/isni/${value.replace(/[^0-9]/gu, '')}`;\n }\n return value;\n}\n\n\nexport function normalizeControlSubfieldValue(value = '', targetFormat = 'ALEPH_INTERNAL') {\n if (isIsni(value)) {\n return normalizeIsni(value);\n }\n\n const normalizedValue = normalizeNineDigitIDs(value, targetFormat);\n if (normalizedValue !== value) {\n return normalizedValue;\n }\n\n // Something for isni IDs?\n return value;\n}\n\n//export function normalizableSubfieldPrefix(tag, sf) {\nexport function normalizeAs(tag, subfieldCode) {\n //nvdebug(`nAs ${tag}, ${subfieldCode}`);\n if (subfieldCode === '0' || subfieldCode === '1' || subfieldCode === 'w') {\n return 'ALEPH_INTERNAL';\n }\n\n if (tag === '035' && ['a', 'z'].includes(subfieldCode)) {\n return 'STANDARD';\n }\n return undefined;\n}\n\nexport function fieldNormalizeControlNumbers(field) {\n // Rename \"Prefixes\" as \"ControlNumberIdentifiers\"?\n // No, since isni etc... however, just \"ControlNumber\" would do...\n // \"identifiers\" ?\n if (!field.subfields) {\n return;\n }\n\n field.subfields.forEach(sf => {\n const targetFormat = normalizeAs(field.tag, sf.code);\n if (targetFormat !== undefined) {\n //nvdebug(`NORMALIZE SUBFIELD $${sf.code} IN FIELD: '${fieldToString(field)}' TO ${targetFormat}`);\n sf.value = normalizeControlSubfieldValue(sf.value, targetFormat); // eslint-disable-line functional/immutable-data\n return;\n }\n });\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -142,7 +142,7 @@ function normalizeNineDigitIDs(value, targetFormat = 'ALEPH_INTERNAL') {
|
|
|
142
142
|
return value;
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
-
function isIsni(value) {
|
|
145
|
+
export function isIsni(value) {
|
|
146
146
|
if ((/^\(isni\)(?: ?[0-9]{4}){4}$/u).test(value)) {
|
|
147
147
|
return true;
|
|
148
148
|
}
|
|
@@ -152,7 +152,7 @@ function isIsni(value) {
|
|
|
152
152
|
return false;
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
-
function normalizeIsni(value) {
|
|
155
|
+
export function normalizeIsni(value) {
|
|
156
156
|
if (isIsni(value)) {
|
|
157
157
|
return `https://isni.org/isni/${value.replace(/[^0-9]/gu, '')}`;
|
|
158
158
|
}
|