@natlibfi/marc-record-validators-melinda 9.0.6 → 9.0.7

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 (139) hide show
  1. package/.github/CODEOWNERS +10 -0
  2. package/.github/dependabot.yml +40 -0
  3. package/.github/workflows/melinda-node-tests.yml +61 -0
  4. package/LICENSE.txt +21 -165
  5. package/README.md +1 -1
  6. package/dist/access-rights.js +0 -27
  7. package/dist/access-rights.js.map +1 -1
  8. package/dist/access-rights.spec.js +0 -27
  9. package/dist/access-rights.spec.js.map +1 -1
  10. package/dist/double-commas.js +0 -27
  11. package/dist/double-commas.js.map +1 -1
  12. package/dist/double-commas.spec.js +0 -27
  13. package/dist/double-commas.spec.js.map +1 -1
  14. package/dist/duplicates-ind1.js +0 -27
  15. package/dist/duplicates-ind1.js.map +1 -1
  16. package/dist/duplicates-ind1.spec.js +0 -27
  17. package/dist/duplicates-ind1.spec.js.map +1 -1
  18. package/dist/empty-fields.js +0 -28
  19. package/dist/empty-fields.js.map +1 -1
  20. package/dist/empty-fields.spec.js +0 -27
  21. package/dist/empty-fields.spec.js.map +1 -1
  22. package/dist/ending-punctuation-conf.js +0 -28
  23. package/dist/ending-punctuation-conf.js.map +1 -1
  24. package/dist/ending-punctuation.js.map +1 -1
  25. package/dist/ending-punctuation.spec.js +0 -27
  26. package/dist/ending-punctuation.spec.js.map +1 -1
  27. package/dist/field-exclusion.js +0 -28
  28. package/dist/field-exclusion.js.map +1 -1
  29. package/dist/field-exclusion.spec.js +0 -27
  30. package/dist/field-exclusion.spec.js.map +1 -1
  31. package/dist/field-structure.js +0 -28
  32. package/dist/field-structure.js.map +1 -1
  33. package/dist/field-structure.spec.js +0 -27
  34. package/dist/field-structure.spec.js.map +1 -1
  35. package/dist/fields-present.js +0 -27
  36. package/dist/fields-present.js.map +1 -1
  37. package/dist/fields-present.spec.js +0 -27
  38. package/dist/fields-present.spec.js.map +1 -1
  39. package/dist/fixed-fields.js +0 -27
  40. package/dist/fixed-fields.js.map +1 -1
  41. package/dist/fixed-fields.spec.js +0 -27
  42. package/dist/fixed-fields.spec.js.map +1 -1
  43. package/dist/identical-fields.js +0 -28
  44. package/dist/identical-fields.js.map +1 -1
  45. package/dist/identical-fields.spec.js +0 -27
  46. package/dist/identical-fields.spec.js.map +1 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/isbn-issn.js +0 -27
  49. package/dist/isbn-issn.js.map +1 -1
  50. package/dist/isbn-issn.spec.js +0 -27
  51. package/dist/isbn-issn.spec.js.map +1 -1
  52. package/dist/item-language.js +0 -27
  53. package/dist/item-language.js.map +1 -1
  54. package/dist/item-language.spec.js +0 -27
  55. package/dist/item-language.spec.js.map +1 -1
  56. package/dist/punctuation/index.js +21 -1
  57. package/dist/punctuation/index.js.map +1 -1
  58. package/dist/punctuation/rules/aut.js.map +1 -1
  59. package/dist/punctuation/rules/bib.js +8 -1
  60. package/dist/punctuation/rules/bib.js.map +1 -1
  61. package/dist/punctuation/rules/index.js.map +1 -1
  62. package/dist/punctuation.spec.js +49 -140
  63. package/dist/punctuation.spec.js.map +1 -1
  64. package/dist/resolvable-ext-references-melinda.js +0 -27
  65. package/dist/resolvable-ext-references-melinda.js.map +1 -1
  66. package/dist/resolvable-ext-references-melinda.spec.js +3 -29
  67. package/dist/resolvable-ext-references-melinda.spec.js.map +1 -1
  68. package/dist/sort-tags.js +0 -27
  69. package/dist/sort-tags.js.map +1 -1
  70. package/dist/sort-tags.spec.js +0 -27
  71. package/dist/sort-tags.spec.js.map +1 -1
  72. package/dist/subfield-exclusion.js +0 -28
  73. package/dist/subfield-exclusion.js.map +1 -1
  74. package/dist/subfield-exclusion.spec.js +0 -27
  75. package/dist/subfield-exclusion.spec.js.map +1 -1
  76. package/dist/unicode-decomposition.js +0 -28
  77. package/dist/unicode-decomposition.js.map +1 -1
  78. package/dist/unicode-decomposition.spec.js +0 -27
  79. package/dist/unicode-decomposition.spec.js.map +1 -1
  80. package/dist/urn.js +0 -27
  81. package/dist/urn.js.map +1 -1
  82. package/dist/urn.spec.js +0 -27
  83. package/dist/urn.spec.js.map +1 -1
  84. package/package.json +5 -3
  85. package/src/access-rights.js +0 -29
  86. package/src/access-rights.spec.js +0 -29
  87. package/src/double-commas.js +0 -29
  88. package/src/double-commas.spec.js +0 -29
  89. package/src/duplicates-ind1.js +0 -29
  90. package/src/duplicates-ind1.spec.js +0 -29
  91. package/src/empty-fields.js +0 -28
  92. package/src/empty-fields.spec.js +0 -29
  93. package/src/ending-punctuation-conf.js +0 -29
  94. package/src/ending-punctuation.spec.js +0 -29
  95. package/src/field-exclusion.js +0 -29
  96. package/src/field-exclusion.spec.js +0 -29
  97. package/src/field-structure.js +0 -29
  98. package/src/field-structure.spec.js +0 -29
  99. package/src/fields-present.js +0 -29
  100. package/src/fields-present.spec.js +0 -29
  101. package/src/fixed-fields.js +0 -29
  102. package/src/fixed-fields.spec.js +0 -29
  103. package/src/identical-fields.js +0 -28
  104. package/src/identical-fields.spec.js +0 -29
  105. package/src/index.js +0 -29
  106. package/src/isbn-issn.js +0 -28
  107. package/src/isbn-issn.spec.js +0 -29
  108. package/src/item-language.js +0 -29
  109. package/src/item-language.spec.js +0 -29
  110. package/src/punctuation/index.js +19 -1
  111. package/src/punctuation/rules/bib.js +9 -1
  112. package/src/punctuation.spec.js +48 -147
  113. package/src/resolvable-ext-references-melinda.js +0 -28
  114. package/src/resolvable-ext-references-melinda.spec.js +2 -30
  115. package/src/sort-tags.js +0 -29
  116. package/src/sort-tags.spec.js +0 -29
  117. package/src/subfield-exclusion.js +0 -29
  118. package/src/subfield-exclusion.spec.js +0 -29
  119. package/src/unicode-decomposition.js +0 -28
  120. package/src/unicode-decomposition.spec.js +0 -29
  121. package/src/urn.js +0 -29
  122. package/src/urn.spec.js +0 -29
  123. package/test-fixtures/punctuation/01/expectedResult.json +3 -0
  124. package/test-fixtures/punctuation/01/metadata.json +4 -0
  125. package/test-fixtures/punctuation/01/record.json +18 -0
  126. package/test-fixtures/punctuation/02/expectedResult.json +3 -0
  127. package/test-fixtures/punctuation/02/metadata.json +4 -0
  128. package/test-fixtures/punctuation/02/record.json +18 -0
  129. package/test-fixtures/punctuation/03/expectedResult.json +21 -0
  130. package/test-fixtures/punctuation/03/metadata.json +5 -0
  131. package/test-fixtures/punctuation/03/record.json +19 -0
  132. package/test-fixtures/punctuation/04/expectedResult.json +21 -0
  133. package/test-fixtures/punctuation/04/metadata.json +5 -0
  134. package/test-fixtures/punctuation/04/record.json +19 -0
  135. package/test-fixtures/punctuation/05/expectedResult.json +44 -0
  136. package/test-fixtures/punctuation/05/metadata.json +5 -0
  137. package/test-fixtures/punctuation/05/record.json +42 -0
  138. package/test-fixtures/resolvable-ext-references-melinda.js +0 -27
  139. package/.drone.yml +0 -93
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/field-structure.spec.js"],"names":["expect","chai","use","chaiAsPromised","describe","it","config","tag","ind1","ind2","subfields","a","maxOccurrence","validator","to","be","an","that","has","any","keys","description","validate","error","with","property","leader","tags","valuePattern","strict","record","MarcRecord","fields","value","result","eql","valid","recordValid","code","recordInvalidMany","required","pattern","b","recordInvalidExtra","recordInvalidTooMany","recordInvalidRegExp","recordInvalidMissing","recordInvalidMissingSubfield","dependencies","recordInvalid"],"mappings":"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","sourcesContent":["/**\n*\n* @licstart The following is the entire license notice for the JavaScript code in this file.\n*\n* MARC record validators used in Melinda\n*\n* Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n*\n* This file is part of marc-record-validators-melinda\n*\n* marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n* it under the terms of the GNU Lesser General Public License as\n* published by the Free Software Foundation, either version 3 of the\n* License, or (at your option) any later version.\n*\n* marc-record-validators-melinda is distributed in the hope that it will be useful,\n* but WITHOUT ANY WARRANTY; without even the implied warranty of\n* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n* GNU Lesser General Public License for more details.\n*\n* You should have received a copy of the GNU Lesser General Public License\n* along with this program. If not, see <http://www.gnu.org/licenses/>.\n*\n* @licend The above is the entire license notice\n* for the JavaScript code in this file.\n*\n*/\n\n\nimport chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/field-structure';\n\nconst {expect} = chai;\nchai.use(chaiAsPromised);\n\n// Factory validation\ndescribe('field-structure', () => {\n it('Creates a validator', async () => {\n const config = [\n {\n tag: /^035$/u,\n ind1: /^0$/u,\n ind2: /^1$/u\n }, {\n tag: /^100$/u,\n subfields: {\n a: {maxOccurrence: 1}\n }\n }\n ];\n\n const validator = await validatorFactory(config);\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n describe('#configuration', () => {\n it('Throws an error when config array not provided', () => {\n try {\n validatorFactory();\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration array not provided');\n }\n });\n\n it('Throws an error when config array has unidentified field', () => {\n const config = [\n {\n leader: /^035$/u,\n tags: /^035$/u\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - unidentified value: tags');\n }\n });\n\n it('Throws an error when config array has field with incorrect data type', () => {\n const config = [\n {\n leader: /^035$/u,\n tag: 35\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: tag');\n }\n });\n\n it('Throws an error when config array has excluded element', () => {\n const config = [\n {\n leader: /^035$/u,\n tag: /^035$/u\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - excluded element');\n }\n });\n\n it('Throws an error when config subfields not object', () => {\n const config = [\n {\n tag: /^001$/u,\n valuePattern: /\\d+/u\n }, {\n tag: /^245$/u,\n strict: true,\n subfields: 'This should be Object'\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - subfields not object');\n }\n });\n });\n\n it('Should find the record valid because no fields match the config', async () => {\n const config = [\n {\n tag: /^FOO$/u,\n valuePattern: /bar/u\n }\n ];\n\n const record = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456'\n }\n ]\n });\n\n const validator = await validatorFactory(config);\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true});\n });\n\n // Indicators and subfields validation\n describe('#validate: Indicators and subfields', () => {\n const config = [\n {\n tag: /^035$/u,\n ind1: /^0$/u,\n ind2: /^1$/u\n }, {\n tag: /^100$/u,\n subfields: {\n a: {maxOccurrence: 1}\n }\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456'\n }, {\n tag: '035',\n ind1: '0',\n ind2: '1',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }\n ]\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }, {\n code: 'b',\n value: 'fubar'\n }\n ]\n }\n ]\n });\n\n const recordInvalidMany = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456'\n }, {\n tag: '035',\n ind1: '1',\n ind2: '1',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }\n ]\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }, {\n code: 'b',\n value: 'fubar'\n }, {\n code: 'a',\n value: 'barfoo'\n }\n ]\n }\n ]\n });\n\n it('Finds the record valid', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n\n expect(result).to.eql({valid: true});\n });\n\n it('Finds the record invalid: Too many subfields', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidMany);\n\n expect(result).to.eql({valid: false});\n });\n });\n\n // Patterns and mandatory & strict subfields\n describe('#validate: Patterns and mandatory & strict subfields', () => {\n const config = [\n {\n tag: /^001$/u,\n valuePattern: /\\d+/u\n }, {\n tag: /^245$/u,\n strict: true,\n subfields: {\n a: {required: true, maxOccurrence: 1, pattern: /\\w+/u},\n b: {maxOccurrence: 1, pattern: /\\w+/u}\n }\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456'\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }, {\n code: 'b',\n value: 'bar'\n }\n ]\n }\n ]\n });\n\n const recordInvalidExtra = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456a'\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }, {\n code: 'b',\n value: 'bar'\n }, {\n code: 'c',\n value: 'fubar'\n }\n ]\n }\n ]\n });\n\n const recordInvalidTooMany = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456a'\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }, {\n code: 'b',\n value: 'bar'\n }, {\n code: 'a',\n value: 'fubar'\n }\n ]\n }\n ]\n });\n\n const recordInvalidRegExp = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456a'\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'ää'\n }, {\n code: 'b',\n value: 'bar'\n }\n ]\n }\n ]\n });\n\n const recordInvalidMissing = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'ää'\n }, {\n code: 'b',\n value: 'bar'\n }\n ]\n }\n ]\n });\n\n const recordInvalidMissingSubfield = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456'\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'b',\n value: 'bar'\n }\n ]\n }\n ]\n });\n\n it('Finds the record valid', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n\n expect(result).to.eql({valid: true});\n });\n\n it('Finds the record invalid: Extra field in strict', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidExtra);\n\n expect(result).to.eql({valid: false});\n });\n\n it('Finds the record invalid: Too many occurances', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidTooMany);\n\n expect(result).to.eql({valid: false});\n });\n\n it('Finds the record invalid: Invalid RegExp', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidRegExp);\n\n expect(result).to.eql({valid: false});\n });\n\n it('Finds the record invalid: Missing field', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidMissing);\n\n expect(result).to.eql({valid: false});\n });\n it('Finds the record invalid: Missing subfield', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidMissingSubfield);\n\n expect(result).to.eql({valid: false});\n });\n });\n\n // Dependencies\n describe('#validate: Dependencies', () => {\n const config = [\n {\n leader: /^.{6}s/u,\n dependencies: [\n {\n tag: /^773$/u,\n subfields: {7: /^nnas$/u}\n }\n ]\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: '63ab75sfoo122myhgh',\n fields: [\n {\n tag: '001',\n value: '123456'\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }\n ]\n }, {\n tag: '773',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: '7',\n value: 'nnas'\n }, {\n code: 'w',\n value: '789101112'\n }\n ]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: '63ab75afoo122myhgh',\n fields: [\n {\n tag: '001',\n value: '123456'\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }\n ]\n }, {\n tag: '773',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: '7',\n value: 'nnas'\n }, {\n code: 'w',\n value: '789101112'\n }\n ]\n }\n ]\n });\n\n it('Finds the record valid', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n\n expect(result).to.eql({valid: true});\n });\n\n it('Finds the record invalid', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalid);\n\n expect(result).to.eql({valid: false});\n });\n\n it('Find the record valid (Dependency on leader)', async () => {\n const validator = await validatorFactory([{tag: /^007$/u, dependencies: [{leader: /^.{6}[at]/u}]}]);\n const result = await validator.validate(new MarcRecord({\n leader: '00000ccm^a22003372i^4500',\n fields: [\n {tag: '001', value: '123456'},\n {tag: '245', value: 'foobar'}\n ]\n }));\n\n expect(result).to.eql({valid: true});\n });\n\n it('Find the record invalid (Dependency on leader)', async () => {\n const validator = await validatorFactory([{tag: /^007$/u, dependencies: [{leader: /^.{6}[at]/u}]}]);\n const result = await validator.validate(new MarcRecord({\n leader: '00000cam^a22003372i^4500',\n fields: [\n {tag: '001', value: '123456'},\n {tag: '245', value: 'foobar'}\n ]\n }));\n\n expect(result).to.eql({valid: false});\n });\n });\n});\n"],"file":"field-structure.spec.js"}
1
+ {"version":3,"file":"field-structure.spec.js","names":["expect","chai","use","chaiAsPromised","describe","it","config","tag","ind1","ind2","subfields","a","maxOccurrence","validator","to","be","an","that","has","any","keys","description","validate","error","with","property","leader","tags","valuePattern","strict","record","MarcRecord","fields","value","result","eql","valid","recordValid","code","recordInvalidMany","required","pattern","b","recordInvalidExtra","recordInvalidTooMany","recordInvalidRegExp","recordInvalidMissing","recordInvalidMissingSubfield","dependencies","recordInvalid"],"sources":["../src/field-structure.spec.js"],"sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/field-structure';\n\nconst {expect} = chai;\nchai.use(chaiAsPromised);\n\n// Factory validation\ndescribe('field-structure', () => {\n it('Creates a validator', async () => {\n const config = [\n {\n tag: /^035$/u,\n ind1: /^0$/u,\n ind2: /^1$/u\n }, {\n tag: /^100$/u,\n subfields: {\n a: {maxOccurrence: 1}\n }\n }\n ];\n\n const validator = await validatorFactory(config);\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n describe('#configuration', () => {\n it('Throws an error when config array not provided', () => {\n try {\n validatorFactory();\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration array not provided');\n }\n });\n\n it('Throws an error when config array has unidentified field', () => {\n const config = [\n {\n leader: /^035$/u,\n tags: /^035$/u\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - unidentified value: tags');\n }\n });\n\n it('Throws an error when config array has field with incorrect data type', () => {\n const config = [\n {\n leader: /^035$/u,\n tag: 35\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: tag');\n }\n });\n\n it('Throws an error when config array has excluded element', () => {\n const config = [\n {\n leader: /^035$/u,\n tag: /^035$/u\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - excluded element');\n }\n });\n\n it('Throws an error when config subfields not object', () => {\n const config = [\n {\n tag: /^001$/u,\n valuePattern: /\\d+/u\n }, {\n tag: /^245$/u,\n strict: true,\n subfields: 'This should be Object'\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - subfields not object');\n }\n });\n });\n\n it('Should find the record valid because no fields match the config', async () => {\n const config = [\n {\n tag: /^FOO$/u,\n valuePattern: /bar/u\n }\n ];\n\n const record = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456'\n }\n ]\n });\n\n const validator = await validatorFactory(config);\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true});\n });\n\n // Indicators and subfields validation\n describe('#validate: Indicators and subfields', () => {\n const config = [\n {\n tag: /^035$/u,\n ind1: /^0$/u,\n ind2: /^1$/u\n }, {\n tag: /^100$/u,\n subfields: {\n a: {maxOccurrence: 1}\n }\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456'\n }, {\n tag: '035',\n ind1: '0',\n ind2: '1',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }\n ]\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }, {\n code: 'b',\n value: 'fubar'\n }\n ]\n }\n ]\n });\n\n const recordInvalidMany = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456'\n }, {\n tag: '035',\n ind1: '1',\n ind2: '1',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }\n ]\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }, {\n code: 'b',\n value: 'fubar'\n }, {\n code: 'a',\n value: 'barfoo'\n }\n ]\n }\n ]\n });\n\n it('Finds the record valid', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n\n expect(result).to.eql({valid: true});\n });\n\n it('Finds the record invalid: Too many subfields', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidMany);\n\n expect(result).to.eql({valid: false});\n });\n });\n\n // Patterns and mandatory & strict subfields\n describe('#validate: Patterns and mandatory & strict subfields', () => {\n const config = [\n {\n tag: /^001$/u,\n valuePattern: /\\d+/u\n }, {\n tag: /^245$/u,\n strict: true,\n subfields: {\n a: {required: true, maxOccurrence: 1, pattern: /\\w+/u},\n b: {maxOccurrence: 1, pattern: /\\w+/u}\n }\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456'\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }, {\n code: 'b',\n value: 'bar'\n }\n ]\n }\n ]\n });\n\n const recordInvalidExtra = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456a'\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }, {\n code: 'b',\n value: 'bar'\n }, {\n code: 'c',\n value: 'fubar'\n }\n ]\n }\n ]\n });\n\n const recordInvalidTooMany = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456a'\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }, {\n code: 'b',\n value: 'bar'\n }, {\n code: 'a',\n value: 'fubar'\n }\n ]\n }\n ]\n });\n\n const recordInvalidRegExp = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456a'\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'ää'\n }, {\n code: 'b',\n value: 'bar'\n }\n ]\n }\n ]\n });\n\n const recordInvalidMissing = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'ää'\n }, {\n code: 'b',\n value: 'bar'\n }\n ]\n }\n ]\n });\n\n const recordInvalidMissingSubfield = new MarcRecord({\n leader: '',\n fields: [\n {\n tag: '001',\n value: '123456'\n }, {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'bar'\n }\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'b',\n value: 'bar'\n }\n ]\n }\n ]\n });\n\n it('Finds the record valid', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n\n expect(result).to.eql({valid: true});\n });\n\n it('Finds the record invalid: Extra field in strict', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidExtra);\n\n expect(result).to.eql({valid: false});\n });\n\n it('Finds the record invalid: Too many occurances', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidTooMany);\n\n expect(result).to.eql({valid: false});\n });\n\n it('Finds the record invalid: Invalid RegExp', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidRegExp);\n\n expect(result).to.eql({valid: false});\n });\n\n it('Finds the record invalid: Missing field', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidMissing);\n\n expect(result).to.eql({valid: false});\n });\n it('Finds the record invalid: Missing subfield', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidMissingSubfield);\n\n expect(result).to.eql({valid: false});\n });\n });\n\n // Dependencies\n describe('#validate: Dependencies', () => {\n const config = [\n {\n leader: /^.{6}s/u,\n dependencies: [\n {\n tag: /^773$/u,\n subfields: {7: /^nnas$/u}\n }\n ]\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: '63ab75sfoo122myhgh',\n fields: [\n {\n tag: '001',\n value: '123456'\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }\n ]\n }, {\n tag: '773',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: '7',\n value: 'nnas'\n }, {\n code: 'w',\n value: '789101112'\n }\n ]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: '63ab75afoo122myhgh',\n fields: [\n {\n tag: '001',\n value: '123456'\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }\n ]\n }, {\n tag: '773',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: '7',\n value: 'nnas'\n }, {\n code: 'w',\n value: '789101112'\n }\n ]\n }\n ]\n });\n\n it('Finds the record valid', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n\n expect(result).to.eql({valid: true});\n });\n\n it('Finds the record invalid', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalid);\n\n expect(result).to.eql({valid: false});\n });\n\n it('Find the record valid (Dependency on leader)', async () => {\n const validator = await validatorFactory([{tag: /^007$/u, dependencies: [{leader: /^.{6}[at]/u}]}]);\n const result = await validator.validate(new MarcRecord({\n leader: '00000ccm^a22003372i^4500',\n fields: [\n {tag: '001', value: '123456'},\n {tag: '245', value: 'foobar'}\n ]\n }));\n\n expect(result).to.eql({valid: true});\n });\n\n it('Find the record invalid (Dependency on leader)', async () => {\n const validator = await validatorFactory([{tag: /^007$/u, dependencies: [{leader: /^.{6}[at]/u}]}]);\n const result = await validator.validate(new MarcRecord({\n leader: '00000cam^a22003372i^4500',\n fields: [\n {tag: '001', value: '123456'},\n {tag: '245', value: 'foobar'}\n ]\n }));\n\n expect(result).to.eql({valid: false});\n });\n });\n});\n"],"mappings":"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"}
@@ -5,33 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = _default;
7
7
 
