@cloudant/couchbackup 2.9.13 → 2.9.14-SNAPSHOT.146

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 (376) 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-10.pb +2 -0
  4. package/.scannerwork/scanner-report/changesets-13.pb +1 -0
  5. package/.scannerwork/scanner-report/changesets-30.pb +1 -0
  6. package/.scannerwork/scanner-report/changesets-31.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-32.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-33.pb +1 -0
  9. package/.scannerwork/scanner-report/changesets-34.pb +1 -0
  10. package/.scannerwork/scanner-report/changesets-49.pb +1 -0
  11. package/.scannerwork/scanner-report/changesets-50.pb +1 -0
  12. package/.scannerwork/scanner-report/changesets-6.pb +1 -0
  13. package/.scannerwork/scanner-report/changesets-7.pb +1 -0
  14. package/.scannerwork/scanner-report/changesets-8.pb +1 -0
  15. package/.scannerwork/scanner-report/changesets-9.pb +1 -0
  16. package/.scannerwork/scanner-report/component-1.pb +3 -1
  17. package/.scannerwork/scanner-report/component-10.pb +2 -0
  18. package/.scannerwork/scanner-report/component-11.pb +1 -1
  19. package/.scannerwork/scanner-report/component-12.pb +1 -1
  20. package/.scannerwork/scanner-report/component-13.pb +1 -0
  21. package/.scannerwork/scanner-report/component-14.pb +1 -1
  22. package/.scannerwork/scanner-report/component-15.pb +1 -1
  23. package/.scannerwork/scanner-report/component-16.pb +1 -1
  24. package/.scannerwork/scanner-report/component-17.pb +1 -1
  25. package/.scannerwork/scanner-report/component-18.pb +1 -1
  26. package/.scannerwork/scanner-report/component-30.pb +1 -0
  27. package/.scannerwork/scanner-report/component-31.pb +1 -0
  28. package/.scannerwork/scanner-report/component-32.pb +1 -0
  29. package/.scannerwork/scanner-report/component-33.pb +1 -0
  30. package/.scannerwork/scanner-report/component-34.pb +1 -0
  31. package/.scannerwork/scanner-report/component-35.pb +1 -1
  32. package/.scannerwork/scanner-report/component-36.pb +1 -1
  33. package/.scannerwork/scanner-report/component-37.pb +1 -1
  34. package/.scannerwork/scanner-report/component-39.pb +1 -1
  35. package/.scannerwork/scanner-report/component-4.pb +1 -0
  36. package/.scannerwork/scanner-report/component-40.pb +1 -1
  37. package/.scannerwork/scanner-report/component-42.pb +1 -1
  38. package/.scannerwork/scanner-report/component-43.pb +1 -1
  39. package/.scannerwork/scanner-report/component-44.pb +1 -1
  40. package/.scannerwork/scanner-report/component-45.pb +1 -1
  41. package/.scannerwork/scanner-report/component-46.pb +1 -1
  42. package/.scannerwork/scanner-report/component-47.pb +1 -1
  43. package/.scannerwork/scanner-report/component-48.pb +1 -1
  44. package/.scannerwork/scanner-report/component-49.pb +1 -0
  45. package/.scannerwork/scanner-report/component-5.pb +1 -1
  46. package/.scannerwork/scanner-report/component-50.pb +1 -1
  47. package/.scannerwork/scanner-report/component-51.pb +1 -1
  48. package/.scannerwork/scanner-report/component-52.pb +1 -1
  49. package/.scannerwork/scanner-report/component-54.pb +1 -1
  50. package/.scannerwork/scanner-report/component-55.pb +1 -1
  51. package/.scannerwork/scanner-report/component-56.pb +1 -1
  52. package/.scannerwork/scanner-report/component-59.pb +1 -1
  53. package/.scannerwork/scanner-report/component-6.pb +1 -0
  54. package/.scannerwork/scanner-report/component-60.pb +1 -1
  55. package/.scannerwork/scanner-report/component-62.pb +1 -1
  56. package/.scannerwork/scanner-report/component-64.pb +1 -1
  57. package/.scannerwork/scanner-report/component-7.pb +1 -0
  58. package/.scannerwork/scanner-report/component-8.pb +1 -1
  59. package/.scannerwork/scanner-report/component-9.pb +1 -0
  60. package/.scannerwork/scanner-report/coverages-10.pb +0 -0
  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-15.pb +0 -0
  66. package/.scannerwork/scanner-report/coverages-16.pb +0 -0
  67. package/.scannerwork/scanner-report/coverages-17.pb +0 -0
  68. package/.scannerwork/scanner-report/coverages-18.pb +0 -0
  69. package/.scannerwork/scanner-report/coverages-30.pb +0 -0
  70. package/.scannerwork/scanner-report/coverages-33.pb +0 -0
  71. package/.scannerwork/scanner-report/{coverages-38.pb → coverages-34.pb} +0 -0
  72. package/.scannerwork/scanner-report/coverages-35.pb +0 -0
  73. package/.scannerwork/scanner-report/coverages-36.pb +0 -0
  74. package/.scannerwork/scanner-report/coverages-37.pb +0 -0
  75. package/.scannerwork/scanner-report/coverages-39.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-40.pb +0 -0
  77. package/.scannerwork/scanner-report/coverages-42.pb +0 -0
  78. package/.scannerwork/scanner-report/coverages-43.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-44.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-45.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-46.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-47.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-48.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-49.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-5.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-50.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-51.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-54.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-55.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-56.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-59.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-6.pb +0 -0
  94. package/.scannerwork/scanner-report/coverages-60.pb +0 -0
  95. package/.scannerwork/scanner-report/coverages-64.pb +0 -0
  96. package/.scannerwork/scanner-report/coverages-7.pb +0 -0
  97. package/.scannerwork/scanner-report/coverages-9.pb +0 -0
  98. package/.scannerwork/scanner-report/duplications-11.pb +0 -2
  99. package/.scannerwork/scanner-report/duplications-12.pb +0 -2
  100. package/.scannerwork/scanner-report/duplications-15.pb +2 -0
  101. package/.scannerwork/scanner-report/duplications-17.pb +3 -0
  102. package/.scannerwork/scanner-report/duplications-30.pb +2 -0
  103. package/.scannerwork/scanner-report/duplications-37.pb +0 -2
  104. package/.scannerwork/scanner-report/duplications-42.pb +0 -3
  105. package/.scannerwork/scanner-report/duplications-43.pb +2 -0
  106. package/.scannerwork/scanner-report/duplications-45.pb +0 -2
  107. package/.scannerwork/scanner-report/duplications-55.pb +2 -0
  108. package/.scannerwork/scanner-report/duplications-59.pb +2 -0
  109. package/.scannerwork/scanner-report/duplications-60.pb +1 -1
  110. package/.scannerwork/scanner-report/duplications-9.pb +3 -0
  111. package/.scannerwork/scanner-report/issues-36.pb +2 -2
  112. package/.scannerwork/scanner-report/issues-37.pb +3 -0
  113. package/.scannerwork/scanner-report/measures-10.pb +0 -0
  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 +0 -0
  117. package/.scannerwork/scanner-report/measures-14.pb +0 -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-30.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-33.pb +0 -0
  124. package/.scannerwork/scanner-report/measures-34.pb +0 -0
  125. package/.scannerwork/scanner-report/measures-35.pb +0 -0
  126. package/.scannerwork/scanner-report/measures-36.pb +0 -0
  127. package/.scannerwork/scanner-report/measures-37.pb +0 -0
  128. package/.scannerwork/scanner-report/measures-39.pb +0 -0
  129. package/.scannerwork/scanner-report/measures-4.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-40.pb +0 -0
  131. package/.scannerwork/scanner-report/measures-42.pb +0 -0
  132. package/.scannerwork/scanner-report/measures-43.pb +0 -0
  133. package/.scannerwork/scanner-report/measures-44.pb +0 -0
  134. package/.scannerwork/scanner-report/measures-45.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-46.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-47.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-48.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-49.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-5.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-50.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-59.pb +0 -0
  147. package/.scannerwork/scanner-report/measures-6.pb +0 -0
  148. package/.scannerwork/scanner-report/measures-60.pb +0 -0
  149. package/.scannerwork/scanner-report/measures-62.pb +0 -0
  150. package/.scannerwork/scanner-report/measures-64.pb +0 -0
  151. package/.scannerwork/scanner-report/measures-7.pb +0 -0
  152. package/.scannerwork/scanner-report/measures-8.pb +0 -0
  153. package/.scannerwork/scanner-report/measures-9.pb +0 -0
  154. package/.scannerwork/scanner-report/metadata.pb +0 -0
  155. package/.scannerwork/scanner-report/source-10.txt +63 -0
  156. package/.scannerwork/scanner-report/source-11.txt +64 -147
  157. package/.scannerwork/scanner-report/source-12.txt +45 -167
  158. package/.scannerwork/scanner-report/{source-41.txt → source-13.txt} +14 -7
  159. package/.scannerwork/scanner-report/source-14.txt +47 -47
  160. package/.scannerwork/scanner-report/source-15.txt +262 -69
  161. package/.scannerwork/scanner-report/source-16.txt +603 -14
  162. package/.scannerwork/scanner-report/source-17.txt +91 -35
  163. package/.scannerwork/scanner-report/source-18.txt +128 -40
  164. package/.scannerwork/scanner-report/source-30.txt +145 -0
  165. package/.scannerwork/scanner-report/source-33.txt +147 -0
  166. package/.scannerwork/scanner-report/{source-38.txt → source-34.txt} +9 -10
  167. package/.scannerwork/scanner-report/source-35.txt +10 -347
  168. package/.scannerwork/scanner-report/source-36.txt +29 -124
  169. package/.scannerwork/scanner-report/source-37.txt +118 -121
  170. package/.scannerwork/scanner-report/source-39.txt +40 -31
  171. package/.scannerwork/scanner-report/source-4.txt +509 -0
  172. package/.scannerwork/scanner-report/source-40.txt +62 -19
  173. package/.scannerwork/scanner-report/source-42.txt +90 -107
  174. package/.scannerwork/scanner-report/source-43.txt +50 -67
  175. package/.scannerwork/scanner-report/source-44.txt +40 -142
  176. package/.scannerwork/scanner-report/source-45.txt +105 -269
  177. package/.scannerwork/scanner-report/source-46.txt +32 -133
  178. package/.scannerwork/scanner-report/source-47.txt +14 -39
  179. package/.scannerwork/scanner-report/source-48.txt +90 -56
  180. package/.scannerwork/scanner-report/source-49.txt +281 -0
  181. package/.scannerwork/scanner-report/source-5.txt +20 -403
  182. package/.scannerwork/scanner-report/source-50.txt +41 -509
  183. package/.scannerwork/scanner-report/source-51.txt +84 -21
  184. package/.scannerwork/scanner-report/source-52.txt +63 -14
  185. package/.scannerwork/scanner-report/source-54.txt +138 -20
  186. package/.scannerwork/scanner-report/source-55.txt +76 -113
  187. package/.scannerwork/scanner-report/source-56.txt +78 -241
  188. package/.scannerwork/scanner-report/source-59.txt +175 -65
  189. package/.scannerwork/scanner-report/source-6.txt +100 -0
  190. package/.scannerwork/scanner-report/source-60.txt +152 -52
  191. package/.scannerwork/scanner-report/source-62.txt +167 -54
  192. package/.scannerwork/scanner-report/source-64.txt +387 -133
  193. package/.scannerwork/scanner-report/source-7.txt +366 -0
  194. package/.scannerwork/scanner-report/source-8.txt +36 -167
  195. package/.scannerwork/scanner-report/source-9.txt +131 -0
  196. package/.scannerwork/scanner-report/symbols-10.pb +43 -0
  197. package/.scannerwork/scanner-report/symbols-11.pb +60 -153
  198. package/.scannerwork/scanner-report/symbols-12.pb +45 -180
  199. package/.scannerwork/scanner-report/symbols-13.pb +14 -0
  200. package/.scannerwork/scanner-report/symbols-14.pb +35 -44
  201. package/.scannerwork/scanner-report/symbols-15.pb +485 -68
  202. package/.scannerwork/scanner-report/symbols-16.pb +1253 -13
  203. package/.scannerwork/scanner-report/symbols-17.pb +76 -42
  204. package/.scannerwork/scanner-report/symbols-18.pb +110 -34
  205. package/.scannerwork/scanner-report/symbols-30.pb +102 -0
  206. package/.scannerwork/scanner-report/symbols-33.pb +85 -0
  207. package/.scannerwork/scanner-report/symbols-34.pb +10 -0
  208. package/.scannerwork/scanner-report/symbols-35.pb +9 -494
  209. package/.scannerwork/scanner-report/symbols-36.pb +27 -116
  210. package/.scannerwork/scanner-report/symbols-37.pb +111 -97
  211. package/.scannerwork/scanner-report/symbols-39.pb +19 -27
  212. package/.scannerwork/scanner-report/symbols-40.pb +29 -9
  213. package/.scannerwork/scanner-report/symbols-42.pb +28 -97
  214. package/.scannerwork/scanner-report/symbols-43.pb +42 -60
  215. package/.scannerwork/scanner-report/symbols-44.pb +14 -111
  216. package/.scannerwork/scanner-report/symbols-45.pb +33 -486
  217. package/.scannerwork/scanner-report/symbols-46.pb +19 -84
  218. package/.scannerwork/scanner-report/symbols-47.pb +13 -18
  219. package/.scannerwork/scanner-report/symbols-48.pb +58 -29
  220. package/.scannerwork/scanner-report/symbols-49.pb +354 -0
  221. package/.scannerwork/scanner-report/symbols-5.pb +17 -610
  222. package/.scannerwork/scanner-report/symbols-50.pb +18 -0
  223. package/.scannerwork/scanner-report/symbols-51.pb +39 -15
  224. package/.scannerwork/scanner-report/symbols-52.pb +45 -13
  225. package/.scannerwork/scanner-report/symbols-54.pb +126 -20
  226. package/.scannerwork/scanner-report/symbols-55.pb +44 -33
  227. package/.scannerwork/scanner-report/symbols-56.pb +30 -354
  228. package/.scannerwork/scanner-report/symbols-59.pb +180 -46
  229. package/.scannerwork/scanner-report/symbols-6.pb +69 -0
  230. package/.scannerwork/scanner-report/symbols-60.pb +152 -41
  231. package/.scannerwork/scanner-report/symbols-64.pb +604 -120
  232. package/.scannerwork/scanner-report/symbols-7.pb +494 -0
  233. package/.scannerwork/scanner-report/symbols-9.pb +97 -0
  234. package/.scannerwork/scanner-report/syntax-highlightings-10.pb +82 -0
  235. package/.scannerwork/scanner-report/syntax-highlightings-11.pb +72 -176
  236. package/.scannerwork/scanner-report/syntax-highlightings-12.pb +65 -180
  237. package/.scannerwork/scanner-report/syntax-highlightings-13.pb +54 -0
  238. package/.scannerwork/scanner-report/syntax-highlightings-14.pb +59 -74
  239. package/.scannerwork/scanner-report/syntax-highlightings-15.pb +618 -64
  240. package/.scannerwork/scanner-report/syntax-highlightings-16.pb +854 -21
  241. package/.scannerwork/scanner-report/syntax-highlightings-17.pb +119 -43
  242. package/.scannerwork/scanner-report/syntax-highlightings-18.pb +185 -57
  243. package/.scannerwork/scanner-report/syntax-highlightings-30.pb +227 -0
  244. package/.scannerwork/scanner-report/syntax-highlightings-33.pb +191 -0
  245. package/.scannerwork/scanner-report/{syntax-highlightings-41.pb → syntax-highlightings-34.pb} +15 -13
  246. package/.scannerwork/scanner-report/syntax-highlightings-35.pb +15 -597
  247. package/.scannerwork/scanner-report/syntax-highlightings-36.pb +31 -97
  248. package/.scannerwork/scanner-report/syntax-highlightings-37.pb +96 -189
  249. package/.scannerwork/scanner-report/syntax-highlightings-39.pb +59 -45
  250. package/.scannerwork/scanner-report/syntax-highlightings-4.pb +3747 -0
  251. package/.scannerwork/scanner-report/syntax-highlightings-40.pb +82 -29
  252. package/.scannerwork/scanner-report/syntax-highlightings-42.pb +102 -146
  253. package/.scannerwork/scanner-report/syntax-highlightings-43.pb +43 -75
  254. package/.scannerwork/scanner-report/syntax-highlightings-44.pb +24 -193
  255. package/.scannerwork/scanner-report/syntax-highlightings-45.pb +91 -621
  256. package/.scannerwork/scanner-report/syntax-highlightings-46.pb +35 -162
  257. package/.scannerwork/scanner-report/syntax-highlightings-47.pb +33 -70
  258. package/.scannerwork/scanner-report/syntax-highlightings-48.pb +108 -78
  259. package/.scannerwork/scanner-report/syntax-highlightings-49.pb +285 -0
  260. package/.scannerwork/scanner-report/syntax-highlightings-5.pb +34 -619
  261. package/.scannerwork/scanner-report/syntax-highlightings-50.pb +39 -3736
  262. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +83 -17
  263. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +65 -15
  264. package/.scannerwork/scanner-report/syntax-highlightings-54.pb +178 -29
  265. package/.scannerwork/scanner-report/syntax-highlightings-55.pb +49 -88
  266. package/.scannerwork/scanner-report/syntax-highlightings-56.pb +78 -250
  267. package/.scannerwork/scanner-report/syntax-highlightings-59.pb +194 -64
  268. package/.scannerwork/scanner-report/syntax-highlightings-6.pb +105 -0
  269. package/.scannerwork/scanner-report/syntax-highlightings-60.pb +183 -47
  270. package/.scannerwork/scanner-report/syntax-highlightings-62.pb +938 -43
  271. package/.scannerwork/scanner-report/syntax-highlightings-64.pb +586 -151
  272. package/.scannerwork/scanner-report/syntax-highlightings-7.pb +630 -0
  273. package/.scannerwork/scanner-report/syntax-highlightings-8.pb +48 -938
  274. package/.scannerwork/scanner-report/syntax-highlightings-9.pb +182 -0
  275. package/package.json +1 -1
  276. package/test-18-results.xml +152 -152
  277. package/test-iam-18-results.xml +50 -50
  278. package/.scannerwork/scanner-report/changesets-19.pb +0 -1
  279. package/.scannerwork/scanner-report/changesets-2.pb +0 -1
  280. package/.scannerwork/scanner-report/changesets-20.pb +0 -1
  281. package/.scannerwork/scanner-report/changesets-21.pb +0 -1
  282. package/.scannerwork/scanner-report/changesets-22.pb +0 -1
  283. package/.scannerwork/scanner-report/changesets-23.pb +0 -1
  284. package/.scannerwork/scanner-report/changesets-38.pb +0 -1
  285. package/.scannerwork/scanner-report/changesets-41.pb +0 -1
  286. package/.scannerwork/scanner-report/changesets-57.pb +0 -1
  287. package/.scannerwork/scanner-report/changesets-58.pb +0 -1
  288. package/.scannerwork/scanner-report/changesets-61.pb +0 -1
  289. package/.scannerwork/scanner-report/changesets-62.pb +0 -1
  290. package/.scannerwork/scanner-report/changesets-63.pb +0 -1
  291. package/.scannerwork/scanner-report/component-19.pb +0 -1
  292. package/.scannerwork/scanner-report/component-2.pb +0 -1
  293. package/.scannerwork/scanner-report/component-20.pb +0 -1
  294. package/.scannerwork/scanner-report/component-21.pb +0 -1
  295. package/.scannerwork/scanner-report/component-22.pb +0 -1
  296. package/.scannerwork/scanner-report/component-23.pb +0 -1
  297. package/.scannerwork/scanner-report/component-38.pb +0 -1
  298. package/.scannerwork/scanner-report/component-41.pb +0 -1
  299. package/.scannerwork/scanner-report/component-57.pb +0 -1
  300. package/.scannerwork/scanner-report/component-58.pb +0 -1
  301. package/.scannerwork/scanner-report/component-61.pb +0 -1
  302. package/.scannerwork/scanner-report/component-63.pb +0 -1
  303. package/.scannerwork/scanner-report/coverages-2.pb +0 -0
  304. package/.scannerwork/scanner-report/coverages-20.pb +0 -0
  305. package/.scannerwork/scanner-report/coverages-21.pb +0 -0
  306. package/.scannerwork/scanner-report/coverages-41.pb +0 -0
  307. package/.scannerwork/scanner-report/coverages-57.pb +0 -0
  308. package/.scannerwork/scanner-report/coverages-58.pb +0 -0
  309. package/.scannerwork/scanner-report/coverages-61.pb +0 -0
  310. package/.scannerwork/scanner-report/coverages-62.pb +0 -0
  311. package/.scannerwork/scanner-report/coverages-63.pb +0 -0
  312. package/.scannerwork/scanner-report/duplications-21.pb +0 -3
  313. package/.scannerwork/scanner-report/duplications-61.pb +0 -2
  314. package/.scannerwork/scanner-report/issues-39.pb +0 -3
  315. package/.scannerwork/scanner-report/measures-19.pb +0 -0
  316. package/.scannerwork/scanner-report/measures-2.pb +0 -0
  317. package/.scannerwork/scanner-report/measures-20.pb +0 -0
  318. package/.scannerwork/scanner-report/measures-21.pb +0 -0
  319. package/.scannerwork/scanner-report/measures-38.pb +0 -0
  320. package/.scannerwork/scanner-report/measures-41.pb +0 -0
  321. package/.scannerwork/scanner-report/measures-57.pb +0 -0
  322. package/.scannerwork/scanner-report/measures-58.pb +0 -15
  323. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  324. package/.scannerwork/scanner-report/measures-63.pb +0 -0
  325. package/.scannerwork/scanner-report/source-19.txt +0 -36
  326. package/.scannerwork/scanner-report/source-2.txt +0 -114
  327. package/.scannerwork/scanner-report/source-20.txt +0 -625
  328. package/.scannerwork/scanner-report/source-21.txt +0 -119
  329. package/.scannerwork/scanner-report/source-57.txt +0 -118
  330. package/.scannerwork/scanner-report/source-58.txt +0 -104
  331. package/.scannerwork/scanner-report/source-61.txt +0 -92
  332. package/.scannerwork/scanner-report/source-63.txt +0 -111
  333. package/.scannerwork/scanner-report/symbols-2.pb +0 -28
  334. package/.scannerwork/scanner-report/symbols-20.pb +0 -1254
  335. package/.scannerwork/scanner-report/symbols-21.pb +0 -77
  336. package/.scannerwork/scanner-report/symbols-38.pb +0 -17
  337. package/.scannerwork/scanner-report/symbols-41.pb +0 -9
  338. package/.scannerwork/scanner-report/symbols-57.pb +0 -30
  339. package/.scannerwork/scanner-report/symbols-58.pb +0 -42
  340. package/.scannerwork/scanner-report/symbols-61.pb +0 -44
  341. package/.scannerwork/scanner-report/symbols-62.pb +0 -15
  342. package/.scannerwork/scanner-report/symbols-63.pb +0 -59
  343. package/.scannerwork/scanner-report/syntax-highlightings-19.pb +0 -59
  344. package/.scannerwork/scanner-report/syntax-highlightings-2.pb +0 -138
  345. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +0 -887
  346. package/.scannerwork/scanner-report/syntax-highlightings-21.pb +0 -158
  347. package/.scannerwork/scanner-report/syntax-highlightings-38.pb +0 -63
  348. package/.scannerwork/scanner-report/syntax-highlightings-57.pb +0 -113
  349. package/.scannerwork/scanner-report/syntax-highlightings-58.pb +0 -116
  350. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +0 -90
  351. package/.scannerwork/scanner-report/syntax-highlightings-63.pb +0 -133
  352. /package/.scannerwork/scanner-report/{coverages-22.pb → coverages-31.pb} +0 -0
  353. /package/.scannerwork/scanner-report/{coverages-23.pb → coverages-32.pb} +0 -0
  354. /package/.scannerwork/scanner-report/{coverages-19.pb → coverages-8.pb} +0 -0
  355. /package/.scannerwork/scanner-report/{duplications-19.pb → duplications-10.pb} +0 -0
  356. /package/.scannerwork/scanner-report/{duplications-2.pb → duplications-13.pb} +0 -0
  357. /package/.scannerwork/scanner-report/{duplications-22.pb → duplications-31.pb} +0 -0
  358. /package/.scannerwork/scanner-report/{duplications-23.pb → duplications-32.pb} +0 -0
  359. /package/.scannerwork/scanner-report/{duplications-20.pb → duplications-33.pb} +0 -0
  360. /package/.scannerwork/scanner-report/{duplications-35.pb → duplications-34.pb} +0 -0
  361. /package/.scannerwork/scanner-report/{duplications-38.pb → duplications-49.pb} +0 -0
  362. /package/.scannerwork/scanner-report/{duplications-57.pb → duplications-50.pb} +0 -0
  363. /package/.scannerwork/scanner-report/{duplications-58.pb → duplications-6.pb} +0 -0
  364. /package/.scannerwork/scanner-report/{duplications-62.pb → duplications-7.pb} +0 -0
  365. /package/.scannerwork/scanner-report/{duplications-63.pb → duplications-8.pb} +0 -0
  366. /package/.scannerwork/scanner-report/{issues-23.pb → issues-32.pb} +0 -0
  367. /package/.scannerwork/scanner-report/{issues-35.pb → issues-7.pb} +0 -0
  368. /package/.scannerwork/scanner-report/{measures-22.pb → measures-31.pb} +0 -0
  369. /package/.scannerwork/scanner-report/{measures-23.pb → measures-32.pb} +0 -0
  370. /package/.scannerwork/scanner-report/{source-22.txt → source-31.txt} +0 -0
  371. /package/.scannerwork/scanner-report/{source-23.txt → source-32.txt} +0 -0
  372. /package/.scannerwork/scanner-report/{symbols-22.pb → symbols-31.pb} +0 -0
  373. /package/.scannerwork/scanner-report/{symbols-23.pb → symbols-32.pb} +0 -0
  374. /package/.scannerwork/scanner-report/{symbols-19.pb → symbols-8.pb} +0 -0
  375. /package/.scannerwork/scanner-report/{syntax-highlightings-22.pb → syntax-highlightings-31.pb} +0 -0
  376. /package/.scannerwork/scanner-report/{syntax-highlightings-23.pb → syntax-highlightings-32.pb} +0 -0
