@cloudant/couchbackup 2.9.9 → 2.9.10-SNAPSHOT.105

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 (382) hide show
  1. package/.scannerwork/report-task.txt +2 -2
  2. package/.scannerwork/scanner-report/analysis-warnings.pb +2 -2
  3. package/.scannerwork/scanner-report/changesets-11.pb +1 -0
  4. package/.scannerwork/scanner-report/changesets-12.pb +1 -0
  5. package/.scannerwork/scanner-report/changesets-13.pb +1 -0
  6. package/.scannerwork/scanner-report/changesets-14.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-15.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-16.pb +1 -0
  9. package/.scannerwork/scanner-report/changesets-17.pb +1 -0
  10. package/.scannerwork/scanner-report/changesets-4.pb +1 -0
  11. package/.scannerwork/scanner-report/changesets-51.pb +1 -0
  12. package/.scannerwork/scanner-report/changesets-53.pb +1 -0
  13. package/.scannerwork/scanner-report/changesets-54.pb +1 -0
  14. package/.scannerwork/scanner-report/component-1.pb +2 -1
  15. package/.scannerwork/scanner-report/component-10.pb +2 -0
  16. package/.scannerwork/scanner-report/component-11.pb +1 -0
  17. package/.scannerwork/scanner-report/component-12.pb +1 -0
  18. package/.scannerwork/scanner-report/component-13.pb +1 -0
  19. package/.scannerwork/scanner-report/component-14.pb +1 -0
  20. package/.scannerwork/scanner-report/component-15.pb +1 -0
  21. package/.scannerwork/scanner-report/component-16.pb +1 -0
  22. package/.scannerwork/scanner-report/component-17.pb +1 -0
  23. package/.scannerwork/scanner-report/component-18.pb +1 -1
  24. package/.scannerwork/scanner-report/component-19.pb +1 -1
  25. package/.scannerwork/scanner-report/component-2.pb +1 -1
  26. package/.scannerwork/scanner-report/component-20.pb +1 -1
  27. package/.scannerwork/scanner-report/component-21.pb +1 -1
  28. package/.scannerwork/scanner-report/component-22.pb +1 -1
  29. package/.scannerwork/scanner-report/component-23.pb +1 -1
  30. package/.scannerwork/scanner-report/component-24.pb +1 -1
  31. package/.scannerwork/scanner-report/component-26.pb +1 -1
  32. package/.scannerwork/scanner-report/component-27.pb +1 -1
  33. package/.scannerwork/scanner-report/component-3.pb +1 -1
  34. package/.scannerwork/scanner-report/component-30.pb +1 -1
  35. package/.scannerwork/scanner-report/component-32.pb +1 -1
  36. package/.scannerwork/scanner-report/component-33.pb +1 -1
  37. package/.scannerwork/scanner-report/component-35.pb +1 -1
  38. package/.scannerwork/scanner-report/component-36.pb +1 -1
  39. package/.scannerwork/scanner-report/component-37.pb +1 -1
  40. package/.scannerwork/scanner-report/component-38.pb +1 -1
  41. package/.scannerwork/scanner-report/component-39.pb +1 -1
  42. package/.scannerwork/scanner-report/component-4.pb +1 -1
  43. package/.scannerwork/scanner-report/component-51.pb +1 -0
  44. package/.scannerwork/scanner-report/component-52.pb +1 -1
  45. package/.scannerwork/scanner-report/component-53.pb +1 -0
  46. package/.scannerwork/scanner-report/component-54.pb +1 -0
  47. package/.scannerwork/scanner-report/component-55.pb +1 -1
  48. package/.scannerwork/scanner-report/component-56.pb +1 -1
  49. package/.scannerwork/scanner-report/component-57.pb +1 -1
  50. package/.scannerwork/scanner-report/component-58.pb +1 -1
  51. package/.scannerwork/scanner-report/component-59.pb +1 -1
  52. package/.scannerwork/scanner-report/component-60.pb +1 -1
  53. package/.scannerwork/scanner-report/component-61.pb +1 -1
  54. package/.scannerwork/scanner-report/component-62.pb +1 -1
  55. package/.scannerwork/scanner-report/component-63.pb +1 -1
  56. package/.scannerwork/scanner-report/component-64.pb +1 -1
  57. package/.scannerwork/scanner-report/component-65.pb +1 -1
  58. package/.scannerwork/scanner-report/component-66.pb +1 -1
  59. package/.scannerwork/scanner-report/component-67.pb +1 -1
  60. package/.scannerwork/scanner-report/component-68.pb +1 -1
  61. package/.scannerwork/scanner-report/coverages-11.pb +0 -0
  62. package/.scannerwork/scanner-report/coverages-12.pb +0 -0
  63. package/.scannerwork/scanner-report/coverages-13.pb +0 -0
  64. package/.scannerwork/scanner-report/coverages-14.pb +0 -0
  65. package/.scannerwork/scanner-report/coverages-16.pb +0 -0
  66. package/.scannerwork/scanner-report/coverages-17.pb +0 -0
  67. package/.scannerwork/scanner-report/coverages-18.pb +0 -0
  68. package/.scannerwork/scanner-report/coverages-19.pb +0 -0
  69. package/.scannerwork/scanner-report/coverages-2.pb +0 -0
  70. package/.scannerwork/scanner-report/coverages-20.pb +0 -0
  71. package/.scannerwork/scanner-report/coverages-21.pb +0 -0
  72. package/.scannerwork/scanner-report/coverages-22.pb +0 -0
  73. package/.scannerwork/scanner-report/coverages-23.pb +0 -0
  74. package/.scannerwork/scanner-report/coverages-24.pb +0 -0
  75. package/.scannerwork/scanner-report/coverages-3.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-30.pb +0 -0
  77. package/.scannerwork/scanner-report/coverages-32.pb +0 -0
  78. package/.scannerwork/scanner-report/coverages-33.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-35.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-36.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-37.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-38.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-39.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-54.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-55.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-56.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-57.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-58.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-59.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-60.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-61.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-62.pb +0 -0
  94. package/.scannerwork/scanner-report/coverages-63.pb +0 -0
  95. package/.scannerwork/scanner-report/coverages-64.pb +0 -0
  96. package/.scannerwork/scanner-report/coverages-65.pb +0 -0
  97. package/.scannerwork/scanner-report/coverages-66.pb +0 -0
  98. package/.scannerwork/scanner-report/coverages-67.pb +0 -0
  99. package/.scannerwork/scanner-report/duplications-17.pb +2 -0
  100. package/.scannerwork/scanner-report/duplications-19.pb +2 -0
  101. package/.scannerwork/scanner-report/duplications-22.pb +0 -3
  102. package/.scannerwork/scanner-report/duplications-3.pb +2 -0
  103. package/.scannerwork/scanner-report/duplications-30.pb +0 -2
  104. package/.scannerwork/scanner-report/duplications-37.pb +3 -2
  105. package/.scannerwork/scanner-report/duplications-39.pb +3 -0
  106. package/.scannerwork/scanner-report/duplications-4.pb +2 -0
  107. package/.scannerwork/scanner-report/duplications-51.pb +0 -0
  108. package/.scannerwork/scanner-report/duplications-54.pb +0 -0
  109. package/.scannerwork/scanner-report/duplications-56.pb +0 -2
  110. package/.scannerwork/scanner-report/duplications-59.pb +2 -0
  111. package/.scannerwork/scanner-report/duplications-61.pb +2 -0
  112. package/.scannerwork/scanner-report/duplications-62.pb +3 -0
  113. package/.scannerwork/scanner-report/duplications-63.pb +0 -2
  114. package/.scannerwork/scanner-report/measures-11.pb +0 -0
  115. package/.scannerwork/scanner-report/measures-12.pb +0 -0
  116. package/.scannerwork/scanner-report/measures-13.pb +15 -0
  117. package/.scannerwork/scanner-report/measures-14.pb +16 -0
  118. package/.scannerwork/scanner-report/measures-15.pb +0 -0
  119. package/.scannerwork/scanner-report/measures-16.pb +0 -0
  120. package/.scannerwork/scanner-report/measures-17.pb +0 -0
  121. package/.scannerwork/scanner-report/measures-18.pb +0 -0
  122. package/.scannerwork/scanner-report/measures-19.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-2.pb +0 -0
  124. package/.scannerwork/scanner-report/measures-20.pb +0 -0
  125. package/.scannerwork/scanner-report/measures-21.pb +0 -0
  126. package/.scannerwork/scanner-report/measures-22.pb +0 -0
  127. package/.scannerwork/scanner-report/measures-23.pb +0 -0
  128. package/.scannerwork/scanner-report/measures-24.pb +0 -0
  129. package/.scannerwork/scanner-report/measures-26.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-27.pb +0 -0
  131. package/.scannerwork/scanner-report/measures-3.pb +0 -0
  132. package/.scannerwork/scanner-report/measures-30.pb +0 -0
  133. package/.scannerwork/scanner-report/measures-32.pb +0 -0
  134. package/.scannerwork/scanner-report/measures-33.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-35.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-36.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-37.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-38.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-39.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-4.pb +0 -0
  141. package/.scannerwork/scanner-report/measures-51.pb +0 -0
  142. package/.scannerwork/scanner-report/measures-52.pb +0 -0
  143. package/.scannerwork/scanner-report/measures-54.pb +0 -0
  144. package/.scannerwork/scanner-report/measures-55.pb +0 -0
  145. package/.scannerwork/scanner-report/measures-56.pb +0 -0
  146. package/.scannerwork/scanner-report/measures-57.pb +0 -0
  147. package/.scannerwork/scanner-report/measures-58.pb +0 -0
  148. package/.scannerwork/scanner-report/measures-59.pb +0 -0
  149. package/.scannerwork/scanner-report/measures-60.pb +0 -0
  150. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  151. package/.scannerwork/scanner-report/measures-62.pb +0 -0
  152. package/.scannerwork/scanner-report/measures-63.pb +0 -0
  153. package/.scannerwork/scanner-report/measures-64.pb +0 -0
  154. package/.scannerwork/scanner-report/measures-65.pb +0 -0
  155. package/.scannerwork/scanner-report/measures-66.pb +0 -0
  156. package/.scannerwork/scanner-report/measures-67.pb +0 -0
  157. package/.scannerwork/scanner-report/measures-68.pb +0 -0
  158. package/.scannerwork/scanner-report/metadata.pb +0 -0
  159. package/.scannerwork/scanner-report/{source-50.txt → source-10.txt} +49 -49
  160. package/.scannerwork/scanner-report/source-11.txt +118 -0
  161. package/.scannerwork/scanner-report/source-12.txt +164 -0
  162. package/.scannerwork/scanner-report/source-13.txt +104 -0
  163. package/.scannerwork/scanner-report/source-14.txt +178 -0
  164. package/.scannerwork/scanner-report/source-15.txt +281 -0
  165. package/.scannerwork/scanner-report/source-16.txt +31 -0
  166. package/.scannerwork/scanner-report/source-17.txt +75 -0
  167. package/.scannerwork/scanner-report/source-18.txt +94 -19
  168. package/.scannerwork/scanner-report/source-19.txt +67 -75
  169. package/.scannerwork/scanner-report/source-2.txt +99 -41
  170. package/.scannerwork/scanner-report/source-20.txt +25 -18
  171. package/.scannerwork/scanner-report/source-21.txt +114 -351
  172. package/.scannerwork/scanner-report/source-22.txt +57 -96
  173. package/.scannerwork/scanner-report/source-23.txt +39 -48
  174. package/.scannerwork/scanner-report/source-24.txt +32 -78
  175. package/.scannerwork/scanner-report/source-26.txt +509 -156
  176. package/.scannerwork/scanner-report/source-27.txt +509 -625
  177. package/.scannerwork/scanner-report/source-3.txt +172 -59
  178. package/.scannerwork/scanner-report/source-30.txt +362 -237
  179. package/.scannerwork/scanner-report/source-32.txt +62 -14
  180. package/.scannerwork/scanner-report/source-33.txt +40 -31
  181. package/.scannerwork/scanner-report/source-35.txt +24 -45
  182. package/.scannerwork/scanner-report/source-36.txt +125 -19
  183. package/.scannerwork/scanner-report/source-37.txt +88 -114
  184. package/.scannerwork/scanner-report/source-38.txt +126 -47
  185. package/.scannerwork/scanner-report/source-39.txt +201 -104
  186. package/.scannerwork/scanner-report/source-4.txt +175 -509
  187. package/.scannerwork/scanner-report/source-51.txt +625 -0
  188. package/.scannerwork/scanner-report/source-52.txt +43 -94
  189. package/.scannerwork/scanner-report/source-54.txt +68 -0
  190. package/.scannerwork/scanner-report/source-55.txt +19 -29
  191. package/.scannerwork/scanner-report/source-56.txt +19 -76
  192. package/.scannerwork/scanner-report/source-57.txt +139 -112
  193. package/.scannerwork/scanner-report/source-58.txt +20 -104
  194. package/.scannerwork/scanner-report/source-59.txt +273 -91
  195. package/.scannerwork/scanner-report/source-60.txt +351 -163
  196. package/.scannerwork/scanner-report/source-61.txt +124 -83
  197. package/.scannerwork/scanner-report/source-62.txt +113 -36
  198. package/.scannerwork/scanner-report/source-63.txt +67 -50
  199. package/.scannerwork/scanner-report/source-64.txt +79 -20
  200. package/.scannerwork/scanner-report/source-65.txt +46 -58
  201. package/.scannerwork/scanner-report/source-66.txt +21 -16
  202. package/.scannerwork/scanner-report/source-67.txt +15 -150
  203. package/.scannerwork/scanner-report/source-68.txt +509 -281
  204. package/.scannerwork/scanner-report/symbols-11.pb +30 -0
  205. package/.scannerwork/scanner-report/symbols-12.pb +126 -0
  206. package/.scannerwork/scanner-report/symbols-13.pb +42 -0
  207. package/.scannerwork/scanner-report/symbols-14.pb +144 -0
  208. package/.scannerwork/scanner-report/symbols-16.pb +14 -0
  209. package/.scannerwork/scanner-report/symbols-17.pb +42 -0
  210. package/.scannerwork/scanner-report/symbols-18.pb +59 -14
  211. package/.scannerwork/scanner-report/symbols-19.pb +43 -68
  212. package/.scannerwork/scanner-report/symbols-2.pb +28 -19
  213. package/.scannerwork/scanner-report/symbols-20.pb +17 -9
  214. package/.scannerwork/scanner-report/symbols-21.pb +33 -494
  215. package/.scannerwork/scanner-report/symbols-22.pb +41 -72
  216. package/.scannerwork/scanner-report/symbols-23.pb +14 -42
  217. package/.scannerwork/scanner-report/symbols-24.pb +20 -60
  218. package/.scannerwork/scanner-report/symbols-3.pb +180 -30
  219. package/.scannerwork/scanner-report/symbols-30.pb +554 -430
  220. package/.scannerwork/scanner-report/symbols-32.pb +30 -9
  221. package/.scannerwork/scanner-report/symbols-33.pb +19 -27
  222. package/.scannerwork/scanner-report/symbols-35.pb +27 -36
  223. package/.scannerwork/scanner-report/symbols-36.pb +116 -11
  224. package/.scannerwork/scanner-report/symbols-37.pb +77 -102
  225. package/.scannerwork/scanner-report/symbols-38.pb +85 -45
  226. package/.scannerwork/scanner-report/symbols-39.pb +394 -85
  227. package/.scannerwork/scanner-report/symbols-52.pb +42 -27
  228. package/.scannerwork/scanner-report/symbols-54.pb +45 -0
  229. package/.scannerwork/scanner-report/symbols-55.pb +14 -20
  230. package/.scannerwork/scanner-report/symbols-56.pb +16 -43
  231. package/.scannerwork/scanner-report/symbols-57.pb +110 -31
  232. package/.scannerwork/scanner-report/symbols-58.pb +10 -30
  233. package/.scannerwork/scanner-report/symbols-59.pb +485 -58
  234. package/.scannerwork/scanner-report/symbols-60.pb +494 -144
  235. package/.scannerwork/scanner-report/symbols-61.pb +102 -42
  236. package/.scannerwork/scanner-report/symbols-62.pb +97 -15
  237. package/.scannerwork/scanner-report/symbols-63.pb +60 -42
  238. package/.scannerwork/scanner-report/symbols-64.pb +68 -17
  239. package/.scannerwork/scanner-report/symbols-65.pb +33 -43
  240. package/.scannerwork/scanner-report/symbols-66.pb +11 -14
  241. package/.scannerwork/scanner-report/symbols-67.pb +9 -126
  242. package/.scannerwork/scanner-report/{syntax-highlightings-50.pb → syntax-highlightings-10.pb} +18 -18
  243. package/.scannerwork/scanner-report/syntax-highlightings-11.pb +113 -0
  244. package/.scannerwork/scanner-report/syntax-highlightings-12.pb +213 -0
  245. package/.scannerwork/scanner-report/syntax-highlightings-13.pb +116 -0
  246. package/.scannerwork/scanner-report/syntax-highlightings-14.pb +243 -0
  247. package/.scannerwork/scanner-report/syntax-highlightings-15.pb +285 -0
  248. package/.scannerwork/scanner-report/syntax-highlightings-16.pb +45 -0
  249. package/.scannerwork/scanner-report/syntax-highlightings-17.pb +78 -0
  250. package/.scannerwork/scanner-report/syntax-highlightings-18.pb +101 -22
  251. package/.scannerwork/scanner-report/syntax-highlightings-19.pb +51 -66
  252. package/.scannerwork/scanner-report/syntax-highlightings-2.pb +117 -61
  253. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +20 -20
  254. package/.scannerwork/scanner-report/syntax-highlightings-21.pb +93 -594
  255. package/.scannerwork/scanner-report/syntax-highlightings-22.pb +58 -121
  256. package/.scannerwork/scanner-report/syntax-highlightings-23.pb +24 -52
  257. package/.scannerwork/scanner-report/syntax-highlightings-24.pb +32 -78
  258. package/.scannerwork/scanner-report/syntax-highlightings-26.pb +3727 -201
  259. package/.scannerwork/scanner-report/syntax-highlightings-27.pb +3396 -536
  260. package/.scannerwork/scanner-report/syntax-highlightings-3.pb +200 -78
  261. package/.scannerwork/scanner-report/syntax-highlightings-30.pb +403 -414
  262. package/.scannerwork/scanner-report/syntax-highlightings-32.pb +84 -29
  263. package/.scannerwork/scanner-report/syntax-highlightings-33.pb +59 -45
  264. package/.scannerwork/scanner-report/syntax-highlightings-35.pb +31 -58
  265. package/.scannerwork/scanner-report/syntax-highlightings-36.pb +100 -25
  266. package/.scannerwork/scanner-report/syntax-highlightings-37.pb +118 -187
  267. package/.scannerwork/scanner-report/syntax-highlightings-38.pb +151 -70
  268. package/.scannerwork/scanner-report/syntax-highlightings-39.pb +281 -143
  269. package/.scannerwork/scanner-report/syntax-highlightings-4.pb +199 -3732
  270. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +887 -0
  271. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +45 -101
  272. package/.scannerwork/scanner-report/syntax-highlightings-54.pb +110 -0
  273. package/.scannerwork/scanner-report/syntax-highlightings-55.pb +24 -34
  274. package/.scannerwork/scanner-report/syntax-highlightings-56.pb +30 -57
  275. package/.scannerwork/scanner-report/syntax-highlightings-57.pb +185 -91
  276. package/.scannerwork/scanner-report/syntax-highlightings-58.pb +21 -84
  277. package/.scannerwork/scanner-report/syntax-highlightings-59.pb +621 -95
  278. package/.scannerwork/scanner-report/syntax-highlightings-60.pb +552 -165
  279. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +195 -84
  280. package/.scannerwork/scanner-report/syntax-highlightings-62.pb +153 -25
  281. package/.scannerwork/scanner-report/syntax-highlightings-63.pb +75 -43
  282. package/.scannerwork/scanner-report/syntax-highlightings-64.pb +73 -18
  283. package/.scannerwork/scanner-report/syntax-highlightings-65.pb +60 -60
  284. package/.scannerwork/scanner-report/syntax-highlightings-66.pb +30 -16
  285. package/.scannerwork/scanner-report/syntax-highlightings-67.pb +16 -181
  286. package/.scannerwork/scanner-report/syntax-highlightings-68.pb +3661 -199
  287. package/package.json +1 -1
  288. package/test-16-results.xml +152 -152
  289. package/test-18-results.xml +145 -145
  290. package/test-20-results.xml +143 -143
  291. package/test-iam-18-results.xml +49 -49
  292. package/.scannerwork/scanner-report/changesets-25.pb +0 -1
  293. package/.scannerwork/scanner-report/changesets-26.pb +0 -1
  294. package/.scannerwork/scanner-report/changesets-27.pb +0 -1
  295. package/.scannerwork/scanner-report/changesets-28.pb +0 -1
  296. package/.scannerwork/scanner-report/changesets-29.pb +0 -1
  297. package/.scannerwork/scanner-report/changesets-31.pb +0 -1
  298. package/.scannerwork/scanner-report/changesets-34.pb +0 -1
  299. package/.scannerwork/scanner-report/changesets-45.pb +0 -1
  300. package/.scannerwork/scanner-report/changesets-47.pb +0 -1
  301. package/.scannerwork/scanner-report/changesets-49.pb +0 -1
  302. package/.scannerwork/scanner-report/changesets-68.pb +0 -1
  303. package/.scannerwork/scanner-report/component-25.pb +0 -1
  304. package/.scannerwork/scanner-report/component-28.pb +0 -1
  305. package/.scannerwork/scanner-report/component-29.pb +0 -1
  306. package/.scannerwork/scanner-report/component-31.pb +0 -1
  307. package/.scannerwork/scanner-report/component-34.pb +0 -1
  308. package/.scannerwork/scanner-report/component-40.pb +0 -1
  309. package/.scannerwork/scanner-report/component-45.pb +0 -1
  310. package/.scannerwork/scanner-report/component-47.pb +0 -1
  311. package/.scannerwork/scanner-report/component-49.pb +0 -1
  312. package/.scannerwork/scanner-report/component-50.pb +0 -1
  313. package/.scannerwork/scanner-report/component-69.pb +0 -1
  314. package/.scannerwork/scanner-report/coverages-25.pb +0 -0
  315. package/.scannerwork/scanner-report/coverages-26.pb +0 -0
  316. package/.scannerwork/scanner-report/coverages-28.pb +0 -0
  317. package/.scannerwork/scanner-report/coverages-31.pb +0 -0
  318. package/.scannerwork/scanner-report/coverages-34.pb +0 -0
  319. package/.scannerwork/scanner-report/coverages-45.pb +0 -0
  320. package/.scannerwork/scanner-report/coverages-49.pb +0 -0
  321. package/.scannerwork/scanner-report/duplications-28.pb +0 -3
  322. package/.scannerwork/scanner-report/duplications-34.pb +0 -3
  323. package/.scannerwork/scanner-report/duplications-47.pb +0 -2
  324. package/.scannerwork/scanner-report/duplications-49.pb +0 -2
  325. package/.scannerwork/scanner-report/measures-25.pb +0 -0
  326. package/.scannerwork/scanner-report/measures-28.pb +0 -0
  327. package/.scannerwork/scanner-report/measures-31.pb +0 -0
  328. package/.scannerwork/scanner-report/measures-34.pb +0 -0
  329. package/.scannerwork/scanner-report/measures-40.pb +0 -0
  330. package/.scannerwork/scanner-report/measures-45.pb +0 -0
  331. package/.scannerwork/scanner-report/measures-47.pb +0 -0
  332. package/.scannerwork/scanner-report/measures-49.pb +0 -0
  333. package/.scannerwork/scanner-report/measures-69.pb +0 -0
  334. package/.scannerwork/scanner-report/source-25.txt +0 -142
  335. package/.scannerwork/scanner-report/source-28.txt +0 -244
  336. package/.scannerwork/scanner-report/source-31.txt +0 -35
  337. package/.scannerwork/scanner-report/source-34.txt +0 -131
  338. package/.scannerwork/scanner-report/source-40.txt +0 -509
  339. package/.scannerwork/scanner-report/source-45.txt +0 -418
  340. package/.scannerwork/scanner-report/source-47.txt +0 -175
  341. package/.scannerwork/scanner-report/source-49.txt +0 -190
  342. package/.scannerwork/scanner-report/source-69.txt +0 -509
  343. package/.scannerwork/scanner-report/symbols-25.pb +0 -116
  344. package/.scannerwork/scanner-report/symbols-26.pb +0 -112
  345. package/.scannerwork/scanner-report/symbols-28.pb +0 -394
  346. package/.scannerwork/scanner-report/symbols-31.pb +0 -17
  347. package/.scannerwork/scanner-report/symbols-34.pb +0 -97
  348. package/.scannerwork/scanner-report/symbols-45.pb +0 -610
  349. package/.scannerwork/scanner-report/symbols-49.pb +0 -180
  350. package/.scannerwork/scanner-report/syntax-highlightings-25.pb +0 -134
  351. package/.scannerwork/scanner-report/syntax-highlightings-28.pb +0 -329
  352. package/.scannerwork/scanner-report/syntax-highlightings-31.pb +0 -63
  353. package/.scannerwork/scanner-report/syntax-highlightings-34.pb +0 -182
  354. package/.scannerwork/scanner-report/syntax-highlightings-40.pb +0 -3747
  355. package/.scannerwork/scanner-report/syntax-highlightings-45.pb +0 -648
  356. package/.scannerwork/scanner-report/syntax-highlightings-47.pb +0 -214
  357. package/.scannerwork/scanner-report/syntax-highlightings-49.pb +0 -225
  358. package/.scannerwork/scanner-report/syntax-highlightings-69.pb +0 -3748
  359. /package/.scannerwork/scanner-report/{coverages-68.pb → coverages-15.pb} +0 -0
  360. /package/.scannerwork/scanner-report/{coverages-47.pb → coverages-4.pb} +0 -0
  361. /package/.scannerwork/scanner-report/{coverages-27.pb → coverages-51.pb} +0 -0
  362. /package/.scannerwork/scanner-report/{coverages-29.pb → coverages-53.pb} +0 -0
  363. /package/.scannerwork/scanner-report/{duplications-25.pb → duplications-11.pb} +0 -0
  364. /package/.scannerwork/scanner-report/{duplications-26.pb → duplications-12.pb} +0 -0
  365. /package/.scannerwork/scanner-report/{duplications-27.pb → duplications-13.pb} +0 -0
  366. /package/.scannerwork/scanner-report/{duplications-31.pb → duplications-14.pb} +0 -0
  367. /package/.scannerwork/scanner-report/{duplications-45.pb → duplications-15.pb} +0 -0
  368. /package/.scannerwork/scanner-report/{duplications-67.pb → duplications-16.pb} +0 -0
  369. /package/.scannerwork/scanner-report/{duplications-68.pb → duplications-32.pb} +0 -0
  370. /package/.scannerwork/scanner-report/{duplications-29.pb → duplications-53.pb} +0 -0
  371. /package/.scannerwork/scanner-report/{issues-33.pb → issues-35.pb} +0 -0
  372. /package/.scannerwork/scanner-report/{issues-25.pb → issues-36.pb} +0 -0
  373. /package/.scannerwork/scanner-report/{issues-28.pb → issues-39.pb} +0 -0
  374. /package/.scannerwork/scanner-report/{issues-21.pb → issues-60.pb} +0 -0
  375. /package/.scannerwork/scanner-report/{measures-50.pb → measures-10.pb} +0 -0
  376. /package/.scannerwork/scanner-report/{measures-29.pb → measures-53.pb} +0 -0
  377. /package/.scannerwork/scanner-report/{source-29.txt → source-53.txt} +0 -0
  378. /package/.scannerwork/scanner-report/{symbols-68.pb → symbols-15.pb} +0 -0
  379. /package/.scannerwork/scanner-report/{symbols-47.pb → symbols-4.pb} +0 -0
  380. /package/.scannerwork/scanner-report/{symbols-27.pb → symbols-51.pb} +0 -0
  381. /package/.scannerwork/scanner-report/{symbols-29.pb → symbols-53.pb} +0 -0
  382. /package/.scannerwork/scanner-report/{syntax-highlightings-29.pb → syntax-highlightings-53.pb} +0 -0
@@ -1,167 +1,167 @@
1
1
  <testsuites name="test-iam">
2
- <testsuite name="Basic backup and restore using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:13:25" time="4.722">
3
- <testcase classname="test-iam.Basic backup and restore using API" name="should backup animaldb to a file correctly" time="1.076">
2
+ <testsuite name="Basic backup and restore using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:01:31" time="5.069">
3
+ <testcase classname="test-iam.Basic backup and restore using API" name="should backup animaldb to a file correctly" time="1.365">
4
4
  <system-out><![CDATA[{ total: 15 }
5
5
  ]]></system-out>
6
6
  </testcase>
7
- <testcase classname="test-iam.Basic backup and restore using API" name="should restore animaldb to a database correctly" time="1.935">
7
+ <testcase classname="test-iam.Basic backup and restore using API" name="should restore animaldb to a database correctly" time="1.999">
8
8
  <system-out><![CDATA[{ total: 15 }
9
9
  ]]></system-out>
10
10
  </testcase>
11
- <testcase classname="test-iam.Basic backup and restore using API" name="should execute a shallow mode backup successfully" time="0.588">
11
+ <testcase classname="test-iam.Basic backup and restore using API" name="should execute a shallow mode backup successfully" time="0.579">
12
12
  <system-out><![CDATA[{ total: 11 }
13
13
  ]]></system-out>
14
14
  </testcase>
15
15
  </testsuite>
16
- <testsuite name="Basic backup and restore using API Buffer size tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:13:30" time="11.35">
17
- <testcase classname="test-iam.Basic backup and restore using API Buffer size tests using API" name="should backup/restore animaldb with the same buffer size" time="3.758">
16
+ <testsuite name="Basic backup and restore using API Buffer size tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:01:36" time="11.408">
17
+ <testcase classname="test-iam.Basic backup and restore using API Buffer size tests using API" name="should backup/restore animaldb with the same buffer size" time="3.72">
18
18
  <system-out><![CDATA[{ total: 15 }
19
19
  { total: 15 }
20
20
  ]]></system-out>
21
21
  </testcase>
22
- <testcase classname="test-iam.Basic backup and restore using API Buffer size tests using API" name="should backup/restore animaldb with backup buffer &gt; restore buffer" time="3.331">
22
+ <testcase classname="test-iam.Basic backup and restore using API Buffer size tests using API" name="should backup/restore animaldb with backup buffer &gt; restore buffer" time="3.507">
23
23
  <system-out><![CDATA[{ total: 15 }
24
24
  { total: 15 }
25
25
  ]]></system-out>
26
26
  </testcase>
27
- <testcase classname="test-iam.Basic backup and restore using API Buffer size tests using API" name="should backup/restore animaldb with backup buffer &lt; restore buffer" time="3.466">
27
+ <testcase classname="test-iam.Basic backup and restore using API Buffer size tests using API" name="should backup/restore animaldb with backup buffer &lt; restore buffer" time="3.409">
28
28
  <system-out><![CDATA[{ total: 15 }
29
29
  { total: 15 }
30
30
  ]]></system-out>
