@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.
- package/.github/CODEOWNERS +10 -0
- package/.github/dependabot.yml +40 -0
- package/.github/workflows/melinda-node-tests.yml +61 -0
- package/LICENSE.txt +21 -165
- package/README.md +1 -1
- package/dist/access-rights.js +0 -27
- package/dist/access-rights.js.map +1 -1
- package/dist/access-rights.spec.js +0 -27
- package/dist/access-rights.spec.js.map +1 -1
- package/dist/double-commas.js +0 -27
- package/dist/double-commas.js.map +1 -1
- package/dist/double-commas.spec.js +0 -27
- package/dist/double-commas.spec.js.map +1 -1
- package/dist/duplicates-ind1.js +0 -27
- package/dist/duplicates-ind1.js.map +1 -1
- package/dist/duplicates-ind1.spec.js +0 -27
- package/dist/duplicates-ind1.spec.js.map +1 -1
- package/dist/empty-fields.js +0 -28
- package/dist/empty-fields.js.map +1 -1
- package/dist/empty-fields.spec.js +0 -27
- package/dist/empty-fields.spec.js.map +1 -1
- package/dist/ending-punctuation-conf.js +0 -28
- package/dist/ending-punctuation-conf.js.map +1 -1
- package/dist/ending-punctuation.js.map +1 -1
- package/dist/ending-punctuation.spec.js +0 -27
- package/dist/ending-punctuation.spec.js.map +1 -1
- package/dist/field-exclusion.js +0 -28
- package/dist/field-exclusion.js.map +1 -1
- package/dist/field-exclusion.spec.js +0 -27
- package/dist/field-exclusion.spec.js.map +1 -1
- package/dist/field-structure.js +0 -28
- package/dist/field-structure.js.map +1 -1
- package/dist/field-structure.spec.js +0 -27
- package/dist/field-structure.spec.js.map +1 -1
- package/dist/fields-present.js +0 -27
- package/dist/fields-present.js.map +1 -1
- package/dist/fields-present.spec.js +0 -27
- package/dist/fields-present.spec.js.map +1 -1
- package/dist/fixed-fields.js +0 -27
- package/dist/fixed-fields.js.map +1 -1
- package/dist/fixed-fields.spec.js +0 -27
- package/dist/fixed-fields.spec.js.map +1 -1
- package/dist/identical-fields.js +0 -28
- package/dist/identical-fields.js.map +1 -1
- package/dist/identical-fields.spec.js +0 -27
- package/dist/identical-fields.spec.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/isbn-issn.js +0 -27
- package/dist/isbn-issn.js.map +1 -1
- package/dist/isbn-issn.spec.js +0 -27
- package/dist/isbn-issn.spec.js.map +1 -1
- package/dist/item-language.js +0 -27
- package/dist/item-language.js.map +1 -1
- package/dist/item-language.spec.js +0 -27
- package/dist/item-language.spec.js.map +1 -1
- package/dist/punctuation/index.js +21 -1
- package/dist/punctuation/index.js.map +1 -1
- package/dist/punctuation/rules/aut.js.map +1 -1
- package/dist/punctuation/rules/bib.js +8 -1
- package/dist/punctuation/rules/bib.js.map +1 -1
- package/dist/punctuation/rules/index.js.map +1 -1
- package/dist/punctuation.spec.js +49 -140
- package/dist/punctuation.spec.js.map +1 -1
- package/dist/resolvable-ext-references-melinda.js +0 -27
- package/dist/resolvable-ext-references-melinda.js.map +1 -1
- package/dist/resolvable-ext-references-melinda.spec.js +3 -29
- package/dist/resolvable-ext-references-melinda.spec.js.map +1 -1
- package/dist/sort-tags.js +0 -27
- package/dist/sort-tags.js.map +1 -1
- package/dist/sort-tags.spec.js +0 -27
- package/dist/sort-tags.spec.js.map +1 -1
- package/dist/subfield-exclusion.js +0 -28
- package/dist/subfield-exclusion.js.map +1 -1
- package/dist/subfield-exclusion.spec.js +0 -27
- package/dist/subfield-exclusion.spec.js.map +1 -1
- package/dist/unicode-decomposition.js +0 -28
- package/dist/unicode-decomposition.js.map +1 -1
- package/dist/unicode-decomposition.spec.js +0 -27
- package/dist/unicode-decomposition.spec.js.map +1 -1
- package/dist/urn.js +0 -27
- package/dist/urn.js.map +1 -1
- package/dist/urn.spec.js +0 -27
- package/dist/urn.spec.js.map +1 -1
- package/package.json +5 -3
- package/src/access-rights.js +0 -29
- package/src/access-rights.spec.js +0 -29
- package/src/double-commas.js +0 -29
- package/src/double-commas.spec.js +0 -29
- package/src/duplicates-ind1.js +0 -29
- package/src/duplicates-ind1.spec.js +0 -29
- package/src/empty-fields.js +0 -28
- package/src/empty-fields.spec.js +0 -29
- package/src/ending-punctuation-conf.js +0 -29
- package/src/ending-punctuation.spec.js +0 -29
- package/src/field-exclusion.js +0 -29
- package/src/field-exclusion.spec.js +0 -29
- package/src/field-structure.js +0 -29
- package/src/field-structure.spec.js +0 -29
- package/src/fields-present.js +0 -29
- package/src/fields-present.spec.js +0 -29
- package/src/fixed-fields.js +0 -29
- package/src/fixed-fields.spec.js +0 -29
- package/src/identical-fields.js +0 -28
- package/src/identical-fields.spec.js +0 -29
- package/src/index.js +0 -29
- package/src/isbn-issn.js +0 -28
- package/src/isbn-issn.spec.js +0 -29
- package/src/item-language.js +0 -29
- package/src/item-language.spec.js +0 -29
- package/src/punctuation/index.js +19 -1
- package/src/punctuation/rules/bib.js +9 -1
- package/src/punctuation.spec.js +48 -147
- package/src/resolvable-ext-references-melinda.js +0 -28
- package/src/resolvable-ext-references-melinda.spec.js +2 -30
- package/src/sort-tags.js +0 -29
- package/src/sort-tags.spec.js +0 -29
- package/src/subfield-exclusion.js +0 -29
- package/src/subfield-exclusion.spec.js +0 -29
- package/src/unicode-decomposition.js +0 -28
- package/src/unicode-decomposition.spec.js +0 -29
- package/src/urn.js +0 -29
- package/src/urn.spec.js +0 -29
- package/test-fixtures/punctuation/01/expectedResult.json +3 -0
- package/test-fixtures/punctuation/01/metadata.json +4 -0
- package/test-fixtures/punctuation/01/record.json +18 -0
- package/test-fixtures/punctuation/02/expectedResult.json +3 -0
- package/test-fixtures/punctuation/02/metadata.json +4 -0
- package/test-fixtures/punctuation/02/record.json +18 -0
- package/test-fixtures/punctuation/03/expectedResult.json +21 -0
- package/test-fixtures/punctuation/03/metadata.json +5 -0
- package/test-fixtures/punctuation/03/record.json +19 -0
- package/test-fixtures/punctuation/04/expectedResult.json +21 -0
- package/test-fixtures/punctuation/04/metadata.json +5 -0
- package/test-fixtures/punctuation/04/record.json +19 -0
- package/test-fixtures/punctuation/05/expectedResult.json +44 -0
- package/test-fixtures/punctuation/05/metadata.json +5 -0
- package/test-fixtures/punctuation/05/record.json +42 -0
- package/test-fixtures/resolvable-ext-references-melinda.js +0 -27
- 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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"}
|
package/dist/fields-present.js
CHANGED
|
@@ -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,"
|
|
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,"
|
|
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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"}
|
package/dist/fixed-fields.js
CHANGED
|
@@ -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 {
|
package/dist/fixed-fields.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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":";;;;;;;AAAe,kBAAUA,aAAV,EAAyB;EACtC,IAAIC,KAAK,CAACC,OAAN,CAAcF,aAAd,CAAJ,EAAkC;IAChC,OAAO;MACLG,WAAW,EACT,wBAFG;MAGLC;IAHK,CAAP;EAKD;;EAED,MAAM,IAAIC,KAAJ,CAAU,2BAAV,CAAN;;EAEA,SAASD,QAAT,CAAkBE,MAAlB,EAA0B;IACxB,MAAMC,QAAQ,GAAGP,aAAa,CAACQ,MAAd,CAAqB,CAACD,QAAD,EAAWE,IAAX,KAAoB;MACxD,IAAIC,OAAJ,CADwD,CAC3C;;MAEb,IAAID,IAAI,CAACE,MAAT,EAAiB;QAAE;QACjBD,OAAO,GAAGE,aAAa,CAACN,MAAM,CAACK,MAAR,EAAgBF,IAAhB,CAAvB;MACD,CAFD,MAEO;QAAE;QACPC,OAAO,GAAGJ,MAAM,CAACO,GAAP,CAAWJ,IAAI,CAACK,GAAhB,EACPC,GADO,CACHC,CAAC,IAAIJ,aAAa,CAACI,CAAC,CAACC,KAAH,EAAUR,IAAV,EAAgBO,CAAC,CAACF,GAAlB,CADf,CAAV;MAED;;MAED,IAAIJ,OAAO,IAAIA,OAAO,CAACQ,MAAR,GAAiB,CAAhC,EAAmC;QACjC,OAAOX,QAAQ,CAACY,MAAT,CAAgB,GAAGT,OAAnB,EAA4BF,MAA5B,CAAmC,CAACY,GAAD,EAAMX,IAAN,KAAeW,GAAG,CAACC,QAAJ,CAAaZ,IAAb,IAAqBW,GAArB,GAA2BA,GAAG,CAACD,MAAJ,CAAWV,IAAX,CAA7E,EAA+F,EAA/F,CAAP;MACD;;MAED,OAAOF,QAAP;IACD,CAfgB,EAed,EAfc,CAAjB;IAiBA,OAAO;MAACe,KAAK,EAAEf,QAAQ,CAACW,MAAT,KAAoB,CAA5B;MAA+BX;IAA/B,CAAP;;IAEA,SAASK,aAAT,CAAuBK,KAAvB,EAA8BM,IAA9B,EAAoCT,GAApC,EAAyC;MACvC,MAAMU,aAAa,GAAGV,GAAG,GAAI,SAAQA,GAAI,EAAhB,GAAoB,QAA7C;;MAEA,IAAI,OAAOS,IAAI,CAACL,MAAZ,KAAuB,QAA3B,EAAqC;QACnC,IAAID,KAAK,CAACC,MAAN,KAAiBK,IAAI,CAACL,MAA1B,EAAkC;UAChC,OAAO,CAAE,GAAEM,aAAc,qBAAlB,CAAP;QACD;MACF;;MAED,IAAID,IAAI,CAACE,KAAT,EAAgB;QACd,OAAOF,IAAI,CAACE,KAAL,CAAWjB,MAAX,CAAkB,CAACD,QAAD,EAAWmB,IAAX,EAAiBC,SAAjB,KAA+B;UACtD,MAAMC,OAAO,GAAGC,UAAU,CAACH,IAAI,CAACI,QAAN,CAA1B;UACA,MAAMC,SAAS,GAAGd,KAAK,CAACe,KAAN,CAAY,EAAZ,EAAgBxB,MAAhB,CAAuB,CAACuB,SAAD,EAAYE,IAAZ,EAAkBC,KAAlB,KAA4B;YACnE,IAAIN,OAAO,CAACP,QAAR,CAAiBa,KAAjB,MAA4B,CAACR,IAAI,CAACS,YAAN,IAAsBT,IAAI,CAACS,YAAL,CAAkBC,KAAlB,CAAwBC,eAAxB,CAAlD,CAAJ,EAAiG;cAC/F,IAAI,CAACX,IAAI,CAACY,OAAL,CAAaC,IAAb,CAAkBN,IAAlB,CAAL,EAA8B;gBAC5B,OAAOF,SAAS,CAACZ,MAAV,CAAiBe,KAAjB,CAAP;cACD;YACF;;YAED,OAAOH,SAAP;;YAEA,SAASM,eAAT,CAAyBG,UAAzB,EAAqC;cACnC,MAAMZ,OAAO,GAAGC,UAAU,CAACW,UAAU,CAACV,QAAZ,CAA1B;cACA,OAAOb,KAAK,CAACe,KAAN,CAAY,EAAZ,EAAgBI,KAAhB,CAAsB,CAACH,IAAD,EAAOC,KAAP,KAAiB,CAACN,OAAO,CAACP,QAAR,CAAiBa,KAAjB,CAAD,IAA4BM,UAAU,CAACF,OAAX,CAAmBC,IAAnB,CAAwBN,IAAxB,CAAnE,CAAP;YACD;UACF,CAbiB,EAaf,EAbe,CAAlB;;UAeA,IAAIF,SAAS,CAACb,MAAV,GAAmB,CAAvB,EAA0B;YACxB,OAAOX,QAAQ,CAACY,MAAT,CAAiB,GAAEK,aAAc,qCAAoCO,SAAS,CAACU,IAAV,EAAiB,gBAAed,SAAU,GAA/G,CAAP;UACD;;UAED,OAAOpB,QAAP;;UAEA,SAASsB,UAAT,CAAoBa,GAApB,EAAyB;YACvB,IAAIzC,KAAK,CAACC,OAAN,CAAcwC,GAAd,CAAJ,EAAwB;cACtB,MAAMd,OAAO,GAAG,CAAC,GAAG,IAAI3B,KAAJ,CAAUyC,GAAG,CAAC,CAAD,CAAH,GAAS,CAAnB,EAAsBC,IAAtB,EAAJ,CAAhB;cACA,OAAOf,OAAO,CAACgB,KAAR,CAAcF,GAAG,CAAC,CAAD,CAAjB,EAAsBA,GAAG,CAAC,CAAD,CAAH,GAAS,CAA/B,CAAP;YACD;;YAED,OAAO,CAACA,GAAD,CAAP;UACD;QACF,CA/BM,EA+BJ,EA/BI,CAAP;MAgCD;IACF;EACF;AACF"}
|
|
@@ -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,"
|
|
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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"}
|
package/dist/identical-fields.js
CHANGED
|
@@ -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,"
|
|
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,"
|
|
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,"
|
|
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,
|