@natlibfi/melinda-commons 12.0.4-alpha.1 → 12.0.4-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,6 +5,6 @@ Shared modules for Melinda's software
5
5
 
6
6
  ## License and copyright
7
7
 
8
- Copyright (c) 2018-2021 **University Of Helsinki (The National Library Of Finland)**
8
+ Copyright (c) 2018-2022 **University Of Helsinki (The National Library Of Finland)**
9
9
 
10
10
  This project's source code is licensed under the terms of **GNU Lesser General Public License Version 3** or any later version.
package/dist/error.js CHANGED
@@ -11,7 +11,7 @@ exports.default = void 0;
11
11
  *
12
12
  * Shared modules for Melinda's software
13
13
  *
14
- * Copyright (C) 2018-2021 University Of Helsinki (The National Library Of Finland)
14
+ * Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
15
15
  *
16
16
  * This file is part of melinda-commons-js
17
17
  *
package/dist/error.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","names":["Error","constructor","status","payload","params"],"sources":["../src/error.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-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\nexport default class extends Error {\n constructor(status, payload, ...params) {\n super(params);\n this.status = status; // eslint-disable-line functional/no-this-expression\n this.payload = payload; // eslint-disable-line functional/no-this-expression\n }\n}\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEe,uBAAcA,KAAd,CAAoB;EACjCC,WAAW,CAACC,MAAD,EAASC,OAAT,EAA6B;IAAA,kCAARC,MAAQ;MAARA,MAAQ;IAAA;;IACtC,MAAMA,MAAN;IACA,KAAKF,MAAL,GAAcA,MAAd,CAFsC,CAEhB;;IACtB,KAAKC,OAAL,GAAeA,OAAf,CAHsC,CAGd;EACzB;;AALgC"}
1
+ {"version":3,"file":"error.js","names":["Error","constructor","status","payload","params"],"sources":["../src/error.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 default class extends Error {\n constructor(status, payload, ...params) {\n super(params);\n this.status = status; // eslint-disable-line functional/no-this-expression\n this.payload = payload; // eslint-disable-line functional/no-this-expression\n }\n}\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEe,uBAAcA,KAAd,CAAoB;EACjCC,WAAW,CAACC,MAAD,EAASC,OAAT,EAA6B;IAAA,kCAARC,MAAQ;MAARA,MAAQ;IAAA;;IACtC,MAAMA,MAAN;IACA,KAAKF,MAAL,GAAcA,MAAd,CAFsC,CAEhB;;IACtB,KAAKC,OAAL,GAAeA,OAAf,CAHsC,CAGd;EACzB;;AALgC"}
@@ -12,7 +12,7 @@ var _error = _interopRequireDefault(require("./error"));
12
12
  *
13
13
  * Shared modules for Melinda's software
14
14
  *
15
- * Copyright (C) 2018-2021 University Of Helsinki (The National Library Of Finland)
15
+ * Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
16
16
  *
17
17
  * This file is part of melinda-commons-js
18
18
  *
@@ -1 +1 @@
1
- {"version":3,"file":"error.spec.js","names":["describe","it","error","CommonsError","expect","to","be","an","instanceOf","Error","status","equal","payload"],"sources":["../src/error.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-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 {expect} from 'chai';\nimport CommonsError from './error';\n\ndescribe('error', () => {\n it('Should construct the expected instance', () => {\n const error = new CommonsError(200, 'foobar');\n\n expect(error).to.be.an.instanceOf(Error);\n expect(error.status).to.equal(200);\n expect(error.payload).to.equal('foobar');\n });\n});\n"],"mappings":";;;;AA4BA;;AACA;;AA7BA;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;AAKAA,QAAQ,CAAC,OAAD,EAAU,MAAM;EACtBC,EAAE,CAAC,wCAAD,EAA2C,MAAM;IACjD,MAAMC,KAAK,GAAG,IAAIC,cAAJ,CAAiB,GAAjB,EAAsB,QAAtB,CAAd;IAEA,IAAAC,YAAA,EAAOF,KAAP,EAAcG,EAAd,CAAiBC,EAAjB,CAAoBC,EAApB,CAAuBC,UAAvB,CAAkCC,KAAlC;IACA,IAAAL,YAAA,EAAOF,KAAK,CAACQ,MAAb,EAAqBL,EAArB,CAAwBM,KAAxB,CAA8B,GAA9B;IACA,IAAAP,YAAA,EAAOF,KAAK,CAACU,OAAb,EAAsBP,EAAtB,CAAyBM,KAAzB,CAA+B,QAA/B;EACD,CANC,CAAF;AAOD,CARO,CAAR"}
1
+ {"version":3,"file":"error.spec.js","names":["describe","it","error","CommonsError","expect","to","be","an","instanceOf","Error","status","equal","payload"],"sources":["../src/error.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 CommonsError from './error';\n\ndescribe('error', () => {\n it('Should construct the expected instance', () => {\n const error = new CommonsError(200, 'foobar');\n\n expect(error).to.be.an.instanceOf(Error);\n expect(error.status).to.equal(200);\n expect(error.payload).to.equal('foobar');\n });\n});\n"],"mappings":";;;;AA4BA;;AACA;;AA7BA;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;AAKAA,QAAQ,CAAC,OAAD,EAAU,MAAM;EACtBC,EAAE,CAAC,wCAAD,EAA2C,MAAM;IACjD,MAAMC,KAAK,GAAG,IAAIC,cAAJ,CAAiB,GAAjB,EAAsB,QAAtB,CAAd;IAEA,IAAAC,YAAA,EAAOF,KAAP,EAAcG,EAAd,CAAiBC,EAAjB,CAAoBC,EAApB,CAAuBC,UAAvB,CAAkCC,KAAlC;IACA,IAAAL,YAAA,EAAOF,KAAK,CAACQ,MAAb,EAAqBL,EAArB,CAAwBM,KAAxB,CAA8B,GAA9B;IACA,IAAAP,YAAA,EAAOF,KAAK,CAACU,OAAb,EAAsBP,EAAtB,CAAyBM,KAAzB,CAA+B,QAA/B;EACD,CANC,CAAF;AAOD,CARO,CAAR"}
package/dist/index.js CHANGED
@@ -48,7 +48,7 @@ var _error = _interopRequireDefault(require("./error"));
48
48
  *
49
49
  * Shared modules for Melinda's software
50
50
  *
51
- * Copyright (C) 2018-2021 University Of Helsinki (The National Library Of Finland)
51
+ * Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
52
52
  *
53
53
  * This file is part of melinda-commons-js
54
54
  *
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["MarcRecord","setValidationOptions","subfieldValues"],"sources":["../src/index.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-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 {MarcRecord} from '@natlibfi/marc-record';\n\n// Aleph creates partial subfields...\nMarcRecord.setValidationOptions({subfieldValues: false});\n\nimport {createSubrecordPicker} from './subRecordPicker';\n\nexport * from './utils';\n\nexport {default as Error} from './error';\nexport {createSubrecordPicker};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA4BA;;AAKA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AArCA;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;AAIA;AACAA,sBAAA,CAAWC,oBAAX,CAAgC;EAACC,cAAc,EAAE;AAAjB,CAAhC"}
1
+ {"version":3,"file":"index.js","names":["MarcRecord","setValidationOptions","subfieldValues"],"sources":["../src/index.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 {MarcRecord} from '@natlibfi/marc-record';\n\n// Aleph creates partial subfields...\nMarcRecord.setValidationOptions({subfieldValues: false});\n\nimport {createSubrecordPicker} from './subRecordPicker';\n\nexport * from './utils';\n\nexport {default as Error} from './error';\nexport {createSubrecordPicker};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA4BA;;AAKA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AArCA;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;AAIA;AACAA,sBAAA,CAAWC,oBAAX,CAAgC;EAACC,cAAc,EAAE;AAAjB,CAAhC"}
@@ -15,6 +15,33 @@ var _debug = _interopRequireDefault(require("debug"));
15
15
 
16
16
  var _error = require("./error");
17
17
 
18
+ /**
19
+ *
20
+ * @licstart The following is the entire license notice for the JavaScript code in this file.
21
+ *
22
+ * Shared modules for Melinda's software
23
+ *
24
+ * Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
25
+ *
26
+ * This file is part of melinda-commons-js
27
+ *
28
+ * melinda-commons-js program is free software: you can redistribute it and/or modify
29
+ * it under the terms of the GNU Lesser General Public License as
30
+ * published by the Free Software Foundation, either version 3 of the
31
+ * License, or (at your option) any later version.
32
+ *
33
+ * melinda-commons-js is distributed in the hope that it will be useful,
34
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
35
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36
+ * GNU Lesser General Public License for more details.
37
+ *
38
+ * You should have received a copy of the GNU Lesser General Public License
39
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
40
+ *
41
+ * @licend The above is the entire license notice
42
+ * for the JavaScript code in this file.
43
+ *
44
+ */
18
45
  function createSubrecordPicker(sruUrl) {
19
46
  let retrieveAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
20
47
 
@@ -1 +1 @@
1
- {"version":3,"file":"subRecordPicker.js","names":["createSubrecordPicker","sruUrl","retrieveAll","undefined","ApiError","debug","createDebugLogger","sruClient","createSruClient","url","recordSchema","readSomeSubrecords","readAllSubrecords","recordId","offset","Promise","resolve","reject","promises","searchRetrieve","startRecord","on","xmlString","push","MARCXML","from","subfieldValues","nextRecordOffset","records","all","error","err"],"sources":["../src/subRecordPicker.js"],"sourcesContent":["import createSruClient from '@natlibfi/sru-client';\nimport {MARCXML} from '@natlibfi/marc-record-serializers';\nimport createDebugLogger from 'debug';\nimport {Error as ApiError} from './error';\n\nexport function createSubrecordPicker(sruUrl, retrieveAll = false) {\n if (sruUrl === undefined) { // eslint-disable-line functional/no-conditional-statement\n throw new ApiError(400, 'Invalid sru url');\n }\n\n const debug = createDebugLogger('@natlibfi/melinda-commons:subRecordPicker');\n debug(`SRU client url: ${sruUrl}`);\n const sruClient = createSruClient({url: sruUrl, recordSchema: 'marcxml', retrieveAll});\n\n return {readSomeSubrecords, readAllSubrecords};\n\n function readSomeSubrecords(recordId, offset = 1) {\n debug(`Picking subrecords for ${recordId}`);\n return new Promise((resolve, reject) => {\n const promises = [];\n sruClient.searchRetrieve(`melinda.partsofhost=${recordId}`, {startRecord: offset})\n .on('record', xmlString => {\n promises.push(MARCXML.from(xmlString, {subfieldValues: false})); // eslint-disable-line functional/immutable-data\n })\n .on('end', async nextRecordOffset => {\n try {\n const records = await Promise.all(promises);\n resolve({nextRecordOffset, records});\n } catch (error) {\n reject(error);\n }\n })\n .on('error', err => reject(err));\n });\n }\n\n function readAllSubrecords(recordId) {\n debug(`Picking subrecords for ${recordId}`);\n return new Promise((resolve, reject) => {\n const promises = [];\n sruClient.searchRetrieve(`melinda.partsofhost=${recordId}`)\n .on('record', xmlString => {\n promises.push(MARCXML.from(xmlString, {subfieldValues: false})); // eslint-disable-line functional/immutable-data\n })\n .on('end', async () => {\n try {\n const records = await Promise.all(promises);\n resolve({records});\n } catch (error) {\n reject(error);\n }\n })\n .on('error', err => reject(err));\n });\n }\n}\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEO,SAASA,qBAAT,CAA+BC,MAA/B,EAA4D;EAAA,IAArBC,WAAqB,uEAAP,KAAO;;EACjE,IAAID,MAAM,KAAKE,SAAf,EAA0B;IAAE;IAC1B,MAAM,IAAIC,YAAJ,CAAa,GAAb,EAAkB,iBAAlB,CAAN;EACD;;EAED,MAAMC,KAAK,GAAG,IAAAC,cAAA,EAAkB,2CAAlB,CAAd;EACAD,KAAK,2BAAoBJ,MAApB,EAAL;EACA,MAAMM,SAAS,GAAG,IAAAC,kBAAA,EAAgB;IAACC,GAAG,EAAER,MAAN;IAAcS,YAAY,EAAE,SAA5B;IAAuCR;EAAvC,CAAhB,CAAlB;EAEA,OAAO;IAACS,kBAAD;IAAqBC;EAArB,CAAP;;EAEA,SAASD,kBAAT,CAA4BE,QAA5B,EAAkD;IAAA,IAAZC,MAAY,uEAAH,CAAG;IAChDT,KAAK,kCAA2BQ,QAA3B,EAAL;IACA,OAAO,IAAIE,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;MACtC,MAAMC,QAAQ,GAAG,EAAjB;MACAX,SAAS,CAACY,cAAV,+BAAgDN,QAAhD,GAA4D;QAACO,WAAW,EAAEN;MAAd,CAA5D,EACGO,EADH,CACM,QADN,EACgBC,SAAS,IAAI;QACzBJ,QAAQ,CAACK,IAAT,CAAcC,8BAAA,CAAQC,IAAR,CAAaH,SAAb,EAAwB;UAACI,cAAc,EAAE;QAAjB,CAAxB,CAAd,EADyB,CACwC;MAClE,CAHH,EAIGL,EAJH,CAIM,KAJN,EAIa,MAAMM,gBAAN,IAA0B;QACnC,IAAI;UACF,MAAMC,OAAO,GAAG,MAAMb,OAAO,CAACc,GAAR,CAAYX,QAAZ,CAAtB;UACAF,OAAO,CAAC;YAACW,gBAAD;YAAmBC;UAAnB,CAAD,CAAP;QACD,CAHD,CAGE,OAAOE,KAAP,EAAc;UACdb,MAAM,CAACa,KAAD,CAAN;QACD;MACF,CAXH,EAYGT,EAZH,CAYM,OAZN,EAYeU,GAAG,IAAId,MAAM,CAACc,GAAD,CAZ5B;IAaD,CAfM,CAAP;EAgBD;;EAED,SAASnB,iBAAT,CAA2BC,QAA3B,EAAqC;IACnCR,KAAK,kCAA2BQ,QAA3B,EAAL;IACA,OAAO,IAAIE,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;MACtC,MAAMC,QAAQ,GAAG,EAAjB;MACAX,SAAS,CAACY,cAAV,+BAAgDN,QAAhD,GACGQ,EADH,CACM,QADN,EACgBC,SAAS,IAAI;QACzBJ,QAAQ,CAACK,IAAT,CAAcC,8BAAA,CAAQC,IAAR,CAAaH,SAAb,EAAwB;UAACI,cAAc,EAAE;QAAjB,CAAxB,CAAd,EADyB,CACwC;MAClE,CAHH,EAIGL,EAJH,CAIM,KAJN,EAIa,YAAY;QACrB,IAAI;UACF,MAAMO,OAAO,GAAG,MAAMb,OAAO,CAACc,GAAR,CAAYX,QAAZ,CAAtB;UACAF,OAAO,CAAC;YAACY;UAAD,CAAD,CAAP;QACD,CAHD,CAGE,OAAOE,KAAP,EAAc;UACdb,MAAM,CAACa,KAAD,CAAN;QACD;MACF,CAXH,EAYGT,EAZH,CAYM,OAZN,EAYeU,GAAG,IAAId,MAAM,CAACc,GAAD,CAZ5B;IAaD,CAfM,CAAP;EAgBD;AACF"}
1
+ {"version":3,"file":"subRecordPicker.js","names":["createSubrecordPicker","sruUrl","retrieveAll","undefined","ApiError","debug","createDebugLogger","sruClient","createSruClient","url","recordSchema","readSomeSubrecords","readAllSubrecords","recordId","offset","Promise","resolve","reject","promises","searchRetrieve","startRecord","on","xmlString","push","MARCXML","from","subfieldValues","nextRecordOffset","records","all","error","err"],"sources":["../src/subRecordPicker.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 createSruClient from '@natlibfi/sru-client';\nimport {MARCXML} from '@natlibfi/marc-record-serializers';\nimport createDebugLogger from 'debug';\nimport {Error as ApiError} from './error';\n\nexport function createSubrecordPicker(sruUrl, retrieveAll = false) {\n if (sruUrl === undefined) { // eslint-disable-line functional/no-conditional-statement\n throw new ApiError(400, 'Invalid sru url');\n }\n\n const debug = createDebugLogger('@natlibfi/melinda-commons:subRecordPicker');\n debug(`SRU client url: ${sruUrl}`);\n const sruClient = createSruClient({url: sruUrl, recordSchema: 'marcxml', retrieveAll});\n\n return {readSomeSubrecords, readAllSubrecords};\n\n function readSomeSubrecords(recordId, offset = 1) {\n debug(`Picking subrecords for ${recordId}`);\n return new Promise((resolve, reject) => {\n const promises = [];\n sruClient.searchRetrieve(`melinda.partsofhost=${recordId}`, {startRecord: offset})\n .on('record', xmlString => {\n promises.push(MARCXML.from(xmlString, {subfieldValues: false})); // eslint-disable-line functional/immutable-data\n })\n .on('end', async nextRecordOffset => {\n try {\n const records = await Promise.all(promises);\n resolve({nextRecordOffset, records});\n } catch (error) {\n reject(error);\n }\n })\n .on('error', err => reject(err));\n });\n }\n\n function readAllSubrecords(recordId) {\n debug(`Picking subrecords for ${recordId}`);\n return new Promise((resolve, reject) => {\n const promises = [];\n sruClient.searchRetrieve(`melinda.partsofhost=${recordId}`)\n .on('record', xmlString => {\n promises.push(MARCXML.from(xmlString, {subfieldValues: false})); // eslint-disable-line functional/immutable-data\n })\n .on('end', async () => {\n try {\n const records = await Promise.all(promises);\n resolve({records});\n } catch (error) {\n reject(error);\n }\n })\n .on('error', err => reject(err));\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;AAOO,SAASA,qBAAT,CAA+BC,MAA/B,EAA4D;EAAA,IAArBC,WAAqB,uEAAP,KAAO;;EACjE,IAAID,MAAM,KAAKE,SAAf,EAA0B;IAAE;IAC1B,MAAM,IAAIC,YAAJ,CAAa,GAAb,EAAkB,iBAAlB,CAAN;EACD;;EAED,MAAMC,KAAK,GAAG,IAAAC,cAAA,EAAkB,2CAAlB,CAAd;EACAD,KAAK,2BAAoBJ,MAApB,EAAL;EACA,MAAMM,SAAS,GAAG,IAAAC,kBAAA,EAAgB;IAACC,GAAG,EAAER,MAAN;IAAcS,YAAY,EAAE,SAA5B;IAAuCR;EAAvC,CAAhB,CAAlB;EAEA,OAAO;IAACS,kBAAD;IAAqBC;EAArB,CAAP;;EAEA,SAASD,kBAAT,CAA4BE,QAA5B,EAAkD;IAAA,IAAZC,MAAY,uEAAH,CAAG;IAChDT,KAAK,kCAA2BQ,QAA3B,EAAL;IACA,OAAO,IAAIE,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;MACtC,MAAMC,QAAQ,GAAG,EAAjB;MACAX,SAAS,CAACY,cAAV,+BAAgDN,QAAhD,GAA4D;QAACO,WAAW,EAAEN;MAAd,CAA5D,EACGO,EADH,CACM,QADN,EACgBC,SAAS,IAAI;QACzBJ,QAAQ,CAACK,IAAT,CAAcC,8BAAA,CAAQC,IAAR,CAAaH,SAAb,EAAwB;UAACI,cAAc,EAAE;QAAjB,CAAxB,CAAd,EADyB,CACwC;MAClE,CAHH,EAIGL,EAJH,CAIM,KAJN,EAIa,MAAMM,gBAAN,IAA0B;QACnC,IAAI;UACF,MAAMC,OAAO,GAAG,MAAMb,OAAO,CAACc,GAAR,CAAYX,QAAZ,CAAtB;UACAF,OAAO,CAAC;YAACW,gBAAD;YAAmBC;UAAnB,CAAD,CAAP;QACD,CAHD,CAGE,OAAOE,KAAP,EAAc;UACdb,MAAM,CAACa,KAAD,CAAN;QACD;MACF,CAXH,EAYGT,EAZH,CAYM,OAZN,EAYeU,GAAG,IAAId,MAAM,CAACc,GAAD,CAZ5B;IAaD,CAfM,CAAP;EAgBD;;EAED,SAASnB,iBAAT,CAA2BC,QAA3B,EAAqC;IACnCR,KAAK,kCAA2BQ,QAA3B,EAAL;IACA,OAAO,IAAIE,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;MACtC,MAAMC,QAAQ,GAAG,EAAjB;MACAX,SAAS,CAACY,cAAV,+BAAgDN,QAAhD,GACGQ,EADH,CACM,QADN,EACgBC,SAAS,IAAI;QACzBJ,QAAQ,CAACK,IAAT,CAAcC,8BAAA,CAAQC,IAAR,CAAaH,SAAb,EAAwB;UAACI,cAAc,EAAE;QAAjB,CAAxB,CAAd,EADyB,CACwC;MAClE,CAHH,EAIGL,EAJH,CAIM,KAJN,EAIa,YAAY;QACrB,IAAI;UACF,MAAMO,OAAO,GAAG,MAAMb,OAAO,CAACc,GAAR,CAAYX,QAAZ,CAAtB;UACAF,OAAO,CAAC;YAACY;UAAD,CAAD,CAAP;QACD,CAHD,CAGE,OAAOE,KAAP,EAAc;UACdb,MAAM,CAACa,KAAD,CAAN;QACD;MACF,CAXH,EAYGT,EAZH,CAYM,OAZN,EAYeU,GAAG,IAAId,MAAM,CAACc,GAAD,CAZ5B;IAaD,CAfM,CAAP;EAgBD;AACF"}
@@ -16,7 +16,7 @@ var _fixugenHttpClient = _interopRequireDefault(require("@natlibfi/fixugen-http-
16
16
  *
17
17
  * Shared modules for Melinda's software
18
18
  *
19
- * Copyright (C) 2018-2021 University Of Helsinki (The National Library Of Finland)
19
+ * Copyright (C) 2018-2022 University Of Helsinki (The National Library Of Finland)
20
20
  *
21
21
  * This file is part of melinda-commons-js
22
22
  *
@@ -1 +1 @@
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-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 {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"}
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
@@ -18,7 +18,7 @@ exports.toAlephId = toAlephId;
18
18
  *
19
19
  * Shared modules for Melinda's software
20
20
  *
21
- * Copyright (C) 2018-2021 University Of Helsinki (The National Library Of Finland)
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
  *
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
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-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\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';\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":";;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,SAASA,2BAAT,CAAqCC,QAArC,EAA8D;EAAA,IAAfC,QAAe,uEAAJ,EAAI;EACnE,MAAMC,OAAO,GAAGC,MAAM,CAACC,IAAP,WAAeJ,QAAf,cAA2BC,QAA3B,GAAuCI,QAAvC,CAAgD,QAAhD,CAAhB;EACA,uBAAgBH,OAAhB;AACD;;AAEM,SAASI,eAAT,CAAyBC,MAAzB,EAAiC;EACtC,IAAI,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgBC,QAAhB,CAAyBD,MAAM,CAACE,MAAP,CAAc,CAAd,CAAzB,CAAJ,EAAgD;IAC9C,OAAO,IAAP;EACD;;EAED,OAAOC,QAAQ,MAAMC,QAAQ,EAA7B;;EAEA,SAASD,QAAT,GAAoB;IAClB,OAAOH,MAAM,CAACK,GAAP,CAAW,QAAX,EAAqBC,IAArB,CAA0BC,KAA1B,CAAP;;IAEA,SAASA,KAAT,OAA4B;MAAA,IAAb;QAACC;MAAD,CAAa;MAC1B,OAAOA,SAAS,CAACF,IAAV,CAAe;QAAA,IAAC;UAACG,IAAD;UAAOC;QAAP,CAAD;QAAA,OAAmBD,IAAI,KAAK,GAAT,IAAgBC,KAAK,KAAK,GAA7C;MAAA,CAAf,CAAP;IACD;EACF;;EAED,SAASN,QAAT,GAAoB;IAClB,OAAOJ,MAAM,CAACK,GAAP,CAAW,QAAX,EAAqBC,IAArB,CAA0BC,KAA1B,CAAP;;IAEA,SAASA,KAAT,QAA4B;MAAA,IAAb;QAACC;MAAD,CAAa;MAC1B,MAAMG,MAAM,GAAG,CAAC,SAAD,EAAY,eAAZ,EAA6B,oBAA7B,CAAf;MACA,OAAOH,SAAS,CAACF,IAAV,CAAe;QAAA,IAAC;UAACG,IAAD;UAAOC;QAAP,CAAD;QAAA,OAAmBD,IAAI,KAAK,GAAT,IAAgBE,MAAM,CAACV,QAAP,CAAgBS,KAAhB,CAAnC;MAAA,CAAf,CAAP;IACD;EACF;AACF;;AAEM,SAASE,YAAT,CAAsBF,KAAtB,EAA6B;EAClC,IAAIA,KAAK,KAAKG,SAAd,EAAyB;IACvB,OAAO,KAAP;EACD;;EAED,IAAIC,MAAM,CAACC,KAAP,CAAaD,MAAM,CAACJ,KAAD,CAAnB,CAAJ,EAAiC;IAC/B,OAAOA,KAAK,CAACM,MAAN,GAAe,CAAf,IAAoBN,KAAK,KAAK,OAArC;EACD;;EAED,OAAOO,OAAO,CAACH,MAAM,CAACJ,KAAD,CAAP,CAAd;AACD;;AAEM,SAASQ,cAAT,CAAwBlB,MAAxB,EAAgC;EACrC,MAAMmB,YAAY,GAAG,iBAArB;EACA,MAAMC,KAAK,GAAGpB,MAAM,CACjBK,GADW,CACP,QADO,EAEXgB,IAFW,CAENC,CAAC,IAAIA,CAAC,CAACd,SAAF,CAAYF,IAAZ,CAAiBiB,EAAE,IAAIA,EAAE,CAACd,IAAH,KAAY,GAAnC,CAFC,CAAd;;EAIA,IAAIW,KAAJ,EAAW;IACT,OAAOA,KAAK,CAACZ,SAAN,CAAgBa,IAAhB,CAAqBE,EAAE,IAAIA,EAAE,CAACd,IAAH,KAAY,GAAvC,EAA4CC,KAA5C,CACJc,OADI,CACI,IAAIC,MAAJ,YAAeN,YAAf,GAA+B,GAA/B,CADJ,EACyC,EADzC,EAEJK,OAFI,CAEI,IAAIC,MAAJ,WAAcN,YAAd,QAA+B,GAA/B,CAFJ,EAEyC,EAFzC,CAAP;EAGD;;EAED,OAAO,EAAP;AACD;;AAEM,SAASO,4BAAT,CAAsC1B,MAAtC,EAA8C;EACnD,OAAOA,MAAM,CAACK,GAAP,CAAW,wBAAX,EACJsB,MADI,CACGL,CAAC,IAAIA,CAAC,CAACd,SAAF,CAAYF,IAAZ,CAAiBiB,EAAE,IAAI,CAAC,GAAD,EAAM,GAAN,EAAWtB,QAAX,CAAoBsB,EAAE,CAACd,IAAvB,CAAvB,CADR,EAEJmB,GAFI,CAEAR,KAAK,IAAI;IACZ,MAAMS,QAAQ,GAAGT,KAAK,CAACZ,SAAN,CAAgBa,IAAhB,CAAqBE,EAAE,IAAI,CAAC,GAAD,EAAM,GAAN,EAAWtB,QAAX,CAAoBsB,EAAE,CAACd,IAAvB,CAA3B,CAAjB;IACA,OAAOoB,QAAQ,CAACnB,KAAhB;EACD,CALI,CAAP;AAMD;;AAEM,SAASoB,KAAT,CAAeC,CAAf,EAAkB;EACvB,OAAOC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAeH,CAAf,CAAX,CAAP;AACD;;AAEM,SAASI,SAAT,CAAmBC,EAAnB,EAAuB;EAC5B,OAAOA,EAAE,CAACC,QAAH,CAAY,CAAZ,EAAe,GAAf,CAAP;AACD;;AAEM,SAASC,WAAT,CAAqBF,EAArB,EAAyB;EAC9B,OAAOA,EAAE,CAACZ,OAAH,CAAW,MAAX,EAAmB,EAAnB,CAAP;AACD"}
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';\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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"}
@@ -18,7 +18,7 @@ var _utils = require("./utils");
18
18
  *
19
19
  * Shared modules for Melinda's software
20
20
  *
21
- * Copyright (C) 2018-2021 University Of Helsinki (The National Library Of Finland)
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
  *
@@ -1 +1 @@
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-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"],"mappings":"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"}
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\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.4-alpha.1",
17
+ "version": "12.0.4-alpha.2",
18
18
  "main": "./dist/index.js",
19
19
  "engines": {
20
20
  "node": ">=14"
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-2021 University Of Helsinki (The National Library Of Finland)
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-2021 University Of Helsinki (The National Library Of Finland)
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-2021 University Of Helsinki (The National Library Of Finland)
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
  *
@@ -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-2021 University Of Helsinki (The National Library Of Finland)
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-2021 University Of Helsinki (The National Library Of Finland)
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.spec.js CHANGED
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Shared modules for Melinda's software
6
6
  *
7
- * Copyright (C) 2018-2021 University Of Helsinki (The National Library Of Finland)
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/.drone.yml DELETED
@@ -1,93 +0,0 @@
1
- ---
2
- kind: pipeline
3
- type: docker
4
- name: Default
5
-
6
- trigger:
7
- event:
8
- - push
9
- - tag
10
-
11
- steps:
12
-
13
- - name: audit
14
- image: node:14
15
- commands:
16
- - npm audit --package-lock-only --production --audit-level=moderate
17
-
18
- - name: install
19
- image: node:14
20
- environment:
21
- NPM_CONFIG_IGNORE_SCRIPTS: true
22
- commands:
23
- - npm -v
24
- - npm i --no-optional
25
-
26
- - name: test
27
- image: node:14
28
- commands:
29
- - npm test
30
-
31
- - name: check-coverage
32
- image: node:14
33
- commands:
34
- - npm run coverage
35
-
36
- - name: build
37
- image: node:14
38
- commands:
39
- - npm run build
40
- - npm i --production --no-optional
41
-
42
- - name: static-security-scan
43
- image: quay.io/natlibfi/njsscan
44
- commands:
45
- - njsscan dist
46
-
47
- - name: npm
48
- image: plugins/npm
49
- settings:
50
- registry: 'https://registry.npmjs.org/'
51
- token:
52
- from_secret: npm_token
53
- when:
54
- event: tag
55
- ---
56
- kind: pipeline
57
- type: docker
58
- name: Update dependencies
59
-
60
- trigger:
61
- event:
62
- - custom
63
- branch:
64
- - master
65
-
66
- steps:
67
-
68
- - name: publish
69
- image: quay.io/natlibfi/drone-npm-git-publish
70
- settings:
71
- git_user_name: natlibfi-melinda-automation
72
- git_user_email: 65649125+natlibfi-melinda-automation@users.noreply.github.com
73
- git_ssh_key:
74
- from_secret: ssh_key
75
- git_gpg_key:
76
- from_secret: gpg_key
77
- ---
78
- kind: secret
79
- name: npm_token
80
- data: WPsq04T2v5bbdCGirHSM9ZcWVAR3aSJytpWj3HmnX3OLvakka8+TpRPykFlDZLjHBu5neoVR8RJ92fb2FpAQlQ==
81
- ---
82
- kind: secret
83
- name: ssh_key
84
- data: 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
85
- ---
86
- kind: secret
87
- name: gpg_key
88
- data: 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
89
- ---
90
- kind: signature
91
- hmac: 1b28ac0dcef2cbf55c0ea1e0741227def978107e52044edde0c80faf3ccc8f3f
92
-
93
- ...