31
31
  </testcase>
32
32
  </testsuite>
33
- <testsuite name="Basic backup and restore using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:13:41" time="5.456">
34
- <testcase classname="test-iam.Basic backup and restore using CLI" name="should backup animaldb to a file correctly" time="1.376">
33
+ <testsuite name="Basic backup and restore using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:01:48" time="5.348">
34
+ <testcase classname="test-iam.Basic backup and restore using CLI" name="should backup animaldb to a file correctly" time="1.262">
35
35
  <system-out><![CDATA[Backup process close 0 null
36
36
  ]]></system-out>
37
37
  </testcase>
38
- <testcase classname="test-iam.Basic backup and restore using CLI" name="should restore animaldb to a database correctly" time="2.27">
38
+ <testcase classname="test-iam.Basic backup and restore using CLI" name="should restore animaldb to a database correctly" time="2.175">
39
39
  </testcase>
40
- <testcase classname="test-iam.Basic backup and restore using CLI" name="should execute a shallow mode backup successfully" time="1.023">
40
+ <testcase classname="test-iam.Basic backup and restore using CLI" name="should execute a shallow mode backup successfully" time="1.129">
41
41
  <system-out><![CDATA[Backup process close 0 null
42
42
  ]]></system-out>
43
43
  </testcase>
44
44
  </testsuite>
45
- <testsuite name="Basic backup and restore using CLI Buffer size tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:13:46" time="14.538">
46
- <testcase classname="test-iam.Basic backup and restore using CLI Buffer size tests using CLI" name="should backup/restore animaldb with the same buffer size" time="4.416">
45
+ <testsuite name="Basic backup and restore using CLI Buffer size tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:01:53" time="13.923">
46
+ <testcase classname="test-iam.Basic backup and restore using CLI Buffer size tests using CLI" name="should backup/restore animaldb with the same buffer size" time="4.498">
47
47
  <system-out><![CDATA[Backup process close 0 null
48
48
  ]]></system-out>
49
49
  </testcase>
50
- <testcase classname="test-iam.Basic backup and restore using CLI Buffer size tests using CLI" name="should backup/restore animaldb with backup buffer &gt; restore buffer" time="4.891">
50
+ <testcase classname="test-iam.Basic backup and restore using CLI Buffer size tests using CLI" name="should backup/restore animaldb with backup buffer &gt; restore buffer" time="4.271">
51
51
  <system-out><![CDATA[Backup process close 0 null
52
52
  ]]></system-out>
53
53
  </testcase>
54
- <testcase classname="test-iam.Basic backup and restore using CLI Buffer size tests using CLI" name="should backup/restore animaldb with backup buffer &lt; restore buffer" time="4.445">
54
+ <testcase classname="test-iam.Basic backup and restore using CLI Buffer size tests using CLI" name="should backup/restore animaldb with backup buffer &lt; restore buffer" time="4.381">
55
55
  <system-out><![CDATA[Backup process close 0 null
56
56
  ]]></system-out>
57
57
  </testcase>
58
58
  </testsuite>
59
- <testsuite name="Compression tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:14:01" time="6.894">
60
- <testcase classname="test-iam.Compression tests using API" name="should backup animaldb to a compressed file" time="0.805">
59
+ <testsuite name="Compression tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:02:07" time="6.411">
60
+ <testcase classname="test-iam.Compression tests using API" name="should backup animaldb to a compressed file" time="0.875">
61
61
  <system-out><![CDATA[{ total: 15 }
62
62
  ]]></system-out>
63
63
  </testcase>
64
- <testcase classname="test-iam.Compression tests using API" name="should backup and restore animaldb via a compressed file" time="3.177">
64
+ <testcase classname="test-iam.Compression tests using API" name="should backup and restore animaldb via a compressed file" time="2.621">
65
65
  <system-out><![CDATA[{ total: 15 }
66
66
  { total: 15 }
67
67
  ]]></system-out>
68
68
  </testcase>
69
- <testcase classname="test-iam.Compression tests using API" name="should backup and restore animaldb via a compressed stream" time="2.12">
69
+ <testcase classname="test-iam.Compression tests using API" name="should backup and restore animaldb via a compressed stream" time="2.143">
70
70
  <system-out><![CDATA[{ total: 15 }
71
71
  { total: 15 }
72
72
  ]]></system-out>
