@cloudant/couchbackup 2.9.16 → 2.9.17-SNAPSHOT.186

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 (340) hide show
  1. package/.scannerwork/report-task.txt +2 -2
  2. package/.scannerwork/scanner-report/analysis-cache2.pb +0 -0
  3. package/.scannerwork/scanner-report/analysis-warnings.pb +2 -2
  4. package/.scannerwork/scanner-report/changesets-3.pb +1 -0
  5. package/.scannerwork/scanner-report/changesets-38.pb +1 -0
  6. package/.scannerwork/scanner-report/changesets-53.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-57.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-58.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-16.pb +1 -1
  18. package/.scannerwork/scanner-report/component-17.pb +1 -1
  19. package/.scannerwork/scanner-report/component-18.pb +1 -1
  20. package/.scannerwork/scanner-report/component-19.pb +1 -1
  21. package/.scannerwork/scanner-report/component-2.pb +1 -1
  22. package/.scannerwork/scanner-report/component-20.pb +1 -1
  23. package/.scannerwork/scanner-report/component-21.pb +1 -1
  24. package/.scannerwork/scanner-report/component-22.pb +1 -1
  25. package/.scannerwork/scanner-report/component-3.pb +1 -1
  26. package/.scannerwork/scanner-report/component-34.pb +1 -1
  27. package/.scannerwork/scanner-report/component-35.pb +1 -1
  28. package/.scannerwork/scanner-report/component-36.pb +1 -1
  29. package/.scannerwork/scanner-report/component-37.pb +1 -1
  30. package/.scannerwork/scanner-report/component-38.pb +1 -1
  31. package/.scannerwork/scanner-report/component-39.pb +1 -1
  32. package/.scannerwork/scanner-report/component-40.pb +1 -1
  33. package/.scannerwork/scanner-report/component-41.pb +1 -1
  34. package/.scannerwork/scanner-report/component-42.pb +1 -1
  35. package/.scannerwork/scanner-report/component-43.pb +1 -1
  36. package/.scannerwork/scanner-report/component-44.pb +1 -1
  37. package/.scannerwork/scanner-report/component-45.pb +1 -1
  38. package/.scannerwork/scanner-report/component-46.pb +1 -1
  39. package/.scannerwork/scanner-report/component-47.pb +1 -1
  40. package/.scannerwork/scanner-report/component-48.pb +1 -1
  41. package/.scannerwork/scanner-report/component-49.pb +1 -1
  42. package/.scannerwork/scanner-report/component-5.pb +1 -1
  43. package/.scannerwork/scanner-report/component-50.pb +1 -1
  44. package/.scannerwork/scanner-report/component-51.pb +1 -1
  45. package/.scannerwork/scanner-report/component-52.pb +1 -1
  46. package/.scannerwork/scanner-report/component-53.pb +1 -0
  47. package/.scannerwork/scanner-report/component-54.pb +1 -1
  48. package/.scannerwork/scanner-report/component-56.pb +1 -0
  49. package/.scannerwork/scanner-report/component-57.pb +1 -0
  50. package/.scannerwork/scanner-report/component-58.pb +1 -0
  51. package/.scannerwork/scanner-report/component-6.pb +1 -1
  52. package/.scannerwork/scanner-report/component-62.pb +1 -0
  53. package/.scannerwork/scanner-report/component-67.pb +1 -0
  54. package/.scannerwork/scanner-report/component-68.pb +1 -1
  55. package/.scannerwork/scanner-report/component-7.pb +1 -1
  56. package/.scannerwork/scanner-report/component-8.pb +1 -1
  57. package/.scannerwork/scanner-report/component-9.pb +1 -1
  58. package/.scannerwork/scanner-report/coverages-10.pb +0 -0
  59. package/.scannerwork/scanner-report/coverages-11.pb +0 -0
  60. package/.scannerwork/scanner-report/coverages-12.pb +0 -0
  61. package/.scannerwork/scanner-report/coverages-13.pb +0 -0
  62. package/.scannerwork/scanner-report/coverages-14.pb +0 -0
  63. package/.scannerwork/scanner-report/coverages-15.pb +0 -0
  64. package/.scannerwork/scanner-report/coverages-16.pb +0 -0
  65. package/.scannerwork/scanner-report/coverages-17.pb +0 -0
  66. package/.scannerwork/scanner-report/coverages-18.pb +0 -0
  67. package/.scannerwork/scanner-report/coverages-2.pb +0 -0
  68. package/.scannerwork/scanner-report/coverages-20.pb +0 -0
  69. package/.scannerwork/scanner-report/coverages-21.pb +0 -0
  70. package/.scannerwork/scanner-report/coverages-22.pb +0 -0
  71. package/.scannerwork/scanner-report/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-38.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-39.pb +0 -0
  77. package/.scannerwork/scanner-report/coverages-40.pb +0 -0
  78. package/.scannerwork/scanner-report/coverages-41.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-42.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-43.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-44.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-45.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-46.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-47.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-48.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-49.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-5.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-50.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-51.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-53.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-54.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-6.pb +0 -0
  94. package/.scannerwork/scanner-report/coverages-68.pb +0 -0
  95. package/.scannerwork/scanner-report/coverages-7.pb +0 -0
  96. package/.scannerwork/scanner-report/coverages-8.pb +0 -0
  97. package/.scannerwork/scanner-report/coverages-9.pb +0 -0
  98. package/.scannerwork/scanner-report/duplications-12.pb +0 -3
  99. package/.scannerwork/scanner-report/duplications-15.pb +2 -0
  100. package/.scannerwork/scanner-report/duplications-34.pb +2 -0
  101. package/.scannerwork/scanner-report/duplications-45.pb +2 -0
  102. package/.scannerwork/scanner-report/duplications-46.pb +3 -0
  103. package/.scannerwork/scanner-report/duplications-50.pb +0 -2
  104. package/.scannerwork/scanner-report/duplications-51.pb +0 -2
  105. package/.scannerwork/scanner-report/duplications-57.pb +2 -0
  106. package/.scannerwork/scanner-report/duplications-58.pb +2 -0
  107. package/.scannerwork/scanner-report/duplications-68.pb +0 -0
  108. package/.scannerwork/scanner-report/duplications-9.pb +2 -2
  109. package/.scannerwork/scanner-report/measures-10.pb +0 -0
  110. package/.scannerwork/scanner-report/measures-11.pb +0 -0
  111. package/.scannerwork/scanner-report/measures-12.pb +0 -0
  112. package/.scannerwork/scanner-report/measures-13.pb +0 -0
  113. package/.scannerwork/scanner-report/measures-14.pb +0 -0
  114. package/.scannerwork/scanner-report/measures-15.pb +0 -0
  115. package/.scannerwork/scanner-report/measures-16.pb +0 -0
  116. package/.scannerwork/scanner-report/measures-17.pb +0 -0
  117. package/.scannerwork/scanner-report/measures-18.pb +0 -0
  118. package/.scannerwork/scanner-report/measures-19.pb +0 -0
  119. package/.scannerwork/scanner-report/measures-2.pb +0 -0
  120. package/.scannerwork/scanner-report/measures-20.pb +0 -0
  121. package/.scannerwork/scanner-report/measures-21.pb +0 -0
  122. package/.scannerwork/scanner-report/measures-22.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-3.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-38.pb +0 -0
  129. package/.scannerwork/scanner-report/measures-39.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-40.pb +0 -0
  131. package/.scannerwork/scanner-report/measures-41.pb +0 -0
  132. package/.scannerwork/scanner-report/measures-42.pb +0 -0
  133. package/.scannerwork/scanner-report/measures-43.pb +0 -0
  134. package/.scannerwork/scanner-report/measures-44.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-45.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-46.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-47.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-48.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-49.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-5.pb +0 -0
  141. package/.scannerwork/scanner-report/measures-50.pb +0 -0
  142. package/.scannerwork/scanner-report/measures-51.pb +0 -0
  143. package/.scannerwork/scanner-report/measures-52.pb +0 -0
  144. package/.scannerwork/scanner-report/measures-53.pb +15 -0
  145. package/.scannerwork/scanner-report/measures-54.pb +0 -0
  146. package/.scannerwork/scanner-report/measures-6.pb +0 -0
  147. package/.scannerwork/scanner-report/measures-62.pb +0 -0
  148. package/.scannerwork/scanner-report/measures-67.pb +0 -0
  149. package/.scannerwork/scanner-report/measures-68.pb +0 -0
  150. package/.scannerwork/scanner-report/measures-7.pb +0 -0
  151. package/.scannerwork/scanner-report/measures-8.pb +0 -0
  152. package/.scannerwork/scanner-report/measures-9.pb +0 -0
  153. package/.scannerwork/scanner-report/metadata.pb +0 -0
  154. package/.scannerwork/scanner-report/source-10.txt +150 -23
  155. package/.scannerwork/scanner-report/source-11.txt +30 -16
  156. package/.scannerwork/scanner-report/source-12.txt +99 -199
  157. package/.scannerwork/scanner-report/source-13.txt +60 -81
  158. package/.scannerwork/scanner-report/source-14.txt +164 -116
  159. package/.scannerwork/scanner-report/source-15.txt +53 -427
  160. package/.scannerwork/scanner-report/source-16.txt +22 -274
  161. package/.scannerwork/scanner-report/source-17.txt +87 -69
  162. package/.scannerwork/scanner-report/source-18.txt +255 -80
  163. package/.scannerwork/scanner-report/source-19.txt +102 -134
  164. package/.scannerwork/scanner-report/source-2.txt +43 -397
  165. package/.scannerwork/scanner-report/source-20.txt +39 -42
  166. package/.scannerwork/scanner-report/source-21.txt +47 -22
  167. package/.scannerwork/scanner-report/source-22.txt +429 -21
  168. package/.scannerwork/scanner-report/source-3.txt +81 -424
  169. package/.scannerwork/scanner-report/source-34.txt +168 -18
  170. package/.scannerwork/scanner-report/source-35.txt +170 -21
  171. package/.scannerwork/scanner-report/source-36.txt +314 -136
  172. package/.scannerwork/scanner-report/source-37.txt +9 -55
  173. package/.scannerwork/scanner-report/source-38.txt +40 -424
  174. package/.scannerwork/scanner-report/source-39.txt +120 -115
  175. package/.scannerwork/scanner-report/source-40.txt +82 -93
  176. package/.scannerwork/scanner-report/source-41.txt +279 -32
  177. package/.scannerwork/scanner-report/source-42.txt +27 -65
  178. package/.scannerwork/scanner-report/source-43.txt +21 -43
  179. package/.scannerwork/scanner-report/source-44.txt +85 -157
  180. package/.scannerwork/scanner-report/source-45.txt +167 -102
  181. package/.scannerwork/scanner-report/source-46.txt +194 -22
  182. package/.scannerwork/scanner-report/source-47.txt +23 -99
  183. package/.scannerwork/scanner-report/source-48.txt +25 -148
  184. package/.scannerwork/scanner-report/source-49.txt +97 -248
  185. package/.scannerwork/scanner-report/source-5.txt +16 -14
  186. package/.scannerwork/scanner-report/source-50.txt +50 -67
  187. package/.scannerwork/scanner-report/source-51.txt +15 -58
  188. package/.scannerwork/scanner-report/source-52.txt +87 -17
  189. package/.scannerwork/scanner-report/source-53.txt +151 -0
  190. package/.scannerwork/scanner-report/source-54.txt +396 -28
  191. package/.scannerwork/scanner-report/{source-55.txt → source-56.txt} +151 -151
  192. package/.scannerwork/scanner-report/source-6.txt +97 -315
  193. package/.scannerwork/scanner-report/source-62.txt +424 -0
  194. package/.scannerwork/scanner-report/source-67.txt +424 -0
  195. package/.scannerwork/scanner-report/source-68.txt +46 -102
  196. package/.scannerwork/scanner-report/source-7.txt +113 -175
  197. package/.scannerwork/scanner-report/source-8.txt +41 -44
  198. package/.scannerwork/scanner-report/source-9.txt +66 -157
  199. package/.scannerwork/scanner-report/symbols-10.pb +126 -9
  200. package/.scannerwork/scanner-report/symbols-11.pb +20 -9
  201. package/.scannerwork/scanner-report/symbols-12.pb +46 -264
  202. package/.scannerwork/scanner-report/symbols-13.pb +45 -57
  203. package/.scannerwork/scanner-report/symbols-14.pb +144 -86
  204. package/.scannerwork/scanner-report/symbols-15.pb +41 -789
  205. package/.scannerwork/scanner-report/symbols-16.pb +17 -427
  206. package/.scannerwork/scanner-report/symbols-17.pb +30 -69
  207. package/.scannerwork/scanner-report/symbols-18.pb +354 -59
  208. package/.scannerwork/scanner-report/symbols-2.pb +21 -604
  209. package/.scannerwork/scanner-report/symbols-20.pb +23 -32
  210. package/.scannerwork/scanner-report/symbols-21.pb +33 -23
  211. package/.scannerwork/scanner-report/symbols-22.pb +790 -31
  212. package/.scannerwork/scanner-report/symbols-34.pb +227 -13
  213. package/.scannerwork/scanner-report/symbols-35.pb +209 -19
  214. package/.scannerwork/scanner-report/symbols-36.pb +353 -93
  215. package/.scannerwork/scanner-report/symbols-37.pb +7 -38
  216. package/.scannerwork/scanner-report/symbols-38.pb +23 -0
  217. package/.scannerwork/scanner-report/symbols-39.pb +71 -33
  218. package/.scannerwork/scanner-report/symbols-40.pb +68 -58
  219. package/.scannerwork/scanner-report/symbols-41.pb +427 -19
  220. package/.scannerwork/scanner-report/symbols-42.pb +19 -46
  221. package/.scannerwork/scanner-report/symbols-43.pb +9 -19
  222. package/.scannerwork/scanner-report/symbols-44.pb +59 -144
  223. package/.scannerwork/scanner-report/symbols-45.pb +203 -30
  224. package/.scannerwork/scanner-report/symbols-46.pb +264 -18
  225. package/.scannerwork/scanner-report/symbols-47.pb +13 -46
  226. package/.scannerwork/scanner-report/symbols-48.pb +31 -126
  227. package/.scannerwork/scanner-report/symbols-49.pb +85 -353
  228. package/.scannerwork/scanner-report/symbols-5.pb +14 -8
  229. package/.scannerwork/scanner-report/symbols-50.pb +38 -43
  230. package/.scannerwork/scanner-report/symbols-51.pb +9 -42
  231. package/.scannerwork/scanner-report/symbols-52.pb +57 -13
  232. package/.scannerwork/scanner-report/symbols-53.pb +93 -0
  233. package/.scannerwork/scanner-report/symbols-54.pb +603 -6
  234. package/.scannerwork/scanner-report/symbols-6.pb +59 -353
  235. package/.scannerwork/scanner-report/symbols-68.pb +7 -0
  236. package/.scannerwork/scanner-report/symbols-7.pb +32 -208
  237. package/.scannerwork/scanner-report/symbols-8.pb +18 -23
  238. package/.scannerwork/scanner-report/symbols-9.pb +44 -203
  239. package/.scannerwork/scanner-report/syntax-highlightings-10.pb +179 -27
  240. package/.scannerwork/scanner-report/syntax-highlightings-11.pb +34 -24
  241. package/.scannerwork/scanner-report/syntax-highlightings-12.pb +90 -261
  242. package/.scannerwork/scanner-report/syntax-highlightings-13.pb +61 -120
  243. package/.scannerwork/scanner-report/syntax-highlightings-14.pb +208 -90
  244. package/.scannerwork/scanner-report/syntax-highlightings-15.pb +47 -593
  245. package/.scannerwork/scanner-report/syntax-highlightings-16.pb +23 -691
  246. package/.scannerwork/scanner-report/syntax-highlightings-17.pb +82 -76
  247. package/.scannerwork/scanner-report/syntax-highlightings-18.pb +244 -137
  248. package/.scannerwork/scanner-report/syntax-highlightings-19.pb +689 -178
  249. package/.scannerwork/scanner-report/syntax-highlightings-2.pb +58 -617
  250. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +59 -72
  251. package/.scannerwork/scanner-report/syntax-highlightings-21.pb +73 -19
  252. package/.scannerwork/scanner-report/syntax-highlightings-22.pb +590 -32
  253. package/.scannerwork/scanner-report/syntax-highlightings-3.pb +90 -3331
  254. package/.scannerwork/scanner-report/syntax-highlightings-34.pb +333 -27
  255. package/.scannerwork/scanner-report/syntax-highlightings-35.pb +249 -25
  256. package/.scannerwork/scanner-report/syntax-highlightings-36.pb +550 -167
  257. package/.scannerwork/scanner-report/syntax-highlightings-37.pb +14 -66
  258. package/.scannerwork/scanner-report/syntax-highlightings-38.pb +45 -3328
  259. package/.scannerwork/scanner-report/syntax-highlightings-39.pb +141 -89
  260. package/.scannerwork/scanner-report/syntax-highlightings-40.pb +68 -94
  261. package/.scannerwork/scanner-report/syntax-highlightings-41.pb +691 -35
  262. package/.scannerwork/scanner-report/syntax-highlightings-42.pb +32 -61
  263. package/.scannerwork/scanner-report/syntax-highlightings-43.pb +31 -29
  264. package/.scannerwork/scanner-report/syntax-highlightings-44.pb +140 -205
  265. package/.scannerwork/scanner-report/syntax-highlightings-45.pb +243 -76
  266. package/.scannerwork/scanner-report/syntax-highlightings-46.pb +268 -23
  267. package/.scannerwork/scanner-report/syntax-highlightings-47.pb +30 -94
  268. package/.scannerwork/scanner-report/syntax-highlightings-48.pb +33 -177
  269. package/.scannerwork/scanner-report/syntax-highlightings-49.pb +90 -250
  270. package/.scannerwork/scanner-report/syntax-highlightings-5.pb +15 -19
  271. package/.scannerwork/scanner-report/syntax-highlightings-50.pb +65 -57
  272. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +22 -49
  273. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +124 -15
  274. package/.scannerwork/scanner-report/syntax-highlightings-53.pb +237 -0
  275. package/.scannerwork/scanner-report/syntax-highlightings-54.pb +612 -33
  276. package/.scannerwork/scanner-report/{syntax-highlightings-55.pb → syntax-highlightings-56.pb} +89 -90
  277. package/.scannerwork/scanner-report/syntax-highlightings-6.pb +97 -584
  278. package/.scannerwork/scanner-report/syntax-highlightings-62.pb +3340 -0
  279. package/.scannerwork/scanner-report/syntax-highlightings-67.pb +3341 -0
  280. package/.scannerwork/scanner-report/syntax-highlightings-68.pb +43 -672
  281. package/.scannerwork/scanner-report/syntax-highlightings-7.pb +88 -249
  282. package/.scannerwork/scanner-report/syntax-highlightings-8.pb +29 -67
  283. package/.scannerwork/scanner-report/syntax-highlightings-9.pb +57 -244
  284. package/.secrets.baseline +2 -2
  285. package/package.json +1 -1
  286. package/test-18-results.xml +158 -158
  287. package/test-20-results.xml +152 -152
  288. package/test-21-results.xml +153 -153
  289. package/test-iam-20-results.xml +50 -50
  290. package/.scannerwork/scanner-report/changesets-19.pb +0 -1
  291. package/.scannerwork/scanner-report/changesets-4.pb +0 -1
  292. package/.scannerwork/scanner-report/changesets-60.pb +0 -1
  293. package/.scannerwork/scanner-report/changesets-61.pb +0 -1
  294. package/.scannerwork/scanner-report/changesets-64.pb +0 -1
  295. package/.scannerwork/scanner-report/changesets-66.pb +0 -1
  296. package/.scannerwork/scanner-report/component-4.pb +0 -1
  297. package/.scannerwork/scanner-report/component-55.pb +0 -1
  298. package/.scannerwork/scanner-report/component-60.pb +0 -1
  299. package/.scannerwork/scanner-report/component-61.pb +0 -1
  300. package/.scannerwork/scanner-report/component-64.pb +0 -1
  301. package/.scannerwork/scanner-report/component-66.pb +0 -1
  302. package/.scannerwork/scanner-report/coverages-19.pb +0 -0
  303. package/.scannerwork/scanner-report/coverages-4.pb +0 -0
  304. package/.scannerwork/scanner-report/coverages-60.pb +0 -0
  305. package/.scannerwork/scanner-report/duplications-4.pb +0 -2
  306. package/.scannerwork/scanner-report/duplications-64.pb +0 -2
  307. package/.scannerwork/scanner-report/duplications-66.pb +0 -2
  308. package/.scannerwork/scanner-report/measures-4.pb +0 -0
  309. package/.scannerwork/scanner-report/measures-60.pb +0 -0
  310. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  311. package/.scannerwork/scanner-report/source-4.txt +0 -187
  312. package/.scannerwork/scanner-report/source-60.txt +0 -60
  313. package/.scannerwork/scanner-report/source-61.txt +0 -81
  314. package/.scannerwork/scanner-report/symbols-19.pb +0 -71
  315. package/.scannerwork/scanner-report/symbols-4.pb +0 -227
  316. package/.scannerwork/scanner-report/symbols-60.pb +0 -21
  317. package/.scannerwork/scanner-report/syntax-highlightings-4.pb +0 -368
  318. package/.scannerwork/scanner-report/syntax-highlightings-60.pb +0 -82
  319. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +0 -100
  320. /package/.scannerwork/scanner-report/{coverages-61.pb → coverages-3.pb} +0 -0
  321. /package/.scannerwork/scanner-report/{coverages-64.pb → coverages-57.pb} +0 -0
  322. /package/.scannerwork/scanner-report/{coverages-66.pb → coverages-58.pb} +0 -0
  323. /package/.scannerwork/scanner-report/{duplications-19.pb → duplications-3.pb} +0 -0
  324. /package/.scannerwork/scanner-report/{duplications-37.pb → duplications-38.pb} +0 -0
  325. /package/.scannerwork/scanner-report/{duplications-60.pb → duplications-5.pb} +0 -0
  326. /package/.scannerwork/scanner-report/{duplications-61.pb → duplications-53.pb} +0 -0
  327. /package/.scannerwork/scanner-report/{issues-6.pb → issues-36.pb} +0 -0
  328. /package/.scannerwork/scanner-report/{issues-35.pb → issues-42.pb} +0 -0
  329. /package/.scannerwork/scanner-report/{issues-12.pb → issues-46.pb} +0 -0
  330. /package/.scannerwork/scanner-report/{issues-14.pb → issues-49.pb} +0 -0
  331. /package/.scannerwork/scanner-report/{measures-55.pb → measures-56.pb} +0 -0
  332. /package/.scannerwork/scanner-report/{measures-64.pb → measures-57.pb} +0 -0
  333. /package/.scannerwork/scanner-report/{measures-66.pb → measures-58.pb} +0 -0
  334. /package/.scannerwork/scanner-report/{source-64.txt → source-57.txt} +0 -0
  335. /package/.scannerwork/scanner-report/{source-66.txt → source-58.txt} +0 -0
  336. /package/.scannerwork/scanner-report/{symbols-61.pb → symbols-3.pb} +0 -0
  337. /package/.scannerwork/scanner-report/{symbols-64.pb → symbols-57.pb} +0 -0
  338. /package/.scannerwork/scanner-report/{symbols-66.pb → symbols-58.pb} +0 -0
  339. /package/.scannerwork/scanner-report/{syntax-highlightings-64.pb → syntax-highlightings-57.pb} +0 -0
  340. /package/.scannerwork/scanner-report/{syntax-highlightings-66.pb → syntax-highlightings-58.pb} +0 -0
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2021 IBM Corp. All rights reserved.
1
+ // Copyright © 2017, 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.
@@ -11,119 +11,124 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
+
15
+ /* global describe it beforeEach */
14
16
  'use strict';
