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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/.github/CODEOWNERS +10 -0
  2. package/.github/dependabot.yml +40 -0
  3. package/.github/workflows/melinda-node-tests.yml +61 -0
  4. package/LICENSE.txt +21 -165
  5. package/README.md +1 -1
  6. package/dist/access-rights.js +0 -27
  7. package/dist/access-rights.js.map +1 -1
  8. package/dist/access-rights.spec.js +0 -27
  9. package/dist/access-rights.spec.js.map +1 -1
  10. package/dist/double-commas.js +0 -27
  11. package/dist/double-commas.js.map +1 -1
  12. package/dist/double-commas.spec.js +0 -27
  13. package/dist/double-commas.spec.js.map +1 -1
  14. package/dist/duplicates-ind1.js +0 -27
  15. package/dist/duplicates-ind1.js.map +1 -1
  16. package/dist/duplicates-ind1.spec.js +0 -27
  17. package/dist/duplicates-ind1.spec.js.map +1 -1
  18. package/dist/empty-fields.js +0 -28
  19. package/dist/empty-fields.js.map +1 -1
  20. package/dist/empty-fields.spec.js +0 -27
  21. package/dist/empty-fields.spec.js.map +1 -1
  22. package/dist/ending-punctuation-conf.js +0 -28
  23. package/dist/ending-punctuation-conf.js.map +1 -1
  24. package/dist/ending-punctuation.js.map +1 -1
  25. package/dist/ending-punctuation.spec.js +0 -27
  26. package/dist/ending-punctuation.spec.js.map +1 -1
  27. package/dist/field-exclusion.js +0 -28
  28. package/dist/field-exclusion.js.map +1 -1
  29. package/dist/field-exclusion.spec.js +0 -27
  30. package/dist/field-exclusion.spec.js.map +1 -1
  31. package/dist/field-structure.js +0 -28
  32. package/dist/field-structure.js.map +1 -1
  33. package/dist/field-structure.spec.js +0 -27
  34. package/dist/field-structure.spec.js.map +1 -1
  35. package/dist/fields-present.js +0 -27
  36. package/dist/fields-present.js.map +1 -1
  37. package/dist/fields-present.spec.js +0 -27
  38. package/dist/fields-present.spec.js.map +1 -1
  39. package/dist/fixed-fields.js +0 -27
  40. package/dist/fixed-fields.js.map +1 -1
  41. package/dist/fixed-fields.spec.js +0 -27
  42. package/dist/fixed-fields.spec.js.map +1 -1
  43. package/dist/identical-fields.js +0 -28
  44. package/dist/identical-fields.js.map +1 -1
  45. package/dist/identical-fields.spec.js +0 -27
  46. package/dist/identical-fields.spec.js.map +1 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/isbn-issn.js +0 -27
  49. package/dist/isbn-issn.js.map +1 -1
  50. package/dist/isbn-issn.spec.js +0 -27
  51. package/dist/isbn-issn.spec.js.map +1 -1
  52. package/dist/item-language.js +0 -27
  53. package/dist/item-language.js.map +1 -1
  54. package/dist/item-language.spec.js +0 -27
  55. package/dist/item-language.spec.js.map +1 -1
  56. package/dist/punctuation/index.js +21 -1
  57. package/dist/punctuation/index.js.map +1 -1
  58. package/dist/punctuation/rules/aut.js.map +1 -1
  59. package/dist/punctuation/rules/bib.js +8 -1
  60. package/dist/punctuation/rules/bib.js.map +1 -1
  61. package/dist/punctuation/rules/index.js.map +1 -1
  62. package/dist/punctuation.spec.js +49 -140
  63. package/dist/punctuation.spec.js.map +1 -1
  64. package/dist/resolvable-ext-references-melinda.js +0 -27
  65. package/dist/resolvable-ext-references-melinda.js.map +1 -1
  66. package/dist/resolvable-ext-references-melinda.spec.js +3 -29
  67. package/dist/resolvable-ext-references-melinda.spec.js.map +1 -1
  68. package/dist/sort-tags.js +0 -27
  69. package/dist/sort-tags.js.map +1 -1
  70. package/dist/sort-tags.spec.js +0 -27
  71. package/dist/sort-tags.spec.js.map +1 -1
  72. package/dist/subfield-exclusion.js +0 -28
  73. package/dist/subfield-exclusion.js.map +1 -1
  74. package/dist/subfield-exclusion.spec.js +0 -27
  75. package/dist/subfield-exclusion.spec.js.map +1 -1
  76. package/dist/unicode-decomposition.js +0 -28
  77. package/dist/unicode-decomposition.js.map +1 -1
  78. package/dist/unicode-decomposition.spec.js +0 -27
  79. package/dist/unicode-decomposition.spec.js.map +1 -1
  80. package/dist/urn.js +0 -27
  81. package/dist/urn.js.map +1 -1
  82. package/dist/urn.spec.js +0 -27
  83. package/dist/urn.spec.js.map +1 -1
  84. package/package.json +5 -3
  85. package/src/access-rights.js +0 -29
  86. package/src/access-rights.spec.js +0 -29
  87. package/src/double-commas.js +0 -29
  88. package/src/double-commas.spec.js +0 -29
  89. package/src/duplicates-ind1.js +0 -29
  90. package/src/duplicates-ind1.spec.js +0 -29
  91. package/src/empty-fields.js +0 -28
  92. package/src/empty-fields.spec.js +0 -29
  93. package/src/ending-punctuation-conf.js +0 -29
  94. package/src/ending-punctuation.spec.js +0 -29
  95. package/src/field-exclusion.js +0 -29
  96. package/src/field-exclusion.spec.js +0 -29
  97. package/src/field-structure.js +0 -29
  98. package/src/field-structure.spec.js +0 -29
  99. package/src/fields-present.js +0 -29
  100. package/src/fields-present.spec.js +0 -29
  101. package/src/fixed-fields.js +0 -29
  102. package/src/fixed-fields.spec.js +0 -29
  103. package/src/identical-fields.js +0 -28
  104. package/src/identical-fields.spec.js +0 -29
  105. package/src/index.js +0 -29
  106. package/src/isbn-issn.js +0 -28
  107. package/src/isbn-issn.spec.js +0 -29
  108. package/src/item-language.js +0 -29
  109. package/src/item-language.spec.js +0 -29
  110. package/src/punctuation/index.js +19 -1
  111. package/src/punctuation/rules/bib.js +9 -1
  112. package/src/punctuation.spec.js +48 -147
  113. package/src/resolvable-ext-references-melinda.js +0 -28
  114. package/src/resolvable-ext-references-melinda.spec.js +2 -30
  115. package/src/sort-tags.js +0 -29
  116. package/src/sort-tags.spec.js +0 -29
  117. package/src/subfield-exclusion.js +0 -29
  118. package/src/subfield-exclusion.spec.js +0 -29
  119. package/src/unicode-decomposition.js +0 -28
  120. package/src/unicode-decomposition.spec.js +0 -29
  121. package/src/urn.js +0 -29
  122. package/src/urn.spec.js +0 -29
  123. package/test-fixtures/punctuation/01/expectedResult.json +3 -0
  124. package/test-fixtures/punctuation/01/metadata.json +4 -0
  125. package/test-fixtures/punctuation/01/record.json +18 -0
  126. package/test-fixtures/punctuation/02/expectedResult.json +3 -0
  127. package/test-fixtures/punctuation/02/metadata.json +4 -0
  128. package/test-fixtures/punctuation/02/record.json +18 -0
  129. package/test-fixtures/punctuation/03/expectedResult.json +21 -0
  130. package/test-fixtures/punctuation/03/metadata.json +5 -0
  131. package/test-fixtures/punctuation/03/record.json +19 -0
  132. package/test-fixtures/punctuation/04/expectedResult.json +21 -0
  133. package/test-fixtures/punctuation/04/metadata.json +5 -0
  134. package/test-fixtures/punctuation/04/record.json +19 -0
  135. package/test-fixtures/punctuation/05/expectedResult.json +44 -0
  136. package/test-fixtures/punctuation/05/metadata.json +5 -0
  137. package/test-fixtures/punctuation/05/record.json +42 -0
  138. package/test-fixtures/resolvable-ext-references-melinda.js +0 -27
  139. package/.drone.yml +0 -93
