forked from cybrespace/pinafore
		
	perf: use lodash-lite for some functions (#853)
This commit is contained in:
		
							parent
							
								
									cf94e7d61e
								
							
						
					
					
						commit
						e666eb5955
					
				
					 6 changed files with 29 additions and 14 deletions
				
			
		| 
						 | 
				
			
			@ -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>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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},})$`)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
import get from 'lodash-es/get'
 | 
			
		||||
import { get } from '../../_utils/lodash-lite'
 | 
			
		||||
 | 
			
		||||
function computeForTimeline (store, key, defaultValue) {
 | 
			
		||||
  store.compute(key,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/routes/_utils/lodash-lite.js
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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…
	
	Add table
		
		Reference in a new issue