@natlibfi/melinda-rest-api-commons 4.2.5 → 5.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/.github/workflows/melinda-node-tests.yml +9 -6
  2. package/dist/conversion.js +70 -0
  3. package/dist/conversion.js.map +7 -0
  4. package/dist/fix-constants.js +63 -0
  5. package/dist/fix-constants.js.map +7 -0
  6. package/dist/fix-handle-tempurns.js +83 -0
  7. package/dist/fix-handle-tempurns.js.map +7 -0
  8. package/dist/fix-strip-f884s.js +160 -0
  9. package/dist/fix-strip-f884s.js.map +7 -0
  10. package/dist/fix-utils.js +39 -0
  11. package/dist/fix-utils.js.map +7 -0
  12. package/dist/fix.js +142 -0
  13. package/dist/fix.js.map +7 -0
  14. package/dist/validation.js +19 -0
  15. package/dist/validation.js.map +7 -0
  16. package/eslint.config.js +53 -0
  17. package/package.json +23 -96
  18. package/tests/{amqp.health.spec.js → amqp.healthtest.js} +2 -2
  19. package/tests/{amqp.tests.spec.js → amqp.tests.localtest.js} +46 -46
  20. package/tests/helpers/{conversion.spec.js → conversion.test.js} +38 -25
  21. package/tests/helpers/{fix.spec.js → fix.test.js} +6 -6
  22. package/tests/helpers/{validation.spec.js → validation.test.js} +12 -9
  23. package/tests/{mongo-add-blob-size.spec.js → mongo-add-blob-size.test.js} +6 -6
  24. package/tests/{mongo-check-and-check-state.spec.js → mongo-check-and-check-state.test.js} +7 -7
  25. package/tests/{mongo-check-and-set-import-job-state.spec.js → mongo-check-and-set-import-job-state.test.js} +7 -7
  26. package/tests/{mongo-check-timeout.spec.js → mongo-check-timeout.test.js} +7 -7
  27. package/tests/{mongo-create-bulk.spec.js → mongo-create-bulk.test.js} +5 -5
  28. package/tests/{mongo-create-prio.spec.js → mongo-create-prio.test.js} +6 -6
  29. package/tests/{mongo-get-one.spec.js → mongo-get-one.test.js} +7 -7
  30. package/tests/{mongo-get-stream.spec.js → mongo-get-stream.test.js} +7 -7
  31. package/tests/{mongo-push-ids.spec.js → mongo-push-ids.test.js} +5 -5
  32. package/tests/{mongo-push-messages.spec.js → mongo-push-messages.test.js} +6 -6
  33. package/tests/{mongo-query-by-id.spec.js → mongo-query-by-id.test.js} +7 -7
  34. package/tests/{mongo-query.spec.js → mongo-query.test.js} +7 -7
  35. package/tests/{mongo-read-content.spec.js → mongo-read-content.test.js} +8 -8
  36. package/tests/{mongo-remove.spec.js → mongo-remove.test.js} +6 -6
  37. package/tests/{mongo-set-blob-size.spec.js → mongo-set-blob-size.test.js} +6 -6
  38. package/tests/{mongo-set-import-job-state.spec.js → mongo-set-import-job-state.test.js} +6 -6
  39. package/tests/{mongo-set-operation.spec.js → mongo-set-operation.test.js} +6 -6
  40. package/tests/{mongo-set-operations.spec.js → mongo-set-operations.test.js} +6 -6
  41. package/tests/{mongo-set-state.spec.js → mongo-set-state.test.js} +7 -7
  42. package/tests/{mongoLog.spec.js → mongoLog.test.js} +10 -11
  43. package/tests/testUtils.js +9 -8
  44. package/dist/amqp.js +0 -326
  45. package/dist/amqp.js.map +0 -1
  46. package/dist/constants.js +0 -60
  47. package/dist/constants.js.map +0 -1
  48. package/dist/helpers/conversion.js +0 -88
  49. package/dist/helpers/conversion.js.map +0 -1
  50. package/dist/helpers/fix-constants.js +0 -70
  51. package/dist/helpers/fix-constants.js.map +0 -1
  52. package/dist/helpers/fix-handle-tempurns.js +0 -133
  53. package/dist/helpers/fix-handle-tempurns.js.map +0 -1
  54. package/dist/helpers/fix-strip-f884s.js +0 -210
  55. package/dist/helpers/fix-strip-f884s.js.map +0 -1
  56. package/dist/helpers/fix-utils.js +0 -54
  57. package/dist/helpers/fix-utils.js.map +0 -1
  58. package/dist/helpers/fix.js +0 -202
  59. package/dist/helpers/fix.js.map +0 -1
  60. package/dist/helpers/validation.js +0 -37
  61. package/dist/helpers/validation.js.map +0 -1
  62. package/dist/index.js +0 -109
  63. package/dist/index.js.map +0 -1
  64. package/dist/mongo.js +0 -822
  65. package/dist/mongo.js.map +0 -1
  66. package/dist/mongoLog.js +0 -409
  67. package/dist/mongoLog.js.map +0 -1
  68. package/dist/utils.js +0 -211
  69. package/dist/utils.js.map +0 -1
