@natlibfi/marc-record-validators-melinda 11.6.7 → 12.0.0-alpha.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 (545) hide show
  1. package/.github/workflows/melinda-node-tests.yml +1 -1
  2. package/dist/access-rights.js +63 -91
  3. package/dist/access-rights.js.map +7 -1
  4. package/dist/access-rights.test.js +137 -0
  5. package/dist/access-rights.test.js.map +7 -0
  6. package/dist/addMissingField041.js +21 -53
  7. package/dist/addMissingField041.js.map +7 -1
  8. package/dist/addMissingField041.test.js +39 -0
  9. package/dist/addMissingField041.test.js.map +7 -0
  10. package/dist/addMissingField336.js +99 -191
  11. package/dist/addMissingField336.js.map +7 -1
  12. package/dist/addMissingField336.test.js +39 -0
  13. package/dist/addMissingField336.test.js.map +7 -0
  14. package/dist/addMissingField337.js +63 -132
  15. package/dist/addMissingField337.js.map +7 -1
  16. package/dist/addMissingField337.test.js +39 -0
  17. package/dist/addMissingField337.test.js.map +7 -0
  18. package/dist/addMissingField338.js +147 -253
  19. package/dist/addMissingField338.js.map +7 -1
  20. package/dist/addMissingField338.test.js +39 -0
  21. package/dist/addMissingField338.test.js.map +7 -0
  22. package/dist/cyrillux-usemarcon-replacement.js +119 -272
  23. package/dist/cyrillux-usemarcon-replacement.js.map +7 -1
  24. package/dist/cyrillux-usemarcon-replacement.test.js +46 -0
  25. package/dist/cyrillux-usemarcon-replacement.test.js.map +7 -0
  26. package/dist/cyrillux.js +119 -223
  27. package/dist/cyrillux.js.map +7 -1
  28. package/dist/cyrillux.test.js +39 -0
  29. package/dist/cyrillux.test.js.map +7 -0
  30. package/dist/disambiguateSeriesStatements.js +40 -81
  31. package/dist/disambiguateSeriesStatements.js.map +7 -1
  32. package/dist/disambiguateSeriesStatements.test.js +44 -0
  33. package/dist/disambiguateSeriesStatements.test.js.map +7 -0
  34. package/dist/double-commas.js +7 -14
  35. package/dist/double-commas.js.map +7 -1
  36. package/dist/double-commas.test.js +48 -0
  37. package/dist/double-commas.test.js.map +7 -0
  38. package/dist/duplicates-ind1.js +10 -31
  39. package/dist/duplicates-ind1.js.map +7 -1
  40. package/dist/duplicates-ind1.test.js +40 -0
  41. package/dist/duplicates-ind1.test.js.map +7 -0
  42. package/dist/empty-fields.js +10 -22
  43. package/dist/empty-fields.js.map +7 -1
  44. package/dist/empty-fields.test.js +129 -0
  45. package/dist/empty-fields.test.js.map +7 -0
  46. package/dist/ending-punctuation-conf.js +871 -769
  47. package/dist/ending-punctuation-conf.js.map +7 -1
  48. package/dist/ending-punctuation.js +84 -167
  49. package/dist/ending-punctuation.js.map +7 -1
  50. package/dist/ending-punctuation.test.js +2290 -0
  51. package/dist/ending-punctuation.test.js.map +7 -0
  52. package/dist/ending-whitespace.js +10 -35
  53. package/dist/ending-whitespace.js.map +7 -1
  54. package/dist/ending-whitespace.test.js +38 -0
  55. package/dist/ending-whitespace.test.js.map +7 -0
  56. package/dist/field-008-18-34-character-groups.js +40 -125
  57. package/dist/field-008-18-34-character-groups.js.map +7 -1
  58. package/dist/field-008-18-34-character-groups.test.js +45 -0
  59. package/dist/field-008-18-34-character-groups.test.js.map +7 -0
  60. package/dist/field-505-separators.js +19 -39
  61. package/dist/field-505-separators.js.map +7 -1
  62. package/dist/field-505-separators.test.js +45 -0
  63. package/dist/field-505-separators.test.js.map +7 -0
  64. package/dist/field-521-fix.js +19 -47
  65. package/dist/field-521-fix.js.map +7 -1
  66. package/dist/field-521-fix.test.js +44 -0
  67. package/dist/field-521-fix.test.js.map +7 -0
  68. package/dist/field-exclusion.js +37 -91
  69. package/dist/field-exclusion.js.map +7 -1
  70. package/dist/field-exclusion.test.js +821 -0
  71. package/dist/field-exclusion.test.js.map +7 -0
  72. package/dist/field-structure.js +52 -104
  73. package/dist/field-structure.js.map +7 -1
  74. package/dist/field-structure.test.js +587 -0
  75. package/dist/field-structure.test.js.map +7 -0
  76. package/dist/field33XUtils.js +119 -503
  77. package/dist/field33XUtils.js.map +7 -1
  78. package/dist/fields-present.js +11 -23
  79. package/dist/fields-present.js.map +7 -1
  80. package/dist/fields-present.test.js +95 -0
  81. package/dist/fields-present.test.js.map +7 -0
  82. package/dist/fix-33X.js +393 -431
  83. package/dist/fix-33X.js.map +7 -1
  84. package/dist/fix-33X.test.js +39 -0
  85. package/dist/fix-33X.test.js.map +7 -0
  86. package/dist/fix-country-codes.js +20 -50
  87. package/dist/fix-country-codes.js.map +7 -1
  88. package/dist/fix-country-codes.test.js +44 -0
  89. package/dist/fix-country-codes.test.js.map +7 -0
  90. package/dist/fix-language-codes.js +23 -53
  91. package/dist/fix-language-codes.js.map +7 -1
  92. package/dist/fix-language-codes.test.js +38 -0
  93. package/dist/fix-language-codes.test.js.map +7 -0
  94. package/dist/fixRelatorTerms.js +82 -209
  95. package/dist/fixRelatorTerms.js.map +7 -1
  96. package/dist/fixRelatorTerms.test.js +44 -0
  97. package/dist/fixRelatorTerms.test.js.map +7 -0
  98. package/dist/fixed-fields.js +21 -30
  99. package/dist/fixed-fields.js.map +7 -1
  100. package/dist/fixed-fields.test.js +87 -0
  101. package/dist/fixed-fields.test.js.map +7 -0
  102. package/dist/identical-fields.js +8 -24
  103. package/dist/identical-fields.js.map +7 -1
  104. package/dist/identical-fields.test.js +119 -0
  105. package/dist/identical-fields.test.js.map +7 -0
  106. package/dist/index.js +119 -413
  107. package/dist/index.js.map +7 -1
  108. package/dist/indicator-fixes.js +57 -95
  109. package/dist/indicator-fixes.js.map +7 -1
  110. package/dist/indicator-fixes.test.js +42 -0
  111. package/dist/indicator-fixes.test.js.map +7 -0
  112. package/dist/isbn-issn.js +66 -126
  113. package/dist/isbn-issn.js.map +7 -1
  114. package/dist/isbn-issn.test.js +398 -0
  115. package/dist/isbn-issn.test.js.map +7 -0
  116. package/dist/item-language.js +32 -65
  117. package/dist/item-language.js.map +7 -1
  118. package/dist/item-language.test.js +322 -0
  119. package/dist/item-language.test.js.map +7 -0
  120. package/dist/melindaCustomMergeFields.js +5182 -11233
  121. package/dist/melindaCustomMergeFields.js.map +7 -1
  122. package/dist/merge-fields/controlSubfields.js +75 -142
  123. package/dist/merge-fields/controlSubfields.js.map +7 -1
  124. package/dist/merge-fields/counterpartField.js +182 -379
  125. package/dist/merge-fields/counterpartField.js.map +7 -1
  126. package/dist/merge-fields/index.js +15 -49
  127. package/dist/merge-fields/index.js.map +7 -1
  128. package/dist/merge-fields/mergableIndicator.js +18 -51
  129. package/dist/merge-fields/mergableIndicator.js.map +7 -1
  130. package/dist/merge-fields/mergableTag.js +78 -30
  131. package/dist/merge-fields/mergableTag.js.map +7 -1
  132. package/dist/merge-fields/mergeConfig.js +66 -171
  133. package/dist/merge-fields/mergeConfig.js.map +7 -1
  134. package/dist/merge-fields/mergeConstraints.js +323 -1214
  135. package/dist/merge-fields/mergeConstraints.js.map +7 -1
  136. package/dist/merge-fields/mergeField.js +47 -111
  137. package/dist/merge-fields/mergeField.js.map +7 -1
  138. package/dist/merge-fields/mergeIndicator.js +64 -118
  139. package/dist/merge-fields/mergeIndicator.js.map +7 -1
  140. package/dist/merge-fields/mergeOrAddPostprocess.js +14 -38
  141. package/dist/merge-fields/mergeOrAddPostprocess.js.map +7 -1
  142. package/dist/merge-fields/mergeOrAddSubfield.js +62 -104
  143. package/dist/merge-fields/mergeOrAddSubfield.js.map +7 -1
  144. package/dist/merge-fields/mergeSubfield.js +47 -95
  145. package/dist/merge-fields/mergeSubfield.js.map +7 -1
  146. package/dist/merge-fields/removeDuplicateSubfields.js +18 -31
  147. package/dist/merge-fields/removeDuplicateSubfields.js.map +7 -1
  148. package/dist/merge-fields/worldKnowledge.js +15 -40
  149. package/dist/merge-fields/worldKnowledge.js.map +7 -1
  150. package/dist/merge-fields.test.js +44 -0
  151. package/dist/merge-fields.test.js.map +7 -0
  152. package/dist/mergeField500Lisapainokset.js +28 -57
  153. package/dist/mergeField500Lisapainokset.js.map +7 -1
  154. package/dist/mergeField500Lisapainokset.test.js +44 -0
  155. package/dist/mergeField500Lisapainokset.test.js.map +7 -0
  156. package/dist/mergeRelatorTermFields.js +33 -69
  157. package/dist/mergeRelatorTermFields.js.map +7 -1
  158. package/dist/mergeRelatorTermFields.test.js +44 -0
  159. package/dist/mergeRelatorTermFields.test.js.map +7 -0
  160. package/dist/modernize-502.js +23 -55
  161. package/dist/modernize-502.js.map +7 -1
  162. package/dist/modernize-502.test.js +38 -0
  163. package/dist/modernize-502.test.js.map +7 -0
  164. package/dist/multiple-subfield-0.js +23 -48
  165. package/dist/multiple-subfield-0.js.map +7 -1
  166. package/dist/multiple-subfield-0.test.js +44 -0
  167. package/dist/multiple-subfield-0.test.js.map +7 -0
  168. package/dist/non-breaking-space.js +11 -32
  169. package/dist/non-breaking-space.js.map +7 -1
  170. package/dist/non-breaking-space.test.js +38 -0
  171. package/dist/non-breaking-space.test.js.map +7 -0
  172. package/dist/normalize-dashes.js +18 -37
  173. package/dist/normalize-dashes.js.map +7 -1
  174. package/dist/normalize-dashes.test.js +44 -0
  175. package/dist/normalize-dashes.test.js.map +7 -0
  176. package/dist/normalize-identifiers.js +54 -140
  177. package/dist/normalize-identifiers.js.map +7 -1
  178. package/dist/normalize-identifiers.test.js +44 -0
  179. package/dist/normalize-identifiers.test.js.map +7 -0
  180. package/dist/normalize-qualifying-information.js +23 -48
  181. package/dist/normalize-qualifying-information.js.map +7 -1
  182. package/dist/normalize-qualifying-information.test.js +44 -0
  183. package/dist/normalize-qualifying-information.test.js.map +7 -0
  184. package/dist/normalize-utf8-diacritics.js +19 -105
  185. package/dist/normalize-utf8-diacritics.js.map +7 -1
  186. package/dist/normalize-utf8-diacritics.test.js +44 -0
  187. package/dist/normalize-utf8-diacritics.test.js.map +7 -0
  188. package/dist/normalizeFieldForComparison.js +67 -158
  189. package/dist/normalizeFieldForComparison.js.map +7 -1
  190. package/dist/normalizeSubfieldValueForComparison.js +37 -77
  191. package/dist/normalizeSubfieldValueForComparison.js.map +7 -1
  192. package/dist/prepublicationUtils.js +58 -111
  193. package/dist/prepublicationUtils.js.map +7 -1
  194. package/dist/punctuation/index.js +56 -72
  195. package/dist/punctuation/index.js.map +7 -1
  196. package/dist/punctuation/rules/aut.js +372 -331
  197. package/dist/punctuation/rules/aut.js.map +7 -1
  198. package/dist/punctuation/rules/bib.js +420 -373
  199. package/dist/punctuation/rules/bib.js.map +7 -1
  200. package/dist/punctuation/rules/index.js +7 -21
  201. package/dist/punctuation/rules/index.js.map +7 -1
  202. package/dist/punctuation.test.js +44 -0
  203. package/dist/punctuation.test.js.map +7 -0
  204. package/dist/punctuation2.js +251 -800
  205. package/dist/punctuation2.js.map +7 -1
  206. package/dist/punctuation2.test.js +44 -0
  207. package/dist/punctuation2.test.js.map +7 -0
  208. package/dist/reindexSubfield6OccurenceNumbers.js +61 -96
  209. package/dist/reindexSubfield6OccurenceNumbers.js.map +7 -1
  210. package/dist/reindexSubfield6OccurenceNumbers.test.js +44 -0
  211. package/dist/reindexSubfield6OccurenceNumbers.test.js.map +7 -0
  212. package/dist/removeDuplicateDataFields.js +102 -202
  213. package/dist/removeDuplicateDataFields.js.map +7 -1
  214. package/dist/removeDuplicateDataFields.test.js +44 -0
  215. package/dist/removeDuplicateDataFields.test.js.map +7 -0
  216. package/dist/removeInferiorDataFields.js +103 -227
  217. package/dist/removeInferiorDataFields.js.map +7 -1
  218. package/dist/removeInferiorDataFields.test.js +44 -0
  219. package/dist/removeInferiorDataFields.test.js.map +7 -0
  220. package/dist/resolvable-ext-references-melinda.js +25 -60
  221. package/dist/resolvable-ext-references-melinda.js.map +7 -1
  222. package/dist/resolvable-ext-references-melinda.test.js +160 -0
  223. package/dist/resolvable-ext-references-melinda.test.js.map +7 -0
  224. package/dist/resolveOrphanedSubfield6s.js +33 -64
  225. package/dist/resolveOrphanedSubfield6s.js.map +7 -1
  226. package/dist/resolveOrphanedSubfield6s.test.js +44 -0
  227. package/dist/resolveOrphanedSubfield6s.test.js.map +7 -0
  228. package/dist/sanitize-vocabulary-source-codes.js +27 -55
  229. package/dist/sanitize-vocabulary-source-codes.js.map +7 -1
  230. package/dist/sanitize-vocabulary-source-codes.test.js +45 -0
  231. package/dist/sanitize-vocabulary-source-codes.test.js.map +7 -0
  232. package/dist/sort-tags.js +13 -25
  233. package/dist/sort-tags.js.map +7 -1
  234. package/dist/sort-tags.test.js +261 -0
  235. package/dist/sort-tags.test.js.map +7 -0
  236. package/dist/sortFields.js +152 -222
  237. package/dist/sortFields.js.map +7 -1
  238. package/dist/sortFields.test.js +44 -0
  239. package/dist/sortFields.test.js.map +7 -0
  240. package/dist/sortRelatorTerms.js +30 -68
  241. package/dist/sortRelatorTerms.js.map +7 -1
  242. package/dist/sortRelatorTerms.test.js +44 -0
  243. package/dist/sortRelatorTerms.test.js.map +7 -0
  244. package/dist/sortSubfields.js +102 -255
  245. package/dist/sortSubfields.js.map +7 -1
  246. package/dist/sortSubfields.test.js +44 -0
  247. package/dist/sortSubfields.test.js.map +7 -0
  248. package/dist/stripPunctuation.js +13 -36
  249. package/dist/stripPunctuation.js.map +7 -1
  250. package/dist/stripPunctuation.test.js +44 -0
  251. package/dist/stripPunctuation.test.js.map +7 -0
  252. package/dist/subfield-exclusion.js +28 -75
  253. package/dist/subfield-exclusion.js.map +7 -1
  254. package/dist/subfield-exclusion.test.js +471 -0
  255. package/dist/subfield-exclusion.test.js.map +7 -0
  256. package/dist/subfield6Utils.js +107 -269
  257. package/dist/subfield6Utils.js.map +7 -1
  258. package/dist/subfield8Utils.js +26 -50
  259. package/dist/subfield8Utils.js.map +7 -1
  260. package/dist/subfieldValueNormalizations.js +40 -74
  261. package/dist/subfieldValueNormalizations.js.map +7 -1
  262. package/dist/subfieldValueNormalizations.test.js +45 -0
  263. package/dist/subfieldValueNormalizations.test.js.map +7 -0
  264. package/dist/sync-007-and-300.js +22 -53
  265. package/dist/sync-007-and-300.js.map +7 -1
  266. package/dist/sync-007-and-300.test.js +44 -0
  267. package/dist/sync-007-and-300.test.js.map +7 -0
  268. package/dist/translate-terms.js +67 -155
  269. package/dist/translate-terms.js.map +7 -1
  270. package/dist/translate-terms.test.js +44 -0
  271. package/dist/translate-terms.test.js.map +7 -0
  272. package/dist/typeOfDate-008.js +10 -25
  273. package/dist/typeOfDate-008.js.map +7 -1
  274. package/dist/typeOfDate-008.test.js +40 -0
  275. package/dist/typeOfDate-008.test.js.map +7 -0
  276. package/dist/unicode-decomposition.js +94 -107
  277. package/dist/unicode-decomposition.js.map +7 -1
  278. package/dist/unicode-decomposition.test.js +94 -0
  279. package/dist/unicode-decomposition.test.js.map +7 -0
  280. package/dist/update-field-540.js +30 -75
  281. package/dist/update-field-540.js.map +7 -1
  282. package/dist/update-field-540.test.js +44 -0
  283. package/dist/update-field-540.test.js.map +7 -0
  284. package/dist/urn.js +55 -128
  285. package/dist/urn.js.map +7 -1
  286. package/dist/urn.test.js +44 -0
  287. package/dist/urn.test.js.map +7 -0
  288. package/dist/utils.js +72 -126
  289. package/dist/utils.js.map +7 -1
  290. package/eslint.config.mjs +1 -2
  291. package/package.json +21 -93
  292. package/src/access-rights.js +1 -1
  293. package/src/{access-rights.spec.js → access-rights.test.js} +9 -10
  294. package/src/addMissingField041.js +1 -1
  295. package/src/{addMissingField336.spec.js → addMissingField041.test.js} +13 -14
  296. package/src/addMissingField336.js +3 -3
  297. package/src/{addMissingField041.spec.js → addMissingField336.test.js} +13 -14
  298. package/src/addMissingField337.js +2 -2
  299. package/src/{addMissingField337.spec.js → addMissingField337.test.js} +13 -14
  300. package/src/addMissingField338.js +2 -2
  301. package/src/{addMissingField338.spec.js → addMissingField338.test.js} +13 -14
  302. package/src/cyrillux-usemarcon-replacement.js +18 -18
  303. package/src/cyrillux-usemarcon-replacement.test.js +55 -0
  304. package/src/cyrillux.js +19 -12
  305. package/src/{cyrillux.spec.js → cyrillux.test.js} +13 -14
  306. package/src/disambiguateSeriesStatements.js +2 -2
  307. package/src/{disambiguateSeriesStatements.spec.js → disambiguateSeriesStatements.test.js} +12 -13
  308. package/src/double-commas.js +1 -1
  309. package/src/{double-commas.spec.js → double-commas.test.js} +9 -11
  310. package/src/duplicates-ind1.js +1 -1
  311. package/src/{duplicates-ind1.spec.js → duplicates-ind1.test.js} +12 -13
  312. package/src/{empty-fields.spec.js → empty-fields.test.js} +11 -13
  313. package/src/ending-punctuation.js +1 -1
  314. package/src/{ending-punctuation.spec.js → ending-punctuation.test.js} +172 -173
  315. package/src/{ending-whitespace.spec.js → ending-whitespace.test.js} +12 -13
  316. package/src/field-008-18-34-character-groups.js +2 -2
  317. package/src/{field-008-18-34-character-groups.spec.js → field-008-18-34-character-groups.test.js} +13 -13
  318. package/src/field-505-separators.js +3 -3
  319. package/src/{field-505-separators.spec.js → field-505-separators.test.js} +16 -14
  320. package/src/field-521-fix.js +2 -2
  321. package/src/{field-521-fix.spec.js → field-521-fix.test.js} +12 -13
  322. package/src/field-exclusion.js +1 -1
  323. package/src/{field-exclusion.spec.js → field-exclusion.test.js} +60 -57
  324. package/src/{field-structure.spec.js → field-structure.test.js} +29 -29
  325. package/src/{fields-present.spec.js → fields-present.test.js} +12 -15
  326. package/src/fix-33X.js +4 -4
  327. package/src/{fix-33X.spec.js → fix-33X.test.js} +13 -14
  328. package/src/fix-country-codes.js +1 -1
  329. package/src/{fix-country-codes.spec.js → fix-country-codes.test.js} +12 -13
  330. package/src/fix-language-codes.js +5 -5
  331. package/src/{fix-language-codes.spec.js → fix-language-codes.test.js} +12 -13
  332. package/src/fixRelatorTerms.js +5 -5
  333. package/src/{fixRelatorTerms.spec.js → fixRelatorTerms.test.js} +13 -13
  334. package/src/{fixed-fields.spec.js → fixed-fields.test.js} +11 -14
  335. package/src/identical-fields.js +1 -1
  336. package/src/{identical-fields.spec.js → identical-fields.test.js} +9 -11
  337. package/src/indicator-fixes.js +3 -3
  338. package/src/{indicator-fixes.spec.js → indicator-fixes.test.js} +9 -12
  339. package/src/isbn-issn.js +1 -1
  340. package/src/{isbn-issn.spec.js → isbn-issn.test.js} +20 -22
  341. package/src/{item-language.spec.js → item-language.test.js} +21 -22
  342. package/src/merge-fields/controlSubfields.js +1 -1
  343. package/src/merge-fields/counterpartField.js +8 -9
  344. package/src/merge-fields/index.js +1 -1
  345. package/src/merge-fields/mergableIndicator.js +1 -1
  346. package/src/merge-fields/mergeField.js +6 -6
  347. package/src/merge-fields/mergeIndicator.js +1 -1
  348. package/src/merge-fields/mergeOrAddPostprocess.js +4 -4
  349. package/src/merge-fields/mergeOrAddSubfield.js +2 -2
  350. package/src/merge-fields/mergeSubfield.js +4 -4
  351. package/src/merge-fields/removeDuplicateSubfields.js +2 -2
  352. package/src/{merge-fields.spec.js → merge-fields.test.js} +12 -13
  353. package/src/{mergeField500Lisapainokset.spec.js → mergeField500Lisapainokset.test.js} +12 -13
  354. package/src/mergeRelatorTermFields.js +5 -7
  355. package/src/{mergeRelatorTermFields.spec.js → mergeRelatorTermFields.test.js} +12 -13
  356. package/src/modernize-502.js +1 -1
  357. package/src/{modernize-502.spec.js → modernize-502.test.js} +12 -13
  358. package/src/multiple-subfield-0.js +3 -3
  359. package/src/{multiple-subfield-0.spec.js → multiple-subfield-0.test.js} +13 -13
  360. package/src/{non-breaking-space.spec.js → non-breaking-space.test.js} +12 -13
  361. package/src/normalize-dashes.js +2 -2
  362. package/src/{normalize-dashes.spec.js → normalize-dashes.test.js} +12 -13
  363. package/src/normalize-identifiers.js +1 -1
  364. package/src/{normalize-identifiers.spec.js → normalize-identifiers.test.js} +12 -13
  365. package/src/normalize-qualifying-information.js +2 -2
  366. package/src/{normalize-qualifying-information.spec.js → normalize-qualifying-information.test.js} +12 -13
  367. package/src/normalize-utf8-diacritics.js +2 -2
  368. package/src/{normalize-utf8-diacritics.spec.js → normalize-utf8-diacritics.test.js} +13 -13
  369. package/src/normalizeFieldForComparison.js +6 -6
  370. package/src/normalizeSubfieldValueForComparison.js +1 -1
  371. package/src/prepublicationUtils.js +4 -4
  372. package/src/punctuation/index.js +1 -1
  373. package/src/punctuation/rules/index.js +2 -2
  374. package/src/{punctuation.spec.js → punctuation.test.js} +12 -13
  375. package/src/punctuation2.js +4 -4
  376. package/src/{punctuation2.spec.js → punctuation2.test.js} +12 -13
  377. package/src/reindexSubfield6OccurenceNumbers.js +5 -7
  378. package/src/{reindexSubfield6OccurenceNumbers.spec.js → reindexSubfield6OccurenceNumbers.test.js} +12 -13
  379. package/src/removeDuplicateDataFields.js +11 -19
  380. package/src/{removeDuplicateDataFields.spec.js → removeDuplicateDataFields.test.js} +12 -13
  381. package/src/removeInferiorDataFields.js +11 -11
  382. package/src/{removeInferiorDataFields.spec.js → removeInferiorDataFields.test.js} +13 -13
  383. package/src/resolvable-ext-references-melinda.js +1 -1
  384. package/src/{resolvable-ext-references-melinda.spec.js → resolvable-ext-references-melinda.test.js} +42 -27
  385. package/src/resolveOrphanedSubfield6s.js +5 -5
  386. package/src/{resolveOrphanedSubfield6s.spec.js → resolveOrphanedSubfield6s.test.js} +13 -13
  387. package/src/sanitize-vocabulary-source-codes.js +4 -4
  388. package/src/{sanitize-vocabulary-source-codes.spec.js → sanitize-vocabulary-source-codes.test.js} +16 -14
  389. package/src/{sort-tags.spec.js → sort-tags.test.js} +9 -11
  390. package/src/sortFields.js +4 -4
  391. package/src/{sortFields.spec.js → sortFields.test.js} +12 -13
  392. package/src/sortRelatorTerms.js +3 -3
  393. package/src/{sortRelatorTerms.spec.js → sortRelatorTerms.test.js} +13 -13
  394. package/src/sortSubfields.js +1 -1
  395. package/src/{sortSubfields.spec.js → sortSubfields.test.js} +13 -13
  396. package/src/stripPunctuation.js +3 -3
  397. package/src/{stripPunctuation.spec.js → stripPunctuation.test.js} +13 -13
  398. package/src/subfield-exclusion.js +1 -1
  399. package/src/{subfield-exclusion.spec.js → subfield-exclusion.test.js} +45 -36
  400. package/src/subfield6Utils.js +6 -10
  401. package/src/subfield8Utils.js +4 -4
  402. package/src/subfieldValueNormalizations.js +3 -3
  403. package/src/{subfieldValueNormalizations.spec.js → subfieldValueNormalizations.test.js} +18 -14
  404. package/src/sync-007-and-300.js +2 -2
  405. package/src/{sync-007-and-300.spec.js → sync-007-and-300.test.js} +13 -13
  406. package/src/translate-terms.js +3 -3
  407. package/src/{translate-terms.spec.js → translate-terms.test.js} +13 -13
  408. package/src/{typeOfDate-008.spec.js → typeOfDate-008.test.js} +12 -13
  409. package/src/{unicode-decomposition.spec.js → unicode-decomposition.test.js} +10 -16
  410. package/src/update-field-540.js +2 -2
  411. package/src/{update-field-540.spec.js → update-field-540.test.js} +13 -10
  412. package/src/urn.js +2 -2
  413. package/src/{urn.spec.js → urn.test.js} +12 -13
  414. package/src/utils.js +3 -3
  415. package/test-fixtures/field-505-separators/03/expectedResult.json +3 -1
  416. package/test-fixtures/field-505-separators/03/record.json +3 -0
  417. package/test-fixtures/normalize-subfield-value/01/metadata.json +4 -1
  418. package/test-fixtures/normalize-subfield-value/01/record.json +3 -0
  419. package/test-fixtures/normalize-subfield-value/02/expectedResult.json +3 -1
  420. package/test-fixtures/normalize-subfield-value/02/metadata.json +2 -1
  421. package/test-fixtures/normalize-subfield-value/02/record.json +3 -0
  422. package/test-fixtures/sanitize-vocabulary-source-codes/f03/expectedResult.json +3 -1
  423. package/test-fixtures/sanitize-vocabulary-source-codes/f04/expectedResult.json +3 -1
  424. package/test-fixtures/sanitize-vocabulary-source-codes/v04/metadata.json +1 -4
  425. package/test-fixtures/sanitize-vocabulary-source-codes/v04/record.json +1 -1
  426. package/dist/access-rights.spec.js +0 -195
  427. package/dist/access-rights.spec.js.map +0 -1
  428. package/dist/addMissingField041.spec.js +0 -45
  429. package/dist/addMissingField041.spec.js.map +0 -1
  430. package/dist/addMissingField336.spec.js +0 -45
  431. package/dist/addMissingField336.spec.js.map +0 -1
  432. package/dist/addMissingField337.spec.js +0 -43
  433. package/dist/addMissingField337.spec.js.map +0 -1
  434. package/dist/addMissingField338.spec.js +0 -45
  435. package/dist/addMissingField338.spec.js.map +0 -1
  436. package/dist/cyrillux-usemarcon-replacement.spec.js +0 -45
  437. package/dist/cyrillux-usemarcon-replacement.spec.js.map +0 -1
  438. package/dist/cyrillux.spec.js +0 -46
  439. package/dist/cyrillux.spec.js.map +0 -1
  440. package/dist/disambiguateSeriesStatements.spec.js +0 -51
  441. package/dist/disambiguateSeriesStatements.spec.js.map +0 -1
  442. package/dist/double-commas.spec.js +0 -73
  443. package/dist/double-commas.spec.js.map +0 -1
  444. package/dist/duplicates-ind1.spec.js +0 -45
  445. package/dist/duplicates-ind1.spec.js.map +0 -1
  446. package/dist/empty-fields.spec.js +0 -118
  447. package/dist/empty-fields.spec.js.map +0 -1
  448. package/dist/ending-punctuation.spec.js +0 -2654
  449. package/dist/ending-punctuation.spec.js.map +0 -1
  450. package/dist/ending-whitespace.spec.js +0 -42
  451. package/dist/ending-whitespace.spec.js.map +0 -1
  452. package/dist/field-008-18-34-character-groups.spec.js +0 -51
  453. package/dist/field-008-18-34-character-groups.spec.js.map +0 -1
  454. package/dist/field-505-separators.spec.js +0 -51
  455. package/dist/field-505-separators.spec.js.map +0 -1
  456. package/dist/field-521-fix.spec.js +0 -51
  457. package/dist/field-521-fix.spec.js.map +0 -1
  458. package/dist/field-exclusion.spec.js +0 -1054
  459. package/dist/field-exclusion.spec.js.map +0 -1
  460. package/dist/field-structure.spec.js +0 -535
  461. package/dist/field-structure.spec.js.map +0 -1
  462. package/dist/fields-present.spec.js +0 -121
  463. package/dist/fields-present.spec.js.map +0 -1
  464. package/dist/fix-33X.spec.js +0 -45
  465. package/dist/fix-33X.spec.js.map +0 -1
  466. package/dist/fix-country-codes.spec.js +0 -51
  467. package/dist/fix-country-codes.spec.js.map +0 -1
  468. package/dist/fix-language-codes.spec.js +0 -44
  469. package/dist/fix-language-codes.spec.js.map +0 -1
  470. package/dist/fixRelatorTerms.spec.js +0 -51
  471. package/dist/fixRelatorTerms.spec.js.map +0 -1
  472. package/dist/fixed-fields.spec.js +0 -140
  473. package/dist/fixed-fields.spec.js.map +0 -1
  474. package/dist/identical-fields.spec.js +0 -99
  475. package/dist/identical-fields.spec.js.map +0 -1
  476. package/dist/indicator-fixes.spec.js +0 -51
  477. package/dist/indicator-fixes.spec.js.map +0 -1
  478. package/dist/isbn-issn.spec.js +0 -595
  479. package/dist/isbn-issn.spec.js.map +0 -1
  480. package/dist/item-language.spec.js +0 -306
  481. package/dist/item-language.spec.js.map +0 -1
  482. package/dist/melindaCustomMergeFields.json +0 -5120
  483. package/dist/merge-fields.spec.js +0 -51
  484. package/dist/merge-fields.spec.js.map +0 -1
  485. package/dist/mergeField500Lisapainokset.spec.js +0 -51
  486. package/dist/mergeField500Lisapainokset.spec.js.map +0 -1
  487. package/dist/mergeRelatorTermFields.spec.js +0 -51
  488. package/dist/mergeRelatorTermFields.spec.js.map +0 -1
  489. package/dist/modernize-502.spec.js +0 -49
  490. package/dist/modernize-502.spec.js.map +0 -1
  491. package/dist/multiple-subfield-0.spec.js +0 -51
  492. package/dist/multiple-subfield-0.spec.js.map +0 -1
  493. package/dist/non-breaking-space.spec.js +0 -42
  494. package/dist/non-breaking-space.spec.js.map +0 -1
  495. package/dist/normalize-dashes.spec.js +0 -51
  496. package/dist/normalize-dashes.spec.js.map +0 -1
  497. package/dist/normalize-identifiers.spec.js +0 -51
  498. package/dist/normalize-identifiers.spec.js.map +0 -1
  499. package/dist/normalize-qualifying-information.spec.js +0 -51
  500. package/dist/normalize-qualifying-information.spec.js.map +0 -1
  501. package/dist/normalize-utf8-diacritics.spec.js +0 -51
  502. package/dist/normalize-utf8-diacritics.spec.js.map +0 -1
  503. package/dist/punctuation.spec.js +0 -51
  504. package/dist/punctuation.spec.js.map +0 -1
  505. package/dist/punctuation2.spec.js +0 -51
  506. package/dist/punctuation2.spec.js.map +0 -1
  507. package/dist/reindexSubfield6OccurenceNumbers.spec.js +0 -51
  508. package/dist/reindexSubfield6OccurenceNumbers.spec.js.map +0 -1
  509. package/dist/removeDuplicateDataFields.spec.js +0 -51
  510. package/dist/removeDuplicateDataFields.spec.js.map +0 -1
  511. package/dist/removeInferiorDataFields.spec.js +0 -51
  512. package/dist/removeInferiorDataFields.spec.js.map +0 -1
  513. package/dist/resolvable-ext-references-melinda.spec.js +0 -166
  514. package/dist/resolvable-ext-references-melinda.spec.js.map +0 -1
  515. package/dist/resolveOrphanedSubfield6s.spec.js +0 -51
  516. package/dist/resolveOrphanedSubfield6s.spec.js.map +0 -1
  517. package/dist/sanitize-vocabulary-source-codes.spec.js +0 -51
  518. package/dist/sanitize-vocabulary-source-codes.spec.js.map +0 -1
  519. package/dist/sort-tags.spec.js +0 -207
  520. package/dist/sort-tags.spec.js.map +0 -1
  521. package/dist/sortFields.spec.js +0 -51
  522. package/dist/sortFields.spec.js.map +0 -1
  523. package/dist/sortRelatorTerms.spec.js +0 -51
  524. package/dist/sortRelatorTerms.spec.js.map +0 -1
  525. package/dist/sortSubfields.spec.js +0 -52
  526. package/dist/sortSubfields.spec.js.map +0 -1
  527. package/dist/stripPunctuation.spec.js +0 -51
  528. package/dist/stripPunctuation.spec.js.map +0 -1
  529. package/dist/subfield-exclusion.spec.js +0 -523
  530. package/dist/subfield-exclusion.spec.js.map +0 -1
  531. package/dist/subfieldValueNormalizations.spec.js +0 -51
  532. package/dist/subfieldValueNormalizations.spec.js.map +0 -1
  533. package/dist/sync-007-and-300.spec.js +0 -51
  534. package/dist/sync-007-and-300.spec.js.map +0 -1
  535. package/dist/translate-terms.spec.js +0 -51
  536. package/dist/translate-terms.spec.js.map +0 -1
  537. package/dist/typeOfDate-008.spec.js +0 -47
  538. package/dist/typeOfDate-008.spec.js.map +0 -1
  539. package/dist/unicode-decomposition.spec.js +0 -91
  540. package/dist/unicode-decomposition.spec.js.map +0 -1
  541. package/dist/update-field-540.spec.js +0 -51
  542. package/dist/update-field-540.spec.js.map +0 -1
  543. package/dist/urn.spec.js +0 -52
  544. package/dist/urn.spec.js.map +0 -1
  545. package/src/cyrillux-usemarcon-replacement.spec.js +0 -47
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@natlibfi/marc-record-validators-melinda",
3
3
  "description": "MARC record validators used in Melinda",
4
+ "type": "module",
4
5
  "author": {
5
6
  "name": "The National Library of Finland"
6
7
  },
@@ -14,128 +15,55 @@
14
15
  "url": "git@github.com:natlibfi/marc-record-validators-melinda.git"
15
16
  },
16
17
  "license": "MIT",
17
- "version": "11.6.7",
18
+ "version": "12.0.0-alpha.1",
18
19
  "main": "./dist/index.js",
19
20
  "publishConfig": {
20
21
  "access": "public"
21
22
  },
22
23
  "engines": {
23
- "node": ">=20"
24
+ "node": ">=22"
24
25
  },
25
26
  "scripts": {
26
27
  "prepare": "npm run build",
27
- "build": "babel ./src --source-maps --copy-files --delete-dir-on-start --out-dir=dist",
28
+ "build": "esbuild \"src/**/*.js\" --sourcemap --platform=node --outdir=dist",
28
29
  "lint": "eslint ./src",
29
30
  "lint:dev": "eslint --fix ./src",
30
31
  "test": "npm run lint && npm run test:base",
31
- "test:base": "cross-env NODE_ENV=test nyc mocha",
32
- "test:dev": "npm run lint:dev && cross-env NODE_ENV=test nyc mocha",
33
- "dev": "nodemon",
34
- "dev:debug": "cross-env LOG_LEVEL=debug DEBUG=@natlibfi/* NODE_ENV=test nodemon",
35
- "coverage": "npm run cover:unit && npm run cover:report",
36
- "cover:unit": "nyc --silent npm run test:base",
37
- "cover:report": "nyc report"
32
+ "test:base": "node --test --test-force-exit --experimental-test-coverage --test-reporter=spec './src/*.test.js' './src/**/*.test.js'",
33
+ "dev:test": "cross-env DEBUG=@natlibfi/* NODE_ENV=test node --watch --test --experimental-test-coverage --test-reporter=spec './src/*.test.js' './src/**/*.test.js'",
34
+ "dev:debug": "cross-env LOG_LEVEL=debug DEBUG=@natlibfi/* NODE_ENV=test"
38
35
  },
