@cloudant/couchbackup 2.9.16 → 2.9.17-SNAPSHOT.185
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.
- package/.scannerwork/report-task.txt +2 -2
- package/.scannerwork/scanner-report/analysis-cache2.pb +0 -0
- package/.scannerwork/scanner-report/analysis-warnings.pb +2 -2
- package/.scannerwork/scanner-report/changesets-23.pb +1 -0
- package/.scannerwork/scanner-report/changesets-24.pb +1 -0
- package/.scannerwork/scanner-report/changesets-26.pb +1 -0
- package/.scannerwork/scanner-report/changesets-27.pb +1 -0
- package/.scannerwork/scanner-report/changesets-28.pb +1 -0
- package/.scannerwork/scanner-report/changesets-29.pb +1 -0
- package/.scannerwork/scanner-report/changesets-53.pb +1 -0
- package/.scannerwork/scanner-report/changesets-55.pb +1 -0
- package/.scannerwork/scanner-report/changesets-56.pb +1 -0
- package/.scannerwork/scanner-report/changesets-57.pb +1 -0
- package/.scannerwork/scanner-report/changesets-58.pb +1 -0
- package/.scannerwork/scanner-report/changesets-59.pb +1 -0
- package/.scannerwork/scanner-report/changesets-62.pb +1 -0
- package/.scannerwork/scanner-report/changesets-63.pb +1 -0
- package/.scannerwork/scanner-report/changesets-67.pb +1 -0
- package/.scannerwork/scanner-report/changesets-69.pb +1 -0
- package/.scannerwork/scanner-report/component-1.pb +1 -2
- package/.scannerwork/scanner-report/component-11.pb +1 -1
- package/.scannerwork/scanner-report/component-12.pb +1 -1
- package/.scannerwork/scanner-report/component-13.pb +1 -1
- package/.scannerwork/scanner-report/component-14.pb +1 -1
- package/.scannerwork/scanner-report/component-15.pb +1 -1
- package/.scannerwork/scanner-report/component-16.pb +1 -1
- package/.scannerwork/scanner-report/component-17.pb +1 -1
- package/.scannerwork/scanner-report/component-18.pb +1 -1
- package/.scannerwork/scanner-report/component-19.pb +1 -1
- package/.scannerwork/scanner-report/component-20.pb +1 -1
- package/.scannerwork/scanner-report/component-21.pb +1 -1
- package/.scannerwork/scanner-report/component-22.pb +1 -1
- package/.scannerwork/scanner-report/component-23.pb +1 -0
- package/.scannerwork/scanner-report/component-24.pb +1 -0
- package/.scannerwork/scanner-report/component-25.pb +1 -0
- package/.scannerwork/scanner-report/component-26.pb +1 -0
- package/.scannerwork/scanner-report/component-27.pb +1 -0
- package/.scannerwork/scanner-report/component-28.pb +1 -0
- package/.scannerwork/scanner-report/component-29.pb +1 -0
- package/.scannerwork/scanner-report/component-3.pb +1 -1
- package/.scannerwork/scanner-report/component-41.pb +1 -1
- package/.scannerwork/scanner-report/component-42.pb +1 -1
- package/.scannerwork/scanner-report/component-43.pb +1 -1
- package/.scannerwork/scanner-report/component-44.pb +1 -1
- package/.scannerwork/scanner-report/component-45.pb +1 -1
- package/.scannerwork/scanner-report/component-46.pb +1 -1
- package/.scannerwork/scanner-report/component-47.pb +1 -1
- package/.scannerwork/scanner-report/component-48.pb +1 -1
- package/.scannerwork/scanner-report/component-49.pb +1 -1
- package/.scannerwork/scanner-report/component-50.pb +1 -1
- package/.scannerwork/scanner-report/component-51.pb +1 -1
- package/.scannerwork/scanner-report/component-52.pb +1 -1
- package/.scannerwork/scanner-report/component-53.pb +1 -0
- package/.scannerwork/scanner-report/component-54.pb +1 -1
- package/.scannerwork/scanner-report/component-55.pb +1 -1
- package/.scannerwork/scanner-report/component-56.pb +1 -0
- package/.scannerwork/scanner-report/component-57.pb +1 -0
- package/.scannerwork/scanner-report/component-58.pb +1 -0
- package/.scannerwork/scanner-report/component-59.pb +1 -0
- package/.scannerwork/scanner-report/component-60.pb +1 -1
- package/.scannerwork/scanner-report/component-62.pb +1 -0
- package/.scannerwork/scanner-report/component-63.pb +1 -0
- package/.scannerwork/scanner-report/component-67.pb +1 -0
- package/.scannerwork/scanner-report/component-69.pb +1 -0
- package/.scannerwork/scanner-report/component-70.pb +1 -0
- package/.scannerwork/scanner-report/component-9.pb +1 -1
- package/.scannerwork/scanner-report/coverages-11.pb +0 -0
- package/.scannerwork/scanner-report/coverages-12.pb +0 -0
- package/.scannerwork/scanner-report/coverages-13.pb +0 -0
- package/.scannerwork/scanner-report/coverages-14.pb +0 -0
- package/.scannerwork/scanner-report/coverages-15.pb +0 -0
- package/.scannerwork/scanner-report/coverages-16.pb +0 -0
- package/.scannerwork/scanner-report/coverages-17.pb +0 -0
- package/.scannerwork/scanner-report/coverages-18.pb +0 -0
- package/.scannerwork/scanner-report/coverages-19.pb +0 -0
- package/.scannerwork/scanner-report/coverages-20.pb +0 -0
- package/.scannerwork/scanner-report/coverages-21.pb +0 -0
- package/.scannerwork/scanner-report/coverages-22.pb +0 -0
- package/.scannerwork/scanner-report/coverages-24.pb +0 -0
- package/.scannerwork/scanner-report/coverages-27.pb +0 -0
- package/.scannerwork/scanner-report/coverages-28.pb +0 -0
- package/.scannerwork/scanner-report/coverages-41.pb +0 -0
- package/.scannerwork/scanner-report/coverages-42.pb +0 -0
- package/.scannerwork/scanner-report/coverages-43.pb +0 -0
- package/.scannerwork/scanner-report/coverages-44.pb +0 -0
- package/.scannerwork/scanner-report/coverages-45.pb +0 -0
- package/.scannerwork/scanner-report/coverages-46.pb +0 -0
- package/.scannerwork/scanner-report/coverages-47.pb +0 -0
- package/.scannerwork/scanner-report/coverages-48.pb +0 -0
- package/.scannerwork/scanner-report/coverages-49.pb +0 -0
- package/.scannerwork/scanner-report/coverages-50.pb +0 -0
- package/.scannerwork/scanner-report/coverages-51.pb +0 -0
- package/.scannerwork/scanner-report/coverages-52.pb +0 -0
- package/.scannerwork/scanner-report/coverages-54.pb +0 -0
- package/.scannerwork/scanner-report/coverages-56.pb +0 -0
- package/.scannerwork/scanner-report/coverages-58.pb +0 -0
- package/.scannerwork/scanner-report/coverages-59.pb +0 -0
- package/.scannerwork/scanner-report/coverages-60.pb +0 -0
- package/.scannerwork/scanner-report/coverages-62.pb +0 -0
- package/.scannerwork/scanner-report/coverages-69.pb +0 -0
- package/.scannerwork/scanner-report/duplications-12.pb +0 -3
- package/.scannerwork/scanner-report/duplications-15.pb +2 -0
- package/.scannerwork/scanner-report/duplications-24.pb +2 -0
- package/.scannerwork/scanner-report/duplications-43.pb +2 -0
- package/.scannerwork/scanner-report/duplications-50.pb +0 -2
- package/.scannerwork/scanner-report/duplications-51.pb +3 -2
- package/.scannerwork/scanner-report/duplications-66.pb +1 -1
- package/.scannerwork/scanner-report/measures-11.pb +0 -0
- package/.scannerwork/scanner-report/measures-12.pb +0 -0
- package/.scannerwork/scanner-report/measures-13.pb +0 -0
- package/.scannerwork/scanner-report/measures-14.pb +0 -0
- package/.scannerwork/scanner-report/measures-15.pb +0 -0
- package/.scannerwork/scanner-report/measures-16.pb +0 -0
- package/.scannerwork/scanner-report/measures-17.pb +0 -0
- package/.scannerwork/scanner-report/measures-18.pb +0 -0
- package/.scannerwork/scanner-report/measures-19.pb +0 -0
- package/.scannerwork/scanner-report/measures-20.pb +0 -0
- package/.scannerwork/scanner-report/measures-21.pb +0 -0
- package/.scannerwork/scanner-report/measures-22.pb +0 -0
- package/.scannerwork/scanner-report/measures-24.pb +0 -0
- package/.scannerwork/scanner-report/measures-27.pb +0 -0
- package/.scannerwork/scanner-report/measures-28.pb +0 -0
- package/.scannerwork/scanner-report/measures-41.pb +0 -0
- package/.scannerwork/scanner-report/measures-42.pb +0 -0
- package/.scannerwork/scanner-report/measures-43.pb +0 -0
- package/.scannerwork/scanner-report/measures-44.pb +0 -0
- package/.scannerwork/scanner-report/measures-45.pb +0 -0
- package/.scannerwork/scanner-report/measures-46.pb +0 -0
- package/.scannerwork/scanner-report/measures-47.pb +0 -0
- package/.scannerwork/scanner-report/measures-48.pb +0 -0
- package/.scannerwork/scanner-report/measures-49.pb +0 -0
- package/.scannerwork/scanner-report/measures-50.pb +0 -0
- package/.scannerwork/scanner-report/measures-51.pb +0 -0
- package/.scannerwork/scanner-report/measures-52.pb +0 -0
- package/.scannerwork/scanner-report/measures-54.pb +0 -0
- package/.scannerwork/scanner-report/measures-55.pb +0 -0
- package/.scannerwork/scanner-report/measures-56.pb +0 -0
- package/.scannerwork/scanner-report/measures-58.pb +0 -0
- package/.scannerwork/scanner-report/measures-59.pb +0 -0
- package/.scannerwork/scanner-report/measures-60.pb +0 -0
- package/.scannerwork/scanner-report/measures-62.pb +0 -0
- package/.scannerwork/scanner-report/measures-69.pb +0 -0
- package/.scannerwork/scanner-report/measures-9.pb +0 -0
- package/.scannerwork/scanner-report/metadata.pb +0 -0
- package/.scannerwork/scanner-report/source-11.txt +25 -16
- package/.scannerwork/scanner-report/source-12.txt +32 -199
- package/.scannerwork/scanner-report/source-13.txt +17 -87
- package/.scannerwork/scanner-report/source-14.txt +115 -116
- package/.scannerwork/scanner-report/source-15.txt +66 -423
- package/.scannerwork/scanner-report/source-16.txt +64 -277
- package/.scannerwork/scanner-report/source-17.txt +247 -66
- package/.scannerwork/scanner-report/source-18.txt +104 -92
- package/.scannerwork/scanner-report/source-19.txt +45 -120
- package/.scannerwork/scanner-report/source-20.txt +89 -41
- package/.scannerwork/scanner-report/source-21.txt +148 -24
- package/.scannerwork/scanner-report/source-22.txt +162 -25
- package/.scannerwork/scanner-report/source-24.txt +75 -0
- package/.scannerwork/scanner-report/{source-38.txt → source-25.txt} +143 -143
- package/.scannerwork/scanner-report/source-27.txt +65 -0
- package/.scannerwork/scanner-report/source-28.txt +100 -0
- package/.scannerwork/scanner-report/source-3.txt +152 -152
- package/.scannerwork/scanner-report/source-41.txt +315 -32
- package/.scannerwork/scanner-report/source-42.txt +23 -63
- package/.scannerwork/scanner-report/source-43.txt +169 -45
- package/.scannerwork/scanner-report/source-44.txt +23 -164
- package/.scannerwork/scanner-report/source-45.txt +116 -104
- package/.scannerwork/scanner-report/source-46.txt +14 -26
- package/.scannerwork/scanner-report/source-47.txt +48 -99
- package/.scannerwork/scanner-report/source-48.txt +52 -141
- package/.scannerwork/scanner-report/source-49.txt +254 -242
- package/.scannerwork/scanner-report/source-50.txt +114 -72
- package/.scannerwork/scanner-report/source-51.txt +198 -60
- package/.scannerwork/scanner-report/source-52.txt +134 -14
- package/.scannerwork/scanner-report/source-54.txt +80 -25
- package/.scannerwork/scanner-report/source-55.txt +187 -424
- package/.scannerwork/scanner-report/{source-5.txt → source-56.txt} +10 -7
- package/.scannerwork/scanner-report/source-58.txt +106 -0
- package/.scannerwork/scanner-report/source-59.txt +449 -0
- package/.scannerwork/scanner-report/source-60.txt +25 -44
- package/.scannerwork/scanner-report/source-62.txt +60 -0
- package/.scannerwork/scanner-report/source-69.txt +46 -0
- package/.scannerwork/scanner-report/{source-68.txt → source-70.txt} +49 -49
- package/.scannerwork/scanner-report/source-9.txt +424 -183
- package/.scannerwork/scanner-report/symbols-11.pb +18 -9
- package/.scannerwork/scanner-report/symbols-12.pb +20 -264
- package/.scannerwork/scanner-report/symbols-13.pb +13 -57
- package/.scannerwork/scanner-report/symbols-14.pb +33 -86
- package/.scannerwork/scanner-report/symbols-15.pb +43 -789
- package/.scannerwork/scanner-report/symbols-16.pb +44 -426
- package/.scannerwork/scanner-report/symbols-17.pb +354 -69
- package/.scannerwork/scanner-report/symbols-18.pb +30 -59
- package/.scannerwork/scanner-report/symbols-19.pb +19 -71
- package/.scannerwork/scanner-report/symbols-20.pb +45 -32
- package/.scannerwork/scanner-report/symbols-21.pb +126 -23
- package/.scannerwork/scanner-report/symbols-22.pb +143 -30
- package/.scannerwork/scanner-report/symbols-24.pb +42 -0
- package/.scannerwork/scanner-report/symbols-27.pb +33 -0
- package/.scannerwork/scanner-report/symbols-28.pb +69 -0
- package/.scannerwork/scanner-report/symbols-41.pb +353 -20
- package/.scannerwork/scanner-report/symbols-42.pb +23 -46
- package/.scannerwork/scanner-report/symbols-43.pb +203 -19
- package/.scannerwork/scanner-report/symbols-44.pb +9 -144
- package/.scannerwork/scanner-report/symbols-45.pb +86 -30
- package/.scannerwork/scanner-report/symbols-46.pb +8 -18
- package/.scannerwork/scanner-report/symbols-47.pb +23 -45
- package/.scannerwork/scanner-report/symbols-48.pb +39 -126
- package/.scannerwork/scanner-report/symbols-49.pb +402 -328
- package/.scannerwork/scanner-report/symbols-50.pb +71 -44
- package/.scannerwork/scanner-report/symbols-51.pb +264 -42
- package/.scannerwork/scanner-report/symbols-52.pb +92 -13
- package/.scannerwork/scanner-report/symbols-54.pb +58 -7
- package/.scannerwork/scanner-report/symbols-56.pb +9 -0
- package/.scannerwork/scanner-report/symbols-58.pb +59 -0
- package/.scannerwork/scanner-report/symbols-59.pb +790 -0
- package/.scannerwork/scanner-report/symbols-60.pb +31 -21
- package/.scannerwork/scanner-report/symbols-62.pb +21 -0
- package/.scannerwork/scanner-report/symbols-69.pb +7 -0
- package/.scannerwork/scanner-report/syntax-highlightings-11.pb +23 -25
- package/.scannerwork/scanner-report/syntax-highlightings-12.pb +33 -266
- package/.scannerwork/scanner-report/syntax-highlightings-13.pb +15 -124
- package/.scannerwork/scanner-report/syntax-highlightings-14.pb +94 -90
- package/.scannerwork/scanner-report/syntax-highlightings-15.pb +57 -591
- package/.scannerwork/scanner-report/syntax-highlightings-16.pb +62 -687
- package/.scannerwork/scanner-report/syntax-highlightings-17.pb +245 -67
- package/.scannerwork/scanner-report/syntax-highlightings-18.pb +83 -148
- package/.scannerwork/scanner-report/syntax-highlightings-19.pb +23 -145
- package/.scannerwork/scanner-report/syntax-highlightings-20.pb +93 -77
- package/.scannerwork/scanner-report/syntax-highlightings-21.pb +177 -20
- package/.scannerwork/scanner-report/syntax-highlightings-22.pb +207 -33
- package/.scannerwork/scanner-report/syntax-highlightings-24.pb +81 -0
- package/.scannerwork/scanner-report/{syntax-highlightings-38.pb → syntax-highlightings-25.pb} +103 -100
- package/.scannerwork/scanner-report/syntax-highlightings-27.pb +110 -0
- package/.scannerwork/scanner-report/syntax-highlightings-28.pb +107 -0
- package/.scannerwork/scanner-report/syntax-highlightings-3.pb +107 -108
- package/.scannerwork/scanner-report/syntax-highlightings-41.pb +590 -34
- package/.scannerwork/scanner-report/syntax-highlightings-42.pb +22 -61
- package/.scannerwork/scanner-report/syntax-highlightings-43.pb +246 -25
- package/.scannerwork/scanner-report/syntax-highlightings-44.pb +27 -209
- package/.scannerwork/scanner-report/syntax-highlightings-45.pb +95 -83
- package/.scannerwork/scanner-report/syntax-highlightings-46.pb +20 -23
- package/.scannerwork/scanner-report/syntax-highlightings-47.pb +67 -96
- package/.scannerwork/scanner-report/syntax-highlightings-48.pb +64 -176
- package/.scannerwork/scanner-report/syntax-highlightings-49.pb +606 -171
- package/.scannerwork/scanner-report/syntax-highlightings-50.pb +145 -57
- package/.scannerwork/scanner-report/syntax-highlightings-51.pb +263 -47
- package/.scannerwork/scanner-report/syntax-highlightings-52.pb +208 -16
- package/.scannerwork/scanner-report/syntax-highlightings-54.pb +119 -27
- package/.scannerwork/scanner-report/syntax-highlightings-55.pb +289 -3261
- package/.scannerwork/scanner-report/syntax-highlightings-56.pb +54 -0
- package/.scannerwork/scanner-report/syntax-highlightings-58.pb +178 -0
- package/.scannerwork/scanner-report/syntax-highlightings-59.pb +627 -0
- package/.scannerwork/scanner-report/syntax-highlightings-60.pb +48 -61
- package/.scannerwork/scanner-report/syntax-highlightings-62.pb +82 -0
- package/.scannerwork/scanner-report/syntax-highlightings-69.pb +62 -0
- package/.scannerwork/scanner-report/{syntax-highlightings-68.pb → syntax-highlightings-70.pb} +14 -13
- package/.scannerwork/scanner-report/syntax-highlightings-9.pb +3286 -226
- package/package.json +1 -1
- package/test-18-results.xml +147 -147
- package/test-20-results.xml +141 -141
- package/test-21-results.xml +143 -143
- package/test-iam-20-results.xml +49 -49
- package/.scannerwork/scanner-report/changesets-10.pb +0 -2
- package/.scannerwork/scanner-report/changesets-2.pb +0 -1
- package/.scannerwork/scanner-report/changesets-34.pb +0 -1
- package/.scannerwork/scanner-report/changesets-35.pb +0 -1
- package/.scannerwork/scanner-report/changesets-36.pb +0 -1
- package/.scannerwork/scanner-report/changesets-37.pb +0 -1
- package/.scannerwork/scanner-report/changesets-39.pb +0 -1
- package/.scannerwork/scanner-report/changesets-4.pb +0 -1
- package/.scannerwork/scanner-report/changesets-40.pb +0 -1
- package/.scannerwork/scanner-report/changesets-5.pb +0 -1
- package/.scannerwork/scanner-report/changesets-6.pb +0 -1
- package/.scannerwork/scanner-report/changesets-61.pb +0 -1
- package/.scannerwork/scanner-report/changesets-64.pb +0 -1
- package/.scannerwork/scanner-report/changesets-7.pb +0 -1
- package/.scannerwork/scanner-report/changesets-8.pb +0 -1
- package/.scannerwork/scanner-report/changesets-9.pb +0 -1
- package/.scannerwork/scanner-report/component-10.pb +0 -2
- package/.scannerwork/scanner-report/component-2.pb +0 -1
- package/.scannerwork/scanner-report/component-34.pb +0 -1
- package/.scannerwork/scanner-report/component-35.pb +0 -1
- package/.scannerwork/scanner-report/component-36.pb +0 -1
- package/.scannerwork/scanner-report/component-37.pb +0 -1
- package/.scannerwork/scanner-report/component-38.pb +0 -1
- package/.scannerwork/scanner-report/component-39.pb +0 -1
- package/.scannerwork/scanner-report/component-4.pb +0 -1
- package/.scannerwork/scanner-report/component-40.pb +0 -1
- package/.scannerwork/scanner-report/component-5.pb +0 -1
- package/.scannerwork/scanner-report/component-6.pb +0 -1
- package/.scannerwork/scanner-report/component-61.pb +0 -1
- package/.scannerwork/scanner-report/component-64.pb +0 -1
- package/.scannerwork/scanner-report/component-68.pb +0 -1
- package/.scannerwork/scanner-report/component-7.pb +0 -1
- package/.scannerwork/scanner-report/component-8.pb +0 -1
- package/.scannerwork/scanner-report/coverages-10.pb +0 -0
- package/.scannerwork/scanner-report/coverages-36.pb +0 -0
- package/.scannerwork/scanner-report/coverages-37.pb +0 -0
- package/.scannerwork/scanner-report/coverages-39.pb +0 -0
- package/.scannerwork/scanner-report/coverages-5.pb +0 -0
- package/.scannerwork/scanner-report/coverages-6.pb +0 -0
- package/.scannerwork/scanner-report/coverages-8.pb +0 -0
- package/.scannerwork/scanner-report/coverages-9.pb +0 -0
- package/.scannerwork/scanner-report/duplications-9.pb +0 -2
- package/.scannerwork/scanner-report/measures-10.pb +0 -0
- package/.scannerwork/scanner-report/measures-36.pb +0 -15
- package/.scannerwork/scanner-report/measures-37.pb +0 -0
- package/.scannerwork/scanner-report/measures-39.pb +0 -0
- package/.scannerwork/scanner-report/measures-4.pb +0 -0
- package/.scannerwork/scanner-report/measures-5.pb +0 -0
- package/.scannerwork/scanner-report/measures-6.pb +0 -0
- package/.scannerwork/scanner-report/measures-8.pb +0 -0
- package/.scannerwork/scanner-report/source-10.txt +0 -37
- package/.scannerwork/scanner-report/source-36.txt +0 -151
- package/.scannerwork/scanner-report/source-37.txt +0 -75
- package/.scannerwork/scanner-report/source-39.txt +0 -129
- package/.scannerwork/scanner-report/source-4.txt +0 -187
- package/.scannerwork/scanner-report/source-6.txt +0 -329
- package/.scannerwork/scanner-report/source-8.txt +0 -62
- package/.scannerwork/scanner-report/symbols-10.pb +0 -9
- package/.scannerwork/scanner-report/symbols-36.pb +0 -93
- package/.scannerwork/scanner-report/symbols-37.pb +0 -39
- package/.scannerwork/scanner-report/symbols-39.pb +0 -33
- package/.scannerwork/scanner-report/symbols-5.pb +0 -8
- package/.scannerwork/scanner-report/symbols-6.pb +0 -353
- package/.scannerwork/scanner-report/symbols-8.pb +0 -24
- package/.scannerwork/scanner-report/symbols-9.pb +0 -203
- package/.scannerwork/scanner-report/syntax-highlightings-10.pb +0 -61
- package/.scannerwork/scanner-report/syntax-highlightings-36.pb +0 -237
- package/.scannerwork/scanner-report/syntax-highlightings-37.pb +0 -101
- package/.scannerwork/scanner-report/syntax-highlightings-39.pb +0 -129
- package/.scannerwork/scanner-report/syntax-highlightings-4.pb +0 -368
- package/.scannerwork/scanner-report/syntax-highlightings-5.pb +0 -49
- package/.scannerwork/scanner-report/syntax-highlightings-6.pb +0 -620
- package/.scannerwork/scanner-report/syntax-highlightings-8.pb +0 -97
- /package/.scannerwork/scanner-report/{coverages-40.pb → coverages-23.pb} +0 -0
- /package/.scannerwork/scanner-report/{coverages-2.pb → coverages-26.pb} +0 -0
- /package/.scannerwork/scanner-report/{coverages-34.pb → coverages-29.pb} +0 -0
- /package/.scannerwork/scanner-report/{coverages-7.pb → coverages-53.pb} +0 -0
- /package/.scannerwork/scanner-report/{coverages-4.pb → coverages-55.pb} +0 -0
- /package/.scannerwork/scanner-report/{coverages-35.pb → coverages-57.pb} +0 -0
- /package/.scannerwork/scanner-report/{coverages-61.pb → coverages-63.pb} +0 -0
- /package/.scannerwork/scanner-report/{coverages-64.pb → coverages-67.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-10.pb → duplications-23.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-2.pb → duplications-26.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-34.pb → duplications-27.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-35.pb → duplications-28.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-36.pb → duplications-29.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-37.pb → duplications-53.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-4.pb → duplications-55.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-39.pb → duplications-56.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-40.pb → duplications-57.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-46.pb → duplications-58.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-6.pb → duplications-59.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-61.pb → duplications-62.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-7.pb → duplications-63.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-64.pb → duplications-67.pb} +0 -0
- /package/.scannerwork/scanner-report/{duplications-8.pb → duplications-69.pb} +0 -0
- /package/.scannerwork/scanner-report/{issues-6.pb → issues-41.pb} +0 -0
- /package/.scannerwork/scanner-report/{issues-14.pb → issues-45.pb} +0 -0
- /package/.scannerwork/scanner-report/{issues-12.pb → issues-51.pb} +0 -0
- /package/.scannerwork/scanner-report/{issues-35.pb → issues-57.pb} +0 -0
- /package/.scannerwork/scanner-report/{measures-40.pb → measures-23.pb} +0 -0
- /package/.scannerwork/scanner-report/{measures-38.pb → measures-25.pb} +0 -0
- /package/.scannerwork/scanner-report/{measures-2.pb → measures-26.pb} +0 -0
- /package/.scannerwork/scanner-report/{measures-34.pb → measures-29.pb} +0 -0
- /package/.scannerwork/scanner-report/{measures-7.pb → measures-53.pb} +0 -0
- /package/.scannerwork/scanner-report/{measures-35.pb → measures-57.pb} +0 -0
- /package/.scannerwork/scanner-report/{measures-61.pb → measures-63.pb} +0 -0
- /package/.scannerwork/scanner-report/{measures-64.pb → measures-67.pb} +0 -0
- /package/.scannerwork/scanner-report/{measures-68.pb → measures-70.pb} +0 -0
- /package/.scannerwork/scanner-report/{source-40.txt → source-23.txt} +0 -0
- /package/.scannerwork/scanner-report/{source-2.txt → source-26.txt} +0 -0
- /package/.scannerwork/scanner-report/{source-34.txt → source-29.txt} +0 -0
- /package/.scannerwork/scanner-report/{source-7.txt → source-53.txt} +0 -0
- /package/.scannerwork/scanner-report/{source-35.txt → source-57.txt} +0 -0
- /package/.scannerwork/scanner-report/{source-61.txt → source-63.txt} +0 -0
- /package/.scannerwork/scanner-report/{source-64.txt → source-67.txt} +0 -0
- /package/.scannerwork/scanner-report/{symbols-40.pb → symbols-23.pb} +0 -0
- /package/.scannerwork/scanner-report/{symbols-2.pb → symbols-26.pb} +0 -0
- /package/.scannerwork/scanner-report/{symbols-34.pb → symbols-29.pb} +0 -0
- /package/.scannerwork/scanner-report/{symbols-7.pb → symbols-53.pb} +0 -0
- /package/.scannerwork/scanner-report/{symbols-4.pb → symbols-55.pb} +0 -0
- /package/.scannerwork/scanner-report/{symbols-35.pb → symbols-57.pb} +0 -0
- /package/.scannerwork/scanner-report/{symbols-61.pb → symbols-63.pb} +0 -0
- /package/.scannerwork/scanner-report/{symbols-64.pb → symbols-67.pb} +0 -0
- /package/.scannerwork/scanner-report/{syntax-highlightings-40.pb → syntax-highlightings-23.pb} +0 -0
- /package/.scannerwork/scanner-report/{syntax-highlightings-2.pb → syntax-highlightings-26.pb} +0 -0
- /package/.scannerwork/scanner-report/{syntax-highlightings-34.pb → syntax-highlightings-29.pb} +0 -0
- /package/.scannerwork/scanner-report/{syntax-highlightings-7.pb → syntax-highlightings-53.pb} +0 -0
- /package/.scannerwork/scanner-report/{syntax-highlightings-35.pb → syntax-highlightings-57.pb} +0 -0
- /package/.scannerwork/scanner-report/{syntax-highlightings-61.pb → syntax-highlightings-63.pb} +0 -0
- /package/.scannerwork/scanner-report/{syntax-highlightings-64.pb → syntax-highlightings-67.pb} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright © 2017
|
|
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.
|
|
@@ -11,203 +11,36 @@
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
-
|
|
15
|
-
/* global describe it beforeEach */
|
|
16
14
|
'use strict';
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
.reply(200, { ok: true });
|
|
50
|
-
|
|
51
|
-
return db.service.getDocument({ db: db.db, docId: 'good' }).then(response => {
|
|
52
|
-
assert.ok(response.result);
|
|
53
|
-
assert.ok(couch.isDone());
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it('should callback with error after 3 500 responses', async function() {
|
|
58
|
-
const couch = nock(url)
|
|
59
|
-
.get('/bad')
|
|
60
|
-
.times(3)
|
|
61
|
-
.reply(500, function(uri, requestBody) {
|
|
62
|
-
this.req.response.statusMessage = 'Internal Server Error';
|
|
63
|
-
return { error: 'foo', reason: 'bar' };
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
return assert.rejects(
|
|
67
|
-
db.service.getDocument({ db: db.db, docId: 'bad' }),
|
|
68
|
-
(err) => {
|
|
69
|
-
err = error.convertResponseError(err);
|
|
70
|
-
assert.strictEqual(err.name, 'HTTPFatalError');
|
|
71
|
-
assert.strictEqual(err.message, `500 Internal Server Error: get ${url}/bad - Error: foo, Reason: bar`);
|
|
72
|
-
assert.ok(couch.isDone());
|
|
73
|
-
return true;
|
|
74
|
-
});
|
|
75
|
-
}).timeout(longTestTimeout);
|
|
76
|
-
|
|
77
|
-
it('should callback with error after 3 POST 503 responses', async function() {
|
|
78
|
-
const couch = nock(url)
|
|
79
|
-
.post('/_bulk_get')
|
|
80
|
-
.query(true)
|
|
81
|
-
.times(3)
|
|
82
|
-
.reply(503, function(uri, requestBody) {
|
|
83
|
-
this.req.response.statusMessage = 'Service Unavailable';
|
|
84
|
-
return { error: 'service_unavailable', reason: 'Service unavailable' };
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
return assert.rejects(
|
|
88
|
-
db.service.postBulkGet({ db: db.db, revs: true, docs: [] }),
|
|
89
|
-
(err) => {
|
|
90
|
-
err = error.convertResponseError(err);
|
|
91
|
-
assert.strictEqual(err.name, 'HTTPFatalError');
|
|
92
|
-
assert.strictEqual(err.message, `503 Service Unavailable: post ${url}/_bulk_get - Error: service_unavailable, Reason: Service unavailable`);
|
|
93
|
-
assert.ok(couch.isDone());
|
|
94
|
-
return true;
|
|
95
|
-
});
|
|
96
|
-
}).timeout(longTestTimeout);
|
|
97
|
-
|
|
98
|
-
it('should callback with error after 3 429 responses', async function() {
|
|
99
|
-
const couch = nock(url)
|
|
100
|
-
.get('/bad')
|
|
101
|
-
.times(3)
|
|
102
|
-
.reply(429, function(uri, requestBody) {
|
|
103
|
-
this.req.response.statusMessage = 'Too Many Requests';
|
|
104
|
-
return { error: 'foo', reason: 'bar' };
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
return assert.rejects(
|
|
108
|
-
db.service.getDocument({ db: db.db, docId: 'bad' }),
|
|
109
|
-
(err) => {
|
|
110
|
-
err = error.convertResponseError(err);
|
|
111
|
-
assert.strictEqual(err.name, 'HTTPFatalError');
|
|
112
|
-
assert.strictEqual(err.message, `429 Too Many Requests: get ${url}/bad - Error: foo, Reason: bar`);
|
|
113
|
-
assert.ok(couch.isDone());
|
|
114
|
-
return true;
|
|
115
|
-
});
|
|
116
|
-
}).timeout(longTestTimeout);
|
|
117
|
-
|
|
118
|
-
it('should callback with fatal error for 404 response', async function() {
|
|
119
|
-
const couch = nock(url)
|
|
120
|
-
.get('/bad')
|
|
121
|
-
.reply(404, function(uri, requestBody) {
|
|
122
|
-
this.req.response.statusMessage = 'Not Found';
|
|
123
|
-
return { error: 'foo', reason: 'bar' };
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
return assert.rejects(
|
|
127
|
-
db.service.getDocument({ db: db.db, docId: 'bad' }),
|
|
128
|
-
(err) => {
|
|
129
|
-
err = error.convertResponseError(err);
|
|
130
|
-
assert.strictEqual(err.name, 'HTTPFatalError');
|
|
131
|
-
assert.strictEqual(err.message, `404 Not Found: get ${url}/bad - Error: foo, Reason: bar`);
|
|
132
|
-
assert.ok(couch.isDone());
|
|
133
|
-
return true;
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
it('should callback with same error for no status code error response', async function() {
|
|
138
|
-
const couch = nock(url)
|
|
139
|
-
.get('/bad')
|
|
140
|
-
.times(3)
|
|
141
|
-
.replyWithError('testing badness');
|
|
142
|
-
|
|
143
|
-
return assert.rejects(
|
|
144
|
-
db.service.getDocument({ db: db.db, docId: 'bad' }),
|
|
145
|
-
(err) => {
|
|
146
|
-
const err2 = error.convertResponseError(err);
|
|
147
|
-
assert.strictEqual(err, err2);
|
|
148
|
-
assert.ok(couch.isDone());
|
|
149
|
-
return true;
|
|
150
|
-
});
|
|
151
|
-
}).timeout(longTestTimeout);
|
|
152
|
-
|
|
153
|
-
it('should retry request if HTTP request gets timed out', async function() {
|
|
154
|
-
const couch = nock(url)
|
|
155
|
-
.post('/_bulk_get')
|
|
156
|
-
.query(true)
|
|
157
|
-
.delay(1000)
|
|
158
|
-
.reply(200, { results: { docs: [{ id: '1', ok: { _id: '1' } }] } })
|
|
159
|
-
.post('/_bulk_get')
|
|
160
|
-
.query(true)
|
|
161
|
-
.reply(200, { results: { docs: [{ id: '1', ok: { _id: '1' } }, { id: '2', ok: { _id: '2' } }] } });
|
|
162
|
-
|
|
163
|
-
return timeoutDb.service.postBulkGet({ db: db.db, revs: true, docs: [] }).then((response) => {
|
|
164
|
-
assert.ok(response);
|
|
165
|
-
assert.ok(response.result);
|
|
166
|
-
assert.ok(response.result.results);
|
|
167
|
-
assert.ok(response.result.results.docs);
|
|
168
|
-
assert.strictEqual(response.result.results.docs.length, 2);
|
|
169
|
-
assert.ok(couch.isDone());
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
it('should callback with error code ESOCKETTIMEDOUT if 3 HTTP requests gets timed out', async function() {
|
|
174
|
-
// Increase the timeout for this test to allow for the delays
|
|
175
|
-
this.timeout(3000);
|
|
176
|
-
const couch = nock(url)
|
|
177
|
-
.post('/_bulk_get')
|
|
178
|
-
.query(true)
|
|
179
|
-
.delay(1000)
|
|
180
|
-
.times(3)
|
|
181
|
-
.reply(200, { ok: true });
|
|
182
|
-
|
|
183
|
-
return assert.rejects(
|
|
184
|
-
timeoutDb.service.postBulkGet({ db: db.db, revs: true, docs: [] }),
|
|
185
|
-
(err) => {
|
|
186
|
-
err = error.convertResponseError(err);
|
|
187
|
-
// Note axios returns ECONNABORTED rather than ESOCKETTIMEDOUT
|
|
188
|
-
// See https://github.com/axios/axios/issues/2710 via https://github.com/axios/axios/issues/1543`
|
|
189
|
-
assert.strictEqual(err.statusText, 'ECONNABORTED');
|
|
190
|
-
assert.strictEqual(err.message, `timeout of 500ms exceeded: post ${url}/_bulk_get ECONNABORTED`);
|
|
191
|
-
assert.ok(couch.isDone());
|
|
192
|
-
return true;
|
|
193
|
-
});
|
|
194
|
-
});
|
|
195
|
-
describe('#unit Check credentials', async function() {
|
|
196
|
-
it('should properly decode username and password', async function() {
|
|
197
|
-
const username = 'user%123';
|
|
198
|
-
const password = 'colon:at@321';
|
|
199
|
-
const url = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@localhost:7777/testdb`;
|
|
200
|
-
const sessionUrl = 'http://localhost:7777';
|
|
201
|
-
const couch = nock(sessionUrl)
|
|
202
|
-
.post('/_session', { username: username, password: password })
|
|
203
|
-
.reply(200, { ok: true }, { 'Set-Cookie': 'AuthSession=ABC123DEF4356;' })
|
|
204
|
-
.get('/')
|
|
205
|
-
.reply(200);
|
|
206
|
-
const db = request.client(url, { parallelism: 1 });
|
|
207
|
-
return db.service.getServerInformation().then(response => {
|
|
208
|
-
assert.ok(response);
|
|
209
|
-
assert.ok(couch.isDone());
|
|
210
|
-
});
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
});
|
|
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,
|
|
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.
|
|
@@ -11,91 +11,21 @@
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
-
|
|
15
|
-
/* global describe it */
|
|
16
14
|
'use strict';
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it('should restore corrupted animaldb to a database correctly', async function() {
|
|
38
|
-
// Allow up to 60 s to restore and compare (again it should be faster)!
|
|
39
|
-
u.setTimeout(this, 60);
|
|
40
|
-
const input = fs.createReadStream('./test/fixtures/animaldb_corrupted.json');
|
|
41
|
-
const dbName = this.dbName;
|
|
42
|
-
const p = u.p(params, { expectedRestoreErrorRecoverable: { name: 'BackupFileJsonError' } });
|
|
43
|
-
return once(input, 'open')
|
|
44
|
-
.then(() => {
|
|
45
|
-
return u.testRestore(p, input, dbName);
|
|
46
|
-
}).then(() => {
|
|
47
|
-
return u.dbCompare('animaldb', dbName);
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it('should restore resumed animaldb with blank line to a database correctly', async function() {
|
|
52
|
-
// Allow up to 60 s to restore and compare (again it should be faster)!
|
|
53
|
-
u.setTimeout(this, 60);
|
|
54
|
-
const input = fs.createReadStream('./test/fixtures/animaldb_resumed_blank.json');
|
|
55
|
-
const dbName = this.dbName;
|
|
56
|
-
return once(input, 'open')
|
|
57
|
-
.then(() => {
|
|
58
|
-
return u.testRestore(params, input, dbName);
|
|
59
|
-
}).then(() => {
|
|
60
|
-
return u.dbCompare('animaldb', dbName);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
describe('Resume tests', function() {
|
|
67
|
-
// Currently cannot abort API backups, when we do this test should be run for
|
|
68
|
-
// both API and CLI
|
|
69
|
-
it('should correctly backup and restore backup10m', async function() {
|
|
70
|
-
// Allow up to 90 s for this test
|
|
71
|
-
u.setTimeout(this, 90);
|
|
72
|
-
|
|
73
|
-
const actualBackup = `./${this.fileName}`;
|
|
74
|
-
const logFile = `./${this.fileName}` + '.log';
|
|
75
|
-
// Use abort parameter to terminate the backup
|
|
76
|
-
const p = u.p(params, { abort: true }, { opts: { log: logFile } });
|
|
77
|
-
const restoreDb = this.dbName;
|
|
78
|
-
// Set the database doc count as fewer than this should be written during
|
|
79
|
-
// resumed backup.
|
|
80
|
-
p.exclusiveMaxExpected = 5096;
|
|
81
|
-
|
|
82
|
-
return u.testBackupAbortResumeRestore(p, 'backup10m', actualBackup, restoreDb);
|
|
83
|
-
});
|
|
84
|
-
// Note --output is only valid for CLI usage, this test should only run for CLI
|
|
85
|
-
const params = { useApi: false };
|
|
86
|
-
it('should correctly backup and restore backup10m using --output', async function() {
|
|
87
|
-
// Allow up to 90 s for this test
|
|
88
|
-
u.setTimeout(this, 90);
|
|
89
|
-
|
|
90
|
-
const actualBackup = `./${this.fileName}`;
|
|
91
|
-
const logFile = `./${this.fileName}` + '.log';
|
|
92
|
-
// Use abort parameter to terminate the backup
|
|
93
|
-
const p = u.p(params, { abort: true }, { opts: { output: actualBackup, log: logFile } });
|
|
94
|
-
const restoreDb = this.dbName;
|
|
95
|
-
// Set the database doc count as fewer than this should be written during
|
|
96
|
-
// resumed backup.
|
|
97
|
-
p.exclusiveMaxExpected = 5096;
|
|
98
|
-
|
|
99
|
-
return await u.testBackupAbortResumeRestore(p, 'backup10m', actualBackup, restoreDb);
|
|
100
|
-
});
|
|
101
|
-
});
|
|
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);
|
|
19
|
+
|
|
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
|
|
29
|
+
|
|
30
|
+
callback(null, writer);
|
|
31
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright © 2017,
|
|
1
|
+
// Copyright © 2017, 2021 IBM Corp. All rights reserved.
|
|
2
2
|
//
|
|
3
3
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
// you may not use this file except in compliance with the License.
|
|
@@ -11,120 +11,119 @@
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
-
|
|
15
|
-
/* global describe it before after */
|
|
16
14
|
'use strict';
|
|
17
15
|
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
process.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
16
|
+
const cliutils = require('./cliutils.js');
|
|
17
|
+
const config = require('./config.js');
|
|
18
|
+
const error = require('./error.js');
|
|
19
|
+
const path = require('path');
|
|
20
|
+
const pkg = require('../package.json');
|
|
21
|
+
|
|
22
|
+
function parseBackupArgs() {
|
|
23
|
+
const program = require('commander');
|
|
24
|
+
|
|
25
|
+
// Option CLI defaults
|
|
26
|
+
const defaults = config.cliDefaults();
|
|
27
|
+
|
|
28
|
+
// Options set by environment variables
|
|
29
|
+
const envVarOptions = {};
|
|
30
|
+
config.applyEnvironmentVariables(envVarOptions);
|
|
31
|
+
|
|
32
|
+
program
|
|
33
|
+
.version(pkg.version)
|
|
34
|
+
.description('Backup a CouchDB/Cloudant database to a backup text file.')
|
|
35
|
+
.usage('[options...]')
|
|
36
|
+
.option('-b, --buffer-size <n>',
|
|
37
|
+
cliutils.getUsage('number of documents fetched at once', defaults.bufferSize),
|
|
38
|
+
Number)
|
|
39
|
+
.option('-d, --db <db>',
|
|
40
|
+
cliutils.getUsage('name of the database to backup', defaults.db))
|
|
41
|
+
.option('-k, --iam-api-key <API key>',
|
|
42
|
+
cliutils.getUsage('IAM API key to access the Cloudant server'))
|
|
43
|
+
.option('-l, --log <file>',
|
|
44
|
+
cliutils.getUsage('file to store logging information during backup; invalid in "shallow" mode', 'a temporary file'),
|
|
45
|
+
path.normalize)
|
|
46
|
+
.option('-m, --mode <mode>',
|
|
47
|
+
cliutils.getUsage('"shallow" if only a superficial backup is done (ignoring conflicts and revision tokens), else "full" for complete backup', defaults.mode),
|
|
48
|
+
(mode) => { return mode.toLowerCase(); })
|
|
49
|
+
.option('-o, --output <file>',
|
|
50
|
+
cliutils.getUsage('file name to store the backup data', 'stdout'),
|
|
51
|
+
path.normalize)
|
|
52
|
+
.option('-p, --parallelism <n>',
|
|
53
|
+
cliutils.getUsage('number of HTTP requests to perform in parallel when performing a backup; ignored in "shallow" mode', defaults.parallelism),
|
|
54
|
+
Number)
|
|
55
|
+
.option('-q, --quiet',
|
|
56
|
+
cliutils.getUsage('suppress batch messages', defaults.quiet))
|
|
57
|
+
.option('-r, --resume',
|
|
58
|
+
cliutils.getUsage('continue a previous backup from its last known position; invalid in "shallow" mode', defaults.resume))
|
|
59
|
+
.option('-t, --request-timeout <n>',
|
|
60
|
+
cliutils.getUsage('milliseconds to wait for a response to a HTTP request before retrying the request', defaults.requestTimeout),
|
|
61
|
+
Number)
|
|
62
|
+
.option('-u, --url <url>',
|
|
63
|
+
cliutils.getUsage('URL of the CouchDB/Cloudant server', defaults.url))
|
|
64
|
+
.parse(process.argv);
|
|
65
|
+
|
|
66
|
+
// Remove defaults that don't apply when using shallow mode
|
|
67
|
+
if (program.opts().mode === 'shallow' || envVarOptions.mode === 'shallow') {
|
|
68
|
+
delete defaults.parallelism;
|
|
69
|
+
delete defaults.log;
|
|
70
|
+
delete defaults.resume;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Apply the options in order so that the CLI overrides env vars and env variables
|
|
74
|
+
// override defaults.
|
|
75
|
+
const opts = Object.assign({}, defaults, envVarOptions, program.opts());
|
|
76
|
+
|
|
77
|
+
if (opts.resume && (opts.log === defaults.log)) {
|
|
78
|
+
// If resuming and the log file arg is the newly generated tmp name from defaults then we know that --log wasn't specified.
|
|
79
|
+
// We have to do this check here for the CLI case because of the default.
|
|
80
|
+
error.terminationCallback(new error.BackupError('NoLogFileName', 'To resume a backup, a log file must be specified'));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return opts;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function parseRestoreArgs() {
|
|
87
|
+
const program = require('commander');
|
|
88
|
+
|
|
89
|
+
// Option CLI defaults
|
|
90
|
+
const defaults = config.cliDefaults();
|
|
91
|
+
|
|
92
|
+
// Options set by environment variables
|
|
93
|
+
const envVarOptions = {};
|
|
94
|
+
config.applyEnvironmentVariables(envVarOptions);
|
|
95
|
+
|
|
96
|
+
program
|
|
97
|
+
.version(pkg.version)
|
|
98
|
+
.description('Restore a CouchDB/Cloudant database from a backup text file.')
|
|
99
|
+
.usage('[options...]')
|
|
100
|
+
.option('-b, --buffer-size <n>',
|
|
101
|
+
cliutils.getUsage('number of documents restored at once', defaults.bufferSize),
|
|
102
|
+
Number)
|
|
103
|
+
.option('-d, --db <db>',
|
|
104
|
+
cliutils.getUsage('name of the new, existing database to restore to', defaults.db))
|
|
105
|
+
.option('-k, --iam-api-key <API key>',
|
|
106
|
+
cliutils.getUsage('IAM API key to access the Cloudant server'))
|
|
107
|
+
.option('-p, --parallelism <n>',
|
|
108
|
+
cliutils.getUsage('number of HTTP requests to perform in parallel when restoring a backup', defaults.parallelism),
|
|
109
|
+
Number)
|
|
110
|
+
.option('-q, --quiet',
|
|
111
|
+
cliutils.getUsage('suppress batch messages', defaults.quiet))
|
|
112
|
+
.option('-t, --request-timeout <n>',
|
|
113
|
+
cliutils.getUsage('milliseconds to wait for a response to a HTTP request before retrying the request', defaults.requestTimeout),
|
|
114
|
+
Number)
|
|
115
|
+
.option('-u, --url <url>',
|
|
116
|
+
cliutils.getUsage('URL of the CouchDB/Cloudant server', defaults.url))
|
|
117
|
+
.parse(process.argv);
|
|
118
|
+
|
|
119
|
+
// Apply the options in order so that the CLI overrides env vars and env variables
|
|
120
|
+
// override defaults.
|
|
121
|
+
const opts = Object.assign({}, defaults, envVarOptions, program.opts());
|
|
122
|
+
|
|
123
|
+
return opts;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
module.exports = {
|
|
127
|
+
parseBackupArgs: parseBackupArgs,
|
|
128
|
+
parseRestoreArgs: parseRestoreArgs
|
|
129
|
+
};
|