Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
purescript-reactix
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
purescript-reactix
Commits
a0fd43e7
Commit
a0fd43e7
authored
Jun 23, 2019
by
James Laver
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
yarn.lock
parent
624dc8ca
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
293 additions
and
51 deletions
+293
-51
React.purs
src/Reactix/React.purs
+41
-29
Spec.purs
test/Reactix/React/Spec.purs
+145
-18
yarn.lock
yarn.lock
+107
-4
No files found.
src/Reactix/React.purs
View file @
a0fd43e7
module Reactix.React
module Reactix.React
( React, react
( React, react
, ReactDOM, reactDOM
, ReactDOM, reactDOM
, render
, Element
, Element
, Hooks, unsafeHooksEffect, runHooks
, Hooks, unsafeHooksEffect, runHooks
, Context, Provider, Consumer, createContext, provider, consumer, consume
, Context, createContext, provideContext, consumeContext
, render
, Provider, provider, provide
, Consumer, consumer, consume
, createPortal
, createPortal
, class IsComponent
, class IsComponent
, Component, createElement
, Component, createElement
, createDOMElement
, staticComponent, hooksComponent
, staticComponent, hooksComponent
, fragment
, fragment
...
@@ -23,17 +24,18 @@ module Reactix.React
...
@@ -23,17 +24,18 @@ module Reactix.React
import Prelude
import Prelude
import Data.Function.Uncurried (mkFn2)
import Data.Function.Uncurried (mkFn2)
import Data.Maybe (
Maybe
)
import Data.Maybe (
Maybe, maybe
)
import Data.Nullable (
Nullable, toMaybe
)
import Data.Nullable (
Nullable, toMaybe
)
import Effect (
Effect
)
import Effect (
Effect
)
import Effect.Class (
class MonadEffect, liftEffect
)
import Effect.Class (
class MonadEffect, liftEffect
)
import Effect.Uncurried (EffectFn1, mkEffectFn1, EffectFn2)
import Effect.Uncurried (EffectFn1, mkEffectFn1, EffectFn2)
import Unsafe.Coerce (unsafeCoerce)
import Unsafe.Coerce (unsafeCoerce)
import Prim.Row (class Lacks)
import Prim.Row (class Lacks)
import DOM.Simple as DOM
import DOM.Simple as DOM
import FFI.Simple.PseudoArray as PA
import FFI.Simple.PseudoArray as PA
import FFI.Simple
import FFI.Simple
( (..), (...), args2, args3, delay, setProperty, defineProperty )
( (..), (...), (.=), args2, args3, delay, setProperty, defineProperty )
import FFI.Simple.Undef (nullUndef)
foreign import data React :: Type
foreign import data React :: Type
foreign import data ReactDOM :: Type
foreign import data ReactDOM :: Type
...
@@ -71,21 +73,20 @@ instance monadHooks :: Monad Hooks
...
@@ -71,21 +73,20 @@ instance monadHooks :: Monad Hooks
unsafeHooksEffect :: forall a. Effect a -> Hooks a
unsafeHooksEffect :: forall a. Effect a -> Hooks a
unsafeHooksEffect = Hooks
unsafeHooksEffect = Hooks
class IsComponent component (props :: # Type) children
type DOMProps = ()
| component -> props
, component -> children
instance componentIsComponent :: IsComponent (Component props) props (Array Element)
instance memoIsComponent :: IsComponent (Memo props) props (Array Element)
instance stringIsComponent :: IsComponent String props (Array Element)
instance providerIsComponent :: IsComponent (Provider v) (value :: v) (Array Element)
instance consumerIsComponent :: IsComponent (Consumer v) () (v -> Element)
createElement
class IsComponent component (props :: # Type) children
:: forall component props
| component -> props, component -> children where
. IsComponent component props (Array Element)
createElement :: component -> Record props -> children -> Element
=> component -> Record props -> Array Element -> Element
createElement = rawCreateElement
instance componentIsComponent :: IsComponent (Component props) props (Array Element) where
createElement = rawCreateElement
instance memoIsComponent :: IsComponent (Memo props) props (Array Element) where
createElement = rawCreateElement
instance providerIsComponent :: IsComponent (Provider v) (value :: v) (Array Element) where
createElement = rawCreateElement
instance consumerIsComponent :: IsComponent (Consumer v) () (v -> Element) where
createElement c p cs = rawCreateElement c p [cs]
-- Component building
-- Component building
...
@@ -116,6 +117,9 @@ rawCreateElement :: forall c p cs. c -> p -> Array cs -> Element
...
@@ -116,6 +117,9 @@ rawCreateElement :: forall c p cs. c -> p -> Array cs -> Element
rawCreateElement c p cs = react ... "createElement" $ args
rawCreateElement c p cs = react ... "createElement" $ args
where args = PA.unshift c $ PA.unshift p cs
where args = PA.unshift c $ PA.unshift p cs
createDOMElement :: forall r. String -> Record r -> Array Element -> Element
createDOMElement = rawCreateElement
-- Element cloning
-- Element cloning
-- | Clones an element. Quite unsafe because tripping through Element
-- | Clones an element. Quite unsafe because tripping through Element
...
@@ -139,7 +143,7 @@ instance monoidElement :: Monoid Element where
...
@@ -139,7 +143,7 @@ instance monoidElement :: Monoid Element where
-- | Renders a React Element to a real Element
-- | Renders a React Element to a real Element
render :: Element -> DOM.Element -> Effect Unit
render :: Element -> DOM.Element -> Effect Unit
render e d = delay unit $ \_ -> react ... "render" $ args2 e d
render e d = delay unit $ \_ -> react
DOM
... "render" $ args2 e d
createPortal :: Array Element -> DOM.Element -> Element
createPortal :: Array Element -> DOM.Element -> Element
createPortal es e = reactDOM ... "createPortal" $ args2 es e
createPortal es e = reactDOM ... "createPortal" $ args2 es e
...
@@ -180,18 +184,28 @@ createContext v = react ... "createContext" $ [v]
...
@@ -180,18 +184,28 @@ createContext v = react ... "createContext" $ [v]
provider :: forall v. Context v -> Provider v
provider :: forall v. Context v -> Provider v
provider c = c .. "Provider"
provider c = c .. "Provider"
provide :: forall v. Provider v -> v -> Array Element -> Element
provide p v = rawCreateElement p { value: v }
provideContext :: forall v. Context v -> v -> Array Element -> Element
provideContext c = provide (provider c)
consumer :: forall v. Context v -> Consumer v
consumer :: forall v. Context v -> Consumer v
consumer c = c .. "Consumer"
consumer c = c .. "Consumer"
consume :: forall v. Con
text
v -> (v -> Element) -> Element
consume :: forall v. Con
sumer
v -> (v -> Element) -> Element
consume c f = rawCreateElement c {} [f]
consume c f = rawCreateElement c {} [f]
consumeContext :: forall v. Context v -> (v -> Element) -> Element
consumeContext c = consume (consumer c)
-- Ref creation
-- Ref creation
foreign import data Ref :: Type -> Type
foreign import data Ref :: Type -> Type
createRef :: forall r. Unit -> Ref (Nullable r)
type NullableRef r = Ref (Nullable r)
createRef :: forall r. Unit -> NullableRef r
createRef _ = react ... "createRef" $ []
createRef _ = react ... "createRef" $ []
readRef :: forall r. Ref r -> r
readRef :: forall r. Ref r -> r
...
@@ -201,9 +215,7 @@ readNullableRef :: forall r. Ref (Nullable r) -> Maybe r
...
@@ -201,9 +215,7 @@ readNullableRef :: forall r. Ref (Nullable r) -> Maybe r
readNullableRef r = toMaybe $ r .. "current"
readNullableRef r = toMaybe $ r .. "current"
setRef :: forall r. Ref r -> r -> Effect Unit
setRef :: forall r. Ref r -> r -> Effect Unit
setRef r v = delay unit $ \_ -> do
setRef r v = delay unit $ \_ -> (pure $ r .= "current" $ v) *> pure unit
_ <- pure $ setProperty "current" r v
pure unit
-- Ref Forwarding
-- Ref Forwarding
...
...
test/Reactix/React/Spec.purs
View file @
a0fd43e7
...
@@ -3,6 +3,7 @@ module Reactix.React.Spec where
...
@@ -3,6 +3,7 @@ module Reactix.React.Spec where
import Prelude
import Prelude
import Data.Array as A
import Data.Array as A
import Data.Array ( (!!) )
import Data.Array ( (!!) )
import Data.EuclideanRing (mod)
import Data.Maybe ( Maybe(..) )
import Data.Maybe ( Maybe(..) )
import Data.Traversable ( traverse, traverse_, sequence_ )
import Data.Traversable ( traverse, traverse_, sequence_ )
import Data.Tuple ( Tuple(..) )
import Data.Tuple ( Tuple(..) )
...
@@ -84,6 +85,55 @@ counterTest =
...
@@ -84,6 +85,55 @@ counterTest =
A.length children4 `shouldEqual` 2
A.length children4 `shouldEqual` 2
(Element.innerHTML <$> children4) `shouldEqual` ["++", "2"]
(Element.innerHTML <$> children4) `shouldEqual` ["++", "2"]
data BicounterOp = Inc | Dec
-- No bi erasure here
bicounterCpt :: R.Component CounterProps
bicounterCpt = R.hooksComponent "Bicounter" cpt
where
cpt {count} _ = do
y /\ reduceY <- R.useReducer' reduce count
pure $ div { className: "counter" }
[ button { type: "button", onClick: onclick reduceY Inc } [ text "++" ]
, button { type: "button", onClick: onclick reduceY Dec } [ text "--" ]
, div {} [ text (show y) ] ]
onclick reducer with = mkEffectFn1 $ \_ -> reducer with
reduce count Inc = count + 1
reduce count Dec = count - 1
bicounterTest :: Spec Unit
bicounterTest =
describe "Bicounter" do
it "Works for plain components" $ do
let counter = R.createElement bicounterCpt {count: 0} []
liftEffect (RT.render counter) >>= test
it "Works for memoised components" $ do
let counter = R.createElement (R.memo bicounterCpt (==)) {count: 0} []
liftEffect (RT.render counter) >>= test
it "works for memo'ised components" $ do
let counter = R.createElement (R.memo' bicounterCpt) {count: 0} []
liftEffect (RT.render counter) >>= test
where
test root = do
let children = Element.children root.container
A.length children `shouldEqual` 1
let children2 = children >>= Element.children
A.length children2 `shouldEqual` 3
(Element.name <$> children2) `shouldEqual` ["BUTTON", "BUTTON", "DIV"]
(Element.innerHTML <$> children2) `shouldEqual` ["++", "--", "0"]
liftEffect $ traverse_ RT.fireClick (children2 !! 0)
let children3 = Element.children root.container >>= Element.children
A.length children3 `shouldEqual` 3
(Element.innerHTML <$> children3) `shouldEqual` ["++", "--", "1"]
liftEffect $ traverse_ RT.fireClick (children3 !! 0)
let children4 = Element.children root.container >>= Element.children
A.length children4 `shouldEqual` 3
(Element.innerHTML <$> children4) `shouldEqual` ["++", "--", "2"]
liftEffect $ traverse_ RT.fireClick (children4 !! 1)
let children5 = Element.children root.container >>= Element.children
A.length children5 `shouldEqual` 3
(Element.innerHTML <$> children4) `shouldEqual` ["++", "--", "1"]
data EffectorState = Fresh | Initialised | Done
data EffectorState = Fresh | Initialised | Done
derive instance eqEffectorState :: Eq EffectorState
derive instance eqEffectorState :: Eq EffectorState
...
@@ -151,26 +201,101 @@ layoutEffectorTest =
...
@@ -151,26 +201,101 @@ layoutEffectorTest =
state' <- liftEffect $ Ref.read ref
state' <- liftEffect $ Ref.read ref
state' `shouldEqual` Done
state' `shouldEqual` Done
type ContextProps = ()
data Theme = Dark | Light
showTheme :: Maybe Theme -> String
showTheme Nothing = "none"
showTheme (Just Dark) = "dark"
showTheme (Just Light) = "light"
-- contextualCpt :: R.Component ContextProps
type ThemedProps = ( theme :: R.Context (Maybe Theme) )
-- contextualCpt = R.hooksComponent "Contextual" cpt
type ThemeChooserProps = ( )
-- where cpt {stateRef} _ = do
-- R.useEffect $ \_ -> do
themedCpt :: R.Component ThemedProps
-- Ref.write Initialised stateRef
themedCpt = R.hooksComponent "Themed" cpt
-- pure $ \_ -> Ref.write Done stateRef
where
-- pure $ div {} []
cpt {theme} _ = do
theme' <- R.useContext theme
pure $ div {} [ text (showTheme theme') ]
-- contextTest :: Spec Unit
themeChooserCpt :: R.Component ThemeChooserProps
-- contextTest =
themeChooserCpt = R.hooksComponent "ThemeChooser" cpt
-- describe "Context" do
where
cpt props _ = do
theme /\ setTheme <- R.useState' $ Nothing
ref <- R.useRef $ R.createContext Nothing
let context = R.readRef ref
pure $
div {}
[ button { type: "button", onClick: onclick setTheme Nothing } [ text "None" ]
, button { type: "button", onClick: onclick setTheme (Just Dark) } [ text "Dark" ]
, button { type: "button", onClick: onclick setTheme (Just Light) } [ text "Light" ]
, R.provideContext context theme [ R.createElement themedCpt { theme: context } [] ] ]
onclick setTheme theme = mkEffectFn1 $ \_ -> setTheme theme
themeChooserTest :: Spec Unit
themeChooserTest =
describe "ThemeChooser" do
it "Works for plain components" $ do
let themeChooser = R.createElement themeChooserCpt {} []
liftEffect (RT.render themeChooser) >>= test
where
test root = do
let children = Element.children root.container
A.length children `shouldEqual` 1
let children2 = children >>= Element.children
A.length children2 `shouldEqual` 4
(Element.name <$> children2) `shouldEqual` ["BUTTON", "BUTTON", "BUTTON", "DIV"]
(Element.innerHTML <$> children2) `shouldEqual` ["None", "Dark", "Light", "none"]
liftEffect $ traverse_ RT.fireClick (children2 !! 0)
let children3 = (Element.children root.container) >>= Element.children
A.length children3 `shouldEqual` 4
(Element.innerHTML <$> children3) `shouldEqual` ["None", "Dark", "Light", "none"]
liftEffect $ traverse_ RT.fireClick (children3 !! 1)
let children4 = (Element.children root.container) >>= Element.children
A.length children4 `shouldEqual` 4
(Element.innerHTML <$> children4) `shouldEqual` ["None", "Dark", "Light", "dark"]
liftEffect $ traverse_ RT.fireClick (children4 !! 2)
let children5 = (Element.children root.container) >>= Element.children
A.length children5 `shouldEqual` 4
(Element.innerHTML <$> children5) `shouldEqual` ["None", "Dark", "Light", "light"]
-- type FizzBuzzProps = ( context :: R.Context Int )
-- fizzBuzzCpt :: R.Component FizzBuzzProps
-- fizzBuzzCpt = R.hooksComponent "FizzBuzz" cpt
-- where
-- cpt {context} _ = do
-- count <- R.useContext context
-- pure $
-- div {}
-- [ button { type: "button", onClick: onclick reduceY Inc } [ text "++" ]
-- , button { type: "button", onClick: onclick reduceY Dec } [ text "--" ]
-- , div {} [ text (fizzbuzz count) ] ]
-- fizzbuzz count
-- | count == 0 = "Nothing"
-- | count `mod` 15 == 0 = "FizzBuzz"
-- | count `mod` 3 == 0 = "Fizz"
-- | count `mod` 5 == 0 = "Buzz"
-- | true = show count
-- fizzBuzzTest :: Spec Unit
-- fizzBuzzTest =
-- describe "FizzBuzz" do
-- it "Works for plain components" $
-- it "Works for plain components" $
-- test $ contextualCpt
-- test $ fizzBuzzCpt
-- where test cpt = pure unit
-- -- it "Works for memo'ised components" $
-- -- test $ R.memo' fizzBuzzCpt
-- where
-- test :: forall cpt. R.IsComponent cpt FizzBuzzProps (Array R.Element) => cpt -> Aff Unit
-- test cpt = do
-- let context = R.createContext 0
-- pure unit
-- reducerTest :: Spec Unit
-- memoTest :: Spec Unit
-- memoTest :: Spec Unit
--
ref
Test :: Spec Unit
--
callback
Test :: Spec Unit
-- imperativeHandleTest :: Spec Unit
-- imperativeHandleTest :: Spec Unit
-- debugValueTest :: Spec Unit
-- debugValueTest :: Spec Unit
...
@@ -180,9 +305,11 @@ type ContextProps = ()
...
@@ -180,9 +305,11 @@ type ContextProps = ()
spec :: Spec Unit
spec :: Spec Unit
spec = sequence_
spec = sequence_
[ staticTest
[ staticTest
, counterTest
, counterTest -- useState
, effectorTest
, bicounterTest -- useReducer
, layoutEffectorTest
, themeChooserTest -- useContext, useRef
, effectorTest -- useEffect
, layoutEffectorTest -- useLayoutEffect
]
]
-- , listTest
-- , listTest
-- ]
-- ]
yarn.lock
View file @
a0fd43e7
...
@@ -2,6 +2,71 @@
...
@@ -2,6 +2,71 @@
# yarn lockfile v1
# yarn lockfile v1
"@babel/runtime@^7.4.5":
version "7.4.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12"
integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==
dependencies:
regenerator-runtime "^0.13.2"
"@jest/types@^24.8.0":
version "24.8.0"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz#f31e25948c58f0abd8c845ae26fcea1491dea7ad"
integrity sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==
dependencies:
"@types/istanbul-lib-coverage" "^2.0.0"
"@types/istanbul-reports" "^1.1.1"
"@types/yargs" "^12.0.9"
"@sheerun/mutationobserver-shim@^0.3.2":
version "0.3.2"
resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b"
integrity sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q==
"@testing-library/dom@^5.0.0":
version "5.2.1"
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-5.2.1.tgz#3f2af5229af106c0ccd5078bcb820958310604bc"
integrity sha512-K30UE+UKwyI/iTaQsSJXVYBPnPsTLlcNT1QEhHKKqlsehu7SzWTSkCE3xW0qvMPIkPb3/rVisDx7Viez/qmAKA==
dependencies:
"@babel/runtime" "^7.4.5"
"@sheerun/mutationobserver-shim" "^0.3.2"
aria-query "3.0.0"
pretty-format "^24.8.0"
wait-for-expect "^1.2.0"
"@testing-library/react@^8.0.1":
version "8.0.1"
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-8.0.1.tgz#91c254adf855b13de50020613cb5d3915f9f7875"
integrity sha512-N/1pJfhEnNYkGyxuw4xbp03evaS0z/CT8o0QgTfJqGlukAcU15xf9uU1w03NHKZJcU69nOCBAoAkXHtHzYwMbg==
dependencies:
"@babel/runtime" "^7.4.5"
"@testing-library/dom" "^5.0.0"
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff"
integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==
"@types/istanbul-lib-report@*":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c"
integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==
dependencies:
"@types/istanbul-lib-coverage" "*"
"@types/istanbul-reports@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a"
integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==
dependencies:
"@types/istanbul-lib-coverage" "*"
"@types/istanbul-lib-report" "*"
"@types/yargs@^12.0.9":
version "12.0.12"
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916"
integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==
JSONStream@^0.10.0:
JSONStream@^0.10.0:
version "0.10.0"
version "0.10.0"
resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.10.0.tgz#74349d0d89522b71f30f0a03ff9bd20ca6f12ac0"
resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.10.0.tgz#74349d0d89522b71f30f0a03ff9bd20ca6f12ac0"
...
@@ -141,6 +206,14 @@ argparse@^1.0.7:
...
@@ -141,6 +206,14 @@ argparse@^1.0.7:
dependencies:
dependencies:
sprintf-js "~1.0.2"
sprintf-js "~1.0.2"
aria-query@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc"
integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=
dependencies:
ast-types-flow "0.0.7"
commander "^2.11.0"
arr-diff@^4.0.0:
arr-diff@^4.0.0:
version "4.0.0"
version "4.0.0"
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
...
@@ -219,6 +292,11 @@ assign-symbols@^1.0.0:
...
@@ -219,6 +292,11 @@ assign-symbols@^1.0.0:
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
ast-types-flow@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
astral-regex@^1.0.0:
astral-regex@^1.0.0:
version "1.0.0"
version "1.0.0"
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
...
@@ -763,6 +841,11 @@ combine-source-map@^0.8.0, combine-source-map@~0.8.0:
...
@@ -763,6 +841,11 @@ combine-source-map@^0.8.0, combine-source-map@~0.8.0:
lodash.memoize "~3.0.3"
lodash.memoize "~3.0.3"
source-map "~0.5.3"
source-map "~0.5.3"
commander@^2.11.0:
version "2.20.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
component-bind@1.0.0:
component-bind@1.0.0:
version "1.0.0"
version "1.0.0"
resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
...
@@ -3131,6 +3214,16 @@ posix-character-classes@^0.1.0:
...
@@ -3131,6 +3214,16 @@ posix-character-classes@^0.1.0:
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
pretty-format@^24.8.0:
version "24.8.0"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2"
integrity sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==
dependencies:
"@jest/types" "^24.8.0"
ansi-regex "^4.0.0"
ansi-styles "^3.2.0"
react-is "^16.8.4"
process-nextick-args@~2.0.0:
process-nextick-args@~2.0.0:
version "2.0.0"
version "2.0.0"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
...
@@ -3321,10 +3414,10 @@ react-dom@^16.8.6:
...
@@ -3321,10 +3414,10 @@ react-dom@^16.8.6:
prop-types "^15.6.2"
prop-types "^15.6.2"
scheduler "^0.13.6"
scheduler "^0.13.6"
react-
testing-library@^8.0.1
:
react-
is@^16.8.4
:
version "
8.0.1
"
version "
16.8.6
"
resolved "https://registry.yarnpkg.com/react-
testing-library/-/react-testing-library-8.0.1.tgz#b3dd43bce3fa88423cf0a23292fb819023c227cc
"
resolved "https://registry.yarnpkg.com/react-
is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16
"
integrity sha512-
Gq4JC9r3prA4hYwo7afcbHHMFckO29+5Nrh2KblAEPuK/DWaU0bJE1vtpAgLhzhY9bBirmcgjjIHljHEwGAXKw
==
integrity sha512-
aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA
==
react@^16.8.6:
react@^16.8.6:
version "16.8.6"
version "16.8.6"
...
@@ -3388,6 +3481,11 @@ rechoir@^0.6.2:
...
@@ -3388,6 +3481,11 @@ rechoir@^0.6.2:
dependencies:
dependencies:
resolve "^1.1.6"
resolve "^1.1.6"
regenerator-runtime@^0.13.2:
version "0.13.2"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447"
integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==
regex-not@^1.0.0, regex-not@^1.0.2:
regex-not@^1.0.0, regex-not@^1.0.2:
version "1.0.2"
version "1.0.2"
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
...
@@ -4244,6 +4342,11 @@ void-elements@^2.0.0:
...
@@ -4244,6 +4342,11 @@ void-elements@^2.0.0:
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=
integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=
wait-for-expect@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-1.2.0.tgz#fdab6a26e87d2039101db88bff3d8158e5c3e13f"
integrity sha512-EJhKpA+5UHixduMBEGhTFuLuVgQBKWxkFbefOdj2bbk2/OpA5Opsc4aUTGmF+qJ+v3kTGxDRNYwKaT4j6g5n8Q==
which-module@^2.0.0:
which-module@^2.0.0:
version "2.0.0"
version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment