@cloudant/couchbackup 2.9.9-SNAPSHOT.98 → 2.9.9

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 (375) 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-30.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-35.pb +1 -0
  10. package/.scannerwork/scanner-report/changesets-38.pb +1 -0
  11. package/.scannerwork/scanner-report/changesets-39.pb +1 -0
  12. package/.scannerwork/scanner-report/changesets-45.pb +1 -0
  13. package/.scannerwork/scanner-report/changesets-47.pb +1 -0
  14. package/.scannerwork/scanner-report/component-1.pb +1 -2
  15. package/.scannerwork/scanner-report/component-18.pb +1 -1
  16. package/.scannerwork/scanner-report/component-19.pb +1 -1
  17. package/.scannerwork/scanner-report/component-2.pb +1 -1
  18. package/.scannerwork/scanner-report/component-20.pb +1 -1
  19. package/.scannerwork/scanner-report/component-21.pb +1 -1
  20. package/.scannerwork/scanner-report/component-22.pb +1 -1
  21. package/.scannerwork/scanner-report/component-23.pb +1 -1
  22. package/.scannerwork/scanner-report/component-24.pb +1 -1
  23. package/.scannerwork/scanner-report/component-25.pb +1 -1
  24. package/.scannerwork/scanner-report/component-26.pb +1 -1
  25. package/.scannerwork/scanner-report/component-27.pb +1 -1
  26. package/.scannerwork/scanner-report/component-28.pb +1 -1
  27. package/.scannerwork/scanner-report/component-29.pb +1 -1
  28. package/.scannerwork/scanner-report/component-3.pb +1 -0
  29. package/.scannerwork/scanner-report/component-30.pb +1 -0
  30. package/.scannerwork/scanner-report/component-31.pb +1 -1
  31. package/.scannerwork/scanner-report/component-32.pb +1 -0
  32. package/.scannerwork/scanner-report/component-33.pb +1 -0
  33. package/.scannerwork/scanner-report/component-34.pb +1 -1
  34. package/.scannerwork/scanner-report/component-35.pb +1 -0
  35. package/.scannerwork/scanner-report/component-36.pb +1 -1
  36. package/.scannerwork/scanner-report/component-37.pb +1 -1
  37. package/.scannerwork/scanner-report/component-38.pb +1 -0
  38. package/.scannerwork/scanner-report/component-39.pb +1 -0
  39. package/.scannerwork/scanner-report/component-4.pb +1 -1
  40. package/.scannerwork/scanner-report/component-40.pb +1 -0
  41. package/.scannerwork/scanner-report/component-45.pb +1 -0
  42. package/.scannerwork/scanner-report/component-47.pb +1 -0
  43. package/.scannerwork/scanner-report/component-49.pb +1 -1
  44. package/.scannerwork/scanner-report/component-50.pb +1 -1
  45. package/.scannerwork/scanner-report/component-52.pb +1 -1
  46. package/.scannerwork/scanner-report/component-55.pb +1 -1
  47. package/.scannerwork/scanner-report/component-56.pb +1 -1
  48. package/.scannerwork/scanner-report/component-57.pb +1 -1
  49. package/.scannerwork/scanner-report/component-58.pb +1 -1
  50. package/.scannerwork/scanner-report/component-59.pb +1 -1
  51. package/.scannerwork/scanner-report/component-60.pb +1 -1
  52. package/.scannerwork/scanner-report/component-61.pb +1 -1
  53. package/.scannerwork/scanner-report/component-62.pb +1 -1
  54. package/.scannerwork/scanner-report/component-63.pb +1 -1
  55. package/.scannerwork/scanner-report/component-64.pb +1 -1
  56. package/.scannerwork/scanner-report/component-65.pb +1 -1
  57. package/.scannerwork/scanner-report/component-66.pb +1 -1
  58. package/.scannerwork/scanner-report/component-67.pb +1 -1
  59. package/.scannerwork/scanner-report/component-68.pb +1 -1
  60. package/.scannerwork/scanner-report/component-69.pb +1 -1
  61. package/.scannerwork/scanner-report/coverages-18.pb +0 -0
  62. package/.scannerwork/scanner-report/coverages-19.pb +0 -0
  63. package/.scannerwork/scanner-report/coverages-20.pb +0 -0
  64. package/.scannerwork/scanner-report/coverages-21.pb +0 -0
  65. package/.scannerwork/scanner-report/coverages-22.pb +0 -0
  66. package/.scannerwork/scanner-report/coverages-23.pb +0 -0
  67. package/.scannerwork/scanner-report/coverages-24.pb +0 -0
  68. package/.scannerwork/scanner-report/coverages-25.pb +0 -0
  69. package/.scannerwork/scanner-report/coverages-26.pb +0 -0
  70. package/.scannerwork/scanner-report/coverages-27.pb +0 -0
  71. package/.scannerwork/scanner-report/coverages-28.pb +0 -0
  72. package/.scannerwork/scanner-report/coverages-29.pb +0 -0
  73. package/.scannerwork/scanner-report/coverages-31.pb +0 -0
  74. package/.scannerwork/scanner-report/coverages-32.pb +0 -0
  75. package/.scannerwork/scanner-report/coverages-34.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-35.pb +0 -0
  77. package/.scannerwork/scanner-report/coverages-36.pb +0 -0
  78. package/.scannerwork/scanner-report/coverages-37.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-38.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-39.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-45.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-47.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-49.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-55.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-56.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-57.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-58.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-59.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-60.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-61.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-62.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-63.pb +0 -0
  94. package/.scannerwork/scanner-report/coverages-64.pb +0 -0
  95. package/.scannerwork/scanner-report/coverages-65.pb +0 -0
  96. package/.scannerwork/scanner-report/coverages-66.pb +0 -0
  97. package/.scannerwork/scanner-report/coverages-67.pb +0 -0
  98. package/.scannerwork/scanner-report/coverages-68.pb +0 -0
  99. package/.scannerwork/scanner-report/duplications-22.pb +3 -0
  100. package/.scannerwork/scanner-report/duplications-26.pb +0 -2
  101. package/.scannerwork/scanner-report/duplications-28.pb +3 -0
  102. package/.scannerwork/scanner-report/duplications-29.pb +2 -0
  103. package/.scannerwork/scanner-report/duplications-31.pb +0 -2
  104. package/.scannerwork/scanner-report/duplications-34.pb +2 -1
  105. package/.scannerwork/scanner-report/duplications-37.pb +2 -0
  106. package/.scannerwork/scanner-report/duplications-47.pb +2 -0
  107. package/.scannerwork/scanner-report/duplications-49.pb +2 -0
  108. package/.scannerwork/scanner-report/duplications-56.pb +2 -0
  109. package/.scannerwork/scanner-report/duplications-60.pb +0 -2
  110. package/.scannerwork/scanner-report/duplications-62.pb +0 -3
  111. package/.scannerwork/scanner-report/duplications-63.pb +2 -0
  112. package/.scannerwork/scanner-report/duplications-64.pb +0 -3
  113. package/.scannerwork/scanner-report/duplications-67.pb +0 -2
  114. package/.scannerwork/scanner-report/measures-18.pb +0 -0
  115. package/.scannerwork/scanner-report/measures-19.pb +0 -0
  116. package/.scannerwork/scanner-report/measures-2.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-30.pb +15 -0
  128. package/.scannerwork/scanner-report/measures-31.pb +0 -0
  129. package/.scannerwork/scanner-report/measures-32.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-34.pb +0 -0
  131. package/.scannerwork/scanner-report/measures-35.pb +0 -0
  132. package/.scannerwork/scanner-report/measures-36.pb +0 -0
  133. package/.scannerwork/scanner-report/measures-37.pb +0 -0
  134. package/.scannerwork/scanner-report/measures-38.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-39.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-45.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-47.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-49.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-50.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-52.pb +0 -0
  141. package/.scannerwork/scanner-report/measures-55.pb +0 -0
  142. package/.scannerwork/scanner-report/measures-56.pb +0 -0
  143. package/.scannerwork/scanner-report/measures-57.pb +0 -0
  144. package/.scannerwork/scanner-report/measures-58.pb +0 -0
  145. package/.scannerwork/scanner-report/measures-59.pb +0 -0
  146. package/.scannerwork/scanner-report/measures-60.pb +0 -0
  147. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  148. package/.scannerwork/scanner-report/measures-62.pb +0 -0
  149. package/.scannerwork/scanner-report/measures-63.pb +0 -0
  150. package/.scannerwork/scanner-report/measures-64.pb +0 -0
  151. package/.scannerwork/scanner-report/measures-65.pb +0 -0
  152. package/.scannerwork/scanner-report/measures-66.pb +0 -0
  153. package/.scannerwork/scanner-report/measures-67.pb +0 -0
  154. package/.scannerwork/scanner-report/measures-68.pb +0 -0
  155. package/.scannerwork/scanner-report/measures-69.pb +0 -0
  156. package/.scannerwork/scanner-report/metadata.pb +0 -0
  157. package/.scannerwork/scanner-report/source-18.txt +18 -160
  158. package/.scannerwork/scanner-report/source-19.txt +81 -35
  159. package/.scannerwork/scanner-report/source-2.txt +56 -509
  160. package/.scannerwork/scanner-report/source-20.txt +20 -115
  161. package/.scannerwork/scanner-report/source-21.txt +352 -32
  162. package/.scannerwork/scanner-report/source-22.txt +99 -84
  163. package/.scannerwork/scanner-report/source-23.txt +44 -92
  164. package/.scannerwork/scanner-report/source-24.txt +73 -22
  165. package/.scannerwork/scanner-report/source-25.txt +128 -66
  166. package/.scannerwork/scanner-report/source-26.txt +130 -66
  167. package/.scannerwork/scanner-report/source-27.txt +584 -123
  168. package/.scannerwork/scanner-report/source-28.txt +209 -246
  169. package/.scannerwork/scanner-report/source-29.txt +209 -15
  170. package/.scannerwork/scanner-report/source-30.txt +293 -0
  171. package/.scannerwork/scanner-report/source-31.txt +18 -158
  172. package/.scannerwork/scanner-report/{source-53.txt → source-32.txt} +7 -14
  173. package/.scannerwork/scanner-report/source-34.txt +109 -168
  174. package/.scannerwork/scanner-report/source-35.txt +68 -0
  175. package/.scannerwork/scanner-report/source-36.txt +19 -401
  176. package/.scannerwork/scanner-report/source-37.txt +121 -118
  177. package/.scannerwork/scanner-report/source-38.txt +68 -0
  178. package/.scannerwork/scanner-report/source-39.txt +147 -0
  179. package/.scannerwork/scanner-report/source-4.txt +155 -155
  180. package/.scannerwork/scanner-report/{source-6.txt → source-40.txt} +154 -154
  181. package/.scannerwork/scanner-report/source-45.txt +418 -0
  182. package/.scannerwork/scanner-report/source-47.txt +175 -0
  183. package/.scannerwork/scanner-report/source-49.txt +173 -18
  184. package/.scannerwork/scanner-report/source-50.txt +167 -244
  185. package/.scannerwork/scanner-report/source-52.txt +93 -47
  186. package/.scannerwork/scanner-report/source-55.txt +27 -49
  187. package/.scannerwork/scanner-report/source-56.txt +75 -12
  188. package/.scannerwork/scanner-report/source-57.txt +107 -78
  189. package/.scannerwork/scanner-report/source-58.txt +104 -22
  190. package/.scannerwork/scanner-report/source-59.txt +91 -136
  191. package/.scannerwork/scanner-report/source-60.txt +151 -118
  192. package/.scannerwork/scanner-report/source-61.txt +89 -19
  193. package/.scannerwork/scanner-report/source-62.txt +40 -105
  194. package/.scannerwork/scanner-report/source-63.txt +56 -44
  195. package/.scannerwork/scanner-report/source-64.txt +22 -112
  196. package/.scannerwork/scanner-report/source-65.txt +64 -131
  197. package/.scannerwork/scanner-report/source-66.txt +14 -608
  198. package/.scannerwork/scanner-report/source-67.txt +141 -202
  199. package/.scannerwork/scanner-report/source-68.txt +253 -64
  200. package/.scannerwork/scanner-report/source-69.txt +509 -293
  201. package/.scannerwork/scanner-report/symbols-18.pb +14 -144
  202. package/.scannerwork/scanner-report/symbols-19.pb +68 -14
  203. package/.scannerwork/scanner-report/symbols-20.pb +10 -33
  204. package/.scannerwork/scanner-report/symbols-21.pb +494 -20
  205. package/.scannerwork/scanner-report/symbols-22.pb +76 -41
  206. package/.scannerwork/scanner-report/symbols-23.pb +42 -58
  207. package/.scannerwork/scanner-report/symbols-24.pb +60 -18
  208. package/.scannerwork/scanner-report/symbols-25.pb +116 -46
  209. package/.scannerwork/scanner-report/symbols-26.pb +111 -43
  210. package/.scannerwork/scanner-report/symbols-27.pb +1241 -113
  211. package/.scannerwork/scanner-report/symbols-28.pb +342 -302
  212. package/.scannerwork/scanner-report/symbols-29.pb +417 -13
  213. package/.scannerwork/scanner-report/symbols-31.pb +16 -152
  214. package/.scannerwork/scanner-report/symbols-32.pb +9 -0
  215. package/.scannerwork/scanner-report/symbols-34.pb +97 -180
  216. package/.scannerwork/scanner-report/symbols-35.pb +36 -0
  217. package/.scannerwork/scanner-report/symbols-36.pb +11 -610
  218. package/.scannerwork/scanner-report/symbols-37.pb +97 -111
  219. package/.scannerwork/scanner-report/symbols-38.pb +45 -0
  220. package/.scannerwork/scanner-report/symbols-39.pb +85 -0
  221. package/.scannerwork/scanner-report/symbols-45.pb +610 -0
  222. package/.scannerwork/scanner-report/symbols-47.pb +153 -0
  223. package/.scannerwork/scanner-report/symbols-49.pb +180 -17
  224. package/.scannerwork/scanner-report/symbols-52.pb +28 -45
  225. package/.scannerwork/scanner-report/symbols-55.pb +19 -35
  226. package/.scannerwork/scanner-report/symbols-56.pb +44 -9
  227. package/.scannerwork/scanner-report/symbols-57.pb +33 -69
  228. package/.scannerwork/scanner-report/symbols-58.pb +30 -11
  229. package/.scannerwork/scanner-report/symbols-59.pb +57 -110
  230. package/.scannerwork/scanner-report/symbols-60.pb +136 -94
  231. package/.scannerwork/scanner-report/symbols-61.pb +41 -9
  232. package/.scannerwork/scanner-report/symbols-62.pb +14 -76
  233. package/.scannerwork/scanner-report/symbols-63.pb +41 -42
  234. package/.scannerwork/scanner-report/symbols-64.pb +18 -97
  235. package/.scannerwork/scanner-report/symbols-65.pb +46 -85
  236. package/.scannerwork/scanner-report/symbols-66.pb +13 -1253
  237. package/.scannerwork/scanner-report/symbols-67.pb +125 -417
  238. package/.scannerwork/scanner-report/symbols-68.pb +354 -60
  239. package/.scannerwork/scanner-report/syntax-highlightings-18.pb +22 -211
  240. package/.scannerwork/scanner-report/syntax-highlightings-19.pb +75 -24
  241. package/.scannerwork/scanner-report/syntax-highlightings-2.pb +55 -3721
  242. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +16 -95
  243. package/.scannerwork/scanner-report/syntax-highlightings-21.pb +600 -34
  244. package/.scannerwork/scanner-report/syntax-highlightings-22.pb +128 -86
  245. package/.scannerwork/scanner-report/syntax-highlightings-23.pb +47 -98
  246. package/.scannerwork/scanner-report/syntax-highlightings-24.pb +81 -21
  247. package/.scannerwork/scanner-report/syntax-highlightings-25.pb +101 -62
  248. package/.scannerwork/scanner-report/syntax-highlightings-26.pb +189 -56
  249. package/.scannerwork/scanner-report/syntax-highlightings-27.pb +815 -141
  250. package/.scannerwork/scanner-report/syntax-highlightings-28.pb +217 -173
  251. package/.scannerwork/scanner-report/syntax-highlightings-29.pb +301 -15
  252. package/.scannerwork/scanner-report/syntax-highlightings-30.pb +659 -0
  253. package/.scannerwork/scanner-report/syntax-highlightings-31.pb +34 -185
  254. package/.scannerwork/scanner-report/syntax-highlightings-32.pb +48 -0
  255. package/.scannerwork/scanner-report/syntax-highlightings-34.pb +152 -195
  256. package/.scannerwork/scanner-report/syntax-highlightings-35.pb +95 -0
  257. package/.scannerwork/scanner-report/syntax-highlightings-36.pb +30 -619
  258. package/.scannerwork/scanner-report/syntax-highlightings-37.pb +189 -96
  259. package/.scannerwork/scanner-report/syntax-highlightings-38.pb +110 -0
  260. package/.scannerwork/scanner-report/syntax-highlightings-39.pb +191 -0
  261. package/.scannerwork/scanner-report/syntax-highlightings-4.pb +90 -91
  262. package/.scannerwork/scanner-report/{syntax-highlightings-5.pb → syntax-highlightings-40.pb} +96 -96
  263. package/.scannerwork/scanner-report/syntax-highlightings-45.pb +648 -0
  264. package/.scannerwork/scanner-report/syntax-highlightings-47.pb +214 -0
  265. package/.scannerwork/scanner-report/syntax-highlightings-49.pb +196 -34
  266. package/.scannerwork/scanner-report/syntax-highlightings-50.pb +843 -223
  267. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +97 -69
  268. package/.scannerwork/scanner-report/syntax-highlightings-55.pb +34 -65
  269. package/.scannerwork/scanner-report/syntax-highlightings-56.pb +57 -15
  270. package/.scannerwork/scanner-report/syntax-highlightings-57.pb +88 -64
  271. package/.scannerwork/scanner-report/syntax-highlightings-58.pb +84 -30
  272. package/.scannerwork/scanner-report/syntax-highlightings-59.pb +96 -186
  273. package/.scannerwork/scanner-report/syntax-highlightings-60.pb +201 -185
  274. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +87 -21
  275. package/.scannerwork/scanner-report/syntax-highlightings-62.pb +24 -128
  276. package/.scannerwork/scanner-report/syntax-highlightings-63.pb +45 -49
  277. package/.scannerwork/scanner-report/syntax-highlightings-64.pb +20 -152
  278. package/.scannerwork/scanner-report/syntax-highlightings-65.pb +62 -158
  279. package/.scannerwork/scanner-report/syntax-highlightings-66.pb +15 -857
  280. package/.scannerwork/scanner-report/syntax-highlightings-67.pb +168 -286
  281. package/.scannerwork/scanner-report/syntax-highlightings-68.pb +240 -65
  282. package/.scannerwork/scanner-report/syntax-highlightings-69.pb +3487 -398
  283. package/CHANGES.md +4 -0
  284. package/README.md +1 -1
  285. package/package.json +5 -5
  286. package/test-16-results.xml +144 -144
  287. package/test-18-results.xml +152 -152
  288. package/{test-19-results.xml → test-20-results.xml} +154 -154
  289. package/test-iam-18-results.xml +49 -49
  290. package/.scannerwork/scanner-report/changesets-10.pb +0 -2
  291. package/.scannerwork/scanner-report/changesets-11.pb +0 -1
  292. package/.scannerwork/scanner-report/changesets-14.pb +0 -1
  293. package/.scannerwork/scanner-report/changesets-16.pb +0 -1
  294. package/.scannerwork/scanner-report/changesets-17.pb +0 -1
  295. package/.scannerwork/scanner-report/changesets-50.pb +0 -1
  296. package/.scannerwork/scanner-report/changesets-51.pb +0 -1
  297. package/.scannerwork/scanner-report/changesets-53.pb +0 -1
  298. package/.scannerwork/scanner-report/changesets-54.pb +0 -1
  299. package/.scannerwork/scanner-report/changesets-69.pb +0 -1
  300. package/.scannerwork/scanner-report/component-10.pb +0 -2
  301. package/.scannerwork/scanner-report/component-11.pb +0 -1
  302. package/.scannerwork/scanner-report/component-12.pb +0 -1
  303. package/.scannerwork/scanner-report/component-14.pb +0 -1
  304. package/.scannerwork/scanner-report/component-16.pb +0 -1
  305. package/.scannerwork/scanner-report/component-17.pb +0 -1
  306. package/.scannerwork/scanner-report/component-5.pb +0 -1
  307. package/.scannerwork/scanner-report/component-51.pb +0 -1
  308. package/.scannerwork/scanner-report/component-53.pb +0 -1
  309. package/.scannerwork/scanner-report/component-54.pb +0 -1
  310. package/.scannerwork/scanner-report/component-6.pb +0 -1
  311. package/.scannerwork/scanner-report/coverages-14.pb +0 -0
  312. package/.scannerwork/scanner-report/coverages-16.pb +0 -0
  313. package/.scannerwork/scanner-report/coverages-17.pb +0 -0
  314. package/.scannerwork/scanner-report/coverages-50.pb +0 -0
  315. package/.scannerwork/scanner-report/coverages-51.pb +0 -0
  316. package/.scannerwork/scanner-report/coverages-53.pb +0 -0
  317. package/.scannerwork/scanner-report/duplications-17.pb +0 -2
  318. package/.scannerwork/scanner-report/duplications-50.pb +0 -3
  319. package/.scannerwork/scanner-report/measures-11.pb +0 -0
  320. package/.scannerwork/scanner-report/measures-12.pb +0 -0
  321. package/.scannerwork/scanner-report/measures-14.pb +0 -0
  322. package/.scannerwork/scanner-report/measures-16.pb +0 -0
  323. package/.scannerwork/scanner-report/measures-17.pb +0 -0
  324. package/.scannerwork/scanner-report/measures-51.pb +0 -0
  325. package/.scannerwork/scanner-report/measures-53.pb +0 -0
  326. package/.scannerwork/scanner-report/measures-6.pb +0 -0
  327. package/.scannerwork/scanner-report/source-11.txt +0 -56
  328. package/.scannerwork/scanner-report/source-12.txt +0 -167
  329. package/.scannerwork/scanner-report/source-14.txt +0 -114
  330. package/.scannerwork/scanner-report/source-16.txt +0 -118
  331. package/.scannerwork/scanner-report/source-17.txt +0 -75
  332. package/.scannerwork/scanner-report/source-5.txt +0 -509
  333. package/.scannerwork/scanner-report/source-51.txt +0 -366
  334. package/.scannerwork/scanner-report/symbols-14.pb +0 -28
  335. package/.scannerwork/scanner-report/symbols-16.pb +0 -30
  336. package/.scannerwork/scanner-report/symbols-17.pb +0 -42
  337. package/.scannerwork/scanner-report/symbols-50.pb +0 -394
  338. package/.scannerwork/scanner-report/symbols-51.pb +0 -494
  339. package/.scannerwork/scanner-report/symbols-53.pb +0 -14
  340. package/.scannerwork/scanner-report/syntax-highlightings-11.pb +0 -82
  341. package/.scannerwork/scanner-report/syntax-highlightings-12.pb +0 -949
  342. package/.scannerwork/scanner-report/syntax-highlightings-14.pb +0 -138
  343. package/.scannerwork/scanner-report/syntax-highlightings-16.pb +0 -113
  344. package/.scannerwork/scanner-report/syntax-highlightings-17.pb +0 -78
  345. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +0 -630
  346. package/.scannerwork/scanner-report/syntax-highlightings-53.pb +0 -54
  347. package/.scannerwork/scanner-report/syntax-highlightings-6.pb +0 -3747
  348. package/test-14-results.xml +0 -509
  349. /package/.scannerwork/scanner-report/{coverages-11.pb → coverages-2.pb} +0 -0
  350. /package/.scannerwork/scanner-report/{coverages-10.pb → coverages-3.pb} +0 -0
  351. /package/.scannerwork/scanner-report/{coverages-69.pb → coverages-30.pb} +0 -0
  352. /package/.scannerwork/scanner-report/{coverages-54.pb → coverages-33.pb} +0 -0
  353. /package/.scannerwork/scanner-report/{duplications-10.pb → duplications-2.pb} +0 -0
  354. /package/.scannerwork/scanner-report/{duplications-11.pb → duplications-3.pb} +0 -0
  355. /package/.scannerwork/scanner-report/{duplications-69.pb → duplications-30.pb} +0 -0
  356. /package/.scannerwork/scanner-report/{duplications-14.pb → duplications-33.pb} +0 -0
  357. /package/.scannerwork/scanner-report/{duplications-16.pb → duplications-35.pb} +0 -0
  358. /package/.scannerwork/scanner-report/{duplications-51.pb → duplications-38.pb} +0 -0
  359. /package/.scannerwork/scanner-report/{duplications-53.pb → duplications-39.pb} +0 -0
  360. /package/.scannerwork/scanner-report/{duplications-54.pb → duplications-45.pb} +0 -0
  361. /package/.scannerwork/scanner-report/{issues-51.pb → issues-21.pb} +0 -0
  362. /package/.scannerwork/scanner-report/{issues-37.pb → issues-25.pb} +0 -0
  363. /package/.scannerwork/scanner-report/{issues-50.pb → issues-28.pb} +0 -0
  364. /package/.scannerwork/scanner-report/{issues-54.pb → issues-33.pb} +0 -0
  365. /package/.scannerwork/scanner-report/{measures-10.pb → measures-3.pb} +0 -0
  366. /package/.scannerwork/scanner-report/{measures-54.pb → measures-33.pb} +0 -0
  367. /package/.scannerwork/scanner-report/{measures-5.pb → measures-40.pb} +0 -0
  368. /package/.scannerwork/scanner-report/{source-10.txt → source-3.txt} +0 -0
  369. /package/.scannerwork/scanner-report/{source-54.txt → source-33.txt} +0 -0
  370. /package/.scannerwork/scanner-report/{symbols-11.pb → symbols-2.pb} +0 -0
  371. /package/.scannerwork/scanner-report/{symbols-10.pb → symbols-3.pb} +0 -0
  372. /package/.scannerwork/scanner-report/{symbols-69.pb → symbols-30.pb} +0 -0
  373. /package/.scannerwork/scanner-report/{symbols-54.pb → symbols-33.pb} +0 -0
  374. /package/.scannerwork/scanner-report/{syntax-highlightings-10.pb → syntax-highlightings-3.pb} +0 -0
  375. /package/.scannerwork/scanner-report/{syntax-highlightings-54.pb → syntax-highlightings-33.pb} +0 -0
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2018 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.
@@ -11,215 +11,154 @@
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 */
16
14
  'use strict';
