@natlibfi/melinda-commons 12.0.3 → 12.0.4-alpha.3
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/.github/CODEOWNERS +9 -0
- package/.github/dependabot.yml +41 -0
- package/.github/workflows/melinda-node-tests.yml +70 -0
- package/README.md +1 -1
- package/dist/error.js +7 -36
- package/dist/error.js.map +1 -1
- package/dist/error.spec.js +4 -4
- package/dist/error.spec.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/subRecordPicker.js +61 -88
- package/dist/subRecordPicker.js.map +1 -1
- package/dist/subRecordPicker.spec.js +31 -54
- package/dist/subRecordPicker.spec.js.map +1 -1
- package/dist/utils.js +29 -45
- package/dist/utils.js.map +1 -1
- package/dist/utils.spec.js +57 -54
- package/dist/utils.spec.js.map +1 -1
- package/package.json +19 -19
- package/src/error.js +1 -1
- package/src/error.spec.js +1 -1
- package/src/index.js +1 -1
- package/src/subRecordPicker.js +28 -0
- package/src/subRecordPicker.spec.js +1 -1
- package/src/utils.js +2 -2
- package/src/utils.spec.js +6 -1
- package/.drone.yml +0 -93
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"subRecordPicker.spec.js","names":["describe","sruUrl","retrieveAll","it","client","createSubrecordPicker","expect","to","respondTo","throw","generateTests","callback","path","__dirname","getFixture","method","recordId","expectedRecords","components","reader","READERS","JSON","records","format","eql","map","r","toObject"],"sources":["../src/subRecordPicker.spec.js"],"sourcesContent":["/**\n*\n* @licstart The following is the entire license notice for the JavaScript code in this file.\n*\n* Shared modules for Melinda's software\n*\n* Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)\n*\n* This file is part of melinda-commons-js\n*\n* melinda-commons-js 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* melinda-commons-js 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\nimport {expect} from 'chai';\nimport {createSubrecordPicker} from './subRecordPicker';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen-http-client';\n\ndescribe('subRecordPicker', () => {\n const sruUrl = 'https://sru';\n const retrieveAll = false;\n\n describe('createSubrecordPicker', () => {\n it('Client should have methods', () => {\n const client = createSubrecordPicker(sruUrl, retrieveAll);\n expect(client).to.respondTo('readAllSubrecords');\n expect(client).to.respondTo('readSomeSubrecords');\n });\n\n it('Create client should work with just one parametter', () => {\n const client = createSubrecordPicker(sruUrl);\n expect(client).to.respondTo('readAllSubrecords');\n expect(client).to.respondTo('readSomeSubrecords');\n });\n\n it('Create client should have at least one parametter', () => {\n expect(createSubrecordPicker).to.throw();\n });\n });\n\n generateTests({\n callback,\n path: [__dirname, '..', 'test-fixtures', 'subRecordPicker']\n });\n\n async function callback({getFixture, method, sruUrl, retrieveAll, recordId}) {\n const client = createSubrecordPicker(sruUrl, retrieveAll);\n const expectedRecords = getFixture({components: ['expected-records.json'], reader: READERS.JSON});\n const {records} = await client[method](recordId);\n\n expect(format()).to.eql(expectedRecords);\n\n function format() {\n return records.map(r => r.toObject());\n }\n }\n});\n"],"mappings":";;;;AA4BA;;AACA;;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,iBAAD,EAAoB,MAAM;EAChC,MAAMC,MAAM,GAAG,aAAf;EACA,MAAMC,WAAW,GAAG,KAApB;EAEAF,QAAQ,CAAC,uBAAD,EAA0B,MAAM;IACtCG,EAAE,CAAC,4BAAD,EAA+B,MAAM;MACrC,MAAMC,MAAM,GAAG,IAAAC,sCAAA,EAAsBJ,MAAtB,EAA8BC,WAA9B,CAAf;MACA,IAAAI,YAAA,EAAOF,MAAP,EAAeG,EAAf,CAAkBC,SAAlB,CAA4B,mBAA5B;MACA,IAAAF,YAAA,EAAOF,MAAP,EAAeG,EAAf,CAAkBC,SAAlB,CAA4B,oBAA5B;IACD,CAJC,CAAF;IAMAL,EAAE,CAAC,oDAAD,EAAuD,MAAM;MAC7D,MAAMC,MAAM,GAAG,IAAAC,sCAAA,EAAsBJ,MAAtB,CAAf;MACA,IAAAK,YAAA,EAAOF,MAAP,EAAeG,EAAf,CAAkBC,SAAlB,CAA4B,mBAA5B;MACA,IAAAF,YAAA,EAAOF,MAAP,EAAeG,EAAf,CAAkBC,SAAlB,CAA4B,oBAA5B;IACD,CAJC,CAAF;IAMAL,EAAE,CAAC,mDAAD,EAAsD,MAAM;MAC5D,IAAAG,YAAA,EAAOD,sCAAP,EAA8BE,EAA9B,CAAiCE,KAAjC;IACD,CAFC,CAAF;EAGD,CAhBO,CAAR;EAkBA,IAAAC,0BAAA,EAAc;IACZC,QADY;IAEZC,IAAI,EAAE,CAACC,SAAD,EAAY,IAAZ,EAAkB,eAAlB,EAAmC,iBAAnC;EAFM,CAAd;;EAKA,eAAeF,QAAf,OAA6E;IAAA,IAArD;MAACG,UAAD;MAAaC,MAAb;MAAqBd,MAArB;MAA6BC,WAA7B;MAA0Cc;IAA1C,CAAqD;IAC3E,MAAMZ,MAAM,GAAG,IAAAC,sCAAA,EAAsBJ,MAAtB,EAA8BC,WAA9B,CAAf;IACA,MAAMe,eAAe,GAAGH,UAAU,CAAC;MAACI,UAAU,EAAE,CAAC,uBAAD,CAAb;MAAwCC,MAAM,EAAEC,eAAA,CAAQC;IAAxD,CAAD,CAAlC;IACA,MAAM;MAACC;IAAD,IAAY,MAAMlB,MAAM,CAACW,MAAD,CAAN,CAAeC,QAAf,CAAxB;IAEA,IAAAV,YAAA,EAAOiB,MAAM,EAAb,EAAiBhB,EAAjB,CAAoBiB,GAApB,CAAwBP,eAAxB;;IAEA,SAASM,MAAT,GAAkB;MAChB,OAAOD,OAAO,CAACG,GAAR,CAAYC,CAAC,IAAIA,CAAC,CAACC,QAAF,EAAjB,CAAP;IACD;EACF;AACF,CAtCO,CAAR"}
|
package/dist/utils.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
3
|
Object.defineProperty(exports, "__esModule", {
|
|
8
4
|
value: true
|
|
9
5
|
});
|
|
@@ -16,19 +12,13 @@ exports.isDeletedRecord = isDeletedRecord;
|
|
|
16
12
|
exports.parseBoolean = parseBoolean;
|
|
17
13
|
exports.toAlephId = toAlephId;
|
|
18
14
|
|
|
19
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
20
|
-
|
|
21
|
-
var _setPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/setPrototypeOf"));
|
|
22
|
-
|
|
23
|
-
function _wrapRegExp() { _wrapRegExp = function _wrapRegExp(re, groups) { return new BabelRegExp(re, void 0, groups); }; var _super = RegExp.prototype, _groups = new WeakMap(); function BabelRegExp(re, flags, groups) { var _this = new RegExp(re, flags); return _groups.set(_this, groups || _groups.get(re)), (0, _setPrototypeOf2.default)(_this, BabelRegExp.prototype); } function buildGroups(result, re) { var g = _groups.get(re); return Object.keys(g).reduce(function (groups, name) { return groups[name] = result[g[name]], groups; }, Object.create(null)); } return (0, _inherits2.default)(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) { var result = _super.exec.call(this, str); return result && (result.groups = buildGroups(result, this)), result; }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) { if ("string" == typeof substitution) { var groups = _groups.get(this); return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) { return "$" + groups[name]; })); } if ("function" == typeof substitution) { var _this = this; return _super[Symbol.replace].call(this, str, function () { var args = arguments; return "object" != _typeof(args[args.length - 1]) && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args); }); } return _super[Symbol.replace].call(this, str, substitution); }, _wrapRegExp.apply(this, arguments); }
|
|
24
|
-
|
|
25
15
|
/**
|
|
26
16
|
*
|
|
27
17
|
* @licstart The following is the entire license notice for the JavaScript code in this file.
|
|
28
18
|
*
|
|
29
19
|
* Shared modules for Melinda's software
|
|
30
20
|
*
|
|
31
|
-
* Copyright (C) 2018-
|
|
21
|
+
* Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
|
|
32
22
|
*
|
|
33
23
|
* This file is part of melinda-commons-js
|
|
34
24
|
*
|
|
@@ -50,8 +40,8 @@ function _wrapRegExp() { _wrapRegExp = function _wrapRegExp(re, groups) { return
|
|
|
50
40
|
*
|
|
51
41
|
*/
|
|
52
42
|
function generateAuthorizationHeader(username) {
|
|
53
|
-
|
|
54
|
-
|
|
43
|
+
let password = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
44
|
+
const encoded = Buffer.from("".concat(username, ":").concat(password)).toString('base64');
|
|
55
45
|
return "Basic ".concat(encoded);
|
|
56
46
|
}
|
|
57
47
|
|
|
@@ -63,27 +53,35 @@ function isDeletedRecord(record) {
|
|
|
63
53
|
return checkDel() || checkSta();
|
|
64
54
|
|
|
65
55
|
function checkDel() {
|
|
66
|
-
return record.get(/^DEL$/).some(check);
|
|
56
|
+
return record.get(/^DEL$/u).some(check);
|
|
67
57
|
|
|
68
58
|
function check(_ref) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
59
|
+
let {
|
|
60
|
+
subfields
|
|
61
|
+
} = _ref;
|
|
62
|
+
return subfields.some(_ref2 => {
|
|
63
|
+
let {
|
|
64
|
+
code,
|
|
65
|
+
value
|
|
66
|
+
} = _ref2;
|
|
73
67
|
return code === 'a' && value === 'Y';
|
|
74
68
|
});
|
|
75
69
|
}
|
|
76
70
|
}
|
|
77
71
|
|
|
78
72
|
function checkSta() {
|
|
79
|
-
return record.get(/^STA$/).some(check);
|
|
73
|
+
return record.get(/^STA$/u).some(check);
|
|
80
74
|
|
|
81
75
|
function check(_ref3) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
76
|
+
let {
|
|
77
|
+
subfields
|
|
78
|
+
} = _ref3;
|
|
79
|
+
const values = ['DELETED', 'DELETED-SPLIT', 'DELETED-DEPRECATED'];
|
|
80
|
+
return subfields.some(_ref4 => {
|
|
81
|
+
let {
|
|
82
|
+
code,
|
|
83
|
+
value
|
|
84
|
+
} = _ref4;
|
|
87
85
|
return code === 'a' && values.includes(value);
|
|
88
86
|
});
|
|
89
87
|
}
|
|
@@ -96,40 +94,26 @@ function parseBoolean(value) {
|
|
|
96
94
|
}
|
|
97
95
|
|
|
98
96
|
if (Number.isNaN(Number(value))) {
|
|
99
|
-
return value.length > 0 && value !== 'false';
|
|
97
|
+
return value.length > 0 && value !== 'false' && value !== 'FALSE';
|
|
100
98
|
}
|
|
101
99
|
|
|
102
100
|
return Boolean(Number(value));
|
|
103
101
|
}
|
|
104
102
|
|
|
105
103
|
function getRecordTitle(record) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
return f.subfields.some(function (sf) {
|
|
109
|
-
return sf.code === 'a';
|
|
110
|
-
});
|
|
111
|
-
});
|
|
104
|
+
const TRIM_PATTERN = '[?!.,(){}:;/ ]*';
|
|
105
|
+
const field = record.get(/^245$/u).find(f => f.subfields.some(sf => sf.code === 'a'));
|
|
112
106
|
|
|
113
107
|
if (field) {
|
|
114
|
-
return field.subfields.find(
|
|
115
|
-
return sf.code === 'a';
|
|
116
|
-
}).value.replace(new RegExp("^".concat(TRIM_PATTERN), 'u'), '').replace(new RegExp("".concat(TRIM_PATTERN, "$"), 'u'), '');
|
|
108
|
+
return field.subfields.find(sf => sf.code === 'a').value.replace(new RegExp("^".concat(TRIM_PATTERN), 'u'), '').replace(new RegExp("".concat(TRIM_PATTERN, "$"), 'u'), '');
|
|
117
109
|
}
|
|
118
110
|
|
|
119
111
|
return '';
|
|
120
112
|
}
|
|
121
113
|
|
|
122
114
|
function getRecordStandardIdentifiers(record) {
|
|
123
|
-
return record.get(
|
|
124
|
-
|
|
125
|
-
})).filter(function (f) {
|
|
126
|
-
return f.subfields.some(function (sf) {
|
|
127
|
-
return ['a', 'z'].includes(sf.code);
|
|
128
|
-
});
|
|
129
|
-
}).map(function (field) {
|
|
130
|
-
var subfield = field.subfields.find(function (sf) {
|
|
131
|
-
return ['a', 'z'].includes(sf.code);
|
|
132
|
-
});
|
|
115
|
+
return record.get(/^(?<def>020|022|024)$/u).filter(f => f.subfields.some(sf => ['a', 'z'].includes(sf.code))).map(field => {
|
|
116
|
+
const subfield = field.subfields.find(sf => ['a', 'z'].includes(sf.code));
|
|
133
117
|
return subfield.value;
|
|
134
118
|
});
|
|
135
119
|
}
|
|
@@ -143,6 +127,6 @@ function toAlephId(id) {
|
|
|
143
127
|
}
|
|
144
128
|
|
|
145
129
|
function fromAlephId(id) {
|
|
146
|
-
return id.replace(/^0
|
|
130
|
+
return id.replace(/^0+/u, '');
|
|
147
131
|
}
|
|
148
132
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"utils.js","names":["generateAuthorizationHeader","username","password","encoded","Buffer","from","toString","isDeletedRecord","record","includes","leader","checkDel","checkSta","get","some","check","subfields","code","value","values","parseBoolean","undefined","Number","isNaN","length","Boolean","getRecordTitle","TRIM_PATTERN","field","find","f","sf","replace","RegExp","getRecordStandardIdentifiers","filter","map","subfield","clone","o","JSON","parse","stringify","toAlephId","id","padStart","fromAlephId"],"sources":["../src/utils.js"],"sourcesContent":["/**\n*\n* @licstart The following is the entire license notice for the JavaScript code in this file.\n*\n* Shared modules for Melinda's software\n*\n* Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)\n*\n* This file is part of melinda-commons-js\n*\n* melinda-commons-js 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* melinda-commons-js 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\nexport function generateAuthorizationHeader(username, password = '') {\n const encoded = Buffer.from(`${username}:${password}`).toString('base64');\n return `Basic ${encoded}`;\n}\n\nexport function isDeletedRecord(record) {\n if (['d', 's', 'x'].includes(record.leader[5])) {\n return true;\n }\n\n return checkDel() || checkSta();\n\n function checkDel() {\n return record.get(/^DEL$/u).some(check);\n\n function check({subfields}) {\n return subfields.some(({code, value}) => code === 'a' && value === 'Y');\n }\n }\n\n function checkSta() {\n return record.get(/^STA$/u).some(check);\n\n function check({subfields}) {\n const values = ['DELETED', 'DELETED-SPLIT', 'DELETED-DEPRECATED'];\n return subfields.some(({code, value}) => code === 'a' && values.includes(value));\n }\n }\n}\n\nexport function parseBoolean(value) {\n if (value === undefined) {\n return false;\n }\n\n if (Number.isNaN(Number(value))) {\n return value.length > 0 && value !== 'false' && value !== 'FALSE';\n }\n\n return Boolean(Number(value));\n}\n\nexport function getRecordTitle(record) {\n const TRIM_PATTERN = '[?!.,(){}:;/ ]*';\n const field = record\n .get(/^245$/u)\n .find(f => f.subfields.some(sf => sf.code === 'a'));\n\n if (field) {\n return field.subfields.find(sf => sf.code === 'a').value\n .replace(new RegExp(`^${TRIM_PATTERN}`, 'u'), '')\n .replace(new RegExp(`${TRIM_PATTERN}$`, 'u'), '');\n }\n\n return '';\n}\n\nexport function getRecordStandardIdentifiers(record) {\n return record.get(/^(?<def>020|022|024)$/u)\n .filter(f => f.subfields.some(sf => ['a', 'z'].includes(sf.code)))\n .map(field => {\n const subfield = field.subfields.find(sf => ['a', 'z'].includes(sf.code));\n return subfield.value;\n });\n}\n\nexport function clone(o) {\n return JSON.parse(JSON.stringify(o));\n}\n\nexport function toAlephId(id) {\n return id.padStart(9, '0');\n}\n\nexport function fromAlephId(id) {\n return id.replace(/^0+/u, '');\n}\n"],"mappings":"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"}
|
package/dist/utils.spec.js
CHANGED
|
@@ -18,7 +18,7 @@ var _utils = require("./utils");
|
|
|
18
18
|
*
|
|
19
19
|
* Shared modules for Melinda's software
|
|
20
20
|
*
|
|
21
|
-
* Copyright (C) 2018-
|
|
21
|
+
* Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
|
|
22
22
|
*
|
|
23
23
|
* This file is part of melinda-commons-js
|
|
24
24
|
*
|
|
@@ -43,114 +43,117 @@ _marcRecord.MarcRecord.setValidationOptions({
|
|
|
43
43
|
subfieldValues: false
|
|
44
44
|
});
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
const FIXTURES_PATH = _path.default.join(__dirname, '../test-fixtures/utils');
|
|
47
47
|
|
|
48
|
-
describe('utils',
|
|
49
|
-
describe('generateAuthorizationHeader',
|
|
50
|
-
it('Should create a proper Authorization header',
|
|
51
|
-
|
|
48
|
+
describe('utils', () => {
|
|
49
|
+
describe('generateAuthorizationHeader', () => {
|
|
50
|
+
it('Should create a proper Authorization header', () => {
|
|
51
|
+
const value = (0, _utils.generateAuthorizationHeader)('foo', 'bar');
|
|
52
52
|
(0, _chai.expect)(value).to.equal('Basic Zm9vOmJhcg==');
|
|
53
53
|
});
|
|
54
54
|
});
|
|
55
|
-
describe('isDeletedRecord',
|
|
56
|
-
it('Should find the record deleted (Leader)',
|
|
57
|
-
|
|
55
|
+
describe('isDeletedRecord', () => {
|
|
56
|
+
it('Should find the record deleted (Leader)', () => {
|
|
57
|
+
const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isDeletedRecord/record1.json'), 'utf8');
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
const record = new _marcRecord.MarcRecord(JSON.parse(data));
|
|
60
60
|
(0, _chai.expect)((0, _utils.isDeletedRecord)(record)).to.equal(true);
|
|
61
61
|
});
|
|
62
|
-
it('Should find the record deleted (DEL)',
|
|
63
|
-
|
|
62
|
+
it('Should find the record deleted (DEL)', () => {
|
|
63
|
+
const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isDeletedRecord/record2.json'), 'utf8');
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
const record = new _marcRecord.MarcRecord(JSON.parse(data));
|
|
66
66
|
(0, _chai.expect)((0, _utils.isDeletedRecord)(record)).to.equal(true);
|
|
67
67
|
});
|
|
68
|
-
it('Should find the record deleted (STA)',
|
|
69
|
-
|
|
68
|
+
it('Should find the record deleted (STA)', () => {
|
|
69
|
+
const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isDeletedRecord/record3.json'), 'utf8');
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
const record = new _marcRecord.MarcRecord(JSON.parse(data));
|
|
72
72
|
(0, _chai.expect)((0, _utils.isDeletedRecord)(record)).to.equal(true);
|
|
73
73
|
});
|
|
74
|
-
it('Should find the record not deleted',
|
|
75
|
-
|
|
74
|
+
it('Should find the record not deleted', () => {
|
|
75
|
+
const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isDeletedRecord/record4.json'), 'utf8');
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
const record = new _marcRecord.MarcRecord(JSON.parse(data));
|
|
78
78
|
(0, _chai.expect)((0, _utils.isDeletedRecord)(record)).to.equal(false);
|
|
79
79
|
});
|
|
80
|
-
it('Should find the record deleted (Split)',
|
|
81
|
-
|
|
80
|
+
it('Should find the record deleted (Split)', () => {
|
|
81
|
+
const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isDeletedRecord/record5.json'), 'utf8');
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
const record = new _marcRecord.MarcRecord(JSON.parse(data));
|
|
84
84
|
(0, _chai.expect)((0, _utils.isDeletedRecord)(record)).to.equal(true);
|
|
85
85
|
});
|
|
86
|
-
it('Should find the record deleted (Deprecated)',
|
|
87
|
-
|
|
86
|
+
it('Should find the record deleted (Deprecated)', () => {
|
|
87
|
+
const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isDeletedRecord/record6.json'), 'utf8');
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
const record = new _marcRecord.MarcRecord(JSON.parse(data));
|
|
90
90
|
(0, _chai.expect)((0, _utils.isDeletedRecord)(record)).to.equal(true);
|
|
91
91
|
});
|
|
92
|
-
it('Should find the record deleted (Split (Aleph))',
|
|
93
|
-
|
|
92
|
+
it('Should find the record deleted (Split (Aleph))', () => {
|
|
93
|
+
const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isDeletedRecord/record7.json'), 'utf8');
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
const record = new _marcRecord.MarcRecord(JSON.parse(data));
|
|
96
96
|
(0, _chai.expect)((0, _utils.isDeletedRecord)(record)).to.equal(true);
|
|
97
97
|
});
|
|
98
|
-
it('Should find the record deleted (Deprecated (Aleph))',
|
|
99
|
-
|
|
98
|
+
it('Should find the record deleted (Deprecated (Aleph))', () => {
|
|
99
|
+
const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isDeletedRecord/record8.json'), 'utf8');
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
const record = new _marcRecord.MarcRecord(JSON.parse(data));
|
|
102
102
|
(0, _chai.expect)((0, _utils.isDeletedRecord)(record)).to.equal(true);
|
|
103
103
|
});
|
|
104
104
|
});
|
|
105
|
-
describe('parseBoolean',
|
|
106
|
-
it('Should parse undefined as false',
|
|
105
|
+
describe('parseBoolean', () => {
|
|
106
|
+
it('Should parse undefined as false', () => {
|
|
107
107
|
(0, _chai.expect)((0, _utils.parseBoolean)(undefined)).to.equal(false);
|
|
108
108
|
});
|
|
109
|
-
it('Should parse zero-length string as false',
|
|
109
|
+
it('Should parse zero-length string as false', () => {
|
|
110
110
|
(0, _chai.expect)((0, _utils.parseBoolean)('')).to.equal(false);
|
|
111
111
|
});
|
|
112
|
-
it('Should parse numericish value as true',
|
|
112
|
+
it('Should parse numericish value as true', () => {
|
|
113
113
|
(0, _chai.expect)((0, _utils.parseBoolean)('1')).to.equal(true);
|
|
114
114
|
});
|
|
115
|
-
it('Should parse numericush value as false',
|
|
115
|
+
it('Should parse numericush value as false', () => {
|
|
116
116
|
(0, _chai.expect)((0, _utils.parseBoolean)('0')).to.equal(false);
|
|
117
117
|
});
|
|
118
|
-
it('Should parse literal \'false\' value as false',
|
|
118
|
+
it('Should parse literal \'false\' value as false', () => {
|
|
119
119
|
(0, _chai.expect)((0, _utils.parseBoolean)('false')).to.equal(false);
|
|
120
120
|
});
|
|
121
|
-
it('Should parse non-numericish value as true',
|
|
121
|
+
it('Should parse non-numericish value as true', () => {
|
|
122
122
|
(0, _chai.expect)((0, _utils.parseBoolean)('foo')).to.equal(true);
|
|
123
123
|
});
|
|
124
|
+
it('Should parse literal \'FALSE\' value as false', () => {
|
|
125
|
+
(0, _chai.expect)((0, _utils.parseBoolean)('FALSE')).to.equal(false);
|
|
126
|
+
});
|
|
124
127
|
});
|
|
125
|
-
describe('getRecordTitle',
|
|
126
|
-
['Should find a title', 'Should not find a title'].forEach(
|
|
127
|
-
it(descr,
|
|
128
|
-
|
|
128
|
+
describe('getRecordTitle', () => {
|
|
129
|
+
['Should find a title', 'Should not find a title'].forEach((descr, index) => {
|
|
130
|
+
it(descr, () => {
|
|
131
|
+
const title = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, "getRecordTitle/title".concat(index, ".txt")), 'utf8');
|
|
129
132
|
|
|
130
|
-
|
|
133
|
+
const recordData = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, "getRecordTitle/record".concat(index, ".json")), 'utf8');
|
|
131
134
|
|
|
132
|
-
|
|
135
|
+
const record = new _marcRecord.MarcRecord(JSON.parse(recordData));
|
|
133
136
|
(0, _chai.expect)((0, _utils.getRecordTitle)(record)).to.equal(title);
|
|
134
137
|
});
|
|
135
138
|
});
|
|
136
139
|
});
|
|
137
|
-
describe('getRecordStandardIdentifiers',
|
|
138
|
-
['Should find identifiers', 'Should not find an identifier'].forEach(
|
|
139
|
-
it(descr,
|
|
140
|
-
|
|
140
|
+
describe('getRecordStandardIdentifiers', () => {
|
|
141
|
+
['Should find identifiers', 'Should not find an identifier'].forEach((descr, index) => {
|
|
142
|
+
it(descr, () => {
|
|
143
|
+
const identifiers = JSON.parse(_fs.default.readFileSync(_path.default.join(FIXTURES_PATH, "getRecordStandardIdentifiers/identifiers".concat(index, ".json")), 'utf8'));
|
|
141
144
|
|
|
142
|
-
|
|
145
|
+
const recordData = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, "getRecordStandardIdentifiers/record".concat(index, ".json")), 'utf8');
|
|
143
146
|
|
|
144
|
-
|
|
147
|
+
const record = new _marcRecord.MarcRecord(JSON.parse(recordData));
|
|
145
148
|
(0, _chai.expect)((0, _utils.getRecordStandardIdentifiers)(record)).to.eql(identifiers);
|
|
146
149
|
});
|
|
147
150
|
});
|
|
148
151
|
});
|
|
149
|
-
describe('clone',
|
|
152
|
+
describe('clone', () => {
|
|
150
153
|
it('Should clone an object', function () {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
+
let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '1';
|
|
155
|
+
const obj = JSON.parse(_fs.default.readFileSync(_path.default.join(FIXTURES_PATH, "clone/".concat(index, "/obj.json")), 'utf8'));
|
|
156
|
+
const cloned = (0, _utils.clone)(obj);
|
|
154
157
|
(0, _chai.expect)(obj).to.not.equal(cloned);
|
|
155
158
|
(0, _chai.expect)(cloned).to.eql(obj);
|
|
156
159
|
});
|
package/dist/utils.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.spec.js"],"names":["MarcRecord","setValidationOptions","subfieldValues","FIXTURES_PATH","path","join","__dirname","describe","it","value","to","equal","data","fs","readFileSync","record","JSON","parse","undefined","forEach","descr","index","title","recordData","identifiers","eql","obj","cloned","not"],"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* Shared modules for Melinda's software\n*\n* Copyright (C) 2018-2021 University Of Helsinki (The National Library Of Finland)\n*\n* This file is part of melinda-commons-js\n*\n* melinda-commons-js 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* melinda-commons-js 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\nimport fs from 'fs';\nimport path from 'path';\nimport {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport {\n generateAuthorizationHeader, isDeletedRecord, parseBoolean, clone,\n getRecordTitle, getRecordStandardIdentifiers\n} from './utils';\n\nMarcRecord.setValidationOptions({subfieldValues: false});\n\nconst FIXTURES_PATH = path.join(__dirname, '../test-fixtures/utils');\n\ndescribe('utils', () => {\n describe('generateAuthorizationHeader', () => {\n it('Should create a proper Authorization header', () => {\n const value = generateAuthorizationHeader('foo', 'bar');\n expect(value).to.equal('Basic Zm9vOmJhcg==');\n });\n });\n\n describe('isDeletedRecord', () => {\n it('Should find the record deleted (Leader)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record1.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (DEL)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record2.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (STA)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record3.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record not deleted', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record4.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(false);\n });\n\n it('Should find the record deleted (Split)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record5.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (Deprecated)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record6.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (Split (Aleph))', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record7.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (Deprecated (Aleph))', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record8.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n });\n\n describe('parseBoolean', () => {\n it('Should parse undefined as false', () => {\n expect(parseBoolean(undefined)).to.equal(false);\n });\n\n it('Should parse zero-length string as false', () => {\n expect(parseBoolean('')).to.equal(false);\n });\n\n it('Should parse numericish value as true', () => {\n expect(parseBoolean('1')).to.equal(true);\n });\n\n it('Should parse numericush value as false', () => {\n expect(parseBoolean('0')).to.equal(false);\n });\n\n it('Should parse literal \\'false\\' value as false', () => {\n expect(parseBoolean('false')).to.equal(false);\n });\n\n it('Should parse non-numericish value as true', () => {\n expect(parseBoolean('foo')).to.equal(true);\n });\n });\n\n describe('getRecordTitle', () => {\n [\n 'Should find a title',\n 'Should not find a title'\n ].forEach((descr, index) => {\n it(descr, () => {\n const title = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordTitle/title${index}.txt`), 'utf8');\n const recordData = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordTitle/record${index}.json`), 'utf8');\n const record = new MarcRecord(JSON.parse(recordData));\n\n expect(getRecordTitle(record)).to.equal(title);\n });\n });\n });\n\n describe('getRecordStandardIdentifiers', () => {\n [\n 'Should find identifiers',\n 'Should not find an identifier'\n ].forEach((descr, index) => {\n it(descr, () => {\n const identifiers = JSON.parse(fs.readFileSync(path.join(FIXTURES_PATH, `getRecordStandardIdentifiers/identifiers${index}.json`), 'utf8'));\n const recordData = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordStandardIdentifiers/record${index}.json`), 'utf8');\n const record = new MarcRecord(JSON.parse(recordData));\n\n expect(getRecordStandardIdentifiers(record)).to.eql(identifiers);\n });\n });\n });\n\n describe('clone', () => {\n it('Should clone an object', (index = '1') => {\n const obj = JSON.parse(fs.readFileSync(path.join(FIXTURES_PATH, `clone/${index}/obj.json`), 'utf8'));\n const cloned = clone(obj);\n\n expect(obj).to.not.equal(cloned);\n expect(cloned).to.eql(obj);\n });\n });\n});\n"],"file":"utils.spec.js"}
|
|
1
|
+
{"version":3,"file":"utils.spec.js","names":["MarcRecord","setValidationOptions","subfieldValues","FIXTURES_PATH","path","join","__dirname","describe","it","value","generateAuthorizationHeader","expect","to","equal","data","fs","readFileSync","record","JSON","parse","isDeletedRecord","parseBoolean","undefined","forEach","descr","index","title","recordData","getRecordTitle","identifiers","getRecordStandardIdentifiers","eql","obj","cloned","clone","not"],"sources":["../src/utils.spec.js"],"sourcesContent":["/**\n*\n* @licstart The following is the entire license notice for the JavaScript code in this file.\n*\n* Shared modules for Melinda's software\n*\n* Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)\n*\n* This file is part of melinda-commons-js\n*\n* melinda-commons-js 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* melinda-commons-js 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\nimport fs from 'fs';\nimport path from 'path';\nimport {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport {\n generateAuthorizationHeader, isDeletedRecord, parseBoolean, clone,\n getRecordTitle, getRecordStandardIdentifiers\n} from './utils';\n\nMarcRecord.setValidationOptions({subfieldValues: false});\n\nconst FIXTURES_PATH = path.join(__dirname, '../test-fixtures/utils');\n\ndescribe('utils', () => {\n describe('generateAuthorizationHeader', () => {\n it('Should create a proper Authorization header', () => {\n const value = generateAuthorizationHeader('foo', 'bar');\n expect(value).to.equal('Basic Zm9vOmJhcg==');\n });\n });\n\n describe('isDeletedRecord', () => {\n it('Should find the record deleted (Leader)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record1.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (DEL)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record2.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (STA)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record3.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record not deleted', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record4.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(false);\n });\n\n it('Should find the record deleted (Split)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record5.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (Deprecated)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record6.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (Split (Aleph))', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record7.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (Deprecated (Aleph))', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record8.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n });\n\n describe('parseBoolean', () => {\n it('Should parse undefined as false', () => {\n expect(parseBoolean(undefined)).to.equal(false);\n });\n\n it('Should parse zero-length string as false', () => {\n expect(parseBoolean('')).to.equal(false);\n });\n\n it('Should parse numericish value as true', () => {\n expect(parseBoolean('1')).to.equal(true);\n });\n\n it('Should parse numericush value as false', () => {\n expect(parseBoolean('0')).to.equal(false);\n });\n\n it('Should parse literal \\'false\\' value as false', () => {\n expect(parseBoolean('false')).to.equal(false);\n });\n\n it('Should parse non-numericish value as true', () => {\n expect(parseBoolean('foo')).to.equal(true);\n });\n\n it('Should parse literal \\'FALSE\\' value as false', () => {\n expect(parseBoolean('FALSE')).to.equal(false);\n });\n\n });\n\n describe('getRecordTitle', () => {\n [\n 'Should find a title',\n 'Should not find a title'\n ].forEach((descr, index) => {\n it(descr, () => {\n const title = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordTitle/title${index}.txt`), 'utf8');\n const recordData = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordTitle/record${index}.json`), 'utf8');\n const record = new MarcRecord(JSON.parse(recordData));\n\n expect(getRecordTitle(record)).to.equal(title);\n });\n });\n });\n\n describe('getRecordStandardIdentifiers', () => {\n [\n 'Should find identifiers',\n 'Should not find an identifier'\n ].forEach((descr, index) => {\n it(descr, () => {\n const identifiers = JSON.parse(fs.readFileSync(path.join(FIXTURES_PATH, `getRecordStandardIdentifiers/identifiers${index}.json`), 'utf8'));\n const recordData = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordStandardIdentifiers/record${index}.json`), 'utf8');\n const record = new MarcRecord(JSON.parse(recordData));\n\n expect(getRecordStandardIdentifiers(record)).to.eql(identifiers);\n });\n });\n });\n\n describe('clone', () => {\n it('Should clone an object', (index = '1') => {\n const obj = JSON.parse(fs.readFileSync(path.join(FIXTURES_PATH, `clone/${index}/obj.json`), 'utf8'));\n const cloned = clone(obj);\n\n expect(obj).to.not.equal(cloned);\n expect(cloned).to.eql(obj);\n });\n });\n});\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"url": "git@github.com:natlibfi/melinda-commons-js.git"
|
|
15
15
|
},
|
|
16
16
|
"license": "LGPL-3.0+",
|
|
17
|
-
"version": "12.0.3",
|
|
17
|
+
"version": "12.0.4-alpha.3",
|
|
18
18
|
"main": "./dist/index.js",
|
|
19
19
|
"engines": {
|
|
20
20
|
"node": ">=14"
|
|
@@ -34,34 +34,34 @@
|
|
|
34
34
|
"watch:test": "cross-env DEBUG=1 NODE_ENV=test nodemon -w src -w test-fixtures --exec 'npm run test:dev'"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@natlibfi/marc-record": "^7.0.
|
|
38
|
-
"@natlibfi/marc-record-serializers": "^
|
|
37
|
+
"@natlibfi/marc-record": "^7.2.0-alpha.1",
|
|
38
|
+
"@natlibfi/marc-record-serializers": "^9.0.0-alpha.4",
|
|
39
39
|
"@natlibfi/sru-client": "^5.0.1",
|
|
40
|
-
"debug": "^4.3.
|
|
41
|
-
"deep-eql": "^4.
|
|
42
|
-
"http-status": "^1.5.
|
|
43
|
-
"moment": "^2.29.
|
|
44
|
-
"nock": "^13.2.
|
|
40
|
+
"debug": "^4.3.4",
|
|
41
|
+
"deep-eql": "^4.1.0",
|
|
42
|
+
"http-status": "^1.5.2",
|
|
43
|
+
"moment": "^2.29.4",
|
|
44
|
+
"nock": "^13.2.9",
|
|
45
45
|
"node-fetch": "^2.6.7"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@babel/cli": "^7.
|
|
49
|
-
"@babel/core": "^7.
|
|
50
|
-
"@babel/eslint-parser": "^7.
|
|
51
|
-
"@babel/node": "^7.
|
|
52
|
-
"@babel/plugin-transform-runtime": "^7.
|
|
53
|
-
"@babel/preset-env": "^7.
|
|
54
|
-
"@babel/register": "^7.
|
|
55
|
-
"@natlibfi/eslint-config-melinda-backend": "^2.0.
|
|
56
|
-
"@natlibfi/fixugen-http-client": "^
|
|
48
|
+
"@babel/cli": "^7.18.10",
|
|
49
|
+
"@babel/core": "^7.18.13",
|
|
50
|
+
"@babel/eslint-parser": "^7.18.9",
|
|
51
|
+
"@babel/node": "^7.18.10",
|
|
52
|
+
"@babel/plugin-transform-runtime": "^7.18.10",
|
|
53
|
+
"@babel/preset-env": "^7.18.10",
|
|
54
|
+
"@babel/register": "^7.18.9",
|
|
55
|
+
"@natlibfi/eslint-config-melinda-backend": "^2.0.1",
|
|
56
|
+
"@natlibfi/fixugen-http-client": "^2.0.1",
|
|
57
57
|
"@natlibfi/fixura": "^2.2.1",
|
|
58
58
|
"babel-plugin-istanbul": "^6.1.1",
|
|
59
59
|
"babel-plugin-rewire": "^1.2.0",
|
|
60
60
|
"chai": "^4.3.6",
|
|
61
61
|
"cross-env": "^7.0.3",
|
|
62
|
-
"eslint": "^8.
|
|
62
|
+
"eslint": "^8.23.0",
|
|
63
63
|
"mocha": "^9.2.0",
|
|
64
|
-
"nodemon": "^2.0.
|
|
64
|
+
"nodemon": "^2.0.19",
|
|
65
65
|
"nyc": "^15.1.0"
|
|
66
66
|
},
|
|
67
67
|
"eslintConfig": {
|
package/src/error.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Shared modules for Melinda's software
|
|
6
6
|
*
|
|
7
|
-
* Copyright (C) 2018-
|
|
7
|
+
* Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
|
|
8
8
|
*
|
|
9
9
|
* This file is part of melinda-commons-js
|
|
10
10
|
*
|
package/src/error.spec.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Shared modules for Melinda's software
|
|
6
6
|
*
|
|
7
|
-
* Copyright (C) 2018-
|
|
7
|
+
* Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
|
|
8
8
|
*
|
|
9
9
|
* This file is part of melinda-commons-js
|
|
10
10
|
*
|
package/src/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Shared modules for Melinda's software
|
|
6
6
|
*
|
|
7
|
-
* Copyright (C) 2018-
|
|
7
|
+
* Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
|
|
8
8
|
*
|
|
9
9
|
* This file is part of melinda-commons-js
|
|
10
10
|
*
|
package/src/subRecordPicker.js
CHANGED
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @licstart The following is the entire license notice for the JavaScript code in this file.
|
|
4
|
+
*
|
|
5
|
+
* Shared modules for Melinda's software
|
|
6
|
+
*
|
|
7
|
+
* Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
|
|
8
|
+
*
|
|
9
|
+
* This file is part of melinda-commons-js
|
|
10
|
+
*
|
|
11
|
+
* melinda-commons-js program is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU Lesser General Public License as
|
|
13
|
+
* published by the Free Software Foundation, either version 3 of the
|
|
14
|
+
* License, or (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* melinda-commons-js is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*
|
|
24
|
+
* @licend The above is the entire license notice
|
|
25
|
+
* for the JavaScript code in this file.
|
|
26
|
+
*
|
|
27
|
+
*/
|
|
28
|
+
|
|
1
29
|
import createSruClient from '@natlibfi/sru-client';
|
|
2
30
|
import {MARCXML} from '@natlibfi/marc-record-serializers';
|
|
3
31
|
import createDebugLogger from 'debug';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Shared modules for Melinda's software
|
|
6
6
|
*
|
|
7
|
-
* Copyright (C) 2018-
|
|
7
|
+
* Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
|
|
8
8
|
*
|
|
9
9
|
* This file is part of melinda-commons-js
|
|
10
10
|
*
|
package/src/utils.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Shared modules for Melinda's software
|
|
6
6
|
*
|
|
7
|
-
* Copyright (C) 2018-
|
|
7
|
+
* Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
|
|
8
8
|
*
|
|
9
9
|
* This file is part of melinda-commons-js
|
|
10
10
|
*
|
|
@@ -62,7 +62,7 @@ export function parseBoolean(value) {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
if (Number.isNaN(Number(value))) {
|
|
65
|
-
return value.length > 0 && value !== 'false';
|
|
65
|
+
return value.length > 0 && value !== 'false' && value !== 'FALSE';
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
return Boolean(Number(value));
|
package/src/utils.spec.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Shared modules for Melinda's software
|
|
6
6
|
*
|
|
7
|
-
* Copyright (C) 2018-
|
|
7
|
+
* Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
|
|
8
8
|
*
|
|
9
9
|
* This file is part of melinda-commons-js
|
|
10
10
|
*
|
|
@@ -121,6 +121,11 @@ describe('utils', () => {
|
|
|
121
121
|
it('Should parse non-numericish value as true', () => {
|
|
122
122
|
expect(parseBoolean('foo')).to.equal(true);
|
|
123
123
|
});
|
|
124
|
+
|
|
125
|
+
it('Should parse literal \'FALSE\' value as false', () => {
|
|
126
|
+
expect(parseBoolean('FALSE')).to.equal(false);
|
|
127
|
+
});
|
|
128
|
+
|
|
124
129
|
});
|
|
125
130
|
|
|
126
131
|
describe('getRecordTitle', () => {
|