@cloudant/couchbackup 2.9.10-SNAPSHOT.112 → 2.9.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 (329) 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/analysis.log +1 -1
  4. package/.scannerwork/scanner-report/changesets-2.pb +1 -0
  5. package/.scannerwork/scanner-report/changesets-3.pb +1 -0
  6. package/.scannerwork/scanner-report/changesets-52.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-56.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-67.pb +1 -0
  9. package/.scannerwork/scanner-report/changesets-68.pb +1 -0
  10. package/.scannerwork/scanner-report/component-1.pb +2 -2
  11. package/.scannerwork/scanner-report/component-10.pb +1 -1
  12. package/.scannerwork/scanner-report/component-11.pb +1 -1
  13. package/.scannerwork/scanner-report/component-12.pb +1 -1
  14. package/.scannerwork/scanner-report/component-13.pb +1 -1
  15. package/.scannerwork/scanner-report/component-14.pb +1 -1
  16. package/.scannerwork/scanner-report/component-15.pb +1 -1
  17. package/.scannerwork/scanner-report/component-19.pb +1 -1
  18. package/.scannerwork/scanner-report/component-2.pb +1 -0
  19. package/.scannerwork/scanner-report/component-20.pb +1 -1
  20. package/.scannerwork/scanner-report/component-21.pb +1 -1
  21. package/.scannerwork/scanner-report/component-22.pb +1 -1
  22. package/.scannerwork/scanner-report/component-23.pb +1 -1
  23. package/.scannerwork/scanner-report/component-24.pb +1 -1
  24. package/.scannerwork/scanner-report/component-25.pb +1 -1
  25. package/.scannerwork/scanner-report/component-26.pb +1 -1
  26. package/.scannerwork/scanner-report/component-27.pb +1 -1
  27. package/.scannerwork/scanner-report/component-28.pb +1 -1
  28. package/.scannerwork/scanner-report/component-29.pb +1 -1
  29. package/.scannerwork/scanner-report/component-3.pb +1 -0
  30. package/.scannerwork/scanner-report/component-30.pb +1 -1
  31. package/.scannerwork/scanner-report/component-31.pb +1 -1
  32. package/.scannerwork/scanner-report/component-32.pb +1 -1
  33. package/.scannerwork/scanner-report/component-33.pb +1 -1
  34. package/.scannerwork/scanner-report/component-35.pb +1 -1
  35. package/.scannerwork/scanner-report/component-4.pb +1 -1
  36. package/.scannerwork/scanner-report/component-47.pb +1 -1
  37. package/.scannerwork/scanner-report/component-48.pb +1 -1
  38. package/.scannerwork/scanner-report/component-49.pb +1 -1
  39. package/.scannerwork/scanner-report/component-5.pb +1 -1
  40. package/.scannerwork/scanner-report/component-50.pb +1 -1
  41. package/.scannerwork/scanner-report/component-51.pb +1 -1
  42. package/.scannerwork/scanner-report/component-52.pb +1 -0
  43. package/.scannerwork/scanner-report/component-54.pb +1 -1
  44. package/.scannerwork/scanner-report/component-56.pb +1 -1
  45. package/.scannerwork/scanner-report/component-59.pb +1 -1
  46. package/.scannerwork/scanner-report/component-6.pb +1 -1
  47. package/.scannerwork/scanner-report/component-60.pb +1 -1
  48. package/.scannerwork/scanner-report/component-65.pb +1 -1
  49. package/.scannerwork/scanner-report/component-66.pb +1 -1
  50. package/.scannerwork/scanner-report/component-67.pb +1 -0
  51. package/.scannerwork/scanner-report/component-68.pb +1 -0
  52. package/.scannerwork/scanner-report/component-7.pb +1 -1
  53. package/.scannerwork/scanner-report/component-8.pb +1 -1
  54. package/.scannerwork/scanner-report/component-9.pb +1 -1
  55. package/.scannerwork/scanner-report/coverages-10.pb +0 -0
  56. package/.scannerwork/scanner-report/coverages-11.pb +0 -0
  57. package/.scannerwork/scanner-report/coverages-12.pb +0 -0
  58. package/.scannerwork/scanner-report/coverages-13.pb +0 -0
  59. package/.scannerwork/scanner-report/coverages-14.pb +0 -0
  60. package/.scannerwork/scanner-report/coverages-15.pb +0 -0
  61. package/.scannerwork/scanner-report/coverages-19.pb +0 -0
  62. package/.scannerwork/scanner-report/coverages-20.pb +0 -0
  63. package/.scannerwork/scanner-report/coverages-21.pb +0 -0
  64. package/.scannerwork/scanner-report/coverages-22.pb +0 -0
  65. package/.scannerwork/scanner-report/coverages-23.pb +0 -0
  66. package/.scannerwork/scanner-report/coverages-24.pb +0 -0
  67. package/.scannerwork/scanner-report/coverages-25.pb +0 -0
  68. package/.scannerwork/scanner-report/coverages-26.pb +0 -0
  69. package/.scannerwork/scanner-report/coverages-27.pb +0 -0
  70. package/.scannerwork/scanner-report/coverages-28.pb +0 -0
  71. package/.scannerwork/scanner-report/coverages-29.pb +0 -0
  72. package/.scannerwork/scanner-report/coverages-3.pb +0 -0
  73. package/.scannerwork/scanner-report/coverages-30.pb +0 -0
  74. package/.scannerwork/scanner-report/coverages-31.pb +0 -0
  75. package/.scannerwork/scanner-report/coverages-32.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-33.pb +0 -0
  77. package/.scannerwork/scanner-report/coverages-35.pb +0 -0
  78. package/.scannerwork/scanner-report/coverages-4.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-47.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-48.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-49.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-5.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-50.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-51.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-56.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-59.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-6.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-60.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-67.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-7.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-8.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-9.pb +0 -0
  94. package/.scannerwork/scanner-report/duplications-2.pb +2 -0
  95. package/.scannerwork/scanner-report/duplications-21.pb +3 -0
  96. package/.scannerwork/scanner-report/duplications-22.pb +0 -3
  97. package/.scannerwork/scanner-report/duplications-23.pb +0 -2
  98. package/.scannerwork/scanner-report/duplications-27.pb +2 -0
  99. package/.scannerwork/scanner-report/duplications-29.pb +2 -0
  100. package/.scannerwork/scanner-report/duplications-32.pb +3 -0
  101. package/.scannerwork/scanner-report/duplications-35.pb +0 -3
  102. package/.scannerwork/scanner-report/duplications-4.pb +2 -0
  103. package/.scannerwork/scanner-report/duplications-48.pb +0 -3
  104. package/.scannerwork/scanner-report/duplications-49.pb +0 -2
  105. package/.scannerwork/scanner-report/duplications-5.pb +0 -2
  106. package/.scannerwork/scanner-report/duplications-52.pb +3 -0
  107. package/.scannerwork/scanner-report/duplications-59.pb +2 -0
  108. package/.scannerwork/scanner-report/duplications-60.pb +2 -0
  109. package/.scannerwork/scanner-report/duplications-68.pb +0 -0
  110. package/.scannerwork/scanner-report/measures-10.pb +0 -0
  111. package/.scannerwork/scanner-report/measures-11.pb +0 -0
  112. package/.scannerwork/scanner-report/measures-12.pb +0 -0
  113. package/.scannerwork/scanner-report/measures-13.pb +0 -0
  114. package/.scannerwork/scanner-report/measures-14.pb +0 -0
  115. package/.scannerwork/scanner-report/measures-15.pb +0 -0
  116. package/.scannerwork/scanner-report/measures-19.pb +0 -0
  117. package/.scannerwork/scanner-report/measures-20.pb +0 -0
  118. package/.scannerwork/scanner-report/measures-21.pb +0 -0
  119. package/.scannerwork/scanner-report/measures-22.pb +0 -0
  120. package/.scannerwork/scanner-report/measures-23.pb +0 -0
  121. package/.scannerwork/scanner-report/measures-24.pb +0 -0
  122. package/.scannerwork/scanner-report/measures-25.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-26.pb +0 -0
  124. package/.scannerwork/scanner-report/measures-27.pb +0 -0
  125. package/.scannerwork/scanner-report/measures-28.pb +0 -0
  126. package/.scannerwork/scanner-report/measures-29.pb +0 -0
  127. package/.scannerwork/scanner-report/measures-3.pb +16 -0
  128. package/.scannerwork/scanner-report/measures-30.pb +0 -0
  129. package/.scannerwork/scanner-report/measures-31.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-32.pb +0 -0
  131. package/.scannerwork/scanner-report/measures-33.pb +0 -0
  132. package/.scannerwork/scanner-report/measures-35.pb +0 -0
  133. package/.scannerwork/scanner-report/measures-4.pb +0 -0
  134. package/.scannerwork/scanner-report/measures-47.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-48.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-49.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-5.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-50.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-51.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-52.pb +0 -0
  141. package/.scannerwork/scanner-report/measures-54.pb +0 -0
  142. package/.scannerwork/scanner-report/measures-56.pb +0 -0
  143. package/.scannerwork/scanner-report/measures-59.pb +0 -0
  144. package/.scannerwork/scanner-report/measures-6.pb +0 -0
  145. package/.scannerwork/scanner-report/measures-60.pb +0 -0
  146. package/.scannerwork/scanner-report/measures-65.pb +0 -0
  147. package/.scannerwork/scanner-report/measures-66.pb +0 -0
  148. package/.scannerwork/scanner-report/measures-67.pb +0 -0
  149. package/.scannerwork/scanner-report/measures-7.pb +0 -0
  150. package/.scannerwork/scanner-report/measures-8.pb +0 -0
  151. package/.scannerwork/scanner-report/measures-9.pb +0 -0
  152. package/.scannerwork/scanner-report/metadata.pb +0 -0
  153. package/.scannerwork/scanner-report/source-10.txt +258 -23
  154. package/.scannerwork/scanner-report/source-11.txt +92 -103
  155. package/.scannerwork/scanner-report/source-12.txt +24 -82
  156. package/.scannerwork/scanner-report/source-13.txt +110 -145
  157. package/.scannerwork/scanner-report/source-14.txt +72 -249
  158. package/.scannerwork/scanner-report/source-15.txt +24 -14
  159. package/.scannerwork/scanner-report/source-19.txt +93 -121
  160. package/.scannerwork/scanner-report/source-20.txt +14 -8
  161. package/.scannerwork/scanner-report/source-21.txt +224 -14
  162. package/.scannerwork/scanner-report/source-22.txt +15 -223
  163. package/.scannerwork/scanner-report/source-23.txt +595 -115
  164. package/.scannerwork/scanner-report/source-24.txt +13 -26
  165. package/.scannerwork/scanner-report/source-25.txt +135 -15
  166. package/.scannerwork/scanner-report/source-26.txt +120 -339
  167. package/.scannerwork/scanner-report/source-27.txt +128 -19
  168. package/.scannerwork/scanner-report/source-28.txt +11 -43
  169. package/.scannerwork/scanner-report/source-29.txt +227 -559
  170. package/.scannerwork/scanner-report/source-3.txt +178 -0
  171. package/.scannerwork/scanner-report/source-30.txt +71 -47
  172. package/.scannerwork/scanner-report/source-31.txt +125 -46
  173. package/.scannerwork/scanner-report/source-32.txt +101 -62
  174. package/.scannerwork/scanner-report/source-33.txt +48 -127
  175. package/.scannerwork/scanner-report/source-35.txt +24 -96
  176. package/.scannerwork/scanner-report/source-4.txt +72 -98
  177. package/.scannerwork/scanner-report/source-47.txt +46 -83
  178. package/.scannerwork/scanner-report/source-48.txt +47 -110
  179. package/.scannerwork/scanner-report/source-49.txt +344 -271
  180. package/.scannerwork/scanner-report/source-5.txt +84 -65
  181. package/.scannerwork/scanner-report/source-50.txt +9 -136
  182. package/.scannerwork/scanner-report/source-51.txt +84 -19
  183. package/.scannerwork/scanner-report/source-52.txt +119 -0
  184. package/.scannerwork/scanner-report/source-54.txt +167 -114
  185. package/.scannerwork/scanner-report/source-56.txt +418 -509
  186. package/.scannerwork/scanner-report/source-59.txt +172 -59
  187. package/.scannerwork/scanner-report/source-6.txt +147 -37
  188. package/.scannerwork/scanner-report/source-60.txt +142 -385
  189. package/.scannerwork/scanner-report/source-65.txt +509 -175
  190. package/.scannerwork/scanner-report/source-66.txt +509 -190
  191. package/.scannerwork/scanner-report/source-67.txt +77 -0
  192. package/.scannerwork/scanner-report/source-7.txt +56 -154
  193. package/.scannerwork/scanner-report/source-8.txt +34 -21
  194. package/.scannerwork/scanner-report/source-9.txt +14 -63
  195. package/.scannerwork/scanner-report/symbols-10.pb +354 -20
  196. package/.scannerwork/scanner-report/symbols-11.pb +29 -32
  197. package/.scannerwork/scanner-report/symbols-12.pb +18 -40
  198. package/.scannerwork/scanner-report/symbols-13.pb +32 -125
  199. package/.scannerwork/scanner-report/symbols-14.pb +42 -354
  200. package/.scannerwork/scanner-report/symbols-15.pb +17 -13
  201. package/.scannerwork/scanner-report/symbols-19.pb +28 -116
  202. package/.scannerwork/scanner-report/symbols-20.pb +17 -9
  203. package/.scannerwork/scanner-report/symbols-21.pb +394 -10
  204. package/.scannerwork/scanner-report/symbols-22.pb +14 -394
  205. package/.scannerwork/scanner-report/symbols-23.pb +1254 -102
  206. package/.scannerwork/scanner-report/symbols-24.pb +10 -27
  207. package/.scannerwork/scanner-report/symbols-25.pb +112 -11
  208. package/.scannerwork/scanner-report/symbols-26.pb +85 -494
  209. package/.scannerwork/scanner-report/symbols-27.pb +102 -14
  210. package/.scannerwork/scanner-report/symbols-28.pb +9 -34
  211. package/.scannerwork/scanner-report/symbols-29.pb +406 -1174
  212. package/.scannerwork/scanner-report/symbols-3.pb +144 -0
  213. package/.scannerwork/scanner-report/symbols-30.pb +60 -45
  214. package/.scannerwork/scanner-report/symbols-31.pb +115 -42
  215. package/.scannerwork/scanner-report/symbols-32.pb +97 -60
  216. package/.scannerwork/scanner-report/symbols-33.pb +36 -85
  217. package/.scannerwork/scanner-report/symbols-35.pb +27 -77
  218. package/.scannerwork/scanner-report/symbols-4.pb +44 -30
  219. package/.scannerwork/scanner-report/symbols-47.pb +42 -68
  220. package/.scannerwork/scanner-report/symbols-48.pb +45 -97
  221. package/.scannerwork/scanner-report/symbols-49.pb +458 -450
  222. package/.scannerwork/scanner-report/symbols-5.pb +58 -43
  223. package/.scannerwork/scanner-report/symbols-50.pb +9 -112
  224. package/.scannerwork/scanner-report/symbols-51.pb +68 -16
  225. package/.scannerwork/scanner-report/symbols-52.pb +77 -0
  226. package/.scannerwork/scanner-report/symbols-56.pb +610 -0
  227. package/.scannerwork/scanner-report/symbols-59.pb +180 -30
  228. package/.scannerwork/scanner-report/symbols-6.pb +126 -15
  229. package/.scannerwork/scanner-report/symbols-60.pb +146 -603
  230. package/.scannerwork/scanner-report/symbols-67.pb +30 -0
  231. package/.scannerwork/scanner-report/symbols-7.pb +43 -141
  232. package/.scannerwork/scanner-report/symbols-8.pb +12 -15
  233. package/.scannerwork/scanner-report/symbols-9.pb +13 -45
  234. package/.scannerwork/scanner-report/syntax-highlightings-10.pb +250 -29
  235. package/.scannerwork/scanner-report/syntax-highlightings-11.pb +75 -91
  236. package/.scannerwork/scanner-report/syntax-highlightings-12.pb +29 -81
  237. package/.scannerwork/scanner-report/syntax-highlightings-13.pb +86 -170
  238. package/.scannerwork/scanner-report/syntax-highlightings-14.pb +78 -247
  239. package/.scannerwork/scanner-report/syntax-highlightings-15.pb +21 -16
  240. package/.scannerwork/scanner-report/syntax-highlightings-19.pb +103 -99
  241. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +28 -13
  242. package/.scannerwork/scanner-report/syntax-highlightings-21.pb +293 -14
  243. package/.scannerwork/scanner-report/syntax-highlightings-22.pb +21 -296
  244. package/.scannerwork/scanner-report/syntax-highlightings-23.pb +832 -172
  245. package/.scannerwork/scanner-report/syntax-highlightings-24.pb +13 -31
  246. package/.scannerwork/scanner-report/syntax-highlightings-25.pb +188 -24
  247. package/.scannerwork/scanner-report/syntax-highlightings-26.pb +154 -593
  248. package/.scannerwork/scanner-report/syntax-highlightings-27.pb +194 -21
  249. package/.scannerwork/scanner-report/syntax-highlightings-28.pb +22 -58
  250. package/.scannerwork/scanner-report/syntax-highlightings-29.pb +354 -582
  251. package/.scannerwork/scanner-report/syntax-highlightings-3.pb +243 -0
  252. package/.scannerwork/scanner-report/syntax-highlightings-30.pb +70 -70
  253. package/.scannerwork/scanner-report/syntax-highlightings-31.pb +98 -46
  254. package/.scannerwork/scanner-report/syntax-highlightings-32.pb +144 -72
  255. package/.scannerwork/scanner-report/syntax-highlightings-33.pb +59 -155
  256. package/.scannerwork/scanner-report/syntax-highlightings-35.pb +27 -117
  257. package/.scannerwork/scanner-report/syntax-highlightings-4.pb +56 -79
  258. package/.scannerwork/scanner-report/syntax-highlightings-47.pb +46 -69
  259. package/.scannerwork/scanner-report/syntax-highlightings-48.pb +74 -146
  260. package/.scannerwork/scanner-report/syntax-highlightings-49.pb +346 -375
  261. package/.scannerwork/scanner-report/syntax-highlightings-5.pb +92 -49
  262. package/.scannerwork/scanner-report/syntax-highlightings-50.pb +14 -189
  263. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +70 -28
  264. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +158 -0
  265. package/.scannerwork/scanner-report/syntax-highlightings-54.pb +938 -127
  266. package/.scannerwork/scanner-report/syntax-highlightings-56.pb +445 -3544
  267. package/.scannerwork/scanner-report/syntax-highlightings-59.pb +200 -78
  268. package/.scannerwork/scanner-report/syntax-highlightings-6.pb +179 -20
  269. package/.scannerwork/scanner-report/syntax-highlightings-60.pb +156 -590
  270. package/.scannerwork/scanner-report/syntax-highlightings-65.pb +3733 -199
  271. package/.scannerwork/scanner-report/syntax-highlightings-66.pb +3724 -202
  272. package/.scannerwork/scanner-report/syntax-highlightings-67.pb +103 -0
  273. package/.scannerwork/scanner-report/syntax-highlightings-7.pb +55 -203
  274. package/.scannerwork/scanner-report/syntax-highlightings-8.pb +23 -19
  275. package/.scannerwork/scanner-report/syntax-highlightings-9.pb +15 -65
  276. package/CHANGES.md +7 -0
  277. package/package.json +4 -4
  278. package/test-16-results.xml +151 -151
  279. package/test-18-results.xml +143 -143
  280. package/test-iam-18-results.xml +49 -49
  281. package/.scannerwork/scanner-report/changesets-16.pb +0 -1
  282. package/.scannerwork/scanner-report/changesets-17.pb +0 -1
  283. package/.scannerwork/scanner-report/changesets-54.pb +0 -1
  284. package/.scannerwork/scanner-report/changesets-58.pb +0 -1
  285. package/.scannerwork/scanner-report/changesets-65.pb +0 -1
  286. package/.scannerwork/scanner-report/changesets-66.pb +0 -1
  287. package/.scannerwork/scanner-report/component-16.pb +0 -1
  288. package/.scannerwork/scanner-report/component-17.pb +0 -1
  289. package/.scannerwork/scanner-report/component-18.pb +0 -1
  290. package/.scannerwork/scanner-report/component-58.pb +0 -1
  291. package/.scannerwork/scanner-report/component-61.pb +0 -1
  292. package/.scannerwork/scanner-report/coverages-16.pb +0 -0
  293. package/.scannerwork/scanner-report/coverages-54.pb +0 -0
  294. package/.scannerwork/scanner-report/coverages-65.pb +0 -0
  295. package/.scannerwork/scanner-report/coverages-66.pb +0 -0
  296. package/.scannerwork/scanner-report/duplications-17.pb +0 -2
  297. package/.scannerwork/scanner-report/duplications-65.pb +0 -2
  298. package/.scannerwork/scanner-report/duplications-66.pb +0 -2
  299. package/.scannerwork/scanner-report/measures-16.pb +0 -0
  300. package/.scannerwork/scanner-report/measures-18.pb +0 -0
  301. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  302. package/.scannerwork/scanner-report/source-16.txt +0 -111
  303. package/.scannerwork/scanner-report/source-18.txt +0 -167
  304. package/.scannerwork/scanner-report/source-61.txt +0 -509
  305. package/.scannerwork/scanner-report/symbols-16.pb +0 -59
  306. package/.scannerwork/scanner-report/symbols-54.pb +0 -28
  307. package/.scannerwork/scanner-report/symbols-65.pb +0 -153
  308. package/.scannerwork/scanner-report/symbols-66.pb +0 -180
  309. package/.scannerwork/scanner-report/syntax-highlightings-16.pb +0 -133
  310. package/.scannerwork/scanner-report/syntax-highlightings-18.pb +0 -949
  311. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +0 -3748
  312. /package/.scannerwork/scanner-report/{coverages-17.pb → coverages-2.pb} +0 -0
  313. /package/.scannerwork/scanner-report/{coverages-58.pb → coverages-68.pb} +0 -0
  314. /package/.scannerwork/scanner-report/{duplications-16.pb → duplications-20.pb} +0 -0
  315. /package/.scannerwork/scanner-report/{duplications-50.pb → duplications-3.pb} +0 -0
  316. /package/.scannerwork/scanner-report/{duplications-54.pb → duplications-56.pb} +0 -0
  317. /package/.scannerwork/scanner-report/{duplications-58.pb → duplications-67.pb} +0 -0
  318. /package/.scannerwork/scanner-report/{issues-22.pb → issues-21.pb} +0 -0
  319. /package/.scannerwork/scanner-report/{issues-19.pb → issues-31.pb} +0 -0
  320. /package/.scannerwork/scanner-report/{issues-24.pb → issues-35.pb} +0 -0
  321. /package/.scannerwork/scanner-report/{issues-26.pb → issues-49.pb} +0 -0
  322. /package/.scannerwork/scanner-report/{measures-17.pb → measures-2.pb} +0 -0
  323. /package/.scannerwork/scanner-report/{measures-58.pb → measures-68.pb} +0 -0
  324. /package/.scannerwork/scanner-report/{source-17.txt → source-2.txt} +0 -0
  325. /package/.scannerwork/scanner-report/{source-58.txt → source-68.txt} +0 -0
  326. /package/.scannerwork/scanner-report/{symbols-17.pb → symbols-2.pb} +0 -0
  327. /package/.scannerwork/scanner-report/{symbols-58.pb → symbols-68.pb} +0 -0
  328. /package/.scannerwork/scanner-report/{syntax-highlightings-17.pb → syntax-highlightings-2.pb} +0 -0
  329. /package/.scannerwork/scanner-report/{syntax-highlightings-58.pb → syntax-highlightings-68.pb} +0 -0