8
- /**
9
- *
10
- * @licstart The following is the entire license notice for the JavaScript code in this file.
11
- *
12
- * MARC record validators used in Melinda
13
- *
14
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
15
- *
16
- * This file is part of marc-record-validators-melinda
17
- *
18
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
19
- * it under the terms of the GNU Lesser General Public License as
20
- * published by the Free Software Foundation, either version 3 of the
21
- * License, or (at your option) any later version.
22
- *
23
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
24
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
25
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26
- * GNU Lesser General Public License for more details.
27
- *
28
- * You should have received a copy of the GNU Lesser General Public License
29
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
30
- *
31
- * @licend The above is the entire license notice
32
- * for the JavaScript code in this file.
33
- *
34
- */
35
8
  function _default(tagPatterns) {
36
9
  if (Array.isArray(tagPatterns)) {
37
10
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/fields-present.js"],"names":["tagPatterns","Array","isArray","description","validate","Error","record","missingFields","map","pattern","result","fields","find","field","test","tag","undefined","isEmpty","every","index","errorMessage","concat","join","valid","messages"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGe,kBAAUA,WAAV,EAAuB;AACpC,MAAIC,KAAK,CAACC,OAAN,CAAcF,WAAd,CAAJ,EAAgC;AAC9B,WAAO;AACLG,MAAAA,WAAW,EACT,gEAFG;AAGLC,MAAAA;AAHK,KAAP;AAKD;;AAED,QAAM,IAAIC,KAAJ,CAAU,+BAAV,CAAN;;AAEA,WAASD,QAAT,CAAkBE,MAAlB,EAA0B;AACxB,UAAMC,aAAa,GAAGP,WAAW,CAACQ,GAAZ,CAAgBC,OAAO,IAAI;AAC/C,YAAMC,MAAM,GAAGJ,MAAM,CAACK,MAAP,CAAcC,IAAd,CAAmBC,KAAK,IAAIJ,OAAO,CAACK,IAAR,CAAaD,KAAK,CAACE,GAAnB,CAA5B,CAAf;AACA,aAAOL,MAAM,GAAGM,SAAH,GAAeP,OAA5B;AACD,KAHqB,CAAtB;AAIA,UAAMQ,OAAO,GAAGV,aAAa,CAACW,KAAd,CAAoBC,KAAK,IAAIA,KAAK,KAAKH,SAAvC,CAAhB;AACA,QAAII,YAAY,GAAG,CAAC,sEAAD,CAAnB,CANwB,CAMqE;;AAC7FA,IAAAA,YAAY,GAAGA,YAAY,CAACC,MAAb,CAAoBd,aAApB,EAAmCe,IAAnC,CAAwC,GAAxC,CAAf;AAEA,WAAOL,OAAO,GAAG;AAACM,MAAAA,KAAK,EAAE,IAAR;AAAcC,MAAAA,QAAQ,EAAE;AAAxB,KAAH,GAAiC;AAACD,MAAAA,KAAK,EAAE,KAAR;AAAeC,MAAAA,QAAQ,EAAE,CAACJ,YAAD;AAAzB,KAA/C;AACD;AACF","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nexport default function (tagPatterns) {\n if (Array.isArray(tagPatterns)) {\n return {\n description:\n 'Checks whether the configured fields are present in the record',\n validate\n };\n }\n\n throw new Error('No tag pattern array provided');\n\n function validate(record) {\n const missingFields = tagPatterns.map(pattern => {\n const result = record.fields.find(field => pattern.test(field.tag));\n return result ? undefined : pattern;\n });\n const isEmpty = missingFields.every(index => index === undefined);\n let errorMessage = ['The following tag patterns are not present in the record tag field: ']; // eslint-disable-line functional/no-let\n errorMessage = errorMessage.concat(missingFields).join(' ');\n\n return isEmpty ? {valid: true, messages: []} : {valid: false, messages: [errorMessage]};\n }\n}\n"],"file":"fields-present.js"}
1
+ {"version":3,"file":"fields-present.js","names":["tagPatterns","Array","isArray","description","validate","Error","record","missingFields","map","pattern","result","fields","find","field","test","tag","undefined","isEmpty","every","index","errorMessage","concat","join","valid","messages"],"sources":["../src/fields-present.js"],"sourcesContent":["export default function (tagPatterns) {\n if (Array.isArray(tagPatterns)) {\n return {\n description:\n 'Checks whether the configured fields are present in the record',\n validate\n };\n }\n\n throw new Error('No tag pattern array provided');\n\n function validate(record) {\n const missingFields = tagPatterns.map(pattern => {\n const result = record.fields.find(field => pattern.test(field.tag));\n return result ? undefined : pattern;\n });\n const isEmpty = missingFields.every(index => index === undefined);\n let errorMessage = ['The following tag patterns are not present in the record tag field: ']; // eslint-disable-line functional/no-let\n errorMessage = errorMessage.concat(missingFields).join(' ');\n\n return isEmpty ? {valid: true, messages: []} : {valid: false, messages: [errorMessage]};\n }\n}\n"],"mappings":";;;;;;;AAAe,kBAAUA,WAAV,EAAuB;EACpC,IAAIC,KAAK,CAACC,OAAN,CAAcF,WAAd,CAAJ,EAAgC;IAC9B,OAAO;MACLG,WAAW,EACT,gEAFG;MAGLC;IAHK,CAAP;EAKD;;EAED,MAAM,IAAIC,KAAJ,CAAU,+BAAV,CAAN;;EAEA,SAASD,QAAT,CAAkBE,MAAlB,EAA0B;IACxB,MAAMC,aAAa,GAAGP,WAAW,CAACQ,GAAZ,CAAgBC,OAAO,IAAI;MAC/C,MAAMC,MAAM,GAAGJ,MAAM,CAACK,MAAP,CAAcC,IAAd,CAAmBC,KAAK,IAAIJ,OAAO,CAACK,IAAR,CAAaD,KAAK,CAACE,GAAnB,CAA5B,CAAf;MACA,OAAOL,MAAM,GAAGM,SAAH,GAAeP,OAA5B;IACD,CAHqB,CAAtB;IAIA,MAAMQ,OAAO,GAAGV,aAAa,CAACW,KAAd,CAAoBC,KAAK,IAAIA,KAAK,KAAKH,SAAvC,CAAhB;IACA,IAAII,YAAY,GAAG,CAAC,sEAAD,CAAnB,CANwB,CAMqE;;IAC7FA,YAAY,GAAGA,YAAY,CAACC,MAAb,CAAoBd,aAApB,EAAmCe,IAAnC,CAAwC,GAAxC,CAAf;IAEA,OAAOL,OAAO,GAAG;MAACM,KAAK,EAAE,IAAR;MAAcC,QAAQ,EAAE;IAAxB,CAAH,GAAiC;MAACD,KAAK,EAAE,KAAR;MAAeC,QAAQ,EAAE,CAACJ,YAAD;IAAzB,CAA/C;EACD;AACF"}
@@ -10,33 +10,6 @@ var _fieldsPresent = _interopRequireDefault(require("../src/fields-present"));
10
10
 
