@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
@@ -1,10 +1,7 @@
1
- import chai from 'chai';
2
- import chaiAsPromised from 'chai-as-promised';
1
+ import assert from 'node:assert';
3
2
  import {MarcRecord} from '@natlibfi/marc-record';
4
- import validatorFactory from '../src/field-exclusion';
5
-
6
- const {expect} = chai;
7
- chai.use(chaiAsPromised);
3
+ import validatorFactory from '../src/field-exclusion.js';
4
+ import {describe, it} from 'node:test';
8
5
 
9
6
  // Factory validation
10
7
  describe('field-exclusion', () => {
@@ -13,12 +10,9 @@ describe('field-exclusion', () => {
13
10
  const config = [/^500$/u];
14
11
 
15
12
  const validator = await validatorFactory(config);
16
- expect(validator)
17
- .to.be.an('object')
18
- .that.has.any.keys('description', 'validate');
19
-
20
- expect(validator.description).to.be.a('string');
21
- expect(validator.validate).to.be.a('function');
13
+ assert.equal(typeof validator, 'object');
14
+ assert.equal(typeof validator.description, 'string');
15
+ assert.equal(typeof validator.validate, 'function');
22
16
  });
23
17
 
24
18
  it('Creates a validator from complex config', async () => {
@@ -30,12 +24,11 @@ describe('field-exclusion', () => {
30
24
  ];
31
25
 
32
26
  const validator = await validatorFactory(config);
33
- expect(validator)
34
- .to.be.an('object')
35
- .that.has.any.keys('description', 'validate');
36
27
 
37
- expect(validator.description).to.be.a('string');
38
- expect(validator.validate).to.be.a('function');
28
+ assert.equal(typeof validator, 'object');
29
+ assert.equal(typeof validator.description, 'string');
30
+ assert.equal(typeof validator.validate, 'function');
31
+
39
32
  });
40
33
 
41
34
  it('Fails to create a validator from invalid config - tag', async () => {
@@ -49,7 +42,8 @@ describe('field-exclusion', () => {
49
42
  try {
50
43
  await validatorFactory(config);
51
44
  } catch (error) {
52
- expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: tag');
45
+ assert.equal(error instanceof Error, true);
46
+ assert.equal(error.message, 'Configuration not valid - invalid data type for: tag');
53
47
  }
54
48
  });
55
49
 
@@ -62,7 +56,8 @@ describe('field-exclusion', () => {
62
56
  try {
63
57
  await validatorFactory(config);
64
58
  } catch (error) {
65
- expect(error).to.be.an('error').with.property('message', 'Configuration array not provided');
59
+ assert.equal(error instanceof Error, true);
60
+ assert.equal(error.message, 'Configuration array not provided');
66
61
  }
67
62
  });
68
63
 
@@ -77,7 +72,8 @@ describe('field-exclusion', () => {
77
72
  try {
78
73
  await validatorFactory(config);
79
74
  } catch (error) {
80
- expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: code');
75
+ assert.equal(error instanceof Error, true);
76
+ assert.equal(error.message, 'Configuration not valid - invalid data type for: code');
81
77
  }
82
78
  });
83
79
 
@@ -92,7 +88,8 @@ describe('field-exclusion', () => {
92
88
  try {
93
89
  await validatorFactory(config);
94
90
  } catch (error) {
95
- expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: value');
91
+ assert.equal(error instanceof Error, true);
92
+ assert.equal(error.message, 'Configuration not valid - invalid data type for: value');
96
93
  }
97
94
  });
98
95
 
@@ -109,7 +106,8 @@ describe('field-exclusion', () => {
109
106
  try {
110
107
  await validatorFactory(config);
111
108
  } catch (error) {
112
- expect(error).to.be.an('error').with.property('message', 'Configuration not valid - excluded element');
109
+ assert.equal(error instanceof Error, true);
110
+ assert.equal(error.message, 'Configuration not valid - excluded element');
113
111
  }
114
112
  });
115
113
 
@@ -124,7 +122,8 @@ describe('field-exclusion', () => {
124
122
  try {
125
123
  await validatorFactory(config);
126
124
  } catch (error) {
127
- expect(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: tag');
125
+ assert.equal(error instanceof Error, true);
126
+ assert.equal(error.message, 'Configuration not valid - missing mandatory element: tag');
128
127
  }
129
128
  });
130
129
 
@@ -142,7 +141,8 @@ describe('field-exclusion', () => {
142
141
  try {
143
142
  await validatorFactory(config);
144
143
  } catch (error) {
145
- expect(error).to.be.an('error').with.property('message', 'Configuration not valid - subfield: /9/,/^(?!FENNI<KEEP>).*$/ not object');
144
+ assert.equal(error instanceof Error, true);
145
+ assert.equal(error.message, 'Configuration not valid - subfield: /9/,/^(?!FENNI<KEEP>).*$/ not object');
146
146
  }
147
147
  });
148
148
 
@@ -161,7 +161,8 @@ describe('field-exclusion', () => {
161
161
  try {
162
162
  await validatorFactory(config);
163
163
  } catch (error) {
164
- expect(error).to.be.an('error').with.property('message', 'Configuration not valid - subfield: /9/ not object');
164
+ assert.equal(error instanceof Error, true);
165
+ assert.equal(error.message, 'Configuration not valid - subfield: /9/ not object');
165
166
  }
166
167
  });
167
168
 
@@ -179,7 +180,8 @@ describe('field-exclusion', () => {
179
180
  try {
180
181
  await validatorFactory(config);
181
182
  } catch (error) {
182
- expect(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: code');
183
+ assert.equal(error instanceof Error, true);
184
+ assert.equal(error.message, 'Configuration not valid - missing mandatory element: code');
183
185
  }
184
186
  });
185
187
 
@@ -198,7 +200,8 @@ describe('field-exclusion', () => {
198
200
  try {
199
201
  await validatorFactory(config);
200
202
  } catch (error) {
201
- expect(error).to.be.an('error').with.property('message', 'Configuration not valid - unidentified value: unidentified');
203
+ assert.equal(error instanceof Error, true);
204
+ assert.equal(error.message, 'Configuration not valid - unidentified value: unidentified');
202
205
  }
203
206
  });
204
207
  });
@@ -286,31 +289,31 @@ describe('field-exclusion', () => {
286
289
  it('Finds the record valid (spec)', async () => {
287
290
  const validator = await validatorFactory(config);
288
291
  const {valid, message} = await validator.validate(recordValid);
289
- expect({valid, message}).to.eql({valid: true, message: []});
292
+ assert.deepEqual({valid, message}, {valid: true, message: []});
290
293
  });
291
294
 
292
295
  it('Finds the record invalid (spec)', async () => {
293
296
  const validator = await validatorFactory(config);
294
297
  const {valid, message} = await validator.validate(recordInvalid);
295
- expect({valid, message}).to.eql({valid: false, message: ['Field $500 should be excluded']});
298
+ assert.deepEqual({valid, message}, {valid: false, message: ['Field $500 should be excluded']});
296
299
  });
297
300
 
298
301
  it('Finds the record invalid - double', async () => {
299
302
  const validator = await validatorFactory(config);
300
303
  const {valid, message} = await validator.validate(recordInvalidDouble);
301
- expect({valid, message}).to.eql({valid: false, message: ['Field $500 should be excluded', 'Field $500 should be excluded']});
304
+ assert.deepEqual({valid, message}, {valid: false, message: ['Field $500 should be excluded', 'Field $500 should be excluded']});
302
305
  });
303
306
 
304
307
  it('Repairs invalid record', async () => {
305
308
  const validator = await validatorFactory(config);
306
309
  await validator.fix(recordInvalid);
307
- expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);
310
+ assert.equal(recordInvalid.equalsTo(recordInvalidFixed), true);
308
311
  });
309
312
 
310
313
  it('Repairs invalid record - double', async () => {
311
314
  const validator = await validatorFactory(config);
312
315
  await validator.fix(recordInvalidDouble);
313
- expect(recordInvalidDouble.equalsTo(recordInvalidFixed)).to.eql(true);
316
+ assert.equal(recordInvalidDouble.equalsTo(recordInvalidFixed), true);
314
317
  });
315
318
  });
316
319
 
@@ -397,31 +400,31 @@ describe('field-exclusion', () => {
397
400
  it('Finds the record valid (spec)', async () => {
398
401
  const validator = await validatorFactory(config);
399
402
  const {valid, message} = await validator.validate(recordValid);
400
- expect({valid, message}).to.eql({valid: true, message: []});
403
+ assert.deepEqual({valid, message}, {valid: true, message: []});
401
404
  });
402
405
 
403
406
  it('Finds the record invalid (spec)', async () => {
404
407
  const validator = await validatorFactory(config);
405
408
  const {valid, message} = await validator.validate(recordInvalid);
406
- expect({valid, message}).to.eql({valid: false, message: ['Field $648 should be excluded']});
409
+ assert.deepEqual({valid, message}, {valid: false, message: ['Field $648 should be excluded']});
407
410
  });
408
411
 
409
412
  it('Finds the record invalid - double', async () => {
410
413
  const validator = await validatorFactory(config);
411
414
  const {valid, message} = await validator.validate(recordInvalidDouble);
412
- expect({valid, message}).to.eql({valid: false, message: ['Field $648 should be excluded', 'Field $650 should be excluded']});
415
+ assert.deepEqual({valid, message}, {valid: false, message: ['Field $648 should be excluded', 'Field $650 should be excluded']});
413
416
  });
414
417
 
415
418
  it('Repairs invalid record', async () => {
416
419
  const validator = await validatorFactory(config);
417
420
  await validator.fix(recordInvalid);
418
- expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);
421
+ assert.equal(recordInvalid.equalsTo(recordInvalidFixed), true);
419
422
  });
420
423
 
421
424
  it('Repairs invalid record - double', async () => {
422
425
  const validator = await validatorFactory(config);
423
426
  await validator.fix(recordInvalidDouble);
424
- expect(recordInvalidDouble.equalsTo(recordInvalidFixed)).to.eql(true);
427
+ assert.equal(recordInvalidDouble.equalsTo(recordInvalidFixed), true);
425
428
  });
426
429
  });
427
430
 
@@ -504,31 +507,31 @@ describe('field-exclusion', () => {
504
507
  it('Finds the record valid (spec)', async () => {
505
508
  const validator = await validatorFactory(config);
506
509
  const {valid, message} = await validator.validate(recordValid);
507
- expect({valid, message}).to.eql({valid: true, message: []});
510
+ assert.deepEqual({valid, message}, {valid: true, message: []});
508
511
  });
509
512
 
510
513
  it('Finds the record invalid (spec)', async () => {
511
514
  const validator = await validatorFactory(config);
512
515
  const {valid, message} = await validator.validate(recordInvalid);
513
- expect({valid, message}).to.eql({valid: false, message: ['Field $648 should be excluded']});
516
+ assert.deepEqual({valid, message}, {valid: false, message: ['Field $648 should be excluded']});
514
517
  });
515
518
 
516
519
  it('Finds the record invalid - double', async () => {
517
520
  const validator = await validatorFactory(config);
518
521
  const {valid, message} = await validator.validate(recordInvalidDouble);
519
- expect({valid, message}).to.eql({valid: false, message: ['Field $648 should be excluded', 'Field $650 should be excluded']});
522
+ assert.deepEqual({valid, message}, {valid: false, message: ['Field $648 should be excluded', 'Field $650 should be excluded']});
520
523
  });
521
524
 
522
525
  it('Repairs invalid record', async () => {
523
526
  const validator = await validatorFactory(config);
524
527
  await validator.fix(recordInvalid);
525
- expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);
528
+ assert.deepEqual(recordInvalid.equalsTo(recordInvalidFixed), true);
526
529
  });
527
530
 
528
531
  it('Repairs invalid record - double', async () => {
529
532
  const validator = await validatorFactory(config);
530
533
  await validator.fix(recordInvalidDouble);
531
- expect(recordInvalidDouble.equalsTo(recordInvalidFixed)).to.eql(true);
534
+ assert.equal(recordInvalidDouble.equalsTo(recordInvalidFixed), true);
532
535
  });
533
536
  });
534
537
 
@@ -597,19 +600,19 @@ describe('field-exclusion', () => {
597
600
  it('Finds the record valid (spec)', async () => {
598
601
  const validator = await validatorFactory(config);
599
602
  const {valid, message} = await validator.validate(recordValid);
600
- expect({valid, message}).to.eql({valid: true, message: []});
603
+ assert.deepEqual({valid, message}, {valid: true, message: []});
601
604
  });
602
605
 
603
606
  it('Finds the record invalid (spec)', async () => {
604
607
  const validator = await validatorFactory(config);
605
608
  const {valid, message} = await validator.validate(recordInvalid);
606
- expect({valid, message}).to.eql({valid: false, message: ['Field $500 should be excluded']});
609
+ assert.deepEqual({valid, message}, {valid: false, message: ['Field $500 should be excluded']});
607
610
  });
608
611
 
609
612
  it('Repairs invalid record', async () => {
610
613
  const validator = await validatorFactory(config);
611
614
  await validator.fix(recordInvalid);
612
- expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);
615
+ assert.equal(recordInvalid.equalsTo(recordInvalidFixed), true);
613
616
  });
614
617
  });
615
618
 
@@ -714,19 +717,19 @@ describe('field-exclusion', () => {
714
717
  it('Finds the record valid (spec)', async () => {
715
718
  const validator = await validatorFactory(config);
716
719
  const {valid, message} = await validator.validate(recordValid);
717
- expect({valid, message}).to.eql({valid: true, message: []});
720
+ assert.deepEqual({valid, message}, {valid: true, message: []});
718
721
  });
719
722
 
720
723
  it('Finds the record invalid (spec)', async () => {
721
724
  const validator = await validatorFactory(config);
722
725
  const {valid, message} = await validator.validate(recordInvalid);
723
- expect({valid, message}).to.eql({valid: false, message: ['Field $650 should be excluded']});
726
+ assert.deepEqual({valid, message}, {valid: false, message: ['Field $650 should be excluded']});
724
727
  });
725
728
 
726
729
  it('Finds the record invalid (spec)', async () => {
727
730
  const validator = await validatorFactory(config);
728
731
  const {valid, message} = await validator.validate(recordInvalidMulti);
729
- expect({valid, message}).to.eql({valid: false, message: [
732
+ assert.deepEqual({valid, message}, {valid: false, message: [
730
733
  'Field $648 should be excluded',
731
734
  'Field $650 should be excluded',
732
735
  'Field $650 should be excluded',
@@ -738,13 +741,13 @@ describe('field-exclusion', () => {
738
741
  it('Repairs invalid multi record', async () => {
739
742
  const validator = await validatorFactory(config);
740
743
  await validator.fix(recordInvalidMulti);
741
- expect(recordInvalidMulti.equalsTo(recordInvalidFixed)).to.eql(true);
744
+ assert.equal(recordInvalidMulti.equalsTo(recordInvalidFixed), true);
742
745
  });
743
746
 
744
747
  it('Repairs invalid record', async () => {
745
748
  const validator = await validatorFactory(config);
746
749
  await validator.fix(recordInvalid);
747
- expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);
750
+ assert.equal(recordInvalid.equalsTo(recordInvalidFixed), true);
748
751
  });
749
752
  });
750
753
 
@@ -830,37 +833,37 @@ describe('field-exclusion', () => {
830
833
  it('Finds the record valid - Ind1&Ind2', async () => {
831
834
  const validator = await validatorFactory(configInd);
832
835
  const {valid, message} = await validator.validate(recordValid);
833
- expect({valid, message}).to.eql({valid: true, message: []});
836
+ assert.deepEqual({valid, message}, {valid: true, message: []});
834
837
  });
835
838
 
836
839
  it('Finds the record valid - Value', async () => {
837
840
  const validator = await validatorFactory(configValue);
838
841
  const {valid, message} = await validator.validate(recordValid);
839
- expect({valid, message}).to.eql({valid: true, message: []});
842
+ assert.deepEqual({valid, message}, {valid: true, message: []});
840
843
  });
841
844
 
842
845
  it('Finds the record invalid - Ind', async () => {
843
846
  const validator = await validatorFactory(configInd);
844
847
  const {valid, message} = await validator.validate(recordIndInvalid);
845
- expect({valid, message}).to.eql({valid: false, message: ['Field $500 should be excluded']});
848
+ assert.deepEqual({valid, message}, {valid: false, message: ['Field $500 should be excluded']});
846
849
  });
847
850
 
848
851
  it('Finds the record invalid - Value', async () => {
849
852
  const validator = await validatorFactory(configValue);
850
853
  const {valid, message} = await validator.validate(recordValueInvalid);
851
- expect({valid, message}).to.eql({valid: false, message: ['Field $500 should be excluded']});
854
+ assert.deepEqual({valid, message}, {valid: false, message: ['Field $500 should be excluded']});
852
855
  });
853
856
 
854
857
  it('Repairs invalid record - Ind', async () => {
855
858
  const validator = await validatorFactory(configInd);
856
859
  await validator.fix(recordIndInvalid);
857
- expect(recordIndInvalid.equalsTo(recordInvalidFixed)).to.eql(true);
860
+ assert.equal(recordIndInvalid.equalsTo(recordInvalidFixed), true);
858
861
  });
859
862
 
860
863
  it('Repairs invalid record - Value', async () => {
861
864
  const validator = await validatorFactory(configValue);
862
865
  await validator.fix(recordValueInvalid);
863
- expect(recordValueInvalid.equalsTo(recordInvalidFixed)).to.eql(true);
866
+ assert.equal(recordValueInvalid.equalsTo(recordInvalidFixed), true);
864
867
  });
865
868
  });
866
869
 
@@ -888,7 +891,7 @@ describe('field-exclusion', () => {
888
891
  const validator = await validatorFactory(config);
889
892
  const {valid, message} = await validator.validate(record);
890
893
 
891
- expect({valid, message}).to.eql({valid: false, message: ['Field $041 should be excluded']});
894
+ assert.deepEqual({valid, message}, {valid: false, message: ['Field $041 should be excluded']});
892
895
  });
893
896
  });
894
897
  });
@@ -1,10 +1,8 @@
1
- import chai from 'chai';
2
- import chaiAsPromised from 'chai-as-promised';
1
+ import assert from 'node:assert';
2
+ import {describe, it} from 'node:test';
3
3
  import {MarcRecord} from '@natlibfi/marc-record';
4
- import validatorFactory from '../src/field-structure';
4
+ import validatorFactory from '../src/field-structure.js';
5
5
 
6
- const {expect} = chai;
7
- chai.use(chaiAsPromised);
8
6
 
9
7
  // Factory validation
10
8
  describe('field-structure', () => {
@@ -24,12 +22,9 @@ describe('field-structure', () => {
24
22
 
25
23
  const validator = await validatorFactory(config);
26
24
 
27
- expect(validator)
28
- .to.be.an('object')
29
- .that.has.any.keys('description', 'validate');
30
-
31
- expect(validator.description).to.be.a('string');
32
- expect(validator.validate).to.be.a('function');
25
+ assert.equal(typeof validator, 'object');
26
+ assert.equal(typeof validator.description, 'string');
27
+ assert.equal(typeof validator.validate, 'function');
33
28
  });
34
29
 
35
30
  describe('#configuration', () => {
@@ -37,7 +32,8 @@ describe('field-structure', () => {
37
32
  try {
38
33
  validatorFactory();
39
34
  } catch (error) {
40
- expect(error).to.be.an('error').with.property('message', 'Configuration array not provided');
35
+ assert.equal(error instanceof Error, true);
36
+ assert.equal(error.message, 'Configuration array not provided');
41
37
  }
42
38
  });
43
39
 
@@ -52,7 +48,8 @@ describe('field-structure', () => {
52
48
  try {
53
49
  validatorFactory(config);
54
50
  } catch (error) {
55
- expect(error).to.be.an('error').with.property('message', 'Configuration not valid - unidentified value: tags');
51
+ assert.equal(error instanceof Error, true);
52
+ assert.equal(error.message, 'Configuration not valid - unidentified value: tags');
56
53
  }
57
54
  });
58
55
 
@@ -67,7 +64,8 @@ describe('field-structure', () => {
67
64
  try {
68
65
  validatorFactory(config);
69
66
  } catch (error) {
70
- expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: tag');
67
+ assert.equal(error instanceof Error, true);
68
+ assert.equal(error.message, 'Configuration not valid - invalid data type for: tag');
71
69
  }
72
70
  });
73
71
 
@@ -82,7 +80,8 @@ describe('field-structure', () => {
82
80
  try {
83
81
  validatorFactory(config);
84
82
  } catch (error) {
85
- expect(error).to.be.an('error').with.property('message', 'Configuration not valid - excluded element');
83
+ assert.equal(error instanceof Error, true);
84
+ assert.equal(error.message, 'Configuration not valid - excluded element');
86
85
  }
87
86
  });
88
87
 
@@ -101,7 +100,8 @@ describe('field-structure', () => {
101
100
  try {
102
101
  validatorFactory(config);
103
102
  } catch (error) {
104
- expect(error).to.be.an('error').with.property('message', 'Configuration not valid - subfields not object');
103
+ assert.equal(error instanceof Error, true);
104
+ assert.equal(error.message, 'Configuration not valid - subfields not object');
105
105
  }
106
106
  });
107
107
  });
@@ -127,7 +127,7 @@ describe('field-structure', () => {
127
127
  const validator = await validatorFactory(config);
128
128
  const result = await validator.validate(record);
129
129
 
130
- expect(result).to.eql({valid: true});
130
+ assert.deepEqual(result, {valid: true});
131
131
  });
132
132
 
133
133
  // Indicators and subfields validation
@@ -218,14 +218,14 @@ describe('field-structure', () => {
218
218
  const validator = await validatorFactory(config);
219
219
  const result = await validator.validate(recordValid);
220
220
 
221
- expect(result).to.eql({valid: true});
221
+ assert.deepEqual(result, {valid: true});
222
222
  });
223
223
 
224
224
  it('Finds the record invalid: Too many subfields', async () => {
225
225
  const validator = await validatorFactory(config);
226
226
  const result = await validator.validate(recordInvalidMany);
227
227
 
228
- expect(result).to.eql({valid: false});
228
+ assert.deepEqual(result, {valid: false});
229
229
  });
230
230
  });
231
231
 
@@ -447,41 +447,41 @@ describe('field-structure', () => {
447
447
  const validator = await validatorFactory(config);
448
448
  const result = await validator.validate(recordValid);
449
449
 
450
- expect(result).to.eql({valid: true});
450
+ assert.deepEqual(result, {valid: true});
451
451
  });
452
452
 
453
453
  it('Finds the record invalid: Extra field in strict', async () => {
454
454
  const validator = await validatorFactory(config);
455
455
  const result = await validator.validate(recordInvalidExtra);
456
456
 
457
- expect(result).to.eql({valid: false});
457
+ assert.deepEqual(result, {valid: false});
458
458
  });
459
459
 
460
460
  it('Finds the record invalid: Too many occurances', async () => {
461
461
  const validator = await validatorFactory(config);
462
462
  const result = await validator.validate(recordInvalidTooMany);
463
463
 
464
- expect(result).to.eql({valid: false});
464
+ assert.deepEqual(result, {valid: false});
465
465
  });
466
466
 
467
467
  it('Finds the record invalid: Invalid RegExp', async () => {
468
468
  const validator = await validatorFactory(config);
469
469
  const result = await validator.validate(recordInvalidRegExp);
470
470
 
471
- expect(result).to.eql({valid: false});
471
+ assert.deepEqual(result, {valid: false});
472
472
  });
473
473
 
474
474
  it('Finds the record invalid: Missing field', async () => {
475
475
  const validator = await validatorFactory(config);
476
476
  const result = await validator.validate(recordInvalidMissing);
477
477
 
478
- expect(result).to.eql({valid: false});
478
+ assert.deepEqual(result, {valid: false});
479
479
  });
480
480
  it('Finds the record invalid: Missing subfield', async () => {
481
481
  const validator = await validatorFactory(config);
482
482
  const result = await validator.validate(recordInvalidMissingSubfield);
483
483
 
484
- expect(result).to.eql({valid: false});
484
+ assert.deepEqual(result, {valid: false});
485
485
  });
486
486
  });
487
487
 
@@ -569,14 +569,14 @@ describe('field-structure', () => {
569
569
  const validator = await validatorFactory(config);
570
570
  const result = await validator.validate(recordValid);
571
571
 
572
- expect(result).to.eql({valid: true});
572
+ assert.deepEqual(result, {valid: true});
573
573
  });
574
574
 
575
575
  it('Finds the record invalid', async () => {
576
576
  const validator = await validatorFactory(config);
577
577
  const result = await validator.validate(recordInvalid);
578
578
 
579
- expect(result).to.eql({valid: false});
579
+ assert.deepEqual(result, {valid: false});
580
580
  });
581
581
 
582
582
  it('Find the record valid (Dependency on leader)', async () => {
@@ -589,7 +589,7 @@ describe('field-structure', () => {
589
589
  ]
590
590
  }));
591
591
 
592
- expect(result).to.eql({valid: true});
592
+ assert.deepEqual(result, {valid: true});
593
593
  });
594
594
 
595
595
  it('Find the record invalid (Dependency on leader)', async () => {
@@ -602,7 +602,7 @@ describe('field-structure', () => {
602
602
  ]
603
603
  }));
604
604
 
605
- expect(result).to.eql({valid: false});
605
+ assert.deepEqual(result, {valid: false});
606
606
  });
