@natlibfi/marc-record-validators-melinda 11.0.0 → 11.1.0

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 (309) hide show
  1. package/dist/addMissingField336.js +272 -0
  2. package/dist/addMissingField336.js.map +1 -0
  3. package/dist/addMissingField336.spec.js +45 -0
  4. package/dist/addMissingField336.spec.js.map +1 -0
  5. package/dist/addMissingField337.js +177 -0
  6. package/dist/addMissingField337.js.map +1 -0
  7. package/dist/addMissingField337.spec.js +43 -0
  8. package/dist/addMissingField337.spec.js.map +1 -0
  9. package/dist/addMissingField338.js +424 -0
  10. package/dist/addMissingField338.js.map +1 -0
  11. package/dist/addMissingField338.spec.js +45 -0
  12. package/dist/addMissingField338.spec.js.map +1 -0
  13. package/dist/cyrillux-usemarcon-replacement.js +370 -0
  14. package/dist/cyrillux-usemarcon-replacement.js.map +1 -0
  15. package/dist/cyrillux-usemarcon-replacement.spec.js +45 -0
  16. package/dist/cyrillux-usemarcon-replacement.spec.js.map +1 -0
  17. package/dist/field33XUtils.js +529 -0
  18. package/dist/field33XUtils.js.map +1 -0
  19. package/dist/fix-33X.js +484 -0
  20. package/dist/fix-33X.js.map +1 -0
  21. package/dist/fix-33X.spec.js +45 -0
  22. package/dist/fix-33X.spec.js.map +1 -0
  23. package/dist/fix-language-codes.js +109 -0
  24. package/dist/fix-language-codes.js.map +1 -0
  25. package/dist/fix-language-codes.spec.js +44 -0
  26. package/dist/fix-language-codes.spec.js.map +1 -0
  27. package/dist/fixRelatorTerms.js +1 -1
  28. package/dist/fixRelatorTerms.js.map +1 -1
  29. package/dist/punctuation2.js +4 -3
  30. package/dist/punctuation2.js.map +1 -1
  31. package/dist/resolvable-ext-references-melinda.spec.js +1 -1
  32. package/dist/resolvable-ext-references-melinda.spec.js.map +1 -1
  33. package/dist/sanitize-vocabulary-source-codes.js +7 -10
  34. package/dist/sanitize-vocabulary-source-codes.js.map +1 -1
  35. package/dist/utils.js +13 -8
  36. package/dist/utils.js.map +1 -1
  37. package/package.json +7 -7
  38. package/src/addMissingField336.js +260 -0
  39. package/src/addMissingField336.spec.js +46 -0
  40. package/src/addMissingField337.js +132 -0
  41. package/src/addMissingField337.spec.js +45 -0
  42. package/src/addMissingField338.js +446 -0
  43. package/src/addMissingField338.spec.js +46 -0
  44. package/src/cyrillux-usemarcon-replacement.js +410 -0
  45. package/src/cyrillux-usemarcon-replacement.spec.js +47 -0
  46. package/src/field33XUtils.js +156 -0
  47. package/src/fix-33X.js +473 -0
  48. package/src/fix-33X.spec.js +46 -0
  49. package/src/fix-language-codes.js +121 -0
  50. package/src/fix-language-codes.spec.js +45 -0
  51. package/src/fixRelatorTerms.js +1 -1
  52. package/src/punctuation2.js +3 -3
  53. package/src/sanitize-vocabulary-source-codes.js +9 -11
  54. package/src/utils.js +13 -8
  55. package/test-fixtures/addMissingField336/01/expectedResult.json +6 -0
  56. package/test-fixtures/addMissingField336/01/metadata.json +7 -0
  57. package/test-fixtures/addMissingField336/01/record.json +8 -0
  58. package/test-fixtures/addMissingField336/02/expectedResult.json +4 -0
  59. package/test-fixtures/addMissingField336/02/metadata.json +7 -0
  60. package/test-fixtures/addMissingField336/02/record.json +13 -0
  61. package/test-fixtures/addMissingField336/cod/expectedResult.json +12 -0
  62. package/test-fixtures/addMissingField336/cod/metadata.json +6 -0
  63. package/test-fixtures/addMissingField336/cod/record.json +6 -0
  64. package/test-fixtures/addMissingField336/cop/expectedResult.json +12 -0
  65. package/test-fixtures/addMissingField336/cop/metadata.json +6 -0
  66. package/test-fixtures/addMissingField336/cop/record.json +6 -0
  67. package/test-fixtures/addMissingField336/cop2/expectedResult.json +13 -0
  68. package/test-fixtures/addMissingField336/cop2/metadata.json +6 -0
  69. package/test-fixtures/addMissingField336/cop2/record.json +7 -0
  70. package/test-fixtures/addMissingField336/crf/expectedResult.json +12 -0
  71. package/test-fixtures/addMissingField336/crf/metadata.json +6 -0
  72. package/test-fixtures/addMissingField336/crf/record.json +6 -0
  73. package/test-fixtures/addMissingField336/cri/expectedResult.json +12 -0
  74. package/test-fixtures/addMissingField336/cri/metadata.json +6 -0
  75. package/test-fixtures/addMissingField336/cri/record.json +6 -0
  76. package/test-fixtures/addMissingField336/crt/expectedResult.json +13 -0
  77. package/test-fixtures/addMissingField336/crt/metadata.json +6 -0
  78. package/test-fixtures/addMissingField336/crt/record.json +7 -0
  79. package/test-fixtures/addMissingField336/f01/expectedResult.json +17 -0
  80. package/test-fixtures/addMissingField336/f01/metadata.json +6 -0
  81. package/test-fixtures/addMissingField336/f01/record.json +11 -0
  82. package/test-fixtures/addMissingField336/f02/expectedResult.json +15 -0
  83. package/test-fixtures/addMissingField336/f02/metadata.json +6 -0
  84. package/test-fixtures/addMissingField336/f02/record.json +9 -0
  85. package/test-fixtures/addMissingField336/mixed2txt/expectedResult.json +12 -0
  86. package/test-fixtures/addMissingField336/mixed2txt/metadata.json +6 -0
  87. package/test-fixtures/addMissingField336/mixed2txt/record.json +6 -0
  88. package/test-fixtures/addMissingField336/mixed2xxx/expectedResult.json +12 -0
  89. package/test-fixtures/addMissingField336/mixed2xxx/metadata.json +6 -0
  90. package/test-fixtures/addMissingField336/mixed2xxx/record.json +6 -0
  91. package/test-fixtures/addMissingField336/ntm/expectedResult.json +12 -0
  92. package/test-fixtures/addMissingField336/ntm/metadata.json +6 -0
  93. package/test-fixtures/addMissingField336/ntm/record.json +6 -0
  94. package/test-fixtures/addMissingField336/snd/expectedResult.json +12 -0
  95. package/test-fixtures/addMissingField336/snd/metadata.json +6 -0
  96. package/test-fixtures/addMissingField336/snd/record.json +6 -0
  97. package/test-fixtures/addMissingField336/spw/expectedResult.json +12 -0
  98. package/test-fixtures/addMissingField336/spw/metadata.json +6 -0
  99. package/test-fixtures/addMissingField336/spw/record.json +6 -0
  100. package/test-fixtures/addMissingField336/spw2/expectedResult.json +13 -0
  101. package/test-fixtures/addMissingField336/spw2/metadata.json +6 -0
  102. package/test-fixtures/addMissingField336/spw2/record.json +7 -0
  103. package/test-fixtures/addMissingField336/spw_txt/expectedResult.json +18 -0
  104. package/test-fixtures/addMissingField336/spw_txt/metadata.json +6 -0
  105. package/test-fixtures/addMissingField336/spw_txt/record.json +7 -0
  106. package/test-fixtures/addMissingField336/sti/expectedResult.json +12 -0
  107. package/test-fixtures/addMissingField336/sti/metadata.json +6 -0
  108. package/test-fixtures/addMissingField336/sti/record.json +6 -0
  109. package/test-fixtures/addMissingField336/sti_projected/expectedResult.json +13 -0
  110. package/test-fixtures/addMissingField336/sti_projected/metadata.json +6 -0
  111. package/test-fixtures/addMissingField336/sti_projected/record.json +7 -0
  112. package/test-fixtures/addMissingField336/tci/expectedResult.json +12 -0
  113. package/test-fixtures/addMissingField336/tci/metadata.json +6 -0
  114. package/test-fixtures/addMissingField336/tci/record.json +6 -0
  115. package/test-fixtures/addMissingField336/tcm/expectedResult.json +12 -0
  116. package/test-fixtures/addMissingField336/tcm/metadata.json +6 -0
  117. package/test-fixtures/addMissingField336/tcm/record.json +6 -0
  118. package/test-fixtures/addMissingField336/tdf/expectedResult.json +12 -0
  119. package/test-fixtures/addMissingField336/tdf/metadata.json +6 -0
  120. package/test-fixtures/addMissingField336/tdf/record.json +6 -0
  121. package/test-fixtures/addMissingField336/tdi/expectedResult.json +13 -0
  122. package/test-fixtures/addMissingField336/tdi/metadata.json +6 -0
  123. package/test-fixtures/addMissingField336/tdi/record.json +7 -0
  124. package/test-fixtures/addMissingField336/txt/expectedResult.json +12 -0
  125. package/test-fixtures/addMissingField336/txt/metadata.json +6 -0
  126. package/test-fixtures/addMissingField336/txt/record.json +6 -0
  127. package/test-fixtures/addMissingField336/zzz/expectedResult.json +13 -0
  128. package/test-fixtures/addMissingField336/zzz/metadata.json +6 -0
  129. package/test-fixtures/addMissingField336/zzz/record.json +7 -0
  130. package/test-fixtures/addMissingField337/c1/expectedResult.json +12 -0
  131. package/test-fixtures/addMissingField337/c1/metadata.json +6 -0
  132. package/test-fixtures/addMissingField337/c1/record.json +7 -0
  133. package/test-fixtures/addMissingField337/g1/expectedResult.json +13 -0
  134. package/test-fixtures/addMissingField337/g1/metadata.json +6 -0
  135. package/test-fixtures/addMissingField337/g1/record.json +7 -0
  136. package/test-fixtures/addMissingField337/n1/expectedResult.json +12 -0
  137. package/test-fixtures/addMissingField337/n1/metadata.json +6 -0
  138. package/test-fixtures/addMissingField337/n1/record.json +6 -0
  139. package/test-fixtures/addMissingField337/no_action_required/expectedResult.json +12 -0
  140. package/test-fixtures/addMissingField337/no_action_required/metadata.json +7 -0
  141. package/test-fixtures/addMissingField337/no_action_required/record.json +11 -0
  142. package/test-fixtures/addMissingField337/p1/expectedResult.json +12 -0
  143. package/test-fixtures/addMissingField337/p1/metadata.json +6 -0
  144. package/test-fixtures/addMissingField337/p1/record.json +6 -0
  145. package/test-fixtures/addMissingField337/validate_x1/expectedResult.json +6 -0
  146. package/test-fixtures/addMissingField337/validate_x1/metadata.json +6 -0
  147. package/test-fixtures/addMissingField337/validate_x1/record.json +6 -0
  148. package/test-fixtures/addMissingField338/cb/expectedResult.json +14 -0
  149. package/test-fixtures/addMissingField338/cb/metadata.json +6 -0
  150. package/test-fixtures/addMissingField338/cb/record.json +8 -0
  151. package/test-fixtures/addMissingField338/cd/expectedResult.json +14 -0
  152. package/test-fixtures/addMissingField338/cd/metadata.json +6 -0
  153. package/test-fixtures/addMissingField338/cd/record.json +8 -0
  154. package/test-fixtures/addMissingField338/ck/expectedResult.json +14 -0
  155. package/test-fixtures/addMissingField338/ck/metadata.json +6 -0
  156. package/test-fixtures/addMissingField338/ck/record.json +8 -0
  157. package/test-fixtures/addMissingField338/cr/expectedResult.json +15 -0
  158. package/test-fixtures/addMissingField338/cr/metadata.json +6 -0
  159. package/test-fixtures/addMissingField338/cr/record.json +9 -0
  160. package/test-fixtures/addMissingField338/cr2/expectedResult.json +14 -0
  161. package/test-fixtures/addMissingField338/cr2/metadata.json +6 -0
  162. package/test-fixtures/addMissingField338/cr2/record.json +8 -0
  163. package/test-fixtures/addMissingField338/cr3/expectedResult.json +18 -0
  164. package/test-fixtures/addMissingField338/cr3/metadata.json +6 -0
  165. package/test-fixtures/addMissingField338/cr3/record.json +12 -0
  166. package/test-fixtures/addMissingField338/cr4/expectedResult.json +15 -0
  167. package/test-fixtures/addMissingField338/cr4/metadata.json +6 -0
  168. package/test-fixtures/addMissingField338/cr4/record.json +9 -0
  169. package/test-fixtures/addMissingField338/gc/expectedResult.json +12 -0
  170. package/test-fixtures/addMissingField338/gc/metadata.json +6 -0
  171. package/test-fixtures/addMissingField338/gc/record.json +7 -0
  172. package/test-fixtures/addMissingField338/gd/expectedResult.json +13 -0
  173. package/test-fixtures/addMissingField338/gd/metadata.json +6 -0
  174. package/test-fixtures/addMissingField338/gd/record.json +8 -0
  175. package/test-fixtures/addMissingField338/gf/expectedResult.json +13 -0
  176. package/test-fixtures/addMissingField338/gf/metadata.json +6 -0
  177. package/test-fixtures/addMissingField338/gf/record.json +8 -0
  178. package/test-fixtures/addMissingField338/gs/expectedResult.json +15 -0
  179. package/test-fixtures/addMissingField338/gs/metadata.json +6 -0
  180. package/test-fixtures/addMissingField338/gs/record.json +9 -0
  181. package/test-fixtures/addMissingField338/gt/expectedResult.json +15 -0
  182. package/test-fixtures/addMissingField338/gt/metadata.json +6 -0
  183. package/test-fixtures/addMissingField338/gt/record.json +9 -0
  184. package/test-fixtures/addMissingField338/hd/expectedResult.json +16 -0
  185. package/test-fixtures/addMissingField338/hd/metadata.json +6 -0
  186. package/test-fixtures/addMissingField338/hd/record.json +10 -0
  187. package/test-fixtures/addMissingField338/he/expectedResult.json +15 -0
  188. package/test-fixtures/addMissingField338/he/metadata.json +6 -0
  189. package/test-fixtures/addMissingField338/he/record.json +9 -0
  190. package/test-fixtures/addMissingField338/he2/expectedResult.json +12 -0
  191. package/test-fixtures/addMissingField338/he2/metadata.json +6 -0
  192. package/test-fixtures/addMissingField338/he2/record.json +6 -0
  193. package/test-fixtures/addMissingField338/hg/expectedResult.json +15 -0
  194. package/test-fixtures/addMissingField338/hg/metadata.json +7 -0
  195. package/test-fixtures/addMissingField338/hg/record.json +9 -0
  196. package/test-fixtures/addMissingField338/hg2/expectedResult.json +15 -0
  197. package/test-fixtures/addMissingField338/hg2/metadata.json +6 -0
  198. package/test-fixtures/addMissingField338/hg2/record.json +9 -0
  199. package/test-fixtures/addMissingField338/hj/expectedResult.json +15 -0
  200. package/test-fixtures/addMissingField338/hj/metadata.json +6 -0
  201. package/test-fixtures/addMissingField338/hj/record.json +9 -0
  202. package/test-fixtures/addMissingField338/hj2/expectedResult.json +15 -0
  203. package/test-fixtures/addMissingField338/hj2/metadata.json +6 -0
  204. package/test-fixtures/addMissingField338/hj2/record.json +9 -0
  205. package/test-fixtures/addMissingField338/mo/expectedResult.json +15 -0
  206. package/test-fixtures/addMissingField338/mo/metadata.json +6 -0
  207. package/test-fixtures/addMissingField338/mo/record.json +9 -0
  208. package/test-fixtures/addMissingField338/nc/expectedResult.json +19 -0
  209. package/test-fixtures/addMissingField338/nc/metadata.json +6 -0
  210. package/test-fixtures/addMissingField338/nc/record.json +13 -0
  211. package/test-fixtures/addMissingField338/nr/expectedResult.json +12 -0
  212. package/test-fixtures/addMissingField338/nr/metadata.json +7 -0
  213. package/test-fixtures/addMissingField338/nr/record.json +6 -0
  214. package/test-fixtures/addMissingField338/sd/expectedResult.json +14 -0
  215. package/test-fixtures/addMissingField338/sd/metadata.json +6 -0
  216. package/test-fixtures/addMissingField338/sd/record.json +8 -0
  217. package/test-fixtures/addMissingField338/sd2/expectedResult.json +14 -0
  218. package/test-fixtures/addMissingField338/sd2/metadata.json +6 -0
  219. package/test-fixtures/addMissingField338/sd2/record.json +8 -0
  220. package/test-fixtures/addMissingField338/sd3/expectedResult.json +14 -0
  221. package/test-fixtures/addMissingField338/sd3/metadata.json +6 -0
  222. package/test-fixtures/addMissingField338/sd3/record.json +8 -0
  223. package/test-fixtures/addMissingField338/ss/expectedResult.json +14 -0
  224. package/test-fixtures/addMissingField338/ss/metadata.json +6 -0
  225. package/test-fixtures/addMissingField338/ss/record.json +8 -0
  226. package/test-fixtures/addMissingField338/ss2/expectedResult.json +14 -0
  227. package/test-fixtures/addMissingField338/ss2/metadata.json +6 -0
  228. package/test-fixtures/addMissingField338/ss2/record.json +8 -0
  229. package/test-fixtures/addMissingField338/vd/expectedResult.json +15 -0
  230. package/test-fixtures/addMissingField338/vd/metadata.json +6 -0
  231. package/test-fixtures/addMissingField338/vd/record.json +9 -0
  232. package/test-fixtures/addMissingField338/vd2/expectedResult.json +13 -0
  233. package/test-fixtures/addMissingField338/vd2/metadata.json +6 -0
  234. package/test-fixtures/addMissingField338/vd2/record.json +8 -0
  235. package/test-fixtures/addMissingField338/vf/expectedResult.json +15 -0
  236. package/test-fixtures/addMissingField338/vf/metadata.json +6 -0
  237. package/test-fixtures/addMissingField338/vf/record.json +9 -0
  238. package/test-fixtures/addMissingField338/zu/expectedResult.json +14 -0
  239. package/test-fixtures/addMissingField338/zu/metadata.json +6 -0
  240. package/test-fixtures/addMissingField338/zu/record.json +8 -0
  241. package/test-fixtures/cyrillux-usemarcon-replacement/f01/expectedResult.json +32 -0
  242. package/test-fixtures/cyrillux-usemarcon-replacement/f01/metadata.json +7 -0
  243. package/test-fixtures/cyrillux-usemarcon-replacement/f01/record.json +20 -0
  244. package/test-fixtures/cyrillux-usemarcon-replacement/f02/expectedResult.json +29 -0
  245. package/test-fixtures/cyrillux-usemarcon-replacement/f02/metadata.json +7 -0
  246. package/test-fixtures/cyrillux-usemarcon-replacement/f02/record.json +9 -0
  247. package/test-fixtures/cyrillux-usemarcon-replacement/f03/expectedResult.json +34 -0
  248. package/test-fixtures/cyrillux-usemarcon-replacement/f03/metadata.json +7 -0
  249. package/test-fixtures/cyrillux-usemarcon-replacement/f03/record.json +12 -0
  250. package/test-fixtures/cyrillux-usemarcon-replacement/f04/expectedResult.json +26 -0
  251. package/test-fixtures/cyrillux-usemarcon-replacement/f04/metadata.json +8 -0
  252. package/test-fixtures/cyrillux-usemarcon-replacement/f04/record.json +6 -0
  253. package/test-fixtures/cyrillux-usemarcon-replacement/f05/expectedResult.json +27 -0
  254. package/test-fixtures/cyrillux-usemarcon-replacement/f05/metadata.json +7 -0
  255. package/test-fixtures/cyrillux-usemarcon-replacement/f05/record.json +8 -0
  256. package/test-fixtures/cyrillux-usemarcon-replacement/f06/expectedResult.json +27 -0
  257. package/test-fixtures/cyrillux-usemarcon-replacement/f06/metadata.json +7 -0
  258. package/test-fixtures/cyrillux-usemarcon-replacement/f06/record.json +8 -0
  259. package/test-fixtures/cyrillux-usemarcon-replacement/f07/expectedResult.json +25 -0
  260. package/test-fixtures/cyrillux-usemarcon-replacement/f07/metadata.json +7 -0
  261. package/test-fixtures/cyrillux-usemarcon-replacement/f07/record.json +8 -0
  262. package/test-fixtures/cyrillux-usemarcon-replacement/f08/expectedResult.json +34 -0
  263. package/test-fixtures/cyrillux-usemarcon-replacement/f08/metadata.json +6 -0
  264. package/test-fixtures/cyrillux-usemarcon-replacement/f08/record.json +33 -0
  265. package/test-fixtures/cyrillux-usemarcon-replacement/f09/expectedResult.json +35 -0
  266. package/test-fixtures/cyrillux-usemarcon-replacement/f09/metadata.json +6 -0
  267. package/test-fixtures/cyrillux-usemarcon-replacement/f09/record.json +35 -0
  268. package/test-fixtures/cyrillux-usemarcon-replacement/f10/expectedResult.json +41 -0
  269. package/test-fixtures/cyrillux-usemarcon-replacement/f10/metadata.json +7 -0
  270. package/test-fixtures/cyrillux-usemarcon-replacement/f10/record.json +33 -0
  271. package/test-fixtures/cyrillux-usemarcon-replacement/f11/expectedResult.json +32 -0
  272. package/test-fixtures/cyrillux-usemarcon-replacement/f11/metadata.json +6 -0
  273. package/test-fixtures/cyrillux-usemarcon-replacement/f11/record.json +22 -0
  274. package/test-fixtures/cyrillux-usemarcon-replacement/v01/expectedResult.json +7 -0
  275. package/test-fixtures/cyrillux-usemarcon-replacement/v01/metadata.json +6 -0
  276. package/test-fixtures/cyrillux-usemarcon-replacement/v01/record.json +20 -0
  277. package/test-fixtures/cyrillux-usemarcon-replacement/v02/expectedResult.json +5 -0
  278. package/test-fixtures/cyrillux-usemarcon-replacement/v02/metadata.json +6 -0
  279. package/test-fixtures/cyrillux-usemarcon-replacement/v02/record.json +29 -0
  280. package/test-fixtures/fix-33X/f11/expectedResult.json +29 -0
  281. package/test-fixtures/fix-33X/f11/metadata.json +6 -0
  282. package/test-fixtures/fix-33X/f11/record.json +22 -0
  283. package/test-fixtures/fix-33X/v11/expectedResult.json +9 -0
  284. package/test-fixtures/fix-33X/v11/metadata.json +6 -0
  285. package/test-fixtures/fix-33X/v11/record.json +22 -0
  286. package/test-fixtures/fix-language-codes/01/expectedResult.json +5 -0
  287. package/test-fixtures/fix-language-codes/01/metadata.json +6 -0
  288. package/test-fixtures/fix-language-codes/01/record.json +7 -0
  289. package/test-fixtures/fix-language-codes/02/expectedResult.json +7 -0
  290. package/test-fixtures/fix-language-codes/02/metadata.json +6 -0
  291. package/test-fixtures/fix-language-codes/02/record.json +10 -0
  292. package/test-fixtures/fix-language-codes/03/expectedResult.json +10 -0
  293. package/test-fixtures/fix-language-codes/03/metadata.json +6 -0
  294. package/test-fixtures/fix-language-codes/03/record.json +8 -0
  295. package/test-fixtures/fix-language-codes/04/expectedResult.json +9 -0
  296. package/test-fixtures/fix-language-codes/04/metadata.json +7 -0
  297. package/test-fixtures/fix-language-codes/04/record.json +7 -0
  298. package/test-fixtures/fix-language-codes/05/expectedResult.json +8 -0
  299. package/test-fixtures/fix-language-codes/05/metadata.json +6 -0
  300. package/test-fixtures/fix-language-codes/05/record.json +5 -0
  301. package/test-fixtures/punctuation2/95/expectedResult.json +22 -0
  302. package/test-fixtures/punctuation2/95/metadata.json +6 -0
  303. package/test-fixtures/punctuation2/95/record.json +20 -0
  304. package/test-fixtures/sanitize-vocabulary-source-codes/f03/expectedResult.json +143 -0
  305. package/test-fixtures/sanitize-vocabulary-source-codes/f03/metadata.json +9 -0
  306. package/test-fixtures/sanitize-vocabulary-source-codes/f03/record.json +145 -0
  307. package/test-fixtures/sanitize-vocabulary-source-codes/v03/expectedResult.json +5 -0
  308. package/test-fixtures/sanitize-vocabulary-source-codes/v03/metadata.json +6 -0
  309. package/test-fixtures/sanitize-vocabulary-source-codes/v03/record.json +145 -0
@@ -338,7 +338,7 @@ const addPairedPunctuationRules = {
338
338
  {'code': 'b', 'followedBy': 'c', 'add': ',', 'context': defaultNeedsPuncAfter2},
339
339
  // NB! The $c rule messes dotless exception "264 #4 $c p1983" up
340
340
  // We'll need to add a hacky postprocessor for this? Add 'hasInd1': '0123' etc?
341
- {'code': 'c', 'followedBy': '#', 'add': '.', 'context': defaultNeedsPuncAfter2}
341
+ {'code': 'c', 'followedBy': '#', 'add': '.', 'context': defaultNeedsPuncAfter, 'ind2': ['0', '1', '2', '3']}
342
342
  ],
343
343
  '300': [
344
344
  {'code': 'a', 'followedBy': 'b', 'add': ' :', 'context': defaultNeedsPuncAfter2},
@@ -394,11 +394,11 @@ function ruleAppliesToSubfieldCode(targetSubfieldCodes, currSubfieldCode) {
394
394
 
395
395
 
396
396
  function ruleAppliesToField(rule, field) {
397
- if ('ind1' in rule && field.ind1.includes(rule.ind1)) {
397
+ if ('ind1' in rule && !rule.ind1.includes(field.ind1)) {
398
398
  return false;
399
399
  }
400
400
 
401
- if ('ind2' in rule && field.ind2.includes(rule.ind2)) {
401
+ if ('ind2' in rule && !rule.ind2.includes(field.ind2)) {
402
402
  return false;
403
403
  }
404
404
 
@@ -14,25 +14,26 @@ export default function () {
14
14
 
15
15
  function fix(record) {
16
16
  const res = {message: [], fix: [], valid: true};
17
- record.fields.forEach(f => fieldSanitizeVocabularySourceCode(f));
17
+ const relevantFields = getRelevantFields(record);
18
+ relevantFields.forEach(f => fieldSanitizeVocabularySourceCode(f));
18
19
  return res;
19
20
  }
20
21
 
21
22
  function validate(record) {
22
23
  const res = {message: []};
24
+ const relevantFields = getRelevantFields(record);
23
25
 
24
- record.fields.forEach(field => {
25
- validateField(field, res);
26
- });
26
+ relevantFields.forEach(field => validateField(field, res));
27
27
 
28
28
  res.valid = !(res.message.length >= 1); // eslint-disable-line functional/immutable-data
29
29
  return res;
30
30
  }
31
31
 
32
+ function getRelevantFields(record) {
33
+ return record.fields.filter(f => f.subfields && f.tag.match(/^(?:6..|257|370|38.)$/u));
34
+ }
35
+
32
36
  function validateField(field, res) {
33
- if (!field.subfields) {
34
- return;
35
- }
36
37
  const orig = fieldToString(field);
37
38
 
38
39
  const normalizedField = fieldSanitizeVocabularySourceCode(clone(field));
@@ -49,11 +50,8 @@ export default function () {
49
50
  return;
50
51
  }
51
52
 
52
- function fieldSanitizeVocabularySourceCode(field) {
53
- if (!field.tag.match(/^(?:6..|257|370|38.)$/u)) {
54
- return field;
55
- }
56
53
 
54
+ function fieldSanitizeVocabularySourceCode(field) {
57
55
  field.subfields.forEach(sf => subfieldSanitizeVocabularySourceCode(sf));
58
56
  return field;
59
57
  }
package/src/utils.js CHANGED
@@ -1,11 +1,7 @@
1
1
  export function isElectronicMaterial(record) {
2
2
  const f337s = record.get('337');
3
3
 
4
- return f337s.some(field => {
5
- const mediaTypeIsC = field.subfields.some(sub => sub.code === 'b' && sub.value === 'c');
6
- const sourceIsRdamedia = field.subfields.some(sub => sub.code === '2' && sub.value === 'rdamedia');
7
- return mediaTypeIsC && sourceIsRdamedia;
8
- });
4
+ return f337s.length > 0 && f337s.some(f => fieldHasSubfield(f, 'b', 'c') && fieldHasSubfield(f, '2', 'rdamedia'));
9
5
  }
10
6
 
11
7
  export function nvdebug(message, func = undefined) {
@@ -26,6 +22,9 @@ export function fieldHasSubfield(field, subfieldCode, subfieldValue = null) {
26
22
  }
27
23
 
28
24
  export function subfieldToString(sf) {
25
+ if (!sf.value) {
26
+ return `‡${sf.code}`;
27
+ }
29
28
  return `‡${sf.code} ${sf.value}`;
30
29
  }
31
30
 
@@ -36,6 +35,12 @@ function normalizeIndicatorValue(val) {
36
35
  return val;
37
36
  }
38
37
 
38
+ export function recordToString(record) {
39
+ const ldr = `LDR ${record.leader}`;
40
+ const fields = record.fields.map(f => fieldToString(f));
41
+ return `${ldr}\n${fields.join('\n')}`;
42
+ }
43
+
39
44
  export function fieldToString(f) {
40
45
  if ('subfields' in f) {
41
46
  return `${f.tag} ${normalizeIndicatorValue(f.ind1)}${normalizeIndicatorValue(f.ind2)}${formatSubfields(f)}`;
@@ -62,14 +67,14 @@ export function isControlSubfieldCode(subfieldCode) {
62
67
  return false;
63
68
  }
64
69
 
65
- export function getCatalogingLanguage(record) {
70
+ export function getCatalogingLanguage(record, defaultCatalogingLanguage = undefined) {
66
71
  const [field040] = record.get(/^040$/u);
67
72
  if (!field040) {
68
- return null;
73
+ return defaultCatalogingLanguage;
69
74
  }
70
75
  const [b] = field040.subfields.filter(sf => sf.code === 'b');
71
76
  if (!b) {
72
- return null;
77
+ return defaultCatalogingLanguage;
73
78
  }
74
79
  return b.value;
75
80
  }
@@ -0,0 +1,6 @@
1
+ {
2
+ "message": [
3
+ "Add missing 336 field(s): '336 ## ‡a teksti ‡b txt ‡2 rdacontent'"
4
+ ],
5
+ "valid": false
6
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "description": "Validation: Add field 336",
3
+ "comment": "Create a 336",
4
+ "enabled": true,
5
+ "only": false,
6
+ "fix": false
7
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "leader": "12345cam a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "300", "ind1": " ", "ind2": " ", "subfields": [
5
+ { "code": "a", "value": "123 sivua" }
6
+ ]}
7
+ ]
8
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "message": [],
3
+ "valid": true
4
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "description": "Validation: Don't add field 336",
3
+ "comment": "Don't create a 336 as there's already one",
4
+ "enabled": true,
5
+ "only": false,
6
+ "fix": false
7
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "leader": "12345cam a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "300", "ind1": " ", "ind2": " ", "subfields": [
5
+ { "code": "a", "value": "123 sivua" }
6
+ ]},
7
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
8
+ { "code": "a", "value": "teksti" },
9
+ { "code": "b", "value": "txt" },
10
+ { "code": "2", "value": "rdacontent" }
11
+ ]}
12
+ ]
13
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cmm a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "008", "value": "121212s2000 fi |||| a| | | | fin "},
6
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
7
+ { "code": "a", "value": "digitaalinen data" },
8
+ { "code": "b", "value": "cod" },
9
+ { "code": "2", "value": "rdacontent" }
10
+ ]}
11
+ ]
12
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (b=cod). Decision based on CF's 008/26=a)",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "leader": "12345cmm a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "008", "value": "121212s2000 fi |||| a| | | | fin "}
5
+ ]
6
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cmm a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "008", "value": "121212s2000 fi |||| q b| | | | fin "},
6
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
7
+ { "code": "a", "value": "tietokoneohjelma" },
8
+ { "code": "b", "value": "cop" },
9
+ { "code": "2", "value": "rdacontent" }
10
+ ]}
11
+ ]
12
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (b=cop). Decision based on CF's 008/26=b)",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "leader": "12345cmm a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "008", "value": "121212s2000 fi |||| q b| | | | fin "}
5
+ ]
6
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cmm a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "008", "value": "121212s2000 fi |||| q | | | | fin "},
6
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
7
+ { "code": "a", "value": "tietokoneohjelma" },
8
+ { "code": "b", "value": "cop" },
9
+ { "code": "2", "value": "rdacontent" }
10
+ ]},
11
+ { "tag": "516", "ind1": " ", "ind2": " ", "subfields": [ { "code": "a", "value": "tietokoneohjelma" } ] }
12
+ ]
13
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (b=cop). Decision based on field 516)",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "leader": "12345cmm a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "008", "value": "121212s2000 fi |||| q | | | | fin "},
5
+ { "tag": "516", "ind1": " ", "ind2": " ", "subfields": [ { "code": "a", "value": "tietokoneohjelma" } ] }
6
+ ]
7
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cem a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "008", "value": "121212s2000 fi d fin "},
6
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
7
+ { "code": "a", "value": "kartografinen kolmiulotteinen muoto" },
8
+ { "code": "b", "value": "crf" },
9
+ { "code": "2", "value": "rdacontent" }
10
+ ]}
11
+ ]
12
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (crf) based on LDR/06=g + 008/25=d/globe",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "leader": "12345cem a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "008", "value": "121212s2000 fi d fin "}
5
+ ]
6
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cem a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "008", "value": "121212s2000 fi fin "},
6
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
7
+ { "code": "a", "value": "kartografinen kuva" },
8
+ { "code": "b", "value": "cri" },
9
+ { "code": "2", "value": "rdacontent" }
10
+ ]}
11
+ ]
12
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (cri) based on LDR/06=e",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "leader": "12345cem a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "008", "value": "121212s2000 fi fin "}
5
+ ]
6
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cem a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "007", "value": "aq234567"},
6
+ { "tag": "008", "value": "121212s2000 fi f fin "},
7
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
8
+ { "code": "a", "value": "kartografinen taktiili kuva" },
9
+ { "code": "b", "value": "crt" },
10
+ { "code": "2", "value": "rdacontent" }
11
+ ]}
12
+ ]
13
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (crt) based on LDR/06=e, form of item=f (braille) and 007/00-01=aq",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "leader": "12345cem a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "007", "value": "aq234567" },
5
+ { "tag": "008", "value": "121212s2000 fi f fin "}
6
+ ]
7
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cam a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "040", "ind1": " ", "ind2": " ", "subfields": [
6
+ { "code": "b", "value": "swe" }
7
+ ]},
8
+ { "tag": "300", "ind1": " ", "ind2": " ", "subfields": [
9
+ { "code": "a", "value": "123 sivua" }
10
+ ]},
11
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
12
+ { "code": "a", "value": "text" },
13
+ { "code": "b", "value": "txt" },
14
+ { "code": "2", "value": "rdacontent" }
15
+ ]}
16
+ ]
17
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (b=txt), cat kanguage (040$b) is 'swe'",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "leader": "12345cam a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "040", "ind1": " ", "ind2": " ", "subfields": [
5
+ { "code": "b", "value": "swe" }
6
+ ]},
7
+ { "tag": "300", "ind1": " ", "ind2": " ", "subfields": [
8
+ { "code": "a", "value": "123 sivua" }
9
+ ]}
10
+ ]
11
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cam a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "008", "value": "121212s2000 fi abcd f 000 1 fin "},
6
+ { "tag": "300", "ind1": " ", "ind2": " ", "subfields": [
7
+ { "code": "a", "value": "123 sivua" }
8
+ ]},
9
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
10
+ { "code": "a", "value": "taktiili teksti" },
11
+ { "code": "b", "value": "tct" },
12
+ { "code": "2", "value": "rdacontent" }
13
+ ]}
14
+ ]
15
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (b=txt)",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "leader": "12345cam a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "008", "value": "121212s2000 fi abcd f 000 1 fin "},
5
+ { "tag": "300", "ind1": " ", "ind2": " ", "subfields": [
6
+ { "code": "a", "value": "123 sivua" }
7
+ ]}
8
+ ]
9
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cpm a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "008", "value": "121212s2000 fi |||| r b| | | | fin "},
6
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
7
+ { "code": "a", "value": "teksti" },
8
+ { "code": "b", "value": "txt" },
9
+ { "code": "2", "value": "rdacontent" }
10
+ ]}
11
+ ]
12
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (b=txt). Default value for LDR/06=p is overridden by form of item 008/23=r",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "leader": "12345cpm a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "008", "value": "121212s2000 fi |||| r b| | | | fin "}
5
+ ]
6
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cpm a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "008", "value": "121212s2000 fi |||| a b| | | | fin "},
6
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
7
+ { "code": "a", "value": "muu" },
8
+ { "code": "b", "value": "xxx" },
9
+ { "code": "2", "value": "rdacontent" }
10
+ ]}
11
+ ]
12
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (b=xxx). Default value for LDR/06=p",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "leader": "12345cpm a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "008", "value": "121212s2000 fi |||| a b| | | | fin "}
5
+ ]
6
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cdm a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "008", "value": "121212s2000 fi fin "},
6
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
7
+ { "code": "a", "value": "nuottikirjoitus" },
8
+ { "code": "b", "value": "ntm" },
9
+ { "code": "2", "value": "rdacontent" }
10
+ ]}
11
+ ]
12
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (notated music), based on LDR/06=d (does not have exceptions)",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "leader": "12345cdm a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "008", "value": "121212s2000 fi fin "}
5
+ ]
6
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cmm a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "008", "value": "121212s2000 fi |||| q h| | | | fin "},
6
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
7
+ { "code": "a", "value": "ääni" },
8
+ { "code": "b", "value": "snd" },
9
+ { "code": "2", "value": "rdacontent" }
10
+ ]}
11
+ ]
12
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (b=snd). Decision based on CF's 008/26=h)",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "leader": "12345cmm a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "008", "value": "121212s2000 fi |||| q h| | | | fin "}
5
+ ]
6
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cim a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "008", "value": "121212s2000 fi fin "},
6
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
7
+ { "code": "a", "value": "puhe" },
8
+ { "code": "b", "value": "spw" },
9
+ { "code": "2", "value": "rdacontent" }
10
+ ]}
11
+ ]
12
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (spw) based on LDR/06=i",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "leader": "12345cim a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "008", "value": "121212s2000 fi fin "}
5
+ ]
6
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "_validationOptions": {},
3
+ "leader": "12345cmm a22123454i 4500",
4
+ "fields": [
5
+ { "tag": "008", "value": "121212s2000 fi |||| q | | | | fin "},
6
+ { "tag": "336", "ind1": " ", "ind2": " ", "subfields": [
7
+ { "code": "a", "value": "puhe" },
8
+ { "code": "b", "value": "spw" },
9
+ { "code": "2", "value": "rdacontent" }
10
+ ]},
11
+ { "tag": "516", "ind1": " ", "ind2": " ", "subfields": [ { "code": "a", "value": "äänikirja" } ] }
12
+ ]
13
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "Fix: Add field 336 (b=spw). Decision based on field 516",
3
+ "enabled": true,
4
+ "only": false,
5
+ "fix": true
6
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "leader": "12345cmm a22123454i 4500",
3
+ "fields": [
4
+ { "tag": "008", "value": "121212s2000 fi |||| q | | | | fin "},
5
+ { "tag": "516", "ind1": " ", "ind2": " ", "subfields": [ { "code": "a", "value": "äänikirja" } ] }
6
+ ]
7
+ }