@@ -1,4 +1,4 @@
1
- // Copyright © 2017 IBM Corp. All rights reserved.
1
+ // Copyright © 2017, 2022 IBM Corp. All rights reserved.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -14,79 +14,98 @@
14
14
  'use strict';
15
15
 
16
16
  const fs = require('fs');
17
- const stream = require('stream');
18
17
  const liner = require('./liner.js');
19
-
20
- const onLine = function(onCommand, getDocs) {
21
- const change = new stream.Transform({ objectMode: true });
22
-
23
- change._transform = function(line, encoding, done) {
24
- if (line && line[0] === ':') {
25
- const obj = {
26
- command: null,
27
- batch: null,
28
- docs: []
29
- };
30
-
31
- let matches;
32
-
33
- // extract command
34
- matches = line.match(/^:([a-z_]+) ?/);
35
- if (matches) {
36
- obj.command = matches[1];
37
- }
38
-
39
- // extract batch
40
- matches = line.match(/ batch([0-9]+)/);
41
- if (matches) {
42
- obj.batch = parseInt(matches[1]);
43
- }
44
-
45
- // extract doc ids
46
- if (getDocs && obj.command === 't') {
47
- const json = line.replace(/^.* batch[0-9]+ /, '').trim();
48
- obj.docs = JSON.parse(json);
49
- }
50
- onCommand(obj);
51
- }
52
- done();
53
- };
54
- return change;
55
- };
18
+ const change = require('./change.js');
19
+ const error = require('./error.js');
20
+ const debug = require('debug')('couchbackup:spoolchanges');
56
21
 
