@natlibfi/marc-record-merge 6.0.0-beta.9 → 7.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/.github/CODEOWNERS +2 -9
  2. package/.github/dependabot.yml +2 -3
  3. package/.github/workflows/melinda-node-tests.yml +2 -2
  4. package/dist/index.js +49 -4
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.spec.js +59 -0
  7. package/dist/index.spec.js.map +1 -0
  8. package/dist/reducers/copy.js +52 -62
  9. package/dist/reducers/copy.js.map +1 -1
  10. package/dist/reducers/copy.spec.js +6 -8
  11. package/dist/reducers/copy.spec.js.map +1 -1
  12. package/dist/reducers/copy2.spec.js +66 -0
  13. package/dist/reducers/copy2.spec.js.map +1 -0
  14. package/dist/reducers/index.js +0 -6
  15. package/dist/reducers/index.js.map +1 -1
  16. package/dist/reducers/select.js +43 -40
  17. package/dist/reducers/select.js.map +1 -1
  18. package/dist/reducers/select.spec.js +4 -15
  19. package/dist/reducers/select.spec.js.map +1 -1
  20. package/dist/reducers/select2.spec.js +58 -0
  21. package/dist/reducers/select2.spec.js.map +1 -0
  22. package/package.json +18 -18
  23. package/src/index.js +51 -1
  24. package/src/index.spec.js +45 -0
  25. package/src/reducers/copy.js +34 -8
  26. package/src/reducers/copy.spec.js +3 -1
  27. package/src/reducers/copy2.spec.js +55 -0
  28. package/src/reducers/select.js +31 -10
  29. package/src/reducers/select2.spec.js +49 -0
  30. package/test-fixtures/index/01/base.json +24 -0
  31. package/test-fixtures/index/01/merged.json +24 -0
  32. package/test-fixtures/index/01/metadata.json +8 -0
  33. package/test-fixtures/index/01/source.json +40 -0
  34. package/test-fixtures/index/02/base.json +24 -0
  35. package/test-fixtures/index/02/merged.json +24 -0
  36. package/test-fixtures/index/02/metadata.json +7 -0
  37. package/test-fixtures/index/02/source.json +40 -0
  38. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/03/metadata.json +6 -0
  39. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/04/base.json +20 -0
  40. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/04/merged.json +31 -0
  41. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/04/metadata.json +5 -0
  42. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/04/source.json +20 -0
  43. package/test-fixtures/reducers/copy/11 - compareWithoutTag/01/base.json +11 -0
  44. package/test-fixtures/reducers/copy/11 - compareWithoutTag/01/metadata.json +1 -2
  45. package/test-fixtures/reducers/copy/11 - compareWithoutTag/01/source.json +0 -11
  46. package/test-fixtures/reducers/copy/11 - compareWithoutTag/02/merged.json +11 -0
  47. package/test-fixtures/reducers/copy/11 - compareWithoutTag/02/metadata.json +1 -2
  48. package/test-fixtures/reducers/copy/11 - compareWithoutTag/02/source.json +6 -3
  49. package/test-fixtures/reducers/copy/11 - compareWithoutTag/04/base.json +17 -0
  50. package/test-fixtures/reducers/copy/11 - compareWithoutTag/04/merged.json +28 -0
  51. package/test-fixtures/reducers/copy/11 - compareWithoutTag/04/metadata.json +7 -0
  52. package/test-fixtures/reducers/copy/11 - compareWithoutTag/04/source.json +31 -0
  53. package/test-fixtures/reducers/copy/11 - compareWithoutTag/05/base.json +28 -0
  54. package/test-fixtures/reducers/copy/11 - compareWithoutTag/05/merged.json +28 -0
  55. package/test-fixtures/reducers/copy/11 - compareWithoutTag/05/metadata.json +7 -0
  56. package/test-fixtures/reducers/copy/11 - compareWithoutTag/05/source.json +28 -0
@@ -1,15 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  var _chai = require("chai");
4
-
5
4
  var _fixura = require("@natlibfi/fixura");
6
-
7
5
  var _copy = _interopRequireDefault(require("./copy"));
8
-
9
6
  var _fixugen = _interopRequireDefault(require("@natlibfi/fixugen"));
10
-
11
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
-
13
8
  //import createDebugLogger from 'debug'; // <---
14
9
  //const debug = createDebugLogger('@natlibfi/marc-record-merge/copy.spec.js'); // <---
15
10
  (0, _fixugen.default)({
@@ -22,13 +17,14 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
22
17
  failWhenNotFound: false
23
18
  }
24
19
  });
