From 90001c2df56d58e69fd199a518ae7f3e4ed327fc Mon Sep 17 00:00:00 2001 From: Zephyrrus Date: Thu, 24 Dec 2020 10:40:50 +0200 Subject: chore: remove trailing commas --- src/api/database/seeds/initial.js | 2 +- src/api/databaseMigration.js | 111 ++++++++++----------- src/api/generateThumbs.js | 2 +- src/api/routes/admin/banIP.js | 2 +- src/api/routes/admin/fileGET.js | 2 +- src/api/routes/admin/unBanIP.js | 2 +- src/api/routes/admin/userDemote.js | 2 +- src/api/routes/admin/userDisable.js | 2 +- src/api/routes/admin/userEnable.js | 2 +- src/api/routes/admin/userGET.js | 2 +- src/api/routes/admin/userPromote.js | 2 +- src/api/routes/admin/userPurge.js | 2 +- src/api/routes/admin/usersGET.js | 2 +- src/api/routes/albums/albumFullGET.js | 2 +- src/api/routes/albums/albumGET.js | 2 +- src/api/routes/albums/albumPOST.js | 2 +- src/api/routes/albums/albumZipGET.js | 6 +- src/api/routes/albums/albumsGET.js | 4 +- src/api/routes/albums/link/linkDELETE.js | 2 +- src/api/routes/albums/link/linkEditPOST.js | 2 +- src/api/routes/albums/link/linkPOST.js | 4 +- src/api/routes/albums/link/linksGET.js | 2 +- src/api/routes/auth/loginPOST.js | 6 +- src/api/routes/auth/registerPOST.js | 2 +- src/api/routes/files/albumAddPOST.js | 2 +- src/api/routes/files/albumDelPOST.js | 2 +- src/api/routes/files/fileGET.js | 2 +- src/api/routes/files/filesAlbumsGET.js | 2 +- src/api/routes/files/filesGET.js | 2 +- src/api/routes/files/tagAddBatchPOST.js | 2 +- src/api/routes/files/tagAddPOST.js | 2 +- src/api/routes/files/tagDelPOST.js | 2 +- src/api/routes/search/searchGET.js | 4 +- src/api/routes/service/configGET.js | 4 +- src/api/routes/tags/tagPOST.js | 2 +- src/api/routes/tags/tagsGET.js | 2 +- src/api/routes/uploads/chunksPOST.js | 6 +- src/api/routes/uploads/uploadPOST.js | 16 +-- src/api/routes/user/apiKey.js | 4 +- src/api/routes/user/changePasswordPOST.js | 2 +- src/api/routes/user/userGET.js | 4 +- src/api/routes/verifyGET.js | 4 +- src/api/structures/Route.js | 4 +- src/api/structures/Server.js | 6 +- src/api/utils/QueryHelper.js | 8 +- src/api/utils/ThumbUtil.js | 8 +- src/api/utils/Util.js | 18 ++-- src/api/utils/videoPreview/FragmentPreview.js | 2 +- src/api/utils/videoPreview/FrameIntervalPreview.js | 4 +- src/setup.js | 36 +++---- src/site/components/album/AlbumDetails.vue | 22 ++-- src/site/components/album/AlbumEntry.vue | 14 +-- src/site/components/footer/Footer.vue | 8 +- src/site/components/grid/Grid.vue | 36 +++---- src/site/components/grid/waterfall/Waterfall.vue | 26 ++--- .../components/grid/waterfall/WaterfallItem.vue | 2 +- src/site/components/home/links/Links.vue | 29 ++++-- src/site/components/image-modal/AlbumInfo.vue | 20 ++-- src/site/components/image-modal/ImageInfo.vue | 16 +-- src/site/components/image-modal/TagInfo.vue | 16 +-- src/site/components/loading/CubeShadow.vue | 14 +-- src/site/components/loading/Origami.vue | 10 +- src/site/components/loading/PingPong.vue | 10 +- src/site/components/loading/RotateSquare.vue | 10 +- src/site/components/navbar/Navbar.vue | 10 +- src/site/components/search-input/SearchInput.vue | 22 ++-- src/site/components/search/Search.vue | 26 ++--- src/site/components/sidebar/Sidebar.vue | 6 +- src/site/components/uploader/Uploader.vue | 22 ++-- src/site/constants/alertTypes.js | 2 +- src/site/layouts/default.vue | 10 +- src/site/layouts/error.vue | 2 +- src/site/pages/a/_identifier.vue | 14 +-- src/site/pages/dashboard/account.vue | 22 ++-- src/site/pages/dashboard/admin/file/_id.vue | 10 +- src/site/pages/dashboard/admin/settings.vue | 10 +- src/site/pages/dashboard/admin/user/_id.vue | 14 +-- src/site/pages/dashboard/admin/users.vue | 10 +- src/site/pages/dashboard/albums/_id.vue | 16 +-- src/site/pages/dashboard/albums/index.vue | 10 +- src/site/pages/dashboard/index.vue | 18 ++-- src/site/pages/dashboard/tags/index.vue | 14 +-- src/site/pages/faq.vue | 2 +- src/site/pages/index.vue | 6 +- src/site/pages/login.vue | 6 +- src/site/pages/logout.vue | 2 +- src/site/pages/register.vue | 8 +- src/site/plugins/axios.js | 4 +- src/site/plugins/flexsearch.js | 2 +- src/site/plugins/handler.js | 6 +- src/site/plugins/notifier.js | 2 +- src/site/plugins/vue-isyourpasswordsafe.js | 2 +- src/site/plugins/vue-timeago.js | 2 +- src/site/store/admin.js | 8 +- src/site/store/albums.js | 16 +-- src/site/store/alert.js | 6 +- src/site/store/auth.js | 14 +-- src/site/store/config.js | 4 +- src/site/store/images.js | 14 +-- src/site/store/index.js | 2 +- src/site/store/tags.js | 6 +- 101 files changed, 456 insertions(+), 446 deletions(-) (limited to 'src') diff --git a/src/api/database/seeds/initial.js b/src/api/database/seeds/initial.js index cdbfa80..2383a7b 100644 --- a/src/api/database/seeds/initial.js +++ b/src/api/database/seeds/initial.js @@ -15,7 +15,7 @@ exports.seed = async (db) => { createdAt: now, editedAt: now, enabled: true, - isAdmin: true, + isAdmin: true }); console.log(); console.log('========================================================='); diff --git a/src/api/databaseMigration.js b/src/api/databaseMigration.js index 4bd45b7..7e919f3 100644 --- a/src/api/databaseMigration.js +++ b/src/api/databaseMigration.js @@ -4,31 +4,71 @@ const nodePath = require('path'); const moment = require('moment'); const jetpack = require('fs-jetpack'); -const { path } = require('fs-jetpack'); const sharp = require('sharp'); const ffmpeg = require('fluent-ffmpeg'); const imageExtensions = ['.jpg', '.jpeg', '.bmp', '.gif', '.png', '.webp']; const videoExtensions = ['.webm', '.mp4', '.wmv', '.avi', '.mov']; +const generateThumbnailForImage = async (filename, output) => { + try { + const file = await jetpack.readAsync(nodePath.join(__dirname, '../../uploads', filename), 'buffer'); + await sharp(file) + .resize(64, 64) + .toFormat('webp') + .toFile(nodePath.join(__dirname, '../../uploads/thumbs/square', output)); + await sharp(file) + .resize(225, null) + .toFormat('webp') + .toFile(nodePath.join(__dirname, '../../uploads/thumbs', output)); + console.log('finished', filename); + } catch (error) { + console.log('error', filename); + } +}; + +const generateThumbnailForVideo = (filename) => { + try { + ffmpeg(nodePath.join(__dirname, '../../uploads', filename)) + .thumbnail({ + timestamps: [0], + filename: '%b.png', + folder: nodePath.join(__dirname, '../../uploads/thumbs/square'), + size: '64x64' + }) + .on('error', (error) => console.error(error.message)); + ffmpeg(nodePath.join(__dirname, '../../uploads', filename)) + .thumbnail({ + timestamps: [0], + filename: '%b.png', + folder: nodePath.join(__dirname, '../../uploads/thumbs'), + size: '150x?' + }) + .on('error', (error) => console.error(error.message)); + console.log('finished', filename); + } catch (error) { + console.log('error', filename); + } +}; + const oldDb = require('knex')({ client: 'sqlite3', connection: { - filename: nodePath.join(__dirname, '..', '..', 'db'), + filename: nodePath.join(__dirname, '../../', 'db') }, - useNullAsDefault: true, + useNullAsDefault: true }); const newDb = require('knex')({ client: 'sqlite3', connection: { - filename: nodePath.join(__dirname, '..', '..', 'database.sqlite'), + filename: nodePath.join(__dirname, '../../', 'database.sqlite') }, postProcessResponse: (result) => { const booleanFields = [ 'enabled', 'enableDownload', - 'isAdmin', + 'isAdmin' ]; const processResponse = (row) => { @@ -45,15 +85,15 @@ const newDb = require('knex')({ if (typeof result === 'object') return processResponse(result); return result; }, - useNullAsDefault: true, + useNullAsDefault: true }); const start = async () => { console.log('Starting migration, this may take a few minutes...'); // Because I half assed it console.log('Please do NOT kill the process. Wait for it to finish.'); - await jetpack.removeAsync(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs')); - await jetpack.dirAsync(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', 'square')); + await jetpack.removeAsync(nodePath.join(__dirname, '../../uploads/thumbs')); + await jetpack.dirAsync(nodePath.join(__dirname, '../../uploads/thumbs/square')); console.log('Finished deleting old thumbnails to create new ones'); const users = await oldDb.table('users').where('username', '<>', 'root'); @@ -69,7 +109,7 @@ const start = async () => { passwordEditedAt: now, apiKeyEditedAt: now, createdAt: now, - editedAt: now, + editedAt: now }; await newDb.table('users').insert(userToInsert); } @@ -85,7 +125,7 @@ const start = async () => { name: album.name, zippedAt: album.zipGeneratedAt ? moment.unix(album.zipGeneratedAt).toDate() : null, createdAt: moment.unix(album.timestamp).toDate(), - editedAt: moment.unix(album.editedAt).toDate(), + editedAt: moment.unix(album.editedAt).toDate() }; const linkToInsert = { userId: album.userid, @@ -95,13 +135,13 @@ const start = async () => { enabled: true, enableDownload: true, createdAt: now, - editedAt: now, + editedAt: now }; await newDb.table('albums').insert(albumToInsert); const insertedId = await newDb.table('links').insert(linkToInsert); await newDb.table('albumsLinks').insert({ albumId: album.id, - linkId: insertedId[0], + linkId: insertedId[0] }); } console.log('Finished migrating albums...'); @@ -120,16 +160,16 @@ const start = async () => { hash: file.hash, ip: file.ip, createdAt: moment.unix(file.timestamp).toDate(), - editedAt: moment.unix(file.timestamp).toDate(), + editedAt: moment.unix(file.timestamp).toDate() }; filesToInsert.push(fileToInsert); albumsFilesToInsert.push({ albumId: file.albumid, - fileId: file.id, + fileId: file.id }); const filename = file.name; - if (!jetpack.exists(nodePath.join(__dirname, '..', '..', 'uploads', filename))) continue; + if (!jetpack.exists(nodePath.join(__dirname, '../../uploads', filename))) continue; const ext = nodePath.extname(filename).toLowerCase(); const output = `${filename.slice(0, -ext.length)}.webp`; if (imageExtensions.includes(ext)) await generateThumbnailForImage(filename, output); @@ -143,45 +183,4 @@ const start = async () => { process.exit(0); }; -const generateThumbnailForImage = async (filename, output) => { - try { - const file = await jetpack.readAsync(nodePath.join(__dirname, '..', '..', 'uploads', filename), 'buffer'); - await sharp(file) - .resize(64, 64) - .toFormat('webp') - .toFile(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', 'square', output)); - await sharp(file) - .resize(225, null) - .toFormat('webp') - .toFile(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', output)); - console.log('finished', filename); - } catch (error) { - console.log('error', filename); - } -}; - -const generateThumbnailForVideo = filename => { - try { - ffmpeg(nodePath.join(__dirname, '..', '..', 'uploads', filename)) - .thumbnail({ - timestamps: [0], - filename: '%b.png', - folder: nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', 'square'), - size: '64x64' - }) - .on('error', error => console.error(error.message)); - ffmpeg(nodePath.join(__dirname, '..', '..', 'uploads', filename)) - .thumbnail({ - timestamps: [0], - filename: '%b.png', - folder: nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs'), - size: '150x?' - }) - .on('error', error => console.error(error.message)); - console.log('finished', filename); - } catch (error) { - console.log('error', filename); - } -}; - start(); diff --git a/src/api/generateThumbs.js b/src/api/generateThumbs.js index 0377fe7..41d3025 100644 --- a/src/api/generateThumbs.js +++ b/src/api/generateThumbs.js @@ -6,7 +6,7 @@ const path = require('path'); const ThumbUtil = require('./utils/ThumbUtil'); const start = async () => { - const files = fs.readdirSync(path.join(__dirname, '..', '..', process.env.UPLOAD_FOLDER)); + const files = fs.readdirSync(path.join(__dirname, '../../', process.env.UPLOAD_FOLDER)); for (const fileName of files) { console.log(`Generating thumb for '${fileName}`); // eslint-disable-next-line no-await-in-loop diff --git a/src/api/routes/admin/banIP.js b/src/api/routes/admin/banIP.js index 4dfe03c..692880d 100644 --- a/src/api/routes/admin/banIP.js +++ b/src/api/routes/admin/banIP.js @@ -17,7 +17,7 @@ class banIP extends Route { } return res.json({ - message: 'Successfully banned the ip', + message: 'Successfully banned the ip' }); } } diff --git a/src/api/routes/admin/fileGET.js b/src/api/routes/admin/fileGET.js index 7e40659..9605da4 100644 --- a/src/api/routes/admin/fileGET.js +++ b/src/api/routes/admin/fileGET.js @@ -24,7 +24,7 @@ class filesGET extends Route { return res.json({ message: 'Successfully retrieved file', file, - user, + user }); } } diff --git a/src/api/routes/admin/unBanIP.js b/src/api/routes/admin/unBanIP.js index 725468c..493834b 100644 --- a/src/api/routes/admin/unBanIP.js +++ b/src/api/routes/admin/unBanIP.js @@ -19,7 +19,7 @@ class unBanIP extends Route { } return res.json({ - message: 'Successfully unbanned the ip', + message: 'Successfully unbanned the ip' }); } } diff --git a/src/api/routes/admin/userDemote.js b/src/api/routes/admin/userDemote.js index 3f6623d..b430a48 100644 --- a/src/api/routes/admin/userDemote.js +++ b/src/api/routes/admin/userDemote.js @@ -20,7 +20,7 @@ class userDemote extends Route { } return res.json({ - message: 'Successfully demoted user', + message: 'Successfully demoted user' }); } } diff --git a/src/api/routes/admin/userDisable.js b/src/api/routes/admin/userDisable.js index 029e4af..e39c811 100644 --- a/src/api/routes/admin/userDisable.js +++ b/src/api/routes/admin/userDisable.js @@ -20,7 +20,7 @@ class userDisable extends Route { } return res.json({ - message: 'Successfully disabled user', + message: 'Successfully disabled user' }); } } diff --git a/src/api/routes/admin/userEnable.js b/src/api/routes/admin/userEnable.js index aca7a0b..cff622f 100644 --- a/src/api/routes/admin/userEnable.js +++ b/src/api/routes/admin/userEnable.js @@ -20,7 +20,7 @@ class userEnable extends Route { } return res.json({ - message: 'Successfully enabled user', + message: 'Successfully enabled user' }); } } diff --git a/src/api/routes/admin/userGET.js b/src/api/routes/admin/userGET.js index f5f2508..48c6e9b 100644 --- a/src/api/routes/admin/userGET.js +++ b/src/api/routes/admin/userGET.js @@ -26,7 +26,7 @@ class usersGET extends Route { return res.json({ message: 'Successfully retrieved user', user, - files, + files }); } catch (error) { return super.error(res, error); diff --git a/src/api/routes/admin/userPromote.js b/src/api/routes/admin/userPromote.js index 3e14cb7..4a5ed88 100644 --- a/src/api/routes/admin/userPromote.js +++ b/src/api/routes/admin/userPromote.js @@ -20,7 +20,7 @@ class userPromote extends Route { } return res.json({ - message: 'Successfully promoted user', + message: 'Successfully promoted user' }); } } diff --git a/src/api/routes/admin/userPurge.js b/src/api/routes/admin/userPurge.js index 8f61ff9..90f6ec9 100644 --- a/src/api/routes/admin/userPurge.js +++ b/src/api/routes/admin/userPurge.js @@ -18,7 +18,7 @@ class userDemote extends Route { } return res.json({ - message: 'Successfully deleted the user\'s files', + message: 'Successfully deleted the user\'s files' }); } } diff --git a/src/api/routes/admin/usersGET.js b/src/api/routes/admin/usersGET.js index 4e9b954..52a707f 100644 --- a/src/api/routes/admin/usersGET.js +++ b/src/api/routes/admin/usersGET.js @@ -12,7 +12,7 @@ class usersGET extends Route { return res.json({ message: 'Successfully retrieved users', - users, + users }); } catch (error) { return super.error(res, error); diff --git a/src/api/routes/albums/albumFullGET.js b/src/api/routes/albums/albumFullGET.js index 2c3a790..d25fe15 100644 --- a/src/api/routes/albums/albumFullGET.js +++ b/src/api/routes/albums/albumFullGET.js @@ -50,7 +50,7 @@ class albumGET extends Route { message: 'Successfully retrieved album', name: album.name, files, - count, + count }); } } diff --git a/src/api/routes/albums/albumGET.js b/src/api/routes/albums/albumGET.js index 81edc95..950a1fd 100644 --- a/src/api/routes/albums/albumGET.js +++ b/src/api/routes/albums/albumGET.js @@ -37,7 +37,7 @@ class albumGET extends Route { message: 'Successfully retrieved files', name: album.name, downloadEnabled: link.enableDownload, - files, + files }); } } diff --git a/src/api/routes/albums/albumPOST.js b/src/api/routes/albums/albumPOST.js index 94ee8a7..52352a1 100644 --- a/src/api/routes/albums/albumPOST.js +++ b/src/api/routes/albums/albumPOST.js @@ -25,7 +25,7 @@ class albumPOST extends Route { name, userId: user.id, createdAt: now, - editedAt: now, + editedAt: now }; const dbRes = await db.table('albums').insert(insertObj); diff --git a/src/api/routes/albums/albumZipGET.js b/src/api/routes/albums/albumZipGET.js index bd74ef3..cf1f6f8 100644 --- a/src/api/routes/albums/albumZipGET.js +++ b/src/api/routes/albums/albumZipGET.js @@ -21,7 +21,7 @@ class albumGET extends Route { .where({ identifier, enabled: true, - enableDownload: true, + enableDownload: true }) .first(); if (!link) return res.status(400).json({ message: 'The supplied identifier could not be found' }); @@ -38,7 +38,7 @@ class albumGET extends Route { If the date when the album was zipped is greater than the album's last edit, we just send the zip to the user */ if (album.zippedAt > album.editedAt) { - const filePath = path.join(__dirname, '..', '..', '..', '..', process.env.UPLOAD_FOLDER, 'zips', `${album.userId}-${album.id}.zip`); + const filePath = path.join(__dirname, '../../../../', process.env.UPLOAD_FOLDER, 'zips', `${album.userId}-${album.id}.zip`); const exists = await jetpack.existsAsync(filePath); /* Make sure the file exists just in case, and if not, continue to it's generation. @@ -76,7 +76,7 @@ class albumGET extends Route { .where('id', link.albumId) .update('zippedAt', db.fn.now()); - const filePath = path.join(__dirname, '..', '..', '..', '..', process.env.UPLOAD_FOLDER, 'zips', `${album.userId}-${album.id}.zip`); + const filePath = path.join(__dirname, '../../../../', process.env.UPLOAD_FOLDER, 'zips', `${album.userId}-${album.id}.zip`); const fileName = `lolisafe-${identifier}.zip`; return res.download(filePath, fileName); } catch (error) { diff --git a/src/api/routes/albums/albumsGET.js b/src/api/routes/albums/albumsGET.js index c9ab025..93a23e3 100644 --- a/src/api/routes/albums/albumsGET.js +++ b/src/api/routes/albums/albumsGET.js @@ -46,7 +46,7 @@ class albumsGET extends Route { return res.json({ message: 'Successfully retrieved albums', - albums, + albums }); } } @@ -63,7 +63,7 @@ class albumsDropdownGET extends Route { .select('id', 'name'); return res.json({ message: 'Successfully retrieved albums', - albums, + albums }); } } diff --git a/src/api/routes/albums/link/linkDELETE.js b/src/api/routes/albums/link/linkDELETE.js index 0381b50..1af704e 100644 --- a/src/api/routes/albums/link/linkDELETE.js +++ b/src/api/routes/albums/link/linkDELETE.js @@ -27,7 +27,7 @@ class linkDELETE extends Route { } return res.json({ - message: 'Successfully deleted link', + message: 'Successfully deleted link' }); } } diff --git a/src/api/routes/albums/link/linkEditPOST.js b/src/api/routes/albums/link/linkEditPOST.js index 4e0e0e1..97122a2 100644 --- a/src/api/routes/albums/link/linkEditPOST.js +++ b/src/api/routes/albums/link/linkEditPOST.js @@ -22,7 +22,7 @@ class linkEditPOST extends Route { try { const updateObj = { enableDownload: enableDownload || false, - expiresAt, // This one should be null if not supplied + expiresAt // This one should be null if not supplied }; await db .table('links') diff --git a/src/api/routes/albums/link/linkPOST.js b/src/api/routes/albums/link/linkPOST.js index ba247b5..28e9dfe 100644 --- a/src/api/routes/albums/link/linkPOST.js +++ b/src/api/routes/albums/link/linkPOST.js @@ -61,13 +61,13 @@ class linkPOST extends Route { enabled: true, enableDownload: true, expiresAt: null, - views: 0, + views: 0 }; await db.table('links').insert(insertObj); return res.json({ message: 'The link was created successfully', - data: insertObj, + data: insertObj }); } catch (error) { return super.error(res, error); diff --git a/src/api/routes/albums/link/linksGET.js b/src/api/routes/albums/link/linksGET.js index 4487c26..edab49a 100644 --- a/src/api/routes/albums/link/linksGET.js +++ b/src/api/routes/albums/link/linksGET.js @@ -14,7 +14,7 @@ class linkPOST extends Route { return res.json({ message: 'Successfully retrieved links', - links, + links }); } } diff --git a/src/api/routes/auth/loginPOST.js b/src/api/routes/auth/loginPOST.js index 5c7730c..71867f0 100644 --- a/src/api/routes/auth/loginPOST.js +++ b/src/api/routes/auth/loginPOST.js @@ -36,7 +36,7 @@ class loginPOST extends Route { const jwt = JWT.sign({ iss: 'lolisafe', sub: user.id, - iat: moment.utc().valueOf(), + iat: moment.utc().valueOf() }, process.env.SECRET, { expiresIn: '30d' }); return res.json({ @@ -45,10 +45,10 @@ class loginPOST extends Route { id: user.id, username: user.username, apiKey: user.apiKey, - isAdmin: user.isAdmin, + isAdmin: user.isAdmin }, token: jwt, - apiKey: user.apiKey, + apiKey: user.apiKey }); } } diff --git a/src/api/routes/auth/registerPOST.js b/src/api/routes/auth/registerPOST.js index e2ac018..1cf3630 100644 --- a/src/api/routes/auth/registerPOST.js +++ b/src/api/routes/auth/registerPOST.js @@ -50,7 +50,7 @@ class registerPOST extends Route { createdAt: now, editedAt: now, enabled: true, - isAdmin: false, + isAdmin: false }); return res.json({ message: 'The account was created successfully' }); } diff --git a/src/api/routes/files/albumAddPOST.js b/src/api/routes/files/albumAddPOST.js index a88e636..7b8acf7 100644 --- a/src/api/routes/files/albumAddPOST.js +++ b/src/api/routes/files/albumAddPOST.js @@ -25,7 +25,7 @@ class albumAddPOST extends Route { return res.json({ message: 'Successfully added file to album', - data: { fileId, album: { id: album.id, name: album.name } }, + data: { fileId, album: { id: album.id, name: album.name } } }); } } diff --git a/src/api/routes/files/albumDelPOST.js b/src/api/routes/files/albumDelPOST.js index 6e4d576..8304163 100644 --- a/src/api/routes/files/albumDelPOST.js +++ b/src/api/routes/files/albumDelPOST.js @@ -26,7 +26,7 @@ class albumDelPOST extends Route { return res.json({ message: 'Successfully removed file from album', - data: { fileId, album: { id: album.id, name: album.name } }, + data: { fileId, album: { id: album.id, name: album.name } } }); } } diff --git a/src/api/routes/files/fileGET.js b/src/api/routes/files/fileGET.js index 0a6f2de..9ec6f22 100644 --- a/src/api/routes/files/fileGET.js +++ b/src/api/routes/files/fileGET.js @@ -38,7 +38,7 @@ class fileGET extends Route { message: 'Successfully retrieved file', file, albums, - tags, + tags }); } } diff --git a/src/api/routes/files/filesAlbumsGET.js b/src/api/routes/files/filesAlbumsGET.js index f5f2f3b..90aa654 100644 --- a/src/api/routes/files/filesAlbumsGET.js +++ b/src/api/routes/files/filesAlbumsGET.js @@ -26,7 +26,7 @@ class filesGET extends Route { return res.json({ message: 'Successfully retrieved file albums', - albums, + albums }); } } diff --git a/src/api/routes/files/filesGET.js b/src/api/routes/files/filesGET.js index ce1d788..9e90633 100644 --- a/src/api/routes/files/filesGET.js +++ b/src/api/routes/files/filesGET.js @@ -36,7 +36,7 @@ class filesGET extends Route { return res.json({ message: 'Successfully retrieved files', files, - count, + count }); } } diff --git a/src/api/routes/files/tagAddBatchPOST.js b/src/api/routes/files/tagAddBatchPOST.js index 5091a81..679945d 100644 --- a/src/api/routes/files/tagAddBatchPOST.js +++ b/src/api/routes/files/tagAddBatchPOST.js @@ -31,7 +31,7 @@ class tagAddBatchPOST extends Route { return res.json({ message: 'Successfully added tags to file', data: { fileId, tags: addedTags }, - errors, + errors }); // eslint-disable-next-line consistent-return } diff --git a/src/api/routes/files/tagAddPOST.js b/src/api/routes/files/tagAddPOST.js index 654dceb..2bbfa07 100644 --- a/src/api/routes/files/tagAddPOST.js +++ b/src/api/routes/files/tagAddPOST.js @@ -27,7 +27,7 @@ class tagAddPOST extends Route { return res.json({ message: 'Successfully added tag to file', - data: { fileId, tag }, + data: { fileId, tag } }); // eslint-disable-next-line consistent-return } diff --git a/src/api/routes/files/tagDelPOST.js b/src/api/routes/files/tagDelPOST.js index 4d45493..ac0bfe4 100644 --- a/src/api/routes/files/tagDelPOST.js +++ b/src/api/routes/files/tagDelPOST.js @@ -29,7 +29,7 @@ class tagDelPost extends Route { return res.json({ message: 'Successfully removed tag from file', - data: { fileId, tag }, + data: { fileId, tag } }); // eslint-disable-next-line consistent-return } diff --git a/src/api/routes/search/searchGET.js b/src/api/routes/search/searchGET.js index b8757fa..40107d8 100644 --- a/src/api/routes/search/searchGET.js +++ b/src/api/routes/search/searchGET.js @@ -9,7 +9,7 @@ const options = { keywords: ['album', 'tag', 'before', 'after', 'file'], offsets: false, alwaysArray: true, - tokenize: true, + tokenize: true }; class configGET extends Route { @@ -55,7 +55,7 @@ class configGET extends Route { query, parsed, files, - count, + count }); } } diff --git a/src/api/routes/service/configGET.js b/src/api/routes/service/configGET.js index 3c6a2f8..bc91a7e 100644 --- a/src/api/routes/service/configGET.js +++ b/src/api/routes/service/configGET.js @@ -18,8 +18,8 @@ class configGET extends Route { generateThumbnails: process.env.GENERATE_THUMBNAILS === 'true', generateZips: process.env.GENERATE_ZIPS === 'true', publicMode: process.env.PUBLIC_MODE === 'true', - enableAccounts: process.env.USER_ACCOUNTS === 'true', - }, + enableAccounts: process.env.USER_ACCOUNTS === 'true' + } }); } } diff --git a/src/api/routes/tags/tagPOST.js b/src/api/routes/tags/tagPOST.js index 5038b91..89b296d 100644 --- a/src/api/routes/tags/tagPOST.js +++ b/src/api/routes/tags/tagPOST.js @@ -22,7 +22,7 @@ class tagPOST extends Route { name, userId: user.id, createdAt: now, - editedAt: now, + editedAt: now }; const dbRes = await db.table('tags').insert(insertObj); diff --git a/src/api/routes/tags/tagsGET.js b/src/api/routes/tags/tagsGET.js index 848e08d..329d789 100644 --- a/src/api/routes/tags/tagsGET.js +++ b/src/api/routes/tags/tagsGET.js @@ -19,7 +19,7 @@ class tagsGET extends Route { return res.json({ message: 'Successfully retrieved tags', - tags, + tags }); } catch (error) { return super.error(res, error); diff --git a/src/api/routes/uploads/chunksPOST.js b/src/api/routes/uploads/chunksPOST.js index 789a5e7..061cfb0 100644 --- a/src/api/routes/uploads/chunksPOST.js +++ b/src/api/routes/uploads/chunksPOST.js @@ -8,7 +8,7 @@ class uploadPOST extends Route { constructor() { super('/upload/chunks', 'post', { bypassAuth: true, - canApiKey: true, + canApiKey: true }); } @@ -17,7 +17,7 @@ class uploadPOST extends Route { // console.log('Files', req.body.files); const info = { size: req.body.files[0].size, - url: `${process.env.DOMAIN}/`, + url: `${process.env.DOMAIN}/` }; for (const chunk of req.body.files) { @@ -56,7 +56,7 @@ class uploadPOST extends Route { return res.status(201).send({ message: 'Sucessfully merged the chunk(s).', - ...info, + ...info /* name: `${filename}${ext || ''}`, size: exists.size, diff --git a/src/api/routes/uploads/uploadPOST.js b/src/api/routes/uploads/uploadPOST.js index 3e67293..567862a 100644 --- a/src/api/routes/uploads/uploadPOST.js +++ b/src/api/routes/uploads/uploadPOST.js @@ -9,7 +9,7 @@ const upload = multer({ storage: multer.memoryStorage(), limits: { fileSize: parseInt(process.env.MAX_SIZE, 10) * (1000 * 1000), - files: 1, + files: 1 }, fileFilter: (req, file, cb) => // TODO: Enable blacklisting of files/extensions @@ -21,7 +21,7 @@ const upload = multer({ } */ cb(null, true) - , + }).array('files[]'); /* @@ -41,7 +41,7 @@ class uploadPOST extends Route { constructor() { super('/upload', 'post', { bypassAuth: true, - canApiKey: true, + canApiKey: true }); } @@ -100,7 +100,7 @@ class uploadPOST extends Route { name: filename, hash, size: file.buffer.length, - url: filename, + url: filename }; } @@ -120,7 +120,7 @@ class uploadPOST extends Route { uploadedFile = Util.constructFilePublicLink(uploadedFile); return res.status(201).send({ message: 'Sucessfully uploaded the file.', - ...uploadedFile, + ...uploadedFile }); }); } @@ -134,7 +134,7 @@ class uploadPOST extends Route { size: exists.size, url: `${process.env.DOMAIN}/${exists.name}`, deleteUrl: `${process.env.DOMAIN}/api/file/${exists.id}`, - repeated: true, + repeated: true }); return Util.deleteFile(filename); @@ -183,7 +183,7 @@ class uploadPOST extends Route { hash: file.hash, ip: req.ip, createdAt: now, - editedAt: now, + editedAt: now }); } else { insertedId = await db.table('files').insert({ @@ -195,7 +195,7 @@ class uploadPOST extends Route { hash: file.hash, ip: req.ip, createdAt: now, - editedAt: now, + editedAt: now }, 'id'); } return insertedId; diff --git a/src/api/routes/user/apiKey.js b/src/api/routes/user/apiKey.js index a63f0c0..653c56a 100644 --- a/src/api/routes/user/apiKey.js +++ b/src/api/routes/user/apiKey.js @@ -17,7 +17,7 @@ class apiKeyPOST extends Route { .where({ id: user.id }) .update({ apiKey, - apiKeyEditedAt: now, + apiKeyEditedAt: now }); } catch (error) { dump(error); @@ -26,7 +26,7 @@ class apiKeyPOST extends Route { return res.json({ message: 'Successfully created new api key', - apiKey, + apiKey }); } } diff --git a/src/api/routes/user/changePasswordPOST.js b/src/api/routes/user/changePasswordPOST.js index 1b3a27a..82bce40 100644 --- a/src/api/routes/user/changePasswordPOST.js +++ b/src/api/routes/user/changePasswordPOST.js @@ -36,7 +36,7 @@ class changePasswordPOST extends Route { const now = moment.utc().toDate(); await db.table('users').where('id', user.id).update({ password: hash, - passwordEditedAt: now, + passwordEditedAt: now }); return res.json({ message: 'The password was changed successfully' }); diff --git a/src/api/routes/user/userGET.js b/src/api/routes/user/userGET.js index 6f179a9..7929aac 100644 --- a/src/api/routes/user/userGET.js +++ b/src/api/routes/user/userGET.js @@ -12,8 +12,8 @@ class usersGET extends Route { id: user.id, username: user.username, isAdmin: user.isAdmin, - apiKey: user.apiKey, - }, + apiKey: user.apiKey + } }); } } diff --git a/src/api/routes/verifyGET.js b/src/api/routes/verifyGET.js index 107c20a..2f370e8 100644 --- a/src/api/routes/verifyGET.js +++ b/src/api/routes/verifyGET.js @@ -11,8 +11,8 @@ class verifyGET extends Route { user: { id: user.id, username: user.username, - isAdmin: user.isAdmin, - }, + isAdmin: user.isAdmin + } }); } } diff --git a/src/api/structures/Route.js b/src/api/structures/Route.js index 6be0dc7..74589c5 100644 --- a/src/api/structures/Route.js +++ b/src/api/structures/Route.js @@ -7,7 +7,7 @@ const db = require('knex')({ user: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_DATABASE, - filename: nodePath.join(__dirname, '../../../database.sqlite'), + filename: nodePath.join(__dirname, '../../../database.sqlite') }, postProcessResponse: (result) => { /* @@ -32,7 +32,7 @@ const db = require('knex')({ if (typeof result === 'object') return processResponse(result); return result; }, - useNullAsDefault: process.env.DB_CLIENT === 'sqlite3', + useNullAsDefault: process.env.DB_CLIENT === 'sqlite3' }); const moment = require('moment'); const log = require('../utils/Log'); diff --git a/src/api/structures/Server.js b/src/api/structures/Server.js index e25e089..83b2880 100644 --- a/src/api/structures/Server.js +++ b/src/api/structures/Server.js @@ -15,7 +15,7 @@ const ThumbUtil = require('../utils/ThumbUtil'); const rateLimiter = new RateLimit({ windowMs: parseInt(process.env.RATE_LIMIT_WINDOW, 10), max: parseInt(process.env.RATE_LIMIT_MAX, 10), - delayMs: 0, + delayMs: 0 }); class Server { @@ -52,8 +52,8 @@ class Server { return false; }, 'stream': { - write(str) { log.debug(str); }, - }, + write(str) { log.debug(str); } + } })); } // this.server.use(rateLimiter); diff --git a/src/api/utils/QueryHelper.js b/src/api/utils/QueryHelper.js index c9fe8c6..7fabd06 100644 --- a/src/api/utils/QueryHelper.js +++ b/src/api/utils/QueryHelper.js @@ -4,7 +4,7 @@ class QueryHelper { static parsers = { before: (val) => QueryHelper.parseChronoList(val), after: (val) => QueryHelper.parseChronoList(val), - tag: (val) => QueryHelper.sanitizeTags(val), + tag: (val) => QueryHelper.sanitizeTags(val) }; static requirementHandlers = { @@ -13,14 +13,14 @@ class QueryHelper { .join('albums', 'albumsFiles.albumId', '=', 'album.id'), tag: (knex) => knex .join('fileTags', 'files.id', '=', 'fileTags.fileId') - .join('tags', 'fileTags.tagId', '=', 'tags.id'), + .join('tags', 'fileTags.tagId', '=', 'tags.id') } static fieldToSQLMapping = { album: 'albums.name', tag: 'tags.name', before: 'files.createdAt', - after: 'files.createdAt', + after: 'files.createdAt' } static handlers = { @@ -53,7 +53,7 @@ class QueryHelper { } } return knex; - }, + } } static verify(field, list) { diff --git a/src/api/utils/ThumbUtil.js b/src/api/utils/ThumbUtil.js index 6a22c3b..2f7d75a 100644 --- a/src/api/utils/ThumbUtil.js +++ b/src/api/utils/ThumbUtil.js @@ -51,7 +51,7 @@ class ThumbUtil { timestamps: [0], filename: '%b.png', folder: ThumbUtil.squareThumbPath, - size: '64x64', + size: '64x64' }) .on('error', (error) => log.error(error.message)); @@ -60,7 +60,7 @@ class ThumbUtil { timestamps: [0], filename: '%b.png', folder: ThumbUtil.thumbPath, - size: '150x?', + size: '150x?' }) .on('error', (error) => log.error(error.message)); @@ -69,7 +69,7 @@ class ThumbUtil { input: filePath, width: 150, output: path.join(ThumbUtil.videoPreviewPath, output), - log: log.debug, + log: log.debug }); } catch (e) { log.error(e); @@ -87,7 +87,7 @@ class ThumbUtil { if (isVideo) { return { thumb: `${filename.slice(0, -ext.length)}.png`, - preview: `${filename.slice(0, -ext.length)}.webm`, + preview: `${filename.slice(0, -ext.length)}.webm` }; } diff --git a/src/api/utils/Util.js b/src/api/utils/Util.js index ee4c748..4279b6f 100644 --- a/src/api/utils/Util.js +++ b/src/api/utils/Util.js @@ -10,9 +10,9 @@ const db = require('knex')({ user: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_DATABASE, - filename: path.join(__dirname, '../../../database.sqlite'), + filename: path.join(__dirname, '../../../database.sqlite') }, - useNullAsDefault: process.env.DB_CLIENT === 'sqlite', + useNullAsDefault: process.env.DB_CLIENT === 'sqlite' }); const moment = require('moment'); const crypto = require('crypto'); @@ -25,7 +25,7 @@ const ThumbUtil = require('./ThumbUtil'); const blockedExtensions = process.env.BLOCKED_EXTENSIONS.split(','); class Util { - static uploadPath = path.join(__dirname, '..', '..', '..', process.env.UPLOAD_FOLDER); + static uploadPath = path.join(__dirname, '../../../', process.env.UPLOAD_FOLDER); static uuid() { return uuidv4(); @@ -54,7 +54,7 @@ class Util { const retry = (i = 0) => { const filename = randomstring.generate({ length: parseInt(process.env.GENERATED_FILENAME_LENGTH, 10), - capitalization: 'lowercase', + capitalization: 'lowercase' }) + path.extname(name).toLowerCase(); // TODO: Change this to look for the file in the db instead of in the filesystem @@ -71,7 +71,7 @@ class Util { const retry = async (i = 0) => { const identifier = randomstring.generate({ length: parseInt(process.env.GENERATED_ALBUM_LENGTH, 10), - capitalization: 'lowercase', + capitalization: 'lowercase' }); const exists = await db .table('links') @@ -214,13 +214,11 @@ class Util { zip.writeZip( path.join( __dirname, - '..', - '..', - '..', + '../../../', process.env.UPLOAD_FOLDER, 'zips', - `${album.userId}-${album.id}.zip`, - ), + `${album.userId}-${album.id}.zip` + ) ); } catch (error) { log.error(error); diff --git a/src/api/utils/videoPreview/FragmentPreview.js b/src/api/utils/videoPreview/FragmentPreview.js index bf623c1..4f681fa 100644 --- a/src/api/utils/videoPreview/FragmentPreview.js +++ b/src/api/utils/videoPreview/FragmentPreview.js @@ -38,7 +38,7 @@ module.exports = async (opts) => { fragmentDurationSecond = 3, ignoreBeforePercent = 0.25, - ignoreAfterPercent = 0.75, + ignoreAfterPercent = 0.75 } = opts; const info = await probe(input); diff --git a/src/api/utils/videoPreview/FrameIntervalPreview.js b/src/api/utils/videoPreview/FrameIntervalPreview.js index 8c5f1c3..8bb9836 100644 --- a/src/api/utils/videoPreview/FrameIntervalPreview.js +++ b/src/api/utils/videoPreview/FrameIntervalPreview.js @@ -16,7 +16,7 @@ module.exports = async (opts) => { output, numFrames, - numFramesPercent = 0.05, + numFramesPercent = 0.05 } = opts; const info = await probe(input); @@ -32,7 +32,7 @@ module.exports = async (opts) => { const result = { output, - numFrames: numFramesToCapture, + numFrames: numFramesToCapture }; await new Promise((resolve, reject) => { diff --git a/src/setup.js b/src/setup.js index 2f9dee2..5b0ba9b 100644 --- a/src/setup.js +++ b/src/setup.js @@ -5,7 +5,7 @@ const qoa = require('qoa'); qoa.config({ prefix: '>', - underlineQuery: false, + underlineQuery: false }); async function start() { @@ -17,53 +17,53 @@ async function start() { { type: 'input', query: 'Port to run lolisafe in:', - handle: 'SERVER_PORT', + handle: 'SERVER_PORT' }, { type: 'input', query: 'Full domain this instance is gonna be running on (Ex: https://lolisafe.moe):', - handle: 'DOMAIN', + handle: 'DOMAIN' }, { type: 'input', query: 'Name of the service? (Ex: lolisafe):', - handle: 'SERVICE_NAME', + handle: 'SERVICE_NAME' }, { type: 'input', query: 'Maximum allowed upload file size in MB (Ex: 100):', - handle: 'MAX_SIZE', + handle: 'MAX_SIZE' }, { type: 'confirm', query: 'Allow users to download entire albums in ZIP format?', handle: 'GENERATE_ZIPS', accept: 'y', - deny: 'n', + deny: 'n' }, { type: 'confirm', query: 'Allow people to upload files without an account?', handle: 'PUBLIC_MODE', accept: 'y', - deny: 'n', + deny: 'n' }, { type: 'confirm', query: 'Allow people to create new accounts?', handle: 'USER_ACCOUNTS', accept: 'y', - deny: 'n', + deny: 'n' }, { type: 'input', query: 'Name of the admin account?', - handle: 'ADMIN_ACCOUNT', + handle: 'ADMIN_ACCOUNT' }, { type: 'secure', query: 'Type a secure password for the admin account:', - handle: 'ADMIN_PASSWORD', + handle: 'ADMIN_PASSWORD' }, { type: 'interactive', @@ -73,29 +73,29 @@ async function start() { menu: [ 'sqlite3', 'pg', - 'mysql', - ], + 'mysql' + ] }, { type: 'input', query: 'Database host (Ignore if you selected sqlite3):', - handle: 'DB_HOST', + handle: 'DB_HOST' }, { type: 'input', query: 'Database user (Ignore if you selected sqlite3):', - handle: 'DB_USER', + handle: 'DB_USER' }, { type: 'input', query: 'Database password (Ignore if you selected sqlite3):', - handle: 'DB_PASSWORD', + handle: 'DB_PASSWORD' }, { type: 'input', query: 'Database name (Ignore if you selected sqlite3):', - handle: 'DB_DATABASE', - }, + handle: 'DB_DATABASE' + } ]; const response = await qoa.prompt(wizard); @@ -118,7 +118,7 @@ async function start() { META_THEME_COLOR: '#20222b', META_DESCRIPTION: 'Blazing fast file uploader and bunker written in node! 🚀', META_KEYWORDS: 'lolisafe,upload,uploader,file,vue,images,ssr,file uploader,free', - META_TWITTER_HANDLE: '@its_pitu', + META_TWITTER_HANDLE: '@its_pitu' }; const allSettings = Object.assign(defaultSettings, response); diff --git a/src/site/components/album/AlbumDetails.vue b/src/site/components/album/AlbumDetails.vue index 2d0bb5d..4067853 100644 --- a/src/site/components/album/AlbumDetails.vue +++ b/src/site/components/album/AlbumDetails.vue @@ -120,17 +120,17 @@ export default { props: { albumId: { type: Number, - default: 0, + default: 0 }, details: { type: Object, - default: () => ({}), - }, + default: () => ({}) + } }, data() { return { isCreatingLink: false, - isDeletingLinks: [], + isDeletingLinks: [] }; }, computed: mapState(['config', 'auth']), @@ -141,20 +141,20 @@ export default { updateLinkOptionsAction: 'albums/updateLinkOptions', createLinkAction: 'albums/createLink', createCustomLinkAction: 'albums/createCustomLink', - alert: 'alert/set', + alert: 'alert/set' }), promptDeleteAlbum(id) { this.$buefy.dialog.confirm({ type: 'is-danger', message: 'Are you sure you want to delete this album?', - onConfirm: () => this.deleteAlbum(id), + onConfirm: () => this.deleteAlbum(id) }); }, promptDeleteAlbumLink(albumId, identifier) { this.$buefy.dialog.confirm({ type: 'is-danger', message: 'Are you sure you want to delete this album link?', - onConfirm: () => this.deleteAlbumLink(albumId, identifier), + onConfirm: () => this.deleteAlbumLink(albumId, identifier) }); }, async deleteAlbum(id) { @@ -204,16 +204,16 @@ export default { message: 'Custom link identifier', inputAttrs: { placeholder: '', - maxlength: 10, + maxlength: 10 }, trapFocus: true, - onConfirm: (value) => this.$handler.executeAction('albums/createCustomLink', { albumId, value }), + onConfirm: (value) => this.$handler.executeAction('albums/createCustomLink', { albumId, value }) }); }, isDeleting(identifier) { return this.isDeletingLinks.indexOf(identifier) > -1; - }, - }, + } + } }; diff --git a/src/site/components/album/AlbumEntry.vue b/src/site/components/album/AlbumEntry.vue index 2723b49..1e1b2cf 100644 --- a/src/site/components/album/AlbumEntry.vue +++ b/src/site/components/album/AlbumEntry.vue @@ -63,22 +63,22 @@ import AlbumDetails from '~/components/album/AlbumDetails.vue'; export default { components: { - AlbumDetails, + AlbumDetails }, props: { album: { type: Object, - default: () => ({}), - }, + default: () => ({}) + } }, computed: { ...mapGetters({ isExpandedGetter: 'albums/isExpanded', - getDetails: 'albums/getDetails', + getDetails: 'albums/getDetails' }), isExpanded() { return this.isExpandedGetter(this.album.id); - }, + } }, methods: { async toggleDetails(album) { @@ -86,8 +86,8 @@ export default { await this.$store.dispatch('albums/fetchDetails', album.id); } this.$store.commit('albums/toggleExpandedState', album.id); - }, - }, + } + } }; diff --git a/src/site/components/footer/Footer.vue b/src/site/components/footer/Footer.vue index 19d18f2..b409cf5 100644 --- a/src/site/components/footer/Footer.vue +++ b/src/site/components/footer/Footer.vue @@ -81,8 +81,8 @@ export default { ...mapState({ version: (state) => state.config.version, serviceName: (state) => state.config.serviceName, - token: (state) => state.auth.token, - }), + token: (state) => state.auth.token + }) }, methods: { createShareXThing() { @@ -102,8 +102,8 @@ export default { }`; const sharexBlob = new Blob([sharexFile], { type: 'application/octet-binary' }); saveAs(sharexBlob, `${location.hostname}.sxcu`); - }, - }, + } + } }; diff --git a/src/site/components/grid/Grid.vue b/src/site/components/grid/Grid.vue index 1fa3167..3a15335 100644 --- a/src/site/components/grid/Grid.vue +++ b/src/site/components/grid/Grid.vue @@ -162,37 +162,37 @@ import ImageInfo from '~/components/image-modal/ImageInfo.vue'; export default { components: { Waterfall, - ImageInfo, + ImageInfo }, props: { files: { type: Array, - default: () => [], + default: () => [] }, total: { type: Number, - default: 0, + default: 0 }, fixed: { type: Boolean, - default: false, + default: false }, isPublic: { type: Boolean, - default: false, + default: false }, width: { type: Number, - default: 150, + default: 150 }, enableSearch: { type: Boolean, - default: true, + default: true }, enableToolbar: { type: Boolean, - default: true, - }, + default: true + } }, data() { return { @@ -208,15 +208,15 @@ export default { modalData: { file: null, tags: null, - albums: null, - }, + albums: null + } }; }, computed: { ...mapState({ user: (state) => state.auth.user, albums: (state) => state.albums.tinyDetails, - images: (state) => state.images, + images: (state) => state.images }), blank() { // eslint-disable-next-line global-require, import/no-unresolved @@ -224,7 +224,7 @@ export default { }, gridFiles() { return (this.files || []).filter((v) => !v.hideFromList); - }, + } }, created() { // TODO: Create a middleware for this @@ -251,7 +251,7 @@ export default { } catch (e) { this.$store.dispatch('alert/set', { text: e.message, error: true }, { root: true }); } - }, + } }); }, isAlbumSelected(id) { @@ -279,12 +279,12 @@ export default { if (add) { response = await this.$store.dispatch('images/addToAlbum', { albumId: id, - fileId: this.showingModalForFile.id, + fileId: this.showingModalForFile.id }); } else { response = await this.$store.dispatch('images/removeFromAlbum', { albumId: id, - fileId: this.showingModalForFile.id, + fileId: this.showingModalForFile.id }); } @@ -332,8 +332,8 @@ export default { }, isHovered(id) { return this.hoveredItems.includes(id); - }, - }, + } + } }; diff --git a/src/site/components/grid/waterfall/Waterfall.vue b/src/site/components/grid/waterfall/Waterfall.vue index 762cbbd..af2af3f 100644 --- a/src/site/components/grid/waterfall/Waterfall.vue +++ b/src/site/components/grid/waterfall/Waterfall.vue @@ -20,29 +20,29 @@ const imagesloaded = isBrowser ? require('imagesloaded') : null; export default { name: 'Waterfall', components: { - WaterfallItem, + WaterfallItem }, props: { options: { type: Object, - default: () => {}, + default: () => {} }, items: { type: Array, - default: () => [], + default: () => [] }, itemWidth: { type: Number, - default: 150, + default: 150 }, gutterWidth: { type: Number, - default: 10, + default: 10 }, gutterHeight: { type: Number, - default: 4, - }, + default: 4 + } }, mounted() { this.initializeMasonry(); @@ -62,7 +62,7 @@ export default { node, () => { this.masonry.layout(); - }, + } ); }, performLayout() { @@ -101,7 +101,7 @@ export default { removed, appended, prepended, - moved, + moved }; }, initializeMasonry() { @@ -111,8 +111,8 @@ export default { { columnWidth: this.itemWidth, gutter: this.gutterWidth, - ...this.options, - }, + ...this.options + } ); this.domChildren = this.getNewDomChildren(); } @@ -122,8 +122,8 @@ export default { const children = this.options && this.options.itemSelector ? node.querySelectorAll(this.options.itemSelector) : node.children; return Array.prototype.slice.call(children); - }, - }, + } + } }; diff --git a/src/site/components/grid/waterfall/WaterfallItem.vue b/src/site/components/grid/waterfall/WaterfallItem.vue index c5cade1..2a18606 100644 --- a/src/site/components/grid/waterfall/WaterfallItem.vue +++ b/src/site/components/grid/waterfall/WaterfallItem.vue @@ -5,6 +5,6 @@ diff --git a/src/site/components/home/links/Links.vue b/src/site/components/home/links/Links.vue index 41bd271..b20649f 100644 --- a/src/site/components/home/links/Links.vue +++ b/src/site/components/home/links/Links.vue @@ -1,6 +1,7 @@ diff --git a/src/site/components/image-modal/ImageInfo.vue b/src/site/components/image-modal/ImageInfo.vue index 0562e1f..73b6339 100644 --- a/src/site/components/image-modal/ImageInfo.vue +++ b/src/site/components/image-modal/ImageInfo.vue @@ -118,25 +118,25 @@ import Taginfo from './TagInfo.vue'; export default { components: { Taginfo, - Albuminfo, + Albuminfo }, props: { file: { type: Object, - default: () => ({}), + default: () => ({}) }, albums: { type: Array, - default: () => ([]), + default: () => ([]) }, tags: { type: Array, - default: () => ([]), - }, + default: () => ([]) + } }, computed: mapState({ images: (state) => state.images, - tinyDetails: (state) => state.albums.tinyDetails, + tinyDetails: (state) => state.albums.tinyDetails }), methods: { formatBytes(bytes, decimals = 2) { @@ -152,8 +152,8 @@ export default { }, isVideo(type) { return type.startsWith('video'); - }, - }, + } + } }; diff --git a/src/site/components/image-modal/TagInfo.vue b/src/site/components/image-modal/TagInfo.vue index a337148..59d01f5 100644 --- a/src/site/components/image-modal/TagInfo.vue +++ b/src/site/components/image-modal/TagInfo.vue @@ -23,24 +23,24 @@ export default { props: { imageId: { type: Number, - default: 0, + default: 0 }, imageTags: { type: Array, - default: () => [], - }, + default: () => [] + } }, data() { return { - filteredTags: [], + filteredTags: [] }; }, computed: { ...mapState({ - tags: (state) => state.tags.tagsList, + tags: (state) => state.tags.tagsList }), selectedTags() { return this.imageTags.map((e) => e.name); }, - lowercaseTags() { return this.imageTags.map((e) => e.name.toLowerCase()); }, + lowercaseTags() { return this.imageTags.map((e) => e.name.toLowerCase()); } }, methods: { getFilteredTags(str) { @@ -78,8 +78,8 @@ export default { }, tagRemoved(tag) { this.$handler.executeAction('images/removeTag', { fileId: this.imageId, tagName: tag }); - }, - }, + } + } }; diff --git a/src/site/components/loading/CubeShadow.vue b/src/site/components/loading/CubeShadow.vue index bbfdb52..71b5da5 100644 --- a/src/site/components/loading/CubeShadow.vue +++ b/src/site/components/loading/CubeShadow.vue @@ -9,16 +9,16 @@ export default { props: { size: { type: String, - default: '60px', + default: '60px' }, background: { type: String, - default: '#9C27B0', + default: '#9C27B0' }, duration: { type: String, - default: '1.8s', - }, + default: '1.8s' + } }, computed: { styles() { @@ -26,10 +26,10 @@ export default { width: this.size, height: this.size, backgroundColor: this.background, - animationDuration: this.duration, + animationDuration: this.duration }; - }, - }, + } + } }; diff --git a/src/site/components/loading/Origami.vue b/src/site/components/loading/Origami.vue index cd1c087..59c5d8f 100644 --- a/src/site/components/loading/Origami.vue +++ b/src/site/components/loading/Origami.vue @@ -20,8 +20,8 @@ export default { props: { size: { type: String, - default: '40px', - }, + default: '40px' + } }, computed: { innerStyles() { @@ -31,10 +31,10 @@ export default { styles() { return { width: this.size, - height: this.size, + height: this.size }; - }, - }, + } + } }; diff --git a/src/site/components/loading/PingPong.vue b/src/site/components/loading/PingPong.vue index d562e9f..c04ae72 100644 --- a/src/site/components/loading/PingPong.vue +++ b/src/site/components/loading/PingPong.vue @@ -19,8 +19,8 @@ export default { props: { size: { type: String, - default: '60px', - }, + default: '60px' + } }, computed: { innerStyles() { @@ -30,10 +30,10 @@ export default { styles() { return { width: this.size, - height: this.size, + height: this.size }; - }, - }, + } + } }; diff --git a/src/site/components/loading/RotateSquare.vue b/src/site/components/loading/RotateSquare.vue index 089e01a..7bc9bb0 100644 --- a/src/site/components/loading/RotateSquare.vue +++ b/src/site/components/loading/RotateSquare.vue @@ -9,18 +9,18 @@ export default { props: { size: { type: String, - default: '40px', - }, + default: '40px' + } }, computed: { styles() { return { width: this.size, height: this.size, - display: 'inline-block', + display: 'inline-block' }; - }, - }, + } + } }; diff --git a/src/site/components/navbar/Navbar.vue b/src/site/components/navbar/Navbar.vue index 1b1f10e..22d41d4 100644 --- a/src/site/components/navbar/Navbar.vue +++ b/src/site/components/navbar/Navbar.vue @@ -73,22 +73,22 @@ export default { props: { isWhite: { type: Boolean, - default: false, - }, + default: false + } }, data() { return { hamburger: false }; }, computed: { ...mapGetters({ loggedIn: 'auth/isLoggedIn' }), - ...mapState(['config']), + ...mapState(['config']) }, methods: { async logOut() { await this.$store.dispatch('auth/logout'); this.$router.replace('/login'); - }, - }, + } + } }; diff --git a/src/site/components/search-input/SearchInput.vue b/src/site/components/search-input/SearchInput.vue index abc433a..1c5b983 100644 --- a/src/site/components/search-input/SearchInput.vue +++ b/src/site/components/search-input/SearchInput.vue @@ -90,11 +90,11 @@ export default { value: [Number, String], data: { type: Array, - default: () => [], + default: () => [] }, field: { type: String, - default: 'value', + default: 'value' }, keepFirst: Boolean, clearOnSelect: Boolean, @@ -106,12 +106,12 @@ export default { maxHeight: [String, Number], dropdownPosition: { type: String, - default: 'auto', + default: 'auto' }, iconRight: String, iconRightClickable: Boolean, appendToBody: Boolean, - customSelector: Function, + customSelector: Function }, data() { return { @@ -125,7 +125,7 @@ export default { style: {}, _isAutocomplete: true, _elementRef: 'input', - _bodyEl: undefined, // Used to append to body + _bodyEl: undefined // Used to append to body }; }, computed: { @@ -202,9 +202,9 @@ export default { // eslint-disable-next-line no-nested-ternary maxHeight: this.maxHeight === undefined // eslint-disable-next-line no-restricted-globals - ? null : (isNaN(this.maxHeight) ? this.maxHeight : `${this.maxHeight}px`), + ? null : (isNaN(this.maxHeight) ? this.maxHeight : `${this.maxHeight}px`) }; - }, + } }, watch: { /** @@ -258,7 +258,7 @@ export default { if (this.keepFirst) { this.selectFirstOption(value); } - }, + } }, created() { if (typeof window !== 'undefined') { @@ -507,10 +507,10 @@ export default { left: `${left}px`, width: `${trigger.clientWidth}px`, maxWidth: `${trigger.clientWidth}px`, - zIndex: '99', + zIndex: '99' }; } - }, - }, + } + } }; diff --git a/src/site/components/search/Search.vue b/src/site/components/search/Search.vue index 72a5707..778474c 100644 --- a/src/site/components/search/Search.vue +++ b/src/site/components/search/Search.vue @@ -36,13 +36,13 @@ import SearchInput from '~/components/search-input/SearchInput.vue'; export default { components: { - SearchInput, + SearchInput }, props: { hiddenHints: { type: Array, - default: () => [], - }, + default: () => [] + } }, data() { return { @@ -51,35 +51,35 @@ export default { { 'name': 'tag', 'valueFormat': 'name', - 'hint': '', + 'hint': '' }, { 'name': 'album', 'valueFormat': 'name', - 'hint': '', + 'hint': '' }, { 'name': 'before', 'valueFormat': 'specific date', - 'hint': '', + 'hint': '' }, { 'name': 'during', 'valueFormat': 'specific date', - 'hint': '', + 'hint': '' }, { 'name': 'after', 'valueFormat': 'specific date', - 'hint': '', + 'hint': '' }, { 'name': 'file', 'valueFormat': 'generated name', - 'hint': '', - }, + 'hint': '' + } ], - filteredHints: [], + filteredHints: [] }; }, created() { @@ -122,8 +122,8 @@ export default { if (/:$/gi.test(this.query)) { return; } } this.$emit('search', this.query, event); - }, - }, + } + } }; diff --git a/src/site/components/sidebar/Sidebar.vue b/src/site/components/sidebar/Sidebar.vue index 2e8ca9e..e0c8fa2 100644 --- a/src/site/components/sidebar/Sidebar.vue +++ b/src/site/components/sidebar/Sidebar.vue @@ -48,7 +48,7 @@ import { mapState } from 'vuex'; export default { computed: mapState({ - user: (state) => state.auth.user, + user: (state) => state.auth.user }), methods: { isRouteActive(id) { @@ -56,8 +56,8 @@ export default { return true; } return false; - }, - }, + } + } }; diff --git a/src/site/components/uploader/Uploader.vue b/src/site/components/uploader/Uploader.vue index 7e2d446..2740bee 100644 --- a/src/site/components/uploader/Uploader.vue +++ b/src/site/components/uploader/Uploader.vue @@ -88,15 +88,15 @@ export default { files: [], dropzoneOptions: {}, showDropzone: false, - selectedAlbum: null, + selectedAlbum: null }; }, computed: { ...mapState({ config: (state) => state.config, - albums: (state) => state.albums.tinyDetails, + albums: (state) => state.albums.tinyDetails }), - ...mapGetters({ loggedIn: 'auth/isLoggedIn', token: 'auth/getToken' }), + ...mapGetters({ loggedIn: 'auth/isLoggedIn', token: 'auth/getToken' }) }, watch: { loggedIn() { @@ -104,7 +104,7 @@ export default { }, selectedAlbum() { this.updateDropzoneConfig(); - }, + } }, mounted() { this.dropzoneOptions = { @@ -127,7 +127,7 @@ export default { maxFilesize: this.config.maxFileSize, previewTemplate: this.$refs.template.innerHTML, dictDefaultMessage: 'Drag & Drop your files or click to browse', - headers: { Accept: 'application/vnd.lolisafe.json' }, + headers: { Accept: 'application/vnd.lolisafe.json' } }; this.showDropzone = true; if (this.loggedIn) this.getAlbums(); @@ -154,7 +154,7 @@ export default { this.$refs.el.setOption('headers', { Accept: 'application/vnd.lolisafe.json', Authorization: this.token ? `Bearer ${this.token}` : '', - albumId: this.selectedAlbum ? this.selectedAlbum : null, + albumId: this.selectedAlbum ? this.selectedAlbum : null }); }, @@ -170,7 +170,7 @@ export default { dropzoneError(file, message, xhr) { this.$store.dispatch('alert', { text: 'There was an error uploading this file. Check the console.', - error: true, + error: true }); // eslint-disable-next-line no-console console.error(file, message, xhr); @@ -182,8 +182,8 @@ export default { original: file.name, size: file.size, type: file.type, - count: file.upload.totalChunkCount, - }], + count: file.upload.totalChunkCount + }] }); this.processResult(file, data); @@ -205,8 +205,8 @@ export default { this.$clipboard(response.url); }); */ - }, - }, + } + } };