57
22
  /**
58
- * Generate a list of remaining batches from a download file.
23
+ * Write log file for all changes from a database, ready for downloading
24
+ * in batches.
59
25
  *
60
- * @param {string} log - log file name
61
- * @param {function} callback - callback with err, {changesComplete: N, batches: N}.
62
- * changesComplete signifies whether the log file appeared to
63
- * have completed reading the changes feed (contains :changes_complete).
64
- * batches are remaining batch IDs for download.
26
+ * @param {string} dbUrl - URL of database
27
+ * @param {string} log - path to log file to use
28
+ * @param {number} bufferSize - the number of changes per batch/log line
29
+ * @param {function(err)} callback - a callback to run on completion
65
30
  */
66
- module.exports = function(log, callback) {
67
- // our sense of state
68
- const state = {
31
+ module.exports = function(db, log, bufferSize, ee, callback) {
32
+ // list of document ids to process
33
+ const buffer = [];
34
+ let batch = 0;
35
+ let lastSeq = null;
36
+ const logStream = fs.createWriteStream(log);
37
+ let pending = 0;
38
+ // The number of changes to fetch per request
39
+ const limit = 100000;
69
40
 
41
+ // send documents ids to the queue in batches of bufferSize + the last batch
42
+ const processBuffer = function(lastOne) {
43
+ if (buffer.length >= bufferSize || (lastOne && buffer.length > 0)) {
44
+ debug('writing', buffer.length, 'changes to the backup file');
45
+ const b = { docs: buffer.splice(0, bufferSize), batch: batch };
46
+ logStream.write(':t batch' + batch + ' ' + JSON.stringify(b.docs) + '\n');
47
+ ee.emit('changes', batch);
48
+ batch++;
49
+ }
70
50
  };
71
- let changesComplete = false;
72
51
 
73
- // called with each line from the log file
74
- const onCommand = function(obj) {
75
- if (obj.command === 't') {
76
- state[obj.batch] = true;
77
- } else if (obj.command === 'd') {
78
- delete state[obj.batch];
79
- } else if (obj.command === 'changes_complete') {
80
- changesComplete = true;
52
+ // called once per received change
53
+ const onChange = function(c) {
54
+ if (c) {
55
+ if (c.error) {
56
+ ee.emit('error', new error.BackupError('InvalidChange', `Received invalid change: ${c}`));
57
+ } else if (c.changes) {
58
+ const obj = { id: c.id };
59
+ buffer.push(obj);
60
+ processBuffer(false);
61
+ } else if (c.last_seq) {
62
+ lastSeq = c.last_seq;
63
+ pending = c.pending;
64
+ }
81
65
  }
82
66
  };
83
67
 
84
- // stream through the previous log file
85
- fs.createReadStream(log)
86
- .pipe(liner())
87
- .pipe(onLine(onCommand, false))
88
- .on('finish', function() {
89
- const obj = { changesComplete: changesComplete, batches: state };
90
- callback(null, obj);
91
- });
68
+ function getChanges(since = 0) {
69
+ debug('making changes request since ' + since);
70
+ return db.service.postChangesAsStream({ db: db.db, since: since, limit: limit, seqInterval: limit })
71
+ .then(response => {
72
+ response.result.pipe(liner())
73
+ .on('error', function(err) {
74
+ logStream.end();
75
+ callback(err);
76
+ })
77
+ .pipe(change(onChange))
78
+ .on('error', function(err) {
79
+ logStream.end();
80
+ callback(err);
81
+ })
82
+ .on('finish', function() {
83
+ processBuffer(true);
84
+ if (!lastSeq) {
85
+ logStream.end();
86
+ debug('changes request terminated before last_seq was sent');
87
+ callback(new error.BackupError('SpoolChangesError', 'Changes request terminated before last_seq was sent'));
88
+ } else {
89
+ debug(`changes request completed with last_seq: ${lastSeq} and ${pending} changes pending.`);
90
+ if (pending > 0) {
91
+ // Return the next promise
92
+ return getChanges(lastSeq);
93
+ } else {
94
+ debug('finished streaming database changes');
95
+ logStream.end(':changes_complete ' + lastSeq + '\n', 'utf8', callback);
96
+ }
97
+ }
98
+ });
99
+ })
100
+ .catch(err => {
101
+ logStream.end();
102
+ if (err.status && err.status >= 400) {
103
+ callback(error.convertResponseError(err));
104
+ } else if (err.name !== 'SpoolChangesError') {
105
+ callback(new error.BackupError('SpoolChangesError', `Failed changes request - ${err.message}`));
106
+ }
107
+ });
108
+ }
109
+
110
+ getChanges();
92
111
  };
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2021 IBM Corp. All rights reserved.
1
+ // Copyright © 2017 IBM Corp. All rights reserved.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -15,142 +15,15 @@
15
15
  /* global describe it */
16
16
  'use strict';
17
17
 
18
- const assert = require('assert');
19
- const nock = require('nock');
20
- const request = require('../includes/request.js');
21
- const changes = require('../includes/spoolchanges.js');
18
+ const u = require('./citestutils.js');
22
19
 
23
- const url = 'http://localhost:7777';
24
- const dbName = 'fakenockdb';
25
- const longTestTimeout = 3000;
26
-
27
- const db = request.client(`${url}/${dbName}`, { parallelism: 1 });
28
-
29
- const seqSuffix = Buffer.alloc(124, 'abc123').toString('base64');
30
- function provideChanges(batchSize, totalChanges, fullResponse = false) {
31
- let pending = totalChanges;
32
- const sparseResultsArray = Array(batchSize).fill({
33
- seq: null,
34
- id: 'doc',
35
- changes: [{ rev: '1-abcdef0123456789abcdef0123456789' }]
36
- });
37
- nock(url)
38
- .post(`/${dbName}/_changes`)
39
- .query(true)
40
- .times(totalChanges / batchSize + (totalChanges % batchSize > 0 ? 1 : 0))
41
- .reply(200, (uri, requestBody) => {
42
- pending -= batchSize;
43
- const lastSeq = (totalChanges - pending);
44
- const seq = lastSeq - batchSize;
45
- return {
46
- results: fullResponse
47
- ? Array.from(Array(batchSize), (_, i) => {
48
- return {
49
- seq: `${seq + i}-${seqSuffix}`,
50
- id: `doc${seq + i}`,
51
- changes: [{ rev: '1-abcdef0123456789abcdef0123456789' }]
52
- };
53
- })
54
- : sparseResultsArray,
55
- pending: pending,
56
- last_seq: `${lastSeq}-abc`
57
- };
58
- });
59
- }
60
-
61
- describe('#unit Check spool changes', function() {
62
- it('should terminate on request error', function(done) {
63
- nock(url)
64
- .post(`/${dbName}/_changes`)
65
- .query(true)
66
- .times(3)
67
- .replyWithError({ code: 'ECONNRESET', message: 'socket hang up' });
68
-
69
- changes(db, '/dev/null', 500, null, function(err) {
70
- assert.strictEqual(err.name, 'SpoolChangesError');
71
- assert.strictEqual(err.message, `Failed changes request - socket hang up: post ${url}/${dbName}/_changes`);
72
- assert.ok(nock.isDone());
73
- done();
74
- });
75
- }).timeout(longTestTimeout);
76
-
77
- it('should terminate on bad HTTP status code response', function(done) {
78
- nock(url)
79
- .post(`/${dbName}/_changes`)
80
- .query(true)
81
- .times(3)
82
- .reply(500, function(uri, requestBody) {
83
- this.req.response.statusMessage = 'Internal Server Error';
84
- return { error: 'foo', reason: 'bar' };
85
- });
86
-
87
- changes(db, '/dev/null', 500, null, function(err) {
88
- assert.strictEqual(err.name, 'HTTPFatalError');
89
- assert.strictEqual(err.message, `500 Internal Server Error: post ${url}/${dbName}/_changes - Error: foo, Reason: bar`);
90
- assert.ok(nock.isDone());
91
- done();
92
- });
93
- }).timeout(longTestTimeout);
94
-
95
- it('should keep collecting changes', function(done) {
96
- // This test validates that spooling will correctly
97
- // continue across multiple requests
98
- // (4 batches of 100000 to be precise).
99
- // This test might take up to 10 seconds
100
- this.timeout(10 * 1000);
101
-
102
- // Use full changes for this test
103
- provideChanges(100000, 400000, true);
104
- changes(db, '/dev/null', 500, null, function(err) {
105
- assert.ok(!err);
106
- assert.ok(nock.isDone());
107
- done();
108
- });
109
- });
110
-
111
- it('should keep collecting sparse changes', function(done) {
112
- // This test checks that making thousands of requests doesn't
113
- // make anything bad happen.
114
- // This test might take up to 25 seconds
115
- this.timeout(25 * 1000);
116
- // Use sparse changes for this test and a batch size of 1
117
- provideChanges(1, 2500);
118
- changes(db, '/dev/null', 500, null, function(err) {
119
- assert.ok(!err);
120
- assert.ok(nock.isDone());
121
- done();
122
- });
123
- });
124
- });
125
-
126
- describe('Longer spool changes checks', function() {
127
- it('#slow should keep collecting changes (25M)', function(done) {
128
- // This test might take up to 5 minutes
129
- this.timeout(5 * 60 * 1000);
130
- // Note changes spooling uses a constant batch size, we are setting
131
- // a test value here and setting the buffer to match
132
- const batch = 100000;
133
- // Use sparse changes for this test
134
- provideChanges(batch, 25000000);
135
- changes(db, '/dev/null', batch, null, function(err) {
136
- assert.ok(!err);
137
- assert.ok(nock.isDone());
138
- done();
139
- });
140
- });
141
-
142
- it('#slower should keep collecting changes (500M)', function(done) {
143
- // This test might take up to 90 minutes
144
- this.timeout(90 * 60 * 1000);
145
- // Note changes spooling uses a constant batch size, we are setting
146
- // a test value here and setting the buffer to match
147
- const batch = 1000000;
148
- // Use full changes for this test to exercise load
149
- provideChanges(batch, 500000000, true);
150
- changes(db, '/dev/null', batch, null, function(err) {
151
- assert.ok(!err);
152
- assert.ok(nock.isDone());
153
- done();
20
+ [{ useApi: true }, { useApi: false }].forEach(function(params) {
21
+ describe(u.scenario('#slowest End to end backup and restore', params), function() {
22
+ // 10 GB is about the largest the CI can handle before getting very upset
23
+ // about how long things are taking
24
+ it('should backup and restore largedb10g', function(done) {
25
+ u.setTimeout(this, 350 * 60);
26
+ u.testDirectBackupAndRestore(params, 'largedb10g', this.dbName, done);
154
27
  });
155
28
  });
156
29
  });
@@ -1,4 +1,4 @@
1
- // Copyright © 2017 IBM Corp. All rights reserved.
1
+ // Copyright © 2023 IBM Corp. All rights reserved.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -12,24 +12,89 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
- /* global describe it */
16
15
  'use strict';
17
16
 
18
- const assert = require('assert');
19
- const logfilegetbatches = require('../includes/logfilegetbatches.js');
20
-
21
- describe('#unit Fetching batches from a log file', function() {
22
- it('should fetch multiple batches correctly', function(done) {
23
- logfilegetbatches('./test/fixtures/test.log', [1, 4], function(err, data) {
24
- assert.ok(!err);
25
- assert.ok(data);
26
- assert.strictEqual(typeof data, 'object');
27
- assert.strictEqual(Object.keys(data).length, 2);
28
- assert.deepStrictEqual(data['1'].docs, [{ id: '6' }, { id: '7' }, { id: '8' }, { id: '9' }, { id: '10' }]);
29
- assert.strictEqual(data['1'].batch, 1);
30
- assert.deepStrictEqual(data['4'].docs, [{ id: '21' }, { id: '22' }]);
31
- assert.strictEqual(data['4'].batch, 4);
32
- done();
17
+ const chunk = require('lodash/chunk');
18
+ const difference = require('lodash/difference');
19
+ const forOwn = require('lodash/forOwn');
20
+ const isEmpty = require('lodash/isEmpty');
21
+ const union = require('lodash/union');
22
+
23
+ const compare = async(database1, database2, client) => {
24
+ // check docs same in both dbs
25
+ const allDocs1 = await getAllDocs(client, database1);
26
+ const allDocs2 = await getAllDocs(client, database2);
27
+
28
+ const onlyInDb1 = (difference(allDocs1, allDocs2));
29
+ const onlyInDb2 = (difference(allDocs2, allDocs1));
30
+
31
+ let databasesSame = isEmpty(onlyInDb1) && isEmpty(onlyInDb2);
32
+
33
+ if (!databasesSame) {
34
+ console.log(onlyInDb1.length + ' documents only in db 1.');
35
+ console.log('Document IDs only in db 1: ' + onlyInDb1);
36
+ console.log(onlyInDb2.length + ' documents only in db 2.');
37
+ console.log('Document IDs only in db 2: ' + onlyInDb2);
38
+ }
39
+
40
+ // check revs same in docs common to both dbs
41
+ const partitionSize = 500;
42
+ const batches = chunk(union(allDocs1, allDocs2), partitionSize);
43
+
44
+ const missingRevsInDb2 = await getMissingRevs(client, database1, database2, batches);
45
+ const missingRevsInDb1 = await getMissingRevs(client, database2, database1, batches);
46
+
47
+ databasesSame = databasesSame && isEmpty(missingRevsInDb1) && isEmpty(missingRevsInDb2);
48
+
49
+ if (!databasesSame) {
50
+ console.log('Missing revs in db 1:' + JSON.stringify(missingRevsInDb1));
51
+ console.log('Missing revs in db 2:' + JSON.stringify(missingRevsInDb2));
52
+ }
53
+
54
+ return databasesSame;
55
+ };
56
+
57
+ const getMissingRevs = async(client, databaseName1, databaseName2, batcheses) => {
58
+ const fakeRevisionId = '9999-a';
59
+
60
+ const missing = {};
61
+
62
+ // look in db1 - use a fake revision ID to fetch all leaf revisions
63
+
64
+ for (const batches of batcheses) {
65
+ const documentRevisions = {};
66
+ batches.forEach(id => (documentRevisions[id] = [fakeRevisionId]));
67
+
68
+ const result1 = await client.postRevsDiff({ db: databaseName1, documentRevisions });
69
+ const revsDiffRequestDb2 = {};
70
+ forOwn(result1.result, (v, k) => (revsDiffRequestDb2[k] = v.possible_ancestors));
71
+ // look in db2
72
+ const result2 = await client.postRevsDiff({ db: databaseName2, documentRevisions: revsDiffRequestDb2 });
73
+ forOwn(result2.result, (v, k) => {
74
+ if ('missing' in v) {
75
+ missing[k] = v.missing;
76
+ }
33
77
  });
34
- });
35
- });
78
+ }
79
+ return missing;
80
+ };
81
+
82
+ const getAllDocs = async(client, database) => {
83
+ let allDocIds = [];
84
+ const limit = 2000;
85
+ let startKey = '\u0000';
86
+ do {
87
+ const pageOfDocIds = (await client.postAllDocs({ db: database, startKey, limit })).result.rows.map(r => r.id);
88
+ allDocIds = allDocIds.concat(pageOfDocIds);
89
+ if (pageOfDocIds.length < limit) {
90
+ startKey = null;
91
+ } else {
92
+ startKey = pageOfDocIds[limit - 1] + '\u0000';
93
+ }
94
+ } while (startKey != null);
95
+ return allDocIds;
96
+ };
97
+
98
+ module.exports = {
99
+ compare
100
+ };
@@ -0,0 +1,119 @@
1
+ // Copyright © 2017 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
+
15
+ /* global describe it */
16
+ 'use strict';
17
+
18
+ const assert = require('assert');
19
+ const fs = require('fs');
20
+ const u = require('./citestutils.js');
21
+
22
+ [{ useApi: true }, { useApi: false }].forEach(function(params) {
23
+ describe(u.scenario('Resume tests', params), function() {
24
+ it('should create a log file', function(done) {
25
+ // Allow up to 90 s for this test
26
+ u.setTimeout(this, 60);
27
+
28
+ const actualBackup = `./${this.fileName}`;
29
+ const logFile = `./${this.fileName}` + '.log';
30
+ // Use abort parameter to terminate the backup a given number of ms after
31
+ // the first data write to the output file.
32
+ const p = u.p(params, { opts: { log: logFile } });
33
+ u.testBackupToFile(p, 'animaldb', actualBackup, function(err) {
34
+ if (err) {
35
+ done(err);
36
+ } else {
37
+ // Assert the log file exists
38
+ try {
39
+ assert.ok(fs.existsSync(logFile), 'The log file should exist.');
40
+ done();
41
+ } catch (err) {
42
+ done(err);
43
+ }
44
+ }
45
+ });
46
+ });
47
+
48
+ it('should restore corrupted animaldb to a database correctly', function(done) {
49
+ // Allow up to 60 s to restore and compare (again it should be faster)!
50
+ u.setTimeout(this, 60);
51
+ const input = fs.createReadStream('./test/fixtures/animaldb_corrupted.json');
52
+ const dbName = this.dbName;
53
+ input.on('open', function() {
54
+ u.testRestore(params, input, dbName, function(err) {
55
+ if (err) {
56
+ done(err);
57
+ } else {
58
+ u.dbCompare('animaldb', dbName, done);
59
+ }
60
+ });
61
+ });
62
+ });
63
+
64
+ it('should restore resumed animaldb with blank line to a database correctly', function(done) {
65
+ // Allow up to 60 s to restore and compare (again it should be faster)!
66
+ u.setTimeout(this, 60);
67
+ const input = fs.createReadStream('./test/fixtures/animaldb_resumed_blank.json');
68
+ const dbName = this.dbName;
69
+ input.on('open', function() {
70
+ u.testRestore(params, input, dbName, function(err) {
71
+ if (err) {
72
+ done(err);
73
+ } else {
74
+ u.dbCompare('animaldb', dbName, done);
75
+ }
76
+ });
77
+ });
78
+ });
79
+ });
80
+ });
81
+
82
+ describe('Resume tests', function() {
83
+ // Currently cannot abort API backups, when we do this test should be run for
84
+ // both API and CLI
85
+ it('should correctly backup and restore backup10m', function(done) {
86
+ // Allow up to 90 s for this test
87
+ u.setTimeout(this, 90);
88
+
89
+ const actualBackup = `./${this.fileName}`;
90
+ const logFile = `./${this.fileName}` + '.log';
91
+ // Use abort parameter to terminate the backup a given number of ms after
92
+ // the first data write to the output file.
93
+ const p = u.p(params, { abort: true }, { opts: { log: logFile } });
94
+ const restoreDb = this.dbName;
95
+ // Set the database doc count as fewer than this should be written during
96
+ // resumed backup.
97
+ p.exclusiveMaxExpected = 5096;
98
+
99
+ u.testBackupAbortResumeRestore(p, 'backup10m', actualBackup, restoreDb, done);
100
+ });
101
+ // Note --output is only valid for CLI usage, this test should only run for CLI
102
+ const params = { useApi: false };
103
+ it('should correctly backup and restore backup10m using --output', function(done) {
104
+ // Allow up to 90 s for this test
105
+ u.setTimeout(this, 90);
106
+
107
+ const actualBackup = `./${this.fileName}`;
108
+ const logFile = `./${this.fileName}` + '.log';
109
+ // Use abort parameter to terminate the backup a given number of ms after
110
+ // the first data write to the output file.
111
+ const p = u.p(params, { abort: true }, { opts: { output: actualBackup, log: logFile } });
112
+ const restoreDb = this.dbName;
113
+ // Set the database doc count as fewer than this should be written during
114
+ // resumed backup.
115
+ p.exclusiveMaxExpected = 5096;
116
+
117
+ u.testBackupAbortResumeRestore(p, 'backup10m', actualBackup, restoreDb, done);
118
+ });
119
+ });