@@ -1,4 +1,4 @@
1
- // Copyright © 2023 IBM Corp. All rights reserved.
1
+ // Copyright © 2017, 2021 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,89 +12,282 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
+ /* global describe it before after beforeEach */
15
16
  'use strict';
16
17
 
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');
18
+ const assert = require('assert');
19
+ const fs = require('fs');
20
+ const u = require('./citestutils.js');
21
+ const mockServerPort = +process.env.COUCHBACKUP_MOCK_SERVER_PORT || 7777;
22
+ const url = `http://localhost:${mockServerPort}`;
23
+ const nock = require('nock');
24
+ const httpProxy = require('http-proxy');
25
+ const Readable = require('stream').Readable;
22
26
 
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));
27
+ // Create an infinite stream to read.
28
+ // It just keeps sending a backup line, useful for testing cases of
29
+ // termination while a stream has content remaining (the animaldb backup
30
+ // is too small for that).
31
+ class InfiniteBackupStream extends Readable {
32
+ constructor(opt) {
33
+ super(opt);
34
+ this.contents = Buffer.from('[{"_id":"giraffe","_rev":"3-7665c3e66315ff40616cceef62886bd8","min_weight":830,"min_length":5,"max_weight":1600,"max_length":6,"wiki_page":"http://en.wikipedia.org/wiki/Giraffe","class":"mammal","diet":"herbivore","_revisions":{"start":3,"ids":["7665c3e66315ff40616cceef62886bd8","aaaf10d5a68cdf22d95a5482a0e95549","967a00dff5e02add41819138abb3284d"]}}]\n', 'utf8');
35
+ }
30
36
 
31
- let databasesSame = isEmpty(onlyInDb1) && isEmpty(onlyInDb2);
37
+ _read() {
38
+ let proceed;
39
+ do {
40
+ proceed = this.push(this.contents);
41
+ } while (proceed);
42
+ }
43
+ }
32
44
 
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);
45
+ function assertNock(done) {
46
+ try {
47
+ assert.ok(nock.isDone());
48
+ done();
49
+ } catch (err) {
50
+ console.error('pending mocks: %j', nock.pendingMocks());
51
+ done(err);
38
52
  }
53
+ }
39
54
 
