@cloudant/couchbackup 2.9.12-SNAPSHOT.135 → 2.9.12

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 (395) 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-20.pb +1 -0
  5. package/.scannerwork/scanner-report/changesets-22.pb +1 -0
  6. package/.scannerwork/scanner-report/changesets-23.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-24.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-25.pb +1 -0
  9. package/.scannerwork/scanner-report/changesets-26.pb +1 -0
  10. package/.scannerwork/scanner-report/changesets-27.pb +1 -0
  11. package/.scannerwork/scanner-report/changesets-28.pb +1 -0
  12. package/.scannerwork/scanner-report/changesets-29.pb +1 -0
  13. package/.scannerwork/scanner-report/changesets-30.pb +1 -0
  14. package/.scannerwork/scanner-report/changesets-44.pb +1 -0
  15. package/.scannerwork/scanner-report/changesets-45.pb +1 -0
  16. package/.scannerwork/scanner-report/changesets-46.pb +1 -0
  17. package/.scannerwork/scanner-report/changesets-47.pb +1 -0
  18. package/.scannerwork/scanner-report/component-1.pb +2 -2
  19. package/.scannerwork/scanner-report/component-10.pb +1 -1
  20. package/.scannerwork/scanner-report/component-11.pb +1 -1
  21. package/.scannerwork/scanner-report/component-12.pb +1 -1
  22. package/.scannerwork/scanner-report/component-13.pb +1 -1
  23. package/.scannerwork/scanner-report/component-14.pb +1 -1
  24. package/.scannerwork/scanner-report/component-15.pb +1 -1
  25. package/.scannerwork/scanner-report/component-16.pb +1 -1
  26. package/.scannerwork/scanner-report/component-17.pb +1 -1
  27. package/.scannerwork/scanner-report/component-18.pb +1 -1
  28. package/.scannerwork/scanner-report/component-19.pb +1 -1
  29. package/.scannerwork/scanner-report/component-20.pb +1 -0
  30. package/.scannerwork/scanner-report/component-22.pb +1 -0
  31. package/.scannerwork/scanner-report/component-23.pb +1 -0
  32. package/.scannerwork/scanner-report/component-24.pb +1 -0
  33. package/.scannerwork/scanner-report/component-25.pb +1 -0
  34. package/.scannerwork/scanner-report/component-26.pb +1 -0
  35. package/.scannerwork/scanner-report/component-27.pb +1 -0
  36. package/.scannerwork/scanner-report/component-28.pb +1 -0
  37. package/.scannerwork/scanner-report/component-29.pb +1 -0
  38. package/.scannerwork/scanner-report/component-30.pb +1 -0
  39. package/.scannerwork/scanner-report/component-42.pb +1 -1
  40. package/.scannerwork/scanner-report/component-43.pb +1 -1
  41. package/.scannerwork/scanner-report/component-44.pb +1 -0
  42. package/.scannerwork/scanner-report/component-45.pb +1 -0
  43. package/.scannerwork/scanner-report/component-46.pb +1 -0
  44. package/.scannerwork/scanner-report/component-47.pb +1 -0
  45. package/.scannerwork/scanner-report/component-48.pb +1 -1
  46. package/.scannerwork/scanner-report/component-49.pb +1 -1
  47. package/.scannerwork/scanner-report/component-5.pb +1 -1
  48. package/.scannerwork/scanner-report/component-50.pb +1 -1
  49. package/.scannerwork/scanner-report/component-51.pb +1 -1
  50. package/.scannerwork/scanner-report/component-52.pb +1 -1
  51. package/.scannerwork/scanner-report/component-53.pb +1 -1
  52. package/.scannerwork/scanner-report/component-54.pb +1 -1
  53. package/.scannerwork/scanner-report/component-55.pb +1 -1
  54. package/.scannerwork/scanner-report/component-56.pb +1 -1
  55. package/.scannerwork/scanner-report/component-58.pb +1 -1
  56. package/.scannerwork/scanner-report/component-6.pb +1 -1
  57. package/.scannerwork/scanner-report/component-61.pb +1 -1
  58. package/.scannerwork/scanner-report/component-64.pb +1 -1
  59. package/.scannerwork/scanner-report/component-68.pb +1 -0
  60. package/.scannerwork/scanner-report/component-7.pb +1 -1
  61. package/.scannerwork/scanner-report/component-8.pb +1 -1
  62. package/.scannerwork/scanner-report/component-9.pb +1 -1
  63. package/.scannerwork/scanner-report/coverages-10.pb +0 -0
  64. package/.scannerwork/scanner-report/coverages-11.pb +0 -0
  65. package/.scannerwork/scanner-report/coverages-12.pb +0 -0
  66. package/.scannerwork/scanner-report/coverages-13.pb +0 -0
  67. package/.scannerwork/scanner-report/coverages-14.pb +0 -0
  68. package/.scannerwork/scanner-report/coverages-15.pb +0 -0
  69. package/.scannerwork/scanner-report/coverages-16.pb +0 -0
  70. package/.scannerwork/scanner-report/coverages-17.pb +0 -0
  71. package/.scannerwork/scanner-report/coverages-18.pb +0 -0
  72. package/.scannerwork/scanner-report/coverages-19.pb +0 -0
  73. package/.scannerwork/scanner-report/coverages-20.pb +0 -0
  74. package/.scannerwork/scanner-report/coverages-22.pb +0 -0
  75. package/.scannerwork/scanner-report/coverages-24.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-25.pb +0 -0
  77. package/.scannerwork/scanner-report/coverages-26.pb +0 -0
  78. package/.scannerwork/scanner-report/coverages-28.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-30.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-42.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-43.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-48.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-49.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-5.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-50.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-51.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-53.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-54.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-55.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-56.pb +0 -0
  94. package/.scannerwork/scanner-report/coverages-58.pb +0 -0
  95. package/.scannerwork/scanner-report/coverages-6.pb +0 -0
  96. package/.scannerwork/scanner-report/coverages-64.pb +0 -0
  97. package/.scannerwork/scanner-report/coverages-7.pb +0 -0
  98. package/.scannerwork/scanner-report/coverages-8.pb +0 -0
  99. package/.scannerwork/scanner-report/coverages-9.pb +0 -0
  100. package/.scannerwork/scanner-report/duplications-10.pb +0 -2
  101. package/.scannerwork/scanner-report/duplications-11.pb +0 -3
  102. package/.scannerwork/scanner-report/duplications-15.pb +2 -0
  103. package/.scannerwork/scanner-report/duplications-16.pb +0 -3
  104. package/.scannerwork/scanner-report/duplications-24.pb +2 -0
  105. package/.scannerwork/scanner-report/duplications-26.pb +3 -0
  106. package/.scannerwork/scanner-report/duplications-30.pb +3 -0
  107. package/.scannerwork/scanner-report/duplications-42.pb +0 -2
  108. package/.scannerwork/scanner-report/duplications-43.pb +0 -2
  109. package/.scannerwork/scanner-report/duplications-5.pb +2 -2
  110. package/.scannerwork/scanner-report/duplications-52.pb +3 -0
  111. package/.scannerwork/scanner-report/duplications-55.pb +2 -0
  112. package/.scannerwork/scanner-report/duplications-6.pb +2 -0
  113. package/.scannerwork/scanner-report/duplications-8.pb +0 -3
  114. package/.scannerwork/scanner-report/duplications-9.pb +2 -0
  115. package/.scannerwork/scanner-report/measures-10.pb +0 -0
  116. package/.scannerwork/scanner-report/measures-11.pb +0 -0
  117. package/.scannerwork/scanner-report/measures-12.pb +0 -0
  118. package/.scannerwork/scanner-report/measures-13.pb +0 -0
  119. package/.scannerwork/scanner-report/measures-14.pb +0 -0
  120. package/.scannerwork/scanner-report/measures-15.pb +0 -0
  121. package/.scannerwork/scanner-report/measures-16.pb +0 -0
  122. package/.scannerwork/scanner-report/measures-17.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-18.pb +0 -0
  124. package/.scannerwork/scanner-report/measures-19.pb +0 -0
  125. package/.scannerwork/scanner-report/measures-20.pb +0 -0
  126. package/.scannerwork/scanner-report/measures-22.pb +0 -0
  127. package/.scannerwork/scanner-report/measures-24.pb +0 -0
  128. package/.scannerwork/scanner-report/measures-25.pb +0 -0
  129. package/.scannerwork/scanner-report/measures-26.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-28.pb +0 -0
  131. package/.scannerwork/scanner-report/measures-30.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-45.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-46.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-48.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-49.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-5.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-50.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-51.pb +0 -0
  141. package/.scannerwork/scanner-report/measures-52.pb +0 -0
  142. package/.scannerwork/scanner-report/measures-53.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-58.pb +0 -0
  147. package/.scannerwork/scanner-report/measures-6.pb +0 -0
  148. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  149. package/.scannerwork/scanner-report/measures-64.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 +87 -201
  155. package/.scannerwork/scanner-report/source-11.txt +36 -113
  156. package/.scannerwork/scanner-report/source-12.txt +22 -49
  157. package/.scannerwork/scanner-report/source-13.txt +115 -78
  158. package/.scannerwork/scanner-report/source-14.txt +146 -45
  159. package/.scannerwork/scanner-report/source-15.txt +58 -30
  160. package/.scannerwork/scanner-report/source-16.txt +103 -229
  161. package/.scannerwork/scanner-report/source-17.txt +89 -21
  162. package/.scannerwork/scanner-report/source-18.txt +164 -20
  163. package/.scannerwork/scanner-report/source-19.txt +17 -128
  164. package/.scannerwork/scanner-report/source-2.txt +151 -151
  165. package/.scannerwork/scanner-report/source-20.txt +281 -0
  166. package/.scannerwork/scanner-report/source-22.txt +56 -0
  167. package/.scannerwork/scanner-report/source-24.txt +145 -0
  168. package/.scannerwork/scanner-report/source-25.txt +34 -0
  169. package/.scannerwork/scanner-report/source-26.txt +119 -0
  170. package/.scannerwork/scanner-report/source-28.txt +47 -0
  171. package/.scannerwork/scanner-report/source-30.txt +131 -0
  172. package/.scannerwork/scanner-report/source-42.txt +348 -157
  173. package/.scannerwork/scanner-report/source-43.txt +122 -165
  174. package/.scannerwork/scanner-report/source-45.txt +142 -0
  175. package/.scannerwork/scanner-report/source-46.txt +68 -0
  176. package/.scannerwork/scanner-report/source-48.txt +22 -115
  177. package/.scannerwork/scanner-report/source-49.txt +81 -35
  178. package/.scannerwork/scanner-report/source-5.txt +152 -122
  179. package/.scannerwork/scanner-report/source-50.txt +598 -19
  180. package/.scannerwork/scanner-report/source-51.txt +46 -58
  181. package/.scannerwork/scanner-report/source-52.txt +227 -147
  182. package/.scannerwork/scanner-report/source-53.txt +45 -160
  183. package/.scannerwork/scanner-report/source-54.txt +12 -75
  184. package/.scannerwork/scanner-report/source-55.txt +194 -250
  185. package/.scannerwork/scanner-report/source-56.txt +78 -104
  186. package/.scannerwork/scanner-report/source-58.txt +94 -21
  187. package/.scannerwork/scanner-report/source-6.txt +167 -45
  188. package/.scannerwork/scanner-report/source-61.txt +509 -104
  189. package/.scannerwork/scanner-report/source-64.txt +401 -39
  190. package/.scannerwork/scanner-report/{source-37.txt → source-68.txt} +50 -50
  191. package/.scannerwork/scanner-report/source-7.txt +32 -133
  192. package/.scannerwork/scanner-report/source-8.txt +57 -96
  193. package/.scannerwork/scanner-report/source-9.txt +75 -12
  194. package/.scannerwork/scanner-report/symbols-10.pb +58 -417
  195. package/.scannerwork/scanner-report/symbols-11.pb +15 -97
  196. package/.scannerwork/scanner-report/symbols-12.pb +17 -35
  197. package/.scannerwork/scanner-report/symbols-13.pb +33 -60
  198. package/.scannerwork/scanner-report/symbols-14.pb +125 -42
  199. package/.scannerwork/scanner-report/symbols-15.pb +41 -26
  200. package/.scannerwork/scanner-report/symbols-16.pb +30 -394
  201. package/.scannerwork/scanner-report/symbols-17.pb +42 -11
  202. package/.scannerwork/scanner-report/symbols-18.pb +143 -9
  203. package/.scannerwork/scanner-report/symbols-19.pb +14 -116
  204. package/.scannerwork/scanner-report/symbols-20.pb +354 -0
  205. package/.scannerwork/scanner-report/symbols-22.pb +19 -0
  206. package/.scannerwork/scanner-report/symbols-24.pb +102 -0
  207. package/.scannerwork/scanner-report/symbols-25.pb +10 -0
  208. package/.scannerwork/scanner-report/symbols-26.pb +77 -0
  209. package/.scannerwork/scanner-report/symbols-28.pb +27 -0
  210. package/.scannerwork/scanner-report/symbols-30.pb +97 -0
  211. package/.scannerwork/scanner-report/symbols-42.pb +486 -145
  212. package/.scannerwork/scanner-report/symbols-43.pb +85 -180
  213. package/.scannerwork/scanner-report/symbols-45.pb +116 -0
  214. package/.scannerwork/scanner-report/symbols-46.pb +45 -0
  215. package/.scannerwork/scanner-report/symbols-48.pb +11 -33
  216. package/.scannerwork/scanner-report/symbols-49.pb +68 -14
  217. package/.scannerwork/scanner-report/symbols-5.pb +152 -101
  218. package/.scannerwork/scanner-report/symbols-50.pb +1253 -19
  219. package/.scannerwork/scanner-report/symbols-51.pb +33 -43
  220. package/.scannerwork/scanner-report/symbols-52.pb +394 -126
  221. package/.scannerwork/scanner-report/symbols-53.pb +42 -143
  222. package/.scannerwork/scanner-report/symbols-54.pb +9 -44
  223. package/.scannerwork/scanner-report/symbols-55.pb +377 -313
  224. package/.scannerwork/scanner-report/symbols-56.pb +60 -30
  225. package/.scannerwork/scanner-report/symbols-58.pb +28 -18
  226. package/.scannerwork/scanner-report/symbols-6.pb +180 -45
  227. package/.scannerwork/scanner-report/symbols-64.pb +610 -19
  228. package/.scannerwork/scanner-report/symbols-7.pb +19 -84
  229. package/.scannerwork/scanner-report/symbols-8.pb +41 -72
  230. package/.scannerwork/scanner-report/symbols-9.pb +44 -9
  231. package/.scannerwork/scanner-report/syntax-highlightings-10.pb +96 -294
  232. package/.scannerwork/scanner-report/syntax-highlightings-11.pb +25 -153
  233. package/.scannerwork/scanner-report/syntax-highlightings-12.pb +21 -66
  234. package/.scannerwork/scanner-report/syntax-highlightings-13.pb +89 -70
  235. package/.scannerwork/scanner-report/syntax-highlightings-14.pb +178 -47
  236. package/.scannerwork/scanner-report/syntax-highlightings-15.pb +44 -34
  237. package/.scannerwork/scanner-report/syntax-highlightings-16.pb +83 -299
  238. package/.scannerwork/scanner-report/syntax-highlightings-17.pb +87 -30
  239. package/.scannerwork/scanner-report/syntax-highlightings-18.pb +209 -16
  240. package/.scannerwork/scanner-report/syntax-highlightings-19.pb +15 -104
  241. package/.scannerwork/scanner-report/syntax-highlightings-2.pb +109 -110
  242. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +285 -0
  243. package/.scannerwork/scanner-report/syntax-highlightings-22.pb +82 -0
  244. package/.scannerwork/scanner-report/syntax-highlightings-24.pb +227 -0
  245. package/.scannerwork/scanner-report/syntax-highlightings-25.pb +50 -0
  246. package/.scannerwork/scanner-report/syntax-highlightings-26.pb +158 -0
  247. package/.scannerwork/scanner-report/syntax-highlightings-28.pb +68 -0
  248. package/.scannerwork/scanner-report/syntax-highlightings-30.pb +182 -0
  249. package/.scannerwork/scanner-report/syntax-highlightings-42.pb +572 -156
  250. package/.scannerwork/scanner-report/syntax-highlightings-43.pb +146 -180
  251. package/.scannerwork/scanner-report/syntax-highlightings-45.pb +134 -0
  252. package/.scannerwork/scanner-report/syntax-highlightings-46.pb +110 -0
  253. package/.scannerwork/scanner-report/syntax-highlightings-48.pb +26 -96
  254. package/.scannerwork/scanner-report/syntax-highlightings-49.pb +75 -24
  255. package/.scannerwork/scanner-report/syntax-highlightings-5.pb +183 -196
  256. package/.scannerwork/scanner-report/syntax-highlightings-50.pb +856 -33
  257. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +60 -60
  258. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +284 -168
  259. package/.scannerwork/scanner-report/syntax-highlightings-53.pb +46 -207
  260. package/.scannerwork/scanner-report/syntax-highlightings-54.pb +15 -57
  261. package/.scannerwork/scanner-report/syntax-highlightings-55.pb +219 -173
  262. package/.scannerwork/scanner-report/syntax-highlightings-56.pb +80 -83
  263. package/.scannerwork/scanner-report/syntax-highlightings-58.pb +108 -20
  264. package/.scannerwork/scanner-report/syntax-highlightings-6.pb +180 -65
  265. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +3737 -105
  266. package/.scannerwork/scanner-report/syntax-highlightings-64.pb +624 -58
  267. package/.scannerwork/scanner-report/{syntax-highlightings-37.pb → syntax-highlightings-68.pb} +19 -19
  268. package/.scannerwork/scanner-report/syntax-highlightings-7.pb +35 -162
  269. package/.scannerwork/scanner-report/syntax-highlightings-8.pb +58 -121
  270. package/.scannerwork/scanner-report/syntax-highlightings-9.pb +57 -15
  271. package/.secrets.baseline +2 -2
  272. package/CHANGES.md +3 -0
  273. package/package.json +2 -2
  274. package/test-16-results.xml +148 -148
  275. package/test-18-results.xml +151 -151
  276. package/test-iam-18-results.xml +50 -50
  277. package/.scannerwork/scanner-report/changesets-3.pb +0 -1
  278. package/.scannerwork/scanner-report/changesets-31.pb +0 -1
  279. package/.scannerwork/scanner-report/changesets-32.pb +0 -1
  280. package/.scannerwork/scanner-report/changesets-33.pb +0 -1
  281. package/.scannerwork/scanner-report/changesets-34.pb +0 -1
  282. package/.scannerwork/scanner-report/changesets-35.pb +0 -1
  283. package/.scannerwork/scanner-report/changesets-38.pb +0 -1
  284. package/.scannerwork/scanner-report/changesets-4.pb +0 -1
  285. package/.scannerwork/scanner-report/changesets-57.pb +0 -1
  286. package/.scannerwork/scanner-report/changesets-59.pb +0 -1
  287. package/.scannerwork/scanner-report/changesets-60.pb +0 -1
  288. package/.scannerwork/scanner-report/changesets-61.pb +0 -1
  289. package/.scannerwork/scanner-report/changesets-65.pb +0 -1
  290. package/.scannerwork/scanner-report/changesets-66.pb +0 -1
  291. package/.scannerwork/scanner-report/component-3.pb +0 -1
  292. package/.scannerwork/scanner-report/component-31.pb +0 -1
  293. package/.scannerwork/scanner-report/component-32.pb +0 -1
  294. package/.scannerwork/scanner-report/component-33.pb +0 -1
  295. package/.scannerwork/scanner-report/component-34.pb +0 -1
  296. package/.scannerwork/scanner-report/component-35.pb +0 -1
  297. package/.scannerwork/scanner-report/component-37.pb +0 -1
  298. package/.scannerwork/scanner-report/component-38.pb +0 -1
  299. package/.scannerwork/scanner-report/component-4.pb +0 -1
  300. package/.scannerwork/scanner-report/component-57.pb +0 -1
  301. package/.scannerwork/scanner-report/component-59.pb +0 -1
  302. package/.scannerwork/scanner-report/component-60.pb +0 -1
  303. package/.scannerwork/scanner-report/component-65.pb +0 -1
  304. package/.scannerwork/scanner-report/component-66.pb +0 -1
  305. package/.scannerwork/scanner-report/component-67.pb +0 -1
  306. package/.scannerwork/scanner-report/coverages-33.pb +0 -0
  307. package/.scannerwork/scanner-report/coverages-35.pb +0 -0
  308. package/.scannerwork/scanner-report/coverages-38.pb +0 -0
  309. package/.scannerwork/scanner-report/coverages-4.pb +0 -0
  310. package/.scannerwork/scanner-report/coverages-57.pb +0 -0
  311. package/.scannerwork/scanner-report/coverages-59.pb +0 -0
  312. package/.scannerwork/scanner-report/coverages-60.pb +0 -0
  313. package/.scannerwork/scanner-report/coverages-61.pb +0 -0
  314. package/.scannerwork/scanner-report/coverages-66.pb +0 -0
  315. package/.scannerwork/scanner-report/duplications-54.pb +0 -2
  316. package/.scannerwork/scanner-report/duplications-57.pb +0 -2
  317. package/.scannerwork/scanner-report/duplications-65.pb +0 -0
  318. package/.scannerwork/scanner-report/duplications-66.pb +0 -0
  319. package/.scannerwork/scanner-report/measures-33.pb +0 -0
  320. package/.scannerwork/scanner-report/measures-35.pb +0 -0
  321. package/.scannerwork/scanner-report/measures-38.pb +0 -0
  322. package/.scannerwork/scanner-report/measures-4.pb +0 -0
  323. package/.scannerwork/scanner-report/measures-57.pb +0 -0
  324. package/.scannerwork/scanner-report/measures-59.pb +0 -0
  325. package/.scannerwork/scanner-report/measures-60.pb +0 -0
  326. package/.scannerwork/scanner-report/measures-66.pb +0 -0
  327. package/.scannerwork/scanner-report/measures-67.pb +0 -0
  328. package/.scannerwork/scanner-report/source-33.txt +0 -625
  329. package/.scannerwork/scanner-report/source-35.txt +0 -100
  330. package/.scannerwork/scanner-report/source-38.txt +0 -418
  331. package/.scannerwork/scanner-report/source-4.txt +0 -366
  332. package/.scannerwork/scanner-report/source-57.txt +0 -75
  333. package/.scannerwork/scanner-report/source-59.txt +0 -111
  334. package/.scannerwork/scanner-report/source-60.txt +0 -31
  335. package/.scannerwork/scanner-report/source-66.txt +0 -114
  336. package/.scannerwork/scanner-report/source-67.txt +0 -509
  337. package/.scannerwork/scanner-report/symbols-33.pb +0 -1254
  338. package/.scannerwork/scanner-report/symbols-35.pb +0 -69
  339. package/.scannerwork/scanner-report/symbols-38.pb +0 -610
  340. package/.scannerwork/scanner-report/symbols-4.pb +0 -494
  341. package/.scannerwork/scanner-report/symbols-57.pb +0 -42
  342. package/.scannerwork/scanner-report/symbols-59.pb +0 -59
  343. package/.scannerwork/scanner-report/symbols-60.pb +0 -14
  344. package/.scannerwork/scanner-report/symbols-61.pb +0 -42
  345. package/.scannerwork/scanner-report/symbols-66.pb +0 -28
  346. package/.scannerwork/scanner-report/syntax-highlightings-33.pb +0 -887
  347. package/.scannerwork/scanner-report/syntax-highlightings-35.pb +0 -105
  348. package/.scannerwork/scanner-report/syntax-highlightings-38.pb +0 -648
  349. package/.scannerwork/scanner-report/syntax-highlightings-4.pb +0 -630
  350. package/.scannerwork/scanner-report/syntax-highlightings-57.pb +0 -78
  351. package/.scannerwork/scanner-report/syntax-highlightings-59.pb +0 -133
  352. package/.scannerwork/scanner-report/syntax-highlightings-60.pb +0 -45
  353. package/.scannerwork/scanner-report/syntax-highlightings-66.pb +0 -138
  354. package/.scannerwork/scanner-report/syntax-highlightings-67.pb +0 -3747
  355. /package/.scannerwork/scanner-report/{coverages-65.pb → coverages-23.pb} +0 -0
  356. /package/.scannerwork/scanner-report/{coverages-32.pb → coverages-27.pb} +0 -0
  357. /package/.scannerwork/scanner-report/{coverages-3.pb → coverages-29.pb} +0 -0
  358. /package/.scannerwork/scanner-report/{coverages-31.pb → coverages-44.pb} +0 -0
  359. /package/.scannerwork/scanner-report/{coverages-34.pb → coverages-47.pb} +0 -0
  360. /package/.scannerwork/scanner-report/{duplications-31.pb → duplications-20.pb} +0 -0
  361. /package/.scannerwork/scanner-report/{duplications-32.pb → duplications-22.pb} +0 -0
  362. /package/.scannerwork/scanner-report/{duplications-33.pb → duplications-23.pb} +0 -0
  363. /package/.scannerwork/scanner-report/{duplications-34.pb → duplications-25.pb} +0 -0
  364. /package/.scannerwork/scanner-report/{duplications-35.pb → duplications-27.pb} +0 -0
  365. /package/.scannerwork/scanner-report/{duplications-38.pb → duplications-28.pb} +0 -0
  366. /package/.scannerwork/scanner-report/{duplications-3.pb → duplications-29.pb} +0 -0
  367. /package/.scannerwork/scanner-report/{duplications-4.pb → duplications-44.pb} +0 -0
  368. /package/.scannerwork/scanner-report/{duplications-59.pb → duplications-45.pb} +0 -0
  369. /package/.scannerwork/scanner-report/{duplications-60.pb → duplications-46.pb} +0 -0
  370. /package/.scannerwork/scanner-report/{duplications-61.pb → duplications-47.pb} +0 -0
  371. /package/.scannerwork/scanner-report/{issues-15.pb → issues-28.pb} +0 -0
  372. /package/.scannerwork/scanner-report/{issues-4.pb → issues-42.pb} +0 -0
  373. /package/.scannerwork/scanner-report/{issues-19.pb → issues-45.pb} +0 -0
  374. /package/.scannerwork/scanner-report/{issues-16.pb → issues-52.pb} +0 -0
  375. /package/.scannerwork/scanner-report/{measures-65.pb → measures-23.pb} +0 -0
  376. /package/.scannerwork/scanner-report/{measures-32.pb → measures-27.pb} +0 -0
  377. /package/.scannerwork/scanner-report/{measures-3.pb → measures-29.pb} +0 -0
  378. /package/.scannerwork/scanner-report/{measures-31.pb → measures-44.pb} +0 -0
  379. /package/.scannerwork/scanner-report/{measures-34.pb → measures-47.pb} +0 -0
  380. /package/.scannerwork/scanner-report/{measures-37.pb → measures-68.pb} +0 -0
  381. /package/.scannerwork/scanner-report/{source-65.txt → source-23.txt} +0 -0
  382. /package/.scannerwork/scanner-report/{source-32.txt → source-27.txt} +0 -0
  383. /package/.scannerwork/scanner-report/{source-3.txt → source-29.txt} +0 -0
  384. /package/.scannerwork/scanner-report/{source-31.txt → source-44.txt} +0 -0
  385. /package/.scannerwork/scanner-report/{source-34.txt → source-47.txt} +0 -0
  386. /package/.scannerwork/scanner-report/{symbols-65.pb → symbols-23.pb} +0 -0
  387. /package/.scannerwork/scanner-report/{symbols-32.pb → symbols-27.pb} +0 -0
  388. /package/.scannerwork/scanner-report/{symbols-3.pb → symbols-29.pb} +0 -0
  389. /package/.scannerwork/scanner-report/{symbols-31.pb → symbols-44.pb} +0 -0
  390. /package/.scannerwork/scanner-report/{symbols-34.pb → symbols-47.pb} +0 -0
  391. /package/.scannerwork/scanner-report/{syntax-highlightings-65.pb → syntax-highlightings-23.pb} +0 -0
  392. /package/.scannerwork/scanner-report/{syntax-highlightings-32.pb → syntax-highlightings-27.pb} +0 -0
  393. /package/.scannerwork/scanner-report/{syntax-highlightings-3.pb → syntax-highlightings-29.pb} +0 -0
  394. /package/.scannerwork/scanner-report/{syntax-highlightings-31.pb → syntax-highlightings-44.pb} +0 -0
  395. /package/.scannerwork/scanner-report/{syntax-highlightings-34.pb → syntax-highlightings-47.pb} +0 -0
