@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
@@ -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
- * Melinda-related validators for @natlibfi/marc-record-validate
13
- *
14
- * Copyright (c) 2014-2017 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 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
- * This program 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 MAP_CONVERSION = {
36
8
  /**
37
9
  * @internal Normalizations
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/unicode-decomposition.js"],"names":["MAP_CONVERSION","å","ä","ö","Å","Ä","Ö","á","à","â","ã","ć","č","ç","é","è","ê","ẽ","ë","í","ì","î","ĩ","ï","ñ","ó","ò","ô","õ","ś","š","ú","ù","û","ü","ũ","ý","ỳ","ŷ","ỹ","ÿ","ž","Á","À","Â","Ã","É","È","Ê","Ẽ","Ë","Í","Ì","Î","Ĩ","Ï","Ñ","Ó","Ò","Ô","Õ","Ś","Ú","Ù","Û","Ũ","Ü","Ý","Ỳ","Ŷ","Ỹ","Ÿ","PATTERN","Object","keys","reduce","result","key","index","list","length","RegExp","description","validate","fix","record","codes","getFields","fields","map","field","subfields","filter","subfield","test","value","code","valid","messages","join","forEach","convert","some","includes","replace"],"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 * Melinda-related validators for @natlibfi/marc-record-validate\n *\n * Copyright (c) 2014-2017 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n **/\n\nconst MAP_CONVERSION = {\n\n /**\n * @internal Normalizations\n **/\n '‐': '-',\n '‑': '-',\n '‒': '-',\n '–': '-',\n '—': '-',\n '―': '-',\n\n /**\n * @internal Normalizations (MELINDA-4172, MELINDA-4175)\n **/\n 'Ⓒ': '©',\n 'Ⓟ': '℗',\n\n /**\n * @internal Precompose å, ä, ö, Å, Ä and Ö\n **/\n å: 'å',\n ä: 'ä',\n ö: 'ö',\n Å: 'Å',\n Ä: 'Ä',\n Ö: 'Ö',\n\n /**\n * @internal Decompose everything else (list incomplete)\n **/\n á: 'á',\n à: 'à',\n â: 'â',\n ã: 'ã',\n ć: 'ć',\n č: 'č',\n ç: 'ç',\n é: 'é',\n è: 'è',\n ê: 'ê',\n ẽ: 'ẽ',\n ë: 'ë',\n í: 'í',\n ì: 'ì',\n î: 'î',\n ĩ: 'ĩ',\n ï: 'ï',\n ñ: 'ñ',\n ó: 'ó',\n ò: 'ò',\n ô: 'ô',\n õ: 'õ',\n ś: 'ś',\n š: 'š',\n ú: 'ú',\n ù: 'ù',\n û: 'û',\n ü: 'ü',\n ũ: 'ũ',\n ý: 'ý',\n ỳ: 'ỳ',\n ŷ: 'ŷ',\n ỹ: 'ỹ',\n ÿ: 'ÿ',\n ž: 'ž',\n Á: 'Á',\n À: 'À',\n Â: 'Â',\n Ã: 'Ã',\n É: 'É',\n È: 'È',\n Ê: 'Ê',\n Ẽ: 'Ẽ',\n Ë: 'Ë',\n Í: 'Í',\n Ì: 'Ì',\n Î: 'Î',\n Ĩ: 'Ĩ',\n Ï: 'Ï',\n Ñ: 'Ñ',\n Ó: 'Ó',\n Ò: 'Ò',\n Ô: 'Ô',\n Õ: 'Õ',\n Ś: 'Ś',\n Ú: 'Ú',\n Ù: 'Ù',\n Û: 'Û',\n Ũ: 'Ũ',\n Ü: 'Ü',\n Ý: 'Ý',\n Ỳ: 'Ỳ',\n Ŷ: 'Ŷ',\n Ỹ: 'Ỹ',\n Ÿ: 'Ÿ'\n};\n\nexport default function () {\n const PATTERN = Object.keys(MAP_CONVERSION).reduce((result, key, index, list) => index === list.length - 1 ? new RegExp(`${result}${key})`, 'u') : `${result}${key}|`, '(');\n\n return {\n description: 'Unicode decomposer',\n validate,\n fix\n };\n\n function validate(record) {\n const codes = getFields(record.fields).map(field => {\n if ('subfields' in field) {\n return field.subfields.filter(subfield => PATTERN.test(subfield.value))\n .map(subfield => subfield.code);\n }\n\n return null;\n });\n return codes.length < 1 ? {valid: true, messages: []} : {valid: false, messages: [`The following subfields are not properly decomposed: ${codes.join(', ')}`]};\n }\n\n function fix(record) {\n getFields(record.fields).forEach(field => {\n field.subfields\n .filter(subfield => PATTERN.test(subfield.value))\n .forEach(subfield => {\n subfield.value = convert(subfield.value); // eslint-disable-line functional/immutable-data\n });\n });\n }\n\n function getFields(fields) {\n return fields.filter(field => {\n if ('subfields' in field) {\n return field.subfields.some(subfield => PATTERN.test(subfield.value));\n }\n\n return null;\n });\n }\n\n function convert(value) {\n return Object.keys(MAP_CONVERSION).reduce((result, key) => result.includes(key) ? result.replace(new RegExp(key, 'ug'), MAP_CONVERSION[key]) : result, value);\n }\n}\n"],"file":"unicode-decomposition.js"}
1
+ {"version":3,"file":"unicode-decomposition.js","names":["MAP_CONVERSION","å","ä","ö","Å","Ä","Ö","á","à","â","ã","ć","č","ç","é","è","ê","ẽ","ë","í","ì","î","ĩ","ï","ñ","ó","ò","ô","õ","ś","š","ú","ù","û","ü","ũ","ý","ỳ","ŷ","ỹ","ÿ","ž","Á","À","Â","Ã","É","È","Ê","Ẽ","Ë","Í","Ì","Î","Ĩ","Ï","Ñ","Ó","Ò","Ô","Õ","Ś","Ú","Ù","Û","Ũ","Ü","Ý","Ỳ","Ŷ","Ỹ","Ÿ","PATTERN","Object","keys","reduce","result","key","index","list","length","RegExp","description","validate","fix","record","codes","getFields","fields","map","field","subfields","filter","subfield","test","value","code","valid","messages","join","forEach","convert","some","includes","replace"],"sources":["../src/unicode-decomposition.js"],"sourcesContent":["const MAP_CONVERSION = {\n\n /**\n * @internal Normalizations\n **/\n '‐': '-',\n '‑': '-',\n '‒': '-',\n '–': '-',\n '—': '-',\n '―': '-',\n\n /**\n * @internal Normalizations (MELINDA-4172, MELINDA-4175)\n **/\n 'Ⓒ': '©',\n 'Ⓟ': '℗',\n\n /**\n * @internal Precompose å, ä, ö, Å, Ä and Ö\n **/\n å: 'å',\n ä: 'ä',\n ö: 'ö',\n Å: 'Å',\n Ä: 'Ä',\n Ö: 'Ö',\n\n /**\n * @internal Decompose everything else (list incomplete)\n **/\n á: 'á',\n à: 'à',\n â: 'â',\n ã: 'ã',\n ć: 'ć',\n č: 'č',\n ç: 'ç',\n é: 'é',\n è: 'è',\n ê: 'ê',\n ẽ: 'ẽ',\n ë: 'ë',\n í: 'í',\n ì: 'ì',\n î: 'î',\n ĩ: 'ĩ',\n ï: 'ï',\n ñ: 'ñ',\n ó: 'ó',\n ò: 'ò',\n ô: 'ô',\n õ: 'õ',\n ś: 'ś',\n š: 'š',\n ú: 'ú',\n ù: 'ù',\n û: 'û',\n ü: 'ü',\n ũ: 'ũ',\n ý: 'ý',\n ỳ: 'ỳ',\n ŷ: 'ŷ',\n ỹ: 'ỹ',\n ÿ: 'ÿ',\n ž: 'ž',\n Á: 'Á',\n À: 'À',\n Â: 'Â',\n Ã: 'Ã',\n É: 'É',\n È: 'È',\n Ê: 'Ê',\n Ẽ: 'Ẽ',\n Ë: 'Ë',\n Í: 'Í',\n Ì: 'Ì',\n Î: 'Î',\n Ĩ: 'Ĩ',\n Ï: 'Ï',\n Ñ: 'Ñ',\n Ó: 'Ó',\n Ò: 'Ò',\n Ô: 'Ô',\n Õ: 'Õ',\n Ś: 'Ś',\n Ú: 'Ú',\n Ù: 'Ù',\n Û: 'Û',\n Ũ: 'Ũ',\n Ü: 'Ü',\n Ý: 'Ý',\n Ỳ: 'Ỳ',\n Ŷ: 'Ŷ',\n Ỹ: 'Ỹ',\n Ÿ: 'Ÿ'\n};\n\nexport default function () {\n const PATTERN = Object.keys(MAP_CONVERSION).reduce((result, key, index, list) => index === list.length - 1 ? new RegExp(`${result}${key})`, 'u') : `${result}${key}|`, '(');\n\n return {\n description: 'Unicode decomposer',\n validate,\n fix\n };\n\n function validate(record) {\n const codes = getFields(record.fields).map(field => {\n if ('subfields' in field) {\n return field.subfields.filter(subfield => PATTERN.test(subfield.value))\n .map(subfield => subfield.code);\n }\n\n return null;\n });\n return codes.length < 1 ? {valid: true, messages: []} : {valid: false, messages: [`The following subfields are not properly decomposed: ${codes.join(', ')}`]};\n }\n\n function fix(record) {\n getFields(record.fields).forEach(field => {\n field.subfields\n .filter(subfield => PATTERN.test(subfield.value))\n .forEach(subfield => {\n subfield.value = convert(subfield.value); // eslint-disable-line functional/immutable-data\n });\n });\n }\n\n function getFields(fields) {\n return fields.filter(field => {\n if ('subfields' in field) {\n return field.subfields.some(subfield => PATTERN.test(subfield.value));\n }\n\n return null;\n });\n }\n\n function convert(value) {\n return Object.keys(MAP_CONVERSION).reduce((result, key) => result.includes(key) ? result.replace(new RegExp(key, 'ug'), MAP_CONVERSION[key]) : result, value);\n }\n}\n"],"mappings":"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"}
@@ -10,33 +10,6 @@ var _unicodeDecomposition = _interopRequireDefault(require("../src/unicode-decom
10
10
 
11
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
12
 
13
- /**
14
- *
15
- * @licstart The following is the entire license notice for the JavaScript code in this file.
16
- *
17
- * MARC record validators used in Melinda
18
- *
19
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
20
- *
21
- * This file is part of marc-record-validators-melinda
22
- *
23
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
24
- * it under the terms of the GNU Lesser General Public License as
25
- * published by the Free Software Foundation, either version 3 of the
26
- * License, or (at your option) any later version.
27
- *
28
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
29
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
30
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31
- * GNU Lesser General Public License for more details.
32
- *
33
- * You should have received a copy of the GNU Lesser General Public License
34
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
35
- *
36
- * @licend The above is the entire license notice
37
- * for the JavaScript code in this file.
38
- *
39
- */
40
13
  const {
41
14
  expect
42
15
  } = _chai.default;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/unicode-decomposition.spec.js"],"names":["expect","chai","use","chaiAsPromised","describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","record","MarcRecord","fields","tag","subfields","code","value","result","eql","valid","messages","ind1","ind2","recordOriginal","toObject","fieldModified","fix","not"],"mappings":"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","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nimport chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/unicode-decomposition';\n\nconst {expect} = chai;\nchai.use(chaiAsPromised);\n\ndescribe('unicode-decomposition', () => {\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: '245',\n subfields: [\n {\n code: 'a',\n value: 'Föö, Bär'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n expect(result).to.eql({valid: true, messages: []});\n });\n\n it('Finds the record invalid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n ind1: ' ',\n ind2: '0',\n subfields: [\n {\n code: 'a',\n value: 'Föö, Bär'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: ['The following subfields are not properly decomposed: a']});\n });\n\n describe('#fix', () => {\n it('Should fix the record', async () => {\n const validator = await validatorFactory();\n\n const record = new MarcRecord({\n fields: [\n {\n tag: '245',\n subfields: [\n {\n code: 'a',\n value: 'Föö, Bär'\n },\n {\n code: 'b',\n value: '== Fubar'\n }\n ]\n }\n ]\n });\n\n const recordOriginal = record.toObject();\n const fieldModified = {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Föö, Bär'\n },\n {\n code: 'b',\n value: '== Fubar'\n }\n ]\n };\n await validator.fix(record);\n\n expect(recordOriginal).to.not.eql(record);\n expect(record.fields).to.eql([fieldModified]);\n });\n });\n });\n});\n"],"file":"unicode-decomposition.spec.js"}
1
+ {"version":3,"file":"unicode-decomposition.spec.js","names":["expect","chai","use","chaiAsPromised","describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","record","MarcRecord","fields","tag","subfields","code","value","result","eql","valid","messages","ind1","ind2","recordOriginal","toObject","fieldModified","fix","not"],"sources":["../src/unicode-decomposition.spec.js"],"sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/unicode-decomposition';\n\nconst {expect} = chai;\nchai.use(chaiAsPromised);\n\ndescribe('unicode-decomposition', () => {\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: '245',\n subfields: [\n {\n code: 'a',\n value: 'Föö, Bär'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n expect(result).to.eql({valid: true, messages: []});\n });\n\n it('Finds the record invalid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n ind1: ' ',\n ind2: '0',\n subfields: [\n {\n code: 'a',\n value: 'Föö, Bär'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: ['The following subfields are not properly decomposed: a']});\n });\n\n describe('#fix', () => {\n it('Should fix the record', async () => {\n const validator = await validatorFactory();\n\n const record = new MarcRecord({\n fields: [\n {\n tag: '245',\n subfields: [\n {\n code: 'a',\n value: 'Föö, Bär'\n },\n {\n code: 'b',\n value: '== Fubar'\n }\n ]\n }\n ]\n });\n\n const recordOriginal = record.toObject();\n const fieldModified = {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Föö, Bär'\n },\n {\n code: 'b',\n value: '== Fubar'\n }\n ]\n };\n await validator.fix(record);\n\n expect(recordOriginal).to.not.eql(record);\n expect(record.fields).to.eql([fieldModified]);\n });\n });\n });\n});\n"],"mappings":"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"}
package/dist/urn.js CHANGED
@@ -9,33 +9,6 @@ var _nodeFetch = _interopRequireDefault(require("node-fetch"));
9
9
 
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
11
 
12
- /**
13
- *
14
- * @licstart The following is the entire license notice for the JavaScript code in this file.
15
- *
16
- * MARC record validators used in Melinda
17
- *
18
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
19
- *
20
- * This file is part of marc-record-validators-melinda
21
- *
22
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
23
- * it under the terms of the GNU Lesser General Public License as
24
- * published by the Free Software Foundation, either version 3 of the
25
- * License, or (at your option) any later version.
26
- *
27
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
28
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
29
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30
- * GNU Lesser General Public License for more details.
31
- *
32
- * You should have received a copy of the GNU Lesser General Public License
33
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
34
- *
35
- * @licend The above is the entire license notice
36
- * for the JavaScript code in this file.
37
- *
38
- */
39
12
  const URN_GENERATOR_URL = 'http://generator.urn.fi/cgi-bin/urn_generator.cgi?type=nbn';
40
13
 
41
14
  function _default(isLegalDeposit = false) {
package/dist/urn.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/urn.js"],"names":["URN_GENERATOR_URL","isLegalDeposit","hasURN","f","tag","subfields","some","code","value","test","description","validate","fix","record","f856sUrn","fields","filter","ldSubfields","createLDSubfields","length","insertField","ind1","ind2","createURNSubfield","forEach","ldsf","sf","push","rec","isbn","reduce","acc","a","find","undefined","createURN","response","body","text","valid"],"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 fetch from 'node-fetch';\n\nconst URN_GENERATOR_URL = 'http://generator.urn.fi/cgi-bin/urn_generator.cgi?type=nbn';\n\nexport default function (isLegalDeposit = false) {\n const hasURN = f => f.tag === '856' && f.subfields.some(({code, value}) => code === 'u' && (/urn.fi/u).test(value));\n\n return {\n description: 'Adds URN for record, to 856-field (if not existing)',\n validate,\n fix\n };\n\n async function fix(record) {\n const f856sUrn = record.fields.filter(hasURN);\n const ldSubfields = isLegalDeposit ? createLDSubfields() : [];\n\n if (f856sUrn.length === 0) { // eslint-disable-line functional/no-conditional-statement\n record.insertField({\n tag: '856',\n ind1: '4',\n ind2: '0',\n subfields: [await createURNSubfield(record), ...ldSubfields]\n });\n } else if (isLegalDeposit) { // eslint-disable-line functional/no-conditional-statement\n f856sUrn.forEach(f => {\n ldSubfields.forEach(ldsf => {\n if (!f.subfields.some(sf => sf.code === ldsf.code && sf.value === ldsf.value)) { // eslint-disable-line functional/no-conditional-statement\n f.subfields.push(ldsf); // eslint-disable-line functional/immutable-data\n }\n });\n });\n }\n\n return true;\n\n async function createURNSubfield(rec) {\n const isbn = rec.fields.reduce((acc, f) => {\n if (f.tag === '020') {\n const a = f.subfields.find(sf => sf.code === 'a');\n return a ? a.value : undefined;\n }\n\n return acc;\n }, undefined);\n\n return {\n code: 'u',\n value: await createURN(isbn)\n };\n\n async function createURN(isbn = false) {\n if (isbn) {\n return `http://urn.fi/URN:ISBN:${isbn}`;\n }\n\n const response = await fetch(URN_GENERATOR_URL);\n const body = await response.text();\n return `http://urn.fi/${body}`;\n }\n }\n\n function createLDSubfields() {\n return [\n {\n code: 'z',\n value: 'Käytettävissä vapaakappalekirjastoissa'\n },\n {\n code: '5',\n value: 'FI-Vapaa'\n }\n ];\n }\n }\n\n function validate(record) {\n return {valid: record.fields.some(hasURN) && !isLegalDeposit};\n }\n}\n"],"file":"urn.js"}
1
+ {"version":3,"file":"urn.js","names":["URN_GENERATOR_URL","isLegalDeposit","hasURN","f","tag","subfields","some","code","value","test","description","validate","fix","record","f856sUrn","fields","filter","ldSubfields","createLDSubfields","length","insertField","ind1","ind2","createURNSubfield","forEach","ldsf","sf","push","rec","isbn","reduce","acc","a","find","undefined","createURN","response","body","text","valid"],"sources":["../src/urn.js"],"sourcesContent":["import fetch from 'node-fetch';\n\nconst URN_GENERATOR_URL = 'http://generator.urn.fi/cgi-bin/urn_generator.cgi?type=nbn';\n\nexport default function (isLegalDeposit = false) {\n const hasURN = f => f.tag === '856' && f.subfields.some(({code, value}) => code === 'u' && (/urn.fi/u).test(value));\n\n return {\n description: 'Adds URN for record, to 856-field (if not existing)',\n validate,\n fix\n };\n\n async function fix(record) {\n const f856sUrn = record.fields.filter(hasURN);\n const ldSubfields = isLegalDeposit ? createLDSubfields() : [];\n\n if (f856sUrn.length === 0) { // eslint-disable-line functional/no-conditional-statement\n record.insertField({\n tag: '856',\n ind1: '4',\n ind2: '0',\n subfields: [await createURNSubfield(record), ...ldSubfields]\n });\n } else if (isLegalDeposit) { // eslint-disable-line functional/no-conditional-statement\n f856sUrn.forEach(f => {\n ldSubfields.forEach(ldsf => {\n if (!f.subfields.some(sf => sf.code === ldsf.code && sf.value === ldsf.value)) { // eslint-disable-line functional/no-conditional-statement\n f.subfields.push(ldsf); // eslint-disable-line functional/immutable-data\n }\n });\n });\n }\n\n return true;\n\n async function createURNSubfield(rec) {\n const isbn = rec.fields.reduce((acc, f) => {\n if (f.tag === '020') {\n const a = f.subfields.find(sf => sf.code === 'a');\n return a ? a.value : undefined;\n }\n\n return acc;\n }, undefined);\n\n return {\n code: 'u',\n value: await createURN(isbn)\n };\n\n async function createURN(isbn = false) {\n if (isbn) {\n return `http://urn.fi/URN:ISBN:${isbn}`;\n }\n\n const response = await fetch(URN_GENERATOR_URL);\n const body = await response.text();\n return `http://urn.fi/${body}`;\n }\n }\n\n function createLDSubfields() {\n return [\n {\n code: 'z',\n value: 'Käytettävissä vapaakappalekirjastoissa'\n },\n {\n code: '5',\n value: 'FI-Vapaa'\n }\n ];\n }\n }\n\n function validate(record) {\n return {valid: record.fields.some(hasURN) && !isLegalDeposit};\n }\n}\n"],"mappings":"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"}
package/dist/urn.spec.js CHANGED
@@ -8,33 +8,6 @@ var _urn = _interopRequireDefault(require("../src/urn"));
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('urn', async () => {
39
12
  // Fields
40
13
  const ldf856 = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/urn.spec.js"],"names":["describe","ldf856","tag","ind1","ind2","subfields","code","value","f856URN","f856URL","f020","it","validator","to","be","an","that","has","any","keys","description","a","validate","test","isLegalDeposit","valid","recfields","result","MarcRecord","fields","eql","fix","resfields","record","nonld","ld"],"mappings":";;AA6BA;;AACA;;AACA;;;;AA/BA;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;AAOAA,QAAQ,CAAC,KAAD,EAAQ,YAAY;AAC1B;AACA,QAAMC,MAAM,GAAG;AACbC,IAAAA,GAAG,EAAE,KADQ;AAEbC,IAAAA,IAAI,EAAE,GAFO;AAGbC,IAAAA,IAAI,EAAE,GAHO;AAIbC,IAAAA,SAAS,EAAE,CACT;AAACC,MAAAA,IAAI,EAAE,GAAP;AAAYC,MAAAA,KAAK,EAAE;AAAnB,KADS,EAET;AAACD,MAAAA,IAAI,EAAE,GAAP;AAAYC,MAAAA,KAAK,EAAE;AAAnB,KAFS,EAGT;AAACD,MAAAA,IAAI,EAAE,GAAP;AAAYC,MAAAA,KAAK,EAAE;AAAnB,KAHS;AAJE,GAAf;AAUA,QAAMC,OAAO,GAAG;AACdN,IAAAA,GAAG,EAAE,KADS;AAEdC,IAAAA,IAAI,EAAE,GAFQ;AAGdC,IAAAA,IAAI,EAAE,GAHQ;AAIdC,IAAAA,SAAS,EAAE,CAAC;AAACC,MAAAA,IAAI,EAAE,GAAP;AAAYC,MAAAA,KAAK,EAAE;AAAnB,KAAD;AAJG,GAAhB;AAMA,QAAME,OAAO,GAAG;AACdP,IAAAA,GAAG,EAAE,KADS;AAEdC,IAAAA,IAAI,EAAE,GAFQ;AAGdC,IAAAA,IAAI,EAAE,GAHQ;AAIdC,IAAAA,SAAS,EAAE,CAAC;AAACC,MAAAA,IAAI,EAAE,GAAP;AAAYC,MAAAA,KAAK,EAAE;AAAnB,KAAD;AAJG,GAAhB;AAMA,QAAMG,IAAI,GAAG;AACXR,IAAAA,GAAG,EAAE,KADM;AAEXC,IAAAA,IAAI,EAAE,GAFK;AAGXC,IAAAA,IAAI,EAAE,GAHK;AAIXC,IAAAA,SAAS,EAAE,CAAC;AAACC,MAAAA,IAAI,EAAE,GAAP;AAAYC,MAAAA,KAAK,EAAE;AAAnB,KAAD;AAJA,GAAb;AAOAI,EAAAA,EAAE,CAAC,qBAAD,EAAwB,YAAY;AACpC,UAAMC,SAAS,GAAG,MAAM,mBAAxB;AAEA,sBAAOA,SAAP,EACGC,EADH,CACMC,EADN,CACSC,EADT,CACY,QADZ,EAEGC,IAFH,CAEQC,GAFR,CAEYC,GAFZ,CAEgBC,IAFhB,CAEqB,aAFrB,EAEoC,UAFpC;AAIA,sBAAOP,SAAS,CAACQ,WAAjB,EAA8BP,EAA9B,CAAiCC,EAAjC,CAAoCO,CAApC,CAAsC,QAAtC;AACA,sBAAOT,SAAS,CAACU,QAAjB,EAA2BT,EAA3B,CAA8BC,EAA9B,CAAiCO,CAAjC,CAAmC,UAAnC;AACD,GATC,CAAF,CA/B0B,CA0C1B;;AACA,QAAME,IAAI,GAAG,MAAMC,cAAN,IAAwB;AACnC,UAAMZ,SAAS,GAAG,MAAM,kBAAiBY,cAAjB,CAAxB;AACA,WAAO;AACLF,MAAAA,QAAQ,EAAE,OAAOG,KAAP,EAAc,GAAGC,SAAjB,KAA+B;AACvC,cAAMC,MAAM,GAAG,MAAMf,SAAS,CAACU,QAAV,CAAmB,IAAIM,sBAAJ,CAAe;AAACC,UAAAA,MAAM,EAAEH;AAAT,SAAf,CAAnB,CAArB;AACA,0BAAOC,MAAP,EAAed,EAAf,CAAkBiB,GAAlB,CAAsB;AAACL,UAAAA;AAAD,SAAtB;AACD,OAJI;AAMLM,MAAAA,GAAG,EAAE,OAAOL,SAAP,EAAkBM,SAAlB,KAAgC;AACnC,cAAMC,MAAM,GAAG,IAAIL,sBAAJ,CAAe;AAACC,UAAAA,MAAM,EAAEH;AAAT,SAAf,CAAf;AACA,cAAMd,SAAS,CAACmB,GAAV,CAAcE,MAAd,CAAN;AACA,0BAAOA,MAAM,CAACJ,MAAd,EAAsBhB,EAAtB,CAAyBiB,GAAzB,CAA6BE,SAA7B;AACD;AAVI,KAAP;AAYD,GAdD,CA3C0B,CA2D1B;;;AACA,QAAME,KAAK,GAAG,MAAMX,IAAI,CAAC,KAAD,CAAxB;AACA,QAAMY,EAAE,GAAG,MAAMZ,IAAI,CAAC,IAAD,CAArB;AAEAvB,EAAAA,QAAQ,CAAC,WAAD,EAAc,MAAM;AAC1B;AACAW,IAAAA,EAAE,CAAC,gEAAD,EAAmE,YAAY;AAC/E,YAAMuB,KAAK,CAACZ,QAAN,CAAe,IAAf,EAAqBd,OAArB,CAAN;AACD,KAFC,CAAF;AAIAG,IAAAA,EAAE,CAAC,qEAAD,EAAwE,YAAY;AACpF,YAAMuB,KAAK,CAACZ,QAAN,CAAe,KAAf,EAAsBb,OAAtB,CAAN;AACD,KAFC,CAAF;AAIAE,IAAAA,EAAE,CAAC,iEAAD,EAAoE,YAAY;AAChF,YAAMuB,KAAK,CAACZ,QAAN,CAAe,KAAf,EAAsBZ,IAAtB,CAAN;AACD,KAFC,CAAF,CAV0B,CAc1B;;AACAC,IAAAA,EAAE,CAAC,8DAAD,EAAiE,YAAY;AAC7E,YAAMwB,EAAE,CAACb,QAAH,CAAY,KAAZ,EAAmBZ,IAAnB,EAAyBF,OAAzB,CAAN;AACD,KAFC,CAAF;AAIAG,IAAAA,EAAE,CAAC,iEAAD,EAAoE,YAAY;AAChF,YAAMwB,EAAE,CAACb,QAAH,CAAY,KAAZ,EAAmBZ,IAAnB,EAAyBD,OAAzB,CAAN;AACD,KAFC,CAAF;AAIAE,IAAAA,EAAE,CAAC,6DAAD,EAAgE,YAAY;AAC5E,YAAMwB,EAAE,CAACb,QAAH,CAAY,KAAZ,EAAmBZ,IAAnB,CAAN;AACD,KAFC,CAAF;AAGD,GA1BO,CAAR;AA4BAV,EAAAA,QAAQ,CAAC,MAAD,EAAS,MAAM;AACrB;AACAW,IAAAA,EAAE,CAAC,wDAAD,EAA2D,YAAY;AACvE,YAAMuB,KAAK,CAACH,GAAN,CAAU,CAACrB,IAAD,EAAOD,OAAP,EAAgBD,OAAhB,CAAV,EAAoC,CAACE,IAAD,EAAOD,OAAP,EAAgBD,OAAhB,CAApC,CAAN;AACD,KAFC,CAAF;AAIAG,IAAAA,EAAE,CAAC,8DAAD,EAAiE,YAAY;AAC7E,YAAMuB,KAAK,CAACH,GAAN,CAAU,CAACrB,IAAD,EAAOD,OAAP,CAAV,EAA2B,CAACC,IAAD,EAAOD,OAAP,EAAgBD,OAAhB,CAA3B,CAAN;AACD,KAFC,CAAF;AAIAG,IAAAA,EAAE,CAAC,0DAAD,EAA6D,YAAY;AACzE,YAAMuB,KAAK,CAACH,GAAN,CAAU,CAACrB,IAAD,CAAV,EAAkB,CAACA,IAAD,EAAOF,OAAP,CAAlB,CAAN;AACD,KAFC,CAAF,CAVqB,CAcrB;;AACAG,IAAAA,EAAE,CAAC,6EAAD,EAAgF,YAAY;AAC5F,YAAMwB,EAAE,CAACJ,GAAH,CAAO,CAACrB,IAAD,EAAOD,OAAP,EAAgBR,MAAhB,CAAP,EAAgC,CAACS,IAAD,EAAOD,OAAP,EAAgBR,MAAhB,CAAhC,CAAN;AACD,KAFC,CAAF;AAIAU,IAAAA,EAAE,CAAC,mFAAD,EAAsF,YAAY;AAClG,YAAMwB,EAAE,CAACJ,GAAH,CAAO,CAACrB,IAAD,EAAOD,OAAP,CAAP,EAAwB,CAACC,IAAD,EAAOD,OAAP,EAAgBR,MAAhB,CAAxB,CAAN;AACD,KAFC,CAAF;AAIAU,IAAAA,EAAE,CAAC,+EAAD,EAAkF,YAAY;AAC9F,YAAMwB,EAAE,CAACJ,GAAH,CAAO,CAACrB,IAAD,CAAP,EAAe,CAACA,IAAD,EAAOT,MAAP,CAAf,CAAN;AACD,KAFC,CAAF;AAIAU,IAAAA,EAAE,CAAC,+DAAD,EAAkE,YAAY;AAC9E,YAAMwB,EAAE,CAACJ,GAAH,CAAO,CAACrB,IAAD,EAAOD,OAAP,EAAgBD,OAAhB,CAAP,EAAiC,CAACE,IAAD,EAAOD,OAAP,EAAgBR,MAAhB,CAAjC,CAAN;AACD,KAFC,CAAF;AAGD,GA9BO,CAAR;AA+BD,CA1HO,CAAR","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nimport {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/urn';\n\ndescribe('urn', async () => {\n // Fields\n const ldf856 = {\n tag: '856',\n ind1: '4',\n ind2: '0',\n subfields: [\n {code: 'u', value: 'http://urn.fi/URN:ISBN:978-951-9155-47-0'},\n {code: 'z', value: 'Käytettävissä vapaakappalekirjastoissa'},\n {code: '5', value: 'FI-Vapaa'}\n ]\n };\n const f856URN = {\n tag: '856',\n ind1: '4',\n ind2: '0',\n subfields: [{code: 'u', value: 'http://urn.fi/URN:ISBN:978-951-9155-47-0'}]\n };\n const f856URL = {\n tag: '856',\n ind1: '4',\n ind2: '0',\n subfields: [{code: 'u', value: 'http://foo.bar/'}]\n };\n const f020 = {\n tag: '020',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: '978-951-9155-47-0'}]\n };\n\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 // Tests\n const test = async isLegalDeposit => {\n const validator = await validatorFactory(isLegalDeposit);\n return {\n validate: async (valid, ...recfields) => {\n const result = await validator.validate(new MarcRecord({fields: recfields}));\n expect(result).to.eql({valid});\n },\n\n fix: async (recfields, resfields) => {\n const record = new MarcRecord({fields: recfields});\n await validator.fix(record);\n expect(record.fields).to.eql(resfields);\n }\n };\n };\n\n /// Non-legal and legal deposit\n const nonld = await test(false);\n const ld = await test(true);\n\n describe('#validate', () => {\n // Validate non-legal deposit\n it('Finds the record valid; 856 with urn, and is non-legal deposit', async () => {\n await nonld.validate(true, f856URN);\n });\n\n it('Finds the record invalid; 856 without urn, and is non-legal deposit', async () => {\n await nonld.validate(false, f856URL);\n });\n\n it('Finds the record invalid; Missing 856, and is non-legal deposit', async () => {\n await nonld.validate(false, f020);\n });\n\n // Validate legal deposit\n it('Finds the record invalid; 856 with urn, and is legal deposit', async () => {\n await ld.validate(false, f020, f856URN);\n });\n\n it('Finds the record invalid; 856 without urn, and is legal deposit', async () => {\n await ld.validate(false, f020, f856URL);\n });\n\n it('Finds the record invalid; Missing 856, and is legal deposit', async () => {\n await ld.validate(false, f020);\n });\n });\n\n describe('#fix', () => {\n // Validate non-legal deposit\n it('856 with urn, and is non-legal deposit; Nothing to add', async () => {\n await nonld.fix([f020, f856URL, f856URN], [f020, f856URL, f856URN]);\n });\n\n it('856 without urn, and is non-legal deposit; Adds 856 with urn', async () => {\n await nonld.fix([f020, f856URL], [f020, f856URL, f856URN]);\n });\n\n it('Missing 856, and is non-legal deposit; Adds 856 with urn', async () => {\n await nonld.fix([f020], [f020, f856URN]);\n });\n\n // Validate legal deposit\n it('856 with urn and legal deposit fields, and is legal deposit; Nothing to add', async () => {\n await ld.fix([f020, f856URL, ldf856], [f020, f856URL, ldf856]);\n });\n\n it('856 without urn, and is legal deposit; Adds 856 with urn and legal deposit fields', async () => {\n await ld.fix([f020, f856URL], [f020, f856URL, ldf856]);\n });\n\n it('Missing 856, and is legal deposit; Adds 856 with urn and legal deposit fields', async () => {\n await ld.fix([f020], [f020, ldf856]);\n });\n\n it('856 with urn, and is legal deposit; Adds legal deposit fields', async () => {\n await ld.fix([f020, f856URL, f856URN], [f020, f856URL, ldf856]);\n });\n });\n});\n"],"file":"urn.spec.js"}
1
+ {"version":3,"file":"urn.spec.js","names":["describe","ldf856","tag","ind1","ind2","subfields","code","value","f856URN","f856URL","f020","it","validator","to","be","an","that","has","any","keys","description","a","validate","test","isLegalDeposit","valid","recfields","result","MarcRecord","fields","eql","fix","resfields","record","nonld","ld"],"sources":["../src/urn.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/urn';\n\ndescribe('urn', async () => {\n // Fields\n const ldf856 = {\n tag: '856',\n ind1: '4',\n ind2: '0',\n subfields: [\n {code: 'u', value: 'http://urn.fi/URN:ISBN:978-951-9155-47-0'},\n {code: 'z', value: 'Käytettävissä vapaakappalekirjastoissa'},\n {code: '5', value: 'FI-Vapaa'}\n ]\n };\n const f856URN = {\n tag: '856',\n ind1: '4',\n ind2: '0',\n subfields: [{code: 'u', value: 'http://urn.fi/URN:ISBN:978-951-9155-47-0'}]\n };\n const f856URL = {\n tag: '856',\n ind1: '4',\n ind2: '0',\n subfields: [{code: 'u', value: 'http://foo.bar/'}]\n };\n const f020 = {\n tag: '020',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: '978-951-9155-47-0'}]\n };\n\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 // Tests\n const test = async isLegalDeposit => {\n const validator = await validatorFactory(isLegalDeposit);\n return {\n validate: async (valid, ...recfields) => {\n const result = await validator.validate(new MarcRecord({fields: recfields}));\n expect(result).to.eql({valid});\n },\n\n fix: async (recfields, resfields) => {\n const record = new MarcRecord({fields: recfields});\n await validator.fix(record);\n expect(record.fields).to.eql(resfields);\n }\n };\n };\n\n /// Non-legal and legal deposit\n const nonld = await test(false);\n const ld = await test(true);\n\n describe('#validate', () => {\n // Validate non-legal deposit\n it('Finds the record valid; 856 with urn, and is non-legal deposit', async () => {\n await nonld.validate(true, f856URN);\n });\n\n it('Finds the record invalid; 856 without urn, and is non-legal deposit', async () => {\n await nonld.validate(false, f856URL);\n });\n\n it('Finds the record invalid; Missing 856, and is non-legal deposit', async () => {\n await nonld.validate(false, f020);\n });\n\n // Validate legal deposit\n it('Finds the record invalid; 856 with urn, and is legal deposit', async () => {\n await ld.validate(false, f020, f856URN);\n });\n\n it('Finds the record invalid; 856 without urn, and is legal deposit', async () => {\n await ld.validate(false, f020, f856URL);\n });\n\n it('Finds the record invalid; Missing 856, and is legal deposit', async () => {\n await ld.validate(false, f020);\n });\n });\n\n describe('#fix', () => {\n // Validate non-legal deposit\n it('856 with urn, and is non-legal deposit; Nothing to add', async () => {\n await nonld.fix([f020, f856URL, f856URN], [f020, f856URL, f856URN]);\n });\n\n it('856 without urn, and is non-legal deposit; Adds 856 with urn', async () => {\n await nonld.fix([f020, f856URL], [f020, f856URL, f856URN]);\n });\n\n it('Missing 856, and is non-legal deposit; Adds 856 with urn', async () => {\n await nonld.fix([f020], [f020, f856URN]);\n });\n\n // Validate legal deposit\n it('856 with urn and legal deposit fields, and is legal deposit; Nothing to add', async () => {\n await ld.fix([f020, f856URL, ldf856], [f020, f856URL, ldf856]);\n });\n\n it('856 without urn, and is legal deposit; Adds 856 with urn and legal deposit fields', async () => {\n await ld.fix([f020, f856URL], [f020, f856URL, ldf856]);\n });\n\n it('Missing 856, and is legal deposit; Adds 856 with urn and legal deposit fields', async () => {\n await ld.fix([f020], [f020, ldf856]);\n });\n\n it('856 with urn, and is legal deposit; Adds legal deposit fields', async () => {\n await ld.fix([f020, f856URL, f856URN], [f020, f856URL, ldf856]);\n });\n });\n});\n"],"mappings":"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"}
package/package.json CHANGED
@@ -13,8 +13,8 @@
13
13
  "type": "git",
14
14
  "url": "git@github.com:natlibfi/marc-record-validators-melinda.git"
15
15
  },
16
- "license": "LGPL-3.0+",
17
- "version": "9.0.6",
16
+ "license": "MIT",
17
+ "version": "9.0.7",
18
18
  "main": "./dist/index.js",
19
19
  "publishConfig": {
20
20
  "access": "public"
@@ -50,9 +50,11 @@
50
50
  "devDependencies": {
51
51
  "@babel/cli": "^7.16.8",
52
52
  "@babel/core": "^7.16.12",
53
- "@babel/preset-env": "^7.16.11",
54
53
  "@babel/eslint-parser": "^7.16.5",
54
+ "@babel/preset-env": "^7.16.11",
55
55
  "@natlibfi/eslint-config-melinda-backend": "^2.0.0",
56
+ "@natlibfi/fixugen": "^1.0.2",
57
+ "@natlibfi/fixura": "^2.2.1",
56
58
  "babel-plugin-istanbul": "^6.1.1",
57
59
  "babel-plugin-rewire": "^1.2.0",
58
60
  "chai": "^4.3.6",
@@ -1,32 +1,3 @@
1
- /**
2
- *
3
- * @licstart The following is the entire license notice for the JavaScript code in this file.
4
- *
5
- * MARC record validators used in Melinda
6
- *
7
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
8
- *
9
- * This file is part of marc-record-validators-melinda
10
- *
11
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Lesser General Public License as
13
- * published by the Free Software Foundation, either version 3 of the
14
- * License, or (at your option) any later version.
15
- *
16
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Lesser General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Lesser General Public License
22
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
23
- *
24
- * @licend The above is the entire license notice
25
- * for the JavaScript code in this file.
26
- *
27
- */
28
-
29
-
30
1
  export default function () {
31
2
  const sf506 = [{code: 'a', value: /aineisto on käytettävissä vapaakappalekirjastoissa/ui}];
32
3
  const sf540 = [{code: 'c', value: /laki kulttuuriaineistojen tallettamisesta ja säilyttämisestä/ui}];
@@ -1,32 +1,3 @@
1
- /**
2
- *
3
- * @licstart The following is the entire license notice for the JavaScript code in this file.
4
- *
5
- * MARC record validators used in Melinda
6
- *
7
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
8
- *
9
- * This file is part of marc-record-validators-melinda
10
- *
11
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Lesser General Public License as
13
- * published by the Free Software Foundation, either version 3 of the
14
- * License, or (at your option) any later version.
15
- *
16
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Lesser General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Lesser General Public License
22
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
23
- *
24
- * @licend The above is the entire license notice
25
- * for the JavaScript code in this file.
26
- *
27
- */
28
-
29
-
30
1
  import {expect} from 'chai';
31
2
  import {MarcRecord} from '@natlibfi/marc-record';
32
3
  import validatorFactory from '../src/access-rights';
@@ -1,32 +1,3 @@
1
- /**
2
- *
3
- * @licstart The following is the entire license notice for the JavaScript code in this file.
4
- *
5
- * MARC record validators used in Melinda
6
- *
7
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
8
- *
9
- * This file is part of marc-record-validators-melinda
10
- *
11
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Lesser General Public License as
13
- * published by the Free Software Foundation, either version 3 of the
14
- * License, or (at your option) any later version.
15
- *
16
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Lesser General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Lesser General Public License
22
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
23
- *
24
- * @licend The above is the entire license notice
25
- * for the JavaScript code in this file.
26
- *
27
- */
28
-
29
-
30
1
  export default function () {
31
2
  return {
32
3
  description: 'Handle double commas in 700$e-subfields',
@@ -1,32 +1,3 @@
1
- /**
2
- *
3
- * @licstart The following is the entire license notice for the JavaScript code in this file.
4
- *
5
- * MARC record validators used in Melinda
6
- *
7
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
8
- *
9
- * This file is part of marc-record-validators-melinda
10
- *
11
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Lesser General Public License as
13
- * published by the Free Software Foundation, either version 3 of the
14
- * License, or (at your option) any later version.
15
- *
16
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Lesser General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Lesser General Public License
22
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
23
- *
24
- * @licend The above is the entire license notice
25
- * for the JavaScript code in this file.
26
- *
27
- */
28
-
29
-
30
1
  import {expect} from 'chai';
31
2
  import {MarcRecord} from '@natlibfi/marc-record';
32
3
  import validatorFactory from '../src/double-commas';
@@ -1,32 +1,3 @@
1
- /**
2
- *
3
- * @licstart The following is the entire license notice for the JavaScript code in this file.
4
- *
5
- * MARC record validators used in Melinda
6
- *
7
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
8
- *
9
- * This file is part of marc-record-validators-melinda
10
- *
11
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Lesser General Public License as
13
- * published by the Free Software Foundation, either version 3 of the
14
- * License, or (at your option) any later version.
15
- *
16
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Lesser General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Lesser General Public License
22
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
23
- *
24
- * @licend The above is the entire license notice
25
- * for the JavaScript code in this file.
26
- *
27
- */
28
-
29
-
30
1
  export default function (tagPattern) {
31
2
  if (tagPattern instanceof RegExp) {
32
3
  return {
@@ -1,32 +1,3 @@
1
- /**
2
- *
3
- * @licstart The following is the entire license notice for the JavaScript code in this file.
4
- *
5
- * MARC record validators used in Melinda
6
- *
7
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
8
- *
9
- * This file is part of marc-record-validators-melinda
10
- *
11
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Lesser General Public License as
13
- * published by the Free Software Foundation, either version 3 of the
14
- * License, or (at your option) any later version.
15
- *
16
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Lesser General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Lesser General Public License
22
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
23
- *
24
- * @licend The above is the entire license notice
25
- * for the JavaScript code in this file.
26
- *
27
- */
28
-
29
-
30
1
  import {expect} from 'chai';
31
2
  import {MarcRecord} from '@natlibfi/marc-record';
32
3
  import validatorFactory from '../src/duplicates-ind1';
@@ -1,31 +1,3 @@
1
- /**
2
- *
3
- * @licstart The following is the entire license notice for the JavaScript code in this file.
4
- *
5
- * MARC record validators used in Melinda
6
- *
7
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
8
- *
9
- * This file is part of marc-record-validators-melinda
10
- *
11
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Lesser General Public License as
13
- * published by the Free Software Foundation, either version 3 of the
14
- * License, or (at your option) any later version.
15
- *
16
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Lesser General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Lesser General Public License
22
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
23
- *
24
- * @licend The above is the entire license notice
25
- * for the JavaScript code in this file.
26
- *
27
- */
28
-
29
1
  const ERRORS = {
30
2
  EMPTY_SUBFIELDS: 2,
31
3
  MISSING_SUBFIELD_VALUES: 3
@@ -1,32 +1,3 @@
1
- /**
2
- *
3
- * @licstart The following is the entire license notice for the JavaScript code in this file.
4
- *
5
- * MARC record validators used in Melinda
6
- *
7
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
8
- *
9
- * This file is part of marc-record-validators-melinda
10
- *
11
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Lesser General Public License as
13
- * published by the Free Software Foundation, either version 3 of the
14
- * License, or (at your option) any later version.
15
- *
16
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Lesser General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Lesser General Public License
22
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
23
- *
24
- * @licend The above is the entire license notice
25
- * for the JavaScript code in this file.
26
- *
27
- */
28
-
29
-
30
1
  import {expect} from 'chai';
31
2
  import {MarcRecord} from '@natlibfi/marc-record';
32
3
  import validatorFactory from '../src/empty-fields';
@@ -1,32 +1,3 @@
1
- /**
2
- *
3
- * @licstart The following is the entire license notice for the JavaScript code in this file.
4
- *
5
- * MARC record validators used in Melinda
6
- *
7
- * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
8
- *
9
- * This file is part of marc-record-validators-melinda
10
- *
11
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Lesser General Public License as
13
- * published by the Free Software Foundation, either version 3 of the
14
- * License, or (at your option) any later version.
15
- *
16
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Lesser General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Lesser General Public License
22
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
23
- *
24
- * @licend The above is the entire license notice
25
- * for the JavaScript code in this file.
26
- *
27
- */
28
-
29
-
30
1
  // Const finnishTerms = ['ysa', 'yso', 'kassu', 'seko', 'valo', 'kulo', 'puho', 'oiko', 'mero', 'liito', 'fast', 'allars', 'kaunokki'];
31
2
  const finnishTerms = [
32
3
  /^ysa$/u,