From 06f6191c27da364a93b71ccf2db70ac78f82424a Mon Sep 17 00:00:00 2001 From: Travis Shivers Date: Fri, 31 Jul 2020 15:45:20 -0500 Subject: [PATCH] Lighten deps --- .browserslistrc | 1 + package-lock.json | 12 ------------ package.json | 2 -- src/store/modules/plex/getters.js | 2 +- src/store/modules/plexservers/actions.js | 2 +- src/store/modules/plexservers/getters.js | 2 +- src/utils/customformatduration.js | 10 ++++++++++ src/utils/lightlodash.js | 21 +++++++++++++++++++++ src/views/plexbrowser/plexbrowser.vue | 2 +- src/views/plexbrowser/plexcontent.vue | 16 ++++------------ src/views/plexbrowser/plexlibrary.vue | 2 +- src/views/plexbrowser/plexserver.vue | 2 +- 12 files changed, 42 insertions(+), 32 deletions(-) create mode 100644 src/utils/customformatduration.js create mode 100644 src/utils/lightlodash.js diff --git a/.browserslistrc b/.browserslistrc index de09bff2..0b3c55f5 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -1,4 +1,5 @@ > 3% +last 1 Chrome versions last 1 Firefox versions last 1 Safari versions last 1 Edge version diff --git a/package-lock.json b/package-lock.json index a114435f..ebd592c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6299,12 +6299,6 @@ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true }, - "humanize-duration": { - "version": "3.23.1", - "resolved": "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.23.1.tgz", - "integrity": "sha512-aoOEkomAETmVuQyBx4E7/LfPlC9s8pAA/USl7vFRQpDjepo3aiyvFfOhtXSDqPowdBVPFUZ7onG/KyuolX0qPg==", - "dev": true - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -7269,12 +7263,6 @@ "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true }, - "lodash-es": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", - "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==", - "dev": true - }, "lodash.defaultsdeep": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", diff --git a/package.json b/package.json index e4178277..9d7e07d0 100644 --- a/package.json +++ b/package.json @@ -32,10 +32,8 @@ "eslint-plugin-vue": "^6.2.2", "fast-xml-parser": "^3.17.4", "fscreen": "^1.0.2", - "humanize-duration": "^3.23.1", "last-commit-log": "^3.0.4", "libjass": "^0.11.0", - "lodash-es": "^4.17.15", "nconf": "^0.10.0", "sass": "^1.26.10", "sass-loader": "^8.0.2", diff --git a/src/store/modules/plex/getters.js b/src/store/modules/plex/getters.js index 44b0c467..ef63f1a3 100644 --- a/src/store/modules/plex/getters.js +++ b/src/store/modules/plex/getters.js @@ -1,5 +1,5 @@ import { detect } from 'detect-browser'; -import { intersection } from 'lodash-es'; +import { intersection } from '@/utils/lightlodash'; import { makeUrl } from '@/utils/fetchutils'; function capitalizeFirstLetter(string) { diff --git a/src/store/modules/plexservers/actions.js b/src/store/modules/plexservers/actions.js index 56c6ed4b..e5f0f0b6 100644 --- a/src/store/modules/plexservers/actions.js +++ b/src/store/modules/plexservers/actions.js @@ -1,4 +1,4 @@ -import { sample } from 'lodash-es'; +import { sample } from '@/utils/lightlodash'; import { fetchJson } from '@/utils/fetchutils'; import scoreMedia from './mediascoring'; diff --git a/src/store/modules/plexservers/getters.js b/src/store/modules/plexservers/getters.js index fbba2703..718f3684 100644 --- a/src/store/modules/plexservers/getters.js +++ b/src/store/modules/plexservers/getters.js @@ -1,4 +1,4 @@ -import { difference, intersection } from 'lodash-es'; +import { difference, intersection } from '@/utils/lightlodash'; import { makeUrl } from '@/utils/fetchutils'; export default { diff --git a/src/utils/customformatduration.js b/src/utils/customformatduration.js new file mode 100644 index 00000000..d41d5c2b --- /dev/null +++ b/src/utils/customformatduration.js @@ -0,0 +1,10 @@ +import { intervalToDuration, formatDuration } from 'date-fns'; + +// https://github.com/date-fns/date-fns/issues/229 + +const customFormatDuration = ({ start, end }) => { + const durations = intervalToDuration({ start, end }); + return formatDuration(durations); +}; + +export default customFormatDuration; diff --git a/src/utils/lightlodash.js b/src/utils/lightlodash.js new file mode 100644 index 00000000..a231e290 --- /dev/null +++ b/src/utils/lightlodash.js @@ -0,0 +1,21 @@ +export const sample = (arr) => { + const len = arr == null ? 0 : arr.length; + return len ? arr[Math.floor(Math.random() * len)] : undefined; +}; + +export const difference = (arrays) => arrays.reduce((a, b) => a.filter((c) => !b.includes(c))); + +export const intersection = (arrays) => arrays.reduce((a, b) => a.filter((c) => b.includes(c))); + +export const debounce = (func, wait, immediate) => { + let timeout; + return function debouncedFunc(...args) { + const context = this; + clearTimeout(timeout); + timeout = setTimeout(() => { + timeout = null; + if (!immediate) func.apply(context, ...args); + }, wait); + if (immediate && !timeout) func.apply(context, ...args); + }; +}; diff --git a/src/views/plexbrowser/plexbrowser.vue b/src/views/plexbrowser/plexbrowser.vue index 2c0da002..8e50589b 100644 --- a/src/views/plexbrowser/plexbrowser.vue +++ b/src/views/plexbrowser/plexbrowser.vue @@ -301,7 +301,7 @@