@@ -8,33 +8,6 @@ var _duplicatesInd = _interopRequireDefault(require("../src/duplicates-ind1"));
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('duplicates-ind1', () => {
39
12
  it('Creates a validator', async () => {
40
13
  const validator = await (0, _duplicatesInd.default)(/^245$/u);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/duplicates-ind1.spec.js"],"names":["describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","record","MarcRecord","fields","tag","ind1","ind2","subfields","code","value","result","eql","valid","messages","fix"],"mappings":"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","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nimport {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/duplicates-ind1';\n\ndescribe('duplicates-ind1', () => {\n it('Creates a validator', async () => {\n const validator = await validatorFactory(/^245$/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 describe('#validate', () => {\n it('Finds the record valid', async () => {\n const validator = await validatorFactory(/^500$/u);\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: '500',\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 validator = await validatorFactory(/^500$/u);\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: '500',\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: ['Multiple 500 fields which only differ in the first indicator']});\n });\n });\n\n describe('#fix', () => {\n it('Removes duplicate values', async () => {\n const validator = await validatorFactory(/^500$/u);\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: '500',\n ind1: '1',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n }\n ]\n });\n await validator.fix(record);\n expect(record.fields).to.eql([\n {\n tag: '500',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n }\n ]);\n });\n });\n});\n"],"file":"duplicates-ind1.spec.js"}
1
+ {"version":3,"file":"duplicates-ind1.spec.js","names":["describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","record","MarcRecord","fields","tag","ind1","ind2","subfields","code","value","result","eql","valid","messages","fix"],"sources":["../src/duplicates-ind1.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/duplicates-ind1';\n\ndescribe('duplicates-ind1', () => {\n it('Creates a validator', async () => {\n const validator = await validatorFactory(/^245$/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 describe('#validate', () => {\n it('Finds the record valid', async () => {\n const validator = await validatorFactory(/^500$/u);\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: '500',\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 validator = await validatorFactory(/^500$/u);\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: '500',\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: ['Multiple 500 fields which only differ in the first indicator']});\n });\n });\n\n describe('#fix', () => {\n it('Removes duplicate values', async () => {\n const validator = await validatorFactory(/^500$/u);\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: '500',\n ind1: '1',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n }\n ]\n });\n await validator.fix(record);\n expect(record.fields).to.eql([\n {\n tag: '500',\n ind1: ' ',\n ind2: '0',\n subfields: [{code: 'a', value: 'foo'}]\n }\n ]);\n });\n });\n});\n"],"mappings":"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"}
@@ -4,34 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = _default;
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
7
  const ERRORS = {
36
8
  EMPTY_SUBFIELDS: 2,
37
9
  MISSING_SUBFIELD_VALUES: 3
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/empty-fields.js"],"names":["ERRORS","EMPTY_SUBFIELDS","MISSING_SUBFIELD_VALUES","description","validate","fix","record","errors","findErrors","fields","length","valid","messages","map","error","code","field","tag","emptySubfields","sf","join","forEach","subfields","removeField","removeSubfield","reduce","concat","subfieldsWithoutValue","filter","value"],"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\nconst ERRORS = {\n EMPTY_SUBFIELDS: 2,\n MISSING_SUBFIELD_VALUES: 3\n};\n\nexport default function () {\n return {\n description: 'Handles empty fields',\n validate,\n fix\n };\n\n function validate(record) {\n const errors = findErrors(record.fields);\n if (errors.length > 0) {\n return {\n valid: false,\n messages: errors.map(error => { // eslint-disable-line array-callback-return\n switch (error.code) {\n case ERRORS.EMPTY_SUBFIELDS:\n return `Field ${error.field.tag} has no subfields`;\n case ERRORS.MISSING_SUBFIELD_VALUES:\n return `Field ${error.field.tag} has missing subfield values: ${error.emptySubfields.map(sf => sf.code).join()}`;\n default:\n }\n })\n };\n }\n\n return {valid: true};\n }\n\n function fix(record) {\n const errors = findErrors(record.fields);\n errors.forEach(error => {\n if (error.code === ERRORS.MISSING_SUBFIELD_VALUES) { // eslint-disable-line functional/no-conditional-statement\n if (error.emptySubfields.length === error.field.subfields.length) { // eslint-disable-line functional/no-conditional-statement\n record.removeField(error.field);\n } else { // eslint-disable-line functional/no-conditional-statement\n error.emptySubfields.forEach(sf => {\n record.removeSubfield(sf, error.field);\n });\n }\n } else { // eslint-disable-line functional/no-conditional-statement\n record.removeField(error.field);\n }\n });\n }\n\n function findErrors(fields) {\n return fields.reduce((errors, field) => {\n if (field.subfields) {\n if (field.subfields.length === 0) {\n return errors.concat({field, code: ERRORS.EMPTY_SUBFIELDS});\n }\n\n const subfieldsWithoutValue = field.subfields.filter(sf => !sf.value);\n\n if (subfieldsWithoutValue.length > 0) {\n return errors.concat({\n field,\n emptySubfields: subfieldsWithoutValue,\n code: ERRORS.MISSING_SUBFIELD_VALUES\n });\n }\n }\n\n return errors;\n }, []);\n }\n}\n"],"file":"empty-fields.js"}
1
+ {"version":3,"file":"empty-fields.js","names":["ERRORS","EMPTY_SUBFIELDS","MISSING_SUBFIELD_VALUES","description","validate","fix","record","errors","findErrors","fields","length","valid","messages","map","error","code","field","tag","emptySubfields","sf","join","forEach","subfields","removeField","removeSubfield","reduce","concat","subfieldsWithoutValue","filter","value"],"sources":["../src/empty-fields.js"],"sourcesContent":["const ERRORS = {\n EMPTY_SUBFIELDS: 2,\n MISSING_SUBFIELD_VALUES: 3\n};\n\nexport default function () {\n return {\n description: 'Handles empty fields',\n validate,\n fix\n };\n\n function validate(record) {\n const errors = findErrors(record.fields);\n if (errors.length > 0) {\n return {\n valid: false,\n messages: errors.map(error => { // eslint-disable-line array-callback-return\n switch (error.code) {\n case ERRORS.EMPTY_SUBFIELDS:\n return `Field ${error.field.tag} has no subfields`;\n case ERRORS.MISSING_SUBFIELD_VALUES:\n return `Field ${error.field.tag} has missing subfield values: ${error.emptySubfields.map(sf => sf.code).join()}`;\n default:\n }\n })\n };\n }\n\n return {valid: true};\n }\n\n function fix(record) {\n const errors = findErrors(record.fields);\n errors.forEach(error => {\n if (error.code === ERRORS.MISSING_SUBFIELD_VALUES) { // eslint-disable-line functional/no-conditional-statement\n if (error.emptySubfields.length === error.field.subfields.length) { // eslint-disable-line functional/no-conditional-statement\n record.removeField(error.field);\n } else { // eslint-disable-line functional/no-conditional-statement\n error.emptySubfields.forEach(sf => {\n record.removeSubfield(sf, error.field);\n });\n }\n } else { // eslint-disable-line functional/no-conditional-statement\n record.removeField(error.field);\n }\n });\n }\n\n function findErrors(fields) {\n return fields.reduce((errors, field) => {\n if (field.subfields) {\n if (field.subfields.length === 0) {\n return errors.concat({field, code: ERRORS.EMPTY_SUBFIELDS});\n }\n\n const subfieldsWithoutValue = field.subfields.filter(sf => !sf.value);\n\n if (subfieldsWithoutValue.length > 0) {\n return errors.concat({\n field,\n emptySubfields: subfieldsWithoutValue,\n code: ERRORS.MISSING_SUBFIELD_VALUES\n });\n }\n }\n\n return errors;\n }, []);\n }\n}\n"],"mappings":";;;;;;AAAA,MAAMA,MAAM,GAAG;EACbC,eAAe,EAAE,CADJ;EAEbC,uBAAuB,EAAE;AAFZ,CAAf;;AAKe,oBAAY;EACzB,OAAO;IACLC,WAAW,EAAE,sBADR;IAELC,QAFK;IAGLC;EAHK,CAAP;;EAMA,SAASD,QAAT,CAAkBE,MAAlB,EAA0B;IACxB,MAAMC,MAAM,GAAGC,UAAU,CAACF,MAAM,CAACG,MAAR,CAAzB;;IACA,IAAIF,MAAM,CAACG,MAAP,GAAgB,CAApB,EAAuB;MACrB,OAAO;QACLC,KAAK,EAAE,KADF;QAELC,QAAQ,EAAEL,MAAM,CAACM,GAAP,CAAWC,KAAK,IAAI;UAAE;UAC9B,QAAQA,KAAK,CAACC,IAAd;YACA,KAAKf,MAAM,CAACC,eAAZ;cACE,OAAQ,SAAQa,KAAK,CAACE,KAAN,CAAYC,GAAI,mBAAhC;;YACF,KAAKjB,MAAM,CAACE,uBAAZ;cACE,OAAQ,SAAQY,KAAK,CAACE,KAAN,CAAYC,GAAI,iCAAgCH,KAAK,CAACI,cAAN,CAAqBL,GAArB,CAAyBM,EAAE,IAAIA,EAAE,CAACJ,IAAlC,EAAwCK,IAAxC,EAA+C,EAA/G;;YACF;UALA;QAOD,CARS;MAFL,CAAP;IAYD;;IAED,OAAO;MAACT,KAAK,EAAE;IAAR,CAAP;EACD;;EAED,SAASN,GAAT,CAAaC,MAAb,EAAqB;IACnB,MAAMC,MAAM,GAAGC,UAAU,CAACF,MAAM,CAACG,MAAR,CAAzB;IACAF,MAAM,CAACc,OAAP,CAAeP,KAAK,IAAI;MACtB,IAAIA,KAAK,CAACC,IAAN,KAAef,MAAM,CAACE,uBAA1B,EAAmD;QAAE;QACnD,IAAIY,KAAK,CAACI,cAAN,CAAqBR,MAArB,KAAgCI,KAAK,CAACE,KAAN,CAAYM,SAAZ,CAAsBZ,MAA1D,EAAkE;UAAE;UAClEJ,MAAM,CAACiB,WAAP,CAAmBT,KAAK,CAACE,KAAzB;QACD,CAFD,MAEO;UAAE;UACPF,KAAK,CAACI,cAAN,CAAqBG,OAArB,CAA6BF,EAAE,IAAI;YACjCb,MAAM,CAACkB,cAAP,CAAsBL,EAAtB,EAA0BL,KAAK,CAACE,KAAhC;UACD,CAFD;QAGD;MACF,CARD,MAQO;QAAE;QACPV,MAAM,CAACiB,WAAP,CAAmBT,KAAK,CAACE,KAAzB;MACD;IACF,CAZD;EAaD;;EAED,SAASR,UAAT,CAAoBC,MAApB,EAA4B;IAC1B,OAAOA,MAAM,CAACgB,MAAP,CAAc,CAAClB,MAAD,EAASS,KAAT,KAAmB;MACtC,IAAIA,KAAK,CAACM,SAAV,EAAqB;QACnB,IAAIN,KAAK,CAACM,SAAN,CAAgBZ,MAAhB,KAA2B,CAA/B,EAAkC;UAChC,OAAOH,MAAM,CAACmB,MAAP,CAAc;YAACV,KAAD;YAAQD,IAAI,EAAEf,MAAM,CAACC;UAArB,CAAd,CAAP;QACD;;QAED,MAAM0B,qBAAqB,GAAGX,KAAK,CAACM,SAAN,CAAgBM,MAAhB,CAAuBT,EAAE,IAAI,CAACA,EAAE,CAACU,KAAjC,CAA9B;;QAEA,IAAIF,qBAAqB,CAACjB,MAAtB,GAA+B,CAAnC,EAAsC;UACpC,OAAOH,MAAM,CAACmB,MAAP,CAAc;YACnBV,KADmB;YAEnBE,cAAc,EAAES,qBAFG;YAGnBZ,IAAI,EAAEf,MAAM,CAACE;UAHM,CAAd,CAAP;QAKD;MACF;;MAED,OAAOK,MAAP;IACD,CAlBM,EAkBJ,EAlBI,CAAP;EAmBD;AACF"}
@@ -8,33 +8,6 @@ var _emptyFields = _interopRequireDefault(require("../src/empty-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
  before(() => {
39
12
  _marcRecord.MarcRecord.setValidationOptions({
40
13
  subfields: false,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/empty-fields.spec.js"],"names":["before","MarcRecord","setValidationOptions","subfields","subfieldValues","after","describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","record","fields","tag","value","code","result","have","property","eql","valid","messages","fix","ind1","ind2"],"mappings":"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","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nimport {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/empty-fields';\n\nbefore(() => {\n MarcRecord.setValidationOptions({subfields: false, subfieldValues: false});\n});\n\nafter(() => {\n MarcRecord.setValidationOptions({});\n});\n\ndescribe('empty-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: '001',\n value: '1234567',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n expect(result).to.to.have.property('valid', true);\n });\n\n it('Finds a missing subfield value', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '245',\n subfields: [\n {\n code: 'a'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: ['Field 245 has missing subfield values: a']});\n });\n\n it('Finds an empty subfield array', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '500',\n subfields: []\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: ['Field 500 has no subfields']});\n });\n });\n\n describe('#fix', () => {\n it('Removes a subfield with missing value', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '245',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n },\n {\n code: 'b'\n }\n ]\n }\n ]\n });\n await validator.fix(record);\n\n expect(record.fields).to.eql([\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }\n ]\n }\n ]);\n });\n\n it('Removes a field with no subfields', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '1234567'\n },\n {\n tag: '500',\n subfields: []\n }\n ]\n });\n await validator.fix(record);\n\n expect(record.fields).to.eql([\n {\n tag: '001',\n value: '1234567'\n }\n ]);\n });\n });\n});\n"],"file":"empty-fields.spec.js"}
1
+ {"version":3,"file":"empty-fields.spec.js","names":["before","MarcRecord","setValidationOptions","subfields","subfieldValues","after","describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","record","fields","tag","value","code","result","have","property","eql","valid","messages","fix","ind1","ind2"],"sources":["../src/empty-fields.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/empty-fields';\n\nbefore(() => {\n MarcRecord.setValidationOptions({subfields: false, subfieldValues: false});\n});\n\nafter(() => {\n MarcRecord.setValidationOptions({});\n});\n\ndescribe('empty-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: '001',\n value: '1234567',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n expect(result).to.to.have.property('valid', true);\n });\n\n it('Finds a missing subfield value', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '245',\n subfields: [\n {\n code: 'a'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: ['Field 245 has missing subfield values: a']});\n });\n\n it('Finds an empty subfield array', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '500',\n subfields: []\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: ['Field 500 has no subfields']});\n });\n });\n\n describe('#fix', () => {\n it('Removes a subfield with missing value', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '245',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n },\n {\n code: 'b'\n }\n ]\n }\n ]\n });\n await validator.fix(record);\n\n expect(record.fields).to.eql([\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'foo'\n }\n ]\n }\n ]);\n });\n\n it('Removes a field with no subfields', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '1234567'\n },\n {\n tag: '500',\n subfields: []\n }\n ]\n });\n await validator.fix(record);\n\n expect(record.fields).to.eql([\n {\n tag: '001',\n value: '1234567'\n }\n ]);\n });\n });\n});\n"],"mappings":"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"}
@@ -4,34 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.validPuncMarks = exports.finnishTerms = exports.confSpec = void 0;
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
7
  // Const finnishTerms = ['ysa', 'yso', 'kassu', 'seko', 'valo', 'kulo', 'puho', 'oiko', 'mero', 'liito', 'fast', 'allars', 'kaunokki'];
