@cloudant/couchbackup 2.9.14 → 2.9.15-SNAPSHOT.162

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 (379) hide show
  1. package/.scannerwork/report-task.txt +2 -2
  2. package/.scannerwork/scanner-report/analysis-warnings.pb +2 -2
  3. package/.scannerwork/scanner-report/changesets-31.pb +1 -0
  4. package/.scannerwork/scanner-report/changesets-32.pb +1 -0
  5. package/.scannerwork/scanner-report/changesets-33.pb +1 -0
  6. package/.scannerwork/scanner-report/changesets-34.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-35.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-36.pb +1 -0
  9. package/.scannerwork/scanner-report/changesets-4.pb +1 -0
  10. package/.scannerwork/scanner-report/changesets-45.pb +1 -0
  11. package/.scannerwork/scanner-report/changesets-46.pb +1 -0
  12. package/.scannerwork/scanner-report/changesets-47.pb +1 -0
  13. package/.scannerwork/scanner-report/changesets-48.pb +1 -0
  14. package/.scannerwork/scanner-report/changesets-63.pb +1 -0
  15. package/.scannerwork/scanner-report/changesets-64.pb +1 -0
  16. package/.scannerwork/scanner-report/changesets-65.pb +1 -0
  17. package/.scannerwork/scanner-report/changesets-66.pb +1 -0
  18. package/.scannerwork/scanner-report/changesets-67.pb +1 -0
  19. package/.scannerwork/scanner-report/component-1.pb +3 -2
  20. package/.scannerwork/scanner-report/component-10.pb +1 -1
  21. package/.scannerwork/scanner-report/component-13.pb +1 -1
  22. package/.scannerwork/scanner-report/component-15.pb +1 -1
  23. package/.scannerwork/scanner-report/component-16.pb +1 -1
  24. package/.scannerwork/scanner-report/component-18.pb +1 -1
  25. package/.scannerwork/scanner-report/component-31.pb +1 -0
  26. package/.scannerwork/scanner-report/component-32.pb +1 -0
  27. package/.scannerwork/scanner-report/component-33.pb +1 -0
  28. package/.scannerwork/scanner-report/component-34.pb +1 -0
  29. package/.scannerwork/scanner-report/component-35.pb +1 -0
  30. package/.scannerwork/scanner-report/component-36.pb +1 -0
  31. package/.scannerwork/scanner-report/component-37.pb +1 -1
  32. package/.scannerwork/scanner-report/component-39.pb +1 -1
  33. package/.scannerwork/scanner-report/component-4.pb +1 -0
  34. package/.scannerwork/scanner-report/component-40.pb +1 -1
  35. package/.scannerwork/scanner-report/component-41.pb +1 -1
  36. package/.scannerwork/scanner-report/component-42.pb +1 -1
  37. package/.scannerwork/scanner-report/component-43.pb +1 -1
  38. package/.scannerwork/scanner-report/component-44.pb +1 -1
  39. package/.scannerwork/scanner-report/component-45.pb +1 -0
  40. package/.scannerwork/scanner-report/component-46.pb +1 -0
  41. package/.scannerwork/scanner-report/component-47.pb +1 -0
  42. package/.scannerwork/scanner-report/component-48.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-51.pb +1 -1
  46. package/.scannerwork/scanner-report/component-53.pb +1 -1
  47. package/.scannerwork/scanner-report/component-55.pb +1 -1
  48. package/.scannerwork/scanner-report/component-56.pb +1 -1
  49. package/.scannerwork/scanner-report/component-57.pb +1 -1
  50. package/.scannerwork/scanner-report/component-58.pb +1 -1
  51. package/.scannerwork/scanner-report/component-59.pb +1 -1
  52. package/.scannerwork/scanner-report/component-6.pb +1 -1
  53. package/.scannerwork/scanner-report/component-60.pb +1 -1
  54. package/.scannerwork/scanner-report/component-61.pb +1 -1
  55. package/.scannerwork/scanner-report/component-62.pb +1 -1
  56. package/.scannerwork/scanner-report/component-63.pb +1 -0
  57. package/.scannerwork/scanner-report/component-64.pb +1 -0
  58. package/.scannerwork/scanner-report/component-65.pb +1 -0
  59. package/.scannerwork/scanner-report/component-66.pb +1 -0
  60. package/.scannerwork/scanner-report/component-67.pb +1 -1
  61. package/.scannerwork/scanner-report/coverages-10.pb +0 -0
  62. package/.scannerwork/scanner-report/coverages-13.pb +0 -0
  63. package/.scannerwork/scanner-report/coverages-15.pb +0 -0
  64. package/.scannerwork/scanner-report/coverages-16.pb +0 -0
  65. package/.scannerwork/scanner-report/coverages-18.pb +0 -0
  66. package/.scannerwork/scanner-report/coverages-31.pb +0 -0
  67. package/.scannerwork/scanner-report/coverages-32.pb +0 -0
  68. package/.scannerwork/scanner-report/coverages-33.pb +0 -0
  69. package/.scannerwork/scanner-report/coverages-34.pb +0 -0
  70. package/.scannerwork/scanner-report/coverages-37.pb +0 -0
  71. package/.scannerwork/scanner-report/coverages-39.pb +0 -0
  72. package/.scannerwork/scanner-report/coverages-40.pb +0 -0
  73. package/.scannerwork/scanner-report/coverages-41.pb +0 -0
  74. package/.scannerwork/scanner-report/coverages-42.pb +0 -0
  75. package/.scannerwork/scanner-report/coverages-43.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-44.pb +0 -0
  77. package/.scannerwork/scanner-report/{coverages-21.pb → coverages-45.pb} +0 -0
  78. package/.scannerwork/scanner-report/coverages-47.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-48.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-49.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-50.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-53.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-55.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-56.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-57.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-58.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-59.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-60.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-61.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-62.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-63.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-64.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-65.pb +0 -0
  94. package/.scannerwork/scanner-report/coverages-67.pb +0 -0
  95. package/.scannerwork/scanner-report/duplications-10.pb +2 -0
  96. package/.scannerwork/scanner-report/duplications-13.pb +3 -0
  97. package/.scannerwork/scanner-report/duplications-16.pb +3 -0
  98. package/.scannerwork/scanner-report/duplications-32.pb +2 -0
  99. package/.scannerwork/scanner-report/duplications-42.pb +2 -2
  100. package/.scannerwork/scanner-report/duplications-43.pb +0 -2
  101. package/.scannerwork/scanner-report/duplications-44.pb +0 -2
  102. package/.scannerwork/scanner-report/duplications-53.pb +0 -2
  103. package/.scannerwork/scanner-report/duplications-65.pb +2 -0
  104. package/.scannerwork/scanner-report/duplications-66.pb +2 -0
  105. package/.scannerwork/scanner-report/measures-10.pb +0 -0
  106. package/.scannerwork/scanner-report/measures-13.pb +0 -0
  107. package/.scannerwork/scanner-report/measures-15.pb +0 -0
  108. package/.scannerwork/scanner-report/measures-16.pb +0 -0
  109. package/.scannerwork/scanner-report/measures-18.pb +0 -0
  110. package/.scannerwork/scanner-report/measures-31.pb +0 -0
  111. package/.scannerwork/scanner-report/measures-32.pb +0 -0
  112. package/.scannerwork/scanner-report/measures-33.pb +0 -0
  113. package/.scannerwork/scanner-report/measures-34.pb +0 -0
  114. package/.scannerwork/scanner-report/measures-37.pb +0 -0
  115. package/.scannerwork/scanner-report/measures-39.pb +0 -0
  116. package/.scannerwork/scanner-report/measures-40.pb +0 -0
  117. package/.scannerwork/scanner-report/measures-41.pb +0 -0
  118. package/.scannerwork/scanner-report/measures-42.pb +0 -0
  119. package/.scannerwork/scanner-report/measures-43.pb +0 -0
  120. package/.scannerwork/scanner-report/measures-44.pb +0 -0
  121. package/.scannerwork/scanner-report/measures-45.pb +0 -0
  122. package/.scannerwork/scanner-report/measures-47.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-48.pb +0 -0
  124. package/.scannerwork/scanner-report/measures-49.pb +0 -0
  125. package/.scannerwork/scanner-report/measures-50.pb +0 -0
  126. package/.scannerwork/scanner-report/measures-51.pb +0 -0
  127. package/.scannerwork/scanner-report/measures-53.pb +0 -0
  128. package/.scannerwork/scanner-report/measures-55.pb +0 -0
  129. package/.scannerwork/scanner-report/measures-56.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-57.pb +0 -0
  131. package/.scannerwork/scanner-report/measures-58.pb +0 -0
  132. package/.scannerwork/scanner-report/measures-59.pb +0 -0
  133. package/.scannerwork/scanner-report/measures-6.pb +0 -0
  134. package/.scannerwork/scanner-report/measures-60.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-62.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-63.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-64.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-65.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-66.pb +0 -0
  141. package/.scannerwork/scanner-report/measures-67.pb +0 -0
  142. package/.scannerwork/scanner-report/metadata.pb +0 -0
  143. package/.scannerwork/scanner-report/source-10.txt +170 -80
  144. package/.scannerwork/scanner-report/source-13.txt +141 -415
  145. package/.scannerwork/scanner-report/source-15.txt +18 -77
  146. package/.scannerwork/scanner-report/source-16.txt +192 -20
  147. package/.scannerwork/scanner-report/source-18.txt +169 -15
  148. package/.scannerwork/scanner-report/source-31.txt +100 -0
  149. package/.scannerwork/scanner-report/source-32.txt +183 -0
  150. package/.scannerwork/scanner-report/source-33.txt +101 -0
  151. package/.scannerwork/scanner-report/source-34.txt +37 -0
  152. package/.scannerwork/scanner-report/source-37.txt +12 -55
  153. package/.scannerwork/scanner-report/source-39.txt +15 -267
  154. package/.scannerwork/scanner-report/source-40.txt +104 -165
  155. package/.scannerwork/scanner-report/source-41.txt +136 -115
  156. package/.scannerwork/scanner-report/source-42.txt +157 -153
  157. package/.scannerwork/scanner-report/source-43.txt +262 -148
  158. package/.scannerwork/scanner-report/source-44.txt +23 -173
  159. package/.scannerwork/scanner-report/{source-21.txt → source-45.txt} +10 -9
  160. package/.scannerwork/scanner-report/source-47.txt +75 -0
  161. package/.scannerwork/scanner-report/source-48.txt +449 -0
  162. package/.scannerwork/scanner-report/source-49.txt +42 -41
  163. package/.scannerwork/scanner-report/source-50.txt +57 -89
  164. package/.scannerwork/scanner-report/source-51.txt +424 -75
  165. package/.scannerwork/scanner-report/source-53.txt +390 -68
  166. package/.scannerwork/scanner-report/source-55.txt +145 -110
  167. package/.scannerwork/scanner-report/source-56.txt +88 -23
  168. package/.scannerwork/scanner-report/source-57.txt +55 -256
  169. package/.scannerwork/scanner-report/source-58.txt +90 -88
  170. package/.scannerwork/scanner-report/source-59.txt +14 -24
  171. package/.scannerwork/scanner-report/source-6.txt +102 -60
  172. package/.scannerwork/scanner-report/source-60.txt +103 -92
  173. package/.scannerwork/scanner-report/source-61.txt +24 -14
  174. package/.scannerwork/scanner-report/source-62.txt +40 -61
  175. package/.scannerwork/scanner-report/source-63.txt +118 -0
  176. package/.scannerwork/scanner-report/source-64.txt +46 -0
  177. package/.scannerwork/scanner-report/source-65.txt +92 -0
  178. package/.scannerwork/scanner-report/source-66.txt +75 -0
  179. package/.scannerwork/scanner-report/source-67.txt +281 -424
  180. package/.scannerwork/scanner-report/symbols-10.pb +180 -69
  181. package/.scannerwork/scanner-report/symbols-13.pb +140 -777
  182. package/.scannerwork/scanner-report/symbols-15.pb +19 -58
  183. package/.scannerwork/scanner-report/symbols-16.pb +264 -31
  184. package/.scannerwork/scanner-report/symbols-18.pb +209 -9
  185. package/.scannerwork/scanner-report/symbols-31.pb +69 -0
  186. package/.scannerwork/scanner-report/symbols-32.pb +203 -0
  187. package/.scannerwork/scanner-report/symbols-33.pb +58 -0
  188. package/.scannerwork/scanner-report/symbols-34.pb +9 -0
  189. package/.scannerwork/scanner-report/symbols-37.pb +8 -38
  190. package/.scannerwork/scanner-report/symbols-39.pb +13 -421
  191. package/.scannerwork/scanner-report/symbols-40.pb +86 -209
  192. package/.scannerwork/scanner-report/symbols-41.pb +93 -86
  193. package/.scannerwork/scanner-report/symbols-42.pb +209 -185
  194. package/.scannerwork/scanner-report/symbols-43.pb +420 -152
  195. package/.scannerwork/scanner-report/symbols-44.pb +23 -180
  196. package/.scannerwork/scanner-report/symbols-45.pb +31 -0
  197. package/.scannerwork/scanner-report/symbols-47.pb +39 -0
  198. package/.scannerwork/scanner-report/symbols-48.pb +790 -0
  199. package/.scannerwork/scanner-report/symbols-49.pb +21 -19
  200. package/.scannerwork/scanner-report/symbols-50.pb +32 -46
  201. package/.scannerwork/scanner-report/symbols-53.pb +604 -44
  202. package/.scannerwork/scanner-report/symbols-55.pb +125 -32
  203. package/.scannerwork/scanner-report/symbols-56.pb +58 -19
  204. package/.scannerwork/scanner-report/symbols-57.pb +46 -354
  205. package/.scannerwork/scanner-report/symbols-58.pb +45 -58
  206. package/.scannerwork/scanner-report/symbols-59.pb +13 -17
  207. package/.scannerwork/scanner-report/symbols-60.pb +32 -29
  208. package/.scannerwork/scanner-report/symbols-61.pb +17 -13
  209. package/.scannerwork/scanner-report/symbols-62.pb +18 -45
  210. package/.scannerwork/scanner-report/symbols-63.pb +30 -0
  211. package/.scannerwork/scanner-report/symbols-64.pb +20 -0
  212. package/.scannerwork/scanner-report/symbols-65.pb +44 -0
  213. package/.scannerwork/scanner-report/symbols-67.pb +354 -0
  214. package/.scannerwork/scanner-report/syntax-highlightings-10.pb +187 -69
  215. package/.scannerwork/scanner-report/syntax-highlightings-13.pb +140 -551
  216. package/.scannerwork/scanner-report/syntax-highlightings-15.pb +24 -112
  217. package/.scannerwork/scanner-report/syntax-highlightings-16.pb +258 -31
  218. package/.scannerwork/scanner-report/syntax-highlightings-18.pb +254 -25
  219. package/.scannerwork/scanner-report/syntax-highlightings-31.pb +107 -0
  220. package/.scannerwork/scanner-report/syntax-highlightings-32.pb +280 -0
  221. package/.scannerwork/scanner-report/syntax-highlightings-33.pb +154 -0
  222. package/.scannerwork/scanner-report/syntax-highlightings-34.pb +61 -0
  223. package/.scannerwork/scanner-report/syntax-highlightings-37.pb +18 -65
  224. package/.scannerwork/scanner-report/syntax-highlightings-39.pb +27 -673
  225. package/.scannerwork/scanner-report/syntax-highlightings-40.pb +88 -253
  226. package/.scannerwork/scanner-report/syntax-highlightings-41.pb +202 -90
  227. package/.scannerwork/scanner-report/syntax-highlightings-42.pb +273 -185
  228. package/.scannerwork/scanner-report/syntax-highlightings-43.pb +663 -169
  229. package/.scannerwork/scanner-report/syntax-highlightings-44.pb +23 -192
  230. package/.scannerwork/scanner-report/syntax-highlightings-45.pb +69 -0
  231. package/.scannerwork/scanner-report/syntax-highlightings-47.pb +101 -0
  232. package/.scannerwork/scanner-report/syntax-highlightings-48.pb +625 -0
  233. package/.scannerwork/scanner-report/syntax-highlightings-49.pb +59 -38
  234. package/.scannerwork/scanner-report/syntax-highlightings-50.pb +79 -107
  235. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +3329 -67
  236. package/.scannerwork/scanner-report/syntax-highlightings-53.pb +610 -59
  237. package/.scannerwork/scanner-report/syntax-highlightings-55.pb +170 -86
  238. package/.scannerwork/scanner-report/syntax-highlightings-56.pb +98 -29
  239. package/.scannerwork/scanner-report/syntax-highlightings-57.pb +55 -245
  240. package/.scannerwork/scanner-report/syntax-highlightings-58.pb +89 -96
  241. package/.scannerwork/scanner-report/syntax-highlightings-59.pb +16 -21
  242. package/.scannerwork/scanner-report/syntax-highlightings-6.pb +668 -56
  243. package/.scannerwork/scanner-report/syntax-highlightings-60.pb +91 -75
  244. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +21 -16
  245. package/.scannerwork/scanner-report/syntax-highlightings-62.pb +26 -62
  246. package/.scannerwork/scanner-report/syntax-highlightings-63.pb +113 -0
  247. package/.scannerwork/scanner-report/syntax-highlightings-64.pb +64 -0
  248. package/.scannerwork/scanner-report/syntax-highlightings-65.pb +90 -0
  249. package/.scannerwork/scanner-report/syntax-highlightings-66.pb +78 -0
  250. package/.scannerwork/scanner-report/syntax-highlightings-67.pb +199 -3256
  251. package/package.json +1 -1
  252. package/test-18-results.xml +175 -175
  253. package/test-iam-18-results.xml +49 -49
  254. package/.scannerwork/scanner-report/changesets-11.pb +0 -1
  255. package/.scannerwork/scanner-report/changesets-12.pb +0 -1
  256. package/.scannerwork/scanner-report/changesets-14.pb +0 -1
  257. package/.scannerwork/scanner-report/changesets-20.pb +0 -1
  258. package/.scannerwork/scanner-report/changesets-21.pb +0 -1
  259. package/.scannerwork/scanner-report/changesets-22.pb +0 -1
  260. package/.scannerwork/scanner-report/changesets-23.pb +0 -1
  261. package/.scannerwork/scanner-report/changesets-24.pb +0 -1
  262. package/.scannerwork/scanner-report/changesets-25.pb +0 -1
  263. package/.scannerwork/scanner-report/changesets-5.pb +0 -1
  264. package/.scannerwork/scanner-report/changesets-51.pb +0 -1
  265. package/.scannerwork/scanner-report/changesets-52.pb +0 -1
  266. package/.scannerwork/scanner-report/changesets-6.pb +0 -1
  267. package/.scannerwork/scanner-report/changesets-7.pb +0 -1
  268. package/.scannerwork/scanner-report/changesets-8.pb +0 -1
  269. package/.scannerwork/scanner-report/changesets-9.pb +0 -1
  270. package/.scannerwork/scanner-report/component-11.pb +0 -1
  271. package/.scannerwork/scanner-report/component-12.pb +0 -1
  272. package/.scannerwork/scanner-report/component-14.pb +0 -1
  273. package/.scannerwork/scanner-report/component-2.pb +0 -1
  274. package/.scannerwork/scanner-report/component-20.pb +0 -1
  275. package/.scannerwork/scanner-report/component-21.pb +0 -1
  276. package/.scannerwork/scanner-report/component-22.pb +0 -1
  277. package/.scannerwork/scanner-report/component-23.pb +0 -1
  278. package/.scannerwork/scanner-report/component-24.pb +0 -1
  279. package/.scannerwork/scanner-report/component-25.pb +0 -1
  280. package/.scannerwork/scanner-report/component-5.pb +0 -1
  281. package/.scannerwork/scanner-report/component-52.pb +0 -1
  282. package/.scannerwork/scanner-report/component-7.pb +0 -1
  283. package/.scannerwork/scanner-report/component-8.pb +0 -1
  284. package/.scannerwork/scanner-report/component-9.pb +0 -1
  285. package/.scannerwork/scanner-report/coverages-11.pb +0 -0
  286. package/.scannerwork/scanner-report/coverages-12.pb +0 -0
  287. package/.scannerwork/scanner-report/coverages-20.pb +0 -0
  288. package/.scannerwork/scanner-report/coverages-23.pb +0 -0
  289. package/.scannerwork/scanner-report/coverages-25.pb +0 -0
  290. package/.scannerwork/scanner-report/coverages-5.pb +0 -0
  291. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  292. package/.scannerwork/scanner-report/coverages-6.pb +0 -0
  293. package/.scannerwork/scanner-report/coverages-7.pb +0 -0
  294. package/.scannerwork/scanner-report/coverages-9.pb +0 -0
  295. package/.scannerwork/scanner-report/duplications-23.pb +0 -3
  296. package/.scannerwork/scanner-report/duplications-51.pb +0 -2
  297. package/.scannerwork/scanner-report/duplications-9.pb +0 -2
  298. package/.scannerwork/scanner-report/measures-11.pb +0 -15
  299. package/.scannerwork/scanner-report/measures-12.pb +0 -0
  300. package/.scannerwork/scanner-report/measures-2.pb +0 -0
  301. package/.scannerwork/scanner-report/measures-20.pb +0 -0
  302. package/.scannerwork/scanner-report/measures-21.pb +0 -0
  303. package/.scannerwork/scanner-report/measures-23.pb +0 -0
  304. package/.scannerwork/scanner-report/measures-25.pb +0 -0
  305. package/.scannerwork/scanner-report/measures-5.pb +0 -0
  306. package/.scannerwork/scanner-report/measures-52.pb +0 -0
  307. package/.scannerwork/scanner-report/measures-7.pb +0 -0
  308. package/.scannerwork/scanner-report/measures-9.pb +0 -0
  309. package/.scannerwork/scanner-report/source-11.txt +0 -151
  310. package/.scannerwork/scanner-report/source-12.txt +0 -37
  311. package/.scannerwork/scanner-report/source-2.txt +0 -102
  312. package/.scannerwork/scanner-report/source-20.txt +0 -32
  313. package/.scannerwork/scanner-report/source-23.txt +0 -213
  314. package/.scannerwork/scanner-report/source-25.txt +0 -42
  315. package/.scannerwork/scanner-report/source-5.txt +0 -414
  316. package/.scannerwork/scanner-report/source-52.txt +0 -164
  317. package/.scannerwork/scanner-report/source-7.txt +0 -81
  318. package/.scannerwork/scanner-report/source-9.txt +0 -187
  319. package/.scannerwork/scanner-report/symbols-11.pb +0 -93
  320. package/.scannerwork/scanner-report/symbols-12.pb +0 -13
  321. package/.scannerwork/scanner-report/symbols-20.pb +0 -9
  322. package/.scannerwork/scanner-report/symbols-21.pb +0 -23
  323. package/.scannerwork/scanner-report/symbols-23.pb +0 -264
  324. package/.scannerwork/scanner-report/symbols-25.pb +0 -19
  325. package/.scannerwork/scanner-report/symbols-5.pb +0 -604
  326. package/.scannerwork/scanner-report/symbols-52.pb +0 -126
  327. package/.scannerwork/scanner-report/symbols-6.pb +0 -21
  328. package/.scannerwork/scanner-report/symbols-7.pb +0 -32
  329. package/.scannerwork/scanner-report/symbols-9.pb +0 -227
  330. package/.scannerwork/scanner-report/syntax-highlightings-11.pb +0 -237
  331. package/.scannerwork/scanner-report/syntax-highlightings-12.pb +0 -62
  332. package/.scannerwork/scanner-report/syntax-highlightings-2.pb +0 -692
  333. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +0 -54
  334. package/.scannerwork/scanner-report/syntax-highlightings-21.pb +0 -56
  335. package/.scannerwork/scanner-report/syntax-highlightings-23.pb +0 -296
  336. package/.scannerwork/scanner-report/syntax-highlightings-25.pb +0 -66
  337. package/.scannerwork/scanner-report/syntax-highlightings-5.pb +0 -641
  338. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +0 -213
  339. package/.scannerwork/scanner-report/syntax-highlightings-7.pb +0 -98
  340. package/.scannerwork/scanner-report/syntax-highlightings-9.pb +0 -368
  341. /package/.scannerwork/scanner-report/{coverages-14.pb → coverages-35.pb} +0 -0
  342. /package/.scannerwork/scanner-report/{coverages-24.pb → coverages-36.pb} +0 -0
  343. /package/.scannerwork/scanner-report/{coverages-8.pb → coverages-4.pb} +0 -0
  344. /package/.scannerwork/scanner-report/{coverages-22.pb → coverages-46.pb} +0 -0
  345. /package/.scannerwork/scanner-report/{coverages-51.pb → coverages-66.pb} +0 -0
  346. /package/.scannerwork/scanner-report/{duplications-11.pb → duplications-31.pb} +0 -0
  347. /package/.scannerwork/scanner-report/{duplications-12.pb → duplications-33.pb} +0 -0
  348. /package/.scannerwork/scanner-report/{duplications-14.pb → duplications-34.pb} +0 -0
  349. /package/.scannerwork/scanner-report/{duplications-20.pb → duplications-35.pb} +0 -0
  350. /package/.scannerwork/scanner-report/{duplications-21.pb → duplications-36.pb} +0 -0
  351. /package/.scannerwork/scanner-report/{duplications-22.pb → duplications-4.pb} +0 -0
  352. /package/.scannerwork/scanner-report/{duplications-24.pb → duplications-45.pb} +0 -0
  353. /package/.scannerwork/scanner-report/{duplications-25.pb → duplications-46.pb} +0 -0
  354. /package/.scannerwork/scanner-report/{duplications-5.pb → duplications-47.pb} +0 -0
  355. /package/.scannerwork/scanner-report/{duplications-52.pb → duplications-48.pb} +0 -0
  356. /package/.scannerwork/scanner-report/{duplications-6.pb → duplications-63.pb} +0 -0
  357. /package/.scannerwork/scanner-report/{duplications-7.pb → duplications-64.pb} +0 -0
  358. /package/.scannerwork/scanner-report/{duplications-8.pb → duplications-67.pb} +0 -0
  359. /package/.scannerwork/scanner-report/{issues-25.pb → issues-15.pb} +0 -0
  360. /package/.scannerwork/scanner-report/{issues-23.pb → issues-16.pb} +0 -0
  361. /package/.scannerwork/scanner-report/{issues-24.pb → issues-36.pb} +0 -0
  362. /package/.scannerwork/scanner-report/{issues-41.pb → issues-40.pb} +0 -0
  363. /package/.scannerwork/scanner-report/{measures-14.pb → measures-35.pb} +0 -0
  364. /package/.scannerwork/scanner-report/{measures-24.pb → measures-36.pb} +0 -0
  365. /package/.scannerwork/scanner-report/{measures-8.pb → measures-4.pb} +0 -0
  366. /package/.scannerwork/scanner-report/{measures-22.pb → measures-46.pb} +0 -0
  367. /package/.scannerwork/scanner-report/{source-14.txt → source-35.txt} +0 -0
  368. /package/.scannerwork/scanner-report/{source-24.txt → source-36.txt} +0 -0
  369. /package/.scannerwork/scanner-report/{source-8.txt → source-4.txt} +0 -0
  370. /package/.scannerwork/scanner-report/{source-22.txt → source-46.txt} +0 -0
  371. /package/.scannerwork/scanner-report/{symbols-14.pb → symbols-35.pb} +0 -0
  372. /package/.scannerwork/scanner-report/{symbols-24.pb → symbols-36.pb} +0 -0
  373. /package/.scannerwork/scanner-report/{symbols-8.pb → symbols-4.pb} +0 -0
  374. /package/.scannerwork/scanner-report/{symbols-22.pb → symbols-46.pb} +0 -0
  375. /package/.scannerwork/scanner-report/{symbols-51.pb → symbols-66.pb} +0 -0
  376. /package/.scannerwork/scanner-report/{syntax-highlightings-14.pb → syntax-highlightings-35.pb} +0 -0
  377. /package/.scannerwork/scanner-report/{syntax-highlightings-24.pb → syntax-highlightings-36.pb} +0 -0
  378. /package/.scannerwork/scanner-report/{syntax-highlightings-8.pb → syntax-highlightings-4.pb} +0 -0
  379. /package/.scannerwork/scanner-report/{syntax-highlightings-22.pb → syntax-highlightings-46.pb} +0 -0