25
-
26
20
  function callback({
27
21
  getFixture,
28
22
  tagPatternRegExp,
29
23
  compareTagsOnly = false,
30
24
  compareWithoutTag = false,
31
25
  compareWithoutIndicators = false,
26
+ compareWithoutIndicator1 = false,
27
+ compareWithoutIndicator2 = false,
32
28
  subfieldsMustBeIdentical = false,
33
29
  copyUnless = undefined,
34
30
  excludeSubfields = undefined,
@@ -46,6 +42,8 @@ function callback({
46
42
  compareTagsOnly,
47
43
  compareWithoutTag,
48
44
  compareWithoutIndicators,
45
+ compareWithoutIndicator1,
46
+ compareWithoutIndicator2,
49
47
  copyUnless,
50
48
  subfieldsMustBeIdentical,
51
49
  excludeSubfields,
@@ -53,11 +51,11 @@ function callback({
53
51
  swapSubfieldCode,
54
52
  swapTag,
55
53
  doNotCopyIfFieldPresent
56
- })(base, source); //debug(`*** mergedRecord: `, mergedRecord); //<--
54
+ })(base, source);
55
+ //debug(`*** mergedRecord: `, mergedRecord); //<--
57
56
  //debug(`*** mergedRecord,Strfy: `, JSON.stringify(mergedRecord)); //<--
58
57
  //debug(`*** expectedRecord: `, expectedRecord); //<--
59
58
  //debug(`*** expectedRecord,Strfy: `, JSON.stringify(expectedRecord)); //<--
60
-
61
59
  (0, _chai.expect)(merged.constructor.name).not.to.eql('MarcRecord');
62
60
  (0, _chai.expect)(merged.constructor.name).to.eql('Object');
63
61
  (0, _chai.expect)(merged).to.eql(expectedRecord);
@@ -1 +1 @@
1
- {"version":3,"file":"copy.spec.js","names":["generateTests","callback","path","__dirname","useMetadataFile","recurse","fixura","reader","READERS","JSON","failWhenNotFound","getFixture","tagPatternRegExp","compareTagsOnly","compareWithoutTag","compareWithoutIndicators","subfieldsMustBeIdentical","copyUnless","undefined","excludeSubfields","dropSubfields","swapSubfieldCode","swapTag","doNotCopyIfFieldPresent","base","source","tagPattern","RegExp","expectedRecord","merged","createReducer","expect","constructor","name","not","to","eql"],"sources":["../../src/reducers/copy.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {READERS} from '@natlibfi/fixura';\nimport createReducer from './copy';\nimport generateTests from '@natlibfi/fixugen';\n\n//import createDebugLogger from 'debug'; // <---\n//const debug = createDebugLogger('@natlibfi/marc-record-merge/copy.spec.js'); // <---\n\ngenerateTests({\n callback,\n path: [__dirname, '..', '..', 'test-fixtures', 'reducers', 'copy'],\n useMetadataFile: true,\n recurse: true,\n fixura: {\n reader: READERS.JSON,\n failWhenNotFound: false\n }\n});\n\nfunction callback({\n getFixture,\n tagPatternRegExp,\n compareTagsOnly = false,\n compareWithoutTag = false,\n compareWithoutIndicators = false,\n subfieldsMustBeIdentical = false,\n copyUnless = undefined,\n excludeSubfields = undefined,\n dropSubfields = undefined,\n swapSubfieldCode = [],\n swapTag = [],\n doNotCopyIfFieldPresent = false\n}) {\n const base = getFixture('base.json');\n const source = getFixture('source.json');\n const tagPattern = new RegExp(tagPatternRegExp, 'u');\n const expectedRecord = getFixture('merged.json');\n\n const merged = createReducer({\n tagPattern, compareTagsOnly, compareWithoutTag, compareWithoutIndicators,\n copyUnless, subfieldsMustBeIdentical, excludeSubfields,\n dropSubfields, swapSubfieldCode, swapTag,\n doNotCopyIfFieldPresent\n })(base, source);\n //debug(`*** mergedRecord: `, mergedRecord); //<--\n //debug(`*** mergedRecord,Strfy: `, JSON.stringify(mergedRecord)); //<--\n //debug(`*** expectedRecord: `, expectedRecord); //<--\n //debug(`*** expectedRecord,Strfy: `, JSON.stringify(expectedRecord)); //<--\n expect(merged.constructor.name).not.to.eql('MarcRecord');\n expect(merged.constructor.name).to.eql('Object');\n expect(merged).to.eql(expectedRecord);\n}\n"],"mappings":";;AAAA;;AACA;;AACA;;AACA;;;;AAEA;AACA;AAEA,IAAAA,gBAAA,EAAc;EACZC,QADY;EAEZC,IAAI,EAAE,CAACC,SAAD,EAAY,IAAZ,EAAkB,IAAlB,EAAwB,eAAxB,EAAyC,UAAzC,EAAqD,MAArD,CAFM;EAGZC,eAAe,EAAE,IAHL;EAIZC,OAAO,EAAE,IAJG;EAKZC,MAAM,EAAE;IACNC,MAAM,EAAEC,eAAA,CAAQC,IADV;IAENC,gBAAgB,EAAE;EAFZ;AALI,CAAd;;AAWA,SAAST,QAAT,CAAkB;EAChBU,UADgB;EAEhBC,gBAFgB;EAGhBC,eAAe,GAAG,KAHF;EAIhBC,iBAAiB,GAAG,KAJJ;EAKhBC,wBAAwB,GAAG,KALX;EAMhBC,wBAAwB,GAAG,KANX;EAOhBC,UAAU,GAAGC,SAPG;EAQhBC,gBAAgB,GAAGD,SARH;EAShBE,aAAa,GAAGF,SATA;EAUhBG,gBAAgB,GAAG,EAVH;EAWhBC,OAAO,GAAG,EAXM;EAYhBC,uBAAuB,GAAG;AAZV,CAAlB,EAaG;EACD,MAAMC,IAAI,GAAGb,UAAU,CAAC,WAAD,CAAvB;EACA,MAAMc,MAAM,GAAGd,UAAU,CAAC,aAAD,CAAzB;EACA,MAAMe,UAAU,GAAG,IAAIC,MAAJ,CAAWf,gBAAX,EAA6B,GAA7B,CAAnB;EACA,MAAMgB,cAAc,GAAGjB,UAAU,CAAC,aAAD,CAAjC;EAEA,MAAMkB,MAAM,GAAG,IAAAC,aAAA,EAAc;IAC3BJ,UAD2B;IACfb,eADe;IACEC,iBADF;IACqBC,wBADrB;IAE3BE,UAF2B;IAEfD,wBAFe;IAEWG,gBAFX;IAG3BC,aAH2B;IAGZC,gBAHY;IAGMC,OAHN;IAI3BC;EAJ2B,CAAd,EAKZC,IALY,EAKNC,MALM,CAAf,CANC,CAYD;EACA;EACA;EACA;;EACA,IAAAM,YAAA,EAAOF,MAAM,CAACG,WAAP,CAAmBC,IAA1B,EAAgCC,GAAhC,CAAoCC,EAApC,CAAuCC,GAAvC,CAA2C,YAA3C;EACA,IAAAL,YAAA,EAAOF,MAAM,CAACG,WAAP,CAAmBC,IAA1B,EAAgCE,EAAhC,CAAmCC,GAAnC,CAAuC,QAAvC;EACA,IAAAL,YAAA,EAAOF,MAAP,EAAeM,EAAf,CAAkBC,GAAlB,CAAsBR,cAAtB;AACD"}
1
+ {"version":3,"file":"copy.spec.js","names":["_chai","require","_fixura","_copy","_interopRequireDefault","_fixugen","obj","__esModule","default","generateTests","callback","path","__dirname","useMetadataFile","recurse","fixura","reader","READERS","JSON","failWhenNotFound","getFixture","tagPatternRegExp","compareTagsOnly","compareWithoutTag","compareWithoutIndicators","compareWithoutIndicator1","compareWithoutIndicator2","subfieldsMustBeIdentical","copyUnless","undefined","excludeSubfields","dropSubfields","swapSubfieldCode","swapTag","doNotCopyIfFieldPresent","base","source","tagPattern","RegExp","expectedRecord","merged","createReducer","expect","constructor","name","not","to","eql"],"sources":["../../src/reducers/copy.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {READERS} from '@natlibfi/fixura';\nimport createReducer from './copy';\nimport generateTests from '@natlibfi/fixugen';\n\n//import createDebugLogger from 'debug'; // <---\n//const debug = createDebugLogger('@natlibfi/marc-record-merge/copy.spec.js'); // <---\n\ngenerateTests({\n callback,\n path: [__dirname, '..', '..', 'test-fixtures', 'reducers', 'copy'],\n useMetadataFile: true,\n recurse: true,\n fixura: {\n reader: READERS.JSON,\n failWhenNotFound: false\n }\n});\n\nfunction callback({\n getFixture,\n tagPatternRegExp,\n compareTagsOnly = false,\n compareWithoutTag = false,\n compareWithoutIndicators = false,\n compareWithoutIndicator1 = false,\n compareWithoutIndicator2 = false,\n subfieldsMustBeIdentical = false,\n copyUnless = undefined,\n excludeSubfields = undefined,\n dropSubfields = undefined,\n swapSubfieldCode = [],\n swapTag = [],\n doNotCopyIfFieldPresent = false\n}) {\n const base = getFixture('base.json');\n const source = getFixture('source.json');\n const tagPattern = new RegExp(tagPatternRegExp, 'u');\n const expectedRecord = getFixture('merged.json');\n\n const merged = createReducer({\n tagPattern, compareTagsOnly, compareWithoutTag, compareWithoutIndicators, compareWithoutIndicator1, compareWithoutIndicator2,\n copyUnless, subfieldsMustBeIdentical, excludeSubfields,\n dropSubfields, swapSubfieldCode, swapTag,\n doNotCopyIfFieldPresent\n })(base, source);\n //debug(`*** mergedRecord: `, mergedRecord); //<--\n //debug(`*** mergedRecord,Strfy: `, JSON.stringify(mergedRecord)); //<--\n //debug(`*** expectedRecord: `, expectedRecord); //<--\n //debug(`*** expectedRecord,Strfy: `, JSON.stringify(expectedRecord)); //<--\n expect(merged.constructor.name).not.to.eql('MarcRecord');\n expect(merged.constructor.name).to.eql('Object');\n expect(merged).to.eql(expectedRecord);\n}\n"],"mappings":";;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,QAAA,GAAAD,sBAAA,CAAAH,OAAA;AAA8C,SAAAG,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE9C;AACA;AAEA,IAAAG,gBAAa,EAAC;EACZC,QAAQ;EACRC,IAAI,EAAE,CAACC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC;EAClEC,eAAe,EAAE,IAAI;EACrBC,OAAO,EAAE,IAAI;EACbC,MAAM,EAAE;IACNC,MAAM,EAAEC,eAAO,CAACC,IAAI;IACpBC,gBAAgB,EAAE;EACpB;AACF,CAAC,CAAC;AAEF,SAAST,QAAQA,CAAC;EAChBU,UAAU;EACVC,gBAAgB;EAChBC,eAAe,GAAG,KAAK;EACvBC,iBAAiB,GAAG,KAAK;EACzBC,wBAAwB,GAAG,KAAK;EAChCC,wBAAwB,GAAG,KAAK;EAChCC,wBAAwB,GAAG,KAAK;EAChCC,wBAAwB,GAAG,KAAK;EAChCC,UAAU,GAAGC,SAAS;EACtBC,gBAAgB,GAAGD,SAAS;EAC5BE,aAAa,GAAGF,SAAS;EACzBG,gBAAgB,GAAG,EAAE;EACrBC,OAAO,GAAG,EAAE;EACZC,uBAAuB,GAAG;AAC5B,CAAC,EAAE;EACD,MAAMC,IAAI,GAAGf,UAAU,CAAC,WAAW,CAAC;EACpC,MAAMgB,MAAM,GAAGhB,UAAU,CAAC,aAAa,CAAC;EACxC,MAAMiB,UAAU,GAAG,IAAIC,MAAM,CAACjB,gBAAgB,EAAE,GAAG,CAAC;EACpD,MAAMkB,cAAc,GAAGnB,UAAU,CAAC,aAAa,CAAC;EAEhD,MAAMoB,MAAM,GAAG,IAAAC,aAAa,EAAC;IAC3BJ,UAAU;IAAEf,eAAe;IAAEC,iBAAiB;IAAEC,wBAAwB;IAAEC,wBAAwB;IAAEC,wBAAwB;IAC5HE,UAAU;IAAED,wBAAwB;IAAEG,gBAAgB;IACtDC,aAAa;IAAEC,gBAAgB;IAAEC,OAAO;IACxCC;EACF,CAAC,CAAC,CAACC,IAAI,EAAEC,MAAM,CAAC;EAChB;EACA;EACA;EACA;EACA,IAAAM,YAAM,EAACF,MAAM,CAACG,WAAW,CAACC,IAAI,CAAC,CAACC,GAAG,CAACC,EAAE,CAACC,GAAG,CAAC,YAAY,CAAC;EACxD,IAAAL,YAAM,EAACF,MAAM,CAACG,WAAW,CAACC,IAAI,CAAC,CAACE,EAAE,CAACC,GAAG,CAAC,QAAQ,CAAC;EAChD,IAAAL,YAAM,EAACF,MAAM,CAAC,CAACM,EAAE,CAACC,GAAG,CAACR,cAAc,CAAC;AACvC"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ var _chai = require("chai");
4
+ var _fixura = require("@natlibfi/fixura");
5
+ var _copy = _interopRequireDefault(require("./copy"));
6
+ var _fixugen = _interopRequireDefault(require("@natlibfi/fixugen"));
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ //import createDebugLogger from 'debug'; // <---
9
+ //const debug = createDebugLogger('@natlibfi/marc-record-merge/copy.spec.js'); // <---
10
+ (0, _fixugen.default)({
11
+ callback,
12
+ path: [__dirname, '..', '..', 'test-fixtures', 'reducers', 'copy'],
13
+ useMetadataFile: true,
14
+ recurse: true,
15
+ fixura: {
16
+ reader: _fixura.READERS.JSON,
17
+ failWhenNotFound: false
18
+ }
19
+ });
20
+ function callback({
21
+ getFixture,
22
+ tagPatternRegExp,
23
+ compareTagsOnly = false,
24
+ compareWithoutTag = false,
25
+ compareWithoutIndicators = false,
26
+ compareWithoutIndicator1 = false,
27
+ compareWithoutIndicator2 = false,
28
+ subfieldsMustBeIdentical = false,
29
+ copyUnless = undefined,
30
+ excludeSubfields = undefined,
31
+ dropSubfields = undefined,
32
+ swapSubfieldCode = [],
33
+ swapTag = [],
34
+ doNotCopyIfFieldPresent = false
35
+ }) {
36
+ const base = getFixture('base.json');
37
+ const source = getFixture('source.json');
38
+ const tagPattern = new RegExp(tagPatternRegExp, 'u');
39
+ const expectedRecord = getFixture('merged.json');
40
+ const merged = (0, _copy.default)({
41
+ tagPattern,
42
+ compareTagsOnly,
43
+ compareWithoutTag,
44
+ compareWithoutIndicators,
45
+ compareWithoutIndicator1,
46
+ compareWithoutIndicator2,
47
+ copyUnless,
48
+ subfieldsMustBeIdentical,
49
+ excludeSubfields,
50
+ dropSubfields,
51
+ swapSubfieldCode,
52
+ swapTag,
53
+ doNotCopyIfFieldPresent
54
+ })({
55
+ base,
56
+ source
57
+ });
58
+ //debug(`*** mergedRecord: `, mergedRecord); //<--
59
+ //debug(`*** mergedRecord,Strfy: `, JSON.stringify(mergedRecord)); //<--
60
+ //debug(`*** expectedRecord: `, expectedRecord); //<--
61
+ //debug(`*** expectedRecord,Strfy: `, JSON.stringify(expectedRecord)); //<--
62
+ (0, _chai.expect)(merged.constructor.name).not.to.eql('MarcRecord');
63
+ (0, _chai.expect)(merged.constructor.name).to.eql('Object');
64
+ (0, _chai.expect)(merged).to.eql(expectedRecord);
65
+ }
66
+ //# sourceMappingURL=copy2.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy2.spec.js","names":["_chai","require","_fixura","_copy","_interopRequireDefault","_fixugen","obj","__esModule","default","generateTests","callback","path","__dirname","useMetadataFile","recurse","fixura","reader","READERS","JSON","failWhenNotFound","getFixture","tagPatternRegExp","compareTagsOnly","compareWithoutTag","compareWithoutIndicators","compareWithoutIndicator1","compareWithoutIndicator2","subfieldsMustBeIdentical","copyUnless","undefined","excludeSubfields","dropSubfields","swapSubfieldCode","swapTag","doNotCopyIfFieldPresent","base","source","tagPattern","RegExp","expectedRecord","merged","createReducer","expect","constructor","name","not","to","eql"],"sources":["../../src/reducers/copy2.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {READERS} from '@natlibfi/fixura';\nimport createReducer from './copy';\nimport generateTests from '@natlibfi/fixugen';\n\n//import createDebugLogger from 'debug'; // <---\n//const debug = createDebugLogger('@natlibfi/marc-record-merge/copy.spec.js'); // <---\n\ngenerateTests({\n callback,\n path: [__dirname, '..', '..', 'test-fixtures', 'reducers', 'copy'],\n useMetadataFile: true,\n recurse: true,\n fixura: {\n reader: READERS.JSON,\n failWhenNotFound: false\n }\n});\n\n\nfunction callback({\n getFixture,\n tagPatternRegExp,\n compareTagsOnly = false,\n compareWithoutTag = false,\n compareWithoutIndicators = false,\n compareWithoutIndicator1 = false,\n compareWithoutIndicator2 = false,\n subfieldsMustBeIdentical = false,\n copyUnless = undefined,\n excludeSubfields = undefined,\n dropSubfields = undefined,\n swapSubfieldCode = [],\n swapTag = [],\n doNotCopyIfFieldPresent = false\n}) {\n const base = getFixture('base.json');\n const source = getFixture('source.json');\n const tagPattern = new RegExp(tagPatternRegExp, 'u');\n const expectedRecord = getFixture('merged.json');\n\n const merged = createReducer({\n tagPattern, compareTagsOnly, compareWithoutTag, compareWithoutIndicators, compareWithoutIndicator1, compareWithoutIndicator2,\n copyUnless, subfieldsMustBeIdentical, excludeSubfields,\n dropSubfields, swapSubfieldCode, swapTag,\n doNotCopyIfFieldPresent\n })({base, source});\n //debug(`*** mergedRecord: `, mergedRecord); //<--\n //debug(`*** mergedRecord,Strfy: `, JSON.stringify(mergedRecord)); //<--\n //debug(`*** expectedRecord: `, expectedRecord); //<--\n //debug(`*** expectedRecord,Strfy: `, JSON.stringify(expectedRecord)); //<--\n expect(merged.constructor.name).not.to.eql('MarcRecord');\n expect(merged.constructor.name).to.eql('Object');\n expect(merged).to.eql(expectedRecord);\n}\n"],"mappings":";;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,QAAA,GAAAD,sBAAA,CAAAH,OAAA;AAA8C,SAAAG,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE9C;AACA;AAEA,IAAAG,gBAAa,EAAC;EACZC,QAAQ;EACRC,IAAI,EAAE,CAACC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC;EAClEC,eAAe,EAAE,IAAI;EACrBC,OAAO,EAAE,IAAI;EACbC,MAAM,EAAE;IACNC,MAAM,EAAEC,eAAO,CAACC,IAAI;IACpBC,gBAAgB,EAAE;EACpB;AACF,CAAC,CAAC;AAGF,SAAST,QAAQA,CAAC;EAChBU,UAAU;EACVC,gBAAgB;EAChBC,eAAe,GAAG,KAAK;EACvBC,iBAAiB,GAAG,KAAK;EACzBC,wBAAwB,GAAG,KAAK;EAChCC,wBAAwB,GAAG,KAAK;EAChCC,wBAAwB,GAAG,KAAK;EAChCC,wBAAwB,GAAG,KAAK;EAChCC,UAAU,GAAGC,SAAS;EACtBC,gBAAgB,GAAGD,SAAS;EAC5BE,aAAa,GAAGF,SAAS;EACzBG,gBAAgB,GAAG,EAAE;EACrBC,OAAO,GAAG,EAAE;EACZC,uBAAuB,GAAG;AAC5B,CAAC,EAAE;EACD,MAAMC,IAAI,GAAGf,UAAU,CAAC,WAAW,CAAC;EACpC,MAAMgB,MAAM,GAAGhB,UAAU,CAAC,aAAa,CAAC;EACxC,MAAMiB,UAAU,GAAG,IAAIC,MAAM,CAACjB,gBAAgB,EAAE,GAAG,CAAC;EACpD,MAAMkB,cAAc,GAAGnB,UAAU,CAAC,aAAa,CAAC;EAEhD,MAAMoB,MAAM,GAAG,IAAAC,aAAa,EAAC;IAC3BJ,UAAU;IAAEf,eAAe;IAAEC,iBAAiB;IAAEC,wBAAwB;IAAEC,wBAAwB;IAAEC,wBAAwB;IAC5HE,UAAU;IAAED,wBAAwB;IAAEG,gBAAgB;IACtDC,aAAa;IAAEC,gBAAgB;IAAEC,OAAO;IACxCC;EACF,CAAC,CAAC,CAAC;IAACC,IAAI;IAAEC;EAAM,CAAC,CAAC;EAClB;EACA;EACA;EACA;EACA,IAAAM,YAAM,EAACF,MAAM,CAACG,WAAW,CAACC,IAAI,CAAC,CAACC,GAAG,CAACC,EAAE,CAACC,GAAG,CAAC,YAAY,CAAC;EACxD,IAAAL,YAAM,EAACF,MAAM,CAACG,WAAW,CAACC,IAAI,CAAC,CAACE,EAAE,CAACC,GAAG,CAAC,QAAQ,CAAC;EAChD,IAAAL,YAAM,EAACF,MAAM,CAAC,CAACM,EAAE,CAACC,GAAG,CAACR,cAAc,CAAC;AACvC"}
@@ -4,17 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _copy = _interopRequireDefault(require("./copy"));
9
-
10
8
  var _select = _interopRequireWildcard(require("./select"));
11
-
12
9
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
-
14
10
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
-
16
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
12
  var _default = {
19
13
  copy: _copy.default,
20
14
  select: _select.default,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["copy","select","strictEquality","subsetEquality"],"sources":["../../src/reducers/index.js"],"sourcesContent":["import copy from './copy';\nimport select, {strictEquality, subsetEquality} from './select';\n\nexport default {copy, select, strictEquality, subsetEquality};\n"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;eAEe;EAACA,IAAI,EAAJA,aAAD;EAAOC,MAAM,EAANA,eAAP;EAAeC,cAAc,EAAdA,sBAAf;EAA+BC,cAAc,EAAdA;AAA/B,C"}
1
+ {"version":3,"file":"index.js","names":["_copy","_interopRequireDefault","require","_select","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_default","copy","select","strictEquality","subsetEquality","exports"],"sources":["../../src/reducers/index.js"],"sourcesContent":["import copy from './copy';\nimport select, {strictEquality, subsetEquality} from './select';\n\nexport default {copy, select, strictEquality, subsetEquality};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAC,uBAAA,CAAAF,OAAA;AAAgE,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAF,wBAAAM,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAAA,SAAAf,uBAAAS,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAiB,QAAA,GAEjD;EAACC,IAAI,EAAJA,aAAI;EAAEC,MAAM,EAANA,eAAM;EAAEC,cAAc,EAAdA,sBAAc;EAAEC,cAAc,EAAdA;AAAc,CAAC;AAAAC,OAAA,CAAApB,OAAA,GAAAe,QAAA"}
@@ -6,57 +6,69 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  exports.strictEquality = strictEquality;
8
8
  exports.subsetEquality = subsetEquality;
9
-
10
9
  var _normalizeDiacritics = require("normalize-diacritics");
11
-
12
10
  var _debug = _interopRequireDefault(require("debug"));
13
-
14
11
  var _marcRecord = require("@natlibfi/marc-record");
15
-
16
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
13
  function strictEquality(subfieldA, subfieldB) {
19
14
  return subfieldA.code === subfieldB.code && subfieldA.value === subfieldB.value;
20
15
  }
21
-
22
16
  function subsetEquality(subfieldA, subfieldB) {
23
17
  return subfieldA.code === subfieldB.code && (subfieldA.value.indexOf(subfieldB.value) !== -1 || subfieldB.value.indexOf(subfieldA.value) !== -1);
24
- } // EqualityFunction can be either strictEquality or subsetEquality
25
-
26
-
18
+ }
19
+ // EqualityFunction can be either strictEquality or subsetEquality
27
20
  var _default = ({
28
21
  tagPattern,
29
- equalityFunction = strictEquality
30
- }) => (base, source) => {
31
- const debug = (0, _debug.default)('@natlibfi/marc-record-merge:select');
32
- const baseRecord = new _marcRecord.MarcRecord(base, {
22
+ equalityFunction = strictEquality,
23
+ baseValidators = {
33
24
  subfieldValues: false
34
- });
35
- const sourceRecord = new _marcRecord.MarcRecord(source, {
25
+ },
26
+ sourceValidators = {
36
27
  subfieldValues: false
37
- });
28
+ }
29
+ // eslint-disable-next-line max-statements
30
+ }) => (base, source) => {
31
+ const debug = (0, _debug.default)('@natlibfi/marc-record-merge:select');
32
+ const {
33
+ baseRecord,
34
+ sourceRecord
35
+ } = getRecordsFromParameters(base, source, baseValidators, sourceValidators);
36
+ function getRecordsFromParameters(base, source, baseValidators, sourceValidators) {
37
+ // records if we got an object ({base, source}) as a parameter
38
+ if (source === undefined && base.base !== undefined && base.source !== undefined) {
39
+ const baseRecord = new _marcRecord.MarcRecord(base.base, baseValidators);
40
+ const sourceRecord = new _marcRecord.MarcRecord(base.source, sourceValidators);
41
+ return {
42
+ baseRecord,
43
+ sourceRecord
44
+ };
45
+ }
46
+ // records if we got an non-object (base, source) as a parameter
47
+ const baseRecord = new _marcRecord.MarcRecord(base, baseValidators);
48
+ const sourceRecord = new _marcRecord.MarcRecord(source, sourceValidators);
49
+ return {
50
+ baseRecord,
51
+ sourceRecord
52
+ };
53
+ }
38
54
  const baseFields = baseRecord.get(tagPattern);
39
55
  const sourceFields = sourceRecord.get(tagPattern);
40
56
  const fieldTag = sourceFields.map(field => field.tag);
41
57
  debug(`Comparing field ${fieldTag}`);
42
58
  checkFieldType(baseFields);
43
59
  checkFieldType(sourceFields);
44
-
45
60
  if (baseFields.length > 1 || sourceFields.length > 1) {
46
61
  debug(`Multiple fields in base or source`);
47
62
  debug(`No changes to base`);
48
- return base;
63
+ return baseRecord.toObject();
49
64
  }
50
-
51
65
  const [baseField] = baseFields;
52
66
  const [sourceField] = sourceFields;
53
-
54
67
  if (baseField.tag === sourceField.tag === false) {
55
68
  debug(`Base tag ${baseField.tag} is not equal to source tag ${sourceField.tag}`);
56
69
  debug(`No changes to base`);
57
- return base;
70
+ return baseRecord.toObject();
58
71
  }
59
-
60
72
  const baseSubs = baseField.subfields;
61
73
  const sourceSubs = sourceField.subfields;
62
74
  const baseSubsNormalized = baseSubs.map(({
@@ -72,20 +84,20 @@ var _default = ({
72
84
  }) => ({
73
85
  code,
74
86
  value: normalizeSubfieldValue(value)
75
- })); // Returns the base subfields for which a matching source subfield is found
87
+ }));
76
88
 
89
+ // Returns the base subfields for which a matching source subfield is found
77
90
  const equalSubfieldsBase = baseSubsNormalized.filter(baseSubfield => sourceSubsNormalized.some(sourceSubfield => equalityFunction(baseSubfield, sourceSubfield)));
78
- debug(`equalSubfieldsBase: ${JSON.stringify(equalSubfieldsBase, undefined, 2)}`); // Returns the source subfields for which a matching base subfield is found
91
+ debug(`equalSubfieldsBase: ${JSON.stringify(equalSubfieldsBase, undefined, 2)}`);
79
92
 
93
+ // Returns the source subfields for which a matching base subfield is found
80
94
  const equalSubfieldsSource = sourceSubsNormalized.filter(sourceSubfield => baseSubsNormalized.some(baseSubfield => equalityFunction(sourceSubfield, baseSubfield)));
81
95
  debug(`equalSubfieldsSource: ${JSON.stringify(equalSubfieldsSource, undefined, 2)}`);
82
-
83
96
  if (baseSubs.length === sourceSubs.length && equalSubfieldsBase.length < baseSubs.length) {
84
97
  debug(`Base and source subfields are not equal`);
85
98
  debug(`No changes to base`);
86
- return base;
99
+ return baseRecord.toObject();
87
100
  }
88
-
89
101
  if (baseSubs.length === sourceSubs.length && equalSubfieldsBase.length === equalSubfieldsSource.length) {
90
102
  debug(`Checking subfield equality`);
91
103
  const totalSubfieldLengthBase = baseSubsNormalized.map(({
@@ -94,45 +106,36 @@ var _default = ({
94
106
  const totalSubfieldLengthSource = sourceSubsNormalized.map(({
95
107
  value
96
108
  }) => value.length).reduce((acc, value) => acc + value);
97
-
98
109
  if (totalSubfieldLengthSource > totalSubfieldLengthBase) {
99
- return replaceBasefieldWithSourcefield(base);
110
+ return replaceBasefieldWithSourcefield(baseRecord.toObject());
100
111
  }
101
112
  }
102
-
103
113
  if (sourceSubs.length > baseSubs.length && equalSubfieldsBase.length === baseSubs.length) {
104
- return replaceBasefieldWithSourcefield(base);
114
+ return replaceBasefieldWithSourcefield(baseRecord.toObject());
105
115
  }
106
-
107
116
  debug(`No changes to base`);
108
- return base;
109
-
117
+ return baseRecord.toObject();
110
118
  function replaceBasefieldWithSourcefield(base) {
111
119
  const index = base.fields.findIndex(field => field === baseField);
112
120
  base.fields.splice(index, 1, sourceField); // eslint-disable-line functional/immutable-data
113
-
114
121
  debug(`Source field is longer, replacing base with source`);
115
122
  return base;
116
123
  }
117
-
118
124
  function checkFieldType(fields) {
119
125
  const checkedFields = fields.map(field => {
120
126
  if ('value' in field) {
121
- // eslint-disable-line functional/no-conditional-statement
127
+ // eslint-disable-line functional/no-conditional-statements
122
128
  throw new Error('Invalid control field, expected data field');
123
129
  }
124
-
125
130
  return field;
126
131
  });
127
132
  return checkedFields;
128
133
  }
129
-
130
134
  function normalizeSubfieldValue(value) {
131
135
  // Regexp options: g: global search, u: unicode
132
136
  const punctuation = /[.,\-/#!?$%^&*;:{}=_`~()[\]]/gu;
133
137
  return (0, _normalizeDiacritics.normalizeSync)(value).toLowerCase().replace(punctuation, '', 'u').replace(/\s+/gu, ' ').trim();
134
138
  }
135
139
  };
136
-
137
140
  exports.default = _default;
138
141
  //# sourceMappingURL=select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","names":["strictEquality","subfieldA","subfieldB","code","value","subsetEquality","indexOf","tagPattern","equalityFunction","base","source","debug","createDebugLogger","baseRecord","MarcRecord","subfieldValues","sourceRecord","baseFields","get","sourceFields","fieldTag","map","field","tag","checkFieldType","length","baseField","sourceField","baseSubs","subfields","sourceSubs","baseSubsNormalized","normalizeSubfieldValue","sourceSubsNormalized","equalSubfieldsBase","filter","baseSubfield","some","sourceSubfield","JSON","stringify","undefined","equalSubfieldsSource","totalSubfieldLengthBase","reduce","acc","totalSubfieldLengthSource","replaceBasefieldWithSourcefield","index","fields","findIndex","splice","checkedFields","Error","punctuation","normalizeSync","toLowerCase","replace","trim"],"sources":["../../src/reducers/select.js"],"sourcesContent":["import {normalizeSync} from 'normalize-diacritics';\nimport createDebugLogger from 'debug';\nimport {MarcRecord} from '@natlibfi/marc-record';\n\nexport function strictEquality(subfieldA, subfieldB) {\n return subfieldA.code === subfieldB.code &&\n subfieldA.value === subfieldB.value;\n}\n\nexport function subsetEquality(subfieldA, subfieldB) {\n return subfieldA.code === subfieldB.code &&\n (subfieldA.value.indexOf(subfieldB.value) !== -1 || subfieldB.value.indexOf(subfieldA.value) !== -1);\n}\n// EqualityFunction can be either strictEquality or subsetEquality\nexport default ({tagPattern, equalityFunction = strictEquality}) => (base, source) => {\n const debug = createDebugLogger('@natlibfi/marc-record-merge:select');\n const baseRecord = new MarcRecord(base, {subfieldValues: false});\n const sourceRecord = new MarcRecord(source, {subfieldValues: false});\n const baseFields = baseRecord.get(tagPattern);\n const sourceFields = sourceRecord.get(tagPattern);\n const fieldTag = sourceFields.map(field => field.tag);\n debug(`Comparing field ${fieldTag}`);\n\n checkFieldType(baseFields);\n checkFieldType(sourceFields);\n\n if (baseFields.length > 1 || sourceFields.length > 1) {\n debug(`Multiple fields in base or source`);\n debug(`No changes to base`);\n return base;\n }\n const [baseField] = baseFields;\n const [sourceField] = sourceFields;\n\n if (baseField.tag === sourceField.tag === false) {\n debug(`Base tag ${baseField.tag} is not equal to source tag ${sourceField.tag}`);\n debug(`No changes to base`);\n return base;\n }\n const baseSubs = baseField.subfields;\n const sourceSubs = sourceField.subfields;\n\n const baseSubsNormalized = baseSubs\n .map(({code, value}) => ({code, value: normalizeSubfieldValue(value)}));\n\n const sourceSubsNormalized = sourceSubs\n .map(({code, value}) => ({code, value: normalizeSubfieldValue(value)}));\n\n // Returns the base subfields for which a matching source subfield is found\n const equalSubfieldsBase = baseSubsNormalized\n .filter(baseSubfield => sourceSubsNormalized\n .some(sourceSubfield => equalityFunction(baseSubfield, sourceSubfield)));\n debug(`equalSubfieldsBase: ${JSON.stringify(equalSubfieldsBase, undefined, 2)}`);\n\n // Returns the source subfields for which a matching base subfield is found\n const equalSubfieldsSource = sourceSubsNormalized\n .filter(sourceSubfield => baseSubsNormalized\n .some(baseSubfield => equalityFunction(sourceSubfield, baseSubfield)));\n debug(`equalSubfieldsSource: ${JSON.stringify(equalSubfieldsSource, undefined, 2)}`);\n\n if (baseSubs.length === sourceSubs.length && equalSubfieldsBase.length < baseSubs.length) {\n debug(`Base and source subfields are not equal`);\n debug(`No changes to base`);\n return base;\n }\n\n if (baseSubs.length === sourceSubs.length && equalSubfieldsBase.length === equalSubfieldsSource.length) {\n debug(`Checking subfield equality`);\n const totalSubfieldLengthBase = baseSubsNormalized\n .map(({value}) => value.length)\n .reduce((acc, value) => acc + value);\n const totalSubfieldLengthSource = sourceSubsNormalized\n .map(({value}) => value.length)\n .reduce((acc, value) => acc + value);\n\n if (totalSubfieldLengthSource > totalSubfieldLengthBase) {\n return replaceBasefieldWithSourcefield(base);\n }\n }\n\n if (sourceSubs.length > baseSubs.length && equalSubfieldsBase.length === baseSubs.length) {\n return replaceBasefieldWithSourcefield(base);\n }\n\n debug(`No changes to base`);\n return base;\n\n function replaceBasefieldWithSourcefield(base) {\n const index = base.fields.findIndex(field => field === baseField);\n base.fields.splice(index, 1, sourceField); // eslint-disable-line functional/immutable-data\n debug(`Source field is longer, replacing base with source`);\n return base;\n }\n\n function checkFieldType(fields) {\n const checkedFields = fields.map(field => {\n if ('value' in field) { // eslint-disable-line functional/no-conditional-statement\n throw new Error('Invalid control field, expected data field');\n }\n return field;\n });\n return checkedFields;\n }\n\n function normalizeSubfieldValue(value) {\n // Regexp options: g: global search, u: unicode\n const punctuation = /[.,\\-/#!?$%^&*;:{}=_`~()[\\]]/gu;\n return normalizeSync(value).toLowerCase().replace(punctuation, '', 'u').replace(/\\s+/gu, ' ').trim();\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"select.js","names":["_normalizeDiacritics","require","_debug","_interopRequireDefault","_marcRecord","obj","__esModule","default","strictEquality","subfieldA","subfieldB","code","value","subsetEquality","indexOf","_default","tagPattern","equalityFunction","baseValidators","subfieldValues","sourceValidators","base","source","debug","createDebugLogger","baseRecord","sourceRecord","getRecordsFromParameters","undefined","MarcRecord","baseFields","get","sourceFields","fieldTag","map","field","tag","checkFieldType","length","toObject","baseField","sourceField","baseSubs","subfields","sourceSubs","baseSubsNormalized","normalizeSubfieldValue","sourceSubsNormalized","equalSubfieldsBase","filter","baseSubfield","some","sourceSubfield","JSON","stringify","equalSubfieldsSource","totalSubfieldLengthBase","reduce","acc","totalSubfieldLengthSource","replaceBasefieldWithSourcefield","index","fields","findIndex","splice","checkedFields","Error","punctuation","normalizeSync","toLowerCase","replace","trim","exports"],"sources":["../../src/reducers/select.js"],"sourcesContent":["import {normalizeSync} from 'normalize-diacritics';\nimport createDebugLogger from 'debug';\nimport {MarcRecord} from '@natlibfi/marc-record';\n\nexport function strictEquality(subfieldA, subfieldB) {\n return subfieldA.code === subfieldB.code &&\n subfieldA.value === subfieldB.value;\n}\n\nexport function subsetEquality(subfieldA, subfieldB) {\n return subfieldA.code === subfieldB.code &&\n (subfieldA.value.indexOf(subfieldB.value) !== -1 || subfieldB.value.indexOf(subfieldA.value) !== -1);\n}\n// EqualityFunction can be either strictEquality or subsetEquality\n\nexport default ({\n tagPattern,\n equalityFunction = strictEquality,\n baseValidators = {subfieldValues: false},\n sourceValidators = {subfieldValues: false}\n// eslint-disable-next-line max-statements\n}) => (base, source) => {\n const debug = createDebugLogger('@natlibfi/marc-record-merge:select');\n\n const {baseRecord, sourceRecord} = getRecordsFromParameters(base, source, baseValidators, sourceValidators);\n\n function getRecordsFromParameters(base, source, baseValidators, sourceValidators) {\n // records if we got an object ({base, source}) as a parameter\n if (source === undefined && base.base !== undefined && base.source !== undefined) {\n const baseRecord = new MarcRecord(base.base, baseValidators);\n const sourceRecord = new MarcRecord(base.source, sourceValidators);\n return {baseRecord, sourceRecord};\n }\n // records if we got an non-object (base, source) as a parameter\n const baseRecord = new MarcRecord(base, baseValidators);\n const sourceRecord = new MarcRecord(source, sourceValidators);\n return {baseRecord, sourceRecord};\n }\n\n const baseFields = baseRecord.get(tagPattern);\n const sourceFields = sourceRecord.get(tagPattern);\n const fieldTag = sourceFields.map(field => field.tag);\n debug(`Comparing field ${fieldTag}`);\n\n checkFieldType(baseFields);\n checkFieldType(sourceFields);\n\n if (baseFields.length > 1 || sourceFields.length > 1) {\n debug(`Multiple fields in base or source`);\n debug(`No changes to base`);\n return baseRecord.toObject();\n }\n const [baseField] = baseFields;\n const [sourceField] = sourceFields;\n\n if (baseField.tag === sourceField.tag === false) {\n debug(`Base tag ${baseField.tag} is not equal to source tag ${sourceField.tag}`);\n debug(`No changes to base`);\n return baseRecord.toObject();\n }\n const baseSubs = baseField.subfields;\n const sourceSubs = sourceField.subfields;\n\n const baseSubsNormalized = baseSubs\n .map(({code, value}) => ({code, value: normalizeSubfieldValue(value)}));\n\n const sourceSubsNormalized = sourceSubs\n .map(({code, value}) => ({code, value: normalizeSubfieldValue(value)}));\n\n // Returns the base subfields for which a matching source subfield is found\n const equalSubfieldsBase = baseSubsNormalized\n .filter(baseSubfield => sourceSubsNormalized\n .some(sourceSubfield => equalityFunction(baseSubfield, sourceSubfield)));\n debug(`equalSubfieldsBase: ${JSON.stringify(equalSubfieldsBase, undefined, 2)}`);\n\n // Returns the source subfields for which a matching base subfield is found\n const equalSubfieldsSource = sourceSubsNormalized\n .filter(sourceSubfield => baseSubsNormalized\n .some(baseSubfield => equalityFunction(sourceSubfield, baseSubfield)));\n debug(`equalSubfieldsSource: ${JSON.stringify(equalSubfieldsSource, undefined, 2)}`);\n\n if (baseSubs.length === sourceSubs.length && equalSubfieldsBase.length < baseSubs.length) {\n debug(`Base and source subfields are not equal`);\n debug(`No changes to base`);\n return baseRecord.toObject();\n }\n\n if (baseSubs.length === sourceSubs.length && equalSubfieldsBase.length === equalSubfieldsSource.length) {\n debug(`Checking subfield equality`);\n const totalSubfieldLengthBase = baseSubsNormalized\n .map(({value}) => value.length)\n .reduce((acc, value) => acc + value);\n const totalSubfieldLengthSource = sourceSubsNormalized\n .map(({value}) => value.length)\n .reduce((acc, value) => acc + value);\n\n if (totalSubfieldLengthSource > totalSubfieldLengthBase) {\n return replaceBasefieldWithSourcefield(baseRecord.toObject());\n }\n }\n\n if (sourceSubs.length > baseSubs.length && equalSubfieldsBase.length === baseSubs.length) {\n return replaceBasefieldWithSourcefield(baseRecord.toObject());\n }\n\n debug(`No changes to base`);\n return baseRecord.toObject();\n\n function replaceBasefieldWithSourcefield(base) {\n const index = base.fields.findIndex(field => field === baseField);\n base.fields.splice(index, 1, sourceField); // eslint-disable-line functional/immutable-data\n debug(`Source field is longer, replacing base with source`);\n return base;\n }\n\n function checkFieldType(fields) {\n const checkedFields = fields.map(field => {\n if ('value' in field) { // eslint-disable-line functional/no-conditional-statements\n throw new Error('Invalid control field, expected data field');\n }\n return field;\n });\n return checkedFields;\n }\n\n function normalizeSubfieldValue(value) {\n // Regexp options: g: global search, u: unicode\n const punctuation = /[.,\\-/#!?$%^&*;:{}=_`~()[\\]]/gu;\n return normalizeSync(value).toLowerCase().replace(punctuation, '', 'u').replace(/\\s+/gu, ' ').trim();\n }\n};\n"],"mappings":"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"}
@@ -1,25 +1,16 @@
1
1
  "use strict";
2
2
 
3
3
  var _chai = require("chai");
4
-
5
4
  var _marcRecord = require("@natlibfi/marc-record");
6
-
7
5
  var _select = _interopRequireWildcard(require("./select"));
8
-
9
6
  var _fixura = require("@natlibfi/fixura");
10
-
11
7
  var _fixugen = _interopRequireDefault(require("@natlibfi/fixugen"));
12
-
13
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
-
15
9
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
-
17
10
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
-
19
11
  _marcRecord.MarcRecord.setValidationOptions({
20
12
  subfieldValues: false
21
13
  });
22
-
23
14
  (0, _fixugen.default)({
24
15
  callback,
25
16
  path: [__dirname, '..', '..', 'test-fixtures', 'reducers', 'select'],
@@ -30,7 +21,6 @@ _marcRecord.MarcRecord.setValidationOptions({
30
21
  failWhenNotFound: false
31
22
  }
32
23
  });
33
-
34
24
  function callback({
35
25
  getFixture,
36
26
  disabled = false,
@@ -40,23 +30,22 @@ function callback({
40
30
  }) {
41
31
  if (disabled) {
42
32
  console.log('TEST DISABLED!'); // eslint-disable-line no-console
43
-
44
33
  return;
45
- } // const base = new MarcRecord(getFixture('base.json'), {subfieldValues: false});
34
+ }
35
+ // const base = new MarcRecord(getFixture('base.json'), {subfieldValues: false});
46
36
  // const source = new MarcRecord(getFixture('source.json'), {subfieldValues: false});
47
37
 
48
-
49
38
  const base = getFixture('base.json');
50
39
  const source = getFixture('source.json');
51
40
  const tagPattern = new RegExp(tagPatternRegExp, 'u');
52
41
  const expectedRecord = getFixture('merged.json');
53
- const equalityFunction = useSubsetEquality ? _select.subsetEquality : undefined; // Bypass expected error in testing
42
+ const equalityFunction = useSubsetEquality ? _select.subsetEquality : undefined;
54
43
 
44
+ // Bypass expected error in testing
55
45
  if (expectedError) {
56
46
  (0, _chai.expect)(() => _select.default.to.throw(Error, 'control field'));
57
47
  return;
58
48
  }
59
-
60
49
  const mergedRecord = (0, _select.default)({
61
50
  tagPattern,
62
51
  equalityFunction
@@ -1 +1 @@
1
- {"version":3,"file":"select.spec.js","names":["MarcRecord","setValidationOptions","subfieldValues","generateTests","callback","path","__dirname","useMetadataFile","recurse","fixura","reader","READERS","JSON","failWhenNotFound","getFixture","disabled","tagPatternRegExp","expectedError","useSubsetEquality","console","log","base","source","tagPattern","RegExp","expectedRecord","equalityFunction","subsetEquality","undefined","expect","createReducer","to","throw","Error","mergedRecord","eql"],"sources":["../../src/reducers/select.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport createReducer, {subsetEquality} from './select';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\n\nMarcRecord.setValidationOptions({subfieldValues: false});\n\ngenerateTests({\n callback,\n path: [__dirname, '..', '..', 'test-fixtures', 'reducers', 'select'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON,\n failWhenNotFound: false\n }\n});\n\nfunction callback({\n getFixture,\n disabled = false,\n tagPatternRegExp = false,\n expectedError = false,\n useSubsetEquality = false\n}) {\n if (disabled) {\n console.log('TEST DISABLED!'); // eslint-disable-line no-console\n return;\n }\n // const base = new MarcRecord(getFixture('base.json'), {subfieldValues: false});\n // const source = new MarcRecord(getFixture('source.json'), {subfieldValues: false});\n\n const base = getFixture('base.json');\n const source = getFixture('source.json');\n\n const tagPattern = new RegExp(tagPatternRegExp, 'u');\n const expectedRecord = getFixture('merged.json');\n const equalityFunction = useSubsetEquality ? subsetEquality : undefined;\n\n // Bypass expected error in testing\n if (expectedError) {\n expect(() => createReducer.to.throw(Error, 'control field'));\n return;\n }\n\n const mergedRecord = createReducer({tagPattern, equalityFunction})(base, source);\n expect(mergedRecord).to.eql(expectedRecord);\n}\n"],"mappings":";;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEAA,sBAAA,CAAWC,oBAAX,CAAgC;EAACC,cAAc,EAAE;AAAjB,CAAhC;;AAEA,IAAAC,gBAAA,EAAc;EACZC,QADY;EAEZC,IAAI,EAAE,CAACC,SAAD,EAAY,IAAZ,EAAkB,IAAlB,EAAwB,eAAxB,EAAyC,UAAzC,EAAqD,QAArD,CAFM;EAGZC,eAAe,EAAE,IAHL;EAIZC,OAAO,EAAE,KAJG;EAKZC,MAAM,EAAE;IACNC,MAAM,EAAEC,eAAA,CAAQC,IADV;IAENC,gBAAgB,EAAE;EAFZ;AALI,CAAd;;AAWA,SAAST,QAAT,CAAkB;EAChBU,UADgB;EAEhBC,QAAQ,GAAG,KAFK;EAGhBC,gBAAgB,GAAG,KAHH;EAIhBC,aAAa,GAAG,KAJA;EAKhBC,iBAAiB,GAAG;AALJ,CAAlB,EAMG;EACD,IAAIH,QAAJ,EAAc;IACZI,OAAO,CAACC,GAAR,CAAY,gBAAZ,EADY,CACmB;;IAC/B;EACD,CAJA,CAKD;EACA;;;EAEA,MAAMC,IAAI,GAAGP,UAAU,CAAC,WAAD,CAAvB;EACA,MAAMQ,MAAM,GAAGR,UAAU,CAAC,aAAD,CAAzB;EAEA,MAAMS,UAAU,GAAG,IAAIC,MAAJ,CAAWR,gBAAX,EAA6B,GAA7B,CAAnB;EACA,MAAMS,cAAc,GAAGX,UAAU,CAAC,aAAD,CAAjC;EACA,MAAMY,gBAAgB,GAAGR,iBAAiB,GAAGS,sBAAH,GAAoBC,SAA9D,CAbC,CAeD;;EACA,IAAIX,aAAJ,EAAmB;IACjB,IAAAY,YAAA,EAAO,MAAMC,eAAA,CAAcC,EAAd,CAAiBC,KAAjB,CAAuBC,KAAvB,EAA8B,eAA9B,CAAb;IACA;EACD;;EAED,MAAMC,YAAY,GAAG,IAAAJ,eAAA,EAAc;IAACP,UAAD;IAAaG;EAAb,CAAd,EAA8CL,IAA9C,EAAoDC,MAApD,CAArB;EACA,IAAAO,YAAA,EAAOK,YAAP,EAAqBH,EAArB,CAAwBI,GAAxB,CAA4BV,cAA5B;AACD"}
1
+ {"version":3,"file":"select.spec.js","names":["_chai","require","_marcRecord","_select","_interopRequireWildcard","_fixura","_fixugen","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","MarcRecord","setValidationOptions","subfieldValues","generateTests","callback","path","__dirname","useMetadataFile","recurse","fixura","reader","READERS","JSON","failWhenNotFound","getFixture","disabled","tagPatternRegExp","expectedError","useSubsetEquality","console","log","base","source","tagPattern","RegExp","expectedRecord","equalityFunction","subsetEquality","undefined","expect","createReducer","to","throw","Error","mergedRecord","eql"],"sources":["../../src/reducers/select.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport createReducer, {subsetEquality} from './select';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\n\nMarcRecord.setValidationOptions({subfieldValues: false});\n\ngenerateTests({\n callback,\n path: [__dirname, '..', '..', 'test-fixtures', 'reducers', 'select'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON,\n failWhenNotFound: false\n }\n});\n\nfunction callback({\n getFixture,\n disabled = false,\n tagPatternRegExp = false,\n expectedError = false,\n useSubsetEquality = false\n}) {\n if (disabled) {\n console.log('TEST DISABLED!'); // eslint-disable-line no-console\n return;\n }\n // const base = new MarcRecord(getFixture('base.json'), {subfieldValues: false});\n // const source = new MarcRecord(getFixture('source.json'), {subfieldValues: false});\n\n const base = getFixture('base.json');\n const source = getFixture('source.json');\n\n const tagPattern = new RegExp(tagPatternRegExp, 'u');\n const expectedRecord = getFixture('merged.json');\n const equalityFunction = useSubsetEquality ? subsetEquality : undefined;\n\n // Bypass expected error in testing\n if (expectedError) {\n expect(() => createReducer.to.throw(Error, 'control field'));\n return;\n }\n\n const mergedRecord = createReducer({tagPattern, equalityFunction})(base, source);\n expect(mergedRecord).to.eql(expectedRecord);\n}\n"],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ var _chai = require("chai");
4
+ var _marcRecord = require("@natlibfi/marc-record");
5
+ var _select = _interopRequireWildcard(require("./select"));
6
+ var _fixura = require("@natlibfi/fixura");
7
+ var _fixugen = _interopRequireDefault(require("@natlibfi/fixugen"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ _marcRecord.MarcRecord.setValidationOptions({
12
+ subfieldValues: false
13
+ });
14
+ (0, _fixugen.default)({
15
+ callback,
16
+ path: [__dirname, '..', '..', 'test-fixtures', 'reducers', 'select'],
17
+ useMetadataFile: true,
18
+ recurse: false,
19
+ fixura: {
20
+ reader: _fixura.READERS.JSON,
21
+ failWhenNotFound: false
22
+ }
23
+ });
24
+ function callback({
25
+ getFixture,
26
+ disabled = false,
27
+ tagPatternRegExp = false,
28
+ expectedError = false,
29
+ useSubsetEquality = false
30
+ }) {
31
+ if (disabled) {
32
+ console.log('TEST DISABLED!'); // eslint-disable-line no-console
33
+ return;
34
+ }
35
+ // const base = new MarcRecord(getFixture('base.json'), {subfieldValues: false});
36
+ // const source = new MarcRecord(getFixture('source.json'), {subfieldValues: false});
37
+
38
+ const base = getFixture('base.json');
39
+ const source = getFixture('source.json');
40
+ const tagPattern = new RegExp(tagPatternRegExp, 'u');
41
+ const expectedRecord = getFixture('merged.json');
42
+ const equalityFunction = useSubsetEquality ? _select.subsetEquality : undefined;
43
+
44
+ // Bypass expected error in testing
45
+ if (expectedError) {
46
+ (0, _chai.expect)(() => _select.default.to.throw(Error, 'control field'));
47
+ return;
48
+ }
49
+ const mergedRecord = (0, _select.default)({
50
+ tagPattern,
51
+ equalityFunction
52
+ })({
53
+ base,
54
+ source
55
+ });
56
+ (0, _chai.expect)(mergedRecord).to.eql(expectedRecord);
57
+ }
58
+ //# sourceMappingURL=select2.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select2.spec.js","names":["_chai","require","_marcRecord","_select","_interopRequireWildcard","_fixura","_fixugen","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","MarcRecord","setValidationOptions","subfieldValues","generateTests","callback","path","__dirname","useMetadataFile","recurse","fixura","reader","READERS","JSON","failWhenNotFound","getFixture","disabled","tagPatternRegExp","expectedError","useSubsetEquality","console","log","base","source","tagPattern","RegExp","expectedRecord","equalityFunction","subsetEquality","undefined","expect","createReducer","to","throw","Error","mergedRecord","eql"],"sources":["../../src/reducers/select2.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport createReducer, {subsetEquality} from './select';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\n\nMarcRecord.setValidationOptions({subfieldValues: false});\n\ngenerateTests({\n callback,\n path: [__dirname, '..', '..', 'test-fixtures', 'reducers', 'select'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON,\n failWhenNotFound: false\n }\n});\n\nfunction callback({\n getFixture,\n disabled = false,\n tagPatternRegExp = false,\n expectedError = false,\n useSubsetEquality = false\n}) {\n if (disabled) {\n console.log('TEST DISABLED!'); // eslint-disable-line no-console\n return;\n }\n // const base = new MarcRecord(getFixture('base.json'), {subfieldValues: false});\n // const source = new MarcRecord(getFixture('source.json'), {subfieldValues: false});\n\n const base = getFixture('base.json');\n const source = getFixture('source.json');\n\n const tagPattern = new RegExp(tagPatternRegExp, 'u');\n const expectedRecord = getFixture('merged.json');\n const equalityFunction = useSubsetEquality ? subsetEquality : undefined;\n\n // Bypass expected error in testing\n if (expectedError) {\n expect(() => createReducer.to.throw(Error, 'control field'));\n return;\n }\n\n const mergedRecord = createReducer({tagPattern, equalityFunction})({base, source});\n expect(mergedRecord).to.eql(expectedRecord);\n}\n"],"mappings":"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"}