@@ -1,202 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- var _exportNames = {
8
- fixRecord: true
9
- };
10
- exports.fixRecord = fixRecord;
11
- var _marcRecord = require("@natlibfi/marc-record");
12
- var _melindaBackendCommons = require("@natlibfi/melinda-backend-commons");
13
- var _debug = _interopRequireDefault(require("debug"));
14
- var _fixHandleTempurns = require("./fix-handle-tempurns");
15
- var _fixStripF884s = require("./fix-strip-f884s");
16
- var _marcRecordValidatorsMelinda = require("@natlibfi/marc-record-validators-melinda");
17
- var _fixConstants = require("./fix-constants");
18
- Object.keys(_fixConstants).forEach(function (key) {
19
- if (key === "default" || key === "__esModule") return;
20
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
21
- if (key in exports && exports[key] === _fixConstants[key]) return;
22
- Object.defineProperty(exports, key, {
23
- enumerable: true,
24
- get: function () {
25
- return _fixConstants[key];
26
- }
27
- });
28
- });
29
- const logger = (0, _melindaBackendCommons.createLogger)();
30
- const debug = (0, _debug.default)('@natlibfi/melinda-rest-api-commons:fixRecord');
31
- const debugData = debug.extend('data');
32
- function fixRecord(record, settings = {}) {
33
- logger.verbose(`We will apply formatting to the record according to settings: ${JSON.stringify(settings)}`);
34
- const newRecord = _marcRecord.MarcRecord.clone(record, {
35
- subfieldValues: false
36
- });
37
- debugData(`settings: ${JSON.stringify(settings)}`);
38
-
39
- // We should handle these in some prettier way ...
40
-
41
- // Fix 1, generate SIDs
42
- const generateMissingSIDsOptions = settings.generateMissingSIDs || undefined;
43
- const newRecord1 = generateMissingSIDs(newRecord, generateMissingSIDsOptions);
44
-
45
- // Fix 2, replace identifier prefixes
46
- const replacePrefixesOptions = settings.replacePrefixes || [];
47
- const newRecord2 = replaceAllPrefixes(newRecord1, replacePrefixesOptions);
48
-
49
- // Fix 3, handle temporary URNs from legal deposit record import
50
- const newRecord3 = (0, _fixHandleTempurns.handleTempUrns)(newRecord2, settings.handleTempUrns);
51
-
52
- // Fix 4, strip extra field 884s
53
- const newRecord4 = (0, _fixStripF884s.stripF884s)(newRecord3, settings.stripF884s);
54
-
55
- // Fix 5, strip extra field 984s
56
- const newRecord5 = stripF984s(newRecord4, settings.stripF984s || false);
57
-
58
- // Fix 6, strip $9 MELINDA<TEMP> subfields
59
- const newRecord6 = stripMelindaTempSubfields(newRecord5, settings.stripMelindaTempSubfields || false);
60
- debugData(newRecord6);
61
- return newRecord6.toObject();
62
- }
63
- function replaceAllPrefixes(record, replacePrefixesOptions) {
64
- if (replacePrefixesOptions.length < 1) {
65
- debug(`NOT running replacePrefixes, no options`);
66
- return record;
67
- }
68
- debug(`Running replacePrefixes fixer`);
69
- debugData(`replacePrefixesOptions: ${JSON.stringify(replacePrefixesOptions)}`);
70
- replacePrefixesOptions.forEach(options => {
71
- replacePrefix(record, options);
72
- });
73
- return record;
74
- }
75
-
76
- // Replace prefix in all specified subfields
77
- function replacePrefix(record, options) {
78
- const {
79
- oldPrefix,
80
- newPrefix,
81
- prefixReplaceCodes
82
- } = options;
83
- debug(`Replacing ${oldPrefix} with ${newPrefix} in subfields ${prefixReplaceCodes}`);
84
- const pattern = `(${oldPrefix})`;
85
- const replacement = `(${newPrefix})`;
86
- record.getDatafields().forEach(field => {
87
- field.subfields.filter(({
88
- code
89
- }) => prefixReplaceCodes.includes(code)).forEach(subfield => {
90
- subfield.value = subfield.value.replace(pattern, replacement); // eslint-disable-line functional/immutable-data
91
- });
92
- });
93
- return record;
94
- }
95
- function generateMissingSIDs(record, options) {
96
- const f035Filters = options && options.f035Filters ? options.f035Filters : [];
97
- const fSIDFilters = options && options.fSIDFilters ? options.fSIDFilters : [];
98
- if (f035Filters.length !== fSIDFilters.length || f035Filters.length < 1 || fSIDFilters.length < 1) {
99
- debug(`NOT running generateMissingsSIDs, no options`);
100
- return record;
101
- }
102
- debug(`Running generateMissingSIDs fixer`);
103
- debugData(`generateMissingSIDs options: ${JSON.stringify(options)}`);
104
- const f035s = f035ToSidInfo(record.get(/^035$/u));
105
- const fSIDs = sidsToSidInfo(record.get(/^SID$/u));
106
- const sidsToBeAdded = genNewSids(fSIDs.length === 0 ? f035s
107
- // test that SIDs are not there yet
108
- : f035s.filter(f035SidInfo => !fSIDs.some(fSIDInfo => f035SidInfo.SID === fSIDInfo.SID && f035SidInfo.value === fSIDInfo.value)));
109
- debugData(`Adding (${sidsToBeAdded.length}) SIDs: ${JSON.stringify(sidsToBeAdded)}`);
110
-
111
- // Add new SIDs
112
- sidsToBeAdded.forEach(sidField => record.insertField(sidField));
113
- return record;
114
- function genNewSids(sidsToBeAdded) {
115
- return sidsToBeAdded.map(sidInfo => ({
116
- tag: 'SID',
117
- ind1: ' ',
118
- ind2: ' ',
119
- subfields: [{
120
- code: 'c',
121
- value: sidInfo.value
122
- }, {
123
- code: 'b',
124
- value: sidInfo.SID
125
- }]
126
- }));
127
- }
128
- function sidsToSidInfo(SIDs) {
129
- return SIDs.flatMap(({
130
- subfields
131
- }) => {
132
- const [SID] = subfields.filter(sub => sub.code === 'b' && fSIDFilters.includes(sub.value)).map(sub => sub.value);
133
- const [value] = subfields.filter(sub => sub.code === 'c' && sub.value !== undefined).map(sub => sub.value);
134
- if (SID && value) {
135
- return {
136
- SID,
137
- value
138
- };
139
- }
140
- return undefined;
141
- }).filter(value => value !== undefined);
142
- }
143
- function f035ToSidInfo(f035s) {
144
- return f035s.flatMap(({
145
- subfields
146
- }) => {
147
- const [wantedSub] = subfields.filter(sub => sub.code === 'a' && f035Filters.some(regexp => regexp.test(sub.value)));
148
- if (wantedSub) {
149
- return {
150
- SID: fSIDFilters[f035Filters.findIndex(regexp => regexp.test(wantedSub.value))],
151
- value: wantedSub.value.slice(wantedSub.value.indexOf(')') + 1)
152
- };
153
- }
154
- return undefined;
155
- }).filter(value => value !== undefined);
156
- }
157
- }
158
- function stripF984s(record, stripF984sSettings) {
159
- const F984A_PATTERN = /^(?:ALWAYS|NEVER)-PREFER-IN-MERGE$/u;
160
- const config = [{
161
- tag: /^984$/u,
162
- subfields: [{
163
- code: /a/u,
164
- value: F984A_PATTERN
165
- }]
166
- }];
167
- debug(`Running removeF984AFields`);
168
- debugData(`removeF984AFieldsSettings: ${JSON.stringify(stripF984sSettings)}`);
169
- if (!stripF984sSettings || !F984A_PATTERN || record.get('984').length < 1) {
170
- debug(`No settings or pattern for removeF984AFields or f984 in record`);
171
- return record;
172
- }
173
- debug(`Removing f984 fields with subfield $a consisting values ${F984A_PATTERN.toString()}`);
174
- // eslint-disable-next-line new-cap
175
- const validator = (0, _marcRecordValidatorsMelinda.FieldExclusion)(config);
176
- validator.fix(record);
177
- return record;
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
- }
202
- //# sourceMappingURL=fix.js.map
@@ -1 +0,0 @@
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 newRecord6.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":"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","ignoreList":[]}
@@ -1,37 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _marcRecordValidate = _interopRequireDefault(require("@natlibfi/marc-record-validate"));
9
- var _marcRecordValidatorsMelinda = require("@natlibfi/marc-record-validators-melinda");
10
- var _melindaBackendCommons = require("@natlibfi/melinda-backend-commons");
11
- var _default = async () => {
12
- const logger = (0, _melindaBackendCommons.createLogger)();
13
- logger.verbose('Running inbuilt record validations');
14
- const validate = (0, _marcRecordValidate.default)([await (0, _marcRecordValidatorsMelinda.FieldStructure)([{
15
- tag: /^003$/u,
16
- valuePattern: /^FI-MELINDA$/u
17
- }])]);
18
- return async unvalidRecord => {
19
- const {
20
- record,
21
- valid,
22
- report
23
- } = await validate(unvalidRecord, {
24
- fix: false,
25
- validateFixes: false
26
- }, {
27
- subfieldValues: false
28
- });
29
- return {
30
- record,
31
- failed: valid === false,
32
- messages: report
33
- };
34
- };
35
- };
36
- exports.default = _default;
37
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","names":["_marcRecordValidate","_interopRequireDefault","require","_marcRecordValidatorsMelinda","_melindaBackendCommons","_default","logger","createLogger","verbose","validate","validateFactory","fieldStructure","tag","valuePattern","unvalidRecord","record","valid","report","fix","validateFixes","subfieldValues","failed","messages","exports","default"],"sources":["../../src/helpers/validation.js"],"sourcesContent":["import validateFactory from '@natlibfi/marc-record-validate';\nimport {\n FieldStructure as fieldStructure\n} from '@natlibfi/marc-record-validators-melinda';\nimport {createLogger} from '@natlibfi/melinda-backend-commons';\n\nexport default async () => {\n const logger = createLogger();\n\n logger.verbose('Running inbuilt record validations');\n const validate = validateFactory([await fieldStructure([{tag: /^003$/u, valuePattern: /^FI-MELINDA$/u}])]);\n\n return async unvalidRecord => {\n const {record, valid, report} = await validate(unvalidRecord, {fix: false, validateFixes: false}, {subfieldValues: false});\n\n return {\n record,\n failed: valid === false,\n messages: report\n };\n };\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,mBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,4BAAA,GAAAD,OAAA;AAGA,IAAAE,sBAAA,GAAAF,OAAA;AAA+D,IAAAG,QAAA,GAEhD,MAAAA,CAAA,KAAY;EACzB,MAAMC,MAAM,GAAG,IAAAC,mCAAY,EAAC,CAAC;EAE7BD,MAAM,CAACE,OAAO,CAAC,oCAAoC,CAAC;EACpD,MAAMC,QAAQ,GAAG,IAAAC,2BAAe,EAAC,CAAC,MAAM,IAAAC,2CAAc,EAAC,CAAC;IAACC,GAAG,EAAE,QAAQ;IAAEC,YAAY,EAAE;EAAe,CAAC,CAAC,CAAC,CAAC,CAAC;EAE1G,OAAO,MAAMC,aAAa,IAAI;IAC5B,MAAM;MAACC,MAAM;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAG,MAAMR,QAAQ,CAACK,aAAa,EAAE;MAACI,GAAG,EAAE,KAAK;MAAEC,aAAa,EAAE;IAAK,CAAC,EAAE;MAACC,cAAc,EAAE;IAAK,CAAC,CAAC;IAE1H,OAAO;MACLL,MAAM;MACNM,MAAM,EAAEL,KAAK,KAAK,KAAK;MACvBM,QAAQ,EAAEL;IACZ,CAAC;EACH,CAAC;AACH,CAAC;AAAAM,OAAA,CAAAC,OAAA,GAAAnB,QAAA","ignoreList":[]}
package/dist/index.js DELETED
@@ -1,109 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- var _exportNames = {
8
- mongoFactory: true,
9
- mongoLogFactory: true,
10
- amqpFactory: true,
11
- conversions: true,
12
- validations: true,
13
- fixes: true,
14
- logError: true,
15
- createImportJobState: true,
16
- createImportJobStateForQuery: true,
17
- createRecordResponseItem: true,
18
- addRecordResponseItem: true,
19
- addRecordResponseItems: true
20
- };
21
- Object.defineProperty(exports, "addRecordResponseItem", {
22
- enumerable: true,
23
- get: function () {
24
- return _utils.addRecordResponseItem;
25
- }
26
- });
27
- Object.defineProperty(exports, "addRecordResponseItems", {
28
- enumerable: true,
29
- get: function () {
30
- return _utils.addRecordResponseItems;
31
- }
32
- });
33
- Object.defineProperty(exports, "amqpFactory", {
34
- enumerable: true,
35
- get: function () {
36
- return _amqp.default;
37
- }
38
- });
39
- Object.defineProperty(exports, "conversions", {
40
- enumerable: true,
41
- get: function () {
42
- return _conversion.default;
43
- }
44
- });
45
- Object.defineProperty(exports, "createImportJobState", {
46
- enumerable: true,
47
- get: function () {
48
- return _utils.createImportJobState;
49
- }
50
- });
51
- Object.defineProperty(exports, "createImportJobStateForQuery", {
52
- enumerable: true,
53
- get: function () {
54
- return _utils.createImportJobStateForQuery;
55
- }
56
- });
57
- Object.defineProperty(exports, "createRecordResponseItem", {
58
- enumerable: true,
59
- get: function () {
60
- return _utils.createRecordResponseItem;
61
- }
62
- });
63
- exports.fixes = void 0;
64
- Object.defineProperty(exports, "logError", {
65
- enumerable: true,
66
- get: function () {
67
- return _utils.logError;
68
- }
69
- });
70
- Object.defineProperty(exports, "mongoFactory", {
71
- enumerable: true,
72
- get: function () {
73
- return _mongo.default;
74
- }
75
- });
76
- Object.defineProperty(exports, "mongoLogFactory", {
77
- enumerable: true,
78
- get: function () {
79
- return _mongoLog.default;
80
- }
81
- });
82
- Object.defineProperty(exports, "validations", {
83
- enumerable: true,
84
- get: function () {
85
- return _validation.default;
86
- }
87
- });
88
- var _mongo = _interopRequireDefault(require("./mongo"));
89
- var _mongoLog = _interopRequireDefault(require("./mongoLog"));
90
- var _amqp = _interopRequireDefault(require("./amqp"));
91
- var _conversion = _interopRequireDefault(require("./helpers/conversion"));
92
- var _validation = _interopRequireDefault(require("./helpers/validation"));
93
- var fixes = _interopRequireWildcard(require("./helpers/fix"));
94
- exports.fixes = fixes;
95
- var _utils = require("./utils");
96
- var _constants = require("./constants");
97
- Object.keys(_constants).forEach(function (key) {
98
- if (key === "default" || key === "__esModule") return;
99
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
100
- if (key in exports && exports[key] === _constants[key]) return;
101
- Object.defineProperty(exports, key, {
102
- enumerable: true,
103
- get: function () {
104
- return _constants[key];
105
- }
106
- });
107
- });
108
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
109
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["_mongo","_interopRequireDefault","require","_mongoLog","_amqp","_conversion","_validation","fixes","_interopRequireWildcard","exports","_utils","_constants","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","defineProperty","enumerable","get","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","set","getOwnPropertyDescriptor"],"sources":["../src/index.js"],"sourcesContent":["\n\nimport mongoFactory from './mongo';\nimport mongoLogFactory from './mongoLog';\nimport amqpFactory from './amqp';\nimport conversions from './helpers/conversion';\nimport validations from './helpers/validation';\nimport * as fixes from './helpers/fix';\nimport {logError, createImportJobState, createImportJobStateForQuery, createRecordResponseItem, addRecordResponseItem, addRecordResponseItems} from './utils';\n\nexport {mongoFactory, mongoLogFactory, amqpFactory, conversions, validations, fixes, logError, createImportJobState, createImportJobStateForQuery, createRecordResponseItem, addRecordResponseItem, addRecordResponseItems};\nexport * from './constants';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,WAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,WAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,KAAA,GAAAC,uBAAA,CAAAN,OAAA;AAAuCO,OAAA,CAAAF,KAAA,GAAAA,KAAA;AACvC,IAAAG,MAAA,GAAAR,OAAA;AAGA,IAAAS,UAAA,GAAAT,OAAA;AAAAU,MAAA,CAAAC,IAAA,CAAAF,UAAA,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,IAAAN,OAAA,IAAAA,OAAA,CAAAM,GAAA,MAAAJ,UAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAQ,cAAA,CAAAX,OAAA,EAAAM,GAAA;IAAAM,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAX,UAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAA4B,SAAAP,wBAAAe,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAjB,uBAAA,YAAAA,CAAAe,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAP,GAAA,CAAAC,CAAA,GAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAP,cAAA,CAAAC,IAAA,CAAAK,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAjB,MAAA,CAAAQ,cAAA,KAAAR,MAAA,CAAAwB,wBAAA,CAAAb,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAR,GAAA,IAAAQ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA","ignoreList":[]}