From 48b87616495deab5d3e58bf67e7cdb2f82c850d6 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 09:22:31 -0500 Subject: [PATCH 01/20] Migrated FFI to ES modules via 'lebab' --- src/React.js | 46 +++++++++++++++++-------------------- src/React/DOM/Props.js | 12 +++++----- src/React/Ref.js | 9 ++++---- src/React/SyntheticEvent.js | 28 +++++++++++----------- 4 files changed, 45 insertions(+), 50 deletions(-) diff --git a/src/React.js b/src/React.js index 91d4c45..bd98ac5 100644 --- a/src/React.js +++ b/src/React.js @@ -1,7 +1,7 @@ /* global exports */ "use strict"; -var React = require("react"); +import React from "react"; function createClass(baseClass) { function bindProperty(instance, prop, value) { @@ -73,27 +73,23 @@ function createClassWithDerivedState(classCtr) { } var componentImpl = createClass(React.Component); -exports.componentImpl = componentImpl; -exports.componentWithDerivedStateImpl = createClassWithDerivedState(componentImpl); +export {componentImpl}; +export var componentWithDerivedStateImpl = createClassWithDerivedState(componentImpl); var pureComponentImpl = createClass(React.PureComponent); -exports.pureComponentImpl = pureComponentImpl; -exports.pureComponentWithDerivedStateImpl = createClassWithDerivedState(pureComponentImpl); - -exports.statelessComponent = function(x) { return x; }; - -exports.fragment = React.Fragment; +export {pureComponentImpl}; +export var pureComponentWithDerivedStateImpl = createClassWithDerivedState(pureComponentImpl); +export function statelessComponent(x) { return x; } +export var fragment = React.Fragment; function getProps(this_) { return function(){ return this_.props; }; } -exports.getProps = getProps; - -exports.childrenToArray = React.Children.toArray; - -exports.childrenCount = React.Children.count; +export {getProps}; +export var childrenToArray = React.Children.toArray; +export var childrenCount = React.Children.count; function setStateImpl(this_) { return function(state){ @@ -102,7 +98,7 @@ function setStateImpl(this_) { }; }; } -exports.setStateImpl = setStateImpl; +export {setStateImpl}; function setStateWithCallbackImpl(this_) { return function(state){ @@ -113,7 +109,7 @@ function setStateWithCallbackImpl(this_) { }; }; } -exports.setStateWithCallbackImpl = setStateWithCallbackImpl; +export {setStateWithCallbackImpl}; function getState(this_) { return function(){ @@ -123,7 +119,7 @@ function getState(this_) { return this_.state; }; } -exports.getState = getState; +export {getState}; function forceUpdateWithCallback(this_) { return function(cb) { @@ -132,7 +128,7 @@ function forceUpdateWithCallback(this_) { }; }; } -exports.forceUpdateWithCallback = forceUpdateWithCallback; +export {forceUpdateWithCallback}; function createElement(class_) { return function(props){ @@ -141,15 +137,15 @@ function createElement(class_) { }; }; } -exports.createElementImpl = createElement; -exports.createElementTagName = createElement; +export {createElement as createElementImpl}; +export {createElement as createElementTagName}; function createLeafElement(class_) { return function(props) { return React.createElement(class_, props); }; } -exports.createLeafElementImpl = createLeafElement; +export {createLeafElement as createLeafElementImpl}; function createElementDynamic(class_) { return function(props) { @@ -157,9 +153,9 @@ function createElementDynamic(class_) { return React.createElement(class_, props, children); }; }; -}; -exports.createElementDynamicImpl = createElementDynamic; -exports.createElementTagNameDynamic = createElementDynamic; +} +export {createElementDynamic as createElementDynamicImpl}; +export {createElementDynamic as createElementTagNameDynamic}; function createContext(defaultValue) { var context = React.createContext(defaultValue); @@ -168,4 +164,4 @@ function createContext(defaultValue) { provider: context.Provider }; } -exports.createContext = createContext; +export {createContext}; diff --git a/src/React/DOM/Props.js b/src/React/DOM/Props.js index 68e4a39..9c31a1b 100644 --- a/src/React/DOM/Props.js +++ b/src/React/DOM/Props.js @@ -1,7 +1,7 @@ /* global exports */ "use strict"; -var React = require("react"); +import React from "react"; function unsafeMkProps(key) { return function(value){ @@ -10,7 +10,7 @@ function unsafeMkProps(key) { return result; }; } -exports.unsafeMkProps = unsafeMkProps; +export {unsafeMkProps}; function unsafeUnfoldProps(key) { return function(value){ @@ -27,7 +27,7 @@ function unsafeUnfoldProps(key) { return props; }; } -exports.unsafeUnfoldProps = unsafeUnfoldProps; +export {unsafeUnfoldProps}; function unsafePrefixProps(prefix) { return function(value){ @@ -42,7 +42,7 @@ function unsafePrefixProps(prefix) { return result; }; } -exports.unsafePrefixProps = unsafePrefixProps; +export {unsafePrefixProps}; function unsafeFromPropsArray(props) { var result = {}; @@ -58,5 +58,5 @@ function unsafeFromPropsArray(props) { } return result; -}; -exports.unsafeFromPropsArray = unsafeFromPropsArray; +} +export {unsafeFromPropsArray}; diff --git a/src/React/Ref.js b/src/React/Ref.js index a08fe02..d90f759 100644 --- a/src/React/Ref.js +++ b/src/React/Ref.js @@ -1,13 +1,12 @@ "use strict"; -var React = require("react"); +import React from "react"; +export var createRef = React.createRef; -exports.createRef = React.createRef; - -exports.liftCallbackRef = function(ref) { +export function liftCallbackRef(ref) { return { current: ref }; } -exports.getCurrentRef_ = function(ref) { +export function getCurrentRef_(ref) { return ref.current; } diff --git a/src/React/SyntheticEvent.js b/src/React/SyntheticEvent.js index 6d39ee0..0eb1233 100644 --- a/src/React/SyntheticEvent.js +++ b/src/React/SyntheticEvent.js @@ -1,47 +1,47 @@ 'use strict'; -exports.preventDefault = function preventDefault(event) { +export function preventDefault(event) { return function() { return event.preventDefault(); }; -}; +} -exports.isDefaultPrevented = function isDefaultPrevented(event) { +export function isDefaultPrevented(event) { return function() { return event.isDefaultPrevented(); }; -}; +} -exports.stopPropagation = function stopPropagation(event) { +export function stopPropagation(event) { return function() { return event.stopPropagation(); }; -}; +} -exports.isPropagationStopped = function isPropagationStopped(event) { +export function isPropagationStopped(event) { return function() { return event.isPropagationStopped(); }; -}; +} -exports.persist = function persist(event) { +export function persist(event) { return function() { return event.persist(); }; -}; +} -exports.getModifierState = function getModifierState(key) { +export function getModifierState(key) { return function(event) { return function() { return event.getModifierState(key); }; }; -}; +} -exports.unsafeGet = function unsafeGet(key) { +export function unsafeGet(key) { return function (event) { return function () { return event[key]; }; }; -}; +} From 4c8e92fb8b2087a5110821d5b87793f46e10d0d2 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 09:22:31 -0500 Subject: [PATCH 02/20] Replaced 'export var' with 'export const' --- src/React.js | 10 +++++----- src/React/Ref.js | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/React.js b/src/React.js index bd98ac5..59e86f4 100644 --- a/src/React.js +++ b/src/React.js @@ -74,13 +74,13 @@ function createClassWithDerivedState(classCtr) { var componentImpl = createClass(React.Component); export {componentImpl}; -export var componentWithDerivedStateImpl = createClassWithDerivedState(componentImpl); +export const componentWithDerivedStateImpl = createClassWithDerivedState(componentImpl); var pureComponentImpl = createClass(React.PureComponent); export {pureComponentImpl}; -export var pureComponentWithDerivedStateImpl = createClassWithDerivedState(pureComponentImpl); +export const pureComponentWithDerivedStateImpl = createClassWithDerivedState(pureComponentImpl); export function statelessComponent(x) { return x; } -export var fragment = React.Fragment; +export const fragment = React.Fragment; function getProps(this_) { return function(){ @@ -88,8 +88,8 @@ function getProps(this_) { }; } export {getProps}; -export var childrenToArray = React.Children.toArray; -export var childrenCount = React.Children.count; +export const childrenToArray = React.Children.toArray; +export const childrenCount = React.Children.count; function setStateImpl(this_) { return function(state){ diff --git a/src/React/Ref.js b/src/React/Ref.js index d90f759..c4a7260 100644 --- a/src/React/Ref.js +++ b/src/React/Ref.js @@ -1,7 +1,7 @@ "use strict"; import React from "react"; -export var createRef = React.createRef; +export const createRef = React.createRef; export function liftCallbackRef(ref) { return { current: ref }; From 043f8b29de8f8a620330fd024b03a153595c81f0 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 09:22:31 -0500 Subject: [PATCH 03/20] Removed '"use strict";' in FFI files --- src/React.js | 2 -- src/React/DOM/Props.js | 2 -- src/React/Ref.js | 2 -- 3 files changed, 6 deletions(-) diff --git a/src/React.js b/src/React.js index 59e86f4..ce94620 100644 --- a/src/React.js +++ b/src/React.js @@ -1,6 +1,4 @@ /* global exports */ -"use strict"; - import React from "react"; function createClass(baseClass) { diff --git a/src/React/DOM/Props.js b/src/React/DOM/Props.js index 9c31a1b..885ffd6 100644 --- a/src/React/DOM/Props.js +++ b/src/React/DOM/Props.js @@ -1,6 +1,4 @@ /* global exports */ -"use strict"; - import React from "react"; function unsafeMkProps(key) { diff --git a/src/React/Ref.js b/src/React/Ref.js index c4a7260..865a9c6 100644 --- a/src/React/Ref.js +++ b/src/React/Ref.js @@ -1,5 +1,3 @@ -"use strict"; - import React from "react"; export const createRef = React.createRef; From d8b008b866494c15dab1ff89977f31b3afaf8772 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 09:22:31 -0500 Subject: [PATCH 04/20] Update to CI to use 'unstable' purescript --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 43f9f20..4989d99 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,6 +16,7 @@ jobs: - name: Set up PureScript toolchain uses: purescript-contrib/setup-purescript@main with: + purescript: "unstable" purs-tidy: "latest" - name: Cache PureScript dependencies From 7cff2fa9eb9cd570b2ef55bbc7bbbe5216054d65 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 09:22:31 -0500 Subject: [PATCH 05/20] Add CI test: verify 'bower.json' file works via pulp --- .github/workflows/ci.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4989d99..fc54710 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,3 +55,12 @@ jobs: - name: Check formatting run: purs-tidy check src test + + - name: Verify Bower & Pulp + run: | + npm install bower pulp@16.0.0-0 + npx bower install + npx pulp build -- --censor-lib --strict + if [ -d "test" ]; then + npx pulp test + fi From e9bd45318e451ff915decb85d18838d633b21f55 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 09:22:31 -0500 Subject: [PATCH 06/20] Ignore spago-based tests (temporarily) --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fc54710..e16f413 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,8 +50,8 @@ jobs: - name: Build the project run: npm run build - - name: Run tests - run: npm run test +# - name: Run tests +# run: npm run test - name: Check formatting run: purs-tidy check src test From be429988f85d428f5258051024dabadfbf895c35 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 09:22:32 -0500 Subject: [PATCH 07/20] Update Bower dependencies to master or main --- bower.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/bower.json b/bower.json index b11275c..eddfbf3 100644 --- a/bower.json +++ b/bower.json @@ -17,15 +17,15 @@ "url": "https://github.com/purescript-contrib/purescript-react.git" }, "dependencies": { - "purescript-effect": "^3.0.0", - "purescript-exceptions": "^5.0.0", - "purescript-maybe": "^5.0.0", - "purescript-nullable": "^5.0.0", - "purescript-prelude": "^5.0.0", - "purescript-typelevel-prelude": "^6.0.0", - "purescript-unsafe-coerce": "^5.0.0" + "purescript-effect": "master", + "purescript-exceptions": "master", + "purescript-maybe": "master", + "purescript-nullable": "main", + "purescript-prelude": "master", + "purescript-typelevel-prelude": "master", + "purescript-unsafe-coerce": "master" }, "devDependencies": { - "purescript-console": "^5.0.0" + "purescript-console": "master" } } From 93bd77a422265abcbd6bfb64ec808732b3a95b0f Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 09:22:32 -0500 Subject: [PATCH 08/20] Update packages.dhall to 'prepare-0.15' package set --- packages.dhall | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages.dhall b/packages.dhall index 7a6905b..582d6d3 100644 --- a/packages.dhall +++ b/packages.dhall @@ -1,4 +1,4 @@ let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.14.3-20210722/packages.dhall sha256:1ceb43aa59436bf5601bac45f6f3781c4e1f0e4c2b8458105b018e5ed8c30f8c + https://raw.githubusercontent.com/purescript/package-sets/prepare-0.15/src/packages.dhall in upstream From b5f7e5a316ded73f8195242e8bb6838420255c45 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 09:22:32 -0500 Subject: [PATCH 09/20] Removed unneeded 'psci-support' package --- spago.dhall | 1 - 1 file changed, 1 deletion(-) diff --git a/spago.dhall b/spago.dhall index 4e5b7a6..0119ab6 100644 --- a/spago.dhall +++ b/spago.dhall @@ -6,7 +6,6 @@ , "maybe" , "nullable" , "prelude" - , "psci-support" , "typelevel-prelude" , "unsafe-coerce" ] From 877d472349e257527e398f5b40ae59c0ea8dc99b Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 09:22:32 -0500 Subject: [PATCH 10/20] Update psa to 0.8.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index acf39bb..5617636 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,6 @@ }, "devDependencies": { "eslint": "^7.10.0", - "purescript-psa": "^0.8.0" + "purescript-psa": "^0.8.2" } } From 56a48e1933eed04ef6298d3b4ac913850c6163e6 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 12:15:24 -0500 Subject: [PATCH 11/20] Update eslint file for es6 --- .eslintrc.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 7f8e075..9d6a62b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,7 +1,6 @@ { - "env": { "commonjs": true }, "extends": "eslint:recommended", - "parserOptions": { "ecmaVersion": 5 }, + "parserOptions": { "ecmaVersion": 6, "sourceType": "module" }, "rules": { "block-scoped-var": "error", "consistent-return": "error", From 4dd1cf27170e5436ef138c8c012e647367e1aaee Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 12:15:34 -0500 Subject: [PATCH 12/20] Fix proxy workaround --- src/React/SyntheticEvent.purs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/React/SyntheticEvent.purs b/src/React/SyntheticEvent.purs index f4c97e0..4695065 100644 --- a/src/React/SyntheticEvent.purs +++ b/src/React/SyntheticEvent.purs @@ -391,10 +391,10 @@ foreign import getModifierState -> Effect Boolean get - :: forall l r s a proxy + :: forall l r s a . Row.Cons l a r s => IsSymbol l - => proxy l + => Proxy l -> SyntheticEvent_ s -> Effect a get l r = unsafeGet (reflectSymbol l) r From 6e837eca2ec39963c153ea3eae0015b452c6100a Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 12:15:53 -0500 Subject: [PATCH 13/20] Fix single quote linting issue --- src/React.js | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/React.js b/src/React.js index ce94620..08bbcbf 100644 --- a/src/React.js +++ b/src/React.js @@ -4,38 +4,38 @@ import React from "react"; function createClass(baseClass) { function bindProperty(instance, prop, value) { switch (prop) { - case 'state': - case 'render': - case 'componentDidMount': - case 'componentWillUnmount': + case "state": + case "render": + case "componentDidMount": + case "componentWillUnmount": instance[prop] = value; break; - case 'componentDidCatch': - case 'componentWillUpdate': - case 'shouldComponentUpdate': - case 'getSnapshotBeforeUpdate': + case "componentDidCatch": + case "componentWillUpdate": + case "shouldComponentUpdate": + case "getSnapshotBeforeUpdate": instance[prop] = function (a, b) { return value(a)(b)(); }; break; - case 'componentDidUpdate': + case "componentDidUpdate": instance[prop] = function (a, b, c) { return value(a)(b)(c)(); }; break; - case 'unsafeComponentWillMount': - instance['UNSAFE_componentWillMount'] = value; + case "unsafeComponentWillMount": + instance["UNSAFE_componentWillMount"] = value; break; - case 'unsafeComponentWillReceiveProps': - instance['UNSAFE_componentWillReceiveProps'] = function (a) { return value(a)(); }; + case "unsafeComponentWillReceiveProps": + instance["UNSAFE_componentWillReceiveProps"] = function (a) { return value(a)(); }; break; - case 'unsafeComponentWillUpdate': - instance['UNSAFE_componentWillUpdate'] = function (a, b) { return value(a)(b)(); }; + case "unsafeComponentWillUpdate": + instance["UNSAFE_componentWillUpdate"] = function (a, b) { return value(a)(b)(); }; break; default: - throw new Error('[purescript-react] Not a component property: ' + prop); + throw new Error("[purescript-react] Not a component property: " + prop); } } @@ -112,7 +112,7 @@ export {setStateWithCallbackImpl}; function getState(this_) { return function(){ if (!this_.state) { - throw new Error('[purescript-react] Cannot get state within constructor'); + throw new Error("[purescript-react] Cannot get state within constructor"); } return this_.state; }; From fea96d1709fe2b24e7e53f8a2143c00481e14e94 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 12:17:12 -0500 Subject: [PATCH 14/20] Drop unused 'global exports' --- src/React.js | 1 - src/React/DOM/Props.js | 1 - 2 files changed, 2 deletions(-) diff --git a/src/React.js b/src/React.js index 08bbcbf..ef51a6b 100644 --- a/src/React.js +++ b/src/React.js @@ -1,4 +1,3 @@ -/* global exports */ import React from "react"; function createClass(baseClass) { diff --git a/src/React/DOM/Props.js b/src/React/DOM/Props.js index 885ffd6..ce941aa 100644 --- a/src/React/DOM/Props.js +++ b/src/React/DOM/Props.js @@ -1,4 +1,3 @@ -/* global exports */ import React from "react"; function unsafeMkProps(key) { From 32d487d71490444a220dd98fb934ea77f6b0be4a Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 12:17:29 -0500 Subject: [PATCH 15/20] Drop use strict usage --- src/React/SyntheticEvent.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/React/SyntheticEvent.js b/src/React/SyntheticEvent.js index 0eb1233..499161e 100644 --- a/src/React/SyntheticEvent.js +++ b/src/React/SyntheticEvent.js @@ -1,5 +1,3 @@ -'use strict'; - export function preventDefault(event) { return function() { return event.preventDefault(); From d324f58da3286d501077679eb6154f50175203bb Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 12:21:13 -0500 Subject: [PATCH 16/20] Fix linting error "Do not access Object.prototype method 'hasOwnProperty' from target object" --- src/React/DOM/Props.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/React/DOM/Props.js b/src/React/DOM/Props.js index ce941aa..64e4a92 100644 --- a/src/React/DOM/Props.js +++ b/src/React/DOM/Props.js @@ -16,7 +16,7 @@ function unsafeUnfoldProps(key) { props[key] = result; for (var subprop in value) { - if (value.hasOwnProperty(subprop)) { + if (Object.hasOwnProperty.apply(value, [subprop])) { result[subprop] = value[subprop]; } } @@ -31,7 +31,7 @@ function unsafePrefixProps(prefix) { var result = {}; for (var prop in value) { - if (value.hasOwnProperty(prop)) { + if (Object.hasOwnProperty.apply(value, [prop])) { result[prefix + prop] = value[prop]; } } @@ -48,7 +48,7 @@ function unsafeFromPropsArray(props) { var prop = props[i]; for (var key in prop) { - if (prop.hasOwnProperty(key)) { + if (Object.hasOwnProperty.apply(prop, [key])) { result[key] = prop[key]; } } From 5292131259550ef0f2a8ddb42b063c5d6c3cd309 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 12:21:28 -0500 Subject: [PATCH 17/20] Remove unused React import --- src/React/DOM/Props.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/React/DOM/Props.js b/src/React/DOM/Props.js index 64e4a92..f82d507 100644 --- a/src/React/DOM/Props.js +++ b/src/React/DOM/Props.js @@ -1,5 +1,3 @@ -import React from "react"; - function unsafeMkProps(key) { return function(value){ var result = {}; From e5b8d38d0be8f72369ab3011cd2b97dd6e22ea62 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 12:22:32 -0500 Subject: [PATCH 18/20] Define componentImpl before it's used Used by createClassWithDerivedState --- src/React.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/React.js b/src/React.js index ef51a6b..d567356 100644 --- a/src/React.js +++ b/src/React.js @@ -57,6 +57,9 @@ function createClass(baseClass) { }; } +var componentImpl = createClass(React.Component); +export {componentImpl}; + function createClassWithDerivedState(classCtr) { return function(displayName) { return function(getDerivedStateFromProps) { @@ -69,8 +72,6 @@ function createClassWithDerivedState(classCtr) { }; } -var componentImpl = createClass(React.Component); -export {componentImpl}; export const componentWithDerivedStateImpl = createClassWithDerivedState(componentImpl); var pureComponentImpl = createClass(React.PureComponent); From c15e9396de0dd4960e5f66df91c724fcdda155d9 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 12:23:21 -0500 Subject: [PATCH 19/20] Disable other linting errors --- src/React.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/React.js b/src/React.js index d567356..b445652 100644 --- a/src/React.js +++ b/src/React.js @@ -43,6 +43,7 @@ function createClass(baseClass) { var Constructor = function (props) { baseClass.call(this, props); var spec = ctrFn(this)(); + // eslint-disable-next-line guard-for-in for (var k in spec) { bindProperty(this, k, spec[k]); } @@ -60,6 +61,7 @@ function createClass(baseClass) { var componentImpl = createClass(React.Component); export {componentImpl}; +// eslint-disable-next-line no-unused-vars function createClassWithDerivedState(classCtr) { return function(displayName) { return function(getDerivedStateFromProps) { From 93c7d95a276ba9ffdf5381febe9861c9427a94d2 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 12:24:39 -0500 Subject: [PATCH 20/20] Add changelog entry --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7770782..2bbf719 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ Notable changes to this project are documented in this file. The format is based ## [Unreleased] Breaking changes: +- Migrate FFI to ES modules (#185 by @JordanMartinez) +- Replaced polymorphic proxies with monomorphic `Proxy` (#185 by @JordanMartinez) New features: