@natlibfi/marc-record-merge 6.0.0-beta.1 → 6.0.0-beta.10

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 (246) hide show
  1. package/.github/CODEOWNERS +9 -0
  2. package/.github/dependabot.yml +41 -0
  3. package/.github/workflows/melinda-node-tests.yml +60 -0
  4. package/LICENSE +21 -0
  5. package/README.md +122 -2
  6. package/dist/index.js +42 -43
  7. package/dist/index.js.map +1 -1
  8. package/dist/reducers/copy.js +232 -83
  9. package/dist/reducers/copy.js.map +1 -1
  10. package/dist/reducers/copy.spec.js +57 -72
  11. package/dist/reducers/copy.spec.js.map +1 -1
  12. package/dist/reducers/index.js +13 -24
  13. package/dist/reducers/index.js.map +1 -1
  14. package/dist/reducers/select.js +33 -51
  15. package/dist/reducers/select.js.map +1 -1
  16. package/dist/reducers/select.spec.js +45 -92
  17. package/dist/reducers/select.spec.js.map +1 -1
  18. package/package.json +33 -32
  19. package/src/index.js +30 -32
  20. package/src/reducers/copy.js +242 -79
  21. package/src/reducers/copy.spec.js +50 -48
  22. package/src/reducers/index.js +3 -30
  23. package/src/reducers/select.js +27 -34
  24. package/src/reducers/select.spec.js +41 -56
  25. package/test-fixtures/reducers/copy/{01/base.json → 01 - copy/01/base.json } +1 -1
  26. package/test-fixtures/reducers/copy/{01 → 01 - copy/01}/merged.json +0 -0
  27. package/test-fixtures/reducers/copy/01 - copy/01/metadata.json +4 -0
  28. package/test-fixtures/reducers/copy/{01 → 01 - copy/01}/source.json +0 -0
  29. package/test-fixtures/reducers/copy/{02/source.json → 01 - copy/02/base.json} +0 -0
  30. package/test-fixtures/reducers/copy/{02 → 01 - copy/02}/merged.json +0 -0
  31. package/test-fixtures/reducers/copy/01 - copy/02/metadata.json +4 -0
  32. package/test-fixtures/reducers/copy/{02/base.json → 01 - copy/02/source.json } +1 -1
  33. package/test-fixtures/reducers/copy/{03/base.json → 01 - copy/03/base.json } +1 -1
  34. package/test-fixtures/reducers/copy/{03 → 01 - copy/03}/merged.json +0 -0
  35. package/test-fixtures/reducers/copy/01 - copy/03/metadata.json +4 -0
  36. package/test-fixtures/reducers/copy/{03 → 01 - copy/03}/source.json +0 -0
  37. package/test-fixtures/reducers/copy/{05/base.json → 01 - copy/04/base.json } +1 -1
  38. package/test-fixtures/reducers/copy/{04/merged.json → 01 - copy/04/merged.json } +1 -1
  39. package/test-fixtures/reducers/copy/01 - copy/04/metadata.json +4 -0
  40. package/test-fixtures/reducers/copy/{04/source.json → 01 - copy/04/source.json } +1 -1
  41. package/test-fixtures/reducers/copy/{04/base.json → 01 - copy/05/base.json } +1 -1
  42. package/test-fixtures/reducers/copy/01 - copy/05/merged.json +77 -0
  43. package/test-fixtures/reducers/copy/01 - copy/05/metadata.json +4 -0
  44. package/test-fixtures/reducers/copy/01 - copy/05/source.json +62 -0
  45. package/test-fixtures/reducers/copy/01 - copy/06/base.json +24 -0
  46. package/test-fixtures/reducers/copy/01 - copy/06/merged.json +39 -0
  47. package/test-fixtures/reducers/copy/01 - copy/06/metadata.json +4 -0
  48. package/test-fixtures/reducers/copy/01 - copy/06/source.json +24 -0
  49. package/test-fixtures/reducers/copy/01 - copy/07/base.json +39 -0
  50. package/test-fixtures/reducers/copy/01 - copy/07/merged.json +39 -0
  51. package/test-fixtures/reducers/copy/01 - copy/07/metadata.json +5 -0
  52. package/test-fixtures/reducers/copy/01 - copy/07/source.json +24 -0
  53. package/test-fixtures/reducers/copy/01 - copy/08/base.json +28 -0
  54. package/test-fixtures/reducers/copy/01 - copy/08/merged.json +28 -0
  55. package/test-fixtures/reducers/copy/01 - copy/08/metadata.json +4 -0
  56. package/test-fixtures/reducers/copy/01 - copy/08/source.json +24 -0
  57. package/test-fixtures/reducers/copy/02 - doNotCopyIfFieldPresent/01/base.json +17 -0
  58. package/test-fixtures/reducers/copy/02 - doNotCopyIfFieldPresent/01/merged.json +20 -0
  59. package/test-fixtures/reducers/copy/02 - doNotCopyIfFieldPresent/01/metadata.json +6 -0
  60. package/test-fixtures/reducers/copy/02 - doNotCopyIfFieldPresent/01/source.json +20 -0
  61. package/test-fixtures/reducers/copy/02 - doNotCopyIfFieldPresent/02/base.json +9 -0
  62. package/test-fixtures/reducers/copy/02 - doNotCopyIfFieldPresent/02/merged.json +20 -0
  63. package/test-fixtures/reducers/copy/02 - doNotCopyIfFieldPresent/02/metadata.json +6 -0
  64. package/test-fixtures/reducers/copy/02 - doNotCopyIfFieldPresent/02/source.json +20 -0
  65. package/test-fixtures/reducers/copy/03 - compareTagsOnly/01/base.json +24 -0
  66. package/test-fixtures/reducers/copy/03 - compareTagsOnly/01/merged.json +24 -0
  67. package/test-fixtures/reducers/copy/03 - compareTagsOnly/01/metadata.json +5 -0
  68. package/test-fixtures/reducers/copy/03 - compareTagsOnly/01/source.json +24 -0
  69. package/test-fixtures/reducers/copy/03 - compareTagsOnly/02/base.json +24 -0
  70. package/test-fixtures/reducers/copy/03 - compareTagsOnly/02/merged.json +100 -0
  71. package/test-fixtures/reducers/copy/03 - compareTagsOnly/02/metadata.json +5 -0
  72. package/test-fixtures/reducers/copy/03 - compareTagsOnly/02/source.json +100 -0
  73. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/01/base.json +24 -0
  74. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/01/merged.json +24 -0
  75. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/01/metadata.json +5 -0
  76. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/01/source.json +24 -0
  77. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/02/base.json +24 -0
  78. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/02/merged.json +39 -0
  79. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/02/metadata.json +5 -0
  80. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/02/source.json +24 -0
  81. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/03/metadata.json +6 -0
  82. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/04/base.json +20 -0
  83. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/04/merged.json +31 -0
  84. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/04/metadata.json +5 -0
  85. package/test-fixtures/reducers/copy/04 - compareWithoutIndicators/04/source.json +20 -0
  86. package/test-fixtures/reducers/copy/05 - copyUnless/01/base.json +9 -0
  87. package/test-fixtures/reducers/copy/05 - copyUnless/01/merged.json +24 -0
  88. package/test-fixtures/reducers/copy/05 - copyUnless/01/metadata.json +5 -0
  89. package/test-fixtures/reducers/copy/05 - copyUnless/01/source.json +47 -0
  90. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/01/base.json +24 -0
  91. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/01/merged.json +39 -0
  92. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/01/metadata.json +5 -0
  93. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/01/source.json +24 -0
  94. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/02/base.json +24 -0
  95. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/02/merged.json +24 -0
  96. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/02/metadata.json +5 -0
  97. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/02/source.json +24 -0
  98. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/03/base.json +28 -0
  99. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/03/merged.json +43 -0
  100. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/03/metadata.json +5 -0
  101. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/03/source.json +24 -0
  102. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/04/base.json +28 -0
  103. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/04/merged.json +28 -0
  104. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/04/metadata.json +5 -0
  105. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/04/source.json +24 -0
  106. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/05/base.json +20 -0
  107. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/05/merged.json +35 -0
  108. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/05/metadata.json +5 -0
  109. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/05/source.json +24 -0
  110. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/06/base.json +20 -0
  111. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/06/merged.json +35 -0
  112. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/06/metadata.json +5 -0
  113. package/test-fixtures/reducers/copy/06 - subfieldsMustBeIdentical/06/source.json +24 -0
  114. package/test-fixtures/reducers/copy/07 - excludeSubfields/01/base.json +39 -0
  115. package/test-fixtures/reducers/copy/07 - excludeSubfields/01/merged.json +39 -0
  116. package/test-fixtures/reducers/copy/07 - excludeSubfields/01/metadata.json +8 -0
  117. package/test-fixtures/reducers/copy/{05/source.json → 07 - excludeSubfields/01/source.json } +1 -1
  118. package/test-fixtures/reducers/copy/07 - excludeSubfields/02/base.json +39 -0
  119. package/test-fixtures/reducers/copy/{05/merged.json → 07 - excludeSubfields/02/merged.json } +5 -5
  120. package/test-fixtures/reducers/copy/07 - excludeSubfields/02/metadata.json +5 -0
  121. package/test-fixtures/reducers/copy/07 - excludeSubfields/02/source.json +43 -0
  122. package/test-fixtures/reducers/copy/08 - dropSubfields/01/base.json +35 -0
  123. package/test-fixtures/reducers/copy/08 - dropSubfields/01/merged.json +54 -0
  124. package/test-fixtures/reducers/copy/08 - dropSubfields/01/metadata.json +5 -0
  125. package/test-fixtures/reducers/copy/08 - dropSubfields/01/source.json +43 -0
  126. package/test-fixtures/reducers/copy/08 - dropSubfields/02/base.json +43 -0
  127. package/test-fixtures/reducers/copy/08 - dropSubfields/02/merged.json +58 -0
  128. package/test-fixtures/reducers/copy/08 - dropSubfields/02/metadata.json +5 -0
  129. package/test-fixtures/reducers/copy/08 - dropSubfields/02/source.json +32 -0
  130. package/test-fixtures/reducers/copy/08 - dropSubfields/03/base.json +43 -0
  131. package/test-fixtures/reducers/copy/08 - dropSubfields/03/merged.json +58 -0
  132. package/test-fixtures/reducers/copy/08 - dropSubfields/03/metadata.json +5 -0
  133. package/test-fixtures/reducers/copy/08 - dropSubfields/03/source.json +32 -0
  134. package/test-fixtures/reducers/copy/08 - dropSubfields/04/base.json +43 -0
  135. package/test-fixtures/reducers/copy/08 - dropSubfields/04/merged.json +43 -0
  136. package/test-fixtures/reducers/copy/08 - dropSubfields/04/metadata.json +5 -0
  137. package/test-fixtures/reducers/copy/08 - dropSubfields/04/source.json +32 -0
  138. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/01/base.json +9 -0
  139. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/01/merged.json +20 -0
  140. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/01/metadata.json +6 -0
  141. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/01/source.json +20 -0
  142. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/02/base.json +9 -0
  143. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/02/merged.json +20 -0
  144. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/02/metadata.json +6 -0
  145. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/02/source.json +20 -0
  146. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/03/base.json +9 -0
  147. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/03/merged.json +31 -0
  148. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/03/metadata.json +6 -0
  149. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/03/source.json +31 -0
  150. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/04/base.json +9 -0
  151. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/04/merged.json +42 -0
  152. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/04/metadata.json +6 -0
  153. package/test-fixtures/reducers/copy/09 - swapSubfieldCode/04/source.json +42 -0
  154. package/test-fixtures/reducers/copy/10 - swapTag/01/base.json +17 -0
  155. package/test-fixtures/reducers/copy/10 - swapTag/01/merged.json +28 -0
  156. package/test-fixtures/reducers/copy/10 - swapTag/01/metadata.json +6 -0
  157. package/test-fixtures/reducers/copy/10 - swapTag/01/source.json +20 -0
  158. package/test-fixtures/reducers/copy/11 - compareWithoutTag/01/base.json +28 -0
  159. package/test-fixtures/reducers/copy/11 - compareWithoutTag/01/merged.json +28 -0
  160. package/test-fixtures/reducers/copy/11 - compareWithoutTag/01/metadata.json +6 -0
  161. package/test-fixtures/reducers/copy/11 - compareWithoutTag/01/source.json +20 -0
  162. package/test-fixtures/reducers/copy/11 - compareWithoutTag/02/base.json +28 -0
  163. package/test-fixtures/reducers/copy/11 - compareWithoutTag/02/merged.json +39 -0
  164. package/test-fixtures/reducers/copy/11 - compareWithoutTag/02/metadata.json +6 -0
  165. package/test-fixtures/reducers/copy/11 - compareWithoutTag/02/source.json +31 -0
  166. package/test-fixtures/reducers/copy/11 - compareWithoutTag/03/base.json +28 -0
  167. package/test-fixtures/reducers/copy/11 - compareWithoutTag/03/merged.json +28 -0
  168. package/test-fixtures/reducers/copy/11 - compareWithoutTag/03/metadata.json +7 -0
  169. package/test-fixtures/reducers/copy/11 - compareWithoutTag/03/source.json +20 -0
  170. package/test-fixtures/reducers/copy/11 - compareWithoutTag/04/base.json +17 -0
  171. package/test-fixtures/reducers/copy/11 - compareWithoutTag/04/merged.json +28 -0
  172. package/test-fixtures/reducers/copy/11 - compareWithoutTag/04/metadata.json +7 -0
  173. package/test-fixtures/reducers/copy/11 - compareWithoutTag/04/source.json +31 -0
  174. package/test-fixtures/reducers/copy/11 - compareWithoutTag/05/base.json +28 -0
  175. package/test-fixtures/reducers/copy/11 - compareWithoutTag/05/merged.json +28 -0
  176. package/test-fixtures/reducers/copy/11 - compareWithoutTag/05/metadata.json +7 -0
  177. package/test-fixtures/reducers/copy/11 - compareWithoutTag/05/source.json +28 -0
  178. package/test-fixtures/reducers/metadata.json +4 -0
  179. package/test-fixtures/reducers/select/01/metadata.json +5 -0
  180. package/test-fixtures/reducers/select/02/metadata.json +4 -0
  181. package/test-fixtures/reducers/select/03/metadata.json +4 -0
  182. package/test-fixtures/reducers/select/04/metadata.json +5 -0
  183. package/test-fixtures/reducers/select/05/metadata.json +4 -0
  184. package/test-fixtures/reducers/select/06/base.json +4 -0
  185. package/test-fixtures/reducers/select/06/merged.json +4 -0
  186. package/test-fixtures/reducers/select/06/metadata.json +4 -0
  187. package/test-fixtures/reducers/select/06/source.json +4 -0
  188. package/test-fixtures/reducers/select/07/metadata.json +5 -0
  189. package/test-fixtures/reducers/select/08/metadata.json +4 -0
  190. package/test-fixtures/reducers/select/09/metadata.json +4 -0
  191. package/test-fixtures/reducers/select/10/metadata.json +5 -0
  192. package/test-fixtures/reducers/select/11/metadata.json +4 -0
  193. package/test-fixtures/reducers/select/12/metadata.json +5 -0
  194. package/test-fixtures/reducers/select/13/metadata.json +4 -0
  195. package/test-fixtures/reducers/select/14/base.json +24 -0
  196. package/test-fixtures/reducers/select/14/merged.json +24 -0
  197. package/test-fixtures/reducers/select/14/metadata.json +4 -0
  198. package/test-fixtures/reducers/select/14/source.json +24 -0
  199. package/.drone.yml +0 -92
  200. package/.nyc_output/7ecda3cd-9f84-4416-a466-fa1e5889c6a3.json +0 -1
  201. package/.nyc_output/processinfo/7ecda3cd-9f84-4416-a466-fa1e5889c6a3.json +0 -1
  202. package/.nyc_output/processinfo/index.json +0 -1
  203. package/LICENSE.txt +0 -165
  204. package/coverage/base.css +0 -224
  205. package/coverage/block-navigation.js +0 -79
  206. package/coverage/copy.js.html +0 -344
  207. package/coverage/favicon.png +0 -0
  208. package/coverage/index.html +0 -126
  209. package/coverage/lcov-report/base.css +0 -224
  210. package/coverage/lcov-report/block-navigation.js +0 -79
  211. package/coverage/lcov-report/copy.js.html +0 -344
  212. package/coverage/lcov-report/favicon.png +0 -0
  213. package/coverage/lcov-report/index.html +0 -126
  214. package/coverage/lcov-report/prettify.css +0 -1
  215. package/coverage/lcov-report/prettify.js +0 -2
  216. package/coverage/lcov-report/select.js.html +0 -431
  217. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  218. package/coverage/lcov-report/sorter.js +0 -170
  219. package/coverage/lcov.info +0 -195
  220. package/coverage/prettify.css +0 -1
  221. package/coverage/prettify.js +0 -2
  222. package/coverage/select.js.html +0 -431
  223. package/coverage/sort-arrow-sprite.png +0 -0
  224. package/coverage/sorter.js +0 -170
  225. package/test-fixtures/reducers/copy/01/pattern.txt +0 -1
  226. package/test-fixtures/reducers/copy/02/pattern.txt +0 -1
  227. package/test-fixtures/reducers/copy/03/pattern.txt +0 -1
  228. package/test-fixtures/reducers/copy/04/pattern.txt +0 -1
  229. package/test-fixtures/reducers/copy/05/pattern.txt +0 -1
  230. package/test-fixtures/reducers/select/01/expected-error.txt +0 -1
  231. package/test-fixtures/reducers/select/01/pattern.txt +0 -1
  232. package/test-fixtures/reducers/select/02/pattern.txt +0 -1
  233. package/test-fixtures/reducers/select/03/pattern.txt +0 -1
  234. package/test-fixtures/reducers/select/04/pattern.txt +0 -1
  235. package/test-fixtures/reducers/select/05/pattern.txt +0 -1
  236. package/test-fixtures/reducers/select/06/pattern.txt +0 -1
  237. package/test-fixtures/reducers/select/07/equalityFunction.txt +0 -1
  238. package/test-fixtures/reducers/select/07/pattern.txt +0 -1
  239. package/test-fixtures/reducers/select/08/pattern.txt +0 -1
  240. package/test-fixtures/reducers/select/09/pattern.txt +0 -1
  241. package/test-fixtures/reducers/select/10/equalityFunction.txt +0 -1
  242. package/test-fixtures/reducers/select/10/pattern.txt +0 -1
  243. package/test-fixtures/reducers/select/11/pattern.txt +0 -1
  244. package/test-fixtures/reducers/select/12/equalityFunction.txt +0 -1
  245. package/test-fixtures/reducers/select/12/pattern.txt +0 -1
  246. package/test-fixtures/reducers/select/13/pattern.txt +0 -1
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "compare fields 100 and 700, compareWithoutTag, adds missing 700 from source to base",
3
+ "tagPatternRegExp": "^(?<tags>100|700)$",
4
+ "compareWithoutTag": true,
5
+ "only": false
6
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "leader": "01331cam a22003494i 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "007346734"
7
+ },
8
+ {
9
+ "tag": "100",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {
14
+ "code": "a",
15
+ "value": "test"
16
+ }
17
+ ]
18
+ },
19
+ {
20
+ "tag": "700",
21
+ "ind1": " ",
22
+ "ind2": " ",
23
+ "subfields": [
24
+ {
25
+ "code": "a",
26
+ "value": "test2"
27
+ }
28
+ ]
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "leader": "01331cam a22003494i 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "007346734"
7
+ },
8
+ {
9
+ "tag": "100",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {"code": "a", "value": "original"}
14
+ ]
15
+ },
16
+ {
17
+ "tag": "700",
18
+ "ind1": " ",
19
+ "ind2": " ",
20
+ "subfields": [
21
+ {
22
+ "code": "a",
23
+ "value": "test"
24
+ }
25
+ ]
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "leader": "01331cam a22003494i 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "007346734"
7
+ },
8
+ {
9
+ "tag": "100",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {"code": "a", "value": "original"}
14
+ ]
15
+ },
16
+ {
17
+ "tag": "700",
18
+ "ind1": " ",
19
+ "ind2": " ",
20
+ "subfields": [
21
+ {
22
+ "code": "a",
23
+ "value": "test"
24
+ }
25
+ ]
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "description": "compare fields 100 and 700, compareWithoutTag, if copied: swapTag 700: base has 700 allready",
3
+ "tagPatternRegExp": "^(?<tags>100|700)$",
4
+ "compareWithoutTag": true,
5
+ "swapTag": [{"from": "^100$", "to": "700"}],
6
+ "only": false
7
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "leader": "01331cam a22003494i 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "007346734"
7
+ },
8
+ {
9
+ "tag": "100",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {
14
+ "code": "a",
15
+ "value": "test"
16
+ }
17
+ ]
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "leader": "01331cam a22003494i 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "007346734"
7
+ },
8
+ {
9
+ "tag": "100",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {"code": "a", "value": "original"}
14
+ ]
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "leader": "01331cam a22003494i 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "007346734"
7
+ },
8
+ {
9
+ "tag": "100",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {"code": "a", "value": "original"}
14
+ ]
15
+ },
16
+ {
17
+ "tag": "700",
18
+ "ind1": " ",
19
+ "ind2": " ",
20
+ "subfields": [
21
+ {
22
+ "code": "a",
23
+ "value": "test"
24
+ }
25
+ ]
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "description": "compare fields 100 and 700, compareWithoutTag, if copied: swapTag 700: copy source 700 just once",
3
+ "tagPatternRegExp": "^(?<tags>100|700)$",
4
+ "compareWithoutTag": true,
5
+ "swapTag": [{"from": "^100$", "to": "700"}],
6
+ "only": false
7
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "leader": "01331cam a22003494i 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "007346734"
7
+ },
8
+ {
9
+ "tag": "100",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {
14
+ "code": "a",
15
+ "value": "test"
16
+ }
17
+ ]
18
+ },
19
+ {
20
+ "tag": "700",
21
+ "ind1": " ",
22
+ "ind2": " ",
23
+ "subfields": [
24
+ {
25
+ "code": "a",
26
+ "value": "test"
27
+ }
28
+ ]
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "leader": "01331cam a22003494i 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "007346734"
7
+ },
8
+ {
9
+ "tag": "100",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {"code": "a", "value": "original"}
14
+ ]
15
+ },
16
+ {
17
+ "tag": "700",
18
+ "ind1": " ",
19
+ "ind2": " ",
20
+ "subfields": [
21
+ {
22
+ "code": "a",
23
+ "value": "test"
24
+ }
25
+ ]
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "leader": "01331cam a22003494i 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "007346734"
7
+ },
8
+ {
9
+ "tag": "100",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {"code": "a", "value": "original"}
14
+ ]
15
+ },
16
+ {
17
+ "tag": "700",
18
+ "ind1": " ",
19
+ "ind2": " ",
20
+ "subfields": [
21
+ {
22
+ "code": "a",
23
+ "value": "test"
24
+ }
25
+ ]
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "description": "compare fields 100 and 700, compareWithoutTag, if copied: swapTag 700: base has 700 allready",
3
+ "tagPatternRegExp": "^(?<tags>100|700)$",
4
+ "compareWithoutTag": true,
5
+ "swapTag": [{"from": "^100$", "to": "700"}],
6
+ "only": false
7
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "leader": "01331cam a22003494i 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "007346734"
7
+ },
8
+ {
9
+ "tag": "100",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {"code": "a", "value": "original"}
14
+ ]
15
+ },
16
+ {
17
+ "tag": "100",
18
+ "ind1": " ",
19
+ "ind2": " ",
20
+ "subfields": [
21
+ {
22
+ "code": "a",
23
+ "value": "test"
24
+ }
25
+ ]
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "description": "",
3
+ "tagPatternRegExp": "^$"
4
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "description": "The field is a control field (contains 'value') --> error message",
3
+ "tagPatternRegExp": "^010$",
4
+ "expectedError": "Invalid control field, expected data field"
5
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "description": "If there are multiple fields, return base",
3
+ "tagPatternRegExp": "^010$"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "description": "Base and source tags are equal for one field --> return base",
3
+ "tagPatternRegExp": "^010$"
4
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "description": "Base and source tags are not equal --> return base",
3
+ "note": "to test for this, tagPattern has to allow two tags, otherwise the unequal tag does not even pass source.get(tagPattern)",
4
+ "tagPatternRegExp": "^(010|020)$"
5
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "description": "Normalize subfield values (base and source are equal) --> return base",
3
+ "tagPatternRegExp": "^010$"
4
+ }
@@ -14,6 +14,10 @@
14
14
  "code": "a",