@@ -0,0 +1,131 @@
1
+ // Copyright © 2017 IBM Corp. All rights reserved.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ /* global describe it */
16
+ 'use strict';
17
+
18
+ const fs = require('fs');
19
+ const u = require('./citestutils.js');
20
+
21
+ [{ useApi: true }, { useApi: false }].forEach(function(params) {
22
+ describe(u.scenario('Basic backup and restore', params), function() {
23
+ it('should backup animaldb to a file correctly', function(done) {
24
+ // Allow up to 40 s to backup and compare (it should be much faster)!
25
+ u.setTimeout(this, 40);
26
+ const actualBackup = `./${this.fileName}`;
27
+ // Create a file and backup to it
28
+ const output = fs.createWriteStream(actualBackup);
29
+ output.on('open', function() {
30
+ u.testBackup(params, 'animaldb', output, function(err) {
31
+ if (err) {
32
+ done(err);
33
+ } else {
34
+ u.readSortAndDeepEqual(actualBackup, './test/fixtures/animaldb_expected.json', done);
35
+ }
36
+ });
37
+ });
38
+ });
39
+
40
+ it('should restore animaldb to a database correctly', function(done) {
41
+ // Allow up to 60 s to restore and compare (again it should be faster)!
42
+ u.setTimeout(this, 60);
43
+ const input = fs.createReadStream('./test/fixtures/animaldb_expected.json');
44
+ const dbName = this.dbName;
45
+ input.on('open', function() {
46
+ u.testRestore(params, input, dbName, function(err) {
47
+ if (err) {
48
+ done(err);
49
+ } else {
50
+ u.dbCompare('animaldb', dbName, done);
51
+ }
52
+ });
53
+ });
54
+ });
55
+
56
+ it('should execute a shallow mode backup successfully', function(done) {
57
+ // Allow 30 s
58
+ u.setTimeout(this, 30);
59
+ const actualBackup = `./${this.fileName}`;
60
+ const output = fs.createWriteStream(actualBackup);
61
+ // Add the shallow mode option
62
+ const p = u.p(params, { opts: { mode: 'shallow' } });
63
+ output.on('open', function() {
64
+ u.testBackup(p, 'animaldb', output, function(err) {
65
+ if (err) {
66
+ done(err);
67
+ } else {
68
+ u.readSortAndDeepEqual(actualBackup, './test/fixtures/animaldb_expected_shallow.json', done);
69
+ }
70
+ });
71
+ });
72
+ });
73
+
74
+ describe(u.scenario('Buffer size tests', params), function() {
75
+ it('should backup/restore animaldb with the same buffer size', function(done) {
76
+ // Allow up to 60 s for backup and restore of animaldb
77
+ u.setTimeout(this, 60);
78
+ const actualBackup = `./${this.fileName}`;
79
+ const logFile = `./${this.fileName}` + '.log';
80
+ const p = u.p(params, { opts: { log: logFile, bufferSize: 1 } });
81
+ u.testBackupAndRestoreViaFile(p, 'animaldb', actualBackup, this.dbName, done);
82
+ });
83
+ it('should backup/restore animaldb with backup buffer > restore buffer', function(done) {
84
+ // Allow up to 60 s for backup and restore of animaldb
85
+ u.setTimeout(this, 60);
86
+ const actualBackup = `./${this.fileName}`;
87
+ const logFile = `./${this.fileName}` + '.log';
88
+ const dbName = this.dbName;
89
+ const p = u.p(params, { opts: { log: logFile, bufferSize: 2 } }); // backup
90
+ const q = u.p(params, { opts: { bufferSize: 1 } }); // restore
91
+ u.testBackupToFile(p, 'animaldb', actualBackup, function(err) {
92
+ if (err) {
93
+ done(err);
94
+ } else {
95
+ // restore
96
+ u.testRestoreFromFile(q, actualBackup, dbName, function(err) {
97
+ if (!err) {
98
+ u.dbCompare('animaldb', dbName, done);
99
+ } else {
100
+ done(err);
101
+ }
102
+ });
103
+ }
104
+ });
105
+ });
106
+ it('should backup/restore animaldb with backup buffer < restore buffer', function(done) {
107
+ // Allow up to 60 s for backup and restore of animaldb
108
+ u.setTimeout(this, 60);
109
+ const actualBackup = `./${this.fileName}`;
110
+ const logFile = `./${this.fileName}` + '.log';
111
+ const dbName = this.dbName;
112
+ const p = u.p(params, { opts: { log: logFile, bufferSize: 1 } }); // backup
113
+ const q = u.p(params, { opts: { bufferSize: 2 } }); // restore
114
+ u.testBackupToFile(p, 'animaldb', actualBackup, function(err) {
115
+ if (err) {
116
+ done(err);
117
+ } else {
118
+ // restore
119
+ u.testRestoreFromFile(q, actualBackup, dbName, function(err) {
120
+ if (!err) {
121
+ u.dbCompare('animaldb', dbName, done);
122
+ } else {
123
+ done(err);
124
+ }
125
+ });
126
+ }
127
+ });
128
+ });
129
+ });
130
+ });
131
+ });
@@ -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.
@@ -12,164 +12,355 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
- // Small script which backs up a Cloudant or CouchDB database to an S3
16
- // bucket via a stream rather than on-disk file.
17
- //
18
- // The script generates the backup object name by combining together the path
19
- // part of the database URL and the current time.
20
-
15
+ /* global describe afterEach before after it */
21
16
  'use strict';