39
36
  "comment-sfs4900": "Package sfs-4900 npm version is 1.1.0, github 1.1.3.",
40
37
  "dependencies": {
41
38
  "@natlibfi/issn-verify": "^1.0.6",
42
- "@natlibfi/marc-record": "^9.1.6",
43
- "@natlibfi/marc-record-serializers": "^10.1.6",
39
+ "@natlibfi/marc-record": "^10.0.0-alpha.1",
40
+ "@natlibfi/marc-record-serializers": "^11.0.0-alpha.2",
44
41
  "@natlibfi/marc-record-validate": "^8.0.14",
45
- "@natlibfi/melinda-commons": "^13.0.21",
46
- "@natlibfi/sfs-4900": "github:NatLibFi/sfs-4900",
47
- "@natlibfi/sru-client": "^6.0.18",
42
+ "@natlibfi/melinda-commons": "^14.0.0-alpha.3",
43
+ "@natlibfi/sfs-4900": "^2.0.0-alpha.3",
44
+ "@natlibfi/iso9-1995": "^1.0.0-alpha.2",
45
+ "@natlibfi/sru-client": "^7.0.0-alpha.1",
48
46
  "cld3-asm": "^4.0.0",
49
47
  "clone": "^2.1.2",
50
48
  "debug": "^4.4.0",
49
+ "esbuild": "^0.25.9",
51
50
  "isbn3": "^1.2.13",
52
- "iso9_1995": "^0.0.2",
53
51
  "langs": "^2.0.0",
54
- "node-fetch": "^2.7.0",
55
52
  "xml2js": "^0.6.2",
56
53
  "xregexp": "^5.1.2"
57
54
  },
