@natlibfi/marc-record-validators-melinda 8.4.4 → 9.0.0-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.
- package/.drone.yml +14 -14
- package/dist/access-rights.js +19 -23
- package/dist/access-rights.js.map +1 -1
- package/dist/access-rights.spec.js +12 -14
- package/dist/access-rights.spec.js.map +1 -1
- package/dist/double-commas.js +12 -12
- package/dist/double-commas.js.map +1 -1
- package/dist/double-commas.spec.js +10 -10
- package/dist/double-commas.spec.js.map +1 -1
- package/dist/duplicates-ind1.js +16 -17
- package/dist/duplicates-ind1.js.map +1 -1
- package/dist/duplicates-ind1.spec.js +14 -14
- package/dist/duplicates-ind1.spec.js.map +1 -1
- package/dist/empty-fields.js +8 -6
- package/dist/empty-fields.js.map +1 -1
- package/dist/empty-fields.spec.js +10 -10
- package/dist/empty-fields.spec.js.map +1 -1
- package/dist/ending-punctuation-conf.js +111 -109
- package/dist/ending-punctuation-conf.js.map +1 -1
- package/dist/ending-punctuation.js +77 -42
- package/dist/ending-punctuation.js.map +1 -1
- package/dist/ending-punctuation.spec.js +14 -14
- package/dist/ending-punctuation.spec.js.map +1 -1
- package/dist/field-exclusion.js +33 -29
- package/dist/field-exclusion.js.map +1 -1
- package/dist/field-exclusion.spec.js +390 -103
- package/dist/field-exclusion.spec.js.map +1 -1
- package/dist/field-structure.js +58 -54
- package/dist/field-structure.js.map +1 -1
- package/dist/field-structure.spec.js +76 -52
- package/dist/field-structure.spec.js.map +1 -1
- package/dist/fields-present.js +11 -10
- package/dist/fields-present.js.map +1 -1
- package/dist/fields-present.spec.js +59 -18
- package/dist/fields-present.spec.js.map +1 -1
- package/dist/fixed-fields.js +14 -16
- package/dist/fixed-fields.js.map +1 -1
- package/dist/fixed-fields.spec.js +38 -34
- package/dist/fixed-fields.spec.js.map +1 -1
- package/dist/identical-fields.js +14 -13
- package/dist/identical-fields.js.map +1 -1
- package/dist/identical-fields.spec.js +10 -10
- package/dist/identical-fields.spec.js.map +1 -1
- package/dist/index.js +7 -34
- package/dist/index.js.map +1 -1
- package/dist/isbn-issn.js +16 -11
- package/dist/isbn-issn.js.map +1 -1
- package/dist/isbn-issn.spec.js +10 -10
- package/dist/isbn-issn.spec.js.map +1 -1
- package/dist/item-language.js +29 -23
- package/dist/item-language.js.map +1 -1
- package/dist/item-language.spec.js +22 -22
- package/dist/item-language.spec.js.map +1 -1
- package/dist/punctuation/index.js +55 -36
- package/dist/punctuation/index.js.map +1 -1
- package/dist/punctuation/rules/aut.js +1 -1
- package/dist/punctuation/rules/aut.js.map +1 -1
- package/dist/punctuation/rules/bib.js +1 -1
- package/dist/punctuation/rules/bib.js.map +1 -1
- package/dist/punctuation/rules/index.js +4 -4
- package/dist/punctuation/rules/index.js.map +1 -1
- package/dist/punctuation.spec.js +38 -40
- package/dist/punctuation.spec.js.map +1 -1
- package/dist/resolvable-ext-references-melinda.js +15 -15
- package/dist/resolvable-ext-references-melinda.js.map +1 -1
- package/dist/resolvable-ext-references-melinda.spec.js +21 -21
- package/dist/resolvable-ext-references-melinda.spec.js.map +1 -1
- package/dist/sort-tags.js +25 -20
- package/dist/sort-tags.js.map +1 -1
- package/dist/sort-tags.spec.js +11 -11
- package/dist/sort-tags.spec.js.map +1 -1
- package/dist/subfield-exclusion.js +34 -23
- package/dist/subfield-exclusion.js.map +1 -1
- package/dist/subfield-exclusion.spec.js +140 -106
- package/dist/subfield-exclusion.spec.js.map +1 -1
- package/dist/unicode-decomposition.js +14 -18
- package/dist/unicode-decomposition.js.map +1 -1
- package/dist/unicode-decomposition.spec.js +12 -12
- package/dist/unicode-decomposition.spec.js.map +1 -1
- package/dist/urn.js +31 -37
- package/dist/urn.js.map +1 -1
- package/dist/urn.spec.js +11 -13
- package/dist/urn.spec.js.map +1 -1
- package/package.json +111 -117
- package/src/access-rights.js +67 -70
- package/src/access-rights.spec.js +107 -112
- package/src/double-commas.js +12 -18
- package/src/double-commas.spec.js +43 -44
- package/src/duplicates-ind1.js +34 -44
- package/src/duplicates-ind1.spec.js +82 -83
- package/src/empty-fields.js +60 -62
- package/src/empty-fields.spec.js +130 -132
- package/src/ending-punctuation-conf.js +677 -677
- package/src/ending-punctuation.js +220 -224
- package/src/ending-punctuation.spec.js +2545 -2410
- package/src/field-exclusion.js +191 -206
- package/src/field-exclusion.spec.js +883 -726
- package/src/field-structure.js +187 -215
- package/src/field-structure.spec.js +597 -496
- package/src/fields-present.js +19 -20
- package/src/fields-present.spec.js +90 -60
- package/src/fixed-fields.js +77 -82
- package/src/fixed-fields.spec.js +81 -94
- package/src/identical-fields.js +26 -27
- package/src/identical-fields.spec.js +114 -115
- package/src/index.js +18 -19
- package/src/isbn-issn.js +125 -127
- package/src/isbn-issn.spec.js +292 -291
- package/src/item-language.js +155 -160
- package/src/item-language.spec.js +313 -300
- package/src/punctuation/index.js +265 -262
- package/src/punctuation/rules/aut.js +369 -369
- package/src/punctuation/rules/bib.js +409 -409
- package/src/punctuation/rules/index.js +2 -2
- package/src/punctuation.spec.js +106 -110
- package/src/resolvable-ext-references-melinda.js +88 -94
- package/src/resolvable-ext-references-melinda.spec.js +167 -167
- package/src/sort-tags.js +33 -32
- package/src/sort-tags.spec.js +257 -262
- package/src/subfield-exclusion.js +147 -153
- package/src/subfield-exclusion.spec.js +456 -422
- package/src/unicode-decomposition.js +126 -126
- package/src/unicode-decomposition.spec.js +89 -84
- package/src/urn.js +75 -85
- package/src/urn.spec.js +121 -130
package/.drone.yml
CHANGED
|
@@ -11,29 +11,29 @@ trigger:
|
|
|
11
11
|
steps:
|
|
12
12
|
|
|
13
13
|
- name: audit
|
|
14
|
-
image: node:
|
|
14
|
+
image: node:14
|
|
15
15
|
commands:
|
|
16
16
|
- npm audit --package-lock-only --production --audit-level=moderate
|
|
17
17
|
|
|
18
18
|
- name: install
|
|
19
|
-
image: node:
|
|
19
|
+
image: node:14
|
|
20
20
|
environment:
|
|
21
|
-
NPM_CONFIG_IGNORE_SCRIPTS: true
|
|
21
|
+
NPM_CONFIG_IGNORE_SCRIPTS: true
|
|
22
22
|
commands:
|
|
23
23
|
- npm ci
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
- name: test
|
|
26
|
+
image: node:14
|
|
27
|
+
commands:
|
|
28
|
+
- npm test
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
- name: check-coverage
|
|
31
|
+
image: node:14
|
|
32
|
+
commands:
|
|
33
|
+
- npm run coverage
|
|
34
34
|
|
|
35
35
|
- name: build
|
|
36
|
-
image: node:
|
|
36
|
+
image: node:14
|
|
37
37
|
commands:
|
|
38
38
|
- npm run build
|
|
39
39
|
- NPM_CONFIG_IGNORE_SCRIPTS=true npm ci --production
|
|
@@ -50,7 +50,7 @@ steps:
|
|
|
50
50
|
token:
|
|
51
51
|
from_secret: npm_token
|
|
52
52
|
when:
|
|
53
|
-
event: tag
|
|
53
|
+
event: tag
|
|
54
54
|
---
|
|
55
55
|
kind: pipeline
|
|
56
56
|
type: docker
|
|
@@ -87,6 +87,6 @@ name: gpg_key
|
|
|
87
87
|
data: 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
|
|
88
88
|
---
|
|
89
89
|
kind: signature
|
|
90
|
-
hmac:
|
|
90
|
+
hmac: 976ccc627b05500d5bcf91a1ccdc5c2b0cdfdd18e151220f1a7ca985542cb2d0
|
|
91
91
|
|
|
92
92
|
...
|
package/dist/access-rights.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = _default;
|
|
7
|
+
|
|
1
8
|
/**
|
|
2
9
|
*
|
|
3
10
|
* @licstart The following is the entire license notice for the JavaScript code in this file.
|
|
@@ -25,27 +32,19 @@
|
|
|
25
32
|
* for the JavaScript code in this file.
|
|
26
33
|
*
|
|
27
34
|
*/
|
|
28
|
-
|
|
29
|
-
/* eslint-disable require-await */
|
|
30
|
-
'use strict';
|
|
31
|
-
|
|
32
|
-
Object.defineProperty(exports, "__esModule", {
|
|
33
|
-
value: true
|
|
34
|
-
});
|
|
35
|
-
exports.default = _default;
|
|
36
|
-
|
|
37
|
-
async function _default() {
|
|
35
|
+
function _default() {
|
|
38
36
|
const sf506 = [{
|
|
39
37
|
code: 'a',
|
|
40
|
-
value: /aineisto on käytettävissä vapaakappalekirjastoissa/
|
|
38
|
+
value: /aineisto on käytettävissä vapaakappalekirjastoissa/ui
|
|
41
39
|
}];
|
|
42
40
|
const sf540 = [{
|
|
43
41
|
code: 'c',
|
|
44
|
-
value: /laki kulttuuriaineistojen tallettamisesta ja säilyttämisestä/
|
|
42
|
+
value: /laki kulttuuriaineistojen tallettamisesta ja säilyttämisestä/ui
|
|
45
43
|
}];
|
|
46
44
|
|
|
47
|
-
|
|
45
|
+
function fix(record) {
|
|
48
46
|
if (!hasTag(record, '506', sf506)) {
|
|
47
|
+
// eslint-disable-line functional/no-conditional-statement
|
|
49
48
|
record.insertField({
|
|
50
49
|
tag: '506',
|
|
51
50
|
ind1: '1',
|
|
@@ -54,7 +53,7 @@ async function _default() {
|
|
|
54
53
|
value: 'Aineisto on käytettävissä vapaakappalekirjastoissa.'
|
|
55
54
|
}, {
|
|
56
55
|
code: 'f',
|
|
57
|
-
value: 'Online access with authorization
|
|
56
|
+
value: 'Online access with authorization'
|
|
58
57
|
}, {
|
|
59
58
|
code: '2',
|
|
60
59
|
value: 'star'
|
|
@@ -69,6 +68,7 @@ async function _default() {
|
|
|
69
68
|
}
|
|
70
69
|
|
|
71
70
|
if (!hasTag(record, '540', sf540)) {
|
|
71
|
+
// eslint-disable-line functional/no-conditional-statement
|
|
72
72
|
record.insertField({
|
|
73
73
|
tag: '540',
|
|
74
74
|
subfields: [{
|
|
@@ -96,7 +96,7 @@ async function _default() {
|
|
|
96
96
|
return true;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
function validate(record) {
|
|
100
100
|
return {
|
|
101
101
|
valid: hasTag(record, '506', sf506) && hasTag(record, '540', sf540)
|
|
102
102
|
};
|
|
@@ -109,14 +109,10 @@ async function _default() {
|
|
|
109
109
|
};
|
|
110
110
|
|
|
111
111
|
function hasTag(rec, tag, sfcv) {
|
|
112
|
-
return rec.fields.some(f => {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}) => f.subfields.some(sf => {
|
|
117
|
-
return sf.code === code && value.test(sf.value);
|
|
118
|
-
}));
|
|
119
|
-
});
|
|
112
|
+
return rec.fields.some(f => f.tag === tag && sfcv.every(({
|
|
113
|
+
code,
|
|
114
|
+
value
|
|
115
|
+
}) => f.subfields.some(sf => sf.code === code && value.test(sf.value))));
|
|
120
116
|
}
|
|
121
117
|
}
|
|
122
118
|
//# sourceMappingURL=access-rights.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/access-rights.js"],"names":["sf506","code","value","sf540","fix","record","hasTag","insertField","tag","ind1","subfields","validate","valid","description","rec","sfcv","fields","some","f","every","sf","test"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
|
|
1
|
+
{"version":3,"sources":["../src/access-rights.js"],"names":["sf506","code","value","sf540","fix","record","hasTag","insertField","tag","ind1","subfields","validate","valid","description","rec","sfcv","fields","some","f","every","sf","test"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGe,oBAAY;AACzB,QAAMA,KAAK,GAAG,CAAC;AAACC,IAAAA,IAAI,EAAE,GAAP;AAAYC,IAAAA,KAAK,EAAE;AAAnB,GAAD,CAAd;AACA,QAAMC,KAAK,GAAG,CAAC;AAACF,IAAAA,IAAI,EAAE,GAAP;AAAYC,IAAAA,KAAK,EAAE;AAAnB,GAAD,CAAd;;AAEA,WAASE,GAAT,CAAaC,MAAb,EAAqB;AACnB,QAAI,CAACC,MAAM,CAACD,MAAD,EAAS,KAAT,EAAgBL,KAAhB,CAAX,EAAmC;AAAE;AACnCK,MAAAA,MAAM,CAACE,WAAP,CAAmB;AACjBC,QAAAA,GAAG,EAAE,KADY;AAEjBC,QAAAA,IAAI,EAAE,GAFW;AAGjBC,QAAAA,SAAS,EAAE,CACT;AACET,UAAAA,IAAI,EAAE,GADR;AAEEC,UAAAA,KAAK,EAAE;AAFT,SADS,EAIN;AACDD,UAAAA,IAAI,EAAE,GADL;AAEDC,UAAAA,KAAK,EAAE;AAFN,SAJM,EAON;AACDD,UAAAA,IAAI,EAAE,GADL;AAEDC,UAAAA,KAAK,EAAE;AAFN,SAPM,EAUN;AACDD,UAAAA,IAAI,EAAE,GADL;AAEDC,UAAAA,KAAK,EAAE;AAFN,SAVM,EAaN;AACDD,UAAAA,IAAI,EAAE,GADL;AAEDC,UAAAA,KAAK,EAAE;AAFN,SAbM;AAHM,OAAnB;AAsBD;;AAED,QAAI,CAACI,MAAM,CAACD,MAAD,EAAS,KAAT,EAAgBF,KAAhB,CAAX,EAAmC;AAAE;AACnCE,MAAAA,MAAM,CAACE,WAAP,CAAmB;AACjBC,QAAAA,GAAG,EAAE,KADY;AAEjBE,QAAAA,SAAS,EAAE,CACT;AACET,UAAAA,IAAI,EAAE,GADR;AAEEC,UAAAA,KAAK,EAAE;AAFT,SADS,EAIN;AACDD,UAAAA,IAAI,EAAE,GADL;AAEDC,UAAAA,KAAK,EAAE;AAFN,SAJM,EAON;AACDD,UAAAA,IAAI,EAAE,GADL;AAEDC,UAAAA,KAAK,EAAE;AAFN,SAPM,EAUN;AACDD,UAAAA,IAAI,EAAE,GADL;AAEDC,UAAAA,KAAK,EAAE;AAFN,SAVM,EAaN;AACDD,UAAAA,IAAI,EAAE,GADL;AAEDC,UAAAA,KAAK,EAAE;AAFN,SAbM,EAgBN;AACDD,UAAAA,IAAI,EAAE,GADL;AAEDC,UAAAA,KAAK,EAAE;AAFN,SAhBM;AAFM,OAAnB;AAwBD;;AAED,WAAO,IAAP;AACD;;AAED,WAASS,QAAT,CAAkBN,MAAlB,EAA0B;AACxB,WAAO;AAACO,MAAAA,KAAK,EAAEN,MAAM,CAACD,MAAD,EAAS,KAAT,EAAgBL,KAAhB,CAAN,IAAgCM,MAAM,CAACD,MAAD,EAAS,KAAT,EAAgBF,KAAhB;AAA9C,KAAP;AACD;;AAED,SAAO;AACLU,IAAAA,WAAW,EAAE,0DADR;AAELF,IAAAA,QAFK;AAGLP,IAAAA;AAHK,GAAP;;AAMA,WAASE,MAAT,CAAgBQ,GAAhB,EAAqBN,GAArB,EAA0BO,IAA1B,EAAgC;AAC9B,WAAOD,GAAG,CAACE,MAAJ,CAAWC,IAAX,CAAgBC,CAAC,IAAIA,CAAC,CAACV,GAAF,KAAUA,GAAV,IAAiBO,IAAI,CAACI,KAAL,CAAW,CAAC;AAAClB,MAAAA,IAAD;AAAOC,MAAAA;AAAP,KAAD,KAAmBgB,CAAC,CAACR,SAAF,CAAYO,IAAZ,CAAiBG,EAAE,IAAIA,EAAE,CAACnB,IAAH,KAAYA,IAAZ,IAAoBC,KAAK,CAACmB,IAAN,CAAWD,EAAE,CAAClB,KAAd,CAA3C,CAA9B,CAAtC,CAAP;AACD;AACF","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nexport default function () {\n const sf506 = [{code: 'a', value: /aineisto on käytettävissä vapaakappalekirjastoissa/ui}];\n const sf540 = [{code: 'c', value: /laki kulttuuriaineistojen tallettamisesta ja säilyttämisestä/ui}];\n\n function fix(record) {\n if (!hasTag(record, '506', sf506)) { // eslint-disable-line functional/no-conditional-statement\n record.insertField({\n tag: '506',\n ind1: '1',\n subfields: [\n {\n code: 'a',\n value: 'Aineisto on käytettävissä vapaakappalekirjastoissa.'\n }, {\n code: 'f',\n value: 'Online access with authorization'\n }, {\n code: '2',\n value: 'star'\n }, {\n code: '5',\n value: 'FI-Vapaa'\n }, {\n code: '9',\n value: 'FENNI<KEEP>'\n }\n ]\n });\n }\n\n if (!hasTag(record, '540', sf540)) { // eslint-disable-line functional/no-conditional-statement\n record.insertField({\n tag: '540',\n subfields: [\n {\n code: 'a',\n value: 'Aineisto on käytettävissä tutkimus- ja muihin tarkoituksiin;'\n }, {\n code: 'b',\n value: 'Kansalliskirjasto;'\n }, {\n code: 'c',\n value: 'Laki kulttuuriaineistojen tallettamisesta ja säilyttämisestä'\n }, {\n code: 'u',\n value: 'http://www.finlex.fi/fi/laki/ajantasa/2007/20071433'\n }, {\n code: '5',\n value: 'FI-Vapaa'\n }, {\n code: '9',\n value: 'FENNI<KEEP>'\n }\n ]\n });\n }\n\n return true;\n }\n\n function validate(record) {\n return {valid: hasTag(record, '506', sf506) && hasTag(record, '540', sf540)};\n }\n\n return {\n description: 'Adds access rights fields for a record (if not existing)',\n validate,\n fix\n };\n\n function hasTag(rec, tag, sfcv) {\n return rec.fields.some(f => f.tag === tag && sfcv.every(({code, value}) => f.subfields.some(sf => sf.code === code && value.test(sf.value))));\n }\n}\n"],"file":"access-rights.js"}
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _chai = require("chai");
|
|
4
|
+
|
|
5
|
+
var _marcRecord = require("@natlibfi/marc-record");
|
|
6
|
+
|
|
7
|
+
var _accessRights = _interopRequireDefault(require("../src/access-rights"));
|
|
8
|
+
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
|
|
1
11
|
/**
|
|
2
12
|
*
|
|
3
13
|
* @licstart The following is the entire license notice for the JavaScript code in this file.
|
|
@@ -25,18 +35,6 @@
|
|
|
25
35
|
* for the JavaScript code in this file.
|
|
26
36
|
*
|
|
27
37
|
*/
|
|
28
|
-
|
|
29
|
-
/* eslint-disable no-undef, max-nested-callbacks, no-unused-expressions */
|
|
30
|
-
'use strict';
|
|
31
|
-
|
|
32
|
-
var _chai = require("chai");
|
|
33
|
-
|
|
34
|
-
var _marcRecord = require("@natlibfi/marc-record");
|
|
35
|
-
|
|
36
|
-
var _accessRights = _interopRequireDefault(require("../src/access-rights"));
|
|
37
|
-
|
|
38
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
39
|
-
|
|
40
38
|
describe('access-rights', async () => {
|
|
41
39
|
// Fields
|
|
42
40
|
const ldf5061 = {
|
|
@@ -48,7 +46,7 @@ describe('access-rights', async () => {
|
|
|
48
46
|
value: 'Aineisto on käytettävissä vapaakappalekirjastoissa.'
|
|
49
47
|
}, {
|
|
50
48
|
code: 'f',
|
|
51
|
-
value: 'Online access with authorization
|
|
49
|
+
value: 'Online access with authorization'
|
|
52
50
|
}, {
|
|
53
51
|
code: '2',
|
|
54
52
|
value: 'star'
|
|
@@ -126,7 +124,7 @@ describe('access-rights', async () => {
|
|
|
126
124
|
fields: recfields
|
|
127
125
|
}));
|
|
128
126
|
(0, _chai.expect)(result).to.eql({
|
|
129
|
-
valid
|
|
127
|
+
valid
|
|
130
128
|
});
|
|
131
129
|
},
|
|
132
130
|
fix: async (recfields, resfields) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/access-rights.spec.js"],"names":["describe","ldf5061","tag","ind1","ind2","subfields","code","value","ldf540","f5060","f540","it","validator","to","be","an","that","has","any","keys","description","a","validate","test","valid","recfields","result","MarcRecord","fields","eql","fix","resfields","record"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/access-rights.spec.js"],"names":["describe","ldf5061","tag","ind1","ind2","subfields","code","value","ldf540","f5060","f540","it","validator","to","be","an","that","has","any","keys","description","a","validate","test","valid","recfields","result","MarcRecord","fields","eql","fix","resfields","record"],"mappings":"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","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nimport {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/access-rights';\n\ndescribe('access-rights', async () => {\n // Fields\n const ldf5061 = {\n tag: '506',\n ind1: '1',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Aineisto on käytettävissä vapaakappalekirjastoissa.'},\n {code: 'f', value: 'Online access with authorization'},\n {code: '2', value: 'star'},\n {code: '5', value: 'FI-Vapaa'},\n {code: '9', value: 'FENNI<KEEP>'}\n ]\n };\n const ldf540 = {\n tag: '540',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Aineisto on käytettävissä tutkimus- ja muihin tarkoituksiin;'},\n {code: 'b', value: 'Kansalliskirjasto;'},\n {code: 'c', value: 'Laki kulttuuriaineistojen tallettamisesta ja säilyttämisestä'},\n {code: 'u', value: 'http://www.finlex.fi/fi/laki/ajantasa/2007/20071433'},\n {code: '5', value: 'FI-Vapaa'},\n {code: '9', value: 'FENNI<KEEP>'}\n ]\n };\n const f5060 = {\n tag: '506',\n ind1: '0',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Aineisto on vapaasti saatavissa.'},\n {code: 'f', value: 'Unrestricted online access'},\n {code: '2', value: 'star'},\n {code: '9', value: 'FENNI<KEEP>'}\n ]\n };\n const f540 = {\n tag: '540',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'c', value: 'This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.'}]\n };\n\n it('Creates a validator', async () => {\n const validator = await validatorFactory();\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n // Tests\n const test = await (async () => {\n const validator = await validatorFactory();\n return {\n validate: async (valid, ...recfields) => {\n const result = await validator.validate(new MarcRecord({fields: recfields}));\n expect(result).to.eql({valid});\n },\n\n fix: async (recfields, resfields) => {\n const record = new MarcRecord({fields: recfields});\n await validator.fix(record);\n expect(record.fields).to.eql(resfields);\n }\n };\n })();\n\n describe('#validate', () => {\n it('Finds the record valid; Legal deposit fields 5061 and 540', async () => {\n await test.validate(true, ldf5061, ldf540);\n });\n\n it('Finds the record invalid; Missing 5061', async () => {\n await test.validate(false, f5060, ldf540);\n });\n\n it('Finds the record invalid; Missing 540', async () => {\n await test.validate(false, ldf5061, f540);\n });\n\n it('Finds the record invalid; Missing 5061 and 540', async () => {\n await test.validate(false, f5060, f540);\n });\n });\n\n describe('#fix', () => {\n it('Legal deposit fields 5061 and 540; Nothing to add', async () => {\n await test.fix([ldf5061, ldf540], [ldf5061, ldf540]);\n });\n\n it('540 but missing 5061; Adds 5061', async () => {\n await test.fix([f5060, ldf540], [f5060, ldf5061, ldf540]);\n });\n\n it('5061 but missing 540; Adds 540', async () => {\n await test.fix([ldf5061, f540], [ldf5061, f540, ldf540]);\n });\n\n it('Both, 5061 and 540, missing; Adds 5061 and 540', async () => {\n await test.fix([f5060, f540], [f5060, ldf5061, f540, ldf540]);\n });\n });\n});\n"],"file":"access-rights.spec.js"}
|
package/dist/double-commas.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = _default;
|
|
7
|
+
|
|
1
8
|
/**
|
|
2
9
|
*
|
|
3
10
|
* @licstart The following is the entire license notice for the JavaScript code in this file.
|
|
@@ -25,21 +32,14 @@
|
|
|
25
32
|
* for the JavaScript code in this file.
|
|
26
33
|
*
|
|
27
34
|
*/
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
Object.defineProperty(exports, "__esModule", {
|
|
31
|
-
value: true
|
|
32
|
-
});
|
|
33
|
-
exports.default = _default;
|
|
34
|
-
|
|
35
|
-
async function _default() {
|
|
35
|
+
function _default() {
|
|
36
36
|
return {
|
|
37
37
|
description: 'Handle double commas in 700$e-subfields',
|
|
38
|
-
validate:
|
|
39
|
-
valid: !record.get(/^700$/).some(f => f.subfields.every(sf => sf.code === 'e' &&
|
|
38
|
+
validate: record => ({
|
|
39
|
+
valid: !record.get(/^700$/u).some(f => f.subfields.every(sf => sf.code === 'e' && /,,/u.test(sf.value)))
|
|
40
40
|
}),
|
|
41
|
-
fix:
|
|
42
|
-
sf.value = sf.value.replace(
|
|
41
|
+
fix: record => record.get(/^700$/u).forEach(f => f.subfields.filter(sf => sf.code === 'e').forEach(sf => {
|
|
42
|
+
sf.value = sf.value.replace(/,,/u, ','); // eslint-disable-line functional/immutable-data
|
|
43
43
|
}))
|
|
44
44
|
};
|
|
45
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/double-commas.js"],"names":["description","validate","record","valid","get","some","f","subfields","every","sf","code","test","value","fix","forEach","filter","replace"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"sources":["../src/double-commas.js"],"names":["description","validate","record","valid","get","some","f","subfields","every","sf","code","test","value","fix","forEach","filter","replace"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGe,oBAAY;AACzB,SAAO;AACLA,IAAAA,WAAW,EAAE,yCADR;AAELC,IAAAA,QAAQ,EAAEC,MAAM,KAAK;AACnBC,MAAAA,KAAK,EAAE,CAACD,MAAM,CACXE,GADK,CACD,QADC,EAELC,IAFK,CAEAC,CAAC,IAAIA,CAAC,CAACC,SAAF,CAAYC,KAAZ,CAAkBC,EAAE,IAAIA,EAAE,CAACC,IAAH,KAAY,GAAZ,IAAoB,KAAD,CAAQC,IAAR,CAAaF,EAAE,CAACG,KAAhB,CAA3C,CAFL;AADW,KAAL,CAFX;AAOLC,IAAAA,GAAG,EAAEX,MAAM,IAAIA,MAAM,CAACE,GAAP,CAAW,QAAX,EAAqBU,OAArB,CAA6BR,CAAC,IAAIA,CAAC,CAACC,SAAF,CAAYQ,MAAZ,CAAmBN,EAAE,IAAIA,EAAE,CAACC,IAAH,KAAY,GAArC,EAA0CI,OAA1C,CAAkDL,EAAE,IAAI;AACvGA,MAAAA,EAAE,CAACG,KAAH,GAAWH,EAAE,CAACG,KAAH,CAASI,OAAT,CAAiB,KAAjB,EAAwB,GAAxB,CAAX,CADuG,CAC9D;AAC1C,KAFgD,CAAlC;AAPV,GAAP;AAWD","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nexport default function () {\n return {\n description: 'Handle double commas in 700$e-subfields',\n validate: record => ({\n valid: !record\n .get(/^700$/u)\n .some(f => f.subfields.every(sf => sf.code === 'e' && (/,,/u).test(sf.value)))\n }),\n fix: record => record.get(/^700$/u).forEach(f => f.subfields.filter(sf => sf.code === 'e').forEach(sf => {\n sf.value = sf.value.replace(/,,/u, ','); // eslint-disable-line functional/immutable-data\n }))\n };\n}\n"],"file":"double-commas.js"}
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _chai = require("chai");
|
|
4
|
+
|
|
5
|
+
var _marcRecord = require("@natlibfi/marc-record");
|
|
6
|
+
|
|
7
|
+
var _doubleCommas = _interopRequireDefault(require("../src/double-commas"));
|
|
8
|
+
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
|
|
1
11
|
/**
|
|
2
12
|
*
|
|
3
13
|
* @licstart The following is the entire license notice for the JavaScript code in this file.
|
|
@@ -25,16 +35,6 @@
|
|
|
25
35
|
* for the JavaScript code in this file.
|
|
26
36
|
*
|
|
27
37
|
*/
|
|
28
|
-
'use strict';
|
|
29
|
-
|
|
30
|
-
var _chai = require("chai");
|
|
31
|
-
|
|
32
|
-
var _marcRecord = require("@natlibfi/marc-record");
|
|
33
|
-
|
|
34
|
-
var _doubleCommas = _interopRequireDefault(require("../src/double-commas"));
|
|
35
|
-
|
|
36
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
|
-
|
|
38
38
|
describe('double-commas', () => {
|
|
39
39
|
it('Creates a validator', async () => {
|
|
40
40
|
const validator = await (0, _doubleCommas.default)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/double-commas.spec.js"],"names":["describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","record","MarcRecord","fields","tag","subfields","code","value","result","eql","valid","fix","ind1","ind2"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/double-commas.spec.js"],"names":["describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","record","MarcRecord","fields","tag","subfields","code","value","result","eql","valid","fix","ind1","ind2"],"mappings":";;AA6BA;;AACA;;AACA;;;;AA/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOAA,QAAQ,CAAC,eAAD,EAAkB,MAAM;AAC9BC,EAAAA,EAAE,CAAC,qBAAD,EAAwB,YAAY;AACpC,UAAMC,SAAS,GAAG,MAAM,4BAAxB;AAEA,sBAAOA,SAAP,EACGC,EADH,CACMC,EADN,CACSC,EADT,CACY,QADZ,EAEGC,IAFH,CAEQC,GAFR,CAEYC,GAFZ,CAEgBC,IAFhB,CAEqB,aAFrB,EAEoC,UAFpC;AAIA,sBAAOP,SAAS,CAACQ,WAAjB,EAA8BP,EAA9B,CAAiCC,EAAjC,CAAoCO,CAApC,CAAsC,QAAtC;AACA,sBAAOT,SAAS,CAACU,QAAjB,EAA2BT,EAA3B,CAA8BC,EAA9B,CAAiCO,CAAjC,CAAmC,UAAnC;AACD,GATC,CAAF;AAWAX,EAAAA,QAAQ,CAAC,WAAD,EAAc,MAAM;AAC1BC,IAAAA,EAAE,CAAC,wBAAD,EAA2B,YAAY;AACvC,YAAMC,SAAS,GAAG,MAAM,4BAAxB;AACA,YAAMW,MAAM,GAAG,IAAIC,sBAAJ,CAAe;AAC5BC,QAAAA,MAAM,EAAE,CAAC;AAACC,UAAAA,GAAG,EAAE,KAAN;AAAaC,UAAAA,SAAS,EAAE,CAAC;AAACC,YAAAA,IAAI,EAAE,GAAP;AAAYC,YAAAA,KAAK,EAAE;AAAnB,WAAD;AAAxB,SAAD;AADoB,OAAf,CAAf;AAGA,YAAMC,MAAM,GAAG,MAAMlB,SAAS,CAACU,QAAV,CAAmBC,MAAnB,CAArB;AAEA,wBAAOO,MAAP,EAAejB,EAAf,CAAkBkB,GAAlB,CAAsB;AAACC,QAAAA,KAAK,EAAE;AAAR,OAAtB;AACD,KARC,CAAF;AASArB,IAAAA,EAAE,CAAC,0BAAD,EAA6B,YAAY;AACzC,YAAMC,SAAS,GAAG,MAAM,4BAAxB;AACA,YAAMW,MAAM,GAAG,IAAIC,sBAAJ,CAAe;AAC5BC,QAAAA,MAAM,EAAE,CAAC;AAACC,UAAAA,GAAG,EAAE,KAAN;AAAaC,UAAAA,SAAS,EAAE,CAAC;AAACC,YAAAA,IAAI,EAAE,GAAP;AAAYC,YAAAA,KAAK,EAAE;AAAnB,WAAD;AAAxB,SAAD;AADoB,OAAf,CAAf;AAGA,YAAMC,MAAM,GAAG,MAAMlB,SAAS,CAACU,QAAV,CAAmBC,MAAnB,CAArB;AAEA,wBAAOO,MAAP,EAAejB,EAAf,CAAkBkB,GAAlB,CAAsB;AAACC,QAAAA,KAAK,EAAE;AAAR,OAAtB;AACD,KARC,CAAF;AASD,GAnBO,CAAR;AAqBAtB,EAAAA,QAAQ,CAAC,MAAD,EAAS,MAAM;AACrBC,IAAAA,EAAE,CAAC,kBAAD,EAAqB,YAAY;AACjC,YAAMC,SAAS,GAAG,MAAM,4BAAxB;AACA,YAAMW,MAAM,GAAG,IAAIC,sBAAJ,CAAe;AAC5BC,QAAAA,MAAM,EAAE,CAAC;AAACC,UAAAA,GAAG,EAAE,KAAN;AAAaC,UAAAA,SAAS,EAAE,CAAC;AAACC,YAAAA,IAAI,EAAE,GAAP;AAAYC,YAAAA,KAAK,EAAE;AAAnB,WAAD;AAAxB,SAAD;AADoB,OAAf,CAAf;AAGA,YAAMjB,SAAS,CAACqB,GAAV,CAAcV,MAAd,CAAN;AAEA,wBAAOA,MAAM,CAACE,MAAd,EAAsBZ,EAAtB,CAAyBkB,GAAzB,CAA6B,CAC3B;AACEL,QAAAA,GAAG,EAAE,KADP;AAEEQ,QAAAA,IAAI,EAAE,GAFR;AAGEC,QAAAA,IAAI,EAAE,GAHR;AAIER,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OAD2B,CAA7B;AAQD,KAfC,CAAF;AAgBD,GAjBO,CAAR;AAkBD,CAnDO,CAAR","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nimport {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/double-commas';\n\ndescribe('double-commas', () => {\n it('Creates a validator', async () => {\n const validator = await validatorFactory();\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n describe('#validate', () => {\n it('Finds the record valid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [{tag: '700', subfields: [{code: 'e', value: 'foo,bar'}]}]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true});\n });\n it('Finds the record invalid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [{tag: '700', subfields: [{code: 'e', value: 'foo,,bar'}]}]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false});\n });\n });\n\n describe('#fix', () => {\n it('Fixes the record', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [{tag: '700', subfields: [{code: 'e', value: 'foo,,bar'}]}]\n });\n await validator.fix(record);\n\n expect(record.fields).to.eql([\n {\n tag: '700',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'e', value: 'foo,bar'}]\n }\n ]);\n });\n });\n});\n"],"file":"double-commas.spec.js"}
|
package/dist/duplicates-ind1.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = _default;
|
|
7
|
+
|
|
1
8
|
/**
|
|
2
9
|
*
|
|
3
10
|
* @licstart The following is the entire license notice for the JavaScript code in this file.
|
|
@@ -25,14 +32,7 @@
|
|
|
25
32
|
* for the JavaScript code in this file.
|
|
26
33
|
*
|
|
27
34
|
*/
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
Object.defineProperty(exports, "__esModule", {
|
|
31
|
-
value: true
|
|
32
|
-
});
|
|
33
|
-
exports.default = _default;
|
|
34
|
-
|
|
35
|
-
async function _default(tagPattern) {
|
|
35
|
+
function _default(tagPattern) {
|
|
36
36
|
if (tagPattern instanceof RegExp) {
|
|
37
37
|
return {
|
|
38
38
|
description: 'Handles data fields that only differ in the first indicator',
|
|
@@ -43,7 +43,7 @@ async function _default(tagPattern) {
|
|
|
43
43
|
|
|
44
44
|
throw new Error('No tagPattern provided');
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
function validate(record) {
|
|
47
47
|
const invalid = iterateFields(record).find(obj => obj.validation === true);
|
|
48
48
|
return invalid ? {
|
|
49
49
|
valid: false,
|
|
@@ -54,20 +54,19 @@ async function _default(tagPattern) {
|
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
function fix(record) {
|
|
58
58
|
iterateFields(record).filter(item => item.validation === false).map(({
|
|
59
59
|
validation,
|
|
60
60
|
...item
|
|
61
|
-
}) => item)
|
|
61
|
+
}) => item) // eslint-disable-line no-unused-vars
|
|
62
|
+
.forEach(field => record.removeField(field));
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
function iterateFields(record) {
|
|
65
|
-
return record.fields.map(obj => {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
};
|
|
70
|
-
});
|
|
66
|
+
return record.fields.map(obj => ({
|
|
67
|
+
validation: matches(obj, record.fields),
|
|
68
|
+
obj
|
|
69
|
+
}));
|
|
71
70
|
}
|
|
72
71
|
|
|
73
72
|
function matches(field, fields) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/duplicates-ind1.js"],"names":["tagPattern","RegExp","description","validate","fix","Error","record","invalid","iterateFields","find","obj","validation","valid","messages","tag","filter","item","map","forEach","field","removeField","fields","matches","test","ind1","hasDuplicate","fieldA","some","fieldB","subfields","length","every","aSf","bSf","code","value"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"sources":["../src/duplicates-ind1.js"],"names":["tagPattern","RegExp","description","validate","fix","Error","record","invalid","iterateFields","find","obj","validation","valid","messages","tag","filter","item","map","forEach","field","removeField","fields","matches","test","ind1","hasDuplicate","fieldA","some","fieldB","subfields","length","every","aSf","bSf","code","value"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGe,kBAAUA,UAAV,EAAsB;AACnC,MAAIA,UAAU,YAAYC,MAA1B,EAAkC;AAChC,WAAO;AACLC,MAAAA,WAAW,EACT,6DAFG;AAGLC,MAAAA,QAHK;AAILC,MAAAA;AAJK,KAAP;AAMD;;AAED,QAAM,IAAIC,KAAJ,CAAU,wBAAV,CAAN;;AAEA,WAASF,QAAT,CAAkBG,MAAlB,EAA0B;AACxB,UAAMC,OAAO,GAAGC,aAAa,CAACF,MAAD,CAAb,CACbG,IADa,CACRC,GAAG,IAAIA,GAAG,CAACC,UAAJ,KAAmB,IADlB,CAAhB;AAEA,WAAOJ,OAAO,GAAG;AAACK,MAAAA,KAAK,EAAE,KAAR;AAAeC,MAAAA,QAAQ,EAAE,CAAE,YAAWN,OAAO,CAACG,GAAR,CAAYI,GAAI,kDAA7B;AAAzB,KAAH,GAA+G;AAACF,MAAAA,KAAK,EAAE,IAAR;AAAcC,MAAAA,QAAQ,EAAE;AAAxB,KAA7H;AACD;;AAED,WAAST,GAAT,CAAaE,MAAb,EAAqB;AACnBE,IAAAA,aAAa,CAACF,MAAD,CAAb,CACGS,MADH,CACUC,IAAI,IAAIA,IAAI,CAACL,UAAL,KAAoB,KADtC,EAEGM,GAFH,CAEO,CAAC;AAACN,MAAAA,UAAD;AAAa,SAAGK;AAAhB,KAAD,KAA2BA,IAFlC,EAEwC;AAFxC,KAGGE,OAHH,CAGWC,KAAK,IAAIb,MAAM,CAACc,WAAP,CAAmBD,KAAnB,CAHpB;AAID;;AAED,WAASX,aAAT,CAAuBF,MAAvB,EAA+B;AAC7B,WAAOA,MAAM,CAACe,MAAP,CAAcJ,GAAd,CAAkBP,GAAG,KAAK;AAACC,MAAAA,UAAU,EAAEW,OAAO,CAACZ,GAAD,EAAMJ,MAAM,CAACe,MAAb,CAApB;AAA0CX,MAAAA;AAA1C,KAAL,CAArB,CAAP;AACD;;AAED,WAASY,OAAT,CAAiBH,KAAjB,EAAwBE,MAAxB,EAAgC;AAC9B,WAAOrB,UAAU,CAACuB,IAAX,CAAgBJ,KAAK,CAACL,GAAtB,KAA8BK,KAAK,CAACK,IAAN,KAAe,GAA7C,IAAoDC,YAAY,CAACN,KAAD,EAAQE,MAAR,CAAvE;AACD;;AAED,WAASI,YAAT,CAAsBC,MAAtB,EAA8BL,MAA9B,EAAsC;AACpC,WAAOA,MAAM,CAACM,IAAP,CAAYC,MAAM,IAAIF,MAAM,KAAKE,MAAX,IAC3BF,MAAM,CAACZ,GAAP,KAAec,MAAM,CAACd,GADK,IAE3BY,MAAM,CAACF,IAAP,KAAgBI,MAAM,CAACJ,IAFI,IAG3BE,MAAM,CAACG,SAAP,CAAiBC,MAAjB,KAA4BF,MAAM,CAACC,SAAP,CAAiBC,MAHlB,IAI3BJ,MAAM,CAACG,SAAP,CAAiBE,KAAjB,CAAuBC,GAAG,IAAIJ,MAAM,CAACC,SAAP,CAAiBF,IAAjB,CAAsBM,GAAG,IAAID,GAAG,CAACE,IAAJ,KAAaD,GAAG,CAACC,IAAjB,IAAyBF,GAAG,CAACG,KAAJ,KAAcF,GAAG,CAACE,KAAxE,CAA9B,CAJK,CAAP;AAKD;AACF","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nexport default function (tagPattern) {\n if (tagPattern instanceof RegExp) {\n return {\n description:\n 'Handles data fields that only differ in the first indicator',\n validate,\n fix\n };\n }\n\n throw new Error('No tagPattern provided');\n\n function validate(record) {\n const invalid = iterateFields(record)\n .find(obj => obj.validation === true);\n return invalid ? {valid: false, messages: [`Multiple ${invalid.obj.tag} fields which only differ in the first indicator`]} : {valid: true, messages: []};\n }\n\n function fix(record) {\n iterateFields(record)\n .filter(item => item.validation === false)\n .map(({validation, ...item}) => item) // eslint-disable-line no-unused-vars\n .forEach(field => record.removeField(field));\n }\n\n function iterateFields(record) {\n return record.fields.map(obj => ({validation: matches(obj, record.fields), obj}));\n }\n\n function matches(field, fields) {\n return tagPattern.test(field.tag) && field.ind1 === ' ' && hasDuplicate(field, fields);\n }\n\n function hasDuplicate(fieldA, fields) {\n return fields.some(fieldB => fieldA !== fieldB &&\n fieldA.tag === fieldB.tag &&\n fieldA.ind1 !== fieldB.ind1 &&\n fieldA.subfields.length === fieldB.subfields.length &&\n fieldA.subfields.every(aSf => fieldB.subfields.some(bSf => aSf.code === bSf.code && aSf.value === bSf.value)));\n }\n}\n"],"file":"duplicates-ind1.js"}
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _chai = require("chai");
|
|
4
|
+
|
|
5
|
+
var _marcRecord = require("@natlibfi/marc-record");
|
|
6
|
+
|
|
7
|
+
var _duplicatesInd = _interopRequireDefault(require("../src/duplicates-ind1"));
|
|
8
|
+
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
|
|
1
11
|
/**
|
|
2
12
|
*
|
|
3
13
|
* @licstart The following is the entire license notice for the JavaScript code in this file.
|
|
@@ -25,26 +35,16 @@
|
|
|
25
35
|
* for the JavaScript code in this file.
|
|
26
36
|
*
|
|
27
37
|
*/
|
|
28
|
-
'use strict';
|
|
29
|
-
|
|
30
|
-
var _chai = require("chai");
|
|
31
|
-
|
|
32
|
-
var _marcRecord = require("@natlibfi/marc-record");
|
|
33
|
-
|
|
34
|
-
var _duplicatesInd = _interopRequireDefault(require("../src/duplicates-ind1"));
|
|
35
|
-
|
|
36
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
|
-
|
|
38
38
|
describe('duplicates-ind1', () => {
|
|
39
39
|
it('Creates a validator', async () => {
|
|
40
|
-
const validator = await (0, _duplicatesInd.default)(/^245$/);
|
|
40
|
+
const validator = await (0, _duplicatesInd.default)(/^245$/u);
|
|
41
41
|
(0, _chai.expect)(validator).to.be.an('object').that.has.any.keys('description', 'validate');
|
|
42
42
|
(0, _chai.expect)(validator.description).to.be.a('string');
|
|
43
43
|
(0, _chai.expect)(validator.validate).to.be.a('function');
|
|
44
44
|
});
|
|
45
45
|
describe('#validate', () => {
|
|
46
46
|
it('Finds the record valid', async () => {
|
|
47
|
-
const validator = await (0, _duplicatesInd.default)(/^500$/);
|
|
47
|
+
const validator = await (0, _duplicatesInd.default)(/^500$/u);
|
|
48
48
|
const record = new _marcRecord.MarcRecord({
|
|
49
49
|
fields: [{
|
|
50
50
|
tag: '500',
|
|
@@ -71,7 +71,7 @@ describe('duplicates-ind1', () => {
|
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
73
|
it('Finds the record invalid', async () => {
|
|
74
|
-
const validator = await (0, _duplicatesInd.default)(/^500$/);
|
|
74
|
+
const validator = await (0, _duplicatesInd.default)(/^500$/u);
|
|
75
75
|
const record = new _marcRecord.MarcRecord({
|
|
76
76
|
fields: [{
|
|
77
77
|
tag: '500',
|
|
@@ -100,7 +100,7 @@ describe('duplicates-ind1', () => {
|
|
|
100
100
|
});
|
|
101
101
|
describe('#fix', () => {
|
|
102
102
|
it('Removes duplicate values', async () => {
|
|
103
|
-
const validator = await (0, _duplicatesInd.default)(/^500$/);
|
|
103
|
+
const validator = await (0, _duplicatesInd.default)(/^500$/u);
|
|
104
104
|
const record = new _marcRecord.MarcRecord({
|
|
105
105
|
fields: [{
|
|
106
106
|
tag: '500',
|