17
15
 
18
- const assert = require('assert');
19
- const backup = require('../app.js').backup;
20
- const fs = require('fs');
21
- const nock = require('nock');
22
-
23
- const goodUrl = 'http://localhost:5984/db';
24
- // The real validateArgs function of app.js isn't
25
- // exported - so we call the exported backup method
26
- // instead. We don't get as far as a real backup when
27
- // testing error cases. For success cases we nock the
28
- // goodUrl and
29
- const validateArgs = function(url, opts, callback) {
30
- const nullStream = fs.createWriteStream('/dev/null');
31
- let cb = callback;
32
- if (url === goodUrl) {
33
- // Nock the goodUrl
34
- nock(goodUrl).head('').reply(404, { error: 'not_found', reason: 'missing' });
35
- // replace the callback to handle the nock response
36
- // to avoid attempting a real backup
37
- cb = function(err) {
38
- nullStream.end();
39
- if (err.name === 'DatabaseNotFound') {
40
- // This is what we expect if we reached the backup
41
- // This is success for valid args cases.
42
- err = null;
43
- }
44
- callback(err);
45
- };
46
- }
47
- backup(url, nullStream, opts, cb);
48
- return true;
49
- };
16
+ const async = require('async');
17
+ const stream = require('stream');
18
+ const error = require('./error.js');
19
+ const debug = require('debug')('couchbackup:writer');
50
20
 