11
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
12
 
13
- /**
14
- *
15
- * @licstart The following is the entire license notice for the JavaScript code in this file.
16
- *
17
- * MARC record validators used in Melinda
18
- *
19
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
20
- *
21
- * This file is part of marc-record-validators-melinda
22
- *
23
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
24
- * it under the terms of the GNU Lesser General Public License as
25
- * published by the Free Software Foundation, either version 3 of the
26
- * License, or (at your option) any later version.
27
- *
28
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
29
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
30
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31
- * GNU Lesser General Public License for more details.
32
- *
33
- * You should have received a copy of the GNU Lesser General Public License
34
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
35
- *
36
- * @licend The above is the entire license notice
37
- * for the JavaScript code in this file.
38
- *
39
- */
40
13
  const {
41
14
  expect
42
15
  } = _chai.default;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/fields-present.spec.js"],"names":["expect","chai","use","chaiAsPromised","describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","error","with","property","tagPatterns","record","MarcRecord","fields","tag","ind1","ind2","subfields","code","value","result","eql","valid","messages"],"mappings":"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","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nimport chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/fields-present';\n\nconst {expect} = chai;\nchai.use(chaiAsPromised);\n\ndescribe('fields-present', () => {\n it('Creates a validator', async () => {\n const validator = await validatorFactory([/^500$/u, /^400$/u]);\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n it('Throws an error when tagPatterns not provided', () => {\n try {\n validatorFactory();\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'No tag pattern array provided');\n }\n });\n\n describe('#validate', () => {\n it('Finds the record valid', async () => {\n const tagPatterns = [/^5..$/u, /^FOO$/u];\n const validator = await validatorFactory(tagPatterns);\n const record = new MarcRecord({\n fields: [\n {\n tag: '500',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n },\n {\n tag: 'FOO',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true, messages: []});\n });\n it('Finds the record valid', async () => {\n const tagPatterns = [/^(020|022|024)$/u]; // eslint-disable-line\n const validator = await validatorFactory(tagPatterns);\n const record = new MarcRecord({\n fields: [\n {\n tag: '020',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n },\n {\n tag: '040',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true, messages: []});\n });\n it('Finds the record invalid', async () => {\n const tagPatterns = [/^5..$/u, /^FOO$/u];\n const validator = await validatorFactory(tagPatterns);\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n },\n {\n tag: '500',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n },\n {\n tag: 'BAR',\n ind1: '1',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: ['The following tag patterns are not present in the record tag field: /^FOO$/u']});\n });\n });\n});\n"],"file":"fields-present.spec.js"}