607
607
  });
608
608
  });
@@ -1,28 +1,25 @@
1
- import chai from 'chai';
2
- import chaiAsPromised from 'chai-as-promised';
1
+ import {describe, it} from 'node:test';
2
+ import assert from 'node:assert';
3
3
  import {MarcRecord} from '@natlibfi/marc-record';
4
- import validatorFactory from '../src/fields-present';
4
+ import validatorFactory from '../src/fields-present.js';
5
+
5
6
 
6
- const {expect} = chai;
7
- chai.use(chaiAsPromised);
8
7
 
9
8
  describe('fields-present', () => {
10
9
  it('Creates a validator', async () => {
11
10
  const validator = await validatorFactory([/^500$/u, /^400$/u]);
12
11
 
13
- expect(validator)
14
- .to.be.an('object')
15
- .that.has.any.keys('description', 'validate');
16
-
17
- expect(validator.description).to.be.a('string');
18
- expect(validator.validate).to.be.a('function');
12
+ assert.equal(typeof validator, 'object');
13
+ assert.equal(typeof validator.description, 'string');
14
+ assert.equal(typeof validator.validate, 'function');
19
15
  });
20
16
 
21
17
  it('Throws an error when tagPatterns not provided', () => {
22
18
  try {
23
19
  validatorFactory();
24
20
  } catch (error) {
25
- expect(error).to.be.an('error').with.property('message', 'No tag pattern array provided');
21
+ assert.equal(error instanceof Error, true);
22
+ assert.equal(error.message, 'No tag pattern array provided');
26
23
  }
27
24
  });
28
25
 
@@ -48,7 +45,7 @@ describe('fields-present', () => {
48
45
  });
49
46
  const result = await validator.validate(record);
50
47
 
51
- expect(result).to.eql({valid: true, messages: []});
48
+ assert.deepEqual(result, {valid: true, messages: []});
52
49
  });
53
50
  it('Finds the record valid', async () => {
54
51
  const tagPatterns = [/^(020|022|024)$/u];
@@ -71,7 +68,7 @@ describe('fields-present', () => {
71
68
  });
72
69
  const result = await validator.validate(record);
73
70
 
74
- expect(result).to.eql({valid: true, messages: []});
71
+ assert.deepEqual(result, {valid: true, messages: []});
75
72
  });
76
73
  it('Finds the record invalid', async () => {
77
74
  const tagPatterns = [/^5..$/u, /^FOO$/u];
@@ -100,7 +97,7 @@ describe('fields-present', () => {
100
97
  });
101
98
  const result = await validator.validate(record);
102
99
 
103
- expect(result).to.eql({valid: false, messages: ['The following tag patterns are not present in the record tag field: /^FOO$/u']});
100
+ assert.deepEqual(result, {valid: false, messages: ['The following tag patterns are not present in the record tag field: /^FOO$/u']});
104
101
  });
105
102
  });
106
103
  });
package/src/fix-33X.js CHANGED
@@ -1,7 +1,7 @@
1
1
  //import createDebugLogger from 'debug';
2
2
  import clone from 'clone';
3
- import {fieldToString, getCatalogingLanguage, nvdebug} from './utils';
4
- import {map336CodeToTerm, map337CodeToTerm, map338CodeToTerm} from './field33XUtils';
3
+ import {fieldToString, getCatalogingLanguage, nvdebug} from './utils.js';
4
+ import {map336CodeToTerm, map337CodeToTerm, map338CodeToTerm} from './field33XUtils.js';
5
5
 
