@natlibfi/marc-record-validators-melinda 8.4.5 → 9.0.0
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/.drone.yml +7 -7
- package/dist/field-exclusion.js +7 -5
- package/dist/field-exclusion.js.map +1 -1
- package/dist/field-exclusion.spec.js +266 -32
- package/dist/field-exclusion.spec.js.map +1 -1
- package/dist/fields-present.spec.js +38 -1
- package/dist/fields-present.spec.js.map +1 -1
- package/package.json +7 -10
- package/src/field-exclusion.js +6 -4
- package/src/field-exclusion.spec.js +140 -32
- package/src/fields-present.spec.js +30 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/field-exclusion.spec.js"],"names":["expect","chai","use","chaiAsPromised","describe","it","config","validator","to","be","an","that","has","any","keys","description","a","validate","tag","subfields","code","value","error","with","property","ind1","unidentified","recordValid","MarcRecord","leader","fields","ind2","recordInvalid","recordInvalidDouble","recordInvalidFixed","result","eql","valid","message","fix","equalsTo","recordInvalidMulti","configInd","configValue","recordIndInvalid","recordValueInvalid","dependencies","record"],"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-exclusion';\n\nconst {expect} = chai;\nchai.use(chaiAsPromised);\n\n// Factory validation\ndescribe('field-exclusion', () => {\n describe('#validate: Check configuration validation', () => {\n it('Creates a validator from simple config', async () => {\n const config = [/^500$/u];\n\n const validator = await validatorFactory(config);\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('Creates a validator from complex config', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n const validator = await validatorFactory(config);\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('Fails to create a validator from invalid config - tag', async () => {\n const config = [\n {\n tag: '500',\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n await 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('Fails to create a validator from invalid config - msising array', async () => {\n const config = {\n tag: '500',\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n };\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration array not provided');\n }\n });\n\n it('Fails to create a validator from invalid config - code', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: 9, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: code');\n }\n });\n\n it('Fails to create a validator from invalid config - value', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: /9/u, value: 'Fenni'}]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: value');\n }\n });\n\n it('Fails to create a validator from invalid config - exclusion: value, ind1', async () => {\n const config = [\n {\n tag: /^500$/u,\n value: /^500$/u,\n ind1: /^500$/u,\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n await 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('Fails to create a validator from invalid config - missing mandatory: tag', async () => {\n const config = [\n {\n value: /^500$/u,\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: tag');\n }\n });\n\n it('Fails to create a validator from invalid config - subfield not object: array', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [\n ['/9/', '/^(?!FENNI<KEEP>).*$/'],\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - subfield: /9/,/^(?!FENNI<KEEP>).*$/ not object');\n }\n });\n\n it('Fails to create a validator from invalid config - subfield not object: string', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [\n '/9/',\n '/^(?!FENNI<KEEP>).*$/',\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - subfield: /9/ not object');\n }\n });\n\n it('Fails to create a validator from invalid config - missing mandatory: subfield.code', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [\n {code: /9/u, value: /^(?!FENNI<KEEP>).*$/u},\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: code');\n }\n });\n\n it('Fails to create a validator from invalid config - unidentified field: unidentified', async () => {\n const config = [\n {\n tag: /^500$/u,\n unidentified: /^500$/u,\n subfields: [\n {code: /9/u, value: /^(?!FENNI<KEEP>).*$/u},\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - unidentified value: unidentified');\n }\n });\n });\n\n // Simple configuration https://github.com/NatLibFi/marc-record-validators-melinda/issues/45\n describe('#validate: Simple configuration (spec)', () => {\n const config = [\n {\n tag: /^500$/u\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalidDouble = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }, {\n tag: '500',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n expect(result).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalid);\n expect(result).to.eql({valid: false, message: ['Field $500 should be excluded']});\n });\n\n it('Finds the record invalid - double', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidDouble);\n expect(result).to.eql({valid: false, message: ['Field $500 should be excluded', 'Field $500 should be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalid);\n expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n\n it('Repairs invalid record - double', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalidDouble);\n expect(recordInvalidDouble.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n // Simple multi tag configuration\n describe('#validate: Simple multi tag configuration (spec)', () => {\n const config = [\n {\n tag: /^(648|650|651|655)$/u // eslint-disable-line prefer-named-capture-group\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '648',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalidDouble = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '648',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }, {\n tag: '650',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n expect(result).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalid);\n expect(result).to.eql({valid: false, message: ['Field $648 should be excluded']});\n });\n\n it('Finds the record invalid - double', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidDouble);\n expect(result).to.eql({valid: false, message: ['Field $648 should be excluded', 'Field $650 should be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalid);\n expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n\n it('Repairs invalid record - double', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalidDouble);\n expect(recordInvalidDouble.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n // Complex configuration https://github.com/NatLibFi/marc-record-validators-melinda/issues/45\n describe('#validate: Complex configuration (spec)', () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '9', value: 'FENNI<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n expect(result).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalid);\n expect(result).to.eql({valid: false, message: ['Field $500 should be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalid);\n expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n // Complex multi tag configuration\n describe('#validate: Complex multi tag configuration (spec)', () => {\n const config = [\n {\n tag: /^(648|650|651|655)$/u, // eslint-disable-line prefer-named-capture-group\n subfields: [{code: /^2$/u, value: /^(ysa|musa|allars|cilla)$/u}] // eslint-disable-line prefer-named-capture-group\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '650',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '2', value: 'yso'}\n ]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '650',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '2', value: 'ysa'}\n ]\n }\n ]\n });\n\n const recordInvalidMulti = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '648',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: '2', value: 'ysa'}]\n }, {\n tag: '650',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: '2', value: 'ysa'}]\n }, {\n tag: '650',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: '2', value: 'ysa'}]\n }, {\n tag: '651',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: '2', value: 'ysa'}]\n }, {\n tag: '655',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: '2', value: 'ysa'}]\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n expect(result).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalid);\n expect(result).to.eql({valid: false, message: ['Field $650 should be excluded']});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalidMulti);\n expect(result).to.eql({valid: false, message: [\n 'Field $648 should be excluded',\n 'Field $650 should be excluded',\n 'Field $650 should be excluded',\n 'Field $651 should be excluded',\n 'Field $655 should be excluded'\n ]});\n });\n\n it('Repairs invalid multi record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalidMulti);\n expect(recordInvalidMulti.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalid);\n expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n // More special cases to increase coverage\n describe('#validate: Custom configuration', () => {\n const configInd = [\n {\n tag: /^500$/u,\n ind1: /^8$/u,\n ind2: /^4$/u\n }\n ];\n\n const configValue = [\n {\n tag: /^500$/u,\n value: /^8$/u\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '500',\n ind1: '8',\n ind2: '0',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordIndInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: '8',\n ind2: '4',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordValueInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n value: '8'\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid - Ind1&Ind2', async () => {\n const validator = await validatorFactory(configInd);\n const result = await validator.validate(recordValid);\n expect(result).to.eql({valid: true, message: []});\n });\n\n it('Finds the record valid - Value', async () => {\n const validator = await validatorFactory(configValue);\n const result = await validator.validate(recordValid);\n expect(result).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid - Ind', async () => {\n const validator = await validatorFactory(configInd);\n const result = await validator.validate(recordIndInvalid);\n expect(result).to.eql({valid: false, message: ['Field $500 should be excluded']});\n });\n\n it('Finds the record invalid - Value', async () => {\n const validator = await validatorFactory(configValue);\n const result = await validator.validate(recordValueInvalid);\n expect(result).to.eql({valid: false, message: ['Field $500 should be excluded']});\n });\n\n it('Repairs invalid record - Ind', async () => {\n const validator = await validatorFactory(configInd);\n await validator.fix(recordIndInvalid);\n expect(recordIndInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n\n it('Repairs invalid record - Value', async () => {\n const validator = await validatorFactory(configValue);\n await validator.fix(recordValueInvalid);\n expect(recordValueInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n describe('Dependencies', () => {\n it('Finds the record invalid because dependency matches', async () => {\n const config = [\n {\n tag: /^041$/u,\n dependencies: [{leader: /^.{6}a/u}]\n }\n ];\n\n const record = new MarcRecord({\n leader: '00000cam^a22003372i^4500',\n fields: [\n {\n tag: '041',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const validator = await validatorFactory(config);\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, message: ['Field $041 should be excluded']});\n });\n });\n});\n"],"file":"field-exclusion.spec.js"}
|
|
1
|
+
{"version":3,"sources":["../src/field-exclusion.spec.js"],"names":["expect","chai","use","chaiAsPromised","describe","it","config","validator","to","be","an","that","has","any","keys","description","a","validate","tag","subfields","code","value","error","with","property","ind1","unidentified","recordValid","MarcRecord","leader","fields","ind2","recordInvalid","recordInvalidDouble","recordInvalidFixed","valid","message","eql","fix","equalsTo","recordInvalidMulti","configInd","configValue","recordIndInvalid","recordValueInvalid","dependencies","record"],"mappings":";;AA6BA;;AACA;;AACA;;AACA;;;;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;AAQA,MAAM;AAACA,EAAAA;AAAD,IAAWC,aAAjB;;AACAA,cAAKC,GAAL,CAASC,uBAAT,E,CAEA;;;AACAC,QAAQ,CAAC,iBAAD,EAAoB,MAAM;AAChCA,EAAAA,QAAQ,CAAC,2CAAD,EAA8C,MAAM;AAC1DC,IAAAA,EAAE,CAAC,wCAAD,EAA2C,YAAY;AACvD,YAAMC,MAAM,GAAG,CAAC,QAAD,CAAf;AAEA,YAAMC,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACAN,MAAAA,MAAM,CAACO,SAAD,CAAN,CACGC,EADH,CACMC,EADN,CACSC,EADT,CACY,QADZ,EAEGC,IAFH,CAEQC,GAFR,CAEYC,GAFZ,CAEgBC,IAFhB,CAEqB,aAFrB,EAEoC,UAFpC;AAIAd,MAAAA,MAAM,CAACO,SAAS,CAACQ,WAAX,CAAN,CAA8BP,EAA9B,CAAiCC,EAAjC,CAAoCO,CAApC,CAAsC,QAAtC;AACAhB,MAAAA,MAAM,CAACO,SAAS,CAACU,QAAX,CAAN,CAA2BT,EAA3B,CAA8BC,EAA9B,CAAiCO,CAAjC,CAAmC,UAAnC;AACD,KAVC,CAAF;AAYAX,IAAAA,EAAE,CAAC,yCAAD,EAA4C,YAAY;AACxD,YAAMC,MAAM,GAAG,CACb;AACEY,QAAAA,GAAG,EAAE,QADP;AAEEC,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,IAAP;AAAaC,UAAAA,KAAK,EAAE;AAApB,SAAD;AAFb,OADa,CAAf;AAOA,YAAMd,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACAN,MAAAA,MAAM,CAACO,SAAD,CAAN,CACGC,EADH,CACMC,EADN,CACSC,EADT,CACY,QADZ,EAEGC,IAFH,CAEQC,GAFR,CAEYC,GAFZ,CAEgBC,IAFhB,CAEqB,aAFrB,EAEoC,UAFpC;AAIAd,MAAAA,MAAM,CAACO,SAAS,CAACQ,WAAX,CAAN,CAA8BP,EAA9B,CAAiCC,EAAjC,CAAoCO,CAApC,CAAsC,QAAtC;AACAhB,MAAAA,MAAM,CAACO,SAAS,CAACU,QAAX,CAAN,CAA2BT,EAA3B,CAA8BC,EAA9B,CAAiCO,CAAjC,CAAmC,UAAnC;AACD,KAfC,CAAF;AAiBAX,IAAAA,EAAE,CAAC,uDAAD,EAA0D,YAAY;AACtE,YAAMC,MAAM,GAAG,CACb;AACEY,QAAAA,GAAG,EAAE,KADP;AAEEC,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,IAAP;AAAaC,UAAAA,KAAK,EAAE;AAApB,SAAD;AAFb,OADa,CAAf;;AAOA,UAAI;AACF,cAAM,6BAAiBf,MAAjB,CAAN;AACD,OAFD,CAEE,OAAOgB,KAAP,EAAc;AACdtB,QAAAA,MAAM,CAACsB,KAAD,CAAN,CAAcd,EAAd,CAAiBC,EAAjB,CAAoBC,EAApB,CAAuB,OAAvB,EAAgCa,IAAhC,CAAqCC,QAArC,CAA8C,SAA9C,EAAyD,sDAAzD;AACD;AACF,KAbC,CAAF;AAeAnB,IAAAA,EAAE,CAAC,iEAAD,EAAoE,YAAY;AAChF,YAAMC,MAAM,GAAG;AACbY,QAAAA,GAAG,EAAE,KADQ;AAEbC,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,IAAP;AAAaC,UAAAA,KAAK,EAAE;AAApB,SAAD;AAFE,OAAf;;AAKA,UAAI;AACF,cAAM,6BAAiBf,MAAjB,CAAN;AACD,OAFD,CAEE,OAAOgB,KAAP,EAAc;AACdtB,QAAAA,MAAM,CAACsB,KAAD,CAAN,CAAcd,EAAd,CAAiBC,EAAjB,CAAoBC,EAApB,CAAuB,OAAvB,EAAgCa,IAAhC,CAAqCC,QAArC,CAA8C,SAA9C,EAAyD,kCAAzD;AACD;AACF,KAXC,CAAF;AAaAnB,IAAAA,EAAE,CAAC,wDAAD,EAA2D,YAAY;AACvE,YAAMC,MAAM,GAAG,CACb;AACEY,QAAAA,GAAG,EAAE,QADP;AAEEC,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,CAAP;AAAUC,UAAAA,KAAK,EAAE;AAAjB,SAAD;AAFb,OADa,CAAf;;AAOA,UAAI;AACF,cAAM,6BAAiBf,MAAjB,CAAN;AACD,OAFD,CAEE,OAAOgB,KAAP,EAAc;AACdtB,QAAAA,MAAM,CAACsB,KAAD,CAAN,CAAcd,EAAd,CAAiBC,EAAjB,CAAoBC,EAApB,CAAuB,OAAvB,EAAgCa,IAAhC,CAAqCC,QAArC,CAA8C,SAA9C,EAAyD,uDAAzD;AACD;AACF,KAbC,CAAF;AAeAnB,IAAAA,EAAE,CAAC,yDAAD,EAA4D,YAAY;AACxE,YAAMC,MAAM,GAAG,CACb;AACEY,QAAAA,GAAG,EAAE,QADP;AAEEC,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,IAAP;AAAaC,UAAAA,KAAK,EAAE;AAApB,SAAD;AAFb,OADa,CAAf;;AAOA,UAAI;AACF,cAAM,6BAAiBf,MAAjB,CAAN;AACD,OAFD,CAEE,OAAOgB,KAAP,EAAc;AACdtB,QAAAA,MAAM,CAACsB,KAAD,CAAN,CAAcd,EAAd,CAAiBC,EAAjB,CAAoBC,EAApB,CAAuB,OAAvB,EAAgCa,IAAhC,CAAqCC,QAArC,CAA8C,SAA9C,EAAyD,wDAAzD;AACD;AACF,KAbC,CAAF;AAeAnB,IAAAA,EAAE,CAAC,0EAAD,EAA6E,YAAY;AACzF,YAAMC,MAAM,GAAG,CACb;AACEY,QAAAA,GAAG,EAAE,QADP;AAEEG,QAAAA,KAAK,EAAE,QAFT;AAGEI,QAAAA,IAAI,EAAE,QAHR;AAIEN,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,IAAP;AAAaC,UAAAA,KAAK,EAAE;AAApB,SAAD;AAJb,OADa,CAAf;;AASA,UAAI;AACF,cAAM,6BAAiBf,MAAjB,CAAN;AACD,OAFD,CAEE,OAAOgB,KAAP,EAAc;AACdtB,QAAAA,MAAM,CAACsB,KAAD,CAAN,CAAcd,EAAd,CAAiBC,EAAjB,CAAoBC,EAApB,CAAuB,OAAvB,EAAgCa,IAAhC,CAAqCC,QAArC,CAA8C,SAA9C,EAAyD,4CAAzD;AACD;AACF,KAfC,CAAF;AAiBAnB,IAAAA,EAAE,CAAC,0EAAD,EAA6E,YAAY;AACzF,YAAMC,MAAM,GAAG,CACb;AACEe,QAAAA,KAAK,EAAE,QADT;AAEEF,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,IAAP;AAAaC,UAAAA,KAAK,EAAE;AAApB,SAAD;AAFb,OADa,CAAf;;AAOA,UAAI;AACF,cAAM,6BAAiBf,MAAjB,CAAN;AACD,OAFD,CAEE,OAAOgB,KAAP,EAAc;AACdtB,QAAAA,MAAM,CAACsB,KAAD,CAAN,CAAcd,EAAd,CAAiBC,EAAjB,CAAoBC,EAApB,CAAuB,OAAvB,EAAgCa,IAAhC,CAAqCC,QAArC,CAA8C,SAA9C,EAAyD,0DAAzD;AACD;AACF,KAbC,CAAF;AAeAnB,IAAAA,EAAE,CAAC,8EAAD,EAAiF,YAAY;AAC7F,YAAMC,MAAM,GAAG,CACb;AACEY,QAAAA,GAAG,EAAE,QADP;AAEEC,QAAAA,SAAS,EAAE,CACT,CAAC,KAAD,EAAQ,uBAAR,CADS,EAET;AAACE,UAAAA,KAAK,EAAE;AAAR,SAFS;AAFb,OADa,CAAf;;AAUA,UAAI;AACF,cAAM,6BAAiBf,MAAjB,CAAN;AACD,OAFD,CAEE,OAAOgB,KAAP,EAAc;AACdtB,QAAAA,MAAM,CAACsB,KAAD,CAAN,CAAcd,EAAd,CAAiBC,EAAjB,CAAoBC,EAApB,CAAuB,OAAvB,EAAgCa,IAAhC,CAAqCC,QAArC,CAA8C,SAA9C,EAAyD,0EAAzD;AACD;AACF,KAhBC,CAAF;AAkBAnB,IAAAA,EAAE,CAAC,+EAAD,EAAkF,YAAY;AAC9F,YAAMC,MAAM,GAAG,CACb;AACEY,QAAAA,GAAG,EAAE,QADP;AAEEC,QAAAA,SAAS,EAAE,CACT,KADS,EAET,uBAFS,EAGT;AAACE,UAAAA,KAAK,EAAE;AAAR,SAHS;AAFb,OADa,CAAf;;AAWA,UAAI;AACF,cAAM,6BAAiBf,MAAjB,CAAN;AACD,OAFD,CAEE,OAAOgB,KAAP,EAAc;AACdtB,QAAAA,MAAM,CAACsB,KAAD,CAAN,CAAcd,EAAd,CAAiBC,EAAjB,CAAoBC,EAApB,CAAuB,OAAvB,EAAgCa,IAAhC,CAAqCC,QAArC,CAA8C,SAA9C,EAAyD,oDAAzD;AACD;AACF,KAjBC,CAAF;AAmBAnB,IAAAA,EAAE,CAAC,oFAAD,EAAuF,YAAY;AACnG,YAAMC,MAAM,GAAG,CACb;AACEY,QAAAA,GAAG,EAAE,QADP;AAEEC,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,IAAP;AAAaC,UAAAA,KAAK,EAAE;AAApB,SADS,EAET;AAACA,UAAAA,KAAK,EAAE;AAAR,SAFS;AAFb,OADa,CAAf;;AAUA,UAAI;AACF,cAAM,6BAAiBf,MAAjB,CAAN;AACD,OAFD,CAEE,OAAOgB,KAAP,EAAc;AACdtB,QAAAA,MAAM,CAACsB,KAAD,CAAN,CAAcd,EAAd,CAAiBC,EAAjB,CAAoBC,EAApB,CAAuB,OAAvB,EAAgCa,IAAhC,CAAqCC,QAArC,CAA8C,SAA9C,EAAyD,2DAAzD;AACD;AACF,KAhBC,CAAF;AAkBAnB,IAAAA,EAAE,CAAC,oFAAD,EAAuF,YAAY;AACnG,YAAMC,MAAM,GAAG,CACb;AACEY,QAAAA,GAAG,EAAE,QADP;AAEEQ,QAAAA,YAAY,EAAE,QAFhB;AAGEP,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,IAAP;AAAaC,UAAAA,KAAK,EAAE;AAApB,SADS,EAET;AAACA,UAAAA,KAAK,EAAE;AAAR,SAFS;AAHb,OADa,CAAf;;AAWA,UAAI;AACF,cAAM,6BAAiBf,MAAjB,CAAN;AACD,OAFD,CAEE,OAAOgB,KAAP,EAAc;AACdtB,QAAAA,MAAM,CAACsB,KAAD,CAAN,CAAcd,EAAd,CAAiBC,EAAjB,CAAoBC,EAApB,CAAuB,OAAvB,EAAgCa,IAAhC,CAAqCC,QAArC,CAA8C,SAA9C,EAAyD,4DAAzD;AACD;AACF,KAjBC,CAAF;AAkBD,GAjMO,CAAR,CADgC,CAoMhC;;AACApB,EAAAA,QAAQ,CAAC,wCAAD,EAA2C,MAAM;AACvD,UAAME,MAAM,GAAG,CACb;AACEY,MAAAA,GAAG,EAAE;AADP,KADa,CAAf;AAMA,UAAMS,WAAW,GAAG,IAAIC,sBAAJ,CAAe;AACjCC,MAAAA,MAAM,EAAE,KADyB;AAEjCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM;AAFyB,KAAf,CAApB;AAYA,UAAMW,aAAa,GAAG,IAAIJ,sBAAJ,CAAe;AACnCC,MAAAA,MAAM,EAAE,KAD2B;AAEnCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM,EAMH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OANG;AAF2B,KAAf,CAAtB;AAoBA,UAAMY,mBAAmB,GAAG,IAAIL,sBAAJ,CAAe;AACzCC,MAAAA,MAAM,EAAE,KADiC;AAEzCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM,EAMH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OANG,EAcH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OAdG;AAFiC,KAAf,CAA5B;AA4BA,UAAMa,kBAAkB,GAAG,IAAIN,sBAAJ,CAAe;AACxCC,MAAAA,MAAM,EAAE,KADgC;AAExCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM;AAFgC,KAAf,CAA3B;AAYAhB,IAAAA,EAAE,CAAC,+BAAD,EAAkC,YAAY;AAC9C,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBU,WAAnB,CAA/B;AACA3B,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,IAAR;AAAcC,QAAAA,OAAO,EAAE;AAAvB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,iCAAD,EAAoC,YAAY;AAChD,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBe,aAAnB,CAA/B;AACAhC,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,KAAR;AAAeC,QAAAA,OAAO,EAAE,CAAC,+BAAD;AAAxB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,mCAAD,EAAsC,YAAY;AAClD,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBgB,mBAAnB,CAA/B;AACAjC,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,KAAR;AAAeC,QAAAA,OAAO,EAAE,CAAC,+BAAD,EAAkC,+BAAlC;AAAxB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,wBAAD,EAA2B,YAAY;AACvC,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAMC,SAAS,CAAC+B,GAAV,CAAcN,aAAd,CAAN;AACAhC,MAAAA,MAAM,CAACgC,aAAa,CAACO,QAAd,CAAuBL,kBAAvB,CAAD,CAAN,CAAmD1B,EAAnD,CAAsD6B,GAAtD,CAA0D,IAA1D;AACD,KAJC,CAAF;AAMAhC,IAAAA,EAAE,CAAC,iCAAD,EAAoC,YAAY;AAChD,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAMC,SAAS,CAAC+B,GAAV,CAAcL,mBAAd,CAAN;AACAjC,MAAAA,MAAM,CAACiC,mBAAmB,CAACM,QAApB,CAA6BL,kBAA7B,CAAD,CAAN,CAAyD1B,EAAzD,CAA4D6B,GAA5D,CAAgE,IAAhE;AACD,KAJC,CAAF;AAKD,GA5GO,CAAR,CArMgC,CAmThC;;AACAjC,EAAAA,QAAQ,CAAC,kDAAD,EAAqD,MAAM;AACjE,UAAME,MAAM,GAAG,CACb;AACEY,MAAAA,GAAG,EAAE,sBADP,CAC8B;;AAD9B,KADa,CAAf;AAMA,UAAMS,WAAW,GAAG,IAAIC,sBAAJ,CAAe;AACjCC,MAAAA,MAAM,EAAE,KADyB;AAEjCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM;AAFyB,KAAf,CAApB;AAYA,UAAMW,aAAa,GAAG,IAAIJ,sBAAJ,CAAe;AACnCC,MAAAA,MAAM,EAAE,KAD2B;AAEnCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM,EAMH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OANG;AAF2B,KAAf,CAAtB;AAoBA,UAAMY,mBAAmB,GAAG,IAAIL,sBAAJ,CAAe;AACzCC,MAAAA,MAAM,EAAE,KADiC;AAEzCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM,EAMH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OANG,EAcH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OAdG;AAFiC,KAAf,CAA5B;AA4BA,UAAMa,kBAAkB,GAAG,IAAIN,sBAAJ,CAAe;AACxCC,MAAAA,MAAM,EAAE,KADgC;AAExCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM;AAFgC,KAAf,CAA3B;AAYAhB,IAAAA,EAAE,CAAC,+BAAD,EAAkC,YAAY;AAC9C,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBU,WAAnB,CAA/B;AACA3B,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,IAAR;AAAcC,QAAAA,OAAO,EAAE;AAAvB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,iCAAD,EAAoC,YAAY;AAChD,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBe,aAAnB,CAA/B;AACAhC,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,KAAR;AAAeC,QAAAA,OAAO,EAAE,CAAC,+BAAD;AAAxB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,mCAAD,EAAsC,YAAY;AAClD,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBgB,mBAAnB,CAA/B;AACAjC,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,KAAR;AAAeC,QAAAA,OAAO,EAAE,CAAC,+BAAD,EAAkC,+BAAlC;AAAxB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,wBAAD,EAA2B,YAAY;AACvC,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAMC,SAAS,CAAC+B,GAAV,CAAcN,aAAd,CAAN;AACAhC,MAAAA,MAAM,CAACgC,aAAa,CAACO,QAAd,CAAuBL,kBAAvB,CAAD,CAAN,CAAmD1B,EAAnD,CAAsD6B,GAAtD,CAA0D,IAA1D;AACD,KAJC,CAAF;AAMAhC,IAAAA,EAAE,CAAC,iCAAD,EAAoC,YAAY;AAChD,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAMC,SAAS,CAAC+B,GAAV,CAAcL,mBAAd,CAAN;AACAjC,MAAAA,MAAM,CAACiC,mBAAmB,CAACM,QAApB,CAA6BL,kBAA7B,CAAD,CAAN,CAAyD1B,EAAzD,CAA4D6B,GAA5D,CAAgE,IAAhE;AACD,KAJC,CAAF;AAKD,GA5GO,CAAR,CApTgC,CAkahC;;AACAjC,EAAAA,QAAQ,CAAC,8DAAD,EAAiE,MAAM;AAC7E,UAAME,MAAM,GAAG,CAAC,sBAAD,CAAf,CAD6E,CACpC;;AAEzC,UAAMqB,WAAW,GAAG,IAAIC,sBAAJ,CAAe;AACjCC,MAAAA,MAAM,EAAE,KADyB;AAEjCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM;AAFyB,KAAf,CAApB;AAYA,UAAMW,aAAa,GAAG,IAAIJ,sBAAJ,CAAe;AACnCC,MAAAA,MAAM,EAAE,KAD2B;AAEnCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM,EAMH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OANG;AAF2B,KAAf,CAAtB;AAoBA,UAAMY,mBAAmB,GAAG,IAAIL,sBAAJ,CAAe;AACzCC,MAAAA,MAAM,EAAE,KADiC;AAEzCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM,EAMH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OANG,EAcH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OAdG;AAFiC,KAAf,CAA5B;AA4BA,UAAMa,kBAAkB,GAAG,IAAIN,sBAAJ,CAAe;AACxCC,MAAAA,MAAM,EAAE,KADgC;AAExCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM;AAFgC,KAAf,CAA3B;AAYAhB,IAAAA,EAAE,CAAC,+BAAD,EAAkC,YAAY;AAC9C,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBU,WAAnB,CAA/B;AACA3B,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,IAAR;AAAcC,QAAAA,OAAO,EAAE;AAAvB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,iCAAD,EAAoC,YAAY;AAChD,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBe,aAAnB,CAA/B;AACAhC,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,KAAR;AAAeC,QAAAA,OAAO,EAAE,CAAC,+BAAD;AAAxB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,mCAAD,EAAsC,YAAY;AAClD,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBgB,mBAAnB,CAA/B;AACAjC,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,KAAR;AAAeC,QAAAA,OAAO,EAAE,CAAC,+BAAD,EAAkC,+BAAlC;AAAxB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,wBAAD,EAA2B,YAAY;AACvC,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAMC,SAAS,CAAC+B,GAAV,CAAcN,aAAd,CAAN;AACAhC,MAAAA,MAAM,CAACgC,aAAa,CAACO,QAAd,CAAuBL,kBAAvB,CAAD,CAAN,CAAmD1B,EAAnD,CAAsD6B,GAAtD,CAA0D,IAA1D;AACD,KAJC,CAAF;AAMAhC,IAAAA,EAAE,CAAC,iCAAD,EAAoC,YAAY;AAChD,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAMC,SAAS,CAAC+B,GAAV,CAAcL,mBAAd,CAAN;AACAjC,MAAAA,MAAM,CAACiC,mBAAmB,CAACM,QAApB,CAA6BL,kBAA7B,CAAD,CAAN,CAAyD1B,EAAzD,CAA4D6B,GAA5D,CAAgE,IAAhE;AACD,KAJC,CAAF;AAKD,GAxGO,CAAR,CAnagC,CA8gBhC;;AACAjC,EAAAA,QAAQ,CAAC,yCAAD,EAA4C,MAAM;AACxD,UAAME,MAAM,GAAG,CACb;AACEY,MAAAA,GAAG,EAAE,QADP;AAEEC,MAAAA,SAAS,EAAE,CAAC;AAACC,QAAAA,IAAI,EAAE,IAAP;AAAaC,QAAAA,KAAK,EAAE;AAApB,OAAD;AAFb,KADa,CAAf;AAOA,UAAMM,WAAW,GAAG,IAAIC,sBAAJ,CAAe;AACjCC,MAAAA,MAAM,EAAE,KADyB;AAEjCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM,EAMH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OANG;AAFyB,KAAf,CAApB;AAoBA,UAAMW,aAAa,GAAG,IAAIJ,sBAAJ,CAAe;AACnCC,MAAAA,MAAM,EAAE,KAD2B;AAEnCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM,EAMH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OANG;AAF2B,KAAf,CAAtB;AAoBA,UAAMa,kBAAkB,GAAG,IAAIN,sBAAJ,CAAe;AACxCC,MAAAA,MAAM,EAAE,KADgC;AAExCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM;AAFgC,KAAf,CAA3B;AAYAhB,IAAAA,EAAE,CAAC,+BAAD,EAAkC,YAAY;AAC9C,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBU,WAAnB,CAA/B;AACA3B,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,IAAR;AAAcC,QAAAA,OAAO,EAAE;AAAvB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,iCAAD,EAAoC,YAAY;AAChD,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBe,aAAnB,CAA/B;AACAhC,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,KAAR;AAAeC,QAAAA,OAAO,EAAE,CAAC,+BAAD;AAAxB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,wBAAD,EAA2B,YAAY;AACvC,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAMC,SAAS,CAAC+B,GAAV,CAAcN,aAAd,CAAN;AACAhC,MAAAA,MAAM,CAACgC,aAAa,CAACO,QAAd,CAAuBL,kBAAvB,CAAD,CAAN,CAAmD1B,EAAnD,CAAsD6B,GAAtD,CAA0D,IAA1D;AACD,KAJC,CAAF;AAKD,GA7EO,CAAR,CA/gBgC,CA8lBhC;;AACAjC,EAAAA,QAAQ,CAAC,mDAAD,EAAsD,MAAM;AAClE,UAAME,MAAM,GAAG,CACb;AACEY,MAAAA,GAAG,EAAE,sBADP;AAC+B;AAC7BC,MAAAA,SAAS,EAAE,CAAC;AAACC,QAAAA,IAAI,EAAE,MAAP;AAAeC,QAAAA,KAAK,EAAE;AAAtB,OAAD,CAFb,CAEmE;;AAFnE,KADa,CAAf;AAOA,UAAMM,WAAW,GAAG,IAAIC,sBAAJ,CAAe;AACjCC,MAAAA,MAAM,EAAE,KADyB;AAEjCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM,EAMH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OANG;AAFyB,KAAf,CAApB;AAoBA,UAAMW,aAAa,GAAG,IAAIJ,sBAAJ,CAAe;AACnCC,MAAAA,MAAM,EAAE,KAD2B;AAEnCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM,EAMH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OANG;AAF2B,KAAf,CAAtB;AAoBA,UAAMmB,kBAAkB,GAAG,IAAIZ,sBAAJ,CAAe;AACxCC,MAAAA,MAAM,EAAE,KADgC;AAExCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM,EAMH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJV,OANG,EAWH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJV,OAXG,EAgBH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJV,OAhBG,EAqBH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJV,OArBG,EA0BH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJV,OA1BG;AAFgC,KAAf,CAA3B;AAqCA,UAAMa,kBAAkB,GAAG,IAAIN,sBAAJ,CAAe;AACxCC,MAAAA,MAAM,EAAE,KADgC;AAExCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM;AAFgC,KAAf,CAA3B;AAYAhB,IAAAA,EAAE,CAAC,+BAAD,EAAkC,YAAY;AAC9C,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBU,WAAnB,CAA/B;AACA3B,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,IAAR;AAAcC,QAAAA,OAAO,EAAE;AAAvB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,iCAAD,EAAoC,YAAY;AAChD,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBe,aAAnB,CAA/B;AACAhC,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,KAAR;AAAeC,QAAAA,OAAO,EAAE,CAAC,+BAAD;AAAxB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,iCAAD,EAAoC,YAAY;AAChD,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBuB,kBAAnB,CAA/B;AACAxC,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,KAAR;AAAeC,QAAAA,OAAO,EAAE,CACtD,+BADsD,EAEtD,+BAFsD,EAGtD,+BAHsD,EAItD,+BAJsD,EAKtD,+BALsD;AAAxB,OAAhC;AAOD,KAVC,CAAF;AAYA/B,IAAAA,EAAE,CAAC,8BAAD,EAAiC,YAAY;AAC7C,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAMC,SAAS,CAAC+B,GAAV,CAAcE,kBAAd,CAAN;AACAxC,MAAAA,MAAM,CAACwC,kBAAkB,CAACD,QAAnB,CAA4BL,kBAA5B,CAAD,CAAN,CAAwD1B,EAAxD,CAA2D6B,GAA3D,CAA+D,IAA/D;AACD,KAJC,CAAF;AAMAhC,IAAAA,EAAE,CAAC,wBAAD,EAA2B,YAAY;AACvC,YAAME,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAMC,SAAS,CAAC+B,GAAV,CAAcN,aAAd,CAAN;AACAhC,MAAAA,MAAM,CAACgC,aAAa,CAACO,QAAd,CAAuBL,kBAAvB,CAAD,CAAN,CAAmD1B,EAAnD,CAAsD6B,GAAtD,CAA0D,IAA1D;AACD,KAJC,CAAF;AAKD,GApIO,CAAR,CA/lBgC,CAquBhC;;AACAjC,EAAAA,QAAQ,CAAC,iCAAD,EAAoC,MAAM;AAChD,UAAMqC,SAAS,GAAG,CAChB;AACEvB,MAAAA,GAAG,EAAE,QADP;AAEEO,MAAAA,IAAI,EAAE,MAFR;AAGEM,MAAAA,IAAI,EAAE;AAHR,KADgB,CAAlB;AAQA,UAAMW,WAAW,GAAG,CAClB;AACExB,MAAAA,GAAG,EAAE,QADP;AAEEG,MAAAA,KAAK,EAAE;AAFT,KADkB,CAApB;AAOA,UAAMM,WAAW,GAAG,IAAIC,sBAAJ,CAAe;AACjCC,MAAAA,MAAM,EAAE,KADyB;AAEjCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJb,OADM;AAFyB,KAAf,CAApB;AAeA,UAAMsB,gBAAgB,GAAG,IAAIf,sBAAJ,CAAe;AACtCC,MAAAA,MAAM,EAAE,KAD8B;AAEtCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM,EAMH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDO,QAAAA,IAAI,EAAE,GAFL;AAGDM,QAAAA,IAAI,EAAE,GAHL;AAIDZ,QAAAA,SAAS,EAAE,CACT;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SADS,EAET;AAACD,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAFS;AAJV,OANG;AAF8B,KAAf,CAAzB;AAoBA,UAAMuB,kBAAkB,GAAG,IAAIhB,sBAAJ,CAAe;AACxCC,MAAAA,MAAM,EAAE,KADgC;AAExCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM,EAMH;AACDH,QAAAA,GAAG,EAAE,KADJ;AAEDG,QAAAA,KAAK,EAAE;AAFN,OANG;AAFgC,KAAf,CAA3B;AAeA,UAAMa,kBAAkB,GAAG,IAAIN,sBAAJ,CAAe;AACxCC,MAAAA,MAAM,EAAE,KADgC;AAExCC,MAAAA,MAAM,EAAE,CACN;AACEZ,QAAAA,GAAG,EAAE,KADP;AAEEO,QAAAA,IAAI,EAAE,GAFR;AAGEM,QAAAA,IAAI,EAAE,GAHR;AAIEZ,QAAAA,SAAS,EAAE,CAAC;AAACC,UAAAA,IAAI,EAAE,GAAP;AAAYC,UAAAA,KAAK,EAAE;AAAnB,SAAD;AAJb,OADM;AAFgC,KAAf,CAA3B;AAYAhB,IAAAA,EAAE,CAAC,oCAAD,EAAuC,YAAY;AACnD,YAAME,SAAS,GAAG,MAAM,6BAAiBkC,SAAjB,CAAxB;AACA,YAAM;AAACN,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBU,WAAnB,CAA/B;AACA3B,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,IAAR;AAAcC,QAAAA,OAAO,EAAE;AAAvB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,gCAAD,EAAmC,YAAY;AAC/C,YAAME,SAAS,GAAG,MAAM,6BAAiBmC,WAAjB,CAAxB;AACA,YAAM;AAACP,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmBU,WAAnB,CAA/B;AACA3B,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,IAAR;AAAcC,QAAAA,OAAO,EAAE;AAAvB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,gCAAD,EAAmC,YAAY;AAC/C,YAAME,SAAS,GAAG,MAAM,6BAAiBkC,SAAjB,CAAxB;AACA,YAAM;AAACN,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmB0B,gBAAnB,CAA/B;AACA3C,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,KAAR;AAAeC,QAAAA,OAAO,EAAE,CAAC,+BAAD;AAAxB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,kCAAD,EAAqC,YAAY;AACjD,YAAME,SAAS,GAAG,MAAM,6BAAiBmC,WAAjB,CAAxB;AACA,YAAM;AAACP,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmB2B,kBAAnB,CAA/B;AACA5C,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,KAAR;AAAeC,QAAAA,OAAO,EAAE,CAAC,+BAAD;AAAxB,OAAhC;AACD,KAJC,CAAF;AAMA/B,IAAAA,EAAE,CAAC,8BAAD,EAAiC,YAAY;AAC7C,YAAME,SAAS,GAAG,MAAM,6BAAiBkC,SAAjB,CAAxB;AACA,YAAMlC,SAAS,CAAC+B,GAAV,CAAcK,gBAAd,CAAN;AACA3C,MAAAA,MAAM,CAAC2C,gBAAgB,CAACJ,QAAjB,CAA0BL,kBAA1B,CAAD,CAAN,CAAsD1B,EAAtD,CAAyD6B,GAAzD,CAA6D,IAA7D;AACD,KAJC,CAAF;AAMAhC,IAAAA,EAAE,CAAC,gCAAD,EAAmC,YAAY;AAC/C,YAAME,SAAS,GAAG,MAAM,6BAAiBmC,WAAjB,CAAxB;AACA,YAAMnC,SAAS,CAAC+B,GAAV,CAAcM,kBAAd,CAAN;AACA5C,MAAAA,MAAM,CAAC4C,kBAAkB,CAACL,QAAnB,CAA4BL,kBAA5B,CAAD,CAAN,CAAwD1B,EAAxD,CAA2D6B,GAA3D,CAA+D,IAA/D;AACD,KAJC,CAAF;AAKD,GAjHO,CAAR;AAmHAjC,EAAAA,QAAQ,CAAC,cAAD,EAAiB,MAAM;AAC7BC,IAAAA,EAAE,CAAC,qDAAD,EAAwD,YAAY;AACpE,YAAMC,MAAM,GAAG,CACb;AACEY,QAAAA,GAAG,EAAE,QADP;AAEE2B,QAAAA,YAAY,EAAE,CAAC;AAAChB,UAAAA,MAAM,EAAE;AAAT,SAAD;AAFhB,OADa,CAAf;AAOA,YAAMiB,MAAM,GAAG,IAAIlB,sBAAJ,CAAe;AAC5BC,QAAAA,MAAM,EAAE,0BADoB;AAE5BC,QAAAA,MAAM,EAAE,CACN;AACEZ,UAAAA,GAAG,EAAE,KADP;AAEEO,UAAAA,IAAI,EAAE,GAFR;AAGEM,UAAAA,IAAI,EAAE,GAHR;AAIEZ,UAAAA,SAAS,EAAE,CAAC;AAACC,YAAAA,IAAI,EAAE,GAAP;AAAYC,YAAAA,KAAK,EAAE;AAAnB,WAAD;AAJb,SADM;AAFoB,OAAf,CAAf;AAYA,YAAMd,SAAS,GAAG,MAAM,6BAAiBD,MAAjB,CAAxB;AACA,YAAM;AAAC6B,QAAAA,KAAD;AAAQC,QAAAA;AAAR,UAAmB,MAAM7B,SAAS,CAACU,QAAV,CAAmB6B,MAAnB,CAA/B;AAEA9C,MAAAA,MAAM,CAAC;AAACmC,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAD,CAAN,CAAyB5B,EAAzB,CAA4B6B,GAA5B,CAAgC;AAACF,QAAAA,KAAK,EAAE,KAAR;AAAeC,QAAAA,OAAO,EAAE,CAAC,+BAAD;AAAxB,OAAhC;AACD,KAxBC,CAAF;AAyBD,GA1BO,CAAR;AA2BD,CAp3BO,CAAR","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-exclusion';\n\nconst {expect} = chai;\nchai.use(chaiAsPromised);\n\n// Factory validation\ndescribe('field-exclusion', () => {\n describe('#validate: Check configuration validation', () => {\n it('Creates a validator from simple config', async () => {\n const config = [/^500$/u];\n\n const validator = await validatorFactory(config);\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('Creates a validator from complex config', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n const validator = await validatorFactory(config);\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('Fails to create a validator from invalid config - tag', async () => {\n const config = [\n {\n tag: '500',\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n await 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('Fails to create a validator from invalid config - msising array', async () => {\n const config = {\n tag: '500',\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n };\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration array not provided');\n }\n });\n\n it('Fails to create a validator from invalid config - code', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: 9, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: code');\n }\n });\n\n it('Fails to create a validator from invalid config - value', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: /9/u, value: 'Fenni'}]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: value');\n }\n });\n\n it('Fails to create a validator from invalid config - exclusion: value, ind1', async () => {\n const config = [\n {\n tag: /^500$/u,\n value: /^500$/u,\n ind1: /^500$/u,\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n await 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('Fails to create a validator from invalid config - missing mandatory: tag', async () => {\n const config = [\n {\n value: /^500$/u,\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: tag');\n }\n });\n\n it('Fails to create a validator from invalid config - subfield not object: array', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [\n ['/9/', '/^(?!FENNI<KEEP>).*$/'],\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - subfield: /9/,/^(?!FENNI<KEEP>).*$/ not object');\n }\n });\n\n it('Fails to create a validator from invalid config - subfield not object: string', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [\n '/9/',\n '/^(?!FENNI<KEEP>).*$/',\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - subfield: /9/ not object');\n }\n });\n\n it('Fails to create a validator from invalid config - missing mandatory: subfield.code', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [\n {code: /9/u, value: /^(?!FENNI<KEEP>).*$/u},\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: code');\n }\n });\n\n it('Fails to create a validator from invalid config - unidentified field: unidentified', async () => {\n const config = [\n {\n tag: /^500$/u,\n unidentified: /^500$/u,\n subfields: [\n {code: /9/u, value: /^(?!FENNI<KEEP>).*$/u},\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n await validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - unidentified value: unidentified');\n }\n });\n });\n\n // Simple configuration https://github.com/NatLibFi/marc-record-validators-melinda/issues/45\n describe('#validate: Simple configuration (spec)', () => {\n const config = [\n {\n tag: /^500$/u\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalidDouble = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }, {\n tag: '500',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid (spec)', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordValid);\n expect({valid, message}).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordInvalid);\n expect({valid, message}).to.eql({valid: false, message: ['Field $500 should be excluded']});\n });\n\n it('Finds the record invalid - double', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordInvalidDouble);\n expect({valid, message}).to.eql({valid: false, message: ['Field $500 should be excluded', 'Field $500 should be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalid);\n expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n\n it('Repairs invalid record - double', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalidDouble);\n expect(recordInvalidDouble.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n // Simple multi tag configuration\n describe('#validate: Simple multi tag configuration (spec)', () => {\n const config = [\n {\n tag: /^(648|650|651|655)$/u // eslint-disable-line prefer-named-capture-group\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '648',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalidDouble = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '648',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }, {\n tag: '650',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid (spec)', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordValid);\n expect({valid, message}).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordInvalid);\n expect({valid, message}).to.eql({valid: false, message: ['Field $648 should be excluded']});\n });\n\n it('Finds the record invalid - double', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordInvalidDouble);\n expect({valid, message}).to.eql({valid: false, message: ['Field $648 should be excluded', 'Field $650 should be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalid);\n expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n\n it('Repairs invalid record - double', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalidDouble);\n expect(recordInvalidDouble.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n // Simple multi tag configuration\n describe('#validate: Simple multi tag configuration - No object (spec)', () => {\n const config = [/^(648|650|651|655)$/u]; // eslint-disable-line prefer-named-capture-group\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '648',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalidDouble = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '648',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }, {\n tag: '650',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid (spec)', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordValid);\n expect({valid, message}).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordInvalid);\n expect({valid, message}).to.eql({valid: false, message: ['Field $648 should be excluded']});\n });\n\n it('Finds the record invalid - double', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordInvalidDouble);\n expect({valid, message}).to.eql({valid: false, message: ['Field $648 should be excluded', 'Field $650 should be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalid);\n expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n\n it('Repairs invalid record - double', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalidDouble);\n expect(recordInvalidDouble.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n\n // Complex configuration https://github.com/NatLibFi/marc-record-validators-melinda/issues/45\n describe('#validate: Complex configuration (spec)', () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '9', value: 'FENNI<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid (spec)', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordValid);\n expect({valid, message}).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordInvalid);\n expect({valid, message}).to.eql({valid: false, message: ['Field $500 should be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalid);\n expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n // Complex multi tag configuration\n describe('#validate: Complex multi tag configuration (spec)', () => {\n const config = [\n {\n tag: /^(648|650|651|655)$/u, // eslint-disable-line prefer-named-capture-group\n subfields: [{code: /^2$/u, value: /^(ysa|musa|allars|cilla)$/u}] // eslint-disable-line prefer-named-capture-group\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '650',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '2', value: 'yso'}\n ]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '650',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '2', value: 'ysa'}\n ]\n }\n ]\n });\n\n const recordInvalidMulti = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '648',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: '2', value: 'ysa'}]\n }, {\n tag: '650',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: '2', value: 'ysa'}]\n }, {\n tag: '650',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: '2', value: 'ysa'}]\n }, {\n tag: '651',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: '2', value: 'ysa'}]\n }, {\n tag: '655',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: '2', value: 'ysa'}]\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid (spec)', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordValid);\n expect({valid, message}).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordInvalid);\n expect({valid, message}).to.eql({valid: false, message: ['Field $650 should be excluded']});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(recordInvalidMulti);\n expect({valid, message}).to.eql({valid: false, message: [\n 'Field $648 should be excluded',\n 'Field $650 should be excluded',\n 'Field $650 should be excluded',\n 'Field $651 should be excluded',\n 'Field $655 should be excluded'\n ]});\n });\n\n it('Repairs invalid multi record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalidMulti);\n expect(recordInvalidMulti.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalid);\n expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n // More special cases to increase coverage\n describe('#validate: Custom configuration', () => {\n const configInd = [\n {\n tag: /^500$/u,\n ind1: /^8$/u,\n ind2: /^4$/u\n }\n ];\n\n const configValue = [\n {\n tag: /^500$/u,\n value: /^8$/u\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '500',\n ind1: '8',\n ind2: '0',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordIndInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: '8',\n ind2: '4',\n subfields: [\n {code: 'a', value: 'Foo Bar Foo Bar Foo Bar'},\n {code: '9', value: 'ALMA<KEEP>'}\n ]\n }\n ]\n });\n\n const recordValueInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n value: '8'\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid - Ind1&Ind2', async () => {\n const validator = await validatorFactory(configInd);\n const {valid, message} = await validator.validate(recordValid);\n expect({valid, message}).to.eql({valid: true, message: []});\n });\n\n it('Finds the record valid - Value', async () => {\n const validator = await validatorFactory(configValue);\n const {valid, message} = await validator.validate(recordValid);\n expect({valid, message}).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid - Ind', async () => {\n const validator = await validatorFactory(configInd);\n const {valid, message} = await validator.validate(recordIndInvalid);\n expect({valid, message}).to.eql({valid: false, message: ['Field $500 should be excluded']});\n });\n\n it('Finds the record invalid - Value', async () => {\n const validator = await validatorFactory(configValue);\n const {valid, message} = await validator.validate(recordValueInvalid);\n expect({valid, message}).to.eql({valid: false, message: ['Field $500 should be excluded']});\n });\n\n it('Repairs invalid record - Ind', async () => {\n const validator = await validatorFactory(configInd);\n await validator.fix(recordIndInvalid);\n expect(recordIndInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n\n it('Repairs invalid record - Value', async () => {\n const validator = await validatorFactory(configValue);\n await validator.fix(recordValueInvalid);\n expect(recordValueInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n describe('Dependencies', () => {\n it('Finds the record invalid because dependency matches', async () => {\n const config = [\n {\n tag: /^041$/u,\n dependencies: [{leader: /^.{6}a/u}]\n }\n ];\n\n const record = new MarcRecord({\n leader: '00000cam^a22003372i^4500',\n fields: [\n {\n tag: '041',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const validator = await validatorFactory(config);\n const {valid, message} = await validator.validate(record);\n\n expect({valid, message}).to.eql({valid: false, message: ['Field $041 should be excluded']});\n });\n });\n});\n"],"file":"field-exclusion.spec.js"}
|
|
@@ -86,6 +86,35 @@ describe('fields-present', () => {
|
|
|
86
86
|
messages: []
|
|
87
87
|
});
|
|
88
88
|
});
|
|
89
|
+
it('Finds the record valid', async () => {
|
|
90
|
+
const tagPatterns = [/^(020|022|024)$/u]; // eslint-disable-line
|
|
91
|
+
|
|
92
|
+
const validator = await (0, _fieldsPresent.default)(tagPatterns);
|
|
93
|
+
const record = new _marcRecord.MarcRecord({
|
|
94
|
+
fields: [{
|
|
95
|
+
tag: '020',
|
|
96
|
+
ind1: ' ',
|
|
97
|
+
ind2: '0',
|
|
98
|
+
subfields: [{
|
|
99
|
+
code: 'a',
|
|
100
|
+
value: 'foo'
|
|
101
|
+
}]
|
|
102
|
+
}, {
|
|
103
|
+
tag: '040',
|
|
104
|
+
ind1: ' ',
|
|
105
|
+
ind2: '0',
|
|
106
|
+
subfields: [{
|
|
107
|
+
code: 'a',
|
|
108
|
+
value: 'foo'
|
|
109
|
+
}]
|
|
110
|
+
}]
|
|
111
|
+
});
|
|
112
|
+
const result = await validator.validate(record);
|
|
113
|
+
expect(result).to.eql({
|
|
114
|
+
valid: true,
|
|
115
|
+
messages: []
|
|
116
|
+
});
|
|
117
|
+
});
|
|
89
118
|
it('Finds the record invalid', async () => {
|
|
90
119
|
const tagPatterns = [/^5..$/u, /^FOO$/u];
|
|
91
120
|
const validator = await (0, _fieldsPresent.default)(tagPatterns);
|
|
@@ -98,6 +127,14 @@ describe('fields-present', () => {
|
|
|
98
127
|
code: 'a',
|
|
99
128
|
value: 'foo'
|
|
100
129
|
}]
|
|
130
|
+
}, {
|
|
131
|
+
tag: '500',
|
|
132
|
+
ind1: ' ',
|
|
133
|
+
ind2: '0',
|
|
134
|
+
subfields: [{
|
|
135
|
+
code: 'a',
|
|
136
|
+
value: 'foo'
|
|
137
|
+
}]
|
|
101
138
|
}, {
|
|
102
139
|
tag: 'BAR',
|
|
103
140
|
ind1: '1',
|
|
@@ -111,7 +148,7 @@ describe('fields-present', () => {
|
|
|
111
148
|
const result = await validator.validate(record);
|
|
112
149
|
expect(result).to.eql({
|
|
113
150
|
valid: false,
|
|
114
|
-
messages: ['The following tag patterns are not present in the record tag field:
|
|
151
|
+
messages: ['The following tag patterns are not present in the record tag field: /^FOO$/u']
|
|
115
152
|
});
|
|
116
153
|
});
|
|
117
154
|
});
|
|
@@ -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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
|
|
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"}
|
package/package.json
CHANGED
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
"url": "git@github.com:natlibfi/marc-record-validators-melinda.git"
|
|
15
15
|
},
|
|
16
16
|
"license": "LGPL-3.0+",
|
|
17
|
-
"version": "
|
|
17
|
+
"version": "9.0.0",
|
|
18
18
|
"main": "./dist/index.js",
|
|
19
19
|
"publishConfig": {
|
|
20
20
|
"access": "public"
|
|
21
21
|
},
|
|
22
22
|
"engines": {
|
|
23
|
-
"node": ">=
|
|
23
|
+
"node": ">=14"
|
|
24
24
|
},
|
|
25
25
|
"scripts": {
|
|
26
26
|
"prepare": "npm run build",
|
|
@@ -30,14 +30,12 @@
|
|
|
30
30
|
"test": "npm run lint && npm run test:base -- src/**/*.spec.js && npm run coverage",
|
|
31
31
|
"test:dev": "npm run lint:dev && npm run test:base -- src/**/*.spec.js && npm run coverage",
|
|
32
32
|
"coverage": "nyc check-coverage --per-file",
|
|
33
|
-
"build": "babel src --source-maps --copy-files --delete-dir-on-start --out-dir=dist"
|
|
34
|
-
"watch": "cross-env DEBUG=1 NODE_ENV=test chokidar src -c 'npm run test:dev'",
|
|
35
|
-
"watch:validator": "cross-env DEBUG=1 NODE_ENV=test chokidar src/$VALIDATOR.js src/$VALIDATOR.spec.js -c 'npm run lint src/$VALIDATOR.js src/$VALIDATOR.spec.js && npm run test:unit:base -- src/$VALIDATOR.spec.js && npm run coverage'"
|
|
33
|
+
"build": "babel src --source-maps --copy-files --delete-dir-on-start --out-dir=dist"
|
|
36
34
|
},
|
|
37
35
|
"dependencies": {
|
|
38
36
|
"@babel/register": "^7.15.3",
|
|
39
37
|
"@natlibfi/issn-verify": "^1.0.0",
|
|
40
|
-
"@natlibfi/marc-record": "^
|
|
38
|
+
"@natlibfi/marc-record": "^7.0.0",
|
|
41
39
|
"cld3-asm": "^3.1.1",
|
|
42
40
|
"debug": "^4.3.2",
|
|
43
41
|
"isbn3": "^1.1.14",
|
|
@@ -46,21 +44,20 @@
|
|
|
46
44
|
"xml2js": ">=0.4.23 <1.0.0"
|
|
47
45
|
},
|
|
48
46
|
"peerDependencies": {
|
|
49
|
-
"@natlibfi/marc-record-validate": "^
|
|
47
|
+
"@natlibfi/marc-record-validate": "^7.0.0"
|
|
50
48
|
},
|
|
51
49
|
"devDependencies": {
|
|
52
50
|
"@babel/cli": "^7.15.7",
|
|
53
51
|
"@babel/core": "^7.15.5",
|
|
54
52
|
"@babel/preset-env": "^7.15.6",
|
|
55
53
|
"@babel/eslint-parser": "^7.15.7",
|
|
56
|
-
"@natlibfi/eslint-config-melinda-backend": "^
|
|
54
|
+
"@natlibfi/eslint-config-melinda-backend": "^2.0.0",
|
|
57
55
|
"babel-plugin-istanbul": "^6.0.0",
|
|
58
56
|
"babel-plugin-rewire": "^1.2.0",
|
|
59
57
|
"chai": "^4.3.4",
|
|
60
58
|
"chai-as-promised": "^7.1.1",
|
|
61
|
-
"chokidar-cli": "^2.1.0",
|
|
62
59
|
"cross-env": "^7.0.3",
|
|
63
|
-
"eslint": "^
|
|
60
|
+
"eslint": "^8.3.0",
|
|
64
61
|
"fetch-mock": "^9.11.0",
|
|
65
62
|
"mocha": "^9.1.2",
|
|
66
63
|
"nyc": "^15.1.0"
|
package/src/field-exclusion.js
CHANGED
|
@@ -67,7 +67,8 @@ function forEach(obj, fun) {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
function isRegExp(re) {
|
|
70
|
-
|
|
70
|
+
const result = re instanceof RegExp;
|
|
71
|
+
return result;
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
export default function (config) {
|
|
@@ -76,13 +77,14 @@ export default function (config) {
|
|
|
76
77
|
}
|
|
77
78
|
|
|
78
79
|
// Transform RegExp-only elements to objects
|
|
79
|
-
|
|
80
|
+
const objOnlyConfigs = config.map(e => isRegExp(e) ? {tag: e} : e);
|
|
81
|
+
configValid(objOnlyConfigs);
|
|
80
82
|
|
|
81
83
|
return {
|
|
82
84
|
description:
|
|
83
85
|
'Checks that the record does not contain the configured fields',
|
|
84
|
-
validate: record => excludeFields(record,
|
|
85
|
-
fix: record => excludeFields(record,
|
|
86
|
+
validate: record => excludeFields(record, objOnlyConfigs, false),
|
|
87
|
+
fix: record => excludeFields(record, objOnlyConfigs, true)
|
|
86
88
|
};
|
|
87
89
|
|
|
88
90
|
/// /////////////////////////////////////////
|