Skip to content

Commit

Permalink
Merge pull request #839 from sharetribe/change-lodash-import
Browse files Browse the repository at this point in the history
import lodash per file to reduce bundle size
  • Loading branch information
Gnito committed May 18, 2018
2 parents d90d170 + e9210a1 commit 150029b
Show file tree
Hide file tree
Showing 43 changed files with 69 additions and 47 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ way to update this template, but currently, we follow a pattern:

----

## Upcoming version

* Change lodash import syntax to reduce bundle size (-15.14 KB)
[839](https://github.com/sharetribe/flex-template-web/pull/839)

## v0.3.0

* Remove custom touched handling from `FieldCheckboxGroup` as it has has become obsolete now that
Expand Down
2 changes: 1 addition & 1 deletion src/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import 'react-dates/initialize';
import Helmet from 'react-helmet';
import { BrowserRouter, StaticRouter } from 'react-router-dom';
import { Provider } from 'react-redux';
import { mapValues } from 'lodash';
import mapValues from 'lodash/mapValues';
import moment from 'moment';
import { IntlProvider, addLocaleData } from 'react-intl';
import configureStore from './store';
Expand Down
2 changes: 1 addition & 1 deletion src/app.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from 'react';
import ReactDOM from 'react-dom';
import ReactDOMServer from 'react-dom/server';
import Helmet from 'react-helmet';
import { forEach } from 'lodash';
import forEach from 'lodash/forEach';
import { ClientApp, ServerApp } from './app';
import configureStore from './store';

Expand Down
2 changes: 1 addition & 1 deletion src/components/ActivityFeed/ActivityFeed.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import { string, arrayOf, bool, func, number } from 'prop-types';
import { injectIntl, intlShape, FormattedMessage } from 'react-intl';
import { dropWhile } from 'lodash';
import dropWhile from 'lodash/dropWhile';
import classNames from 'classnames';
import { Avatar, InlineTextButton, ReviewRating } from '../../components';
import { formatDate } from '../../util/dates';
Expand Down
3 changes: 2 additions & 1 deletion src/components/AddImages/AddImages.example.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* eslint-disable no-console */
import React, { Component } from 'react';
import { findIndex, uniqueId } from 'lodash';
import findIndex from 'lodash/findIndex';
import uniqueId from 'lodash/uniqueId';
import { types as sdkTypes } from '../../util/sdkLoader';
import AddImages from './AddImages';
import css from './AddImages.example.css';
Expand Down
2 changes: 1 addition & 1 deletion src/components/FieldBirthdayInput/FieldBirthdayInput.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { func, instanceOf, object, node, string, bool } from 'prop-types';
import { Field } from 'react-final-form';
import { injectIntl, intlShape } from 'react-intl';
import classNames from 'classnames';
import { range } from 'lodash';
import range from 'lodash/range';
import { ValidationError } from '../../components';

import css from './FieldBirthdayInput.css';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { Field } from 'react-final-form';
import { debounce } from 'lodash';
import debounce from 'lodash/debounce';
import classNames from 'classnames';
import { propTypes } from '../../util/types';
import { getPlacePredictions, getPlaceDetails } from '../../util/googleMaps';
Expand Down
2 changes: 1 addition & 1 deletion src/components/PaginationLinks/PaginationLinks.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import { injectIntl, intlShape } from 'react-intl';
import classNames from 'classnames';
import { range } from 'lodash';
import range from 'lodash/range';
import { NamedLink } from '../../components';
import { stringify } from '../../util/urlHelpers';
import { propTypes } from '../../util/types';
Expand Down
2 changes: 1 addition & 1 deletion src/components/PropertyGroup/PropertyGroup.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { includes } from 'lodash';
import includes from 'lodash/includes';

import css from './PropertyGroup.css';

Expand Down
2 changes: 1 addition & 1 deletion src/components/SearchFilters/SearchFilters.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { object, string, bool, number, func, shape } from 'prop-types';
import { injectIntl, intlShape, FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import { withRouter } from 'react-router-dom';
import { omit } from 'lodash';
import omit from 'lodash/omit';

import { SelectSingleFilter, SelectMultipleFilter } from '../../components';
import routeConfiguration from '../../routeConfiguration';
Expand Down
2 changes: 1 addition & 1 deletion src/components/SearchFiltersMobile/SearchFiltersMobile.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { object, string, bool, number, func, shape, array } from 'prop-types';
import classNames from 'classnames';
import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
import { withRouter } from 'react-router-dom';
import { omit } from 'lodash';
import omit from 'lodash/omit';

import routeConfiguration from '../../routeConfiguration';
import { createResourceLocatorString } from '../../util/routes';
Expand Down
2 changes: 1 addition & 1 deletion src/components/SearchFiltersPanel/SearchFiltersPanel.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import { array, func, object, shape, string } from 'prop-types';
import classNames from 'classnames';
import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
import { withRouter } from 'react-router-dom';
import { omit } from 'lodash';
import omit from 'lodash/omit';

import routeConfiguration from '../../routeConfiguration';
import { createResourceLocatorString } from '../../util/routes';
Expand Down
4 changes: 3 additions & 1 deletion src/components/SearchMap/SearchMap.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ import React, { Component } from 'react';
import { arrayOf, bool, func, number, string, shape } from 'prop-types';
import { withGoogleMap, GoogleMap } from 'react-google-maps';
import classNames from 'classnames';
import { groupBy, isEqual, reduce } from 'lodash';
import groupBy from 'lodash/groupBy';
import isEqual from 'lodash/isEqual';
import reduce from 'lodash/reduce';
import { types as sdkTypes } from '../../util/sdkLoader';
import { propTypes } from '../../util/types';
import { obfuscatedCoordinates } from '../../util/maps';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import PropTypes from 'prop-types';
import { intlShape, injectIntl, FormattedMessage } from 'react-intl';
import { Field } from 'react-final-form';
import classNames from 'classnames';
import { debounce } from 'lodash';
import debounce from 'lodash/debounce';
import config from '../../config';

import {
Expand Down
2 changes: 1 addition & 1 deletion src/components/Topbar/Topbar.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { compose } from 'redux';
import { FormattedMessage, intlShape, injectIntl } from 'react-intl';
import { pickBy } from 'lodash';
import pickBy from 'lodash/pickBy';
import classNames from 'classnames';
import config from '../../config';
import routeConfiguration from '../../routeConfiguration';
Expand Down
2 changes: 1 addition & 1 deletion src/components/UserCard/UserCard.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React, { Component } from 'react';
import { string, func, oneOfType } from 'prop-types';
import { FormattedMessage } from 'react-intl';
import { truncate } from 'lodash';
import truncate from 'lodash/truncate';
import classNames from 'classnames';
import { AvatarLarge, NamedLink, InlineTextButton } from '../../components';
import { ensureUser, ensureCurrentUser } from '../../util/data';
Expand Down
2 changes: 1 addition & 1 deletion src/containers/CheckoutPage/CheckoutPage.duck.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { pick } from 'lodash';
import pick from 'lodash/pick';
import config from '../../config';
import { denormalisedResponseEntities } from '../../util/data';
import { storableError } from '../../util/errors';
Expand Down
2 changes: 1 addition & 1 deletion src/containers/CheckoutPage/CheckoutPageSessionHelpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* e.g. tab is open. (Session Store is not related to session cookies.)
*/
import moment from 'moment';
import { reduce } from 'lodash';
import reduce from 'lodash/reduce';
import { types as sdkTypes } from '../../util/sdkLoader';

const { UUID, Money } = sdkTypes;
Expand Down
5 changes: 4 additions & 1 deletion src/containers/EditListingPage/EditListingPage.duck.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import { omit, omitBy, isUndefined, mergeWith } from 'lodash';
import omit from 'lodash/omit';
import omitBy from 'lodash/omitBy';
import isUndefined from 'lodash/isUndefined';
import mergeWith from 'lodash/mergeWith';
import { types as sdkTypes } from '../../util/sdkLoader';
import { storableError } from '../../util/errors';
import { addMarketplaceEntities } from '../../ducks/marketplaceData.duck';
Expand Down
3 changes: 2 additions & 1 deletion src/containers/InboxPage/InboxPage.duck.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { reverse, sortBy } from 'lodash';
import reverse from 'lodash/reverse';
import sortBy from 'lodash/sortBy';
import { storableError } from '../../util/errors';
import { parse } from '../../util/urlHelpers';
import { addMarketplaceEntities } from '../../ducks/marketplaceData.duck';
Expand Down
2 changes: 1 addition & 1 deletion src/containers/ListingPage/ListingPage.duck.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { pick } from 'lodash';
import pick from 'lodash/pick';
import config from '../../config';
import { types as sdkTypes } from '../../util/sdkLoader';
import { storableError } from '../../util/errors';
Expand Down
2 changes: 1 addition & 1 deletion src/containers/SearchPage/MainPanel.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React, { Component } from 'react';
import { array, bool, func, number, object, objectOf, string } from 'prop-types';
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import { merge } from 'lodash';
import merge from 'lodash/merge';
import { propTypes } from '../../util/types';
import {
SearchResultsPanel,
Expand Down
2 changes: 1 addition & 1 deletion src/containers/SearchPage/SearchPage.duck.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { unionWith } from 'lodash';
import unionWith from 'lodash/unionWith';
import { storableError } from '../../util/errors';
import { addMarketplaceEntities } from '../../ducks/marketplaceData.duck';

Expand Down
2 changes: 1 addition & 1 deletion src/containers/SearchPage/SearchPage.helpers.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { intersection } from 'lodash';
import intersection from 'lodash/intersection';
import config from '../../config';
import { createResourceLocatorString } from '../../util/routes';
import { createSlug } from '../../util/urlHelpers';
Expand Down
4 changes: 3 additions & 1 deletion src/containers/SearchPage/SearchPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import { injectIntl, intlShape } from 'react-intl';
import { connect } from 'react-redux';
import { compose } from 'redux';
import { withRouter } from 'react-router-dom';
import { debounce, isEqual, unionWith } from 'lodash';
import debounce from 'lodash/debounce';
import isEqual from 'lodash/isEqual';
import unionWith from 'lodash/unionWith';
import classNames from 'classnames';
import config from '../../config';
import routeConfiguration from '../../routeConfiguration';
Expand Down
2 changes: 1 addition & 1 deletion src/containers/StyleguidePage/StyleguidePage.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
import { isEmpty } from 'lodash';
import isEmpty from 'lodash/isEmpty';
import classNames from 'classnames';
import { NamedLink } from '../../components';

Expand Down
2 changes: 1 addition & 1 deletion src/containers/TransactionPage/TransactionPage.duck.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { pick } from 'lodash';
import pick from 'lodash/pick';
import { types as sdkTypes } from '../../util/sdkLoader';
import { isTransactionsTransitionInvalidTransition, storableError } from '../../util/errors';
import {
Expand Down
2 changes: 1 addition & 1 deletion src/ducks/Auth.duck.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { isEmpty } from 'lodash';
import isEmpty from 'lodash/isEmpty';
import { clearCurrentUser, fetchCurrentUser } from './user.duck';
import { storableError } from '../util/errors';
import * as log from '../util/log';
Expand Down
3 changes: 2 additions & 1 deletion src/ducks/FlashNotification.duck.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
* https://github.com/erikras/ducks-modular-redux
*/

import { find, findIndex } from 'lodash';
import find from 'lodash/find';
import findIndex from 'lodash/findIndex';

// Actions: system notifications
export const ADD_FLASH_NOTIFICATION = 'app/FlashNotification/ADD_NOTIFICATION';
Expand Down
3 changes: 2 additions & 1 deletion src/ducks/user.duck.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { omitBy, isUndefined } from 'lodash';
import omitBy from 'lodash/omitBy';
import isUndefined from 'lodash/isUndefined';
import config from '../config';
import { denormalisedResponseEntities } from '../util/data';
import { storableError } from '../util/errors';
Expand Down
2 changes: 1 addition & 1 deletion src/forms/ContactDetailsForm/ContactDetailsForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import { compose } from 'redux';
import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
import { Form as FinalForm } from 'react-final-form';
import { isEqual } from 'lodash';
import isEqual from 'lodash/isEqual';
import classNames from 'classnames';
import { propTypes } from '../../util/types';
import * as validators from '../../util/validators';
Expand Down
2 changes: 1 addition & 1 deletion src/forms/EditListingPhotosForm/EditListingPhotosForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { array, bool, func, object, shape, string } from 'prop-types';
import { compose } from 'redux';
import { Form as FinalForm, Field } from 'react-final-form';
import { FormattedMessage, intlShape, injectIntl } from 'react-intl';
import { isEqual } from 'lodash';
import isEqual from 'lodash/isEqual';
import classNames from 'classnames';
import { propTypes } from '../../util/types';
import { nonEmptyArray, composeValidators } from '../../util/validators';
Expand Down
2 changes: 1 addition & 1 deletion src/forms/PasswordChangeForm/PasswordChangeForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import { compose } from 'redux';
import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
import { Form as FinalForm } from 'react-final-form';
import { isEqual } from 'lodash';
import isEqual from 'lodash/isEqual';
import classNames from 'classnames';
import { propTypes } from '../../util/types';
import * as validators from '../../util/validators';
Expand Down
2 changes: 1 addition & 1 deletion src/forms/PasswordRecoveryForm/PasswordRecoveryForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import { compose } from 'redux';
import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
import { Form as FinalForm } from 'react-final-form';
import { isEqual } from 'lodash';
import isEqual from 'lodash/isEqual';
import classNames from 'classnames';
import { propTypes } from '../../util/types';
import * as validators from '../../util/validators';
Expand Down
2 changes: 1 addition & 1 deletion src/forms/ProfileSettingsForm/ProfileSettingsForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { bool, string } from 'prop-types';
import { compose } from 'redux';
import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
import { Field, Form as FinalForm } from 'react-final-form';
import { isEqual } from 'lodash';
import isEqual from 'lodash/isEqual';
import classNames from 'classnames';
import { ensureCurrentUser } from '../../util/data';
import { propTypes } from '../../util/types';
Expand Down
2 changes: 1 addition & 1 deletion src/util/contextHelpers.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { Component as ReactComponent } from 'react';
import PropTypes from 'prop-types';
import { throttle } from 'lodash';
import throttle from 'lodash/throttle';

/**
* A higher order component (HOC) to take the togglePageClassNames function from
Expand Down
3 changes: 2 additions & 1 deletion src/util/currency.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { has, trimEnd } from 'lodash';
import has from 'lodash/has';
import trimEnd from 'lodash/trimEnd';
import Decimal from 'decimal.js';
import { types as sdkTypes } from './sdkLoader';
import { subUnitDivisors } from './currencyConfig';
Expand Down
4 changes: 3 additions & 1 deletion src/util/data.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { isArray, reduce, toPairs } from 'lodash';
import isArray from 'lodash/isArray';
import reduce from 'lodash/reduce';
import toPairs from 'lodash/toPairs';

/**
* Combine the given relationships objects
Expand Down
2 changes: 1 addition & 1 deletion src/util/maps.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { memoize } from 'lodash';
import memoize from 'lodash/memoize';
import { types as sdkTypes } from './sdkLoader';
import config from '../config';

Expand Down
15 changes: 9 additions & 6 deletions src/util/richText.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import React from 'react';
import { chain } from 'lodash';
import flow from 'lodash/flow';
import flatMap from 'lodash/flatMap';
import map from 'lodash/map';
import { ExternalLink } from '../components';

/**
Expand Down Expand Up @@ -125,11 +127,12 @@ export const richText = (text, options) => {
const nonWhiteSpaceSequence = /([^\s]+)/gi;

return text.split(nonWhiteSpaceSequence).reduce((acc, nextChild, i) => {
const parts = chain([nextChild])
.flatMap(w => linkifyOrWrapLinkSplit(w, i, { linkify, linkClass: linkOrLongWordClass }))
.flatMap(w => zwspAroundSpecialCharsSplit(w, '/,'))
.map((w, j) => wrapLongWord(w, `${i}${j}`, { longWordMinLength, longWordClass }))
.value();
const parts = flow([
v =>
flatMap(v, w => linkifyOrWrapLinkSplit(w, i, { linkify, linkClass: linkOrLongWordClass })),
v => flatMap(v, w => zwspAroundSpecialCharsSplit(w, '/,')),
v => map(v, (w, j) => wrapLongWord(w, `${i}${j}`, { longWordMinLength, longWordClass })),
])([nextChild]);
return acc.concat(parts);
}, []);
};
2 changes: 1 addition & 1 deletion src/util/routes.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { find } from 'lodash';
import find from 'lodash/find';
import { matchPath } from 'react-router-dom';
import pathToRegexp from 'path-to-regexp';
import { stringify } from './urlHelpers';
Expand Down
2 changes: 1 addition & 1 deletion src/util/test-helpers.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import { mapValues } from 'lodash';
import mapValues from 'lodash/mapValues';
import Enzyme, { shallow, mount } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import toJson from 'enzyme-to-json';
Expand Down
2 changes: 1 addition & 1 deletion src/util/validators.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import moment from 'moment';
import { types as sdkTypes } from './sdkLoader';
import { toPairs } from 'lodash';
import toPairs from 'lodash/toPairs';

const { LatLng, Money } = sdkTypes;

Expand Down

0 comments on commit 150029b

Please sign in to comment.