73
73
  </testcase>
74
74
  </testsuite>
75
- <testsuite name="Compression tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:14:08" time="8.216">
76
- <testcase classname="test-iam.Compression tests using CLI" name="should backup animaldb to a compressed file" time="1.343">
75
+ <testsuite name="Compression tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:02:13" time="8.157">
76
+ <testcase classname="test-iam.Compression tests using CLI" name="should backup animaldb to a compressed file" time="1.239">
77
77
  <system-out><![CDATA[Backup process close 0 null
78
78
  ]]></system-out>
79
79
  </testcase>
80
- <testcase classname="test-iam.Compression tests using CLI" name="should backup and restore animaldb via a compressed file" time="3.483">
80
+ <testcase classname="test-iam.Compression tests using CLI" name="should backup and restore animaldb via a compressed file" time="3.503">
81
81
  <system-out><![CDATA[Backup process close 0 null
82
82
  ]]></system-out>
83
83
  </testcase>
84
- <testcase classname="test-iam.Compression tests using CLI" name="should backup and restore animaldb via a compressed stream" time="2.603">
84
+ <testcase classname="test-iam.Compression tests using CLI" name="should backup and restore animaldb via a compressed stream" time="2.64">
85
85
  <system-out><![CDATA[Backup process close 0 null
86
86
  ]]></system-out>
87
87
  </testcase>
88
88
  </testsuite>
89
- <testsuite name="End to end backup and restore using API" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:14:16" time="338.081">
90
- <testcase classname="test-iam.End to end backup and restore using API" name="should backup and restore animaldb" time="2.235">
89
+ <testsuite name="End to end backup and restore using API" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:02:21" time="323.919">
90
+ <testcase classname="test-iam.End to end backup and restore using API" name="should backup and restore animaldb" time="2.133">
91
91
  <system-out><![CDATA[{ total: 15 }
92
92
  { total: 15 }
93
93
  ]]></system-out>
94
94
  </testcase>
95
- <testcase classname="test-iam.End to end backup and restore using API" name="should backup and restore largedb1g #slow" time="335.079">
95
+ <testcase classname="test-iam.End to end backup and restore using API" name="should backup and restore largedb1g #slow" time="321.02">
96
96
  <system-out><![CDATA[{ total: 522948 }
97
97
  { total: 522948 }
98
98
  ]]></system-out>
99
99
  </testcase>
100
100
  </testsuite>
101
- <testsuite name="End to end backup and restore using CLI" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:19:54" time="546.226">
102
- <testcase classname="test-iam.End to end backup and restore using CLI" name="should backup and restore animaldb" time="2.692">
101
+ <testsuite name="End to end backup and restore using CLI" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:07:45" time="524.017">
102
+ <testcase classname="test-iam.End to end backup and restore using CLI" name="should backup and restore animaldb" time="2.632">
103
103
  <system-out><![CDATA[Backup process close 0 null
104
104
  ]]></system-out>
105
105
  </testcase>
106
- <testcase classname="test-iam.End to end backup and restore using CLI" name="should backup and restore largedb1g #slow" time="542.752">
106
+ <testcase classname="test-iam.End to end backup and restore using CLI" name="should backup and restore largedb1g #slow" time="520.611">
107
107
  <system-out><![CDATA[Backup process close 0 null
108
108
  ]]></system-out>
109
109
  </testcase>
110
110
  </testsuite>
111
- <testsuite name="Encryption tests" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:29:00" time="4.007">
112
- <testcase classname="test-iam.Encryption tests" name="should backup and restore animaldb via an encrypted file" time="3.751">
111
+ <testsuite name="Encryption tests" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:16:29" time="4.025">
112
+ <testcase classname="test-iam.Encryption tests" name="should backup and restore animaldb via an encrypted file" time="3.765">
113
113
  <system-out><![CDATA[Backup process close 0 null
114
114
  ]]></system-out>
115
115
  </testcase>
116
116
  </testsuite>
117
- <testsuite name="Write error tests" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:29:04" time="0.264">
117
+ <testsuite name="Write error tests" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:16:33" time="0.265">
118
118
  <testcase classname="test-iam.Write error tests" name="calls callback with error set when stream is not writeable" time="0.007">
119
119
  </testcase>
120
120
  </testsuite>
121
- <testsuite name="Event tests" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:29:05" time="2.197">
122
- <testcase classname="test-iam.Event tests" name="should get a finished event when using stdout" time="0.8">
121
+ <testsuite name="Event tests" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:16:34" time="2.379">
122
+ <testcase classname="test-iam.Event tests" name="should get a finished event when using stdout" time="0.964">
123
123
  </testcase>
124
- <testcase classname="test-iam.Event tests" name="should get a finished event when using file output" time="0.876">
124
+ <testcase classname="test-iam.Event tests" name="should get a finished event when using file output" time="0.891">
125
125
  </testcase>
126
126
  </testsuite>
127
- <testsuite name="Resume tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:29:07" time="5.08">
128
- <testcase classname="test-iam.Resume tests using API" name="should create a log file" time="0.821">
127
+ <testsuite name="Resume tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:16:36" time="5.024">
128
+ <testcase classname="test-iam.Resume tests using API" name="should create a log file" time="0.806">
129
129
  <system-out><![CDATA[{ total: 15 }
130
130
  ]]></system-out>
131
131
  </testcase>
132
- <testcase classname="test-iam.Resume tests using API" name="should restore corrupted animaldb to a database correctly" time="1.825">
132
+ <testcase classname="test-iam.Resume tests using API" name="should restore corrupted animaldb to a database correctly" time="1.728">
133
133
  <system-out><![CDATA[{ total: 15 }
134
134
  ]]></system-out>
135
135
  </testcase>
136
- <testcase classname="test-iam.Resume tests using API" name="should restore resumed animaldb with blank line to a database correctly" time="1.661">
136
+ <testcase classname="test-iam.Resume tests using API" name="should restore resumed animaldb with blank line to a database correctly" time="1.716">
137
137
  <system-out><![CDATA[{ total: 15 }
138
138
  ]]></system-out>
139
139
  </testcase>
140
140
  </testsuite>
141
- <testsuite name="Resume tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:29:12" time="6.615">
142
- <testcase classname="test-iam.Resume tests using CLI" name="should create a log file" time="1.26">
141
+ <testsuite name="Resume tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:16:41" time="6.411">
142
+ <testcase classname="test-iam.Resume tests using CLI" name="should create a log file" time="1.225">
143
143
  <system-out><![CDATA[Backup process close 0 null
144
144
  ]]></system-out>
145
145
  </testcase>
146
- <testcase classname="test-iam.Resume tests using CLI" name="should restore corrupted animaldb to a database correctly" time="2.364">
146
+ <testcase classname="test-iam.Resume tests using CLI" name="should restore corrupted animaldb to a database correctly" time="2.306">
147
147
  </testcase>
148
- <testcase classname="test-iam.Resume tests using CLI" name="should restore resumed animaldb with blank line to a database correctly" time="2.221">
148
+ <testcase classname="test-iam.Resume tests using CLI" name="should restore resumed animaldb with blank line to a database correctly" time="2.107">
149
149
  </testcase>
150
150
  </testsuite>
