ctrl k
  • package-lock.json
    ■ ■ ■ ■ ■
    skipped 2049 lines
    2050 2050   "@types/node": ">= 8"
    2051 2051   }
    2052 2052   },
     2053 + "@sindresorhus/is": {
     2054 + "version": "4.0.1",
     2055 + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.1.tgz",
     2056 + "integrity": "sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g=="
     2057 + },
    2053 2058   "@sinonjs/commons": {
    2054 2059   "version": "1.8.1",
    2055 2060   "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz",
    skipped 10 lines
    2066 2071   "dev": true,
    2067 2072   "requires": {
    2068 2073   "@sinonjs/commons": "^1.7.0"
     2074 + }
     2075 + },
     2076 + "@szmarczak/http-timer": {
     2077 + "version": "4.0.5",
     2078 + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz",
     2079 + "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==",
     2080 + "requires": {
     2081 + "defer-to-connect": "^2.0.0"
    2069 2082   }
    2070 2083   },
    2071 2084   "@types/babel__core": {
    skipped 37 lines
    2109 2122   "@babel/types": "^7.3.0"
    2110 2123   }
    2111 2124   },
     2125 + "@types/cacheable-request": {
     2126 + "version": "6.0.1",
     2127 + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz",
     2128 + "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==",
     2129 + "requires": {
     2130 + "@types/http-cache-semantics": "*",
     2131 + "@types/keyv": "*",
     2132 + "@types/node": "*",
     2133 + "@types/responselike": "*"
     2134 + }
     2135 + },
    2112 2136   "@types/graceful-fs": {
    2113 2137   "version": "4.1.4",
    2114 2138   "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz",
    skipped 2 lines
    2117 2141   "requires": {
    2118 2142   "@types/node": "*"
    2119 2143   }
     2144 + },
     2145 + "@types/http-cache-semantics": {
     2146 + "version": "4.0.0",
     2147 + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz",
     2148 + "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A=="
    2120 2149   },
    2121 2150   "@types/istanbul-lib-coverage": {
    2122 2151   "version": "2.0.3",
    skipped 31 lines
    2154 2183   "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
    2155 2184   "dev": true
    2156 2185   },
     2186 + "@types/keyv": {
     2187 + "version": "3.1.1",
     2188 + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz",
     2189 + "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==",
     2190 + "requires": {
     2191 + "@types/node": "*"
     2192 + }
     2193 + },
    2157 2194   "@types/node": {
    2158 2195   "version": "14.14.9",
    2159 2196   "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.9.tgz",
    skipped 16 lines
    2176 2213   "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.5.tgz",
    2177 2214   "integrity": "sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ==",
    2178 2215   "dev": true
     2216 + },
     2217 + "@types/responselike": {
     2218 + "version": "1.0.0",
     2219 + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
     2220 + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==",
     2221 + "requires": {
     2222 + "@types/node": "*"
     2223 + }
    2179 2224   },
    2180 2225   "@types/stack-utils": {
    2181 2226   "version": "2.0.0",
    skipped 860 lines
    3042 3087   "unset-value": "^1.0.0"
    3043 3088   }
    3044 3089   },
     3090 + "cacheable-lookup": {
     3091 + "version": "5.0.4",
     3092 + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
     3093 + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA=="
     3094 + },
     3095 + "cacheable-request": {
     3096 + "version": "7.0.2",
     3097 + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz",
     3098 + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==",
     3099 + "requires": {
     3100 + "clone-response": "^1.0.2",
     3101 + "get-stream": "^5.1.0",
     3102 + "http-cache-semantics": "^4.0.0",
     3103 + "keyv": "^4.0.0",
     3104 + "lowercase-keys": "^2.0.0",
     3105 + "normalize-url": "^6.0.1",
     3106 + "responselike": "^2.0.0"
     3107 + },
     3108 + "dependencies": {
     3109 + "get-stream": {
     3110 + "version": "5.2.0",
     3111 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
     3112 + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
     3113 + "requires": {
     3114 + "pump": "^3.0.0"
     3115 + }
     3116 + }
     3117 + }
     3118 + },
    3045 3119   "call-bind": {
    3046 3120   "version": "1.0.0",
    3047 3121   "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz",
    skipped 241 lines
    3289 3363   "resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz",
    3290 3364   "integrity": "sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU=",
    3291 3365   "dev": true
     3366 + },
     3367 + "clone-response": {
     3368 + "version": "1.0.2",
     3369 + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
     3370 + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
     3371 + "requires": {
     3372 + "mimic-response": "^1.0.0"
     3373 + }
    3292 3374   },
    3293 3375   "co": {
    3294 3376   "version": "4.6.0",
    skipped 314 lines
    3609 3691   "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
    3610 3692   "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
    3611 3693   },
     3694 + "decompress-response": {
     3695 + "version": "6.0.0",
     3696 + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
     3697 + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
     3698 + "requires": {
     3699 + "mimic-response": "^3.1.0"
     3700 + },
     3701 + "dependencies": {
     3702 + "mimic-response": {
     3703 + "version": "3.1.0",
     3704 + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
     3705 + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="
     3706 + }
     3707 + }
     3708 + },
    3612 3709   "dedent": {
    3613 3710   "version": "0.7.0",
    3614 3711   "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
    skipped 15 lines
    3630 3727   "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
    3631 3728   "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
    3632 3729   "dev": true
     3730 + },
     3731 + "defer-to-connect": {
     3732 + "version": "2.0.1",
     3733 + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
     3734 + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg=="
    3633 3735   },
    3634 3736   "define-properties": {
    3635 3737   "version": "1.1.3",
    skipped 1600 lines
    5236 5338   }
    5237 5339   },
    5238 5340   "got": {
    5239  - "version": "6.7.1",
    5240  - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
    5241  - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
     5341 + "version": "11.8.2",
     5342 + "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz",
     5343 + "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==",
    5242 5344   "requires": {
    5243  - "create-error-class": "^3.0.0",
    5244  - "duplexer3": "^0.1.4",
    5245  - "get-stream": "^3.0.0",
    5246  - "is-redirect": "^1.0.0",
    5247  - "is-retry-allowed": "^1.0.0",
    5248  - "is-stream": "^1.0.0",
    5249  - "lowercase-keys": "^1.0.0",
    5250  - "safe-buffer": "^5.0.1",
    5251  - "timed-out": "^4.0.0",
    5252  - "unzip-response": "^2.0.1",
    5253  - "url-parse-lax": "^1.0.0"
    5254  - },
    5255  - "dependencies": {
    5256  - "get-stream": {
    5257  - "version": "3.0.0",
    5258  - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
    5259  - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
    5260  - }
     5345 + "@sindresorhus/is": "^4.0.0",
     5346 + "@szmarczak/http-timer": "^4.0.5",
     5347 + "@types/cacheable-request": "^6.0.1",
     5348 + "@types/responselike": "^1.0.0",
     5349 + "cacheable-lookup": "^5.0.3",
     5350 + "cacheable-request": "^7.0.1",
     5351 + "decompress-response": "^6.0.0",
     5352 + "http2-wrapper": "^1.0.0-beta.5.2",
     5353 + "lowercase-keys": "^2.0.0",
     5354 + "p-cancelable": "^2.0.0",
     5355 + "responselike": "^2.0.0"
    5261 5356   }
    5262 5357   },
    5263 5358   "graceful-fs": {
    skipped 99 lines
    5363 5458   "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
    5364 5459   "dev": true
    5365 5460   },
     5461 + "http-cache-semantics": {
     5462 + "version": "4.1.0",
     5463 + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
     5464 + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="
     5465 + },
    5366 5466   "http-errors": {
    5367 5467   "version": "1.7.2",
    5368 5468   "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
    skipped 45 lines
    5414 5514   "assert-plus": "^1.0.0",
    5415 5515   "jsprim": "^1.2.2",
    5416 5516   "sshpk": "^1.7.0"
     5517 + }
     5518 + },
     5519 + "http2-wrapper": {
     5520 + "version": "1.0.3",
     5521 + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
     5522 + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
     5523 + "requires": {
     5524 + "quick-lru": "^5.1.1",
     5525 + "resolve-alpn": "^1.0.0"
    5417 5526   }
    5418 5527   },
    5419 5528   "https-proxy-agent": {
    skipped 1506 lines
    6926 7035   "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
    6927 7036   "dev": true
    6928 7037   },
     7038 + "json-buffer": {
     7039 + "version": "3.0.1",
     7040 + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
     7041 + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
     7042 + },
    6929 7043   "json-parse-even-better-errors": {
    6930 7044   "version": "2.3.1",
    6931 7045   "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
    skipped 75 lines
    7007 7121   "requires": {
    7008 7122   "jwa": "^1.4.1",
    7009 7123   "safe-buffer": "^5.0.1"
     7124 + }
     7125 + },
     7126 + "keyv": {
     7127 + "version": "4.0.3",
     7128 + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz",
     7129 + "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==",
     7130 + "requires": {
     7131 + "json-buffer": "3.0.1"
    7010 7132   }
    7011 7133   },
    7012 7134   "kind-of": {
    skipped 397 lines
    7410 7532   "integrity": "sha1-82RJuolinROnorJSOk253Wbj/2g="
    7411 7533   },
    7412 7534   "lowercase-keys": {
    7413  - "version": "1.0.1",
    7414  - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
    7415  - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
     7535 + "version": "2.0.0",
     7536 + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
     7537 + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="
    7416 7538   },
    7417 7539   "lru-cache": {
    7418 7540   "version": "2.7.3",
    skipped 164 lines
    7583 7705   "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
    7584 7706   "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
    7585 7707   "dev": true
     7708 + },
     7709 + "mimic-response": {
     7710 + "version": "1.0.1",
     7711 + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
     7712 + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
    7586 7713   },
    7587 7714   "min-document": {
    7588 7715   "version": "2.19.0",
    skipped 301 lines
    7890 8017   "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
    7891 8018   "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
    7892 8019   },
     8020 + "normalize-url": {
     8021 + "version": "6.1.0",
     8022 + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
     8023 + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A=="
     8024 + },
    7893 8025   "npm-run-path": {
    7894 8026   "version": "2.0.2",
    7895 8027   "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
    skipped 173 lines
    8069 8201   "windows-release": "^3.1.0"
    8070 8202   }
    8071 8203   },
     8204 + "p-cancelable": {
     8205 + "version": "2.1.1",
     8206 + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
     8207 + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg=="
     8208 + },
    8072 8209   "p-each-series": {
    8073 8210   "version": "2.2.0",
    8074 8211   "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz",
    skipped 84 lines
    8159 8296   "registry-auth-token": "^3.0.1",
    8160 8297   "registry-url": "^3.0.3",
    8161 8298   "semver": "^5.1.0"
     8299 + },
     8300 + "dependencies": {
     8301 + "get-stream": {
     8302 + "version": "3.0.0",
     8303 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
     8304 + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
     8305 + },
     8306 + "got": {
     8307 + "version": "6.7.1",
     8308 + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
     8309 + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
     8310 + "requires": {
     8311 + "create-error-class": "^3.0.0",
     8312 + "duplexer3": "^0.1.4",
     8313 + "get-stream": "^3.0.0",
     8314 + "is-redirect": "^1.0.0",
     8315 + "is-retry-allowed": "^1.0.0",
     8316 + "is-stream": "^1.0.0",
     8317 + "lowercase-keys": "^1.0.0",
     8318 + "safe-buffer": "^5.0.1",
     8319 + "timed-out": "^4.0.0",
     8320 + "unzip-response": "^2.0.1",
     8321 + "url-parse-lax": "^1.0.0"
     8322 + }
     8323 + },
     8324 + "lowercase-keys": {
     8325 + "version": "1.0.1",
     8326 + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
     8327 + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
     8328 + }
    8162 8329   }
    8163 8330   },
    8164 8331   "parent-module": {
    skipped 336 lines
    8501 8668   "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
    8502 8669   "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
    8503 8670   },
     8671 + "quick-lru": {
     8672 + "version": "5.1.1",
     8673 + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
     8674 + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="
     8675 + },
    8504 8676   "range-parser": {
    8505 8677   "version": "1.2.1",
    8506 8678   "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
    skipped 333 lines
    8840 9012   "path-parse": "^1.0.6"
    8841 9013   }
    8842 9014   },
     9015 + "resolve-alpn": {
     9016 + "version": "1.1.2",
     9017 + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.1.2.tgz",
     9018 + "integrity": "sha512-8OyfzhAtA32LVUsJSke3auIyINcwdh5l3cvYKdKO0nvsYSKuiLfTM5i78PJswFPT8y6cPW+L1v6/hE95chcpDA=="
     9019 + },
    8843 9020   "resolve-cwd": {
    8844 9021   "version": "3.0.0",
    8845 9022   "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
    skipped 13 lines
    8859 9036   "version": "0.2.1",
    8860 9037   "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
    8861 9038   "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
     9039 + },
     9040 + "responselike": {
     9041 + "version": "2.0.0",
     9042 + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz",
     9043 + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==",
     9044 + "requires": {
     9045 + "lowercase-keys": "^2.0.0"
     9046 + }
    8862 9047   },
    8863 9048   "restore-cursor": {
    8864 9049   "version": "3.1.0",
    skipped 1797 lines
  • package.json
    ■ ■ ■ ■ ■
    skipped 42 lines
    43 43   "express-jsdoc-swagger": "^1.2.0",
    44 44   "express-recaptcha": "^2.1.0",
    45 45   "gitlab": "^3.5.1",
     46 + "got": "^11.8.2",
    46 47   "js-yaml": "^3.10.0",
    47 48   "jsonwebtoken": "^8.4.0",
    48 49   "mailgun-js": "^0.22.0",
    skipped 118 lines
  • source/config.js
    ■ ■ ■ ■ ■ ■
    skipped 107 lines
    108 108   default: '',
    109 109   env: 'GITLAB_TOKEN',
    110 110   },
     111 + onedevBaseUrl: {
     112 + doc: 'Base URL for the OneDev API.',
     113 + format: String,
     114 + default: 'https://code.onedev.io/api',
     115 + env: 'ONEDEV_BASE_URL',
     116 + },
     117 + onedevUsername: {
     118 + doc: 'Username for the OneDev API.',
     119 + format: String,
     120 + default: '',
     121 + env: 'ONEDEV_USERNAME',
     122 + },
     123 + onedevPassword: {
     124 + doc: 'Password or Token for the OneDev API.',
     125 + format: String,
     126 + default: '',
     127 + env: 'ONEDEV_PASSWORD',
     128 + },
    111 129   port: {
    112 130   doc: 'The port to bind the application to.',
    113 131   format: 'port',
    skipped 30 lines
  • source/controllers/auth.js
    ■ ■ ■ ■ ■ ■
    skipped 18 lines
    19 19   siteConfig.get('gitlabAuth.redirectUri')
    20 20   );
    21 21   break;
     22 + case 'onedev':
     23 + requestAccessToken = (siteConfig) => null;
     24 + break;
    22 25   default:
    23 26   requestAccessToken = (siteConfig) =>
    24 27   oauth.requestGitHubAccessToken(
    skipped 41 lines
  • source/lib/GitServiceFactory.js
    ■ ■ ■ ■ ■ ■
    1 1  import GitLab from './GitLab';
    2 2  import GitHub from './GitHub';
     3 +import OneDev from './OneDev';
    3 4   
    4 5  export default async (service, options) => {
    5 6   switch (service) {
    6 7   case 'gitlab':
    7 8   return new GitLab(options);
     9 + case 'onedev':
     10 + return new OneDev(options);
    8 11   default:
    9 12   return new GitHub(options);
    10 13   }
    skipped 2 lines
  • source/lib/OneDev.js
    ■ ■ ■ ■ ■ ■
     1 +import config from '../config';
     2 +import GitService from './GitService';
     3 +import Review from './models/Review';
     4 +import User from './models/User';
     5 + 
     6 +import got from 'got';
     7 + 
     8 +export default class OneDev extends GitService {
     9 + constructor(options = {}) {
     10 + super(options.username, options.repository, options.branch);
     11 + 
     12 + this.api = got.extend({
     13 + prefixUrl: config.get('onedevBaseUrl'),
     14 + username: config.get('onedevUsername'),
     15 + password: config.get('onedevPassword'),
     16 + responseType: 'json'
     17 + });
     18 + }
     19 + 
     20 + _pullFile(path, branch) {
     21 + return this.api.get(`git-projects/${this.repository}/contents/${branch}/${path}`).then((res) => res.body);
     22 + }
     23 + 
     24 + _commitFile(path, content, commitMessage, branch) {
     25 + return this.api.put(
     26 + `git-projects/${this.repository}/contents/${branch}/${path}`, {
     27 + json: {
     28 + message: commitMessage,
     29 + content: content
     30 + }
     31 + }
     32 + );
     33 + }
     34 + 
     35 + getBranchHeadCommit(branch) {
     36 + return this.api.get(`git-projects/${this.repository}/branches/${branch}`).then((res) => res.body.revision);
     37 + }
     38 + 
     39 + createBranch(branch, sha) {
     40 + return this.api.post(
     41 + `git-projects/${this.repository}/branches`, {
     42 + json: {
     43 + branchName: branch,
     44 + revision: sha
     45 + }
     46 + }
     47 + );
     48 + }
     49 + 
     50 + deleteBranch(branch) {
     51 + return this.api.delete(`git-projects/${this.repository}/branches/${branch}`);
     52 + }
     53 + 
     54 + createReview(reviewTitle, branch, reviewBody) {
     55 + return this.api.post(
     56 + `pull-requests`, {
     57 + json: {
     58 + targetProjectId: this.repository,
     59 + sourceProjectId: this.repository,
     60 + targetBranch: this.branch,
     61 + sourceBranch: branch,
     62 + title: reviewTitle,
     63 + description: reviewBody
     64 + }
     65 + }
     66 + );
     67 + }
     68 + 
     69 + getReview(reviewId) {
     70 + return this.api.get(`pull-requests/${reviewId}`)
     71 + .then(res => new Review(res.body.title, res.body.description, '', res.body.sourceBranch, res.body.targetBranch));
     72 + }
     73 + 
     74 + getCurrentUser() {
     75 + return this.api.get(`users/me`)
     76 + .then(res => new User('onedev', res.body.name || '', res.body.email || '', res.body.fullName || '', '', '', '', ''));
     77 + }
     78 +}
     79 + 
  • source/server.js
    ■ ■ ■ ■ ■ ■
    skipped 153 lines
    154 154   '/v:version/entry/:service/:username/:repository/:branch/:property',
    155 155   this.bruteforce.prevent,
    156 156   StaticmanAPI.requireApiVersion([3]),
    157  - StaticmanAPI.requireService(['github', 'gitlab']),
     157 + StaticmanAPI.requireService(['github', 'gitlab', 'onedev']),
    158 158   StaticmanAPI.requireParams(['fields']),
    159 159   this.controllers.process
    160 160   );
    skipped 31 lines
    192 192   '/v:version/auth/:service/:username/:repository/:branch/:property',
    193 193   this.bruteforce.prevent,
    194 194   StaticmanAPI.requireApiVersion([2, 3]),
    195  - StaticmanAPI.requireService(['github', 'gitlab']),
     195 + StaticmanAPI.requireService(['github', 'gitlab', 'onedev']),
    196 196   this.controllers.auth
    197 197   );
    198 198   
    skipped 91 lines
Please wait...
Page is in error, reload to recover