6
6
  const description = 'Fix non-RDA 33X field(s)';
7
7
 
@@ -376,7 +376,7 @@ export default function () {
376
376
  nvdebug(`FIX ${description}...`);
377
377
  const catLang = getCatalogingLanguage(record) || 'fin';
378
378
  const fields = getRelevantFields(record);
379
- fields.forEach(f => fixField(f, catLang)); // eslint-disable-line array-callback-return
379
+ fields.forEach(f => fixField(f, catLang));
380
380
  nvdebug(` GOT ${fields.length}...`);
381
381
  // FFS: we actually need newFields array here! Videogame, for example, might be
382
382
  // 336 ## ‡a kaksiulotteinen liikkuva kuva ‡b tdi ‡2 rdacontent
@@ -395,7 +395,7 @@ export default function () {
395
395
  }
396
396
  const originalStrings = fields.map(f => fieldToString(f));
397
397
  const clonedFields = fields.map(f => clone(f));
398
- clonedFields.forEach(f => fixField(f, catLang)); // eslint-disable-line array-callback-return
398
+ clonedFields.forEach(f => fixField(f, catLang));
399
399
  const modifiedStrings = clonedFields.map(f => fieldToString(f));
400
400
 
401
401
  const changes = originalStrings.map((str, i) => `'${str}' => '${modifiedStrings[i]}'`);