Skip to content

Commit

Permalink
feat: add support for tree shaking
Browse files Browse the repository at this point in the history
BREAKING CHANGE: Tree shaking support and imports

Before:

import RA from 'ramda-adjunct'

After:

import * RA from 'ramda-adjunct'

Closes #75
Ref #24
  • Loading branch information
char0n committed Nov 5, 2017
1 parent 06e9474 commit baa62ea
Show file tree
Hide file tree
Showing 89 changed files with 113 additions and 291 deletions.
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,28 @@ const { isArray } = require('ramda-adjunct');
isArray([]);
```

## Tree shaking support

Tree shaking is a term commonly used in the JavaScript context for dead-code elimination.
It relies on the static structure of ES2015 module syntax, i.e. import and export.
Ramda Adjunct natively supports tree shaking thanks to the way the code is organized and
the fact that it is using ES2015 imports.

```javascript
import * as RA from 'ramda-adjunct';

RA.isArray([]); //=> true
```
```javascript
import { isArray } from 'ramda-adjunct';

isArray([]); //=> true
```

These two statements are equivalent and only `isArray` util should be incorporated into
your bundle, not entire Ramda Adjunct.


## Assimilated libraries

- [rcb](https://github.com/enten/rcb) - Ramda Cookbook implementation
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"name": "ramda-adjunct",
"description": "Community-maintained extension of Ramda",
"keywords": "ramda extensions addons cookbook adjunct recipe extras",
"version": "1.20.0",
"version": "2.0.0",
"homepage": "https://github.com/char0n/ramda-adjunct",
"license": "SEE LICENSE IN LICENSE.md",
"repository": {
Expand Down Expand Up @@ -90,7 +90,7 @@
"codecov": "3.0.0",
"conventional-changelog-cli": "=1.3.4",
"cross-env": "=5.1.1",
"docdash": "git+https://github.com/char0n/docdash.git#16d3b4e677ec7286bbf07badfc9ee37c93101d39",
"docdash": "git+https://github.com/char0n/docdash.git#383025edc8e57de72dc660c50f90b33f475ade13",
"es6-promise": "=4.1.1",
"eslint": "4.10.0",
"eslint-config-airbnb-base": "12.1.0",
Expand Down
206 changes: 3 additions & 203 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,96 +1,6 @@
// Type
import isNotUndefined from './isNotUndefined';
import isUndefined from './isUndefined';
import isNull from './isNull';
import isNotNull from './isNotNull';
import isNotNil from './isNotNil';
import isArray from './isArray';
import isNotArray from './isNotArray';
import isBoolean from './isBoolean';
import isNotBoolean from './isNotBoolean';
import isNotEmpty from './isNotEmpty';
import isNilOrEmpty from './isNilOrEmpty';
import isString from './isString';
import isNotString from './isNotString';
import isArrayLike from './isArrayLike';
import isNotArrayLike from './isNotArrayLike';
import isGeneratorFunction from './isGeneratorFunction';
import isNotGeneratorFunction from './isNotGeneratorFunction';
import isAsyncFunction from './isAsyncFunction';
import isNotAsyncFunction from './isNotAsyncFunction';
import isFunction from './isFunction';
import isNotFunction from './isNotFunction';
import isObj from './isObj';
import isNotObj from './isNotObj';
import isObjLike from './isObjLike';
import isNotObjLike from './isNotObjLike';
import isPlainObj from './isPlainObj';
import isNotPlainObj from './isNotPlainObj';
import isDate from './isDate';
import isNotDate from './isNotDate';
import isValidDate from './isValidDate';
import isNotValidDate from './isNotValidDate';
import isNumber from './isNumber';
import isNotNumber from './isNotNumber';
import isPositive from './isPositive';
import isNegative from './isNegative';
import isNaN from './isNaN';
import isNotNaN from './isNotNaN';
import isFinite from './isFinite';
import isNotFinite from './isNotFinite';
import isInteger from './isInteger';
import isNotInteger from './isNotInteger';
import isFloat from './isFloat';
import isNotFloat from './isNotFloat';
import isOdd from './isOdd';
import isEven from './isEven';
import isPair from './isPair';
import isNotPair from './isNotPair';
// Function
import stubUndefined from './stubUndefined';
import stubNull from './stubNull';
import noop from './noop';
import liftFN from './liftFN';
import liftF from './liftF';
import cata from './cata';
import weave from './weave';
import weaveLazy from './weaveLazy';
import curryRightN from './curryRightN';
import curryRight from './curryRight';
import resolveP from './resolveP';
import rejectP from './rejectP';
// List
import pickIndexes from './pickIndexes';
import list from './list';
import concatRight from './concatRight';
import reduceP from './reduceP';
import reduceRightP from './reduceRightP';
import sliceFrom from './sliceFrom';
import sliceTo from './sliceTo';
import omitIndexes from './omitIndexes';
// Object
import paths from './paths';
import renameKeys from './renameKeys';
import renameKeysWith from './renameKeysWith';
import mergeRight from './mergeRight';
import mergeProps from './mergeProps';
import mergePaths from './mergePaths';
import mergeProp from './mergeProp';
import mergePath from './mergePath';
import viewOr from './viewOr';
import hasPath from './hasPath';
import spreadProp from './spreadProp';
import spreadPath from './spreadPath';
import flattenProp from './flattenProp';
import flattenPath from './flattenPath';
// Relation
import lensEq from './lensEq';
import lensNotEq from './lensNotEq';
import lensSatisfies from './lensSatisfies';
import lensNotSatisfy from './lensNotSatisfy';
import lensIso from './lensIso';
// Types
import Identity from './fantasy-land/Identity';
/**
* @namespace RA
*/

// Type
export { default as isNotUndefined } from './isNotUndefined';
Expand Down Expand Up @@ -193,113 +103,3 @@ export { default as lensNotSatisfy } from './lensNotSatisfy';
export { default as lensIso } from './lensIso';
// Types
export { default as Identity } from './fantasy-land/Identity';

/**
* @namespace RA
*/
const RA = {
// Type
isNotUndefined,
isUndefined,
isNull,
isNotNull,
isNotNil,
isArray,
isNotArray,
isBoolean,
isNotBoolean,
isNotEmpty,
isNilOrEmpty,
isString,
isNotString,
isArrayLike,
isNotArrayLike,
isGeneratorFunction,
isNotGeneratorFunction,
isAsyncFunction,
isNotAsyncFunction,
isFunction,
isNotFunction,
isObj,
isObject: isObj,
isNotObj,
isNotObject: isNotObj,
isObjLike,
isObjectLike: isObjLike,
isNotObjLike,
isNotObjectLike: isNotObjLike,
isPlainObj,
isPlainObject: isPlainObj,
isNotPlainObj,
isNotPlainObject: isNotPlainObj,
isDate,
isNotDate,
isValidDate,
isNotValidDate,
isInvalidDate: isNotValidDate,
isNumber,
isNotNumber,
isPositive,
isNegative,
isNaN,
isNotNaN,
isFinite,
isNotFinite,
isInteger,
isNotInteger,
isFloat,
isNotFloat,
isOdd,
isEven,
isPair,
isNotPair,
// Function
stubUndefined,
stubNull,
noop,
liftFN,
liftF,
cata,
weave,
weaveLazy,
curryRightN,
curryRight,
resolveP,
rejectP,
// List
pickIndexes,
list,
concatRight,
reduceP,
reduceRightP,
sliceFrom,
sliceTo,
omitIndexes,
// Object
defaults: mergeRight,
resetToDefault: mergeRight,
paths,
renameKeys,
renameKeysWith,
mergeRight,
mergeProps,
mergePaths,
mergeProp,
mergePath,
viewOr,
hasPath,
spreadProp,
spreadPath,
flattenProp,
flattenPath,
// Relation
lensEq,
lensNotEq,
lensSatisfies,
lensNotSatisfy,
lensIso,
// Types
Identity,
};

export default RA;
2 changes: 1 addition & 1 deletion test/cata.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Either } from 'monet';
import { identity } from 'ramda';
import chai from 'chai';

import RA from '../src/index';
import * as RA from '../src/index';
import eq from './shared/eq';

describe('cata', function() {
Expand Down
2 changes: 1 addition & 1 deletion test/concatRight.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as R from 'ramda';
import chai from 'chai';

import eq from './shared/eq';
import RA from '../src/index';
import * as RA from '../src/index';


describe('concatRight', function() {
Expand Down
2 changes: 1 addition & 1 deletion test/curryRight.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as R from 'ramda';
import jsv from 'jsverify';

import eq from './shared/eq';
import RA from '../src/index';
import * as RA from '../src/index';


describe('curryRight', function() {
Expand Down
2 changes: 1 addition & 1 deletion test/curryRightN.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as R from 'ramda';

import eq from './shared/eq';
import RA from '../src/index';
import * as RA from '../src/index';


describe('curryRightN', function() {
Expand Down
2 changes: 1 addition & 1 deletion test/flattenPath.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import eq from './shared/eq';


Expand Down
2 changes: 1 addition & 1 deletion test/flattenProp.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import eq from './shared/eq';


Expand Down
2 changes: 1 addition & 1 deletion test/hasPath.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import eq from './shared/eq';


Expand Down
2 changes: 1 addition & 1 deletion test/isArray.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import eq from './shared/eq';

describe('isArray', function() {
Expand Down
2 changes: 1 addition & 1 deletion test/isArrayLike.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import eq from './shared/eq';


Expand Down
2 changes: 1 addition & 1 deletion test/isAsyncFunction.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import eq from './shared/eq';
import Symbol from './shared/Symbol';
import args from './shared/arguments';
Expand Down
2 changes: 1 addition & 1 deletion test/isBoolean.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as R from 'ramda';
import RA from '../src/index';
import * as RA from '../src/index';
import eq from './shared/eq';
import Symbol from './shared/Symbol';

Expand Down
2 changes: 1 addition & 1 deletion test/isDate.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import eq from './shared/eq';
import args from './shared/arguments';
import Symbol from './shared/Symbol';
Expand Down
2 changes: 1 addition & 1 deletion test/isEven.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import MAX_SAFE_INTEGER from '../src/internal/polyfills/Number.MAX_SAFE_INTEGER';
import MIN_SAFE_INTEGER from '../src/internal/polyfills/Number.MIN_SAFE_INTEGER';
import eq from './shared/eq';
Expand Down
2 changes: 1 addition & 1 deletion test/isFinite.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import polyfill from '../src/internal/polyfills/Number.isFinite';
import eq from './shared/eq';

Expand Down
2 changes: 1 addition & 1 deletion test/isFloat.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import MAX_SAFE_INTEGER from '../src/internal/polyfills/Number.MAX_SAFE_INTEGER';
import MIN_SAFE_INTEGER from '../src/internal/polyfills/Number.MIN_SAFE_INTEGER';
import eq from './shared/eq';
Expand Down
2 changes: 1 addition & 1 deletion test/isFunction.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import eq from './shared/eq';
import Symbol from './shared/Symbol';
import args from './shared/arguments';
Expand Down
2 changes: 1 addition & 1 deletion test/isGeneratorFunction.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import eq from './shared/eq';
import Symbol from './shared/Symbol';
import args from './shared/arguments';
Expand Down
2 changes: 1 addition & 1 deletion test/isInteger.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import MAX_SAFE_INTEGER from '../src/internal/polyfills/Number.MAX_SAFE_INTEGER';
import MIN_SAFE_INTEGER from '../src/internal/polyfills/Number.MIN_SAFE_INTEGER';
import eq from './shared/eq';
Expand Down
2 changes: 1 addition & 1 deletion test/isNaN.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import polyfill from '../src/internal/polyfills/Number.isNaN';
import eq from './shared/eq';

Expand Down
2 changes: 1 addition & 1 deletion test/isNegative.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import MAX_SAFE_INTEGER from '../src/internal/polyfills/Number.MAX_SAFE_INTEGER';
import MIN_SAFE_INTEGER from '../src/internal/polyfills/Number.MIN_SAFE_INTEGER';
import eq from './shared/eq';
Expand Down
2 changes: 1 addition & 1 deletion test/isNilOrEmpty.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import RA from '../src/index';
import * as RA from '../src/index';
import eq from './shared/eq';

describe('isNilOrEmpty', function() {
Expand Down
Loading

0 comments on commit baa62ea

Please sign in to comment.