58
55
  "peerDependencies": {
59
- "@natlibfi/marc-record-validate": "^8.0.14"
56
+ "@natlibfi/marc-record-validate": "^9.0.0-alpha.1"
60
57
  },
61
58
  "devDependencies": {
62
- "@babel/cli": "^7.28.0",
63
- "@babel/core": "^7.28.0",
64
- "@babel/preset-env": "^7.28.0",
65
- "@babel/register": "^7.27.1",
66
- "@babel/runtime": "^7.28.2",
67
- "@natlibfi/fixugen": "^2.0.15",
68
- "@natlibfi/fixura": "^3.0.14",
69
- "babel-plugin-istanbul": "^7.0.0",
70
- "babel-plugin-rewire": "^1.2.0",
71
- "chai": "^4.5.0",
72
- "chai-as-promised": "^7.1.2",
73
- "cross-env": "^7.0.3",
74
- "eslint": "^9.33.0",
75
- "fetch-mock": "^11.1.5",
76
- "mocha": "^11.7.1",
77
- "nyc": "^17.1.0"
59
+ "@natlibfi/fixugen": "^3.0.0-alpha.5",
60
+ "@natlibfi/fixura": "^4.0.0-alpha.12",
61
+ "cross-env": "^10.0.0",
62
+ "eslint": "^9.35.0",
63
+ "fetch-mock": "^12.5.4"
78
64
  },