151
- <testsuite name="Resume tests" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:29:18" time="33.183">
152
- <testcase classname="test-iam.Resume tests" name="should correctly backup and restore backup10m" time="16.164">
151
+ <testsuite name="Resume tests" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:16:48" time="33.327">
152
+ <testcase classname="test-iam.Resume tests" name="should correctly backup and restore backup10m" time="16.157">
153
153
  <system-out><![CDATA[Backup process close null SIGTERM
154
154
  Backup process close 0 null
155
155
  ]]></system-out>
156
156
  </testcase>
157
- <testcase classname="test-iam.Resume tests" name="should correctly backup and restore backup10m using --output" time="16.499">
157
+ <testcase classname="test-iam.Resume tests" name="should correctly backup and restore backup10m using --output" time="16.651">
158
158
  <system-out><![CDATA[Backup process close null SIGTERM
159
159
  Backup process close 0 null
160
160
  ]]></system-out>
161
161
  </testcase>
162
162
  </testsuite>
163
- <testsuite name="Longer spool changes checks" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-05-03T16:29:52" time="65.733">
164
- <testcase classname="test-iam.Longer spool changes checks" name="#slow should keep collecting changes (25M)" time="65.473">
163
+ <testsuite name="Longer spool changes checks" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-05-04T13:17:21" time="47.244">
164
+ <testcase classname="test-iam.Longer spool changes checks" name="#slow should keep collecting changes (25M)" time="46.979">
165
165
  </testcase>
166
166
  </testsuite>
167
167
  </testsuites>