1
+ {"version":3,"file":"fields-present.spec.js","names":["expect","chai","use","chaiAsPromised","describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","error","with","property","tagPatterns","record","MarcRecord","fields","tag","ind1","ind2","subfields","code","value","result","eql","valid","messages"],"sources":["../src/fields-present.spec.js"],"sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/fields-present';\n\nconst {expect} = chai;\nchai.use(chaiAsPromised);\n\ndescribe('fields-present', () => {\n it('Creates a validator', async () => {\n const validator = await validatorFactory([/^500$/u, /^400$/u]);\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n it('Throws an error when tagPatterns not provided', () => {\n try {\n validatorFactory();\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'No tag pattern array provided');\n }\n });\n\n describe('#validate', () => {\n it('Finds the record valid', async () => {\n const tagPatterns = [/^5..$/u, /^FOO$/u];\n const validator = await validatorFactory(tagPatterns);\n const record = new MarcRecord({\n fields: [\n {\n tag: '500',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n },\n {\n tag: 'FOO',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true, messages: []});\n });\n it('Finds the record valid', async () => {\n const tagPatterns = [/^(020|022|024)$/u]; // eslint-disable-line\n const validator = await validatorFactory(tagPatterns);\n const record = new MarcRecord({\n fields: [\n {\n tag: '020',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n },\n {\n tag: '040',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true, messages: []});\n });\n it('Finds the record invalid', async () => {\n const tagPatterns = [/^5..$/u, /^FOO$/u];\n const validator = await validatorFactory(tagPatterns);\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n },\n {\n tag: '500',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n },\n {\n tag: 'BAR',\n ind1: '1',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: ['The following tag patterns are not present in the record tag field: /^FOO$/u']});\n });\n });\n});\n"],"mappings":"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"}
@@ -5,33 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = _default;
7
7
 
