@cloudant/couchbackup 2.9.12-SNAPSHOT.136 → 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 (414) hide show
  1. package/.scannerwork/report-task.txt +2 -2
  2. package/.scannerwork/scanner-report/analysis-warnings.pb +2 -2
  3. package/.scannerwork/scanner-report/changesets-10.pb +2 -0
  4. package/.scannerwork/scanner-report/changesets-17.pb +1 -0
  5. package/.scannerwork/scanner-report/changesets-18.pb +1 -0
  6. package/.scannerwork/scanner-report/changesets-19.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-20.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-22.pb +1 -0
  9. package/.scannerwork/scanner-report/changesets-23.pb +1 -0
  10. package/.scannerwork/scanner-report/changesets-24.pb +1 -0
  11. package/.scannerwork/scanner-report/changesets-25.pb +1 -0
  12. package/.scannerwork/scanner-report/changesets-26.pb +1 -0
  13. package/.scannerwork/scanner-report/changesets-27.pb +1 -0
  14. package/.scannerwork/scanner-report/changesets-45.pb +1 -0
  15. package/.scannerwork/scanner-report/changesets-46.pb +1 -0
  16. package/.scannerwork/scanner-report/changesets-48.pb +1 -0
  17. package/.scannerwork/scanner-report/changesets-5.pb +1 -0
  18. package/.scannerwork/scanner-report/changesets-64.pb +1 -0
  19. package/.scannerwork/scanner-report/changesets-7.pb +1 -0
  20. package/.scannerwork/scanner-report/changesets-9.pb +1 -0
  21. package/.scannerwork/scanner-report/component-1.pb +2 -1
  22. package/.scannerwork/scanner-report/component-10.pb +2 -0
  23. package/.scannerwork/scanner-report/component-11.pb +1 -1
  24. package/.scannerwork/scanner-report/component-12.pb +1 -1
  25. package/.scannerwork/scanner-report/component-13.pb +1 -1
  26. package/.scannerwork/scanner-report/component-14.pb +1 -1
  27. package/.scannerwork/scanner-report/component-15.pb +1 -1
  28. package/.scannerwork/scanner-report/component-16.pb +1 -1
  29. package/.scannerwork/scanner-report/component-17.pb +1 -0
  30. package/.scannerwork/scanner-report/component-18.pb +1 -0
  31. package/.scannerwork/scanner-report/component-19.pb +1 -0
  32. package/.scannerwork/scanner-report/component-2.pb +1 -0
  33. package/.scannerwork/scanner-report/component-20.pb +1 -0
  34. package/.scannerwork/scanner-report/component-22.pb +1 -0
  35. package/.scannerwork/scanner-report/component-23.pb +1 -0
  36. package/.scannerwork/scanner-report/component-24.pb +1 -0
  37. package/.scannerwork/scanner-report/component-25.pb +1 -0
  38. package/.scannerwork/scanner-report/component-26.pb +1 -0
  39. package/.scannerwork/scanner-report/component-27.pb +1 -0
  40. package/.scannerwork/scanner-report/component-28.pb +1 -1
  41. package/.scannerwork/scanner-report/component-29.pb +1 -1
  42. package/.scannerwork/scanner-report/component-30.pb +1 -1
  43. package/.scannerwork/scanner-report/component-42.pb +1 -1
  44. package/.scannerwork/scanner-report/component-43.pb +1 -1
  45. package/.scannerwork/scanner-report/component-44.pb +1 -1
  46. package/.scannerwork/scanner-report/component-45.pb +1 -0
  47. package/.scannerwork/scanner-report/component-46.pb +1 -0
  48. package/.scannerwork/scanner-report/component-47.pb +1 -1
  49. package/.scannerwork/scanner-report/component-48.pb +1 -0
  50. package/.scannerwork/scanner-report/component-49.pb +1 -1
  51. package/.scannerwork/scanner-report/component-5.pb +1 -0
  52. package/.scannerwork/scanner-report/component-50.pb +1 -1
  53. package/.scannerwork/scanner-report/component-51.pb +1 -1
  54. package/.scannerwork/scanner-report/component-52.pb +1 -1
  55. package/.scannerwork/scanner-report/component-53.pb +1 -1
  56. package/.scannerwork/scanner-report/component-54.pb +1 -1
  57. package/.scannerwork/scanner-report/component-55.pb +1 -1
  58. package/.scannerwork/scanner-report/component-56.pb +1 -1
  59. package/.scannerwork/scanner-report/component-58.pb +1 -1
  60. package/.scannerwork/scanner-report/component-6.pb +1 -1
  61. package/.scannerwork/scanner-report/component-61.pb +1 -1
  62. package/.scannerwork/scanner-report/component-64.pb +1 -1
  63. package/.scannerwork/scanner-report/component-68.pb +1 -1
  64. package/.scannerwork/scanner-report/component-7.pb +1 -0
  65. package/.scannerwork/scanner-report/component-8.pb +1 -1
  66. package/.scannerwork/scanner-report/component-9.pb +1 -0
  67. package/.scannerwork/scanner-report/coverages-10.pb +0 -0
  68. package/.scannerwork/scanner-report/coverages-11.pb +0 -0
  69. package/.scannerwork/scanner-report/coverages-12.pb +0 -0
  70. package/.scannerwork/scanner-report/coverages-13.pb +0 -0
  71. package/.scannerwork/scanner-report/coverages-14.pb +0 -0
  72. package/.scannerwork/scanner-report/coverages-15.pb +0 -0
  73. package/.scannerwork/scanner-report/coverages-16.pb +0 -0
  74. package/.scannerwork/scanner-report/coverages-18.pb +0 -0
  75. package/.scannerwork/scanner-report/coverages-19.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-24.pb +0 -0
  77. package/.scannerwork/scanner-report/{coverages-34.pb → coverages-25.pb} +0 -0
  78. package/.scannerwork/scanner-report/coverages-28.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-29.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-30.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-42.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-43.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-44.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-45.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-47.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-48.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-49.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-5.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-50.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-51.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-53.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-54.pb +0 -0
  94. package/.scannerwork/scanner-report/coverages-55.pb +0 -0
  95. package/.scannerwork/scanner-report/coverages-56.pb +0 -0
  96. package/.scannerwork/scanner-report/coverages-58.pb +0 -0
  97. package/.scannerwork/scanner-report/coverages-6.pb +0 -0
  98. package/.scannerwork/scanner-report/coverages-64.pb +0 -0
  99. package/.scannerwork/scanner-report/coverages-7.pb +0 -0
  100. package/.scannerwork/scanner-report/coverages-8.pb +0 -0
  101. package/.scannerwork/scanner-report/duplications-12.pb +0 -2
  102. package/.scannerwork/scanner-report/duplications-15.pb +2 -0
  103. package/.scannerwork/scanner-report/duplications-24.pb +2 -0
  104. package/.scannerwork/scanner-report/duplications-26.pb +3 -0
  105. package/.scannerwork/scanner-report/duplications-28.pb +0 -2
  106. package/.scannerwork/scanner-report/duplications-29.pb +2 -0
  107. package/.scannerwork/scanner-report/duplications-30.pb +3 -0
  108. package/.scannerwork/scanner-report/duplications-5.pb +2 -0
  109. package/.scannerwork/scanner-report/duplications-52.pb +3 -0
  110. package/.scannerwork/scanner-report/duplications-55.pb +2 -0
  111. package/.scannerwork/scanner-report/duplications-6.pb +1 -1
  112. package/.scannerwork/scanner-report/duplications-64.pb +0 -0
  113. package/.scannerwork/scanner-report/duplications-7.pb +0 -0
  114. package/.scannerwork/scanner-report/duplications-8.pb +0 -2
  115. package/.scannerwork/scanner-report/duplications-9.pb +2 -0
  116. package/.scannerwork/scanner-report/measures-10.pb +0 -0
  117. package/.scannerwork/scanner-report/measures-11.pb +0 -0
  118. package/.scannerwork/scanner-report/measures-12.pb +0 -0
  119. package/.scannerwork/scanner-report/measures-13.pb +0 -0
  120. package/.scannerwork/scanner-report/measures-14.pb +0 -0
  121. package/.scannerwork/scanner-report/measures-15.pb +0 -0
  122. package/.scannerwork/scanner-report/measures-16.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-18.pb +16 -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-23.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-28.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-29.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-44.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-45.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-47.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-48.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-49.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-5.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-50.pb +0 -0
  141. package/.scannerwork/scanner-report/measures-51.pb +0 -0
  142. package/.scannerwork/scanner-report/measures-52.pb +0 -0
  143. package/.scannerwork/scanner-report/measures-53.pb +0 -0
  144. package/.scannerwork/scanner-report/measures-54.pb +0 -0
  145. package/.scannerwork/scanner-report/measures-55.pb +0 -0
  146. package/.scannerwork/scanner-report/measures-56.pb +0 -0
  147. package/.scannerwork/scanner-report/measures-58.pb +0 -0
  148. package/.scannerwork/scanner-report/measures-6.pb +0 -0
  149. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  150. package/.scannerwork/scanner-report/measures-64.pb +0 -0
  151. package/.scannerwork/scanner-report/measures-68.pb +0 -0
  152. package/.scannerwork/scanner-report/measures-7.pb +0 -0
  153. package/.scannerwork/scanner-report/measures-8.pb +0 -0
  154. package/.scannerwork/scanner-report/metadata.pb +0 -0
  155. package/.scannerwork/scanner-report/source-10.txt +111 -0
  156. package/.scannerwork/scanner-report/source-11.txt +35 -81
  157. package/.scannerwork/scanner-report/source-12.txt +22 -126
  158. package/.scannerwork/scanner-report/source-13.txt +115 -54
  159. package/.scannerwork/scanner-report/source-14.txt +149 -21
  160. package/.scannerwork/scanner-report/source-15.txt +61 -352
  161. package/.scannerwork/scanner-report/source-16.txt +104 -22
  162. package/.scannerwork/scanner-report/source-18.txt +178 -0
  163. package/.scannerwork/scanner-report/source-19.txt +31 -0
  164. package/.scannerwork/scanner-report/{source-4.txt → source-2.txt} +141 -141
  165. package/.scannerwork/scanner-report/source-20.txt +281 -0
  166. package/.scannerwork/scanner-report/source-23.txt +77 -0
  167. package/.scannerwork/scanner-report/source-24.txt +145 -0
  168. package/.scannerwork/scanner-report/{source-34.txt → source-25.txt} +9 -10
  169. package/.scannerwork/scanner-report/source-28.txt +25 -203
  170. package/.scannerwork/scanner-report/source-29.txt +265 -64
  171. package/.scannerwork/scanner-report/source-30.txt +104 -36
  172. package/.scannerwork/scanner-report/source-42.txt +346 -14
  173. package/.scannerwork/scanner-report/source-43.txt +120 -115
  174. package/.scannerwork/scanner-report/source-44.txt +20 -403
  175. package/.scannerwork/scanner-report/source-45.txt +142 -0
  176. package/.scannerwork/scanner-report/source-47.txt +17 -95
  177. package/.scannerwork/scanner-report/{source-41.txt → source-48.txt} +13 -6
  178. package/.scannerwork/scanner-report/source-49.txt +85 -65
  179. package/.scannerwork/scanner-report/source-5.txt +175 -0
  180. package/.scannerwork/scanner-report/source-50.txt +602 -106
  181. package/.scannerwork/scanner-report/source-51.txt +51 -14
  182. package/.scannerwork/scanner-report/source-52.txt +225 -22
  183. package/.scannerwork/scanner-report/source-53.txt +45 -160
  184. package/.scannerwork/scanner-report/source-54.txt +12 -58
  185. package/.scannerwork/scanner-report/source-55.txt +208 -37
  186. package/.scannerwork/scanner-report/source-56.txt +78 -32
  187. package/.scannerwork/scanner-report/source-58.txt +94 -91
  188. package/.scannerwork/scanner-report/source-6.txt +64 -49
  189. package/.scannerwork/scanner-report/source-61.txt +509 -281
  190. package/.scannerwork/scanner-report/source-64.txt +418 -167
  191. package/.scannerwork/scanner-report/source-68.txt +167 -77
  192. package/.scannerwork/scanner-report/source-7.txt +46 -0
  193. package/.scannerwork/scanner-report/source-8.txt +65 -175
  194. package/.scannerwork/scanner-report/symbols-10.pb +59 -0
  195. package/.scannerwork/scanner-report/symbols-11.pb +14 -68
  196. package/.scannerwork/scanner-report/symbols-12.pb +18 -102
  197. package/.scannerwork/scanner-report/symbols-13.pb +33 -36
  198. package/.scannerwork/scanner-report/symbols-14.pb +126 -14
  199. package/.scannerwork/scanner-report/symbols-15.pb +42 -494
  200. package/.scannerwork/scanner-report/symbols-16.pb +30 -11
  201. package/.scannerwork/scanner-report/symbols-18.pb +144 -0
  202. package/.scannerwork/scanner-report/symbols-19.pb +14 -0
  203. package/.scannerwork/scanner-report/symbols-24.pb +102 -0
  204. package/.scannerwork/scanner-report/symbols-25.pb +10 -0
  205. package/.scannerwork/scanner-report/symbols-28.pb +26 -417
  206. package/.scannerwork/scanner-report/symbols-29.pb +486 -60
  207. package/.scannerwork/scanner-report/symbols-30.pb +97 -43
  208. package/.scannerwork/scanner-report/symbols-42.pb +494 -10
  209. package/.scannerwork/scanner-report/symbols-43.pb +80 -111
  210. package/.scannerwork/scanner-report/symbols-44.pb +17 -610
  211. package/.scannerwork/scanner-report/symbols-45.pb +116 -0
  212. package/.scannerwork/scanner-report/symbols-47.pb +14 -28
  213. package/.scannerwork/scanner-report/symbols-48.pb +11 -0
  214. package/.scannerwork/scanner-report/symbols-49.pb +68 -45
  215. package/.scannerwork/scanner-report/symbols-5.pb +153 -0
  216. package/.scannerwork/scanner-report/symbols-50.pb +1254 -33
  217. package/.scannerwork/scanner-report/symbols-51.pb +35 -13
  218. package/.scannerwork/scanner-report/symbols-52.pb +393 -17
  219. package/.scannerwork/scanner-report/symbols-53.pb +42 -143
  220. package/.scannerwork/scanner-report/symbols-54.pb +9 -42
  221. package/.scannerwork/scanner-report/symbols-55.pb +417 -14
  222. package/.scannerwork/scanner-report/symbols-56.pb +60 -20
  223. package/.scannerwork/scanner-report/symbols-58.pb +28 -59
  224. package/.scannerwork/scanner-report/symbols-6.pb +176 -149
  225. package/.scannerwork/scanner-report/symbols-64.pb +610 -0
  226. package/.scannerwork/scanner-report/symbols-7.pb +20 -0
  227. package/.scannerwork/scanner-report/symbols-8.pb +46 -180
  228. package/.scannerwork/scanner-report/syntax-highlightings-10.pb +133 -0
  229. package/.scannerwork/scanner-report/syntax-highlightings-11.pb +24 -75
  230. package/.scannerwork/scanner-report/syntax-highlightings-12.pb +21 -198
  231. package/.scannerwork/scanner-report/syntax-highlightings-13.pb +93 -59
  232. package/.scannerwork/scanner-report/syntax-highlightings-14.pb +180 -21
  233. package/.scannerwork/scanner-report/syntax-highlightings-15.pb +46 -598
  234. package/.scannerwork/scanner-report/syntax-highlightings-16.pb +84 -30
  235. package/.scannerwork/scanner-report/syntax-highlightings-18.pb +243 -0
  236. package/.scannerwork/scanner-report/syntax-highlightings-19.pb +45 -0
  237. package/.scannerwork/scanner-report/{syntax-highlightings-4.pb → syntax-highlightings-2.pb} +88 -86
  238. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +285 -0
  239. package/.scannerwork/scanner-report/syntax-highlightings-23.pb +103 -0
  240. package/.scannerwork/scanner-report/syntax-highlightings-24.pb +227 -0
  241. package/.scannerwork/scanner-report/{syntax-highlightings-41.pb → syntax-highlightings-25.pb} +15 -13
  242. package/.scannerwork/scanner-report/syntax-highlightings-28.pb +28 -291
  243. package/.scannerwork/scanner-report/syntax-highlightings-29.pb +615 -66
  244. package/.scannerwork/scanner-report/syntax-highlightings-30.pb +143 -43
  245. package/.scannerwork/scanner-report/syntax-highlightings-42.pb +594 -14
  246. package/.scannerwork/scanner-report/syntax-highlightings-43.pb +154 -97
  247. package/.scannerwork/scanner-report/syntax-highlightings-44.pb +34 -619
  248. package/.scannerwork/scanner-report/syntax-highlightings-45.pb +134 -0
  249. package/.scannerwork/scanner-report/syntax-highlightings-47.pb +20 -104
  250. package/.scannerwork/scanner-report/syntax-highlightings-48.pb +59 -0
  251. package/.scannerwork/scanner-report/syntax-highlightings-49.pb +71 -61
  252. package/.scannerwork/scanner-report/syntax-highlightings-5.pb +214 -0
  253. package/.scannerwork/scanner-report/syntax-highlightings-50.pb +847 -89
  254. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +65 -15
  255. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +300 -21
  256. package/.scannerwork/scanner-report/syntax-highlightings-53.pb +46 -207
  257. package/.scannerwork/scanner-report/syntax-highlightings-54.pb +15 -45
  258. package/.scannerwork/scanner-report/syntax-highlightings-55.pb +301 -24
  259. package/.scannerwork/scanner-report/syntax-highlightings-56.pb +78 -32
  260. package/.scannerwork/scanner-report/syntax-highlightings-58.pb +103 -98
  261. package/.scannerwork/scanner-report/syntax-highlightings-6.pb +138 -127
  262. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +3662 -199
  263. package/.scannerwork/scanner-report/syntax-highlightings-64.pb +509 -809
  264. package/.scannerwork/scanner-report/syntax-highlightings-68.pb +917 -71
  265. package/.scannerwork/scanner-report/syntax-highlightings-7.pb +64 -0
  266. package/.scannerwork/scanner-report/syntax-highlightings-8.pb +64 -194
  267. package/.secrets.baseline +2 -2
  268. package/CHANGES.md +3 -0
  269. package/package.json +1 -1
  270. package/test-16-results.xml +152 -152
  271. package/test-18-results.xml +150 -150
  272. package/test-iam-18-results.xml +50 -50
  273. package/.scannerwork/scanner-report/changesets-31.pb +0 -1
  274. package/.scannerwork/scanner-report/changesets-32.pb +0 -1
  275. package/.scannerwork/scanner-report/changesets-33.pb +0 -1
  276. package/.scannerwork/scanner-report/changesets-34.pb +0 -1
  277. package/.scannerwork/scanner-report/changesets-35.pb +0 -1
  278. package/.scannerwork/scanner-report/changesets-36.pb +0 -1
  279. package/.scannerwork/scanner-report/changesets-37.pb +0 -1
  280. package/.scannerwork/scanner-report/changesets-38.pb +0 -1
  281. package/.scannerwork/scanner-report/changesets-39.pb +0 -1
  282. package/.scannerwork/scanner-report/changesets-40.pb +0 -1
  283. package/.scannerwork/scanner-report/changesets-41.pb +0 -1
  284. package/.scannerwork/scanner-report/changesets-57.pb +0 -1
  285. package/.scannerwork/scanner-report/changesets-59.pb +0 -1
  286. package/.scannerwork/scanner-report/changesets-60.pb +0 -1
  287. package/.scannerwork/scanner-report/changesets-61.pb +0 -1
  288. package/.scannerwork/scanner-report/changesets-62.pb +0 -1
  289. package/.scannerwork/scanner-report/changesets-67.pb +0 -1
  290. package/.scannerwork/scanner-report/changesets-68.pb +0 -1
  291. package/.scannerwork/scanner-report/component-31.pb +0 -1
  292. package/.scannerwork/scanner-report/component-32.pb +0 -1
  293. package/.scannerwork/scanner-report/component-33.pb +0 -1
  294. package/.scannerwork/scanner-report/component-34.pb +0 -1
  295. package/.scannerwork/scanner-report/component-35.pb +0 -1
  296. package/.scannerwork/scanner-report/component-36.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-39.pb +0 -1
  300. package/.scannerwork/scanner-report/component-4.pb +0 -1
  301. package/.scannerwork/scanner-report/component-40.pb +0 -1
  302. package/.scannerwork/scanner-report/component-41.pb +0 -1
  303. package/.scannerwork/scanner-report/component-57.pb +0 -1
  304. package/.scannerwork/scanner-report/component-59.pb +0 -1
  305. package/.scannerwork/scanner-report/component-60.pb +0 -1
  306. package/.scannerwork/scanner-report/component-62.pb +0 -1
  307. package/.scannerwork/scanner-report/component-65.pb +0 -1
  308. package/.scannerwork/scanner-report/component-67.pb +0 -1
  309. package/.scannerwork/scanner-report/coverages-31.pb +0 -0
  310. package/.scannerwork/scanner-report/coverages-32.pb +0 -0
  311. package/.scannerwork/scanner-report/coverages-33.pb +0 -0
  312. package/.scannerwork/scanner-report/coverages-37.pb +0 -0
  313. package/.scannerwork/scanner-report/coverages-38.pb +0 -0
  314. package/.scannerwork/scanner-report/coverages-40.pb +0 -0
  315. package/.scannerwork/scanner-report/coverages-41.pb +0 -0
  316. package/.scannerwork/scanner-report/coverages-57.pb +0 -0
  317. package/.scannerwork/scanner-report/coverages-60.pb +0 -0
  318. package/.scannerwork/scanner-report/duplications-31.pb +0 -2
  319. package/.scannerwork/scanner-report/duplications-33.pb +0 -3
  320. package/.scannerwork/scanner-report/duplications-36.pb +0 -3
  321. package/.scannerwork/scanner-report/duplications-38.pb +0 -3
  322. package/.scannerwork/scanner-report/duplications-54.pb +0 -2
  323. package/.scannerwork/scanner-report/duplications-59.pb +0 -2
  324. package/.scannerwork/scanner-report/measures-31.pb +0 -15
  325. package/.scannerwork/scanner-report/measures-32.pb +0 -0
  326. package/.scannerwork/scanner-report/measures-33.pb +0 -0
  327. package/.scannerwork/scanner-report/measures-34.pb +0 -0
  328. package/.scannerwork/scanner-report/measures-37.pb +0 -0
  329. package/.scannerwork/scanner-report/measures-38.pb +0 -0
  330. package/.scannerwork/scanner-report/measures-40.pb +0 -0
  331. package/.scannerwork/scanner-report/measures-41.pb +0 -0
  332. package/.scannerwork/scanner-report/measures-57.pb +0 -0
  333. package/.scannerwork/scanner-report/measures-60.pb +0 -0
  334. package/.scannerwork/scanner-report/measures-65.pb +0 -0
  335. package/.scannerwork/scanner-report/source-31.txt +0 -293
  336. package/.scannerwork/scanner-report/source-32.txt +0 -625
  337. package/.scannerwork/scanner-report/source-33.txt +0 -244
  338. package/.scannerwork/scanner-report/source-37.txt +0 -147
  339. package/.scannerwork/scanner-report/source-38.txt +0 -131
  340. package/.scannerwork/scanner-report/source-40.txt +0 -47
  341. package/.scannerwork/scanner-report/source-57.txt +0 -164
  342. package/.scannerwork/scanner-report/source-60.txt +0 -118
  343. package/.scannerwork/scanner-report/source-65.txt +0 -509
  344. package/.scannerwork/scanner-report/symbols-31.pb +0 -486
  345. package/.scannerwork/scanner-report/symbols-32.pb +0 -1254
  346. package/.scannerwork/scanner-report/symbols-33.pb +0 -394
  347. package/.scannerwork/scanner-report/symbols-34.pb +0 -17
  348. package/.scannerwork/scanner-report/symbols-37.pb +0 -85
  349. package/.scannerwork/scanner-report/symbols-38.pb +0 -97
  350. package/.scannerwork/scanner-report/symbols-40.pb +0 -27
  351. package/.scannerwork/scanner-report/symbols-41.pb +0 -9
  352. package/.scannerwork/scanner-report/symbols-57.pb +0 -126
  353. package/.scannerwork/scanner-report/symbols-60.pb +0 -30
  354. package/.scannerwork/scanner-report/syntax-highlightings-31.pb +0 -659
  355. package/.scannerwork/scanner-report/syntax-highlightings-32.pb +0 -887
  356. package/.scannerwork/scanner-report/syntax-highlightings-33.pb +0 -329
  357. package/.scannerwork/scanner-report/syntax-highlightings-34.pb +0 -63
  358. package/.scannerwork/scanner-report/syntax-highlightings-37.pb +0 -191
  359. package/.scannerwork/scanner-report/syntax-highlightings-38.pb +0 -182
  360. package/.scannerwork/scanner-report/syntax-highlightings-40.pb +0 -68
  361. package/.scannerwork/scanner-report/syntax-highlightings-57.pb +0 -213
  362. package/.scannerwork/scanner-report/syntax-highlightings-60.pb +0 -113
  363. package/.scannerwork/scanner-report/syntax-highlightings-65.pb +0 -3746
  364. /package/.scannerwork/scanner-report/{coverages-62.pb → coverages-17.pb} +0 -0
  365. /package/.scannerwork/scanner-report/{coverages-61.pb → coverages-20.pb} +0 -0
  366. /package/.scannerwork/scanner-report/{coverages-67.pb → coverages-22.pb} +0 -0
  367. /package/.scannerwork/scanner-report/{coverages-68.pb → coverages-23.pb} +0 -0
  368. /package/.scannerwork/scanner-report/{coverages-36.pb → coverages-26.pb} +0 -0
  369. /package/.scannerwork/scanner-report/{coverages-39.pb → coverages-27.pb} +0 -0
  370. /package/.scannerwork/scanner-report/{coverages-35.pb → coverages-46.pb} +0 -0
  371. /package/.scannerwork/scanner-report/{coverages-59.pb → coverages-9.pb} +0 -0
  372. /package/.scannerwork/scanner-report/{duplications-32.pb → duplications-10.pb} +0 -0
  373. /package/.scannerwork/scanner-report/{duplications-34.pb → duplications-17.pb} +0 -0
  374. /package/.scannerwork/scanner-report/{duplications-35.pb → duplications-18.pb} +0 -0
  375. /package/.scannerwork/scanner-report/{duplications-37.pb → duplications-19.pb} +0 -0
  376. /package/.scannerwork/scanner-report/{duplications-39.pb → duplications-20.pb} +0 -0
  377. /package/.scannerwork/scanner-report/{duplications-40.pb → duplications-22.pb} +0 -0
  378. /package/.scannerwork/scanner-report/{duplications-57.pb → duplications-23.pb} +0 -0
  379. /package/.scannerwork/scanner-report/{duplications-60.pb → duplications-25.pb} +0 -0
  380. /package/.scannerwork/scanner-report/{duplications-61.pb → duplications-27.pb} +0 -0
  381. /package/.scannerwork/scanner-report/{duplications-62.pb → duplications-45.pb} +0 -0
  382. /package/.scannerwork/scanner-report/{duplications-67.pb → duplications-46.pb} +0 -0
  383. /package/.scannerwork/scanner-report/{duplications-68.pb → duplications-48.pb} +0 -0
  384. /package/.scannerwork/scanner-report/{issues-40.pb → issues-28.pb} +0 -0
  385. /package/.scannerwork/scanner-report/{issues-15.pb → issues-42.pb} +0 -0
  386. /package/.scannerwork/scanner-report/{issues-43.pb → issues-45.pb} +0 -0
  387. /package/.scannerwork/scanner-report/{issues-33.pb → issues-52.pb} +0 -0
  388. /package/.scannerwork/scanner-report/{measures-62.pb → measures-17.pb} +0 -0
  389. /package/.scannerwork/scanner-report/{measures-4.pb → measures-2.pb} +0 -0
  390. /package/.scannerwork/scanner-report/{measures-67.pb → measures-22.pb} +0 -0
  391. /package/.scannerwork/scanner-report/{measures-36.pb → measures-26.pb} +0 -0
  392. /package/.scannerwork/scanner-report/{measures-39.pb → measures-27.pb} +0 -0
  393. /package/.scannerwork/scanner-report/{measures-35.pb → measures-46.pb} +0 -0
  394. /package/.scannerwork/scanner-report/{measures-59.pb → measures-9.pb} +0 -0
  395. /package/.scannerwork/scanner-report/{source-62.txt → source-17.txt} +0 -0
  396. /package/.scannerwork/scanner-report/{source-67.txt → source-22.txt} +0 -0
  397. /package/.scannerwork/scanner-report/{source-36.txt → source-26.txt} +0 -0
  398. /package/.scannerwork/scanner-report/{source-39.txt → source-27.txt} +0 -0
  399. /package/.scannerwork/scanner-report/{source-35.txt → source-46.txt} +0 -0
  400. /package/.scannerwork/scanner-report/{source-59.txt → source-9.txt} +0 -0
  401. /package/.scannerwork/scanner-report/{symbols-62.pb → symbols-17.pb} +0 -0
  402. /package/.scannerwork/scanner-report/{symbols-61.pb → symbols-20.pb} +0 -0
  403. /package/.scannerwork/scanner-report/{symbols-67.pb → symbols-22.pb} +0 -0
  404. /package/.scannerwork/scanner-report/{symbols-68.pb → symbols-23.pb} +0 -0
  405. /package/.scannerwork/scanner-report/{symbols-36.pb → symbols-26.pb} +0 -0
  406. /package/.scannerwork/scanner-report/{symbols-39.pb → symbols-27.pb} +0 -0
  407. /package/.scannerwork/scanner-report/{symbols-35.pb → symbols-46.pb} +0 -0
  408. /package/.scannerwork/scanner-report/{symbols-59.pb → symbols-9.pb} +0 -0
  409. /package/.scannerwork/scanner-report/{syntax-highlightings-62.pb → syntax-highlightings-17.pb} +0 -0
  410. /package/.scannerwork/scanner-report/{syntax-highlightings-67.pb → syntax-highlightings-22.pb} +0 -0
  411. /package/.scannerwork/scanner-report/{syntax-highlightings-36.pb → syntax-highlightings-26.pb} +0 -0
  412. /package/.scannerwork/scanner-report/{syntax-highlightings-39.pb → syntax-highlightings-27.pb} +0 -0
  413. /package/.scannerwork/scanner-report/{syntax-highlightings-35.pb → syntax-highlightings-46.pb} +0 -0
  414. /package/.scannerwork/scanner-report/{syntax-highlightings-59.pb → syntax-highlightings-9.pb} +0 -0