36
8
  const finnishTerms = [/^ysa$/u, /^yso$/u, /^kassu$/u, /^seko$/u, /^valo$/u, /^kulo$/u, /^puho$/u, /^oiko$/u, /^mero$/u, /^liito$/u, /^fast$/u, /^allars$/u, /^kaunokki$/u, /^bella$/u, /^musa$/u, /^local$/u, /^slm\//u, /^yso\//u, /^kauno\//u];
37
9
  exports.finnishTerms = finnishTerms;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ending-punctuation-conf.js"],"names":["finnishTerms","validPuncMarks","confSpec","rangeStart","rangeEnd","index","punc","special","afterOnly","strict","secondLastIfLast","last","noPuncIfField","ifBoth","puncSubField","ifInd2","ifLastCharNot","noPuncIfInd2","lastOf","mandatory","termField","else","linked"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA,MAAMA,YAAY,GAAG,CACnB,QADmB,EAEnB,QAFmB,EAGnB,UAHmB,EAInB,SAJmB,EAKnB,SALmB,EAMnB,SANmB,EAOnB,SAPmB,EAQnB,SARmB,EASnB,SATmB,EAUnB,UAVmB,EAWnB,SAXmB,EAYnB,WAZmB,EAanB,aAbmB,EAcnB,UAdmB,EAenB,SAfmB,EAgBnB,UAhBmB,EAiBnB,SAjBmB,EAkBnB,SAlBmB,EAmBnB,WAnBmB,CAArB;;AAsBA,MAAMC,cAAc,GAAG,SAAvB,C,CACA;;;AACA,MAAMC,QAAQ,GAAG,CACf;AAAE;AACAC,EAAAA,UAAU,EAAE,EADd;AAEEC,EAAAA,QAAQ,EAAE,EAFZ;AAGEC,EAAAA,KAAK,EAAE,IAHT;AAIEC,EAAAA,IAAI,EAAE,KAJR;AAKEC,EAAAA,OAAO,EAAE;AALX,CADe,EAOZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,EAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AACPC,IAAAA,SAAS,EAAE,GADJ;AAEPC,IAAAA,MAAM,EAAE,IAFD,CAEM;;AAFN;AALR,CAPY,EAgBZ;AAAE;AACHN,EAAAA,UAAU,EAAE,EADX;AAEDC,EAAAA,QAAQ,EAAE,EAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAhBY,EAsBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,EAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAtBY,EA4BZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,EADX;AAEDC,EAAAA,QAAQ,EAAE,EAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA5BY,EAkCZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAlCY,EAwCZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAxCY,EA8CZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA9CY,EAoDZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CApDY,EA0DZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA1DY,EAgEZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAhEY,EAsEZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAtEY,EA4EZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AACPG,IAAAA,gBAAgB,EAAE,GADX;AAEPC,IAAAA,IAAI,EAAE;AAFC;AALR,CA5EY,EAqFZ;AAAE;AACHR,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CArFY,EA2FZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA3FY,EAiGZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAjGY,EAuGZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAvGY,EA6GZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA7GY,EAmHZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAnHY,EAyHZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AACPK,IAAAA,aAAa,EAAE;AADR;AALR,CAzHY,EAiIZ;AAAE;AACHT,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAjIY,EAuIZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AACPC,IAAAA,SAAS,EAAE,GADJ;AAEPC,IAAAA,MAAM,EAAE,KAFD,CAEO;;AAFP;AALR,CAvIY,EAgJZ;AAAE;AACHN,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAhJY,EAsJZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AACPM,IAAAA,MAAM,EAAE,IADD;AAEPC,IAAAA,YAAY,EAAE,GAFP;AAGPC,IAAAA,MAAM,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CAHD;AAIPC,IAAAA,aAAa,EAAE,MAJR;AAKPC,IAAAA,YAAY,EAAE,CAAC,GAAD;AALP;AALR,CAtJY,EAkKZ;AAAE;AACHd,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAlKY,EAwKZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAxKY,EA8KZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA9KY,EAoLZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CApLY,EA0LZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA1LY,EAgMZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAhMY,EAsMZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAtMY,EA4MZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AACPW,IAAAA,MAAM,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,CADD;AAEPC,IAAAA,SAAS,EAAE,CAAC,GAAD;AAFJ;AALR,CA5MY,EAqNZ;AAAE;AACHhB,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CArNY,EA2NZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA3NY,EAiOZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAjOY,EAuOZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAvOY,EA6OZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA7OY,EAmPZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAnPY,EAyPZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAzPY,EA+PZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA/PY,EAqQZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CArQY,EA2QZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA3QY,EAiRZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAjRY,EAuRZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAvRY,EA6RZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA7RY,EAmSZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAnSY,EAySZ;AAAE;AACHF,EAAAA,KAAK,EAAE,GADN;AAEDC,EAAAA,IAAI,EAAE,IAFL;AAGDC,EAAAA,OAAO,EAAE;AACPK,IAAAA,aAAa,EAAE;AADR;AAHR,CAzSY,EA+SZ;AAAE;AACHT,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA/SY,EAqTZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CArTY,EA2TZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA3TY,EAiUZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AACPG,IAAAA,gBAAgB,EAAE,GADX,CAEP;;AAFO;AALR,CAjUY,EA0UZ;AAAE;AACHP,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA1UY,EAgVZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAhVY,EAsVZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAtVY,EA4VZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA5VY,EAkWZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAlWY,EAwWZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AACPG,IAAAA,gBAAgB,EAAE,GADX,CAEP;;AAFO;AALR,CAxWY,EAiXZ;AAAE;AACHP,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AACPK,IAAAA,aAAa,EAAE;AADR;AALR,CAjXY,EAyXZ;AAAE;AACHT,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAzXY,EA+XZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA/XY,EAqYZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CArYY,EA2YZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA3YY,EAiZZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAjZY,EAuZZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAvZY,EA6ZZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA7ZY,EAmaZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AACPC,IAAAA,SAAS,EAAE,GADJ;AAEPC,IAAAA,MAAM,EAAE,IAFD,CAEM;;AAFN;AALR,CAnaY,EA4aZ;AAAE;AACHN,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA5aY,EAkbZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAlbY,EAwbZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAxbY,EA8bZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA9bY,EAocZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CApcY,EA0cZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA1cY,EAgdZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAhdY,EAsdZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAtdY,EA4dZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA5dY,EAkeZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAleY,EAweZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AACPa,IAAAA,SAAS,EAAE,GADJ;AAEPpB,IAAAA,YAFO;AAGPqB,IAAAA,IAAI,EAAE;AAHC;AALR,CAxeY,EAkfZ;AAAE;AACHlB,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAlfY,EAwfZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AACPa,IAAAA,SAAS,EAAE,GADJ;AAEPpB,IAAAA,YAFO;AAGPqB,IAAAA,IAAI,EAAE;AAHC;AALR,CAxfY,EAkgBZ;AAAE;AACHlB,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAlgBY,EAwgBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAxgBY,EA8gBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA9gBY,EAohBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAphBY,EA0hBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA1hBY,EAgiBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAhiBY,EAsiBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAtiBY,EA4iBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA5iBY,EAkjBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAljBY,EAwjBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAxjBY,EA8jBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA9jBY,EAokBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CApkBY,EA0kBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AACPC,IAAAA,SAAS,EAAE,GADJ;AAEPC,IAAAA,MAAM,EAAE;AAFD;AALR,CA1kBY,EAmlBZ;AAAE;AACHN,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAnlBY,EAylBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAzlBY,EA+lBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA/lBY,EAqmBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CArmBY,EA2mBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA3mBY,EAinBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAjnBY,EAunBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAvnBY,EA6nBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,IADX;AAEDC,EAAAA,QAAQ,EAAE,IAFT;AAGDC,EAAAA,KAAK,EAAE,GAHN;AAIDC,EAAAA,IAAI,EAAE,IAJL;AAKDC,EAAAA,OAAO,EAAE;AACPe,IAAAA,MAAM,EAAE;AADD;AALR,CA7nBY,EAqoBZ;AAAE;AACHnB,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CAroBY,EA2oBZ;AAAE;AACHJ,EAAAA,UAAU,EAAE,GADX;AAEDC,EAAAA,QAAQ,EAAE,GAFT;AAGDC,EAAAA,KAAK,EAAE,IAHN;AAIDC,EAAAA,IAAI,EAAE,KAJL;AAKDC,EAAAA,OAAO,EAAE;AALR,CA3oBY,CAAjB","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\n// Const finnishTerms = ['ysa', 'yso', 'kassu', 'seko', 'valo', 'kulo', 'puho', 'oiko', 'mero', 'liito', 'fast', 'allars', 'kaunokki'];\nconst finnishTerms = [\n /^ysa$/u,\n /^yso$/u,\n /^kassu$/u,\n /^seko$/u,\n /^valo$/u,\n /^kulo$/u,\n /^puho$/u,\n /^oiko$/u,\n /^mero$/u,\n /^liito$/u,\n /^fast$/u,\n /^allars$/u,\n /^kaunokki$/u,\n /^bella$/u,\n /^musa$/u,\n /^local$/u,\n /^slm\\//u,\n /^yso\\//u,\n /^kauno\\//u\n];\n\nconst validPuncMarks = '?\"-!,)]';\n// Configuration specification\nconst confSpec = [\n { // 010-035 EI\n rangeStart: 10,\n rangeEnd: 35,\n index: null,\n punc: false,\n special: null\n }, { // 036 KYLLÄ vain osakentän $b jälkeen\n rangeStart: null,\n rangeEnd: null,\n index: 36,\n punc: true,\n special: {\n afterOnly: 'b',\n strict: true // Punctuation only after $b, because $a is register number\n }\n }, { // 037-050 EI\n rangeStart: 37,\n rangeEnd: 50,\n index: null,\n punc: false,\n special: null\n }, { // 051 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 51,\n punc: true,\n special: null\n }, { // 052-09X EI\n rangeStart: 52,\n rangeEnd: 99,\n index: null,\n punc: false,\n special: null\n }, { // 100 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 100,\n punc: true,\n special: null\n }, { // 110 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 110,\n punc: true,\n special: null\n }, { // 111 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 111,\n punc: true,\n special: null\n }, { // 130 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 130,\n punc: true,\n special: null\n }, { // 210 EI\n rangeStart: null,\n rangeEnd: null,\n index: 210,\n punc: false,\n special: null\n }, { // 222 EI\n rangeStart: null,\n rangeEnd: null,\n index: 222,\n punc: false,\n special: null\n }, { // 240 EI\n rangeStart: null,\n rangeEnd: null,\n index: 240,\n punc: false,\n special: null\n }, { // 242 KYLLÄ Jos viimeinen osakenttä on $y, piste on ennen sitä\n rangeStart: null,\n rangeEnd: null,\n index: 242,\n punc: true,\n special: {\n secondLastIfLast: 'y',\n last: false\n }\n }, { // 243 EI\n rangeStart: null,\n rangeEnd: null,\n index: 243,\n punc: false,\n special: null\n }, { // 245 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 245,\n punc: true,\n special: null\n }, { // 246-247 EI\n rangeStart: 246,\n rangeEnd: 247,\n index: null,\n punc: false,\n special: null\n }, { // 250 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 250,\n punc: true,\n special: null\n }, { // 251 EI\n rangeStart: null,\n rangeEnd: null,\n index: 251,\n punc: false,\n special: null\n }, { // 254-256 KYLLÄ\n rangeStart: 254,\n rangeEnd: 256,\n index: null,\n punc: true,\n special: null\n }, { // 257\n rangeStart: null,\n rangeEnd: null,\n index: 257,\n punc: true,\n special: {\n noPuncIfField: '2'\n }\n }, { // 258 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 258,\n punc: true,\n special: null\n }, { // 260 KYLLÄ Pääsääntö: $a : $b, $c. Tarkista eri poikkeukset ja välimerkitys MARC 21 Full -versiosta\n rangeStart: null,\n rangeEnd: null,\n index: 260,\n punc: true,\n special: {\n afterOnly: 'c',\n strict: false // Others fields may contain abbreviation\n }\n }, { // 263 EI\n rangeStart: null,\n rangeEnd: null,\n index: 263,\n punc: false,\n special: null\n }, { // 264 KYLLÄ Tarkista poikkeukset MARC 21 -sovellusohjeesta\n rangeStart: null,\n rangeEnd: null,\n index: 264,\n punc: true,\n special: {\n ifBoth: true,\n puncSubField: 'c',\n ifInd2: ['0', '1', '2', '3'],\n ifLastCharNot: ']-)?',\n noPuncIfInd2: ['4']\n }\n }, { // 270 EI\n rangeStart: null,\n rangeEnd: null,\n index: 270,\n punc: false,\n special: null\n }, { // 300 EI\n rangeStart: null,\n rangeEnd: null,\n index: 300,\n punc: false,\n special: null\n }, { // 306 EI\n rangeStart: null,\n rangeEnd: null,\n index: 306,\n punc: false,\n special: null\n }, { // 307 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 307,\n punc: true,\n special: null\n }, { // 310 EI\n rangeStart: null,\n rangeEnd: null,\n index: 310,\n punc: false,\n special: null\n }, { // 321 EI\n rangeStart: null,\n rangeEnd: null,\n index: 321,\n punc: false,\n special: null\n }, { // 335-338 EI\n rangeStart: 335,\n rangeEnd: 338,\n index: null,\n punc: false,\n special: null\n }, { // 340 KYLLÄ Vain joidenkin osakenttien jälkeen. Tarkista osakentät MARC 21 Full -versiosta\n rangeStart: null,\n rangeEnd: null,\n index: 340,\n punc: true,\n special: {\n lastOf: ['a', 'd', 'e', 'f', 'h', 'i'],\n mandatory: ['b']\n }\n }, { // 341-342 EI\n rangeStart: 341,\n rangeEnd: 342,\n index: null,\n punc: false,\n special: null\n }, { // 343 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 343,\n punc: true,\n special: null\n }, { // 344-348 EI\n rangeStart: 344,\n rangeEnd: 348,\n index: null,\n punc: false,\n special: null\n }, { // 351-352 KYLLÄ\n rangeStart: 351,\n rangeEnd: 352,\n index: null,\n punc: true,\n special: null\n }, { // 355 EI\n rangeStart: null,\n rangeEnd: null,\n index: 355,\n punc: false,\n special: null\n }, { // 357 EI\n rangeStart: null,\n rangeEnd: null,\n index: 357,\n punc: false,\n special: null\n }, { // 362 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 362,\n punc: true,\n special: null\n }, { // 363 EI\n rangeStart: null,\n rangeEnd: null,\n index: 363,\n punc: false,\n special: null\n }, { // 365-366 EI\n rangeStart: 365,\n rangeEnd: 366,\n index: null,\n punc: false,\n special: null\n }, { // 370 EI\n rangeStart: null,\n rangeEnd: null,\n index: 370,\n punc: false,\n special: null\n }, { // 377 EI\n rangeStart: null,\n rangeEnd: null,\n index: 377,\n punc: false,\n special: null\n }, { // 380-388 EI\n rangeStart: 380,\n rangeEnd: 388,\n index: null,\n punc: false,\n special: null\n }, { // 490 EI\n rangeStart: null,\n rangeEnd: null,\n index: 490,\n punc: false,\n special: null\n }, { // 500-505 KYLLÄ\n rangeStart: 500,\n rangeEnd: 505,\n index: null,\n punc: true,\n special: null\n }, { // 506 KYLLÄ\n index: 506,\n punc: true,\n special: {\n noPuncIfField: 'f'\n }\n }, { // 507-509 KYLLÄ\n rangeStart: 507,\n rangeEnd: 509,\n index: null,\n punc: true,\n special: null\n }, { // 510 EI\n rangeStart: null,\n rangeEnd: null,\n index: 510,\n punc: false,\n special: null\n }, { // 511-518 KYLLÄ\n rangeStart: 511,\n rangeEnd: 518,\n index: null,\n punc: true,\n special: null\n }, { // 520 KYLLÄ Jos viimeinen osakenttä on $u, piste on ennen sitä\n rangeStart: null,\n rangeEnd: null,\n index: 520,\n punc: true,\n special: {\n secondLastIfLast: 'u'\n // Last: false //$u is URL and hence should not be checked as URL's can have '.' at end\n }\n }, { // 521-526 KYLLÄ\n rangeStart: 521,\n rangeEnd: 526,\n index: null,\n punc: true,\n special: null\n }, { // 530 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 530,\n punc: true,\n special: null\n }, { // 532 EI\n rangeStart: null,\n rangeEnd: null,\n index: 532,\n punc: false,\n special: null\n }, { // 533-534 KYLLÄ\n rangeStart: 533,\n rangeEnd: 534,\n index: null,\n punc: true,\n special: null\n }, { // 535-536 EI\n rangeStart: 535,\n rangeEnd: 536,\n index: null,\n punc: false,\n special: null\n }, { // 538 KYLLÄ Jos viimeinen osakenttä on $u, piste on ennen sitä\n rangeStart: null,\n rangeEnd: null,\n index: 538,\n punc: true,\n special: {\n secondLastIfLast: 'u'\n // Last: false //$u is URL and hence should not be checked as URL's can have '.' at end\n }\n }, { // 540-541 KYLLÄ\n rangeStart: 540,\n rangeEnd: 541,\n index: null,\n punc: true,\n special: {\n noPuncIfField: 'u'\n }\n }, { // 542 EI\n rangeStart: null,\n rangeEnd: null,\n index: 542,\n punc: false,\n special: null\n }, { // 544-547 KYLLÄ\n rangeStart: 544,\n rangeEnd: 547,\n index: null,\n punc: true,\n special: null\n }, { // 550 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 550,\n punc: true,\n special: null\n }, { // 552 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 552,\n punc: true,\n special: null\n }, { // 555-556 KYLLÄ\n rangeStart: 555,\n rangeEnd: 556,\n index: null,\n punc: true,\n special: null\n }, { // 561-563 KYLLÄ\n rangeStart: 561,\n rangeEnd: 563,\n index: null,\n punc: true,\n special: null\n }, { // 565 EI\n rangeStart: null,\n rangeEnd: null,\n index: 565,\n punc: false,\n special: null\n }, { // 567 KYLLÄ osakentän $a jälkeen, EI muiden osakenttien jälkeen\n rangeStart: null,\n rangeEnd: null,\n index: 567,\n punc: true,\n special: {\n afterOnly: 'a',\n strict: true // $b can only be controlled term\n }\n }, { // 580-581 KYLLÄ\n rangeStart: 580,\n rangeEnd: 581,\n index: null,\n punc: true,\n special: null\n }, { // 583 EI\n rangeStart: null,\n rangeEnd: null,\n index: 583,\n punc: false,\n special: null\n }, { // 584-585 KYLLÄ\n rangeStart: 584,\n rangeEnd: 585,\n index: null,\n punc: true,\n special: null\n }, { // 586 EI\n rangeStart: null,\n rangeEnd: null,\n index: 586,\n punc: false,\n special: null\n }, { // 588 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: null,\n punc: true,\n special: null\n }, { // 59X EI\n rangeStart: 590,\n rangeEnd: 599,\n index: null,\n punc: false,\n special: null\n }, { // 600 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 600,\n punc: true,\n special: null\n }, { // 610 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 610,\n punc: true,\n special: null\n }, { // 611 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 611,\n punc: true,\n special: null\n }, { // 630 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 630,\n punc: true,\n special: null\n }, { // 647-651 EI suomalaisten sanastojen termeihin, muihin sanaston käytännön mukaan, yleensä KYLLÄ\n rangeStart: 647,\n rangeEnd: 651,\n index: null,\n punc: false,\n special: {\n termField: '2',\n finnishTerms,\n else: true\n }\n }, { // 653 EI\n rangeStart: null,\n rangeEnd: null,\n index: 653,\n punc: false,\n special: null\n }, { // 654-662 EI suomalaisten sanastojen termeihin, muihin sanaston käytännön mukaan, yleensä KYLLÄ\n rangeStart: 654,\n rangeEnd: 662,\n index: null,\n punc: false,\n special: {\n termField: '2',\n finnishTerms,\n else: true\n }\n }, { // 69X EI\n rangeStart: 690,\n rangeEnd: 699,\n index: null,\n punc: false,\n special: null\n }, { // 700 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 700,\n punc: true,\n special: null\n }, { // 710 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 710,\n punc: true,\n special: null\n }, { // 711 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 711,\n punc: true,\n special: null\n }, { // 720 EI\n rangeStart: null,\n rangeEnd: null,\n index: 720,\n punc: false,\n special: null\n }, { // 730 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 730,\n punc: true,\n special: null\n }, { // 740 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 740,\n punc: true,\n special: null\n }, { // 751 EI\n rangeStart: null,\n rangeEnd: null,\n index: 751,\n punc: false,\n special: null\n }, { // 752 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 752,\n punc: true,\n special: null\n }, { // 753 EI\n rangeStart: null,\n rangeEnd: null,\n index: 753,\n punc: false,\n special: null\n }, { // 754 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 754,\n punc: true,\n special: null\n }, { // 758 EI\n rangeStart: null,\n rangeEnd: null,\n index: 758,\n punc: false,\n special: null\n }, { // 760-787 KYLLÄ osakentän $a jälkeen, EI muiden osakenttien jälkeen\n rangeStart: 760,\n rangeEnd: 787,\n index: null,\n punc: true,\n special: {\n afterOnly: 'a',\n strict: false\n }\n }, { // 800 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 800,\n punc: true,\n special: null\n }, { // 810 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 810,\n punc: true,\n special: null\n }, { // 811 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 811,\n punc: true,\n special: null\n }, { // 830 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 830,\n punc: true,\n special: null\n }, { // 850 EI\n rangeStart: null,\n rangeEnd: null,\n index: 850,\n punc: false,\n special: null\n }, { // 852 EI\n rangeStart: null,\n rangeEnd: null,\n index: 852,\n punc: false,\n special: null\n }, { // 856 EI\n rangeStart: null,\n rangeEnd: null,\n index: 856,\n punc: false,\n special: null\n }, { // 880 Samoin kuin vastaavat kentät\n rangeStart: null,\n rangeEnd: null,\n index: 880,\n punc: null,\n special: {\n linked: '6'\n }\n }, { // 882-887 EI\n rangeStart: 882,\n rangeEnd: 887,\n index: null,\n punc: false,\n special: null\n }, { // 9XX EI\n rangeStart: 900,\n rangeEnd: 999,\n index: null,\n punc: false,\n special: null\n }\n];\n\nexport {finnishTerms, validPuncMarks, confSpec};\n"],"file":"ending-punctuation-conf.js"}
