diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..b583bf6
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,11 @@
+{
+ "presets": [
+ [
+ "@babel/preset-react",
+ {
+ "runtime": "automatic",
+ "importSource": "@emotion/react"
+ }
+ ]
+ ]
+}
diff --git a/.eslintrc.js b/.eslintrc.js
index c29171a..f928a91 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -9,5 +9,9 @@ module.exports = {
react: {
version: "detect"
}
+ },
+ rules: {
+ "react/jsx-uses-react": "off",
+ "react/react-in-jsx-scope": "off"
}
};
diff --git a/example/components/Section.tsx b/example/components/Section.tsx
index 7b89208..03d9018 100644
--- a/example/components/Section.tsx
+++ b/example/components/Section.tsx
@@ -1,19 +1,15 @@
-import * as React from "react";
-
-const Section: React.FC = ({ children }) => {
- return (
-
- );
-};
+const Section: React.FC = ({ children }) => (
+
+);
export default Section;
diff --git a/example/index.tsx b/example/index.tsx
index d780ac8..02f28d7 100644
--- a/example/index.tsx
+++ b/example/index.tsx
@@ -1,5 +1,3 @@
-import "react-app-polyfill/ie11";
-import * as React from "react";
import * as ReactDOM from "react-dom";
import Fade from "../src/components/Fade";
diff --git a/example/package.json b/example/package.json
index b0fbe1c..54ebaf8 100644
--- a/example/package.json
+++ b/example/package.json
@@ -8,8 +8,7 @@
"build": "parcel build index.html"
},
"dependencies": {
- "components": "^0.1.0",
- "react-app-polyfill": "^1.0.6"
+ "components": "^0.1.0"
},
"alias": {
"react": "../node_modules/react",
@@ -17,9 +16,10 @@
"scheduler/tracing": "../node_modules/scheduler/tracing-profiling"
},
"devDependencies": {
+ "@babel/core": "^7.12.10",
"@types/react": "^16.9.49",
"@types/react-dom": "^16.9.8",
"parcel": "^1.12.4",
- "typescript": "^3.9.7"
+ "typescript": "^4.1.3"
}
}
diff --git a/example/tsconfig.dev.json b/example/tsconfig.dev.json
new file mode 100644
index 0000000..91873fa
--- /dev/null
+++ b/example/tsconfig.dev.json
@@ -0,0 +1,6 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "jsx": "react-jsxdev"
+ }
+}
diff --git a/example/tsconfig.json b/example/tsconfig.json
index 6d51867..7f0435d 100644
--- a/example/tsconfig.json
+++ b/example/tsconfig.json
@@ -3,7 +3,7 @@
"allowSyntheticDefaultImports": false,
"target": "es5",
"module": "commonjs",
- "jsx": "react",
+ "jsx": "react-jsx",
"moduleResolution": "node",
"noImplicitAny": false,
"noUnusedLocals": false,
diff --git a/example/yarn.lock b/example/yarn.lock
index 7f49d63..b2732f4 100644
--- a/example/yarn.lock
+++ b/example/yarn.lock
@@ -14,7 +14,7 @@
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41"
integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==
-"@babel/core@^7.4.4":
+"@babel/core@^7.12.10", "@babel/core@^7.4.4":
version "7.12.10"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
@@ -1043,11 +1043,6 @@ array-unique@^0.3.2:
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-asap@~2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
- integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
-
asn1.js@^5.2.0:
version "5.4.1"
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
@@ -1632,11 +1627,6 @@ core-js@^2.4.0, core-js@^2.6.5:
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
-core-js@^3.5.0:
- version "3.8.2"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.2.tgz#0a1fd6709246da9ca8eff5bb0cbd15fba9ac7044"
- integrity sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A==
-
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@@ -4097,13 +4087,6 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
-promise@^8.0.3:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e"
- integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==
- dependencies:
- asap "~2.0.6"
-
psl@^1.1.28:
version "1.8.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
@@ -4175,13 +4158,6 @@ quote-stream@^1.0.1, quote-stream@~1.0.2:
minimist "^1.1.3"
through2 "^2.0.0"
-raf@^3.4.1:
- version "3.4.1"
- resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
- integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
- dependencies:
- performance-now "^2.1.0"
-
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@@ -4202,18 +4178,6 @@ range-parser@~1.2.1:
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-react-app-polyfill@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0"
- integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g==
- dependencies:
- core-js "^3.5.0"
- object-assign "^4.1.1"
- promise "^8.0.3"
- raf "^3.4.1"
- regenerator-runtime "^0.13.3"
- whatwg-fetch "^3.0.0"
-
readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3, readable-stream@~2.3.6:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
@@ -4262,7 +4226,7 @@ regenerator-runtime@^0.11.0:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
-regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4:
+regenerator-runtime@^0.13.4:
version "0.13.7"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
@@ -4959,10 +4923,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typescript@^3.9.7:
- version "3.9.7"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa"
- integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==
+typescript@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7"
+ integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==
uncss@^0.17.3:
version "0.17.3"
@@ -5171,11 +5135,6 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5:
dependencies:
iconv-lite "0.4.24"
-whatwg-fetch@^3.0.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz#605a2cd0a7146e5db141e29d1c62ab84c0c4c868"
- integrity sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A==
-
whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
diff --git a/package.json b/package.json
index e336635..6a765df 100644
--- a/package.json
+++ b/package.json
@@ -63,6 +63,8 @@
}
],
"devDependencies": {
+ "@babel/core": "^7.12.10",
+ "@babel/preset-react": "^7.12.10",
"@emotion/eslint-plugin": "^11.0.0",
"@size-limit/preset-small-lib": "^4.8.0",
"@types/jest": "^26.0.15",
@@ -74,12 +76,17 @@
"react-dom": "^17.0.1",
"size-limit": "^4.8.0",
"tsdx": "^0.14.1",
- "tslib": "^2.0.3",
- "typescript": "^3.9.7"
+ "tslib": "^2.1.0",
+ "typescript": "^4.1.3"
},
"dependencies": {
"@emotion/react": "^11.1.4",
"react-intersection-observer": "^8.31.0",
"react-is": "^17.0.1"
+ },
+ "resolutions": {
+ "**/typescript": "^4.1.3",
+ "**/@typescript-eslint/eslint-plugin": "^4.13.0",
+ "**/@typescript-eslint/parser": "^4.13.0"
}
}
diff --git a/src/Reveal.tsx b/src/Reveal.tsx
index 1e0b068..a68a149 100644
--- a/src/Reveal.tsx
+++ b/src/Reveal.tsx
@@ -1,5 +1,4 @@
-/** @jsx jsx */
-import * as React from "react";
+import { Children, FC } from "react";
import { isFragment } from "react-is";
import { ClassNames, Interpolation, Theme, css, jsx } from "@emotion/react";
import { Keyframes } from "@emotion/serialize";
@@ -84,7 +83,7 @@ export interface RevealProps {
onVisibilityChange?(inView: boolean, entry: IntersectionObserverEntry): void;
}
-const Reveal: React.FC = ({
+const Reveal: FC = ({
cascade = false,
damping = 0.5,
delay = 0,
@@ -185,8 +184,8 @@ const Reveal: React.FC = ({
}
return (
-
- {React.Children.map(children, (node, index) => {
+ <>
+ {Children.map(children, (node, index) => {
const nodeElement = node as React.ReactElement;
const nodeCss: Interpolation[] = nodeElement.props.css
? [nodeElement.props.css]
@@ -206,9 +205,10 @@ const Reveal: React.FC = ({
return (
{({ cx }) =>
- React.cloneElement(
- nodeElement,
+ jsx(
+ nodeElement.type,
{
+ ...nodeElement.props,
className: cx(className, nodeElement.props.className),
style: { ...style, ...nodeElement.props.style }
},
@@ -289,7 +289,7 @@ const Reveal: React.FC = ({
);
}
})}
-
+ >
);
};
diff --git a/src/components/AttentionSeeker.tsx b/src/components/AttentionSeeker.tsx
index a23431d..4684fa3 100644
--- a/src/components/AttentionSeeker.tsx
+++ b/src/components/AttentionSeeker.tsx
@@ -1,4 +1,3 @@
-import * as React from "react";
import { Interpolation, Theme } from "@emotion/react";
import { Keyframes } from "@emotion/serialize";
@@ -34,7 +33,7 @@ type AttentionSeekerEffect =
| "tada"
| "wobble";
-interface AttentionSeekerProps extends Omit {
+interface AttentionSeekerProps extends Omit {
/**
* The animation effect to use for this attention seeker.
* @default "bounce"
@@ -78,12 +77,11 @@ function getAttentionSeekerKeyframesAndCss(
const AttentionSeeker: React.FC = ({
effect = "bounce",
- css,
- ...rest
+ ...otherProps
}) => {
const [keyframes, animationCss] = getAttentionSeekerKeyframesAndCss(effect);
- return ;
+ return ;
};
export default AttentionSeeker;
diff --git a/src/components/Bounce.tsx b/src/components/Bounce.tsx
index 393525b..936522d 100644
--- a/src/components/Bounce.tsx
+++ b/src/components/Bounce.tsx
@@ -1,5 +1,3 @@
-import * as React from "react";
-
import Reveal, { RevealProps } from "../Reveal";
import {
bounceIn,
@@ -18,7 +16,7 @@ import {
type BounceDirection = "down" | "left" | "right" | "up";
-interface BounceProps extends Omit {
+interface BounceProps extends Omit {
/**
* Origin of the animation.
* @default undefined
@@ -49,10 +47,13 @@ function getBounceKeyframes(reverse: boolean, direction?: BounceDirection) {
const Bounce: React.FC = ({
direction,
reverse = false,
- ...rest
+ ...otherProps
}) => {
return (
-
+
);
};
diff --git a/src/components/Fade.tsx b/src/components/Fade.tsx
index 925c88d..5a26d55 100644
--- a/src/components/Fade.tsx
+++ b/src/components/Fade.tsx
@@ -1,5 +1,3 @@
-import * as React from "react";
-
import Reveal, { RevealProps } from "../Reveal";
import {
fadeIn,
@@ -42,7 +40,7 @@ type FadeDirection =
| "top-right"
| "up";
-interface FadeProps extends Omit {
+interface FadeProps extends Omit {
/**
* Causes the animation to start farther. Only works with "down", "left", "right" and "up" directions.
* @default false
@@ -115,10 +113,13 @@ const Fade: React.FC = ({
big = false,
direction,
reverse = false,
- ...rest
+ ...otherProps
}) => {
return (
-
+
);
};
diff --git a/src/components/Flip.tsx b/src/components/Flip.tsx
index 3e98722..8de2040 100644
--- a/src/components/Flip.tsx
+++ b/src/components/Flip.tsx
@@ -1,4 +1,3 @@
-import * as React from "react";
import { Interpolation, Theme } from "@emotion/react";
import Reveal, { RevealProps } from "../Reveal";
@@ -12,7 +11,7 @@ import {
type FlipDirection = "horizontal" | "vertical";
-interface FlipProps extends Omit {
+interface FlipProps extends Omit {
/**
* Axis direction of the animation.
* @default undefined
@@ -39,16 +38,15 @@ function getFlipKeyframes(reverse: boolean, direction?: FlipDirection) {
const Flip: React.FC = ({
direction,
reverse = false,
- css,
- ...rest
+ ...otherProps
}) => {
const animationCss: Interpolation = { backfaceVisibility: "visible" };
return (
);
};
diff --git a/src/components/Hinge.tsx b/src/components/Hinge.tsx
index d88836d..f9e9a2c 100644
--- a/src/components/Hinge.tsx
+++ b/src/components/Hinge.tsx
@@ -1,15 +1,14 @@
-import * as React from "react";
import { Interpolation, Theme } from "@emotion/react";
import Reveal, { RevealProps } from "../Reveal";
import { hinge } from "../animations/specials";
-type HingeProps = Omit;
+type HingeProps = Omit;
-const Hinge: React.FC = ({ css, ...rest }) => {
+const Hinge: React.FC = props => {
const animationCss: Interpolation = { transformOrigin: "top left" };
- return ;
+ return ;
};
export default Hinge;
diff --git a/src/components/JackInTheBox.tsx b/src/components/JackInTheBox.tsx
index 65d45ae..9b032d5 100644
--- a/src/components/JackInTheBox.tsx
+++ b/src/components/JackInTheBox.tsx
@@ -1,9 +1,7 @@
-import * as React from "react";
-
import Reveal, { RevealProps } from "../Reveal";
import { jackInTheBox } from "../animations/specials";
-type JackInTheBoxProps = Omit;
+type JackInTheBoxProps = Omit;
const JackInTheBox: React.FC = props => {
return ;
diff --git a/src/components/Roll.tsx b/src/components/Roll.tsx
index 139cb95..55cbe49 100644
--- a/src/components/Roll.tsx
+++ b/src/components/Roll.tsx
@@ -1,9 +1,7 @@
-import * as React from "react";
-
import Reveal, { RevealProps } from "../Reveal";
import { rollIn, rollOut } from "../animations/specials";
-interface RollProps extends Omit {
+interface RollProps extends Omit {
/**
* Specifies if the animation should make element(s) disappear.
* @default false
@@ -15,8 +13,8 @@ function getRollKeyframes(reverse: boolean) {
return reverse ? rollOut : rollIn;
}
-const Roll: React.FC = ({ reverse = false, ...rest }) => {
- return ;
+const Roll: React.FC = ({ reverse = false, ...otherProps }) => {
+ return ;
};
export default Roll;
diff --git a/src/components/Rotate.tsx b/src/components/Rotate.tsx
index 94dcc5d..08a7f18 100644
--- a/src/components/Rotate.tsx
+++ b/src/components/Rotate.tsx
@@ -1,4 +1,3 @@
-import * as React from "react";
import { Interpolation, Theme } from "@emotion/react";
import { Keyframes } from "@emotion/serialize";
@@ -24,7 +23,7 @@ type RotateDirection =
| "top-left"
| "top-right";
-interface RotateProps extends Omit {
+interface RotateProps extends Omit {
/**
* Origin of the animation.
* @default undefined
@@ -68,15 +67,14 @@ function getRotateKeyframesAndCss(
const Rotate: React.FC = ({
direction,
reverse = false,
- css,
- ...rest
+ ...otherProps
}) => {
const [keyframes, animationCss] = getRotateKeyframesAndCss(
reverse,
direction
);
- return ;
+ return ;
};
export default Rotate;
diff --git a/src/components/Slide.tsx b/src/components/Slide.tsx
index 9e9b1b4..182d8d1 100644
--- a/src/components/Slide.tsx
+++ b/src/components/Slide.tsx
@@ -1,5 +1,3 @@
-import * as React from "react";
-
import Reveal, { RevealProps } from "../Reveal";
import {
slideInDown,
@@ -16,7 +14,7 @@ import {
type SlideDirection = "down" | "left" | "right" | "up";
-interface SlideProps extends Omit {
+interface SlideProps extends Omit {
/**
* Origin of the animation.
* @default undefined
@@ -46,9 +44,11 @@ function getSlideKeyframes(reverse: boolean, direction?: SlideDirection) {
const Slide: React.FC = ({
direction,
reverse = false,
- ...rest
+ ...otherProps
}) => {
- return ;
+ return (
+
+ );
};
export default Slide;
diff --git a/src/components/Zoom.tsx b/src/components/Zoom.tsx
index 1579dad..bbafa8d 100644
--- a/src/components/Zoom.tsx
+++ b/src/components/Zoom.tsx
@@ -1,5 +1,3 @@
-import * as React from "react";
-
import Reveal, { RevealProps } from "../Reveal";
import {
zoomIn,
@@ -18,7 +16,7 @@ import {
type ZoomDirection = "down" | "left" | "right" | "up";
-interface ZoomProps extends Omit {
+interface ZoomProps extends Omit {
/**
* Origin of the animation.
* @default undefined
@@ -46,8 +44,14 @@ function getZoomKeyframes(reverse: boolean, direction?: ZoomDirection) {
}
}
-const Zoom: React.FC = ({ direction, reverse = false, ...rest }) => {
- return ;
+const Zoom: React.FC = ({
+ direction,
+ reverse = false,
+ ...otherProps
+}) => {
+ return (
+
+ );
};
export default Zoom;
diff --git a/tsconfig.json b/tsconfig.json
index 2d7419f..61a553e 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,6 +1,6 @@
{
// see https://www.typescriptlang.org/tsconfig to better understand tsconfigs
- "include": ["src", "types"],
+ "include": ["src"],
"compilerOptions": {
"module": "esnext",
"lib": ["dom", "esnext"],
@@ -21,8 +21,9 @@
"noUnusedParameters": true,
// use Node's module resolution algorithm, instead of the legacy TS one
"moduleResolution": "node",
- // transpile JSX to React.createElement
- "jsx": "react",
+ // don't transpile JSX to React.createElement (we use the Emotion JSX transform handled by Babel)
+ "jsx": "preserve",
+ "jsxImportSource": "@emotion/react",
// interop between ESM and CJS modules. Recommended by TS
"esModuleInterop": true,
// significant perf increase by skipping checking .d.ts files, particularly those in node_modules. Recommended by TS
diff --git a/yarn.lock b/yarn.lock
index ef7536e..7e38c70 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -14,7 +14,7 @@
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41"
integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==
-"@babel/core@^7.1.0", "@babel/core@^7.4.4", "@babel/core@^7.7.5":
+"@babel/core@^7.1.0", "@babel/core@^7.12.10", "@babel/core@^7.4.4", "@babel/core@^7.7.5":
version "7.12.10"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
@@ -44,7 +44,7 @@
jsesc "^2.5.1"
source-map "^0.5.0"
-"@babel/helper-annotate-as-pure@^7.10.4":
+"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.10":
version "7.12.10"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d"
integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==
@@ -421,6 +421,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
+"@babel/plugin-syntax-jsx@^7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926"
+ integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
@@ -654,6 +661,39 @@
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
+"@babel/plugin-transform-react-display-name@^7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d"
+ integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-react-jsx-development@^7.12.7":
+ version "7.12.12"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.12.tgz#bccca33108fe99d95d7f9e82046bfe762e71f4e7"
+ integrity sha512-i1AxnKxHeMxUaWVXQOSIco4tvVvvCxMSfeBMnMM06mpaJt3g+MpxYQQrDfojUQldP1xxraPSJYSMEljoWM/dCg==
+ dependencies:
+ "@babel/plugin-transform-react-jsx" "^7.12.12"
+
+"@babel/plugin-transform-react-jsx@^7.12.10", "@babel/plugin-transform-react-jsx@^7.12.12":
+ version "7.12.12"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.12.tgz#b0da51ffe5f34b9a900e9f1f5fb814f9e512d25e"
+ integrity sha512-JDWGuzGNWscYcq8oJVCtSE61a5+XAOos+V0HrxnDieUus4UMnBEosDnY1VJqU5iZ4pA04QY7l0+JvHL1hZEfsw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.10"
+ "@babel/helper-module-imports" "^7.12.5"
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-jsx" "^7.12.1"
+ "@babel/types" "^7.12.12"
+
+"@babel/plugin-transform-react-pure-annotations@^7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42"
+ integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+
"@babel/plugin-transform-regenerator@^7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753"
@@ -802,6 +842,17 @@
"@babel/types" "^7.4.4"
esutils "^2.0.2"
+"@babel/preset-react@^7.12.10":
+ version "7.12.10"
+ resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.10.tgz#4fed65f296cbb0f5fb09de6be8cddc85cc909be9"
+ integrity sha512-vtQNjaHRl4DUpp+t+g4wvTHsLQuye+n0H/wsXIZRn69oz/fvNC7gQ4IK73zGJBaxvHoxElDvnYCthMcT7uzFoQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-transform-react-display-name" "^7.12.1"
+ "@babel/plugin-transform-react-jsx" "^7.12.10"
+ "@babel/plugin-transform-react-jsx-development" "^7.12.7"
+ "@babel/plugin-transform-react-pure-annotations" "^7.12.1"
+
"@babel/runtime-corejs3@^7.10.2":
version "7.12.5"
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz#ffee91da0eb4c6dae080774e94ba606368e414f4"
@@ -1278,11 +1329,6 @@
dependencies:
"@babel/types" "^7.3.0"
-"@types/eslint-visitor-keys@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d"
- integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==
-
"@types/estree@*":
version "0.0.46"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe"
@@ -1429,49 +1475,77 @@
dependencies:
"@types/yargs-parser" "*"
-"@typescript-eslint/eslint-plugin@^2.12.0":
- version "2.34.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9"
- integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==
+"@typescript-eslint/eslint-plugin@^2.12.0", "@typescript-eslint/eslint-plugin@^4.13.0":
+ version "4.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.13.0.tgz#5f580ea520fa46442deb82c038460c3dd3524bb6"
+ integrity sha512-ygqDUm+BUPvrr0jrXqoteMqmIaZ/bixYOc3A4BRwzEPTZPi6E+n44rzNZWaB0YvtukgP+aoj0i/fyx7FkM2p1w==
dependencies:
- "@typescript-eslint/experimental-utils" "2.34.0"
+ "@typescript-eslint/experimental-utils" "4.13.0"
+ "@typescript-eslint/scope-manager" "4.13.0"
+ debug "^4.1.1"
functional-red-black-tree "^1.0.1"
+ lodash "^4.17.15"
regexpp "^3.0.0"
+ semver "^7.3.2"
tsutils "^3.17.1"
-"@typescript-eslint/experimental-utils@2.34.0":
- version "2.34.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f"
- integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==
+"@typescript-eslint/experimental-utils@4.13.0":
+ version "4.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.13.0.tgz#9dc9ab375d65603b43d938a0786190a0c72be44e"
+ integrity sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw==
dependencies:
"@types/json-schema" "^7.0.3"
- "@typescript-eslint/typescript-estree" "2.34.0"
+ "@typescript-eslint/scope-manager" "4.13.0"
+ "@typescript-eslint/types" "4.13.0"
+ "@typescript-eslint/typescript-estree" "4.13.0"
eslint-scope "^5.0.0"
eslint-utils "^2.0.0"
-"@typescript-eslint/parser@^2.12.0":
- version "2.34.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8"
- integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==
+"@typescript-eslint/parser@^2.12.0", "@typescript-eslint/parser@^4.13.0":
+ version "4.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.13.0.tgz#c413d640ea66120cfcc37f891e8cb3fd1c9d247d"
+ integrity sha512-KO0J5SRF08pMXzq9+abyHnaGQgUJZ3Z3ax+pmqz9vl81JxmTTOUfQmq7/4awVfq09b6C4owNlOgOwp61pYRBSg==
dependencies:
- "@types/eslint-visitor-keys" "^1.0.0"
- "@typescript-eslint/experimental-utils" "2.34.0"
- "@typescript-eslint/typescript-estree" "2.34.0"
- eslint-visitor-keys "^1.1.0"
+ "@typescript-eslint/scope-manager" "4.13.0"
+ "@typescript-eslint/types" "4.13.0"
+ "@typescript-eslint/typescript-estree" "4.13.0"
+ debug "^4.1.1"
-"@typescript-eslint/typescript-estree@2.34.0":
- version "2.34.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5"
- integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==
+"@typescript-eslint/scope-manager@4.13.0":
+ version "4.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.13.0.tgz#5b45912a9aa26b29603d8fa28f5e09088b947141"
+ integrity sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ==
dependencies:
+ "@typescript-eslint/types" "4.13.0"
+ "@typescript-eslint/visitor-keys" "4.13.0"
+
+"@typescript-eslint/types@4.13.0":
+ version "4.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.13.0.tgz#6a7c6015a59a08fbd70daa8c83dfff86250502f8"
+ integrity sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ==
+
+"@typescript-eslint/typescript-estree@4.13.0":
+ version "4.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz#cf6e2207c7d760f5dfd8d18051428fadfc37b45e"
+ integrity sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg==
+ dependencies:
+ "@typescript-eslint/types" "4.13.0"
+ "@typescript-eslint/visitor-keys" "4.13.0"
debug "^4.1.1"
- eslint-visitor-keys "^1.1.0"
- glob "^7.1.6"
+ globby "^11.0.1"
is-glob "^4.0.1"
lodash "^4.17.15"
semver "^7.3.2"
tsutils "^3.17.1"
+"@typescript-eslint/visitor-keys@4.13.0":
+ version "4.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.13.0.tgz#9acb1772d3b3183182b6540d3734143dce9476fe"
+ integrity sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g==
+ dependencies:
+ "@typescript-eslint/types" "4.13.0"
+ eslint-visitor-keys "^2.0.0"
+
"@webassemblyjs/ast@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
@@ -3609,6 +3683,11 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+eslint-visitor-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
+ integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
+
eslint@^6.1.0:
version "6.8.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb"
@@ -4252,7 +4331,7 @@ glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0:
dependencies:
is-glob "^4.0.1"
-glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
+glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
version "7.1.6"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
@@ -8635,7 +8714,7 @@ tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.0.3:
+tslib@^2.0.3, tslib@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
@@ -8711,10 +8790,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typescript@^3.7.3, typescript@^3.9.7:
- version "3.9.7"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa"
- integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==
+typescript@^3.7.3, typescript@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7"
+ integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==
unicode-canonical-property-names-ecmascript@^1.0.4:
version "1.0.4"