@natlibfi/marc-record-validators-melinda 12.0.0 → 12.0.1

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 (229) hide show
  1. package/dist/disambiguateSeriesStatements.test.js +1 -7
  2. package/dist/disambiguateSeriesStatements.test.js.map +2 -2
  3. package/dist/drop-terms.js +122 -0
  4. package/dist/drop-terms.js.map +7 -0
  5. package/dist/drop-terms.test.js +56 -0
  6. package/dist/drop-terms.test.js.map +7 -0
  7. package/dist/field-008-18-34-character-groups.test.js +1 -7
  8. package/dist/field-008-18-34-character-groups.test.js.map +2 -2
  9. package/dist/field-505-separators.test.js +1 -7
  10. package/dist/field-505-separators.test.js.map +2 -2
  11. package/dist/field-521-fix.test.js +1 -7
  12. package/dist/field-521-fix.test.js.map +2 -2
  13. package/dist/fix-33X.test.js +1 -1
  14. package/dist/fix-33X.test.js.map +1 -1
  15. package/dist/fix-country-codes.test.js +1 -7
  16. package/dist/fix-country-codes.test.js.map +2 -2
  17. package/dist/fix-sami-041.js +87 -0
  18. package/dist/fix-sami-041.js.map +7 -0
  19. package/dist/fix-sami-041.test.js +40 -0
  20. package/dist/fix-sami-041.test.js.map +7 -0
  21. package/dist/fixRelatorTerms.test.js +1 -7
  22. package/dist/fixRelatorTerms.test.js.map +2 -2
  23. package/dist/index.js +7 -1
  24. package/dist/index.js.map +2 -2
  25. package/dist/indicator-fixes.js +10 -0
  26. package/dist/indicator-fixes.js.map +2 -2
  27. package/dist/indicator-fixes.test.js +1 -7
  28. package/dist/indicator-fixes.test.js.map +2 -2
  29. package/dist/merge-fields.test.js +2 -7
  30. package/dist/merge-fields.test.js.map +2 -2
  31. package/dist/mergeField500Lisapainokset.test.js +1 -7
  32. package/dist/mergeField500Lisapainokset.test.js.map +2 -2
  33. package/dist/mergeRelatorTermFields.test.js +1 -7
  34. package/dist/mergeRelatorTermFields.test.js.map +2 -2
  35. package/dist/multiple-subfield-0.test.js +1 -7
  36. package/dist/multiple-subfield-0.test.js.map +2 -2
  37. package/dist/normalize-dashes.test.js +1 -7
  38. package/dist/normalize-dashes.test.js.map +2 -2
  39. package/dist/normalize-identifiers.test.js +1 -7
  40. package/dist/normalize-identifiers.test.js.map +2 -2
  41. package/dist/normalize-qualifying-information.test.js +1 -7
  42. package/dist/normalize-qualifying-information.test.js.map +2 -2
  43. package/dist/normalize-utf8-diacritics.test.js +1 -7
  44. package/dist/normalize-utf8-diacritics.test.js.map +2 -2
  45. package/dist/punctuation.test.js +1 -7
  46. package/dist/punctuation.test.js.map +2 -2
  47. package/dist/punctuation2.test.js +1 -7
  48. package/dist/punctuation2.test.js.map +2 -2
  49. package/dist/reindexSubfield6OccurenceNumbers.test.js +1 -7
  50. package/dist/reindexSubfield6OccurenceNumbers.test.js.map +2 -2
  51. package/dist/remove-041-zxx.js +56 -0
  52. package/dist/remove-041-zxx.js.map +7 -0
  53. package/dist/remove-041-zxx.test.js +40 -0
  54. package/dist/remove-041-zxx.test.js.map +7 -0
  55. package/dist/removeDuplicateDataFields.test.js +1 -7
  56. package/dist/removeDuplicateDataFields.test.js.map +2 -2
  57. package/dist/removeInferiorDataFields.js +1 -9
  58. package/dist/removeInferiorDataFields.js.map +2 -2
  59. package/dist/removeInferiorDataFields.test.js +1 -7
  60. package/dist/removeInferiorDataFields.test.js.map +2 -2
  61. package/dist/resolveOrphanedSubfield6s.js +1 -3
  62. package/dist/resolveOrphanedSubfield6s.js.map +2 -2
  63. package/dist/resolveOrphanedSubfield6s.test.js +1 -7
  64. package/dist/resolveOrphanedSubfield6s.test.js.map +2 -2
  65. package/dist/sanitize-vocabulary-source-codes.test.js +1 -7
  66. package/dist/sanitize-vocabulary-source-codes.test.js.map +2 -2
  67. package/dist/sortFields.js +16 -1
  68. package/dist/sortFields.js.map +2 -2
  69. package/dist/sortFields.test.js +1 -7
  70. package/dist/sortFields.test.js.map +2 -2
  71. package/dist/sortRelatorTerms.test.js +1 -7
  72. package/dist/sortRelatorTerms.test.js.map +2 -2
  73. package/dist/sortSubfields.js +3 -1
  74. package/dist/sortSubfields.js.map +2 -2
  75. package/dist/sortSubfields.test.js +1 -7
  76. package/dist/sortSubfields.test.js.map +2 -2
  77. package/dist/stripPunctuation.js +7 -4
  78. package/dist/stripPunctuation.js.map +2 -2
  79. package/dist/stripPunctuation.test.js +1 -7
  80. package/dist/stripPunctuation.test.js.map +2 -2
  81. package/dist/subfield6Utils.js +1 -13
  82. package/dist/subfield6Utils.js.map +2 -2
  83. package/dist/subfieldValueNormalizations.test.js +1 -7
  84. package/dist/subfieldValueNormalizations.test.js.map +2 -2
  85. package/dist/sync-007-and-300.test.js +1 -7
  86. package/dist/sync-007-and-300.test.js.map +2 -2
  87. package/dist/sync-language.js +103 -0
  88. package/dist/sync-language.js.map +7 -0
  89. package/dist/sync-language.test.js +40 -0
  90. package/dist/sync-language.test.js.map +7 -0
  91. package/dist/translate-terms.js +121 -85
  92. package/dist/translate-terms.js.map +3 -3
  93. package/dist/translate-terms.test.js +5 -8
  94. package/dist/translate-terms.test.js.map +2 -2
  95. package/dist/update-field-540.test.js +1 -7
  96. package/dist/update-field-540.test.js.map +2 -2
  97. package/dist/urn.test.js +1 -7
  98. package/dist/urn.test.js.map +2 -2
  99. package/package.json +8 -6
  100. package/src/disambiguateSeriesStatements.test.js +3 -8
  101. package/src/drop-terms.js +162 -0
  102. package/src/drop-terms.test.js +81 -0
  103. package/src/field-008-18-34-character-groups.test.js +3 -8
  104. package/src/field-505-separators.test.js +3 -8
  105. package/src/field-521-fix.test.js +3 -8
  106. package/src/fix-33X.test.js +1 -1
  107. package/src/fix-country-codes.test.js +3 -8
  108. package/src/fix-sami-041.js +113 -0
  109. package/src/fix-sami-041.test.js +52 -0
  110. package/src/fixRelatorTerms.test.js +3 -8
  111. package/src/index.js +8 -1
  112. package/src/indicator-fixes.js +12 -0
  113. package/src/indicator-fixes.test.js +3 -8
  114. package/src/merge-fields.test.js +3 -8
  115. package/src/mergeField500Lisapainokset.test.js +3 -8
  116. package/src/mergeRelatorTermFields.test.js +3 -8
  117. package/src/multiple-subfield-0.test.js +3 -8
  118. package/src/normalize-dashes.test.js +3 -8
  119. package/src/normalize-identifiers.test.js +3 -8
  120. package/src/normalize-qualifying-information.test.js +3 -8
  121. package/src/normalize-utf8-diacritics.test.js +3 -8
  122. package/src/punctuation.test.js +3 -8
  123. package/src/punctuation2.test.js +3 -8
  124. package/src/reindexSubfield6OccurenceNumbers.test.js +3 -8
  125. package/src/remove-041-zxx.js +85 -0
  126. package/src/remove-041-zxx.test.js +52 -0
  127. package/src/removeDuplicateDataFields.test.js +3 -8
  128. package/src/removeInferiorDataFields.js +7 -7
  129. package/src/removeInferiorDataFields.test.js +3 -8
  130. package/src/resolveOrphanedSubfield6s.js +3 -3
  131. package/src/resolveOrphanedSubfield6s.test.js +3 -8
  132. package/src/sanitize-vocabulary-source-codes.test.js +3 -8
  133. package/src/sortFields.js +20 -1
  134. package/src/sortFields.test.js +3 -8
  135. package/src/sortRelatorTerms.test.js +3 -8
  136. package/src/sortSubfields.js +3 -1
  137. package/src/sortSubfields.test.js +3 -8
  138. package/src/stripPunctuation.js +9 -6
  139. package/src/stripPunctuation.test.js +3 -8
  140. package/src/subfield6Utils.js +13 -13
  141. package/src/subfieldValueNormalizations.test.js +3 -8
  142. package/src/sync-007-and-300.test.js +3 -8
  143. package/src/sync-language.js +148 -0
  144. package/src/sync-language.test.js +52 -0
  145. package/src/translate-terms.js +158 -103
  146. package/src/translate-terms.test.js +12 -16
  147. package/src/update-field-540.test.js +3 -8
  148. package/src/urn.test.js +3 -8
  149. package/test-fixtures/drop-terms/01/expectedResult.json +31 -0
  150. package/test-fixtures/drop-terms/01/metadata.json +6 -0
  151. package/test-fixtures/drop-terms/01/record.json +35 -0
  152. package/test-fixtures/drop-terms/02/expectedResult.json +7 -0
  153. package/test-fixtures/drop-terms/02/metadata.json +6 -0
  154. package/test-fixtures/drop-terms/02/record.json +40 -0
  155. package/test-fixtures/drop-terms/03/expectedResult.json +6 -0
  156. package/test-fixtures/drop-terms/03/metadata.json +18 -0
  157. package/test-fixtures/drop-terms/03/record.json +39 -0
  158. package/test-fixtures/drop-terms/04/expectedResult.json +6 -0
  159. package/test-fixtures/drop-terms/04/metadata.json +19 -0
  160. package/test-fixtures/drop-terms/04/record.json +24 -0
  161. package/test-fixtures/fix-language-codes/02/metadata.json +1 -1
  162. package/test-fixtures/fix-sami-041/01/expectedResult.json +6 -0
  163. package/test-fixtures/fix-sami-041/01/metadata.json +4 -0
  164. package/test-fixtures/fix-sami-041/01/record.json +13 -0
  165. package/test-fixtures/fix-sami-041/02/expectedResult.json +10 -0
  166. package/test-fixtures/fix-sami-041/02/metadata.json +4 -0
  167. package/test-fixtures/fix-sami-041/02/record.json +8 -0
  168. package/test-fixtures/fix-sami-041/03/expectedResult.json +5 -0
  169. package/test-fixtures/fix-sami-041/03/metadata.json +5 -0
  170. package/test-fixtures/fix-sami-041/03/record.json +8 -0
  171. package/test-fixtures/fix-sami-041/04/expectedResult.json +7 -0
  172. package/test-fixtures/fix-sami-041/04/metadata.json +4 -0
  173. package/test-fixtures/fix-sami-041/04/record.json +10 -0
  174. package/test-fixtures/fix-sami-041/05/expectedResult.json +10 -0
  175. package/test-fixtures/fix-sami-041/05/metadata.json +6 -0
  176. package/test-fixtures/fix-sami-041/05/record.json +8 -0
  177. package/test-fixtures/indicator-fixes/11/expectedResult.json +10 -0
  178. package/test-fixtures/indicator-fixes/11/metadata.json +4 -0
  179. package/test-fixtures/indicator-fixes/11/record.json +10 -0
  180. package/test-fixtures/merge-fields/f05/metadata.json +1 -1
  181. package/test-fixtures/remove-041-zxx/01/expectedResult.json +5 -0
  182. package/test-fixtures/remove-041-zxx/01/metadata.json +5 -0
  183. package/test-fixtures/remove-041-zxx/01/record.json +10 -0
  184. package/test-fixtures/remove-041-zxx/02/expectedResult.json +7 -0
  185. package/test-fixtures/remove-041-zxx/02/metadata.json +5 -0
  186. package/test-fixtures/remove-041-zxx/02/record.json +9 -0
  187. package/test-fixtures/remove-041-zxx/11/expectedResult.json +10 -0
  188. package/test-fixtures/remove-041-zxx/11/metadata.json +5 -0
  189. package/test-fixtures/remove-041-zxx/11/record.json +9 -0
  190. package/test-fixtures/remove-041-zxx/12/expectedResult.json +10 -0
  191. package/test-fixtures/remove-041-zxx/12/metadata.json +5 -0
  192. package/test-fixtures/remove-041-zxx/12/record.json +9 -0
  193. package/test-fixtures/sort-fields/15/input.json +9 -0
  194. package/test-fixtures/sort-fields/15/metadata.json +5 -0
  195. package/test-fixtures/sort-fields/15/result.json +10 -0
  196. package/test-fixtures/sync-language/01/expectedResult.json +5 -0
  197. package/test-fixtures/sync-language/01/metadata.json +5 -0
  198. package/test-fixtures/sync-language/01/record.json +7 -0
  199. package/test-fixtures/sync-language/02/expectedResult.json +6 -0
  200. package/test-fixtures/sync-language/02/metadata.json +5 -0
  201. package/test-fixtures/sync-language/02/record.json +10 -0
  202. package/test-fixtures/sync-language/03/expectedResult.json +6 -0
  203. package/test-fixtures/sync-language/03/metadata.json +5 -0
  204. package/test-fixtures/sync-language/03/record.json +6 -0
  205. package/test-fixtures/sync-language/10/expectedResult.json +10 -0
  206. package/test-fixtures/sync-language/10/metadata.json +5 -0
  207. package/test-fixtures/sync-language/10/record.json +8 -0
  208. package/test-fixtures/sync-language/11/expectedResult.json +10 -0
  209. package/test-fixtures/sync-language/11/metadata.json +5 -0
  210. package/test-fixtures/sync-language/11/record.json +7 -0
  211. package/test-fixtures/sync-language/12/expectedResult.json +9 -0
  212. package/test-fixtures/sync-language/12/metadata.json +6 -0
  213. package/test-fixtures/sync-language/12/record.json +6 -0
  214. package/test-fixtures/sync-language/13/expectedResult.json +10 -0
  215. package/test-fixtures/sync-language/13/metadata.json +5 -0
  216. package/test-fixtures/sync-language/13/record.json +8 -0
  217. package/test-fixtures/sync-language/14/expectedResult.json +9 -0
  218. package/test-fixtures/sync-language/14/metadata.json +5 -0
  219. package/test-fixtures/sync-language/14/record.json +7 -0
  220. package/test-fixtures/sync-language/15/expectedResult.json +9 -0
  221. package/test-fixtures/sync-language/15/metadata.json +5 -0
  222. package/test-fixtures/sync-language/15/record.json +7 -0
  223. package/test-fixtures/translate-terms/05/expectedResult.json +12 -0
  224. package/test-fixtures/translate-terms/05/metadata.json +7 -0
  225. package/test-fixtures/translate-terms/05/record.json +11 -0
  226. package/test-fixtures/translate-terms/06/expectedResult.json +12 -0
  227. package/test-fixtures/translate-terms/06/metadata.json +7 -0
  228. package/test-fixtures/translate-terms/06/record.json +11 -0
  229. package/test-fixtures/translate-terms-data.js +23 -0
