@natlibfi/melinda-rest-api-commons 4.2.1 → 4.2.2-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.REPLACE_PREFIXES = exports.BIB_STRIP_F984S_SETTINGS = exports.BIB_STRIP_F884S_SETTINGS = exports.BIB_PREVALIDATION_FIX_SETTINGS = exports.BIB_PREIMPORT_FIX_SETTINGS = exports.BIB_POSTMERGE_FIX_SETTINGS = exports.BIB_HANDLE_TEMP_URNS_SETTINGS = exports.BIB_FORMAT_SETTINGS = exports.BIB_F035_TO_SID = exports.AUTNAME_PREIMPORT_FIX_SETTINGS = void 0;
|
|
6
|
+
exports.REPLACE_PREFIXES = exports.BIB_STRIP_MELINDA_TEMP_SUBFIELDS_SETTINGS = exports.BIB_STRIP_F984S_SETTINGS = exports.BIB_STRIP_F884S_SETTINGS = exports.BIB_PREVALIDATION_FIX_SETTINGS = exports.BIB_PREIMPORT_FIX_SETTINGS = exports.BIB_POSTMERGE_FIX_SETTINGS = exports.BIB_HANDLE_TEMP_URNS_SETTINGS = exports.BIB_FORMAT_SETTINGS = exports.BIB_F035_TO_SID = exports.AUTNAME_PREIMPORT_FIX_SETTINGS = void 0;
|
|
7
7
|
// This could be formatted so that 035-prefix and SID contents would be better connected than by just an array index
|
|
8
8
|
const BIB_F035_TO_SID = exports.BIB_F035_TO_SID = {
|
|
9
9
|
f035Filters: [/^\(FI-BTJ\)/u, /^\(FI-TATI\)/u],
|
|
@@ -49,6 +49,7 @@ const BIB_POSTMERGE_FIX_SETTINGS = exports.BIB_POSTMERGE_FIX_SETTINGS = {
|
|
|
49
49
|
};
|
|
50
50
|
const BIB_PREIMPORT_FIX_SETTINGS = exports.BIB_PREIMPORT_FIX_SETTINGS = {
|
|
51
51
|
replacePrefixes: REPLACE_PREFIXES,
|
|
52
|
+
stripMelindaTempSubfields: true,
|
|
52
53
|
stripF984s: true
|
|
53
54
|
};
|
|
54
55
|
const AUTNAME_PREIMPORT_FIX_SETTINGS = exports.AUTNAME_PREIMPORT_FIX_SETTINGS = {
|
|
@@ -63,4 +64,7 @@ const BIB_STRIP_F884S_SETTINGS = exports.BIB_STRIP_F884S_SETTINGS = {
|
|
|
63
64
|
const BIB_STRIP_F984S_SETTINGS = exports.BIB_STRIP_F984S_SETTINGS = {
|
|
64
65
|
stripF984s: true
|
|
65
66
|
};
|
|
67
|
+
const BIB_STRIP_MELINDA_TEMP_SUBFIELDS_SETTINGS = exports.BIB_STRIP_MELINDA_TEMP_SUBFIELDS_SETTINGS = {
|
|
68
|
+
stripMelindaTempSubfields: true
|
|
69
|
+
};
|
|
66
70
|
//# sourceMappingURL=fix-constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix-constants.js","names":["BIB_F035_TO_SID","exports","f035Filters","fSIDFilters","REPLACE_PREFIXES","oldPrefix","newPrefix","prefixReplaceCodes","BIB_FORMAT_SETTINGS","replacePrefixes","generateMissingSIDs","BIB_PREVALIDATION_FIX_SETTINGS","BIB_POSTMERGE_FIX_SETTINGS","handleTempUrns","stripF884s","BIB_PREIMPORT_FIX_SETTINGS","stripF984s","AUTNAME_PREIMPORT_FIX_SETTINGS","BIB_HANDLE_TEMP_URNS_SETTINGS","BIB_STRIP_F884S_SETTINGS","BIB_STRIP_F984S_SETTINGS"],"sources":["../../src/helpers/fix-constants.js"],"sourcesContent":["// This could be formatted so that 035-prefix and SID contents would be better connected than by just an array index\nexport const BIB_F035_TO_SID = {\n f035Filters: [/^\\(FI-BTJ\\)/u, /^\\(FI-TATI\\)/u],\n fSIDFilters: ['FI-BTJ', 'tati']\n};\n\n// There is somewhere other implementations of this same standardPrefixes to alephInternalPrefixes normalization\nexport const REPLACE_PREFIXES = [\n {\n oldPrefix: 'FI-MELINDA',\n newPrefix: 'FIN01',\n prefixReplaceCodes: ['w']\n },\n {\n oldPrefix: 'FI-ASTERI-S',\n newPrefix: 'FIN10',\n prefixReplaceCodes: ['0']\n },\n {\n oldPrefix: 'FI-ASTERI-N',\n newPrefix: 'FIN11',\n prefixReplaceCodes: ['0']\n },\n {\n oldPrefix: 'FI-ASTERI-A',\n newPrefix: 'FIN12',\n prefixReplaceCodes: ['0']\n },\n {\n oldPrefix: 'FI-ASTERI-W',\n newPrefix: 'FIN13',\n prefixReplaceCodes: ['0']\n }\n];\n\n// If placed in config.js testing needs envs\n// BIB_FORMAT_SETTINGS is outdated, use other settings instead\n\n\nexport const BIB_FORMAT_SETTINGS = {\n replacePrefixes: REPLACE_PREFIXES,\n generateMissingSIDs: BIB_F035_TO_SID\n};\n\nexport const BIB_PREVALIDATION_FIX_SETTINGS = {\n generateMissingSIDs: BIB_F035_TO_SID\n};\n\nexport const BIB_POSTMERGE_FIX_SETTINGS = {\n handleTempUrns: true,\n stripF884s: true\n};\n\nexport const BIB_PREIMPORT_FIX_SETTINGS = {\n replacePrefixes: REPLACE_PREFIXES,\n stripF984s: true\n};\n\nexport const AUTNAME_PREIMPORT_FIX_SETTINGS = {\n replacePrefixes: REPLACE_PREFIXES\n};\n\nexport const BIB_HANDLE_TEMP_URNS_SETTINGS = {\n handleTempUrns: true\n};\n\nexport const BIB_STRIP_F884S_SETTINGS = {\n stripF884s: true\n};\n\nexport const BIB_STRIP_F984S_SETTINGS = {\n stripF984s: true\n};\n"],"mappings":";;;;;;AAAA;AACO,MAAMA,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG;EAC7BE,WAAW,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;EAC9CC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM;AAChC,CAAC;;AAED;AACO,MAAMC,gBAAgB,GAAAH,OAAA,CAAAG,gBAAA,GAAG,CAC9B;EACEC,SAAS,EAAE,YAAY;EACvBC,SAAS,EAAE,OAAO;EAClBC,kBAAkB,EAAE,CAAC,GAAG;AAC1B,CAAC,EACD;EACEF,SAAS,EAAE,aAAa;EACxBC,SAAS,EAAE,OAAO;EAClBC,kBAAkB,EAAE,CAAC,GAAG;AAC1B,CAAC,EACD;EACEF,SAAS,EAAE,aAAa;EACxBC,SAAS,EAAE,OAAO;EAClBC,kBAAkB,EAAE,CAAC,GAAG;AAC1B,CAAC,EACD;EACEF,SAAS,EAAE,aAAa;EACxBC,SAAS,EAAE,OAAO;EAClBC,kBAAkB,EAAE,CAAC,GAAG;AAC1B,CAAC,EACD;EACEF,SAAS,EAAE,aAAa;EACxBC,SAAS,EAAE,OAAO;EAClBC,kBAAkB,EAAE,CAAC,GAAG;AAC1B,CAAC,CACF;;AAED;AACA;;AAGO,MAAMC,mBAAmB,GAAAP,OAAA,CAAAO,mBAAA,GAAG;EACjCC,eAAe,EAAEL,gBAAgB;EACjCM,mBAAmB,EAAEV;AACvB,CAAC;AAEM,MAAMW,8BAA8B,GAAAV,OAAA,CAAAU,8BAAA,GAAG;EAC5CD,mBAAmB,EAAEV;AACvB,CAAC;AAEM,MAAMY,0BAA0B,GAAAX,OAAA,CAAAW,0BAAA,GAAG;EACxCC,cAAc,EAAE,IAAI;EACpBC,UAAU,EAAE;AACd,CAAC;AAEM,MAAMC,0BAA0B,GAAAd,OAAA,CAAAc,0BAAA,GAAG;EACxCN,eAAe,EAAEL,gBAAgB;EACjCY,UAAU,EAAE;AACd,CAAC;AAEM,MAAMC,8BAA8B,
|
|
1
|
+
{"version":3,"file":"fix-constants.js","names":["BIB_F035_TO_SID","exports","f035Filters","fSIDFilters","REPLACE_PREFIXES","oldPrefix","newPrefix","prefixReplaceCodes","BIB_FORMAT_SETTINGS","replacePrefixes","generateMissingSIDs","BIB_PREVALIDATION_FIX_SETTINGS","BIB_POSTMERGE_FIX_SETTINGS","handleTempUrns","stripF884s","BIB_PREIMPORT_FIX_SETTINGS","stripMelindaTempSubfields","stripF984s","AUTNAME_PREIMPORT_FIX_SETTINGS","BIB_HANDLE_TEMP_URNS_SETTINGS","BIB_STRIP_F884S_SETTINGS","BIB_STRIP_F984S_SETTINGS","BIB_STRIP_MELINDA_TEMP_SUBFIELDS_SETTINGS"],"sources":["../../src/helpers/fix-constants.js"],"sourcesContent":["// This could be formatted so that 035-prefix and SID contents would be better connected than by just an array index\nexport const BIB_F035_TO_SID = {\n f035Filters: [/^\\(FI-BTJ\\)/u, /^\\(FI-TATI\\)/u],\n fSIDFilters: ['FI-BTJ', 'tati']\n};\n\n// There is somewhere other implementations of this same standardPrefixes to alephInternalPrefixes normalization\nexport const REPLACE_PREFIXES = [\n {\n oldPrefix: 'FI-MELINDA',\n newPrefix: 'FIN01',\n prefixReplaceCodes: ['w']\n },\n {\n oldPrefix: 'FI-ASTERI-S',\n newPrefix: 'FIN10',\n prefixReplaceCodes: ['0']\n },\n {\n oldPrefix: 'FI-ASTERI-N',\n newPrefix: 'FIN11',\n prefixReplaceCodes: ['0']\n },\n {\n oldPrefix: 'FI-ASTERI-A',\n newPrefix: 'FIN12',\n prefixReplaceCodes: ['0']\n },\n {\n oldPrefix: 'FI-ASTERI-W',\n newPrefix: 'FIN13',\n prefixReplaceCodes: ['0']\n }\n];\n\n// If placed in config.js testing needs envs\n// BIB_FORMAT_SETTINGS is outdated, use other settings instead\n\n\nexport const BIB_FORMAT_SETTINGS = {\n replacePrefixes: REPLACE_PREFIXES,\n generateMissingSIDs: BIB_F035_TO_SID\n};\n\nexport const BIB_PREVALIDATION_FIX_SETTINGS = {\n generateMissingSIDs: BIB_F035_TO_SID\n};\n\nexport const BIB_POSTMERGE_FIX_SETTINGS = {\n handleTempUrns: true,\n stripF884s: true\n};\n\nexport const BIB_PREIMPORT_FIX_SETTINGS = {\n replacePrefixes: REPLACE_PREFIXES,\n stripMelindaTempSubfields: true,\n stripF984s: true\n};\n\nexport const AUTNAME_PREIMPORT_FIX_SETTINGS = {\n replacePrefixes: REPLACE_PREFIXES\n};\n\nexport const BIB_HANDLE_TEMP_URNS_SETTINGS = {\n handleTempUrns: true\n};\n\nexport const BIB_STRIP_F884S_SETTINGS = {\n stripF884s: true\n};\n\nexport const BIB_STRIP_F984S_SETTINGS = {\n stripF984s: true\n};\n\nexport const BIB_STRIP_MELINDA_TEMP_SUBFIELDS_SETTINGS = {\n stripMelindaTempSubfields: true\n};\n"],"mappings":";;;;;;AAAA;AACO,MAAMA,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG;EAC7BE,WAAW,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;EAC9CC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM;AAChC,CAAC;;AAED;AACO,MAAMC,gBAAgB,GAAAH,OAAA,CAAAG,gBAAA,GAAG,CAC9B;EACEC,SAAS,EAAE,YAAY;EACvBC,SAAS,EAAE,OAAO;EAClBC,kBAAkB,EAAE,CAAC,GAAG;AAC1B,CAAC,EACD;EACEF,SAAS,EAAE,aAAa;EACxBC,SAAS,EAAE,OAAO;EAClBC,kBAAkB,EAAE,CAAC,GAAG;AAC1B,CAAC,EACD;EACEF,SAAS,EAAE,aAAa;EACxBC,SAAS,EAAE,OAAO;EAClBC,kBAAkB,EAAE,CAAC,GAAG;AAC1B,CAAC,EACD;EACEF,SAAS,EAAE,aAAa;EACxBC,SAAS,EAAE,OAAO;EAClBC,kBAAkB,EAAE,CAAC,GAAG;AAC1B,CAAC,EACD;EACEF,SAAS,EAAE,aAAa;EACxBC,SAAS,EAAE,OAAO;EAClBC,kBAAkB,EAAE,CAAC,GAAG;AAC1B,CAAC,CACF;;AAED;AACA;;AAGO,MAAMC,mBAAmB,GAAAP,OAAA,CAAAO,mBAAA,GAAG;EACjCC,eAAe,EAAEL,gBAAgB;EACjCM,mBAAmB,EAAEV;AACvB,CAAC;AAEM,MAAMW,8BAA8B,GAAAV,OAAA,CAAAU,8BAAA,GAAG;EAC5CD,mBAAmB,EAAEV;AACvB,CAAC;AAEM,MAAMY,0BAA0B,GAAAX,OAAA,CAAAW,0BAAA,GAAG;EACxCC,cAAc,EAAE,IAAI;EACpBC,UAAU,EAAE;AACd,CAAC;AAEM,MAAMC,0BAA0B,GAAAd,OAAA,CAAAc,0BAAA,GAAG;EACxCN,eAAe,EAAEL,gBAAgB;EACjCY,yBAAyB,EAAE,IAAI;EAC/BC,UAAU,EAAE;AACd,CAAC;AAEM,MAAMC,8BAA8B,GAAAjB,OAAA,CAAAiB,8BAAA,GAAG;EAC5CT,eAAe,EAAEL;AACnB,CAAC;AAEM,MAAMe,6BAA6B,GAAAlB,OAAA,CAAAkB,6BAAA,GAAG;EAC3CN,cAAc,EAAE;AAClB,CAAC;AAEM,MAAMO,wBAAwB,GAAAnB,OAAA,CAAAmB,wBAAA,GAAG;EACtCN,UAAU,EAAE;AACd,CAAC;AAEM,MAAMO,wBAAwB,GAAApB,OAAA,CAAAoB,wBAAA,GAAG;EACtCJ,UAAU,EAAE;AACd,CAAC;AAEM,MAAMK,yCAAyC,GAAArB,OAAA,CAAAqB,yCAAA,GAAG;EACvDN,yBAAyB,EAAE;AAC7B,CAAC","ignoreList":[]}
|
package/dist/helpers/fix.js
CHANGED
|
@@ -54,7 +54,10 @@ function fixRecord(record, settings = {}) {
|
|
|
54
54
|
|
|
55
55
|
// Fix 5, strip extra field 984s
|
|
56
56
|
const newRecord5 = stripF984s(newRecord4, settings.stripF984s || false);
|
|
57
|
-
|
|
57
|
+
|
|
58
|
+
// Fix 6, strip $9 MELINDA<TEMP> subfields
|
|
59
|
+
const newRecord6 = stripMelindaTempSubfields(newRecord5, settings.stripMelindaTempSubfields || false);
|
|
60
|
+
debugData(newRecord6);
|
|
58
61
|
return newRecord5.toObject();
|
|
59
62
|
}
|
|
60
63
|
function replaceAllPrefixes(record, replacePrefixesOptions) {
|
|
@@ -173,4 +176,27 @@ function stripF984s(record, stripF984sSettings) {
|
|
|
173
176
|
validator.fix(record);
|
|
174
177
|
return record;
|
|
175
178
|
}
|
|
179
|
+
function stripMelindaTempSubfields(record, stripMelindaTempSubfieldsSettings) {
|
|
180
|
+
if (!stripMelindaTempSubfieldsSettings) {
|
|
181
|
+
debug(`No settings for stripMelindaTempSubfields`);
|
|
182
|
+
return record;
|
|
183
|
+
}
|
|
184
|
+
// NOTE: we remove $9 MELINDA<TEMP> subfields only from f856
|
|
185
|
+
const tagPattern = /856/u;
|
|
186
|
+
const subfieldCodePattern = /9/u;
|
|
187
|
+
const subfieldValuePattern = /^MELINDA<TEMP>$/u;
|
|
188
|
+
const config = [{
|
|
189
|
+
tag: tagPattern,
|
|
190
|
+
subfields: [{
|
|
191
|
+
code: subfieldCodePattern,
|
|
192
|
+
value: subfieldValuePattern
|
|
193
|
+
}]
|
|
194
|
+
}];
|
|
195
|
+
debug(`Running stripMelindaTempSubfields`);
|
|
196
|
+
|
|
197
|
+
// eslint-disable-next-line new-cap
|
|
198
|
+
const validator = (0, _marcRecordValidatorsMelinda.SubfieldExclusion)(config);
|
|
199
|
+
validator.fix(record);
|
|
200
|
+
return record;
|
|
201
|
+
}
|
|
176
202
|
//# sourceMappingURL=fix.js.map
|
package/dist/helpers/fix.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix.js","names":["_marcRecord","require","_melindaBackendCommons","_debug","_interopRequireDefault","_fixHandleTempurns","_fixStripF884s","_marcRecordValidatorsMelinda","_fixConstants","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","logger","createLogger","debug","createDebugLogger","debugData","extend","fixRecord","record","settings","verbose","JSON","stringify","newRecord","MarcRecord","clone","subfieldValues","generateMissingSIDsOptions","generateMissingSIDs","undefined","newRecord1","replacePrefixesOptions","replacePrefixes","newRecord2","replaceAllPrefixes","newRecord3","handleTempUrns","newRecord4","stripF884s","newRecord5","stripF984s","toObject","length","options","replacePrefix","oldPrefix","newPrefix","prefixReplaceCodes","pattern","replacement","getDatafields","field","subfields","filter","code","includes","subfield","value","replace","f035Filters","fSIDFilters","f035s","f035ToSidInfo","fSIDs","sidsToSidInfo","sidsToBeAdded","genNewSids","f035SidInfo","some","fSIDInfo","SID","sidField","insertField","map","sidInfo","tag","ind1","ind2","SIDs","flatMap","sub","wantedSub","regexp","test","findIndex","slice","indexOf","stripF984sSettings","F984A_PATTERN","config","toString","validator","FieldExclusion","fix"],"sources":["../../src/helpers/fix.js"],"sourcesContent":["import {MarcRecord} from '@natlibfi/marc-record';\nimport {createLogger} from '@natlibfi/melinda-backend-commons';\nimport createDebugLogger from 'debug';\n\nimport {handleTempUrns} from './fix-handle-tempurns';\nimport {stripF884s} from './fix-strip-f884s';\n\nimport {FieldExclusion} from '@natlibfi/marc-record-validators-melinda';\n\nexport * from './fix-constants';\n\nconst logger = createLogger();\nconst debug = createDebugLogger('@natlibfi/melinda-rest-api-commons:fixRecord');\nconst debugData = debug.extend('data');\n\nexport function fixRecord(record, settings = {}) {\n\n logger.verbose(`We will apply formatting to the record according to settings: ${JSON.stringify(settings)}`);\n const newRecord = MarcRecord.clone(record, {subfieldValues: false});\n debugData(`settings: ${JSON.stringify(settings)}`);\n\n // We should handle these in some prettier way ...\n\n // Fix 1, generate SIDs\n const generateMissingSIDsOptions = settings.generateMissingSIDs || undefined;\n const newRecord1 = generateMissingSIDs(newRecord, generateMissingSIDsOptions);\n\n // Fix 2, replace identifier prefixes\n const replacePrefixesOptions = settings.replacePrefixes || [];\n const newRecord2 = replaceAllPrefixes(newRecord1, replacePrefixesOptions);\n\n // Fix 3, handle temporary URNs from legal deposit record import\n const newRecord3 = handleTempUrns(newRecord2, settings.handleTempUrns);\n\n // Fix 4, strip extra field 884s\n const newRecord4 = stripF884s(newRecord3, settings.stripF884s);\n\n // Fix 5, strip extra field 984s\n const newRecord5 = stripF984s(newRecord4, settings.stripF984s || false);\n debugData(newRecord5);\n\n return newRecord5.toObject();\n\n}\n\n\nfunction replaceAllPrefixes(record, replacePrefixesOptions) {\n if (replacePrefixesOptions.length < 1) {\n debug(`NOT running replacePrefixes, no options`);\n return record;\n }\n\n debug(`Running replacePrefixes fixer`);\n debugData(`replacePrefixesOptions: ${JSON.stringify(replacePrefixesOptions)}`);\n\n replacePrefixesOptions.forEach(options => {\n replacePrefix(record, options);\n });\n return record;\n}\n\n\n// Replace prefix in all specified subfields\nfunction replacePrefix(record, options) {\n const {oldPrefix, newPrefix, prefixReplaceCodes} = options;\n debug(`Replacing ${oldPrefix} with ${newPrefix} in subfields ${prefixReplaceCodes}`);\n const pattern = `(${oldPrefix})`;\n const replacement = `(${newPrefix})`;\n record.getDatafields()\n .forEach(field => {\n field.subfields\n .filter(({code}) => prefixReplaceCodes.includes(code))\n .forEach(subfield => {\n subfield.value = subfield.value.replace(pattern, replacement); // eslint-disable-line functional/immutable-data\n });\n });\n return record;\n}\n\n\nfunction generateMissingSIDs(record, options) {\n\n const f035Filters = options && options.f035Filters ? options.f035Filters : [];\n const fSIDFilters = options && options.fSIDFilters ? options.fSIDFilters : [];\n\n if (f035Filters.length !== fSIDFilters.length || f035Filters.length < 1 || fSIDFilters.length < 1) {\n debug(`NOT running generateMissingsSIDs, no options`);\n return record;\n }\n\n debug(`Running generateMissingSIDs fixer`);\n debugData(`generateMissingSIDs options: ${JSON.stringify(options)}`);\n\n const f035s = f035ToSidInfo(record.get(/^035$/u));\n const fSIDs = sidsToSidInfo(record.get(/^SID$/u));\n\n const sidsToBeAdded = genNewSids(fSIDs.length === 0\n ? f035s\n // test that SIDs are not there yet\n : f035s.filter(f035SidInfo => !fSIDs.some(fSIDInfo => f035SidInfo.SID === fSIDInfo.SID && f035SidInfo.value === fSIDInfo.value)));\n\n debugData(`Adding (${sidsToBeAdded.length}) SIDs: ${JSON.stringify(sidsToBeAdded)}`);\n\n // Add new SIDs\n sidsToBeAdded.forEach(sidField => record.insertField(sidField));\n return record;\n\n function genNewSids(sidsToBeAdded) {\n return sidsToBeAdded.map(sidInfo => ({tag: 'SID', ind1: ' ', ind2: ' ', subfields: [{code: 'c', value: sidInfo.value}, {code: 'b', value: sidInfo.SID}]}));\n }\n\n function sidsToSidInfo(SIDs) {\n return SIDs.flatMap(({subfields}) => {\n const [SID] = subfields.filter(sub => sub.code === 'b' && fSIDFilters.includes(sub.value)).map(sub => sub.value);\n const [value] = subfields.filter(sub => sub.code === 'c' && sub.value !== undefined).map(sub => sub.value);\n\n if (SID && value) {\n return {\n SID,\n value\n };\n }\n\n return undefined;\n }).filter(value => value !== undefined);\n }\n\n function f035ToSidInfo(f035s) {\n return f035s.flatMap(({subfields}) => {\n const [wantedSub] = subfields.filter(sub => sub.code === 'a' && f035Filters.some(regexp => regexp.test(sub.value)));\n\n if (wantedSub) {\n return {\n SID: fSIDFilters[f035Filters.findIndex(regexp => regexp.test(wantedSub.value))],\n value: wantedSub.value.slice(wantedSub.value.indexOf(')') + 1)\n };\n }\n\n return undefined;\n }).filter(value => value !== undefined);\n }\n}\n\n\nfunction stripF984s(record, stripF984sSettings) {\n const F984A_PATTERN = /^(?:ALWAYS|NEVER)-PREFER-IN-MERGE$/u;\n const config = [\n {\n tag: /^984$/u,\n subfields: [\n {\n code: /a/u,\n value: F984A_PATTERN\n }\n ]\n }\n ];\n\n debug(`Running removeF984AFields`);\n debugData(`removeF984AFieldsSettings: ${JSON.stringify(stripF984sSettings)}`);\n\n if (!stripF984sSettings || !F984A_PATTERN || record.get('984').length < 1) {\n debug(`No settings or pattern for removeF984AFields or f984 in record`);\n return record;\n }\n\n debug(`Removing f984 fields with subfield $a consisting values ${F984A_PATTERN.toString()}`);\n // eslint-disable-next-line new-cap\n const validator = FieldExclusion(config);\n validator.fix(record);\n return record;\n\n}\n\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,kBAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AAEA,IAAAM,4BAAA,GAAAN,OAAA;AAEA,IAAAO,aAAA,GAAAP,OAAA;AAAAQ,MAAA,CAAAC,IAAA,CAAAF,aAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,aAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,aAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAEA,MAAMS,MAAM,GAAG,IAAAC,mCAAY,EAAC,CAAC;AAC7B,MAAMC,KAAK,GAAG,IAAAC,cAAiB,EAAC,8CAA8C,CAAC;AAC/E,MAAMC,SAAS,GAAGF,KAAK,CAACG,MAAM,CAAC,MAAM,CAAC;AAE/B,SAASC,SAASA,CAACC,MAAM,EAAEC,QAAQ,GAAG,CAAC,CAAC,EAAE;EAE/CR,MAAM,CAACS,OAAO,CAAC,iEAAiEC,IAAI,CAACC,SAAS,CAACH,QAAQ,CAAC,EAAE,CAAC;EAC3G,MAAMI,SAAS,GAAGC,sBAAU,CAACC,KAAK,CAACP,MAAM,EAAE;IAACQ,cAAc,EAAE;EAAK,CAAC,CAAC;EACnEX,SAAS,CAAC,aAAaM,IAAI,CAACC,SAAS,CAACH,QAAQ,CAAC,EAAE,CAAC;;EAElD;;EAEA;EACA,MAAMQ,0BAA0B,GAAGR,QAAQ,CAACS,mBAAmB,IAAIC,SAAS;EAC5E,MAAMC,UAAU,GAAGF,mBAAmB,CAACL,SAAS,EAAEI,0BAA0B,CAAC;;EAE7E;EACA,MAAMI,sBAAsB,GAAGZ,QAAQ,CAACa,eAAe,IAAI,EAAE;EAC7D,MAAMC,UAAU,GAAGC,kBAAkB,CAACJ,UAAU,EAAEC,sBAAsB,CAAC;;EAEzE;EACA,MAAMI,UAAU,GAAG,IAAAC,iCAAc,EAACH,UAAU,EAAEd,QAAQ,CAACiB,cAAc,CAAC;;EAEtE;EACA,MAAMC,UAAU,GAAG,IAAAC,yBAAU,EAACH,UAAU,EAAEhB,QAAQ,CAACmB,UAAU,CAAC;;EAE9D;EACA,MAAMC,UAAU,GAAGC,UAAU,CAACH,UAAU,EAAElB,QAAQ,CAACqB,UAAU,IAAI,KAAK,CAAC;EACvEzB,SAAS,CAACwB,UAAU,CAAC;EAErB,OAAOA,UAAU,CAACE,QAAQ,CAAC,CAAC;AAE9B;AAGA,SAASP,kBAAkBA,CAAChB,MAAM,EAAEa,sBAAsB,EAAE;EAC1D,IAAIA,sBAAsB,CAACW,MAAM,GAAG,CAAC,EAAE;IACrC7B,KAAK,CAAC,yCAAyC,CAAC;IAChD,OAAOK,MAAM;EACf;EAEAL,KAAK,CAAC,+BAA+B,CAAC;EACtCE,SAAS,CAAC,2BAA2BM,IAAI,CAACC,SAAS,CAACS,sBAAsB,CAAC,EAAE,CAAC;EAE9EA,sBAAsB,CAAC9B,OAAO,CAAC0C,OAAO,IAAI;IACxCC,aAAa,CAAC1B,MAAM,EAAEyB,OAAO,CAAC;EAChC,CAAC,CAAC;EACF,OAAOzB,MAAM;AACf;;AAGA;AACA,SAAS0B,aAAaA,CAAC1B,MAAM,EAAEyB,OAAO,EAAE;EACtC,MAAM;IAACE,SAAS;IAAEC,SAAS;IAAEC;EAAkB,CAAC,GAAGJ,OAAO;EAC1D9B,KAAK,CAAC,aAAagC,SAAS,SAASC,SAAS,iBAAiBC,kBAAkB,EAAE,CAAC;EACpF,MAAMC,OAAO,GAAG,IAAIH,SAAS,GAAG;EAChC,MAAMI,WAAW,GAAG,IAAIH,SAAS,GAAG;EACpC5B,MAAM,CAACgC,aAAa,CAAC,CAAC,CACnBjD,OAAO,CAACkD,KAAK,IAAI;IAChBA,KAAK,CAACC,SAAS,CACZC,MAAM,CAAC,CAAC;MAACC;IAAI,CAAC,KAAKP,kBAAkB,CAACQ,QAAQ,CAACD,IAAI,CAAC,CAAC,CACrDrD,OAAO,CAACuD,QAAQ,IAAI;MACnBA,QAAQ,CAACC,KAAK,GAAGD,QAAQ,CAACC,KAAK,CAACC,OAAO,CAACV,OAAO,EAAEC,WAAW,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC;EACN,CAAC,CAAC;EACJ,OAAO/B,MAAM;AACf;AAGA,SAASU,mBAAmBA,CAACV,MAAM,EAAEyB,OAAO,EAAE;EAE5C,MAAMgB,WAAW,GAAGhB,OAAO,IAAIA,OAAO,CAACgB,WAAW,GAAGhB,OAAO,CAACgB,WAAW,GAAG,EAAE;EAC7E,MAAMC,WAAW,GAAGjB,OAAO,IAAIA,OAAO,CAACiB,WAAW,GAAGjB,OAAO,CAACiB,WAAW,GAAG,EAAE;EAE7E,IAAID,WAAW,CAACjB,MAAM,KAAKkB,WAAW,CAAClB,MAAM,IAAIiB,WAAW,CAACjB,MAAM,GAAG,CAAC,IAAIkB,WAAW,CAAClB,MAAM,GAAG,CAAC,EAAE;IACjG7B,KAAK,CAAC,8CAA8C,CAAC;IACrD,OAAOK,MAAM;EACf;EAEAL,KAAK,CAAC,mCAAmC,CAAC;EAC1CE,SAAS,CAAC,gCAAgCM,IAAI,CAACC,SAAS,CAACqB,OAAO,CAAC,EAAE,CAAC;EAEpE,MAAMkB,KAAK,GAAGC,aAAa,CAAC5C,MAAM,CAACR,GAAG,CAAC,QAAQ,CAAC,CAAC;EACjD,MAAMqD,KAAK,GAAGC,aAAa,CAAC9C,MAAM,CAACR,GAAG,CAAC,QAAQ,CAAC,CAAC;EAEjD,MAAMuD,aAAa,GAAGC,UAAU,CAACH,KAAK,CAACrB,MAAM,KAAK,CAAC,GAC/CmB;EACJ;EAAA,EACIA,KAAK,CAACR,MAAM,CAACc,WAAW,IAAI,CAACJ,KAAK,CAACK,IAAI,CAACC,QAAQ,IAAIF,WAAW,CAACG,GAAG,KAAKD,QAAQ,CAACC,GAAG,IAAIH,WAAW,CAACV,KAAK,KAAKY,QAAQ,CAACZ,KAAK,CAAC,CAAC,CAAC;EAEnI1C,SAAS,CAAC,WAAWkD,aAAa,CAACvB,MAAM,WAAWrB,IAAI,CAACC,SAAS,CAAC2C,aAAa,CAAC,EAAE,CAAC;;EAEpF;EACAA,aAAa,CAAChE,OAAO,CAACsE,QAAQ,IAAIrD,MAAM,CAACsD,WAAW,CAACD,QAAQ,CAAC,CAAC;EAC/D,OAAOrD,MAAM;EAEb,SAASgD,UAAUA,CAACD,aAAa,EAAE;IACjC,OAAOA,aAAa,CAACQ,GAAG,CAACC,OAAO,KAAK;MAACC,GAAG,EAAE,KAAK;MAAEC,IAAI,EAAE,GAAG;MAAEC,IAAI,EAAE,GAAG;MAAEzB,SAAS,EAAE,CAAC;QAACE,IAAI,EAAE,GAAG;QAAEG,KAAK,EAAEiB,OAAO,CAACjB;MAAK,CAAC,EAAE;QAACH,IAAI,EAAE,GAAG;QAAEG,KAAK,EAAEiB,OAAO,CAACJ;MAAG,CAAC;IAAC,CAAC,CAAC,CAAC;EAC5J;EAEA,SAASN,aAAaA,CAACc,IAAI,EAAE;IAC3B,OAAOA,IAAI,CAACC,OAAO,CAAC,CAAC;MAAC3B;IAAS,CAAC,KAAK;MACnC,MAAM,CAACkB,GAAG,CAAC,GAAGlB,SAAS,CAACC,MAAM,CAAC2B,GAAG,IAAIA,GAAG,CAAC1B,IAAI,KAAK,GAAG,IAAIM,WAAW,CAACL,QAAQ,CAACyB,GAAG,CAACvB,KAAK,CAAC,CAAC,CAACgB,GAAG,CAACO,GAAG,IAAIA,GAAG,CAACvB,KAAK,CAAC;MAChH,MAAM,CAACA,KAAK,CAAC,GAAGL,SAAS,CAACC,MAAM,CAAC2B,GAAG,IAAIA,GAAG,CAAC1B,IAAI,KAAK,GAAG,IAAI0B,GAAG,CAACvB,KAAK,KAAK5B,SAAS,CAAC,CAAC4C,GAAG,CAACO,GAAG,IAAIA,GAAG,CAACvB,KAAK,CAAC;MAE1G,IAAIa,GAAG,IAAIb,KAAK,EAAE;QAChB,OAAO;UACLa,GAAG;UACHb;QACF,CAAC;MACH;MAEA,OAAO5B,SAAS;IAClB,CAAC,CAAC,CAACwB,MAAM,CAACI,KAAK,IAAIA,KAAK,KAAK5B,SAAS,CAAC;EACzC;EAEA,SAASiC,aAAaA,CAACD,KAAK,EAAE;IAC5B,OAAOA,KAAK,CAACkB,OAAO,CAAC,CAAC;MAAC3B;IAAS,CAAC,KAAK;MACpC,MAAM,CAAC6B,SAAS,CAAC,GAAG7B,SAAS,CAACC,MAAM,CAAC2B,GAAG,IAAIA,GAAG,CAAC1B,IAAI,KAAK,GAAG,IAAIK,WAAW,CAACS,IAAI,CAACc,MAAM,IAAIA,MAAM,CAACC,IAAI,CAACH,GAAG,CAACvB,KAAK,CAAC,CAAC,CAAC;MAEnH,IAAIwB,SAAS,EAAE;QACb,OAAO;UACLX,GAAG,EAAEV,WAAW,CAACD,WAAW,CAACyB,SAAS,CAACF,MAAM,IAAIA,MAAM,CAACC,IAAI,CAACF,SAAS,CAACxB,KAAK,CAAC,CAAC,CAAC;UAC/EA,KAAK,EAAEwB,SAAS,CAACxB,KAAK,CAAC4B,KAAK,CAACJ,SAAS,CAACxB,KAAK,CAAC6B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QAC/D,CAAC;MACH;MAEA,OAAOzD,SAAS;IAClB,CAAC,CAAC,CAACwB,MAAM,CAACI,KAAK,IAAIA,KAAK,KAAK5B,SAAS,CAAC;EACzC;AACF;AAGA,SAASW,UAAUA,CAACtB,MAAM,EAAEqE,kBAAkB,EAAE;EAC9C,MAAMC,aAAa,GAAG,qCAAqC;EAC3D,MAAMC,MAAM,GAAG,CACb;IACEd,GAAG,EAAE,QAAQ;IACbvB,SAAS,EAAE,CACT;MACEE,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE+B;IACT,CAAC;EAEL,CAAC,CACF;EAED3E,KAAK,CAAC,2BAA2B,CAAC;EAClCE,SAAS,CAAC,8BAA8BM,IAAI,CAACC,SAAS,CAACiE,kBAAkB,CAAC,EAAE,CAAC;EAE7E,IAAI,CAACA,kBAAkB,IAAI,CAACC,aAAa,IAAItE,MAAM,CAACR,GAAG,CAAC,KAAK,CAAC,CAACgC,MAAM,GAAG,CAAC,EAAE;IACzE7B,KAAK,CAAC,gEAAgE,CAAC;IACvE,OAAOK,MAAM;EACf;EAEAL,KAAK,CAAC,2DAA2D2E,aAAa,CAACE,QAAQ,CAAC,CAAC,EAAE,CAAC;EAC5F;EACA,MAAMC,SAAS,GAAG,IAAAC,2CAAc,EAACH,MAAM,CAAC;EACxCE,SAAS,CAACE,GAAG,CAAC3E,MAAM,CAAC;EACrB,OAAOA,MAAM;AAEf","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"fix.js","names":["_marcRecord","require","_melindaBackendCommons","_debug","_interopRequireDefault","_fixHandleTempurns","_fixStripF884s","_marcRecordValidatorsMelinda","_fixConstants","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","logger","createLogger","debug","createDebugLogger","debugData","extend","fixRecord","record","settings","verbose","JSON","stringify","newRecord","MarcRecord","clone","subfieldValues","generateMissingSIDsOptions","generateMissingSIDs","undefined","newRecord1","replacePrefixesOptions","replacePrefixes","newRecord2","replaceAllPrefixes","newRecord3","handleTempUrns","newRecord4","stripF884s","newRecord5","stripF984s","newRecord6","stripMelindaTempSubfields","toObject","length","options","replacePrefix","oldPrefix","newPrefix","prefixReplaceCodes","pattern","replacement","getDatafields","field","subfields","filter","code","includes","subfield","value","replace","f035Filters","fSIDFilters","f035s","f035ToSidInfo","fSIDs","sidsToSidInfo","sidsToBeAdded","genNewSids","f035SidInfo","some","fSIDInfo","SID","sidField","insertField","map","sidInfo","tag","ind1","ind2","SIDs","flatMap","sub","wantedSub","regexp","test","findIndex","slice","indexOf","stripF984sSettings","F984A_PATTERN","config","toString","validator","FieldExclusion","fix","stripMelindaTempSubfieldsSettings","tagPattern","subfieldCodePattern","subfieldValuePattern","SubfieldExclusion"],"sources":["../../src/helpers/fix.js"],"sourcesContent":["import {MarcRecord} from '@natlibfi/marc-record';\nimport {createLogger} from '@natlibfi/melinda-backend-commons';\nimport createDebugLogger from 'debug';\n\nimport {handleTempUrns} from './fix-handle-tempurns';\nimport {stripF884s} from './fix-strip-f884s';\n\nimport {FieldExclusion, SubfieldExclusion} from '@natlibfi/marc-record-validators-melinda';\n\nexport * from './fix-constants';\n\nconst logger = createLogger();\nconst debug = createDebugLogger('@natlibfi/melinda-rest-api-commons:fixRecord');\nconst debugData = debug.extend('data');\n\nexport function fixRecord(record, settings = {}) {\n\n logger.verbose(`We will apply formatting to the record according to settings: ${JSON.stringify(settings)}`);\n const newRecord = MarcRecord.clone(record, {subfieldValues: false});\n debugData(`settings: ${JSON.stringify(settings)}`);\n\n // We should handle these in some prettier way ...\n\n // Fix 1, generate SIDs\n const generateMissingSIDsOptions = settings.generateMissingSIDs || undefined;\n const newRecord1 = generateMissingSIDs(newRecord, generateMissingSIDsOptions);\n\n // Fix 2, replace identifier prefixes\n const replacePrefixesOptions = settings.replacePrefixes || [];\n const newRecord2 = replaceAllPrefixes(newRecord1, replacePrefixesOptions);\n\n // Fix 3, handle temporary URNs from legal deposit record import\n const newRecord3 = handleTempUrns(newRecord2, settings.handleTempUrns);\n\n // Fix 4, strip extra field 884s\n const newRecord4 = stripF884s(newRecord3, settings.stripF884s);\n\n // Fix 5, strip extra field 984s\n const newRecord5 = stripF984s(newRecord4, settings.stripF984s || false);\n\n // Fix 6, strip $9 MELINDA<TEMP> subfields\n const newRecord6 = stripMelindaTempSubfields(newRecord5, settings.stripMelindaTempSubfields || false);\n\n debugData(newRecord6);\n\n return newRecord5.toObject();\n\n}\n\n\nfunction replaceAllPrefixes(record, replacePrefixesOptions) {\n if (replacePrefixesOptions.length < 1) {\n debug(`NOT running replacePrefixes, no options`);\n return record;\n }\n\n debug(`Running replacePrefixes fixer`);\n debugData(`replacePrefixesOptions: ${JSON.stringify(replacePrefixesOptions)}`);\n\n replacePrefixesOptions.forEach(options => {\n replacePrefix(record, options);\n });\n return record;\n}\n\n\n// Replace prefix in all specified subfields\nfunction replacePrefix(record, options) {\n const {oldPrefix, newPrefix, prefixReplaceCodes} = options;\n debug(`Replacing ${oldPrefix} with ${newPrefix} in subfields ${prefixReplaceCodes}`);\n const pattern = `(${oldPrefix})`;\n const replacement = `(${newPrefix})`;\n record.getDatafields()\n .forEach(field => {\n field.subfields\n .filter(({code}) => prefixReplaceCodes.includes(code))\n .forEach(subfield => {\n subfield.value = subfield.value.replace(pattern, replacement); // eslint-disable-line functional/immutable-data\n });\n });\n return record;\n}\n\n\nfunction generateMissingSIDs(record, options) {\n\n const f035Filters = options && options.f035Filters ? options.f035Filters : [];\n const fSIDFilters = options && options.fSIDFilters ? options.fSIDFilters : [];\n\n if (f035Filters.length !== fSIDFilters.length || f035Filters.length < 1 || fSIDFilters.length < 1) {\n debug(`NOT running generateMissingsSIDs, no options`);\n return record;\n }\n\n debug(`Running generateMissingSIDs fixer`);\n debugData(`generateMissingSIDs options: ${JSON.stringify(options)}`);\n\n const f035s = f035ToSidInfo(record.get(/^035$/u));\n const fSIDs = sidsToSidInfo(record.get(/^SID$/u));\n\n const sidsToBeAdded = genNewSids(fSIDs.length === 0\n ? f035s\n // test that SIDs are not there yet\n : f035s.filter(f035SidInfo => !fSIDs.some(fSIDInfo => f035SidInfo.SID === fSIDInfo.SID && f035SidInfo.value === fSIDInfo.value)));\n\n debugData(`Adding (${sidsToBeAdded.length}) SIDs: ${JSON.stringify(sidsToBeAdded)}`);\n\n // Add new SIDs\n sidsToBeAdded.forEach(sidField => record.insertField(sidField));\n return record;\n\n function genNewSids(sidsToBeAdded) {\n return sidsToBeAdded.map(sidInfo => ({tag: 'SID', ind1: ' ', ind2: ' ', subfields: [{code: 'c', value: sidInfo.value}, {code: 'b', value: sidInfo.SID}]}));\n }\n\n function sidsToSidInfo(SIDs) {\n return SIDs.flatMap(({subfields}) => {\n const [SID] = subfields.filter(sub => sub.code === 'b' && fSIDFilters.includes(sub.value)).map(sub => sub.value);\n const [value] = subfields.filter(sub => sub.code === 'c' && sub.value !== undefined).map(sub => sub.value);\n\n if (SID && value) {\n return {\n SID,\n value\n };\n }\n\n return undefined;\n }).filter(value => value !== undefined);\n }\n\n function f035ToSidInfo(f035s) {\n return f035s.flatMap(({subfields}) => {\n const [wantedSub] = subfields.filter(sub => sub.code === 'a' && f035Filters.some(regexp => regexp.test(sub.value)));\n\n if (wantedSub) {\n return {\n SID: fSIDFilters[f035Filters.findIndex(regexp => regexp.test(wantedSub.value))],\n value: wantedSub.value.slice(wantedSub.value.indexOf(')') + 1)\n };\n }\n\n return undefined;\n }).filter(value => value !== undefined);\n }\n}\n\n\nfunction stripF984s(record, stripF984sSettings) {\n const F984A_PATTERN = /^(?:ALWAYS|NEVER)-PREFER-IN-MERGE$/u;\n const config = [\n {\n tag: /^984$/u,\n subfields: [\n {\n code: /a/u,\n value: F984A_PATTERN\n }\n ]\n }\n ];\n\n debug(`Running removeF984AFields`);\n debugData(`removeF984AFieldsSettings: ${JSON.stringify(stripF984sSettings)}`);\n\n if (!stripF984sSettings || !F984A_PATTERN || record.get('984').length < 1) {\n debug(`No settings or pattern for removeF984AFields or f984 in record`);\n return record;\n }\n\n debug(`Removing f984 fields with subfield $a consisting values ${F984A_PATTERN.toString()}`);\n // eslint-disable-next-line new-cap\n const validator = FieldExclusion(config);\n validator.fix(record);\n return record;\n\n}\n\nfunction stripMelindaTempSubfields(record, stripMelindaTempSubfieldsSettings) {\n if (!stripMelindaTempSubfieldsSettings) {\n debug(`No settings for stripMelindaTempSubfields`);\n return record;\n }\n // NOTE: we remove $9 MELINDA<TEMP> subfields only from f856\n const tagPattern = /856/u;\n const subfieldCodePattern = /9/u;\n const subfieldValuePattern = /^MELINDA<TEMP>$/u;\n const config = [\n {\n tag: tagPattern,\n subfields: [\n {\n code: subfieldCodePattern,\n value: subfieldValuePattern\n }\n ]\n }\n ];\n\n debug(`Running stripMelindaTempSubfields`);\n\n // eslint-disable-next-line new-cap\n const validator = SubfieldExclusion(config);\n validator.fix(record);\n return record;\n}\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,kBAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AAEA,IAAAM,4BAAA,GAAAN,OAAA;AAEA,IAAAO,aAAA,GAAAP,OAAA;AAAAQ,MAAA,CAAAC,IAAA,CAAAF,aAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,aAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,aAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAEA,MAAMS,MAAM,GAAG,IAAAC,mCAAY,EAAC,CAAC;AAC7B,MAAMC,KAAK,GAAG,IAAAC,cAAiB,EAAC,8CAA8C,CAAC;AAC/E,MAAMC,SAAS,GAAGF,KAAK,CAACG,MAAM,CAAC,MAAM,CAAC;AAE/B,SAASC,SAASA,CAACC,MAAM,EAAEC,QAAQ,GAAG,CAAC,CAAC,EAAE;EAE/CR,MAAM,CAACS,OAAO,CAAC,iEAAiEC,IAAI,CAACC,SAAS,CAACH,QAAQ,CAAC,EAAE,CAAC;EAC3G,MAAMI,SAAS,GAAGC,sBAAU,CAACC,KAAK,CAACP,MAAM,EAAE;IAACQ,cAAc,EAAE;EAAK,CAAC,CAAC;EACnEX,SAAS,CAAC,aAAaM,IAAI,CAACC,SAAS,CAACH,QAAQ,CAAC,EAAE,CAAC;;EAElD;;EAEA;EACA,MAAMQ,0BAA0B,GAAGR,QAAQ,CAACS,mBAAmB,IAAIC,SAAS;EAC5E,MAAMC,UAAU,GAAGF,mBAAmB,CAACL,SAAS,EAAEI,0BAA0B,CAAC;;EAE7E;EACA,MAAMI,sBAAsB,GAAGZ,QAAQ,CAACa,eAAe,IAAI,EAAE;EAC7D,MAAMC,UAAU,GAAGC,kBAAkB,CAACJ,UAAU,EAAEC,sBAAsB,CAAC;;EAEzE;EACA,MAAMI,UAAU,GAAG,IAAAC,iCAAc,EAACH,UAAU,EAAEd,QAAQ,CAACiB,cAAc,CAAC;;EAEtE;EACA,MAAMC,UAAU,GAAG,IAAAC,yBAAU,EAACH,UAAU,EAAEhB,QAAQ,CAACmB,UAAU,CAAC;;EAE9D;EACA,MAAMC,UAAU,GAAGC,UAAU,CAACH,UAAU,EAAElB,QAAQ,CAACqB,UAAU,IAAI,KAAK,CAAC;;EAEvE;EACA,MAAMC,UAAU,GAAGC,yBAAyB,CAACH,UAAU,EAAEpB,QAAQ,CAACuB,yBAAyB,IAAI,KAAK,CAAC;EAErG3B,SAAS,CAAC0B,UAAU,CAAC;EAErB,OAAOF,UAAU,CAACI,QAAQ,CAAC,CAAC;AAE9B;AAGA,SAAST,kBAAkBA,CAAChB,MAAM,EAAEa,sBAAsB,EAAE;EAC1D,IAAIA,sBAAsB,CAACa,MAAM,GAAG,CAAC,EAAE;IACrC/B,KAAK,CAAC,yCAAyC,CAAC;IAChD,OAAOK,MAAM;EACf;EAEAL,KAAK,CAAC,+BAA+B,CAAC;EACtCE,SAAS,CAAC,2BAA2BM,IAAI,CAACC,SAAS,CAACS,sBAAsB,CAAC,EAAE,CAAC;EAE9EA,sBAAsB,CAAC9B,OAAO,CAAC4C,OAAO,IAAI;IACxCC,aAAa,CAAC5B,MAAM,EAAE2B,OAAO,CAAC;EAChC,CAAC,CAAC;EACF,OAAO3B,MAAM;AACf;;AAGA;AACA,SAAS4B,aAAaA,CAAC5B,MAAM,EAAE2B,OAAO,EAAE;EACtC,MAAM;IAACE,SAAS;IAAEC,SAAS;IAAEC;EAAkB,CAAC,GAAGJ,OAAO;EAC1DhC,KAAK,CAAC,aAAakC,SAAS,SAASC,SAAS,iBAAiBC,kBAAkB,EAAE,CAAC;EACpF,MAAMC,OAAO,GAAG,IAAIH,SAAS,GAAG;EAChC,MAAMI,WAAW,GAAG,IAAIH,SAAS,GAAG;EACpC9B,MAAM,CAACkC,aAAa,CAAC,CAAC,CACnBnD,OAAO,CAACoD,KAAK,IAAI;IAChBA,KAAK,CAACC,SAAS,CACZC,MAAM,CAAC,CAAC;MAACC;IAAI,CAAC,KAAKP,kBAAkB,CAACQ,QAAQ,CAACD,IAAI,CAAC,CAAC,CACrDvD,OAAO,CAACyD,QAAQ,IAAI;MACnBA,QAAQ,CAACC,KAAK,GAAGD,QAAQ,CAACC,KAAK,CAACC,OAAO,CAACV,OAAO,EAAEC,WAAW,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC;EACN,CAAC,CAAC;EACJ,OAAOjC,MAAM;AACf;AAGA,SAASU,mBAAmBA,CAACV,MAAM,EAAE2B,OAAO,EAAE;EAE5C,MAAMgB,WAAW,GAAGhB,OAAO,IAAIA,OAAO,CAACgB,WAAW,GAAGhB,OAAO,CAACgB,WAAW,GAAG,EAAE;EAC7E,MAAMC,WAAW,GAAGjB,OAAO,IAAIA,OAAO,CAACiB,WAAW,GAAGjB,OAAO,CAACiB,WAAW,GAAG,EAAE;EAE7E,IAAID,WAAW,CAACjB,MAAM,KAAKkB,WAAW,CAAClB,MAAM,IAAIiB,WAAW,CAACjB,MAAM,GAAG,CAAC,IAAIkB,WAAW,CAAClB,MAAM,GAAG,CAAC,EAAE;IACjG/B,KAAK,CAAC,8CAA8C,CAAC;IACrD,OAAOK,MAAM;EACf;EAEAL,KAAK,CAAC,mCAAmC,CAAC;EAC1CE,SAAS,CAAC,gCAAgCM,IAAI,CAACC,SAAS,CAACuB,OAAO,CAAC,EAAE,CAAC;EAEpE,MAAMkB,KAAK,GAAGC,aAAa,CAAC9C,MAAM,CAACR,GAAG,CAAC,QAAQ,CAAC,CAAC;EACjD,MAAMuD,KAAK,GAAGC,aAAa,CAAChD,MAAM,CAACR,GAAG,CAAC,QAAQ,CAAC,CAAC;EAEjD,MAAMyD,aAAa,GAAGC,UAAU,CAACH,KAAK,CAACrB,MAAM,KAAK,CAAC,GAC/CmB;EACJ;EAAA,EACIA,KAAK,CAACR,MAAM,CAACc,WAAW,IAAI,CAACJ,KAAK,CAACK,IAAI,CAACC,QAAQ,IAAIF,WAAW,CAACG,GAAG,KAAKD,QAAQ,CAACC,GAAG,IAAIH,WAAW,CAACV,KAAK,KAAKY,QAAQ,CAACZ,KAAK,CAAC,CAAC,CAAC;EAEnI5C,SAAS,CAAC,WAAWoD,aAAa,CAACvB,MAAM,WAAWvB,IAAI,CAACC,SAAS,CAAC6C,aAAa,CAAC,EAAE,CAAC;;EAEpF;EACAA,aAAa,CAAClE,OAAO,CAACwE,QAAQ,IAAIvD,MAAM,CAACwD,WAAW,CAACD,QAAQ,CAAC,CAAC;EAC/D,OAAOvD,MAAM;EAEb,SAASkD,UAAUA,CAACD,aAAa,EAAE;IACjC,OAAOA,aAAa,CAACQ,GAAG,CAACC,OAAO,KAAK;MAACC,GAAG,EAAE,KAAK;MAAEC,IAAI,EAAE,GAAG;MAAEC,IAAI,EAAE,GAAG;MAAEzB,SAAS,EAAE,CAAC;QAACE,IAAI,EAAE,GAAG;QAAEG,KAAK,EAAEiB,OAAO,CAACjB;MAAK,CAAC,EAAE;QAACH,IAAI,EAAE,GAAG;QAAEG,KAAK,EAAEiB,OAAO,CAACJ;MAAG,CAAC;IAAC,CAAC,CAAC,CAAC;EAC5J;EAEA,SAASN,aAAaA,CAACc,IAAI,EAAE;IAC3B,OAAOA,IAAI,CAACC,OAAO,CAAC,CAAC;MAAC3B;IAAS,CAAC,KAAK;MACnC,MAAM,CAACkB,GAAG,CAAC,GAAGlB,SAAS,CAACC,MAAM,CAAC2B,GAAG,IAAIA,GAAG,CAAC1B,IAAI,KAAK,GAAG,IAAIM,WAAW,CAACL,QAAQ,CAACyB,GAAG,CAACvB,KAAK,CAAC,CAAC,CAACgB,GAAG,CAACO,GAAG,IAAIA,GAAG,CAACvB,KAAK,CAAC;MAChH,MAAM,CAACA,KAAK,CAAC,GAAGL,SAAS,CAACC,MAAM,CAAC2B,GAAG,IAAIA,GAAG,CAAC1B,IAAI,KAAK,GAAG,IAAI0B,GAAG,CAACvB,KAAK,KAAK9B,SAAS,CAAC,CAAC8C,GAAG,CAACO,GAAG,IAAIA,GAAG,CAACvB,KAAK,CAAC;MAE1G,IAAIa,GAAG,IAAIb,KAAK,EAAE;QAChB,OAAO;UACLa,GAAG;UACHb;QACF,CAAC;MACH;MAEA,OAAO9B,SAAS;IAClB,CAAC,CAAC,CAAC0B,MAAM,CAACI,KAAK,IAAIA,KAAK,KAAK9B,SAAS,CAAC;EACzC;EAEA,SAASmC,aAAaA,CAACD,KAAK,EAAE;IAC5B,OAAOA,KAAK,CAACkB,OAAO,CAAC,CAAC;MAAC3B;IAAS,CAAC,KAAK;MACpC,MAAM,CAAC6B,SAAS,CAAC,GAAG7B,SAAS,CAACC,MAAM,CAAC2B,GAAG,IAAIA,GAAG,CAAC1B,IAAI,KAAK,GAAG,IAAIK,WAAW,CAACS,IAAI,CAACc,MAAM,IAAIA,MAAM,CAACC,IAAI,CAACH,GAAG,CAACvB,KAAK,CAAC,CAAC,CAAC;MAEnH,IAAIwB,SAAS,EAAE;QACb,OAAO;UACLX,GAAG,EAAEV,WAAW,CAACD,WAAW,CAACyB,SAAS,CAACF,MAAM,IAAIA,MAAM,CAACC,IAAI,CAACF,SAAS,CAACxB,KAAK,CAAC,CAAC,CAAC;UAC/EA,KAAK,EAAEwB,SAAS,CAACxB,KAAK,CAAC4B,KAAK,CAACJ,SAAS,CAACxB,KAAK,CAAC6B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QAC/D,CAAC;MACH;MAEA,OAAO3D,SAAS;IAClB,CAAC,CAAC,CAAC0B,MAAM,CAACI,KAAK,IAAIA,KAAK,KAAK9B,SAAS,CAAC;EACzC;AACF;AAGA,SAASW,UAAUA,CAACtB,MAAM,EAAEuE,kBAAkB,EAAE;EAC9C,MAAMC,aAAa,GAAG,qCAAqC;EAC3D,MAAMC,MAAM,GAAG,CACb;IACEd,GAAG,EAAE,QAAQ;IACbvB,SAAS,EAAE,CACT;MACEE,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE+B;IACT,CAAC;EAEL,CAAC,CACF;EAED7E,KAAK,CAAC,2BAA2B,CAAC;EAClCE,SAAS,CAAC,8BAA8BM,IAAI,CAACC,SAAS,CAACmE,kBAAkB,CAAC,EAAE,CAAC;EAE7E,IAAI,CAACA,kBAAkB,IAAI,CAACC,aAAa,IAAIxE,MAAM,CAACR,GAAG,CAAC,KAAK,CAAC,CAACkC,MAAM,GAAG,CAAC,EAAE;IACzE/B,KAAK,CAAC,gEAAgE,CAAC;IACvE,OAAOK,MAAM;EACf;EAEAL,KAAK,CAAC,2DAA2D6E,aAAa,CAACE,QAAQ,CAAC,CAAC,EAAE,CAAC;EAC5F;EACA,MAAMC,SAAS,GAAG,IAAAC,2CAAc,EAACH,MAAM,CAAC;EACxCE,SAAS,CAACE,GAAG,CAAC7E,MAAM,CAAC;EACrB,OAAOA,MAAM;AAEf;AAEA,SAASwB,yBAAyBA,CAACxB,MAAM,EAAE8E,iCAAiC,EAAE;EAC5E,IAAI,CAACA,iCAAiC,EAAE;IACtCnF,KAAK,CAAC,2CAA2C,CAAC;IAClD,OAAOK,MAAM;EACf;EACA;EACA,MAAM+E,UAAU,GAAG,MAAM;EACzB,MAAMC,mBAAmB,GAAG,IAAI;EAChC,MAAMC,oBAAoB,GAAG,kBAAkB;EAC/C,MAAMR,MAAM,GAAG,CACb;IACEd,GAAG,EAAEoB,UAAU;IACf3C,SAAS,EAAE,CACT;MACEE,IAAI,EAAE0C,mBAAmB;MACzBvC,KAAK,EAAEwC;IACT,CAAC;EAEL,CAAC,CACF;EAEDtF,KAAK,CAAC,mCAAmC,CAAC;;EAE1C;EACA,MAAMgF,SAAS,GAAG,IAAAO,8CAAiB,EAACT,MAAM,CAAC;EAC3CE,SAAS,CAACE,GAAG,CAAC7E,MAAM,CAAC;EACrB,OAAOA,MAAM;AACf","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"url": "git@github.com:natlibfi/melinda-rest-api-commons.git"
|
|
15
15
|
},
|
|
16
16
|
"license": "MIT",
|
|
17
|
-
"version": "4.2.
|
|
17
|
+
"version": "4.2.2-alpha.2",
|
|
18
18
|
"main": "./dist/index.js",
|
|
19
19
|
"engines": {
|
|
20
20
|
"node": ">=18"
|
|
@@ -36,35 +36,35 @@
|
|
|
36
36
|
"dev:debug": "cross-env LOG_LEVEL=debug DEBUG=@natlibfi/* NODE_ENV=test nodemon"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@natlibfi/marc-record": "^9.
|
|
40
|
-
"@natlibfi/marc-record-serializers": "^10.1.
|
|
41
|
-
"@natlibfi/marc-record-validate": "^8.0.
|
|
42
|
-
"@natlibfi/marc-record-validators-melinda": "^11.
|
|
43
|
-
"@natlibfi/melinda-backend-commons": "^2.3.
|
|
44
|
-
"@natlibfi/melinda-commons": "^13.0.
|
|
39
|
+
"@natlibfi/marc-record": "^9.1.1",
|
|
40
|
+
"@natlibfi/marc-record-serializers": "^10.1.4",
|
|
41
|
+
"@natlibfi/marc-record-validate": "^8.0.11",
|
|
42
|
+
"@natlibfi/marc-record-validators-melinda": "^11.4.2",
|
|
43
|
+
"@natlibfi/melinda-backend-commons": "^2.3.5",
|
|
44
|
+
"@natlibfi/melinda-commons": "^13.0.18",
|
|
45
45
|
"amqplib": "^0.10.4",
|
|
46
46
|
"debug": "^4.3.7",
|
|
47
|
-
"http-status": "^1.
|
|
47
|
+
"http-status": "^1.8.1",
|
|
48
48
|
"moment": "^2.30.1",
|
|
49
49
|
"mongo-sanitize": "^1.1.0",
|
|
50
50
|
"mongodb": "^4.17.2"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@babel/cli": "^7.25.
|
|
54
|
-
"@babel/core": "^7.
|
|
55
|
-
"@babel/plugin-transform-runtime": "^7.25.
|
|
56
|
-
"@babel/preset-env": "^7.
|
|
57
|
-
"@babel/register": "^7.
|
|
53
|
+
"@babel/cli": "^7.25.9",
|
|
54
|
+
"@babel/core": "^7.26.0",
|
|
55
|
+
"@babel/plugin-transform-runtime": "^7.25.9",
|
|
56
|
+
"@babel/preset-env": "^7.26.0",
|
|
57
|
+
"@babel/register": "^7.25.9",
|
|
58
58
|
"@natlibfi/eslint-config-melinda-backend": "^3.0.5",
|
|
59
|
-
"@natlibfi/fixugen": "^2.0.
|
|
60
|
-
"@natlibfi/fixura": "^3.0.
|
|
61
|
-
"@natlibfi/fixura-mongo": "^2.0.
|
|
59
|
+
"@natlibfi/fixugen": "^2.0.12",
|
|
60
|
+
"@natlibfi/fixura": "^3.0.11",
|
|
61
|
+
"@natlibfi/fixura-mongo": "^2.0.21",
|
|
62
62
|
"babel-plugin-istanbul": "^7.0.0",
|
|
63
63
|
"babel-plugin-rewire": "^1.2.0",
|
|
64
64
|
"chai": "^4.5.0",
|
|
65
65
|
"cross-env": "^7.0.3",
|
|
66
66
|
"eslint": "^8.57.1",
|
|
67
|
-
"mocha": "^10.
|
|
67
|
+
"mocha": "^10.8.2",
|
|
68
68
|
"nodemon": "^3.1.7",
|
|
69
69
|
"nyc": "^17.1.0"
|
|
70
70
|
},
|