From c2d38650e1c6ccfd9ef4b3afcf0fdef045b2c287 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rouven=20We=C3=9Fling?= Date: Sun, 1 Jul 2018 18:27:18 +0200 Subject: [PATCH 1/2] Remove dependency on exenv by inlining the relevant parts. Makes the minified UMD build 10% (0.11 kB) smaller. --- package.json | 1 - rollup.config.js | 2 +- src/index.js | 9 +++++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index ef1db4c..b0f6cee 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "react": "^0.13.0 || ^0.14.0 || ^15.0.0 || ^16.0.0" }, "dependencies": { - "exenv": "^1.2.1", "shallowequal": "^1.0.1" }, "devDependencies": { diff --git a/rollup.config.js b/rollup.config.js index ead3270..8970fcb 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -21,7 +21,7 @@ const config = { exclude: 'node_modules/**', }), ], - external: ['shallowequal', 'react', 'exenv'], + external: ['shallowequal', 'react'], } if (BUILD_FORMAT === 'umd') { diff --git a/src/index.js b/src/index.js index b224ec6..7d9da6a 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,12 @@ import React, { Component } from 'react'; -import ExecutionEnvironment from 'exenv'; import shallowEqual from 'shallowequal'; +const canUseDOM = !!( + typeof window !== 'undefined' && + window.document && + window.document.createElement +); + export default function withSideEffect( reducePropsToState, handleStateChangeOnClient, @@ -46,7 +51,7 @@ export default function withSideEffect( static displayName = `SideEffect(${getDisplayName(WrappedComponent)})`; // Expose canUseDOM so tests can monkeypatch it - static canUseDOM = ExecutionEnvironment.canUseDOM; + static canUseDOM = canUseDOM; static peek() { return state; From 2b7c7eb977ce5db2e79e8b8b820db48d0a8f227c Mon Sep 17 00:00:00 2001 From: Louis DeScioli Date: Wed, 28 Aug 2019 17:52:20 -0400 Subject: [PATCH 2/2] Updates tests and lockfile for no exenv dependency --- test/index.spec.js | 3 +-- yarn.lock | 4 ---- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/test/index.spec.js b/test/index.spec.js index 82d65ec..4fe9546 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -1,6 +1,5 @@ const { expect } = require('chai'); const React = require('react'); -const ExecutionEnvironment = require('exenv'); const jsdom = require('jsdom'); const { shallow, mount } = require('enzyme') const { renderToStaticMarkup } = require('react-dom/server') @@ -81,7 +80,7 @@ describe('react-side-effect', () => { }); it('should expose the canUseDOM flag', () => { - expect(SideEffect).to.have.property('canUseDOM', ExecutionEnvironment.canUseDOM); + expect(SideEffect).to.have.property('canUseDOM'); }); describe('rewind', () => { diff --git a/yarn.lock b/yarn.lock index f652fa0..ebd671b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1258,10 +1258,6 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -exenv@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.1.tgz#75de1c8dee02e952b102aa17f8875973e0df14f9" - expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"