40
- // check revs same in docs common to both dbs
41
- const partitionSize = 500;
42
- const batches = chunk(union(allDocs1, allDocs2), partitionSize);
55
+ function backupHttpError(opts, errorName, errorCode, done) {
56
+ const p = u.p(opts, { expectedBackupError: { name: errorName, code: errorCode } });
43
57
 
44
- const missingRevsInDb2 = await getMissingRevs(client, database1, database2, batches);
45
- const missingRevsInDb1 = await getMissingRevs(client, database2, database1, batches);
58
+ // Create a file and attempt a backup to it
59
+ const output = fs.createWriteStream('/dev/null');
60
+ output.on('open', function() {
61
+ u.testBackup(p, 'fakenockdb', output, function(err) {
62
+ if (err) {
63
+ done(err);
64
+ } else {
65
+ assertNock(done);
66
+ }
67
+ });
68
+ });
69
+ }
46
70
 
47
- databasesSame = databasesSame && isEmpty(missingRevsInDb1) && isEmpty(missingRevsInDb2);
71
+ function restoreHttpError(opts, errorName, errorCode, done) {
72
+ const q = u.p(opts, { expectedRestoreError: { name: errorName, code: errorCode } });
73
+ u.testRestoreFromFile(q, './test/fixtures/animaldb_expected.json', 'fakenockdb', function(err) {
74
+ if (err) {
75
+ done(err);
76
+ } else {
77
+ assertNock(done);
78
+ }
79
+ });
80
+ }
48
81
 
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
- }
82
+ [{ useApi: true }, { useApi: false }].forEach(function(params) {
83
+ describe(u.scenario('#unit Fatal errors', params), function() {
84
+ let processEnvCopy;
85
+ let proxy;
86
+
87
+ before('Set process data for test', function() {
88
+ // Copy env and argv so we can reset them after the tests
89
+ processEnvCopy = JSON.parse(JSON.stringify(process.env));
53
90
 
54
- return databasesSame;
55
- };
91
+ // Set up a proxy to point to our nock server because the nock override
92
+ // isn't visible to the spawned CLI process
93
+ if (!params.useApi) {
94
+ proxy = httpProxy.createProxyServer({ target: url }).listen(mockServerPort + 1000, 'localhost');
95
+ }
56
96
 
57
- const getMissingRevs = async(client, databaseName1, databaseName2, batcheses) => {
58
- const fakeRevisionId = '9999-a';
97
+ // setup environment variables
98
+ process.env.COUCH_URL = (params.useApi) ? url : `http://localhost:${mockServerPort + 1000}`;
99
+ });
59
100
 
60
- const missing = {};
101
+ after('Reset process data', function(done) {
102
+ process.env = processEnvCopy;
103
+ if (!params.useApi) {
104
+ proxy.close(done);
105
+ } else {
106
+ done();
107
+ }
108
+ });
61
109
 
62
- // look in db1 - use a fake revision ID to fetch all leaf revisions
110
+ beforeEach('Reset nocks', function() {
111
+ nock.cleanAll();
112
+ });
63
113
 
64
- for (const batches of batcheses) {
65
- const documentRevisions = {};
66
- batches.forEach(id => (documentRevisions[id] = [fakeRevisionId]));
114
+ describe('for backup', function() {
115
+ it('should terminate when DB does not exist', function(done) {
116
+ // Simulate existence check
117
+ nock(url).head('/fakenockdb').reply(404, { error: 'not_found', reason: 'missing' });
118
+ backupHttpError(params, 'DatabaseNotFound', 10, done);
119
+ });
67
120
 
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
- }
121
+ it('should terminate on BulkGetError', function(done) {
122
+ // Simulate existence check
123
+ const n = nock(url).head('/fakenockdb').reply(200);
124
+ // Simulate _bulk_get not available
125
+ n.post('/fakenockdb/_bulk_get').reply(404, { error: 'not_found', reason: 'missing' });
126
+ backupHttpError(params, 'BulkGetError', 50, done);
127
+ });
128
+
129
+ it('should terminate on Unauthorized existence check', function(done) {
130
+ // Simulate a 401
131
+ nock(url).head('/fakenockdb').reply(401, { error: 'unauthorized', reason: '_reader access is required for this request' });
132
+ backupHttpError(params, 'Unauthorized', 11, done);
133
+ });
134
+
135
+ it('should terminate on Forbidden no _reader', function(done) {
136
+ // Simulate a 403
137
+ nock(url).head('/fakenockdb').reply(403, { error: 'forbidden', reason: '_reader access is required for this request' });
138
+ backupHttpError(params, 'Forbidden', 12, done);
139
+ });
140
+
141
+ it('should terminate on _bulk_get HTTPFatalError', function(done) {
142
+ // Provide a mock complete changes log to allow a resume to skip ahead
143
+ const p = u.p(params, { opts: { resume: true, log: './test/fixtures/test.log' } });
144
+ // Allow the existence and _bulk_get checks to pass
145
+ const n = nock(url).head('/fakenockdb').reply(200);
146
+ n.post('/fakenockdb/_bulk_get').reply(200, '{"results": []}');
147
+ // Simulate a fatal HTTP error when trying to fetch docs
148
+ // Note: 2 outstanding batches, so 2 responses, 1 mock is optional because we can't guarantee timing
149
+ n.post('/fakenockdb/_bulk_get').query(true).reply(400, { error: 'bad_request', reason: 'testing bad response' });
150
+ n.post('/fakenockdb/_bulk_get').query(true).optionally().reply(400, { error: 'bad_request', reason: 'testing bad response' });
151
+ backupHttpError(p, 'HTTPFatalError', 40, done);
152
+ });
153
+
154
+ it('should terminate on NoLogFileName', function(done) {
155
+ // Don't supply a log file name with resume
156
+ const p = u.p(params, { opts: { resume: true } });
157
+ backupHttpError(p, 'NoLogFileName', 20, done);
158
+ });
159
+
160
+ it('should terminate on LogDoesNotExist', function(done) {
161
+ // Use a non-existent log file
162
+ const p = u.p(params, { opts: { resume: true, log: './test/fixtures/doesnotexist.log' } });
163
+ backupHttpError(p, 'LogDoesNotExist', 21, done);
164
+ });
165
+
166
+ it('should terminate on IncompleteChangesInLogFile', function(done) {
167
+ // Use an incomplete changes log file
168
+ const p = u.p(params, { opts: { resume: true, log: './test/fixtures/incomplete_changes.log' } });
169
+ // Allow the existence and _bulk_get checks to pass
170
+ const n = nock(url).head('/fakenockdb').reply(200);
171
+ n.post('/fakenockdb/_bulk_get').reply(200, '{"results": []}');
172
+ // Should fail when it reads the incomplete changes
173
+ backupHttpError(p, 'IncompleteChangesInLogFile', 22, done);
174
+ });
175
+
176
+ it('should terminate on _changes HTTPFatalError', function(done) {
177
+ // Allow the existence and _bulk_get checks to pass
178
+ const n = nock(url).head('/fakenockdb').reply(200);
179
+ n.post('/fakenockdb/_bulk_get').reply(200, '{"results": []}');
180
+ // Simulate a fatal HTTP error when trying to fetch docs (note 2 outstanding batches)
181
+ n.post('/fakenockdb/_changes').query(true).reply(400, { error: 'bad_request', reason: 'testing bad response' });
182
+ backupHttpError(params, 'HTTPFatalError', 40, done);
183
+ });
184
+
185
+ it('should terminate on SpoolChangesError', function(done) {
186
+ // Allow the existence and _bulk_get checks to pass
187
+ const n = nock(url).head('/fakenockdb').reply(200);
188
+ n.post('/fakenockdb/_bulk_get').reply(200, '{"results": []}');
189
+ // Simulate a changes without a last_seq
190
+ n.post('/fakenockdb/_changes').query(true).reply(200,
191
+ {
192
+ results: [{
193
+ seq: '2-g1AAAAEbeJzLYWBgYMlgTmFQSElKzi9KdUhJstTLTS3KLElMT9VLzskvTUnMK9HLSy3JAapkSmRIsv___39WBnMiUy5QgN3MzDIxOdEMWb85dv0gSxThigyN8diS5AAkk-pBFiUyoOkzxKMvjwVIMjQAKaDW_Zh6TQnqPQDRC7I3CwDPDV1k',
194
+ id: 'badger',
195
+ changes: [{ rev: '4-51aa94e4b0ef37271082033bba52b850' }]
196
+ }]
197
+ });
198
+ backupHttpError(params, 'SpoolChangesError', 30, done);
199
+ });
77
200
  });
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
201
 
98
- module.exports = {
99
- compare
100
- };
202
+ describe('for restore', function() {
203
+ it('should terminate on Unauthorized db existence check', function(done) {
204
+ // Simulate a 401
205
+ nock(url).get('/fakenockdb').reply(401, { error: 'unauthorized', reason: '_reader access is required for this request' });
206
+ restoreHttpError(params, 'Unauthorized', 11, done);
207
+ });
208
+
209
+ it('should terminate on Forbidden no _writer', function(done) {
210
+ // Simulate the DB exists (i.e. you can read it)
211
+ const n = nock(url).get('/fakenockdb').reply(200, { doc_count: 0, doc_del_count: 0 });
212
+ // Simulate a 403 trying to write
213
+ n.post('/fakenockdb/_bulk_docs').reply(403, { error: 'forbidden', reason: '_writer access is required for this request' });
214
+ restoreHttpError(params, 'Forbidden', 12, done);
215
+ });
216
+
217
+ it('should terminate on RestoreDatabaseNotFound', function(done) {
218
+ // Simulate the DB does not exist
219
+ nock(url).get('/fakenockdb').reply(404, { error: 'not_found', reason: 'Database does not exist.' });
220
+ restoreHttpError(params, 'DatabaseNotFound', 10, done);
221
+ });
222
+
223
+ it('should terminate on notEmptyDBErr when database is not empty', function(done) {
224
+ // Simulate the DB that does exist and not empty
225
+ nock(url).get('/fakenockdb').reply(200, { doc_count: 10, doc_del_count: 0 });
226
+ restoreHttpError(params, 'DatabaseNotEmpty', 13, done);
227
+ });
228
+
229
+ it('should terminate on notEmptyDBErr when database is not new', function(done) {
230
+ // Simulate the DB that does exist and not new
231
+ nock(url).get('/fakenockdb').reply(200, { doc_count: 0, doc_del_count: 10 });
232
+ restoreHttpError(params, 'DatabaseNotEmpty', 13, done);
233
+ });
234
+
235
+ it('should terminate on _bulk_docs HTTPFatalError', function(done) {
236
+ // Simulate the DB exists
237
+ const n = nock(url).get('/fakenockdb').reply(200, { doc_count: 0, doc_del_count: 0 });
238
+ // Use a parallelism of one and mock one response
239
+ const p = u.p(params, { opts: { parallelism: 1 } });
240
+ // Simulate a 400 trying to write
241
+ n.post('/fakenockdb/_bulk_docs').reply(400, { error: 'bad_request', reason: 'testing bad response' });
242
+ restoreHttpError(p, 'HTTPFatalError', 40, done);
243
+ });
244
+
245
+ it('should terminate on _bulk_docs HTTPFatalError from system database', function(done) {
246
+ // Simulate that target database exists and is _not_ empty.
247
+ // This should pass validator as we exclude system databases from the check.
248
+ const n = nock(url).get('/_replicator').reply(200, { doc_count: 1, doc_del_count: 0 });
249
+ // Simulate a 400 trying to write
250
+ n.post('/_replicator/_bulk_docs').reply(400, { error: 'bad_request', reason: 'testing bad response' });
251
+ // Use a parallelism of one and mock one response
252
+ const q = u.p(params, { opts: { parallelism: 1 }, expectedRestoreError: { name: 'HTTPFatalError', code: 40 } });
253
+ u.testRestore(q, new InfiniteBackupStream(), '_replicator', function(err) {
254
+ if (err) {
255
+ done(err);
256
+ } else {
257
+ assertNock(done);
258
+ }
259
+ });
260
+ });
261
+
262
+ it('should terminate on _bulk_docs HTTPFatalError large stream', function(done) {
263
+ // Simulate the DB exists
264
+ const n = nock(url).get('/fakenockdb').reply(200, { doc_count: 0, doc_del_count: 0 });
265
+ // Simulate a 400 trying to write
266
+ // Provide a body function to handle the stream, but allow any body
267
+ n.post('/fakenockdb/_bulk_docs', function(body) { return true; }).reply(400, { error: 'bad_request', reason: 'testing bad response' });
268
+ // Use only parallelism 1 so we don't have to mock up loads of responses
269
+ const q = u.p(params, { opts: { parallelism: 1 }, expectedRestoreError: { name: 'HTTPFatalError', code: 40 } });
270
+ u.testRestore(q, new InfiniteBackupStream(), 'fakenockdb', function(err) {
271
+ if (err) {
272
+ done(err);
273
+ } else {
274
+ assertNock(done);
275
+ }
276
+ });
277
+ });
278
+
279
+ it('should terminate on multiple _bulk_docs HTTPFatalError', function(done) {
280
+ // Simulate the DB exists
281
+ const n = nock(url).get('/fakenockdb').reply(200, { doc_count: 0, doc_del_count: 0 });
282
+ // Simulate a 400 trying to write docs, 5 times because of default parallelism
283
+ // Provide a body function to handle the stream, but allow any body
284
+ // Four of the mocks are optional because of parallelism 5 we can't guarantee that the exit will happen
285
+ // after all 5 requests, but we must get at least one of them
286
+ n.post('/fakenockdb/_bulk_docs', function(body) { return true; }).reply(400, { error: 'bad_request', reason: 'testing bad response' });
287
+ n.post('/fakenockdb/_bulk_docs', function(body) { return true; }).times(4).optionally().reply(400, { error: 'bad_request', reason: 'testing bad response' });
288
+ const q = u.p(params, { opts: { bufferSize: 1 }, expectedRestoreError: { name: 'HTTPFatalError', code: 40 } });
289
+ restoreHttpError(q, 'HTTPFatalError', 40, done);
290
+ });
291
+ });
292
+ });
293
+ });