diff --git a/.gitignore b/.gitignore index 8beebb2..9649193 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ lib/* **/.DS_Store *.swp .DS_Store +database/sqlite.db \ No newline at end of file diff --git a/bin/app.js b/bin/app.js index 0a94f47..d14b412 100644 --- a/bin/app.js +++ b/bin/app.js @@ -19,6 +19,16 @@ function createServer (port) { ws(app).getWss('/') const { getNetwork, initializeFrontEnd, modifyYml } = Utils + + // registerEventCallback + this.registerEventCallback(({ name, status, url, message }) => { + const isSuccess = status === '3' + Utils.msg(this.config.webhooks, this.config.webhookType, 'ffandown notification', `${name}: ${isSuccess ? 'download successful' : 'download failed'}`) + .catch(e => { + Utils.LOG.warn('message failed:' + e) + }) + }) + app.ws('/ws', (ws, req) => { ws.send(Utils.sendWsMsg('connected')) ws.on('message', async (msg) => { @@ -83,19 +93,9 @@ function createServer (port) { for (const urlItem of url) { // eslint-disable-next-line max-len this.createDownloadMission({ url: urlItem, dir, preset, enableTimeSuffix: enableTimeSuffix ?? false, useragent, outputformat }).then(() => { - Utils.LOG.info('download success:' + urlItem) - // eslint-disable-next-line max-len - Utils.msg(this.config.webhooks, this.config.webhookType, 'ffandown download success', `${urlItem}`) - .catch(e => { - Utils.LOG.warn('message failed:' + e) - }) + Utils.LOG.info('download mission created:' + urlItem) }).catch((e) => { - Utils.LOG.warn('download failed:' + e) - // eslint-disable-next-line max-len - Utils.msg(this.config.webhooks, this.config.webhookType, 'ffandown download failed', `${urlItem}: ${e}`) - .catch(e => { - Utils.LOG.warn('message failed:' + e) - }) + Utils.LOG.warn('download mission create failed:' + e) }) } } else { @@ -108,18 +108,9 @@ function createServer (port) { useragent, outputformat, }).then(() => { - Utils.LOG.info('download success:' + url) - Utils.msg(this.config.webhooks, this.config.webhookType, 'ffandown download success', `${url}`) - .catch(e => { - Utils.LOG.warn('message failed:' + e) - }) + Utils.LOG.info('download mission created:' + url) }).catch((e) => { - Utils.LOG.warn('download failed:' + e) - // eslint-disable-next-line max-len - Utils.msg(this.config.webhooks, this.config.webhookType, 'ffandown download failed', `${url}: ${e}`) - .catch(e => { - Utils.LOG.warn('message failed:' + e) - }) + Utils.LOG.warn('download mission create failed:' + e) }) } res.send({ code: 0, message: `${name} video download mission create success` }) @@ -237,7 +228,14 @@ function createServer (port) { }) app.listen(port, async () => { // initial front end resouce - await initializeFrontEnd() + try { + await initializeFrontEnd() + } catch (e) { + // download frontend static file error; + console.warn(colors.red(e)); + process.exit(0) + + } const list = await getNetwork() const listenString = list.reduce((pre, val) => { return pre + `\n ${colors.white(' -')} ${colors.brightCyan('http://' + val + ':' + port + '/')}` diff --git a/bin/utils/message.js b/bin/utils/message.js index c417dca..64f3c5a 100644 --- a/bin/utils/message.js +++ b/bin/utils/message.js @@ -25,7 +25,7 @@ const getFeiShuBody = (text, More) => { content: { post: { zh_cn: { - title: '文件下载通知', + title: 'ffandown', content, }, }, diff --git a/bin/utils/version.js b/bin/utils/version.js index 29d869f..25757a1 100644 --- a/bin/utils/version.js +++ b/bin/utils/version.js @@ -4,6 +4,7 @@ const fs = require('fs') const fse = require('fs-extra') const path = require('path') const download = require('download') +const log = require('./log') const getLatestVersion = async (repo = 'ffandown-front') => { // eslint-disable-next-line max-len @@ -88,17 +89,34 @@ const addVersionFile = (version, msg, upd = new Date().getTime()) => { } const autoUpdateFrontEnd = async () => { - const { version, urls } = await getLatestVersion() - const { browser_download_url } = urls[0] - if (!browser_download_url) throw new Error('no latest release url found') - fse.ensureDirSync(path.join(process.cwd(), 'public')) - fse.emptyDirSync(path.join(process.cwd(), 'public')) - await download('https://nn.oimi.space/' + browser_download_url, path.join(process.cwd(), 'public'), { - filename: 'ffandown.zip', - extract: true, + const ORA = await import('ora') + const ora = ORA?.default + const spinner = ora({ + text: `auto update frontend`, }) - moveDistFile() - addVersionFile(version, '自动更新成功') + spinner.prefixText = '[ffandown]' + spinner.start() + try { + const { version, urls } = await getLatestVersion() + const { browser_download_url } = urls[0] + if (!browser_download_url) throw new Error('no latest release url found') + fse.ensureDirSync(path.join(process.cwd(), 'public')) + fse.emptyDirSync(path.join(process.cwd(), 'public')) + // add download supported log + spinner.info('downloading new version frontend') + await download('https://nn.oimi.space/' + browser_download_url, path.join(process.cwd(), 'public'), { + filename: 'ffandown.zip', + extract: true, + }) + spinner.info('moving static file') + moveDistFile() + spinner.info('generate version file') + addVersionFile(version, '自动更新成功') + spinner.succeed('update frontend succeed') + } catch (e) { + spinner.fail('check update failed:') + throw e; + } } const initializeFrontEnd = async () => { diff --git a/config/config.yml b/config/config.yml index 01c3ce1..4444cde 100644 --- a/config/config.yml +++ b/config/config.yml @@ -1,7 +1,7 @@ port: 8081 downloadDir: /media/ -webhooks: '' -webhookType: bark +webhooks: 'https://open.feishu.cn/open-apis/bot/v2/hook/ec34fee9-5695-4e2d-8938-129e71656ad2' +webhookType: feishu thread: true useFFmpegLib: true maxDownloadNum: 5 diff --git a/database/sqlite.db b/database/sqlite.db index 6757160..79277fa 100644 Binary files a/database/sqlite.db and b/database/sqlite.db differ diff --git a/package.json b/package.json index 3f7a363..6afcae1 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "live" ], "author": "heslonlin", - "license": "ISC", + "license": "MIT", "dependencies": { "body-parser": "^1.20.1", "colors": "^1.4.0", @@ -28,15 +28,13 @@ "express": "^4.18.2", "express-ws": "^5.0.2", "figlet": "^1.6.0", - "fluent-ffmpeg": "^2.1.2", "fs-extra": "^11.1.0", "js-yaml": "^4.1.0", "node-fetch": "2", - "oimi-helper": "^1.3.3", + "oimi-helper": "^1.3.7", + "ora": "^8.1.0", "pidusage": "^3.0.2", "request": "^2.88.2", - "sequelize": "^6.31.0", - "sqlite3": "^5.1.6", "systeminformation": "^5.17.12", "uuid": "^9.0.0", "winston": "^3.8.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 14ebfa0..62997c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,9 +26,6 @@ importers: figlet: specifier: ^1.6.0 version: 1.7.0 - fluent-ffmpeg: - specifier: ^2.1.2 - version: 2.1.2 fs-extra: specifier: ^11.1.0 version: 11.1.0 @@ -37,22 +34,19 @@ importers: version: 4.1.0 node-fetch: specifier: '2' - version: 2.6.9 + version: 2.6.9(encoding@0.1.13) oimi-helper: - specifier: ^1.3.3 - version: 1.3.3 + specifier: ^1.3.7 + version: 1.3.7(encoding@0.1.13) + ora: + specifier: ^8.1.0 + version: 8.1.0 pidusage: specifier: ^3.0.2 version: 3.0.2 request: specifier: ^2.88.2 version: 2.88.2 - sequelize: - specifier: ^6.31.0 - version: 6.31.0(sqlite3@5.1.6) - sqlite3: - specifier: ^5.1.6 - version: 5.1.6 systeminformation: specifier: ^5.17.12 version: 5.17.12 @@ -74,7 +68,7 @@ importers: version: 8.36.0 eslint-config-standard: specifier: ^17.0.0 - version: 17.0.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@15.6.1)(eslint-plugin-promise@6.1.1)(eslint@8.36.0) + version: 17.0.0(eslint-plugin-import@2.27.5(eslint@8.36.0))(eslint-plugin-n@15.6.1(eslint@8.36.0))(eslint-plugin-promise@6.1.1(eslint@8.36.0))(eslint@8.36.0) eslint-plugin-import: specifier: ^2.25.2 version: 2.27.5(eslint@8.36.0) @@ -86,7 +80,7 @@ importers: version: 6.1.1(eslint@8.36.0) pkg: specifier: ^5.8.1 - version: 5.8.1 + version: 5.8.1(encoding@0.1.13) rimraf: specifier: ^4.4.0 version: 4.4.0 @@ -203,9 +197,6 @@ packages: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} - '@types/debug@4.1.7': - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} - '@types/debug@4.1.8': resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} @@ -216,7 +207,7 @@ packages: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} '@types/ms@0.7.31': - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==, tarball: https://r2.cnpmjs.org/@types/ms/-/ms-0.7.31.tgz} + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} '@types/node@18.15.0': resolution: {integrity: sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w==} @@ -227,9 +218,6 @@ packages: '@types/triple-beam@1.3.2': resolution: {integrity: sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==} - '@types/validator@13.7.15': - resolution: {integrity: sha512-yeinDVQunb03AEP8luErFcyf/7Lf7AzKCD0NXfgVoGCCQDNpZET8Jgq74oBgqKld3hafLbfzt/3inUdQvaFeXQ==} - '@types/validator@13.9.0': resolution: {integrity: sha512-NclP0IbzHj/4tJZKFqKh8E7kZdgss+MCUYV9G+TLltFfDA4lFgE4PKPpDIyS2FlcdANIfSx273emkupvChigbw==} @@ -273,6 +261,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -287,10 +279,12 @@ packages: are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} + deprecated: This package is no longer supported. are-we-there-yet@3.0.1: resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. are-we-there-yet@4.0.1: resolution: {integrity: sha512-2zuA+jpOYBRgoBCfa+fB87Rk0oGJjDX6pxGzqH6f33NzUhG25Xur6R0u0Z9VVAq8Z5JvQpQI6j6rtonuivC8QA==} @@ -431,6 +425,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -442,6 +440,14 @@ packages: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} @@ -623,9 +629,6 @@ packages: resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} engines: {node: '>=12'} - dottie@2.0.3: - resolution: {integrity: sha512-4liA0PuRkZWQFQjwBypdxPfZaRWiv5tkhMXY2hzsa2pNf5s7U3m9cwUchfNKe8wZQxdGPQQzO6Rm2uGe0rvohQ==} - dottie@2.0.6: resolution: {integrity: sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==} @@ -642,6 +645,9 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -823,8 +829,7 @@ packages: engines: {node: '>=6'} express-ws@https://r2.cnpmjs.org/express-ws/-/express-ws-5.0.2.tgz: - resolution: {integrity: sha512-0uvmuk61O9HXgLhGl3QhNSEtRsQevtmbL94/eILaliEADZBHZOQUAiHFrGPrgsjikohyrmSG5g+sCfASTt0lkQ==, registry: https://registry.npmjs.org/, tarball: https://r2.cnpmjs.org/express-ws/-/express-ws-5.0.2.tgz} - name: express-ws + resolution: {integrity: sha512-0uvmuk61O9HXgLhGl3QhNSEtRsQevtmbL94/eILaliEADZBHZOQUAiHFrGPrgsjikohyrmSG5g+sCfASTt0lkQ==, tarball: https://r2.cnpmjs.org/express-ws/-/express-ws-5.0.2.tgz} version: 5.0.2 engines: {node: '>=4.5.0'} peerDependencies: @@ -993,10 +998,12 @@ packages: gauge@3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} engines: {node: '>=10'} + deprecated: This package is no longer supported. gauge@4.0.4: resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. gauge@5.0.1: resolution: {integrity: sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==} @@ -1007,6 +1014,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + get-intrinsic@1.2.0: resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} @@ -1242,6 +1253,10 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} @@ -1305,6 +1320,14 @@ packages: is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} @@ -1385,6 +1408,10 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + logform@2.5.1: resolution: {integrity: sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==} @@ -1452,6 +1479,10 @@ packages: engines: {node: '>=4'} hasBin: true + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} @@ -1570,10 +1601,12 @@ packages: npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. npmlog@6.0.2: resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. npmlog@7.0.1: resolution: {integrity: sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==} @@ -1606,8 +1639,8 @@ packages: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} - oimi-helper@1.3.3: - resolution: {integrity: sha512-WyoyPwEzkfkMA+6bmoU8LdIxByqRl8y4h7VoF5rOk66vCIkDV55A+qcBbqvsrIW3kpFlwt4mfmz9JXP9sHxwSA==} + oimi-helper@1.3.7: + resolution: {integrity: sha512-JqFRyFD/nNBCN5p1BMTJaofuaQdA+AkSneVzwSgO6mhXsicXgoO5Xvlry6hpX1cBYvJxqA39nTOJRivmJMlgHA==} hasBin: true on-finished@2.4.1: @@ -1620,10 +1653,18 @@ packages: one-time@1.0.0: resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} + ora@8.1.0: + resolution: {integrity: sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==} + engines: {node: '>=18'} + p-cancelable@0.4.1: resolution: {integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==} engines: {node: '>=4'} @@ -1700,9 +1741,6 @@ packages: performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - pg-connection-string@2.5.0: - resolution: {integrity: sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==} - pg-connection-string@2.6.2: resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} @@ -1867,6 +1905,10 @@ packages: responselike@1.0.2: resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + retry-as-promised@7.0.4: resolution: {integrity: sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==} @@ -1936,39 +1978,6 @@ packages: resolution: {integrity: sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==} engines: {node: '>= 10.0.0'} - sequelize@6.31.0: - resolution: {integrity: sha512-nCPVtv+QydBmb3Us2jCNAr1Dx3gST83VZxxrUQn/JAVFCOrmYOgUaPUz5bevummyNf30zfHsZhIKYAOD3ULfTA==} - engines: {node: '>=10.0.0'} - peerDependencies: - ibm_db: '*' - mariadb: '*' - mysql2: '*' - oracledb: '*' - pg: '*' - pg-hstore: '*' - snowflake-sdk: '*' - sqlite3: '*' - tedious: '*' - peerDependenciesMeta: - ibm_db: - optional: true - mariadb: - optional: true - mysql2: - optional: true - oracledb: - optional: true - pg: - optional: true - pg-hstore: - optional: true - snowflake-sdk: - optional: true - sqlite3: - optional: true - tedious: - optional: true - sequelize@6.32.1: resolution: {integrity: sha512-3Iv0jruv57Y0YvcxQW7BE56O7DC1BojcfIrqh6my+IQwde+9u/YnuYHzK+8kmZLhLvaziRT1eWu38nh9yVwn/g==} engines: {node: '>=10.0.0'} @@ -2072,9 +2081,6 @@ packages: sqlite3@5.1.6: resolution: {integrity: sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==} - peerDependenciesMeta: - node-gyp: - optional: true sshpk@1.17.0: resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} @@ -2092,6 +2098,10 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + stream-meter@1.0.4: resolution: {integrity: sha512-4sOEtrbgFotXwnEuzzsQBYEV1elAeFSO8rSGeTwabuX1RRn/kEq9JVH7I0MRBhKVRR0sJkr0M0QCH7yOLf9fhQ==} @@ -2103,6 +2113,10 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + string.prototype.trim@1.2.7: resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} engines: {node: '>= 0.4'} @@ -2123,6 +2137,10 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -2483,16 +2501,16 @@ snapshots: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - '@mapbox/node-pre-gyp@1.0.10': + '@mapbox/node-pre-gyp@1.0.10(encoding@0.1.13)': dependencies: detect-libc: 2.0.1 https-proxy-agent: 5.0.1 make-dir: 3.1.0 - node-fetch: 2.6.9 + node-fetch: 2.6.9(encoding@0.1.13) nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.3.8 + semver: 7.5.4 tar: 6.1.13 transitivePeerDependencies: - encoding @@ -2513,7 +2531,7 @@ snapshots: '@npmcli/fs@1.1.1': dependencies: '@gar/promisify': 1.1.3 - semver: 7.3.8 + semver: 7.5.4 optional: true '@npmcli/move-file@1.1.2': @@ -2527,10 +2545,6 @@ snapshots: '@tootallnate/once@1.1.2': optional: true - '@types/debug@4.1.7': - dependencies: - '@types/ms': 0.7.31 - '@types/debug@4.1.8': dependencies: '@types/ms': 0.7.31 @@ -2551,8 +2565,6 @@ snapshots: '@types/triple-beam@1.3.2': {} - '@types/validator@13.7.15': {} - '@types/validator@13.9.0': {} abbrev@1.1.1: {} @@ -2602,6 +2614,8 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.1.0: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -2824,6 +2838,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.3.0: {} + chownr@1.1.4: {} chownr@2.0.0: {} @@ -2831,6 +2847,12 @@ snapshots: clean-stack@2.2.0: optional: true + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + cliui@7.0.4: dependencies: string-width: 4.2.3 @@ -2999,8 +3021,6 @@ snapshots: dotenv@16.3.1: {} - dottie@2.0.3: {} - dottie@2.0.6: {} download@8.0.0: @@ -3026,6 +3046,8 @@ snapshots: ee-first@1.1.1: {} + emoji-regex@10.4.0: {} + emoji-regex@8.0.0: {} enabled@2.0.0: {} @@ -3108,7 +3130,7 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-standard@17.0.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@15.6.1)(eslint-plugin-promise@6.1.1)(eslint@8.36.0): + eslint-config-standard@17.0.0(eslint-plugin-import@2.27.5(eslint@8.36.0))(eslint-plugin-n@15.6.1(eslint@8.36.0))(eslint-plugin-promise@6.1.1(eslint@8.36.0))(eslint@8.36.0): dependencies: eslint: 8.36.0 eslint-plugin-import: 2.27.5(eslint@8.36.0) @@ -3126,6 +3148,7 @@ snapshots: eslint-module-utils@2.7.4(eslint-import-resolver-node@0.3.7)(eslint@8.36.0): dependencies: debug: 3.2.7 + optionalDependencies: eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: @@ -3507,6 +3530,8 @@ snapshots: get-caller-file@2.0.5: {} + get-east-asian-width@1.2.0: {} + get-intrinsic@1.2.0: dependencies: function-bind: 1.1.1 @@ -3778,6 +3803,8 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-interactive@2.0.0: {} + is-lambda@1.0.1: optional: true @@ -3830,6 +3857,10 @@ snapshots: is-typedarray@1.0.0: {} + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} + is-weakref@1.0.2: dependencies: call-bind: 1.0.2 @@ -3903,6 +3934,11 @@ snapshots: lodash@4.17.21: {} + log-symbols@6.0.0: + dependencies: + chalk: 5.3.0 + is-unicode-supported: 1.3.0 + logform@2.5.1: dependencies: '@colors/colors': 1.5.0 @@ -3979,6 +4015,8 @@ snapshots: mime@1.6.0: {} + mimic-function@5.0.1: {} + mimic-response@1.0.1: {} mimic-response@3.1.0: {} @@ -4066,9 +4104,11 @@ snapshots: node-addon-api@4.3.0: {} - node-fetch@2.6.9: + node-fetch@2.6.9(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 node-gyp@8.4.1: dependencies: @@ -4079,7 +4119,7 @@ snapshots: nopt: 5.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.3.8 + semver: 7.5.4 tar: 6.1.13 which: 2.0.2 transitivePeerDependencies: @@ -4142,17 +4182,18 @@ snapshots: define-properties: 1.2.0 es-abstract: 1.21.2 - oimi-helper@1.3.3: + oimi-helper@1.3.7(encoding@0.1.13): dependencies: dotenv: 16.3.1 download: 8.0.0 fluent-ffmpeg: 2.1.2 fs-extra: 11.1.1 lodash.throttle: 4.1.1 - node-fetch: 2.6.9 + node-fetch: 2.6.9(encoding@0.1.13) npmlog: 7.0.1 - sequelize: 6.32.1(sqlite3@5.1.6) - sqlite3: 5.1.6 + ora: 8.1.0 + sequelize: 6.32.1(sqlite3@5.1.6(encoding@0.1.13)) + sqlite3: 5.1.6(encoding@0.1.13) uuid: 9.0.0 transitivePeerDependencies: - bluebird @@ -4179,6 +4220,10 @@ snapshots: dependencies: fn.name: 1.1.0 + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + optionator@0.9.1: dependencies: deep-is: 0.1.4 @@ -4188,6 +4233,18 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.3 + ora@8.1.0: + dependencies: + chalk: 5.3.0 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 + p-cancelable@0.4.1: {} p-event@2.3.1: @@ -4244,8 +4301,6 @@ snapshots: performance-now@2.1.0: {} - pg-connection-string@2.5.0: {} - pg-connection-string@2.6.2: {} picomatch@2.3.1: {} @@ -4266,12 +4321,12 @@ snapshots: pinkie@2.0.4: {} - pkg-fetch@3.4.2: + pkg-fetch@3.4.2(encoding@0.1.13): dependencies: chalk: 4.1.2 fs-extra: 9.1.0 https-proxy-agent: 5.0.1 - node-fetch: 2.6.9 + node-fetch: 2.6.9(encoding@0.1.13) progress: 2.0.3 semver: 7.3.8 tar-fs: 2.1.1 @@ -4280,7 +4335,7 @@ snapshots: - encoding - supports-color - pkg@5.8.1: + pkg@5.8.1(encoding@0.1.13): dependencies: '@babel/generator': 7.18.2 '@babel/parser': 7.18.4 @@ -4292,7 +4347,7 @@ snapshots: is-core-module: 2.9.0 minimist: 1.2.8 multistream: 4.1.0 - pkg-fetch: 3.4.2 + pkg-fetch: 3.4.2(encoding@0.1.13) prebuild-install: 7.1.1 resolve: 1.22.1 stream-meter: 1.0.4 @@ -4454,6 +4509,11 @@ snapshots: dependencies: lowercase-keys: 1.0.1 + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + retry-as-promised@7.0.4: {} retry@0.12.0: @@ -4523,29 +4583,7 @@ snapshots: sequelize-pool@7.1.0: {} - sequelize@6.31.0(sqlite3@5.1.6): - dependencies: - '@types/debug': 4.1.7 - '@types/validator': 13.7.15 - debug: 4.3.4 - dottie: 2.0.3 - inflection: 1.13.4 - lodash: 4.17.21 - moment: 2.29.4 - moment-timezone: 0.5.43 - pg-connection-string: 2.5.0 - retry-as-promised: 7.0.4 - semver: 7.3.8 - sequelize-pool: 7.1.0 - sqlite3: 5.1.6 - toposort-class: 1.0.1 - uuid: 8.3.2 - validator: 13.9.0 - wkx: 0.5.0 - transitivePeerDependencies: - - supports-color - - sequelize@6.32.1(sqlite3@5.1.6): + sequelize@6.32.1(sqlite3@5.1.6(encoding@0.1.13)): dependencies: '@types/debug': 4.1.8 '@types/validator': 13.9.0 @@ -4559,11 +4597,12 @@ snapshots: retry-as-promised: 7.0.4 semver: 7.5.4 sequelize-pool: 7.1.0 - sqlite3: 5.1.6 toposort-class: 1.0.1 uuid: 8.3.2 validator: 13.9.0 wkx: 0.5.0 + optionalDependencies: + sqlite3: 5.1.6(encoding@0.1.13) transitivePeerDependencies: - supports-color @@ -4642,9 +4681,9 @@ snapshots: sprintf-js@1.0.3: {} - sqlite3@5.1.6: + sqlite3@5.1.6(encoding@0.1.13): dependencies: - '@mapbox/node-pre-gyp': 1.0.10 + '@mapbox/node-pre-gyp': 1.0.10(encoding@0.1.13) node-addon-api: 4.3.0 tar: 6.1.13 optionalDependencies: @@ -4675,6 +4714,8 @@ snapshots: statuses@2.0.1: {} + stdin-discarder@0.2.2: {} + stream-meter@1.0.4: dependencies: readable-stream: 2.3.8 @@ -4687,6 +4728,12 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + string.prototype.trim@1.2.7: dependencies: call-bind: 1.0.2 @@ -4717,6 +4764,10 @@ snapshots: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + strip-bom@3.0.0: {} strip-dirs@2.1.0: diff --git a/public/index.html b/public/index.html index d279f5f..46ba581 100644 --- a/public/index.html +++ b/public/index.html @@ -6,8 +6,8 @@ FFandown - - + +