1
+ {"version":3,"file":"ending-punctuation-conf.js","names":["finnishTerms","validPuncMarks","confSpec","rangeStart","rangeEnd","index","punc","special","afterOnly","strict","secondLastIfLast","last","noPuncIfField","ifBoth","puncSubField","ifInd2","ifLastCharNot","noPuncIfInd2","lastOf","mandatory","termField","else","linked"],"sources":["../src/ending-punctuation-conf.js"],"sourcesContent":["// Const finnishTerms = ['ysa', 'yso', 'kassu', 'seko', 'valo', 'kulo', 'puho', 'oiko', 'mero', 'liito', 'fast', 'allars', 'kaunokki'];\nconst finnishTerms = [\n /^ysa$/u,\n /^yso$/u,\n /^kassu$/u,\n /^seko$/u,\n /^valo$/u,\n /^kulo$/u,\n /^puho$/u,\n /^oiko$/u,\n /^mero$/u,\n /^liito$/u,\n /^fast$/u,\n /^allars$/u,\n /^kaunokki$/u,\n /^bella$/u,\n /^musa$/u,\n /^local$/u,\n /^slm\\//u,\n /^yso\\//u,\n /^kauno\\//u\n];\n\nconst validPuncMarks = '?\"-!,)]';\n// Configuration specification\nconst confSpec = [\n { // 010-035 EI\n rangeStart: 10,\n rangeEnd: 35,\n index: null,\n punc: false,\n special: null\n }, { // 036 KYLLÄ vain osakentän $b jälkeen\n rangeStart: null,\n rangeEnd: null,\n index: 36,\n punc: true,\n special: {\n afterOnly: 'b',\n strict: true // Punctuation only after $b, because $a is register number\n }\n }, { // 037-050 EI\n rangeStart: 37,\n rangeEnd: 50,\n index: null,\n punc: false,\n special: null\n }, { // 051 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 51,\n punc: true,\n special: null\n }, { // 052-09X EI\n rangeStart: 52,\n rangeEnd: 99,\n index: null,\n punc: false,\n special: null\n }, { // 100 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 100,\n punc: true,\n special: null\n }, { // 110 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 110,\n punc: true,\n special: null\n }, { // 111 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 111,\n punc: true,\n special: null\n }, { // 130 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 130,\n punc: true,\n special: null\n }, { // 210 EI\n rangeStart: null,\n rangeEnd: null,\n index: 210,\n punc: false,\n special: null\n }, { // 222 EI\n rangeStart: null,\n rangeEnd: null,\n index: 222,\n punc: false,\n special: null\n }, { // 240 EI\n rangeStart: null,\n rangeEnd: null,\n index: 240,\n punc: false,\n special: null\n }, { // 242 KYLLÄ Jos viimeinen osakenttä on $y, piste on ennen sitä\n rangeStart: null,\n rangeEnd: null,\n index: 242,\n punc: true,\n special: {\n secondLastIfLast: 'y',\n last: false\n }\n }, { // 243 EI\n rangeStart: null,\n rangeEnd: null,\n index: 243,\n punc: false,\n special: null\n }, { // 245 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 245,\n punc: true,\n special: null\n }, { // 246-247 EI\n rangeStart: 246,\n rangeEnd: 247,\n index: null,\n punc: false,\n special: null\n }, { // 250 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 250,\n punc: true,\n special: null\n }, { // 251 EI\n rangeStart: null,\n rangeEnd: null,\n index: 251,\n punc: false,\n special: null\n }, { // 254-256 KYLLÄ\n rangeStart: 254,\n rangeEnd: 256,\n index: null,\n punc: true,\n special: null\n }, { // 257\n rangeStart: null,\n rangeEnd: null,\n index: 257,\n punc: true,\n special: {\n noPuncIfField: '2'\n }\n }, { // 258 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 258,\n punc: true,\n special: null\n }, { // 260 KYLLÄ Pääsääntö: $a : $b, $c. Tarkista eri poikkeukset ja välimerkitys MARC 21 Full -versiosta\n rangeStart: null,\n rangeEnd: null,\n index: 260,\n punc: true,\n special: {\n afterOnly: 'c',\n strict: false // Others fields may contain abbreviation\n }\n }, { // 263 EI\n rangeStart: null,\n rangeEnd: null,\n index: 263,\n punc: false,\n special: null\n }, { // 264 KYLLÄ Tarkista poikkeukset MARC 21 -sovellusohjeesta\n rangeStart: null,\n rangeEnd: null,\n index: 264,\n punc: true,\n special: {\n ifBoth: true,\n puncSubField: 'c',\n ifInd2: ['0', '1', '2', '3'],\n ifLastCharNot: ']-)?',\n noPuncIfInd2: ['4']\n }\n }, { // 270 EI\n rangeStart: null,\n rangeEnd: null,\n index: 270,\n punc: false,\n special: null\n }, { // 300 EI\n rangeStart: null,\n rangeEnd: null,\n index: 300,\n punc: false,\n special: null\n }, { // 306 EI\n rangeStart: null,\n rangeEnd: null,\n index: 306,\n punc: false,\n special: null\n }, { // 307 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 307,\n punc: true,\n special: null\n }, { // 310 EI\n rangeStart: null,\n rangeEnd: null,\n index: 310,\n punc: false,\n special: null\n }, { // 321 EI\n rangeStart: null,\n rangeEnd: null,\n index: 321,\n punc: false,\n special: null\n }, { // 335-338 EI\n rangeStart: 335,\n rangeEnd: 338,\n index: null,\n punc: false,\n special: null\n }, { // 340 KYLLÄ Vain joidenkin osakenttien jälkeen. Tarkista osakentät MARC 21 Full -versiosta\n rangeStart: null,\n rangeEnd: null,\n index: 340,\n punc: true,\n special: {\n lastOf: ['a', 'd', 'e', 'f', 'h', 'i'],\n mandatory: ['b']\n }\n }, { // 341-342 EI\n rangeStart: 341,\n rangeEnd: 342,\n index: null,\n punc: false,\n special: null\n }, { // 343 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 343,\n punc: true,\n special: null\n }, { // 344-348 EI\n rangeStart: 344,\n rangeEnd: 348,\n index: null,\n punc: false,\n special: null\n }, { // 351-352 KYLLÄ\n rangeStart: 351,\n rangeEnd: 352,\n index: null,\n punc: true,\n special: null\n }, { // 355 EI\n rangeStart: null,\n rangeEnd: null,\n index: 355,\n punc: false,\n special: null\n }, { // 357 EI\n rangeStart: null,\n rangeEnd: null,\n index: 357,\n punc: false,\n special: null\n }, { // 362 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 362,\n punc: true,\n special: null\n }, { // 363 EI\n rangeStart: null,\n rangeEnd: null,\n index: 363,\n punc: false,\n special: null\n }, { // 365-366 EI\n rangeStart: 365,\n rangeEnd: 366,\n index: null,\n punc: false,\n special: null\n }, { // 370 EI\n rangeStart: null,\n rangeEnd: null,\n index: 370,\n punc: false,\n special: null\n }, { // 377 EI\n rangeStart: null,\n rangeEnd: null,\n index: 377,\n punc: false,\n special: null\n }, { // 380-388 EI\n rangeStart: 380,\n rangeEnd: 388,\n index: null,\n punc: false,\n special: null\n }, { // 490 EI\n rangeStart: null,\n rangeEnd: null,\n index: 490,\n punc: false,\n special: null\n }, { // 500-505 KYLLÄ\n rangeStart: 500,\n rangeEnd: 505,\n index: null,\n punc: true,\n special: null\n }, { // 506 KYLLÄ\n index: 506,\n punc: true,\n special: {\n noPuncIfField: 'f'\n }\n }, { // 507-509 KYLLÄ\n rangeStart: 507,\n rangeEnd: 509,\n index: null,\n punc: true,\n special: null\n }, { // 510 EI\n rangeStart: null,\n rangeEnd: null,\n index: 510,\n punc: false,\n special: null\n }, { // 511-518 KYLLÄ\n rangeStart: 511,\n rangeEnd: 518,\n index: null,\n punc: true,\n special: null\n }, { // 520 KYLLÄ Jos viimeinen osakenttä on $u, piste on ennen sitä\n rangeStart: null,\n rangeEnd: null,\n index: 520,\n punc: true,\n special: {\n secondLastIfLast: 'u'\n // Last: false //$u is URL and hence should not be checked as URL's can have '.' at end\n }\n }, { // 521-526 KYLLÄ\n rangeStart: 521,\n rangeEnd: 526,\n index: null,\n punc: true,\n special: null\n }, { // 530 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 530,\n punc: true,\n special: null\n }, { // 532 EI\n rangeStart: null,\n rangeEnd: null,\n index: 532,\n punc: false,\n special: null\n }, { // 533-534 KYLLÄ\n rangeStart: 533,\n rangeEnd: 534,\n index: null,\n punc: true,\n special: null\n }, { // 535-536 EI\n rangeStart: 535,\n rangeEnd: 536,\n index: null,\n punc: false,\n special: null\n }, { // 538 KYLLÄ Jos viimeinen osakenttä on $u, piste on ennen sitä\n rangeStart: null,\n rangeEnd: null,\n index: 538,\n punc: true,\n special: {\n secondLastIfLast: 'u'\n // Last: false //$u is URL and hence should not be checked as URL's can have '.' at end\n }\n }, { // 540-541 KYLLÄ\n rangeStart: 540,\n rangeEnd: 541,\n index: null,\n punc: true,\n special: {\n noPuncIfField: 'u'\n }\n }, { // 542 EI\n rangeStart: null,\n rangeEnd: null,\n index: 542,\n punc: false,\n special: null\n }, { // 544-547 KYLLÄ\n rangeStart: 544,\n rangeEnd: 547,\n index: null,\n punc: true,\n special: null\n }, { // 550 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 550,\n punc: true,\n special: null\n }, { // 552 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 552,\n punc: true,\n special: null\n }, { // 555-556 KYLLÄ\n rangeStart: 555,\n rangeEnd: 556,\n index: null,\n punc: true,\n special: null\n }, { // 561-563 KYLLÄ\n rangeStart: 561,\n rangeEnd: 563,\n index: null,\n punc: true,\n special: null\n }, { // 565 EI\n rangeStart: null,\n rangeEnd: null,\n index: 565,\n punc: false,\n special: null\n }, { // 567 KYLLÄ osakentän $a jälkeen, EI muiden osakenttien jälkeen\n rangeStart: null,\n rangeEnd: null,\n index: 567,\n punc: true,\n special: {\n afterOnly: 'a',\n strict: true // $b can only be controlled term\n }\n }, { // 580-581 KYLLÄ\n rangeStart: 580,\n rangeEnd: 581,\n index: null,\n punc: true,\n special: null\n }, { // 583 EI\n rangeStart: null,\n rangeEnd: null,\n index: 583,\n punc: false,\n special: null\n }, { // 584-585 KYLLÄ\n rangeStart: 584,\n rangeEnd: 585,\n index: null,\n punc: true,\n special: null\n }, { // 586 EI\n rangeStart: null,\n rangeEnd: null,\n index: 586,\n punc: false,\n special: null\n }, { // 588 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: null,\n punc: true,\n special: null\n }, { // 59X EI\n rangeStart: 590,\n rangeEnd: 599,\n index: null,\n punc: false,\n special: null\n }, { // 600 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 600,\n punc: true,\n special: null\n }, { // 610 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 610,\n punc: true,\n special: null\n }, { // 611 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 611,\n punc: true,\n special: null\n }, { // 630 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 630,\n punc: true,\n special: null\n }, { // 647-651 EI suomalaisten sanastojen termeihin, muihin sanaston käytännön mukaan, yleensä KYLLÄ\n rangeStart: 647,\n rangeEnd: 651,\n index: null,\n punc: false,\n special: {\n termField: '2',\n finnishTerms,\n else: true\n }\n }, { // 653 EI\n rangeStart: null,\n rangeEnd: null,\n index: 653,\n punc: false,\n special: null\n }, { // 654-662 EI suomalaisten sanastojen termeihin, muihin sanaston käytännön mukaan, yleensä KYLLÄ\n rangeStart: 654,\n rangeEnd: 662,\n index: null,\n punc: false,\n special: {\n termField: '2',\n finnishTerms,\n else: true\n }\n }, { // 69X EI\n rangeStart: 690,\n rangeEnd: 699,\n index: null,\n punc: false,\n special: null\n }, { // 700 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 700,\n punc: true,\n special: null\n }, { // 710 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 710,\n punc: true,\n special: null\n }, { // 711 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 711,\n punc: true,\n special: null\n }, { // 720 EI\n rangeStart: null,\n rangeEnd: null,\n index: 720,\n punc: false,\n special: null\n }, { // 730 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 730,\n punc: true,\n special: null\n }, { // 740 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 740,\n punc: true,\n special: null\n }, { // 751 EI\n rangeStart: null,\n rangeEnd: null,\n index: 751,\n punc: false,\n special: null\n }, { // 752 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 752,\n punc: true,\n special: null\n }, { // 753 EI\n rangeStart: null,\n rangeEnd: null,\n index: 753,\n punc: false,\n special: null\n }, { // 754 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 754,\n punc: true,\n special: null\n }, { // 758 EI\n rangeStart: null,\n rangeEnd: null,\n index: 758,\n punc: false,\n special: null\n }, { // 760-787 KYLLÄ osakentän $a jälkeen, EI muiden osakenttien jälkeen\n rangeStart: 760,\n rangeEnd: 787,\n index: null,\n punc: true,\n special: {\n afterOnly: 'a',\n strict: false\n }\n }, { // 800 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 800,\n punc: true,\n special: null\n }, { // 810 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 810,\n punc: true,\n special: null\n }, { // 811 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 811,\n punc: true,\n special: null\n }, { // 830 KYLLÄ\n rangeStart: null,\n rangeEnd: null,\n index: 830,\n punc: true,\n special: null\n }, { // 850 EI\n rangeStart: null,\n rangeEnd: null,\n index: 850,\n punc: false,\n special: null\n }, { // 852 EI\n rangeStart: null,\n rangeEnd: null,\n index: 852,\n punc: false,\n special: null\n }, { // 856 EI\n rangeStart: null,\n rangeEnd: null,\n index: 856,\n punc: false,\n special: null\n }, { // 880 Samoin kuin vastaavat kentät\n rangeStart: null,\n rangeEnd: null,\n index: 880,\n punc: null,\n special: {\n linked: '6'\n }\n }, { // 882-887 EI\n rangeStart: 882,\n rangeEnd: 887,\n index: null,\n punc: false,\n special: null\n }, { // 9XX EI\n rangeStart: 900,\n rangeEnd: 999,\n index: null,\n punc: false,\n special: null\n }\n];\n\nexport {finnishTerms, validPuncMarks, confSpec};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ending-punctuation.js"],"names":["debug","description","validate","record","validatePunc","fix","message","fields","forEach","field","validateField","valid","length","linkedTag","findLastSubfield","subfields","filter","sf","isNaN","code","slice","shift","normalPuncRules","subfield","punc","tag","checkEnd","overrideValidPuncMarks","puncMarks","validPuncMarks","lastPuncMark","includes","value","lastPuncDot","push","concat","charAt","specialCases","res","lastSubField","special","afterOnly","strict","noPuncIfField","some","subField","ifBoth","puncSubField","ifInd2","ind2","ifLastCharNot","noPuncIfInd2","secondLastIfLast","last","termField","languageField","find","finnishTerms","p","test","else","lastOf","indexOf","mandatory","linked","parseInt","substr","err","Error","stack","Object","values","confSpec","o","rangeFine","rangeStart","rangeEnd","index","e","console","error","validateSingleField"],"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-2021 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/* eslint-disable complexity, max-params */\n\n\n// Import {validPuncMarks, finnishTerms, confSpec} from './ending-punctuation-conf.js';\nimport {validPuncMarks, finnishTerms, confSpec} from './ending-punctuation-conf';\nimport createDebugLogger from 'debug';\n\nconst debug = createDebugLogger('@natlibfi/marc-record-validator-melinda/ending-punctuation');\n\nexport default function () {\n return {\n description:\n 'Handles invalid ending punctuation',\n validate: record => validatePunc(record, false), // Record (Object), fix (boolean)\n fix: record => validatePunc(record, true) // Record (Object), fix (boolean)\n\n };\n\n // This is used to validate record against configuration\n function validatePunc(record, fix) {\n const message = {message: []};\n\n if (fix) { // eslint-disable-line functional/no-conditional-statement\n message.fix = []; // eslint-disable-line functional/immutable-data\n }\n\n // Actual parsing of all fields\n if (!record.fields) {\n return false;\n }\n\n record.fields.forEach(field => {\n validateField(field, false, fix, message);\n });\n\n message.valid = !(message.message.length >= 1); // eslint-disable-line functional/immutable-data\n return message;\n }\n}\n\n// Field validation with punctuation rules for normal and special cases in subfunction (to reduce complexity to please travisci)\nfunction validateField(field, linkedTag, fix, message) {\n // This is used to find last subfield that should have punctuation\n function findLastSubfield(field) {\n const subfields = field.subfields.filter(sf => isNaN(sf.code) && 'value' in sf);\n return subfields.slice(-1).shift();\n }\n\n // Punctuation rule (Boolean), Check no ending dot strict (Boolean)\n function normalPuncRules(subfield, punc, tag, checkEnd, overrideValidPuncMarks) {\n const puncMarks = overrideValidPuncMarks || validPuncMarks;\n const lastPuncMark = puncMarks.includes(subfield.value.slice(-1)); // If string ends to punctuation char\n const lastPuncDot = '.'.includes(subfield.value.slice(-1)); // If string ends to dot\n\n // Last char should be punc, but its not one of marks nor dot\n if (punc && !(lastPuncMark || lastPuncDot)) {\n // Console.log(\"1. Invalid punctuation - missing\")\n message.message.push(`Field ${tag} has invalid ending punctuation`); // eslint-disable-line functional/immutable-data\n if (fix) { // eslint-disable-line functional/no-conditional-statement\n subfield.value = subfield.value.concat('.'); // eslint-disable-line functional/immutable-data\n message.fix.push(`Field ${tag} - Added punctuation to $${subfield.code}`); // eslint-disable-line functional/immutable-data\n }\n\n // Last char is dot, but previous char is one of punc marks, like 'Question?.'\n } else if (lastPuncDot && subfield.value.length > 1 && puncMarks.includes(subfield.value.charAt(subfield.value.length - 2))) {\n // Console.log(\"2. Invalid punctuation - duplicate, like '?.'\")\n message.message.push(`Field ${tag} has invalid ending punctuation`); // eslint-disable-line functional/immutable-data\n if (fix) { // eslint-disable-line functional/no-conditional-statement\n subfield.value = subfield.value.slice(0, -1); // eslint-disable-line functional/immutable-data\n message.fix.push(`Field ${tag} - Removed double punctuation from $${subfield.code}`); // eslint-disable-line functional/immutable-data\n }\n\n // Last char shouldn't be dot !! This is behind checkEnd boolean, because of dots at end of abbreviations, so this is checked only in special cases !!//\n } else if (checkEnd && (!punc && lastPuncDot)) {\n // Console.log(\"3. Invalid punctuation - Shouldn't be dot, is\")\n message.message.push(`Field ${tag} has invalid ending punctuation`); // eslint-disable-line functional/immutable-data\n if (fix) { // eslint-disable-line functional/no-conditional-statement\n subfield.value = subfield.value.slice(0, -1); // eslint-disable-line functional/immutable-data\n message.fix.push(`Field ${tag} - Removed punctuation from $${subfield.code}`); // eslint-disable-line functional/immutable-data\n }\n }\n }\n\n // Special cases from here on\n function specialCases(res, field, tag) {\n let lastSubField = null; // eslint-disable-line functional/no-let\n // Punctuation should be only after specific field\n if (res.special.afterOnly) {\n lastSubField = findLastSubfield(field);\n\n if (lastSubField) {\n if (typeof res.special.strict === 'undefined') { // eslint-disable-line functional/no-conditional-statement\n res.special.strict = true; // eslint-disable-line functional/immutable-data\n }\n\n if (lastSubField.code === res.special.afterOnly) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, res.punc, tag, res.special.strict, false);\n } else { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, !res.punc, tag, true, false);\n }\n }\n } else if (res.special.noPuncIfField) {\n if (field.subfields.some(subField => subField.code === res.special.noPuncIfField) === false) { // eslint-disable-line functional/no-conditional-statement\n lastSubField = findLastSubfield(field);\n normalPuncRules(lastSubField, res.punc, tag, true, false);\n }\n } else if (res.special.ifBoth) {\n lastSubField = findLastSubfield(field);\n if (lastSubField && lastSubField.code === res.special.puncSubField) {\n // Ind2 match, check second if at punc rules with special punc char override\n if (res.special.ifInd2 && res.special.ifInd2.includes(field.ind2)) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, res.special.ifBoth, tag, true, res.special.ifLastCharNot);\n\n // Matches execption to special rule, noPuncIfInd2 (likely with value 4, that indicates copyright mark)\n } else if (res.special.noPuncIfInd2 && field.ind2 && res.special.noPuncIfInd2.includes(field.ind2)) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, !res.special.ifBoth, tag, true, res.special.ifLastCharNot);\n\n // Does not match rules -> shouldn't have punc\n } else { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, !res.special.ifBoth, tag, true, res.special.ifLastCharNot);\n }\n }\n } else if (res.special.secondLastIfLast) { // eslint-disable-line functional/no-conditional-statement\n field.subfields.forEach(subField => {\n if (isNaN(subField.code) && res.special.secondLastIfLast !== subField.code) { // eslint-disable-line functional/no-conditional-statement\n lastSubField = subField;\n } // Not control field\n\n if (typeof res.special.last !== 'undefined' && res.special.secondLastIfLast === subField.code) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(subField, res.special.last, tag, true, false);\n } // Strict because this field should not be abbreviation\n });\n normalPuncRules(lastSubField, res.punc, tag, false, false);\n\n // Search for Finnish terms\n } else if (res.special.termField) {\n lastSubField = findLastSubfield(field);\n\n if (lastSubField) {\n const languageField = field.subfields.find(({code}) => code === res.special.termField);\n if (languageField && languageField.value && finnishTerms.some(p => p.test(languageField.value))) { // eslint-disable-line functional/no-conditional-statement\n // If (languageField && languageField.value && finnishTerms.indexOf(languageField.value) > -1) {\n normalPuncRules(lastSubField, res.punc, tag, true, false);\n } else { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, res.special.else, tag, false, false); // Strict because of years etc (648, 650)\n }\n }\n // Search last of array in subfields and check if it has punc\n } else if (res.special.lastOf) {\n lastSubField = null;\n field.subfields.filter(subField => 'value' in subField).forEach(subField => {\n if (isNaN(subField.code) && res.special.lastOf.indexOf(subField.code) > -1) { // eslint-disable-line functional/no-conditional-statement\n lastSubField = subField;\n } // Not control field\n\n if (res.special.mandatory && res.special.mandatory.indexOf(subField.code) > -1) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(subField, res.punc, tag, true, false);\n } // Strict because of mandatory\n });\n\n if (lastSubField) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, res.punc, tag, false, false);\n }\n\n // If field has linked rules (tag: 880), find rules and re-validate\n } else if (res.special.linked) { // eslint-disable-line functional/no-conditional-statement\n let linkedTag = null; // eslint-disable-line functional/no-let\n try {\n linkedTag = parseInt(field.subfields.find(({code}) => code === res.special.linked).value.substr(0, 3), 10); // Substring feels stupid, but is used in MarcRecord to extract tag.\n } catch (err) {\n debug(`Got error while parsing tag: ${err instanceof Error ? err.stack : err}`);\n return false;\n }\n\n validateField(field, linkedTag, fix, message);\n }\n }\n\n let res = null; // eslint-disable-line functional/no-let\n let tag = null; // eslint-disable-line functional/no-let\n let lastSubField = null; // eslint-disable-line functional/no-let\n\n if (linkedTag) { // eslint-disable-line functional/no-conditional-statement\n tag = linkedTag;\n } else { // eslint-disable-line functional/no-conditional-statement\n try {\n tag = parseInt(field.tag, 10);\n } catch (err) {\n debug(`Got error while parsing tag: ${err instanceof Error ? err.stack : err}`);\n return false;\n }\n }\n\n // Find configuration object matching tag:\n res = Object.values(confSpec).find(o => {\n const rangeFine = o.rangeStart <= tag && o.rangeEnd >= tag;\n return o.index === tag || rangeFine;\n });\n\n if (!res) {\n return;\n } // Configuration not found, pass field without error\n\n // Field does not have subfields; invalid\n if (typeof field.subfields === 'undefined' || field.subfields === null) {\n message.message.push(`Field ${field.tag} has invalid ending punctuation`); // eslint-disable-line functional/immutable-data\n return;\n }\n\n // Normal rules\n if (typeof res.special === 'undefined' || res.special === null) {\n lastSubField = findLastSubfield(field);\n\n if (lastSubField) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, res.punc, field.tag, false, false, fix, message);\n }\n } else { // eslint-disable-line functional/no-conditional-statement\n try {\n specialCases(res, field, field.tag);\n } catch (e) {\n console.error('Catched error from special case: ', e); // eslint-disable-line no-console\n }\n }\n}\n\nexport function validateSingleField(field, linkedTag, fix) {\n const message = {};\n message.message = []; // eslint-disable-line functional/immutable-data\n if (fix) { // eslint-disable-line functional/no-conditional-statement\n message.fix = []; // eslint-disable-line functional/immutable-data\n }\n\n validateField(field, linkedTag, fix, message);\n message.valid = !(message.message.length >= 1); // eslint-disable-line functional/immutable-data\n return message;\n}\n\n"],"file":"ending-punctuation.js"}
1
+ {"version":3,"file":"ending-punctuation.js","names":["debug","description","validate","record","validatePunc","fix","message","fields","forEach","field","validateField","valid","length","linkedTag","findLastSubfield","subfields","filter","sf","isNaN","code","slice","shift","normalPuncRules","subfield","punc","tag","checkEnd","overrideValidPuncMarks","puncMarks","validPuncMarks","lastPuncMark","includes","value","lastPuncDot","push","concat","charAt","specialCases","res","lastSubField","special","afterOnly","strict","noPuncIfField","some","subField","ifBoth","puncSubField","ifInd2","ind2","ifLastCharNot","noPuncIfInd2","secondLastIfLast","last","termField","languageField","find","finnishTerms","p","test","else","lastOf","indexOf","mandatory","linked","parseInt","substr","err","Error","stack","Object","values","confSpec","o","rangeFine","rangeStart","rangeEnd","index","e","console","error","validateSingleField"],"sources":["../src/ending-punctuation.js"],"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-2021 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/* eslint-disable complexity, max-params */\n\n\n// Import {validPuncMarks, finnishTerms, confSpec} from './ending-punctuation-conf.js';\nimport {validPuncMarks, finnishTerms, confSpec} from './ending-punctuation-conf';\nimport createDebugLogger from 'debug';\n\nconst debug = createDebugLogger('@natlibfi/marc-record-validator-melinda/ending-punctuation');\n\nexport default function () {\n return {\n description:\n 'Handles invalid ending punctuation',\n validate: record => validatePunc(record, false), // Record (Object), fix (boolean)\n fix: record => validatePunc(record, true) // Record (Object), fix (boolean)\n\n };\n\n // This is used to validate record against configuration\n function validatePunc(record, fix) {\n const message = {message: []};\n\n if (fix) { // eslint-disable-line functional/no-conditional-statement\n message.fix = []; // eslint-disable-line functional/immutable-data\n }\n\n // Actual parsing of all fields\n if (!record.fields) {\n return false;\n }\n\n record.fields.forEach(field => {\n validateField(field, false, fix, message);\n });\n\n message.valid = !(message.message.length >= 1); // eslint-disable-line functional/immutable-data\n return message;\n }\n}\n\n// Field validation with punctuation rules for normal and special cases in subfunction (to reduce complexity to please travisci)\nfunction validateField(field, linkedTag, fix, message) {\n // This is used to find last subfield that should have punctuation\n function findLastSubfield(field) {\n const subfields = field.subfields.filter(sf => isNaN(sf.code) && 'value' in sf);\n return subfields.slice(-1).shift();\n }\n\n // Punctuation rule (Boolean), Check no ending dot strict (Boolean)\n function normalPuncRules(subfield, punc, tag, checkEnd, overrideValidPuncMarks) {\n const puncMarks = overrideValidPuncMarks || validPuncMarks;\n const lastPuncMark = puncMarks.includes(subfield.value.slice(-1)); // If string ends to punctuation char\n const lastPuncDot = '.'.includes(subfield.value.slice(-1)); // If string ends to dot\n\n // Last char should be punc, but its not one of marks nor dot\n if (punc && !(lastPuncMark || lastPuncDot)) {\n // Console.log(\"1. Invalid punctuation - missing\")\n message.message.push(`Field ${tag} has invalid ending punctuation`); // eslint-disable-line functional/immutable-data\n if (fix) { // eslint-disable-line functional/no-conditional-statement\n subfield.value = subfield.value.concat('.'); // eslint-disable-line functional/immutable-data\n message.fix.push(`Field ${tag} - Added punctuation to $${subfield.code}`); // eslint-disable-line functional/immutable-data\n }\n\n // Last char is dot, but previous char is one of punc marks, like 'Question?.'\n } else if (lastPuncDot && subfield.value.length > 1 && puncMarks.includes(subfield.value.charAt(subfield.value.length - 2))) {\n // Console.log(\"2. Invalid punctuation - duplicate, like '?.'\")\n message.message.push(`Field ${tag} has invalid ending punctuation`); // eslint-disable-line functional/immutable-data\n if (fix) { // eslint-disable-line functional/no-conditional-statement\n subfield.value = subfield.value.slice(0, -1); // eslint-disable-line functional/immutable-data\n message.fix.push(`Field ${tag} - Removed double punctuation from $${subfield.code}`); // eslint-disable-line functional/immutable-data\n }\n\n // Last char shouldn't be dot !! This is behind checkEnd boolean, because of dots at end of abbreviations, so this is checked only in special cases !!//\n } else if (checkEnd && (!punc && lastPuncDot)) {\n // Console.log(\"3. Invalid punctuation - Shouldn't be dot, is\")\n message.message.push(`Field ${tag} has invalid ending punctuation`); // eslint-disable-line functional/immutable-data\n if (fix) { // eslint-disable-line functional/no-conditional-statement\n subfield.value = subfield.value.slice(0, -1); // eslint-disable-line functional/immutable-data\n message.fix.push(`Field ${tag} - Removed punctuation from $${subfield.code}`); // eslint-disable-line functional/immutable-data\n }\n }\n }\n\n // Special cases from here on\n function specialCases(res, field, tag) {\n let lastSubField = null; // eslint-disable-line functional/no-let\n // Punctuation should be only after specific field\n if (res.special.afterOnly) {\n lastSubField = findLastSubfield(field);\n\n if (lastSubField) {\n if (typeof res.special.strict === 'undefined') { // eslint-disable-line functional/no-conditional-statement\n res.special.strict = true; // eslint-disable-line functional/immutable-data\n }\n\n if (lastSubField.code === res.special.afterOnly) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, res.punc, tag, res.special.strict, false);\n } else { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, !res.punc, tag, true, false);\n }\n }\n } else if (res.special.noPuncIfField) {\n if (field.subfields.some(subField => subField.code === res.special.noPuncIfField) === false) { // eslint-disable-line functional/no-conditional-statement\n lastSubField = findLastSubfield(field);\n normalPuncRules(lastSubField, res.punc, tag, true, false);\n }\n } else if (res.special.ifBoth) {\n lastSubField = findLastSubfield(field);\n if (lastSubField && lastSubField.code === res.special.puncSubField) {\n // Ind2 match, check second if at punc rules with special punc char override\n if (res.special.ifInd2 && res.special.ifInd2.includes(field.ind2)) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, res.special.ifBoth, tag, true, res.special.ifLastCharNot);\n\n // Matches execption to special rule, noPuncIfInd2 (likely with value 4, that indicates copyright mark)\n } else if (res.special.noPuncIfInd2 && field.ind2 && res.special.noPuncIfInd2.includes(field.ind2)) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, !res.special.ifBoth, tag, true, res.special.ifLastCharNot);\n\n // Does not match rules -> shouldn't have punc\n } else { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, !res.special.ifBoth, tag, true, res.special.ifLastCharNot);\n }\n }\n } else if (res.special.secondLastIfLast) { // eslint-disable-line functional/no-conditional-statement\n field.subfields.forEach(subField => {\n if (isNaN(subField.code) && res.special.secondLastIfLast !== subField.code) { // eslint-disable-line functional/no-conditional-statement\n lastSubField = subField;\n } // Not control field\n\n if (typeof res.special.last !== 'undefined' && res.special.secondLastIfLast === subField.code) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(subField, res.special.last, tag, true, false);\n } // Strict because this field should not be abbreviation\n });\n normalPuncRules(lastSubField, res.punc, tag, false, false);\n\n // Search for Finnish terms\n } else if (res.special.termField) {\n lastSubField = findLastSubfield(field);\n\n if (lastSubField) {\n const languageField = field.subfields.find(({code}) => code === res.special.termField);\n if (languageField && languageField.value && finnishTerms.some(p => p.test(languageField.value))) { // eslint-disable-line functional/no-conditional-statement\n // If (languageField && languageField.value && finnishTerms.indexOf(languageField.value) > -1) {\n normalPuncRules(lastSubField, res.punc, tag, true, false);\n } else { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, res.special.else, tag, false, false); // Strict because of years etc (648, 650)\n }\n }\n // Search last of array in subfields and check if it has punc\n } else if (res.special.lastOf) {\n lastSubField = null;\n field.subfields.filter(subField => 'value' in subField).forEach(subField => {\n if (isNaN(subField.code) && res.special.lastOf.indexOf(subField.code) > -1) { // eslint-disable-line functional/no-conditional-statement\n lastSubField = subField;\n } // Not control field\n\n if (res.special.mandatory && res.special.mandatory.indexOf(subField.code) > -1) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(subField, res.punc, tag, true, false);\n } // Strict because of mandatory\n });\n\n if (lastSubField) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, res.punc, tag, false, false);\n }\n\n // If field has linked rules (tag: 880), find rules and re-validate\n } else if (res.special.linked) { // eslint-disable-line functional/no-conditional-statement\n let linkedTag = null; // eslint-disable-line functional/no-let\n try {\n linkedTag = parseInt(field.subfields.find(({code}) => code === res.special.linked).value.substr(0, 3), 10); // Substring feels stupid, but is used in MarcRecord to extract tag.\n } catch (err) {\n debug(`Got error while parsing tag: ${err instanceof Error ? err.stack : err}`);\n return false;\n }\n\n validateField(field, linkedTag, fix, message);\n }\n }\n\n let res = null; // eslint-disable-line functional/no-let\n let tag = null; // eslint-disable-line functional/no-let\n let lastSubField = null; // eslint-disable-line functional/no-let\n\n if (linkedTag) { // eslint-disable-line functional/no-conditional-statement\n tag = linkedTag;\n } else { // eslint-disable-line functional/no-conditional-statement\n try {\n tag = parseInt(field.tag, 10);\n } catch (err) {\n debug(`Got error while parsing tag: ${err instanceof Error ? err.stack : err}`);\n return false;\n }\n }\n\n // Find configuration object matching tag:\n res = Object.values(confSpec).find(o => {\n const rangeFine = o.rangeStart <= tag && o.rangeEnd >= tag;\n return o.index === tag || rangeFine;\n });\n\n if (!res) {\n return;\n } // Configuration not found, pass field without error\n\n // Field does not have subfields; invalid\n if (typeof field.subfields === 'undefined' || field.subfields === null) {\n message.message.push(`Field ${field.tag} has invalid ending punctuation`); // eslint-disable-line functional/immutable-data\n return;\n }\n\n // Normal rules\n if (typeof res.special === 'undefined' || res.special === null) {\n lastSubField = findLastSubfield(field);\n\n if (lastSubField) { // eslint-disable-line functional/no-conditional-statement\n normalPuncRules(lastSubField, res.punc, field.tag, false, false, fix, message);\n }\n } else { // eslint-disable-line functional/no-conditional-statement\n try {\n specialCases(res, field, field.tag);\n } catch (e) {\n console.error('Catched error from special case: ', e); // eslint-disable-line no-console\n }\n }\n}\n\nexport function validateSingleField(field, linkedTag, fix) {\n const message = {};\n message.message = []; // eslint-disable-line functional/immutable-data\n if (fix) { // eslint-disable-line functional/no-conditional-statement\n message.fix = []; // eslint-disable-line functional/immutable-data\n }\n\n validateField(field, linkedTag, fix, message);\n message.valid = !(message.message.length >= 1); // eslint-disable-line functional/immutable-data\n return message;\n}\n\n"],"mappings":";;;;;;;;AAgCA;;AACA;;;;AAjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAGA;AAIA,MAAMA,KAAK,GAAG,oBAAkB,4DAAlB,CAAd;;AAEe,oBAAY;EACzB,OAAO;IACLC,WAAW,EACT,oCAFG;IAGLC,QAAQ,EAAEC,MAAM,IAAIC,YAAY,CAACD,MAAD,EAAS,KAAT,CAH3B;IAG4C;IACjDE,GAAG,EAAEF,MAAM,IAAIC,YAAY,CAACD,MAAD,EAAS,IAAT,CAJtB,CAIqC;;EAJrC,CAAP,CADyB,CASzB;;EACA,SAASC,YAAT,CAAsBD,MAAtB,EAA8BE,GAA9B,EAAmC;IACjC,MAAMC,OAAO,GAAG;MAACA,OAAO,EAAE;IAAV,CAAhB;;IAEA,IAAID,GAAJ,EAAS;MAAE;MACTC,OAAO,CAACD,GAAR,GAAc,EAAd,CADO,CACW;IACnB,CALgC,CAOjC;;;IACA,IAAI,CAACF,MAAM,CAACI,MAAZ,EAAoB;MAClB,OAAO,KAAP;IACD;;IAEDJ,MAAM,CAACI,MAAP,CAAcC,OAAd,CAAsBC,KAAK,IAAI;MAC7BC,aAAa,CAACD,KAAD,EAAQ,KAAR,EAAeJ,GAAf,EAAoBC,OAApB,CAAb;IACD,CAFD;IAIAA,OAAO,CAACK,KAAR,GAAgB,EAAEL,OAAO,CAACA,OAAR,CAAgBM,MAAhB,IAA0B,CAA5B,CAAhB,CAhBiC,CAgBe;;IAChD,OAAON,OAAP;EACD;AACF,C,CAED;;;AACA,SAASI,aAAT,CAAuBD,KAAvB,EAA8BI,SAA9B,EAAyCR,GAAzC,EAA8CC,OAA9C,EAAuD;EACrD;EACA,SAASQ,gBAAT,CAA0BL,KAA1B,EAAiC;IAC/B,MAAMM,SAAS,GAAGN,KAAK,CAACM,SAAN,CAAgBC,MAAhB,CAAuBC,EAAE,IAAIC,KAAK,CAACD,EAAE,CAACE,IAAJ,CAAL,IAAkB,WAAWF,EAA1D,CAAlB;IACA,OAAOF,SAAS,CAACK,KAAV,CAAgB,CAAC,CAAjB,EAAoBC,KAApB,EAAP;EACD,CALoD,CAOrD;;;EACA,SAASC,eAAT,CAAyBC,QAAzB,EAAmCC,IAAnC,EAAyCC,GAAzC,EAA8CC,QAA9C,EAAwDC,sBAAxD,EAAgF;IAC9E,MAAMC,SAAS,GAAGD,sBAAsB,IAAIE,qCAA5C;IACA,MAAMC,YAAY,GAAGF,SAAS,CAACG,QAAV,CAAmBR,QAAQ,CAACS,KAAT,CAAeZ,KAAf,CAAqB,CAAC,CAAtB,CAAnB,CAArB,CAF8E,CAEX;;IACnE,MAAMa,WAAW,GAAG,IAAIF,QAAJ,CAAaR,QAAQ,CAACS,KAAT,CAAeZ,KAAf,CAAqB,CAAC,CAAtB,CAAb,CAApB,CAH8E,CAGlB;IAE5D;;IACA,IAAII,IAAI,IAAI,EAAEM,YAAY,IAAIG,WAAlB,CAAZ,EAA4C;MAC1C;MACA3B,OAAO,CAACA,OAAR,CAAgB4B,IAAhB,CAAsB,SAAQT,GAAI,iCAAlC,EAF0C,CAE2B;;MACrE,IAAIpB,GAAJ,EAAS;QAAE;QACTkB,QAAQ,CAACS,KAAT,GAAiBT,QAAQ,CAACS,KAAT,CAAeG,MAAf,CAAsB,GAAtB,CAAjB,CADO,CACsC;;QAC7C7B,OAAO,CAACD,GAAR,CAAY6B,IAAZ,CAAkB,SAAQT,GAAI,4BAA2BF,QAAQ,CAACJ,IAAK,EAAvE,EAFO,CAEoE;MAC5E,CANyC,CAQ1C;;IACD,CATD,MASO,IAAIc,WAAW,IAAIV,QAAQ,CAACS,KAAT,CAAepB,MAAf,GAAwB,CAAvC,IAA4CgB,SAAS,CAACG,QAAV,CAAmBR,QAAQ,CAACS,KAAT,CAAeI,MAAf,CAAsBb,QAAQ,CAACS,KAAT,CAAepB,MAAf,GAAwB,CAA9C,CAAnB,CAAhD,EAAsH;MAC3H;MACAN,OAAO,CAACA,OAAR,CAAgB4B,IAAhB,CAAsB,SAAQT,GAAI,iCAAlC,EAF2H,CAEtD;;MACrE,IAAIpB,GAAJ,EAAS;QAAE;QACTkB,QAAQ,CAACS,KAAT,GAAiBT,QAAQ,CAACS,KAAT,CAAeZ,KAAf,CAAqB,CAArB,EAAwB,CAAC,CAAzB,CAAjB,CADO,CACuC;;QAC9Cd,OAAO,CAACD,GAAR,CAAY6B,IAAZ,CAAkB,SAAQT,GAAI,uCAAsCF,QAAQ,CAACJ,IAAK,EAAlF,EAFO,CAE+E;MACvF,CAN0H,CAQ3H;;IACD,CATM,MASA,IAAIO,QAAQ,IAAK,CAACF,IAAD,IAASS,WAA1B,EAAwC;MAC7C;MACA3B,OAAO,CAACA,OAAR,CAAgB4B,IAAhB,CAAsB,SAAQT,GAAI,iCAAlC,EAF6C,CAEwB;;MACrE,IAAIpB,GAAJ,EAAS;QAAE;QACTkB,QAAQ,CAACS,KAAT,GAAiBT,QAAQ,CAACS,KAAT,CAAeZ,KAAf,CAAqB,CAArB,EAAwB,CAAC,CAAzB,CAAjB,CADO,CACuC;;QAC9Cd,OAAO,CAACD,GAAR,CAAY6B,IAAZ,CAAkB,SAAQT,GAAI,gCAA+BF,QAAQ,CAACJ,IAAK,EAA3E,EAFO,CAEwE;MAChF;IACF;EACF,CAxCoD,CA0CrD;;;EACA,SAASkB,YAAT,CAAsBC,GAAtB,EAA2B7B,KAA3B,EAAkCgB,GAAlC,EAAuC;IACrC,IAAIc,YAAY,GAAG,IAAnB,CADqC,CACZ;IACzB;;IACA,IAAID,GAAG,CAACE,OAAJ,CAAYC,SAAhB,EAA2B;MACzBF,YAAY,GAAGzB,gBAAgB,CAACL,KAAD,CAA/B;;MAEA,IAAI8B,YAAJ,EAAkB;QAChB,IAAI,OAAOD,GAAG,CAACE,OAAJ,CAAYE,MAAnB,KAA8B,WAAlC,EAA+C;UAAE;UAC/CJ,GAAG,CAACE,OAAJ,CAAYE,MAAZ,GAAqB,IAArB,CAD6C,CAClB;QAC5B;;QAED,IAAIH,YAAY,CAACpB,IAAb,KAAsBmB,GAAG,CAACE,OAAJ,CAAYC,SAAtC,EAAiD;UAAE;UACjDnB,eAAe,CAACiB,YAAD,EAAeD,GAAG,CAACd,IAAnB,EAAyBC,GAAzB,EAA8Ba,GAAG,CAACE,OAAJ,CAAYE,MAA1C,EAAkD,KAAlD,CAAf;QACD,CAFD,MAEO;UAAE;UACPpB,eAAe,CAACiB,YAAD,EAAe,CAACD,GAAG,CAACd,IAApB,EAA0BC,GAA1B,EAA+B,IAA/B,EAAqC,KAArC,CAAf;QACD;MACF;IACF,CAdD,MAcO,IAAIa,GAAG,CAACE,OAAJ,CAAYG,aAAhB,EAA+B;MACpC,IAAIlC,KAAK,CAACM,SAAN,CAAgB6B,IAAhB,CAAqBC,QAAQ,IAAIA,QAAQ,CAAC1B,IAAT,KAAkBmB,GAAG,CAACE,OAAJ,CAAYG,aAA/D,MAAkF,KAAtF,EAA6F;QAAE;QAC7FJ,YAAY,GAAGzB,gBAAgB,CAACL,KAAD,CAA/B;QACAa,eAAe,CAACiB,YAAD,EAAeD,GAAG,CAACd,IAAnB,EAAyBC,GAAzB,EAA8B,IAA9B,EAAoC,KAApC,CAAf;MACD;IACF,CALM,MAKA,IAAIa,GAAG,CAACE,OAAJ,CAAYM,MAAhB,EAAwB;MAC7BP,YAAY,GAAGzB,gBAAgB,CAACL,KAAD,CAA/B;;MACA,IAAI8B,YAAY,IAAIA,YAAY,CAACpB,IAAb,KAAsBmB,GAAG,CAACE,OAAJ,CAAYO,YAAtD,EAAoE;QAClE;QACA,IAAIT,GAAG,CAACE,OAAJ,CAAYQ,MAAZ,IAAsBV,GAAG,CAACE,OAAJ,CAAYQ,MAAZ,CAAmBjB,QAAnB,CAA4BtB,KAAK,CAACwC,IAAlC,CAA1B,EAAmE;UAAE;UACnE3B,eAAe,CAACiB,YAAD,EAAeD,GAAG,CAACE,OAAJ,CAAYM,MAA3B,EAAmCrB,GAAnC,EAAwC,IAAxC,EAA8Ca,GAAG,CAACE,OAAJ,CAAYU,aAA1D,CAAf,CADiE,CAGjE;QACD,CAJD,MAIO,IAAIZ,GAAG,CAACE,OAAJ,CAAYW,YAAZ,IAA4B1C,KAAK,CAACwC,IAAlC,IAA0CX,GAAG,CAACE,OAAJ,CAAYW,YAAZ,CAAyBpB,QAAzB,CAAkCtB,KAAK,CAACwC,IAAxC,CAA9C,EAA6F;UAAE;UACpG3B,eAAe,CAACiB,YAAD,EAAe,CAACD,GAAG,CAACE,OAAJ,CAAYM,MAA5B,EAAoCrB,GAApC,EAAyC,IAAzC,EAA+Ca,GAAG,CAACE,OAAJ,CAAYU,aAA3D,CAAf,CADkG,CAGlG;QACD,CAJM,MAIA;UAAE;UACP5B,eAAe,CAACiB,YAAD,EAAe,CAACD,GAAG,CAACE,OAAJ,CAAYM,MAA5B,EAAoCrB,GAApC,EAAyC,IAAzC,EAA+Ca,GAAG,CAACE,OAAJ,CAAYU,aAA3D,CAAf;QACD;MACF;IACF,CAhBM,MAgBA,IAAIZ,GAAG,CAACE,OAAJ,CAAYY,gBAAhB,EAAkC;MAAE;MACzC3C,KAAK,CAACM,SAAN,CAAgBP,OAAhB,CAAwBqC,QAAQ,IAAI;QAClC,IAAI3B,KAAK,CAAC2B,QAAQ,CAAC1B,IAAV,CAAL,IAAwBmB,GAAG,CAACE,OAAJ,CAAYY,gBAAZ,KAAiCP,QAAQ,CAAC1B,IAAtE,EAA4E;UAAE;UAC5EoB,YAAY,GAAGM,QAAf;QACD,CAHiC,CAGhC;;;QAEF,IAAI,OAAOP,GAAG,CAACE,OAAJ,CAAYa,IAAnB,KAA4B,WAA5B,IAA2Cf,GAAG,CAACE,OAAJ,CAAYY,gBAAZ,KAAiCP,QAAQ,CAAC1B,IAAzF,EAA+F;UAAE;UAC/FG,eAAe,CAACuB,QAAD,EAAWP,GAAG,CAACE,OAAJ,CAAYa,IAAvB,EAA6B5B,GAA7B,EAAkC,IAAlC,EAAwC,KAAxC,CAAf;QACD,CAPiC,CAOhC;;MACH,CARD;MASAH,eAAe,CAACiB,YAAD,EAAeD,GAAG,CAACd,IAAnB,EAAyBC,GAAzB,EAA8B,KAA9B,EAAqC,KAArC,CAAf,CAVuC,CAYvC;IACD,CAbM,MAaA,IAAIa,GAAG,CAACE,OAAJ,CAAYc,SAAhB,EAA2B;MAChCf,YAAY,GAAGzB,gBAAgB,CAACL,KAAD,CAA/B;;MAEA,IAAI8B,YAAJ,EAAkB;QAChB,MAAMgB,aAAa,GAAG9C,KAAK,CAACM,SAAN,CAAgByC,IAAhB,CAAqB,CAAC;UAACrC;QAAD,CAAD,KAAYA,IAAI,KAAKmB,GAAG,CAACE,OAAJ,CAAYc,SAAtD,CAAtB;;QACA,IAAIC,aAAa,IAAIA,aAAa,CAACvB,KAA/B,IAAwCyB,oCAAab,IAAb,CAAkBc,CAAC,IAAIA,CAAC,CAACC,IAAF,CAAOJ,aAAa,CAACvB,KAArB,CAAvB,CAA5C,EAAiG;UAAE;UACjG;UACAV,eAAe,CAACiB,YAAD,EAAeD,GAAG,CAACd,IAAnB,EAAyBC,GAAzB,EAA8B,IAA9B,EAAoC,KAApC,CAAf;QACD,CAHD,MAGO;UAAE;UACPH,eAAe,CAACiB,YAAD,EAAeD,GAAG,CAACE,OAAJ,CAAYoB,IAA3B,EAAiCnC,GAAjC,EAAsC,KAAtC,EAA6C,KAA7C,CAAf,CADK,CAC+D;QACrE;MACF,CAX+B,CAYhC;;IACD,CAbM,MAaA,IAAIa,GAAG,CAACE,OAAJ,CAAYqB,MAAhB,EAAwB;MAC7BtB,YAAY,GAAG,IAAf;MACA9B,KAAK,CAACM,SAAN,CAAgBC,MAAhB,CAAuB6B,QAAQ,IAAI,WAAWA,QAA9C,EAAwDrC,OAAxD,CAAgEqC,QAAQ,IAAI;QAC1E,IAAI3B,KAAK,CAAC2B,QAAQ,CAAC1B,IAAV,CAAL,IAAwBmB,GAAG,CAACE,OAAJ,CAAYqB,MAAZ,CAAmBC,OAAnB,CAA2BjB,QAAQ,CAAC1B,IAApC,IAA4C,CAAC,CAAzE,EAA4E;UAAE;UAC5EoB,YAAY,GAAGM,QAAf;QACD,CAHyE,CAGxE;;;QAEF,IAAIP,GAAG,CAACE,OAAJ,CAAYuB,SAAZ,IAAyBzB,GAAG,CAACE,OAAJ,CAAYuB,SAAZ,CAAsBD,OAAtB,CAA8BjB,QAAQ,CAAC1B,IAAvC,IAA+C,CAAC,CAA7E,EAAgF;UAAE;UAChFG,eAAe,CAACuB,QAAD,EAAWP,GAAG,CAACd,IAAf,EAAqBC,GAArB,EAA0B,IAA1B,EAAgC,KAAhC,CAAf;QACD,CAPyE,CAOxE;;MACH,CARD;;MAUA,IAAIc,YAAJ,EAAkB;QAAE;QAClBjB,eAAe,CAACiB,YAAD,EAAeD,GAAG,CAACd,IAAnB,EAAyBC,GAAzB,EAA8B,KAA9B,EAAqC,KAArC,CAAf;MACD,CAd4B,CAgB7B;;IACD,CAjBM,MAiBA,IAAIa,GAAG,CAACE,OAAJ,CAAYwB,MAAhB,EAAwB;MAAE;MAC/B,IAAInD,SAAS,GAAG,IAAhB,CAD6B,CACP;;MACtB,IAAI;QACFA,SAAS,GAAGoD,QAAQ,CAACxD,KAAK,CAACM,SAAN,CAAgByC,IAAhB,CAAqB,CAAC;UAACrC;QAAD,CAAD,KAAYA,IAAI,KAAKmB,GAAG,CAACE,OAAJ,CAAYwB,MAAtD,EAA8DhC,KAA9D,CAAoEkC,MAApE,CAA2E,CAA3E,EAA8E,CAA9E,CAAD,EAAmF,EAAnF,CAApB,CADE,CAC0G;MAC7G,CAFD,CAEE,OAAOC,GAAP,EAAY;QACZnE,KAAK,CAAE,gCAA+BmE,GAAG,YAAYC,KAAf,GAAuBD,GAAG,CAACE,KAA3B,GAAmCF,GAAI,EAAxE,CAAL;QACA,OAAO,KAAP;MACD;;MAEDzD,aAAa,CAACD,KAAD,EAAQI,SAAR,EAAmBR,GAAnB,EAAwBC,OAAxB,CAAb;IACD;EACF;;EAED,IAAIgC,GAAG,GAAG,IAAV,CAzIqD,CAyIrC;;EAChB,IAAIb,GAAG,GAAG,IAAV,CA1IqD,CA0IrC;;EAChB,IAAIc,YAAY,GAAG,IAAnB,CA3IqD,CA2I5B;;EAEzB,IAAI1B,SAAJ,EAAe;IAAE;IACfY,GAAG,GAAGZ,SAAN;EACD,CAFD,MAEO;IAAE;IACP,IAAI;MACFY,GAAG,GAAGwC,QAAQ,CAACxD,KAAK,CAACgB,GAAP,EAAY,EAAZ,CAAd;IACD,CAFD,CAEE,OAAO0C,GAAP,EAAY;MACZnE,KAAK,CAAE,gCAA+BmE,GAAG,YAAYC,KAAf,GAAuBD,GAAG,CAACE,KAA3B,GAAmCF,GAAI,EAAxE,CAAL;MACA,OAAO,KAAP;IACD;EACF,CAtJoD,CAwJrD;;;EACA7B,GAAG,GAAGgC,MAAM,CAACC,MAAP,CAAcC,+BAAd,EAAwBhB,IAAxB,CAA6BiB,CAAC,IAAI;IACtC,MAAMC,SAAS,GAAGD,CAAC,CAACE,UAAF,IAAgBlD,GAAhB,IAAuBgD,CAAC,CAACG,QAAF,IAAcnD,GAAvD;IACA,OAAOgD,CAAC,CAACI,KAAF,KAAYpD,GAAZ,IAAmBiD,SAA1B;EACD,CAHK,CAAN;;EAKA,IAAI,CAACpC,GAAL,EAAU;IACR;EACD,CAhKoD,CAgKnD;EAEF;;;EACA,IAAI,OAAO7B,KAAK,CAACM,SAAb,KAA2B,WAA3B,IAA0CN,KAAK,CAACM,SAAN,KAAoB,IAAlE,EAAwE;IACtET,OAAO,CAACA,OAAR,CAAgB4B,IAAhB,CAAsB,SAAQzB,KAAK,CAACgB,GAAI,iCAAxC,EADsE,CACK;;IAC3E;EACD,CAtKoD,CAwKrD;;;EACA,IAAI,OAAOa,GAAG,CAACE,OAAX,KAAuB,WAAvB,IAAsCF,GAAG,CAACE,OAAJ,KAAgB,IAA1D,EAAgE;IAC9DD,YAAY,GAAGzB,gBAAgB,CAACL,KAAD,CAA/B;;IAEA,IAAI8B,YAAJ,EAAkB;MAAE;MAClBjB,eAAe,CAACiB,YAAD,EAAeD,GAAG,CAACd,IAAnB,EAAyBf,KAAK,CAACgB,GAA/B,EAAoC,KAApC,EAA2C,KAA3C,EAAkDpB,GAAlD,EAAuDC,OAAvD,CAAf;IACD;EACF,CAND,MAMO;IAAE;IACP,IAAI;MACF+B,YAAY,CAACC,GAAD,EAAM7B,KAAN,EAAaA,KAAK,CAACgB,GAAnB,CAAZ;IACD,CAFD,CAEE,OAAOqD,CAAP,EAAU;MACVC,OAAO,CAACC,KAAR,CAAc,mCAAd,EAAmDF,CAAnD,EADU,CAC6C;IACxD;EACF;AACF;;AAEM,SAASG,mBAAT,CAA6BxE,KAA7B,EAAoCI,SAApC,EAA+CR,GAA/C,EAAoD;EACzD,MAAMC,OAAO,GAAG,EAAhB;EACAA,OAAO,CAACA,OAAR,GAAkB,EAAlB,CAFyD,CAEnC;;EACtB,IAAID,GAAJ,EAAS;IAAE;IACTC,OAAO,CAACD,GAAR,GAAc,EAAd,CADO,CACW;EACnB;;EAEDK,aAAa,CAACD,KAAD,EAAQI,SAAR,EAAmBR,GAAnB,EAAwBC,OAAxB,CAAb;EACAA,OAAO,CAACK,KAAR,GAAgB,EAAEL,OAAO,CAACA,OAAR,CAAgBM,MAAhB,IAA0B,CAA5B,CAAhB,CARyD,CAQT;;EAChD,OAAON,OAAP;AACD"}
@@ -10,33 +10,6 @@ var _endingPunctuation = _interopRequireDefault(require("../src/ending-punctuati
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;