@natlibfi/marc-record-validators-melinda 11.0.0-alpha.1 → 11.1.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.
- package/dist/addMissingField336.js +272 -0
- package/dist/addMissingField336.js.map +1 -0
- package/dist/addMissingField336.spec.js +45 -0
- package/dist/addMissingField336.spec.js.map +1 -0
- package/dist/addMissingField337.js +177 -0
- package/dist/addMissingField337.js.map +1 -0
- package/dist/addMissingField337.spec.js +43 -0
- package/dist/addMissingField337.spec.js.map +1 -0
- package/dist/addMissingField338.js +424 -0
- package/dist/addMissingField338.js.map +1 -0
- package/dist/addMissingField338.spec.js +45 -0
- package/dist/addMissingField338.spec.js.map +1 -0
- package/dist/cyrillux-usemarcon-replacement.js +370 -0
- package/dist/cyrillux-usemarcon-replacement.js.map +1 -0
- package/dist/cyrillux-usemarcon-replacement.spec.js +45 -0
- package/dist/cyrillux-usemarcon-replacement.spec.js.map +1 -0
- package/dist/field33XUtils.js +529 -0
- package/dist/field33XUtils.js.map +1 -0
- package/dist/fix-33X.js +484 -0
- package/dist/fix-33X.js.map +1 -0
- package/dist/fix-33X.spec.js +45 -0
- package/dist/fix-33X.spec.js.map +1 -0
- package/dist/fix-language-codes.js +109 -0
- package/dist/fix-language-codes.js.map +1 -0
- package/dist/fix-language-codes.spec.js +44 -0
- package/dist/fix-language-codes.spec.js.map +1 -0
- package/dist/fixRelatorTerms.js +1 -1
- package/dist/fixRelatorTerms.js.map +1 -1
- package/dist/punctuation2.js +4 -3
- package/dist/punctuation2.js.map +1 -1
- package/dist/resolvable-ext-references-melinda.spec.js +1 -1
- package/dist/resolvable-ext-references-melinda.spec.js.map +1 -1
- package/dist/sanitize-vocabulary-source-codes.js +7 -10
- package/dist/sanitize-vocabulary-source-codes.js.map +1 -1
- package/dist/utils.js +13 -8
- package/dist/utils.js.map +1 -1
- package/package.json +7 -7
- package/src/addMissingField336.js +260 -0
- package/src/addMissingField336.spec.js +46 -0
- package/src/addMissingField337.js +132 -0
- package/src/addMissingField337.spec.js +45 -0
- package/src/addMissingField338.js +446 -0
- package/src/addMissingField338.spec.js +46 -0
- package/src/cyrillux-usemarcon-replacement.js +410 -0
- package/src/cyrillux-usemarcon-replacement.spec.js +47 -0
- package/src/field33XUtils.js +156 -0
- package/src/fix-33X.js +473 -0
- package/src/fix-33X.spec.js +46 -0
- package/src/fix-language-codes.js +121 -0
- package/src/fix-language-codes.spec.js +45 -0
- package/src/fixRelatorTerms.js +1 -1
- package/src/punctuation2.js +3 -3
- package/src/sanitize-vocabulary-source-codes.js +9 -11
- package/src/utils.js +13 -8
- package/test-fixtures/addMissingField336/01/expectedResult.json +6 -0
- package/test-fixtures/addMissingField336/01/metadata.json +7 -0
- package/test-fixtures/addMissingField336/01/record.json +8 -0
- package/test-fixtures/addMissingField336/02/expectedResult.json +4 -0
- package/test-fixtures/addMissingField336/02/metadata.json +7 -0
- package/test-fixtures/addMissingField336/02/record.json +13 -0
- package/test-fixtures/addMissingField336/cod/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/cod/metadata.json +6 -0
- package/test-fixtures/addMissingField336/cod/record.json +6 -0
- package/test-fixtures/addMissingField336/cop/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/cop/metadata.json +6 -0
- package/test-fixtures/addMissingField336/cop/record.json +6 -0
- package/test-fixtures/addMissingField336/cop2/expectedResult.json +13 -0
- package/test-fixtures/addMissingField336/cop2/metadata.json +6 -0
- package/test-fixtures/addMissingField336/cop2/record.json +7 -0
- package/test-fixtures/addMissingField336/crf/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/crf/metadata.json +6 -0
- package/test-fixtures/addMissingField336/crf/record.json +6 -0
- package/test-fixtures/addMissingField336/cri/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/cri/metadata.json +6 -0
- package/test-fixtures/addMissingField336/cri/record.json +6 -0
- package/test-fixtures/addMissingField336/crt/expectedResult.json +13 -0
- package/test-fixtures/addMissingField336/crt/metadata.json +6 -0
- package/test-fixtures/addMissingField336/crt/record.json +7 -0
- package/test-fixtures/addMissingField336/f01/expectedResult.json +17 -0
- package/test-fixtures/addMissingField336/f01/metadata.json +6 -0
- package/test-fixtures/addMissingField336/f01/record.json +11 -0
- package/test-fixtures/addMissingField336/f02/expectedResult.json +15 -0
- package/test-fixtures/addMissingField336/f02/metadata.json +6 -0
- package/test-fixtures/addMissingField336/f02/record.json +9 -0
- package/test-fixtures/addMissingField336/mixed2txt/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/mixed2txt/metadata.json +6 -0
- package/test-fixtures/addMissingField336/mixed2txt/record.json +6 -0
- package/test-fixtures/addMissingField336/mixed2xxx/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/mixed2xxx/metadata.json +6 -0
- package/test-fixtures/addMissingField336/mixed2xxx/record.json +6 -0
- package/test-fixtures/addMissingField336/ntm/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/ntm/metadata.json +6 -0
- package/test-fixtures/addMissingField336/ntm/record.json +6 -0
- package/test-fixtures/addMissingField336/snd/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/snd/metadata.json +6 -0
- package/test-fixtures/addMissingField336/snd/record.json +6 -0
- package/test-fixtures/addMissingField336/spw/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/spw/metadata.json +6 -0
- package/test-fixtures/addMissingField336/spw/record.json +6 -0
- package/test-fixtures/addMissingField336/spw2/expectedResult.json +13 -0
- package/test-fixtures/addMissingField336/spw2/metadata.json +6 -0
- package/test-fixtures/addMissingField336/spw2/record.json +7 -0
- package/test-fixtures/addMissingField336/spw_txt/expectedResult.json +18 -0
- package/test-fixtures/addMissingField336/spw_txt/metadata.json +6 -0
- package/test-fixtures/addMissingField336/spw_txt/record.json +7 -0
- package/test-fixtures/addMissingField336/sti/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/sti/metadata.json +6 -0
- package/test-fixtures/addMissingField336/sti/record.json +6 -0
- package/test-fixtures/addMissingField336/sti_projected/expectedResult.json +13 -0
- package/test-fixtures/addMissingField336/sti_projected/metadata.json +6 -0
- package/test-fixtures/addMissingField336/sti_projected/record.json +7 -0
- package/test-fixtures/addMissingField336/tci/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/tci/metadata.json +6 -0
- package/test-fixtures/addMissingField336/tci/record.json +6 -0
- package/test-fixtures/addMissingField336/tcm/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/tcm/metadata.json +6 -0
- package/test-fixtures/addMissingField336/tcm/record.json +6 -0
- package/test-fixtures/addMissingField336/tdf/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/tdf/metadata.json +6 -0
- package/test-fixtures/addMissingField336/tdf/record.json +6 -0
- package/test-fixtures/addMissingField336/tdi/expectedResult.json +13 -0
- package/test-fixtures/addMissingField336/tdi/metadata.json +6 -0
- package/test-fixtures/addMissingField336/tdi/record.json +7 -0
- package/test-fixtures/addMissingField336/txt/expectedResult.json +12 -0
- package/test-fixtures/addMissingField336/txt/metadata.json +6 -0
- package/test-fixtures/addMissingField336/txt/record.json +6 -0
- package/test-fixtures/addMissingField336/zzz/expectedResult.json +13 -0
- package/test-fixtures/addMissingField336/zzz/metadata.json +6 -0
- package/test-fixtures/addMissingField336/zzz/record.json +7 -0
- package/test-fixtures/addMissingField337/c1/expectedResult.json +12 -0
- package/test-fixtures/addMissingField337/c1/metadata.json +6 -0
- package/test-fixtures/addMissingField337/c1/record.json +7 -0
- package/test-fixtures/addMissingField337/g1/expectedResult.json +13 -0
- package/test-fixtures/addMissingField337/g1/metadata.json +6 -0
- package/test-fixtures/addMissingField337/g1/record.json +7 -0
- package/test-fixtures/addMissingField337/n1/expectedResult.json +12 -0
- package/test-fixtures/addMissingField337/n1/metadata.json +6 -0
- package/test-fixtures/addMissingField337/n1/record.json +6 -0
- package/test-fixtures/addMissingField337/no_action_required/expectedResult.json +12 -0
- package/test-fixtures/addMissingField337/no_action_required/metadata.json +7 -0
- package/test-fixtures/addMissingField337/no_action_required/record.json +11 -0
- package/test-fixtures/addMissingField337/p1/expectedResult.json +12 -0
- package/test-fixtures/addMissingField337/p1/metadata.json +6 -0
- package/test-fixtures/addMissingField337/p1/record.json +6 -0
- package/test-fixtures/addMissingField337/validate_x1/expectedResult.json +6 -0
- package/test-fixtures/addMissingField337/validate_x1/metadata.json +6 -0
- package/test-fixtures/addMissingField337/validate_x1/record.json +6 -0
- package/test-fixtures/addMissingField338/cb/expectedResult.json +14 -0
- package/test-fixtures/addMissingField338/cb/metadata.json +6 -0
- package/test-fixtures/addMissingField338/cb/record.json +8 -0
- package/test-fixtures/addMissingField338/cd/expectedResult.json +14 -0
- package/test-fixtures/addMissingField338/cd/metadata.json +6 -0
- package/test-fixtures/addMissingField338/cd/record.json +8 -0
- package/test-fixtures/addMissingField338/ck/expectedResult.json +14 -0
- package/test-fixtures/addMissingField338/ck/metadata.json +6 -0
- package/test-fixtures/addMissingField338/ck/record.json +8 -0
- package/test-fixtures/addMissingField338/cr/expectedResult.json +15 -0
- package/test-fixtures/addMissingField338/cr/metadata.json +6 -0
- package/test-fixtures/addMissingField338/cr/record.json +9 -0
- package/test-fixtures/addMissingField338/cr2/expectedResult.json +14 -0
- package/test-fixtures/addMissingField338/cr2/metadata.json +6 -0
- package/test-fixtures/addMissingField338/cr2/record.json +8 -0
- package/test-fixtures/addMissingField338/cr3/expectedResult.json +18 -0
- package/test-fixtures/addMissingField338/cr3/metadata.json +6 -0
- package/test-fixtures/addMissingField338/cr3/record.json +12 -0
- package/test-fixtures/addMissingField338/cr4/expectedResult.json +15 -0
- package/test-fixtures/addMissingField338/cr4/metadata.json +6 -0
- package/test-fixtures/addMissingField338/cr4/record.json +9 -0
- package/test-fixtures/addMissingField338/gc/expectedResult.json +12 -0
- package/test-fixtures/addMissingField338/gc/metadata.json +6 -0
- package/test-fixtures/addMissingField338/gc/record.json +7 -0
- package/test-fixtures/addMissingField338/gd/expectedResult.json +13 -0
- package/test-fixtures/addMissingField338/gd/metadata.json +6 -0
- package/test-fixtures/addMissingField338/gd/record.json +8 -0
- package/test-fixtures/addMissingField338/gf/expectedResult.json +13 -0
- package/test-fixtures/addMissingField338/gf/metadata.json +6 -0
- package/test-fixtures/addMissingField338/gf/record.json +8 -0
- package/test-fixtures/addMissingField338/gs/expectedResult.json +15 -0
- package/test-fixtures/addMissingField338/gs/metadata.json +6 -0
- package/test-fixtures/addMissingField338/gs/record.json +9 -0
- package/test-fixtures/addMissingField338/gt/expectedResult.json +15 -0
- package/test-fixtures/addMissingField338/gt/metadata.json +6 -0
- package/test-fixtures/addMissingField338/gt/record.json +9 -0
- package/test-fixtures/addMissingField338/hd/expectedResult.json +16 -0
- package/test-fixtures/addMissingField338/hd/metadata.json +6 -0
- package/test-fixtures/addMissingField338/hd/record.json +10 -0
- package/test-fixtures/addMissingField338/he/expectedResult.json +15 -0
- package/test-fixtures/addMissingField338/he/metadata.json +6 -0
- package/test-fixtures/addMissingField338/he/record.json +9 -0
- package/test-fixtures/addMissingField338/he2/expectedResult.json +12 -0
- package/test-fixtures/addMissingField338/he2/metadata.json +6 -0
- package/test-fixtures/addMissingField338/he2/record.json +6 -0
- package/test-fixtures/addMissingField338/hg/expectedResult.json +15 -0
- package/test-fixtures/addMissingField338/hg/metadata.json +7 -0
- package/test-fixtures/addMissingField338/hg/record.json +9 -0
- package/test-fixtures/addMissingField338/hg2/expectedResult.json +15 -0
- package/test-fixtures/addMissingField338/hg2/metadata.json +6 -0
- package/test-fixtures/addMissingField338/hg2/record.json +9 -0
- package/test-fixtures/addMissingField338/hj/expectedResult.json +15 -0
- package/test-fixtures/addMissingField338/hj/metadata.json +6 -0
- package/test-fixtures/addMissingField338/hj/record.json +9 -0
- package/test-fixtures/addMissingField338/hj2/expectedResult.json +15 -0
- package/test-fixtures/addMissingField338/hj2/metadata.json +6 -0
- package/test-fixtures/addMissingField338/hj2/record.json +9 -0
- package/test-fixtures/addMissingField338/mo/expectedResult.json +15 -0
- package/test-fixtures/addMissingField338/mo/metadata.json +6 -0
- package/test-fixtures/addMissingField338/mo/record.json +9 -0
- package/test-fixtures/addMissingField338/nc/expectedResult.json +19 -0
- package/test-fixtures/addMissingField338/nc/metadata.json +6 -0
- package/test-fixtures/addMissingField338/nc/record.json +13 -0
- package/test-fixtures/addMissingField338/nr/expectedResult.json +12 -0
- package/test-fixtures/addMissingField338/nr/metadata.json +7 -0
- package/test-fixtures/addMissingField338/nr/record.json +6 -0
- package/test-fixtures/addMissingField338/sd/expectedResult.json +14 -0
- package/test-fixtures/addMissingField338/sd/metadata.json +6 -0
- package/test-fixtures/addMissingField338/sd/record.json +8 -0
- package/test-fixtures/addMissingField338/sd2/expectedResult.json +14 -0
- package/test-fixtures/addMissingField338/sd2/metadata.json +6 -0
- package/test-fixtures/addMissingField338/sd2/record.json +8 -0
- package/test-fixtures/addMissingField338/sd3/expectedResult.json +14 -0
- package/test-fixtures/addMissingField338/sd3/metadata.json +6 -0
- package/test-fixtures/addMissingField338/sd3/record.json +8 -0
- package/test-fixtures/addMissingField338/ss/expectedResult.json +14 -0
- package/test-fixtures/addMissingField338/ss/metadata.json +6 -0
- package/test-fixtures/addMissingField338/ss/record.json +8 -0
- package/test-fixtures/addMissingField338/ss2/expectedResult.json +14 -0
- package/test-fixtures/addMissingField338/ss2/metadata.json +6 -0
- package/test-fixtures/addMissingField338/ss2/record.json +8 -0
- package/test-fixtures/addMissingField338/vd/expectedResult.json +15 -0
- package/test-fixtures/addMissingField338/vd/metadata.json +6 -0
- package/test-fixtures/addMissingField338/vd/record.json +9 -0
- package/test-fixtures/addMissingField338/vd2/expectedResult.json +13 -0
- package/test-fixtures/addMissingField338/vd2/metadata.json +6 -0
- package/test-fixtures/addMissingField338/vd2/record.json +8 -0
- package/test-fixtures/addMissingField338/vf/expectedResult.json +15 -0
- package/test-fixtures/addMissingField338/vf/metadata.json +6 -0
- package/test-fixtures/addMissingField338/vf/record.json +9 -0
- package/test-fixtures/addMissingField338/zu/expectedResult.json +14 -0
- package/test-fixtures/addMissingField338/zu/metadata.json +6 -0
- package/test-fixtures/addMissingField338/zu/record.json +8 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f01/expectedResult.json +32 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f01/metadata.json +7 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f01/record.json +20 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f02/expectedResult.json +29 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f02/metadata.json +7 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f02/record.json +9 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f03/expectedResult.json +34 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f03/metadata.json +7 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f03/record.json +12 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f04/expectedResult.json +26 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f04/metadata.json +8 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f04/record.json +6 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f05/expectedResult.json +27 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f05/metadata.json +7 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f05/record.json +8 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f06/expectedResult.json +27 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f06/metadata.json +7 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f06/record.json +8 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f07/expectedResult.json +25 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f07/metadata.json +7 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f07/record.json +8 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f08/expectedResult.json +34 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f08/metadata.json +6 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f08/record.json +33 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f09/expectedResult.json +35 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f09/metadata.json +6 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f09/record.json +35 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f10/expectedResult.json +41 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f10/metadata.json +7 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f10/record.json +33 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f11/expectedResult.json +32 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f11/metadata.json +6 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/f11/record.json +22 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/v01/expectedResult.json +7 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/v01/metadata.json +6 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/v01/record.json +20 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/v02/expectedResult.json +5 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/v02/metadata.json +6 -0
- package/test-fixtures/cyrillux-usemarcon-replacement/v02/record.json +29 -0
- package/test-fixtures/fix-33X/f11/expectedResult.json +29 -0
- package/test-fixtures/fix-33X/f11/metadata.json +6 -0
- package/test-fixtures/fix-33X/f11/record.json +22 -0
- package/test-fixtures/fix-33X/v11/expectedResult.json +9 -0
- package/test-fixtures/fix-33X/v11/metadata.json +6 -0
- package/test-fixtures/fix-33X/v11/record.json +22 -0
- package/test-fixtures/fix-language-codes/01/expectedResult.json +5 -0
- package/test-fixtures/fix-language-codes/01/metadata.json +6 -0
- package/test-fixtures/fix-language-codes/01/record.json +7 -0
- package/test-fixtures/fix-language-codes/02/expectedResult.json +7 -0
- package/test-fixtures/fix-language-codes/02/metadata.json +6 -0
- package/test-fixtures/fix-language-codes/02/record.json +10 -0
- package/test-fixtures/fix-language-codes/03/expectedResult.json +10 -0
- package/test-fixtures/fix-language-codes/03/metadata.json +6 -0
- package/test-fixtures/fix-language-codes/03/record.json +8 -0
- package/test-fixtures/fix-language-codes/04/expectedResult.json +9 -0
- package/test-fixtures/fix-language-codes/04/metadata.json +7 -0
- package/test-fixtures/fix-language-codes/04/record.json +7 -0
- package/test-fixtures/fix-language-codes/05/expectedResult.json +8 -0
- package/test-fixtures/fix-language-codes/05/metadata.json +6 -0
- package/test-fixtures/fix-language-codes/05/record.json +5 -0
- package/test-fixtures/punctuation2/95/expectedResult.json +22 -0
- package/test-fixtures/punctuation2/95/metadata.json +6 -0
- package/test-fixtures/punctuation2/95/record.json +20 -0
- package/test-fixtures/sanitize-vocabulary-source-codes/f03/expectedResult.json +143 -0
- package/test-fixtures/sanitize-vocabulary-source-codes/f03/metadata.json +9 -0
- package/test-fixtures/sanitize-vocabulary-source-codes/f03/record.json +145 -0
- package/test-fixtures/sanitize-vocabulary-source-codes/v03/expectedResult.json +5 -0
- package/test-fixtures/sanitize-vocabulary-source-codes/v03/metadata.json +6 -0
- package/test-fixtures/sanitize-vocabulary-source-codes/v03/record.json +145 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = _default;
|
|
7
|
+
var _utils = require("./utils");
|
|
8
|
+
var _field33XUtils = require("./field33XUtils");
|
|
9
|
+
//import createDebugLogger from 'debug';
|
|
10
|
+
|
|
11
|
+
const description = 'Add missing 336 field(s)';
|
|
12
|
+
|
|
13
|
+
// const multimediaRegexp = /multimedia/ui;
|
|
14
|
+
|
|
15
|
+
function _default() {
|
|
16
|
+
return {
|
|
17
|
+
description,
|
|
18
|
+
validate,
|
|
19
|
+
fix
|
|
20
|
+
};
|
|
21
|
+
function fix(record) {
|
|
22
|
+
(0, _utils.nvdebug)(`FIX ${description}...`);
|
|
23
|
+
const newFields = getMissing336s(record);
|
|
24
|
+
(0, _utils.nvdebug)(` GOT ${newFields.length}...`);
|
|
25
|
+
// FFS: we actually need newFields array here! Videogame, for example, might be
|
|
26
|
+
// 336 ## ‡a kaksiulotteinen liikkuva kuva ‡b tdi ‡2 rdacontent
|
|
27
|
+
// 336 ## ‡a tietokoneohjelma ‡b cop ‡2 rdacontent
|
|
28
|
+
const res = {
|
|
29
|
+
message: [],
|
|
30
|
+
fix: [],
|
|
31
|
+
valid: true
|
|
32
|
+
};
|
|
33
|
+
if (newFields.length) {
|
|
34
|
+
newFields.forEach(f => record.insertField(f));
|
|
35
|
+
return res;
|
|
36
|
+
}
|
|
37
|
+
return res;
|
|
38
|
+
}
|
|
39
|
+
function validate(record) {
|
|
40
|
+
(0, _utils.nvdebug)(`VALIDATE ${description}...`);
|
|
41
|
+
const newFields = getMissing336s(record);
|
|
42
|
+
if (newFields.length === 0) {
|
|
43
|
+
return {
|
|
44
|
+
message: [],
|
|
45
|
+
valid: true
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const strings = newFields.map(f => (0, _utils.fieldToString)(f));
|
|
49
|
+
const tmp = strings.join('\', \'');
|
|
50
|
+
const msg = `${description}: '${tmp}'`;
|
|
51
|
+
return {
|
|
52
|
+
message: [msg],
|
|
53
|
+
valid: false
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function guessMissingBsForComputerFile(record) {
|
|
57
|
+
const [field008] = record.get('008');
|
|
58
|
+
const typeOfComputerFile = field008 && field008.value ? field008.value[26] : undefined;
|
|
59
|
+
if (typeOfComputerFile) {
|
|
60
|
+
if (['d', 'e'].includes(typeOfComputerFile)) {
|
|
61
|
+
// d: N=400, e: N=50
|
|
62
|
+
return ['txt'];
|
|
63
|
+
}
|
|
64
|
+
if (typeOfComputerFile === 'g') {
|
|
65
|
+
// Videogame (N=10000+)
|
|
66
|
+
// 2D moving image/tdi is an educated guess. Might be wrong for 3D games and Infocom-style text-based games.
|
|
67
|
+
// Ref.: https://www.kiwi.fi/pages/viewpage.action?pageId=115966063#PelienRDAohje-Pelienjaottelu:videopelitjafyysisetpelit
|
|
68
|
+
return ['tdi', 'cop'];
|
|
69
|
+
}
|
|
70
|
+
if (['b', 'f'].includes(typeOfComputerFile)) {
|
|
71
|
+
// b: N=176, f: N=2
|
|
72
|
+
return ['cop'];
|
|
73
|
+
}
|
|
74
|
+
if (['a', 'c'].includes(typeOfComputerFile)) {
|
|
75
|
+
// c: N=152, a: N=36
|
|
76
|
+
return ['cod'];
|
|
77
|
+
}
|
|
78
|
+
if (typeOfComputerFile === 'h') {
|
|
79
|
+
// h: N=44
|
|
80
|
+
return ['snd'];
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// ADD 256/300/516/XXX-based educated guesses here
|
|
85
|
+
const guess = guessUsingFileFields();
|
|
86
|
+
if (guess) {
|
|
87
|
+
return guess;
|
|
88
|
+
}
|
|
89
|
+
function guessUsingFileFields() {
|
|
90
|
+
const characteristics = record.get('(256|516)').map(f => (0, _utils.fieldToString)(f));
|
|
91
|
+
if (characteristics.some(str => str.match(/(?:ohjelma)/gui))) {
|
|
92
|
+
return ['cop'];
|
|
93
|
+
}
|
|
94
|
+
if (characteristics.some(str => str.match(/(?:daisy)/gui))) {
|
|
95
|
+
return ['spw', 'txt']; // The convention is to put just 'spw' but this is technically correct
|
|
96
|
+
}
|
|
97
|
+
if (characteristics.some(str => str.match(/(?:äänikirja)/gui))) {
|
|
98
|
+
return ['spw']; // This should be ['spw', 'txt'] but who am I to change conventions...
|
|
99
|
+
}
|
|
100
|
+
if (characteristics.some(str => str.match(/(?:book|e-bok|e-diss|e-avhand|kirja|e-thesis|tekstitiedosto|tidskrift|verkkoartikkeli|verkkokirja|verkkolehti)/gui))) {
|
|
101
|
+
return ['txt'];
|
|
102
|
+
}
|
|
103
|
+
if (characteristics.some(str => str.match(/(?:peli)/gui))) {
|
|
104
|
+
return ['tdi', 'cop'];
|
|
105
|
+
}
|
|
106
|
+
if (characteristics.some(str => str.match(/(?:data|tietokanta)/gui))) {
|
|
107
|
+
return ['cod'];
|
|
108
|
+
}
|
|
109
|
+
if (characteristics.some(str => str.match(/(?:verkkoaineisto.*[0-9]\] s|PDF)/gui)) || characteristics.some(str => str.match(/\b(?:text|tekstiä?)\b/gui))) {
|
|
110
|
+
return ['txt'];
|
|
111
|
+
}
|
|
112
|
+
if (characteristics.some(str => str.match(/(?:elokuva|liikkuva kuva)/gui))) {
|
|
113
|
+
return ['tdi'];
|
|
114
|
+
}
|
|
115
|
+
if (characteristics.some(str => str.match(/(?:kartta)/gui))) {
|
|
116
|
+
return ['cri']; // cri or crd, close enough anyhow, I guess
|
|
117
|
+
}
|
|
118
|
+
if (characteristics.some(str => str.match(/\b(?:kuvi?a)\b/gui))) {
|
|
119
|
+
return ['tdi'];
|
|
120
|
+
}
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
if (['i', 'j', 'm'].includes(typeOfComputerFile)) {
|
|
124
|
+
// (i: N=4800, m: N=566, j: N=111 )
|
|
125
|
+
// Can we use field 300/516/256 to improve guess?
|
|
126
|
+
return ['xxx'];
|
|
127
|
+
}
|
|
128
|
+
return ['zzz']; // unspecified
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/*
|
|
132
|
+
function deriveLanguageMaterials336sFrom007(record) {
|
|
133
|
+
const categoryOfMaterial = [ // 007/00
|
|
134
|
+
{category: 'a', rdacontent: 'cri'}, // cartographic image <- looks like a MP that has been classified as BK... One more reason to comment these..
|
|
135
|
+
{category: 'c', rdacontent: 'txt'},
|
|
136
|
+
{category: 'g', rdacontent: 'sti'},
|
|
137
|
+
{vategory: 'h', rdacontent: 'txt'},
|
|
138
|
+
{category: 'k', rdacontent: 'sti'},
|
|
139
|
+
{category: 'v', rdacontent: 'tdi'}
|
|
140
|
+
];
|
|
141
|
+
// What if there are multiple 007 fields?
|
|
142
|
+
const [f007] = record.fields.get('007');
|
|
143
|
+
if (f007) {
|
|
144
|
+
const row = categoryOfMaterial.filter(row => row.category === f007[0]);
|
|
145
|
+
if (row) {
|
|
146
|
+
return [row.rdacontent];
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return [];
|
|
150
|
+
}
|
|
151
|
+
*/
|
|
152
|
+
|
|
153
|
+
function guessMissingBsForBookAndContinuingResource(record, formOfItem) {
|
|
154
|
+
// This is from very old crap from usemarcon-cyrillux, but me not like it at all!
|
|
155
|
+
/*
|
|
156
|
+
const f245h = getTitleMedium(record);
|
|
157
|
+
if (f245h && !multimediaRegexp.test(f245h)) {
|
|
158
|
+
const result = deriveLanguageMaterials336sFrom007(record); // Base result on 007/00...
|
|
159
|
+
if (result) {
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
*/
|
|
164
|
+
|
|
165
|
+
//const bibliographicalLevel = record.getBibliograpicLevel(); // Bloody h-drop typo...
|
|
166
|
+
//const isBis = ['b', 'i', 's'].includes(bibliographicalLevel);
|
|
167
|
+
//if (!isBis) {
|
|
168
|
+
if (formOfItem === 'f') {
|
|
169
|
+
return ['tct']; // tactile text
|
|
170
|
+
}
|
|
171
|
+
return ['txt']; // Default BK format is text
|
|
172
|
+
}
|
|
173
|
+
function guessMissingBsForMap(record) {
|
|
174
|
+
const formOfItem = (0, _field33XUtils.getFormOfItem)(record);
|
|
175
|
+
// Is braille and is not a model (we have 0). Changed the original usemarcon rule 007/01!=q to 007/01=q
|
|
176
|
+
if (formOfItem === 'f' && record.fields.some(f => f.tag === '007' && f.value[0] === 'a' && f.value[1] === 'q')) {
|
|
177
|
+
return ['crt']; // Cartographic tactile image
|
|
178
|
+
}
|
|
179
|
+
const [field008] = record.get('008');
|
|
180
|
+
if (field008 && field008.value[25] === 'd') {
|
|
181
|
+
// globe (cool, but we really don't have these)
|
|
182
|
+
return ['crf']; // map 3D form
|
|
183
|
+
}
|
|
184
|
+
return ['cri']; // default cartographic image
|
|
185
|
+
}
|
|
186
|
+
function guessMissing336Bs(record) {
|
|
187
|
+
const typeOfRecord = record.getTypeOfRecord();
|
|
188
|
+
if (typeOfRecord === 'i') {
|
|
189
|
+
return ['spw'];
|
|
190
|
+
}
|
|
191
|
+
if (typeOfRecord === 'j') {
|
|
192
|
+
return ['prm']; // performed music
|
|
193
|
+
}
|
|
194
|
+
if (typeOfRecord === 'e' || typeOfRecord === 'f') {
|
|
195
|
+
return guessMissingBsForMap(record);
|
|
196
|
+
}
|
|
197
|
+
const formOfItem = (0, _field33XUtils.getFormOfItem)(record);
|
|
198
|
+
if (typeOfRecord === 'k') {
|
|
199
|
+
if (formOfItem === 'f') {
|
|
200
|
+
return ['tci']; // tactile image
|
|
201
|
+
}
|
|
202
|
+
return ['sti'];
|
|
203
|
+
}
|
|
204
|
+
if (typeOfRecord === 'c' || typeOfRecord === 'd') {
|
|
205
|
+
if (formOfItem === 'f') {
|
|
206
|
+
return ['tcm']; // tactile notated music
|
|
207
|
+
}
|
|
208
|
+
return ['ntm']; // notated music
|
|
209
|
+
}
|
|
210
|
+
if (typeOfRecord === 'g') {
|
|
211
|
+
if (record.fields.some(f => f.tag === '007' && f.value[0] === 'g')) {
|
|
212
|
+
return ['sti']; // still image
|
|
213
|
+
}
|
|
214
|
+
if (record.fields.some(f => f.tag === '007' && ['m', 'v', 'c'].includes(f.value[0]))) {
|
|
215
|
+
// 'c' is a bit iffy, but I'll tune it only if it makes an error...
|
|
216
|
+
return ['tdi']; // 2d moving pic
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (typeOfRecord === 'm') {
|
|
220
|
+
// electronic
|
|
221
|
+
return guessMissingBsForComputerFile(record);
|
|
222
|
+
}
|
|
223
|
+
if (typeOfRecord === 'a' || typeOfRecord === 't') {
|
|
224
|
+
return guessMissingBsForBookAndContinuingResource(record, formOfItem);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// Note that 245$h should trigger LDR/06:a or t =>o change at some earlier point (outside the scope of this module)
|
|
228
|
+
if (typeOfRecord === 'o' || typeOfRecord === 'p') {
|
|
229
|
+
// o: Kit p: Mixed
|
|
230
|
+
if (['d', 'r'].includes(formOfItem)) {
|
|
231
|
+
// d=isoteksti, r=eye-readable print
|
|
232
|
+
return ['txt'];
|
|
233
|
+
}
|
|
234
|
+
// Not much I can guess from 300 etc
|
|
235
|
+
return ['xxx']; // other
|
|
236
|
+
}
|
|
237
|
+
if (typeOfRecord === 'r') {
|
|
238
|
+
// three-dimensional form
|
|
239
|
+
return ['tdf'];
|
|
240
|
+
}
|
|
241
|
+
return ['zzz']; // unspecified
|
|
242
|
+
}
|
|
243
|
+
function codeToField(b, catLang) {
|
|
244
|
+
const a = (0, _field33XUtils.map336CodeToTerm)(b, catLang);
|
|
245
|
+
const data = {
|
|
246
|
+
tag: '336',
|
|
247
|
+
ind1: ' ',
|
|
248
|
+
ind2: ' ',
|
|
249
|
+
subfields: [{
|
|
250
|
+
code: 'a',
|
|
251
|
+
value: a
|
|
252
|
+
}, {
|
|
253
|
+
code: 'b',
|
|
254
|
+
value: b
|
|
255
|
+
}, {
|
|
256
|
+
code: '2',
|
|
257
|
+
value: 'rdacontent'
|
|
258
|
+
}]
|
|
259
|
+
};
|
|
260
|
+
return data;
|
|
261
|
+
}
|
|
262
|
+
function getMissing336s(record) {
|
|
263
|
+
const f336 = record.get('336');
|
|
264
|
+
if (f336.length > 0) {
|
|
265
|
+
return [];
|
|
266
|
+
}
|
|
267
|
+
const bees = guessMissing336Bs(record); // bees = b-subfields
|
|
268
|
+
(0, _utils.nvdebug)(` WE HAVE ${bees.length} BEES: ${bees.join(', ')}`);
|
|
269
|
+
return bees.map(b => codeToField(b, (0, _utils.getCatalogingLanguage)(record, 'fin')));
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=addMissingField336.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addMissingField336.js","names":["_utils","require","_field33XUtils","description","_default","validate","fix","record","nvdebug","newFields","getMissing336s","length","res","message","valid","forEach","f","insertField","strings","map","fieldToString","tmp","join","msg","guessMissingBsForComputerFile","field008","get","typeOfComputerFile","value","undefined","includes","guess","guessUsingFileFields","characteristics","some","str","match","guessMissingBsForBookAndContinuingResource","formOfItem","guessMissingBsForMap","getFormOfItem","fields","tag","guessMissing336Bs","typeOfRecord","getTypeOfRecord","codeToField","b","catLang","a","map336CodeToTerm","data","ind1","ind2","subfields","code","f336","bees","getCatalogingLanguage"],"sources":["../src/addMissingField336.js"],"sourcesContent":["//import createDebugLogger from 'debug';\nimport {fieldToString, getCatalogingLanguage, nvdebug} from './utils';\nimport {getFormOfItem, map336CodeToTerm} from './field33XUtils';\n\nconst description = 'Add missing 336 field(s)';\n\n// const multimediaRegexp = /multimedia/ui;\n\nexport default function () {\n\n return {\n description, validate, fix\n };\n\n function fix(record) {\n nvdebug(`FIX ${description}...`);\n const newFields = getMissing336s(record);\n nvdebug(` GOT ${newFields.length}...`);\n // FFS: we actually need newFields array here! Videogame, for example, might be\n // 336 ## ‡a kaksiulotteinen liikkuva kuva ‡b tdi ‡2 rdacontent\n // 336 ## ‡a tietokoneohjelma ‡b cop ‡2 rdacontent\n const res = {message: [], fix: [], valid: true};\n if (newFields.length) {\n newFields.forEach(f => record.insertField(f));\n return res;\n }\n return res;\n }\n\n function validate(record) {\n nvdebug(`VALIDATE ${description}...`);\n const newFields = getMissing336s(record);\n if (newFields.length === 0) {\n return {message: [], valid: true};\n }\n const strings = newFields.map(f => fieldToString(f));\n const tmp = strings.join('\\', \\'');\n const msg = `${description}: '${tmp}'`;\n return {message: [msg], valid: false};\n }\n\n function guessMissingBsForComputerFile(record) {\n const [field008] = record.get('008');\n const typeOfComputerFile = field008 && field008.value ? field008.value[26] : undefined;\n\n if (typeOfComputerFile) {\n if (['d', 'e'].includes(typeOfComputerFile)) { // d: N=400, e: N=50\n return ['txt'];\n }\n if (typeOfComputerFile === 'g') { // Videogame (N=10000+)\n // 2D moving image/tdi is an educated guess. Might be wrong for 3D games and Infocom-style text-based games.\n // Ref.: https://www.kiwi.fi/pages/viewpage.action?pageId=115966063#PelienRDAohje-Pelienjaottelu:videopelitjafyysisetpelit\n return ['tdi', 'cop'];\n }\n if (['b', 'f'].includes(typeOfComputerFile)) { // b: N=176, f: N=2\n return ['cop'];\n }\n if (['a', 'c'].includes(typeOfComputerFile)) { // c: N=152, a: N=36\n return ['cod'];\n }\n if (typeOfComputerFile === 'h') { // h: N=44\n return ['snd'];\n }\n }\n\n // ADD 256/300/516/XXX-based educated guesses here\n const guess = guessUsingFileFields();\n if (guess) {\n return guess;\n }\n function guessUsingFileFields() {\n const characteristics = record.get('(256|516)').map(f => fieldToString(f));\n if (characteristics.some(str => str.match(/(?:ohjelma)/gui))) {\n return ['cop'];\n }\n if (characteristics.some(str => str.match(/(?:daisy)/gui))) {\n return ['spw', 'txt']; // The convention is to put just 'spw' but this is technically correct\n }\n if (characteristics.some(str => str.match(/(?:äänikirja)/gui))) {\n return ['spw']; // This should be ['spw', 'txt'] but who am I to change conventions...\n }\n if (characteristics.some(str => str.match(/(?:book|e-bok|e-diss|e-avhand|kirja|e-thesis|tekstitiedosto|tidskrift|verkkoartikkeli|verkkokirja|verkkolehti)/gui))) {\n return ['txt'];\n }\n if (characteristics.some(str => str.match(/(?:peli)/gui))) {\n return ['tdi', 'cop'];\n }\n if (characteristics.some(str => str.match(/(?:data|tietokanta)/gui))) {\n return ['cod'];\n }\n if (characteristics.some(str => str.match(/(?:verkkoaineisto.*[0-9]\\] s|PDF)/gui)) || characteristics.some(str => str.match(/\\b(?:text|tekstiä?)\\b/gui))) {\n return ['txt'];\n }\n if (characteristics.some(str => str.match(/(?:elokuva|liikkuva kuva)/gui))) {\n return ['tdi'];\n }\n if (characteristics.some(str => str.match(/(?:kartta)/gui))) {\n return ['cri']; // cri or crd, close enough anyhow, I guess\n }\n if (characteristics.some(str => str.match(/\\b(?:kuvi?a)\\b/gui))) {\n return ['tdi'];\n }\n\n return undefined;\n }\n\n\n if (['i', 'j', 'm'].includes(typeOfComputerFile)) { // (i: N=4800, m: N=566, j: N=111 )\n // Can we use field 300/516/256 to improve guess?\n return ['xxx'];\n }\n return ['zzz']; // unspecified\n }\n\n /*\n function deriveLanguageMaterials336sFrom007(record) {\n const categoryOfMaterial = [ // 007/00\n {category: 'a', rdacontent: 'cri'}, // cartographic image <- looks like a MP that has been classified as BK... One more reason to comment these..\n {category: 'c', rdacontent: 'txt'},\n {category: 'g', rdacontent: 'sti'},\n {vategory: 'h', rdacontent: 'txt'},\n {category: 'k', rdacontent: 'sti'},\n {category: 'v', rdacontent: 'tdi'}\n ];\n\n // What if there are multiple 007 fields?\n const [f007] = record.fields.get('007');\n if (f007) {\n const row = categoryOfMaterial.filter(row => row.category === f007[0]);\n if (row) {\n return [row.rdacontent];\n }\n }\n return [];\n }\n */\n\n function guessMissingBsForBookAndContinuingResource(record, formOfItem) {\n\n\n // This is from very old crap from usemarcon-cyrillux, but me not like it at all!\n /*\n const f245h = getTitleMedium(record);\n if (f245h && !multimediaRegexp.test(f245h)) {\n const result = deriveLanguageMaterials336sFrom007(record); // Base result on 007/00...\n if (result) {\n return result;\n }\n }\n */\n\n //const bibliographicalLevel = record.getBibliograpicLevel(); // Bloody h-drop typo...\n //const isBis = ['b', 'i', 's'].includes(bibliographicalLevel);\n //if (!isBis) {\n if (formOfItem === 'f') {\n return ['tct']; // tactile text\n }\n return ['txt']; // Default BK format is text\n }\n\n function guessMissingBsForMap(record) {\n const formOfItem = getFormOfItem(record);\n // Is braille and is not a model (we have 0). Changed the original usemarcon rule 007/01!=q to 007/01=q\n if (formOfItem === 'f' && record.fields.some(f => f.tag === '007' && f.value[0] === 'a' && f.value[1] === 'q')) {\n return ['crt']; // Cartographic tactile image\n }\n const [field008] = record.get('008');\n if (field008 && field008.value[25] === 'd') { // globe (cool, but we really don't have these)\n return ['crf']; // map 3D form\n }\n return ['cri']; // default cartographic image\n }\n\n function guessMissing336Bs(record) {\n const typeOfRecord = record.getTypeOfRecord();\n\n if (typeOfRecord === 'i') {\n return ['spw'];\n }\n if (typeOfRecord === 'j') {\n return ['prm']; // performed music\n }\n\n if (typeOfRecord === 'e' || typeOfRecord === 'f') {\n return guessMissingBsForMap(record);\n }\n\n const formOfItem = getFormOfItem(record);\n\n if (typeOfRecord === 'k') {\n if (formOfItem === 'f') {\n return ['tci']; // tactile image\n }\n return ['sti'];\n }\n\n if (typeOfRecord === 'c' || typeOfRecord === 'd') {\n if (formOfItem === 'f') {\n return ['tcm']; // tactile notated music\n }\n return ['ntm']; // notated music\n }\n\n if (typeOfRecord === 'g') {\n if (record.fields.some(f => f.tag === '007' && f.value[0] === 'g')) {\n return ['sti']; // still image\n }\n if (record.fields.some(f => f.tag === '007' && ['m', 'v', 'c'].includes(f.value[0]))) { // 'c' is a bit iffy, but I'll tune it only if it makes an error...\n return ['tdi']; // 2d moving pic\n }\n }\n\n if (typeOfRecord === 'm') { // electronic\n return guessMissingBsForComputerFile(record);\n }\n\n if (typeOfRecord === 'a' || typeOfRecord === 't') {\n return guessMissingBsForBookAndContinuingResource(record, formOfItem);\n }\n\n // Note that 245$h should trigger LDR/06:a or t =>o change at some earlier point (outside the scope of this module)\n if (typeOfRecord === 'o' || typeOfRecord === 'p') { // o: Kit p: Mixed\n if (['d', 'r'].includes(formOfItem)) { // d=isoteksti, r=eye-readable print\n return ['txt'];\n }\n // Not much I can guess from 300 etc\n return ['xxx']; // other\n }\n if (typeOfRecord === 'r') { // three-dimensional form\n return ['tdf'];\n }\n return ['zzz']; // unspecified\n }\n\n\n function codeToField(b, catLang) {\n const a = map336CodeToTerm(b, catLang);\n const data = {tag: '336', ind1: ' ', ind2: ' ', subfields: [\n {code: 'a', value: a},\n {code: 'b', value: b},\n {code: '2', value: 'rdacontent'}\n ]};\n\n return data;\n }\n\n function getMissing336s(record) {\n const f336 = record.get('336');\n if (f336.length > 0) {\n return [];\n }\n\n const bees = guessMissing336Bs(record); // bees = b-subfields\n nvdebug(` WE HAVE ${bees.length} BEES: ${bees.join(', ')}`);\n\n\n return bees.map(b => codeToField(b, getCatalogingLanguage(record, 'fin')));\n }\n}\n\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _chai = require("chai");
|
|
4
|
+
var _marcRecord = require("@natlibfi/marc-record");
|
|
5
|
+
var _addMissingField = _interopRequireDefault(require("./addMissingField336"));
|
|
6
|
+
var _fixura = require("@natlibfi/fixura");
|
|
7
|
+
var _fixugen = _interopRequireDefault(require("@natlibfi/fixugen"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
(0, _fixugen.default)({
|
|
10
|
+
callback,
|
|
11
|
+
path: [__dirname, '..', 'test-fixtures', 'addMissingField336'],
|
|
12
|
+
useMetadataFile: true,
|
|
13
|
+
recurse: false,
|
|
14
|
+
fixura: {
|
|
15
|
+
reader: _fixura.READERS.JSON
|
|
16
|
+
},
|
|
17
|
+
mocha: {
|
|
18
|
+
before: () => testValidatorFactory()
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
async function testValidatorFactory() {
|
|
22
|
+
const validator = await (0, _addMissingField.default)();
|
|
23
|
+
(0, _chai.expect)(validator).to.be.an('object').that.has.any.keys('description', 'validate');
|
|
24
|
+
(0, _chai.expect)(validator.description).to.be.a('string');
|
|
25
|
+
(0, _chai.expect)(validator.validate).to.be.a('function');
|
|
26
|
+
(0, _chai.expect)(validator.fix).to.be.a('function');
|
|
27
|
+
}
|
|
28
|
+
async function callback({
|
|
29
|
+
getFixture,
|
|
30
|
+
fix = false
|
|
31
|
+
}) {
|
|
32
|
+
const validator = await (0, _addMissingField.default)();
|
|
33
|
+
const record = new _marcRecord.MarcRecord(getFixture('record.json'));
|
|
34
|
+
const expectedResult = getFixture('expectedResult.json');
|
|
35
|
+
// console.log(expectedResult); // eslint-disable-line
|
|
36
|
+
|
|
37
|
+
if (!fix) {
|
|
38
|
+
const result = await validator.validate(record);
|
|
39
|
+
(0, _chai.expect)(result).to.eql(expectedResult);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
await validator.fix(record);
|
|
43
|
+
(0, _chai.expect)(record).to.eql(expectedResult);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=addMissingField336.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addMissingField336.spec.js","names":["_chai","require","_marcRecord","_addMissingField","_interopRequireDefault","_fixura","_fixugen","obj","__esModule","default","generateTests","callback","path","__dirname","useMetadataFile","recurse","fixura","reader","READERS","JSON","mocha","before","testValidatorFactory","validator","validatorFactory","expect","to","be","an","that","has","any","keys","description","a","validate","fix","getFixture","record","MarcRecord","expectedResult","result","eql"],"sources":["../src/addMissingField336.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './addMissingField336';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\n\ngenerateTests({\n callback,\n path: [__dirname, '..', 'test-fixtures', 'addMissingField336'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n mocha: {\n before: () => testValidatorFactory()\n }\n});\n\nasync function testValidatorFactory() {\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 expect(validator.fix).to.be.a('function');\n}\n\nasync function callback({getFixture, fix = false}) {\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n expect(result).to.eql(expectedResult);\n return;\n }\n\n await validator.fix(record);\n expect(record).to.eql(expectedResult);\n}\n"],"mappings":";;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAF,sBAAA,CAAAH,OAAA;AAA8C,SAAAG,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE9C,IAAAG,gBAAa,EAAC;EACZC,QAAQ;EACRC,IAAI,EAAE,CAACC,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,oBAAoB,CAAC;EAC9DC,eAAe,EAAE,IAAI;EACrBC,OAAO,EAAE,KAAK;EACdC,MAAM,EAAE;IACNC,MAAM,EAAEC,eAAO,CAACC;EAClB,CAAC;EACDC,KAAK,EAAE;IACLC,MAAM,EAAEA,CAAA,KAAMC,oBAAoB,CAAC;EACrC;AACF,CAAC,CAAC;AAEF,eAAeA,oBAAoBA,CAAA,EAAG;EACpC,MAAMC,SAAS,GAAG,MAAM,IAAAC,wBAAgB,EAAC,CAAC;EAE1C,IAAAC,YAAM,EAACF,SAAS,CAAC,CACdG,EAAE,CAACC,EAAE,CAACC,EAAE,CAAC,QAAQ,CAAC,CAClBC,IAAI,CAACC,GAAG,CAACC,GAAG,CAACC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;EAE/C,IAAAP,YAAM,EAACF,SAAS,CAACU,WAAW,CAAC,CAACP,EAAE,CAACC,EAAE,CAACO,CAAC,CAAC,QAAQ,CAAC;EAC/C,IAAAT,YAAM,EAACF,SAAS,CAACY,QAAQ,CAAC,CAACT,EAAE,CAACC,EAAE,CAACO,CAAC,CAAC,UAAU,CAAC;EAC9C,IAAAT,YAAM,EAACF,SAAS,CAACa,GAAG,CAAC,CAACV,EAAE,CAACC,EAAE,CAACO,CAAC,CAAC,UAAU,CAAC;AAC3C;AAEA,eAAevB,QAAQA,CAAC;EAAC0B,UAAU;EAAED,GAAG,GAAG;AAAK,CAAC,EAAE;EACjD,MAAMb,SAAS,GAAG,MAAM,IAAAC,wBAAgB,EAAC,CAAC;EAC1C,MAAMc,MAAM,GAAG,IAAIC,sBAAU,CAACF,UAAU,CAAC,aAAa,CAAC,CAAC;EACxD,MAAMG,cAAc,GAAGH,UAAU,CAAC,qBAAqB,CAAC;EACxD;;EAEA,IAAI,CAACD,GAAG,EAAE;IACR,MAAMK,MAAM,GAAG,MAAMlB,SAAS,CAACY,QAAQ,CAACG,MAAM,CAAC;IAC/C,IAAAb,YAAM,EAACgB,MAAM,CAAC,CAACf,EAAE,CAACgB,GAAG,CAACF,cAAc,CAAC;IACrC;EACF;EAEA,MAAMjB,SAAS,CAACa,GAAG,CAACE,MAAM,CAAC;EAC3B,IAAAb,YAAM,EAACa,MAAM,CAAC,CAACZ,EAAE,CAACgB,GAAG,CAACF,cAAc,CAAC;AACvC","ignoreList":[]}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = _default;
|
|
7
|
+
var _utils = require("./utils");
|
|
8
|
+
var _field33XUtils = require("./field33XUtils");
|
|
9
|
+
//import createDebugLogger from 'debug';
|
|
10
|
+
|
|
11
|
+
const description = 'Add missing 337 field(s)';
|
|
12
|
+
|
|
13
|
+
// Based on https://github.com/NatLibFi/USEMARCON-Cyrillux/blob/master/008-23-337a.tbl . Extended!
|
|
14
|
+
const mappings337B = [{
|
|
15
|
+
formOfItem: ' ',
|
|
16
|
+
rdacontent: 'n'
|
|
17
|
+
},
|
|
18
|
+
// unmediated - käytettävissä ilman laitetta
|
|
19
|
+
{
|
|
20
|
+
formOfItem: '|',
|
|
21
|
+
rdacontent: 'n'
|
|
22
|
+
}, {
|
|
23
|
+
formOfItem: 'a',
|
|
24
|
+
rdacontent: 'h'
|
|
25
|
+
},
|
|
26
|
+
// microform
|
|
27
|
+
{
|
|
28
|
+
formOfItem: 'b',
|
|
29
|
+
rdacontent: 'h'
|
|
30
|
+
}, {
|
|
31
|
+
formOfItem: 'c',
|
|
32
|
+
rdacontent: 'h'
|
|
33
|
+
}, {
|
|
34
|
+
formOfItem: 'd',
|
|
35
|
+
rdacontent: 'n'
|
|
36
|
+
}, {
|
|
37
|
+
formOfItem: 'e',
|
|
38
|
+
rdacontent: 'n'
|
|
39
|
+
}, {
|
|
40
|
+
formOfItem: 'f',
|
|
41
|
+
rdacontent: 'n'
|
|
42
|
+
}, {
|
|
43
|
+
formOfItem: 'o',
|
|
44
|
+
rdacontent: 'c'
|
|
45
|
+
},
|
|
46
|
+
// computer
|
|
47
|
+
{
|
|
48
|
+
formOfItem: 'q',
|
|
49
|
+
rdacontent: 'c'
|
|
50
|
+
}, {
|
|
51
|
+
formOfItem: 'r',
|
|
52
|
+
rdacontent: 'n'
|
|
53
|
+
}, {
|
|
54
|
+
formOfItem: 's',
|
|
55
|
+
rdacontent: 'c'
|
|
56
|
+
}];
|
|
57
|
+
function _default() {
|
|
58
|
+
return {
|
|
59
|
+
description,
|
|
60
|
+
validate,
|
|
61
|
+
fix
|
|
62
|
+
};
|
|
63
|
+
function fix(record) {
|
|
64
|
+
(0, _utils.nvdebug)(`FIX ${description}...`);
|
|
65
|
+
const newField = getMissing337(record);
|
|
66
|
+
const res = {
|
|
67
|
+
message: [],
|
|
68
|
+
fix: [],
|
|
69
|
+
valid: true
|
|
70
|
+
};
|
|
71
|
+
if (newField) {
|
|
72
|
+
record.insertField(newField);
|
|
73
|
+
return res;
|
|
74
|
+
}
|
|
75
|
+
return res;
|
|
76
|
+
}
|
|
77
|
+
function validate(record) {
|
|
78
|
+
(0, _utils.nvdebug)(`VALIDATE ${description}....`);
|
|
79
|
+
const newField = getMissing337(record);
|
|
80
|
+
if (!newField) {
|
|
81
|
+
return {
|
|
82
|
+
message: [],
|
|
83
|
+
valid: true
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
const msg = `${description}: '${(0, _utils.fieldToString)(newField)}'`;
|
|
87
|
+
return {
|
|
88
|
+
message: [msg],
|
|
89
|
+
valid: false
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function guessObjectsMissing337B(record) {
|
|
93
|
+
const [field008] = record.get('008');
|
|
94
|
+
if (field008 && field008.value[33] === 'p') {
|
|
95
|
+
return 'p'; // microscopic
|
|
96
|
+
}
|
|
97
|
+
return 'n'; // unmediated
|
|
98
|
+
}
|
|
99
|
+
function guessMissing337B(record) {
|
|
100
|
+
const typeOfRecord = record.getTypeOfRecord();
|
|
101
|
+
if (typeOfRecord === 'm') {
|
|
102
|
+
// LDR/06=m/computer file
|
|
103
|
+
return 'c'; // computer
|
|
104
|
+
}
|
|
105
|
+
if (typeOfRecord === 'o' || typeOfRecord === 'p') {
|
|
106
|
+
return 'x'; // other
|
|
107
|
+
}
|
|
108
|
+
if (typeOfRecord === 'r') {
|
|
109
|
+
// object
|
|
110
|
+
return guessObjectsMissing337B(record);
|
|
111
|
+
}
|
|
112
|
+
const fields007 = record.get('007');
|
|
113
|
+
|
|
114
|
+
// TO DO: type a/t + 245$h (not multimedia): use 007/00 based expection
|
|
115
|
+
|
|
116
|
+
// 007/00 implies that 337$b=c (computer)
|
|
117
|
+
if (typeOfRecord === 'g' || typeOfRecord === 'i' || typeOfRecord === 'j') {
|
|
118
|
+
if (fields007.some(f => f.value[0] === 'c')) {
|
|
119
|
+
// c=computer
|
|
120
|
+
// i and j: should we check 007/05 (audio)=a as well?
|
|
121
|
+
return 'c';
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (typeOfRecord === 'g') {
|
|
125
|
+
if (fields007.some(f => f.value[0] === 'g')) {
|
|
126
|
+
// g=projected
|
|
127
|
+
return 'g';
|
|
128
|
+
}
|
|
129
|
+
if (fields007.some(f => f.value[0] === 'm' || f.value[0] === 'v')) {
|
|
130
|
+
// m=movie, v=videorecording (cyrillux maps videorecording to 'c'/computer, fix it there?)
|
|
131
|
+
return 'v';
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (typeOfRecord === 'i' || typeOfRecord === 'j') {
|
|
135
|
+
// Ye olde stuff: 245$h might contain value 'Äänite', which returns 'a'.
|
|
136
|
+
// NB! Cyrillux returns 'c'/com a bit more aggressively for j (music)
|
|
137
|
+
return 's'; // audio
|
|
138
|
+
}
|
|
139
|
+
return mapFormOfItemToField337B((0, _field33XUtils.getFormOfItem)(record));
|
|
140
|
+
}
|
|
141
|
+
function getMissing337(record) {
|
|
142
|
+
const [f337] = record.get('337');
|
|
143
|
+
if (f337) {
|
|
144
|
+
// nvdebug(fieldToString(f337));
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
const b = guessMissing337B(record) || 'z';
|
|
148
|
+
const catLang = (0, _utils.getCatalogingLanguage)(record);
|
|
149
|
+
const catLang2 = catLang ? catLang : 'fin';
|
|
150
|
+
const a = (0, _field33XUtils.map337CodeToTerm)(b, catLang2);
|
|
151
|
+
const data = {
|
|
152
|
+
tag: '337',
|
|
153
|
+
ind1: ' ',
|
|
154
|
+
ind2: ' ',
|
|
155
|
+
subfields: [{
|
|
156
|
+
code: 'a',
|
|
157
|
+
value: a
|
|
158
|
+
}, {
|
|
159
|
+
code: 'b',
|
|
160
|
+
value: b
|
|
161
|
+
}, {
|
|
162
|
+
code: '2',
|
|
163
|
+
value: 'rdamedia'
|
|
164
|
+
}]
|
|
165
|
+
};
|
|
166
|
+
return data;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function mapFormOfItemToField337B(formOfItem) {
|
|
170
|
+
(0, _utils.nvdebug)(`mapping ${formOfItem} to 337$b`);
|
|
171
|
+
const [result] = mappings337B.filter(row => row.formOfItem === formOfItem);
|
|
172
|
+
if (result) {
|
|
173
|
+
return result.rdacontent;
|
|
174
|
+
}
|
|
175
|
+
return 'z'; // undefined; // How about 'z'/unspecified. Currently done
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=addMissingField337.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addMissingField337.js","names":["_utils","require","_field33XUtils","description","mappings337B","formOfItem","rdacontent","_default","validate","fix","record","nvdebug","newField","getMissing337","res","message","valid","insertField","msg","fieldToString","guessObjectsMissing337B","field008","get","value","guessMissing337B","typeOfRecord","getTypeOfRecord","fields007","some","f","mapFormOfItemToField337B","getFormOfItem","f337","undefined","b","catLang","getCatalogingLanguage","catLang2","a","map337CodeToTerm","data","tag","ind1","ind2","subfields","code","result","filter","row"],"sources":["../src/addMissingField337.js"],"sourcesContent":["//import createDebugLogger from 'debug';\nimport {fieldToString, getCatalogingLanguage, nvdebug} from './utils';\nimport {getFormOfItem, map337CodeToTerm} from './field33XUtils';\n\nconst description = 'Add missing 337 field(s)';\n\n// Based on https://github.com/NatLibFi/USEMARCON-Cyrillux/blob/master/008-23-337a.tbl . Extended!\nconst mappings337B = [\n {formOfItem: ' ', rdacontent: 'n'}, // unmediated - käytettävissä ilman laitetta\n {formOfItem: '|', rdacontent: 'n'},\n {formOfItem: 'a', rdacontent: 'h'}, // microform\n {formOfItem: 'b', rdacontent: 'h'},\n {formOfItem: 'c', rdacontent: 'h'},\n {formOfItem: 'd', rdacontent: 'n'},\n {formOfItem: 'e', rdacontent: 'n'},\n {formOfItem: 'f', rdacontent: 'n'},\n {formOfItem: 'o', rdacontent: 'c'}, // computer\n {formOfItem: 'q', rdacontent: 'c'},\n {formOfItem: 'r', rdacontent: 'n'},\n {formOfItem: 's', rdacontent: 'c'}\n];\n\nexport default function () {\n\n return {\n description, validate, fix\n };\n\n function fix(record) {\n nvdebug(`FIX ${description}...`);\n const newField = getMissing337(record);\n const res = {message: [], fix: [], valid: true};\n if (newField) {\n record.insertField(newField);\n return res;\n }\n\n return res;\n }\n\n function validate(record) {\n nvdebug(`VALIDATE ${description}....`);\n const newField = getMissing337(record);\n if (!newField) {\n return {message: [], valid: true};\n }\n const msg = `${description}: '${fieldToString(newField)}'`;\n return {message: [msg], valid: false};\n }\n\n function guessObjectsMissing337B(record) {\n const [field008] = record.get('008');\n if (field008 && field008.value[33] === 'p') {\n return 'p'; // microscopic\n }\n return 'n'; // unmediated\n }\n\n function guessMissing337B(record) {\n const typeOfRecord = record.getTypeOfRecord();\n\n if (typeOfRecord === 'm') { // LDR/06=m/computer file\n return 'c'; // computer\n }\n if (typeOfRecord === 'o' || typeOfRecord === 'p') {\n return 'x'; // other\n }\n if (typeOfRecord === 'r') { // object\n return guessObjectsMissing337B(record);\n }\n const fields007 = record.get('007');\n\n // TO DO: type a/t + 245$h (not multimedia): use 007/00 based expection\n\n // 007/00 implies that 337$b=c (computer)\n if (typeOfRecord === 'g' || typeOfRecord === 'i' || typeOfRecord === 'j') {\n if (fields007.some(f => f.value[0] === 'c')) { // c=computer\n // i and j: should we check 007/05 (audio)=a as well?\n return 'c';\n }\n }\n\n if (typeOfRecord === 'g') {\n if (fields007.some(f => f.value[0] === 'g')) { // g=projected\n return 'g';\n }\n if (fields007.some(f => f.value[0] === 'm' || f.value[0] === 'v')) { // m=movie, v=videorecording (cyrillux maps videorecording to 'c'/computer, fix it there?)\n return 'v';\n }\n }\n\n if (typeOfRecord === 'i' || typeOfRecord === 'j') {\n // Ye olde stuff: 245$h might contain value 'Äänite', which returns 'a'.\n // NB! Cyrillux returns 'c'/com a bit more aggressively for j (music)\n return 's'; // audio\n }\n\n return mapFormOfItemToField337B(getFormOfItem(record));\n }\n\n function getMissing337(record) {\n const [f337] = record.get('337');\n if (f337) {\n // nvdebug(fieldToString(f337));\n return undefined;\n }\n\n const b = guessMissing337B(record) || 'z';\n\n const catLang = getCatalogingLanguage(record);\n const catLang2 = catLang ? catLang : 'fin';\n const a = map337CodeToTerm(b, catLang2);\n\n const data = {tag: '337', ind1: ' ', ind2: ' ', subfields: [\n {code: 'a', value: a},\n {code: 'b', value: b},\n {code: '2', value: 'rdamedia'}\n ]};\n\n return data;\n }\n}\n\nfunction mapFormOfItemToField337B(formOfItem) {\n nvdebug(`mapping ${formOfItem} to 337$b`);\n\n const [result] = mappings337B.filter(row => row.formOfItem === formOfItem);\n if (result) {\n return result.rdacontent;\n }\n return 'z'; // undefined; // How about 'z'/unspecified. Currently done\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _chai = require("chai");
|
|
4
|
+
var _marcRecord = require("@natlibfi/marc-record");
|
|
5
|
+
var _addMissingField = _interopRequireDefault(require("./addMissingField337"));
|
|
6
|
+
var _fixura = require("@natlibfi/fixura");
|
|
7
|
+
var _fixugen = _interopRequireDefault(require("@natlibfi/fixugen"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
(0, _fixugen.default)({
|
|
10
|
+
callback,
|
|
11
|
+
path: [__dirname, '..', 'test-fixtures', 'addMissingField337'],
|
|
12
|
+
useMetadataFile: true,
|
|
13
|
+
recurse: false,
|
|
14
|
+
fixura: {
|
|
15
|
+
reader: _fixura.READERS.JSON
|
|
16
|
+
},
|
|
17
|
+
mocha: {
|
|
18
|
+
before: () => testValidatorFactory()
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
async function testValidatorFactory() {
|
|
22
|
+
const validator = await (0, _addMissingField.default)();
|
|
23
|
+
(0, _chai.expect)(validator).to.be.an('object').that.has.any.keys('description', 'validate');
|
|
24
|
+
(0, _chai.expect)(validator.description).to.be.a('string');
|
|
25
|
+
(0, _chai.expect)(validator.validate).to.be.a('function');
|
|
26
|
+
(0, _chai.expect)(validator.fix).to.be.a('function');
|
|
27
|
+
}
|
|
28
|
+
async function callback({
|
|
29
|
+
getFixture,
|
|
30
|
+
fix = false
|
|
31
|
+
}) {
|
|
32
|
+
const validator = await (0, _addMissingField.default)();
|
|
33
|
+
const record = new _marcRecord.MarcRecord(getFixture('record.json'));
|
|
34
|
+
const expectedResult = getFixture('expectedResult.json');
|
|
35
|
+
if (!fix) {
|
|
36
|
+
const result = await validator.validate(record);
|
|
37
|
+
(0, _chai.expect)(result).to.eql(expectedResult);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
await validator.fix(record);
|
|
41
|
+
(0, _chai.expect)(record).to.eql(expectedResult);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=addMissingField337.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addMissingField337.spec.js","names":["_chai","require","_marcRecord","_addMissingField","_interopRequireDefault","_fixura","_fixugen","obj","__esModule","default","generateTests","callback","path","__dirname","useMetadataFile","recurse","fixura","reader","READERS","JSON","mocha","before","testValidatorFactory","validator","validatorFactory","expect","to","be","an","that","has","any","keys","description","a","validate","fix","getFixture","record","MarcRecord","expectedResult","result","eql"],"sources":["../src/addMissingField337.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './addMissingField337';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\n\ngenerateTests({\n callback,\n path: [__dirname, '..', 'test-fixtures', 'addMissingField337'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n mocha: {\n before: () => testValidatorFactory()\n }\n});\n\nasync function testValidatorFactory() {\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 expect(validator.fix).to.be.a('function');\n}\n\nasync function callback({getFixture, fix = false}) {\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n\n if (!fix) {\n const result = await validator.validate(record);\n expect(result).to.eql(expectedResult);\n return;\n }\n\n await validator.fix(record);\n expect(record).to.eql(expectedResult);\n}\n"],"mappings":";;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAF,sBAAA,CAAAH,OAAA;AAA8C,SAAAG,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE9C,IAAAG,gBAAa,EAAC;EACZC,QAAQ;EACRC,IAAI,EAAE,CAACC,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,oBAAoB,CAAC;EAC9DC,eAAe,EAAE,IAAI;EACrBC,OAAO,EAAE,KAAK;EACdC,MAAM,EAAE;IACNC,MAAM,EAAEC,eAAO,CAACC;EAClB,CAAC;EACDC,KAAK,EAAE;IACLC,MAAM,EAAEA,CAAA,KAAMC,oBAAoB,CAAC;EACrC;AACF,CAAC,CAAC;AAEF,eAAeA,oBAAoBA,CAAA,EAAG;EACpC,MAAMC,SAAS,GAAG,MAAM,IAAAC,wBAAgB,EAAC,CAAC;EAE1C,IAAAC,YAAM,EAACF,SAAS,CAAC,CACdG,EAAE,CAACC,EAAE,CAACC,EAAE,CAAC,QAAQ,CAAC,CAClBC,IAAI,CAACC,GAAG,CAACC,GAAG,CAACC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;EAE/C,IAAAP,YAAM,EAACF,SAAS,CAACU,WAAW,CAAC,CAACP,EAAE,CAACC,EAAE,CAACO,CAAC,CAAC,QAAQ,CAAC;EAC/C,IAAAT,YAAM,EAACF,SAAS,CAACY,QAAQ,CAAC,CAACT,EAAE,CAACC,EAAE,CAACO,CAAC,CAAC,UAAU,CAAC;EAC9C,IAAAT,YAAM,EAACF,SAAS,CAACa,GAAG,CAAC,CAACV,EAAE,CAACC,EAAE,CAACO,CAAC,CAAC,UAAU,CAAC;AAC3C;AAEA,eAAevB,QAAQA,CAAC;EAAC0B,UAAU;EAAED,GAAG,GAAG;AAAK,CAAC,EAAE;EACjD,MAAMb,SAAS,GAAG,MAAM,IAAAC,wBAAgB,EAAC,CAAC;EAC1C,MAAMc,MAAM,GAAG,IAAIC,sBAAU,CAACF,UAAU,CAAC,aAAa,CAAC,CAAC;EACxD,MAAMG,cAAc,GAAGH,UAAU,CAAC,qBAAqB,CAAC;EAExD,IAAI,CAACD,GAAG,EAAE;IACR,MAAMK,MAAM,GAAG,MAAMlB,SAAS,CAACY,QAAQ,CAACG,MAAM,CAAC;IAC/C,IAAAb,YAAM,EAACgB,MAAM,CAAC,CAACf,EAAE,CAACgB,GAAG,CAACF,cAAc,CAAC;IACrC;EACF;EAEA,MAAMjB,SAAS,CAACa,GAAG,CAACE,MAAM,CAAC;EAC3B,IAAAb,YAAM,EAACa,MAAM,CAAC,CAACZ,EAAE,CAACgB,GAAG,CAACF,cAAc,CAAC;AACvC","ignoreList":[]}
|