15
17
 
16
- const cliutils = require('./cliutils.js');
17
- const config = require('./config.js');
18
- const error = require('./error.js');
19
- const path = require('path');
20
- const pkg = require('../package.json');
21
-
22
- function parseBackupArgs() {
23
- const program = require('commander');
24
-
25
- // Option CLI defaults
26
- const defaults = config.cliDefaults();
27
-
28
- // Options set by environment variables
29
- const envVarOptions = {};
30
- config.applyEnvironmentVariables(envVarOptions);
31
-
32
- program
33
- .version(pkg.version)
34
- .description('Backup a CouchDB/Cloudant database to a backup text file.')
35
- .usage('[options...]')
36
- .option('-b, --buffer-size <n>',
37
- cliutils.getUsage('number of documents fetched at once', defaults.bufferSize),
38
- Number)
39
- .option('-d, --db <db>',
40
- cliutils.getUsage('name of the database to backup', defaults.db))
41
- .option('-k, --iam-api-key <API key>',
42
- cliutils.getUsage('IAM API key to access the Cloudant server'))
43
- .option('-l, --log <file>',
44
- cliutils.getUsage('file to store logging information during backup; invalid in "shallow" mode', 'a temporary file'),
45
- path.normalize)
46
- .option('-m, --mode <mode>',
47
- cliutils.getUsage('"shallow" if only a superficial backup is done (ignoring conflicts and revision tokens), else "full" for complete backup', defaults.mode),
48
- (mode) => { return mode.toLowerCase(); })
49
- .option('-o, --output <file>',
50
- cliutils.getUsage('file name to store the backup data', 'stdout'),
51
- path.normalize)
52
- .option('-p, --parallelism <n>',
53
- cliutils.getUsage('number of HTTP requests to perform in parallel when performing a backup; ignored in "shallow" mode', defaults.parallelism),
54
- Number)
55
- .option('-q, --quiet',
56
- cliutils.getUsage('suppress batch messages', defaults.quiet))
57
- .option('-r, --resume',
58
- cliutils.getUsage('continue a previous backup from its last known position; invalid in "shallow" mode', defaults.resume))
59
- .option('-t, --request-timeout <n>',
60
- cliutils.getUsage('milliseconds to wait for a response to a HTTP request before retrying the request', defaults.requestTimeout),
61
- Number)
62
- .option('-u, --url <url>',
63
- cliutils.getUsage('URL of the CouchDB/Cloudant server', defaults.url))
64
- .parse(process.argv);
65
-
66
- // Remove defaults that don't apply when using shallow mode
67
- if (program.opts().mode === 'shallow' || envVarOptions.mode === 'shallow') {
68
- delete defaults.parallelism;
69
- delete defaults.log;
70
- delete defaults.resume;
71
- }
72
-
73
- // Apply the options in order so that the CLI overrides env vars and env variables
74
- // override defaults.
75
- const opts = Object.assign({}, defaults, envVarOptions, program.opts());
76
-
77
- if (opts.resume && (opts.log === defaults.log)) {
78
- // If resuming and the log file arg is the newly generated tmp name from defaults then we know that --log wasn't specified.
79
- // We have to do this check here for the CLI case because of the default.
80
- error.terminationCallback(new error.BackupError('NoLogFileName', 'To resume a backup, a log file must be specified'));
81
- }
82
-
83
- return opts;
84
- }
85
-
86
- function parseRestoreArgs() {
87
- const program = require('commander');
88
-
89
- // Option CLI defaults
90
- const defaults = config.cliDefaults();
91
-
92
- // Options set by environment variables
93
- const envVarOptions = {};
94
- config.applyEnvironmentVariables(envVarOptions);
95
-
96
- program
97
- .version(pkg.version)
98
- .description('Restore a CouchDB/Cloudant database from a backup text file.')
99
- .usage('[options...]')
100
- .option('-b, --buffer-size <n>',
101
- cliutils.getUsage('number of documents restored at once', defaults.bufferSize),
102
- Number)
103
- .option('-d, --db <db>',
104
- cliutils.getUsage('name of the new, existing database to restore to', defaults.db))
105
- .option('-k, --iam-api-key <API key>',
106
- cliutils.getUsage('IAM API key to access the Cloudant server'))
107
- .option('-p, --parallelism <n>',
108
- cliutils.getUsage('number of HTTP requests to perform in parallel when restoring a backup', defaults.parallelism),
109
- Number)
110
- .option('-q, --quiet',
111
- cliutils.getUsage('suppress batch messages', defaults.quiet))
112
- .option('-t, --request-timeout <n>',
113
- cliutils.getUsage('milliseconds to wait for a response to a HTTP request before retrying the request', defaults.requestTimeout),
114
- Number)
115
- .option('-u, --url <url>',
116
- cliutils.getUsage('URL of the CouchDB/Cloudant server', defaults.url))
117
- .parse(process.argv);
118
-
119
- // Apply the options in order so that the CLI overrides env vars and env variables
120
- // override defaults.
121
- const opts = Object.assign({}, defaults, envVarOptions, program.opts());
122
-
123
- return opts;
124
- }
125
-
126
- module.exports = {
127
- parseBackupArgs: parseBackupArgs,
128
- parseRestoreArgs: parseRestoreArgs
129
- };
18
+ const assert = require('assert');
19
+ const fs = require('fs');
20
+ const nock = require('nock');
21
+ const request = require('../includes/request.js');
22
+ const writer = require('../includes/writer.js');
23
+ const noopEmitter = new (require('events')).EventEmitter();
24
+ const liner = require('../includes/liner.js');
25
+ const { once } = require('node:events');
26
+ const { pipeline } = require('node:stream/promises');
27
+ const longTestTimeout = 3000;
28
+
29
+ describe('#unit Check database restore writer', function() {
30
+ const dbUrl = 'http://localhost:5984/animaldb';
31
+ const db = request.client(dbUrl, { parallelism: 1 });
32
+
33
+ beforeEach('Reset nocks', function() {
34
+ nock.cleanAll();
35
+ });
36
+
37
+ it('should complete successfully', async function() {
38
+ nock(dbUrl)
39
+ .post('/_bulk_docs')
40
+ .reply(200, []); // success
41
+
42
+ const w = writer(db, 500, 1, noopEmitter);
43
+ return Promise.all([pipeline(fs.createReadStream('./test/fixtures/animaldb_expected.json'), liner(), w),
44
+ once(w, 'finished').then((data) => {
45
+ assert.strictEqual(data[0].total, 15);
46
+ assert.ok(nock.isDone());
47
+ })]);
48
+ });
49
+
50
+ it('should terminate on a fatal error', async function() {
51
+ nock(dbUrl)
52
+ .post('/_bulk_docs')
53
+ .reply(401, { error: 'Unauthorized' }); // fatal error
54
+
55
+ const w = writer(db, 500, 1, noopEmitter);
56
+ return assert.rejects(
57
+ pipeline(fs.createReadStream('./test/fixtures/animaldb_expected.json'), liner(), w),
58
+ (err) => {
59
+ assert.strictEqual(err.name, 'Unauthorized');
60
+ assert.strictEqual(err.message, 'Access is denied due to invalid credentials.');
61
+ assert.ok(nock.isDone());
62
+ return true;
63
+ }
64
+ );
65
+ });
66
+
67
+ it('should retry on transient errors', async function() {
68
+ nock(dbUrl)
69
+ .post('/_bulk_docs')
70
+ .reply(429, { error: 'Too Many Requests' }) // transient error
71
+ .post('/_bulk_docs')
72
+ .reply(500, { error: 'Internal Server Error' }) // transient error
73
+ .post('/_bulk_docs')
74
+ .reply(200, { ok: true }); // third time lucky success
75
+
76
+ const w = writer(db, 500, 1, noopEmitter);
77
+ return Promise.all([pipeline(fs.createReadStream('./test/fixtures/animaldb_expected.json'), liner(), w),
78
+ once(w, 'finished').then((data) => {
79
+ assert.strictEqual(data[0].total, 15);
80
+ assert.ok(nock.isDone());
81
+ })]);
82
+ }).timeout(longTestTimeout);
83
+
84
+ it('should fail after 3 transient errors', async function() {
85
+ nock(dbUrl)
86
+ .post('/_bulk_docs')
87
+ .reply(429, { error: 'Too Many Requests' }) // transient error
88
+ .post('/_bulk_docs')
89
+ .reply(500, { error: 'Internal Server Error' }) // transient error
90
+ .post('/_bulk_docs')
91
+ .reply(503, { error: 'Service Unavailable' }); // Final transient error
92
+
93
+ const w = writer(db, 500, 1, noopEmitter);
94
+ return assert.rejects(
95
+ pipeline(fs.createReadStream('./test/fixtures/animaldb_expected.json'), liner(), w),
96
+ (err) => {
97
+ assert.strictEqual(err.name, 'HTTPFatalError');
98
+ assert.strictEqual(err.message, `503 : post ${dbUrl}/_bulk_docs - Error: Service Unavailable`);
99
+ assert.ok(nock.isDone());
100
+ return true;
101
+ }
102
+ );
103
+ }).timeout(longTestTimeout);
104
+
105
+ it('should restore shallow backups without rev info successfully', async function() {
106
+ nock(dbUrl)
107
+ .post('/_bulk_docs')
108
+ .reply(200, [{ ok: true, id: 'foo', rev: '1-abc' }]); // success
109
+
110
+ const w = writer(db, 500, 1, noopEmitter);
111
+ return Promise.all([pipeline(fs.createReadStream('./test/fixtures/animaldb_old_shallow.json'), liner(), w),
112
+ once(w, 'finished').then((data) => {
113
+ assert.strictEqual(data[0].total, 11);
114
+ assert.ok(nock.isDone());
115
+ })]);
116
+ });
117
+
118
+ it('should get a batch error for non-empty array response with new_edits false', async function() {
119
+ nock(dbUrl)
120
+ .post('/_bulk_docs')
121
+ .reply(200, [{ id: 'foo', error: 'foo', reason: 'bar' }]);
122
+
123
+ const w = writer(db, 500, 1, noopEmitter);
124
+ return assert.rejects(
125
+ pipeline(fs.createReadStream('./test/fixtures/animaldb_expected.json'), liner(), w),
126
+ (err) => {
127
+ assert.strictEqual(err.name, 'Error');
128
+ assert.strictEqual(err.message, 'Error writing batch with new_edits:false and 1 items');
129
+ assert.ok(nock.isDone());
130
+ return true;
131
+ }
132
+ );
133
+ });
134
+ });
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2022 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.
@@ -11,101 +11,90 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
+
14
15
  'use strict';
15
16
 
16
- const fs = require('fs');
17
- const liner = require('./liner.js');
18
- const change = require('./change.js');
19
- const error = require('./error.js');
20
- const debug = require('debug')('couchbackup:spoolchanges');
21
-
22
- /**
23
- * Write log file for all changes from a database, ready for downloading
24
- * in batches.
25
- *
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
30
- */
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;
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
- }
50
- };
51
-
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;
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 function(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;
64
76
  }
65
- }
66
- };
67
-
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
- });
77
+ });
108
78
  }
79
+ return missing;
80
+ };
81
+
82
+ const getAllDocs = async function(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
+ };
109
97
 
110
- getChanges();
98
+ module.exports = {
99
+ compare
111
100
  };