8
- /**
9
- *
10
- * @licstart The following is the entire license notice for the JavaScript code in this file.
11
- *
12
- * MARC record validators used in Melinda
13
- *
14
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
15
- *
16
- * This file is part of marc-record-validators-melinda
17
- *
18
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
19
- * it under the terms of the GNU Lesser General Public License as
20
- * published by the Free Software Foundation, either version 3 of the
21
- * License, or (at your option) any later version.
22
- *
23
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
24
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
25
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26
- * GNU Lesser General Public License for more details.
27
- *
28
- * You should have received a copy of the GNU Lesser General Public License
29
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
30
- *
31
- * @licend The above is the entire license notice
32
- * for the JavaScript code in this file.
33
- *
34
- */
35
8
  function _default(configuration) {
36
9
  if (Array.isArray(configuration)) {
37
10
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/fixed-fields.js"],"names":["configuration","Array","isArray","description","validate","Error","record","messages","reduce","item","results","leader","validateField","get","tag","map","f","value","length","concat","acc","includes","valid","spec","messagePrefix","rules","rule","ruleIndex","indexes","getIndexes","position","positions","split","char","index","dependencies","every","checkDependency","pattern","test","dependency","join","arg","keys","slice"],"mappings":"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","sourcesContent":["/**\n*\n* @licstart The following is the entire license notice for the JavaScript code in this file.\n*\n* MARC record validators used in Melinda\n*\n* Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n*\n* This file is part of marc-record-validators-melinda\n*\n* marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n* it under the terms of the GNU Lesser General Public License as\n* published by the Free Software Foundation, either version 3 of the\n* License, or (at your option) any later version.\n*\n* marc-record-validators-melinda is distributed in the hope that it will be useful,\n* but WITHOUT ANY WARRANTY; without even the implied warranty of\n* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n* GNU Lesser General Public License for more details.\n*\n* You should have received a copy of the GNU Lesser General Public License\n* along with this program. If not, see <http://www.gnu.org/licenses/>.\n*\n* @licend The above is the entire license notice\n* for the JavaScript code in this file.\n*\n*/\n\n\nexport default function (configuration) {\n if (Array.isArray(configuration)) {\n return {\n description:\n 'Validates fixed fields',\n validate\n };\n }\n\n throw new Error('No configuration provided');\n\n function validate(record) {\n const messages = configuration.reduce((messages, item) => {\n let results; // eslint-disable-line functional/no-let\n\n if (item.leader) { // eslint-disable-line functional/no-conditional-statement\n results = validateField(record.leader, item);\n } else { // eslint-disable-line functional/no-conditional-statement\n results = record.get(item.tag)\n .map(f => validateField(f.value, item, f.tag));\n }\n\n if (results && results.length > 0) {\n return messages.concat(...results).reduce((acc, item) => acc.includes(item) ? acc : acc.concat(item), []);\n }\n\n return messages;\n }, []);\n\n return {valid: messages.length === 0, messages};\n\n function validateField(value, spec, tag) {\n const messagePrefix = tag ? `Field ${tag}` : 'Leader';\n\n if (typeof spec.length === 'number') {\n if (value.length !== spec.length) {\n return [`${messagePrefix} has invalid length`];\n }\n }\n\n if (spec.rules) {\n return spec.rules.reduce((messages, rule, ruleIndex) => {\n const indexes = getIndexes(rule.position);\n const positions = value.split('').reduce((positions, char, index) => {\n if (indexes.includes(index) && (!rule.dependencies || rule.dependencies.every(checkDependency))) {\n if (!rule.pattern.test(char)) {\n return positions.concat(index);\n }\n }\n\n return positions;\n\n function checkDependency(dependency) {\n const indexes = getIndexes(dependency.position);\n return value.split('').every((char, index) => !indexes.includes(index) || dependency.pattern.test(char));\n }\n }, []);\n\n if (positions.length > 0) {\n return messages.concat(`${messagePrefix} has invalid values at positions: ${positions.join()} (Rule index ${ruleIndex})`);\n }\n\n return messages;\n\n function getIndexes(arg) {\n if (Array.isArray(arg)) {\n const indexes = [...new Array(arg[1] + 1).keys()];\n return indexes.slice(arg[0], arg[1] + 1);\n }\n\n return [arg];\n }\n }, []);\n }\n }\n }\n}\n"],"file":"fixed-fields.js"}
1
+ {"version":3,"file":"fixed-fields.js","names":["configuration","Array","isArray","description","validate","Error","record","messages","reduce","item","results","leader","validateField","get","tag","map","f","value","length","concat","acc","includes","valid","spec","messagePrefix","rules","rule","ruleIndex","indexes","getIndexes","position","positions","split","char","index","dependencies","every","checkDependency","pattern","test","dependency","join","arg","keys","slice"],"sources":["../src/fixed-fields.js"],"sourcesContent":["export default function (configuration) {\n if (Array.isArray(configuration)) {\n return {\n description:\n 'Validates fixed fields',\n validate\n };\n }\n\n throw new Error('No configuration provided');\n\n function validate(record) {\n const messages = configuration.reduce((messages, item) => {\n let results; // eslint-disable-line functional/no-let\n\n if (item.leader) { // eslint-disable-line functional/no-conditional-statement\n results = validateField(record.leader, item);\n } else { // eslint-disable-line functional/no-conditional-statement\n results = record.get(item.tag)\n .map(f => validateField(f.value, item, f.tag));\n }\n\n if (results && results.length > 0) {\n return messages.concat(...results).reduce((acc, item) => acc.includes(item) ? acc : acc.concat(item), []);\n }\n\n return messages;\n }, []);\n\n return {valid: messages.length === 0, messages};\n\n function validateField(value, spec, tag) {\n const messagePrefix = tag ? `Field ${tag}` : 'Leader';\n\n if (typeof spec.length === 'number') {\n if (value.length !== spec.length) {\n return [`${messagePrefix} has invalid length`];\n }\n }\n\n if (spec.rules) {\n return spec.rules.reduce((messages, rule, ruleIndex) => {\n const indexes = getIndexes(rule.position);\n const positions = value.split('').reduce((positions, char, index) => {\n if (indexes.includes(index) && (!rule.dependencies || rule.dependencies.every(checkDependency))) {\n if (!rule.pattern.test(char)) {\n return positions.concat(index);\n }\n }\n\n return positions;\n\n function checkDependency(dependency) {\n const indexes = getIndexes(dependency.position);\n return value.split('').every((char, index) => !indexes.includes(index) || dependency.pattern.test(char));\n }\n }, []);\n\n if (positions.length > 0) {\n return messages.concat(`${messagePrefix} has invalid values at positions: ${positions.join()} (Rule index ${ruleIndex})`);\n }\n\n return messages;\n\n function getIndexes(arg) {\n if (Array.isArray(arg)) {\n const indexes = [...new Array(arg[1] + 1).keys()];\n return indexes.slice(arg[0], arg[1] + 1);\n }\n\n return [arg];\n }\n }, []);\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -10,33 +10,6 @@ var _fixedFields = _interopRequireDefault(require("../src/fixed-fields"));
10
10
 
11
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
12
 
13
- /**
14
- *
15
- * @licstart The following is the entire license notice for the JavaScript code in this file.
16
- *
17
- * MARC record validators used in Melinda
18
- *
19
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
20
- *
21
- * This file is part of marc-record-validators-melinda
22
- *
23
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
24
- * it under the terms of the GNU Lesser General Public License as
25
- * published by the Free Software Foundation, either version 3 of the
26
- * License, or (at your option) any later version.
27
- *
28
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
29
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
30
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31
- * GNU Lesser General Public License for more details.
32
- *
33
- * You should have received a copy of the GNU Lesser General Public License
34
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
35
- *
36
- * @licend The above is the entire license notice
37
- * for the JavaScript code in this file.
38
- *
39
- */
40
13
  const {
41
14
  expect
42
15
  } = _chai.default;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/fixed-fields.spec.js"],"names":["expect","chai","use","chaiAsPromised","describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","error","with","property","leader","length","rules","position","pattern","tag","dependencies","record","MarcRecord","fields","value","result","and","include","valid","eql","messages"],"mappings":"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","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nimport chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/fixed-fields';\n\nconst {expect} = chai;\nchai.use(chaiAsPromised);\n\ndescribe('fixed-fields: language', () => {\n it('Creates a validator', async () => {\n const validator = await validatorFactory([]);\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n it('Throws an error when configuration is not provided', () => {\n try {\n validatorFactory();\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'No configuration provided');\n }\n });\n\n describe('#validate', () => {\n it('Finds the record valid', async () => {\n const validator = await validatorFactory([\n {leader: true, length: 6, rules: [{position: [0, 6], pattern: /[abcdefg]/u}]},\n {tag: /^FOO$/u, length: 12, rules: [{position: 0, pattern: /f/u}]},\n {tag: /^BAR$/u, length: 6, rules: [\n {position: 0, pattern: /[fb]/u},\n {position: 1, pattern: /a/u, dependencies: [{position: 0, pattern: /b/u}]},\n {position: [2, 3], pattern: /u/u, dependencies: [{position: 0, pattern: /[^b]/u}]}\n ]}\n ]);\n const record = new MarcRecord({\n leader: 'bacgfe',\n fields: [\n {\n tag: 'FOO',\n value: 'foobarfoobar'\n },\n {\n tag: 'BAR',\n value: 'bauuoo'\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.be.an('object').and.to.include({valid: true});\n });\n\n it('Finds the record invalid', async () => {\n const validator = await validatorFactory([\n {leader: true, length: 6, rules: [{position: [0, 6], pattern: /[abcdefg]/u}]},\n {tag: /^FOO$/u, length: 12, rules: [{position: 0, pattern: /f/u}]},\n {tag: /^BAR$/u, length: 6, rules: [\n {position: 0, pattern: /[fb]/u},\n {position: 1, pattern: /a/u, dependencies: [{position: 0, pattern: /b/u}]},\n {position: [2, 3], pattern: /u/u, dependencies: [{position: 0, pattern: /[^a]/u}]}\n ]},\n {tag: /^FUBAR$/u, length: 5}\n ]);\n const record = new MarcRecord({\n leader: 'bacxfe',\n fields: [\n {\n tag: 'FOO',\n value: 'barfoofoobar'\n },\n {\n tag: 'BAR',\n value: 'burfoo'\n },\n {\n tag: 'FUBAR',\n value: 'foo'\n }\n ]\n });\n\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: [\n 'Leader has invalid values at positions: 3 (Rule index 0)',\n 'Field FOO has invalid values at positions: 0 (Rule index 0)',\n 'Field BAR has invalid values at positions: 1 (Rule index 1)',\n 'Field BAR has invalid values at positions: 2,3 (Rule index 2)',\n 'Field FUBAR has invalid length'\n ]});\n });\n });\n});\n"],"file":"fixed-fields.spec.js"}
1
+ {"version":3,"file":"fixed-fields.spec.js","names":["expect","chai","use","chaiAsPromised","describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","error","with","property","leader","length","rules","position","pattern","tag","dependencies","record","MarcRecord","fields","value","result","and","include","valid","eql","messages"],"sources":["../src/fixed-fields.spec.js"],"sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/fixed-fields';\n\nconst {expect} = chai;\nchai.use(chaiAsPromised);\n\ndescribe('fixed-fields: language', () => {\n it('Creates a validator', async () => {\n const validator = await validatorFactory([]);\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n it('Throws an error when configuration is not provided', () => {\n try {\n validatorFactory();\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'No configuration provided');\n }\n });\n\n describe('#validate', () => {\n it('Finds the record valid', async () => {\n const validator = await validatorFactory([\n {leader: true, length: 6, rules: [{position: [0, 6], pattern: /[abcdefg]/u}]},\n {tag: /^FOO$/u, length: 12, rules: [{position: 0, pattern: /f/u}]},\n {tag: /^BAR$/u, length: 6, rules: [\n {position: 0, pattern: /[fb]/u},\n {position: 1, pattern: /a/u, dependencies: [{position: 0, pattern: /b/u}]},\n {position: [2, 3], pattern: /u/u, dependencies: [{position: 0, pattern: /[^b]/u}]}\n ]}\n ]);\n const record = new MarcRecord({\n leader: 'bacgfe',\n fields: [\n {\n tag: 'FOO',\n value: 'foobarfoobar'\n },\n {\n tag: 'BAR',\n value: 'bauuoo'\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.be.an('object').and.to.include({valid: true});\n });\n\n it('Finds the record invalid', async () => {\n const validator = await validatorFactory([\n {leader: true, length: 6, rules: [{position: [0, 6], pattern: /[abcdefg]/u}]},\n {tag: /^FOO$/u, length: 12, rules: [{position: 0, pattern: /f/u}]},\n {tag: /^BAR$/u, length: 6, rules: [\n {position: 0, pattern: /[fb]/u},\n {position: 1, pattern: /a/u, dependencies: [{position: 0, pattern: /b/u}]},\n {position: [2, 3], pattern: /u/u, dependencies: [{position: 0, pattern: /[^a]/u}]}\n ]},\n {tag: /^FUBAR$/u, length: 5}\n ]);\n const record = new MarcRecord({\n leader: 'bacxfe',\n fields: [\n {\n tag: 'FOO',\n value: 'barfoofoobar'\n },\n {\n tag: 'BAR',\n value: 'burfoo'\n },\n {\n tag: 'FUBAR',\n value: 'foo'\n }\n ]\n });\n\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: [\n 'Leader has invalid values at positions: 3 (Rule index 0)',\n 'Field FOO has invalid values at positions: 0 (Rule index 0)',\n 'Field BAR has invalid values at positions: 1 (Rule index 1)',\n 'Field BAR has invalid values at positions: 2,3 (Rule index 2)',\n 'Field FUBAR has invalid length'\n ]});\n });\n });\n});\n"],"mappings":"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"}
@@ -7,34 +7,6 @@ exports.default = _default;
7
7
 
8
8
  var _marcRecord = require("@natlibfi/marc-record");
9
9
 
10
- /**
11
- *
12
- * @licstart The following is the entire license notice for the JavaScript code in this file.
13
- *
14
- * Melinda-related validators for @natlibfi/marc-record-validate
15
- *
16
- * Copyright (c) 2014-2017 University Of Helsinki (The National Library Of Finland)
17
- *
18
- * This file is part of marc-record-validators-melinda
19
- *
20
- * marc-record-validators-melinda is free software: you can redistribute it and/or modify
21
- * it under the terms of the GNU Lesser General Public License as
22
- * published by the Free Software Foundation, either version 3 of the
23
- * License, or (at your option) any later version.
24
- *
25
- * This program is distributed in the hope that it will be useful,
26
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
27
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28
- * GNU Lesser General Public License for more details.
29
- *
30
- * You should have received a copy of the GNU Lesser General Public License
31
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
32
- *
33
- * @licend The above is the entire license notice
34
- * for the JavaScript code in this file.
35
- *
36
- **/
37
-
38
10
  /**
39
11
  * This validator de-duplicates identical fields in a record.
40
12
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/identical-fields.js"],"names":["description","validate","fix","record","uniq","uniqWith","fields","valid","length","messages","filter","tag","includes","map","obj","forEach","removeField","reduce","field","some","f","MarcRecord","isEqual","push"],"mappings":";;;;;;;AAgCA;;AAhCA;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;;AAEA;AACA;AACA;AAIe,oBAAY;AACzB,SAAO;AACLA,IAAAA,WAAW,EAAE,8CADR;AAELC,IAAAA,QAFK;AAGLC,IAAAA;AAHK,GAAP;;AAMA,WAASD,QAAT,CAAkBE,MAAlB,EAA0B;AACxB,UAAMC,IAAI,GAAGC,QAAQ,CAACF,MAAM,CAACG,MAAR,CAArB;AACA,UAAMC,KAAK,GAAGH,IAAI,CAACI,MAAL,KAAgBL,MAAM,CAACG,MAAP,CAAcE,MAA5C;AACA,UAAMC,QAAQ,GAAGN,MAAM,CAACG,MAAP,CAAcI,MAAd,CAAqBC,GAAG,IAAI,CAACP,IAAI,CAACQ,QAAL,CAAcD,GAAd,CAA7B,EACdE,GADc,CACVC,GAAG,IAAK,SAAQA,GAAG,CAACH,GAAI,iBADd,CAAjB;AAGA,WAAOJ,KAAK,GAAG;AAACA,MAAAA,KAAD;AAAQE,MAAAA,QAAQ,EAAE;AAAlB,KAAH,GAA2B;AAACF,MAAAA,KAAD;AAAQE,MAAAA;AAAR,KAAvC;AACD;;AAED,WAASP,GAAT,CAAaC,MAAb,EAAqB;AACnBA,IAAAA,MAAM,CAACG,MAAP,CACGI,MADH,CACUC,GAAG,IAAI,CAACN,QAAQ,CAACF,MAAM,CAACG,MAAR,CAAR,CAAwBM,QAAxB,CAAiCD,GAAjC,CADlB,EAEGI,OAFH,CAEWJ,GAAG,IAAIR,MAAM,CAACa,WAAP,CAAmBL,GAAnB,CAFlB;AAGD;;AAED,WAASN,QAAT,CAAkBC,MAAlB,EAA0B;AACxB,WAAOA,MAAM,CAACW,MAAP,CAAc,CAACb,IAAD,EAAOc,KAAP,KAAiB;AACpC,UAAI,CAACd,IAAI,CAACe,IAAL,CAAUC,CAAC,IAAIC,uBAAWC,OAAX,CAAmBF,CAAnB,EAAsBF,KAAtB,CAAf,CAAL,EAAmD;AAAE;AACnDd,QAAAA,IAAI,CAACmB,IAAL,CAAUL,KAAV,EADiD,CAC/B;AACnB;;AAED,aAAOd,IAAP;AACD,KANM,EAMJ,EANI,CAAP;AAOD;AACF","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * Melinda-related validators for @natlibfi/marc-record-validate\n *\n * Copyright (c) 2014-2017 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda 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 * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n **/\n\n/**\n * This validator de-duplicates identical fields in a record.\n */\n\nimport {MarcRecord} from '@natlibfi/marc-record';\n\nexport default function () {\n return {\n description: 'Handles identical duplicate in record fields',\n validate,\n fix\n };\n\n function validate(record) {\n const uniq = uniqWith(record.fields);\n const valid = uniq.length === record.fields.length;\n const messages = record.fields.filter(tag => !uniq.includes(tag))\n .map(obj => `Field ${obj.tag} has duplicates`);\n\n return valid ? {valid, messages: []} : {valid, messages};\n }\n\n function fix(record) {\n record.fields\n .filter(tag => !uniqWith(record.fields).includes(tag))\n .forEach(tag => record.removeField(tag));\n }\n\n function uniqWith(fields) {\n return fields.reduce((uniq, field) => {\n if (!uniq.some(f => MarcRecord.isEqual(f, field))) { // eslint-disable-line functional/no-conditional-statement\n uniq.push(field); // eslint-disable-line functional/immutable-data\n }\n\n return uniq;\n }, []);\n }\n}\n"],"file":"identical-fields.js"}
1
+ {"version":3,"file":"identical-fields.js","names":["description","validate","fix","record","uniq","uniqWith","fields","valid","length","messages","filter","tag","includes","map","obj","forEach","removeField","reduce","field","some","f","MarcRecord","isEqual","push"],"sources":["../src/identical-fields.js"],"sourcesContent":["/**\n * This validator de-duplicates identical fields in a record.\n */\n\nimport {MarcRecord} from '@natlibfi/marc-record';\n\nexport default function () {\n return {\n description: 'Handles identical duplicate in record fields',\n validate,\n fix\n };\n\n function validate(record) {\n const uniq = uniqWith(record.fields);\n const valid = uniq.length === record.fields.length;\n const messages = record.fields.filter(tag => !uniq.includes(tag))\n .map(obj => `Field ${obj.tag} has duplicates`);\n\n return valid ? {valid, messages: []} : {valid, messages};\n }\n\n function fix(record) {\n record.fields\n .filter(tag => !uniqWith(record.fields).includes(tag))\n .forEach(tag => record.removeField(tag));\n }\n\n function uniqWith(fields) {\n return fields.reduce((uniq, field) => {\n if (!uniq.some(f => MarcRecord.isEqual(f, field))) { // eslint-disable-line functional/no-conditional-statement\n uniq.push(field); // eslint-disable-line functional/immutable-data\n }\n\n return uniq;\n }, []);\n }\n}\n"],"mappings":";;;;;;;AAIA;;AAJA;AACA;AACA;AAIe,oBAAY;EACzB,OAAO;IACLA,WAAW,EAAE,8CADR;IAELC,QAFK;IAGLC;EAHK,CAAP;;EAMA,SAASD,QAAT,CAAkBE,MAAlB,EAA0B;IACxB,MAAMC,IAAI,GAAGC,QAAQ,CAACF,MAAM,CAACG,MAAR,CAArB;IACA,MAAMC,KAAK,GAAGH,IAAI,CAACI,MAAL,KAAgBL,MAAM,CAACG,MAAP,CAAcE,MAA5C;IACA,MAAMC,QAAQ,GAAGN,MAAM,CAACG,MAAP,CAAcI,MAAd,CAAqBC,GAAG,IAAI,CAACP,IAAI,CAACQ,QAAL,CAAcD,GAAd,CAA7B,EACdE,GADc,CACVC,GAAG,IAAK,SAAQA,GAAG,CAACH,GAAI,iBADd,CAAjB;IAGA,OAAOJ,KAAK,GAAG;MAACA,KAAD;MAAQE,QAAQ,EAAE;IAAlB,CAAH,GAA2B;MAACF,KAAD;MAAQE;IAAR,CAAvC;EACD;;EAED,SAASP,GAAT,CAAaC,MAAb,EAAqB;IACnBA,MAAM,CAACG,MAAP,CACGI,MADH,CACUC,GAAG,IAAI,CAACN,QAAQ,CAACF,MAAM,CAACG,MAAR,CAAR,CAAwBM,QAAxB,CAAiCD,GAAjC,CADlB,EAEGI,OAFH,CAEWJ,GAAG,IAAIR,MAAM,CAACa,WAAP,CAAmBL,GAAnB,CAFlB;EAGD;;EAED,SAASN,QAAT,CAAkBC,MAAlB,EAA0B;IACxB,OAAOA,MAAM,CAACW,MAAP,CAAc,CAACb,IAAD,EAAOc,KAAP,KAAiB;MACpC,IAAI,CAACd,IAAI,CAACe,IAAL,CAAUC,CAAC,IAAIC,uBAAWC,OAAX,CAAmBF,CAAnB,EAAsBF,KAAtB,CAAf,CAAL,EAAmD;QAAE;QACnDd,IAAI,CAACmB,IAAL,CAAUL,KAAV,EADiD,CAC/B;MACnB;;MAED,OAAOd,IAAP;IACD,CANM,EAMJ,EANI,CAAP;EAOD;AACF"}
@@ -8,33 +8,6 @@ var _identicalFields = _interopRequireDefault(require("../src/identical-fields")
8
8
 
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
10
 
11
- /**
12
- *
13
- * @licstart The following is the entire license notice for the JavaScript code in this file.
14
- *
15
- * MARC record validators used in Melinda
16
- *
17
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
18
- *
19
- * This file is part of marc-record-validators-melinda
20
- *
21
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
22
- * it under the terms of the GNU Lesser General Public License as
23
- * published by the Free Software Foundation, either version 3 of the
24
- * License, or (at your option) any later version.
25
- *
26
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
27
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
28
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29
- * GNU Lesser General Public License for more details.
30
- *
31
- * You should have received a copy of the GNU Lesser General Public License
32
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
33
- *
34
- * @licend The above is the entire license notice
35
- * for the JavaScript code in this file.
36
- *
37
- */
38
11
  describe('identical-fields', () => {
39
12
  it('Creates a validator', async () => {
40
13
  const validator = await (0, _identicalFields.default)();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/identical-fields.spec.js"],"names":["describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","record","MarcRecord","fields","tag","subfields","code","value","result","eql","valid","messages","fix","ind1","ind2"],"mappings":"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","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nimport {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/identical-fields';\n\ndescribe('identical-fields', () => {\n it('Creates a validator', async () => {\n const validator = await validatorFactory();\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n describe('#validate', () => {\n it('Finds the record valid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '700',\n subfields: [\n {\n code: 'e',\n value: 'foo'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true, messages: []});\n });\n it('Finds the record invalid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n\n fields: [\n {\n tag: '700',\n subfields: [\n {\n code: 'e',\n value: 'foo'\n }\n ]\n },\n {\n tag: '800',\n subfields: [\n {\n code: 'e',\n value: 'foo'\n }\n ]\n },\n {\n tag: '800',\n subfields: [\n {\n code: 'e',\n value: 'foo'\n }\n ]\n },\n {\n tag: '700',\n subfields: [\n {\n code: 'e',\n value: 'foo'\n }\n ]\n }\n ]\n });\n\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: ['Field 800 has duplicates', 'Field 700 has duplicates']});\n });\n });\n\n describe('#fix', () => {\n it('Fixes the record', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '700',\n subfields: [\n {\n code: 'e',\n value: 'dest'\n }\n ]\n },\n {\n tag: '700',\n subfields: [\n {\n code: 'e',\n value: 'dest'\n }\n ]\n }\n ]\n });\n await validator.fix(record);\n\n expect(record.fields).to.eql([\n {\n tag: '700',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'e',\n value: 'dest'\n }\n ]\n }\n ]);\n });\n });\n});\n"],"file":"identical-fields.spec.js"}
1
+ {"version":3,"file":"identical-fields.spec.js","names":["describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","record","MarcRecord","fields","tag","subfields","code","value","result","eql","valid","messages","fix","ind1","ind2"],"sources":["../src/identical-fields.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/identical-fields';\n\ndescribe('identical-fields', () => {\n it('Creates a validator', async () => {\n const validator = await validatorFactory();\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n describe('#validate', () => {\n it('Finds the record valid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '700',\n subfields: [\n {\n code: 'e',\n value: 'foo'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true, messages: []});\n });\n it('Finds the record invalid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n\n fields: [\n {\n tag: '700',\n subfields: [\n {\n code: 'e',\n value: 'foo'\n }\n ]\n },\n {\n tag: '800',\n subfields: [\n {\n code: 'e',\n value: 'foo'\n }\n ]\n },\n {\n tag: '800',\n subfields: [\n {\n code: 'e',\n value: 'foo'\n }\n ]\n },\n {\n tag: '700',\n subfields: [\n {\n code: 'e',\n value: 'foo'\n }\n ]\n }\n ]\n });\n\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: ['Field 800 has duplicates', 'Field 700 has duplicates']});\n });\n });\n\n describe('#fix', () => {\n it('Fixes the record', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '700',\n subfields: [\n {\n code: 'e',\n value: 'dest'\n }\n ]\n },\n {\n tag: '700',\n subfields: [\n {\n code: 'e',\n value: 'dest'\n }\n ]\n }\n ]\n });\n await validator.fix(record);\n\n expect(record.fields).to.eql([\n {\n tag: '700',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'e',\n value: 'dest'\n }\n ]\n }\n ]);\n });\n });\n});\n"],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["/**\n*\n* @licstart The following is the entire license notice for the JavaScript code in this file.\n*\n* MARC record validators used in Melinda\n*\n* Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n*\n* This file is part of marc-record-validators-melinda\n*\n* marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n* it under the terms of the GNU Lesser General Public License as\n* published by the Free Software Foundation, either version 3 of the\n* License, or (at your option) any later version.\n*\n* marc-record-validators-melinda is distributed in the hope that it will be useful,\n* but WITHOUT ANY WARRANTY; without even the implied warranty of\n* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n* GNU Lesser General Public License for more details.\n*\n* You should have received a copy of the GNU Lesser General Public License\n* along with this program. If not, see <http://www.gnu.org/licenses/>.\n*\n* @licend The above is the entire license notice\n* for the JavaScript code in this file.\n*\n*/\n\n\nimport AccessRights from './access-rights';\nimport DoubleCommas from './double-commas';\nimport DuplicatesInd1 from './duplicates-ind1';\nimport EmptyFields from './empty-fields';\nimport EndingPunctuation from './ending-punctuation';\nimport FieldsPresent from './fields-present';\nimport FieldStructure from './field-structure';\nimport FixedFields from './fixed-fields';\nimport FieldExclusion from './field-exclusion';\nimport IdenticalFields from './identical-fields';\nimport IsbnIssn from './isbn-issn';\nimport ItemLanguage from './item-language';\nimport Punctuation from './punctuation/';\nimport ResolvableExtReferences from './resolvable-ext-references-melinda';\nimport SortTags from './sort-tags';\nimport SubfieldExclusion from './subfield-exclusion';\nimport UnicodeDecomposition from './unicode-decomposition';\nimport Urn from './urn';\n\nexport {\n AccessRights,\n DoubleCommas,\n DuplicatesInd1,\n EmptyFields,\n EndingPunctuation,\n FieldExclusion,\n FieldsPresent,\n FieldStructure,\n FixedFields,\n IdenticalFields,\n IsbnIssn,\n ItemLanguage,\n Punctuation,\n ResolvableExtReferences,\n SortTags,\n SubfieldExclusion,\n UnicodeDecomposition,\n Urn\n};\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.js"],"sourcesContent":["import AccessRights from './access-rights';\nimport DoubleCommas from './double-commas';\nimport DuplicatesInd1 from './duplicates-ind1';\nimport EmptyFields from './empty-fields';\nimport EndingPunctuation from './ending-punctuation';\nimport FieldsPresent from './fields-present';\nimport FieldStructure from './field-structure';\nimport FixedFields from './fixed-fields';\nimport FieldExclusion from './field-exclusion';\nimport IdenticalFields from './identical-fields';\nimport IsbnIssn from './isbn-issn';\nimport ItemLanguage from './item-language';\nimport Punctuation from './punctuation/';\nimport ResolvableExtReferences from './resolvable-ext-references-melinda';\nimport SortTags from './sort-tags';\nimport SubfieldExclusion from './subfield-exclusion';\nimport UnicodeDecomposition from './unicode-decomposition';\nimport Urn from './urn';\n\nexport {\n AccessRights,\n DoubleCommas,\n DuplicatesInd1,\n EmptyFields,\n EndingPunctuation,\n FieldExclusion,\n FieldsPresent,\n FieldStructure,\n FixedFields,\n IdenticalFields,\n IsbnIssn,\n ItemLanguage,\n Punctuation,\n ResolvableExtReferences,\n SortTags,\n SubfieldExclusion,\n UnicodeDecomposition,\n Urn\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA"}
package/dist/isbn-issn.js CHANGED
@@ -11,33 +11,6 @@ var _issnVerify = _interopRequireDefault(require("@natlibfi/issn-verify"));
11
11
 
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
 
14
- /**
15
- *
16
- * @licstart The following is the entire license notice for the JavaScript code in this file.
17
- *
18
- * MARC record validators used in Melinda
19
- *
20
- * Copyright (c) 2014-2022 University Of Helsinki (The National Library Of Finland)
21
- *
22
- * This file is part of marc-record-validators-melinda
23
- *
24
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
25
- * it under the terms of the GNU Lesser General Public License as
26
- * published by the Free Software Foundation, either version 3 of the
27
- * License, or (at your option) any later version.
28
- *
29
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
30
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
31
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32
- * GNU Lesser General Public License for more details.
33
- *
34
- * You should have received a copy of the GNU Lesser General Public License
35
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
36
- *
37
- * @licend The above is the entire license notice
38
- * for the JavaScript code in this file.
39
- *
40
- */
41
14
  // handleInvalid: move invalid 020$a to 020$z, and invalid 022$a to 022$y
42
15
  var _default = ({
43
16
  hyphenateISBN = false,