@@ -3,7 +3,6 @@ import { MarcRecord } from "@natlibfi/marc-record";
3
3
  import validatorFactory from "./normalize-identifiers.js";
4
4
  import { READERS } from "@natlibfi/fixura";
5
5
  import generateTests from "@natlibfi/fixugen";
6
- import createDebugLogger from "debug";
7
6
  generateTests({
8
7
  callback,
9
8
  path: [import.meta.dirname, "..", "test-fixtures", "normalize-identifiers"],
@@ -18,18 +17,13 @@ generateTests({
18
17
  }
19
18
  }
20
19
  });
21
- const debug = createDebugLogger("@natlibfi/marc-record-validators-melinda/normalize-identifiers:test");
22
20
  async function testValidatorFactory() {
23
21
  const validator = await validatorFactory();
24
22
  assert.equal(typeof validator, "object");
25
23
  assert.equal(typeof validator.description, "string");
26
24
  assert.equal(typeof validator.validate, "function");
27
25
  }
28
- async function callback({ getFixture, enabled = true, fix = false }) {
29
- if (enabled === false) {
30
- debug("TEST SKIPPED!");
31
- return;
32
- }
26
+ async function callback({ getFixture, fix = false }) {
33
27
  const validator = await validatorFactory();
34
28
  const record = new MarcRecord(getFixture("record.json"));
35
29
  const expectedResult = getFixture("expectedResult.json");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/normalize-identifiers.test.js"],
4
- "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './normalize-identifiers.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\nimport createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'normalize-identifiers'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\nconst debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/normalize-identifiers:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, enabled = true, fix = false}) {\n if (enabled === false) {\n debug('TEST SKIPPED!');\n return;\n }\n\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
- "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAC1B,OAAO,uBAAuB;AAE9B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,uBAAuB;AAAA,EAC1E,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AACD,MAAM,QAAQ,kBAAkB,qEAAqE;AAErG,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,UAAU,MAAM,MAAM,MAAK,GAAG;AACjE,MAAI,YAAY,OAAO;AACrB,UAAM,eAAe;AACrB;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
4
+ "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './normalize-identifiers.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\n//import createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'normalize-identifiers'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\n//const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/normalize-identifiers:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, fix = false}) {\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
+ "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAG1B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,uBAAuB;AAAA,EAC1E,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AAGD,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,MAAM,MAAK,GAAG;AACjD,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
6
6
  "names": []
7
7
  }
@@ -3,7 +3,6 @@ import { MarcRecord } from "@natlibfi/marc-record";
3
3
  import validatorFactory from "./normalize-qualifying-information.js";
4
4
  import { READERS } from "@natlibfi/fixura";
5
5
  import generateTests from "@natlibfi/fixugen";
6
- import createDebugLogger from "debug";
7
6
  generateTests({
8
7
  callback,
9
8
  path: [import.meta.dirname, "..", "test-fixtures", "normalize-qualifying-information"],
@@ -18,18 +17,13 @@ generateTests({
18
17
  }
19
18
  }
20
19
  });
21
- const debug = createDebugLogger("@natlibfi/marc-record-validators-melinda/normalize-qualifying-information:test");
22
20
  async function testValidatorFactory() {
23
21
  const validator = await validatorFactory();
24
22
  assert.equal(typeof validator, "object");
25
23
  assert.equal(typeof validator.description, "string");
26
24
  assert.equal(typeof validator.validate, "function");
27
25
  }
28
- async function callback({ getFixture, enabled = true, fix = false }) {
29
- if (enabled === false) {
30
- debug("TEST SKIPPED!");
31
- return;
32
- }
26
+ async function callback({ getFixture, fix = false }) {
33
27
  const validator = await validatorFactory();
34
28
  const record = new MarcRecord(getFixture("record.json"));
35
29
  const expectedResult = getFixture("expectedResult.json");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/normalize-qualifying-information.test.js"],
4
- "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './normalize-qualifying-information.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\nimport createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'normalize-qualifying-information'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\nconst debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/normalize-qualifying-information:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, enabled = true, fix = false}) {\n if (enabled === false) {\n debug('TEST SKIPPED!');\n return;\n }\n\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
- "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAC1B,OAAO,uBAAuB;AAE9B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,kCAAkC;AAAA,EACrF,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AACD,MAAM,QAAQ,kBAAkB,gFAAgF;AAEhH,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,UAAU,MAAM,MAAM,MAAK,GAAG;AACjE,MAAI,YAAY,OAAO;AACrB,UAAM,eAAe;AACrB;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
4
+ "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './normalize-qualifying-information.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\n//import createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'normalize-qualifying-information'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\n//const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/normalize-qualifying-information:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, fix = false}) {\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
+ "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAG1B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,kCAAkC;AAAA,EACrF,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AAGD,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,MAAM,MAAK,GAAG;AACjD,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
6
6
  "names": []
7
7
  }
@@ -3,7 +3,6 @@ import { MarcRecord } from "@natlibfi/marc-record";
3
3
  import validatorFactory from "./normalize-utf8-diacritics.js";
4
4
  import { READERS } from "@natlibfi/fixura";
5
5
  import generateTests from "@natlibfi/fixugen";
6
- import createDebugLogger from "debug";
7
6
  generateTests({
8
7
  callback,
9
8
  path: [import.meta.dirname, "..", "test-fixtures", "normalize-utf8-diacritics"],
@@ -18,18 +17,13 @@ generateTests({
18
17
  }
19
18
  }
20
19
  });
21
- const debug = createDebugLogger("@natlibfi/marc-record-validators-melinda/normalize-utf8-diacritics:test");
22
20
  async function testValidatorFactory() {
23
21
  const validator = await validatorFactory();
24
22
  assert.equal(typeof validator, "object");
25
23
  assert.equal(typeof validator.description, "string");
26
24
  assert.equal(typeof validator.validate, "function");
27
25
  }
28
- async function callback({ getFixture, enabled = true, fix = false }) {
29
- if (enabled === false) {
30
- debug("TEST SKIPPED!");
31
- return;
32
- }
26
+ async function callback({ getFixture, fix = false }) {
33
27
  const validator = await validatorFactory();
34
28
  const record = new MarcRecord(getFixture("record.json"));
35
29
  const expectedResult = getFixture("expectedResult.json");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/normalize-utf8-diacritics.test.js"],
4
- "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './normalize-utf8-diacritics.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\nimport createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'normalize-utf8-diacritics'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\n\nconst debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/normalize-utf8-diacritics:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, enabled = true, fix = false}) {\n if (enabled === false) {\n debug('TEST SKIPPED!');\n return;\n }\n\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
- "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAC1B,OAAO,uBAAuB;AAE9B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,2BAA2B;AAAA,EAC9E,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AAED,MAAM,QAAQ,kBAAkB,yEAAyE;AAEzG,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,UAAU,MAAM,MAAM,MAAK,GAAG;AACjE,MAAI,YAAY,OAAO;AACrB,UAAM,eAAe;AACrB;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
4
+ "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './normalize-utf8-diacritics.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\n//import createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'normalize-utf8-diacritics'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\n\n//const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/normalize-utf8-diacritics:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, fix = false}) {\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
+ "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAG1B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,2BAA2B;AAAA,EAC9E,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AAID,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,MAAM,MAAK,GAAG;AACjD,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
6
6
  "names": []
7
7
  }
@@ -3,7 +3,6 @@ import { MarcRecord } from "@natlibfi/marc-record";
3
3
  import validatorFactory from "./punctuation/index.js";
4
4
  import { READERS } from "@natlibfi/fixura";
5
5
  import generateTests from "@natlibfi/fixugen";
6
- import createDebugLogger from "debug";
7
6
  generateTests({
8
7
  callback,
9
8
  path: [import.meta.dirname, "..", "test-fixtures", "punctuation"],
@@ -18,18 +17,13 @@ generateTests({
18
17
  }
19
18
  }
20
19
  });
21
- const debug = createDebugLogger("@natlibfi/marc-record-validators-melinda/punctuation:test");
22
20
  async function testValidatorFactory() {
23
21
  const validator = await validatorFactory();
24
22
  assert.equal(typeof validator, "object");
25
23
  assert.equal(typeof validator.description, "string");
26
24
  assert.equal(typeof validator.validate, "function");
27
25
  }
28
- async function callback({ getFixture, enabled = true, fix = false }) {
29
- if (enabled === false) {
30
- debug("TEST SKIPPED!");
31
- return;
32
- }
26
+ async function callback({ getFixture, fix = false }) {
33
27
  const validator = await validatorFactory();
34
28
  const record = new MarcRecord(getFixture("record.json"));
35
29
  const expectedResult = getFixture("expectedResult.json");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/punctuation.test.js"],
4
- "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './punctuation/index.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\nimport createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'punctuation'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\nconst debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/punctuation:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, enabled = true, fix = false}) {\n if (enabled === false) {\n debug('TEST SKIPPED!');\n return;\n }\n\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
- "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAC1B,OAAO,uBAAuB;AAE9B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,aAAa;AAAA,EAChE,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AACD,MAAM,QAAQ,kBAAkB,2DAA2D;AAE3F,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,UAAU,MAAM,MAAM,MAAK,GAAG;AACjE,MAAI,YAAY,OAAO;AACrB,UAAM,eAAe;AACrB;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
4
+ "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './punctuation/index.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\n//import createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'punctuation'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\n//const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/punctuation:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, fix = false}) {\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
+ "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAG1B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,aAAa;AAAA,EAChE,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AAGD,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,MAAM,MAAK,GAAG;AACjD,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
6
6
  "names": []
7
7
  }
@@ -3,7 +3,6 @@ import { MarcRecord } from "@natlibfi/marc-record";
3
3
  import validatorFactory from "./punctuation2.js";
4
4
  import { READERS } from "@natlibfi/fixura";
5
5
  import generateTests from "@natlibfi/fixugen";
6
- import createDebugLogger from "debug";
7
6
  generateTests({
8
7
  callback,
9
8
  path: [import.meta.dirname, "..", "test-fixtures", "punctuation2"],
@@ -18,18 +17,13 @@ generateTests({
18
17
  }
19
18
  }
20
19
  });
21
- const debug = createDebugLogger("@natlibfi/marc-record-validators-melinda/punctuation2:test");
22
20
  async function testValidatorFactory() {
23
21
  const validator = await validatorFactory();
24
22
  assert.equal(typeof validator, "object");
25
23
  assert.equal(typeof validator.description, "string");
26
24
  assert.equal(typeof validator.validate, "function");
27
25
  }
28
- async function callback({ getFixture, enabled = true, fix = false }) {
29
- if (enabled === false) {
30
- debug("TEST SKIPPED!");
31
- return;
32
- }
26
+ async function callback({ getFixture, fix = false }) {
33
27
  const validator = await validatorFactory();
34
28
  const record = new MarcRecord(getFixture("record.json"));
35
29
  const expectedResult = getFixture("expectedResult.json");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/punctuation2.test.js"],
4
- "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './punctuation2.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\nimport createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'punctuation2'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\nconst debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/punctuation2:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, enabled = true, fix = false}) {\n if (enabled === false) {\n debug('TEST SKIPPED!');\n return;\n }\n\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
- "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAC1B,OAAO,uBAAuB;AAE9B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,cAAc;AAAA,EACjE,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AACD,MAAM,QAAQ,kBAAkB,4DAA4D;AAE5F,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,UAAU,MAAM,MAAM,MAAK,GAAG;AACjE,MAAI,YAAY,OAAO;AACrB,UAAM,eAAe;AACrB;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
4
+ "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './punctuation2.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\n//import createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'punctuation2'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\n//const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/punctuation2:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, fix = false}) {\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
+ "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAG1B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,cAAc;AAAA,EACjE,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AAGD,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,MAAM,MAAK,GAAG;AACjD,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
6
6
  "names": []
7
7
  }
@@ -3,7 +3,6 @@ import { MarcRecord } from "@natlibfi/marc-record";
3
3
  import validatorFactory from "./reindexSubfield6OccurenceNumbers.js";
4
4
  import { READERS } from "@natlibfi/fixura";
5
5
  import generateTests from "@natlibfi/fixugen";
6
- import createDebugLogger from "debug";
7
6
  generateTests({
8
7
  callback,
9
8
  path: [import.meta.dirname, "..", "test-fixtures", "reindex-sf6-occurence-numbers"],
@@ -18,18 +17,13 @@ generateTests({
18
17
  }
19
18
  }
20
19
  });
21
- const debug = createDebugLogger("@natlibfi/marc-record-validators-melinda/reindexSubfield6OccurrenceNumbers:test");
22
20
  async function testValidatorFactory() {
23
21
  const validator = await validatorFactory();
24
22
  assert.equal(typeof validator, "object");
25
23
  assert.equal(typeof validator.description, "string");
26
24
  assert.equal(typeof validator.validate, "function");
27
25
  }
28
- async function callback({ getFixture, enabled = true, fix = false }) {
29
- if (enabled === false) {
30
- debug("TEST SKIPPED!");
31
- return;
32
- }
26
+ async function callback({ getFixture, fix = false }) {
33
27
  const validator = await validatorFactory();
34
28
  const record = new MarcRecord(getFixture("record.json"));
35
29
  const expectedResult = getFixture("expectedResult.json");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/reindexSubfield6OccurenceNumbers.test.js"],
4
- "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './reindexSubfield6OccurenceNumbers.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\nimport createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'reindex-sf6-occurence-numbers'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\nconst debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/reindexSubfield6OccurrenceNumbers:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, enabled = true, fix = false}) {\n if (enabled === false) {\n debug('TEST SKIPPED!');\n return;\n }\n\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
- "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAC1B,OAAO,uBAAuB;AAE9B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,+BAA+B;AAAA,EAClF,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AACD,MAAM,QAAQ,kBAAkB,iFAAiF;AAEjH,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,UAAU,MAAM,MAAM,MAAK,GAAG;AACjE,MAAI,YAAY,OAAO;AACrB,UAAM,eAAe;AACrB;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
4
+ "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './reindexSubfield6OccurenceNumbers.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\n//import createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'reindex-sf6-occurence-numbers'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\n//const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/reindexSubfield6OccurrenceNumbers:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, fix = false}) {\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
+ "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAG1B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,+BAA+B;AAAA,EAClF,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AAGD,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,MAAM,MAAK,GAAG;AACjD,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,56 @@
1
+ import clone from "clone";
2
+ import { fieldToString } from "./utils.js";
3
+ export default function() {
4
+ return {
5
+ description: "Remove 'zxx' from f041",
6
+ validate,
7
+ fix
8
+ };
9
+ function zxxRemoval041(record, validateMode) {
10
+ const fields041 = record.fields.filter((f) => f.tag === "041");
11
+ return handleZxx(fields041);
12
+ function handleZxx(fields, result = []) {
13
+ const [currField, ...remainingFields] = fields;
14
+ if (!currField) {
15
+ return result;
16
+ }
17
+ if (!currField.subfields || currField.subfields.some((sf) => sf.code === "2")) {
18
+ return handleZxx(remainingFields, result);
19
+ }
20
+ const otherSubfields = currField.subfields.filter((sf) => !sf.code.match(/^[a-z]$/u) || sf.value !== "zxx");
21
+ if (otherSubfields.length === currField.subfields.length) {
22
+ return handleZxx(remainingFields, result);
23
+ }
24
+ const originalString = fieldToString(currField);
25
+ if (otherSubfields.length === 0) {
26
+ const message2 = `Remove '${originalString}'`;
27
+ if (!validateMode) {
28
+ record.removeField(currField);
29
+ }
30
+ return handleZxx(remainingFields, [...result, message2]);
31
+ }
32
+ if (validateMode) {
33
+ const clonedField = clone(currField);
34
+ clonedField.subfields = otherSubfields;
35
+ const modifiedString2 = fieldToString(clonedField);
36
+ const message2 = `Modify '${originalString}' => '${modifiedString2}`;
37
+ return handleZxx(remainingFields, [...result, message2]);
38
+ }
39
+ currField.subfields = otherSubfields;
40
+ const modifiedString = fieldToString(currField);
41
+ const message = `Modify '${originalString}' => '${modifiedString}`;
42
+ return handleZxx(remainingFields, [...result, message]);
43
+ }
44
+ }
45
+ function fix(record, validateMode = false) {
46
+ const messages = zxxRemoval041(record, validateMode);
47
+ if (validateMode) {
48
+ return { message: messages, valid: messages.length === 0 };
49
+ }
50
+ return { message: [], fix: messages, valid: true };
51
+ }
52
+ function validate(record) {
53
+ return fix(record, true);
54
+ }
55
+ }
56
+ //# sourceMappingURL=remove-041-zxx.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/remove-041-zxx.js"],
4
+ "sourcesContent": ["/*\n// remove-041-zxx.js\n//\n// https://wiki.helsinki.fi/xwiki/bin/view/rdasovellusohje/RDA-kuvailu%20MARC%2021%20-formaatilla/RDA-sovellusohje/008%20Kontrollikentt%C3%A4/#Hmp.35-37Kieli\n// \"008-kielikoodi on sama kuin ensimm\u00E4inen 041-kent\u00E4n a- (tai d-) osakentt\u00E4. Poikkeuksen muodostaa koodi zxx:\n// jos tietueen 008ssa on kielikoodi zxx (ei kielellist\u00E4 sis\u00E4lt\u00F6\u00E4, esim. soitinmusiikki), tietueessa ei voi olla 041 a- eik\u00E4 d-osakentt\u00E4\u00E4.\"\n// Effectively this means, that 'zxx' does not appear in 041!\n// Author(s): Nicholas Volk\n*/\n\n//import createDebugLogger from 'debug';\nimport clone from 'clone';\n\nimport {fieldToString} from './utils.js';\n\n// const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda:remove-041-zxx');\n\n\n\n\nexport default function () {\n\n return {\n description: \"Remove 'zxx' from f041\",\n validate, fix\n };\n\n function zxxRemoval041(record, validateMode) {\n const fields041 = record.fields.filter(f => f.tag === '041');\n\n return handleZxx(fields041);\n\n function handleZxx(fields, result = []) {\n const [currField, ...remainingFields] = fields;\n if ( !currField) {\n return result;\n }\n // Theoretically 'zxx' might mean something in ISO-639-3 or some other language code list:\n if (!currField.subfields || currField.subfields.some(sf => sf.code === '2')) {\n return handleZxx(remainingFields, result);\n }\n // Presumable 'zxx' is bad in any data subfield, not just 'a' and 'd':\n const otherSubfields = currField.subfields.filter(sf => (!sf.code.match(/^[a-z]$/u) || sf.value !== 'zxx'));\n if (otherSubfields.length === currField.subfields.length) {\n return handleZxx(remainingFields, result);\n }\n const originalString = fieldToString(currField);\n if (otherSubfields.length === 0) {\n const message = `Remove '${originalString}'`;\n if (!validateMode) {\n record.removeField(currField);\n }\n return handleZxx(remainingFields, [...result, message]);\n }\n // Some subfields are removed:\n if (validateMode) {\n // NB! In validation field is not really deleted, and the non-deleted field might trigger other fixes (than won't be done to a deleted field) later on\n const clonedField = clone(currField);\n clonedField.subfields = otherSubfields;\n const modifiedString = fieldToString(clonedField);\n const message = `Modify '${originalString}' => '${modifiedString}`;\n return handleZxx(remainingFields, [...result, message]);\n }\n currField.subfields = otherSubfields;\n const modifiedString = fieldToString(currField);\n const message = `Modify '${originalString}' => '${modifiedString}`;\n return handleZxx(remainingFields, [...result, message]);\n }\n }\n\n function fix(record, validateMode = false) {\n const messages = zxxRemoval041(record, validateMode);\n\n if (validateMode) {\n return {message: messages, valid: messages.length === 0};\n }\n return {message: [], fix: messages, valid: true};\n }\n\n\n function validate(record) {\n return fix(record, true);\n }\n}\n\n"],
5
+ "mappings": "AAWA,OAAO,WAAW;AAElB,SAAQ,qBAAoB;AAO5B,0BAA2B;AAEzB,SAAO;AAAA,IACL,aAAa;AAAA,IACb;AAAA,IAAU;AAAA,EACZ;AAEA,WAAS,cAAc,QAAQ,cAAc;AAC3C,UAAM,YAAY,OAAO,OAAO,OAAO,OAAK,EAAE,QAAQ,KAAK;AAE3D,WAAO,UAAU,SAAS;AAE1B,aAAS,UAAU,QAAQ,SAAS,CAAC,GAAG;AACtC,YAAM,CAAC,WAAW,GAAG,eAAe,IAAI;AACxC,UAAK,CAAC,WAAW;AACf,eAAO;AAAA,MACT;AAEA,UAAI,CAAC,UAAU,aAAa,UAAU,UAAU,KAAK,QAAM,GAAG,SAAS,GAAG,GAAG;AAC3E,eAAO,UAAU,iBAAiB,MAAM;AAAA,MAC1C;AAEA,YAAM,iBAAiB,UAAU,UAAU,OAAO,QAAO,CAAC,GAAG,KAAK,MAAM,UAAU,KAAK,GAAG,UAAU,KAAM;AAC1G,UAAI,eAAe,WAAW,UAAU,UAAU,QAAQ;AACxD,eAAO,UAAU,iBAAiB,MAAM;AAAA,MAC1C;AACA,YAAM,iBAAiB,cAAc,SAAS;AAC9C,UAAI,eAAe,WAAW,GAAG;AAC/B,cAAMA,WAAU,WAAW,cAAc;AACzC,YAAI,CAAC,cAAc;AACjB,iBAAO,YAAY,SAAS;AAAA,QAC9B;AACA,eAAO,UAAU,iBAAiB,CAAC,GAAG,QAAQA,QAAO,CAAC;AAAA,MACxD;AAEA,UAAI,cAAc;AAEhB,cAAM,cAAc,MAAM,SAAS;AACnC,oBAAY,YAAY;AACxB,cAAMC,kBAAiB,cAAc,WAAW;AAChD,cAAMD,WAAU,WAAW,cAAc,SAASC,eAAc;AAChE,eAAO,UAAU,iBAAiB,CAAC,GAAG,QAAQD,QAAO,CAAC;AAAA,MACxD;AACA,gBAAU,YAAY;AACtB,YAAM,iBAAiB,cAAc,SAAS;AAC9C,YAAM,UAAU,WAAW,cAAc,SAAS,cAAc;AAChE,aAAO,UAAU,iBAAiB,CAAC,GAAG,QAAQ,OAAO,CAAC;AAAA,IACxD;AAAA,EACF;AAEA,WAAS,IAAI,QAAQ,eAAe,OAAO;AACzC,UAAM,WAAW,cAAc,QAAQ,YAAY;AAEnD,QAAI,cAAc;AACf,aAAO,EAAC,SAAS,UAAU,OAAO,SAAS,WAAW,EAAC;AAAA,IAC1D;AACA,WAAO,EAAC,SAAS,CAAC,GAAG,KAAK,UAAU,OAAO,KAAI;AAAA,EACjD;AAGA,WAAS,SAAS,QAAQ;AACxB,WAAO,IAAI,QAAQ,IAAI;AAAA,EACzB;AACF;",
6
+ "names": ["message", "modifiedString"]
7
+ }
@@ -0,0 +1,40 @@
1
+ import assert from "node:assert/strict";
2
+ import validatorFactory from "./remove-041-zxx.js";
3
+ import { MarcRecord } from "@natlibfi/marc-record";
4
+ import { READERS } from "@natlibfi/fixura";
5
+ import generateTests from "@natlibfi/fixugen";
6
+ generateTests({
7
+ callback,
8
+ path: [import.meta.dirname, "..", "test-fixtures", "remove-041-zxx"],
9
+ useMetadataFile: true,
10
+ recurse: false,
11
+ fixura: {
12
+ reader: READERS.JSON
13
+ },
14
+ hooks: {
15
+ before: async () => {
16
+ testValidatorFactory();
17
+ }
18
+ }
19
+ });
20
+ async function testValidatorFactory() {
21
+ const validator = await validatorFactory();
22
+ assert.equal(typeof validator, "object");
23
+ assert.equal(typeof validator.description, "string");
24
+ assert.equal(typeof validator.validate, "function");
25
+ }
26
+ async function callback({ getFixture, fix = false }) {
27
+ const validator = await validatorFactory();
28
+ const record = new MarcRecord(getFixture("record.json"));
29
+ const expectedResult = getFixture("expectedResult.json");
30
+ if (!fix) {
31
+ const result = await validator.validate(record);
32
+ assert.deepEqual(result, expectedResult);
33
+ const originalRecord = new MarcRecord(getFixture("record.json"));
34
+ assert.deepEqual(record, originalRecord);
35
+ return;
36
+ }
37
+ await validator.fix(record);
38
+ assert.deepEqual(record, new MarcRecord(expectedResult));
39
+ }
40
+ //# sourceMappingURL=remove-041-zxx.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/remove-041-zxx.test.js"],
4
+ "sourcesContent": ["import assert from 'node:assert/strict';\n//import createDebugLogger from 'debug';\n\nimport validatorFactory from './remove-041-zxx.js';\n\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'remove-041-zxx'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\n\n//const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/drop-terms:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, fix = false}) {\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n //const expectedResult = new MarcRecord(getFixture('expectedResult.json'));\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n const originalRecord = new MarcRecord(getFixture('record.json'));\n assert.deepEqual(record, originalRecord); // Validation should not change the record\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, new MarcRecord(expectedResult));\n}\n"],
5
+ "mappings": "AAAA,OAAO,YAAY;AAGnB,OAAO,sBAAsB;AAE7B,SAAQ,kBAAiB;AACzB,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAE1B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,gBAAgB;AAAA,EACnE,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AAID,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,MAAM,MAAK,GAAG;AACjD,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAIvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC,UAAM,iBAAiB,IAAI,WAAW,WAAW,aAAa,CAAC;AAC/D,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,IAAI,WAAW,cAAc,CAAC;AACzD;",
6
+ "names": []
7
+ }
@@ -3,7 +3,6 @@ import { MarcRecord } from "@natlibfi/marc-record";
3
3
  import validatorFactory from "./removeDuplicateDataFields.js";
4
4
  import { READERS } from "@natlibfi/fixura";
5
5
  import generateTests from "@natlibfi/fixugen";
6
- import createDebugLogger from "debug";
7
6
  generateTests({
8
7
  callback,
9
8
  path: [import.meta.dirname, "..", "test-fixtures", "remove-duplicate-datafields"],
@@ -18,18 +17,13 @@ generateTests({
18
17
  }
19
18
  }
20
19
  });
21
- const debug = createDebugLogger("@natlibfi/marc-record-validators-melinda/removeDuplicateDataFields:test");
22
20
  async function testValidatorFactory() {
23
21
  const validator = await validatorFactory();
24
22
  assert.equal(typeof validator, "object");
25
23
  assert.equal(typeof validator.description, "string");
26
24
  assert.equal(typeof validator.validate, "function");
27
25
  }
28
- async function callback({ getFixture, enabled = true, fix = false }) {
29
- if (enabled === false) {
30
- debug("TEST SKIPPED!");
31
- return;
32
- }
26
+ async function callback({ getFixture, fix = false }) {
33
27
  const validator = await validatorFactory();
34
28
  const record = new MarcRecord(getFixture("record.json"));
35
29
  const expectedResult = getFixture("expectedResult.json");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/removeDuplicateDataFields.test.js"],
4
- "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './removeDuplicateDataFields.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\nimport createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'remove-duplicate-datafields'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\nconst debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/removeDuplicateDataFields:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, enabled = true, fix = false}) {\n if (enabled === false) {\n debug('TEST SKIPPED!');\n return;\n }\n\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
- "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAC1B,OAAO,uBAAuB;AAE9B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,6BAA6B;AAAA,EAChF,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AACD,MAAM,QAAQ,kBAAkB,yEAAyE;AAEzG,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,UAAU,MAAM,MAAM,MAAK,GAAG;AACjE,MAAI,YAAY,OAAO;AACrB,UAAM,eAAe;AACrB;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
4
+ "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './removeDuplicateDataFields.js';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\n//import createDebugLogger from 'debug';\n\ngenerateTests({\n callback,\n path: [import.meta.dirname, '..', 'test-fixtures', 'remove-duplicate-datafields'],\n useMetadataFile: true,\n recurse: false,\n fixura: {\n reader: READERS.JSON\n },\n hooks: {\n before: async () => {\n testValidatorFactory();\n }\n }\n});\n//const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/removeDuplicateDataFields:test');\n\nasync function testValidatorFactory() {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n}\n\nasync function callback({getFixture, fix = false}) {\n const validator = await validatorFactory();\n const record = new MarcRecord(getFixture('record.json'));\n const expectedResult = getFixture('expectedResult.json');\n // console.log(expectedResult); // eslint-disable-line\n\n if (!fix) {\n const result = await validator.validate(record);\n assert.deepEqual(result, expectedResult);\n return;\n }\n\n await validator.fix(record);\n assert.deepEqual(record, expectedResult);\n}\n"],
5
+ "mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,kBAAiB;AACzB,OAAO,sBAAsB;AAC7B,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAG1B,cAAc;AAAA,EACZ;AAAA,EACA,MAAM,CAAC,YAAY,SAAS,MAAM,iBAAiB,6BAA6B;AAAA,EAChF,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,IACN,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,YAAY;AAClB,2BAAqB;AAAA,IACvB;AAAA,EACF;AACF,CAAC;AAGD,eAAe,uBAAuB;AACpC,QAAM,YAAY,MAAM,iBAAiB;AAEzC,SAAO,MAAM,OAAO,WAAW,QAAQ;AACvC,SAAO,MAAM,OAAO,UAAU,aAAa,QAAQ;AACnD,SAAO,MAAM,OAAO,UAAU,UAAU,UAAU;AACpD;AAEA,eAAe,SAAS,EAAC,YAAY,MAAM,MAAK,GAAG;AACjD,QAAM,YAAY,MAAM,iBAAiB;AACzC,QAAM,SAAS,IAAI,WAAW,WAAW,aAAa,CAAC;AACvD,QAAM,iBAAiB,WAAW,qBAAqB;AAGvD,MAAI,CAAC,KAAK;AACR,UAAM,SAAS,MAAM,UAAU,SAAS,MAAM;AAC9C,WAAO,UAAU,QAAQ,cAAc;AACvC;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,MAAM;AAC1B,SAAO,UAAU,QAAQ,cAAc;AACzC;",
6
6
  "names": []
7
7
  }
@@ -1,12 +1,10 @@
1
- import createDebugLogger from "debug";
2
1
  import { fieldToChain, sameField } from "./removeDuplicateDataFields.js";
3
2
  import { fieldGetOccurrenceNumberPairs, fieldHasValidSubfield6, fieldSevenToOneOccurrenceNumber, fieldsToNormalizedString } from "./subfield6Utils.js";
4
- import { fieldHasSubfield, fieldsToString, fieldToString, nvdebug, uniqArray } from "./utils.js";
3
+ import { fieldHasSubfield, fieldsToString, fieldToString, uniqArray } from "./utils.js";
5
4
  import { fieldHasValidSubfield8 } from "./subfield8Utils.js";
6
5
  import { encodingLevelIsBetterThanPrepublication, fieldRefersToKoneellisestiTuotettuTietue, getEncodingLevel } from "./prepublicationUtils.js";
7
6
  import { cloneAndNormalizeFieldForComparison } from "./normalizeFieldForComparison.js";
8
7
  import { fixComposition, precomposeFinnishLetters } from "./normalize-utf8-diacritics.js";
9
- const debug = createDebugLogger("@natlibfi/marc-record-validators-melinda:removeInferiorDataFields");
10
8
  export default function() {
11
9
  return {
12
10
  description: "Remove subset data fields. Certain exceptions apply, mainly too complicated for chained fields",
@@ -14,13 +12,11 @@ export default function() {
14
12
  fix
15
13
  };
16
14
  function fix(record) {
17
- nvdebug("Fix record: remove inferior (eg. subset) data fields", debug);
18
15
  const res = { message: [], fix: [], valid: true };
19
16
  removeInferiorDatafields(record, true);
20
17
  return res;
21
18
  }
22
19
  function validate(record) {
23
- nvdebug("Validate record: remove inferior (eg. subset) data fields", debug);
24
20
  const duplicates = removeInferiorDatafields(record, false);
25
21
  const res = { message: duplicates };
26
22
  res.valid = res.message.length < 1;
@@ -287,10 +283,6 @@ export function removeIndividualInferiorDatafields(record, fix = true) {
287
283
  export function removeInferiorDatafields(record, fix = true) {
288
284
  const removables = removeIndividualInferiorDatafields(record, fix);
289
285
  const removables6 = removeInferiorChains(record, fix);
290
- nvdebug(`REMOVABLES:
291
- ${removables.join("\n ")}`, debug);
292
- nvdebug(`REMOVABLES 6:
293
- ${removables6.join("\n ")}`, debug);
294
286
  const removablesAll = removables.concat(removables6);
295
287
  return removablesAll;
296
288
  }