v1.0.21 (#66)
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "coolify",
|
"name": "coolify",
|
||||||
"description": "An open-source, hassle-free, self-hostable Heroku & Netlify alternative.",
|
"description": "An open-source, hassle-free, self-hostable Heroku & Netlify alternative.",
|
||||||
"version": "1.0.20",
|
"version": "1.0.21",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev:docker:start": "docker-compose -f docker-compose-dev.yml up -d",
|
"dev:docker:start": "docker-compose -f docker-compose-dev.yml up -d",
|
||||||
"dev:docker:stop": "docker-compose -f docker-compose-dev.yml down",
|
"dev:docker:stop": "docker-compose -f docker-compose-dev.yml down",
|
||||||
"dev": "NODE_ENV=development svelte-kit dev --host 0.0.0.0",
|
"dev": "TAILWIND_MODE=watch NODE_ENV=development svelte-kit dev --host 0.0.0.0",
|
||||||
"build": "NODE_ENV=production svelte-kit build",
|
"build": "NODE_ENV=production svelte-kit build",
|
||||||
"preview": "svelte-kit preview",
|
"preview": "svelte-kit preview",
|
||||||
"start": "node build",
|
"start": "node build",
|
||||||
@@ -39,6 +39,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@iarna/toml": "^2.2.5",
|
"@iarna/toml": "^2.2.5",
|
||||||
"@zerodevx/svelte-toast": "^0.3.0",
|
"@zerodevx/svelte-toast": "^0.3.0",
|
||||||
|
"bcrypt": "^5.0.1",
|
||||||
"commander": "^7.2.0",
|
"commander": "^7.2.0",
|
||||||
"compare-versions": "^3.6.0",
|
"compare-versions": "^3.6.0",
|
||||||
"cookie": "^0.4.1",
|
"cookie": "^0.4.1",
|
||||||
|
240
pnpm-lock.yaml
generated
240
pnpm-lock.yaml
generated
@@ -9,6 +9,7 @@ specifiers:
|
|||||||
'@typescript-eslint/parser': ^4.26.1
|
'@typescript-eslint/parser': ^4.26.1
|
||||||
'@zerodevx/svelte-toast': ^0.3.0
|
'@zerodevx/svelte-toast': ^0.3.0
|
||||||
autoprefixer: ^10.2.6
|
autoprefixer: ^10.2.6
|
||||||
|
bcrypt: ^5.0.1
|
||||||
commander: ^7.2.0
|
commander: ^7.2.0
|
||||||
compare-versions: ^3.6.0
|
compare-versions: ^3.6.0
|
||||||
cookie: ^0.4.1
|
cookie: ^0.4.1
|
||||||
@@ -43,6 +44,7 @@ specifiers:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@iarna/toml': 2.2.5
|
'@iarna/toml': 2.2.5
|
||||||
'@zerodevx/svelte-toast': 0.3.0
|
'@zerodevx/svelte-toast': 0.3.0
|
||||||
|
bcrypt: 5.0.1
|
||||||
commander: 7.2.0
|
commander: 7.2.0
|
||||||
compare-versions: 3.6.0
|
compare-versions: 3.6.0
|
||||||
cookie: 0.4.1
|
cookie: 0.4.1
|
||||||
@@ -153,6 +155,23 @@ packages:
|
|||||||
resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==}
|
resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/@mapbox/node-pre-gyp/1.0.5:
|
||||||
|
resolution: {integrity: sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
detect-libc: 1.0.3
|
||||||
|
https-proxy-agent: 5.0.0
|
||||||
|
make-dir: 3.1.0
|
||||||
|
node-fetch: 2.6.1
|
||||||
|
nopt: 5.0.0
|
||||||
|
npmlog: 4.1.2
|
||||||
|
rimraf: 3.0.2
|
||||||
|
semver: 7.3.5
|
||||||
|
tar: 6.1.0
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@nodelib/fs.scandir/2.1.5:
|
/@nodelib/fs.scandir/2.1.5:
|
||||||
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
|
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
@@ -381,6 +400,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-TY5dLB5DEpxuHu60M6gum+fDxzIGXg35R8500orz58JTFs9LiHWoEfeJ4n9t7Afix3iMmYLl2thjhnCHCiQIhQ==}
|
resolution: {integrity: sha512-TY5dLB5DEpxuHu60M6gum+fDxzIGXg35R8500orz58JTFs9LiHWoEfeJ4n9t7Afix3iMmYLl2thjhnCHCiQIhQ==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/abbrev/1.1.1:
|
||||||
|
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/acorn-jsx/5.3.1_acorn@7.4.1:
|
/acorn-jsx/5.3.1_acorn@7.4.1:
|
||||||
resolution: {integrity: sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==}
|
resolution: {integrity: sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -408,6 +431,15 @@ packages:
|
|||||||
hasBin: true
|
hasBin: true
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/agent-base/6.0.2:
|
||||||
|
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
|
||||||
|
engines: {node: '>= 6.0.0'}
|
||||||
|
dependencies:
|
||||||
|
debug: 4.3.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: false
|
||||||
|
|
||||||
/ajv/6.12.6:
|
/ajv/6.12.6:
|
||||||
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
|
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -435,6 +467,11 @@ packages:
|
|||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/ansi-regex/2.1.1:
|
||||||
|
resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/ansi-regex/5.0.0:
|
/ansi-regex/5.0.0:
|
||||||
resolution: {integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==}
|
resolution: {integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -462,6 +499,17 @@ packages:
|
|||||||
picomatch: 2.3.0
|
picomatch: 2.3.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/aproba/1.2.0:
|
||||||
|
resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/are-we-there-yet/1.1.5:
|
||||||
|
resolution: {integrity: sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==}
|
||||||
|
dependencies:
|
||||||
|
delegates: 1.0.0
|
||||||
|
readable-stream: 2.3.7
|
||||||
|
dev: false
|
||||||
|
|
||||||
/arg/5.0.0:
|
/arg/5.0.0:
|
||||||
resolution: {integrity: sha512-4P8Zm2H+BRS+c/xX1LrHw0qKpEhdlZjLCgWy+d78T9vqa2Z2SiD2wMrYuWIAFy5IZUD7nnNXroRttz+0RzlrzQ==}
|
resolution: {integrity: sha512-4P8Zm2H+BRS+c/xX1LrHw0qKpEhdlZjLCgWy+d78T9vqa2Z2SiD2wMrYuWIAFy5IZUD7nnNXroRttz+0RzlrzQ==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -527,6 +575,17 @@ packages:
|
|||||||
tweetnacl: 0.14.5
|
tweetnacl: 0.14.5
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/bcrypt/5.0.1:
|
||||||
|
resolution: {integrity: sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==}
|
||||||
|
engines: {node: '>= 10.0.0'}
|
||||||
|
requiresBuild: true
|
||||||
|
dependencies:
|
||||||
|
'@mapbox/node-pre-gyp': 1.0.5
|
||||||
|
node-addon-api: 3.2.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: false
|
||||||
|
|
||||||
/binary-extensions/2.2.0:
|
/binary-extensions/2.2.0:
|
||||||
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
|
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -670,6 +729,16 @@ packages:
|
|||||||
resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
|
resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/chownr/2.0.0:
|
||||||
|
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/code-point-at/1.1.0:
|
||||||
|
resolution: {integrity: sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/color-convert/1.9.3:
|
/color-convert/1.9.3:
|
||||||
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
|
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -729,6 +798,10 @@ packages:
|
|||||||
/concat-map/0.0.1:
|
/concat-map/0.0.1:
|
||||||
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
|
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
|
||||||
|
|
||||||
|
/console-control-strings/1.1.0:
|
||||||
|
resolution: {integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/cookie/0.4.1:
|
/cookie/0.4.1:
|
||||||
resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==}
|
resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==}
|
||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
@@ -919,6 +992,10 @@ packages:
|
|||||||
resolution: {integrity: sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=}
|
resolution: {integrity: sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/delegates/1.0.0:
|
||||||
|
resolution: {integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/denque/1.5.0:
|
/denque/1.5.0:
|
||||||
resolution: {integrity: sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==}
|
resolution: {integrity: sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==}
|
||||||
engines: {node: '>=0.10'}
|
engines: {node: '>=0.10'}
|
||||||
@@ -929,6 +1006,12 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/detect-libc/1.0.3:
|
||||||
|
resolution: {integrity: sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=}
|
||||||
|
engines: {node: '>=0.10'}
|
||||||
|
hasBin: true
|
||||||
|
dev: false
|
||||||
|
|
||||||
/detective/5.2.0:
|
/detective/5.2.0:
|
||||||
resolution: {integrity: sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==}
|
resolution: {integrity: sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==}
|
||||||
engines: {node: '>=0.8.0'}
|
engines: {node: '>=0.8.0'}
|
||||||
@@ -1308,6 +1391,13 @@ packages:
|
|||||||
universalify: 2.0.0
|
universalify: 2.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/fs-minipass/2.1.0:
|
||||||
|
resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
|
||||||
|
engines: {node: '>= 8'}
|
||||||
|
dependencies:
|
||||||
|
minipass: 3.1.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
/fs.realpath/1.0.0:
|
/fs.realpath/1.0.0:
|
||||||
resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
|
resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
|
||||||
|
|
||||||
@@ -1331,6 +1421,19 @@ packages:
|
|||||||
resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=}
|
resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/gauge/2.7.4:
|
||||||
|
resolution: {integrity: sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=}
|
||||||
|
dependencies:
|
||||||
|
aproba: 1.2.0
|
||||||
|
console-control-strings: 1.1.0
|
||||||
|
has-unicode: 2.0.1
|
||||||
|
object-assign: 4.1.1
|
||||||
|
signal-exit: 3.0.3
|
||||||
|
string-width: 1.0.2
|
||||||
|
strip-ansi: 3.0.1
|
||||||
|
wide-align: 1.1.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
/generate-password/1.6.0:
|
/generate-password/1.6.0:
|
||||||
resolution: {integrity: sha512-YUJTQkApkLT/fru0QdYWP0lVZdPKhF5kXCP24sgI4gR/vFMJFopCj5t1+9FAKIYcML/nxzx2PMkA1ymO1FC+tQ==}
|
resolution: {integrity: sha512-YUJTQkApkLT/fru0QdYWP0lVZdPKhF5kXCP24sgI4gR/vFMJFopCj5t1+9FAKIYcML/nxzx2PMkA1ymO1FC+tQ==}
|
||||||
dev: false
|
dev: false
|
||||||
@@ -1369,7 +1472,6 @@ packages:
|
|||||||
minimatch: 3.0.4
|
minimatch: 3.0.4
|
||||||
once: 1.4.0
|
once: 1.4.0
|
||||||
path-is-absolute: 1.0.1
|
path-is-absolute: 1.0.1
|
||||||
dev: true
|
|
||||||
|
|
||||||
/globals/13.8.0:
|
/globals/13.8.0:
|
||||||
resolution: {integrity: sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==}
|
resolution: {integrity: sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==}
|
||||||
@@ -1411,6 +1513,10 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/has-unicode/2.0.1:
|
||||||
|
resolution: {integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/has/1.0.3:
|
/has/1.0.3:
|
||||||
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
|
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
|
||||||
engines: {node: '>= 0.4.0'}
|
engines: {node: '>= 0.4.0'}
|
||||||
@@ -1434,6 +1540,16 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/https-proxy-agent/5.0.0:
|
||||||
|
resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==}
|
||||||
|
engines: {node: '>= 6'}
|
||||||
|
dependencies:
|
||||||
|
agent-base: 6.0.2
|
||||||
|
debug: 4.3.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: false
|
||||||
|
|
||||||
/ieee754/1.2.1:
|
/ieee754/1.2.1:
|
||||||
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
|
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
|
||||||
dev: false
|
dev: false
|
||||||
@@ -1530,6 +1646,13 @@ packages:
|
|||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/is-fullwidth-code-point/1.0.0:
|
||||||
|
resolution: {integrity: sha1-754xOG8DGn8NZDr4L95QxFfvAMs=}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dependencies:
|
||||||
|
number-is-nan: 1.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/is-fullwidth-code-point/3.0.0:
|
/is-fullwidth-code-point/3.0.0:
|
||||||
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
|
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -1717,7 +1840,13 @@ packages:
|
|||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dependencies:
|
dependencies:
|
||||||
yallist: 4.0.0
|
yallist: 4.0.0
|
||||||
dev: true
|
|
||||||
|
/make-dir/3.1.0:
|
||||||
|
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
|
||||||
|
engines: {node: '>=8'}
|
||||||
|
dependencies:
|
||||||
|
semver: 6.3.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/mdn-data/2.0.14:
|
/mdn-data/2.0.14:
|
||||||
resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
|
resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
|
||||||
@@ -1755,10 +1884,31 @@ packages:
|
|||||||
resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
|
resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/minipass/3.1.3:
|
||||||
|
resolution: {integrity: sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==}
|
||||||
|
engines: {node: '>=8'}
|
||||||
|
dependencies:
|
||||||
|
yallist: 4.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/minizlib/2.1.2:
|
||||||
|
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
|
||||||
|
engines: {node: '>= 8'}
|
||||||
|
dependencies:
|
||||||
|
minipass: 3.1.3
|
||||||
|
yallist: 4.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/mkdirp-classic/0.5.3:
|
/mkdirp-classic/0.5.3:
|
||||||
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
|
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/mkdirp/1.0.4:
|
||||||
|
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
hasBin: true
|
||||||
|
dev: false
|
||||||
|
|
||||||
/modern-normalize/1.1.0:
|
/modern-normalize/1.1.0:
|
||||||
resolution: {integrity: sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==}
|
resolution: {integrity: sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -1872,12 +2022,21 @@ packages:
|
|||||||
resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=}
|
resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/node-addon-api/3.2.1:
|
||||||
|
resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/node-emoji/1.10.0:
|
/node-emoji/1.10.0:
|
||||||
resolution: {integrity: sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==}
|
resolution: {integrity: sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
lodash.toarray: 4.4.0
|
lodash.toarray: 4.4.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/node-fetch/2.6.1:
|
||||||
|
resolution: {integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==}
|
||||||
|
engines: {node: 4.x || >=6.0.0}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/node-releases/1.1.71:
|
/node-releases/1.1.71:
|
||||||
resolution: {integrity: sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==}
|
resolution: {integrity: sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -1886,6 +2045,14 @@ packages:
|
|||||||
resolution: {integrity: sha512-DB3Hwyd89dPr5HqEPg3YHjzvwh/mCqizC1zZ8vyofqc+TQRyPDnT4wgXXbLGF4z9YAzwwTLi8pNLhGqcbSjgkA==}
|
resolution: {integrity: sha512-DB3Hwyd89dPr5HqEPg3YHjzvwh/mCqizC1zZ8vyofqc+TQRyPDnT4wgXXbLGF4z9YAzwwTLi8pNLhGqcbSjgkA==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/nopt/5.0.0:
|
||||||
|
resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
abbrev: 1.1.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/normalize-path/3.0.0:
|
/normalize-path/3.0.0:
|
||||||
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
|
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@@ -1901,12 +2068,31 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/npmlog/4.1.2:
|
||||||
|
resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==}
|
||||||
|
dependencies:
|
||||||
|
are-we-there-yet: 1.1.5
|
||||||
|
console-control-strings: 1.1.0
|
||||||
|
gauge: 2.7.4
|
||||||
|
set-blocking: 2.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/nth-check/2.0.0:
|
/nth-check/2.0.0:
|
||||||
resolution: {integrity: sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==}
|
resolution: {integrity: sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==}
|
||||||
dependencies:
|
dependencies:
|
||||||
boolbase: 1.0.0
|
boolbase: 1.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/number-is-nan/1.0.1:
|
||||||
|
resolution: {integrity: sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/object-assign/4.1.1:
|
||||||
|
resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/object-hash/2.2.0:
|
/object-hash/2.2.0:
|
||||||
resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
|
resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
@@ -2490,7 +2676,6 @@ packages:
|
|||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
glob: 7.1.7
|
glob: 7.1.7
|
||||||
dev: true
|
|
||||||
|
|
||||||
/rollup/2.46.0:
|
/rollup/2.46.0:
|
||||||
resolution: {integrity: sha512-qPGoUBNl+Z8uNu0z7pD3WPTABWRbcOwIrO/5ccDJzmrtzn0LVf6Lj91+L5CcWhXl6iWf23FQ6m8Jkl2CmN1O7Q==}
|
resolution: {integrity: sha512-qPGoUBNl+Z8uNu0z7pD3WPTABWRbcOwIrO/5ccDJzmrtzn0LVf6Lj91+L5CcWhXl6iWf23FQ6m8Jkl2CmN1O7Q==}
|
||||||
@@ -2543,13 +2728,21 @@ packages:
|
|||||||
hasBin: true
|
hasBin: true
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/semver/6.3.0:
|
||||||
|
resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
|
||||||
|
hasBin: true
|
||||||
|
dev: false
|
||||||
|
|
||||||
/semver/7.3.5:
|
/semver/7.3.5:
|
||||||
resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==}
|
resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
lru-cache: 6.0.0
|
lru-cache: 6.0.0
|
||||||
dev: true
|
|
||||||
|
/set-blocking/2.0.0:
|
||||||
|
resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/shebang-command/2.0.0:
|
/shebang-command/2.0.0:
|
||||||
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
|
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
|
||||||
@@ -2575,6 +2768,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==}
|
resolution: {integrity: sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/signal-exit/3.0.3:
|
||||||
|
resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/simple-swizzle/0.2.2:
|
/simple-swizzle/0.2.2:
|
||||||
resolution: {integrity: sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=}
|
resolution: {integrity: sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -2649,6 +2846,15 @@ packages:
|
|||||||
engines: {node: '>=0.8.0'}
|
engines: {node: '>=0.8.0'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/string-width/1.0.2:
|
||||||
|
resolution: {integrity: sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dependencies:
|
||||||
|
code-point-at: 1.1.0
|
||||||
|
is-fullwidth-code-point: 1.0.0
|
||||||
|
strip-ansi: 3.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/string-width/4.2.2:
|
/string-width/4.2.2:
|
||||||
resolution: {integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==}
|
resolution: {integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -2670,6 +2876,13 @@ packages:
|
|||||||
safe-buffer: 5.2.1
|
safe-buffer: 5.2.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/strip-ansi/3.0.1:
|
||||||
|
resolution: {integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dependencies:
|
||||||
|
ansi-regex: 2.1.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/strip-ansi/6.0.0:
|
/strip-ansi/6.0.0:
|
||||||
resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==}
|
resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -2885,6 +3098,18 @@ packages:
|
|||||||
readable-stream: 3.6.0
|
readable-stream: 3.6.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/tar/6.1.0:
|
||||||
|
resolution: {integrity: sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==}
|
||||||
|
engines: {node: '>= 10'}
|
||||||
|
dependencies:
|
||||||
|
chownr: 2.0.0
|
||||||
|
fs-minipass: 2.1.0
|
||||||
|
minipass: 3.1.3
|
||||||
|
minizlib: 2.1.2
|
||||||
|
mkdirp: 1.0.4
|
||||||
|
yallist: 4.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/text-table/0.2.0:
|
/text-table/0.2.0:
|
||||||
resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=}
|
resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -3017,6 +3242,12 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
isexe: 2.0.0
|
isexe: 2.0.0
|
||||||
|
|
||||||
|
/wide-align/1.1.3:
|
||||||
|
resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==}
|
||||||
|
dependencies:
|
||||||
|
string-width: 1.0.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
/word-wrap/1.2.3:
|
/word-wrap/1.2.3:
|
||||||
resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
|
resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@@ -3032,7 +3263,6 @@ packages:
|
|||||||
|
|
||||||
/yallist/4.0.0:
|
/yallist/4.0.0:
|
||||||
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
|
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/yaml/1.10.2:
|
/yaml/1.10.2:
|
||||||
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
|
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
|
||||||
|
@@ -52,8 +52,7 @@
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// console.log(error);
|
browser && toast.push(error.error || error || 'Ooops something went wrong.');
|
||||||
// toast.push(error.error || error || 'Ooops something went wrong.');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,80 +1,83 @@
|
|||||||
|
<script>
|
||||||
|
export let github = false;
|
||||||
|
export let githubLoadingText = 'Loading GitHub...';
|
||||||
|
export let fullscreen = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#if fullscreen}
|
||||||
|
{#if github}
|
||||||
|
<div class="fixed left-0 top-0 flex flex-wrap content-center h-full w-full">
|
||||||
|
<div class="main flex justify-center items-center">
|
||||||
|
<div class="w-64">
|
||||||
|
<svg
|
||||||
|
class=" w-28 animate-bounce mx-auto"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
><path
|
||||||
|
d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"
|
||||||
|
/></svg
|
||||||
|
>
|
||||||
|
<div class="text-xl font-bold text-center">
|
||||||
|
{githubLoadingText}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{:else}
|
||||||
|
<div class="main fixed left-0 top-0 flex flex-wrap content-center h-full">
|
||||||
|
<span class="loader" />
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{:else}
|
||||||
|
<div class="main h-64 py-24 left-0 top-0 flex flex-wrap content-center mx-auto">
|
||||||
|
<span class="loader" />
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
.loader {
|
.loader {
|
||||||
width: 8px;
|
width: 8px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
display: block;
|
display: block;
|
||||||
margin: 20px auto;
|
margin: 20px auto;
|
||||||
position: relative;
|
position: relative;
|
||||||
background: currentColor;
|
background: currentColor;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
animation: animloader 0.3s 0.3s linear infinite alternate;
|
animation: animloader 0.3s 0.3s linear infinite alternate;
|
||||||
}
|
}
|
||||||
|
|
||||||
.loader::after,
|
.loader::after,
|
||||||
.loader::before {
|
.loader::before {
|
||||||
content: "";
|
content: '';
|
||||||
width: 8px;
|
width: 8px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background: currentColor;
|
background: currentColor;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
left: 20px;
|
left: 20px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
animation: animloader 0.3s 0.45s linear infinite alternate;
|
animation: animloader 0.3s 0.45s linear infinite alternate;
|
||||||
}
|
}
|
||||||
.loader::before {
|
.loader::before {
|
||||||
left: -20px;
|
left: -20px;
|
||||||
animation-delay: 0s;
|
animation-delay: 0s;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes animloader {
|
@keyframes animloader {
|
||||||
0% {
|
0% {
|
||||||
height: 48px;
|
height: 48px;
|
||||||
}
|
}
|
||||||
100% {
|
100% {
|
||||||
height: 4px;
|
height: 4px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
|
||||||
export let github = false;
|
|
||||||
export let githubLoadingText = "Loading GitHub...";
|
|
||||||
export let fullscreen = true;
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{#if fullscreen}
|
|
||||||
{#if github}
|
|
||||||
<div class="fixed left-0 top-0 flex flex-wrap content-center h-full w-full">
|
|
||||||
<div class="main flex justify-center items-center">
|
|
||||||
<div class="w-64">
|
|
||||||
<svg
|
|
||||||
class=" w-28 animate-bounce mx-auto"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
><path
|
|
||||||
d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"
|
|
||||||
></path></svg
|
|
||||||
>
|
|
||||||
<div class="text-xl font-bold text-center">
|
|
||||||
{githubLoadingText}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{:else}
|
|
||||||
<div class="main fixed left-0 top-0 flex flex-wrap content-center h-full">
|
|
||||||
<span class=" loader"></span>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
|
@@ -1,54 +1,56 @@
|
|||||||
<script>
|
<script>
|
||||||
export let value;
|
export let value;
|
||||||
let showPassword = false;
|
let showPassword = false;
|
||||||
|
export let isEditable = false;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="relative w-full">
|
<div class="relative w-full">
|
||||||
<input
|
{#if showPassword}
|
||||||
type="{showPassword ? 'text' : 'password'}"
|
<input type="text" class="w-full" bind:value disabled={!isEditable} />
|
||||||
class="w-full "
|
{:else}
|
||||||
{value}
|
<input type="password" class="w-full" bind:value disabled={!isEditable} />
|
||||||
disabled
|
{/if}
|
||||||
/>
|
|
||||||
<div
|
<div
|
||||||
class="absolute top-0 my-2 mx-2 right-0 cursor-pointer text-warmGray-600 hover:text-white"
|
class="absolute top-0 my-2 mx-2 right-0 cursor-pointer text-warmGray-600 hover:text-white"
|
||||||
on:click="{() => showPassword = !showPassword}"
|
on:click={() => (showPassword = !showPassword)}
|
||||||
>
|
>
|
||||||
{#if showPassword}
|
{#if showPassword}
|
||||||
<svg
|
<svg
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
class="h-6 w-6"
|
class="h-6 w-6"
|
||||||
fill="none"
|
fill="none"
|
||||||
viewBox="0 0 24 24"
|
viewBox="0 0 24 24"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
>
|
>
|
||||||
<path
|
<path
|
||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
d="M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21"
|
d="M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21"
|
||||||
></path>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
{:else}
|
{:else}
|
||||||
<svg
|
<svg
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
class="h-6 w-6"
|
class="h-6 w-6"
|
||||||
fill="none"
|
fill="none"
|
||||||
viewBox="0 0 24 24"
|
viewBox="0 0 24 24"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
>
|
>
|
||||||
<path
|
<path
|
||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"
|
||||||
<path
|
/>
|
||||||
stroke-linecap="round"
|
<path
|
||||||
stroke-linejoin="round"
|
stroke-linecap="round"
|
||||||
stroke-width="2"
|
stroke-linejoin="round"
|
||||||
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"
|
stroke-width="2"
|
||||||
></path>
|
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"
|
||||||
</svg>
|
/>
|
||||||
{/if}
|
</svg>
|
||||||
</div>
|
{/if}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -1,2 +1,2 @@
|
|||||||
export const publicPages = ['/', '/api/v1/login/github/app', '/api/v1/webhooks/deploy', '/success'];
|
export const publicPages = ['/', '/api/v1/login/github/app', '/api/v1/webhooks/deploy', '/success', '/api/v1/login/email']
|
||||||
export const VITE_GITHUB_APP_NAME = import.meta.env.VITE_GITHUB_APP_NAME;
|
export const VITE_GITHUB_APP_NAME = import.meta.env.VITE_GITHUB_APP_NAME
|
||||||
|
@@ -4,12 +4,16 @@ export interface IUser extends Document {
|
|||||||
email: string;
|
email: string;
|
||||||
avatar?: string;
|
avatar?: string;
|
||||||
uid: string;
|
uid: string;
|
||||||
|
type: string;
|
||||||
|
password: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const UserSchema = new Schema({
|
const UserSchema = new Schema({
|
||||||
email: { type: String, required: true, unique: true },
|
email: { type: String, required: true, unique: true },
|
||||||
avatar: { type: String },
|
avatar: { type: String },
|
||||||
uid: { type: String, required: true }
|
uid: { type: String, required: true },
|
||||||
|
type: { type: String, required: true, default: 'github' },
|
||||||
|
password: { type: String }
|
||||||
});
|
});
|
||||||
|
|
||||||
UserSchema.set('timestamps', true);
|
UserSchema.set('timestamps', true);
|
||||||
|
@@ -23,7 +23,6 @@
|
|||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
@@ -37,8 +36,9 @@
|
|||||||
import Tooltip from '$components/Tooltip.svelte';
|
import Tooltip from '$components/Tooltip.svelte';
|
||||||
import compareVersions from 'compare-versions';
|
import compareVersions from 'compare-versions';
|
||||||
import packageJson from '../../package.json';
|
import packageJson from '../../package.json';
|
||||||
import { dashboard } from '$store';
|
import { dashboard, settings } from '$store';
|
||||||
import { browser } from '$app/env';
|
import { browser } from '$app/env';
|
||||||
|
$settings.clientId = import.meta.env.VITE_GITHUB_APP_CLIENTID !== 'null' ? import.meta.env.VITE_GITHUB_APP_CLIENTID : null
|
||||||
$dashboard = initDashboard;
|
$dashboard = initDashboard;
|
||||||
const branch =
|
const branch =
|
||||||
process.env.NODE_ENV === 'production' &&
|
process.env.NODE_ENV === 'production' &&
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
let upgradeDisabled = false;
|
let upgradeDisabled = false;
|
||||||
let upgradeDone = false;
|
let upgradeDone = false;
|
||||||
let showAck = false;
|
let showAck = false;
|
||||||
let globalFeatureFlag = browser && localStorage.getItem('globalFeatureFlag')
|
let globalFeatureFlag = browser && localStorage.getItem('globalFeatureFlag');
|
||||||
const options = {
|
const options = {
|
||||||
duration: 2000
|
duration: 2000
|
||||||
};
|
};
|
||||||
@@ -104,7 +104,6 @@
|
|||||||
localStorage.setItem('automaticErrorReportsAck', 'true');
|
localStorage.setItem('automaticErrorReportsAck', 'true');
|
||||||
showAck = false;
|
showAck = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<SvelteToast {options} />
|
<SvelteToast {options} />
|
||||||
@@ -136,69 +135,136 @@
|
|||||||
class:border-purple-500={$page.path === '/dashboard/databases'}
|
class:border-purple-500={$page.path === '/dashboard/databases'}
|
||||||
>
|
>
|
||||||
<div class="w-10 pt-4 pb-4"><img src="/favicon.png" alt="coolLabs logo" /></div>
|
<div class="w-10 pt-4 pb-4"><img src="/favicon.png" alt="coolLabs logo" /></div>
|
||||||
|
{#if $settings.clientId}
|
||||||
<Tooltip position="right" label="Applications">
|
<Tooltip position="right" label="Applications">
|
||||||
<div
|
<div
|
||||||
class="p-2 hover:bg-warmGray-700 rounded hover:text-green-500 mt-4 transition-all duration-100 cursor-pointer"
|
class="p-2 hover:bg-warmGray-700 rounded hover:text-green-500 mt-4 transition-all duration-100 cursor-pointer"
|
||||||
on:click={() => goto('/dashboard/applications')}
|
on:click={() => goto('/dashboard/applications')}
|
||||||
class:text-green-500={$page.path === '/dashboard/applications' ||
|
class:text-green-500={$page.path === '/dashboard/applications' ||
|
||||||
$page.path.startsWith('/application')}
|
$page.path.startsWith('/application')}
|
||||||
class:bg-warmGray-700={$page.path === '/dashboard/applications' ||
|
class:bg-warmGray-700={$page.path === '/dashboard/applications' ||
|
||||||
$page.path.startsWith('/application')}
|
$page.path.startsWith('/application')}
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="w-8"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
><rect x="4" y="4" width="16" height="16" rx="2" ry="2" /><rect
|
|
||||||
x="9"
|
|
||||||
y="9"
|
|
||||||
width="6"
|
|
||||||
height="6"
|
|
||||||
/><line x1="9" y1="1" x2="9" y2="4" /><line x1="15" y1="1" x2="15" y2="4" /><line
|
|
||||||
x1="9"
|
|
||||||
y1="20"
|
|
||||||
x2="9"
|
|
||||||
y2="23"
|
|
||||||
/><line x1="15" y1="20" x2="15" y2="23" /><line x1="20" y1="9" x2="23" y2="9" /><line
|
|
||||||
x1="20"
|
|
||||||
y1="14"
|
|
||||||
x2="23"
|
|
||||||
y2="14"
|
|
||||||
/><line x1="1" y1="9" x2="4" y2="9" /><line x1="1" y1="14" x2="4" y2="14" /></svg
|
|
||||||
>
|
>
|
||||||
</div>
|
<svg
|
||||||
</Tooltip>
|
class="w-8"
|
||||||
<Tooltip position="right" label="Databases">
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
<div
|
viewBox="0 0 24 24"
|
||||||
class="p-2 hover:bg-warmGray-700 rounded hover:text-purple-500 my-4 transition-all duration-100 cursor-pointer"
|
fill="none"
|
||||||
on:click={() => goto('/dashboard/databases')}
|
stroke="currentColor"
|
||||||
class:text-purple-500={$page.path === '/dashboard/databases' ||
|
stroke-width="2"
|
||||||
$page.path.startsWith('/database')}
|
|
||||||
class:bg-warmGray-700={$page.path === '/dashboard/databases' ||
|
|
||||||
$page.path.startsWith('/database')}
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="w-8"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
|
><rect x="4" y="4" width="16" height="16" rx="2" ry="2" /><rect
|
||||||
|
x="9"
|
||||||
|
y="9"
|
||||||
|
width="6"
|
||||||
|
height="6"
|
||||||
|
/><line x1="9" y1="1" x2="9" y2="4" /><line x1="15" y1="1" x2="15" y2="4" /><line
|
||||||
|
x1="9"
|
||||||
|
y1="20"
|
||||||
|
x2="9"
|
||||||
|
y2="23"
|
||||||
|
/><line x1="15" y1="20" x2="15" y2="23" /><line
|
||||||
|
x1="20"
|
||||||
|
y1="9"
|
||||||
|
x2="23"
|
||||||
|
y2="9"
|
||||||
|
/><line x1="20" y1="14" x2="23" y2="14" /><line x1="1" y1="9" x2="4" y2="9" /><line
|
||||||
|
x1="1"
|
||||||
|
y1="14"
|
||||||
|
x2="4"
|
||||||
|
y2="14"
|
||||||
|
/></svg
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</Tooltip>
|
||||||
|
<Tooltip position="right" label="Databases">
|
||||||
|
<div
|
||||||
|
class="p-2 hover:bg-warmGray-700 rounded hover:text-purple-500 my-4 transition-all duration-100 cursor-pointer"
|
||||||
|
on:click={() => goto('/dashboard/databases')}
|
||||||
|
class:text-purple-500={$page.path === '/dashboard/databases' ||
|
||||||
|
$page.path.startsWith('/database')}
|
||||||
|
class:bg-warmGray-700={$page.path === '/dashboard/databases' ||
|
||||||
|
$page.path.startsWith('/database')}
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
class="w-8"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
stroke-width="2"
|
||||||
|
d="M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</Tooltip>
|
||||||
|
{:else}
|
||||||
|
<Tooltip
|
||||||
|
position="right"
|
||||||
|
label="Applications disabled, no GitHub Integration detected"
|
||||||
|
size="large"
|
||||||
|
>
|
||||||
|
<div class="p-2 text-warmGray-700 mt-4 transition-all duration-100 cursor-pointer">
|
||||||
|
<svg
|
||||||
|
class="w-8"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
d="M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4"
|
stroke-linecap="round"
|
||||||
/>
|
stroke-linejoin="round"
|
||||||
</svg>
|
><rect x="4" y="4" width="16" height="16" rx="2" ry="2" /><rect
|
||||||
</div>
|
x="9"
|
||||||
</Tooltip>
|
y="9"
|
||||||
|
width="6"
|
||||||
|
height="6"
|
||||||
|
/><line x1="9" y1="1" x2="9" y2="4" /><line x1="15" y1="1" x2="15" y2="4" /><line
|
||||||
|
x1="9"
|
||||||
|
y1="20"
|
||||||
|
x2="9"
|
||||||
|
y2="23"
|
||||||
|
/><line x1="15" y1="20" x2="15" y2="23" /><line
|
||||||
|
x1="20"
|
||||||
|
y1="9"
|
||||||
|
x2="23"
|
||||||
|
y2="9"
|
||||||
|
/><line x1="20" y1="14" x2="23" y2="14" /><line x1="1" y1="9" x2="4" y2="9" /><line
|
||||||
|
x1="1"
|
||||||
|
y1="14"
|
||||||
|
x2="4"
|
||||||
|
y2="14"
|
||||||
|
/></svg
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</Tooltip>
|
||||||
|
<Tooltip position="right" label="Databases disabled, no GitHub Integration detected" size="large">
|
||||||
|
<div
|
||||||
|
class="p-2 text-warmGray-700 my-4 transition-all duration-100 cursor-pointer"
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
class="w-8"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
stroke-width="2"
|
||||||
|
d="M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</Tooltip>
|
||||||
|
{/if}
|
||||||
|
|
||||||
<Tooltip position="right" label="Services">
|
<Tooltip position="right" label="Services">
|
||||||
<div
|
<div
|
||||||
class="p-2 hover:bg-warmGray-700 rounded hover:text-blue-500 transition-all duration-100 cursor-pointer"
|
class="p-2 hover:bg-warmGray-700 rounded hover:text-blue-500 transition-all duration-100 cursor-pointer"
|
||||||
@@ -226,29 +292,29 @@
|
|||||||
</Tooltip>
|
</Tooltip>
|
||||||
<div class="flex-1" />
|
<div class="flex-1" />
|
||||||
{#if globalFeatureFlag}
|
{#if globalFeatureFlag}
|
||||||
<Tooltip position="right" label="Server(s)">
|
<Tooltip position="right" label="Servers">
|
||||||
<div
|
<div
|
||||||
class="p-2 hover:bg-warmGray-700 rounded hover:text-red-500 mb-4 transition-all duration-100 cursor-pointer"
|
class="p-2 hover:bg-warmGray-700 rounded hover:text-red-500 mb-4 transition-all duration-100 cursor-pointer"
|
||||||
on:click={() => goto('/servers')}
|
on:click={() => goto('/servers')}
|
||||||
class:text-red-500={$page.path === '/servers' || $page.path.startsWith('/servers')}
|
class:text-red-500={$page.path === '/servers' || $page.path.startsWith('/servers')}
|
||||||
class:bg-warmGray-700={$page.path === '/servers' || $page.path.startsWith('/servers')}
|
class:bg-warmGray-700={$page.path === '/servers' || $page.path.startsWith('/servers')}
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="w-8"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
>
|
>
|
||||||
<path
|
<svg
|
||||||
stroke-linecap="round"
|
class="w-8"
|
||||||
stroke-linejoin="round"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
stroke-width="2"
|
fill="none"
|
||||||
d="M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-2-4h.01M17 16h.01"
|
viewBox="0 0 24 24"
|
||||||
/>
|
stroke="currentColor"
|
||||||
</svg>
|
>
|
||||||
</div>
|
<path
|
||||||
</Tooltip>
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
stroke-width="2"
|
||||||
|
d="M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-2-4h.01M17 16h.01"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</Tooltip>
|
||||||
{/if}
|
{/if}
|
||||||
<Tooltip position="right" label="Settings">
|
<Tooltip position="right" label="Settings">
|
||||||
<button
|
<button
|
||||||
|
103
src/routes/api/v1/login/email.ts
Normal file
103
src/routes/api/v1/login/email.ts
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
import mongoose from 'mongoose';
|
||||||
|
import Settings from '$models/Settings';
|
||||||
|
import User from '$models/User';
|
||||||
|
import bcrypt from 'bcrypt';
|
||||||
|
import cuid from 'cuid';
|
||||||
|
import jsonwebtoken from 'jsonwebtoken';
|
||||||
|
import type { Request } from '@sveltejs/kit';
|
||||||
|
|
||||||
|
const saltRounds = 15;
|
||||||
|
|
||||||
|
export async function post(request: Request) {
|
||||||
|
const { email, password } = request.body
|
||||||
|
const { JWT_SIGN_KEY } = process.env;
|
||||||
|
const settings = await Settings.findOne({ applicationName: 'coolify' });
|
||||||
|
const registeredUsers = await User.find().countDocuments();
|
||||||
|
const foundUser = await User.findOne({ email });
|
||||||
|
try {
|
||||||
|
let uid = cuid();
|
||||||
|
if (foundUser) {
|
||||||
|
if (foundUser.type === 'github') {
|
||||||
|
return {
|
||||||
|
status: 500,
|
||||||
|
body: {
|
||||||
|
error: 'Wrong password or email address.'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
uid = foundUser.uid;
|
||||||
|
if (!await bcrypt.compare(password, foundUser.password)) {
|
||||||
|
return {
|
||||||
|
status: 500,
|
||||||
|
body: {
|
||||||
|
error: 'Wrong password or email address.'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (registeredUsers === 0) {
|
||||||
|
const newUser = new User({
|
||||||
|
_id: new mongoose.Types.ObjectId(),
|
||||||
|
email,
|
||||||
|
uid,
|
||||||
|
type: 'email',
|
||||||
|
password: await bcrypt.hash(password, saltRounds)
|
||||||
|
});
|
||||||
|
const defaultSettings = new Settings({
|
||||||
|
_id: new mongoose.Types.ObjectId()
|
||||||
|
});
|
||||||
|
try {
|
||||||
|
await newUser.save();
|
||||||
|
await defaultSettings.save();
|
||||||
|
} catch (error) {
|
||||||
|
return {
|
||||||
|
status: 500,
|
||||||
|
error: error.message || error
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!settings?.allowRegistration) {
|
||||||
|
return {
|
||||||
|
status: 500,
|
||||||
|
body: {
|
||||||
|
error: 'Registration disabled, enable it in settings.'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
const newUser = new User({
|
||||||
|
_id: new mongoose.Types.ObjectId(),
|
||||||
|
email,
|
||||||
|
uid,
|
||||||
|
type: 'email',
|
||||||
|
password: await bcrypt.hash(password, saltRounds)
|
||||||
|
});
|
||||||
|
try {
|
||||||
|
await newUser.save();
|
||||||
|
} catch (error) {
|
||||||
|
return {
|
||||||
|
status: 500,
|
||||||
|
error: error.message || error
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const coolToken = jsonwebtoken.sign({}, JWT_SIGN_KEY, {
|
||||||
|
expiresIn: 15778800,
|
||||||
|
algorithm: 'HS256',
|
||||||
|
audience: 'coolLabs',
|
||||||
|
issuer: 'coolLabs',
|
||||||
|
jwtid: uid,
|
||||||
|
subject: `User:${uid}`,
|
||||||
|
notBefore: -1000
|
||||||
|
});
|
||||||
|
request.locals.session.data = { coolToken, ghToken: null };
|
||||||
|
return {
|
||||||
|
status: 200,
|
||||||
|
body: {}
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
return { status: 500, body: { error: error.message || error } };
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -33,7 +33,8 @@ export async function get(request: Request) {
|
|||||||
_id: new mongoose.Types.ObjectId(),
|
_id: new mongoose.Types.ObjectId(),
|
||||||
email,
|
email,
|
||||||
avatar: avatar_url,
|
avatar: avatar_url,
|
||||||
uid
|
uid,
|
||||||
|
type: 'github'
|
||||||
});
|
});
|
||||||
const defaultSettings = new Settings({
|
const defaultSettings = new Settings({
|
||||||
_id: new mongoose.Types.ObjectId()
|
_id: new mongoose.Types.ObjectId()
|
||||||
@@ -68,7 +69,8 @@ export async function get(request: Request) {
|
|||||||
_id: new mongoose.Types.ObjectId(),
|
_id: new mongoose.Types.ObjectId(),
|
||||||
email,
|
email,
|
||||||
avatar: avatar_url,
|
avatar: avatar_url,
|
||||||
uid
|
uid,
|
||||||
|
type: 'github'
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
await newUser.save();
|
await newUser.save();
|
||||||
|
@@ -1,3 +1,18 @@
|
|||||||
|
<script context="module" lang="ts">
|
||||||
|
/**
|
||||||
|
* @type {import('@sveltejs/kit').Load}
|
||||||
|
*/
|
||||||
|
export async function load(session) {
|
||||||
|
if (!browser && !process.env.VITE_GITHUB_APP_CLIENTID) {
|
||||||
|
return {
|
||||||
|
status: 301,
|
||||||
|
redirect: '/dashboard/services'
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { application, initialApplication, initConf, dashboard, prApplication } from '$store';
|
import { application, initialApplication, initConf, dashboard, prApplication } from '$store';
|
||||||
import { onDestroy } from 'svelte';
|
import { onDestroy } from 'svelte';
|
||||||
@@ -58,7 +73,6 @@
|
|||||||
onDestroy(() => {
|
onDestroy(() => {
|
||||||
$application = JSON.parse(JSON.stringify(initialApplication));
|
$application = JSON.parse(JSON.stringify(initialApplication));
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#await loadConfiguration()}
|
{#await loadConfiguration()}
|
||||||
|
@@ -1,8 +1,28 @@
|
|||||||
|
<script context="module" lang="ts">
|
||||||
|
import { request } from '$lib/request';
|
||||||
|
/**
|
||||||
|
* @type {import('@sveltejs/kit').Load}
|
||||||
|
*/
|
||||||
|
export async function load(session) {
|
||||||
|
if (!browser && !process.env.VITE_GITHUB_APP_CLIENTID) {
|
||||||
|
return {
|
||||||
|
status: 301,
|
||||||
|
redirect: '/dashboard/services'
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
props: {
|
||||||
|
initDashboard: await request('/api/v1/dashboard', session)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
import { dashboard, dateOptions } from '$store';
|
import { dashboard, dateOptions, settings } from '$store';
|
||||||
import { fade } from 'svelte/transition';
|
import { fade } from 'svelte/transition';
|
||||||
|
import { browser } from '$app/env';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
@@ -1,3 +1,18 @@
|
|||||||
|
<script context="module" lang="ts">
|
||||||
|
/**
|
||||||
|
* @type {import('@sveltejs/kit').Load}
|
||||||
|
*/
|
||||||
|
export async function load(session) {
|
||||||
|
if (!browser && !process.env.VITE_GITHUB_APP_CLIENTID) {
|
||||||
|
return {
|
||||||
|
status: 301,
|
||||||
|
redirect: '/dashboard/services'
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
import MongoDb from '$components/Database/SVGs/MongoDb.svelte';
|
import MongoDb from '$components/Database/SVGs/MongoDb.svelte';
|
||||||
@@ -8,7 +23,7 @@
|
|||||||
import { dashboard } from '$store';
|
import { dashboard } from '$store';
|
||||||
import { fade } from 'svelte/transition';
|
import { fade } from 'svelte/transition';
|
||||||
import Redis from '$components/Database/SVGs/Redis.svelte';
|
import Redis from '$components/Database/SVGs/Redis.svelte';
|
||||||
|
import { browser } from '$app/env';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="py-5 text-left px-6 text-3xl tracking-tight font-bold flex items-center">
|
<div class="py-5 text-left px-6 text-3xl tracking-tight font-bold flex items-center">
|
||||||
@@ -59,9 +74,7 @@
|
|||||||
customClass="w-10 h-10 fill-current text-red-600 absolute top-0 left-0 -m-4"
|
customClass="w-10 h-10 fill-current text-red-600 absolute top-0 left-0 -m-4"
|
||||||
/>
|
/>
|
||||||
{:else if database.configuration.general.type == 'redis'}
|
{:else if database.configuration.general.type == 'redis'}
|
||||||
<Redis
|
<Redis customClass="w-10 h-10 absolute top-0 left-0 -m-4" />
|
||||||
customClass="w-10 h-10 absolute top-0 left-0 -m-4"
|
|
||||||
/>
|
|
||||||
{:else if database.configuration.general.type == 'clickhouse'}
|
{:else if database.configuration.general.type == 'clickhouse'}
|
||||||
<Clickhouse
|
<Clickhouse
|
||||||
customClass="w-10 h-10 fill-current text-red-600 absolute top-0 left-0 -m-4"
|
customClass="w-10 h-10 fill-current text-red-600 absolute top-0 left-0 -m-4"
|
||||||
|
@@ -1,10 +1,15 @@
|
|||||||
<script>
|
<script>
|
||||||
import { browser } from '$app/env';
|
import { browser } from '$app/env';
|
||||||
|
|
||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
import { session } from '$app/stores';
|
import { session } from '$app/stores';
|
||||||
|
import { toast } from '@zerodevx/svelte-toast';
|
||||||
|
import PasswordField from '$components/PasswordField.svelte';
|
||||||
import { request } from '$lib/request';
|
import { request } from '$lib/request';
|
||||||
|
import { settings } from '$store';
|
||||||
|
import Loading from '$components/Loading.svelte';
|
||||||
|
let loading = false;
|
||||||
|
let email = null;
|
||||||
|
let password = null;
|
||||||
async function login() {
|
async function login() {
|
||||||
const left = screen.width / 2 - 1020 / 2;
|
const left = screen.width / 2 - 1020 / 2;
|
||||||
const top = screen.height / 2 - 618 / 2;
|
const top = screen.height / 2 - 618 / 2;
|
||||||
@@ -22,11 +27,26 @@
|
|||||||
const timer = setInterval(() => {
|
const timer = setInterval(() => {
|
||||||
if (newWindow?.closed) {
|
if (newWindow?.closed) {
|
||||||
clearInterval(timer);
|
clearInterval(timer);
|
||||||
browser && location.reload()
|
browser && location.reload();
|
||||||
}
|
}
|
||||||
}, 100);
|
}, 100);
|
||||||
}
|
}
|
||||||
|
async function loginWithEmail() {
|
||||||
|
try {
|
||||||
|
loading = true;
|
||||||
|
await request('/api/v1/login/email', $session, {
|
||||||
|
body: {
|
||||||
|
email,
|
||||||
|
password
|
||||||
|
}
|
||||||
|
});
|
||||||
|
browser && location.reload();
|
||||||
|
} catch (error) {
|
||||||
|
browser && toast.push(error.error || error || 'Ooops something went wrong.');
|
||||||
|
} finally {
|
||||||
|
loading = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="flex justify-center items-center h-screen w-full bg-warmGray-900">
|
<div class="flex justify-center items-center h-screen w-full bg-warmGray-900">
|
||||||
@@ -37,24 +57,54 @@
|
|||||||
>
|
>
|
||||||
<span class="border-gradient">Coolify</span>
|
<span class="border-gradient">Coolify</span>
|
||||||
</p>
|
</p>
|
||||||
<h2 class="text-2xl md:text-3xl font-extrabold text-white">
|
<h2 class="text-2xl md:text-3xl font-extrabold text-white py-10">
|
||||||
An open-source, hassle-free, self-hostable<br />
|
An open-source, hassle-free, self-hostable<br />
|
||||||
<span class="text-indigo-400">Heroku</span>
|
<span class="text-indigo-400">Heroku</span>
|
||||||
& <span class="text-green-400">Netlify</span> alternative
|
& <span class="text-green-400">Netlify</span> alternative
|
||||||
</h2>
|
</h2>
|
||||||
<div class="text-center py-10">
|
{#if loading}
|
||||||
{#if !$session.isLoggedIn}
|
<Loading fullscreen={false}/>
|
||||||
<button
|
{:else}
|
||||||
class="text-white bg-warmGray-800 hover:bg-warmGray-700 rounded p-2 px-10 font-bold"
|
<div class="text-center py-10 max-w-7xl">
|
||||||
on:click={login}>Login with Github</button
|
{#if !$session.isLoggedIn}
|
||||||
>
|
{#if $settings.clientId}
|
||||||
{:else}
|
<button
|
||||||
<button
|
class="text-white bg-warmGray-800 hover:bg-warmGray-700 rounded p-2 px-10 font-bold"
|
||||||
class="text-white bg-warmGray-800 hover:bg-warmGray-700 rounded p-2 px-10 font-bold"
|
on:click={login}>Login with GitHub</button
|
||||||
on:click={() => goto('/dashboard/applications')}>Get Started</button
|
>
|
||||||
>
|
{:else}
|
||||||
{/if}
|
<div>
|
||||||
</div>
|
<div class="grid grid-flow-row gap-2 items-center pb-6">
|
||||||
|
<div class="grid grid-flow-row">
|
||||||
|
<label for="Email" class="">Email address</label>
|
||||||
|
<input
|
||||||
|
class="border-2"
|
||||||
|
id="Email"
|
||||||
|
bind:value={email}
|
||||||
|
placeholder="hi@coollabs.io"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="grid grid-flow-row">
|
||||||
|
<label for="Password" class="">Password</label>
|
||||||
|
<PasswordField bind:value={password} isEditable />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="space-x-4 pt-10">
|
||||||
|
<button
|
||||||
|
class="text-white bg-warmGray-800 hover:bg-warmGray-700 rounded p-2 px-10 font-bold"
|
||||||
|
on:click={loginWithEmail}>Login with Email</button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{:else}
|
||||||
|
<button
|
||||||
|
class="text-white bg-warmGray-800 hover:bg-warmGray-700 rounded p-2 px-10 font-bold"
|
||||||
|
on:click={() => goto('/dashboard/applications')}>Get Started</button
|
||||||
|
>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -6,7 +6,9 @@ import type {
|
|||||||
GithubInstallations
|
GithubInstallations
|
||||||
} from 'src/global';
|
} from 'src/global';
|
||||||
import { writable } from 'svelte/store';
|
import { writable } from 'svelte/store';
|
||||||
|
export const settings = writable({
|
||||||
|
clientId: null
|
||||||
|
})
|
||||||
export const dashboard = writable<Dashboard>({
|
export const dashboard = writable<Dashboard>({
|
||||||
databases: {
|
databases: {
|
||||||
deployed: []
|
deployed: []
|
||||||
|
Reference in New Issue
Block a user