15
15
  "value": "Héllõ .,-/ Wörld .,-/#!$%^&*;:{}=_`~()[]"
16
16
  },
17
+ {
18
+ "code": "a",
19
+ "value": "jotain"
20
+ },
17
21
  {
18
22
  "code": "b",
19
23
  "value": " çšŕ#!$%ňŭųœ #!$%ËÑĶãýğĝŧŵ"
@@ -14,6 +14,10 @@
14
14
  "code": "a",
15
15
  "value": "Héllõ .,-/ Wörld .,-/#!$%^&*;:{}=_`~()[]"
16
16
  },
17
+ {
18
+ "code": "a",
19
+ "value": "jotain"
20
+ },
17
21
  {
18
22
  "code": "b",
19
23
  "value": " çšŕ#!$%ňŭųœ #!$%ËÑĶãýğĝŧŵ"
@@ -0,0 +1,4 @@
1
+ {
2
+ "description": "Two subfields, both equal --> return base",
3
+ "tagPatternRegExp": "^010$"
4
+ }
@@ -10,6 +10,10 @@
10
10
  "ind1": " ",
11
11
  "ind2": " ",
12
12
  "subfields": [
13
+ {
14
+ "code": "a",
15
+ "value": "jotain"
16
+ },
13
17
  {
14
18
  "code": "a",
15
19
  "value": "Héllõ .,-/ Wörld .,-/#!$%^&*;:{}=_`~()[]"
@@ -0,0 +1,5 @@
1
+ {
2
+ "description": "Two subfields, same codes, values of source are subsets of values of base --> replaceBasefieldWithSourcefield",
3
+ "tagPatternRegExp": "^010$",
4
+ "useSubsetEquality": true
5
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "description": "Two subfields, one is a subset, one has a different code --> return base",
3
+ "tagPatternRegExp": "^010"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "description": "Two subfields, same codes, values are not subsets --> return base",
3
+ "tagPatternRegExp": "^010$"
4
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "description": "SourceField is a proper superset of baseField (subfields a and b are equal, c is new) --> replaceBasefieldWithSourcefield",
3
+ "tagPatternRegExp": "^010$",
4
+ "useSubsetEquality": true
5
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "description": "SourceField is not a proper superset of baseField (different values in a and b, also new subfield c) --> return base",
3
+ "tagPatternRegExp": "^010$"
4
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "description": "SourceField is a proper superset of baseField (base values a and b are subsets of source values a and b, c is new in source) --> replaceBasefieldWithSourcefield",
3
+ "tagPatternRegExp": "^010$",
4
+ "useSubsetEquality": true
5
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "description": "Opposite of test 12, baseField is a proper superset of sourceField --> return base",
3
+ "tagPatternRegExp": "^010$"
4
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "leader": "01331cam a22003494i 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "007346734"
7
+ },
8
+ {
9
+ "tag": "010",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {
14
+ "code": "a",
15
+ "value": "Москва !?&"
16
+ },
17
+ {
18
+ "code": "b",
19
+ "value": "Академия %&?, наук СССР"
20
+ }
21
+ ]
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "leader": "01331cam a22003494i 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "007346734"
7
+ },
8
+ {
9
+ "tag": "010",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {
14
+ "code": "a",
15
+ "value": "Москва !?&"
16
+ },
17
+ {
18
+ "code": "b",
19
+ "value": "Академия %&?, наук СССР"
20
+ }
21
+ ]
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "description": "Normalization test with Cyrillic characters",
3
+ "tagPatternRegExp": "^010$"
4
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "leader": "01331cam a22003494i 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "007346734"
7
+ },
8
+ {
9
+ "tag": "010",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {
14
+ "code": "a",
15
+ "value": "Москва !?&"
16
+ },
17
+ {
18
+ "code": "b",
19
+ "value": "Академия %&?, наук СССР"
20
+ }
21
+ ]
22
+ }
23
+ ]
24
+ }
package/.drone.yml DELETED
@@ -1,92 +0,0 @@
1
- ---
2
- kind: pipeline
3
- type: docker
4
- name: Default
5
-
6
- trigger:
7
- event:
8
- - push
9
- - tag
10
-
11
- steps:
12
-
13
- - name: audit
14
- image: node:12
15
- commands:
16
- - npm audit --package-lock-only --production --audit-level=moderate
17
-
18
- - name: install
19
- image: node:12
20
- environment:
21
- NPM_CONFIG_IGNORE_SCRIPTS: true
22
- commands:
23
- - npm ci
24
-
25
- - name: test
26
- image: node:12
27
- commands:
28
- - npm test
29
-
30
- - name: check-coverage
31
- image: node:12
32
- commands:
33
- - npm run coverage
34
-
35
- - name: build
36
- image: node:12
37
- commands:
38
- - npm run build
39
- - NPM_CONFIG_IGNORE_SCRIPTS=false npm ci --production
40
-
41
- - name: static-security-scan
42
- image: quay.io/natlibfi/njsscan
43
- commands:
44
- - njsscan dist
45
-
46
- - name: npm
47
- image: plugins/npm
48
- settings:
49
- registry: 'https://registry.npmjs.org/'
50
- token:
51
- from_secret: npm_token
52
- when:
53
- event: tag
54
- ---
55
- kind: pipeline
56
- type: docker
57
- name: Update dependencies
58
-
59
- trigger:
60
- event:
61
- - custom
62
- branch:
63
- - master
64
-
65
- steps:
66
-
67
- - name: publish
68
- image: quay.io/natlibfi/drone-npm-git-publish
69
- settings:
70
- git_user_name: natlibfi-melinda-automation
71
- git_user_email: 65649125+natlibfi-melinda-automation@users.noreply.github.com
72
- git_ssh_key:
73
- from_secret: ssh_key
74
- git_gpg_key:
75
- from_secret: gpg_key
76
- ---
77
- kind: secret
78
- name: npm_token
79
- data: IB5vm9V6fNh9O1FFF9rv2eBMNy+WiZpxjfNhlq9DIX5wDYXXY1Xk64llB1YwDXiBqJDW2kIjAIc8vXG+xU3jmw==
80
- ---
81
- kind: secret
82
- name: ssh_key
83
- data: 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
84
- ---
85
- kind: secret
86
- name: gpg_key
87
- data: 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
88
- ---
89
- kind: signature
90
- hmac: f034b963f89e18099ba4b127ced0413c1f1ef3a5806f2892da32a52675b66155
91
-
92
- ...