@@ -1,77 +1,167 @@
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 fs = require('fs');
19
- const cliutils = require('../includes/cliutils.js');
20
- const couchbackup = require('../app.js');
21
- const parser = require('../includes/parser.js');
22
- const debug = require('debug');
23
- const backupDebug = debug('couchbackup:backup');
24
- const backupBatchDebug = debug('couchbackup:backup:batch');
25
-
26
- backupDebug.enabled = true;
27
-
28
- const program = parser.parseBackupArgs();
29
-
30
- const databaseUrl = cliutils.databaseUrl(program.url, program.db);
31
- const opts = {
32
- bufferSize: program.bufferSize,
33
- log: program.log,
34
- mode: program.mode,
35
- parallelism: program.parallelism,
36
- requestTimeout: program.requestTimeout,
37
- resume: program.resume,
38
- iamApiKey: program.iamApiKey,
39
- iamTokenUrl: program.iamTokenUrl
40
- };
41
-
42
- // log configuration to console
43
- console.error('='.repeat(80));
44
- console.error('Performing backup on ' + databaseUrl.replace(/\/\/.+@/g, '//****:****@') + ' using configuration:');
45
- console.error(JSON.stringify(opts, null, 2).replace(/"iamApiKey": "[^"]+"/, '"iamApiKey": "****"'));
46
- console.error('='.repeat(80));
47
-
48
- backupBatchDebug.enabled = !program.quiet;
49
-
50
- let ws = process.stdout;
51
-
52
- // open output file
53
- if (program.output) {
54
- let flags = 'w';
55
- if (program.log && program.resume) {
56
- flags = 'a';
57
- }
58
- const fd = fs.openSync(program.output, flags);
59
- ws = fs.createWriteStream(null, { fd: fd });
60
- }
61
-
62
- backupDebug('Fetching all database changes...');
63
-
64
- return couchbackup.backup(
65
- databaseUrl,
66
- ws,
67
- opts,
68
- error.terminationCallback
69
- ).on('changes', function(batch) {
70
- backupBatchDebug('Total batches received:', batch + 1);
71
- }).on('written', function(obj) {
72
- backupBatchDebug('Written batch ID:', obj.batch, 'Total document revisions written:', obj.total, 'Time:', obj.time);
73
- }).on('error', function(e) {
74
- backupDebug('ERROR', e);
75
- }).on('finished', function(obj) {
76
- backupDebug('Finished - Total document revisions written:', obj.total);
77
- });
1
+ <testsuites name="test-iam">
2
+ <testsuite name="Basic backup and restore using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:37:27" time="4.909">
3
+ <testcase classname="test-iam.Basic backup and restore using API" name="should backup animaldb to a file correctly" time="1.102">
4
+ <system-out><![CDATA[{ total: 15 }
5
+ ]]></system-out>
6
+ </testcase>
7
+ <testcase classname="test-iam.Basic backup and restore using API" name="should restore animaldb to a database correctly" time="2.018">
8
+ <system-out><![CDATA[{ total: 15 }
9
+ ]]></system-out>
10
+ </testcase>
11
+ <testcase classname="test-iam.Basic backup and restore using API" name="should execute a shallow mode backup successfully" time="0.635">
12
+ <system-out><![CDATA[{ total: 11 }
13
+ ]]></system-out>
14
+ </testcase>
15
+ </testsuite>
16
+ <testsuite name="Basic backup and restore using API Buffer size tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:37:32" time="11.815">
17
+ <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="4.105">
18
+ <system-out><![CDATA[{ total: 15 }
19
+ { total: 15 }
20
+ ]]></system-out>
21
+ </testcase>
22
+ <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="3.447">
23
+ <system-out><![CDATA[{ total: 15 }
24
+ { total: 15 }
25
+ ]]></system-out>
26
+ </testcase>
27
+ <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.465">
28
+ <system-out><![CDATA[{ total: 15 }
29
+ { total: 15 }
30
+ ]]></system-out>
31
+ </testcase>
32
+ </testsuite>
33
+ <testsuite name="Basic backup and restore using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:37:43" time="5.389">
34
+ <testcase classname="test-iam.Basic backup and restore using CLI" name="should backup animaldb to a file correctly" time="1.295">
35
+ <system-out><![CDATA[Backup process close 0 null
36
+ ]]></system-out>
37
+ </testcase>
38
+ <testcase classname="test-iam.Basic backup and restore using CLI" name="should restore animaldb to a database correctly" time="2.225">
39
+ </testcase>
40
+ <testcase classname="test-iam.Basic backup and restore using CLI" name="should execute a shallow mode backup successfully" time="1.075">
41
+ <system-out><![CDATA[Backup process close 0 null
42
+ ]]></system-out>
43
+ </testcase>
44
+ </testsuite>
45
+ <testsuite name="Basic backup and restore using CLI Buffer size tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:37:49" time="14.187">
46
+ <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="4.675">
47
+ <system-out><![CDATA[Backup process close 0 null
48
+ ]]></system-out>
49
+ </testcase>
50
+ <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.309">
51
+ <system-out><![CDATA[Backup process close 0 null
52
+ ]]></system-out>
53
+ </testcase>
54
+ <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.408">
55
+ <system-out><![CDATA[Backup process close 0 null
56
+ ]]></system-out>
57
+ </testcase>
58
+ </testsuite>
59
+ <testsuite name="Compression tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:38:03" time="6.444">
60
+ <testcase classname="test-iam.Compression tests using API" name="should backup animaldb to a compressed file" time="0.844">
61
+ <system-out><![CDATA[{ total: 15 }
62
+ ]]></system-out>
63
+ </testcase>
64
+ <testcase classname="test-iam.Compression tests using API" name="should backup and restore animaldb via a compressed file" time="2.648">
65
+ <system-out><![CDATA[{ total: 15 }
66
+ { total: 15 }
67
+ ]]></system-out>
68
+ </testcase>
69
+ <testcase classname="test-iam.Compression tests using API" name="should backup and restore animaldb via a compressed stream" time="2.161">
70
+ <system-out><![CDATA[{ total: 15 }
71
+ { total: 15 }
72
+ ]]></system-out>
73
+ </testcase>
74
+ </testsuite>
75
+ <testsuite name="Compression tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:38:09" time="8.335">
76
+ <testcase classname="test-iam.Compression tests using CLI" name="should backup animaldb to a compressed file" time="1.411">
77
+ <system-out><![CDATA[Backup process close 0 null
78
+ ]]></system-out>
79
+ </testcase>
80
+ <testcase classname="test-iam.Compression tests using CLI" name="should backup and restore animaldb via a compressed file" time="3.532">
81
+ <system-out><![CDATA[Backup process close 0 null
82
+ ]]></system-out>
83
+ </testcase>
84
+ <testcase classname="test-iam.Compression tests using CLI" name="should backup and restore animaldb via a compressed stream" time="2.603">
85
+ <system-out><![CDATA[Backup process close 0 null
86
+ ]]></system-out>
87
+ </testcase>
88
+ </testsuite>
89
+ <testsuite name="End to end backup and restore using API" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:38:18" time="319.762">
90
+ <testcase classname="test-iam.End to end backup and restore using API" name="should backup and restore animaldb" time="2.109">
91
+ <system-out><![CDATA[{ total: 15 }
92
+ { total: 15 }
93
+ ]]></system-out>
94
+ </testcase>
95
+ <testcase classname="test-iam.End to end backup and restore using API" name="should backup and restore largedb1g #slow" time="316.882">
96
+ <system-out><![CDATA[{ total: 522948 }
97
+ { total: 522948 }
98
+ ]]></system-out>
99
+ </testcase>
100
+ </testsuite>
101
+ <testsuite name="End to end backup and restore using CLI" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:43:37" time="505.761">
102
+ <testcase classname="test-iam.End to end backup and restore using CLI" name="should backup and restore animaldb" time="3.082">
103
+ <system-out><![CDATA[Backup process close 0 null
104
+ ]]></system-out>
105
+ </testcase>
106
+ <testcase classname="test-iam.End to end backup and restore using CLI" name="should backup and restore largedb1g #slow" time="501.897">
107
+ <system-out><![CDATA[Backup process close 0 null
108
+ ]]></system-out>
109
+ </testcase>
110
+ </testsuite>
111
+ <testsuite name="Encryption tests" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:52:03" time="4.14">
112
+ <testcase classname="test-iam.Encryption tests" name="should backup and restore animaldb via an encrypted file" time="3.867">
113
+ <system-out><![CDATA[Backup process close 0 null
114
+ ]]></system-out>
115
+ </testcase>
116
+ </testsuite>
117
+ <testsuite name="Write error tests" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:52:07" time="0.277">
118
+ <testcase classname="test-iam.Write error tests" name="calls callback with error set when stream is not writeable" time="0.011">
119
+ </testcase>
120
+ </testsuite>
121
+ <testsuite name="Event tests" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:52:08" time="2.334">
122
+ <testcase classname="test-iam.Event tests" name="should get a finished event when using stdout" time="0.84">
123
+ </testcase>
124
+ <testcase classname="test-iam.Event tests" name="should get a finished event when using file output" time="0.947">
125
+ </testcase>
126
+ </testsuite>
127
+ <testsuite name="Resume tests using API" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:52:10" time="5.239">
128
+ <testcase classname="test-iam.Resume tests using API" name="should create a log file" time="0.907">
129
+ <system-out><![CDATA[{ total: 15 }
130
+ ]]></system-out>
131
+ </testcase>
132
+ <testcase classname="test-iam.Resume tests using API" name="should restore corrupted animaldb to a database correctly" time="1.758">
133
+ <system-out><![CDATA[{ total: 15 }
134
+ ]]></system-out>
135
+ </testcase>
136
+ <testcase classname="test-iam.Resume tests using API" name="should restore resumed animaldb with blank line to a database correctly" time="1.711">
137
+ <system-out><![CDATA[{ total: 15 }
138
+ ]]></system-out>
139
+ </testcase>
140
+ </testsuite>
141
+ <testsuite name="Resume tests using CLI" tests="3" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:52:15" time="6.496">
142
+ <testcase classname="test-iam.Resume tests using CLI" name="should create a log file" time="1.321">
143
+ <system-out><![CDATA[Backup process close 0 null
144
+ ]]></system-out>
145
+ </testcase>
146
+ <testcase classname="test-iam.Resume tests using CLI" name="should restore corrupted animaldb to a database correctly" time="2.165">
147
+ </testcase>
148
+ <testcase classname="test-iam.Resume tests using CLI" name="should restore resumed animaldb with blank line to a database correctly" time="2.192">
149
+ </testcase>
150
+ </testsuite>
151
+ <testsuite name="Resume tests" tests="2" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:52:22" time="33.167">
152
+ <testcase classname="test-iam.Resume tests" name="should correctly backup and restore backup10m" time="15.738">
153
+ <system-out><![CDATA[Backup process close null SIGTERM
154
+ Backup process close 0 null
155
+ ]]></system-out>
156
+ </testcase>
157
+ <testcase classname="test-iam.Resume tests" name="should correctly backup and restore backup10m using --output" time="16.886">
158
+ <system-out><![CDATA[Backup process close null SIGTERM
159
+ Backup process close 0 null
160
+ ]]></system-out>
161
+ </testcase>
162
+ </testsuite>
163
+ <testsuite name="Longer spool changes checks" tests="1" errors="0" failures="0" skipped="0" timestamp="2023-09-04T08:52:55" time="58.749">
164
+ <testcase classname="test-iam.Longer spool changes checks" name="#slow should keep collecting changes (25M)" time="58.479">
165
+ </testcase>
166
+ </testsuite>
167
+ </testsuites>
@@ -0,0 +1,46 @@
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
+ 'use strict';
15
+
16
+ // stolen from http://strongloop.com/strongblog/practical-examples-of-the-new-node-js-streams-api/
17
+ const stream = require('stream');
18
+
19
+ module.exports = function() {
20
+ const liner = new stream.Transform({ objectMode: true });
21
+
22
+ liner._transform = function(chunk, encoding, done) {
23
+ let data = chunk.toString();
24
+ if (this._lastLineData) {
25
+ data = this._lastLineData + data;
26
+ }
27
+
28
+ const lines = data.split('\n');
29
+ this._lastLineData = lines.splice(lines.length - 1, 1)[0];
30
+
31
+ for (const i in lines) {
32
+ this.push(lines[i]);
33
+ }
34
+ done();
35
+ };
36
+
37
+ liner._flush = function(done) {
38
+ if (this._lastLineData) {
39
+ this.push(this._lastLineData);
40
+ }
41
+ this._lastLineData = null;
42
+ done();
43
+ };
44
+
45
+ return liner;
46
+ };
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2018 IBM Corp. All rights reserved.
1
+ // Copyright © 2017, 2022 IBM Corp. All rights reserved.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -11,180 +11,70 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
-
15
- // Small script which backs up a Cloudant or CouchDB database to an S3
16
- // bucket, using an intermediary file on disk.
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
-
21
14
  'use strict';
22
15
 
23
- const stream = require('stream');
24
- const fs = require('fs');
25
- const url = require('url');
26
-
27
- const AWS = require('aws-sdk');
28
- const couchbackup = require('@cloudant/couchbackup');
29
- const debug = require('debug')('s3-backup');
30
- const tmp = require('tmp');
31
- const VError = require('verror').VError;
32
-
33
- /*
34
- Main function, run from base of file.
35
- */
36
- function main() {
37
- const argv = require('yargs')
38
- .usage('Usage: $0 [options]')
39
- .example('$0 -s https://user:pass@host/db -b <bucket>', 'Backup db to bucket')
40
- .options({
41
- source: { alias: 's', nargs: 1, demandOption: true, describe: 'Source database URL' },
42
- bucket: { alias: 'b', nargs: 1, demandOption: true, describe: 'Destination bucket' },
43
- prefix: { alias: 'p', nargs: 1, describe: 'Prefix for backup object key', default: 'couchbackup' },
44
- s3url: { nargs: 1, describe: 'S3 endpoint URL' },
45
- awsprofile: { nargs: 1, describe: 'The profile section to use in the ~/.aws/credentials file', default: 'default' }
46
- })
47
- .help('h').alias('h', 'help')
48
- .epilog('Copyright (C) IBM 2017')
49
- .argv;
50
-
51
- const sourceUrl = argv.source;
52
- const backupBucket = argv.bucket;
53
- const backupName = new url.URL(sourceUrl).pathname.split('/').filter(function(x) { return x; }).join('-');
54
- const backupKeyPrefix = `${argv.prefix}-${backupName}`;
55
-
56
- const backupKey = `${backupKeyPrefix}-${new Date().toISOString()}`;
57
- const backupTmpFile = tmp.fileSync();
58
-
59
- const s3Endpoint = argv.s3url;
60
- const awsProfile = argv.awsprofile;
61
-
62
- // Creds are from ~/.aws/credentials, environment etc. (see S3 docs).
63
- const awsOpts = {
64
- signatureVersion: 'v4',
65
- credentials: new AWS.SharedIniFileCredentials({ profile: awsProfile })
66
- };
67
- if (typeof s3Endpoint !== 'undefined') {
68
- awsOpts.endpoint = new AWS.Endpoint(s3Endpoint);
69
- }
70
- const s3 = new AWS.S3(awsOpts);
71
-
72
- debug(`Creating a new backup of ${s(sourceUrl)} at ${backupBucket}/${backupKey}...`);
73
- bucketAccessible(s3, backupBucket)
74
- .then(() => {
75
- return createBackupFile(sourceUrl, backupTmpFile.name);
76
- })
77
- .then(() => {
78
- return uploadNewBackup(s3, backupTmpFile.name, backupBucket, backupKey);
79
- })
80
- .then(() => {
81
- debug('Backup successful!');
82
- backupTmpFile.removeCallback();
83
- debug('done.');
84
- })
85
- .catch((reason) => {
86
- debug(`Error: ${reason}`);
87
- });
88
- }
89
-
90
- /**
91
- * Return a promise that resolves if the bucket is available and
92
- * rejects if not.
93
- *
94
- * @param {any} s3 S3 client object
95
- * @param {any} bucketName Bucket name
96
- * @returns Promise
97
- */
98
- function bucketAccessible(s3, bucketName) {
99
- return new Promise(function(resolve, reject) {
100
- const params = {
101
- Bucket: bucketName
102
- };
103
- s3.headBucket(params, function(err, data) {
104
- if (err) {
105
- reject(new VError(err, 'S3 bucket not accessible'));
106
- } else {
107
- resolve();
108
- }
109
- });
110
- });
111
- }
112
-
113
- /**
114
- * Use couchbackup to create a backup of the specified database to a file path.
115
- *
116
- * @param {any} sourceUrl Database URL
117
- * @param {any} backupTmpFilePath Path to write file
118
- * @returns Promise
119
- */
120
- function createBackupFile(sourceUrl, backupTmpFilePath) {
121
- return new Promise((resolve, reject) => {
122
- couchbackup.backup(
123
- sourceUrl,
124
- fs.createWriteStream(backupTmpFilePath),
125
- (err) => {
126
- if (err) {
127
- return reject(new VError(err, 'CouchBackup process failed'));
128
- }
129
- debug('couchbackup to file done; uploading to S3');
130
- resolve('creating backup file complete');
131
- }
132
- );
133
- });
134
- }
135
-
136
- /**
137
- * Upload a backup file to an S3 bucket.
138
- *
139
- * @param {any} s3 Object store client
140
- * @param {any} backupTmpFilePath Path of backup file to write.
141
- * @param {any} bucket Object store bucket name
142
- * @param {any} key Object store key name
143
- * @returns Promise
144
- */
145
- function uploadNewBackup(s3, backupTmpFilePath, bucket, key) {
146
- return new Promise((resolve, reject) => {
147
- debug(`Uploading from ${backupTmpFilePath} to ${bucket}/${key}`);
148
-
149
- function uploadFromStream(s3, bucket, key) {
150
- const pass = new stream.PassThrough();
151
-
152
- const params = {
153
- Bucket: bucket,
154
- Key: key,
155
- Body: pass
156
- };
157
- s3.upload(params, function(err, data) {
158
- debug('S3 upload done');
159
- if (err) {
160
- debug(err);
161
- reject(new VError(err, 'Upload failed'));
162
- return;
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;
27
+
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
+ }
51
+
52
+ const docs = [];
53
+ body.rows.forEach(function(doc) {
54
+ docs.push(doc.doc);
55
+ });
56
+
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();
163
67
  }
164
- debug('Upload succeeded');
165
- debug(data);
166
- resolve();
167
- }).httpUploadProgress = (progress) => {
168
- debug(`S3 upload progress: ${progress}`);
169
- };
170
-
171
- return pass;
172
- }
173
-
174
- const inputStream = fs.createReadStream(backupTmpFilePath);
175
- const s3Stream = uploadFromStream(s3, bucket, key);
176
- inputStream.pipe(s3Stream);
177
- });
178
- }
179
-
180
- /**
181
- * Remove creds from a URL, e.g., before logging
182
- *
183
- * @param {string} url URL to safen
184
- */
185
- function s(originalUrl) {
186
- const parts = new url.URL(originalUrl);
187
- return url.format(parts, { auth: false });
188
- }
189
-
190
- main();
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
+ );
78
+
79
+ return ee;
80
+ };
@@ -0,0 +1,59 @@
1
+ 
2
+  $$ 
3
+  HH "
4
+  MM 2
5
+  88 "WW gg ii <
6
+  ,, EE VV YY ^^ 
7
+  FF
8
+  !$$) ,
9
+ # -++ #--) 3
10
+ / 1// 88
11
+ F
12
+ 3 ;KK PP WW __M Ugg
13
+ ii
14
+ <
15
+ !! ++ ++3 9,, -- ;; 2
16
+ "" --= B..# (// 00 <
17
+ ##
18
+ $$ .. JJ OO UU __ ee (
19
+ %%
20
+ ''
21
+ ** << SS 
22
+ **! (++( /
23
+ --
24
+ 55 MM Z
25
+ 55 66 77
26
+ 88\ ]99 :: == >> ?? 
27
+ :: ;; 
28
+ DD \\ !nn 
29
+ DD EE, 1FF> C
30
+ GG HH 
31
+ II #KK 
32
+ NN #PP <
33
+ dd
34
  ff ff gg. 1hh iiZ ]
35
+ -- --C D
36
+ ++G H11 
37
+ *** +22 
38
+ 77 99 
39
+ :: :: 
40
+ 99 == 
41
+ == @@ 
42
+ 66 AA 
43
+ 55 BB 
44
+ FF* +FFf g
45
+ II% &LL
46
+ 
47
+ NN% &QQ
48
+ 
49
+ TT XX
50
+ ZZ ]] 
51
+ ]] `` 
52
+ XX aa
53
+ RR# $bb
54
+ 
55
+ GG cc 
56
+ ff- .hh 
57
+ hh5 6jj 
58
+ dd kk 
59
+ DD! "ll 
60
+ = >oo