22
17
 
23
- const stream = require('stream');
24
- const url = require('url');
25
-
26
- const AWS = require('aws-sdk');
27
- const couchbackup = require('@cloudant/couchbackup');
28
- const debug = require('debug')('s3-backup');
29
- const VError = require('verror').VError;
30
-
31
- /*
32
- Main function, run from base of file.
33
- */
34
- function main() {
35
- const argv = require('yargs')
36
- .usage('Usage: $0 [options]')
37
- .example('$0 -s https://user:pass@host/db -b <bucket>', 'Backup db to bucket')
38
- .options({
39
- source: { alias: 's', nargs: 1, demandOption: true, describe: 'Source database URL' },
40
- bucket: { alias: 'b', nargs: 1, demandOption: true, describe: 'Destination bucket' },
41
- prefix: { alias: 'p', nargs: 1, describe: 'Prefix for backup object key', default: 'couchbackup' },
42
- s3url: { nargs: 1, describe: 'S3 endpoint URL' },
43
- awsprofile: { nargs: 1, describe: 'The profile section to use in the ~/.aws/credentials file', default: 'default' }
44
- })
45
- .help('h').alias('h', 'help')
46
- .epilog('Copyright (C) IBM 2017')
47
- .argv;
48
-
49
- const sourceUrl = argv.source;
50
- const backupName = new url.URL(sourceUrl).pathname.split('/').filter(function(x) { return x; }).join('-');
51
- const backupBucket = argv.bucket;
52
- const backupKeyPrefix = `${argv.prefix}-${backupName}`;
53
- const shallow = argv.shallow;
54
-
55
- const backupKey = `${backupKeyPrefix}-${new Date().toISOString()}`;
56
-
57
- const s3Endpoint = argv.s3url;
58
- const awsProfile = argv.awsprofile;
59
-
60
- // Creds are from ~/.aws/credentials, environment etc. (see S3 docs).
61
- const awsOpts = {
62
- signatureVersion: 'v4',
63
- credentials: new AWS.SharedIniFileCredentials({ profile: awsProfile })
64
- };
65
- if (typeof s3Endpoint !== 'undefined') {
66
- awsOpts.endpoint = new AWS.Endpoint(s3Endpoint);
67
- }
68
- const s3 = new AWS.S3(awsOpts);
69
-
70
- debug(`Creating a new backup of ${s(sourceUrl)} at ${backupBucket}/${backupKey}...`);
71
- bucketAccessible(s3, backupBucket)
72
- .then(() => {
73
- return backupToS3(sourceUrl, s3, backupBucket, backupKey, shallow);
74
- })
75
- .then(() => {
76
- debug('done.');
77
- })
78
- .catch((reason) => {
79
- debug(`Error: ${reason}`);
80
- process.exit(1);
81
- });
82
- }
83
-
84
- /**
85
- * Return a promise that resolves if the bucket is available and
86
- * rejects if not.
87
- *
88
- * @param {any} s3 S3 client object
89
- * @param {any} bucketName Bucket name
90
- * @returns Promise
91
- */
92
- function bucketAccessible(s3, bucketName) {
93
- return new Promise(function(resolve, reject) {
94
- const params = {
95
- Bucket: bucketName
96
- };
97
- s3.headBucket(params, function(err, data) {
98
- if (err) {
99
- reject(new VError(err, 'S3 bucket not accessible'));
100
- } else {
101
- resolve();
102
- }
18
+ const assert = require('assert');
19
+ const parser = require('../includes/parser.js');
20
+
21
+ describe('#unit Default parameters', function() {
22
+ let processEnvCopy;
23
+ let processArgvCopy;
24
+
25
+ before('Set process data for test', function() {
26
+ // Copy env and argv so we can reset them after the tests
27
+ processEnvCopy = JSON.parse(JSON.stringify(process.env));
28
+ processArgvCopy = JSON.parse(JSON.stringify(process.argv));
29
+
30
+ // setup environment variables
31
+ process.env.COUCH_URL = 'http://user:pass@myurl.com';
32
+ process.env.COUCH_DATABASE = 'mydb';
33
+ process.env.COUCH_BUFFER_SIZE = '1000';
34
+ process.env.COUCH_PARALLELISM = '20';
35
+ process.env.COUCH_REQUEST_TIMEOUT = '20000';
36
+ process.env.COUCH_LOG = 'my.log';
37
+ process.env.COUCH_RESUME = 'true';
38
+ process.env.COUCH_OUTPUT = 'myfile.txt';
39
+ process.env.COUCH_MODE = 'shallow';
40
+ process.env.CLOUDANT_IAM_API_KEY = 'ABC123-ZYX987_cba789-xyz321';
41
+ process.env.COUCH_QUIET = 'true';
42
+ });
43
+
44
+ after('Reset process data', function() {
45
+ process.env = processEnvCopy;
46
+ process.argv = processArgvCopy;
47
+ });
48
+
49
+ afterEach(function() {
50
+ delete require.cache[require.resolve('commander')];
51
+ });
52
+
53
+ describe('Backup command-line', function() {
54
+ it('respects the COUCH_URL env variable if the --url backup command-line parameter is missing', function(done) {
55
+ process.argv = ['node', 'test'];
56
+ const program = parser.parseBackupArgs();
57
+ assert.strictEqual(typeof program.url, 'string');
58
+ assert.strictEqual(program.url, process.env.COUCH_URL);
59
+ done();
60
+ });
61
+
62
+ it('respects the COUCH_DATABASE env variable if the --db backup command-line parameter is missing', function(done) {
63
+ process.argv = ['node', 'test'];
64
+ const program = parser.parseBackupArgs();
65
+ assert.strictEqual(typeof program.db, 'string');
66
+ assert.strictEqual(program.db, process.env.COUCH_DATABASE);
67
+ done();
68
+ });
69
+
70
+ it('respects the COUCH_BUFFER_SIZE env variable if the --buffer-size backup command-line parameter is missing', function(done) {
71
+ process.argv = ['node', 'test'];
72
+ const program = parser.parseBackupArgs();
73
+ assert.strictEqual(typeof program.bufferSize, 'number');
74
+ assert.strictEqual(program.bufferSize, parseInt(process.env.COUCH_BUFFER_SIZE, 10));
75
+ done();
76
+ });
77
+
78
+ it('respects the COUCH_PARALLELISM env variable if the --parallelism backup command-line parameter is missing', function(done) {
79
+ process.argv = ['node', 'test'];
80
+ const program = parser.parseBackupArgs();
81
+ assert.strictEqual(typeof program.parallelism, 'number');
82
+ assert.strictEqual(program.parallelism, parseInt(process.env.COUCH_PARALLELISM, 10));
83
+ done();
84
+ });
85
+
86
+ it('respects the COUCH_REQUEST_TIMEOUT env variable if the --request-timeout backup command-line parameter is missing', function(done) {
87
+ process.argv = ['node', 'test'];
88
+ const program = parser.parseBackupArgs();
89
+ assert.strictEqual(typeof program.requestTimeout, 'number');
90
+ assert.strictEqual(program.requestTimeout, parseInt(process.env.COUCH_REQUEST_TIMEOUT, 10));
91
+ done();
92
+ });
93
+
94
+ it('respects the CLOUDANT_IAM_API_KEY env variable if the --iam-api-key backup command-line parameter is missing', function(done) {
95
+ process.argv = ['node', 'test'];
96
+ const program = parser.parseBackupArgs();
97
+ assert.strictEqual(typeof program.iamApiKey, 'string');
98
+ assert.strictEqual(program.iamApiKey, process.env.CLOUDANT_IAM_API_KEY);
99
+ done();
100
+ });
101
+
102
+ it('respects the COUCH_LOG env variable if the --log backup command-line parameter is missing', function(done) {
103
+ process.argv = ['node', 'test'];
104
+ const program = parser.parseBackupArgs();
105
+ assert.strictEqual(typeof program.log, 'string');
106
+ assert.strictEqual(program.log, process.env.COUCH_LOG);
107
+ done();
108
+ });
109
+
110
+ it('respects the COUCH_RESUME env variable if the --resume backup command-line parameter is missing', function(done) {
111
+ process.argv = ['node', 'test'];
112
+ const program = parser.parseBackupArgs();
113
+ assert.strictEqual(typeof program.resume, 'boolean');
114
+ assert.strictEqual(program.resume, true);
115
+ done();
116
+ });
117
+
118
+ it('respects the COUCH_OUTPUT env variable if the --output backup command-line parameter is missing', function(done) {
119
+ process.argv = ['node', 'test'];
120
+ const program = parser.parseBackupArgs();
121
+ assert.strictEqual(typeof program.output, 'string');
122
+ assert.strictEqual(program.output, process.env.COUCH_OUTPUT);
123
+ done();
124
+ });
125
+
126
+ it('respects the COUCH_MODE env variable if the --mode backup command-line parameter is missing', function(done) {
127
+ process.argv = ['node', 'test'];
128
+ const program = parser.parseBackupArgs();
129
+ assert.strictEqual(typeof program.mode, 'string');
130
+ assert.strictEqual(program.mode, process.env.COUCH_MODE);
131
+ done();
132
+ });
133
+
134
+ it('respects the COUCH_QUIET env variable if the --quiet backup command-line parameter is missing', function(done) {
135
+ process.argv = ['node', 'test'];
136
+ const program = parser.parseBackupArgs();
137
+ assert.strictEqual(typeof program.quiet, 'boolean');
138
+ assert.strictEqual(program.quiet, true);
139
+ done();
140
+ });
141
+
142
+ it('respects the backup --url command-line parameter', function(done) {
143
+ const url = 'http://user:pass@myurl2.com';
144
+ process.argv = ['node', 'test', '--url', url];
145
+ const program = parser.parseBackupArgs();
146
+ assert.strictEqual(typeof program.url, 'string');
147
+ assert.strictEqual(program.url, url);
148
+ done();
149
+ });
150
+
151
+ it('respects the backup --db command-line parameter', function(done) {
152
+ const db = 'mydb2';
153
+ process.argv = ['node', 'test', '--db', db];
154
+ const program = parser.parseBackupArgs();
155
+ assert.strictEqual(typeof program.db, 'string');
156
+ assert.strictEqual(program.db, db);
157
+ done();
158
+ });
159
+
160
+ it('respects the backup --buffer-size command-line parameter', function(done) {
161
+ const bufferSize = 500;
162
+ process.argv = ['node', 'test', '--buffer-size', bufferSize];
163
+ const program = parser.parseBackupArgs();
164
+ assert.strictEqual(typeof program.bufferSize, 'number');
165
+ assert.strictEqual(program.bufferSize, bufferSize);
166
+ done();
167
+ });
168
+
169
+ it('respects the backup --parallelism command-line parameter', function(done) {
170
+ const parallelism = 10;
171
+ process.argv = ['node', 'test', '--parallelism', parallelism];
172
+ const program = parser.parseBackupArgs();
173
+ assert.strictEqual(typeof program.parallelism, 'number');
174
+ assert.strictEqual(program.parallelism, parallelism);
175
+ done();
176
+ });
177
+
178
+ it('respects the backup --request-timeout command-line parameter', function(done) {
179
+ const requestTimeout = 10000;
180
+ process.argv = ['node', 'test', '--request-timeout', requestTimeout];
181
+ const program = parser.parseBackupArgs();
182
+ assert.strictEqual(typeof program.requestTimeout, 'number');
183
+ assert.strictEqual(program.requestTimeout, requestTimeout);
184
+ done();
185
+ });
186
+
187
+ it('respects the backup --iam-api-key command-line parameter', function(done) {
188
+ const key = '123abc-789zyx_CBA987-XYZ321';
189
+ process.argv = ['node', 'test', '--iam-api-key', key];
190
+ const program = parser.parseBackupArgs();
191
+ assert.strictEqual(typeof program.iamApiKey, 'string');
192
+ assert.strictEqual(program.iamApiKey, key);
193
+ done();
194
+ });
195
+
196
+ it('respects the backup --log command-line parameter', function(done) {
197
+ const filename = 'my2.log';
198
+ process.argv = ['node', 'test', '--log', filename];
199
+ const program = parser.parseBackupArgs();
200
+ assert.strictEqual(typeof program.log, 'string');
201
+ assert.strictEqual(program.log, filename);
202
+ done();
203
+ });
204
+
205
+ it('respects the backup --resume command-line parameter', function(done) {
206
+ process.argv = ['node', 'test', '--resume'];
207
+ const program = parser.parseBackupArgs();
208
+ assert.strictEqual(typeof program.resume, 'boolean');
209
+ assert.strictEqual(program.resume, true);
210
+ done();
211
+ });
212
+
213
+ it('respects the backup --output command-line parameter', function(done) {
214
+ const filename = 'myfile2.txt';
215
+ process.argv = ['node', 'test', '--output', filename];
216
+ const program = parser.parseBackupArgs();
217
+ assert.strictEqual(typeof program.output, 'string');
218
+ assert.strictEqual(program.output, filename);
219
+ done();
220
+ });
221
+
222
+ it('respects the backup --mode full command-line parameter', function(done) {
223
+ process.argv = ['node', 'test', '--mode', 'full'];
224
+ const program = parser.parseBackupArgs();
225
+ assert.strictEqual(typeof program.mode, 'string');
226
+ assert.strictEqual(program.mode, 'full');
227
+ done();
228
+ });
229
+
230
+ it('respects the backup --mode shallow command-line parameter', function(done) {
231
+ process.argv = ['node', 'test', '--mode', 'shallow'];
232
+ const program = parser.parseBackupArgs();
233
+ assert.strictEqual(typeof program.mode, 'string');
234
+ assert.strictEqual(program.mode, 'shallow');
235
+ done();
236
+ });
237
+
238
+ it('respects the backup --quiet command-line parameter', function(done) {
239
+ process.argv = ['node', 'test', '--quiet'];
240
+ const program = parser.parseBackupArgs();
241
+ assert.strictEqual(typeof program.quiet, 'boolean');
242
+ assert.strictEqual(program.quiet, true);
243
+ done();
103
244
  });
104
245
  });
105
- }
106
-
107
- /**
108
- * Backup directly from Cloudant to an object store object via a stream.
109
- *
110
- * @param {any} sourceUrl URL of database
111
- * @param {any} s3Client Object store client
112
- * @param {any} s3Bucket Backup destination bucket
113
- * @param {any} s3Key Backup destination key name (shouldn't exist)
114
- * @param {any} shallow Whether to use the couchbackup `shallow` mode
115
- * @returns Promise
116
- */
117
- function backupToS3(sourceUrl, s3Client, s3Bucket, s3Key, shallow) {
118
- return new Promise((resolve, reject) => {
119
- debug(`Setting up S3 upload to ${s3Bucket}/${s3Key}`);
120
-
121
- // A pass through stream that has couchbackup's output
122
- // written to it and it then read by the S3 upload client.
123
- // It has a 64MB highwater mark to allow for fairly
124
- // uneven network connectivity.
125
- const streamToUpload = new stream.PassThrough({ highWaterMark: 67108864 });
126
-
127
- // Set up S3 upload.
128
- const params = {
129
- Bucket: s3Bucket,
130
- Key: s3Key,
131
- Body: streamToUpload
132
- };
133
- s3Client.upload(params, function(err, data) {
134
- debug('Object store upload done');
135
- if (err) {
136
- debug(err);
137
- reject(new VError(err, 'Object store upload failed'));
138
- return;
139
- }
140
- debug('Object store upload succeeded');
141
- debug(data);
142
- resolve();
143
- }).httpUploadProgress = (progress) => {
144
- debug(`Object store upload progress: ${progress}`);
145
- };
146
-
147
- debug(`Starting streaming data from ${s(sourceUrl)}`);
148
- couchbackup.backup(
149
- sourceUrl,
150
- streamToUpload,
151
- (err, obj) => {
152
- if (err) {
153
- debug(err);
154
- reject(new VError(err, 'CouchBackup failed with an error'));
155
- return;
156
- }
157
- debug(`Download from ${s(sourceUrl)} complete.`);
158
- streamToUpload.end(); // must call end() to complete upload.
159
- // resolve() is called by the upload
160
- }
161
- );
246
+
247
+ describe('Restore command-line', function() {
248
+ it('respects the COUCH_URL env variable if the --url restore command-line parameter is missing', function(done) {
249
+ process.argv = ['node', 'test'];
250
+ const program = parser.parseRestoreArgs();
251
+ assert.strictEqual(typeof program.url, 'string');
252
+ assert.strictEqual(program.url, process.env.COUCH_URL);
253
+ done();
254
+ });
255
+
256
+ it('respects the COUCH_DATABASE env variable if the --db restore command-line parameter is missing', function(done) {
257
+ process.argv = ['node', 'test'];
258
+ const program = parser.parseRestoreArgs();
259
+ assert.strictEqual(typeof program.db, 'string');
260
+ assert.strictEqual(program.db, process.env.COUCH_DATABASE);
261
+ done();
262
+ });
263
+
264
+ it('respects the COUCH_BUFFER_SIZE env variable if the --buffer-size restore command-line parameter is missing', function(done) {
265
+ process.argv = ['node', 'test'];
266
+ const program = parser.parseRestoreArgs();
267
+ assert.strictEqual(typeof program.bufferSize, 'number');
268
+ assert.strictEqual(program.bufferSize, parseInt(process.env.COUCH_BUFFER_SIZE, 10));
269
+ done();
270
+ });
271
+
272
+ it('respects the COUCH_PARALLELISM env variable if the --parallelism restore command-line parameter is missing', function(done) {
273
+ process.argv = ['node', 'test'];
274
+ const program = parser.parseRestoreArgs();
275
+ assert.strictEqual(typeof program.parallelism, 'number');
276
+ assert.strictEqual(program.parallelism, parseInt(process.env.COUCH_PARALLELISM, 10));
277
+ done();
278
+ });
279
+
280
+ it('respects the COUCH_REQUEST_TIMEOUT env variable if the --request-timeout restore command-line parameter is missing', function(done) {
281
+ process.argv = ['node', 'test'];
282
+ const program = parser.parseRestoreArgs();
283
+ assert.strictEqual(typeof program.requestTimeout, 'number');
284
+ assert.strictEqual(program.requestTimeout, parseInt(process.env.COUCH_REQUEST_TIMEOUT, 10));
285
+ done();
286
+ });
287
+
288
+ it('respects the CLOUDANT_IAM_API_KEY env variable if the --iam-api-key restore command-line parameter is missing', function(done) {
289
+ process.argv = ['node', 'test'];
290
+ const program = parser.parseRestoreArgs();
291
+ assert.strictEqual(typeof program.iamApiKey, 'string');
292
+ assert.strictEqual(program.iamApiKey, process.env.CLOUDANT_IAM_API_KEY);
293
+ done();
294
+ });
295
+
296
+ it('respects the COUCH_QUIET env variable if the --quiet restorer command-line parameter is missing', function(done) {
297
+ process.argv = ['node', 'test'];
298
+ const program = parser.parseBackupArgs();
299
+ assert.strictEqual(typeof program.quiet, 'boolean');
300
+ assert.strictEqual(program.quiet, true);
301
+ done();
302
+ });
303
+
304
+ it('respects the restore --url command-line parameter', function(done) {
305
+ const url = 'https://a:b@myurl3.com';
306
+ process.argv = ['node', 'test', '--url', url];
307
+ const program = parser.parseRestoreArgs();
308
+ assert.strictEqual(typeof program.url, 'string');
309
+ assert.strictEqual(program.url, url);
310
+ done();
311
+ });
312
+
313
+ it('respects the restore --db command-line parameter', function(done) {
314
+ const db = 'mydb3';
315
+ process.argv = ['node', 'test', '--db', db];
316
+ const program = parser.parseRestoreArgs();
317
+ assert.strictEqual(typeof program.db, 'string');
318
+ assert.strictEqual(program.db, db);
319
+ done();
320
+ });
321
+
322
+ it('respects the restore --buffer-size command-line parameter', function(done) {
323
+ const bufferSize = 250;
324
+ process.argv = ['node', 'test', '--buffer-size', bufferSize];
325
+ const program = parser.parseRestoreArgs();
326
+ assert.strictEqual(typeof program.bufferSize, 'number');
327
+ assert.strictEqual(program.bufferSize, bufferSize);
328
+ done();
329
+ });
330
+
331
+ it('respects the restore --parallelism command-line parameter', function(done) {
332
+ const parallelism = 5;
333
+ process.argv = ['node', 'test', '--parallelism', parallelism];
334
+ const program = parser.parseRestoreArgs();
335
+ assert.strictEqual(typeof program.parallelism, 'number');
336
+ assert.strictEqual(program.parallelism, parallelism);
337
+ done();
338
+ });
339
+
340
+ it('respects the restore --request-timeout command-line parameter', function(done) {
341
+ const requestTimeout = 10000;
342
+ process.argv = ['node', 'test', '--request-timeout', requestTimeout];
343
+ const program = parser.parseRestoreArgs();
344
+ assert.strictEqual(typeof program.requestTimeout, 'number');
345
+ assert.strictEqual(program.requestTimeout, requestTimeout);
346
+ done();
347
+ });
348
+
349
+ it('respects the restore --iam-api-key command-line parameter', function(done) {
350
+ const key = '123abc-789zyx_CBA987-XYZ321';
351
+ process.argv = ['node', 'test', '--iam-api-key', key];
352
+ const program = parser.parseRestoreArgs();
353
+ assert.strictEqual(typeof program.iamApiKey, 'string');
354
+ assert.strictEqual(program.iamApiKey, key);
355
+ done();
356
+ });
357
+
358
+ it('respects the restore --quiet command-line parameter', function(done) {
359
+ process.argv = ['node', 'test', '--quiet'];
360
+ const program = parser.parseRestoreArgs();
361
+ assert.strictEqual(typeof program.quiet, 'boolean');
362
+ assert.strictEqual(program.quiet, true);
363
+ done();
364
+ });
162
365
  });
163
- }
164
-
165
- /**
166
- * Remove creds from a URL, e.g., before logging
167
- *
168
- * @param {string} url URL to safen
169
- */
170
- function s(originalUrl) {
171
- const parts = new url.URL(originalUrl);
172
- return url.format(parts, { auth: false });
173
- }
174
-
175
- main();
366
+ });