51
- const stderrWriteFun = process.stderr.write;
52
- let capturedStderr;
21
+ module.exports = function(db, bufferSize, parallelism, ee) {
22
+ const writer = new stream.Transform({ objectMode: true });
23
+ let buffer = [];
24
+ let written = 0;
25
+ let linenumber = 0;
53
26
 
54
- function captureStderr() {
55
- process.stderr.write = function(string, encoding, fd) {
56
- capturedStderr += string;
57
- };
58
- }
59
-
60
- function releaseStderr() {
61
- process.stderr.write = stderrWriteFun;
62
- capturedStderr = null;
63
- }
64
-
65
- function assertErrorMessage(msg, done) {
66
- return function(err, data) {
67
- try {
68
- assert(err.message, 'There should be an error message');
69
- assert(err.message.indexOf(msg) >= 0);
70
- assert(data === null || data === undefined, 'There should only be an error.');
71
- done();
72
- } catch (e) {
73
- done(e);
27
+ // this is the queue of chunks that are written to the database
28
+ // the queue's payload will be an array of documents to be written,
29
+ // the size of the array will be bufferSize. The variable parallelism
30
+ // determines how many HTTP requests will occur at any one time.
31
+ const q = async.queue(function(payload, cb) {
32
+ // if we are restoring known revisions, we need to supply new_edits=false
33
+ if (payload.docs && payload.docs[0] && payload.docs[0]._rev) {
34
+ payload.new_edits = false;
35
+ debug('Using new_edits false mode.');
74
36
  }
75
- };
76
- }
77
37
 
78
- function assertNoError(done) {
79
- return function(err, data) {
80
- try {
81
- assert(err === null, 'There should be no error message.');
82
- done();
83
- } catch (e) {
84
- done(e);
85
- }
86
- };
87
- }
88
-
89
- describe('#unit Validate arguments', function() {
90
- it('returns error for invalid URL type', function(done) {
91
- validateArgs(true, {}, assertErrorMessage('Invalid URL, must be type string', done));
92
- });
93
- it('returns no error for valid URL type', function(done) {
94
- validateArgs(goodUrl, {}, assertNoError(done));
95
- });
96
- it('returns error for invalid (no host) URL', function(done) {
97
- validateArgs('http://', {}, assertErrorMessage('Invalid URL', done));
98
- });
99
- it('returns error for invalid (no protocol) URL', function(done) {
100
- validateArgs('invalid', {}, assertErrorMessage('Invalid URL', done));
101
- });
102
- it('returns error for invalid (wrong protocol) URL', function(done) {
103
- validateArgs('ftp://invalid.example.com', {}, assertErrorMessage('Invalid URL protocol.', done));
104
- });
105
- it('returns error for invalid (no path) URL', function(done) {
106
- validateArgs('https://invalid.example.com', {}, assertErrorMessage('Invalid URL, missing path element (no database).', done));
107
- });
108
- it('returns error for invalid (no protocol, no host) URL', function(done) {
109
- validateArgs('invalid', {}, assertErrorMessage('Invalid URL', done));
110
- });
111
- it('returns error for invalid buffer size type', function(done) {
112
- validateArgs(goodUrl, { bufferSize: '123' }, assertErrorMessage('Invalid buffer size option, must be a positive integer in the range (0, MAX_SAFE_INTEGER]', done));
113
- });
114
- it('returns error for zero buffer size', function(done) {
115
- validateArgs(goodUrl, { bufferSize: 0 }, assertErrorMessage('Invalid buffer size option, must be a positive integer in the range (0, MAX_SAFE_INTEGER]', done));
116
- });
117
- it('returns error for float buffer size', function(done) {
118
- validateArgs(goodUrl, { bufferSize: 1.23 }, assertErrorMessage('Invalid buffer size option, must be a positive integer in the range (0, MAX_SAFE_INTEGER]', done));
119
- });
120
- it('returns no error for valid buffer size type', function(done) {
121
- validateArgs(goodUrl, { bufferSize: 123 }, assertNoError(done));
122
- });
123
- it('returns error for invalid log type', function(done) {
124
- validateArgs(goodUrl, { log: true }, assertErrorMessage('Invalid log option, must be type string', done));
125
- });
126
- it('returns no error for valid log type', function(done) {
127
- validateArgs(goodUrl, { log: 'log.txt' }, assertNoError(done));
128
- });
129
- it('returns error for invalid mode type', function(done) {
130
- validateArgs(goodUrl, { mode: true }, assertErrorMessage('Invalid mode option, must be either "full" or "shallow"', done));
131
- });
132
- it('returns error for invalid mode string', function(done) {
133
- validateArgs(goodUrl, { mode: 'foobar' }, assertErrorMessage('Invalid mode option, must be either "full" or "shallow"', done));
134
- });
135
- it('returns no error for valid mode type', function(done) {
136
- validateArgs(goodUrl, { mode: 'full' }, assertNoError(done));
137
- });
138
- it('returns error for invalid output type', function(done) {
139
- validateArgs(goodUrl, { output: true }, assertErrorMessage('Invalid output option, must be type string', done));
140
- });
141
- it('returns no error for valid output type', function(done) {
142
- validateArgs(goodUrl, { output: 'output.txt' }, assertNoError(done));
143
- });
144
- it('returns error for invalid parallelism type', function(done) {
145
- validateArgs(goodUrl, { parallelism: '123' }, assertErrorMessage('Invalid parallelism option, must be a positive integer in the range (0, MAX_SAFE_INTEGER]', done));
146
- });
147
- it('returns error for zero parallelism', function(done) {
148
- validateArgs(goodUrl, { parallelism: 0 }, assertErrorMessage('Invalid parallelism option, must be a positive integer in the range (0, MAX_SAFE_INTEGER]', done));
149
- });
150
- it('returns error for float parallelism', function(done) {
151
- validateArgs(goodUrl, { parallelism: 1.23 }, assertErrorMessage('Invalid parallelism option, must be a positive integer in the range (0, MAX_SAFE_INTEGER]', done));
152
- });
153
- it('returns no error for valid parallelism type', function(done) {
154
- validateArgs(goodUrl, { parallelism: 123 }, assertNoError(done));
155
- });
156
- it('returns error for invalid request timeout type', function(done) {
157
- validateArgs(goodUrl, { requestTimeout: '123' }, assertErrorMessage('Invalid request timeout option, must be a positive integer in the range (0, MAX_SAFE_INTEGER]', done));
158
- });
159
- it('returns error for zero request timeout', function(done) {
160
- validateArgs(goodUrl, { requestTimeout: 0 }, assertErrorMessage('Invalid request timeout option, must be a positive integer in the range (0, MAX_SAFE_INTEGER]', done));
161
- });
162
- it('returns error for float request timout', function(done) {
163
- validateArgs(goodUrl, { requestTimeout: 1.23 }, assertErrorMessage('Invalid request timeout option, must be a positive integer in the range (0, MAX_SAFE_INTEGER]', done));
164
- });
165
- it('returns no error for valid request timeout type', function(done) {
166
- validateArgs(goodUrl, { requestTimeout: 123 }, assertNoError(done));
167
- });
168
- it('returns error for invalid resume type', function(done) {
169
- validateArgs(goodUrl, { resume: 'true' }, assertErrorMessage('Invalid resume option, must be type boolean', done));
170
- });
171
- it('returns no error for valid resume type', function(done) {
172
- validateArgs(goodUrl, { resume: false }, assertNoError(done));
173
- });
174
- it('returns error for invalid key type', function(done) {
175
- validateArgs(goodUrl, { iamApiKey: true }, assertErrorMessage('Invalid iamApiKey option, must be type string', done));
176
- });
177
- it('returns error for key and URL credentials supplied', function(done) {
178
- validateArgs('https://a:b@example.com/db', { iamApiKey: 'abc123' }, assertErrorMessage('URL user information must not be supplied when using IAM API key.', done));
179
- });
180
- it('warns for log arg in shallow mode', function(done) {
181
- captureStderr();
182
- try {
183
- validateArgs(goodUrl, { mode: 'shallow', log: 'test' }, function(err, data) {
184
- assert.ok(err);
185
- assert.ok(!data);
186
- assert(capturedStderr.indexOf('The options "log" and "resume" are invalid when using shallow mode.') > -1, 'Log warning message was not present');
38
+ if (!didError) {
39
+ db.service.postBulkDocs({
40
+ db: db.db,
41
+ bulkDocs: payload
42
+ }).then(response => {
43
+ if (!response.result || (payload.new_edits === false && response.result.length > 0)) {
44
+ throw new Error(`Error writing batch with new_edits:${payload.new_edits !== false}` +
45
+ ` and ${response.result ? response.result.length : 'unavailable'} items`);
46
+ }
47
+ written += payload.docs.length;
48
+ writer.emit('restored', { documents: payload.docs.length, total: written });
49
+ cb();
50
+ }).catch(err => {
51
+ err = error.convertResponseError(err);
52
+ debug(`Error writing docs ${err.name} ${err.message}`);
53
+ cb(err, payload);
187
54
  });
188
- done();
189
- } catch (e) {
190
- done(e);
191
- } finally {
192
- releaseStderr();
193
55
  }
194
- });
195
- it('warns for resume arg in shallow mode', function(done) {
196
- captureStderr();
197
- try {
198
- validateArgs(goodUrl, { mode: 'shallow', log: 'test', resume: true }, function(err, data) {
199
- assert.ok(err);
200
- assert.ok(!data);
201
- assert(capturedStderr.indexOf('The options "log" and "resume" are invalid when using shallow mode.') > -1, 'Log warning message was not present');
202
- });
203
- done();
204
- } catch (e) {
205
- done(e);
206
- } finally {
207
- releaseStderr();
56
+ }, parallelism);
57
+
58
+ let didError = false;
59
+
60
+ // write the contents of the buffer to CouchDB in blocks of bufferSize
61
+ function processBuffer(flush, callback) {
62
+ function taskCallback(err, payload) {
63
+ if (err && !didError) {
64
+ debug(`Queue task failed with error ${err.name}`);
65
+ didError = true;
66
+ q.kill();
67
+ writer.emit('error', err);
68
+ }
208
69
  }
209
- });
210
- it('warns for parallism arg in shallow mode', function(done) {
211
- captureStderr();
212
- try {
213
- validateArgs(goodUrl, { mode: 'shallow', parallelsim: 10 }, function(err, data) {
214
- assert.ok(err);
215
- assert.ok(!data);
216
- assert(capturedStderr.indexOf('The option "parallelism" has no effect when using shallow mode.') > -1, 'Log warning message was not present');
217
- });
70
+
71
+ if (flush || buffer.length >= bufferSize) {
72
+ // work through the buffer to break off bufferSize chunks
73
+ // and feed the chunks to the queue
74
+ do {
75
+ // split the buffer into bufferSize chunks
76
+ const toSend = buffer.splice(0, bufferSize);
77
+
78
+ // and add the chunk to the queue
79
+ debug(`Adding ${toSend.length} to the write queue.`);
80
+ q.push({ docs: toSend }, taskCallback);
81
+ } while (buffer.length >= bufferSize);
82
+
83
+ // send any leftover documents to the queue
84
+ if (flush && buffer.length > 0) {
85
+ debug(`Adding remaining ${buffer.length} to the write queue.`);
86
+ q.push({ docs: buffer }, taskCallback);
87
+ }
88
+
89
+ // wait until the queue size falls to a reasonable level
90
+ async.until(
91
+ // wait until the queue length drops to twice the paralellism
92
+ // or until empty on the last write
93
+ function(callback) {
94
+ // if we encountered an error, stop this until loop
95
+ if (didError) {
96
+ return callback(null, true);
97
+ }
98
+ if (flush) {
99
+ callback(null, q.idle() && q.length() === 0);
100
+ } else {
101
+ callback(null, q.length() <= parallelism * 2);
102
+ }
103
+ },
104
+ function(cb) {
105
+ setTimeout(cb, 20);
106
+ },
107
+
108
+ function() {
109
+ if (flush && !didError) {
110
+ writer.emit('finished', { total: written });
111
+ }
112
+ // callback when we're happy with the queue size
113
+ callback();
114
+ });
115
+ } else {
116
+ callback();
117
+ }
118
+ }
119
+
120
+ // take an object
121
+ writer._transform = function(obj, encoding, done) {
122
+ // each obj that arrives here is a line from the backup file
123
+ // it should contain an array of objects. The length of the array
124
+ // depends on the bufferSize at backup time.
125
+ linenumber++;
126
+ if (!didError && obj !== '') {
127
+ // see if it parses as JSON
128
+ try {
129
+ const arr = JSON.parse(obj);
130
+
131
+ // if it's an array with a length
132
+ if (typeof arr === 'object' && arr.length > 0) {
133
+ // push each document into a buffer
134
+ buffer = buffer.concat(arr);
135
+
136
+ // pause the stream
137
+ // it's likely that the speed with which data can be read from disk
138
+ // may exceed the rate it can be written to CouchDB. To prevent
139
+ // the whole file being buffered in memory, we pause the stream here.
140
+ // it is resumed, when processBuffer calls back and we call done()
141
+ this.pause();
142
+
143
+ // break the buffer in to bufferSize chunks to be written to the database
144
+ processBuffer(false, done);
145
+ } else {
146
+ ee.emit('error', new error.BackupError('BackupFileJsonError', `Error on line ${linenumber} of backup file - not an array`));
147
+ done();
148
+ }
149
+ } catch (e) {
150
+ ee.emit('error', new error.BackupError('BackupFileJsonError', `Error on line ${linenumber} of backup file - cannot parse as JSON`));
151
+ // Could be an incomplete write that was subsequently resumed
152
+ done();
153
+ }
154
+ } else {
218
155
  done();
219
- } catch (e) {
220
- done(e);
221
- } finally {
222
- releaseStderr();
223
156
  }
224
- });
225
- });
157
+ };
158
+
159
+ // called when we need to flush everything
160
+ writer._flush = function(done) {
161
+ processBuffer(true, done);
162
+ };
163
+ return writer;
164
+ };