diff --git a/addons/knobs/package.json b/addons/knobs/package.json index 081effaf9397..097b5029e8ad 100644 --- a/addons/knobs/package.json +++ b/addons/knobs/package.json @@ -18,7 +18,7 @@ "deep-equal": "^1.0.1", "global": "^4.3.2", "insert-css": "^2.0.0", - "lodash.debounce": "^4.0.8", + "lodash-es": "^4.17.4", "moment": "^2.20.1", "prop-types": "^15.6.0", "react-color": "^2.11.4", diff --git a/addons/knobs/src/components/Panel.js b/addons/knobs/src/components/Panel.js index 062f660c23a1..141fc4e33746 100644 --- a/addons/knobs/src/components/Panel.js +++ b/addons/knobs/src/components/Panel.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import debounce from 'lodash.debounce'; +import debounce from 'lodash-es/debounce'; import PropForm from './PropForm'; import Types from './types'; diff --git a/app/angular/package.json b/app/angular/package.json index 8ccca16533ba..4a62b70b2c64 100644 --- a/app/angular/package.json +++ b/app/angular/package.json @@ -54,7 +54,7 @@ "json-loader": "^0.5.4", "json-stringify-safe": "^5.0.1", "json5": "^0.5.1", - "lodash.pick": "^4.4.0", + "lodash-es": "^4.17.4", "postcss-flexbugs-fixes": "^3.0.0", "postcss-loader": "^2.0.5", "prop-types": "^15.5.10", @@ -79,6 +79,7 @@ "zone.js": "^0.8.14" }, "devDependencies": { + "@types/lodash-es": "^4.17.0", "babel-cli": "^6.26.0", "babel-plugin-transform-decorators": "^6.24.1", "babel-plugin-transform-decorators-legacy": "^1.3.4", diff --git a/app/angular/src/client/preview/angular/components/app.component.ts b/app/angular/src/client/preview/angular/components/app.component.ts index 5f9dffe3534d..f8a6f636f2f1 100644 --- a/app/angular/src/client/preview/angular/components/app.component.ts +++ b/app/angular/src/client/preview/angular/components/app.component.ts @@ -2,7 +2,16 @@ // to provide @Inputs and subscribe to @Outputs, see // https://github.com/angular/angular/issues/15360 // For the time being, the ViewContainerRef approach works pretty well. -import * as _ from 'lodash'; + +import has from 'lodash-es/has'; +import get from 'lodash-es/get'; +import set from 'lodash-es/set'; +import isFunction from 'lodash-es/isFunction'; +import isUndefined from 'lodash-es/isUndefined'; +import isEmpty from 'lodash-es/isEmpty'; +import forEach from 'lodash-es/forEach'; +import invoke from 'lodash-es/invoke'; + import { Component, Inject, @@ -15,9 +24,12 @@ import { SimpleChanges, SimpleChange } from '@angular/core'; + import { STORY } from '../app.token'; import { NgStory, ICollection } from '../types'; +const _ = { has, get, set, isFunction, isUndefined, isEmpty , forEach, invoke }; + @Component({ selector: 'app-root', template: '' @@ -25,6 +37,7 @@ import { NgStory, ICollection } from '../types'; export class AppComponent implements AfterViewInit, OnDestroy { @ViewChild('target', { read: ViewContainerRef }) target: ViewContainerRef; + constructor( private cfr: ComponentFactoryResolver, @Inject(STORY) private data: NgStory @@ -90,7 +103,7 @@ export class AppComponent implements AfterViewInit, OnDestroy { } if (_.isFunction(props.ngModelChange)) { - _.invoke(instance, 'registerOnChange', props.ngModelChange); + _.invoke(instance, 'registerOnChange', props.ngModelChange); } } } diff --git a/app/angular/src/client/preview/angular/helpers.ts b/app/angular/src/client/preview/angular/helpers.ts index 4870f525ff13..1c10dbbc98b5 100644 --- a/app/angular/src/client/preview/angular/helpers.ts +++ b/app/angular/src/client/preview/angular/helpers.ts @@ -7,6 +7,8 @@ import { } from '@angular/core'; import {FormsModule} from '@angular/forms' +import _debounce from 'lodash-es/debounce'; + import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { BrowserModule } from '@angular/platform-browser'; import { AppComponent } from './components/app.component'; @@ -31,28 +33,7 @@ interface IComponent extends Type { propsMetadata: any[] } -// Taken from https://davidwalsh.name/javascript-debounce-function -// We don't want to pull underscore -const debounce = (func: IRenderStoryFn | IRenderErrorFn, - wait: number = 100, - immediate: boolean = false): () => void => { - let timeout: any; - return function () { - const context = this, args = arguments; - const later = function () { - timeout = null; - if (!immediate) { - func.apply(context, args); - } - }; - const callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) { - func.apply(context, args); - } - }; -}; +const debounce = (func: IRenderStoryFn | IRenderErrorFn) => _debounce(func, 100); const getComponentMetadata = ( { component, props = {}, propsMeta = {}, moduleMetadata = { diff --git a/app/react/package.json b/app/react/package.json index b690e4867c05..dc6f4d9e77d6 100644 --- a/app/react/package.json +++ b/app/react/package.json @@ -60,7 +60,7 @@ "json-loader": "^0.5.7", "json-stringify-safe": "^5.0.1", "json5": "^0.5.1", - "lodash.flattendeep": "^4.4.0", + "lodash-es": "^4.17.4", "markdown-loader": "^2.0.1", "npmlog": "^4.1.2", "postcss-flexbugs-fixes": "^3.2.0", diff --git a/app/react/src/client/preview/element_check.js b/app/react/src/client/preview/element_check.js index cbcb2f518da6..fdfa3168ab91 100644 --- a/app/react/src/client/preview/element_check.js +++ b/app/react/src/client/preview/element_check.js @@ -1,5 +1,5 @@ import React from 'react'; -import flattenDeep from 'lodash.flattendeep'; +import flattenDeep from 'lodash-es/flattenDeep'; // return true if the element is renderable with react fiber export const isValidFiberElement = element => diff --git a/dangerfile.js b/dangerfile.js index 6b8c437802cf..39f30cd6fd3a 100644 --- a/dangerfile.js +++ b/dangerfile.js @@ -1,5 +1,5 @@ import { fail, danger } from 'danger'; -import { flatten, intersection, isEmpty, includes } from 'lodash'; +import { flatten, intersection, isEmpty, includes } from 'lodash-es'; const pkg = require('./package.json'); // eslint-disable-line import/newline-after-import const prLogConfig = pkg['pr-log']; diff --git a/jest.config.js b/jest.config.js index 5cbca1678f6c..62bfa9a4effe 100644 --- a/jest.config.js +++ b/jest.config.js @@ -14,6 +14,7 @@ module.exports = { '/examples/cra-kitchen-sink', '/examples/official-storybook', ], + transformIgnorePatterns: ['/node_modules/(?!lodash-es/.*)'], testPathIgnorePatterns: ['/node_modules/', 'addon-jest.test.js', '/cli/test/'], collectCoverage: false, collectCoverageFrom: [ diff --git a/lib/ui/package.json b/lib/ui/package.json index 4709f0e4a844..dcedbf334b75 100644 --- a/lib/ui/package.json +++ b/lib/ui/package.json @@ -24,9 +24,7 @@ "global": "^4.3.2", "json-stringify-safe": "^5.0.1", "keycode": "^2.1.9", - "lodash.debounce": "^4.0.8", - "lodash.pick": "^4.4.0", - "lodash.sortby": "^4.7.0", + "lodash-es": "^4.17.4", "podda": "^1.2.2", "prop-types": "^15.6.0", "qs": "^6.5.1", diff --git a/lib/ui/src/modules/api/actions/api.js b/lib/ui/src/modules/api/actions/api.js index d871a3d9bcfe..0a36f30bc4ac 100755 --- a/lib/ui/src/modules/api/actions/api.js +++ b/lib/ui/src/modules/api/actions/api.js @@ -1,4 +1,4 @@ -import pick from 'lodash.pick'; +import pick from 'lodash-es/pick'; export function jumpToStory(storyKinds, selectedKind, selectedStory, direction) { const flatteredStories = []; diff --git a/lib/ui/src/modules/shortcuts/actions/shortcuts.js b/lib/ui/src/modules/shortcuts/actions/shortcuts.js index 1920b154e013..cc7e130bce57 100755 --- a/lib/ui/src/modules/shortcuts/actions/shortcuts.js +++ b/lib/ui/src/modules/shortcuts/actions/shortcuts.js @@ -1,4 +1,4 @@ -import pick from 'lodash.pick'; +import pick from 'lodash-es/pick'; import { features } from '../../../libs/key_events'; import apiActions from '../../api/actions'; diff --git a/lib/ui/src/modules/ui/components/stories_panel/index.js b/lib/ui/src/modules/ui/components/stories_panel/index.js index e8282889dd5a..6e1bc12615a0 100755 --- a/lib/ui/src/modules/ui/components/stories_panel/index.js +++ b/lib/ui/src/modules/ui/components/stories_panel/index.js @@ -1,6 +1,6 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; -import pick from 'lodash.pick'; +import pick from 'lodash-es/pick'; import Header from './header'; import Stories from './stories_tree'; import TextFilter from './text_filter'; diff --git a/lib/ui/src/modules/ui/components/stories_panel/text_filter.js b/lib/ui/src/modules/ui/components/stories_panel/text_filter.js index 0e88d0ffdc37..d30aa58c2c3e 100755 --- a/lib/ui/src/modules/ui/components/stories_panel/text_filter.js +++ b/lib/ui/src/modules/ui/components/stories_panel/text_filter.js @@ -1,6 +1,6 @@ import PropTypes from 'prop-types'; import React from 'react'; -import debounce from 'lodash.debounce'; +import debounce from 'lodash-es/debounce'; import { baseFonts } from '@storybook/components'; const defaultTextValue = ''; diff --git a/lib/ui/src/modules/ui/components/stories_panel/text_filter.test.js b/lib/ui/src/modules/ui/components/stories_panel/text_filter.test.js index aa03026f0c82..bbb564fe1313 100755 --- a/lib/ui/src/modules/ui/components/stories_panel/text_filter.test.js +++ b/lib/ui/src/modules/ui/components/stories_panel/text_filter.test.js @@ -2,7 +2,7 @@ import { shallow, mount } from 'enzyme'; import React from 'react'; import TextFilter from './text_filter'; -jest.mock('lodash.debounce', () => jest.fn(fn => fn)); +jest.mock('lodash-es/debounce', () => jest.fn(fn => fn)); describe('manager.ui.components.stories_panel.test_filter', () => { describe('render', () => { diff --git a/lib/ui/src/modules/ui/containers/layout.js b/lib/ui/src/modules/ui/containers/layout.js index cb89879735ea..4c65c72479d2 100755 --- a/lib/ui/src/modules/ui/containers/layout.js +++ b/lib/ui/src/modules/ui/containers/layout.js @@ -1,4 +1,4 @@ -import pick from 'lodash.pick'; +import pick from 'lodash-es/pick'; import Layout from '../components/layout'; import genPoddaLoader from '../libs/gen_podda_loader'; import compose from '../../../compose'; diff --git a/lib/ui/src/modules/ui/libs/filters.js b/lib/ui/src/modules/ui/libs/filters.js index 358b2a3f6455..947f67f5d9a4 100755 --- a/lib/ui/src/modules/ui/libs/filters.js +++ b/lib/ui/src/modules/ui/libs/filters.js @@ -1,5 +1,5 @@ import Fuse from 'fuse.js'; -import sortBy from 'lodash.sortby'; +import sortBy from 'lodash-es/sortBy'; const searchOptions = { shouldSort: false, diff --git a/package.json b/package.json index 62484c88406f..c2a17cf9511f 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ "test-latest-cra": "npm --prefix lib/cli run test-latest-cra" }, "devDependencies": { - "@types/lodash": "^4.14.91", "babel-cli": "^6.26.0", "babel-core": "^6.26.0", "babel-eslint": "^8.1.0", @@ -72,7 +71,7 @@ "jest-jasmine2": "^22.0.4", "lerna": "^2.5.1", "lint-staged": "^6.0.0", - "lodash": "^4.17.4", + "lodash-es": "^4.17.4", "nodemon": "^1.14.3", "npmlog": "^4.1.2", "prettier": "^1.9.2", diff --git a/yarn.lock b/yarn.lock index 31f8240688ae..78fe53f74f40 100644 --- a/yarn.lock +++ b/yarn.lock @@ -286,7 +286,13 @@ version "2.8.2" resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" -"@types/lodash@^4.14.91": +"@types/lodash-es@^4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@types/lodash-es/-/lodash-es-4.17.0.tgz#ed9044d62ee36a93e0650b112701986b1c74c766" + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": version "4.14.91" resolved "https://artifactory.iponweb.net:443/artifactory/api/npm/npm/@types/lodash/-/lodash-4.14.91.tgz#794611b28056d16b5436059c6d800b39d573cd3a" @@ -8410,7 +8416,7 @@ lockfile@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.3.tgz#2638fc39a0331e9cac1a04b71799931c9c50df79" -lodash-es@^4.2.1: +lodash-es@^4.17.4, lodash-es@^4.2.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" @@ -8489,10 +8495,6 @@ lodash.cond@^4.3.0: version "4.5.2" resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"