@@ -0,0 +1,118 @@
1
+ // Copyright © 2017, 2021 IBM Corp. All rights reserved.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ 'use strict';
15
+
16
+ const path = require('path');
17
+ const tmp = require('tmp');
18
+
19
+ /**
20
+ Return API default settings.
21
+ */
22
+ function apiDefaults() {
23
+ return {
24
+ parallelism: 5,
25
+ bufferSize: 500,
26
+ requestTimeout: 120000,
27
+ log: tmp.tmpNameSync(),
28
+ resume: false,
29
+ mode: 'full'
30
+ };
31
+ }
32
+
33
+ /**
34
+ Return CLI default settings.
35
+ */
36
+ function cliDefaults() {
37
+ const defaults = apiDefaults();
38
+
39
+ // add additional legacy settings
40
+ defaults.db = 'test';
41
+ defaults.url = 'http://localhost:5984';
42
+
43
+ // add CLI only option
44
+ defaults.quiet = false;
45
+
46
+ return defaults;
47
+ }
48
+
49
+ /**
50
+ Override settings **in-place** with environment variables.
51
+ */
52
+ function applyEnvironmentVariables(opts) {
53
+ // if we have a custom CouchDB url
54
+ if (typeof process.env.COUCH_URL !== 'undefined') {
55
+ opts.url = process.env.COUCH_URL;
56
+ }
57
+
58
+ // if we have a specified databases
59
+ if (typeof process.env.COUCH_DATABASE !== 'undefined') {
60
+ opts.db = process.env.COUCH_DATABASE;
61
+ }
62
+
63
+ // if we have a specified buffer size
64
+ if (typeof process.env.COUCH_BUFFER_SIZE !== 'undefined') {
65
+ opts.bufferSize = parseInt(process.env.COUCH_BUFFER_SIZE);
66
+ }
67
+
68
+ // if we have a specified parallelism
69
+ if (typeof process.env.COUCH_PARALLELISM !== 'undefined') {
70
+ opts.parallelism = parseInt(process.env.COUCH_PARALLELISM);
71
+ }
72
+
73
+ // if we have a specified request timeout
74
+ if (typeof process.env.COUCH_REQUEST_TIMEOUT !== 'undefined') {
75
+ opts.requestTimeout = parseInt(process.env.COUCH_REQUEST_TIMEOUT);
76
+ }
77
+
78
+ // if we have a specified log file
79
+ if (typeof process.env.COUCH_LOG !== 'undefined') {
80
+ opts.log = path.normalize(process.env.COUCH_LOG);
81
+ }
82
+
83
+ // if we are instructed to resume
84
+ if (typeof process.env.COUCH_RESUME !== 'undefined' && process.env.COUCH_RESUME === 'true') {
85
+ opts.resume = true;
86
+ }
87
+
88
+ // if we are given an output filename
89
+ if (typeof process.env.COUCH_OUTPUT !== 'undefined') {
90
+ opts.output = path.normalize(process.env.COUCH_OUTPUT);
91
+ }
92
+
93
+ // if we only want a shallow copy
94
+ if (typeof process.env.COUCH_MODE !== 'undefined' && process.env.COUCH_MODE === 'shallow') {
95
+ opts.mode = 'shallow';
96
+ }
97
+
98
+ // if we are instructed to be quiet
99
+ if (typeof process.env.COUCH_QUIET !== 'undefined' && process.env.COUCH_QUIET === 'true') {
100
+ opts.quiet = true;
101
+ }
102
+
103
+ // if we have a specified API key
104
+ if (typeof process.env.CLOUDANT_IAM_API_KEY !== 'undefined') {
105
+ opts.iamApiKey = process.env.CLOUDANT_IAM_API_KEY;
106
+ }
107
+
108
+ // if we have a specified IAM token endpoint
109
+ if (typeof process.env.CLOUDANT_IAM_TOKEN_URL !== 'undefined') {
110
+ opts.iamTokenUrl = process.env.CLOUDANT_IAM_TOKEN_URL;
111
+ }
112
+ }
113
+
114
+ module.exports = {
115
+ apiDefaults: apiDefaults,
116
+ cliDefaults: cliDefaults,
117
+ applyEnvironmentVariables: applyEnvironmentVariables
118
+ };
@@ -0,0 +1,164 @@
1
+ // Copyright © 2017, 2021 IBM Corp. All rights reserved.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ 'use strict';
15
+
16
+ const async = require('async');
17
+ const stream = require('stream');
18
+ const error = require('./error.js');
19
+ const debug = require('debug')('couchbackup:writer');
20
+
21
+ module.exports = function(db, bufferSize, parallelism, ee) {
22
+ const writer = new stream.Transform({ objectMode: true });
23
+ let buffer = [];
24
+ let written = 0;
25
+ let linenumber = 0;
26
+
27
+ // this is the queue of chunks that are written to the database
28
+ // the queue's payload will be an array of documents to be written,
29
+ // the size of the array will be bufferSize. The variable parallelism
30
+ // determines how many HTTP requests will occur at any one time.
31
+ const q = async.queue(function(payload, cb) {
32
+ // if we are restoring known revisions, we need to supply new_edits=false
33
+ if (payload.docs && payload.docs[0] && payload.docs[0]._rev) {
34
+ payload.new_edits = false;
35
+ debug('Using new_edits false mode.');
36
+ }
37
+
38
+ if (!didError) {
39
+ db.service.postBulkDocs({
40
+ db: db.db,
41
+ bulkDocs: payload
42
+ }).then(response => {
43
+ if (!response.result || (payload.new_edits === false && response.result.length > 0)) {
44
+ throw new Error(`Error writing batch with new_edits:${payload.new_edits !== false}` +
45
+ ` and ${response.result ? response.result.length : 'unavailable'} items`);
46
+ }
47
+ written += payload.docs.length;
48
+ writer.emit('restored', { documents: payload.docs.length, total: written });
49
+ cb();
50
+ }).catch(err => {
51
+ err = error.convertResponseError(err);
52
+ debug(`Error writing docs ${err.name} ${err.message}`);
53
+ cb(err, payload);
54
+ });
55
+ }
56
+ }, parallelism);
57
+
58
+ let didError = false;
59
+
60
+ // write the contents of the buffer to CouchDB in blocks of bufferSize
61
+ function processBuffer(flush, callback) {
62
+ function taskCallback(err, payload) {
63
+ if (err && !didError) {
64
+ debug(`Queue task failed with error ${err.name}`);
65
+ didError = true;
66
+ q.kill();
67
+ writer.emit('error', err);
68
+ }
69
+ }
70
+
71
+ if (flush || buffer.length >= bufferSize) {
72
+ // work through the buffer to break off bufferSize chunks
73
+ // and feed the chunks to the queue
74
+ do {
75
+ // split the buffer into bufferSize chunks
76
+ const toSend = buffer.splice(0, bufferSize);
77
+
78
+ // and add the chunk to the queue
79
+ debug(`Adding ${toSend.length} to the write queue.`);
80
+ q.push({ docs: toSend }, taskCallback);
81
+ } while (buffer.length >= bufferSize);
82
+
83
+ // send any leftover documents to the queue
84
+ if (flush && buffer.length > 0) {
85
+ debug(`Adding remaining ${buffer.length} to the write queue.`);
86
+ q.push({ docs: buffer }, taskCallback);
87
+ }
88
+
89
+ // wait until the queue size falls to a reasonable level
90
+ async.until(
91
+ // wait until the queue length drops to twice the paralellism
92
+ // or until empty on the last write
93
+ function(callback) {
94
+ // if we encountered an error, stop this until loop
95
+ if (didError) {
96
+ return callback(null, true);
97
+ }
98
+ if (flush) {
99
+ callback(null, q.idle() && q.length() === 0);
100
+ } else {
101
+ callback(null, q.length() <= parallelism * 2);
102
+ }
103
+ },
104
+ function(cb) {
105
+ setTimeout(cb, 20);
106
+ },
107
+
108
+ function() {
109
+ if (flush && !didError) {
110
+ writer.emit('finished', { total: written });
111
+ }
112
+ // callback when we're happy with the queue size
113
+ callback();
114
+ });
115
+ } else {
116
+ callback();
117
+ }
118
+ }
119
+
120
+ // take an object
121
+ writer._transform = function(obj, encoding, done) {
122
+ // each obj that arrives here is a line from the backup file
123
+ // it should contain an array of objects. The length of the array
124
+ // depends on the bufferSize at backup time.
125
+ linenumber++;
126
+ if (!didError && obj !== '') {
127
+ // see if it parses as JSON
128
+ try {
129
+ const arr = JSON.parse(obj);
130
+
131
+ // if it's an array with a length
132
+ if (typeof arr === 'object' && arr.length > 0) {
133
+ // push each document into a buffer
134
+ buffer = buffer.concat(arr);
135
+
136
+ // pause the stream
137
+ // it's likely that the speed with which data can be read from disk
138
+ // may exceed the rate it can be written to CouchDB. To prevent
139
+ // the whole file being buffered in memory, we pause the stream here.
140
+ // it is resumed, when processBuffer calls back and we call done()
141
+ this.pause();
142
+
143
+ // break the buffer in to bufferSize chunks to be written to the database
144
+ processBuffer(false, done);
145
+ } else {
146
+ ee.emit('error', new error.BackupError('BackupFileJsonError', `Error on line ${linenumber} of backup file - not an array`));
147
+ done();
148
+ }
149
+ } catch (e) {
150
+ ee.emit('error', new error.BackupError('BackupFileJsonError', `Error on line ${linenumber} of backup file - cannot parse as JSON`));
151
+ // Could be an incomplete write that was subsequently resumed
152
+ done();
153
+ }
154
+ } else {
155
+ done();
156
+ }
157
+ };
158
+
159
+ // called when we need to flush everything
160
+ writer._flush = function(done) {
161
+ processBuffer(true, done);
162
+ };
163
+ return writer;
164
+ };
@@ -0,0 +1,104 @@
1
+ // Copyright © 2017, 2021 IBM Corp. All rights reserved.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ 'use strict';
15
+
16
+ // fatal errors
17
+ const codes = {
18
+ Error: 1,
19
+ InvalidOption: 2,
20
+ DatabaseNotFound: 10,
21
+ Unauthorized: 11,
22
+ Forbidden: 12,
23
+ DatabaseNotEmpty: 13,
24
+ NoLogFileName: 20,
25
+ LogDoesNotExist: 21,
26
+ IncompleteChangesInLogFile: 22,
27
+ SpoolChangesError: 30,
28
+ HTTPFatalError: 40,
29
+ BulkGetError: 50
30
+ };
31
+
32
+ class BackupError extends Error {
33
+ constructor(name, message) {
34
+ super(message);
35
+ this.name = name;
36
+ }
37
+ }
38
+
39
+ class HTTPError extends BackupError {
40
+ constructor(responseError, name) {
41
+ // Special case some names for more useful error messages
42
+ switch (responseError.status) {
43
+ case 401:
44
+ name = 'Unauthorized';
45
+ break;
46
+ case 403:
47
+ name = 'Forbidden';
48
+ break;
49
+ default:
50
+ name = name || 'HTTPFatalError';
51
+ }
52
+ super(name, responseError.message);
53
+ }
54
+ }
55
+
56
+ // Default function to return an error for HTTP status codes
57
+ // < 400 -> OK
58
+ // 4XX (except 429) -> Fatal
59
+ // 429 & >=500 -> Transient
60
+ function checkResponse(err) {
61
+ if (err) {
62
+ // Construct an HTTPError if there is request information on the error
63
+ // Codes < 400 are considered OK
64
+ if (err.status >= 400) {
65
+ return new HTTPError(err);
66
+ } else {
67
+ // Send it back again if there was no status code, e.g. a cxn error
68
+ return augmentMessage(err);
69
+ }
70
+ }
71
+ }
72
+
73
+ function convertResponseError(responseError, errorFactory) {
74
+ if (!errorFactory) {
75
+ errorFactory = checkResponse;
76
+ }
77
+ return errorFactory(responseError);
78
+ }
79
+
80
+ function augmentMessage(err) {
81
+ // For errors that don't have a status code, we are likely looking at a cxn
82
+ // error.
83
+ // Try to augment the message with more detail (core puts the code in statusText)
84
+ if (err && err.statusText) {
85
+ err.message = `${err.message} ${err.statusText}`;
86
+ }
87
+ if (err && err.description) {
88
+ err.message = `${err.message} ${err.description}`;
89
+ }
90
+ return err;
91
+ }
92
+
93
+ module.exports = {
94
+ BackupError: BackupError,
95
+ HTTPError: HTTPError,
96
+ convertResponseError: convertResponseError,
97
+ terminationCallback: function terminationCallback(err, data) {
98
+ if (err) {
99
+ console.error(`ERROR: ${err.message}`);
100
+ process.exitCode = codes[err.name] || 1;
101
+ process.exit();
102
+ }
103
+ }
104
+ };