Browse Source

perf: use lodash-lite for some functions (#853)

master
Nolan Lawson 3 years ago
committed by GitHub
parent
commit
e666eb5955
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/routes/_components/compose/ComposeAutosuggest.html
  2. 2
      src/routes/_store/computations/autosuggestComputations.js
  3. 2
      src/routes/_store/computations/timelineComputations.js
  4. 8
      src/routes/_store/mixins/timelineMixins.js
  5. 23
      src/routes/_utils/lodash-lite.js
  6. 4
      webpack/client.config.js

4
src/routes/_components/compose/ComposeAutosuggest.html

@ -40,7 +40,7 @@
<script>
import { store } from '../../_store/store'
import ComposeAutosuggestionList from './ComposeAutosuggestionList.html'
import get from 'lodash-es/get'
import { get } from '../../_utils/lodash-lite'
import { selectAutosuggestItem } from '../../_actions/autosuggest'
import { observe } from 'svelte-extras'
import { once } from '../../_utils/once'
@ -104,4 +104,4 @@
ComposeAutosuggestionList
}
}
</script>
</script>

2
src/routes/_store/computations/autosuggestComputations.js

@ -1,4 +1,4 @@
import get from 'lodash-es/get'
import { get } from '../../_utils/lodash-lite'
const MIN_PREFIX_LENGTH = 1
const ACCOUNT_SEARCH_REGEX = new RegExp(`(?:\\s|^)(@\\S{${MIN_PREFIX_LENGTH},})$`)

2
src/routes/_store/computations/timelineComputations.js

@ -1,4 +1,4 @@
import get from 'lodash-es/get'
import { get } from '../../_utils/lodash-lite'
function computeForTimeline (store, key, defaultValue) {
store.compute(key,

8
src/routes/_store/mixins/timelineMixins.js

@ -1,5 +1,4 @@
import pickBy from 'lodash-es/pickBy'
import get from 'lodash-es/get'
import { pickBy, get } from '../../_utils/lodash-lite'
export function timelineMixins (Store) {
Store.prototype.setForTimeline = function (instanceName, timelineName, obj) {
@ -21,11 +20,6 @@ export function timelineMixins (Store) {
return get(root, [instanceName, timelineName])
}
Store.prototype.getForCurrentTimeline = function (key) {
let { currentInstance, currentTimeline } = this.get()
return this.getForTimeline(currentInstance, currentTimeline, key)
}
Store.prototype.getAllTimelineData = function (instanceName, key) {
let root = this.get()[`timelineData_${key}`] || {}
return root[instanceName] || {}

23
src/routes/_utils/lodash-lite.js

@ -0,0 +1,23 @@
// Some functions from Lodash that are a bit heavyweight and which
// we can just do in idiomatic ES2015+
export function get (obj, keys, defaultValue) {
for (let key of keys) {
if (obj && key in obj) {
obj = obj[key]
} else {
return defaultValue
}
}
return obj
}
export function pickBy (obj, predicate) {
let res = {}
for (let [key, value] of Object.entries(obj)) {
if (predicate(value, key)) {
res[key] = value
}
}
return res
}

4
webpack/client.config.js

@ -47,9 +47,7 @@ module.exports = {
/\/_database\/database\.js$/, // this version plays nicer with IDEs
'./database.prod.js'
),
new LodashModuleReplacementPlugin({
paths: true
}),
new LodashModuleReplacementPlugin(),
new CircularDependencyPlugin({
exclude: /node_modules/,
failOnError: true,

Loading…
Cancel
Save