@@ -1,60 +1,102 @@
1
- #!/usr/bin/env node
2
- // Copyright © 2017, 2021 IBM Corp. All rights reserved.
3
- //
4
- // Licensed under the Apache License, Version 2.0 (the "License");
5
- // you may not use this file except in compliance with the License.
6
- // You may obtain a copy of the License at
7
- //
8
- // http://www.apache.org/licenses/LICENSE-2.0
9
- //
10
- // Unless required by applicable law or agreed to in writing, software
11
- // distributed under the License is distributed on an "AS IS" BASIS,
12
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- // See the License for the specific language governing permissions and
14
- // limitations under the License.
15
- 'use strict';
16
-
17
- const error = require('../includes/error.js');
18
- const cliutils = require('../includes/cliutils.js');
19
- const couchbackup = require('../app.js');
20
- const parser = require('../includes/parser.js');
21
- const debug = require('debug');
22
- const restoreDebug = debug('couchbackup:restore');
23
- const restoreBatchDebug = debug('couchbackup:restore:batch');
24
-
25
- restoreDebug.enabled = true;
26
-
27
- try {
28
- const program = parser.parseRestoreArgs();
29
- const databaseUrl = cliutils.databaseUrl(program.url, program.db);
30
- const opts = {
31
- bufferSize: program.bufferSize,
32
- parallelism: program.parallelism,
33
- requestTimeout: program.requestTimeout,
34
- iamApiKey: program.iamApiKey,
35
- iamTokenUrl: program.iamTokenUrl
36
- };
37
-
38
- // log configuration to console
39
- console.error('='.repeat(80));
40
- console.error('Performing restore on ' + databaseUrl.replace(/\/\/.+@/g, '//****:****@') + ' using configuration:');
41
- console.error(JSON.stringify(opts, null, 2).replace(/"iamApiKey": "[^"]+"/, '"iamApiKey": "****"'));
42
- console.error('='.repeat(80));
43
-
44
- restoreBatchDebug.enabled = !program.quiet;
45
-
46
- return couchbackup.restore(
47
- process.stdin, // restore from stdin
48
- databaseUrl,
49
- opts,
50
- error.terminationCallback
51
- ).on('restored', function(obj) {
52
- restoreBatchDebug('restored', obj.total);
53
- }).on('error', function(e) {
54
- restoreDebug('ERROR', e);
55
- }).on('finished', function(obj) {
56
- restoreDebug('finished', obj);
57
- });
58
- } catch (err) {
59
- error.terminationCallback(err);
60
- }
1
+ <testsuites name="test-iam">
2
+ <testsuite name="Basic backup and restore using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-11-02T17:46:06" time="4.942">
3
+ <testcase classname="test-iam.Basic backup and restore using API" name="should backup animaldb to a file correctly" time="1.05">
4
+ </testcase>
5
+ <testcase classname="test-iam.Basic backup and restore using API" name="should restore animaldb to a database correctly" time="1.87">
6
+ </testcase>
7
+ <testcase classname="test-iam.Basic backup and restore using API" name="should execute a shallow mode backup successfully" time="0.825">
8
+ </testcase>
9
+ </testsuite>
10
+ <testsuite name="Basic backup and restore using API Buffer size tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-11-02T17:46:11" time="11.399">
11
+ <testcase classname="test-iam.Basic backup and restore using API Buffer size tests using API" name="should backup/restore animaldb with the same buffer size" time="2.655">
12
+ </testcase>
13
+ <testcase classname="test-iam.Basic backup and restore using API Buffer size tests using API" name="should backup/restore animaldb with backup buffer &gt; restore buffer" time="4.442">
14
+ </testcase>
15
+ <testcase classname="test-iam.Basic backup and restore using API Buffer size tests using API" name="should backup/restore animaldb with backup buffer &lt; restore buffer" time="3.451">
16
+ </testcase>
17
+ </testsuite>
18
+ <testsuite name="Basic backup and restore using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-11-02T17:46:22" time="5.587">
19
+ <testcase classname="test-iam.Basic backup and restore using CLI" name="should backup animaldb to a file correctly" time="1.361">
20
+ </testcase>
21
+ <testcase classname="test-iam.Basic backup and restore using CLI" name="should restore animaldb to a database correctly" time="2.334">
22
+ </testcase>
23
+ <testcase classname="test-iam.Basic backup and restore using CLI" name="should execute a shallow mode backup successfully" time="1.069">
24
+ </testcase>
25
+ </testsuite>
26
+ <testsuite name="Basic backup and restore using CLI Buffer size tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-11-02T17:46:28" time="13.096">
27
+ <testcase classname="test-iam.Basic backup and restore using CLI Buffer size tests using CLI" name="should backup/restore animaldb with the same buffer size" time="3.363">
28
+ </testcase>
29
+ <testcase classname="test-iam.Basic backup and restore using CLI Buffer size tests using CLI" name="should backup/restore animaldb with backup buffer &gt; restore buffer" time="4.437">
30
+ </testcase>
31
+ <testcase classname="test-iam.Basic backup and restore using CLI Buffer size tests using CLI" name="should backup/restore animaldb with backup buffer &lt; restore buffer" time="4.474">
32
+ </testcase>
33
+ </testsuite>
34
+ <testsuite name="Compression tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-11-02T17:46:41" time="5.622">
35
+ <testcase classname="test-iam.Compression tests using API" name="should backup animaldb to a compressed file" time="0.972">
36
+ </testcase>
37
+ <testcase classname="test-iam.Compression tests using API" name="should backup and restore animaldb via a compressed file" time="1.629">
38
+ </testcase>
39
+ <testcase classname="test-iam.Compression tests using API" name="should backup and restore animaldb via a compressed stream" time="2.202">
40
+ </testcase>
41
+ </testsuite>
42
+ <testsuite name="Compression tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-11-02T17:46:46" time="7.822">
43
+ <testcase classname="test-iam.Compression tests using CLI" name="should backup animaldb to a compressed file" time="1.339">
44
+ </testcase>
45
+ <testcase classname="test-iam.Compression tests using CLI" name="should backup and restore animaldb via a compressed file" time="2.913">
46
+ </testcase>
47
+ <testcase classname="test-iam.Compression tests using CLI" name="should backup and restore animaldb via a compressed stream" time="2.738">
48
+ </testcase>
49
+ </testsuite>
50
+ <testsuite name="End to end backup and restore using API" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-11-02T17:46:54" time="333.956">
51
+ <testcase classname="test-iam.End to end backup and restore using API" name="should backup and restore animaldb" time="2.123">
52
+ </testcase>
53
+ <testcase classname="test-iam.End to end backup and restore using API" name="should backup and restore largedb1g #slow" time="331.034">
54
+ </testcase>
55
+ </testsuite>
56
+ <testsuite name="End to end backup and restore using CLI" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-11-02T17:52:28" time="516.382">
57
+ <testcase classname="test-iam.End to end backup and restore using CLI" name="should backup and restore animaldb" time="2.893">
58
+ </testcase>
59
+ <testcase classname="test-iam.End to end backup and restore using CLI" name="should backup and restore largedb1g #slow" time="512.703">
60
+ </testcase>
61
+ </testsuite>
62
+ <testsuite name="Encryption tests" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-11-02T18:01:05" time="2.849">
63
+ <testcase classname="test-iam.Encryption tests" name="should backup and restore animaldb via an encrypted file" time="2.582">
64
+ </testcase>
65
+ </testsuite>
66
+ <testsuite name="Write error tests" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-11-02T18:01:07" time="0.29">
67
+ <testcase classname="test-iam.Write error tests" name="calls callback with error set when stream is not writeable" time="0.017">
68
+ </testcase>
69
+ </testsuite>
70
+ <testsuite name="Event tests" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-11-02T18:01:08" time="2.336">
71
+ <testcase classname="test-iam.Event tests" name="should get a finished event when using stdout" time="0.827">
72
+ </testcase>
73
+ <testcase classname="test-iam.Event tests" name="should get a finished event when using file output" time="0.973">
74
+ </testcase>
75
+ </testsuite>
76
+ <testsuite name="Resume tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-11-02T18:01:10" time="5.363">
77
+ <testcase classname="test-iam.Resume tests using API" name="should create a log file" time="0.859">
78
+ </testcase>
79
+ <testcase classname="test-iam.Resume tests using API" name="should restore corrupted animaldb to a database correctly" time="1.823">
80
+ </testcase>
81
+ <testcase classname="test-iam.Resume tests using API" name="should restore resumed animaldb with blank line to a database correctly" time="1.875">
82
+ </testcase>
83
+ </testsuite>
84
+ <testsuite name="Resume tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-11-02T18:01:15" time="6.592">
85
+ <testcase classname="test-iam.Resume tests using CLI" name="should create a log file" time="1.338">
86
+ </testcase>
87
+ <testcase classname="test-iam.Resume tests using CLI" name="should restore corrupted animaldb to a database correctly" time="2.23">
88
+ </testcase>
89
+ <testcase classname="test-iam.Resume tests using CLI" name="should restore resumed animaldb with blank line to a database correctly" time="2.212">
90
+ </testcase>
91
+ </testsuite>
92
+ <testsuite name="Resume tests" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-11-02T18:01:22" time="33.862">
93
+ <testcase classname="test-iam.Resume tests" name="should correctly backup and restore backup10m" time="16.648">
94
+ </testcase>
95
+ <testcase classname="test-iam.Resume tests" name="should correctly backup and restore backup10m using --output" time="16.682">
96
+ </testcase>
97
+ </testsuite>
98
+ <testsuite name="Longer spool changes checks" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-11-02T18:01:56" time="48.25">
99
+ <testcase classname="test-iam.Longer spool changes checks" name="#slow should keep collecting changes (25M)" time="47.981">
100
+ </testcase>
101
+ </testsuite>
102
+ </testsuites>
@@ -13,106 +13,117 @@
13
13
  // limitations under the License.
14
14
  'use strict';
15
15
 
16
+ const cliutils = require('./cliutils.js');
17
+ const config = require('./config.js');
18
+ const error = require('./error.js');
16
19
  const path = require('path');
17
- const tmp = require('tmp');
18
-
19
- /**
20
- Return API default settings.
21
- */
22
- function apiDefaults() {
23
- return {
24
- parallelism: 5,
25
- bufferSize: 500,
26
- requestTimeout: 120000,
27
- log: tmp.tmpNameSync(),
28
- resume: false,
29
- mode: 'full'
30
- };
31
- }
32
-
33
- /**
34
- Return CLI default settings.
35
- */
36
- function cliDefaults() {
37
- const defaults = apiDefaults();
38
-
39
- // add additional legacy settings
40
- defaults.db = 'test';
41
- defaults.url = 'http://localhost:5984';
42
-
43
- // add CLI only option
44
- defaults.quiet = false;
45
-
46
- return defaults;
47
- }
48
-
49
- /**
50
- Override settings **in-place** with environment variables.
51
- */
52
- function applyEnvironmentVariables(opts) {
53
- // if we have a custom CouchDB url
54
- if (typeof process.env.COUCH_URL !== 'undefined') {
55
- opts.url = process.env.COUCH_URL;
20
+ const pkg = require('../package.json');
21
+
22
+ function parseBackupArgs() {
23
+ const program = require('commander');
24
+
25
+ // Option CLI defaults
26
+ const defaults = config.cliDefaults();
27
+
28
+ // Options set by environment variables
29
+ const envVarOptions = {};
30
+ config.applyEnvironmentVariables(envVarOptions);
31
+
32
+ program
33
+ .version(pkg.version)
34
+ .description('Backup a CouchDB/Cloudant database to a backup text file.')
35
+ .usage('[options...]')
36
+ .option('-b, --buffer-size <n>',
37
+ cliutils.getUsage('number of documents fetched at once', defaults.bufferSize),
38
+ Number)
39
+ .option('-d, --db <db>',
40
+ cliutils.getUsage('name of the database to backup', defaults.db))
41
+ .option('-k, --iam-api-key <API key>',
42
+ cliutils.getUsage('IAM API key to access the Cloudant server'))
43
+ .option('-l, --log <file>',
44
+ cliutils.getUsage('file to store logging information during backup; invalid in "shallow" mode', 'a temporary file'),
45
+ path.normalize)
46
+ .option('-m, --mode <mode>',
47
+ cliutils.getUsage('"shallow" if only a superficial backup is done (ignoring conflicts and revision tokens), else "full" for complete backup', defaults.mode),
48
+ (mode) => { return mode.toLowerCase(); })
49
+ .option('-o, --output <file>',
50
+ cliutils.getUsage('file name to store the backup data', 'stdout'),
51
+ path.normalize)
52
+ .option('-p, --parallelism <n>',
53
+ cliutils.getUsage('number of HTTP requests to perform in parallel when performing a backup; ignored in "shallow" mode', defaults.parallelism),
54
+ Number)
55
+ .option('-q, --quiet',
56
+ cliutils.getUsage('suppress batch messages', defaults.quiet))
57
+ .option('-r, --resume',
58
+ cliutils.getUsage('continue a previous backup from its last known position; invalid in "shallow" mode', defaults.resume))
59
+ .option('-t, --request-timeout <n>',
60
+ cliutils.getUsage('milliseconds to wait for a response to a HTTP request before retrying the request', defaults.requestTimeout),
61
+ Number)
62
+ .option('-u, --url <url>',
63
+ cliutils.getUsage('URL of the CouchDB/Cloudant server', defaults.url))
64
+ .parse(process.argv);
65
+
66
+ // Remove defaults that don't apply when using shallow mode
67
+ if (program.opts().mode === 'shallow' || envVarOptions.mode === 'shallow') {
68
+ delete defaults.parallelism;
69
+ delete defaults.log;
70
+ delete defaults.resume;
56
71
  }
57
72
 
58
- // if we have a specified databases
59
- if (typeof process.env.COUCH_DATABASE !== 'undefined') {
60
- opts.db = process.env.COUCH_DATABASE;
61
- }
62
-
63
- // if we have a specified buffer size
64
- if (typeof process.env.COUCH_BUFFER_SIZE !== 'undefined') {
65
- opts.bufferSize = parseInt(process.env.COUCH_BUFFER_SIZE);
66
- }
73
+ // Apply the options in order so that the CLI overrides env vars and env variables
74
+ // override defaults.
75
+ const opts = Object.assign({}, defaults, envVarOptions, program.opts());
67
76
 
68
- // if we have a specified parallelism
69
- if (typeof process.env.COUCH_PARALLELISM !== 'undefined') {
70
- opts.parallelism = parseInt(process.env.COUCH_PARALLELISM);
77
+ if (opts.resume && (opts.log === defaults.log)) {
78
+ // If resuming and the log file arg is the newly generated tmp name from defaults then we know that --log wasn't specified.
79
+ // We have to do this check here for the CLI case because of the default.
80
+ error.terminationCallback(new error.BackupError('NoLogFileName', 'To resume a backup, a log file must be specified'));
71
81
  }
72
82
 
73
- // if we have a specified request timeout
74
- if (typeof process.env.COUCH_REQUEST_TIMEOUT !== 'undefined') {
75
- opts.requestTimeout = parseInt(process.env.COUCH_REQUEST_TIMEOUT);
76
- }
77
-
78
- // if we have a specified log file
79
- if (typeof process.env.COUCH_LOG !== 'undefined') {
80
- opts.log = path.normalize(process.env.COUCH_LOG);
81
- }
82
-
83
- // if we are instructed to resume
84
- if (typeof process.env.COUCH_RESUME !== 'undefined' && process.env.COUCH_RESUME === 'true') {
85
- opts.resume = true;
86
- }
87
-
88
- // if we are given an output filename
89
- if (typeof process.env.COUCH_OUTPUT !== 'undefined') {
90
- opts.output = path.normalize(process.env.COUCH_OUTPUT);
91
- }
92
-
93
- // if we only want a shallow copy
94
- if (typeof process.env.COUCH_MODE !== 'undefined' && process.env.COUCH_MODE === 'shallow') {
95
- opts.mode = 'shallow';
96
- }
97
-
98
- // if we are instructed to be quiet
99
- if (typeof process.env.COUCH_QUIET !== 'undefined' && process.env.COUCH_QUIET === 'true') {
100
- opts.quiet = true;
101
- }
102
-
103
- // if we have a specified API key
104
- if (typeof process.env.CLOUDANT_IAM_API_KEY !== 'undefined') {
105
- opts.iamApiKey = process.env.CLOUDANT_IAM_API_KEY;
106
- }
83
+ return opts;
84
+ }
107
85
 
108
- // if we have a specified IAM token endpoint
109
- if (typeof process.env.CLOUDANT_IAM_TOKEN_URL !== 'undefined') {
110
- opts.iamTokenUrl = process.env.CLOUDANT_IAM_TOKEN_URL;
111
- }
86
+ function parseRestoreArgs() {
87
+ const program = require('commander');
88
+
89
+ // Option CLI defaults
90
+ const defaults = config.cliDefaults();
91
+
92
+ // Options set by environment variables
93
+ const envVarOptions = {};
94
+ config.applyEnvironmentVariables(envVarOptions);
95
+
96
+ program
97
+ .version(pkg.version)
98
+ .description('Restore a CouchDB/Cloudant database from a backup text file.')
99
+ .usage('[options...]')
100
+ .option('-b, --buffer-size <n>',
101
+ cliutils.getUsage('number of documents restored at once', defaults.bufferSize),
102
+ Number)
103
+ .option('-d, --db <db>',
104
+ cliutils.getUsage('name of the new, existing database to restore to', defaults.db))
105
+ .option('-k, --iam-api-key <API key>',
106
+ cliutils.getUsage('IAM API key to access the Cloudant server'))
107
+ .option('-p, --parallelism <n>',
108
+ cliutils.getUsage('number of HTTP requests to perform in parallel when restoring a backup', defaults.parallelism),
109
+ Number)
110
+ .option('-q, --quiet',
111
+ cliutils.getUsage('suppress batch messages', defaults.quiet))
112
+ .option('-t, --request-timeout <n>',
113
+ cliutils.getUsage('milliseconds to wait for a response to a HTTP request before retrying the request', defaults.requestTimeout),
114
+ Number)
115
+ .option('-u, --url <url>',
116
+ cliutils.getUsage('URL of the CouchDB/Cloudant server', defaults.url))
117
+ .parse(process.argv);
118
+
119
+ // Apply the options in order so that the CLI overrides env vars and env variables
120
+ // override defaults.
121
+ const opts = Object.assign({}, defaults, envVarOptions, program.opts());
122
+
123
+ return opts;
112
124
  }
113
125
 
114
126
  module.exports = {
115
- apiDefaults: apiDefaults,
116
- cliDefaults: cliDefaults,
117
- applyEnvironmentVariables: applyEnvironmentVariables
127
+ parseBackupArgs: parseBackupArgs,
128
+ parseRestoreArgs: parseRestoreArgs
118
129
  };
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2018 IBM Corp. All rights reserved.
1
+ // Copyright © 2017 IBM Corp. All rights reserved.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -13,19 +13,29 @@
13
13
  // limitations under the License.
14
14
  'use strict';
15
15
 
16
- module.exports = function(db, options, readstream, ee, callback) {
17
- const liner = require('../includes/liner.js')();
18
- const writer = require('../includes/writer.js')(db, options.bufferSize, options.parallelism, ee);
16
+ // stolen from http://strongloop.com/strongblog/practical-examples-of-the-new-node-js-streams-api/
17
+ const stream = require('stream');
19
18
 
20
- // pipe the input to the output, via transformation functions
21
- readstream
22
- .pipe(liner) // transform the input stream into per-line
23
- .on('error', function(err) {
24
- // Forward the error to the writer event emitter where we already have
25
- // listeners on for handling errors
26
- writer.emit('error', err);
27
- })
28
- .pipe(writer); // transform the data
19
+ module.exports = function(onChange) {
20
+ const change = new stream.Transform({ objectMode: true });
29
21
 
30
- callback(null, writer);
22
+ change._transform = function(line, encoding, done) {
23
+ let obj = null;
24
+
25
+ // one change per line - remove the trailing comma
26
+ line = line.trim().replace(/,$/, '');
27
+
28
+ // extract thee last_seq at the end of the changes feed
29
+ if (line.match(/^"last_seq":/)) {
30
+ line = '{' + line;
31
+ }
32
+ try {
33
+ obj = JSON.parse(line);
34
+ } catch (e) {
35
+ }
36
+ onChange(obj);
37
+ done();
38
+ };
39
+
40
+ return change;
31
41
  };
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2022 IBM Corp. All rights reserved.
1
+ // Copyright © 2017, 2018 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.
@@ -13,68 +13,47 @@
13
13
  // limitations under the License.
14
14
  'use strict';
15
15
 
16
- const async = require('async');
17
- const error = require('./error.js');
18
- const events = require('events');
19
-
20
- module.exports = function(db, options) {
21
- const ee = new events.EventEmitter();
22
- const start = new Date().getTime();
23
- let batch = 0;
24
- let hasErrored = false;
25
- let startKey = null;
26
- let total = 0;
16
+ /**
17
+ * Utility methods for the command line interface.
18
+ * @module cliutils
19
+ * @see module:cliutils
20
+ */
27
21
 
28
- async.doUntil(
29
- function(callback) {
30
- // Note, include_docs: true is set automatically when using the
31
- // fetch function.
32
- const opts = { db: db.db, limit: options.bufferSize, includeDocs: true };
33
-
34
- // To avoid double fetching a document solely for the purposes of getting
35
- // the next ID to use as a startKey for the next page we instead use the
36
- // last ID of the current page and append the lowest unicode sort
37
- // character.
38
- if (startKey) opts.startKey = `${startKey}\0`;
39
- db.service.postAllDocs(opts).then(response => {
40
- const body = response.result;
41
- if (!body.rows) {
42
- ee.emit('error', new error.BackupError(
43
- 'AllDocsError', 'ERROR: Invalid all docs response'));
44
- callback();
45
- } else {
46
- if (body.rows.length < opts.limit) {
47
- startKey = null; // last batch
48
- } else {
49
- startKey = body.rows[opts.limit - 1].id;
50
- }
22
+ const url = require('url');
23
+ const error = require('./error.js');
51
24
 
52
- const docs = [];
53
- body.rows.forEach(function(doc) {
54
- docs.push(doc.doc);
55
- });
25
+ module.exports = {
56
26
 
57
- if (docs.length > 0) {
58
- ee.emit('received', {
59
- batch: batch++,
60
- data: docs,
61
- length: docs.length,
62
- time: (new Date().getTime() - start) / 1000,
63
- total: total += docs.length
64
- });
65
- }
66
- callback();
67
- }
68
- }).catch(err => {
69
- err = error.convertResponseError(err);
70
- ee.emit('error', err);
71
- hasErrored = true;
72
- callback();
73
- });
74
- },
75
- function(callback) { callback(null, hasErrored || startKey == null); },
76
- function() { ee.emit('finished', { total: total }); }
77
- );
27
+ /**
28
+ * Combine a base URL and a database name, ensuring at least single slash
29
+ * between root and database name. This allows users to have Couch behind
30
+ * proxies that mount Couch's / endpoint at some other mount point.
31
+ * @param {string} root - root URL
32
+ * @param {string} databaseName - database name
33
+ * @return concatenated URL.
34
+ *
35
+ * @private
36
+ */
37
+ databaseUrl: function databaseUrl(root, databaseName) {
38
+ if (!root.endsWith('/')) {
39
+ root = root + '/';
40
+ }
41
+ try {
42
+ return new url.URL(encodeURIComponent(databaseName), root).toString();
43
+ } catch (err) {
44
+ throw error.wrapPossibleInvalidUrlError(err);
45
+ }
46
+ },
78
47
 
79
- return ee;
48
+ /**
49
+ * Generate CLI argument usage text.
50
+ *
51
+ * @param {string} description - argument description.
52
+ * @param {string} defaultValue - default argument value.
53
+ *
54
+ * @private
55
+ */
56
+ getUsage: function getUsage(description, defaultValue) {
57
+ return `${description} ${defaultValue !== undefined ? ` (default: ${defaultValue})` : ''}`;
58
+ }
80
59
  };