79
65
  "overrides": {
80
66
  "nanoid": "^3.3.8"
81
67
  },
82
- "nvolkComment": "cld3-asm 4.0.0 uses emscripten-wasm-loader ^3.0.3 which uses problematic, non-secure nanoid version 2.X.X",
83
- "eslintConfig": {
84
- "extends": [
85
- "@natlibfi/melinda-backend"
86
- ]
87
- },
88
- "babel": {
89
- "presets": [
90
- [
91
- "@babel/preset-env",
92
- {
93
- "targets": "maintained node versions"
94
- }
95
- ]
96
- ],
97
- "env": {
98
- "test": {
99
- "plugins": [
100
- "rewire",
101
- "istanbul"
102
- ]
103
- }
104
- }
105
- },
106
- "mocha": {
107
- "spec": [
108
- "src/*.spec.js",
109
- "src/**/*.spec.js"
110
- ],
111
- "require": [
112
- "@babel/register"
113
- ],
114
- "inline-diffs": true,
115
- "maxDiffSize": 25000,
116
- "bail": true,
117
- "exit": true
118
- },
119
- "nodemonConfig": {
120
- "exec": "npm run test:dev",
121
- "watch": [
122
- "src/*",
123
- "test-fixtures/*"
124
- ]
125
- },
126
- "nyc": {
127
- "exclude": [
128
- "src/*.spec.js",
129
- "src/**/*.spec.js"
130
- ],
131
- "reporter": [
132
- "text"
133
- ],
134
- "sourceMap": false,
135
- "instrument": false,
136
- "lines": 80,
137
- "statements": 80,
138
- "functions": 80,
139
- "branches": 80
140
- }
68
+ "nvolkComment": "cld3-asm 4.0.0 uses emscripten-wasm-loader ^3.0.3 which uses problematic, non-secure nanoid version 2.X.X"
141
69
  }
@@ -1,4 +1,4 @@
1
- import {isElectronicMaterial} from './utils';
1
+ import {isElectronicMaterial} from './utils.js';
2
2
 
3
3
  export default function (isViolaRecord = false) {
4
4
  const sf506 = [{code: 'a', value: /aineisto on käytettävissä vapaakappaletyöasemilla/ui}];
@@ -1,6 +1,8 @@
1
- import {expect} from 'chai';
1
+ import assert from 'node:assert';
2
+ import {describe, it} from 'node:test';
2
3
  import {MarcRecord} from '@natlibfi/marc-record';
3
- import validatorFactory from '../src/access-rights';
4
+ import validatorFactory from '../src/access-rights.js';
5
+
4
6
 
5
7
  describe('access-rights', async () => {
6
8
  // Fields
@@ -88,12 +90,9 @@ describe('access-rights', async () => {
88
90
  it('Creates a validator', async () => {
89
91
  const validator = await validatorFactory();
90
92
 
91
- expect(validator)
92
- .to.be.an('object')
93
- .that.has.any.keys('description', 'validate');
94
-
95
- expect(validator.description).to.be.a('string');
96
- expect(validator.validate).to.be.a('function');
93
+ assert.equal(typeof validator, 'object');
94
+ assert.equal(typeof validator.description, 'string');
95
+ assert.equal(typeof validator.validate, 'function');
97
96
  });
98
97
 
99
98
  // Tests
@@ -102,13 +101,13 @@ describe('access-rights', async () => {
102
101
  return {
103
102
  validate: async (valid, ...recfields) => {
104
103
  const result = await validator.validate(new MarcRecord({fields: recfields}));
105
- expect(result).to.eql({valid});
104
+ assert.deepEqual(result, {valid});
106
105
  },
107
106
 
108
107
  fix: async (recfields, resfields) => {
109
108
  const record = new MarcRecord({fields: recfields});
110
109
  await validator.fix(record);
111
- expect(record.fields).to.eql(resfields);
110
+ assert.deepEqual(record.fields, resfields);
112
111
  }
113
112
  };
114
113
  })();
@@ -1,5 +1,5 @@
1
1
  //import createDebugLogger from 'debug';
2
- import {fieldToString, nvdebug} from './utils';
2
+ import {fieldToString, nvdebug} from './utils.js';
3
3
 
4
4
  const description = 'Add missing 041 field based on 008/35-37';
5
5
 
@@ -1,32 +1,31 @@
1
- import {expect} from 'chai';
1
+ import assert from 'node:assert';
2
2
  import {MarcRecord} from '@natlibfi/marc-record';
3
- import validatorFactory from './addMissingField336';
3
+ import validatorFactory from './addMissingField041.js';
4
4
  import {READERS} from '@natlibfi/fixura';
5
5
  import generateTests from '@natlibfi/fixugen';
6
6
 
7
7
  generateTests({
8
8
  callback,
9
- path: [__dirname, '..', 'test-fixtures', 'addMissingField336'],
9
+ path: [import.meta.dirname, '..', 'test-fixtures', 'addMissingField041'],
10
10
  useMetadataFile: true,
11
11
  recurse: false,
12
12
  fixura: {
13
13
  reader: READERS.JSON
14
14
  },
15
- mocha: {
16
- before: () => testValidatorFactory()
15
+ hooks: {
16
+ before: async () => {
17
+ testValidatorFactory();
18
+ }
17
19
  }
18
20
  });
19
21
 
20
22
  async function testValidatorFactory() {
21
23
  const validator = await validatorFactory();
22
24
 
23
- expect(validator)
24
- .to.be.an('object')
25
- .that.has.any.keys('description', 'validate');
26
-
27
- expect(validator.description).to.be.a('string');
28
- expect(validator.validate).to.be.a('function');
29
- expect(validator.fix).to.be.a('function');
25
+ assert.equal(typeof validator, 'object');
26
+ assert.equal(typeof validator.description, 'string');
27
+ assert.equal(typeof validator.validate, 'function');
28
+ assert.equal(typeof validator.fix, 'function');
30
29
  }
31
30
 
32
31
  async function callback({getFixture, fix = false}) {
@@ -37,10 +36,10 @@ async function callback({getFixture, fix = false}) {
37
36
 
38
37
  if (!fix) {
39
38
  const result = await validator.validate(record);
40
- expect(result).to.eql(expectedResult);
39
+ assert.deepEqual(result, expectedResult);
41
40
  return;
42
41
  }
43
42
 
44
43
  await validator.fix(record);
45
- expect(record).to.eql(expectedResult);
44
+ assert.deepEqual(record, expectedResult);
46
45
  }
@@ -1,6 +1,6 @@
1
1
  //import createDebugLogger from 'debug';
2
- import {fieldToString, getCatalogingLanguage, nvdebug} from './utils';
3
- import {getFormOfItem, map336CodeToTerm} from './field33XUtils';
2
+ import {fieldToString, getCatalogingLanguage, nvdebug} from './utils.js';
3
+ import {getFormOfItem, map336CodeToTerm} from './field33XUtils.js';
4
4
 
5
5
  const description = 'Add missing 336 field(s)';
6
6
 
@@ -21,7 +21,7 @@ export default function () {
21
21
  // 336 ## ‡a tietokoneohjelma ‡b cop ‡2 rdacontent
22
22
  const res = {message: [], fix: [], valid: true};
23
23
  if (newFields.length) {
24
- newFields.forEach(f => record.insertField(f)); // eslint-disable-line array-callback-return
24
+ newFields.forEach(f => record.insertField(f));
25
25
  return res;
26
26
  }
27
27
  return res;
@@ -1,32 +1,31 @@
1
- import {expect} from 'chai';
1
+ import assert from 'node:assert';
2
2
  import {MarcRecord} from '@natlibfi/marc-record';
3
- import validatorFactory from './addMissingField041';
3
+ import validatorFactory from './addMissingField336.js';
4
4
  import {READERS} from '@natlibfi/fixura';
5
5
  import generateTests from '@natlibfi/fixugen';
6
6
 
7
7
  generateTests({
8
8
  callback,
9
- path: [__dirname, '..', 'test-fixtures', 'addMissingField041'],
9
+ path: [import.meta.dirname, '..', 'test-fixtures', 'addMissingField336'],
10
10
  useMetadataFile: true,
11
11
  recurse: false,
12
12
  fixura: {
13
13
  reader: READERS.JSON
14
14
  },
15
- mocha: {
16
- before: () => testValidatorFactory()
15
+ hooks: {
16
+ before: async () => {
17
+ testValidatorFactory();
18
+ }
17
19
  }
18
20
  });
19
21
 
20
22
  async function testValidatorFactory() {
21
23
  const validator = await validatorFactory();
22
24
 
23
- expect(validator)
24
- .to.be.an('object')
25
- .that.has.any.keys('description', 'validate');
26
-
27
- expect(validator.description).to.be.a('string');
28
- expect(validator.validate).to.be.a('function');
29
- expect(validator.fix).to.be.a('function');
25
+ assert.equal(typeof validator, 'object');
26
+ assert.equal(typeof validator.description, 'string');
27
+ assert.equal(typeof validator.validate, 'function');
28
+ assert.equal(typeof validator.fix, 'function');
30
29
  }
31
30
 
32
31
  async function callback({getFixture, fix = false}) {
@@ -37,10 +36,10 @@ async function callback({getFixture, fix = false}) {
37
36
 
38
37
  if (!fix) {
39
38
  const result = await validator.validate(record);
40
- expect(result).to.eql(expectedResult);
39
+ assert.deepEqual(result, expectedResult);
41
40
  return;
42
41
  }
43
42
 
44
43
  await validator.fix(record);
45
- expect(record).to.eql(expectedResult);
44
+ assert.deepEqual(record, expectedResult);
46
45
  }
@@ -1,6 +1,6 @@
1
1
  //import createDebugLogger from 'debug';
2
- import {fieldToString, getCatalogingLanguage, nvdebug} from './utils';
3
- import {getFormOfItem, map337CodeToTerm} from './field33XUtils';
2
+ import {fieldToString, getCatalogingLanguage, nvdebug} from './utils.js';
3
+ import {getFormOfItem, map337CodeToTerm} from './field33XUtils.js';
4
4
 
5
5
  const description = 'Add missing 337 field(s)';
6
6
 
@@ -1,32 +1,31 @@
1
- import {expect} from 'chai';
1
+ import assert from 'node:assert';
2
2
  import {MarcRecord} from '@natlibfi/marc-record';
3
- import validatorFactory from './addMissingField337';
3
+ import validatorFactory from '../src/addMissingField337.js';
4
4
  import {READERS} from '@natlibfi/fixura';
5
5
  import generateTests from '@natlibfi/fixugen';
6
6
 
7
7
  generateTests({
8
8
  callback,
9
- path: [__dirname, '..', 'test-fixtures', 'addMissingField337'],
9
+ path: [import.meta.dirname, '..', 'test-fixtures', 'addMissingField337'],
10
10
  useMetadataFile: true,
11
11
  recurse: false,
12
12
  fixura: {
13
13
  reader: READERS.JSON
14
14
  },
15
- mocha: {
16
- before: () => testValidatorFactory()
15
+ hooks: {
16
+ before: async () => {
17
+ testValidatorFactory();
18
+ }
17
19
  }
18
20
  });
19
21
 
20
22
  async function testValidatorFactory() {
21
23
  const validator = await validatorFactory();
22
24
 
23
- expect(validator)
24
- .to.be.an('object')
25
- .that.has.any.keys('description', 'validate');
26
-
27
- expect(validator.description).to.be.a('string');
28
- expect(validator.validate).to.be.a('function');
29
- expect(validator.fix).to.be.a('function');
25
+ assert.equal(typeof validator, 'object');
26
+ assert.equal(typeof validator.description, 'string');
27
+ assert.equal(typeof validator.validate, 'function');
28
+ assert.equal(typeof validator.fix, 'function');
30
29
  }
31
30
 
32
31
  async function callback({getFixture, fix = false}) {
@@ -36,10 +35,10 @@ async function callback({getFixture, fix = false}) {
36
35
 
37
36
  if (!fix) {
38
37
  const result = await validator.validate(record);
39
- expect(result).to.eql(expectedResult);
38
+ assert.deepEqual(result, expectedResult);
40
39
  return;
41
40
  }
42
41
 
43
42
  await validator.fix(record);
44
- expect(record).to.eql(expectedResult);
43
+ assert.deepEqual(record, expectedResult);
45
44
  }
@@ -1,6 +1,6 @@
1
1
  //import createDebugLogger from 'debug';
2
- import {fieldHasSubfield, fieldToString, getCatalogingLanguage, nvdebug} from './utils';
3
- import {getFormOfItem, map338CodeToTerm} from './field33XUtils';
2
+ import {fieldHasSubfield, fieldToString, getCatalogingLanguage, nvdebug} from './utils.js';
3
+ import {getFormOfItem, map338CodeToTerm} from './field33XUtils.js';
4
4
 
5
5
  // Based mostly on USEMARCON-RDA. However, many things have been rethought, modernized etc.
6
6
  const description = 'Add missing 338 field(s)';
@@ -1,32 +1,31 @@
1
- import {expect} from 'chai';
1
+ import assert from 'node:assert';
2
2
  import {MarcRecord} from '@natlibfi/marc-record';
3
- import validatorFactory from './addMissingField338';
3
+ import validatorFactory from '../src/addMissingField338.js';
4
4
  import {READERS} from '@natlibfi/fixura';
5
5
  import generateTests from '@natlibfi/fixugen';
6
6
 
7
7
  generateTests({
8
8
  callback,
9
- path: [__dirname, '..', 'test-fixtures', 'addMissingField338'],
9
+ path: [import.meta.dirname, '..', 'test-fixtures', 'addMissingField338'],
10
10
  useMetadataFile: true,
11
11
  recurse: false,
12
12
  fixura: {
13
13
  reader: READERS.JSON
14
14
  },
15
- mocha: {
16
- before: () => testValidatorFactory()
15
+ hooks: {
16
+ before: async () => {
17
+ testValidatorFactory();
18
+ }
17
19
  }
18
20
  });
19
21
 
20
22
  async function testValidatorFactory() {
21
23
  const validator = await validatorFactory();
22
24
 
23
- expect(validator)
24
- .to.be.an('object')
25
- .that.has.any.keys('description', 'validate');
26
-
27
- expect(validator.description).to.be.a('string');
28
- expect(validator.validate).to.be.a('function');
29
- expect(validator.fix).to.be.a('function');
25
+ assert.equal(typeof validator, 'object');
26
+ assert.equal(typeof validator.description, 'string');
27
+ assert.equal(typeof validator.validate, 'function');
28
+ assert.equal(validator.fix, 'function');
30
29
  }
31
30
 
32
31
  async function callback({getFixture, fix = false}) {
@@ -37,10 +36,10 @@ async function callback({getFixture, fix = false}) {
37
36
 
38
37
  if (!fix) {
39
38
  const result = await validator.validate(record);
40
- expect(result).to.eql(expectedResult);
39
+ assert.deepEqual(result, expectedResult);
41
40
  return;
42
41
  }
43
42
 
44
43
  await validator.fix(record);
45
- expect(record).to.eql(expectedResult);
44
+ assert.deepEqual(record, expectedResult);
46
45
  }
@@ -7,21 +7,21 @@
7
7
 
8
8
  import clone from 'clone';
9
9
  import {MarcRecord} from '@natlibfi/marc-record';
10
- import {default as fix33X} from './fix-33X';
11
- import {default as add041} from './addMissingField041';
12
- import {default as add336} from './addMissingField336';
13
- import {default as add337} from './addMissingField337';
14
- import {default as add338} from './addMissingField338';
15
- import {default as fixCountryCodes} from './fix-country-codes';
16
- import {default as fixLanguageCodes} from './fix-language-codes';
17
- import {default as fixRelatorTerms} from './fixRelatorTerms';
18
- import {default as fixIndicators} from './indicator-fixes';
19
- import {default as fixPunctuation} from './punctuation2';
20
- import {default as fixQualifyingInformation} from './normalize-qualifying-information';
21
- import {sortAdjacentSubfields} from './sortSubfields';
10
+ import {default as fix33X} from './fix-33X.js';
11
+ import {default as add041} from './addMissingField041.js';
12
+ import {default as add336} from './addMissingField336.js';
13
+ import {default as add337} from './addMissingField337.js';
14
+ import {default as add338} from './addMissingField338.js';
15
+ import {default as fixCountryCodes} from './fix-country-codes.js';
16
+ import {default as fixLanguageCodes} from './fix-language-codes.js';
17
+ import {default as fixRelatorTerms} from './fixRelatorTerms.js';
18
+ import {default as fixIndicators} from './indicator-fixes.js';
19
+ import {default as fixPunctuation} from './punctuation2.js';
20
+ import {default as fixQualifyingInformation} from './normalize-qualifying-information.js';
21
+ import {sortAdjacentSubfields} from './sortSubfields.js';
22
22
 
23
23
  // import createDebugLogger from 'debug';
24
- import {fieldHasSubfield, nvdebug, recordRemoveValuelessSubfields, recordToString, removeSubfield} from './utils';
24
+ import {fieldHasSubfield, nvdebug, recordRemoveValuelessSubfields, recordToString, removeSubfield} from './utils.js';
25
25
 
26
26
  // const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/punctuation2');
27
27
 
@@ -121,7 +121,7 @@ export default function () {
121
121
 
122
122
  // Field 028: use $b$a, not $a$b:
123
123
  const f028 = record.fields.filter(f => f.tag === '028');
124
- f028.forEach(f => sortAdjacentSubfields(f)); // eslint-disable-line array-callback-return
124
+ f028.forEach(f => sortAdjacentSubfields(f));
125
125
 
126
126
  add041().fix(record);
127
127
 
@@ -187,7 +187,7 @@ function fixField040(record) {
187
187
  return;
188
188
  }
189
189
 
190
- f040.forEach(f => fixField040Subfields(f)); // eslint-disable-line array-callback-return
190
+ f040.forEach(f => fixField040Subfields(f));
191
191
 
192
192
  function fixField040Subfields(field) {
193
193
  field.subfields = field.subfields.filter(sf => !['b', 'e'].includes(sf.code));
@@ -203,7 +203,7 @@ export function removeFromOldCatalog(field) {
203
203
  return;
204
204
  }
205
205
  // See https://catalog.loc.gov/vwebv/ui/en_US/htdocs/help/faqs.html for motivation
206
- field.subfields?.forEach(sf => removeFromOldCatalogFromSubfield(sf)); // eslint-disable-line array-callback-return
206
+ field.subfields?.forEach(sf => removeFromOldCatalogFromSubfield(sf));
207
207
 
208
208
  function removeFromOldCatalogFromSubfield(subfield) {
209
209
  if (!subfield.value.includes('[from old catalog]')) {
@@ -303,7 +303,7 @@ function field260To264s(field, record) { // might be generic... if so, move to u
303
303
  return false;
304
304
  }
305
305
 
306
- field.subfields?.forEach(sf => field260To264Normalization(sf)); // eslint-disable-line array-callback-return
306
+ field.subfields?.forEach(sf => field260To264Normalization(sf));
307
307
 
308
308
  function field260To264Normalization(subfield) {
309
309
  subfield.value = field260To264Normalization2(subfield);
@@ -380,7 +380,7 @@ function translateFieldToFinnish(field) {
380
380
  if (!['020', '300'].includes(field.tag)) {
381
381
  return;
382
382
  }
383
- field.subfields?.forEach(sf => translateSubfieldToFinnish(sf)); // eslint-disable-line array-callback-return
383
+ field.subfields?.forEach(sf => translateSubfieldToFinnish(sf));
384
384
 
385
385
  function translateSubfieldToFinnish(subfield) {
386
386
  if (field.tag === '020' && ['a', 'q', 'z'].includes(subfield.code)) {
@@ -0,0 +1,55 @@
1
+ import assert from 'node:assert';
2
+ import {after, before} from 'node:test';
3
+ import {MarcRecord} from '@natlibfi/marc-record';
4
+ import validatorFactory from './cyrillux-usemarcon-replacement.js';
5
+ import {READERS} from '@natlibfi/fixura';
6
+ import generateTests from '@natlibfi/fixugen';
7
+
8
+ before(() => {
9
+ MarcRecord.setValidationOptions({subfields: false, subfieldValues: false});
10
+ });
11
+
12
+ after(() => {
13
+ MarcRecord.setValidationOptions({});
14
+ });
15
+
16
+ generateTests({
17
+ callback,
18
+ path: [import.meta.dirname, '..', 'test-fixtures', 'cyrillux-usemarcon-replacement'],
19
+ useMetadataFile: true,
20
+ recurse: false,
21
+ fixura: {
22
+ reader: READERS.JSON
23
+ },
24
+ hooks: {
25
+ before: async () => {
26
+ testValidatorFactory();
27
+ }
28
+ }
29
+ });
30
+
31
+
32
+ async function testValidatorFactory() {
33
+ const validator = await validatorFactory();
34
+
35
+ assert.equal(typeof validator, 'object');
36
+ assert.equal(typeof validator.description, 'string');
37
+ assert.equal(typeof validator.validate, 'function');
38
+ assert.equal(typeof validator.fix, 'function');
39
+ }
40
+
41
+ async function callback({getFixture, fix = false}) {
42
+ const validator = await validatorFactory();
43
+ const record = new MarcRecord(getFixture('record.json'));
44
+ const expectedResult = getFixture('expectedResult.json');
45
+ // console.log(expectedResult); // eslint-disable-line
46
+
47
+ if (!fix) {
48
+ const result = await validator.validate(record);
49
+ assert.deepEqual(result, expectedResult);
50
+ return;
51
+ }
52
+
53
+ await validator.fix(record);
54
+ assert.deepEqual(record, expectedResult);
55
+ }