From 7db1de17c19a83f9b4ebce4837d21cf2972d1edc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Phil=20Pl=C3=BCckthun?= Date: Tue, 7 Jan 2020 17:47:16 +0000 Subject: [PATCH] Upgrade to BuckleScript v7 with genType based TS codegen (#44) * Upgrade dependencies * Upgrade to bs-platform 7.0.2-dev.1 * Add gentype * Switch to genType TypeScript codegen * Migrate all operators to genType * Migrate all sinks to genType * Migrate sources to genType * Migrate web to genType * Delete obsolete .d.ts signature files * Clean up main folder structure * Add new main src/wonka.ts entrypoint * Combine all separate granular files * Remove fromListener * Add missing shims * Move include folder to src * Convert pipe helper to pipe.ts with overloads * Fix build output * Update flow typegeneration * Fix missing Js.shim.ts types * Refactor tasks * Add unwrapStatePlugin to optimise size Unwraps all `let state` usages across all operators, since internally this will not change any functionality while optimising for output size. * Unwrap refs using unwrapStatePlugin Also unwrap all ref types which are output as objects of the shape: { contents: T } * Fix forEach types not being generated * Add full clean script * Simplify pipe overload typings * Add initial operator spec tests * Add test for delay/debounce/throttle using fake timers * Add additional initial unit tests to all operators * Collect coverage from non-generated / non-helpers files * Add spec test for single Start signal Verify that each operator only sends a single Start event * Add spec test for closing operators End/Close Verify that closing operators send the Close talkback signal upwards and the End signal downwards. * Add sync tests for mergeMap, switchMap & concatMap * Add stricter ending criteria Check that Close and End aren't duplicated * Add test for strict end Some operators stop forwarding signals when the source has ended. This is not strictly necessary, but this test may highlight some other edge cases and bugs, but it may also become necessary for sources that aren't well behaved. * Add additional async sequence test * Add tests for combine operator * Add asynchronous tests for switchMap, mergeMap & concatMap * Add initial tests for Wonka sources * Add more sources to tests * Ignore wonka.bs.js/wonka.ts in coverage report * Add source tests for cold Pull waiting * Revert changes to Wonka_observable implementation * Add tests for fromObservable * Fix genType codegen for Callbags * Add tests for fromCallbag * Add tests for cancellation of sources * Replace publish with subscribe with noop fn * Add tests for Wonka sinks * Update package.json and README.md * Fix coverage and add test for publish * Remove obsolete TODO comments * Replace Sail CI with Travis * Replace babel-jest with custom script * Test makeSubject after complete has been called * Add missing tests for interval and fromDomEvent * Remove obsolete .jest.coverage.json * Add old TypeScript types for various opaque genTypes Add old definitions for talkbackT, signalT, observableSubscriptionT, observableObserverT, observableT, and callbagT. This will provide more backwards compatibility. * Update .travis.yml command for codecov --- .gitignore | 7 +- .jest.coverage.json | 8 - .sail.yml | 55 - .travis.yml | 26 + README.md | 3 + __tests__/wonka_test.re | 2149 -------- __tests__/wonka_thelpers.re | 149 - bsconfig.json | 54 +- index.js.flow | 2 +- package.json | 93 +- rollup.config.js | 114 +- scripts/generate-flow-files.js | 19 +- scripts/jest-transform-esm.js | 5 + src/dune/dune | 2 +- src/helpers/pipe.ts | 157 + src/helpers/wonka_deriving.ts | 24 + src/{ => helpers}/wonka_helpers.re | 0 src/include/rebel.js | 10 + {include => src/include}/rebel.ml | 0 {include => src/include}/rebel_js/Array_js.re | 0 .../include}/rebel_js/MutableQueue_js.re | 0 .../include}/rebel_js/MutableStack_js.re | 0 {include => src/include}/rebel_js/Rebel_js.re | 0 .../include}/rebel_native/Array_native.re | 0 .../rebel_native/MutableQueue_native.re | 0 .../rebel_native/MutableStack_native.re | 0 .../include}/rebel_native/Rebel_native.re | 0 src/index.d.ts | 4 - src/index.js | 2 - src/operators/wonka_operator_buffer.d.ts | 3 - src/operators/wonka_operator_buffer.re | 72 - src/operators/wonka_operator_buffer.rei | 3 - src/operators/wonka_operator_combine.d.ts | 3 - src/operators/wonka_operator_combine.re | 84 - src/operators/wonka_operator_combine.rei | 3 - src/operators/wonka_operator_concatMap.d.ts | 5 - src/operators/wonka_operator_concatMap.re | 98 - src/operators/wonka_operator_concatMap.rei | 5 - src/operators/wonka_operator_filter.d.ts | 3 - src/operators/wonka_operator_filter.re | 14 - src/operators/wonka_operator_filter.rei | 3 - src/operators/wonka_operator_map.d.ts | 3 - src/operators/wonka_operator_map.re | 16 - src/operators/wonka_operator_map.rei | 3 - src/operators/wonka_operator_mergeMap.d.ts | 6 - src/operators/wonka_operator_mergeMap.re | 93 - src/operators/wonka_operator_mergeMap.rei | 6 - src/operators/wonka_operator_onEnd.d.ts | 3 - src/operators/wonka_operator_onEnd.re | 36 - src/operators/wonka_operator_onEnd.rei | 3 - src/operators/wonka_operator_onPush.d.ts | 4 - src/operators/wonka_operator_onPush.re | 17 - src/operators/wonka_operator_onPush.rei | 4 - src/operators/wonka_operator_onStart.d.ts | 3 - src/operators/wonka_operator_onStart.re | 15 - src/operators/wonka_operator_onStart.rei | 3 - src/operators/wonka_operator_sample.d.ts | 3 - src/operators/wonka_operator_sample.re | 60 - src/operators/wonka_operator_sample.rei | 3 - src/operators/wonka_operator_scan.d.ts | 3 - src/operators/wonka_operator_scan.re | 20 - src/operators/wonka_operator_scan.rei | 3 - src/operators/wonka_operator_share.d.ts | 3 - src/operators/wonka_operator_share.re | 51 - src/operators/wonka_operator_share.rei | 3 - src/operators/wonka_operator_skip.d.ts | 3 - src/operators/wonka_operator_skip.re | 18 - src/operators/wonka_operator_skip.rei | 3 - src/operators/wonka_operator_skipUntil.d.ts | 3 - src/operators/wonka_operator_skipUntil.re | 73 - src/operators/wonka_operator_skipUntil.rei | 3 - src/operators/wonka_operator_skipWhile.d.ts | 3 - src/operators/wonka_operator_skipWhile.re | 22 - src/operators/wonka_operator_skipWhile.rei | 3 - src/operators/wonka_operator_switchMap.d.ts | 4 - src/operators/wonka_operator_switchMap.re | 84 - src/operators/wonka_operator_switchMap.rei | 4 - src/operators/wonka_operator_take.d.ts | 3 - src/operators/wonka_operator_take.re | 47 - src/operators/wonka_operator_take.rei | 3 - src/operators/wonka_operator_takeLast.d.ts | 3 - src/operators/wonka_operator_takeLast.re | 25 - src/operators/wonka_operator_takeLast.rei | 3 - src/operators/wonka_operator_takeUntil.d.ts | 3 - src/operators/wonka_operator_takeUntil.re | 61 - src/operators/wonka_operator_takeUntil.rei | 3 - src/operators/wonka_operator_takeWhile.d.ts | 3 - src/operators/wonka_operator_takeWhile.re | 45 - src/operators/wonka_operator_takeWhile.rei | 3 - src/pipe.d.ts | 156 - src/pipe.js | 11 - src/shims/Dom.shim.ts | 2 + src/shims/Js.shim.ts | 31 + src/shims/ReasonPervasives.shim.ts | 11 + src/sinks/wonka_sink_publish.d.ts | 3 - src/sinks/wonka_sink_publish.re | 32 - src/sinks/wonka_sink_publish.rei | 3 - src/sinks/wonka_sink_subscribe.d.ts | 4 - src/sinks/wonka_sink_subscribe.re | 38 - src/sinks/wonka_sink_subscribe.rei | 4 - src/sinks/wonka_sink_toArray.d.ts | 3 - src/sinks/wonka_sink_toArray.re | 36 - src/sinks/wonka_sink_toArray.rei | 3 - src/sources/wonka_source_fromArray.d.ts | 3 - src/sources/wonka_source_fromArray.re | 18 - src/sources/wonka_source_fromArray.rei | 3 - src/sources/wonka_source_fromList.d.ts | 3 - src/sources/wonka_source_fromList.re | 16 - src/sources/wonka_source_fromList.rei | 3 - src/sources/wonka_source_fromValue.d.ts | 3 - src/sources/wonka_source_fromValue.re | 19 - src/sources/wonka_source_fromValue.rei | 3 - src/sources/wonka_source_make.d.ts | 3 - src/sources/wonka_source_make.re | 22 - src/sources/wonka_source_make.rei | 3 - src/sources/wonka_source_makeSubject.d.ts | 3 - src/sources/wonka_source_makeSubject.re | 38 - src/sources/wonka_source_makeSubject.rei | 3 - src/sources/wonka_source_primitives.d.ts | 4 - src/sources/wonka_source_primitives.re | 11 - src/sources/wonka_source_primitives.rei | 4 - src/web/wonkaJs.d.ts | 17 - src/web/wonkaJs.re | 285 +- src/web/wonka_callbag.d.ts | 10 - src/web/wonka_callbag.re | 30 +- src/web/wonka_callbag.rei | 6 - src/web/wonka_observable.d.ts | 18 - src/web/wonka_observable.re | 16 +- src/web/wonka_observable.rei | 6 - src/web/wonka_operator_debounce.d.ts | 3 - src/web/wonka_operator_debounce.re | 56 - src/web/wonka_operator_debounce.rei | 3 - src/web/wonka_operator_delay.d.ts | 3 - src/web/wonka_operator_delay.re | 56 - src/web/wonka_operator_delay.rei | 3 - src/web/wonka_operator_throttle.d.ts | 3 - src/web/wonka_operator_throttle.re | 49 - src/web/wonka_operator_throttle.rei | 3 - src/web/wonka_sink_toPromise.d.ts | 3 - src/web/wonka_sink_toPromise.re | 15 - src/web/wonka_sink_toPromise.rei | 3 - src/web/wonka_source_fromDomEvent.d.ts | 3 - src/web/wonka_source_fromDomEvent.re | 27 - src/web/wonka_source_fromDomEvent.rei | 3 - src/web/wonka_source_fromListener.d.ts | 6 - src/web/wonka_source_fromListener.re | 18 - src/web/wonka_source_fromListener.rei | 4 - src/web/wonka_source_fromPromise.d.ts | 3 - src/web/wonka_source_fromPromise.re | 30 - src/web/wonka_source_fromPromise.rei | 3 - src/web/wonka_source_interval.d.ts | 3 - src/web/wonka_source_interval.re | 25 - src/web/wonka_source_interval.rei | 3 - src/wonka.d.ts | 36 - src/wonka.ts | 15 + src/wonka_operators.re | 967 +++- src/wonka_operators.test.ts | 970 ++++ src/wonka_sinks.re | 89 +- src/wonka_sinks.test.ts | 290 + src/wonka_sources.re | 130 +- src/wonka_sources.test.ts | 369 ++ src/wonka_types.d.ts | 18 - src/wonka_types.re | 12 + tsconfig.json | 9 +- yarn.lock | 4814 ++++++++++------- 165 files changed, 6434 insertions(+), 6468 deletions(-) delete mode 100644 .jest.coverage.json delete mode 100644 .sail.yml create mode 100644 .travis.yml delete mode 100644 __tests__/wonka_test.re delete mode 100644 __tests__/wonka_thelpers.re create mode 100644 scripts/jest-transform-esm.js create mode 100644 src/helpers/pipe.ts create mode 100644 src/helpers/wonka_deriving.ts rename src/{ => helpers}/wonka_helpers.re (100%) create mode 100644 src/include/rebel.js rename {include => src/include}/rebel.ml (100%) rename {include => src/include}/rebel_js/Array_js.re (100%) rename {include => src/include}/rebel_js/MutableQueue_js.re (100%) rename {include => src/include}/rebel_js/MutableStack_js.re (100%) rename {include => src/include}/rebel_js/Rebel_js.re (100%) rename {include => src/include}/rebel_native/Array_native.re (100%) rename {include => src/include}/rebel_native/MutableQueue_native.re (100%) rename {include => src/include}/rebel_native/MutableStack_native.re (100%) rename {include => src/include}/rebel_native/Rebel_native.re (100%) delete mode 100644 src/index.d.ts delete mode 100644 src/index.js delete mode 100644 src/operators/wonka_operator_buffer.d.ts delete mode 100644 src/operators/wonka_operator_buffer.re delete mode 100644 src/operators/wonka_operator_buffer.rei delete mode 100644 src/operators/wonka_operator_combine.d.ts delete mode 100644 src/operators/wonka_operator_combine.re delete mode 100644 src/operators/wonka_operator_combine.rei delete mode 100644 src/operators/wonka_operator_concatMap.d.ts delete mode 100644 src/operators/wonka_operator_concatMap.re delete mode 100644 src/operators/wonka_operator_concatMap.rei delete mode 100644 src/operators/wonka_operator_filter.d.ts delete mode 100644 src/operators/wonka_operator_filter.re delete mode 100644 src/operators/wonka_operator_filter.rei delete mode 100644 src/operators/wonka_operator_map.d.ts delete mode 100644 src/operators/wonka_operator_map.re delete mode 100644 src/operators/wonka_operator_map.rei delete mode 100644 src/operators/wonka_operator_mergeMap.d.ts delete mode 100644 src/operators/wonka_operator_mergeMap.re delete mode 100644 src/operators/wonka_operator_mergeMap.rei delete mode 100644 src/operators/wonka_operator_onEnd.d.ts delete mode 100644 src/operators/wonka_operator_onEnd.re delete mode 100644 src/operators/wonka_operator_onEnd.rei delete mode 100644 src/operators/wonka_operator_onPush.d.ts delete mode 100644 src/operators/wonka_operator_onPush.re delete mode 100644 src/operators/wonka_operator_onPush.rei delete mode 100644 src/operators/wonka_operator_onStart.d.ts delete mode 100644 src/operators/wonka_operator_onStart.re delete mode 100644 src/operators/wonka_operator_onStart.rei delete mode 100644 src/operators/wonka_operator_sample.d.ts delete mode 100644 src/operators/wonka_operator_sample.re delete mode 100644 src/operators/wonka_operator_sample.rei delete mode 100644 src/operators/wonka_operator_scan.d.ts delete mode 100644 src/operators/wonka_operator_scan.re delete mode 100644 src/operators/wonka_operator_scan.rei delete mode 100644 src/operators/wonka_operator_share.d.ts delete mode 100644 src/operators/wonka_operator_share.re delete mode 100644 src/operators/wonka_operator_share.rei delete mode 100644 src/operators/wonka_operator_skip.d.ts delete mode 100644 src/operators/wonka_operator_skip.re delete mode 100644 src/operators/wonka_operator_skip.rei delete mode 100644 src/operators/wonka_operator_skipUntil.d.ts delete mode 100644 src/operators/wonka_operator_skipUntil.re delete mode 100644 src/operators/wonka_operator_skipUntil.rei delete mode 100644 src/operators/wonka_operator_skipWhile.d.ts delete mode 100644 src/operators/wonka_operator_skipWhile.re delete mode 100644 src/operators/wonka_operator_skipWhile.rei delete mode 100644 src/operators/wonka_operator_switchMap.d.ts delete mode 100644 src/operators/wonka_operator_switchMap.re delete mode 100644 src/operators/wonka_operator_switchMap.rei delete mode 100644 src/operators/wonka_operator_take.d.ts delete mode 100644 src/operators/wonka_operator_take.re delete mode 100644 src/operators/wonka_operator_take.rei delete mode 100644 src/operators/wonka_operator_takeLast.d.ts delete mode 100644 src/operators/wonka_operator_takeLast.re delete mode 100644 src/operators/wonka_operator_takeLast.rei delete mode 100644 src/operators/wonka_operator_takeUntil.d.ts delete mode 100644 src/operators/wonka_operator_takeUntil.re delete mode 100644 src/operators/wonka_operator_takeUntil.rei delete mode 100644 src/operators/wonka_operator_takeWhile.d.ts delete mode 100644 src/operators/wonka_operator_takeWhile.re delete mode 100644 src/operators/wonka_operator_takeWhile.rei delete mode 100644 src/pipe.d.ts delete mode 100644 src/pipe.js create mode 100644 src/shims/Dom.shim.ts create mode 100644 src/shims/Js.shim.ts create mode 100644 src/shims/ReasonPervasives.shim.ts delete mode 100644 src/sinks/wonka_sink_publish.d.ts delete mode 100644 src/sinks/wonka_sink_publish.re delete mode 100644 src/sinks/wonka_sink_publish.rei delete mode 100644 src/sinks/wonka_sink_subscribe.d.ts delete mode 100644 src/sinks/wonka_sink_subscribe.re delete mode 100644 src/sinks/wonka_sink_subscribe.rei delete mode 100644 src/sinks/wonka_sink_toArray.d.ts delete mode 100644 src/sinks/wonka_sink_toArray.re delete mode 100644 src/sinks/wonka_sink_toArray.rei delete mode 100644 src/sources/wonka_source_fromArray.d.ts delete mode 100644 src/sources/wonka_source_fromArray.re delete mode 100644 src/sources/wonka_source_fromArray.rei delete mode 100644 src/sources/wonka_source_fromList.d.ts delete mode 100644 src/sources/wonka_source_fromList.re delete mode 100644 src/sources/wonka_source_fromList.rei delete mode 100644 src/sources/wonka_source_fromValue.d.ts delete mode 100644 src/sources/wonka_source_fromValue.re delete mode 100644 src/sources/wonka_source_fromValue.rei delete mode 100644 src/sources/wonka_source_make.d.ts delete mode 100644 src/sources/wonka_source_make.re delete mode 100644 src/sources/wonka_source_make.rei delete mode 100644 src/sources/wonka_source_makeSubject.d.ts delete mode 100644 src/sources/wonka_source_makeSubject.re delete mode 100644 src/sources/wonka_source_makeSubject.rei delete mode 100644 src/sources/wonka_source_primitives.d.ts delete mode 100644 src/sources/wonka_source_primitives.re delete mode 100644 src/sources/wonka_source_primitives.rei delete mode 100644 src/web/wonkaJs.d.ts delete mode 100644 src/web/wonka_callbag.d.ts delete mode 100644 src/web/wonka_callbag.rei delete mode 100644 src/web/wonka_observable.d.ts delete mode 100644 src/web/wonka_observable.rei delete mode 100644 src/web/wonka_operator_debounce.d.ts delete mode 100644 src/web/wonka_operator_debounce.re delete mode 100644 src/web/wonka_operator_debounce.rei delete mode 100644 src/web/wonka_operator_delay.d.ts delete mode 100644 src/web/wonka_operator_delay.re delete mode 100644 src/web/wonka_operator_delay.rei delete mode 100644 src/web/wonka_operator_throttle.d.ts delete mode 100644 src/web/wonka_operator_throttle.re delete mode 100644 src/web/wonka_operator_throttle.rei delete mode 100644 src/web/wonka_sink_toPromise.d.ts delete mode 100644 src/web/wonka_sink_toPromise.re delete mode 100644 src/web/wonka_sink_toPromise.rei delete mode 100644 src/web/wonka_source_fromDomEvent.d.ts delete mode 100644 src/web/wonka_source_fromDomEvent.re delete mode 100644 src/web/wonka_source_fromDomEvent.rei delete mode 100644 src/web/wonka_source_fromListener.d.ts delete mode 100644 src/web/wonka_source_fromListener.re delete mode 100644 src/web/wonka_source_fromListener.rei delete mode 100644 src/web/wonka_source_fromPromise.d.ts delete mode 100644 src/web/wonka_source_fromPromise.re delete mode 100644 src/web/wonka_source_fromPromise.rei delete mode 100644 src/web/wonka_source_interval.d.ts delete mode 100644 src/web/wonka_source_interval.re delete mode 100644 src/web/wonka_source_interval.rei delete mode 100644 src/wonka.d.ts create mode 100644 src/wonka.ts create mode 100644 src/wonka_operators.test.ts create mode 100644 src/wonka_sinks.test.ts create mode 100644 src/wonka_sources.test.ts delete mode 100644 src/wonka_types.d.ts diff --git a/.gitignore b/.gitignore index 8277e48..bbcb144 100644 --- a/.gitignore +++ b/.gitignore @@ -31,13 +31,12 @@ yarn-error.log dist/ node_modules/ lib/ -src/**/*.js +src/**/*.bs.js +src/**/*.gen.tsx +src/**/*.gen.ts src/**/*.js.flow include/**/*.js __tests__/**/*.js coverage/ _esy/ public/ - -!src/index.js -!src/pipe.js diff --git a/.jest.coverage.json b/.jest.coverage.json deleted file mode 100644 index 377149d..0000000 --- a/.jest.coverage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "moduleFileExtensions": [ - "js" - ], - "testMatch": [ - "**/lib/js/__tests__/*_test.js" - ] -} diff --git a/.sail.yml b/.sail.yml deleted file mode 100644 index 00ab464..0000000 --- a/.sail.yml +++ /dev/null @@ -1,55 +0,0 @@ -workflow: - - install - - build - - sail:parallel: - - check - - test - - bundle - - flowgen -tasks: - install: - image: node:10 - command: - - yarn - args: - - install - - --frozen-lockfile - build: - image: node:10 - command: - - yarn - args: - - run - - build - check: - image: node:10 - command: - - yarn - args: - - run - - check - bundle: - image: node:10 - command: - - yarn - args: - - run - - bundle - test: - image: node:10 - env: - - CODECOV_TOKEN - command: - - yarn - args: - - run - - run-s - - coverage - - codecov - flowgen: - image: node:10 - command: - - yarn - args: - - run - - flowgen diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..d7ddf1e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,26 @@ +notifications: + email: false + +branches: + only: + - master + - develop + - /^v\d+\.\d+\.\d+/ + +language: node_js +cache: + yarn: true +node_js: + - '10' + +matrix: + fast_finish: true + +install: + - yarn install --frozen-lockfile --non-interactive + +script: + - yarn run build + - yarn run check + - yarn run test --coverage + - yarn run codecov --branch $TRAVIS_PULL_REQUEST_BRANCH diff --git a/README.md b/README.md index bc4b355..982f1ce 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,9 @@ A fast push & pull stream library for Reason, loosely following the [callbag spec](https://github.com/callbag/callbag) +> **NOTE:** The `master` branch currently points to the v4 Release Candidate version! +> If you're looking for v3, [please check the `v3.2.2`](https://github.com/kitten/wonka/tree/v3.2.2) +
NPM Version diff --git a/__tests__/wonka_test.re b/__tests__/wonka_test.re deleted file mode 100644 index 70ea4e9..0000000 --- a/__tests__/wonka_test.re +++ /dev/null @@ -1,2149 +0,0 @@ -open Jest; -open Wonka_types; - -let it = test; - -describe("source factories", () => { - describe("fromList", () => { - open Expect; - open! Expect.Operators; - - it("sends list items to a puller sink", () => { - let source = Wonka.fromList([10, 20, 30]); - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | Push(_) => ignore(Js.Array.push(signal, signals)) - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - - expect(signals) == [|Push(10), Push(20), Push(30), End|]; - }); - }); - - describe("fromArray", () => { - open Expect; - open! Expect.Operators; - - it("sends array items to a puller sink", () => { - let source = Wonka.fromArray([|10, 20, 30|]); - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = ref([||]); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - signals := Array.append(signals^, [|signal|]); - talkback^(. Pull); - | End => signals := Array.append(signals^, [|signal|]) - } - ); - - expect(signals^) == [|Push(10), Push(20), Push(30), End|]; - }); - - it("does not blow up the stack when iterating something huge", () => { - let arr = Array.make(100000, 123); - let source = Wonka.fromArray(arr); - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let values = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(x) => - ignore(Js.Array.push(x, values)); - talkback^(. Pull); - | End => () - } - ); - - expect(Array.length(values)) == Array.length(arr); - }); - }); - - describe("fromValue", () => { - open Expect; - open! Expect.Operators; - - it("sends a single item to a puller sink", () => { - let source = Wonka.fromValue(123); - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | Push(_) => ignore(Js.Array.push(signal, signals)) - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); /* one extra to check whether no signal comes back after it has ended */ - - expect(signals) == [|Push(123), End|]; - }); - }); - - describe("empty", () => { - open Expect; - open! Expect.Operators; - - it("ends immediately", () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - Wonka.empty((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, signals)) - } - ); - - let _signals = Array.copy(signals); - - talkback^(. Pull); - talkback^(. Pull); - - expect((_signals, signals)) == ([|End|], [|End|]); - }); - }); - - describe("never", () => { - open Expect; - open! Expect.Operators; - - it("does not end", () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let ended = ref(false); - - Wonka.never((. signal) => - switch (signal) { - | Start(x) => talkback := x - | End => ended := true - | _ => () - } - ); - - talkback^(. Pull); - talkback^(. Pull); - - expect(ended^) === false; - }); - }); - - describe("fromObservable", () => - Expect.( - testPromise("creates a source from an observable", () => { - let observable = Wonka_thelpers.observableFromArray([|1, 2|]); - - Wonka_thelpers.testSource(Wonka.fromObservable(observable)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual([|Push(1), Push(2), End|]) - |> Js.Promise.resolve - ); - }) - ) - ); - - describe("fromCallbag", () => { - open Expect; - - testPromise("creates a source from a callbag (observable)", () => { - let observable = Wonka_thelpers.observableFromArray([|1, 2|]); - let callbag = Wonka_thelpers.callbagFromObservable(observable); - - Wonka_thelpers.testSource(Wonka.fromCallbag(callbag)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual([|Push(1), Push(2), End|]) - |> Js.Promise.resolve - ); - }); - - testPromise("creates a source from a callbag (iterable)", () => { - let callbag = Wonka_thelpers.callbagFromArray([|1, 2|]); - - Wonka_thelpers.testSource(Wonka.fromCallbag(callbag)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual([|Push(1), Push(2), End|]) - |> Js.Promise.resolve - ); - }); - }); -}); - -describe("operator factories", () => { - describe("map", () => { - open Expect; - - it("maps all emissions of a source", () => { - let num = ref(1); - let nums = [||]; - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - - Wonka.map( - (. _) => { - let res = num^; - num := num^ + 1; - res; - }, - sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => sink(. Push(1)) - | _ => () - }, - ), - ), - (. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(x) when num^ < 6 => - ignore(Js.Array.push(x, nums)); - talkback^(. Pull); - | _ => () - }, - ); - - expect(nums) |> toEqual([|1, 2, 3, 4|]); - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(Wonka.map((. x) => x)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([||], [|Push(1), Push(2), End|])) - |> Js.Promise.resolve - ) - ); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testTalkbackEnd(Wonka.map((. x) => x)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|end_|], [|Push(1)|])) - |> Js.Promise.resolve - ); - }); - }); - - describe("filter", () => { - open Expect; - - it("filters emissions according to a predicate", () => { - let i = ref(1); - let nums = [||]; - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - - Wonka.filter( - (. x) => x mod 2 === 0, - sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => - let num = i^; - i := i^ + 1; - sink(. Push(num)); - | _ => () - }, - ), - ), - (. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(x) when x < 6 => - ignore(Js.Array.push(x, nums)); - talkback^(. Pull); - | _ => () - }, - ); - - expect(nums) |> toEqual([|2, 4|]); - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(Wonka.filter((. _) => true)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([||], [|Push(1), Push(2), End|])) - |> Js.Promise.resolve - ) - ); - - testPromise("follows the spec for listenables when filtering", () => - Wonka_thelpers.testWithListenable(Wonka.filter((. _) => false)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull, Pull|], [|End|])) - |> Js.Promise.resolve - ) - ); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testTalkbackEnd(Wonka.filter((. _) => true)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|end_|], [|Push(1)|])) - |> Js.Promise.resolve - ); - }); - }); - - describe("sample", () => { - open Expect; - open! Expect.Operators; - - afterEach(() => Jest.useRealTimers()); - - it("should sample the last emitted value from a source", () => { - Jest.useFakeTimers(); - let a = Wonka.interval(50); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - let source = Wonka.sample(Wonka.interval(100), a); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - Jest.runTimersToTime(200); - - expect(signals) == [|Push(1), Push(3)|]; - }); - - it("should emit an End signal when the source has emitted all values", () => { - Jest.useFakeTimers(); - let a = Wonka.interval(50); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - let source = Wonka.sample(Wonka.interval(100), a) |> Wonka.take(3); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - Jest.runTimersToTime(300); - - expect(signals) == [|Push(1), Push(3), Push(5), End|]; - }); - }); - - describe("scan", () => { - open Expect; - - it("folds emissions using an initial seed value", () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let num = ref(1); - - let source = - Wonka.scan( - (. acc, x) => acc + x, - 0, - sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => - let i = num^; - if (i <= 3) { - num := num^ + 1; - sink(. Push(i)); - } else { - sink(. End); - }; - | _ => () - }, - ), - ), - ); - - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - expect(res) |> toEqual([|Push(1), Push(3), Push(6), End|]); - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(Wonka.scan((. _, x) => x, 0)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([||], [|Push(1), Push(2), End|])) - |> Js.Promise.resolve - ) - ); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testTalkbackEnd(Wonka.scan((. _, x) => x, 0)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|end_|], [|Push(1)|])) - |> Js.Promise.resolve - ); - }); - }); - - describe("merge", () => { - open Expect; - open! Expect.Operators; - - it("merges different sources into a single one", () => { - let a = Wonka.fromList([1, 2, 3]); - let b = Wonka.fromList([4, 5, 6]); - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - let source = Wonka.merge([|a, b|]); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - expect(signals) - == [|Push(1), Push(2), Push(3), Push(4), Push(5), Push(6), End|]; - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(source => Wonka.merge([|source|])) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull, Pull, Pull|], [|Push(1), Push(2), End|])) - |> Js.Promise.resolve - ) - ); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => - Wonka_thelpers.testTalkbackEnd(source => Wonka.merge([|source|])) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull, Pull, Close|], [|Push(1)|])) - |> Js.Promise.resolve - ) - ); - }); - - describe("concat", () => { - open Expect; - open! Expect.Operators; - - it("concatenates different sources into a single one", () => { - let a = Wonka.fromList([1, 2, 3]); - let b = Wonka.fromList([4, 5, 6]); - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - let source = Wonka.concat([|a, b|]); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - expect(signals) - == [|Push(1), Push(2), Push(3), Push(4), Push(5), Push(6), End|]; - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(source => Wonka.concat([|source|])) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull, Pull, Pull|], [|Push(1), Push(2), End|])) - |> Js.Promise.resolve - ) - ); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => - Wonka_thelpers.testTalkbackEnd(source => Wonka.concat([|source|])) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull, Pull, Close|], [|Push(1)|])) - |> Js.Promise.resolve - ) - ); - }); - - describe("share", () => { - open Expect; - - it("shares an underlying source with all sinks", () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let aborterTb = ref((. _: Wonka_types.talkbackT) => ()); - let num = ref(1); - let nums = [||]; - - let source = - Wonka.share(sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => - let i = num^; - if (i <= 2) { - num := num^ + 1; - sink(. Push(i)); - } else { - sink(. End); - }; - | _ => () - }, - ), - ) - ); - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, nums)) - } - ); - - source((. signal) => - switch (signal) { - | Start(_) => () - | _ => ignore(Js.Array.push(signal, nums)) - } - ); - - source((. signal) => - switch (signal) { - | Start(tb) => aborterTb := tb - | _ => - ignore(Js.Array.push(signal, nums)); - aborterTb^(. Close); - } - ); - - talkback^(. Pull); - let numsA = Array.copy(nums); - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - expect((numsA, nums)) - |> toEqual(( - [|Push(1), Push(1), Push(1)|], - [|Push(1), Push(1), Push(1), Push(2), Push(2), End, End|], - )); - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(Wonka.share) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([||], [|Push(1), Push(2), End|])) - |> Js.Promise.resolve - ) - ); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testTalkbackEnd(Wonka.share) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|end_|], [|Push(1)|])) - |> Js.Promise.resolve - ); - }); - }); - - describe("combine", () => { - open Expect; - - it("combines the latest values of two sources", () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - - let makeSource = (factor: int) => { - let num = ref(1); - - sink => { - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => - if (num^ <= 2) { - let i = num^ * factor; - num := num^ + 1; - sink(. Push(i)); - } else { - sink(. End); - } - | _ => () - }, - ), - ); - }; - }; - - let sourceA = makeSource(1); - let sourceB = makeSource(2); - let source = Wonka.combine(sourceA, sourceB); - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - expect(res) - |> toEqual([|Push((1, 2)), Push((2, 2)), Push((2, 4)), End|]); - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(source => { - let shared = Wonka.share(source); - Wonka.combine(shared, shared); - }) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(( - [||], - [|Push((1, 1)), Push((2, 1)), Push((2, 2)), End|], - )) - |> Js.Promise.resolve - ) - ); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testTalkbackEnd(source => { - let shared = Wonka.share(source); - Wonka.combine(shared, shared); - }) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|end_|], [|Push((1, 1))|])) - |> Js.Promise.resolve - ); - }); - }); - - describe("take", () => { - open Expect; - - it("only lets a maximum number of values through", () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let num = ref(1); - - let source = - Wonka.take(2, sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => - let i = num^; - num := num^ + 1; - sink(. Push(i)); - | _ => () - }, - ), - ) - ); - - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - expect(res) |> toEqual([|Push(1), Push(2), End|]); - }); - - it( - "accepts the end of the source when max number of emissions is not reached", - () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let num = ref(1); - - let source = - Wonka.take(2, sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => - let i = num^; - if (i < 2) { - num := num^ + 1; - sink(. Push(i)); - } else { - sink(. End); - }; - | _ => () - }, - ), - ) - ); - - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - expect(res) |> toEqual([|Push(1), End|]); - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(Wonka.take(10)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([||], [|Push(1), Push(2), End|])) - |> Js.Promise.resolve - ) - ); - - testPromise("follows the spec for listenables when ending the source", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testWithListenable(Wonka.take(1)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|end_|], [|Push(1), End|])) - |> Js.Promise.resolve - ); - }); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testTalkbackEnd(Wonka.take(10)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|end_|], [|Push(1)|])) - |> Js.Promise.resolve - ); - }); - }); - - describe("takeLast", () => { - open Expect; - - it("only lets the last n values through on an entirely new source", () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let num = ref(1); - - let source = - Wonka.takeLast(2, sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull when num^ <= 4 => - let i = num^; - num := num^ + 1; - sink(. Push(i)); - | Pull => sink(. End) - | _ => () - }, - ), - ) - ); - - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - expect(res) |> toEqual([|Push(3), Push(4), End|]); - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(Wonka.takeLast(10)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(( - [|Pull, Pull, Pull|], - [|/* empty since the source is a pullable */|], - )) - |> Js.Promise.resolve - ) - ); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => - Wonka_thelpers.testTalkbackEnd(Wonka.takeLast(10)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull, Pull|], [||])) - |> Js.Promise.resolve - ) - ); - }); - - describe("takeWhile", () => { - open Expect; - - it("only lets the last n values through on an entirely new source", () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let num = ref(1); - - let source = - Wonka.takeWhile( - (. x) => x <= 2, - sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => - let i = num^; - num := num^ + 1; - sink(. Push(i)); - | _ => () - }, - ), - ), - ); - - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - - expect(res) |> toEqual([|Push(1), Push(2), End|]); - }); - - it( - "accepts the end of the source when max number of emissions is not reached", - () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let num = ref(1); - - let source = - Wonka.takeWhile( - (. x) => x <= 5, - sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => - let i = num^; - if (i < 2) { - num := num^ + 1; - sink(. Push(i)); - } else { - sink(. End); - }; - | _ => () - }, - ), - ), - ); - - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - - expect(res) |> toEqual([|Push(1), End|]); - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(Wonka.takeWhile((. _) => true)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([||], [|Push(1), Push(2), End|])) - |> Js.Promise.resolve - ) - ); - - testPromise("follows the spec for listenables when ending the source", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testWithListenable(Wonka.takeWhile((. _) => false)) - |> Js.Promise.then_(x => - expect(x) |> toEqual(([|end_|], [|End|])) |> Js.Promise.resolve - ); - }); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testTalkbackEnd(Wonka.takeWhile((. _) => true)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|end_|], [|Push(1)|])) - |> Js.Promise.resolve - ); - }); - }); - - describe("takeUntil", () => { - open Expect; - - it("only lets the last n values through on an entirely new source", () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let notify = ref((_: Wonka_types.talkbackT) => ()); - let num = ref(1); - - let notifier = sink => { - notify := - ( - signal => - switch (signal) { - | Pull => sink(. Push(0)) - | _ => () - } - ); - - sink(. Start(Wonka_helpers.talkbackPlaceholder)); - }; - - let source = - Wonka.takeUntil(notifier, sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull when num^ <= 4 => - let i = num^; - if (i === 3) { - notify^(Pull); - }; - num := num^ + 1; - sink(. Push(i)); - | _ => () - }, - ), - ) - ); - - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - - expect(res) |> toEqual([|Push(1), Push(2), End|]); - }); - - it( - "accepts the end of the source when max number of emissions is not reached", - () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let num = ref(1); - let notifier = sink => - sink(. Start(Wonka_helpers.talkbackPlaceholder)); - - let source = - Wonka.takeUntil(notifier, sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => - let i = num^; - if (num^ <= 2) { - num := num^ + 1; - sink(. Push(i)); - } else { - sink(. End); - }; - | _ => () - }, - ), - ) - ); - - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - - expect(res) |> toEqual([|Push(1), Push(2), End|]); - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(Wonka.takeUntil(Wonka.never)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([||], [|Push(1), Push(2), End|])) - |> Js.Promise.resolve - ) - ); - - testPromise("follows the spec for listenables when ending the source", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testWithListenable(Wonka.takeUntil(Wonka.fromValue(0))) - |> Js.Promise.then_(x => - expect(x) |> toEqual(([|end_|], [|End|])) |> Js.Promise.resolve - ); - }); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testTalkbackEnd(Wonka.takeUntil(Wonka.never)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|end_|], [|Push(1)|])) - |> Js.Promise.resolve - ); - }); - }); - - describe("skip", () => { - open Expect; - - it( - "only lets values through after a number of values have been filtered out", - () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let num = ref(1); - - let source = - Wonka.skip(2, sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull when num^ <= 4 => - let i = num^; - num := num^ + 1; - sink(. Push(i)); - | Pull => sink(. End) - | _ => () - }, - ), - ) - ); - - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - expect(res) |> toEqual([|Push(3), Push(4), End|]); - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(Wonka.skip(0)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([||], [|Push(1), Push(2), End|])) - |> Js.Promise.resolve - ) - ); - - testPromise( - "follows the spec for listenables when skipping the source", () => - Wonka_thelpers.testWithListenable(Wonka.skip(10)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull, Pull|], [|End|])) - |> Js.Promise.resolve - ) - ); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testTalkbackEnd(Wonka.skip(10)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull, end_|], [||])) - |> Js.Promise.resolve - ); - }); - }); - - describe("skipWhile", () => { - open Expect; - - it( - "only lets values through after the predicate returned false, including the first such value", - () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let num = ref(1); - - let source = - Wonka.skipWhile( - (. x) => x <= 2, - sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull when num^ <= 4 => - let i = num^; - num := num^ + 1; - sink(. Push(i)); - | Pull => sink(. End) - | _ => () - }, - ), - ), - ); - - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - expect(res) |> toEqual([|Push(3), Push(4), End|]); - }, - ); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(Wonka.skipWhile((. _) => false)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([||], [|Push(1), Push(2), End|])) - |> Js.Promise.resolve - ) - ); - - testPromise( - "follows the spec for listenables when skipping the source", () => - Wonka_thelpers.testWithListenable(Wonka.skipWhile((. _) => true)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull, Pull|], [|End|])) - |> Js.Promise.resolve - ) - ); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testTalkbackEnd(Wonka.skipWhile((. _) => false)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|end_|], [|Push(1)|])) - |> Js.Promise.resolve - ); - }); - }); - - describe("skipUntil", () => { - open Expect; - - it("only lets values through after the notifier emits a value", () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let notify = ref((_: Wonka_types.talkbackT) => ()); - let num = ref(1); - - let notifier = sink => { - notify := - ( - signal => - switch (signal) { - | Pull => sink(. Push(0)) - | _ => () - } - ); - - sink(. Start(Wonka_helpers.talkbackPlaceholder)); - }; - - let source = - Wonka.skipUntil(notifier, sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull when num^ <= 4 => - let i = num^; - if (i === 3) { - notify^(Pull); - }; - num := num^ + 1; - sink(. Push(i)); - | Pull => sink(. End) - | _ => () - }, - ), - ) - ); - - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - - expect(res) |> toEqual([|Push(3), Push(4), End|]); - }); - - it( - "accepts the end of the source when max number of emissions is not reached", - () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let num = ref(1); - let notifier = sink => - sink(. Start(Wonka_helpers.talkbackPlaceholder)); - - let source = - Wonka.skipUntil(notifier, sink => - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => - let i = num^; - if (i < 2) { - num := num^ + 1; - sink(. Push(i)); - } else { - sink(. End); - }; - | _ => () - }, - ), - ) - ); - - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - - expect(res) |> toEqual([|End|]); - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(Wonka.skipUntil(Wonka.never)) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull, Pull, Pull|], [|End|])) - |> Js.Promise.resolve - ) - ); - - testPromise( - "follows the spec for listenables when skipping the source", () => - Wonka_thelpers.testWithListenable(Wonka.skipUntil(Wonka.fromValue(0))) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull|], [|Push(1), Push(2), End|])) - |> Js.Promise.resolve - ) - ); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => { - let end_: talkbackT = Close; - - Wonka_thelpers.testTalkbackEnd(Wonka.skipUntil(Wonka.fromValue(0))) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull, end_|], [|Push(1)|])) - |> Js.Promise.resolve - ); - }); - }); - - describe("flatten", () => - Expect.( - it("merges the result of multiple pullables into its source", () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let source = - Wonka.fromList([Wonka.fromList([1, 2]), Wonka.fromList([1, 2])]) - |> Wonka.flatten; - - let res = [||]; - - source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - talkback^(. Pull); - expect(res) - |> toEqual([|Push(1), Push(2), Push(1), Push(2), End|]); - }) - ) - ); - - describe("switchMap", () => { - afterEach(() => Jest.useRealTimers()); - open Expect; - open! Expect.Operators; - - it("maps from a source and switches to a new source", () => { - let a = Wonka.fromList([1, 2, 3]); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - let source = Wonka.switchMap((. x) => Wonka.fromList([x * x]), a); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - expect(signals) == [|Push(1), Push(4), Push(9), End|]; - }); - - it("unsubscribes from previous subscriptions", () => { - Jest.useFakeTimers(); - - let a = Wonka.interval(100); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - let source = - Wonka.switchMap((. _) => Wonka.interval(25), a) |> Wonka.take(5); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - Jest.runTimersToTime(300); - - expect(signals) - == [|Push(0), Push(1), Push(2), Push(0), Push(1), End|]; - }); - - testPromise("follows the spec for listenables", () => - Wonka_thelpers.testWithListenable(source => - Wonka.switchMap((. x) => x, Wonka.fromList([source])) - ) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull, Pull, Pull|], [|Push(1), Push(2), End|])) - |> Js.Promise.resolve - ) - ); - - testPromise( - "ends itself and source when its talkback receives the End signal", () => - Wonka_thelpers.testTalkbackEnd(source => - Wonka.switchMap((. x) => x, Wonka.fromList([source])) - ) - |> Js.Promise.then_(x => - expect(x) - |> toEqual(([|Pull, Pull, Close|], [|Push(1)|])) - |> Js.Promise.resolve - ) - ); - }); - - describe("buffer", () => { - open Expect; - open! Expect.Operators; - - beforeEach(() => Jest.useFakeTimers()); - afterEach(() => Jest.useRealTimers()); - - it("should buffer values and emit them on each notifier tick", () => { - let a = Wonka.interval(50); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - let source = Wonka.buffer(Wonka.interval(100), a) |> Wonka.take(2); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - Jest.runTimersToTime(400); - - expect(signals) == [|Push([|0, 1|]), Push([|2, 3|]), End|]; - }); - - it("should end when the notifier ends", () => { - let a = Wonka.interval(50) |> Wonka.take(3); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - let source = Wonka.buffer(Wonka.interval(100), a); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - Jest.runTimersToTime(400); - - expect(signals) == [|Push([|0, 1|]), Push([|2|]), End|]; - }); - }); -}); - -describe("sink factories", () => { - describe("forEach", () => - Expect.( - it("calls a function for each emission of the passed source", () => { - let i = ref(0); - let nums = [||]; - - let source = sink => { - sink(. - Start( - (. signal) => - switch (signal) { - | Pull when i^ < 4 => - let num = i^; - i := i^ + 1; - sink(. Push(num)); - | Pull => sink(. End) - | _ => () - }, - ), - ); - }; - - Wonka.forEach((. x) => ignore(Js.Array.push(x, nums)), source); - expect(nums) |> toEqual([|0, 1, 2, 3|]); - }) - ) - ); - - describe("subscribe", () => - Expect.( - it( - "calls a function for each emission of the passed source and stops when unsubscribed", - () => { - let i = ref(0); - let nums = [||]; - let push = ref(() => ()); - - let source = sink => { - push := - ( - () => { - let num = i^; - i := i^ + 1; - sink(. Push(num)); - } - ); - - sink(. Start(Wonka_helpers.talkbackPlaceholder)); - }; - - let {unsubscribe} = - Wonka.subscribe( - (. x) => ignore(Js.Array.push(x, nums)), - source, - ); - - push^(); - push^(); - unsubscribe(); - push^(); - push^(); - - expect(nums) |> toEqual([|0, 1|]); - }, - ) - ) - ); - - describe("toObservable", () => - Expect.( - testPromise("should convert a source to an Observable", () => { - let source = Wonka.fromArray([|1, 2|]); - let observable = - Wonka.toObservable(source) |> Wonka_thelpers.observableFrom; - let values = [||]; - - let promise = - observable->Wonka_thelpers.observableForEach(value => - ignore(Js.Array.push(value, values)) - ); - - promise - |> Js.Promise.then_(() => - expect(values) |> toEqual([|1, 2|]) |> Js.Promise.resolve - ); - }) - ) - ); - - describe("toCallbag", () => - Expect.( - it("should convert a source to a Callbag", () => { - let source = Wonka.fromArray([|1, 2|]); - let callbag = Wonka.toCallbag(source); - let values = [||]; - - ( - Wonka_thelpers.callbagIterate(. value => - ignore(Js.Array.push(value, values)) - ) - )(. - callbag, - ); - - expect(values) |> toEqual([|1, 2|]); - }) - ) - ); - - describe("toArray", () => { - open Expect; - - it("converts iterable sources to arrays", () => { - let input = [|1, 2, 3|]; - let output = Wonka.fromArray(input) |> Wonka.toArray; - expect(output) |> toEqual(input); - }); - - it("converts mapped iterable sources to arrays", () => { - let input = [|1, 2, 3|]; - let output = - Wonka.fromArray(input) |> Wonka.map((. x) => x) |> Wonka.toArray; - expect(output) |> toEqual(input); - }); - - it("converts concatenated iterable sources to arrays", () => { - let inputA = [|1, 2, 3|]; - let inputB = [|1, 2, 3|]; - let input = Array.append(inputA, inputB); - - let output = - Wonka.concat([|Wonka.fromArray(inputA), Wonka.fromArray(inputB)|]) - |> Wonka.toArray; - - expect(output) |> toEqual(input); - }); - - it("ignores and closes asynchronous push streams", () => { - let input = [|1, 2, 3|]; - let source = Wonka.concat([|Wonka.fromArray(input), Wonka.never|]); - let (signals, wrappedSource) = - source |> Wonka_thelpers.testSourceOperator; - - ignore(Wonka.toArray(wrappedSource)); - expect(signals) |> toEqual([|Pull, Close|]); - }); - }); -}); - -describe("chains (integration)", () => - Expect.( - it("fromArray, map, forEach", () => { - let input = Array.mapi((i, _) => i, Array.make(1000, 1)); - let output = Array.map(x => string_of_int(x)); - let actual = [||]; - - input - |> Wonka.fromArray - |> Wonka.map((. x) => string_of_int(x)) - |> Wonka.forEach((. x) => ignore(Js.Array.push(x, actual))); - - expect(output) |> toEqual(output); - }) - ) -); - -describe("subject", () => { - open Expect; - open! Expect.Operators; - - it("sends values passed to .next to puller sinks", () => { - let signals = [||]; - - let subject = Wonka.makeSubject(); - - subject.source((. signal) => - switch (signal) { - | Start(_) => ignore() - | Push(_) => ignore(Js.Array.push(signal, signals)) - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - subject.next(10); - subject.next(20); - subject.next(30); - subject.next(40); - subject.complete(); - - expect(signals) == [|Push(10), Push(20), Push(30), Push(40), End|]; - }); - - it("handles multiple sinks", () => { - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signalsOne = [||]; - let signalsTwo = [||]; - - let subject = Wonka.makeSubject(); - - subject.source((. signal) => - switch (signal) { - | Start(x) => talkback := x - | Push(_) => ignore(Js.Array.push(signal, signalsOne)) - | End => ignore(Js.Array.push(signal, signalsOne)) - } - ); - - subject.source((. signal) => - switch (signal) { - | Start(_) => ignore() - | Push(_) => ignore(Js.Array.push(signal, signalsTwo)) - | End => ignore(Js.Array.push(signal, signalsTwo)) - } - ); - - subject.next(10); - subject.next(20); - subject.next(30); - - talkback^(. Close); - - subject.next(40); - subject.next(50); - - subject.complete(); - - expect((signalsOne, signalsTwo)) - == ( - [|Push(10), Push(20), Push(30)|], - [|Push(10), Push(20), Push(30), Push(40), Push(50), End|], - ); - }); - - it("handles multiple sinks that subscribe and close at different times", () => { - let talkbackOne = ref((. _: Wonka_types.talkbackT) => ()); - let talkbackTwo = ref((. _: Wonka_types.talkbackT) => ()); - let signalsOne = [||]; - let signalsTwo = [||]; - - let subject = Wonka.makeSubject(); - - subject.next(10); - subject.next(20); - - subject.source((. signal) => - switch (signal) { - | Start(x) => talkbackOne := x - | Push(_) => ignore(Js.Array.push(signal, signalsOne)) - | End => ignore(Js.Array.push(signal, signalsOne)) - } - ); - - subject.next(30); - - subject.source((. signal) => - switch (signal) { - | Start(x) => talkbackTwo := x - | Push(_) => ignore(Js.Array.push(signal, signalsTwo)) - | End => ignore(Js.Array.push(signal, signalsTwo)) - } - ); - - subject.next(40); - subject.next(50); - - talkbackTwo^(. Close); - - subject.next(60); - - talkbackOne^(. Close); - - subject.next(70); - subject.complete(); - - expect((signalsOne, signalsTwo)) - == ( - [|Push(30), Push(40), Push(50), Push(60)|], - [|Push(40), Push(50)|], - ); - }); -}); - -describe("web operators", () => { - describe("delay", () => { - open Expect; - open! Expect.Operators; - - afterEach(() => Jest.useRealTimers()); - - it("should not emit values before specified delay", () => { - Jest.useFakeTimers(); - let a = Wonka.fromList([1, 2, 3]); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - let source = WonkaJs.delay(200, a) |> Wonka.take(3); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - expect(signals) == [||]; - }); - - it("should emit values after specified delay", () => { - Jest.useFakeTimers(); - let a = Wonka.fromList([1, 2, 3]); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - let source = WonkaJs.delay(200, a) |> Wonka.take(3); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - Jest.runTimersToTime(400); - - expect(signals) == [|Push(1), Push(2)|]; - }); - - it("should emit an End signal when the source has emitted all values", () => { - Jest.useFakeTimers(); - let a = Wonka.fromList([1, 2, 3]); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - let source = WonkaJs.delay(200, a) |> Wonka.take(3); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - Jest.runTimersToTime(600); - - expect(signals) == [|Push(1), Push(2), Push(3), End|]; - }); - }); - - describe("throttle", () => { - open Expect; - open! Expect.Operators; - - afterEach(() => Jest.useRealTimers()); - - it( - "should not emit values before specified throttle (but include values on leading edge)", - () => { - Jest.useFakeTimers(); - let a = Wonka.interval(100); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - let source = WonkaJs.throttle((. _) => 600, a) |> Wonka.take(3); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - Jest.runTimersToTime(400); - - expect(signals) == [|Push(0)|]; - }, - ); - - it("should throttle emissions by the specified throttle", () => { - Jest.useFakeTimers(); - let a = Wonka.interval(100); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - let source = WonkaJs.throttle((. _) => 600, a) |> Wonka.take(3); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - Jest.runTimersToTime(1000); - - expect(signals) == [|Push(0), Push(7)|]; - }); - - it("should emit an End signal when the source has emitted all values", () => { - Jest.useFakeTimers(); - let a = Wonka.interval(100); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - let source = WonkaJs.throttle((. _) => 600, a) |> Wonka.take(3); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - Jest.runTimersToTime(1500); - - expect(signals) == [|Push(0), Push(7), Push(14), End|]; - }); - }); - - describe("debounce", () => { - open Expect; - open! Expect.Operators; - - afterEach(() => Jest.useRealTimers()); - - it( - "should not emit values if emitted before the debounce specified by the duration selector", - () => { - Jest.useFakeTimers(); - let a = Wonka.fromList([1, 2, 3]); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - let source = WonkaJs.debounce((. _) => 1000, a) |> Wonka.take(3); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - Jest.runTimersToTime(500); - - expect(signals) == [||]; - }, - ); - - it("should debounce emissions based on the duration selector", () => { - Jest.useFakeTimers(); - let a = Wonka.fromList([1, 2, 3]); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - let source = WonkaJs.debounce((. _) => 1000, a) |> Wonka.take(3); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - Jest.runTimersToTime(2000); - - expect(signals) == [|Push(1), Push(2)|]; - }); - - it("should emit an End signal when the source has emitted all values", () => { - Jest.useFakeTimers(); - let a = Wonka.fromList([1, 2, 3]); - - let talkback = ref((. _: Wonka_types.talkbackT) => ()); - let signals = [||]; - - let source = WonkaJs.debounce((. _) => 1000, a) |> Wonka.take(3); - - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - x(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, signals)); - talkback^(. Pull); - | End => ignore(Js.Array.push(signal, signals)) - } - ); - - Jest.runTimersToTime(3000); - - expect(signals) == [|Push(1), Push(2), Push(3), End|]; - }); - }); - - describe("toPromise", () => { - open Expect; - open! Expect.Operators; - - testPromise("should convert a source to a Promise", () => { - let a = Wonka.fromValue(1); - - a - |> WonkaJs.toPromise - |> Js.Promise.then_(x => expect(x) |> toEqual(1) |> Js.Promise.resolve); - }); - - testPromise("should resolve only the last emitted value from a source", () => { - let a = Wonka.fromList([1, 2, 3]); - - a - |> WonkaJs.toPromise - |> Js.Promise.then_(x => expect(x) |> toEqual(3) |> Js.Promise.resolve); - }); - }); -}); diff --git a/__tests__/wonka_thelpers.re b/__tests__/wonka_thelpers.re deleted file mode 100644 index 202a3ab..0000000 --- a/__tests__/wonka_thelpers.re +++ /dev/null @@ -1,149 +0,0 @@ -open Wonka_types; - -let testWithListenable = operator => { - let sink = ref((. _: signalT(int)) => ()); - let signals = [||]; - let source = x => { - sink := x; - x(. Start((. signal) => ignore(Js.Array.push(signal, signals)))); - }; - - let talkback = ref((. _: talkbackT) => ()); - let res = [||]; - operator(source, (. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - Js.Promise.make((~resolve, ~reject as _) => { - sink^(. Push(1)); - ignore( - Js.Global.setTimeout( - () => { - sink^(. Push(2)); - ignore( - Js.Global.setTimeout( - () => { - sink^(. End); - ignore( - Js.Global.setTimeout(() => resolve(. (signals, res)), 0), - ); - }, - 0, - ), - ); - }, - 0, - ), - ); - }); -}; - -let testTalkbackEnd = operator => { - let sink = ref((. _: signalT(int)) => ()); - let signals: array(talkbackT) = [||]; - let source = x => { - x(. Start((. signal) => ignore(Js.Array.push(signal, signals)))); - sink := x; - }; - - let talkback = ref((. _: talkbackT) => ()); - let res = [||]; - operator(source, (. signal) => - switch (signal) { - | Start(x) => talkback := x - | _ => ignore(Js.Array.push(signal, res)) - } - ); - - Js.Promise.make((~resolve, ~reject as _) => { - sink^(. Push(1)); - ignore( - Js.Global.setTimeout( - () => { - talkback^(. Close); - ignore(Js.Global.setTimeout(() => resolve(. (signals, res)), 0)); - }, - 0, - ), - ); - }); -}; - -let testSource = source => { - let talkback = ref((. _: talkbackT) => ()); - let res = [||]; - - Js.Promise.make((~resolve, ~reject as _) => - source((. signal) => - switch (signal) { - | Start(x) => - talkback := x; - talkback^(. Pull); - | Push(_) => - ignore(Js.Array.push(signal, res)); - talkback^(. Pull); - | End => - ignore(Js.Array.push(signal, res)); - resolve(. res); - } - ) - ); -}; - -let testSourceOperator = source => { - let res = [||]; - let innerSource = sink => { - source((. signal) => - switch (signal) { - | Start(outerTalkback) => - sink(. - Start( - (. talkback) => { - Js.Array.push(talkback, res); - outerTalkback(. talkback); - }, - ), - ) - | _ => sink(. signal) - } - ); - }; - - (res, innerSource); -}; - -type observableClassT; - -[@bs.module] external observableClass: observableClassT = "zen-observable"; -[@bs.send] -external _observableFromArray: - (observableClassT, array('a)) => Wonka.observableT('a) = - "from"; -[@bs.send] -external _observableFrom: - (observableClassT, Wonka.observableT('a)) => Wonka.observableT('a) = - "from"; -[@bs.send] -external observableForEach: - (Wonka.observableT('a), 'a => unit) => Js.Promise.t(unit) = - "forEach"; - -let observableFromArray = (arr: array('a)): Wonka.observableT('a) => - _observableFromArray(observableClass, arr); -let observableFrom = (obs: Wonka.observableT('a)): Wonka.observableT('a) => - _observableFrom(observableClass, obs); - -[@bs.module] -external callbagFromArray: array('a) => Wonka.callbagT('a) = - "callbag-from-iter"; - -[@bs.module] -external callbagFromObservable: Wonka.observableT('a) => Wonka.callbagT('a) = - "callbag-from-obs"; - -[@bs.module] -external callbagIterate: (. ('a => unit)) => (. Wonka.callbagT('a)) => unit = - "callbag-iterate"; diff --git a/bsconfig.json b/bsconfig.json index 42011bc..690bc28 100644 --- a/bsconfig.json +++ b/bsconfig.json @@ -4,51 +4,49 @@ "namespace": false, "bsc-flags": ["-bs-super-errors", "-bs-no-version-header"], "refmt": 3, - "package-specs": [ - { - "module": "commonjs" - }, - { - "module": "es6", - "in-source": true + "gentypeconfig": { + "language": "typescript", + "importPath": "relative", + "shims": { + "Js": "Js", + "Dom": "Dom", + "ReasonPervasives": "ReasonPervasives" } - ], + }, + "suffix": ".bs.js", + "package-specs": { + "module": "es6", + "in-source": true + }, "sources": [ { "dir": "src", "subdirs": [ { - "dir": "operators" + "dir": "shims" }, { - "dir": "sources" - }, - { - "dir": "sinks" + "dir": "helpers" }, { "dir": "web", "backend": ["js"] - } - ] - }, - { - "dir": "include", - "subdirs": [ - { - "dir": "rebel_native" }, { - "dir": "rebel_js", - "backend": ["js"] + "dir": "include", + "subdirs": [ + { + "dir": "rebel_native" + }, + { + "dir": "rebel_js", + "backend": ["js"] + } + ] } ] - }, - { - "dir": "__tests__", - "type": "dev" } ], "bs-dependencies": [], - "bs-dev-dependencies": ["@glennsl/bs-jest"] + "bs-dev-dependencies": [] } diff --git a/index.js.flow b/index.js.flow index 3f5daf5..8bdb9c3 100644 --- a/index.js.flow +++ b/index.js.flow @@ -1,3 +1,3 @@ // @flow -declare export * from "./src/index.js.flow" +declare export * from "./dist/types/src/wonka.js.flow" diff --git a/package.json b/package.json index b0c0cac..3a6a9f9 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,16 @@ { "name": "wonka", "description": "A fast push & pull stream library for Reason/OCaml, Flow, and TypeScript", - "version": "3.2.2", + "version": "4.0.0-rc.0", "author": "Phil Pluckthun ", - "source": "./src/index.js", + "source": "./src/wonka.ts", "main": "./dist/wonka.js", "module": "./dist/wonka.es.js", "jsnext:main": "./dist/wonka.es.js", - "types": "./src/index.d.ts", + "types": "./dist/types/src/wonka.d.ts", "sideEffects": false, "files": [ "src", - "include", - "lib/js", "dist", "docs/*.md", "*.md", @@ -23,17 +21,17 @@ "docs:dev": "gatsby develop", "docs:build": "gatsby build", "check": "tsc --noEmit", - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w", + "bs:clean": "bsb -clean-world", + "bs:build": "bsb -make-world", + "bs:watch": "bsb -make-world -w", "test": "jest", - "coverage": "jest -c ./.jest.coverage.json --coverage", - "test:watch": "jest --watch", "refmt": "bsrefmt --in-place **/**/*.{re,rei}", "flowgen": "./scripts/generate-flow-files.js", + "bundle:clean": "rimraf dist node_modules/.cache", "bundle": "rollup -c rollup.config.js", - "prepublishOnly": "run-s clean build bundle flowgen check test", - "codecov": "codecov" + "clean": "run-s bs:clean bundle:clean", + "build": "run-s bs:build bundle flowgen", + "prepublishOnly": "run-s clean build bundle flowgen check test" }, "keywords": [ "wonka", @@ -53,34 +51,43 @@ "license": "MIT", "dependencies": {}, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "^0.13.0", - "@babel/core": "^7.7.5", - "@glennsl/bs-jest": "^0.4.8", + "@ampproject/rollup-plugin-closure-compiler": "^0.18.1", + "@babel/core": "^7.7.7", + "@babel/plugin-syntax-typescript": "^7.7.4", + "@babel/plugin-transform-modules-commonjs": "^7.7.5", + "@babel/preset-env": "^7.7.7", + "@glennsl/bs-jest": "^0.4.9", + "@rollup/plugin-buble": "^0.21.0", + "@rollup/plugin-commonjs": "^11.0.1", + "@rollup/plugin-node-resolve": "^6.1.0", + "@types/jest": "^24.0.25", + "@types/zen-observable": "^0.8.0", "babel-plugin-closure-elimination": "^1.3.0", - "bs-platform": "^5.0.6", + "bs-platform": "7.0.2-dev.1", "callbag-from-iter": "^1.2.0", - "callbag-from-obs": "^1.2.0", "callbag-iterate": "^1.0.0", - "codecov": "^3.5.0", - "flowgen": "^1.9.2", - "gatsby": "^2.13.41", - "gatsby-plugin-netlify": "^2.1.3", + "callbag-take": "^1.4.0", + "codecov": "^3.6.1", + "flowgen": "^1.10.0", + "gatsby": "^2.18.17", + "gatsby-plugin-netlify": "^2.1.30", "gatsby-theme-docs-system": "^0.2.2", + "gentype": "^3.9.1", "globby": "^10.0.1", - "husky": "^3.0.1", - "lint-staged": "^9.2.1", + "husky": "^3.1.0", + "lint-staged": "^9.5.0", "npm-run-all": "^4.1.5", - "prettier": "^1.18.2", - "react": "^16.8.6", - "react-dom": "^16.8.6", - "rollup": "^1.27.13", + "prettier": "^1.19.1", + "react": "^16.12.0", + "react-dom": "^16.12.0", + "rimraf": "^3.0.0", + "rollup": "^1.28.0", "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-buble": "^0.19.8", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-terser": "^5.1.3", - "typescript": "^3.7.3", - "zen-observable": "^0.8.14" + "rollup-plugin-typescript2": "^0.25.3", + "ts-jest": "^24.2.0", + "typescript": "^3.7.4", + "zen-observable": "^0.8.15" }, "lint-staged": { "*.{d.ts,js}": [ @@ -102,11 +109,27 @@ "printWidth": 100 }, "jest": { + "testEnvironment": "node", + "testRegex": "(src/.*(\\.|/)(test|spec))\\.(t|j)sx?$", "moduleFileExtensions": [ - "js" + "js", + "ts", + "tsx" ], - "testMatch": [ - "**/lib/js/__tests__/*_test.js" + "transform": { + "\\.jsx?$": "/scripts/jest-transform-esm.js", + "\\.tsx?$": "ts-jest" + }, + "transformIgnorePatterns": [ + "/node_modules/(?!bs-platform)" + ], + "collectCoverageFrom": [ + "!/src/wonka.{ts,bs.js}", + "!/src/wonka_types.{ts,bs.js}", + "!/src/include/**", + "!/src/helpers/**", + "!/src/**/*.{shim,gen}.{ts,tsx}", + "/src/**/*.{js,ts,tsx}" ] } } diff --git a/rollup.config.js b/rollup.config.js index ddf8941..cadc924 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,21 +1,15 @@ -import { basename } from 'path'; -import commonjs from 'rollup-plugin-commonjs'; -import nodeResolve from 'rollup-plugin-node-resolve'; -import buble from 'rollup-plugin-buble'; +import { resolve, basename } from 'path'; +import commonjs from '@rollup/plugin-commonjs'; +import nodeResolve from '@rollup/plugin-node-resolve'; +import typescript from 'rollup-plugin-typescript2'; +import buble from '@rollup/plugin-buble'; import babel from 'rollup-plugin-babel'; import { terser } from 'rollup-plugin-terser'; import compiler from '@ampproject/rollup-plugin-closure-compiler'; +const cwd = process.cwd(); const pkgInfo = require('./package.json'); -const { main, peerDependencies, dependencies } = pkgInfo; -const name = basename(main, '.js'); - -let external = ['dns', 'fs', 'path', 'url']; -if (pkgInfo.peerDependencies) external.push(...Object.keys(peerDependencies)); -if (pkgInfo.dependencies) external.push(...Object.keys(dependencies)); - -const externalPredicate = new RegExp(`^(${external.join('|')})($|/)`); -const externalTest = id => externalPredicate.test(id); +const name = basename(pkgInfo.main, '.js'); const terserPretty = terser({ sourcemap: true, @@ -61,23 +55,53 @@ const terserMinified = terser({ } }); -// This plugin finds state that BuckleScript has compiled to array expressions -// and unwraps them and their accessors to inline variables +const importAllPlugin = ({ types: t }) => ({ + visitor: { + VariableDeclarator(path) { + if ( + t.isIdentifier(path.node.id) && + t.isCallExpression(path.node.init) && + t.isIdentifier(path.node.init.callee) && + path.node.init.callee.name === 'require' && + path.node.init.arguments.length === 1 + ) { + path.parentPath.replaceWith( + t.importDeclaration( + [t.importNamespaceSpecifier(path.node.id)], + path.node.init.arguments[0] + ) + ); + } + } + } +}); + const unwrapStatePlugin = ({ types: t }) => ({ pre() { this.props = new Map(); + this.test = node => + /state$/i.test(node.id.name) || + (node.init.properties.length === 1 && node.init.properties[0].key.name === 'contents'); }, visitor: { VariableDeclarator(path) { - if (t.isIdentifier(path.node.id) && t.isArrayExpression(path.node.init)) { + if ( + t.isIdentifier(path.node.id) && + t.isObjectExpression(path.node.init) && + path.node.init.properties.every( + prop => t.isObjectProperty(prop) && t.isIdentifier(prop.key) + ) && + this.test(path.node) + ) { const id = path.node.id.name; - const elements = path.node.init.elements; - const decl = elements.map((element, i) => { - const key = `${id}$${i}`; - return t.variableDeclarator(t.identifier(key), element); + const properties = path.node.init.properties; + const propNames = new Set(properties.map(x => x.key.name)); + const decl = properties.map(prop => { + const key = `${id}$${prop.key.name}`; + return t.variableDeclarator(t.identifier(key), prop.value); }); - this.props.set(id, elements.length); + this.props.set(id, propNames); path.parentPath.replaceWithMultiple(t.variableDeclaration('let', decl)); } }, @@ -85,12 +109,12 @@ const unwrapStatePlugin = ({ types: t }) => ({ if ( t.isIdentifier(path.node.object) && this.props.has(path.node.object.name) && - t.isNumericLiteral(path.node.property) && - path.node.property.value < this.props.get(path.node.object.name) + t.isIdentifier(path.node.property) && + this.props.get(path.node.object.name).has(path.node.property.name) ) { const id = path.node.object.name; - const elementIndex = path.node.property.value; - path.replaceWith(t.identifier(`${id}$${elementIndex}`)); + const propName = path.node.property.name; + path.replaceWith(t.identifier(`${id}$${propName}`)); } } } @@ -98,13 +122,39 @@ const unwrapStatePlugin = ({ types: t }) => ({ const makePlugins = isProduction => [ - nodeResolve({ - mainFields: ['module', 'jsnext', 'main'], - browser: true + babel({ + babelrc: false, + extensions: ['ts', 'tsx', 'js'], + exclude: 'node_modules/**', + presets: [], + plugins: ['@babel/plugin-syntax-typescript', importAllPlugin] + }), + typescript({ + typescript: require('typescript'), + cacheRoot: './node_modules/.cache/.rts2_cache', + objectHashIgnoreUnknownHack: true, + useTsconfigDeclarationDir: true, + tsconfigOverride: { + compilerOptions: { + strict: false, + noUnusedParameters: false, + declaration: !isProduction, + declarationDir: resolve(cwd, './dist/types/'), + target: 'esnext', + module: 'es2015', + rootDir: cwd + } + } }), commonjs({ ignoreGlobal: true, - include: /\/node_modules\// + include: ['*', '**'], + extensions: ['.js', '.ts', '.tsx'] + }), + nodeResolve({ + mainFields: ['module', 'jsnext', 'main'], + extensions: ['.js', '.ts', '.tsx'], + browser: true }), buble({ transforms: { @@ -117,6 +167,7 @@ const makePlugins = isProduction => }), babel({ babelrc: false, + extensions: ['ts', 'tsx', 'js'], exclude: 'node_modules/**', presets: [], plugins: ['babel-plugin-closure-elimination', unwrapStatePlugin] @@ -128,9 +179,9 @@ const makePlugins = isProduction => ].filter(Boolean); const config = { - input: './src/index.js', + input: './src/wonka.ts', onwarn: () => {}, - external: externalTest, + external: () => false, treeshake: { propertyReadSideEffects: false } @@ -142,7 +193,6 @@ export default [ plugins: makePlugins(false), output: [ { - sourcemap: true, legacy: true, freeze: false, esModule: false, diff --git a/scripts/generate-flow-files.js b/scripts/generate-flow-files.js index 7f7d894..aa98989 100755 --- a/scripts/generate-flow-files.js +++ b/scripts/generate-flow-files.js @@ -28,7 +28,7 @@ const genEntry = async () => { let entry = await readFile(path.resolve(cwd, 'index.js.flow'), { encoding: 'utf8' }); - entry = entry.replace(/.\/src/g, '../src'); + entry = entry.replace(/.\/dist\//g, './'); const outputCJS = path.resolve(cwd, 'dist/wonka.js.flow'); const outputES = path.resolve(cwd, 'dist/wonka.es.js.flow'); @@ -40,14 +40,7 @@ const genEntry = async () => { }; const gen = async () => { - const input = await globby(['src/*.d.ts', 'src/**/*.d.ts'], { - gitignore: true - }); - - if (input.length === 0) { - throw new Error('No input files passed as arguments.'); - } - + const input = await globby('dist/types/**/*.d.ts'); console.log(`Compiling ${input.length} TS definitions to Flow...`); const defs = input.map(filename => { @@ -60,13 +53,7 @@ const gen = async () => { const basename = path.basename(fullpath, '.d.ts'); const filepath = path.dirname(fullpath); const newpath = path.join(filepath, basename + '.js.flow'); - - // Fix incorrect imports - const fixedFlowdef = flowdef.replace(/^import \{/g, 'import type {'); - - return writeFile(newpath, preamble + fixedFlowdef, { - encoding: 'utf8' - }); + return writeFile(newpath, preamble + flowdef); }); return Promise.all([...write, genEntry()]); diff --git a/scripts/jest-transform-esm.js b/scripts/jest-transform-esm.js new file mode 100644 index 0000000..e304869 --- /dev/null +++ b/scripts/jest-transform-esm.js @@ -0,0 +1,5 @@ +const { createTransformer } = require('babel-jest'); + +module.exports = createTransformer({ + plugins: [require.resolve('@babel/plugin-transform-modules-commonjs')] +}); diff --git a/src/dune/dune b/src/dune/dune index 0ed0fe0..a0841e2 100644 --- a/src/dune/dune +++ b/src/dune/dune @@ -4,7 +4,7 @@ (libraries belt) (preprocess (pps belt.ppx))) -(copy_files ../../include/rebel_native/*.{re,rei}) +(copy_files ../include/rebel_native/*.{re,rei}) (copy_files ../operators/*.{re,rei}) (copy_files ../sources/*.{re,rei}) (copy_files ../sinks/*.{re,rei}) diff --git a/src/helpers/pipe.ts b/src/helpers/pipe.ts new file mode 100644 index 0000000..a401430 --- /dev/null +++ b/src/helpers/pipe.ts @@ -0,0 +1,157 @@ +import { sourceT as Source } from '../wonka_types.gen'; + +/* pipe definitions for source + operators composition */ + +function pipe(source: Source, op1: (source: Source) => Source): Source; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source +): Source; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source, + op3: (source: Source) => Source +): Source; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source, + op3: (source: Source) => Source, + op4: (source: Source) => Source +): Source; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source, + op3: (source: Source) => Source, + op4: (source: Source) => Source, + op5: (source: Source) => Source +): Source; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source, + op3: (source: Source) => Source, + op4: (source: Source) => Source, + op5: (source: Source) => Source, + op6: (source: Source) => Source +): Source; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source, + op3: (source: Source) => Source, + op4: (source: Source) => Source, + op5: (source: Source) => Source, + op6: (source: Source) => Source, + op7: (source: Source) => Source +): Source; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source, + op3: (source: Source) => Source, + op4: (source: Source) => Source, + op5: (source: Source) => Source, + op6: (source: Source) => Source, + op7: (source: Source) => Source, + op8: (source: Source) => Source +): Source; + +/* pipe definitions for source + operators + consumer composition */ + +function pipe(source: Source, consumer: (source: Source) => R): R; + +function pipe( + source: Source, + op1: (source: Source) => Source, + consumer: (source: Source) => R +): R; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source, + consumer: (source: Source) => R +): R; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source, + op3: (source: Source) => Source, + consumer: (source: Source) => R +): R; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source, + op3: (source: Source) => Source, + op4: (source: Source) => Source, + consumer: (source: Source) => R +): R; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source, + op3: (source: Source) => Source, + op4: (source: Source) => Source, + op5: (source: Source) => Source, + consumer: (source: Source) => R +): R; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source, + op3: (source: Source) => Source, + op4: (source: Source) => Source, + op5: (source: Source) => Source, + op6: (source: Source) => Source, + consumer: (source: Source) => R +): R; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source, + op3: (source: Source) => Source, + op4: (source: Source) => Source, + op5: (source: Source) => Source, + op6: (source: Source) => Source, + op7: (source: Source) => Source, + consumer: (source: Source) => R +): R; + +function pipe( + source: Source, + op1: (source: Source) => Source, + op2: (source: Source) => Source, + op3: (source: Source) => Source, + op4: (source: Source) => Source, + op5: (source: Source) => Source, + op6: (source: Source) => Source, + op7: (source: Source) => Source, + op8: (source: Source) => Source, + consumer: (source: Source) => R +): R; + +function pipe() { + let x = arguments[0]; + for (let i = 1, l = arguments.length; i < l; i++) + x = arguments[i](x); + return x; +} + +export { pipe }; diff --git a/src/helpers/wonka_deriving.ts b/src/helpers/wonka_deriving.ts new file mode 100644 index 0000000..0baed70 --- /dev/null +++ b/src/helpers/wonka_deriving.ts @@ -0,0 +1,24 @@ +import { __ as block } from 'bs-platform/lib/es6/block'; +import { talkbackPlaceholder } from './wonka_helpers.bs'; +import * as types from '../wonka_types.gen'; + +type talkbackCb = (tb: types.talkbackT) => void; + +export const pull = (0 as any as types.talkbackT); +export const close = (1 as any as types.talkbackT); + +export const start = (tb: talkbackCb): types.signalT => block(0, [tb]) as any; +export const push = (x: a): types.signalT => block(1, [x]) as any; +export const end = (): types.signalT => 0 as any; + +export const isStart = (s: types.signalT) => + typeof s !== 'number' && (s as any).tag === 0; +export const isPush = (s: types.signalT) => + typeof s !== 'number' && (s as any).tag === 1; +export const isEnd = (s: types.signalT) => + typeof s === 'number' && (s as any) === 0; + +export const unboxPush = (s: types.signalT): a | null => + isPush(s) ? (s as any)[0] : null; +export const unboxStart = (s: types.signalT): talkbackCb => + isStart(s) ? (s as any)[0] : (talkbackPlaceholder as any); diff --git a/src/wonka_helpers.re b/src/helpers/wonka_helpers.re similarity index 100% rename from src/wonka_helpers.re rename to src/helpers/wonka_helpers.re diff --git a/src/include/rebel.js b/src/include/rebel.js new file mode 100644 index 0000000..2aae808 --- /dev/null +++ b/src/include/rebel.js @@ -0,0 +1,10 @@ +import * as Rebel_js from './rebel_js/Rebel_js.js'; + +var $$Array = Rebel_js.$$Array; + +var MutableStack = Rebel_js.MutableStack; + +var MutableQueue = Rebel_js.MutableQueue; + +export { $$Array, MutableStack, MutableQueue }; +/* No side effect */ diff --git a/include/rebel.ml b/src/include/rebel.ml similarity index 100% rename from include/rebel.ml rename to src/include/rebel.ml diff --git a/include/rebel_js/Array_js.re b/src/include/rebel_js/Array_js.re similarity index 100% rename from include/rebel_js/Array_js.re rename to src/include/rebel_js/Array_js.re diff --git a/include/rebel_js/MutableQueue_js.re b/src/include/rebel_js/MutableQueue_js.re similarity index 100% rename from include/rebel_js/MutableQueue_js.re rename to src/include/rebel_js/MutableQueue_js.re diff --git a/include/rebel_js/MutableStack_js.re b/src/include/rebel_js/MutableStack_js.re similarity index 100% rename from include/rebel_js/MutableStack_js.re rename to src/include/rebel_js/MutableStack_js.re diff --git a/include/rebel_js/Rebel_js.re b/src/include/rebel_js/Rebel_js.re similarity index 100% rename from include/rebel_js/Rebel_js.re rename to src/include/rebel_js/Rebel_js.re diff --git a/include/rebel_native/Array_native.re b/src/include/rebel_native/Array_native.re similarity index 100% rename from include/rebel_native/Array_native.re rename to src/include/rebel_native/Array_native.re diff --git a/include/rebel_native/MutableQueue_native.re b/src/include/rebel_native/MutableQueue_native.re similarity index 100% rename from include/rebel_native/MutableQueue_native.re rename to src/include/rebel_native/MutableQueue_native.re diff --git a/include/rebel_native/MutableStack_native.re b/src/include/rebel_native/MutableStack_native.re similarity index 100% rename from include/rebel_native/MutableStack_native.re rename to src/include/rebel_native/MutableStack_native.re diff --git a/include/rebel_native/Rebel_native.re b/src/include/rebel_native/Rebel_native.re similarity index 100% rename from include/rebel_native/Rebel_native.re rename to src/include/rebel_native/Rebel_native.re diff --git a/src/index.d.ts b/src/index.d.ts deleted file mode 100644 index 3cc59e2..0000000 --- a/src/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './pipe'; -export * from './wonka_types'; -export * from './wonka'; -export * from './web/wonkaJs'; diff --git a/src/index.js b/src/index.js deleted file mode 100644 index c542f78..0000000 --- a/src/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './pipe'; -export * from './wonka'; diff --git a/src/operators/wonka_operator_buffer.d.ts b/src/operators/wonka_operator_buffer.d.ts deleted file mode 100644 index 8a0ee90..0000000 --- a/src/operators/wonka_operator_buffer.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source, Operator } from '../wonka_types'; - -export const buffer: (signal: Source) => Operator; diff --git a/src/operators/wonka_operator_buffer.re b/src/operators/wonka_operator_buffer.re deleted file mode 100644 index fb499ac..0000000 --- a/src/operators/wonka_operator_buffer.re +++ /dev/null @@ -1,72 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -type bufferStateT('a) = { - mutable buffer: Rebel.MutableQueue.t('a), - mutable sourceTalkback: (. talkbackT) => unit, - mutable notifierTalkback: (. talkbackT) => unit, - mutable ended: bool, -}; - -let buffer = (notifier: sourceT('a)) => - curry((source: sourceT('b)) => - curry((sink: sinkT(array('b))) => { - let state: bufferStateT('b) = { - buffer: Rebel.MutableQueue.make(), - sourceTalkback: talkbackPlaceholder, - notifierTalkback: talkbackPlaceholder, - ended: false, - }; - - source((. signal) => - switch (signal) { - | Start(tb) => - state.sourceTalkback = tb; - - notifier((. signal) => - switch (signal) { - | Start(tb) => - state.notifierTalkback = tb; - state.notifierTalkback(. Pull); - | Push(_) when !state.ended => - sink(. Push(Rebel.MutableQueue.toArray(state.buffer))); - state.buffer = Rebel.MutableQueue.make(); - state.notifierTalkback(. Pull); - | Push(_) => () - | End when !state.ended => - state.ended = true; - state.sourceTalkback(. Close); - sink(. Push(Rebel.MutableQueue.toArray(state.buffer))); - sink(. End); - | End => () - } - ); - | Push(value) when !state.ended => - Rebel.MutableQueue.add(state.buffer, value); - state.sourceTalkback(. Pull); - | Push(_) => () - | End when !state.ended => - state.ended = true; - state.notifierTalkback(. Close); - sink(. Push(Rebel.MutableQueue.toArray(state.buffer))); - sink(. End); - | End => () - } - ); - - sink(. - Start( - (. signal) => - if (!state.ended) { - switch (signal) { - | Close => - state.ended = true; - state.sourceTalkback(. Close); - state.notifierTalkback(. Close); - | Pull => state.sourceTalkback(. Pull) - }; - }, - ), - ); - }) - ); diff --git a/src/operators/wonka_operator_buffer.rei b/src/operators/wonka_operator_buffer.rei deleted file mode 100644 index 7aa493f..0000000 --- a/src/operators/wonka_operator_buffer.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let buffer: (sourceT('a), sourceT('b), sinkT(array('b))) => unit; diff --git a/src/operators/wonka_operator_combine.d.ts b/src/operators/wonka_operator_combine.d.ts deleted file mode 100644 index 47df8d9..0000000 --- a/src/operators/wonka_operator_combine.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source } from '../wonka_types'; - -export const combine: (a: Source) => (b: Source) => Source<[A, B]>; diff --git a/src/operators/wonka_operator_combine.re b/src/operators/wonka_operator_combine.re deleted file mode 100644 index b15783b..0000000 --- a/src/operators/wonka_operator_combine.re +++ /dev/null @@ -1,84 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -type combineStateT('a, 'b) = { - mutable talkbackA: (. talkbackT) => unit, - mutable talkbackB: (. talkbackT) => unit, - mutable lastValA: option('a), - mutable lastValB: option('b), - mutable gotSignal: bool, - mutable endCounter: int, - mutable ended: bool, -}; - -let combine = sourceA => - curry(sourceB => - curry(sink => { - let state = { - talkbackA: talkbackPlaceholder, - talkbackB: talkbackPlaceholder, - lastValA: None, - lastValB: None, - gotSignal: false, - endCounter: 0, - ended: false, - }; - - sourceA((. signal) => - switch (signal, state.lastValB) { - | (Start(tb), _) => state.talkbackA = tb - | (Push(a), None) => - state.lastValA = Some(a); - state.gotSignal = false; - | (Push(a), Some(b)) when !state.ended => - state.lastValA = Some(a); - state.gotSignal = false; - sink(. Push((a, b))); - | (End, _) when state.endCounter < 1 => - state.endCounter = state.endCounter + 1 - | (End, _) when !state.ended => - state.ended = true; - sink(. End); - | _ => () - } - ); - - sourceB((. signal) => - switch (signal, state.lastValA) { - | (Start(tb), _) => state.talkbackB = tb - | (Push(b), None) => - state.lastValB = Some(b); - state.gotSignal = false; - | (Push(b), Some(a)) when !state.ended => - state.lastValB = Some(b); - state.gotSignal = false; - sink(. Push((a, b))); - | (End, _) when state.endCounter < 1 => - state.endCounter = state.endCounter + 1 - | (End, _) when !state.ended => - state.ended = true; - sink(. End); - | _ => () - } - ); - - sink(. - Start( - (. signal) => - if (!state.ended) { - switch (signal) { - | Close => - state.ended = true; - state.talkbackA(. Close); - state.talkbackB(. Close); - | Pull when !state.gotSignal => - state.gotSignal = true; - state.talkbackA(. signal); - state.talkbackB(. signal); - | Pull => () - }; - }, - ), - ); - }) - ); diff --git a/src/operators/wonka_operator_combine.rei b/src/operators/wonka_operator_combine.rei deleted file mode 100644 index 894750b..0000000 --- a/src/operators/wonka_operator_combine.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let combine: (sourceT('a), sourceT('b), sinkT(('a, 'b))) => unit; diff --git a/src/operators/wonka_operator_concatMap.d.ts b/src/operators/wonka_operator_concatMap.d.ts deleted file mode 100644 index b68e1e6..0000000 --- a/src/operators/wonka_operator_concatMap.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Source, Operator } from '../wonka_types'; - -export const concatMap: (f: (value: A) => Source) => Operator; -export const concat: (sources: Array>) => Source; -export const concatAll: (source: Source>) => Source; diff --git a/src/operators/wonka_operator_concatMap.re b/src/operators/wonka_operator_concatMap.re deleted file mode 100644 index 4d3a5f0..0000000 --- a/src/operators/wonka_operator_concatMap.re +++ /dev/null @@ -1,98 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -type concatMapStateT('a) = { - inputQueue: Rebel.MutableQueue.t('a), - mutable outerTalkback: (. talkbackT) => unit, - mutable innerTalkback: (. talkbackT) => unit, - mutable innerActive: bool, - mutable closed: bool, - mutable ended: bool, -}; - -let concatMap = f => - curry(source => - curry(sink => { - let state: concatMapStateT('a) = { - inputQueue: Rebel.MutableQueue.make(), - outerTalkback: talkbackPlaceholder, - innerTalkback: talkbackPlaceholder, - innerActive: false, - closed: false, - ended: false, - }; - - let rec applyInnerSource = innerSource => - innerSource((. signal) => - switch (signal) { - | End => - state.innerActive = false; - state.innerTalkback = talkbackPlaceholder; - - switch (Rebel.MutableQueue.pop(state.inputQueue)) { - | Some(input) => applyInnerSource(f(. input)) - | None when state.ended => sink(. End) - | None => () - }; - | Start(tb) => - state.innerActive = true; - state.innerTalkback = tb; - tb(. Pull); - | Push(x) when !state.closed => - sink(. Push(x)); - state.innerTalkback(. Pull); - | Push(_) => () - } - ); - - source((. signal) => - switch (signal) { - | End when !state.ended => - state.ended = true; - if (!state.innerActive - && Rebel.MutableQueue.isEmpty(state.inputQueue)) { - sink(. End); - }; - | End => () - | Start(tb) => - state.outerTalkback = tb; - tb(. Pull); - | Push(x) when !state.ended => - if (state.innerActive) { - Rebel.MutableQueue.add(state.inputQueue, x); - } else { - applyInnerSource(f(. x)); - }; - - state.outerTalkback(. Pull); - | Push(_) => () - } - ); - - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => - if (!state.ended) { - state.innerTalkback(. Pull); - } - | Close => - state.innerTalkback(. Close); - if (!state.ended) { - state.ended = true; - state.closed = true; - state.outerTalkback(. Close); - state.innerTalkback = talkbackPlaceholder; - }; - }, - ), - ); - }) - ); - -let concatAll = source => concatMap((. x) => x, source); - -let concat = sources => { - Wonka_source_fromArray.(concatMap((. x) => x, fromArray(sources))); -}; diff --git a/src/operators/wonka_operator_concatMap.rei b/src/operators/wonka_operator_concatMap.rei deleted file mode 100644 index 91c49be..0000000 --- a/src/operators/wonka_operator_concatMap.rei +++ /dev/null @@ -1,5 +0,0 @@ -open Wonka_types; - -let concatMap: ((. 'a) => sourceT('b), sourceT('a), sinkT('b)) => unit; -let concat: (array(sourceT('a)), sinkT('a)) => unit; -let concatAll: (sourceT(sourceT('a)), sinkT('a)) => unit; diff --git a/src/operators/wonka_operator_filter.d.ts b/src/operators/wonka_operator_filter.d.ts deleted file mode 100644 index 3c002f4..0000000 --- a/src/operators/wonka_operator_filter.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const filter: (f: (value: A) => boolean) => Operator; diff --git a/src/operators/wonka_operator_filter.re b/src/operators/wonka_operator_filter.re deleted file mode 100644 index 507826d..0000000 --- a/src/operators/wonka_operator_filter.re +++ /dev/null @@ -1,14 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -let filter = f => - curry(source => - curry(sink => - captureTalkback(source, (. signal, talkback) => - switch (signal) { - | Push(x) when !f(. x) => talkback(. Pull) - | _ => sink(. signal) - } - ) - ) - ); diff --git a/src/operators/wonka_operator_filter.rei b/src/operators/wonka_operator_filter.rei deleted file mode 100644 index b0b5634..0000000 --- a/src/operators/wonka_operator_filter.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let filter: ((. 'a) => bool, sourceT('a), sinkT('a)) => unit; diff --git a/src/operators/wonka_operator_map.d.ts b/src/operators/wonka_operator_map.d.ts deleted file mode 100644 index 9aafa39..0000000 --- a/src/operators/wonka_operator_map.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const map: (f: (value: A) => B) => Operator; diff --git a/src/operators/wonka_operator_map.re b/src/operators/wonka_operator_map.re deleted file mode 100644 index eeb7859..0000000 --- a/src/operators/wonka_operator_map.re +++ /dev/null @@ -1,16 +0,0 @@ -open Wonka_types; - -let map = f => - curry(source => - curry(sink => - source((. signal) => - sink(. - switch (signal) { - | Start(x) => Start(x) - | Push(x) => Push(f(. x)) - | End => End - }, - ) - ) - ) - ); diff --git a/src/operators/wonka_operator_map.rei b/src/operators/wonka_operator_map.rei deleted file mode 100644 index 14d86da..0000000 --- a/src/operators/wonka_operator_map.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let map: ((. 'a) => 'b, sourceT('a), sinkT('b)) => unit; diff --git a/src/operators/wonka_operator_mergeMap.d.ts b/src/operators/wonka_operator_mergeMap.d.ts deleted file mode 100644 index 3b2c759..0000000 --- a/src/operators/wonka_operator_mergeMap.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Source, Operator } from '../wonka_types'; - -export const mergeMap: (f: (value: A) => Source) => Operator; -export const merge: (sources: Array>) => Source; -export const mergeAll: (source: Source>) => Source; -export const flatten: (source: Source>) => Source; diff --git a/src/operators/wonka_operator_mergeMap.re b/src/operators/wonka_operator_mergeMap.re deleted file mode 100644 index 11e462e..0000000 --- a/src/operators/wonka_operator_mergeMap.re +++ /dev/null @@ -1,93 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -type mergeMapStateT = { - mutable outerTalkback: (. talkbackT) => unit, - mutable innerTalkbacks: Rebel.Array.t((. talkbackT) => unit), - mutable ended: bool, -}; - -let mergeMap = f => - curry(source => - curry(sink => { - let state: mergeMapStateT = { - outerTalkback: talkbackPlaceholder, - innerTalkbacks: Rebel.Array.makeEmpty(), - ended: false, - }; - - let applyInnerSource = innerSource => { - let talkback = ref(talkbackPlaceholder); - - innerSource((. signal) => - switch (signal) { - | End => - state.innerTalkbacks = - Rebel.Array.filter(state.innerTalkbacks, x => x !== talkback^); - if (state.ended && Rebel.Array.size(state.innerTalkbacks) === 0) { - sink(. End); - }; - | Start(tb) => - talkback := tb; - state.innerTalkbacks = - Rebel.Array.append(state.innerTalkbacks, tb); - tb(. Pull); - | Push(x) when Rebel.Array.size(state.innerTalkbacks) !== 0 => - sink(. Push(x)); - talkback^(. Pull); - | Push(_) => () - } - ); - }; - - source((. signal) => - switch (signal) { - | End when !state.ended => - state.ended = true; - if (Rebel.Array.size(state.innerTalkbacks) === 0) { - sink(. End); - }; - | End => () - | Start(tb) => - state.outerTalkback = tb; - tb(. Pull); - | Push(x) when !state.ended => - applyInnerSource(f(. x)); - state.outerTalkback(. Pull); - | Push(_) => () - } - ); - - sink(. - Start( - (. signal) => - switch (signal) { - | Close => - Rebel.Array.forEach(state.innerTalkbacks, talkback => - talkback(. Close) - ); - if (!state.ended) { - state.ended = true; - state.outerTalkback(. Close); - Rebel.Array.forEach(state.innerTalkbacks, talkback => - talkback(. Close) - ); - state.innerTalkbacks = Rebel.Array.makeEmpty(); - }; - | Pull when !state.ended => - Rebel.Array.forEach(state.innerTalkbacks, talkback => - talkback(. Pull) - ) - | Pull => () - }, - ), - ); - }) - ); - -let merge = sources => { - Wonka_source_fromArray.(mergeMap((. x) => x, fromArray(sources))); -}; - -let mergeAll = source => mergeMap((. x) => x, source); -let flatten = mergeAll; diff --git a/src/operators/wonka_operator_mergeMap.rei b/src/operators/wonka_operator_mergeMap.rei deleted file mode 100644 index 5c31761..0000000 --- a/src/operators/wonka_operator_mergeMap.rei +++ /dev/null @@ -1,6 +0,0 @@ -open Wonka_types; - -let mergeMap: ((. 'a) => sourceT('b), sourceT('a), sinkT('b)) => unit; -let merge: (array(sourceT('a)), sinkT('a)) => unit; -let mergeAll: (sourceT(sourceT('a)), sinkT('a)) => unit; -let flatten: (sourceT(sourceT('a)), sinkT('a)) => unit; diff --git a/src/operators/wonka_operator_onEnd.d.ts b/src/operators/wonka_operator_onEnd.d.ts deleted file mode 100644 index 89e5803..0000000 --- a/src/operators/wonka_operator_onEnd.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const onEnd: (f: (value: A) => void) => Operator; diff --git a/src/operators/wonka_operator_onEnd.re b/src/operators/wonka_operator_onEnd.re deleted file mode 100644 index 7a9e7eb..0000000 --- a/src/operators/wonka_operator_onEnd.re +++ /dev/null @@ -1,36 +0,0 @@ -open Wonka_types; - -let onEnd = f => - curry(source => - curry(sink => { - let ended = ref(false); - - source((. signal) => - switch (signal) { - | Start(talkback) => - sink(. - Start( - (. signal) => { - switch (signal) { - | Close when ! ended^ => - ended := true; - f(.); - | Close - | Pull => () - }; - - talkback(. signal); - }, - ), - ) - | End => - if (! ended^) { - ended := true; - sink(. signal); - f(.); - } - | _ => sink(. signal) - } - ); - }) - ); diff --git a/src/operators/wonka_operator_onEnd.rei b/src/operators/wonka_operator_onEnd.rei deleted file mode 100644 index f4ce0b9..0000000 --- a/src/operators/wonka_operator_onEnd.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let onEnd: ((. unit) => unit, sourceT('a), sinkT('a)) => unit; diff --git a/src/operators/wonka_operator_onPush.d.ts b/src/operators/wonka_operator_onPush.d.ts deleted file mode 100644 index 5ba42fa..0000000 --- a/src/operators/wonka_operator_onPush.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const onPush: (f: (value: A) => void) => Operator; -export const tap: (f: (value: A) => void) => Operator; diff --git a/src/operators/wonka_operator_onPush.re b/src/operators/wonka_operator_onPush.re deleted file mode 100644 index 10948aa..0000000 --- a/src/operators/wonka_operator_onPush.re +++ /dev/null @@ -1,17 +0,0 @@ -open Wonka_types; - -let onPush = f => - curry(source => - curry(sink => - source((. signal) => { - switch (signal) { - | Push(x) => f(. x) - | _ => () - }; - - sink(. signal); - }) - ) - ); - -let tap = onPush; diff --git a/src/operators/wonka_operator_onPush.rei b/src/operators/wonka_operator_onPush.rei deleted file mode 100644 index cd1e4ee..0000000 --- a/src/operators/wonka_operator_onPush.rei +++ /dev/null @@ -1,4 +0,0 @@ -open Wonka_types; - -let onPush: ((. 'a) => unit, sourceT('a), sinkT('a)) => unit; -let tap: ((. 'a) => unit, sourceT('a), sinkT('a)) => unit; diff --git a/src/operators/wonka_operator_onStart.d.ts b/src/operators/wonka_operator_onStart.d.ts deleted file mode 100644 index 999ef07..0000000 --- a/src/operators/wonka_operator_onStart.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const onStart: (f: (value: A) => void) => Operator; diff --git a/src/operators/wonka_operator_onStart.re b/src/operators/wonka_operator_onStart.re deleted file mode 100644 index c1a720e..0000000 --- a/src/operators/wonka_operator_onStart.re +++ /dev/null @@ -1,15 +0,0 @@ -open Wonka_types; - -let onStart = f => - curry(source => - curry(sink => - source((. signal) => - switch (signal) { - | Start(_) => - sink(. signal); - f(.); - | _ => sink(. signal) - } - ) - ) - ); diff --git a/src/operators/wonka_operator_onStart.rei b/src/operators/wonka_operator_onStart.rei deleted file mode 100644 index ecadc08..0000000 --- a/src/operators/wonka_operator_onStart.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let onStart: ((. unit) => unit, sourceT('a), sinkT('a)) => unit; diff --git a/src/operators/wonka_operator_sample.d.ts b/src/operators/wonka_operator_sample.d.ts deleted file mode 100644 index ef75031..0000000 --- a/src/operators/wonka_operator_sample.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source, Operator } from '../wonka_types'; - -export const sample: (signal: Source) => Operator; diff --git a/src/operators/wonka_operator_sample.re b/src/operators/wonka_operator_sample.re deleted file mode 100644 index 86f5517..0000000 --- a/src/operators/wonka_operator_sample.re +++ /dev/null @@ -1,60 +0,0 @@ -open Wonka_types; - -type sampleStateT('a) = { - mutable ended: bool, - mutable value: option('a), - mutable sourceTalkback: (. talkbackT) => unit, - mutable notifierTalkback: (. talkbackT) => unit, -}; - -let sample = notifier => - curry(source => - curry(sink => { - let state = { - ended: false, - value: None, - sourceTalkback: (. _: talkbackT) => (), - notifierTalkback: (. _: talkbackT) => (), - }; - - source((. signal) => - switch (signal) { - | Start(tb) => state.sourceTalkback = tb - | End => - state.ended = true; - state.notifierTalkback(. Close); - sink(. End); - | Push(x) => state.value = Some(x) - } - ); - - notifier((. signal) => - switch (signal, state.value) { - | (Start(tb), _) => state.notifierTalkback = tb - | (End, _) => - state.ended = true; - state.sourceTalkback(. Close); - sink(. End); - | (Push(_), Some(x)) when !state.ended => - state.value = None; - sink(. Push(x)); - | (Push(_), _) => () - } - ); - - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => - state.sourceTalkback(. Pull); - state.notifierTalkback(. Pull); - | Close => - state.ended = true; - state.sourceTalkback(. Close); - state.notifierTalkback(. Close); - }, - ), - ); - }) - ); diff --git a/src/operators/wonka_operator_sample.rei b/src/operators/wonka_operator_sample.rei deleted file mode 100644 index 66d7767..0000000 --- a/src/operators/wonka_operator_sample.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let sample: (sourceT('a), sourceT('b), sinkT('b)) => unit; diff --git a/src/operators/wonka_operator_scan.d.ts b/src/operators/wonka_operator_scan.d.ts deleted file mode 100644 index c3fd233..0000000 --- a/src/operators/wonka_operator_scan.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const scan: (f: (acc: B, value: A) => B, acc: B) => Operator; diff --git a/src/operators/wonka_operator_scan.re b/src/operators/wonka_operator_scan.re deleted file mode 100644 index 0e160df..0000000 --- a/src/operators/wonka_operator_scan.re +++ /dev/null @@ -1,20 +0,0 @@ -open Wonka_types; - -let scan = (f, seed) => - curry(source => - curry(sink => { - let acc = ref(seed); - - source((. signal) => - sink(. - switch (signal) { - | Push(x) => - acc := f(. acc^, x); - Push(acc^); - | Start(x) => Start(x) - | End => End - }, - ) - ); - }) - ); diff --git a/src/operators/wonka_operator_scan.rei b/src/operators/wonka_operator_scan.rei deleted file mode 100644 index 792f3d5..0000000 --- a/src/operators/wonka_operator_scan.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let scan: ((. 'b, 'a) => 'b, 'b, sourceT('a), sinkT('b)) => unit; diff --git a/src/operators/wonka_operator_share.d.ts b/src/operators/wonka_operator_share.d.ts deleted file mode 100644 index 95fa0ed..0000000 --- a/src/operators/wonka_operator_share.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source } from '../wonka_types'; - -export const share: (source: Source) => Source; diff --git a/src/operators/wonka_operator_share.re b/src/operators/wonka_operator_share.re deleted file mode 100644 index 3581986..0000000 --- a/src/operators/wonka_operator_share.re +++ /dev/null @@ -1,51 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -type shareStateT('a) = { - mutable sinks: Rebel.Array.t(sinkT('a)), - mutable talkback: (. talkbackT) => unit, - mutable gotSignal: bool, -}; - -let share = source => { - let state = { - sinks: Rebel.Array.makeEmpty(), - talkback: talkbackPlaceholder, - gotSignal: false, - }; - - sink => { - state.sinks = Rebel.Array.append(state.sinks, sink); - - if (Rebel.Array.size(state.sinks) === 1) { - source((. signal) => - switch (signal) { - | Push(_) => - state.gotSignal = false; - Rebel.Array.forEach(state.sinks, sink => sink(. signal)); - | Start(x) => state.talkback = x - | End => - Rebel.Array.forEach(state.sinks, sink => sink(. End)); - state.sinks = Rebel.Array.makeEmpty(); - } - ); - }; - - sink(. - Start( - (. signal) => - switch (signal) { - | Close => - state.sinks = Rebel.Array.filter(state.sinks, x => x !== sink); - if (Rebel.Array.size(state.sinks) === 0) { - state.talkback(. Close); - }; - | Pull when !state.gotSignal => - state.gotSignal = true; - state.talkback(. signal); - | Pull => () - }, - ), - ); - }; -}; diff --git a/src/operators/wonka_operator_share.rei b/src/operators/wonka_operator_share.rei deleted file mode 100644 index d5f5169..0000000 --- a/src/operators/wonka_operator_share.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let share: (sourceT('a), sinkT('a)) => unit; diff --git a/src/operators/wonka_operator_skip.d.ts b/src/operators/wonka_operator_skip.d.ts deleted file mode 100644 index 07d3d95..0000000 --- a/src/operators/wonka_operator_skip.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const skip: (max: number) => Operator; diff --git a/src/operators/wonka_operator_skip.re b/src/operators/wonka_operator_skip.re deleted file mode 100644 index 661f6cf..0000000 --- a/src/operators/wonka_operator_skip.re +++ /dev/null @@ -1,18 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -let skip = wait => - curry(source => - curry(sink => { - let rest = ref(wait); - - captureTalkback(source, (. signal, talkback) => - switch (signal) { - | Push(_) when rest^ > 0 => - rest := rest^ - 1; - talkback(. Pull); - | _ => sink(. signal) - } - ); - }) - ); diff --git a/src/operators/wonka_operator_skip.rei b/src/operators/wonka_operator_skip.rei deleted file mode 100644 index 6616aef..0000000 --- a/src/operators/wonka_operator_skip.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let skip: (int, sourceT('a), sinkT('a)) => unit; diff --git a/src/operators/wonka_operator_skipUntil.d.ts b/src/operators/wonka_operator_skipUntil.d.ts deleted file mode 100644 index 5ae7462..0000000 --- a/src/operators/wonka_operator_skipUntil.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source, Operator } from '../wonka_types'; - -export const skipUntil: (signal: Source) => Operator; diff --git a/src/operators/wonka_operator_skipUntil.re b/src/operators/wonka_operator_skipUntil.re deleted file mode 100644 index d2c414d..0000000 --- a/src/operators/wonka_operator_skipUntil.re +++ /dev/null @@ -1,73 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -type skipUntilStateT = { - mutable skip: bool, - mutable ended: bool, - mutable gotSignal: bool, - mutable sourceTalkback: (. talkbackT) => unit, - mutable notifierTalkback: (. talkbackT) => unit, -}; - -let skipUntil = notifier => - curry(source => - curry(sink => { - let state: skipUntilStateT = { - skip: true, - ended: false, - gotSignal: false, - sourceTalkback: talkbackPlaceholder, - notifierTalkback: talkbackPlaceholder, - }; - - source((. signal) => - switch (signal) { - | Start(tb) => - state.sourceTalkback = tb; - - notifier((. signal) => - switch (signal) { - | Start(innerTb) => - state.notifierTalkback = innerTb; - innerTb(. Pull); - tb(. Pull); - | Push(_) => - state.skip = false; - state.notifierTalkback(. Close); - | End => () - } - ); - | Push(_) when state.skip && !state.ended => - state.sourceTalkback(. Pull) - | Push(_) when !state.ended => - state.gotSignal = false; - sink(. signal); - | Push(_) => () - | End => - if (state.skip) { - state.notifierTalkback(. Close); - }; - state.ended = true; - sink(. End); - } - ); - - sink(. - Start( - (. signal) => - switch (signal) { - | Close => - if (state.skip) { - state.notifierTalkback(. Close); - }; - state.ended = true; - state.sourceTalkback(. Close); - | Pull when !state.gotSignal && !state.ended => - state.gotSignal = true; - state.sourceTalkback(. Pull); - | Pull => () - }, - ), - ); - }) - ); diff --git a/src/operators/wonka_operator_skipUntil.rei b/src/operators/wonka_operator_skipUntil.rei deleted file mode 100644 index 77e94c7..0000000 --- a/src/operators/wonka_operator_skipUntil.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let skipUntil: (sourceT('a), sourceT('b), sinkT('b)) => unit; diff --git a/src/operators/wonka_operator_skipWhile.d.ts b/src/operators/wonka_operator_skipWhile.d.ts deleted file mode 100644 index aafe6ea..0000000 --- a/src/operators/wonka_operator_skipWhile.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const skipWhile: (f: (x: A) => boolean) => Operator; diff --git a/src/operators/wonka_operator_skipWhile.re b/src/operators/wonka_operator_skipWhile.re deleted file mode 100644 index 78dec4a..0000000 --- a/src/operators/wonka_operator_skipWhile.re +++ /dev/null @@ -1,22 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -let skipWhile = f => - curry(source => - curry(sink => { - let skip = ref(true); - - captureTalkback(source, (. signal, talkback) => - switch (signal) { - | Push(x) when skip^ => - if (f(. x)) { - talkback(. Pull); - } else { - skip := false; - sink(. signal); - } - | _ => sink(. signal) - } - ); - }) - ); diff --git a/src/operators/wonka_operator_skipWhile.rei b/src/operators/wonka_operator_skipWhile.rei deleted file mode 100644 index 013fced..0000000 --- a/src/operators/wonka_operator_skipWhile.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let skipWhile: ((. 'a) => bool, sourceT('a), sinkT('a)) => unit; diff --git a/src/operators/wonka_operator_switchMap.d.ts b/src/operators/wonka_operator_switchMap.d.ts deleted file mode 100644 index 7ed3d60..0000000 --- a/src/operators/wonka_operator_switchMap.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Source, Operator } from '../wonka_types'; - -export const switchMap: (f: (value: A) => Source) => Operator; -export const switchAll: (source: Source>) => Source; diff --git a/src/operators/wonka_operator_switchMap.re b/src/operators/wonka_operator_switchMap.re deleted file mode 100644 index 246222e..0000000 --- a/src/operators/wonka_operator_switchMap.re +++ /dev/null @@ -1,84 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -type switchMapStateT('a) = { - mutable outerTalkback: (. talkbackT) => unit, - mutable innerTalkback: (. talkbackT) => unit, - mutable innerActive: bool, - mutable closed: bool, - mutable ended: bool, -}; - -let switchMap = f => - curry(source => - curry(sink => { - let state: switchMapStateT('a) = { - outerTalkback: talkbackPlaceholder, - innerTalkback: talkbackPlaceholder, - innerActive: false, - closed: false, - ended: false, - }; - - let applyInnerSource = innerSource => - innerSource((. signal) => - switch (signal) { - | End => - state.innerActive = false; - state.innerTalkback = talkbackPlaceholder; - if (state.ended) { - sink(. End); - }; - | Start(tb) => - state.innerActive = true; - state.innerTalkback = tb; - tb(. Pull); - | Push(x) when !state.closed => - sink(. Push(x)); - state.innerTalkback(. Pull); - | Push(_) => () - } - ); - - source((. signal) => - switch (signal) { - | End when !state.ended => - state.ended = true; - if (!state.innerActive) { - sink(. End); - }; - | End => () - | Start(tb) => - state.outerTalkback = tb; - tb(. Pull); - | Push(x) when !state.ended => - if (state.innerActive) { - state.innerTalkback(. Close); - state.innerTalkback = talkbackPlaceholder; - }; - applyInnerSource(f(. x)); - state.outerTalkback(. Pull); - | Push(_) => () - } - ); - - sink(. - Start( - (. signal) => - switch (signal) { - | Pull => state.innerTalkback(. Pull) - | Close => - state.innerTalkback(. Close); - if (!state.ended) { - state.ended = true; - state.closed = true; - state.outerTalkback(. Close); - state.innerTalkback = talkbackPlaceholder; - }; - }, - ), - ); - }) - ); - -let switchAll = source => switchMap((. x) => x, source); diff --git a/src/operators/wonka_operator_switchMap.rei b/src/operators/wonka_operator_switchMap.rei deleted file mode 100644 index 9ce4546..0000000 --- a/src/operators/wonka_operator_switchMap.rei +++ /dev/null @@ -1,4 +0,0 @@ -open Wonka_types; - -let switchMap: ((. 'a) => sourceT('b), sourceT('a), sinkT('b)) => unit; -let switchAll: (sourceT(sourceT('a)), sinkT('a)) => unit; diff --git a/src/operators/wonka_operator_take.d.ts b/src/operators/wonka_operator_take.d.ts deleted file mode 100644 index f0cd931..0000000 --- a/src/operators/wonka_operator_take.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const take: (max: number) => Operator; diff --git a/src/operators/wonka_operator_take.re b/src/operators/wonka_operator_take.re deleted file mode 100644 index 070fa2f..0000000 --- a/src/operators/wonka_operator_take.re +++ /dev/null @@ -1,47 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -type takeStateT = { - mutable taken: int, - mutable talkback: (. talkbackT) => unit, -}; - -let take = max => - curry(source => - curry(sink => { - let state: takeStateT = {taken: 0, talkback: talkbackPlaceholder}; - - source((. signal) => - switch (signal) { - | Start(tb) => state.talkback = tb - | Push(_) when state.taken < max => - state.taken = state.taken + 1; - sink(. signal); - - if (state.taken === max) { - sink(. End); - state.talkback(. Close); - }; - | Push(_) => () - | End when state.taken < max => - state.taken = max; - sink(. End); - | End => () - } - ); - - sink(. - Start( - (. signal) => - if (state.taken < max) { - switch (signal) { - | Pull => state.talkback(. Pull) - | Close => - state.taken = max; - state.talkback(. Close); - }; - }, - ), - ); - }) - ); diff --git a/src/operators/wonka_operator_take.rei b/src/operators/wonka_operator_take.rei deleted file mode 100644 index c78f77d..0000000 --- a/src/operators/wonka_operator_take.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let take: (int, sourceT('a), sinkT('a)) => unit; diff --git a/src/operators/wonka_operator_takeLast.d.ts b/src/operators/wonka_operator_takeLast.d.ts deleted file mode 100644 index 31d7650..0000000 --- a/src/operators/wonka_operator_takeLast.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const takeLast: (max: number) => Operator; diff --git a/src/operators/wonka_operator_takeLast.re b/src/operators/wonka_operator_takeLast.re deleted file mode 100644 index 331cf5c..0000000 --- a/src/operators/wonka_operator_takeLast.re +++ /dev/null @@ -1,25 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -let takeLast = max => - curry(source => - curry(sink => { - open Rebel; - let queue = MutableQueue.make(); - - captureTalkback(source, (. signal, talkback) => - switch (signal) { - | Start(_) => talkback(. Pull) - | Push(x) => - let size = MutableQueue.size(queue); - if (size >= max && max > 0) { - ignore(MutableQueue.pop(queue)); - }; - - MutableQueue.add(queue, x); - talkback(. Pull); - | End => makeTrampoline(sink, (.) => MutableQueue.pop(queue)) - } - ); - }) - ); diff --git a/src/operators/wonka_operator_takeLast.rei b/src/operators/wonka_operator_takeLast.rei deleted file mode 100644 index 271bbd0..0000000 --- a/src/operators/wonka_operator_takeLast.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let takeLast: (int, sourceT('a), sinkT('a)) => unit; diff --git a/src/operators/wonka_operator_takeUntil.d.ts b/src/operators/wonka_operator_takeUntil.d.ts deleted file mode 100644 index 4b43559..0000000 --- a/src/operators/wonka_operator_takeUntil.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source, Operator } from '../wonka_types'; - -export const takeUntil: (signal: Source) => Operator; diff --git a/src/operators/wonka_operator_takeUntil.re b/src/operators/wonka_operator_takeUntil.re deleted file mode 100644 index 5645fd8..0000000 --- a/src/operators/wonka_operator_takeUntil.re +++ /dev/null @@ -1,61 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -type takeUntilStateT = { - mutable ended: bool, - mutable sourceTalkback: (. talkbackT) => unit, - mutable notifierTalkback: (. talkbackT) => unit, -}; - -let takeUntil = notifier => - curry(source => - curry(sink => { - let state: takeUntilStateT = { - ended: false, - sourceTalkback: talkbackPlaceholder, - notifierTalkback: talkbackPlaceholder, - }; - - source((. signal) => - switch (signal) { - | Start(tb) => - state.sourceTalkback = tb; - - notifier((. signal) => - switch (signal) { - | Start(innerTb) => - state.notifierTalkback = innerTb; - innerTb(. Pull); - | Push(_) => - state.ended = true; - state.sourceTalkback(. Close); - sink(. End); - | End => () - } - ); - | End when !state.ended => - state.ended = true; - state.notifierTalkback(. Close); - sink(. End); - | End => () - | Push(_) when !state.ended => sink(. signal) - | Push(_) => () - } - ); - - sink(. - Start( - (. signal) => - if (!state.ended) { - switch (signal) { - | Close => - state.ended = true; - state.sourceTalkback(. Close); - state.notifierTalkback(. Close); - | Pull => state.sourceTalkback(. Pull) - }; - }, - ), - ); - }) - ); diff --git a/src/operators/wonka_operator_takeUntil.rei b/src/operators/wonka_operator_takeUntil.rei deleted file mode 100644 index b9e4d0d..0000000 --- a/src/operators/wonka_operator_takeUntil.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let takeUntil: (sourceT('a), sourceT('b), sinkT('b)) => unit; diff --git a/src/operators/wonka_operator_takeWhile.d.ts b/src/operators/wonka_operator_takeWhile.d.ts deleted file mode 100644 index aa4095b..0000000 --- a/src/operators/wonka_operator_takeWhile.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const takeWhile: (f: (x: A) => boolean) => Operator; diff --git a/src/operators/wonka_operator_takeWhile.re b/src/operators/wonka_operator_takeWhile.re deleted file mode 100644 index 3a5cf80..0000000 --- a/src/operators/wonka_operator_takeWhile.re +++ /dev/null @@ -1,45 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -let takeWhile = f => - curry(source => - curry(sink => { - let ended = ref(false); - let talkback = ref(talkbackPlaceholder); - - source((. signal) => - switch (signal) { - | Start(tb) => - talkback := tb; - sink(. signal); - | End when ! ended^ => - ended := true; - sink(. End); - | End => () - | Push(x) when ! ended^ => - if (!f(. x)) { - ended := true; - sink(. End); - talkback^(. Close); - } else { - sink(. signal); - } - | Push(_) => () - } - ); - - sink(. - Start( - (. signal) => - if (! ended^) { - switch (signal) { - | Pull => talkback^(. Pull) - | Close => - ended := true; - talkback^(. Close); - }; - }, - ), - ); - }) - ); diff --git a/src/operators/wonka_operator_takeWhile.rei b/src/operators/wonka_operator_takeWhile.rei deleted file mode 100644 index c317f7a..0000000 --- a/src/operators/wonka_operator_takeWhile.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let takeWhile: ((. 'a) => bool, sourceT('a), sinkT('a)) => unit; diff --git a/src/pipe.d.ts b/src/pipe.d.ts deleted file mode 100644 index 499ce0d..0000000 --- a/src/pipe.d.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { Source } from './wonka_types'; - -interface UnaryFn { (source: T): R; } - -/* pipe definitions for source + operators composition */ - -export function pipe( - source: Source, - op1: UnaryFn, Source> -): Source; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source> -): Source; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source>, - op3: UnaryFn, Source> -): Source; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source>, - op3: UnaryFn, Source>, - op4: UnaryFn, Source> -): Source; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source>, - op3: UnaryFn, Source>, - op4: UnaryFn, Source>, - op5: UnaryFn, Source> -): Source; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source>, - op3: UnaryFn, Source>, - op4: UnaryFn, Source>, - op5: UnaryFn, Source>, - op6: UnaryFn, Source> -): Source; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source>, - op3: UnaryFn, Source>, - op4: UnaryFn, Source>, - op5: UnaryFn, Source>, - op6: UnaryFn, Source>, - op7: UnaryFn, Source> -): Source; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source>, - op3: UnaryFn, Source>, - op4: UnaryFn, Source>, - op5: UnaryFn, Source>, - op6: UnaryFn, Source>, - op7: UnaryFn, Source>, - op8: UnaryFn, Source> -): Source; - -/* pipe definitions for source + operators + consumer composition */ - -export function pipe( - source: Source, - consumer: UnaryFn, R> -): R; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - consumer: UnaryFn, R> -): R; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source>, - consumer: UnaryFn, R> -): R; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source>, - op3: UnaryFn, Source>, - consumer: UnaryFn, R> -): R; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source>, - op3: UnaryFn, Source>, - op4: UnaryFn, Source>, - consumer: UnaryFn, R> -): R; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source>, - op3: UnaryFn, Source>, - op4: UnaryFn, Source>, - op5: UnaryFn, Source>, - consumer: UnaryFn, R> -): R; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source>, - op3: UnaryFn, Source>, - op4: UnaryFn, Source>, - op5: UnaryFn, Source>, - op6: UnaryFn, Source>, - consumer: UnaryFn, R> -): R; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source>, - op3: UnaryFn, Source>, - op4: UnaryFn, Source>, - op5: UnaryFn, Source>, - op6: UnaryFn, Source>, - op7: UnaryFn, Source>, - consumer: UnaryFn, R> -): R; - -export function pipe( - source: Source, - op1: UnaryFn, Source>, - op2: UnaryFn, Source>, - op3: UnaryFn, Source>, - op4: UnaryFn, Source>, - op5: UnaryFn, Source>, - op6: UnaryFn, Source>, - op7: UnaryFn, Source>, - op8: UnaryFn, Source>, - consumer: UnaryFn, R> -): R; diff --git a/src/pipe.js b/src/pipe.js deleted file mode 100644 index 470496c..0000000 --- a/src/pipe.js +++ /dev/null @@ -1,11 +0,0 @@ -export function pipe(source) { - const args = arguments; - const len = args.length; - let x = source; - - for (let i = 1; i < len; i++) { - x = args[i](x); - } - - return x; -} diff --git a/src/shims/Dom.shim.ts b/src/shims/Dom.shim.ts new file mode 100644 index 0000000..ab32b8a --- /dev/null +++ b/src/shims/Dom.shim.ts @@ -0,0 +1,2 @@ +export type element = HTMLElement; +export type event = Event; diff --git a/src/shims/Js.shim.ts b/src/shims/Js.shim.ts new file mode 100644 index 0000000..96ada22 --- /dev/null +++ b/src/shims/Js.shim.ts @@ -0,0 +1,31 @@ +export type Exn_t = Error; +export type Internal_meth<_T, R> = () => R; + +export type talkbackT = 0 | 1; + +export type signalT = + | ({ tag: 0 } & [(talkback: talkbackT) => void]) + | ({ tag: 1 } & [a]) + | 0; + +export interface observableSubscriptionT { + unsubscribe(): void; +} + +export interface observableObserverT { + next(value: a): void; + error(error: any): void; + complete(): void; +} + +export interface observableT { + subscribe(observer: observableObserverT): observableSubscriptionT; +} + +interface Callbag { + (t: 0, d: Callbag): void; + (t: 1, d: I): void; + (t: 2, d?: any): void; +} + +export type callbagT = Callbag; diff --git a/src/shims/ReasonPervasives.shim.ts b/src/shims/ReasonPervasives.shim.ts new file mode 100644 index 0000000..97acf18 --- /dev/null +++ b/src/shims/ReasonPervasives.shim.ts @@ -0,0 +1,11 @@ +// tslint:disable-next-line:max-classes-per-file +export abstract class EmptyList { + protected opaque: any; +} + +// tslint:disable-next-line:max-classes-per-file +export abstract class Cons { + protected opaque!: T; +} + +export type list = Cons | EmptyList; diff --git a/src/sinks/wonka_sink_publish.d.ts b/src/sinks/wonka_sink_publish.d.ts deleted file mode 100644 index f13f491..0000000 --- a/src/sinks/wonka_sink_publish.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source, Subscription } from '../wonka_types'; - -export const publish: (source: Source) => Subscription; diff --git a/src/sinks/wonka_sink_publish.re b/src/sinks/wonka_sink_publish.re deleted file mode 100644 index e6f93a1..0000000 --- a/src/sinks/wonka_sink_publish.re +++ /dev/null @@ -1,32 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -type publishStateT = { - mutable talkback: (. talkbackT) => unit, - mutable ended: bool, -}; - -let publish = source => { - let state: publishStateT = {talkback: talkbackPlaceholder, ended: false}; - - source((. signal) => - switch (signal) { - | Start(x) => - state.talkback = x; - x(. Pull); - | Push(_) => - if (!state.ended) { - state.talkback(. Pull); - } - | End => state.ended = true - } - ); - - { - unsubscribe: () => - if (!state.ended) { - state.ended = true; - state.talkback(. Close); - }, - }; -}; diff --git a/src/sinks/wonka_sink_publish.rei b/src/sinks/wonka_sink_publish.rei deleted file mode 100644 index 738fe4e..0000000 --- a/src/sinks/wonka_sink_publish.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let publish: sourceT('a) => subscriptionT; diff --git a/src/sinks/wonka_sink_subscribe.d.ts b/src/sinks/wonka_sink_subscribe.d.ts deleted file mode 100644 index 35efea7..0000000 --- a/src/sinks/wonka_sink_subscribe.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Source, Subscription } from '../wonka_types'; - -export const subscribe: (f: (x: A) => void) => (source: Source) => Subscription; -export const forEach: (f: (x: A) => void) => (source: Source) => void; diff --git a/src/sinks/wonka_sink_subscribe.re b/src/sinks/wonka_sink_subscribe.re deleted file mode 100644 index c08d33a..0000000 --- a/src/sinks/wonka_sink_subscribe.re +++ /dev/null @@ -1,38 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -type subscribeStateT = { - mutable talkback: (. talkbackT) => unit, - mutable ended: bool, -}; - -let subscribe = f => - curry(source => { - let state: subscribeStateT = { - talkback: talkbackPlaceholder, - ended: false, - }; - - source((. signal) => - switch (signal) { - | Start(x) => - state.talkback = x; - x(. Pull); - | Push(x) when !state.ended => - f(. x); - state.talkback(. Pull); - | Push(_) => () - | End => state.ended = true - } - ); - - { - unsubscribe: () => - if (!state.ended) { - state.ended = true; - state.talkback(. Close); - }, - }; - }); - -let forEach = f => curry(source => ignore(subscribe(f, source))); diff --git a/src/sinks/wonka_sink_subscribe.rei b/src/sinks/wonka_sink_subscribe.rei deleted file mode 100644 index 00d4054..0000000 --- a/src/sinks/wonka_sink_subscribe.rei +++ /dev/null @@ -1,4 +0,0 @@ -open Wonka_types; - -let subscribe: ((. 'a) => unit, sourceT('a)) => subscriptionT; -let forEach: ((. 'a) => unit, sourceT('a)) => unit; diff --git a/src/sinks/wonka_sink_toArray.d.ts b/src/sinks/wonka_sink_toArray.d.ts deleted file mode 100644 index 7285f63..0000000 --- a/src/sinks/wonka_sink_toArray.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source } from '../wonka_types'; - -export const toArray: (source: Source) => A[]; diff --git a/src/sinks/wonka_sink_toArray.re b/src/sinks/wonka_sink_toArray.re deleted file mode 100644 index c680cb7..0000000 --- a/src/sinks/wonka_sink_toArray.re +++ /dev/null @@ -1,36 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -type toArrayStateT('a) = { - values: Rebel.MutableQueue.t('a), - mutable talkback: (. talkbackT) => unit, - mutable value: option('a), - mutable ended: bool, -}; - -let toArray = (source: sourceT('a)): array('a) => { - let state: toArrayStateT('a) = { - values: Rebel.MutableQueue.make(), - talkback: talkbackPlaceholder, - value: None, - ended: false, - }; - - source((. signal) => - switch (signal) { - | Start(x) => - state.talkback = x; - x(. Pull); - | Push(value) => - Rebel.MutableQueue.add(state.values, value); - state.talkback(. Pull); - | End => state.ended = true - } - ); - - if (!state.ended) { - state.talkback(. Close); - }; - - Rebel.MutableQueue.toArray(state.values); -}; diff --git a/src/sinks/wonka_sink_toArray.rei b/src/sinks/wonka_sink_toArray.rei deleted file mode 100644 index 8e680d0..0000000 --- a/src/sinks/wonka_sink_toArray.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let toArray: sourceT('a) => array('a); diff --git a/src/sources/wonka_source_fromArray.d.ts b/src/sources/wonka_source_fromArray.d.ts deleted file mode 100644 index 3dff009..0000000 --- a/src/sources/wonka_source_fromArray.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source } from '../wonka_types'; - -export const fromArray: (array: A[]) => Source; diff --git a/src/sources/wonka_source_fromArray.re b/src/sources/wonka_source_fromArray.re deleted file mode 100644 index 3ed57a1..0000000 --- a/src/sources/wonka_source_fromArray.re +++ /dev/null @@ -1,18 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -let fromArray = arr => - curry(sink => { - let size = Rebel.Array.size(arr); - let index = ref(0); - - makeTrampoline(sink, (.) => - if (index^ < size) { - let x = Rebel.Array.getUnsafe(arr, index^); - index := index^ + 1; - Some(x); - } else { - None; - } - ); - }); diff --git a/src/sources/wonka_source_fromArray.rei b/src/sources/wonka_source_fromArray.rei deleted file mode 100644 index 35b8737..0000000 --- a/src/sources/wonka_source_fromArray.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let fromArray: (array('a), sinkT('a)) => unit; diff --git a/src/sources/wonka_source_fromList.d.ts b/src/sources/wonka_source_fromList.d.ts deleted file mode 100644 index 0c76833..0000000 --- a/src/sources/wonka_source_fromList.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { List, Source } from '../wonka_types'; - -export const fromList: (list: List) => Source; diff --git a/src/sources/wonka_source_fromList.re b/src/sources/wonka_source_fromList.re deleted file mode 100644 index cd7e1d8..0000000 --- a/src/sources/wonka_source_fromList.re +++ /dev/null @@ -1,16 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -let fromList = ls => - curry(sink => { - let value = ref(ls); - - makeTrampoline(sink, (.) => - switch (value^) { - | [x, ...rest] => - value := rest; - Some(x); - | [] => None - } - ); - }); diff --git a/src/sources/wonka_source_fromList.rei b/src/sources/wonka_source_fromList.rei deleted file mode 100644 index 82c688c..0000000 --- a/src/sources/wonka_source_fromList.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let fromList: (list('a), sinkT('a)) => unit; diff --git a/src/sources/wonka_source_fromValue.d.ts b/src/sources/wonka_source_fromValue.d.ts deleted file mode 100644 index a3bdad0..0000000 --- a/src/sources/wonka_source_fromValue.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source } from '../wonka_types'; - -export const fromValue: (value: A) => Source; diff --git a/src/sources/wonka_source_fromValue.re b/src/sources/wonka_source_fromValue.re deleted file mode 100644 index 35a0d27..0000000 --- a/src/sources/wonka_source_fromValue.re +++ /dev/null @@ -1,19 +0,0 @@ -open Wonka_types; - -let fromValue = x => - curry(sink => { - let ended = ref(false); - - sink(. - Start( - (. signal) => - switch (signal) { - | Pull when ! ended^ => - ended := true; - sink(. Push(x)); - sink(. End); - | _ => () - }, - ), - ); - }); diff --git a/src/sources/wonka_source_fromValue.rei b/src/sources/wonka_source_fromValue.rei deleted file mode 100644 index 006d35d..0000000 --- a/src/sources/wonka_source_fromValue.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let fromValue: ('a, sinkT('a)) => unit; diff --git a/src/sources/wonka_source_make.d.ts b/src/sources/wonka_source_make.d.ts deleted file mode 100644 index 5e06690..0000000 --- a/src/sources/wonka_source_make.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source, Observer } from '../wonka_types'; - -export const make: (f: (observer: Observer) => (() => void)) => Source; diff --git a/src/sources/wonka_source_make.re b/src/sources/wonka_source_make.re deleted file mode 100644 index 5b397a6..0000000 --- a/src/sources/wonka_source_make.re +++ /dev/null @@ -1,22 +0,0 @@ -open Wonka_types; - -let make = f => - curry(sink => { - let teardown = ref((.) => ()); - - sink(. - Start( - (. signal) => - switch (signal) { - | Close => teardown^(.) - | Pull => () - }, - ), - ); - - teardown := - f(. { - next: value => sink(. Push(value)), - complete: () => sink(. End), - }); - }); diff --git a/src/sources/wonka_source_make.rei b/src/sources/wonka_source_make.rei deleted file mode 100644 index 0ff4ee9..0000000 --- a/src/sources/wonka_source_make.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let make: ((. observerT('a)) => teardownT, sinkT('a)) => unit; diff --git a/src/sources/wonka_source_makeSubject.d.ts b/src/sources/wonka_source_makeSubject.d.ts deleted file mode 100644 index 2b5dab7..0000000 --- a/src/sources/wonka_source_makeSubject.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Subject } from '../wonka_types'; - -export const makeSubject: () => Subject; diff --git a/src/sources/wonka_source_makeSubject.re b/src/sources/wonka_source_makeSubject.re deleted file mode 100644 index 5ce8585..0000000 --- a/src/sources/wonka_source_makeSubject.re +++ /dev/null @@ -1,38 +0,0 @@ -open Wonka_types; - -type subjectState('a) = { - mutable sinks: Rebel.Array.t(sinkT('a)), - mutable ended: bool, -}; - -let makeSubject = () => { - let state: subjectState('a) = { - sinks: Rebel.Array.makeEmpty(), - ended: false, - }; - - let source = sink => { - state.sinks = Rebel.Array.append(state.sinks, sink); - sink(. - Start( - (. signal) => - if (signal === Close) { - state.sinks = Rebel.Array.filter(state.sinks, x => x !== sink); - }, - ), - ); - }; - - let next = value => - if (!state.ended) { - Rebel.Array.forEach(state.sinks, sink => sink(. Push(value))); - }; - - let complete = () => - if (!state.ended) { - state.ended = true; - Rebel.Array.forEach(state.sinks, sink => sink(. End)); - }; - - {source, next, complete}; -}; diff --git a/src/sources/wonka_source_makeSubject.rei b/src/sources/wonka_source_makeSubject.rei deleted file mode 100644 index fc153e4..0000000 --- a/src/sources/wonka_source_makeSubject.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let makeSubject: unit => subjectT('a); diff --git a/src/sources/wonka_source_primitives.d.ts b/src/sources/wonka_source_primitives.d.ts deleted file mode 100644 index 189b774..0000000 --- a/src/sources/wonka_source_primitives.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Source } from '../wonka_types'; - -export const empty: Source<{}>; -export const never: Source<{}>; diff --git a/src/sources/wonka_source_primitives.re b/src/sources/wonka_source_primitives.re deleted file mode 100644 index 6914fb9..0000000 --- a/src/sources/wonka_source_primitives.re +++ /dev/null @@ -1,11 +0,0 @@ -open Wonka_types; -open Wonka_helpers; - -let empty = sink => { - sink(. Start(talkbackPlaceholder)); - sink(. End); -}; - -let never = sink => { - sink(. Start(talkbackPlaceholder)); -}; diff --git a/src/sources/wonka_source_primitives.rei b/src/sources/wonka_source_primitives.rei deleted file mode 100644 index cd1d40b..0000000 --- a/src/sources/wonka_source_primitives.rei +++ /dev/null @@ -1,4 +0,0 @@ -open Wonka_types; - -let empty: sinkT('a) => unit; -let never: sinkT('a) => unit; diff --git a/src/web/wonkaJs.d.ts b/src/web/wonkaJs.d.ts deleted file mode 100644 index ed3d86d..0000000 --- a/src/web/wonkaJs.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* operators */ -export * from './wonka_operator_debounce'; -export * from './wonka_operator_delay'; -export * from './wonka_operator_throttle'; - -/* sinks */ -export * from './wonka_sink_toPromise'; - -/* sources */ -export * from './wonka_source_interval'; -export * from './wonka_source_fromDomEvent'; -export * from './wonka_source_fromListener'; -export * from './wonka_source_fromPromise'; - -/* wrappers */ -export * from './wonka_observable'; -export * from './wonka_callbag'; diff --git a/src/web/wonkaJs.re b/src/web/wonkaJs.re index 352508c..b7f378c 100644 --- a/src/web/wonkaJs.re +++ b/src/web/wonkaJs.re @@ -1,17 +1,278 @@ +open Wonka_types; + +[@genType] +let fromObservable = Wonka_observable.fromObservable; +[@genType] +let toObservable = Wonka_observable.toObservable; + +[@genType] +let fromCallbag = Wonka_callbag.fromCallbag; +[@genType] +let toCallbag = Wonka_callbag.toCallbag; + /* operators */ -include Wonka_operator_debounce; -include Wonka_operator_delay; -include Wonka_operator_throttle; + +[@genType] +let debounce = (f: (. 'a) => int): operatorT('a, 'a) => + curry(source => + curry(sink => { + let gotEndSignal = ref(false); + let id: ref(option(Js.Global.timeoutId)) = ref(None); + + let clearTimeout = () => + switch (id^) { + | Some(timeoutId) => + id := None; + Js.Global.clearTimeout(timeoutId); + | None => () + }; + + source((. signal) => + switch (signal) { + | Start(tb) => + sink(. + Start( + (. signal) => + switch (signal) { + | Close => + clearTimeout(); + tb(. Close); + | _ => tb(. signal) + }, + ), + ) + | Push(x) => + clearTimeout(); + id := + Some( + Js.Global.setTimeout( + () => { + id := None; + sink(. signal); + if (gotEndSignal^) { + sink(. End); + }; + }, + f(. x), + ), + ); + | End => + gotEndSignal := true; + + switch (id^) { + | None => sink(. End) + | _ => () + }; + } + ); + }) + ); + +type delayStateT = { + mutable talkback: (. talkbackT) => unit, + mutable active: int, + mutable gotEndSignal: bool, +}; + +[@genType] +let delay = (wait: int): operatorT('a, 'a) => + curry(source => + curry(sink => { + let state: delayStateT = { + talkback: Wonka_helpers.talkbackPlaceholder, + active: 0, + gotEndSignal: false, + }; + + source((. signal) => + switch (signal) { + | Start(tb) => state.talkback = tb + | _ when !state.gotEndSignal => + state.active = state.active + 1; + ignore( + Js.Global.setTimeout( + () => { + if (state.gotEndSignal && state.active === 0) { + sink(. End); + } else { + state.active = state.active - 1; + }; + + sink(. signal); + }, + wait, + ), + ); + | _ => () + } + ); + + sink(. + Start( + (. signal) => + switch (signal) { + | Close => + state.gotEndSignal = true; + if (state.active === 0) { + sink(. End); + }; + | _ when !state.gotEndSignal => state.talkback(. signal) + | _ => () + }, + ), + ); + }) + ); + +[@genType] +let throttle = (f: (. 'a) => int): operatorT('a, 'a) => + curry(source => + curry(sink => { + let skip = ref(false); + let id: ref(option(Js.Global.timeoutId)) = ref(None); + let clearTimeout = () => + switch (id^) { + | Some(timeoutId) => Js.Global.clearTimeout(timeoutId) + | None => () + }; + + source((. signal) => + switch (signal) { + | Start(tb) => + sink(. + Start( + (. signal) => + switch (signal) { + | Close => + clearTimeout(); + tb(. Close); + | _ => tb(. signal) + }, + ), + ) + | End => + clearTimeout(); + sink(. End); + | Push(x) when ! skip^ => + skip := true; + clearTimeout(); + id := + Some( + Js.Global.setTimeout( + () => { + id := None; + skip := false; + }, + f(. x), + ), + ); + sink(. signal); + | Push(_) => () + } + ); + }) + ); /* sinks */ -include Wonka_sink_toPromise; +[@genType] +let toPromise = (source: sourceT('a)): Js.Promise.t('a) => { + Js.Promise.make((~resolve, ~reject as _) => + Wonka_operators.takeLast(1, source, (. signal) => + switch (signal) { + | Start(x) => x(. Pull) + | Push(x) => resolve(. x) + | End => () + } + ) + ); +}; /* sources */ -include Wonka_source_interval; -include Wonka_source_fromDomEvent; -include Wonka_source_fromListener; -include Wonka_source_fromPromise; - -/* wrappers */ -include Wonka_observable; -include Wonka_callbag; +[@genType] +let interval = (p: int): sourceT(int) => + curry(sink => { + let i = ref(0); + let id = + Js.Global.setInterval( + () => { + let num = i^; + i := i^ + 1; + sink(. Push(num)); + }, + p, + ); + + sink(. + Start( + (. signal) => + switch (signal) { + | Close => Js.Global.clearInterval(id) + | _ => () + }, + ), + ); + }); + +[@genType] +let fromDomEvent = (element: Dom.element, event: string): sourceT(Dom.event) => + curry(sink => { + let addEventListener: (Dom.element, string, Dom.event => unit) => unit = [%raw + {| + function (element, event, handler) { + element.addEventListener(event, handler); + } + |} + ]; + + let removeEventListener: (Dom.element, string, Dom.event => unit) => unit = [%raw + {| + function (element, event, handler) { + element.removeEventListener(event, handler); + } + |} + ]; + + let handler = event => sink(. Push(event)); + + sink(. + Start( + (. signal) => + switch (signal) { + | Close => removeEventListener(element, event, handler) + | _ => () + }, + ), + ); + + addEventListener(element, event, handler); + }); + +[@genType] +let fromPromise = (promise: Js.Promise.t('a)): sourceT('a) => + curry(sink => { + let ended = ref(false); + + ignore( + Js.Promise.then_( + value => { + if (! ended^) { + sink(. Push(value)); + sink(. End); + }; + + Js.Promise.resolve(); + }, + promise, + ), + ); + + sink(. + Start( + (. signal) => + switch (signal) { + | Close => ended := true + | _ => () + }, + ), + ); + }); diff --git a/src/web/wonka_callbag.d.ts b/src/web/wonka_callbag.d.ts deleted file mode 100644 index 596fa8f..0000000 --- a/src/web/wonka_callbag.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Source } from '../wonka_types'; - -export type Callbag = { - (t: 0, d: Callbag): void; - (t: 1, d: I): void; - (t: 2, d?: any): void; -}; - -export const fromCallbag: (callbag: Callbag) => Source; -export const toCallbag: (source: Source) => Callbag; diff --git a/src/web/wonka_callbag.re b/src/web/wonka_callbag.re index 1b86448..f42035f 100644 --- a/src/web/wonka_callbag.re +++ b/src/web/wonka_callbag.re @@ -1,20 +1,27 @@ open Wonka_types; +[@genType] type callbagSignal = - | CALLBAG_START /* 0 */ - | CALLBAG_DATA /* 1 */ - | CALLBAG_END /* 2 */; + | [@genType.as 0] CALLBAG_START /* 0 */ + | [@genType.as 1] CALLBAG_DATA /* 1 */ + | [@genType.as 2] CALLBAG_END /* 2 */; +[@genType] type callbagData('a); + +[@genType] type callbagTalkback = (. callbagSignal) => unit; -type callbagT('a) = (. callbagSignal, callbagData('a)) => unit; + +[@genType.import "../shims/Js.shim"] +type callbagT('a) = (callbagSignal, callbagData('a)) => unit; external unsafe_getCallbag: callbagData('a) => callbagT('a) = "%identity"; external unsafe_getTalkback: callbagData('a) => callbagTalkback = "%identity"; external unsafe_getValue: callbagData('a) => 'a = "%identity"; external unsafe_wrap: 'any => callbagData('a) = "%identity"; -let fromCallbag = callbag => +[@genType] +let fromCallbag = (callbag: callbagT('a)): sourceT('a) => curry(sink => { let wrappedSink = (. signal, data) => @@ -32,11 +39,12 @@ let fromCallbag = callbag => | CALLBAG_DATA => sink(. Push(unsafe_getValue(data))) | CALLBAG_END => sink(. End) }; - callbag(. CALLBAG_START, unsafe_wrap(wrappedSink)); + callbag(CALLBAG_START, unsafe_wrap(wrappedSink)); }); -let toCallbag = source => - curry((. signal, data) => +[@genType] +let toCallbag = (source: sourceT('a)): callbagT('a) => + curry((signal, data) => if (signal === CALLBAG_START) { let callbag = unsafe_getCallbag(data); source((. signal) => @@ -48,9 +56,9 @@ let toCallbag = source => | CALLBAG_DATA => talkbackFn(. Pull) | CALLBAG_END => talkbackFn(. Close) }; - callbag(. CALLBAG_START, unsafe_wrap(wrappedTalkbackFn)); - | Push(data) => callbag(. CALLBAG_DATA, unsafe_wrap(data)) - | End => callbag(. CALLBAG_END, unsafe_wrap()) + callbag(CALLBAG_START, unsafe_wrap(wrappedTalkbackFn)); + | Push(data) => callbag(CALLBAG_DATA, unsafe_wrap(data)) + | End => callbag(CALLBAG_END, unsafe_wrap()) } ); } diff --git a/src/web/wonka_callbag.rei b/src/web/wonka_callbag.rei deleted file mode 100644 index 66c76a2..0000000 --- a/src/web/wonka_callbag.rei +++ /dev/null @@ -1,6 +0,0 @@ -open Wonka_types; - -type callbagT('a); - -let fromCallbag: (callbagT('a), sinkT('a)) => unit; -let toCallbag: sourceT('a) => callbagT('a); diff --git a/src/web/wonka_observable.d.ts b/src/web/wonka_observable.d.ts deleted file mode 100644 index c4c36df..0000000 --- a/src/web/wonka_observable.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Source } from '../wonka_types'; - -export interface JsSubscription { - unsubscribe(): void; -} - -export interface JsObserver { - next(value: T): void; - error(errorValue: any): void; - complete(): void; -} - -export interface JsObservable { - subscribe(observer: JsObserver): JsSubscription; -} - -export const fromObservable: (observable: JsObservable) => Source; -export const toObservable: (source: Source) => JsObservable; diff --git a/src/web/wonka_observable.re b/src/web/wonka_observable.re index 34c648d..c5ac1b3 100644 --- a/src/web/wonka_observable.re +++ b/src/web/wonka_observable.re @@ -9,18 +9,21 @@ let observableSymbol: string = [%raw |} ]; -type subscriptionT = {. [@bs.meth] "unsubscribe": unit => unit}; +[@genType.import "../shims/Js.shim"] +type observableSubscriptionT = {. [@bs.meth] "unsubscribe": unit => unit}; -type observerT('a) = { +[@genType.import "../shims/Js.shim"] +type observableObserverT('a) = { . [@bs.meth] "next": 'a => unit, [@bs.meth] "error": Js.Exn.t => unit, [@bs.meth] "complete": unit => unit, }; +[@genType.import "../shims/Js.shim"] type observableT('a) = { . - [@bs.meth] "subscribe": observerT('a) => subscriptionT, + [@bs.meth] "subscribe": observableObserverT('a) => observableSubscriptionT, }; type observableFactoryT('a) = (. unit) => observableT('a); @@ -38,6 +41,7 @@ external observable_set: (observableT('a), string, unit => observableT('a)) => unit = ""; +[@genType] let fromObservable = (input: observableT('a)): sourceT('a) => { let observable = switch (input->observable_get(observableSymbol)) { @@ -46,7 +50,7 @@ let fromObservable = (input: observableT('a)): sourceT('a) => { }; curry(sink => { - let observer: observerT('a) = + let observer: observableObserverT('a) = [@bs] { as _; @@ -74,12 +78,14 @@ type observableStateT = { mutable ended: bool, }; +[@genType] let toObservable = (source: sourceT('a)): observableT('a) => { let observable: observableT('a) = [@bs] { as _; - pub subscribe = (observer: observerT('a)): subscriptionT => { + pub subscribe = + (observer: observableObserverT('a)): observableSubscriptionT => { let state: observableStateT = { talkback: talkbackPlaceholder, ended: false, diff --git a/src/web/wonka_observable.rei b/src/web/wonka_observable.rei deleted file mode 100644 index 4b1f649..0000000 --- a/src/web/wonka_observable.rei +++ /dev/null @@ -1,6 +0,0 @@ -open Wonka_types; - -type observableT('a); - -let fromObservable: (observableT('a), sinkT('a)) => unit; -let toObservable: sourceT('a) => observableT('a); diff --git a/src/web/wonka_operator_debounce.d.ts b/src/web/wonka_operator_debounce.d.ts deleted file mode 100644 index e5f03be..0000000 --- a/src/web/wonka_operator_debounce.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const debounce: (f: (x: A) => number) => Operator; diff --git a/src/web/wonka_operator_debounce.re b/src/web/wonka_operator_debounce.re deleted file mode 100644 index bb46cb1..0000000 --- a/src/web/wonka_operator_debounce.re +++ /dev/null @@ -1,56 +0,0 @@ -open Wonka_types; - -let debounce = f => - curry(source => - curry(sink => { - let gotEndSignal = ref(false); - let id: ref(option(Js.Global.timeoutId)) = ref(None); - - let clearTimeout = () => - switch (id^) { - | Some(timeoutId) => - id := None; - Js.Global.clearTimeout(timeoutId); - | None => () - }; - - source((. signal) => - switch (signal) { - | Start(tb) => - sink(. - Start( - (. signal) => - switch (signal) { - | Close => - clearTimeout(); - tb(. Close); - | _ => tb(. signal) - }, - ), - ) - | Push(x) => - clearTimeout(); - id := - Some( - Js.Global.setTimeout( - () => { - id := None; - sink(. signal); - if (gotEndSignal^) { - sink(. End); - }; - }, - f(. x), - ), - ); - | End => - gotEndSignal := true; - - switch (id^) { - | None => sink(. End) - | _ => () - }; - } - ); - }) - ); diff --git a/src/web/wonka_operator_debounce.rei b/src/web/wonka_operator_debounce.rei deleted file mode 100644 index 78a7b12..0000000 --- a/src/web/wonka_operator_debounce.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let debounce: ((. 'a) => int, sourceT('a), sinkT('a)) => unit; diff --git a/src/web/wonka_operator_delay.d.ts b/src/web/wonka_operator_delay.d.ts deleted file mode 100644 index 106bb3d..0000000 --- a/src/web/wonka_operator_delay.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const delay: (duration: number) => Operator; diff --git a/src/web/wonka_operator_delay.re b/src/web/wonka_operator_delay.re deleted file mode 100644 index 98660d8..0000000 --- a/src/web/wonka_operator_delay.re +++ /dev/null @@ -1,56 +0,0 @@ -open Wonka_types; - -type delayStateT = { - mutable talkback: (. talkbackT) => unit, - mutable active: int, - mutable gotEndSignal: bool, -}; - -let delay = wait => - curry(source => - curry(sink => { - let state: delayStateT = { - talkback: Wonka_helpers.talkbackPlaceholder, - active: 0, - gotEndSignal: false, - }; - - source((. signal) => - switch (signal) { - | Start(tb) => state.talkback = tb - | _ when !state.gotEndSignal => - state.active = state.active + 1; - ignore( - Js.Global.setTimeout( - () => { - if (state.gotEndSignal && state.active === 0) { - sink(. End); - } else { - state.active = state.active - 1; - }; - - sink(. signal); - }, - wait, - ), - ); - | _ => () - } - ); - - sink(. - Start( - (. signal) => - switch (signal) { - | Close => - state.gotEndSignal = true; - if (state.active === 0) { - sink(. End); - }; - | _ when !state.gotEndSignal => state.talkback(. signal) - | _ => () - }, - ), - ); - }) - ); diff --git a/src/web/wonka_operator_delay.rei b/src/web/wonka_operator_delay.rei deleted file mode 100644 index d1bc199..0000000 --- a/src/web/wonka_operator_delay.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let delay: (int, sourceT('a), sinkT('a)) => unit; diff --git a/src/web/wonka_operator_throttle.d.ts b/src/web/wonka_operator_throttle.d.ts deleted file mode 100644 index 7b66205..0000000 --- a/src/web/wonka_operator_throttle.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator } from '../wonka_types'; - -export const throttle: (f: (x: A) => number) => Operator; diff --git a/src/web/wonka_operator_throttle.re b/src/web/wonka_operator_throttle.re deleted file mode 100644 index cdfb401..0000000 --- a/src/web/wonka_operator_throttle.re +++ /dev/null @@ -1,49 +0,0 @@ -open Wonka_types; - -let throttle = f => - curry(source => - curry(sink => { - let skip = ref(false); - let id: ref(option(Js.Global.timeoutId)) = ref(None); - let clearTimeout = () => - switch (id^) { - | Some(timeoutId) => Js.Global.clearTimeout(timeoutId) - | None => () - }; - - source((. signal) => - switch (signal) { - | Start(tb) => - sink(. - Start( - (. signal) => - switch (signal) { - | Close => - clearTimeout(); - tb(. Close); - | _ => tb(. signal) - }, - ), - ) - | End => - clearTimeout(); - sink(. End); - | Push(x) when ! skip^ => - skip := true; - clearTimeout(); - id := - Some( - Js.Global.setTimeout( - () => { - id := None; - skip := false; - }, - f(. x), - ), - ); - sink(. signal); - | Push(_) => () - } - ); - }) - ); diff --git a/src/web/wonka_operator_throttle.rei b/src/web/wonka_operator_throttle.rei deleted file mode 100644 index c17cca5..0000000 --- a/src/web/wonka_operator_throttle.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let throttle: ((. 'a) => int, sourceT('a), sinkT('a)) => unit; diff --git a/src/web/wonka_sink_toPromise.d.ts b/src/web/wonka_sink_toPromise.d.ts deleted file mode 100644 index 9a87749..0000000 --- a/src/web/wonka_sink_toPromise.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source } from '../wonka_types'; - -export const toPromise: (source: Source) => Promise; diff --git a/src/web/wonka_sink_toPromise.re b/src/web/wonka_sink_toPromise.re deleted file mode 100644 index c8f2c9c..0000000 --- a/src/web/wonka_sink_toPromise.re +++ /dev/null @@ -1,15 +0,0 @@ -open Wonka_types; - -let toPromise = source => { - Wonka_operator_takeLast.( - Js.Promise.make((~resolve, ~reject as _) => - takeLast(1, source, (. signal) => - switch (signal) { - | Start(x) => x(. Pull) - | Push(x) => resolve(. x) - | End => () - } - ) - ) - ); -}; diff --git a/src/web/wonka_sink_toPromise.rei b/src/web/wonka_sink_toPromise.rei deleted file mode 100644 index c979bd3..0000000 --- a/src/web/wonka_sink_toPromise.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let toPromise: sourceT('a) => Js.Promise.t('a); diff --git a/src/web/wonka_source_fromDomEvent.d.ts b/src/web/wonka_source_fromDomEvent.d.ts deleted file mode 100644 index 69758c2..0000000 --- a/src/web/wonka_source_fromDomEvent.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source } from '../wonka_types'; - -export const fromDomEvent: (element: HTMLElement, event: string) => Source; diff --git a/src/web/wonka_source_fromDomEvent.re b/src/web/wonka_source_fromDomEvent.re deleted file mode 100644 index f86fad4..0000000 --- a/src/web/wonka_source_fromDomEvent.re +++ /dev/null @@ -1,27 +0,0 @@ -open Wonka_types; -open Wonka_source_fromListener; - -let fromDomEvent = (element, event) => - curry(sink => { - let addEventListener: (Dom.element, string, Dom.event => unit) => unit = [%raw - {| - function (element, event, handler) { - element.addEventListener(event, handler); - } - |} - ]; - - let removeEventListener: (Dom.element, string, Dom.event => unit) => unit = [%raw - {| - function (element, event, handler) { - element.removeEventListener(event, handler); - } - |} - ]; - - fromListener( - handler => addEventListener(element, event, handler), - handler => removeEventListener(element, event, handler), - sink, - ); - }); diff --git a/src/web/wonka_source_fromDomEvent.rei b/src/web/wonka_source_fromDomEvent.rei deleted file mode 100644 index 464d948..0000000 --- a/src/web/wonka_source_fromDomEvent.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let fromDomEvent: (Dom.element, string, sinkT(Dom.event)) => unit; diff --git a/src/web/wonka_source_fromListener.d.ts b/src/web/wonka_source_fromListener.d.ts deleted file mode 100644 index aaedb6b..0000000 --- a/src/web/wonka_source_fromListener.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Source } from '../wonka_types'; - -export const fromListener: ( - addListener: (cb: (event: E) => void) => void, - removeListener: (cb: (event: E) => void) => void -) => Source; diff --git a/src/web/wonka_source_fromListener.re b/src/web/wonka_source_fromListener.re deleted file mode 100644 index 8fd1ab9..0000000 --- a/src/web/wonka_source_fromListener.re +++ /dev/null @@ -1,18 +0,0 @@ -open Wonka_types; - -let fromListener = (addListener, removeListener) => - curry(sink => { - let handler = event => sink(. Push(event)); - - sink(. - Start( - (. signal) => - switch (signal) { - | Close => removeListener(handler) - | _ => () - }, - ), - ); - - addListener(handler); - }); diff --git a/src/web/wonka_source_fromListener.rei b/src/web/wonka_source_fromListener.rei deleted file mode 100644 index 01de327..0000000 --- a/src/web/wonka_source_fromListener.rei +++ /dev/null @@ -1,4 +0,0 @@ -open Wonka_types; - -let fromListener: - (('event => unit) => unit, ('event => unit) => unit, sinkT('event)) => unit; diff --git a/src/web/wonka_source_fromPromise.d.ts b/src/web/wonka_source_fromPromise.d.ts deleted file mode 100644 index 436c17e..0000000 --- a/src/web/wonka_source_fromPromise.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Operator, Source } from '../wonka_types'; - -export const fromPromise: (promise: Promise) => Source; diff --git a/src/web/wonka_source_fromPromise.re b/src/web/wonka_source_fromPromise.re deleted file mode 100644 index aa77a6b..0000000 --- a/src/web/wonka_source_fromPromise.re +++ /dev/null @@ -1,30 +0,0 @@ -open Wonka_types; - -let fromPromise = promise => - curry(sink => { - let ended = ref(false); - - ignore( - Js.Promise.then_( - value => { - if (! ended^) { - sink(. Push(value)); - sink(. End); - }; - - Js.Promise.resolve(); - }, - promise, - ), - ); - - sink(. - Start( - (. signal) => - switch (signal) { - | Close => ended := true - | _ => () - }, - ), - ); - }); diff --git a/src/web/wonka_source_fromPromise.rei b/src/web/wonka_source_fromPromise.rei deleted file mode 100644 index 703fa13..0000000 --- a/src/web/wonka_source_fromPromise.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let fromPromise: (Js.Promise.t('a), sinkT('a)) => unit; diff --git a/src/web/wonka_source_interval.d.ts b/src/web/wonka_source_interval.d.ts deleted file mode 100644 index 60a6cf3..0000000 --- a/src/web/wonka_source_interval.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Source } from '../wonka_types'; - -export const interval: (interval: number) => Source; diff --git a/src/web/wonka_source_interval.re b/src/web/wonka_source_interval.re deleted file mode 100644 index a40d6c0..0000000 --- a/src/web/wonka_source_interval.re +++ /dev/null @@ -1,25 +0,0 @@ -open Wonka_types; - -let interval = p => - curry(sink => { - let i = ref(0); - let id = - Js.Global.setInterval( - () => { - let num = i^; - i := i^ + 1; - sink(. Push(num)); - }, - p, - ); - - sink(. - Start( - (. signal) => - switch (signal) { - | Close => Js.Global.clearInterval(id) - | _ => () - }, - ), - ); - }); diff --git a/src/web/wonka_source_interval.rei b/src/web/wonka_source_interval.rei deleted file mode 100644 index ee782e0..0000000 --- a/src/web/wonka_source_interval.rei +++ /dev/null @@ -1,3 +0,0 @@ -open Wonka_types; - -let interval: (int, sinkT(int)) => unit; diff --git a/src/wonka.d.ts b/src/wonka.d.ts deleted file mode 100644 index 8ad3193..0000000 --- a/src/wonka.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* sources */ -export * from './sources/wonka_source_fromArray'; -export * from './sources/wonka_source_fromList'; -export * from './sources/wonka_source_fromValue'; -export * from './sources/wonka_source_make'; -export * from './sources/wonka_source_makeSubject'; -export * from './sources/wonka_source_primitives'; - -/* operators */ -export * from './operators/wonka_operator_buffer'; -export * from './operators/wonka_operator_combine'; -export * from './operators/wonka_operator_concatMap'; -export * from './operators/wonka_operator_filter'; -export * from './operators/wonka_operator_map'; -export * from './operators/wonka_operator_mergeMap'; -export * from './operators/wonka_operator_onEnd'; -export * from './operators/wonka_operator_onPush'; -export * from './operators/wonka_operator_onStart'; -export * from './operators/wonka_operator_sample'; -export * from './operators/wonka_operator_scan'; -export * from './operators/wonka_operator_share'; -export * from './operators/wonka_operator_skip'; -export * from './operators/wonka_operator_skipUntil'; -export * from './operators/wonka_operator_skipWhile'; -export * from './operators/wonka_operator_switchMap'; -export * from './operators/wonka_operator_take'; -export * from './operators/wonka_operator_takeLast'; -export * from './operators/wonka_operator_takeUntil'; -export * from './operators/wonka_operator_takeWhile'; - -/* sinks */ -export * from './sinks/wonka_sink_publish'; -export * from './sinks/wonka_sink_subscribe'; -export * from './sinks/wonka_sink_toArray'; - -export * from './web/wonkaJs'; diff --git a/src/wonka.ts b/src/wonka.ts new file mode 100644 index 0000000..7facf26 --- /dev/null +++ b/src/wonka.ts @@ -0,0 +1,15 @@ +export * from './helpers/pipe'; + +export * from './wonka_sources.gen'; +export * from './wonka_operators.gen'; +export * from './wonka_sinks.gen'; +export * from './web/wonkaJs.gen'; + +export { + sinkT as Sink, + sourceT as Source, + operatorT as Operator, + subscriptionT as Subscription, + observerT as Observer, + subjectT as Subject +} from './wonka_types.gen'; diff --git a/src/wonka_operators.re b/src/wonka_operators.re index c3238f8..ff1c395 100644 --- a/src/wonka_operators.re +++ b/src/wonka_operators.re @@ -1,20 +1,947 @@ -include Wonka_operator_buffer; -include Wonka_operator_combine; -include Wonka_operator_concatMap; -include Wonka_operator_filter; -include Wonka_operator_map; -include Wonka_operator_mergeMap; -include Wonka_operator_onEnd; -include Wonka_operator_onPush; -include Wonka_operator_onStart; -include Wonka_operator_sample; -include Wonka_operator_scan; -include Wonka_operator_share; -include Wonka_operator_skip; -include Wonka_operator_skipUntil; -include Wonka_operator_skipWhile; -include Wonka_operator_switchMap; -include Wonka_operator_take; -include Wonka_operator_takeLast; -include Wonka_operator_takeUntil; -include Wonka_operator_takeWhile; +open Wonka_types; +open Wonka_helpers; + +type bufferStateT('a) = { + mutable buffer: Rebel.MutableQueue.t('a), + mutable sourceTalkback: (. talkbackT) => unit, + mutable notifierTalkback: (. talkbackT) => unit, + mutable ended: bool, +}; + +[@genType] +let buffer = (notifier: sourceT('a)): operatorT('b, array('b)) => + curry(source => + curry(sink => { + let state = { + buffer: Rebel.MutableQueue.make(), + sourceTalkback: talkbackPlaceholder, + notifierTalkback: talkbackPlaceholder, + ended: false, + }; + + source((. signal) => + switch (signal) { + | Start(tb) => + state.sourceTalkback = tb; + + notifier((. signal) => + switch (signal) { + | Start(tb) => + state.notifierTalkback = tb; + state.notifierTalkback(. Pull); + | Push(_) when !state.ended => + sink(. Push(Rebel.MutableQueue.toArray(state.buffer))); + state.buffer = Rebel.MutableQueue.make(); + state.notifierTalkback(. Pull); + | Push(_) => () + | End when !state.ended => + state.ended = true; + state.sourceTalkback(. Close); + sink(. Push(Rebel.MutableQueue.toArray(state.buffer))); + sink(. End); + | End => () + } + ); + | Push(value) when !state.ended => + Rebel.MutableQueue.add(state.buffer, value); + state.sourceTalkback(. Pull); + | Push(_) => () + | End when !state.ended => + state.ended = true; + state.notifierTalkback(. Close); + sink(. Push(Rebel.MutableQueue.toArray(state.buffer))); + sink(. End); + | End => () + } + ); + + sink(. + Start( + (. signal) => + if (!state.ended) { + switch (signal) { + | Close => + state.ended = true; + state.sourceTalkback(. Close); + state.notifierTalkback(. Close); + | Pull => state.sourceTalkback(. Pull) + }; + }, + ), + ); + }) + ); + +type combineStateT('a, 'b) = { + mutable talkbackA: (. talkbackT) => unit, + mutable talkbackB: (. talkbackT) => unit, + mutable lastValA: option('a), + mutable lastValB: option('b), + mutable gotSignal: bool, + mutable endCounter: int, + mutable ended: bool, +}; + +[@genType] +let combine = + (sourceA: sourceT('a), sourceB: sourceT('b)): sourceT(('a, 'b)) => + curry(sink => { + let state = { + talkbackA: talkbackPlaceholder, + talkbackB: talkbackPlaceholder, + lastValA: None, + lastValB: None, + gotSignal: false, + endCounter: 0, + ended: false, + }; + + sourceA((. signal) => + switch (signal, state.lastValB) { + | (Start(tb), _) => state.talkbackA = tb + | (Push(a), None) => + state.lastValA = Some(a); + state.gotSignal = false; + | (Push(a), Some(b)) when !state.ended => + state.lastValA = Some(a); + state.gotSignal = false; + sink(. Push((a, b))); + | (End, _) when state.endCounter < 1 => + state.endCounter = state.endCounter + 1 + | (End, _) when !state.ended => + state.ended = true; + sink(. End); + | _ => () + } + ); + + sourceB((. signal) => + switch (signal, state.lastValA) { + | (Start(tb), _) => state.talkbackB = tb + | (Push(b), None) => + state.lastValB = Some(b); + state.gotSignal = false; + | (Push(b), Some(a)) when !state.ended => + state.lastValB = Some(b); + state.gotSignal = false; + sink(. Push((a, b))); + | (End, _) when state.endCounter < 1 => + state.endCounter = state.endCounter + 1 + | (End, _) when !state.ended => + state.ended = true; + sink(. End); + | _ => () + } + ); + + sink(. + Start( + (. signal) => + if (!state.ended) { + switch (signal) { + | Close => + state.ended = true; + state.talkbackA(. Close); + state.talkbackB(. Close); + | Pull when !state.gotSignal => + state.gotSignal = true; + state.talkbackA(. signal); + state.talkbackB(. signal); + | Pull => () + }; + }, + ), + ); + }); + +type concatMapStateT('a) = { + inputQueue: Rebel.MutableQueue.t('a), + mutable outerTalkback: (. talkbackT) => unit, + mutable innerTalkback: (. talkbackT) => unit, + mutable innerActive: bool, + mutable closed: bool, + mutable ended: bool, +}; + +[@genType] +let concatMap = (f: (. 'a) => sourceT('b)): operatorT('a, 'b) => + curry(source => + curry(sink => { + let state: concatMapStateT('a) = { + inputQueue: Rebel.MutableQueue.make(), + outerTalkback: talkbackPlaceholder, + innerTalkback: talkbackPlaceholder, + innerActive: false, + closed: false, + ended: false, + }; + + let rec applyInnerSource = innerSource => + innerSource((. signal) => + switch (signal) { + | End => + state.innerActive = false; + state.innerTalkback = talkbackPlaceholder; + + switch (Rebel.MutableQueue.pop(state.inputQueue)) { + | Some(input) => applyInnerSource(f(. input)) + | None when state.ended => sink(. End) + | None => () + }; + | Start(tb) => + state.innerActive = true; + state.innerTalkback = tb; + tb(. Pull); + | Push(x) when !state.closed => + sink(. Push(x)); + state.innerTalkback(. Pull); + | Push(_) => () + } + ); + + source((. signal) => + switch (signal) { + | End when !state.ended => + state.ended = true; + if (!state.innerActive + && Rebel.MutableQueue.isEmpty(state.inputQueue)) { + sink(. End); + }; + | End => () + | Start(tb) => + state.outerTalkback = tb; + tb(. Pull); + | Push(x) when !state.ended => + if (state.innerActive) { + Rebel.MutableQueue.add(state.inputQueue, x); + } else { + applyInnerSource(f(. x)); + }; + + state.outerTalkback(. Pull); + | Push(_) => () + } + ); + + sink(. + Start( + (. signal) => + switch (signal) { + | Pull => + if (!state.ended) { + state.innerTalkback(. Pull); + } + | Close => + state.innerTalkback(. Close); + if (!state.ended) { + state.ended = true; + state.closed = true; + state.outerTalkback(. Close); + state.innerTalkback = talkbackPlaceholder; + }; + }, + ), + ); + }) + ); + +[@genType] +let concatAll = (source: sourceT(sourceT('a))): sourceT('a) => + concatMap((. x) => x, source); + +[@genType] +let concat = (sources: array(sourceT('a))): sourceT('a) => + concatMap((. x) => x, Wonka_sources.fromArray(sources)); + +[@genType] +let filter = (f: (. 'a) => bool): operatorT('a, 'a) => + curry(source => + curry(sink => + captureTalkback(source, (. signal, talkback) => + switch (signal) { + | Push(x) when !f(. x) => talkback(. Pull) + | _ => sink(. signal) + } + ) + ) + ); + +[@genType] +let map = (f: (. 'a) => 'b): operatorT('a, 'b) => + curry(source => + curry(sink => + source((. signal) => + sink(. + switch (signal) { + | Start(x) => Start(x) + | Push(x) => Push(f(. x)) + | End => End + }, + ) + ) + ) + ); + +type mergeMapStateT = { + mutable outerTalkback: (. talkbackT) => unit, + mutable innerTalkbacks: Rebel.Array.t((. talkbackT) => unit), + mutable ended: bool, +}; + +[@genType] +let mergeMap = (f: (. 'a) => sourceT('b)): operatorT('a, 'b) => + curry(source => + curry(sink => { + let state: mergeMapStateT = { + outerTalkback: talkbackPlaceholder, + innerTalkbacks: Rebel.Array.makeEmpty(), + ended: false, + }; + + let applyInnerSource = innerSource => { + let talkback = ref(talkbackPlaceholder); + + innerSource((. signal) => + switch (signal) { + | End => + state.innerTalkbacks = + Rebel.Array.filter(state.innerTalkbacks, x => x !== talkback^); + if (state.ended && Rebel.Array.size(state.innerTalkbacks) === 0) { + sink(. End); + }; + | Start(tb) => + talkback := tb; + state.innerTalkbacks = + Rebel.Array.append(state.innerTalkbacks, tb); + tb(. Pull); + | Push(x) when Rebel.Array.size(state.innerTalkbacks) !== 0 => + sink(. Push(x)); + talkback^(. Pull); + | Push(_) => () + } + ); + }; + + source((. signal) => + switch (signal) { + | End when !state.ended => + state.ended = true; + if (Rebel.Array.size(state.innerTalkbacks) === 0) { + sink(. End); + }; + | End => () + | Start(tb) => + state.outerTalkback = tb; + tb(. Pull); + | Push(x) when !state.ended => + applyInnerSource(f(. x)); + state.outerTalkback(. Pull); + | Push(_) => () + } + ); + + sink(. + Start( + (. signal) => + switch (signal) { + | Close => + Rebel.Array.forEach(state.innerTalkbacks, talkback => + talkback(. Close) + ); + if (!state.ended) { + state.ended = true; + state.outerTalkback(. Close); + Rebel.Array.forEach(state.innerTalkbacks, talkback => + talkback(. Close) + ); + state.innerTalkbacks = Rebel.Array.makeEmpty(); + }; + | Pull when !state.ended => + Rebel.Array.forEach(state.innerTalkbacks, talkback => + talkback(. Pull) + ) + | Pull => () + }, + ), + ); + }) + ); + +[@genType] +let merge = (sources: array(sourceT('a))): sourceT('a) => + mergeMap((. x) => x, Wonka_sources.fromArray(sources)); + +[@genType] +let mergeAll = (source: sourceT(sourceT('a))): sourceT('a) => + mergeMap((. x) => x, source); + +[@genType] +let flatten = mergeAll; + +[@genType] +let onEnd = (f: (. unit) => unit): operatorT('a, 'a) => + curry(source => + curry(sink => { + let ended = ref(false); + + source((. signal) => + switch (signal) { + | Start(talkback) => + sink(. + Start( + (. signal) => { + switch (signal) { + | Close when ! ended^ => + ended := true; + f(.); + | Close + | Pull => () + }; + + talkback(. signal); + }, + ), + ) + | End => + if (! ended^) { + ended := true; + sink(. signal); + f(.); + } + | _ => sink(. signal) + } + ); + }) + ); + +[@genType] +let onPush = (f: (. 'a) => unit): operatorT('a, 'a) => + curry(source => + curry(sink => + source((. signal) => { + switch (signal) { + | Push(x) => f(. x) + | _ => () + }; + + sink(. signal); + }) + ) + ); + +[@genType] +let tap = onPush; + +[@genType] +let onStart = (f: (. unit) => unit): operatorT('a, 'a) => + curry(source => + curry(sink => + source((. signal) => + switch (signal) { + | Start(_) => + sink(. signal); + f(.); + | _ => sink(. signal) + } + ) + ) + ); + +type sampleStateT('a) = { + mutable ended: bool, + mutable value: option('a), + mutable sourceTalkback: (. talkbackT) => unit, + mutable notifierTalkback: (. talkbackT) => unit, +}; + +[@genType] +let sample = (notifier: sourceT('a)): operatorT('b, 'b) => + curry(source => + curry(sink => { + let state = { + ended: false, + value: None, + sourceTalkback: (. _: talkbackT) => (), + notifierTalkback: (. _: talkbackT) => (), + }; + + source((. signal) => + switch (signal) { + | Start(tb) => state.sourceTalkback = tb + | End => + state.ended = true; + state.notifierTalkback(. Close); + sink(. End); + | Push(x) => state.value = Some(x) + } + ); + + notifier((. signal) => + switch (signal, state.value) { + | (Start(tb), _) => state.notifierTalkback = tb + | (End, _) => + state.ended = true; + state.sourceTalkback(. Close); + sink(. End); + | (Push(_), Some(x)) when !state.ended => + state.value = None; + sink(. Push(x)); + | (Push(_), _) => () + } + ); + + sink(. + Start( + (. signal) => + switch (signal) { + | Pull => + state.sourceTalkback(. Pull); + state.notifierTalkback(. Pull); + | Close => + state.ended = true; + state.sourceTalkback(. Close); + state.notifierTalkback(. Close); + }, + ), + ); + }) + ); + +[@genType] +let scan = (f: (. 'acc, 'a) => 'acc, seed: 'acc): operatorT('a, 'acc) => + curry(source => + curry(sink => { + let acc = ref(seed); + + source((. signal) => + sink(. + switch (signal) { + | Push(x) => + acc := f(. acc^, x); + Push(acc^); + | Start(x) => Start(x) + | End => End + }, + ) + ); + }) + ); + +type shareStateT('a) = { + mutable sinks: Rebel.Array.t(sinkT('a)), + mutable talkback: (. talkbackT) => unit, + mutable gotSignal: bool, +}; + +[@genType] +let share = (source: sourceT('a)): sourceT('a) => { + let state = { + sinks: Rebel.Array.makeEmpty(), + talkback: talkbackPlaceholder, + gotSignal: false, + }; + + sink => { + state.sinks = Rebel.Array.append(state.sinks, sink); + + if (Rebel.Array.size(state.sinks) === 1) { + source((. signal) => + switch (signal) { + | Push(_) => + state.gotSignal = false; + Rebel.Array.forEach(state.sinks, sink => sink(. signal)); + | Start(x) => state.talkback = x + | End => + Rebel.Array.forEach(state.sinks, sink => sink(. End)); + state.sinks = Rebel.Array.makeEmpty(); + } + ); + }; + + sink(. + Start( + (. signal) => + switch (signal) { + | Close => + state.sinks = Rebel.Array.filter(state.sinks, x => x !== sink); + if (Rebel.Array.size(state.sinks) === 0) { + state.talkback(. Close); + }; + | Pull when !state.gotSignal => + state.gotSignal = true; + state.talkback(. signal); + | Pull => () + }, + ), + ); + }; +}; + +[@genType] +let skip = (wait: int): operatorT('a, 'a) => + curry(source => + curry(sink => { + let rest = ref(wait); + + captureTalkback(source, (. signal, talkback) => + switch (signal) { + | Push(_) when rest^ > 0 => + rest := rest^ - 1; + talkback(. Pull); + | _ => sink(. signal) + } + ); + }) + ); + +type skipUntilStateT = { + mutable skip: bool, + mutable ended: bool, + mutable gotSignal: bool, + mutable sourceTalkback: (. talkbackT) => unit, + mutable notifierTalkback: (. talkbackT) => unit, +}; + +[@genType] +let skipUntil = (notifier: sourceT('a)): operatorT('b, 'b) => + curry(source => + curry(sink => { + let state: skipUntilStateT = { + skip: true, + ended: false, + gotSignal: false, + sourceTalkback: talkbackPlaceholder, + notifierTalkback: talkbackPlaceholder, + }; + + source((. signal) => + switch (signal) { + | Start(tb) => + state.sourceTalkback = tb; + + notifier((. signal) => + switch (signal) { + | Start(innerTb) => + state.notifierTalkback = innerTb; + innerTb(. Pull); + tb(. Pull); + | Push(_) => + state.skip = false; + state.notifierTalkback(. Close); + | End => () + } + ); + | Push(_) when state.skip && !state.ended => + state.sourceTalkback(. Pull) + | Push(_) when !state.ended => + state.gotSignal = false; + sink(. signal); + | Push(_) => () + | End => + if (state.skip) { + state.notifierTalkback(. Close); + }; + state.ended = true; + sink(. End); + } + ); + + sink(. + Start( + (. signal) => + switch (signal) { + | Close => + if (state.skip) { + state.notifierTalkback(. Close); + }; + state.ended = true; + state.sourceTalkback(. Close); + | Pull when !state.gotSignal && !state.ended => + state.gotSignal = true; + state.sourceTalkback(. Pull); + | Pull => () + }, + ), + ); + }) + ); + +[@genType] +let skipWhile = (f: (. 'a) => bool): operatorT('a, 'a) => + curry(source => + curry(sink => { + let skip = ref(true); + + captureTalkback(source, (. signal, talkback) => + switch (signal) { + | Push(x) when skip^ => + if (f(. x)) { + talkback(. Pull); + } else { + skip := false; + sink(. signal); + } + | _ => sink(. signal) + } + ); + }) + ); + +type switchMapStateT('a) = { + mutable outerTalkback: (. talkbackT) => unit, + mutable innerTalkback: (. talkbackT) => unit, + mutable innerActive: bool, + mutable closed: bool, + mutable ended: bool, +}; + +[@genType] +let switchMap = (f: (. 'a) => sourceT('b)): operatorT('a, 'b) => + curry(source => + curry(sink => { + let state: switchMapStateT('a) = { + outerTalkback: talkbackPlaceholder, + innerTalkback: talkbackPlaceholder, + innerActive: false, + closed: false, + ended: false, + }; + + let applyInnerSource = innerSource => + innerSource((. signal) => + switch (signal) { + | End => + state.innerActive = false; + state.innerTalkback = talkbackPlaceholder; + if (state.ended) { + sink(. End); + }; + | Start(tb) => + state.innerActive = true; + state.innerTalkback = tb; + tb(. Pull); + | Push(x) when !state.closed => + sink(. Push(x)); + state.innerTalkback(. Pull); + | Push(_) => () + } + ); + + source((. signal) => + switch (signal) { + | End when !state.ended => + state.ended = true; + if (!state.innerActive) { + sink(. End); + }; + | End => () + | Start(tb) => + state.outerTalkback = tb; + tb(. Pull); + | Push(x) when !state.ended => + if (state.innerActive) { + state.innerTalkback(. Close); + state.innerTalkback = talkbackPlaceholder; + }; + applyInnerSource(f(. x)); + state.outerTalkback(. Pull); + | Push(_) => () + } + ); + + sink(. + Start( + (. signal) => + switch (signal) { + | Pull => state.innerTalkback(. Pull) + | Close => + state.innerTalkback(. Close); + if (!state.ended) { + state.ended = true; + state.closed = true; + state.outerTalkback(. Close); + state.innerTalkback = talkbackPlaceholder; + }; + }, + ), + ); + }) + ); + +[@genType] +let switchAll = (source: sourceT(sourceT('a))): sourceT('a) => + switchMap((. x) => x, source); + +type takeStateT = { + mutable taken: int, + mutable talkback: (. talkbackT) => unit, +}; + +[@genType] +let take = (max: int): operatorT('a, 'a) => + curry(source => + curry(sink => { + let state: takeStateT = {taken: 0, talkback: talkbackPlaceholder}; + + source((. signal) => + switch (signal) { + | Start(tb) => state.talkback = tb + | Push(_) when state.taken < max => + state.taken = state.taken + 1; + sink(. signal); + + if (state.taken === max) { + sink(. End); + state.talkback(. Close); + }; + | Push(_) => () + | End when state.taken < max => + state.taken = max; + sink(. End); + | End => () + } + ); + + sink(. + Start( + (. signal) => + if (state.taken < max) { + switch (signal) { + | Pull => state.talkback(. Pull) + | Close => + state.taken = max; + state.talkback(. Close); + }; + }, + ), + ); + }) + ); + +[@genType] +let takeLast = (max: int): operatorT('a, 'a) => + curry(source => + curry(sink => { + open Rebel; + let queue = MutableQueue.make(); + + captureTalkback(source, (. signal, talkback) => + switch (signal) { + | Start(_) => talkback(. Pull) + | Push(x) => + let size = MutableQueue.size(queue); + if (size >= max && max > 0) { + ignore(MutableQueue.pop(queue)); + }; + + MutableQueue.add(queue, x); + talkback(. Pull); + | End => makeTrampoline(sink, (.) => MutableQueue.pop(queue)) + } + ); + }) + ); + +type takeUntilStateT = { + mutable ended: bool, + mutable sourceTalkback: (. talkbackT) => unit, + mutable notifierTalkback: (. talkbackT) => unit, +}; + +[@genType] +let takeUntil = (notifier: sourceT('a)): operatorT('b, 'b) => + curry(source => + curry(sink => { + let state: takeUntilStateT = { + ended: false, + sourceTalkback: talkbackPlaceholder, + notifierTalkback: talkbackPlaceholder, + }; + + source((. signal) => + switch (signal) { + | Start(tb) => + state.sourceTalkback = tb; + + notifier((. signal) => + switch (signal) { + | Start(innerTb) => + state.notifierTalkback = innerTb; + innerTb(. Pull); + | Push(_) => + state.ended = true; + state.sourceTalkback(. Close); + sink(. End); + | End => () + } + ); + | End when !state.ended => + state.ended = true; + state.notifierTalkback(. Close); + sink(. End); + | End => () + | Push(_) when !state.ended => sink(. signal) + | Push(_) => () + } + ); + + sink(. + Start( + (. signal) => + if (!state.ended) { + switch (signal) { + | Close => + state.ended = true; + state.sourceTalkback(. Close); + state.notifierTalkback(. Close); + | Pull => state.sourceTalkback(. Pull) + }; + }, + ), + ); + }) + ); + +[@genType] +let takeWhile = (f: (. 'a) => bool): operatorT('a, 'a) => + curry(source => + curry(sink => { + let ended = ref(false); + let talkback = ref(talkbackPlaceholder); + + source((. signal) => + switch (signal) { + | Start(tb) => + talkback := tb; + sink(. signal); + | End when ! ended^ => + ended := true; + sink(. End); + | End => () + | Push(x) when ! ended^ => + if (!f(. x)) { + ended := true; + sink(. End); + talkback^(. Close); + } else { + sink(. signal); + } + | Push(_) => () + } + ); + + sink(. + Start( + (. signal) => + if (! ended^) { + switch (signal) { + | Pull => talkback^(. Pull) + | Close => + ended := true; + talkback^(. Close); + }; + }, + ), + ); + }) + ); diff --git a/src/wonka_operators.test.ts b/src/wonka_operators.test.ts new file mode 100644 index 0000000..0a63188 --- /dev/null +++ b/src/wonka_operators.test.ts @@ -0,0 +1,970 @@ +import * as deriving from './helpers/wonka_deriving'; +import * as sources from './wonka_sources.gen'; +import * as sinks from './wonka_sinks.gen'; +import * as operators from './wonka_operators.gen'; +import * as web from './web/wonkaJs.gen'; +import * as types from './wonka_types.gen'; + +/* This tests a noop operator for passive Pull talkback signals. + A Pull will be sent from the sink upwards and should pass through + the operator until the source receives it, which then pushes a + value down. */ +const passesPassivePull = ( + operator: types.operatorT, + output: any = 0 +) => + it('responds to Pull talkback signals (spec)', () => { + let talkback = null; + const values = []; + + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + if (tb === deriving.pull) + sink(deriving.push(0)); + })); + }; + + const sink: types.sinkT = signal => { + expect(deriving.isEnd(signal)).toBeFalsy(); + if (deriving.isPush(signal)) { + values.push(deriving.unboxPush(signal)); + } else if (deriving.isStart(signal)) { + talkback = deriving.unboxStart(signal); + } + }; + + operator(source)(sink); + // The Start signal should always come in immediately + expect(talkback).not.toBe(null); + // No Push signals should be issued initially + expect(values).toEqual([]); + + // When pulling a value we expect an immediate response + talkback(deriving.pull); + jest.runAllTimers(); + expect(values).toEqual([output]); + }); + +/* This tests a noop operator for regular, active Push signals. + A Push will be sent downwards from the source, through the + operator to the sink. Pull events should be let through from + the sink after every Push event. */ +const passesActivePush = ( + operator: types.operatorT, + result: any = 0 +) => + it('responds to eager Push signals (spec)', () => { + const values = []; + let talkback = null; + let push = null; + let pulls = 0; + + const source: types.sourceT = sink => { + push = (value: any) => sink(deriving.push(value)); + sink(deriving.start(tb => { + if (tb === deriving.pull) + pulls++; + })); + }; + + const sink: types.sinkT = signal => { + expect(deriving.isEnd(signal)).toBeFalsy(); + if (deriving.isStart(signal)) { + talkback = deriving.unboxStart(signal); + } else if (deriving.isPush(signal)) { + values.push(deriving.unboxPush(signal)); + talkback(deriving.pull); + } + }; + + operator(source)(sink); + // No Pull signals should be issued initially + expect(pulls).toBe(0); + + // When pushing a value we expect an immediate response + push(0); + jest.runAllTimers(); + expect(values).toEqual([result]); + // Subsequently the Pull signal should have travelled upwards + expect(pulls).toBe(1); + }); + +/* This tests a noop operator for Close talkback signals from the sink. + A Close signal will be sent, which should be forwarded to the source, + which then ends the communication without sending an End signal. */ +const passesSinkClose = (operator: types.operatorT) => + it('responds to Close signals from sink (spec)', () => { + let talkback = null; + let closing = 0; + let pulls = 0; + + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + if (tb === deriving.pull) { + pulls++; + if (!closing) sink(deriving.push(0)); + } if (tb === deriving.close) { + closing++; + } + })); + }; + + const sink: types.sinkT = signal => { + expect(deriving.isEnd(signal)).toBeFalsy(); + if (deriving.isStart(signal)) { + talkback = deriving.unboxStart(signal); + } else if (deriving.isPush(signal)) { + talkback(deriving.close); + } + }; + + operator(source)(sink); + + // When pushing a value we expect an immediate close signal + talkback(deriving.pull); + jest.runAllTimers(); + expect(closing).toBe(1); + expect(pulls).toBe(1); + }); + +/* This tests a noop operator for End signals from the source. + A Push and End signal will be sent after the first Pull talkback + signal from the sink, which shouldn't lead to any extra Close or Pull + talkback signals. */ +const passesSourceEnd = ( + operator: types.operatorT, + result: any = 0 +) => + it('passes on End signals from source (spec)', () => { + const signals = []; + let talkback = null; + let pulls = 0; + let ending = 0; + + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + expect(tb).not.toBe(deriving.close); + if (tb === deriving.pull) pulls++; + if (pulls === 1) { + sink(deriving.push(0)); + sink(deriving.end()); + } + })); + }; + + const sink: types.sinkT = signal => { + if (deriving.isStart(signal)) { + talkback = deriving.unboxStart(signal); + } else { + signals.push(signal); + if (deriving.isEnd(signal)) ending++; + } + }; + + operator(source)(sink); + + // When pushing a value we expect an immediate Push then End signal + talkback(deriving.pull); + jest.runAllTimers(); + expect(pulls).toBe(1); + expect(ending).toBe(1); + expect(signals).toEqual([deriving.push(result), deriving.end()]); + }); + +/* This tests a noop operator for Start signals from the source. + When the operator's sink is started by the source it'll receive + a Start event. As a response it should never send more than one + Start signals to the sink. */ +const passesSingleStart = (operator: types.operatorT) => + it('sends a single Start event to the incoming sink (spec)', () => { + let start = 0; + + const source: types.sourceT = sink => { + sink(deriving.start(() => {})); + }; + + const sink: types.sinkT = signal => { + if (deriving.isStart(signal)) start++; + }; + + // When starting the operator we expect a single start event on the sink + operator(source)(sink); + expect(start).toBe(1); + }); + +/* This tests a noop operator for silence after End signals from the source. + When the operator receives the End signal it shouldn't forward any other + signals to the sink anymore. + This isn't a strict requirement, but some operators should ensure that + all sources are well behaved. This is particularly true for operators + that either Close sources themselves or may operate on multiple sources. */ +const passesStrictEnd = (operator: types.operatorT) => + it('stops all signals after End has been received (spec: strict end)', () => { + let pulls = 0; + const signals = []; + + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + if (tb === deriving.pull) { + pulls++; + sink(deriving.end()); + sink(deriving.push(0)); + } + })); + }; + + const sink: types.sinkT = signal => { + if (deriving.isStart(signal)) { + deriving.unboxStart(signal)(deriving.pull); + } else { + signals.push(signal); + } + }; + + operator(source)(sink); + + // The Push signal should've been dropped + jest.runAllTimers(); + expect(signals).toEqual([deriving.end()]); + expect(pulls).toBe(1); + }); + +/* This tests an immediately closing operator for End signals to + the sink and Close signals to the source. + When an operator closes immediately we expect to see a Close + signal at the source and an End signal to the sink, since the + closing operator is expected to end the entire chain. */ +const passesCloseAndEnd = (closingOperator: types.operatorT) => + it('closes the source and ends the sink correctly (spec: ending operator)', () => { + let closing = 0; + let ending = 0; + + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + // For some operator tests we do need to send a single value + if (tb === deriving.pull) + sink(deriving.push(null)); + if (tb === deriving.close) + closing++; + })); + }; + + const sink: types.sinkT = signal => { + if (deriving.isStart(signal)) { + deriving.unboxStart(signal)(deriving.pull); + } if (deriving.isEnd(signal)) { + ending++; + } + }; + + // We expect the operator to immediately end and close + closingOperator(source)(sink); + expect(closing).toBe(1); + expect(ending).toBe(1); + }); + +const passesAsyncSequence = ( + operator: types.operatorT, + result: any = 0 +) => + it('passes an async push with an async end (spec)', () => { + let hasPushed = false; + const signals = []; + + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + if (tb === deriving.pull && !hasPushed) { + hasPushed = true; + setTimeout(() => sink(deriving.push(0)), 10); + setTimeout(() => sink(deriving.end()), 20); + } + })); + }; + + const sink: types.sinkT = signal => { + if (deriving.isStart(signal)) { + setTimeout(() => { + deriving.unboxStart(signal)(deriving.pull); + }, 5); + } else { + signals.push(signal); + } + }; + + // We initially expect to see the push signal + // Afterwards after all timers all other signals come in + operator(source)(sink); + expect(signals.length).toBe(0); + jest.advanceTimersByTime(5); + expect(hasPushed).toBeTruthy(); + jest.runAllTimers(); + + expect(signals).toEqual([ + deriving.push(result), + deriving.end() + ]); + }); + +beforeEach(() => { + jest.useFakeTimers(); +}); + +describe('combine', () => { + const noop = (source: types.sourceT) => operators.combine(sources.fromValue(0), source); + + passesPassivePull(noop, [0, 0]); + // TODO: passesActivePush(noop, [0, 0]); + passesSinkClose(noop); + passesSourceEnd(noop, [0, 0]); + passesSingleStart(noop); + passesStrictEnd(noop); + + it('emits the zipped values of two sources', () => { + const { source: sourceA, next: nextA } = sources.makeSubject(); + const { source: sourceB, next: nextB } = sources.makeSubject(); + const fn = jest.fn(); + + sinks.forEach(fn)(operators.combine(sourceA, sourceB)); + + nextA(1); + expect(fn).not.toHaveBeenCalled(); + nextB(2); + expect(fn).toHaveBeenCalledWith([1, 2]); + }); +}); + +describe('buffer', () => { + const noop = operators.buffer( + operators.merge([ + sources.fromValue(null), + sources.never + ]) + ); + + // TODO: passesPassivePull(noop, [0]); + // TODO: passesActivePush(noop); + // TODO: passesSinkClose(noop); + // TODO: passesSourceEnd(noop); + passesSingleStart(noop); + // TODO: passesStrictEnd(noop); + + it('emits batches of input values when a notifier emits', () => { + const { source: notifier$, next: notify } = sources.makeSubject(); + const { source: input$, next } = sources.makeSubject(); + const fn = jest.fn(); + + sinks.forEach(fn)(operators.buffer(notifier$)(input$)); + + next(1); + next(2); + expect(fn).not.toHaveBeenCalled(); + + notify(null); + expect(fn).toHaveBeenCalledWith([1, 2]); + }); +}); + +describe('concatMap', () => { + const noop = operators.concatMap(x => sources.fromValue(x)); + // TODO: passesPassivePull(noop); + // TODO: passesActivePush(noop); + // TODO: passesSinkClose(noop); + // TODO: passesSourceEnd(noop); + passesSingleStart(noop); + passesStrictEnd(noop); + passesAsyncSequence(noop); + + // This synchronous test for concatMap will behave the same as mergeMap & switchMap + it('emits values from each flattened synchronous source', () => { + const { source, next, complete } = sources.makeSubject(); + const fn = jest.fn(); + + operators.concatMap((x: number) => sources.fromArray([x, x + 1]))(source)(fn); + + next(1); + next(3); + complete(); + + expect(fn).toHaveBeenCalledTimes(6); + expect(fn.mock.calls).toEqual([ + [deriving.start(expect.any(Function))], + [deriving.push(1)], + [deriving.push(2)], + [deriving.push(3)], + [deriving.push(4)], + [deriving.end()], + ]); + }); + + // This asynchronous test for concatMap will behave differently than mergeMap & switchMap + it('emits values from each flattened asynchronous source, one at a time', () => { + const source = web.delay(4)(sources.fromArray([1, 10])); + const fn = jest.fn(); + + sinks.forEach(fn)( + operators.concatMap((x: number) => { + return web.delay(5)(sources.fromArray([x, x * 2])); + })(source) + ); + + jest.advanceTimersByTime(14); + expect(fn.mock.calls).toEqual([ + [1], + [2], + ]); + + jest.runAllTimers(); + expect(fn.mock.calls).toEqual([ + [1], + [2], + [10], + [20], + ]); + }); +}); + +describe('debounce', () => { + const noop = web.debounce(() => 0); + passesPassivePull(noop); + passesActivePush(noop); + passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + // TODO: passesStrictEnd(noop); + passesAsyncSequence(noop); + + it('waits for a specified amount of silence before emitting the last value', () => { + const { source, next } = sources.makeSubject(); + const fn = jest.fn(); + + sinks.forEach(fn)(web.debounce(() => 100)(source)); + + next(1); + jest.advanceTimersByTime(50); + expect(fn).not.toHaveBeenCalled(); + + next(2); + jest.advanceTimersByTime(99); + expect(fn).not.toHaveBeenCalled(); + + jest.advanceTimersByTime(1); + expect(fn).toHaveBeenCalledWith(2); + }); +}); + +describe('delay', () => { + const noop = web.delay(0); + passesPassivePull(noop); + passesActivePush(noop); + // TODO: passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + passesAsyncSequence(noop); + + it('delays outputs by a specified delay timeout value', () => { + const { source, next } = sources.makeSubject(); + const fn = jest.fn(); + + sinks.forEach(fn)(web.delay(100)(source)); + + next(1); + expect(fn).not.toHaveBeenCalled(); + + jest.advanceTimersByTime(100); + expect(fn).toHaveBeenCalledWith(1); + }); +}); + +describe('filter', () => { + const noop = operators.filter(() => true); + passesPassivePull(noop); + passesActivePush(noop); + passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + passesAsyncSequence(noop); + + it('prevents emissions for which a predicate fails', () => { + const { source, next } = sources.makeSubject(); + const fn = jest.fn(); + + sinks.forEach(fn)(operators.filter(x => !!x)(source)); + + next(false); + expect(fn).not.toHaveBeenCalled(); + + next(true); + expect(fn).toHaveBeenCalledWith(true); + }); +}); + +describe('map', () => { + const noop = operators.map(x => x); + passesPassivePull(noop); + passesActivePush(noop); + passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + // TODO: passesStrictEnd(noop); + passesAsyncSequence(noop); + + it('maps over values given a transform function', () => { + const { source, next } = sources.makeSubject(); + const fn = jest.fn(); + + sinks.forEach(fn)(operators.map((x: number) => x + 1)(source)); + + next(1); + expect(fn).toHaveBeenCalledWith(2); + }); +}); + +describe('mergeMap', () => { + const noop = operators.mergeMap(x => sources.fromValue(x)); + // TODO: passesPassivePull(noop); + // TODO: passesActivePush(noop); + // TODO: passesSinkClose(noop); + // TODO: passesSourceEnd(noop); + passesSingleStart(noop); + passesStrictEnd(noop); + passesAsyncSequence(noop); + + // This synchronous test for mergeMap will behave the same as concatMap & switchMap + it('emits values from each flattened synchronous source', () => { + const { source, next, complete } = sources.makeSubject(); + const fn = jest.fn(); + + operators.mergeMap((x: number) => sources.fromArray([x, x + 1]))(source)(fn); + + next(1); + next(3); + complete(); + + expect(fn).toHaveBeenCalledTimes(6); + expect(fn.mock.calls).toEqual([ + [deriving.start(expect.any(Function))], + [deriving.push(1)], + [deriving.push(2)], + [deriving.push(3)], + [deriving.push(4)], + [deriving.end()], + ]); + }); + + // This asynchronous test for mergeMap will behave differently than concatMap & switchMap + it('emits values from each flattened asynchronous source simultaneously', () => { + const source = web.delay(4)(sources.fromArray([1, 10])); + const fn = jest.fn(); + + sinks.forEach(fn)( + operators.mergeMap((x: number) => { + return web.delay(5)(sources.fromArray([x, x * 2])); + })(source) + ); + + jest.advanceTimersByTime(14); + expect(fn.mock.calls).toEqual([ + [1], + [10], + [2], + [20], + ]); + }); +}); + +describe('onEnd', () => { + const noop = operators.onEnd(() => {}); + passesPassivePull(noop); + passesActivePush(noop); + passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + passesAsyncSequence(noop); + + it('calls a callback when the source ends', () => { + const { source, next, complete } = sources.makeSubject(); + const fn = jest.fn(); + + sinks.forEach(() => {})(operators.onEnd(fn)(source)); + + next(null); + expect(fn).not.toHaveBeenCalled(); + + complete(); + expect(fn).toHaveBeenCalled(); + }); +}); + +describe('onPush', () => { + const noop = operators.onPush(() => {}); + passesPassivePull(noop); + passesActivePush(noop); + passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + passesAsyncSequence(noop); + + it('calls a callback when the source emits', () => { + const { source, next } = sources.makeSubject(); + const fn = jest.fn(); + + sinks.forEach(() => {})(operators.onPush(fn)(source)); + + next(1); + expect(fn).toHaveBeenCalledWith(1); + next(2); + expect(fn).toHaveBeenCalledWith(2); + }); + + it('is the same as `tap`', () => { + expect(operators.onPush).toBe(operators.tap); + }); +}); + +describe('onStart', () => { + const noop = operators.onStart(() => {}); + passesPassivePull(noop); + passesActivePush(noop); + passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + passesAsyncSequence(noop); + + it('is called when the source starts', () => { + let sink: types.sinkT; + + const fn = jest.fn(); + const source: types.sourceT = _sink => { sink = _sink; }; + + sinks.forEach(() => {})(operators.onStart(fn)(source)); + + expect(fn).not.toHaveBeenCalled(); + + sink(deriving.start(() => {})); + expect(fn).toHaveBeenCalled(); + }); +}); + +describe('sample', () => { + const noop = operators.sample(sources.fromValue(null)); + // TODO: passesPassivePull(noop); + // TODO: passesActivePush(noop); + // TODO: passesSinkClose(noop); + // TODO: passesSourceEnd(noop); + passesSingleStart(noop); + // TODO: passesStrictEnd(noop); + + it('emits the latest value when a notifier source emits', () => { + const { source: notifier$, next: notify } = sources.makeSubject(); + const { source: input$, next } = sources.makeSubject(); + const fn = jest.fn(); + + sinks.forEach(fn)(operators.sample(notifier$)(input$)); + + next(1); + next(2); + expect(fn).not.toHaveBeenCalled(); + + notify(null); + expect(fn).toHaveBeenCalledWith(2); + }); +}); + +describe('scan', () => { + const noop = operators.scan((_acc, x) => x, null); + passesPassivePull(noop); + passesActivePush(noop); + passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + passesAsyncSequence(noop); + + it('folds values continuously with a reducer and initial value', () => { + const { source: input$, next } = sources.makeSubject(); + const fn = jest.fn(); + + const reducer = (acc: number, x: number) => acc + x; + sinks.forEach(fn)(operators.scan(reducer, 0)(input$)); + + next(1); + expect(fn).toHaveBeenCalledWith(1); + next(2); + expect(fn).toHaveBeenCalledWith(3); + }); +}); + +describe('share', () => { + const noop = operators.share; + passesPassivePull(noop); + passesActivePush(noop); + passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + passesStrictEnd(noop); + passesAsyncSequence(noop); + + it('shares output values between sinks', () => { + let push = () => {}; + + const source: types.sourceT = operators.share(sink => { + sink(deriving.start(() => {})); + push = () => { + sink(deriving.push([0])); + sink(deriving.end()); + }; + }); + + const fnA = jest.fn(); + const fnB = jest.fn(); + + sinks.forEach(fnA)(source); + sinks.forEach(fnB)(source); + push(); + + expect(fnA).toHaveBeenCalledWith([0]); + expect(fnB).toHaveBeenCalledWith([0]); + expect(fnA.mock.calls[0][0]).toBe(fnB.mock.calls[0][0]); + }); +}); + +describe('skip', () => { + const noop = operators.skip(0); + passesPassivePull(noop); + passesActivePush(noop); + passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + passesAsyncSequence(noop); + + it('skips a number of values before emitting normally', () => { + const { source, next } = sources.makeSubject(); + const fn = jest.fn(); + + sinks.forEach(fn)(operators.skip(1)(source)); + + next(1); + expect(fn).not.toHaveBeenCalled(); + next(2); + expect(fn).toHaveBeenCalledWith(2); + }); +}); + +describe('skipUntil', () => { + const noop = operators.skipUntil(sources.fromValue(null)); + // TODO: passesPassivePull(noop); + // TODO: passesActivePush(noop); + // TODO: passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + passesAsyncSequence(noop); + + it('skips values until the notifier source emits', () => { + const { source: notifier$, next: notify } = sources.makeSubject(); + const { source: input$, next } = sources.makeSubject(); + const fn = jest.fn(); + + sinks.forEach(fn)(operators.skipUntil(notifier$)(input$)); + + next(1); + expect(fn).not.toHaveBeenCalled(); + notify(null); + next(2); + expect(fn).toHaveBeenCalledWith(2); + }); +}); + +describe('skipWhile', () => { + const noop = operators.skipWhile(() => false); + passesPassivePull(noop); + passesActivePush(noop); + passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + passesAsyncSequence(noop); + + it('skips values until one fails a predicate', () => { + const { source, next } = sources.makeSubject(); + const fn = jest.fn(); + + sinks.forEach(fn)(operators.skipWhile(x => x <= 1)(source)); + + next(1); + expect(fn).not.toHaveBeenCalled(); + next(2); + expect(fn).toHaveBeenCalledWith(2); + }); +}); + +describe('switchMap', () => { + const noop = operators.switchMap(x => sources.fromValue(x)); + // TODO: passesPassivePull(noop); + // TODO: passesActivePush(noop); + // TODO: passesSinkClose(noop); + // TODO: passesSourceEnd(noop); + passesSingleStart(noop); + passesStrictEnd(noop); + passesAsyncSequence(noop); + + // This synchronous test for switchMap will behave the same as concatMap & mergeMap + it('emits values from each flattened synchronous source', () => { + const { source, next, complete } = sources.makeSubject(); + const fn = jest.fn(); + + operators.switchMap((x: number) => sources.fromArray([x, x + 1]))(source)(fn); + + next(1); + next(3); + complete(); + + expect(fn).toHaveBeenCalledTimes(6); + expect(fn.mock.calls).toEqual([ + [deriving.start(expect.any(Function))], + [deriving.push(1)], + [deriving.push(2)], + [deriving.push(3)], + [deriving.push(4)], + [deriving.end()], + ]); + }); + + // This asynchronous test for switchMap will behave differently than concatMap & mergeMap + it('emits values from each flattened asynchronous source, one at a time', () => { + const source = web.delay(4)(sources.fromArray([1, 10])); + const fn = jest.fn(); + + sinks.forEach(fn)( + operators.switchMap((x: number) => { + return web.delay(5)(sources.fromArray([x, x * 2])); + })(source) + ); + + jest.runAllTimers(); + expect(fn.mock.calls).toEqual([ + [1], + [10], + [20], + ]); + }); +}); + +describe('take', () => { + const noop = operators.take(10); + passesPassivePull(noop); + passesActivePush(noop); + // TODO: passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + passesStrictEnd(noop); + passesAsyncSequence(noop); + + // TODO: take(0) seems to be broken + const ending = operators.take(1); + passesCloseAndEnd(ending); + + it('emits values until a maximum is reached', () => { + const { source, next } = sources.makeSubject(); + const fn = jest.fn(); + + operators.take(1)(source)(fn); + next(1); + + expect(fn).toHaveBeenCalledTimes(3); + expect(fn.mock.calls).toEqual([ + [deriving.start(expect.any(Function))], + [deriving.push(1)], + [deriving.end()], + ]); + }); +}); + +describe('takeUntil', () => { + const noop = operators.takeUntil(sources.never); + passesPassivePull(noop); + passesActivePush(noop); + passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + passesStrictEnd(noop); + passesAsyncSequence(noop); + + const ending = operators.takeUntil(sources.fromValue(null)); + passesCloseAndEnd(ending); + + it('emits values until a notifier emits', () => { + const { source: notifier$, next: notify } = sources.makeSubject(); + const { source: input$, next } = sources.makeSubject(); + const fn = jest.fn(); + + operators.takeUntil(notifier$)(input$)(fn); + next(1); + + expect(fn).toHaveBeenCalledTimes(2); + expect(fn.mock.calls).toEqual([ + [deriving.start(expect.any(Function))], + [deriving.push(1)], + ]); + + notify(null); + expect(fn).toHaveBeenCalledTimes(3); + expect(fn.mock.calls[2][0]).toEqual(deriving.end()); + }); +}); + +describe('takeWhile', () => { + const noop = operators.takeWhile(() => true); + passesPassivePull(noop); + passesActivePush(noop); + passesSinkClose(noop); + passesSourceEnd(noop); + // TODO: passesSingleStart(noop); + passesStrictEnd(noop); + passesAsyncSequence(noop); + + const ending = operators.takeWhile(() => false); + passesCloseAndEnd(ending); + + it('emits values while a predicate passes for all values', () => { + const { source, next } = sources.makeSubject(); + const fn = jest.fn(); + + operators.takeWhile(x => x < 2)(source)(fn); + next(1); + next(2); + + expect(fn).toHaveBeenCalledTimes(4); + expect(fn.mock.calls).toEqual([ + [deriving.start(expect.any(Function))], + [deriving.start(expect.any(Function))], + [deriving.push(1)], + [deriving.end()], + ]); + }); +}); + +describe('throttle', () => { + const noop = web.throttle(() => 0); + passesPassivePull(noop); + passesActivePush(noop); + passesSinkClose(noop); + passesSourceEnd(noop); + passesSingleStart(noop); + passesAsyncSequence(noop); + + it('should ignore emissions for a period of time after a value', () => { + const { source, next } = sources.makeSubject(); + const fn = jest.fn(); + + sinks.forEach(fn)(web.throttle(() => 100)(source)); + + next(1); + expect(fn).toHaveBeenCalledWith(1); + jest.advanceTimersByTime(50); + + next(2); + expect(fn).toHaveBeenCalledTimes(1); + jest.advanceTimersByTime(50); + + next(3); + expect(fn).toHaveBeenCalledWith(3); + }); +}); diff --git a/src/wonka_sinks.re b/src/wonka_sinks.re index 77921f7..63e9492 100644 --- a/src/wonka_sinks.re +++ b/src/wonka_sinks.re @@ -1,3 +1,86 @@ -include Wonka_sink_publish; -include Wonka_sink_subscribe; -include Wonka_sink_toArray; +open Wonka_types; +open Wonka_helpers; + +type subscribeStateT = { + mutable talkback: (. talkbackT) => unit, + mutable ended: bool, +}; + +[@genType] +type subscribeConsumerT('a) = sourceT('a) => subscriptionT; + +[@genType] +let subscribe = (f: (. 'a) => unit): subscribeConsumerT('a) => + curry(source => { + let state: subscribeStateT = { + talkback: talkbackPlaceholder, + ended: false, + }; + + source((. signal) => + switch (signal) { + | Start(x) => + state.talkback = x; + x(. Pull); + | Push(x) when !state.ended => + f(. x); + state.talkback(. Pull); + | Push(_) => () + | End => state.ended = true + } + ); + + { + unsubscribe: () => + if (!state.ended) { + state.ended = true; + state.talkback(. Close); + }, + }; + }); + +[@genType] +type forEachConsumerT('a) = sourceT('a) => unit; + +[@genType] +let forEach = (f: (. 'a) => unit): forEachConsumerT('a) => + curry(source => ignore(subscribe(f, source))); + +[@genType] +let publish = (source: sourceT('a)): subscriptionT => + subscribe((. _) => (), source); + +type toArrayStateT('a) = { + values: Rebel.MutableQueue.t('a), + mutable talkback: (. talkbackT) => unit, + mutable value: option('a), + mutable ended: bool, +}; + +[@genType] +let toArray = (source: sourceT('a)): array('a) => { + let state: toArrayStateT('a) = { + values: Rebel.MutableQueue.make(), + talkback: talkbackPlaceholder, + value: None, + ended: false, + }; + + source((. signal) => + switch (signal) { + | Start(x) => + state.talkback = x; + x(. Pull); + | Push(value) => + Rebel.MutableQueue.add(state.values, value); + state.talkback(. Pull); + | End => state.ended = true + } + ); + + if (!state.ended) { + state.talkback(. Close); + }; + + Rebel.MutableQueue.toArray(state.values); +}; diff --git a/src/wonka_sinks.test.ts b/src/wonka_sinks.test.ts new file mode 100644 index 0000000..00592e7 --- /dev/null +++ b/src/wonka_sinks.test.ts @@ -0,0 +1,290 @@ +import * as deriving from './helpers/wonka_deriving'; +import * as sinks from './wonka_sinks.gen'; +import * as web from './web/wonkaJs.gen'; +import * as types from './wonka_types.gen'; + +import Observable from 'zen-observable'; +import callbagIterate from 'callbag-iterate'; +import callbagTake from 'callbag-take'; + +describe('subscribe', () => { + it('sends Pull talkback signals every Push signal', () => { + let pulls = 0; + const fn = jest.fn(); + + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + if (tb === deriving.pull) { + if (pulls < 3) { + pulls++; + sink(deriving.push(0)); + } else { + sink(deriving.end()); + expect(pulls).toBe(3); + } + } + })); + }; + + sinks.subscribe(fn)(source); + expect(fn).toHaveBeenCalledTimes(3); + expect(pulls).toBe(3); + }); + + it('cancels when unsubscribe is called', () => { + let pulls = 0; + let closing = 0; + + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + if (tb === deriving.pull) { + if (!pulls) { + pulls++; + sink(deriving.push(0)); + } + } else if (tb === deriving.close) { + closing++; + } + })); + }; + + const sub = sinks.subscribe(() => {})(source); + expect(pulls).toBe(1); + + sub.unsubscribe(); + expect(closing).toBe(1); + }); + + it('ignores cancellation when the source has already ended', () => { + let pulls = 0; + let closing = 0; + + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + if (tb === deriving.pull) { + pulls++; + sink(deriving.end()); + } else if (tb === deriving.close) { + closing++; + } + })); + }; + + const sub = sinks.subscribe(() => {})(source); + expect(pulls).toBe(1); + sub.unsubscribe(); + expect(closing).toBe(0); + }); + + it('ignores Push signals after the source has ended', () => { + const fn = jest.fn(); + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + if (tb === deriving.pull) { + sink(deriving.end()); + sink(deriving.push(0)); + } + })); + }; + + sinks.subscribe(fn)(source); + expect(fn).not.toHaveBeenCalled(); + }); + + it('ignores Push signals after cancellation', () => { + const fn = jest.fn(); + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + if (tb === deriving.close) { + sink(deriving.push(0)); + } + })); + }; + + sinks.subscribe(fn)(source).unsubscribe(); + expect(fn).not.toHaveBeenCalled(); + }); +}); + +describe('publish', () => { + it('sends Pull talkback signals every Push signal', () => { + let pulls = 0; + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + if (tb === deriving.pull) { + if (pulls < 3) { + pulls++; + sink(deriving.push(0)); + } else { + sink(deriving.end()); + expect(pulls).toBe(3); + } + } + })); + }; + + sinks.publish(source); + expect(pulls).toBe(3); + }); +}); + +describe('toArray', () => { + it('sends Pull talkback signals every Push signal', () => { + let pulls = 0; + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + if (tb === deriving.pull) { + if (pulls < 3) { + pulls++; + sink(deriving.push(0)); + } else { + sink(deriving.end()); + expect(pulls).toBe(3); + } + } + })); + }; + + const array = sinks.toArray(source); + expect(array).toEqual([0, 0, 0]); + expect(pulls).toBe(3); + }); + + it('sends a Close talkback signal after all synchronous values have been pulled', () => { + let pulls = 0; + let ending = 0; + + const source: types.sourceT = sink => { + sink(deriving.start(tb => { + if (tb === deriving.pull) { + if (!pulls) { + pulls++; + sink(deriving.push(0)); + } + } else if (tb === deriving.close) { + ending++; + } + })); + }; + + const array = sinks.toArray(source); + expect(array).toEqual([0]); + expect(ending).toBe(1); + }); +}); + +describe('toPromise', () => { + it('creates a Promise that resolves on the last value', async () => { + let pulls = 0; + let sink = null; + + const source: types.sourceT = _sink => { + sink = _sink; + sink(deriving.start(tb => { + if (tb === deriving.pull) + pulls++; + })); + }; + + const fn = jest.fn(); + const promise = web.toPromise(source).then(fn); + + expect(pulls).toBe(1); + sink(deriving.push(0)); + expect(pulls).toBe(2); + sink(deriving.push(1)); + sink(deriving.end()); + expect(fn).not.toHaveBeenCalled(); + + await promise; + expect(fn).toHaveBeenCalledWith(1); + }); +}); + +describe('toObservable', () => { + it('creates an Observable mirroring the Wonka source', () => { + const next = jest.fn(); + const complete = jest.fn(); + let pulls = 0; + let sink = null; + + const source: types.sourceT = _sink => { + sink = _sink; + sink(deriving.start(tb => { + if (tb === deriving.pull) + pulls++; + })); + }; + + Observable.from(web.toObservable(source) as any).subscribe({ + next, + complete, + }); + + expect(pulls).toBe(1); + sink(deriving.push(0)); + expect(next).toHaveBeenCalledWith(0); + sink(deriving.push(1)); + expect(next).toHaveBeenCalledWith(1); + sink(deriving.end()); + expect(complete).toHaveBeenCalled(); + }); + + it('forwards cancellations from the Observable as a talkback', () => { + let ending = 0; + const source: types.sourceT = sink => + sink(deriving.start(tb => { + if (tb === deriving.close) + ending++; + })); + + const sub = Observable.from(web.toObservable(source) as any).subscribe({}); + + expect(ending).toBe(0); + sub.unsubscribe(); + expect(ending).toBe(1); + }); +}); + +describe('toCallbag', () => { + it('creates a Callbag mirroring the Wonka source', () => { + const fn = jest.fn(); + let pulls = 0; + let sink = null; + + const source: types.sourceT = _sink => { + sink = _sink; + sink(deriving.start(tb => { + if (tb === deriving.pull) + pulls++; + })); + }; + + callbagIterate(fn)(web.toCallbag(source)); + + expect(pulls).toBe(1); + sink(deriving.push(0)); + expect(fn).toHaveBeenCalledWith(0); + sink(deriving.push(1)); + expect(fn).toHaveBeenCalledWith(1); + sink(deriving.end()); + }); + + it('forwards cancellations from the Callbag as a talkback', () => { + let ending = 0; + const fn = jest.fn(); + + const source: types.sourceT = sink => + sink(deriving.start(tb => { + if (tb === deriving.pull) + sink(deriving.push(0)); + if (tb === deriving.close) + ending++; + })); + + callbagIterate(fn)(callbagTake(1)(web.toCallbag(source) as any)); + + expect(fn.mock.calls).toEqual([[0]]); + expect(ending).toBe(1); + }); +}); diff --git a/src/wonka_sources.re b/src/wonka_sources.re index c50aa0e..35d787e 100644 --- a/src/wonka_sources.re +++ b/src/wonka_sources.re @@ -1,6 +1,124 @@ -include Wonka_source_fromArray; -include Wonka_source_fromList; -include Wonka_source_fromValue; -include Wonka_source_make; -include Wonka_source_makeSubject; -include Wonka_source_primitives; +open Wonka_types; +open Wonka_helpers; + +[@genType] +let fromArray = (arr: array('a)): sourceT('a) => + curry(sink => { + let size = Rebel.Array.size(arr); + let index = ref(0); + + makeTrampoline(sink, (.) => + if (index^ < size) { + let x = Rebel.Array.getUnsafe(arr, index^); + index := index^ + 1; + Some(x); + } else { + None; + } + ); + }); + +[@genType] +let fromList = (ls: list('a)): sourceT('a) => + curry(sink => { + let value = ref(ls); + + makeTrampoline(sink, (.) => + switch (value^) { + | [x, ...rest] => + value := rest; + Some(x); + | [] => None + } + ); + }); + +[@genType] +let fromValue = (x: 'a): sourceT('a) => + curry(sink => { + let ended = ref(false); + + sink(. + Start( + (. signal) => + switch (signal) { + | Pull when ! ended^ => + ended := true; + sink(. Push(x)); + sink(. End); + | _ => () + }, + ), + ); + }); + +[@genType] +let make = (f: (. observerT('a)) => teardownT): sourceT('a) => + curry(sink => { + let teardown = ref((.) => ()); + + sink(. + Start( + (. signal) => + switch (signal) { + | Close => teardown^(.) + | Pull => () + }, + ), + ); + + teardown := + f(. { + next: value => sink(. Push(value)), + complete: () => sink(. End), + }); + }); + +type subjectState('a) = { + mutable sinks: Rebel.Array.t(sinkT('a)), + mutable ended: bool, +}; + +[@genType] +let makeSubject = (): subjectT('a) => { + let state: subjectState('a) = { + sinks: Rebel.Array.makeEmpty(), + ended: false, + }; + + let source = sink => { + state.sinks = Rebel.Array.append(state.sinks, sink); + sink(. + Start( + (. signal) => + if (signal === Close) { + state.sinks = Rebel.Array.filter(state.sinks, x => x !== sink); + }, + ), + ); + }; + + let next = value => + if (!state.ended) { + Rebel.Array.forEach(state.sinks, sink => sink(. Push(value))); + }; + + let complete = () => + if (!state.ended) { + state.ended = true; + Rebel.Array.forEach(state.sinks, sink => sink(. End)); + }; + + {source, next, complete}; +}; + +[@genType] +let empty = (sink: sinkT('a)): unit => { + sink(. Start(talkbackPlaceholder)); + sink(. End); +}; + +[@genType] +let never = (sink: sinkT('a)): unit => { + sink(. Start(talkbackPlaceholder)); +}; diff --git a/src/wonka_sources.test.ts b/src/wonka_sources.test.ts new file mode 100644 index 0000000..8637f67 --- /dev/null +++ b/src/wonka_sources.test.ts @@ -0,0 +1,369 @@ +import * as deriving from './helpers/wonka_deriving'; +import * as sources from './wonka_sources.gen'; +import * as types from './wonka_types.gen'; +import * as web from './web/wonkaJs.gen'; + +import callbagFromArray from 'callbag-from-iter'; +import Observable from 'zen-observable'; + +const collectSignals = ( + source: types.sourceT, + onStart?: (talkbackCb: (tb: types.talkbackT) => void) => void +) => { + let talkback = null; + const signals = []; + + source(signal => { + signals.push(signal); + if (deriving.isStart(signal)) { + talkback = deriving.unboxStart(signal); + if (onStart) onStart(talkback); + talkback(deriving.pull); + } else if (deriving.isPush(signal)) { + talkback(deriving.pull); + } + }) + + return signals; +}; + +/* When a Close talkback signal is sent the source should immediately end */ +const passesActiveClose = (source: types.sourceT) => + it('stops emitting when a Close talkback signal is received (spec)', () => { + let talkback = null; + + const sink: types.sinkT = signal => { + expect(deriving.isPush(signal)).toBeFalsy(); + expect(deriving.isEnd(signal)).toBeFalsy(); + if (deriving.isStart(signal)) { + talkback = deriving.unboxStart(signal); + talkback(deriving.close); + } + }; + + source(sink); + expect(talkback).not.toBe(null); + }); + +/* All synchronous, cold sources won't send anything unless a Pull signal + has been received. */ +const passesColdPull = (source: types.sourceT) => + it('sends nothing when no Pull talkback signal has been sent (spec)', () => { + let pushes = 0; + let talkback = null; + + const sink: types.sinkT = signal => { + if (deriving.isPush(signal)) { + pushes++; + } else if (deriving.isStart(signal)) { + talkback = deriving.unboxStart(signal); + } + }; + + source(sink); + expect(talkback).not.toBe(null); + expect(pushes).toBe(0); + + setTimeout(() => { + expect(pushes).toBe(0); + talkback(deriving.pull); + }, 10); + + jest.runAllTimers(); + expect(pushes).toBe(1); + }); + +/* All synchronous, cold sources need to use trampoline scheduling to avoid + recursively sending more and more Push signals which would eventually lead + to a call stack overflow when too many values are emitted. */ +const passesTrampoline = (source: types.sourceT) => + it('uses trampoline scheduling instead of recursive push signals (spec)', () => { + let talkback = null; + let pushes = 0; + + const signals = []; + const sink: types.sinkT = signal => { + if (deriving.isPush(signal)) { + const lastPushes = ++pushes; + signals.push(signal); + talkback(deriving.pull); + expect(lastPushes).toBe(pushes); + } else if (deriving.isStart(signal)) { + talkback = deriving.unboxStart(signal); + talkback(deriving.pull); + expect(pushes).toBe(2); + } else if (deriving.isEnd(signal)) { + signals.push(signal); + expect(pushes).toBe(2); + } + }; + + source(sink); + + expect(signals).toEqual([ + deriving.push(1), + deriving.push(2), + deriving.end(), + ]); + }); + +beforeEach(() => { + jest.useFakeTimers(); +}); + +describe('fromArray', () => { + passesTrampoline(sources.fromArray([1, 2])); + passesColdPull(sources.fromArray([0])); + passesActiveClose(sources.fromArray([0])); +}); + +describe('fromList', () => { + passesTrampoline(sources.fromList([1, [2]] as any)); + passesColdPull(sources.fromList([0] as any)); + passesActiveClose(sources.fromList([0] as any)); +}); + +describe('fromValue', () => { + passesColdPull(sources.fromValue(0)); + passesActiveClose(sources.fromValue(0)); + + it('sends a single value and ends', () => { + expect(collectSignals(sources.fromValue(1))).toEqual([ + deriving.start(expect.any(Function)), + deriving.push(1), + deriving.end() + ]); + }); +}); + +describe('make', () => { + it('may be used to create async sources', () => { + const teardown = jest.fn(); + const source = sources.make(observer => { + setTimeout(() => observer.next(1), 10); + setTimeout(() => observer.complete(), 20); + return teardown; + }); + + const signals = collectSignals(source); + expect(signals).toEqual([deriving.start(expect.any(Function))]); + jest.runAllTimers(); + + expect(signals).toEqual([ + deriving.start(expect.any(Function)), + deriving.push(1), + deriving.end(), + ]); + }); + + it('supports active cancellation', () => { + const teardown = jest.fn(); + const source = sources.make(() => teardown); + + const sink: types.sinkT = signal => { + expect(deriving.isPush(signal)).toBeFalsy(); + expect(deriving.isEnd(signal)).toBeFalsy(); + if (deriving.isStart(signal)) + setTimeout(() => deriving.unboxStart(signal)(deriving.close)); + }; + + source(sink); + expect(teardown).not.toHaveBeenCalled(); + jest.runAllTimers(); + expect(teardown).toHaveBeenCalled(); + }); +}); + +describe('makeSubject', () => { + it('may be used to emit signals programmatically', () => { + const { source, next, complete } = sources.makeSubject(); + const signals = collectSignals(source); + + expect(signals).toEqual([ + deriving.start(expect.any(Function)), + ]); + + next(1); + + expect(signals).toEqual([ + deriving.start(expect.any(Function)), + deriving.push(1), + ]); + + complete(); + + expect(signals).toEqual([ + deriving.start(expect.any(Function)), + deriving.push(1), + deriving.end(), + ]); + }); + + it('ignores signals after complete has been called', () => { + const { source, next, complete } = sources.makeSubject(); + const signals = collectSignals(source); + complete(); + + expect(signals).toEqual([ + deriving.start(expect.any(Function)), + deriving.end(), + ]); + + next(1); + complete(); + expect(signals.length).toBe(2); + }); +}); + +describe('never', () => { + it('emits nothing and ends immediately', () => { + const signals = collectSignals(sources.never); + expect(signals).toEqual([deriving.start(expect.any(Function)) ]); + }); +}); + +describe('empty', () => { + it('emits nothing and ends immediately', () => { + const signals = collectSignals(sources.empty); + + expect(signals).toEqual([ + deriving.start(expect.any(Function)), + deriving.end(), + ]); + }); +}); + +describe('fromPromise', () => { + passesActiveClose(web.fromPromise(Promise.resolve(null))); + + it('emits a value when the promise resolves', async () => { + const promise = Promise.resolve(1); + const signals = collectSignals(web.fromPromise(promise)); + + expect(signals).toEqual([ + deriving.start(expect.any(Function)), + ]); + + await promise; + + expect(signals).toEqual([ + deriving.start(expect.any(Function)), + deriving.push(1), + deriving.end(), + ]); + }); +}); + +describe('fromObservable', () => { + beforeEach(() => { + jest.useRealTimers(); + }); + + it('converts an Observable to a Wonka source', async () => { + const source = web.fromObservable(Observable.from([1, 2])); + const signals = collectSignals(source); + + await new Promise(resolve => setTimeout(resolve)); + + expect(signals).toEqual([ + deriving.start(expect.any(Function)), + deriving.push(1), + deriving.push(2), + deriving.end(), + ]); + }); + + it('supports cancellation on converted Observables', async () => { + const source = web.fromObservable(Observable.from([1, 2])); + const signals = collectSignals(source, talkback => { + talkback(deriving.close); + }); + + await new Promise(resolve => setTimeout(resolve)); + + expect(signals).toEqual([ + deriving.start(expect.any(Function)), + ]); + }); +}); + +describe('fromCallbag', () => { + it('converts a Callbag to a Wonka source', () => { + const source = web.fromCallbag(callbagFromArray([1, 2])); + const signals = collectSignals(source); + + expect(signals).toEqual([ + deriving.start(expect.any(Function)), + deriving.push(1), + deriving.push(2), + deriving.end(), + ]); + }); + + it('supports cancellation on converted Observables', () => { + const source = web.fromCallbag(callbagFromArray([1, 2])); + const signals = collectSignals(source, talkback => { + talkback(deriving.close); + }); + + expect(signals).toEqual([ + deriving.start(expect.any(Function)), + ]); + }); +}); + +describe('interval', () => { + it('emits Push signals until Cancel is sent', () => { + let pushes = 0; + let talkback = null; + + const sink: types.sinkT = signal => { + if (deriving.isPush(signal)) { + pushes++; + } else if (deriving.isStart(signal)) { + talkback = deriving.unboxStart(signal); + } + }; + + web.interval(100)(sink); + expect(talkback).not.toBe(null); + expect(pushes).toBe(0); + + jest.advanceTimersByTime(100); + expect(pushes).toBe(1); + jest.advanceTimersByTime(100); + expect(pushes).toBe(2); + + talkback(deriving.close); + jest.advanceTimersByTime(100); + expect(pushes).toBe(2); + }); +}); + +describe('fromDomEvent', () => { + it('emits Push signals for events on a DOM element', () => { + let talkback = null; + + const element = { + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + }; + + const sink: types.sinkT = signal => { + expect(deriving.isEnd(signal)).toBeFalsy(); + if (deriving.isStart(signal)) + talkback = deriving.unboxStart(signal); + }; + + web.fromDomEvent(element as any, 'click')(sink); + + expect(element.addEventListener).toHaveBeenCalledWith('click', expect.any(Function)); + expect(element.removeEventListener).not.toHaveBeenCalled(); + const listener = element.addEventListener.mock.calls[0][1]; + + listener(1); + listener(2); + talkback(deriving.close); + expect(element.removeEventListener).toHaveBeenCalledWith('click', listener); + }); +}); diff --git a/src/wonka_types.d.ts b/src/wonka_types.d.ts deleted file mode 100644 index 14487e7..0000000 --- a/src/wonka_types.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -export type List = [T, any] | 0; - -export type Talkback = 0 | 1; - -export type Signal = - | ({ tag: 0 } & [(talkback: Talkback) => void]) - | ({ tag: 1 } & [A]) - | 0; - -export interface Sink { (signal: Signal): void; } -export interface Source { (sink: Sink): void; } -export interface Operator { (source: Source): Source; } - -export type Subscription = [() => void]; - -export type Observer = [(value: A) => void, () => void]; - -export type Subject = [Source, (value: A) => void, () => void]; diff --git a/src/wonka_types.re b/src/wonka_types.re index efb6673..7ae7275 100644 --- a/src/wonka_types.re +++ b/src/wonka_types.re @@ -26,27 +26,39 @@ * purposes, or call the actual sink as it sees fit. */ +[@genType.import "./shims/Js.shim"] type talkbackT = | Pull | Close; +[@genType.import "./shims/Js.shim"] type signalT('a) = | Start((. talkbackT) => unit) | Push('a) | End; +[@genType] type sinkT('a) = (. signalT('a)) => unit; + +[@genType] type sourceT('a) = sinkT('a) => unit; +[@genType] +type operatorT('a, 'b) = sourceT('a) => sourceT('b); + +[@genType] type teardownT = (. unit) => unit; +[@genType] type subscriptionT = {unsubscribe: unit => unit}; +[@genType] type observerT('a) = { next: 'a => unit, complete: unit => unit, }; +[@genType] type subjectT('a) = { source: sourceT('a), next: 'a => unit, diff --git a/tsconfig.json b/tsconfig.json index 41bf2fa..a6efe11 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,14 +9,13 @@ "lib": ["dom", "esnext"], "jsx": "react", "declaration": false, - "module": "es2015", + "module": "commonjs", "moduleResolution": "node", "target": "esnext", - "strict": true, + "strict": false, "noImplicitAny": false, - "noUnusedParameters": true, + "noUnusedParameters": false, "sourceMap": true, "pretty": true - }, - "include": ["src/**/*.d.ts"] + } } diff --git a/yarn.lock b/yarn.lock index 60001fd..7900e94 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@ampproject/rollup-plugin-closure-compiler@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@ampproject/rollup-plugin-closure-compiler/-/rollup-plugin-closure-compiler-0.13.0.tgz#23083ada1e5f899280c38acbf22454616ccc78a8" - integrity sha512-uvbNj/ngTZxHZM7y1RLC+hQ1qUZ9JH0BVdVmcAWRH6U/25ek18V/r+ks9VKmkzRfn8Oe9nY4XmXHJozfQGVOIQ== +"@ampproject/rollup-plugin-closure-compiler@^0.18.1": + version "0.18.1" + resolved "https://registry.yarnpkg.com/@ampproject/rollup-plugin-closure-compiler/-/rollup-plugin-closure-compiler-0.18.1.tgz#492406d40b7c8245122e89ac8c350f8bd24e8950" + integrity sha512-PIEgYrlLc6d59FYV3W/h/3CdEOkeGzAA1iONv1uYvmcAJpXTxdHVDvyTgXYlzdc2cJ9eRzgi4sFou3MhT8hU2A== dependencies: acorn "7.1.0" acorn-dynamic-import "4.0.0" @@ -21,15 +21,15 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.2.2", "@babel/core@^7.4.3", "@babel/core@^7.5.5", "@babel/core@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.5.tgz#ae1323cd035b5160293307f50647e83f8ba62f7e" - integrity sha512-M42+ScN4+1S9iB6f+TL7QBpoQETxbclx+KNoKJABghnKYE+fMzSGqst0BZJc8CpI625bwPwYgUyRvxZ+0mZzpw== +"@babel/core@^7.1.0", "@babel/core@^7.2.2", "@babel/core@^7.4.3", "@babel/core@^7.5.5", "@babel/core@^7.7.5", "@babel/core@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9" + integrity sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ== dependencies: "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.4" + "@babel/generator" "^7.7.7" "@babel/helpers" "^7.7.4" - "@babel/parser" "^7.7.5" + "@babel/parser" "^7.7.7" "@babel/template" "^7.7.4" "@babel/traverse" "^7.7.4" "@babel/types" "^7.7.4" @@ -41,78 +41,86 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.0.0", "@babel/generator@^7.4.0", "@babel/generator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.4.tgz#db651e2840ca9aa66f327dcec1dc5f5fa9611369" - integrity sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg== +"@babel/generator@^7.4.0", "@babel/generator@^7.7.4", "@babel/generator@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45" + integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ== dependencies: "@babel/types" "^7.7.4" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" - integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== +"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz#bb3faf1e74b74bd547e867e48f551fa6b098b6ce" + integrity sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.7.4" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" - integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz#5f73f2b28580e224b5b9bd03146a4015d6217f5f" + integrity sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ== dependencies: - "@babel/helper-explode-assignable-expression" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-explode-assignable-expression" "^7.7.4" + "@babel/types" "^7.7.4" -"@babel/helper-builder-react-jsx@^7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" - integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw== +"@babel/helper-builder-react-jsx@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.4.tgz#da188d247508b65375b2c30cf59de187be6b0c66" + integrity sha512-kvbfHJNN9dg4rkEM4xn1s8d1/h6TYNvajy9L1wx4qLn9HFg0IkTsQi4rfBe92nxrPUFcMsHoMV+8rU7MJb3fCA== dependencies: - "@babel/types" "^7.3.0" + "@babel/types" "^7.7.4" esutils "^2.0.0" -"@babel/helper-call-delegate@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" - integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== +"@babel/helper-call-delegate@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz#621b83e596722b50c0066f9dc37d3232e461b801" + integrity sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA== dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/helper-hoist-variables" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" -"@babel/helper-create-class-features-plugin@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz#fc3d690af6554cc9efc607364a82d48f58736dba" - integrity sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA== +"@babel/helper-create-class-features-plugin@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.4.tgz#fce60939fd50618610942320a8d951b3b639da2d" + integrity sha512-l+OnKACG4uiDHQ/aJT8dwpR+LhCJALxL0mJ6nzjB25e5IPwqV1VOsY7ah6UB1DG+VOXAIMtuC54rFJGiHkxjgA== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-member-expression-to-functions" "^7.7.4" + "@babel/helper-optimise-call-expression" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.4.4" - "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/helper-replace-supers" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" -"@babel/helper-define-map@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" - integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== +"@babel/helper-create-regexp-features-plugin@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz#6d5762359fd34f4da1500e4cff9955b5299aaf59" + integrity sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.4.4" - lodash "^4.17.11" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.6.0" -"@babel/helper-explode-assignable-expression@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" - integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== +"@babel/helper-define-map@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz#2841bf92eb8bd9c906851546fe6b9d45e162f176" + integrity sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg== dependencies: - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-function-name" "^7.7.4" + "@babel/types" "^7.7.4" + lodash "^4.17.13" -"@babel/helper-function-name@^7.1.0", "@babel/helper-function-name@^7.7.4": +"@babel/helper-explode-assignable-expression@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz#fa700878e008d85dc51ba43e9fb835cddfe05c84" + integrity sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg== + dependencies: + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/helper-function-name@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ== @@ -121,52 +129,52 @@ "@babel/template" "^7.7.4" "@babel/types" "^7.7.4" -"@babel/helper-get-function-arity@^7.0.0", "@babel/helper-get-function-arity@^7.7.4": +"@babel/helper-get-function-arity@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0" integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA== dependencies: "@babel/types" "^7.7.4" -"@babel/helper-hoist-variables@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" - integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== +"@babel/helper-hoist-variables@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz#612384e3d823fdfaaf9fce31550fe5d4db0f3d12" + integrity sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ== dependencies: - "@babel/types" "^7.4.4" + "@babel/types" "^7.7.4" -"@babel/helper-member-expression-to-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" - integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== +"@babel/helper-member-expression-to-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz#356438e2569df7321a8326644d4b790d2122cb74" + integrity sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.7.4" -"@babel/helper-module-imports@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" - integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91" + integrity sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.7.4" -"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" - integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== +"@babel/helper-module-transforms@^7.7.4", "@babel/helper-module-transforms@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz#d044da7ffd91ec967db25cd6748f704b6b244835" + integrity sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/types" "^7.4.4" - lodash "^4.17.11" + "@babel/helper-module-imports" "^7.7.4" + "@babel/helper-simple-access" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/types" "^7.7.4" + lodash "^4.17.13" -"@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" - integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== +"@babel/helper-optimise-call-expression@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz#034af31370d2995242aa4df402c3b7794b2dcdf2" + integrity sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.7.4" "@babel/helper-plugin-utils@^7.0.0": version "7.0.0" @@ -180,51 +188,51 @@ dependencies: lodash "^4.17.11" -"@babel/helper-remap-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" - integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== +"@babel/helper-remap-async-to-generator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz#c68c2407350d9af0e061ed6726afb4fff16d0234" + integrity sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.7.4" + "@babel/helper-wrap-function" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" -"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" - integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== +"@babel/helper-replace-supers@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz#3c881a6a6a7571275a72d82e6107126ec9e2cdd2" + integrity sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg== dependencies: - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/helper-member-expression-to-functions" "^7.7.4" + "@babel/helper-optimise-call-expression" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" -"@babel/helper-simple-access@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" - integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== +"@babel/helper-simple-access@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz#a169a0adb1b5f418cfc19f22586b2ebf58a9a294" + integrity sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A== dependencies: - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/template" "^7.7.4" + "@babel/types" "^7.7.4" -"@babel/helper-split-export-declaration@^7.4.4", "@babel/helper-split-export-declaration@^7.7.4": +"@babel/helper-split-export-declaration@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug== dependencies: "@babel/types" "^7.7.4" -"@babel/helper-wrap-function@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" - integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== +"@babel/helper-wrap-function@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz#37ab7fed5150e22d9d7266e830072c0cdd8baace" + integrity sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.2.0" + "@babel/helper-function-name" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" "@babel/helpers@^7.7.4": version "7.7.4" @@ -244,491 +252,524 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.4", "@babel/parser@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.5.tgz#cbf45321619ac12d83363fcf9c94bb67fa646d71" - integrity sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.4", "@babel/parser@^7.7.5", "@babel/parser@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937" + integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw== -"@babel/plugin-proposal-async-generator-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" - integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== +"@babel/plugin-proposal-async-generator-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz#0351c5ac0a9e927845fffd5b82af476947b7ce6d" + integrity sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/helper-remap-async-to-generator" "^7.7.4" + "@babel/plugin-syntax-async-generators" "^7.7.4" -"@babel/plugin-proposal-class-properties@^7.0.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz#93a6486eed86d53452ab9bab35e368e9461198ce" - integrity sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg== +"@babel/plugin-proposal-class-properties@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.4.tgz#2f964f0cb18b948450362742e33e15211e77c2ba" + integrity sha512-EcuXeV4Hv1X3+Q1TsuOmyyxeTRiSqurGJ26+I/FW1WbymmRRapVORm6x1Zl3iDIHyRxEs+VXWp6qnlcfcJSbbw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.4.4" + "@babel/helper-create-class-features-plugin" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-proposal-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" - integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== +"@babel/plugin-proposal-dynamic-import@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz#dde64a7f127691758cbfed6cf70de0fa5879d52d" + integrity sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-dynamic-import" "^7.7.4" -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.3.2", "@babel/plugin-proposal-object-rest-spread@^7.4.3", "@babel/plugin-proposal-object-rest-spread@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" - integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== +"@babel/plugin-proposal-json-strings@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz#7700a6bfda771d8dc81973249eac416c6b4c697d" + integrity sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.7.4" -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" - integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.7.4.tgz#7db302c83bc30caa89e38fee935635ef6bd11c28" + integrity sha512-TbYHmr1Gl1UC7Vo2HVuj/Naci5BEGNZ0AJhzqD2Vpr6QPFWpUmBRLrIDjedzx7/CShq0bRDS2gI4FIs77VHLVQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.7.4" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" - integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== +"@babel/plugin-proposal-object-rest-spread@^7.3.2", "@babel/plugin-proposal-object-rest-spread@^7.4.3", "@babel/plugin-proposal-object-rest-spread@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.7.tgz#9f27075004ab99be08c5c1bd653a2985813cb370" + integrity sha512-3qp9I8lelgzNedI3hrhkvhaEYree6+WHnyA/q4Dza9z7iEIs1eyhWyJnetk3jJ69RT0AT4G0UhEGwyGFJ7GUuQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + "@babel/plugin-syntax-object-rest-spread" "^7.7.4" -"@babel/plugin-syntax-async-generators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" - integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== +"@babel/plugin-proposal-optional-catch-binding@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz#ec21e8aeb09ec6711bc0a39ca49520abee1de379" + integrity sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" -"@babel/plugin-syntax-class-properties@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz#23b3b7b9bcdabd73672a9149f728cd3be6214812" - integrity sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw== +"@babel/plugin-proposal-optional-chaining@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.5.tgz#f0835f044cef85b31071a924010a2a390add11d4" + integrity sha512-sOwFqT8JSchtJeDD+CjmWCaiFoLxY4Ps7NjvwHC/U7l4e9i5pTRNt8nDMIFSOUL+ncFbYSwruHM8WknYItWdXw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.7.4" -"@babel/plugin-syntax-dynamic-import@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" - integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== +"@babel/plugin-proposal-unicode-property-regex@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.7.tgz#433fa9dac64f953c12578b29633f456b68831c4e" + integrity sha512-80PbkKyORBUVm1fbTLrHpYdJxMThzM1UqFGh0ALEhO9TYbG86Ah9zQYAB/84axz2vcxefDLdZwWwZNlYARlu9w== dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" - integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== +"@babel/plugin-syntax-async-generators@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz#331aaf310a10c80c44a66b238b6e49132bd3c889" + integrity sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" - integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== +"@babel/plugin-syntax-dynamic-import@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec" + integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" - integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== +"@babel/plugin-syntax-json-strings@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz#86e63f7d2e22f9e27129ac4e83ea989a382e86cc" + integrity sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" - integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== +"@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.7.4.tgz#dab2b56a36fb6c3c222a1fbc71f7bf97f327a9ec" + integrity sha512-wuy6fiMe9y7HeZBWXYCGt2RGxZOj0BImZ9EyXJVnVGBKO/Br592rbR3rtIQn0eQhAk9vqaKP5n8tVqEFBQMfLg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" - integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== +"@babel/plugin-syntax-nullish-coalescing-operator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.7.4.tgz#e53b751d0c3061b1ba3089242524b65a7a9da12b" + integrity sha512-XKh/yIRPiQTOeBg0QJjEus5qiSKucKAiApNtO1psqG7D17xmE+X2i5ZqBEuSvo0HRuyPaKaSN/Gy+Ha9KFQolw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" - integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0", "@babel/plugin-syntax-object-rest-spread@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46" + integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-async-to-generator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894" - integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA== +"@babel/plugin-syntax-optional-catch-binding@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz#a3e38f59f4b6233867b4a92dcb0ee05b2c334aa6" + integrity sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ== dependencies: - "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" -"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" - integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== +"@babel/plugin-syntax-optional-chaining@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.7.4.tgz#c91fdde6de85d2eb8906daea7b21944c3610c901" + integrity sha512-2MqYD5WjZSbJdUagnJvIdSfkb/ucOC9/1fRJxm7GAxY6YQLWlUvkfxoNbUPcPLHJyetKUDQ4+yyuUyAoc0HriA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" - integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== +"@babel/plugin-syntax-top-level-await@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz#bd7d8fa7b9fee793a36e4027fd6dd1aa32f946da" + integrity sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.11" -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" - integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== +"@babel/plugin-syntax-typescript@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.7.4.tgz#5d037ffa10f3b25a16f32570ebbe7a8c2efa304b" + integrity sha512-77blgY18Hud4NM1ggTA8xVT/dBENQf17OpiToSa2jSmEY3fWXD2jwrdVlO4kq5yzUTeF15WSQ6b4fByNvJcjpQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.4.4" - "@babel/helper-split-export-declaration" "^7.4.4" - globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" - integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== +"@babel/plugin-transform-arrow-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz#76309bd578addd8aee3b379d809c802305a98a12" + integrity sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" - integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== +"@babel/plugin-transform-async-to-generator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz#694cbeae6d613a34ef0292713fa42fb45c4470ba" + integrity sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg== dependencies: + "@babel/helper-module-imports" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.7.4" -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" - integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== +"@babel/plugin-transform-block-scoped-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz#d0d9d5c269c78eaea76227ace214b8d01e4d837b" + integrity sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" -"@babel/plugin-transform-duplicate-keys@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" - integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== +"@babel/plugin-transform-block-scoping@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz#200aad0dcd6bb80372f94d9e628ea062c58bf224" + integrity sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.13" -"@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" - integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== +"@babel/plugin-transform-classes@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz#c92c14be0a1399e15df72667067a8f510c9400ec" + integrity sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-annotate-as-pure" "^7.7.4" + "@babel/helper-define-map" "^7.7.4" + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-optimise-call-expression" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + globals "^11.1.0" -"@babel/plugin-transform-flow-strip-types@^7.0.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz#d267a081f49a8705fc9146de0768c6b58dccd8f7" - integrity sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q== +"@babel/plugin-transform-computed-properties@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz#e856c1628d3238ffe12d668eb42559f79a81910d" + integrity sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.2.0" -"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" - integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== +"@babel/plugin-transform-destructuring@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz#2b713729e5054a1135097b6a67da1b6fe8789267" + integrity sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" - integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== +"@babel/plugin-transform-dotall-regex@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.7.tgz#3e9713f1b69f339e87fa796b097d73ded16b937b" + integrity sha512-b4in+YlTeE/QmTgrllnb3bHA0HntYvjz8O3Mcbx75UBPJA2xhb5A8nle498VhxSXJHQefjtQxpnLPehDJ4TRlg== dependencies: - "@babel/helper-function-name" "^7.1.0" + "@babel/helper-create-regexp-features-plugin" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" - integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== +"@babel/plugin-transform-duplicate-keys@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz#3d21731a42e3f598a73835299dd0169c3b90ac91" + integrity sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" - integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== +"@babel/plugin-transform-exponentiation-operator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz#dd30c0191e3a1ba19bcc7e389bdfddc0729d5db9" + integrity sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ== dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-amd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" - integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== +"@babel/plugin-transform-for-of@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz#248800e3a5e507b1f103d8b4ca998e77c63932bc" + integrity sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA== dependencies: - "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" - integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== +"@babel/plugin-transform-function-name@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz#75a6d3303d50db638ff8b5385d12451c865025b1" + integrity sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g== dependencies: - "@babel/helper-module-transforms" "^7.4.4" + "@babel/helper-function-name" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" -"@babel/plugin-transform-modules-systemjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" - integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== +"@babel/plugin-transform-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz#27fe87d2b5017a2a5a34d1c41a6b9f6a6262643e" + integrity sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw== dependencies: - "@babel/helper-hoist-variables" "^7.4.4" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" - integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== +"@babel/plugin-transform-member-expression-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz#aee127f2f3339fc34ce5e3055d7ffbf7aa26f19a" + integrity sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA== dependencies: - "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" - integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg== +"@babel/plugin-transform-modules-amd@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz#39e0fb717224b59475b306402bb8eedab01e729c" + integrity sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ== dependencies: - regexp-tree "^0.1.6" + "@babel/helper-module-transforms" "^7.7.5" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-new-target@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" - integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== +"@babel/plugin-transform-modules-commonjs@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz#1d27f5eb0bcf7543e774950e5b2fa782e637b345" + integrity sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q== dependencies: + "@babel/helper-module-transforms" "^7.7.5" "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.7.4" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" - integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== +"@babel/plugin-transform-modules-systemjs@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz#cd98152339d3e763dfe838b7d4273edaf520bb30" + integrity sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw== dependencies: + "@babel/helper-hoist-variables" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" - integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== +"@babel/plugin-transform-modules-umd@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz#1027c355a118de0aae9fee00ad7813c584d9061f" + integrity sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw== dependencies: - "@babel/helper-call-delegate" "^7.4.4" - "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-module-transforms" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" - integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== +"@babel/plugin-transform-named-capturing-groups-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz#fb3bcc4ee4198e7385805007373d6b6f42c98220" + integrity sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.7.4" + +"@babel/plugin-transform-new-target@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz#4a0753d2d60639437be07b592a9e58ee00720167" + integrity sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-react-display-name@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" - integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== +"@babel/plugin-transform-object-super@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz#48488937a2d586c0148451bf51af9d7dda567262" + integrity sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.7.4" -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" - integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg== +"@babel/plugin-transform-parameters@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.7.tgz#7a884b2460164dc5f194f668332736584c760007" + integrity sha512-OhGSrf9ZBrr1fw84oFXj5hgi8Nmg+E2w5L7NhnG0lPvpDtqd7dbyilM2/vR8CKbJ907RyxPh2kj6sBCSSfI9Ew== + dependencies: + "@babel/helper-call-delegate" "^7.7.4" + "@babel/helper-get-function-arity" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-property-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz#2388d6505ef89b266103f450f9167e6bd73f98c2" + integrity sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz#20c8c60f0140f5dd3cd63418d452801cf3f7180f" - integrity sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g== +"@babel/plugin-transform-react-display-name@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.7.4.tgz#9f2b80b14ebc97eef4a9b29b612c58ed9c0d10dd" + integrity sha512-sBbIvqYkthai0X0vkD2xsAwluBp+LtNHH+/V4a5ydifmTtb8KOVOlrMIk/MYmIc4uTYDnjZUHQildYNo36SRJw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" -"@babel/plugin-transform-react-jsx@^7.0.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" - integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg== +"@babel/plugin-transform-react-jsx-self@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.7.4.tgz#81b8fbfd14b2215e8f1c2c3adfba266127b0231c" + integrity sha512-PWYjSfqrO273mc1pKCRTIJXyqfc9vWYBax88yIhQb+bpw3XChVC7VWS4VwRVs63wFHKxizvGSd00XEr+YB9Q2A== dependencies: - "@babel/helper-builder-react-jsx" "^7.3.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" + "@babel/plugin-syntax-jsx" "^7.7.4" + +"@babel/plugin-transform-react-jsx-source@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.7.4.tgz#8994b1bf6014b133f5a46d3b7d1ee5f5e3e72c10" + integrity sha512-5ZU9FnPhqtHsOXxutRtXZAzoEJwDaP32QcobbMP1/qt7NYcsCNK8XgzJcJfoEr/ZnzVvUNInNjIW22Z6I8p9mg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.7.4" -"@babel/plugin-transform-regenerator@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" - integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== +"@babel/plugin-transform-react-jsx@^7.7.4": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.7.tgz#5cbaa7445b4a09f774029f3cc7bb448ff3122a5d" + integrity sha512-SlPjWPbva2+7/ZJbGcoqjl4LsQaLpKEzxW9hcxU7675s24JmdotJOSJ4cgAbV82W3FcZpHIGmRZIlUL8ayMvjw== + dependencies: + "@babel/helper-builder-react-jsx" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.7.4" + +"@babel/plugin-transform-regenerator@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz#3a8757ee1a2780f390e89f246065ecf59c26fce9" + integrity sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw== dependencies: regenerator-transform "^0.14.0" -"@babel/plugin-transform-reserved-words@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" - integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== +"@babel/plugin-transform-reserved-words@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz#6a7cf123ad175bb5c69aec8f6f0770387ed3f1eb" + integrity sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-runtime@^7.0.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz#a50f5d16e9c3a4ac18a1a9f9803c107c380bce08" - integrity sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q== +"@babel/plugin-transform-runtime@^7.7.6": + version "7.7.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.6.tgz#4f2b548c88922fb98ec1c242afd4733ee3e12f61" + integrity sha512-tajQY+YmXR7JjTwRvwL4HePqoL3DYxpYXIHKVvrOIvJmeHe2y1w4tz5qz9ObUDC9m76rCzIMPyn4eERuwA4a4A== dependencies: - "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-module-imports" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" - integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== +"@babel/plugin-transform-shorthand-properties@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz#74a0a9b2f6d67a684c6fbfd5f0458eb7ba99891e" + integrity sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.2.0", "@babel/plugin-transform-spread@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" - integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== +"@babel/plugin-transform-spread@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz#aa673b356fe6b7e70d69b6e33a17fef641008578" + integrity sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" - integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== +"@babel/plugin-transform-sticky-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz#ffb68c05090c30732076b1285dc1401b404a123c" + integrity sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" -"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" - integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== +"@babel/plugin-transform-template-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz#1eb6411736dd3fe87dbd20cc6668e5121c17d604" + integrity sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" - integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== +"@babel/plugin-transform-typeof-symbol@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz#3174626214f2d6de322882e498a38e8371b2140e" + integrity sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" - integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== +"@babel/plugin-transform-unicode-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz#a3c0f65b117c4c81c5b6484f2a5e7b95346b83ae" + integrity sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw== dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" -"@babel/polyfill@^7.0.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.4.4.tgz#78801cf3dbe657844eeabf31c1cae3828051e893" - integrity sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg== +"@babel/polyfill@^7.0.0", "@babel/polyfill@^7.7.0": + version "7.7.0" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.7.0.tgz#e1066e251e17606ec7908b05617f9b7f8180d8f3" + integrity sha512-/TS23MVvo34dFmf8mwCisCbWGrfhbiWZSwBo6HkADTBhUa2Q/jWltyY/tpofz/b6/RIhqaqQcquptCirqIhOaQ== dependencies: core-js "^2.6.5" regenerator-runtime "^0.13.2" -"@babel/preset-env@^7.4.1", "@babel/preset-env@^7.4.3": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58" - integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w== +"@babel/preset-env@^7.4.3", "@babel/preset-env@^7.7.6", "@babel/preset-env@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.7.tgz#c294167b91e53e7e36d820e943ece8d0c7fe46ac" + integrity sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg== dependencies: - "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-module-imports" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.4.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.4.4" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.4.4" - "@babel/plugin-transform-classes" "^7.4.4" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.2.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.2.0" - "@babel/plugin-transform-modules-commonjs" "^7.4.4" - "@babel/plugin-transform-modules-systemjs" "^7.4.4" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.2.0" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.5" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/plugin-proposal-async-generator-functions" "^7.7.4" + "@babel/plugin-proposal-dynamic-import" "^7.7.4" + "@babel/plugin-proposal-json-strings" "^7.7.4" + "@babel/plugin-proposal-object-rest-spread" "^7.7.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.7.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.7.7" + "@babel/plugin-syntax-async-generators" "^7.7.4" + "@babel/plugin-syntax-dynamic-import" "^7.7.4" + "@babel/plugin-syntax-json-strings" "^7.7.4" + "@babel/plugin-syntax-object-rest-spread" "^7.7.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" + "@babel/plugin-syntax-top-level-await" "^7.7.4" + "@babel/plugin-transform-arrow-functions" "^7.7.4" + "@babel/plugin-transform-async-to-generator" "^7.7.4" + "@babel/plugin-transform-block-scoped-functions" "^7.7.4" + "@babel/plugin-transform-block-scoping" "^7.7.4" + "@babel/plugin-transform-classes" "^7.7.4" + "@babel/plugin-transform-computed-properties" "^7.7.4" + "@babel/plugin-transform-destructuring" "^7.7.4" + "@babel/plugin-transform-dotall-regex" "^7.7.7" + "@babel/plugin-transform-duplicate-keys" "^7.7.4" + "@babel/plugin-transform-exponentiation-operator" "^7.7.4" + "@babel/plugin-transform-for-of" "^7.7.4" + "@babel/plugin-transform-function-name" "^7.7.4" + "@babel/plugin-transform-literals" "^7.7.4" + "@babel/plugin-transform-member-expression-literals" "^7.7.4" + "@babel/plugin-transform-modules-amd" "^7.7.5" + "@babel/plugin-transform-modules-commonjs" "^7.7.5" + "@babel/plugin-transform-modules-systemjs" "^7.7.4" + "@babel/plugin-transform-modules-umd" "^7.7.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.7.4" + "@babel/plugin-transform-new-target" "^7.7.4" + "@babel/plugin-transform-object-super" "^7.7.4" + "@babel/plugin-transform-parameters" "^7.7.7" + "@babel/plugin-transform-property-literals" "^7.7.4" + "@babel/plugin-transform-regenerator" "^7.7.5" + "@babel/plugin-transform-reserved-words" "^7.7.4" + "@babel/plugin-transform-shorthand-properties" "^7.7.4" + "@babel/plugin-transform-spread" "^7.7.4" + "@babel/plugin-transform-sticky-regex" "^7.7.4" + "@babel/plugin-transform-template-literals" "^7.7.4" + "@babel/plugin-transform-typeof-symbol" "^7.7.4" + "@babel/plugin-transform-unicode-regex" "^7.7.4" + "@babel/types" "^7.7.4" browserslist "^4.6.0" - core-js-compat "^3.1.1" + core-js-compat "^3.6.0" invariant "^2.2.2" js-levenshtein "^1.1.3" semver "^5.5.0" -"@babel/preset-react@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" - integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== +"@babel/preset-react@^7.0.0", "@babel/preset-react@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.7.4.tgz#3fe2ea698d8fb536d8e7881a592c3c1ee8bf5707" + integrity sha512-j+vZtg0/8pQr1H8wKoaJyGL2IEk3rG/GIvua7Sec7meXVIvGycihlGMx5xcU00kqCJbwzHs18xTu3YfREOqQ+g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.7.4" + "@babel/plugin-transform-react-jsx" "^7.7.4" + "@babel/plugin-transform-react-jsx-self" "^7.7.4" + "@babel/plugin-transform-react-jsx-source" "^7.7.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" - integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0", "@babel/runtime@^7.4.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.7.tgz#194769ca8d6d7790ec23605af9ee3e42a0aa79cf" + integrity sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA== dependencies: regenerator-runtime "^0.13.2" -"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4", "@babel/template@^7.7.4": +"@babel/template@^7.4.0", "@babel/template@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw== @@ -737,7 +778,7 @@ "@babel/parser" "^7.7.4" "@babel/types" "^7.7.4" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.7.4": +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== @@ -752,7 +793,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.4": +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== @@ -786,32 +827,10 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.4.tgz#a87b4b04e5ae14a88d48ebef15015f6b7d1f5677" integrity sha512-kBa+cDHOR9jpRJ+kcGMsysrls0leukrm68DmFQoMIWQcXdr2cZvyvypWuGYT7U+9kAExUE7+T7r6G3C3A6L8MQ== -"@gatsbyjs/relay-compiler@2.0.0-printer-fix.2": - version "2.0.0-printer-fix.2" - resolved "https://registry.yarnpkg.com/@gatsbyjs/relay-compiler/-/relay-compiler-2.0.0-printer-fix.2.tgz#214db0e6072d40ea78ad5fabdb49d56bc95f4e99" - integrity sha512-7GeCCEQ7O15lMTT/SXy9HuRde4cv5vs465ZnLK2QCajSDLior+20yrMqHn1PGsJYK6nNZH7p3lw9qTCpqmuc7Q== - dependencies: - "@babel/generator" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/polyfill" "^7.0.0" - "@babel/runtime" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - babel-preset-fbjs "^3.1.2" - chalk "^2.4.1" - fast-glob "^2.2.2" - fb-watchman "^2.0.0" - fbjs "^1.0.0" - immutable "~3.7.6" - nullthrows "^1.1.0" - relay-runtime "2.0.0" - signedsource "^1.0.0" - yargs "^9.0.0" - -"@glennsl/bs-jest@^0.4.8": - version "0.4.8" - resolved "https://registry.yarnpkg.com/@glennsl/bs-jest/-/bs-jest-0.4.8.tgz#e756ae5b43edc1cdcb4b5592021e50984566dafb" - integrity sha512-RU5Bl6Sc9Xdd/BMQUHjEK4qqd3pRfoqzCnU3ncZbNWGndJUHVpuZVbk6IGTqcXSpoaN6eIOppPvLxQP/5yxwKw== +"@glennsl/bs-jest@^0.4.9": + version "0.4.9" + resolved "https://registry.yarnpkg.com/@glennsl/bs-jest/-/bs-jest-0.4.9.tgz#a23af2668dda05947ce9c043fd5a7b295e91cef7" + integrity sha512-WAqXMcI6WL7JVvGdakBr1tcw8BYWXHrOZfuA1myMkFggzAv24H/OEwyqaU7x+yXd4cJaBUY8v3SjQ3Pnk/zqsg== dependencies: jest "^24.3.1" @@ -820,31 +839,26 @@ resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.0.0.tgz#9f05469c88cb2fd3dcd624776b54ee95c312126a" integrity sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw== -"@hapi/hoek@6.x.x": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-6.2.4.tgz#4b95fbaccbfba90185690890bdf1a2fbbda10595" - integrity sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A== +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== "@hapi/hoek@8.x.x": version "8.0.1" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.0.1.tgz#9712fa2ad124ac64668ab06ba847b1eaf83a03fd" integrity sha512-cctMYH5RLbElaUpZn3IJaUj9QNQD8iXDnl7xNY6KB1aFD2ciJrwpo3kvZowIT75uA+silJFDnSR2kGakALUymg== -"@hapi/joi@^15.0.0", "@hapi/joi@^15.1.0": - version "15.1.0" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.0.tgz#940cb749b5c55c26ab3b34ce362e82b6162c8e7a" - integrity sha512-n6kaRQO8S+kepUTbXL9O/UOL788Odqs38/VOfoCrATDtTvyfiO3fgjlSRaNkHabpTLgM7qru9ifqXlXbXk8SeQ== +"@hapi/joi@^15.1.1": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== dependencies: "@hapi/address" "2.x.x" - "@hapi/hoek" "6.x.x" - "@hapi/marker" "1.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" "@hapi/topo" "3.x.x" -"@hapi/marker@1.x.x": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@hapi/marker/-/marker-1.0.0.tgz#65b0b2b01d1be06304886ce9b4b77b1bfb21a769" - integrity sha512-JOfdekTXnJexfE8PyhZFyHvHjt81rBFSAbTIRAhF2vv/2Y1JzoKsGqxH/GpZJoF7aEfYok8JVcAHmSz1gkBieA== - "@hapi/topo@3.x.x": version "3.1.2" resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.2.tgz#57cc1317be1a8c5f47c124f9b0e3c49cd78424d2" @@ -861,6 +875,15 @@ chalk "^2.0.1" slash "^2.0.0" +"@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + "@jest/core@^24.8.0": version "24.8.0" resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz#fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b" @@ -913,6 +936,15 @@ jest-message-util "^24.8.0" jest-mock "^24.8.0" +"@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + "@jest/reporters@^24.8.0": version "24.8.0" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz#075169cd029bddec54b8f2c0fc489fd0b9e05729" @@ -949,6 +981,15 @@ graceful-fs "^4.1.15" source-map "^0.6.0" +"@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + "@jest/test-result@^24.8.0": version "24.8.0" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz#7675d0aaf9d2484caa65e048d9b467d160f8e9d3" @@ -958,6 +999,15 @@ "@jest/types" "^24.8.0" "@types/istanbul-lib-coverage" "^2.0.0" +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + "@jest/test-sequencer@^24.8.0": version "24.8.0" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz#2f993bcf6ef5eb4e65e8233a95a3320248cf994b" @@ -989,14 +1039,36 @@ source-map "^0.6.1" write-file-atomic "2.4.1" -"@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== +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.8.0", "@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^12.0.9" + "@types/yargs" "^13.0.0" "@jimp/bmp@^0.6.4": version "0.6.4" @@ -1324,7 +1396,7 @@ string-width "^2.0.0" strip-ansi "^3" -"@reach/router@^1.1.1": +"@reach/router@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.2.1.tgz#34ae3541a5ac44fa7796e5506a5d7274a162be4e" integrity sha512-kTaX08X4g27tzIFQGRukaHmNbtMYDS3LEWIS8+l6OayGIw6Oyo1HIF/JzeuR2FoF9z6oV+x/wJSVSq4v8tcUGQ== @@ -1345,6 +1417,44 @@ resolved "https://registry.yarnpkg.com/@reach/visually-hidden/-/visually-hidden-0.1.4.tgz#0dc4ecedf523004337214187db70a46183bd945b" integrity sha512-QHbzXjflSlCvDd6vJwdwx16mSB+vUCCQMiU/wK/CgVNPibtpEiIbisyxkpZc55DyDFNUIqP91rSUsNae+ogGDQ== +"@rollup/plugin-buble@^0.21.0": + version "0.21.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-0.21.0.tgz#76d2a9c62ae1f1122a3a87526669a736cd86c148" + integrity sha512-n6N311RCrVvnsWGyo/if6K2kFoDW+x9r+/hkp+fI73MryLFGxN50Y3zJDg3k0ZTDjRHmveVzM6Nzwv9+plWiLA== + dependencies: + "@types/buble" "^0.19.2" + buble "^0.19.8" + rollup-pluginutils "^2.8.2" + +"@rollup/plugin-commonjs@^11.0.1": + version "11.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.0.1.tgz#6056a6757286901cc6c1599123e6680a78cad6c2" + integrity sha512-SaVUoaLDg3KnIXC5IBNIspr1APTYDzk05VaYcI6qz+0XX3ZlSCwAkfAhNSOxfd5GAdcm/63Noi4TowOY9MpcDg== + dependencies: + "@rollup/pluginutils" "^3.0.0" + estree-walker "^0.6.1" + is-reference "^1.1.2" + magic-string "^0.25.2" + resolve "^1.11.0" + +"@rollup/plugin-node-resolve@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-6.1.0.tgz#0d2909f4bf606ae34d43a9bc8be06a9b0c850cf0" + integrity sha512-Cv7PDIvxdE40SWilY5WgZpqfIUEaDxFxs89zCAHjqyRwlTSuql4M5hjIuc5QYJkOH0/vyiyNXKD72O+LhRipGA== + dependencies: + "@rollup/pluginutils" "^3.0.0" + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.11.1" + +"@rollup/pluginutils@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.0.2.tgz#78a8b7c614315b40784846ad0c8e67ca52385965" + integrity sha512-OOpWfnOaveki8sI5MEY20jCxVuKTPpIYRGa5dkN3RwEHX6LZM3HwAsT4yalds5CZAGzkCnbnOUz8rxXIyTm2yQ== + dependencies: + estree-walker "^0.6.1" + "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" @@ -1352,6 +1462,11 @@ dependencies: any-observable "^0.3.0" +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + "@sindresorhus/is@^0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" @@ -1441,6 +1556,13 @@ dependencies: "@styled-system/core" "^5.0.16" +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + "@types/babel__core@^7.1.0": version "7.1.1" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.1.tgz#ce9a9e5d92b7031421e1d0d74ae59f572ba48be6" @@ -1472,7 +1594,19 @@ resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.6.tgz#328dd1a8fc4cfe3c8458be9477b219ea158fd7b2" integrity sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw== dependencies: - "@babel/types" "^7.3.0" + "@babel/types" "^7.3.0" + +"@types/buble@^0.19.2": + version "0.19.2" + resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.19.2.tgz#a4289d20b175b3c206aaad80caabdabe3ecdfdd1" + integrity sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q== + dependencies: + magic-string "^0.25.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== "@types/configstore@^2.1.1": version "2.1.1" @@ -1484,6 +1618,11 @@ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-0.0.29.tgz#a1e514adfbd92f03a224ba54d693111dbf1f3754" integrity sha1-oeUUrfvZLwOiJLpU1pMRHb8fN1Q= +"@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.40" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.40.tgz#0e6cb9b9bbd098031fa19e4b4e8131bc70e5de13" @@ -1547,6 +1686,18 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" +"@types/jest@^24.0.25": + version "24.0.25" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.25.tgz#2aba377824ce040114aa906ad2cac2c85351360f" + integrity sha512-hnP1WpjN4KbGEK4dLayul6lgtys6FPz0UfxMeMQCv0M+sTnzN3ConfiO72jHgLxl119guHgI8gLqDOrRLsyp2g== + dependencies: + jest-diff "^24.3.0" + +"@types/json-schema@^7.0.3": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -1572,6 +1723,11 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "@types/prop-types@*": version "15.7.1" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.1.tgz#f1a11e7babb0c3cad68100be381d1e064c68f1f6" @@ -1582,15 +1738,15 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== -"@types/reach__router@^1.0.0": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.2.4.tgz#44a701fdf15934880f6dfdef38ca49bc30e2d372" - integrity sha512-a+MFhebeSGi0LwHZ0UhH/ke77rWtNQnt8YmaHnquSaY3HmyEi+BPQi3GhPcUPnC9X5BLw/qORw3BPxGb1mCtEw== +"@types/reach__router@^1.2.6": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.2.6.tgz#b14cf1adbd1a365d204bbf6605cd9dd7b8816c87" + integrity sha512-Oh5DAVr/L2svBvubw6QEFpXGu295Y406BPs4i9t1n2pp7M+q3pmCmhzb9oZV5wncR41KCD3NHl1Yhi7uKnTPsA== dependencies: "@types/history" "*" "@types/react" "*" -"@types/react@*", "@types/react@^16.8.12", "@types/react@^16.8.6": +"@types/react@*": version "16.8.22" resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.22.tgz#7f18bf5ea0c1cad73c46b6b1c804a3ce0eec6d54" integrity sha512-C3O1yVqk4sUXqWyx0wlys76eQfhrQhiDhDlHBrjER76lR2S2Agiid/KpOU9oCqj1dISStscz7xXz1Cg8+sCQeA== @@ -1637,15 +1793,70 @@ "@types/unist" "*" "@types/vfile-message" "*" +"@types/yargs-parser@*": + version "13.1.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" + integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== + "@types/yargs@^12.0.2", "@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== -"@vuepress/plugin-google-analytics@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-google-analytics/-/plugin-google-analytics-1.0.2.tgz#c5754d55d01bf7e1a9a5b1ff5fde07a08e4a797d" - integrity sha512-NdU18hTBW4TkNK80dgpPu4yq/smNkIUZi9gL5hCiuW43BnXFA7WFfhGcvZJ61+keNDr6gw9UIv4HQuFFPoRXQA== +"@types/yargs@^13.0.0": + version "13.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.4.tgz#53d231cebe1a540e7e13727fc1f0d13ad4a9ba3b" + integrity sha512-Ke1WmBbIkVM8bpvsNEcGgQM70XcEh/nbpxQhW7FhrsbCsXSY9BmLB1+LHtD7r9zrsOcFlLiF+a/UeJsdfw3C5A== + dependencies: + "@types/yargs-parser" "*" + +"@types/zen-observable@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" + integrity sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg== + +"@typescript-eslint/eslint-plugin@^2.11.0": + version "2.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.14.0.tgz#c74447400537d4eb7aae1e31879ab43e6c662a8a" + integrity sha512-sneOJ3Hu0m5whJiVIxGBZZZMxMJ7c0LhAJzeMJgHo+n5wFs+/6rSR/gl7crkdR2kNwfOOSdzdc0gMvatG4dX2Q== + dependencies: + "@typescript-eslint/experimental-utils" "2.14.0" + eslint-utils "^1.4.3" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@2.14.0": + version "2.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.14.0.tgz#e9179fa3c44e00b3106b85d7b69342901fb43e3b" + integrity sha512-KcyKS7G6IWnIgl3ZpyxyBCxhkBPV+0a5Jjy2g5HxlrbG2ZLQNFeneIBVXdaBCYOVjvGmGGFKom1kgiAY75SDeQ== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.14.0" + eslint-scope "^5.0.0" + +"@typescript-eslint/parser@^2.11.0": + version "2.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.14.0.tgz#30fa0523d86d74172a5e32274558404ba4262cd6" + integrity sha512-haS+8D35fUydIs+zdSf4BxpOartb/DjrZ2IxQ5sR8zyGfd77uT9ZJZYF8+I0WPhzqHmfafUBx8MYpcp8pfaoSA== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.14.0" + "@typescript-eslint/typescript-estree" "2.14.0" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/typescript-estree@2.14.0": + version "2.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.14.0.tgz#c67698acdc14547f095eeefe908958d93e1a648d" + integrity sha512-pnLpUcMNG7GfFFfNQbEX6f1aPa5fMnH2G9By+A1yovYI4VIOK2DzkaRuUlIkbagpAcrxQHLqovI1YWqEcXyRnA== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash.unescape "4.0.1" + semver "^6.3.0" + tsutils "^3.17.1" "@webassemblyjs/ast@1.7.11": version "1.7.11" @@ -1656,21 +1867,45 @@ "@webassemblyjs/helper-wasm-bytecode" "1.7.11" "@webassemblyjs/wast-parser" "1.7.11" +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@webassemblyjs/floating-point-hex-parser@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz#a69f0af6502eb9a3c045555b1a6129d3d3f2e313" integrity sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg== +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + "@webassemblyjs/helper-api-error@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz#c7b6bb8105f84039511a2b39ce494f193818a32a" integrity sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg== +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + "@webassemblyjs/helper-buffer@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz#3122d48dcc6c9456ed982debe16c8f37101df39b" integrity sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w== +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + "@webassemblyjs/helper-code-frame@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz#cf8f106e746662a0da29bdef635fcd3d1248364b" @@ -1678,21 +1913,46 @@ dependencies: "@webassemblyjs/wast-printer" "1.7.11" +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + "@webassemblyjs/helper-fsm@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz#df38882a624080d03f7503f93e3f17ac5ac01181" integrity sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A== +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + "@webassemblyjs/helper-module-context@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz#d874d722e51e62ac202476935d649c802fa0e209" integrity sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg== +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + "@webassemblyjs/helper-wasm-bytecode@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz#dd9a1e817f1c2eb105b4cf1013093cb9f3c9cb06" integrity sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ== +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + "@webassemblyjs/helper-wasm-section@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz#9c9ac41ecf9fbcfffc96f6d2675e2de33811e68a" @@ -1703,6 +1963,16 @@ "@webassemblyjs/helper-wasm-bytecode" "1.7.11" "@webassemblyjs/wasm-gen" "1.7.11" +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/ieee754@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz#c95839eb63757a31880aaec7b6512d4191ac640b" @@ -1710,6 +1980,13 @@ dependencies: "@xtuc/ieee754" "^1.2.0" +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + "@webassemblyjs/leb128@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.11.tgz#d7267a1ee9c4594fd3f7e37298818ec65687db63" @@ -1717,11 +1994,23 @@ dependencies: "@xtuc/long" "4.2.1" +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + "@webassemblyjs/utf8@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz#06d7218ea9fdc94a6793aa92208160db3d26ee82" integrity sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA== +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + "@webassemblyjs/wasm-edit@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz#8c74ca474d4f951d01dbae9bd70814ee22a82005" @@ -1736,6 +2025,20 @@ "@webassemblyjs/wasm-parser" "1.7.11" "@webassemblyjs/wast-printer" "1.7.11" +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + "@webassemblyjs/wasm-gen@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz#9bbba942f22375686a6fb759afcd7ac9c45da1a8" @@ -1747,6 +2050,17 @@ "@webassemblyjs/leb128" "1.7.11" "@webassemblyjs/utf8" "1.7.11" +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + "@webassemblyjs/wasm-opt@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz#b331e8e7cef8f8e2f007d42c3a36a0580a7d6ca7" @@ -1757,6 +2071,16 @@ "@webassemblyjs/wasm-gen" "1.7.11" "@webassemblyjs/wasm-parser" "1.7.11" +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wasm-parser@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz#6e3d20fa6a3519f6b084ef9391ad58211efb0a1a" @@ -1769,6 +2093,18 @@ "@webassemblyjs/leb128" "1.7.11" "@webassemblyjs/utf8" "1.7.11" +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + "@webassemblyjs/wast-parser@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz#25bd117562ca8c002720ff8116ef9072d9ca869c" @@ -1781,6 +2117,18 @@ "@webassemblyjs/helper-fsm" "1.7.11" "@xtuc/long" "4.2.1" +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + "@webassemblyjs/wast-printer@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz#c4245b6de242cb50a2cc950174fdbf65c78d7813" @@ -1790,6 +2138,15 @@ "@webassemblyjs/wast-parser" "1.7.11" "@xtuc/long" "4.2.1" +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -1800,6 +2157,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + abab@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" @@ -1810,7 +2172,7 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: +accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== @@ -1838,10 +2200,10 @@ acorn-globals@^4.1.0: acorn "^6.0.1" acorn-walk "^6.0.1" -acorn-jsx@^5.0.0, acorn-jsx@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" - integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== +acorn-jsx@^5.0.1, acorn-jsx@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" + integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== acorn-walk@7.0.0: version "7.0.0" @@ -1863,20 +2225,20 @@ acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2: resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.1, acorn@^6.0.7, acorn@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== +acorn@^6.0.1, acorn@^6.1.1, acorn@^6.2.1: + version "6.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" + integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== address@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg== -address@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.0.tgz#ef8e047847fcd2c5b6f50c16965f924fd99fe709" - integrity sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ== +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== after@0.8.2: version "0.8.2" @@ -1890,20 +2252,28 @@ agent-base@^4.1.0: dependencies: es6-promisify "^5.0.0" +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" - integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.5.5, ajv@^6.9.1: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" - integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: + version "6.10.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" + integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -1915,13 +2285,6 @@ alphanum-sort@^1.0.0: resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= - dependencies: - string-width "^2.0.0" - ansi-align@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" @@ -1939,6 +2302,13 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" + integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== + dependencies: + type-fest "^0.8.1" + ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" @@ -1959,6 +2329,11 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1971,6 +2346,14 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + any-base@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe" @@ -1994,12 +2377,20 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.0: +arch@^2.1.0, arch@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg== @@ -2129,6 +2520,14 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + arraybuffer.slice@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" @@ -2139,6 +2538,11 @@ arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -2188,6 +2592,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -2198,17 +2607,17 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== -async@1.5.2, async@^1.5.2: +async@1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.1.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== +async@^2.1.2, async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== dependencies: - lodash "^4.17.11" + lodash "^4.17.14" asynckit@^0.4.0: version "0.4.0" @@ -2220,25 +2629,23 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -auto-bind@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-2.1.0.tgz#254e12d53063d7cab90446ce021accfb3faa1464" - integrity sha512-qZuFvkes1eh9lB2mg8/HG18C+5GIO51r+RrCSst/lh+i5B1CtVlkhTE488M805Nr3dKl0sM/pIFKSKUIlg3zUg== - dependencies: - "@types/react" "^16.8.12" +auto-bind@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-3.0.0.tgz#67773e64899b228f6d2a841709e7e086cfed31a3" + integrity sha512-v0A231a/lfOo6kxQtmEkdBfTApvC21aJYukA8pkKnoTvVqh3Wmm7/Rwy4GBCHTTHVoLVA5qsBDDvf1XY1nIV2g== -autoprefixer@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.0.tgz#0111c6bde2ad20c6f17995a33fad7cf6854b4c87" - integrity sha512-kuip9YilBqhirhHEGHaBTZKXL//xxGnzvsD0FtBQa6z+A69qZD6s/BAX9VzDF1i9VKDquTJDQaPLSEhOnL6FvQ== +autoprefixer@^9.7.3: + version "9.7.3" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.3.tgz#fd42ed03f53de9beb4ca0d61fb4f7268a9bb50b4" + integrity sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q== dependencies: - browserslist "^4.6.1" - caniuse-lite "^1.0.30000971" + browserslist "^4.8.0" + caniuse-lite "^1.0.30001012" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.16" - postcss-value-parser "^3.3.1" + postcss "^7.0.23" + postcss-value-parser "^4.0.2" aws-sign2@~0.7.0: version "0.7.0" @@ -2250,6 +2657,14 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== +axios@^0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" + integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ== + dependencies: + follow-redirects "1.5.10" + is-buffer "^2.0.2" + axobject-query@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" @@ -2271,17 +2686,17 @@ babel-core@7.0.0-bridge.0: resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== -babel-eslint@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" - integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== +babel-eslint@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a" + integrity sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.0.0" "@babel/traverse" "^7.0.0" "@babel/types" "^7.0.0" - eslint-scope "3.7.1" eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" babel-jest@^24.8.0: version "24.8.0" @@ -2296,7 +2711,20 @@ babel-jest@^24.8.0: chalk "^2.4.2" slash "^2.0.0" -babel-loader@^8.0.0: +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-loader@^8.0.6: version "8.0.6" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== @@ -2306,22 +2734,24 @@ babel-loader@^8.0.0: mkdirp "^0.5.1" pify "^4.0.1" -babel-plugin-add-module-exports@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz#9ae9a1f4a8dc67f0cdec4f4aeda1e43a5ff65e25" - integrity sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU= +babel-plugin-add-module-exports@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.3.3.tgz#b9f7c0a93b989170dce07c3e97071a905a13fc29" + integrity sha512-hC37mm7aAdEb1n8SgggG8a1QuhZapsY/XLCi4ETSH6AVjXBCWEa50CXlOsAMPPWLnSx5Ns6mzz39uvuseh0Xjg== + optionalDependencies: + chokidar "^2.0.4" babel-plugin-closure-elimination@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/babel-plugin-closure-elimination/-/babel-plugin-closure-elimination-1.3.0.tgz#3217fbf6d416dfdf14ff41a8a34e4d0a6bfc22b2" integrity sha512-ClKuSxKLLNhe69bvTMuONDI0dQDW49lXB2qtQyyKCzvwegRGel/q4/e+1EoDNDN97Hf1QkxGMbzpAGPmU4Tfjw== -babel-plugin-dynamic-import-node@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.2.0.tgz#f91631e703e0595e47d4beafbb088576c87fbeee" - integrity sha512-yeDwKaLgGdTpXL7RgGt5r6T4LmnTza/hUn5Ul8uZSGGMtEjYo13Nxai7SQaGCTEzUtg9Zq9qJn0EjEr7SeSlTQ== +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== dependencies: - babel-plugin-syntax-dynamic-import "^6.18.0" + object.assign "^4.1.0" babel-plugin-istanbul@^5.1.0: version "5.1.4" @@ -2339,19 +2769,26 @@ babel-plugin-jest-hoist@^24.6.0: dependencies: "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@^2.4.2: - version "2.6.1" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.6.1.tgz#41f7ead616fc36f6a93180e89697f69f51671181" - integrity sha512-6W2nwiXme6j1n2erPOnmRiWfObUhWH7Qw1LMi9XZy8cj+KtESu3T6asZvtk5bMQQjX8te35o7CFueiSdL/2NmQ== +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== dependencies: - "@babel/runtime" "^7.4.2" - cosmiconfig "^5.2.0" - resolve "^1.10.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" -babel-plugin-remove-graphql-queries@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.7.2.tgz#101c8b26567e35c217e817e892135a9a04a5a805" - integrity sha512-kkIqi2+oZ7YCLbZbrhOGxPA/HuWpfvzRUxbD75SHqwxl9fZVWSLQhOUl72GEpAuEt4MeCEguKpMX100oDN3MQA== +babel-plugin-remove-graphql-queries@^2.7.19: + version "2.7.19" + resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.7.19.tgz#063b369cbf0123cbcebeffb75eab465d8f0b16c8" + integrity sha512-/DS620ztyyrqrqjmz/KHDt++ktn+4RdvfDf5KCUmt6iJOglgNm7uHkE+snuvvL/xhNNuuPBLErc23Q0cR6MSiQ== "babel-plugin-styled-components@>= 1", babel-plugin-styled-components@^1.10.6: version "1.10.6" @@ -2363,73 +2800,32 @@ babel-plugin-remove-graphql-queries@^2.7.2: babel-plugin-syntax-jsx "^6.18.0" lodash "^4.17.11" -babel-plugin-syntax-dynamic-import@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - integrity sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo= - babel-plugin-syntax-jsx@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= -babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: - version "7.0.0-beta.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" - integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== - babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== -babel-preset-fbjs@^3.1.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.2.0.tgz#c0e6347d3e0379ed84b3c2434d3467567aa05297" - integrity sha512-5Jo+JeWiVz2wHUUyAlvb/sSYnXNig9r+HqGAOSfh5Fzxp7SnAaR/tEGRJ1ZX7C77kfk82658w6R5Z+uPATTD9g== - dependencies: - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-syntax-class-properties" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-block-scoped-functions" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-for-of" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-member-expression-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-object-super" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-property-literals" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" - -babel-preset-gatsby@^0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.2.8.tgz#976adb62bcf73f1a53374deb3a3a37b8880d5745" - integrity sha512-Cks3TRbx0CvjwW25noYZwideKp/gH8RJypuwd8gJ/Y1JDXrE7Vnjkvct6QH61XLcX7QIkRoissvOt1QqNWyaIg== - dependencies: - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-spread" "^7.2.2" - "@babel/preset-env" "^7.4.1" - "@babel/preset-react" "^7.0.0" - "@babel/runtime" "^7.4.5" - babel-plugin-dynamic-import-node "^1.2.0" - babel-plugin-macros "^2.4.2" +babel-preset-gatsby@^0.2.26: + version "0.2.26" + resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.2.26.tgz#b27344c938cb5a20c81f4be134dde5f5b93ca256" + integrity sha512-qOM26AhAPW5xetUj579jBFICg16sqFHf3dPptRXi3zS7HpEHbtsOvB9VB68MEUj+WZrrlbR/EQuT69GA1XiBdQ== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.7.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.7.4" + "@babel/plugin-proposal-optional-chaining" "^7.7.5" + "@babel/plugin-syntax-dynamic-import" "^7.7.4" + "@babel/plugin-transform-runtime" "^7.7.6" + "@babel/plugin-transform-spread" "^7.7.4" + "@babel/preset-env" "^7.7.6" + "@babel/preset-react" "^7.7.4" + "@babel/runtime" "^7.7.6" + babel-plugin-dynamic-import-node "^2.3.0" + babel-plugin-macros "^2.8.0" babel-plugin-transform-react-remove-prop-types "^0.4.24" babel-preset-jest@^24.6.0: @@ -2440,6 +2836,14 @@ babel-preset-jest@^24.6.0: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^24.6.0" +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -2473,10 +2877,10 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= +base64id@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== base@^0.11.1: version "0.11.2" @@ -2510,19 +2914,19 @@ better-assert@~1.0.0: dependencies: callsite "1.0.0" -better-opn@0.1.4, better-opn@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-0.1.4.tgz#271d03bd8bcb8406d2d9d4cda5c0944d726ea171" - integrity sha512-7V92EnOdjWOB9lKsVsthCcu1FdFT5qNJVTiOgGy5wPuTsSptMMxm2G1FGHgWu22MyX3tyDRzTWk4lxY2Ppdu7A== +better-opn@1.0.0, better-opn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-1.0.0.tgz#0454e4bb9115c6a9e4e5744417dd9c97fb9fce41" + integrity sha512-q3eO2se4sFbTERB1dFBDdjTiIIpRohMErpwBX21lhPvmgmQNNrcQj0zbWRhMREDesJvyod9kxBS3kOtdAvkB/A== dependencies: - opn "^5.4.0" + open "^6.4.0" better-queue-memory@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/better-queue-memory/-/better-queue-memory-1.0.3.tgz#4e71fbb5f5976188656e0c5610da7b411af41493" integrity sha512-QLFkfV+k/7e4L4FR7kqkXKtRi22kl68c/3AaBs0ArDSz0iiuAl0DjVlb6gM220jW7izLE5TRy7oXOd4Cxa0wog== -better-queue@^3.8.6, better-queue@^3.8.7: +better-queue@^3.8.10, better-queue@^3.8.7: version "3.8.10" resolved "https://registry.yarnpkg.com/better-queue/-/better-queue-3.8.10.tgz#1c93b9ec4cb3d1b72eb91d0efcb84fc80e8c6835" integrity sha512-e3gwNZgDCnNWl0An0Tz6sUjKDV9m6aB+K9Xg//vYeo8+KiH8pWhLFxkawcXhm6FpM//GfD9IQv/kmvWCAVVpKA== @@ -2589,6 +2993,11 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + bl@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" @@ -2602,10 +3011,10 @@ blob@0.0.5: resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== -bluebird@^3.0.5, bluebird@^3.5.0, bluebird@^3.5.5: - version "3.5.5" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" - integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== +bluebird@^3.0.5, bluebird@^3.5.0, bluebird@^3.5.5, bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bmp-js@^0.1.0: version "0.1.0" @@ -2650,20 +3059,7 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= -boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" - integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" - -boxen@^3.1.0: +boxen@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb" integrity sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A== @@ -2677,6 +3073,20 @@ boxen@^3.1.0: type-fest "^0.3.0" widest-line "^2.0.0" +boxen@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" + brace-expansion@^1.0.0, brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2701,7 +3111,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1: +braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -2792,19 +3202,26 @@ browserslist@3.2.8: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.6.1, browserslist@^4.6.2: - version "4.6.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.3.tgz#0530cbc6ab0c1f3fc8c819c72377ba55cf647f05" - integrity sha512-CNBqTCq22RKM8wKJNowcqihHJ4SkI8CGeK7KOR9tPboXUuS5Zk5lQgzzTbs4oxD8x+6HUshZUa2OyNI9lR93bQ== +browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.8.0, browserslist@^4.8.2: + version "4.8.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.3.tgz#65802fcd77177c878e015f0e3189f2c4f627ba44" + integrity sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg== + dependencies: + caniuse-lite "^1.0.30001017" + electron-to-chromium "^1.3.322" + node-releases "^1.1.44" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== dependencies: - caniuse-lite "^1.0.30000975" - electron-to-chromium "^1.3.164" - node-releases "^1.1.23" + fast-json-stable-stringify "2.x" -bs-platform@^5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/bs-platform/-/bs-platform-5.0.6.tgz#88c13041fb020479800de3d82c680bf971091425" - integrity sha512-6Boa2VEcWJp2WJr38L7bp3J929nYha7gDarjxb070jWzgfPJ/WbzjipmSfnu2eqqk1MfjEIpBipbPz6n1NISwA== +bs-platform@7.0.2-dev.1: + version "7.0.2-dev.1" + resolved "https://registry.yarnpkg.com/bs-platform/-/bs-platform-7.0.2-dev.1.tgz#9f9bf2daae0bc6ca122bb0446236e7eab8b79bdd" + integrity sha512-RuGk0eTIhvtQ8/X3YVISoKX5oIsOpMS/qQHvmnpmLKvwaKVYaTBxVpL8ktjkDkbvvzZoM6Xw93jwqRlQV6IDHQ== bser@^2.0.0: version "2.0.0" @@ -2855,7 +3272,7 @@ buffer-fill@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= -buffer-from@^1.0.0: +buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -2907,16 +3324,17 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^11.3.2: - version "11.3.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" - integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== +cacache@^12.0.2: + version "12.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== dependencies: bluebird "^3.5.5" chownr "^1.1.1" figgy-pudding "^3.5.1" glob "^7.1.4" graceful-fs "^4.1.15" + infer-owner "^1.0.3" lru-cache "^5.1.1" mississippi "^3.0.0" mkdirp "^0.5.1" @@ -2942,18 +3360,18 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -cache-manager-fs-hash@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/cache-manager-fs-hash/-/cache-manager-fs-hash-0.0.6.tgz#fccc5a6b579080cbe2186697e51b5b8ff8ca9fd0" - integrity sha512-p1nmcCQH4/jyKqEqUqPSDDcCo0PjFdv56OvtSdUrSIB7s8rAfwETLZ0CHXWdAPyg0QaER/deTvl1dCXyjZ5xAA== +cache-manager-fs-hash@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/cache-manager-fs-hash/-/cache-manager-fs-hash-0.0.7.tgz#297f34b9c1a2aaec7b526e7ae0742c4e3fae4888" + integrity sha512-7X+FPItAJf1tKKqJx6ljDJQc0fgSR5B+KPxFQLj+vYSL4q9XdrCbZldgsNb6wueRuIooj01wt0FubB08zaefRg== dependencies: es6-promisify "^6.0.0" lockfile "^1.0.4" -cache-manager@^2.9.0: - version "2.9.1" - resolved "https://registry.yarnpkg.com/cache-manager/-/cache-manager-2.9.1.tgz#1b487252a77e63ccf46be5e41438282bcbc528fb" - integrity sha512-xHSL/neqi9HmaJJmPetbVoIp2C+vXXr2FgfVK6ZcS9H2nXQJVvf3DPm+yD2FG4g7cQSF8l3wOzQ8eHbWcqmOaQ== +cache-manager@^2.10.1: + version "2.10.1" + resolved "https://registry.yarnpkg.com/cache-manager/-/cache-manager-2.10.1.tgz#d8f312381255966cfc19c990bc8834c8d24edb2a" + integrity sha512-bk17v9IkLqNcbCzggEh82LEJhjHp+COnL57L7a0ESbM/cOuXIIBatdVjD/ps7vOsofI48++zAC14Ye+8v50flg== dependencies: async "1.5.2" lru-cache "4.0.0" @@ -2971,6 +3389,19 @@ cacheable-request@^2.1.1: normalize-url "2.0.1" responselike "1.0.2" +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -2981,18 +3412,23 @@ callbag-from-iter@^1.2.0: resolved "https://registry.yarnpkg.com/callbag-from-iter/-/callbag-from-iter-1.2.0.tgz#c1886b08a447cd2efd9a140ec11743d705f26ca9" integrity sha512-9rWvHOnRGp01YMRHHwgVZOO1vu4IRR8GcoH3FpSB16AMzum5juFWJPCMX/XnkJ9j6cic/G+kvb1Grvi6IuSmIQ== -callbag-from-obs@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/callbag-from-obs/-/callbag-from-obs-1.2.0.tgz#f092f302f302b53abaf1a4d7a5393f9a65fac517" - integrity sha512-InhdPC6P4Gdpg7nuXSkocDFlb+//sbwCrVCYhxOHhSVm1gDcw/zSA+IF1gHdYtk4RQKKaCymUFCkVVUVSRThVQ== - dependencies: - symbol-observable "^1.2.0" - callbag-iterate@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callbag-iterate/-/callbag-iterate-1.0.0.tgz#97116f09296ef2d5073b35125891dca93349aeeb" integrity sha512-bynCbDuqGZkj1mXAhGr8jMf8Vhifps+G+pF3xlcz3jcaZLNXHghVjValnJtBTg2N74cyl347UzagJ8niJpyF6Q== +callbag-take@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/callbag-take/-/callbag-take-1.4.0.tgz#cf14718cb2f0b83825969a6055fce2907b83fcc1" + integrity sha512-SMN236uYqjZ+8ypAY12qkV2QwutjOe96GyYPzUF9RKKJR5nRyu0fON4r4XBZ3ZonOWnDW05CWmKmS0mVQg5TIg== + dependencies: + callbag "^1.1.0" + +callbag@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/callbag/-/callbag-1.2.0.tgz#45e73962a466056c6e5f86f5627b35cf0c4df101" + integrity sha512-RMcVOk2oyA8CyCt/HsLEvnvvttKlaGVaG0uOo5IY7RpdiPLhStjxv5oYre33VJfT8kJE+cuKLSNHooz7yCUdhQ== + caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -3043,7 +3479,7 @@ camelcase@^2.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -camelcase@^4.0.0, camelcase@^4.1.0: +camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= @@ -3068,10 +3504,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000971, caniuse-lite@^1.0.30000975: - version "1.0.30000978" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000978.tgz#1e3346c27fc46bce9ac1ccd77863153a263dde56" - integrity sha512-H6gK6kxUzG6oAwg/Jal279z8pHw0BzrpZfwo/CA9FFm/vA0l8IhDfkZtepyJNE2Y4V6Dp3P3ubz6czby1/Mgsw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001017: + version "1.0.30001019" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001019.tgz#857e3fccaad2b2feb3f1f6d8a8f62d747ea648e1" + integrity sha512-6ljkLtF1KM5fQ+5ZN0wuyVvvebJxgJPTmScOMaFuQN2QuOzvRJnWSKfzQskQU5IOU4Gap3zasYPIinzwUjoj/g== capture-exit@^2.0.0: version "2.0.0" @@ -3080,11 +3516,6 @@ capture-exit@^2.0.0: dependencies: rsvp "^4.8.4" -capture-stack-trace@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" - integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -3116,7 +3547,7 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@2.x, chalk@^2.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.x, chalk@^2.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3125,6 +3556,14 @@ chalk@2.x, chalk@^2.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, c escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + change-case@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.1.0.tgz#0e611b7edc9952df2e8513b27b42de72647dd17e" @@ -3237,10 +3676,25 @@ chokidar@2.1.2: optionalDependencies: fsevents "^1.2.7" -chokidar@^2.0.2, chokidar@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" - integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== +chokidar@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" + integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.2.0" + optionalDependencies: + fsevents "~2.1.1" + +chokidar@^2.0.2, chokidar@^2.0.4, chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" async-each "^1.0.1" @@ -3261,7 +3715,7 @@ chownr@^1.0.1, chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== -chrome-trace-event@^1.0.0: +chrome-trace-event@^1.0.0, chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== @@ -3273,11 +3727,6 @@ ci-info@2.0.0, ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== - cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -3296,10 +3745,10 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-boxes@^2.2.0: version "2.2.0" @@ -3313,6 +3762,13 @@ cli-cursor@^2.0.0, cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + cli-spinners@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" @@ -3336,35 +3792,26 @@ cli-truncate@^0.2.1: slice-ansi "0.0.4" string-width "^1.0.1" -cli-truncate@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.1.0.tgz#2b2dfd83c53cfd3572b87fc4d430a808afb04086" - integrity sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA== +cli-truncate@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: - slice-ansi "^1.0.0" - string-width "^2.0.0" + slice-ansi "^3.0.0" + string-width "^4.2.0" cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= -clipboardy@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-1.2.3.tgz#0526361bf78724c1f20be248d428e365433c07ef" - integrity sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA== - dependencies: - arch "^2.1.0" - execa "^0.8.0" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= +clipboardy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.1.0.tgz#0123a0c8fac92f256dc56335e0bb8be97a4909a5" + integrity sha512-2pzOUxWcLlXWtn+Jd6js3o12TysNOOVes/aQfg+MT/35vrxWzedHlLwyoJpXjsFKWm95BTNEcMGD9+a7mKzZkQ== dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" + arch "^2.1.1" + execa "^1.0.0" cliui@^4.0.0: version "4.1.0" @@ -3375,12 +3822,21 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= -clone-response@1.0.2: +clone-response@1.0.2, clone-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= @@ -3425,10 +3881,10 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -codecov@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.5.0.tgz#3d0748932f9cb41e1ad7f21fa346ef1b2b1bed47" - integrity sha512-/OsWOfIHaQIr7aeZ4pY0UC1PZT6kimoKFOFYFNb6wxo3iw12nRrh+mNGH72rnXxNsq6SGfesVPizm/6Q3XqcFQ== +codecov@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.6.1.tgz#f39fc49413445555f81f8e3ca5730992843b4517" + integrity sha512-IUJB6WG47nWK7o50etF8jBadxdMw7DmoQg05yIljstXFBGB6clOZsIj6iD4P82T2YaIU3qq+FFu8K9pxgkCJDQ== dependencies: argv "^0.0.2" ignore-walk "^3.0.1" @@ -3456,12 +3912,19 @@ color-convert@^1.9.0, color-convert@^1.9.1: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -3504,7 +3967,7 @@ command-exists@^1.2.2: resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.8.tgz#715acefdd1223b9c9b37110a149c6392c2852291" integrity sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw== -commander@^2.11.0, commander@^2.19.0, commander@^2.20.0, commander@~2.20.0: +commander@^2.11.0, commander@^2.20.0, commander@~2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== @@ -3516,7 +3979,7 @@ commander@~2.8.1: dependencies: graceful-readlink ">= 1.0.0" -common-tags@^1.4.0: +common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== @@ -3562,7 +4025,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.40.0 < 2" -compression@^1.7.3, compression@^1.7.4: +compression@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -3622,10 +4085,22 @@ configstore@^4.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -confusing-browser-globals@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.7.tgz#5ae852bd541a910e7ffb2dbb864a2d21a36ad29b" - integrity sha512-cgHI1azax5ATrZ8rJ+ODDML9Fvu67PimB6aNxBrc/QwSaDaM9eTfIEUHx3bBLJJ82ioSb+/5zfsMCCEJax3ByQ== +configstore@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.0.tgz#37de662c7a49b5fe8dbcf8f6f5818d2d81ed852b" + integrity sha512-eE/hvMs7qw7DlcB5JPRnthmrITuHMmACUJAp89v6PT6iOqzoLS7HRWhBtuHMlhNHo2AhUSA/3Dh1bKNJHcublQ== + dependencies: + dot-prop "^5.1.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" + +confusing-browser-globals@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== connect-history-api-fallback@^1.6.0: version "1.6.0" @@ -3692,10 +4167,10 @@ convert-css-length@^1.0.1: console-polyfill "^0.1.2" parse-unit "^1.0.1" -convert-hrtime@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-hrtime/-/convert-hrtime-2.0.0.tgz#19bfb2c9162f9e11c2f04c2c79de2b7e8095c627" - integrity sha1-Gb+yyRYvnhHC8Ewsed4rfoCVxic= +convert-hrtime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/convert-hrtime/-/convert-hrtime-3.0.0.tgz#62c7593f5809ca10be8da858a6d2f702bcda00aa" + integrity sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA== convert-source-map@^1.4.0, convert-source-map@^1.7.0: version "1.7.0" @@ -3736,36 +4211,30 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copyfiles@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-1.2.0.tgz#a8da3ac41aa2220ae29bd3c58b6984294f2c593c" - integrity sha1-qNo6xBqiIgrim9PFi2mEKU8sWTw= +copyfiles@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.1.1.tgz#d430e122d7880f92c45d372208b0af03b0c39db6" + integrity sha512-y6DZHve80whydXzBal7r70TBgKMPKesVRR1Sn/raUu7Jh/i7iSLSyGvYaq0eMJ/3Y/CKghwzjY32q1WzEnpp3Q== dependencies: glob "^7.0.5" - ltcdr "^2.2.1" minimatch "^3.0.3" mkdirp "^0.5.1" noms "0.0.0" through2 "^2.0.1" + yargs "^13.2.4" -core-js-compat@^3.1.1: - version "3.1.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.4.tgz#e4d0c40fbd01e65b1d457980fe4112d4358a7408" - integrity sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg== +core-js-compat@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.1.tgz#39638c935c83c93a793abb628b252ec43e85783a" + integrity sha512-2Tl1EuxZo94QS2VeH28Ebf5g3xbPZG/hj/N5HDDy4XMP/ImR0JIer/nggQRiMN91Q54JVkGbytf42wO29oXVHg== dependencies: - browserslist "^4.6.2" - core-js-pure "3.1.4" - semver "^6.1.1" + browserslist "^4.8.2" + semver "7.0.0" -core-js-pure@3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.4.tgz#5fa17dc77002a169a3566cc48dc774d2e13e3769" - integrity sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA== - -core-js@2, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0, core-js@^2.5.7, core-js@^2.6.5: - version "2.6.9" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" - integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== +core-js@2, core-js@^2.4.0, core-js@^2.5.7, core-js@^2.6.11, core-js@^2.6.5: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== core-js@^1.0.0: version "1.2.7" @@ -3785,7 +4254,7 @@ cors@^2.8.5: object-assign "^4" vary "^1" -cosmiconfig@^5.0.0, cosmiconfig@^5.2.0, cosmiconfig@^5.2.1: +cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -3795,6 +4264,17 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.2.0, cosmiconfig@^5.2.1: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -3803,13 +4283,6 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= - dependencies: - capture-stack-trace "^1.0.0" - create-hash@^1.1.0, create-hash@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" @@ -3869,6 +4342,15 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypt@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" @@ -3896,6 +4378,11 @@ crypto-random-string@^1.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + css-color-keywords@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" @@ -3914,7 +4401,7 @@ css-declaration-sorter@^4.0.1: postcss "^7.0.1" timsort "^0.3.0" -css-loader@^1.0.0: +css-loader@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw== @@ -4079,7 +4566,7 @@ cssnano-util-same-parent@^4.0.0: resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== -cssnano@^4.1.0: +cssnano@^4.1.10: version "4.1.10" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== @@ -4170,14 +4657,21 @@ date-now@^0.1.4: resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= -debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: +debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.3, debug@^2.6.6, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: +debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -4191,14 +4685,7 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: dependencies: ms "^2.1.1" -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -4273,10 +4760,17 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= -deep-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= +deep-equal@^1.0.1, deep-equal@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" deep-extend@^0.6.0: version "0.6.0" @@ -4301,6 +4795,11 @@ default-gateway@^4.2.0: execa "^1.0.0" ip-regex "^2.1.0" +defer-to-connect@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.1.tgz#88ae694b93f67b81815a2c8c769aef6574ac8f2f" + integrity sha512-J7thop4u3mRTkYRQ+Vpfwy2G5Ehoy82I14+14W4YMDLKdWloI9gSzRbV30s/NckQGVJtPkWNcW4oMAUigTdqiQ== + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -4330,18 +4829,6 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= - dependencies: - globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" - del@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" @@ -4355,16 +4842,19 @@ del@^4.1.1: pify "^4.0.1" rimraf "^2.6.3" -del@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-5.0.0.tgz#4fa698b7a1ffb4e2ab3e8929ed699799654d6720" - integrity sha512-TfU3nUY0WDIhN18eq+pgpbLY9AfL5RfiE9czKaTSolc6aK7qASXfDErvYgjV1UqCR4sNXDoxO0/idPmhDUt2Sg== +del@^5.0.0, del@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" + integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== dependencies: - globby "^10.0.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - rimraf "^2.6.3" + globby "^10.0.1" + graceful-fs "^4.2.2" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.1" + p-map "^3.0.0" + rimraf "^3.0.0" + slash "^3.0.0" delayed-stream@~1.0.0: version "1.0.0" @@ -4401,10 +4891,10 @@ detab@^2.0.0: dependencies: repeat-string "^1.5.4" -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= +detect-indent@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" + integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== detect-libc@^1.0.2, detect-libc@^1.0.3: version "1.0.3" @@ -4429,7 +4919,7 @@ detect-port-alt@1.1.3: address "^1.0.1" debug "^2.6.0" -detect-port@^1.2.1: +detect-port@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== @@ -4459,10 +4949,10 @@ devcert-san@^0.3.3: tmp "^0.0.31" tslib "^1.6.0" -diff-sequences@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" - integrity sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw== +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== diffie-hellman@^5.0.0: version "5.0.3" @@ -4537,7 +5027,7 @@ dom-converter@^0.2: dependencies: utila "~0.4" -dom-helpers@^3.2.1: +dom-helpers@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== @@ -4611,10 +5101,17 @@ dot-prop@^4.1.0, dot-prop@^4.1.1: dependencies: is-obj "^1.0.0" -dotenv@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" - integrity sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0= +dot-prop@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +dotenv@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== download@^6.2.2: version "6.2.5" @@ -4684,10 +5181,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.164, electron-to-chromium@^1.3.47: - version "1.3.175" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.175.tgz#a269716af5e549f9f3989ae38ba484881dcb3702" - integrity sha512-cQ0o7phcPA0EYkN4juZy/rq4XVxl/1ywQnytDT9hZTC0cHfaOBqWK2XlWp9Mk8xRGntgnmxlHTOux4HLb2ZNnA== +electron-to-chromium@^1.3.322, electron-to-chromium@^1.3.47: + version "1.3.326" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.326.tgz#71715aca9afd328ea208a3bc4651c15b869f0d1b" + integrity sha512-kaBmGWJlLW5bGEbm7/HWG9jt4oH+uecBIIfzFWfFkgqssPT2I6RDenGqo4wmKzm7seNu7DSCRZBXCuf7w8dtkQ== elegant-spinner@^1.0.1: version "1.0.1" @@ -4717,6 +5214,11 @@ emoji-regex@^7.0.1, emoji-regex@^7.0.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -4741,15 +5243,15 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -engine.io-client@~3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.3.2.tgz#04e068798d75beda14375a264bb3d742d7bc33aa" - integrity sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ== +engine.io-client@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.0.tgz#82a642b42862a9b3f7a188f41776b2deab643700" + integrity sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA== dependencies: component-emitter "1.2.1" component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" + debug "~4.1.0" + engine.io-parser "~2.2.0" has-cors "1.1.0" indexof "0.0.1" parseqs "0.0.5" @@ -4758,10 +5260,10 @@ engine.io-client@~3.3.1: xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" -engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" - integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== +engine.io-parser@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.0.tgz#312c4894f57d52a02b420868da7b5c1c84af80ed" + integrity sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w== dependencies: after "0.8.2" arraybuffer.slice "~0.0.7" @@ -4769,17 +5271,17 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: blob "0.0.5" has-binary2 "~1.0.2" -engine.io@~3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.3.2.tgz#18cbc8b6f36e9461c5c0f81df2b830de16058a59" - integrity sha512-AsaA9KG7cWPXWHp5FvHdDWY3AMWeZ8x+2pUVLcn71qE5AtAzgGbxuclOytygskw8XGmiQafTmnI9Bix3uihu2w== +engine.io@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.4.0.tgz#3a962cc4535928c252759a00f98519cb46c53ff3" + integrity sha512-XCyYVWzcHnK5cMz7G4VTu2W7zJS7SM1QkcelghyIk/FmobWBtXE7fwhBusEKvCSqc3bMh8fNFMlUkCKTFRxH2w== dependencies: accepts "~1.3.4" - base64id "1.0.0" + base64id "2.0.0" cookie "0.3.1" - debug "~3.1.0" - engine.io-parser "~2.1.0" - ws "~6.1.0" + debug "~4.1.0" + engine.io-parser "~2.2.0" + ws "^7.1.2" enhanced-resolve@^4.1.0: version "4.1.0" @@ -4795,10 +5297,10 @@ entities@^1.1.1, entities@~1.1.1: resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== -envinfo@^5.8.1: - version "5.12.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-5.12.1.tgz#83068c33e0972eb657d6bc69a6df30badefb46ef" - integrity sha512-pwdo0/G3CIkQ0y6PCXq4RdkvId2elvtPCJMG0konqlrfkWQbf1DWeH9K2b/cvu2YgGvPPTOnonZxXM1gikFu1w== +envinfo@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.0.tgz#91410bb6db262fb4f1409bd506e9ff57e91023f4" + integrity sha512-jDgnJaF/Btomk+m3PZDTTCb5XIIIX3zYItnCRfF73zVgvinLoRomuhi75Y4su0PtQxWz4v66XnLLckyvyJTOIQ== eol@^0.8.1: version "0.8.1" @@ -4826,22 +5328,27 @@ error-stack-parser@^2.0.0: dependencies: stackframe "^1.0.4" -es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.4.3, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.7.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== +es-abstract@^1.12.0, es-abstract@^1.17.0-next.1, es-abstract@^1.4.3, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1" + integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug== dependencies: - es-to-primitive "^1.2.0" + es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" @@ -4886,12 +5393,12 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -eslint-config-react-app@^3.0.0: - version "3.0.8" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-3.0.8.tgz#6f606828ba30bafee7d744c41cd07a3fea8f3035" - integrity sha512-Ovi6Bva67OjXrom9Y/SLJRkrGqKhMAL0XCH8BizPhjEVEhYczl2ZKiNZI2CuqO5/CJwAfMwRXAVGY0KToWr1aA== +eslint-config-react-app@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.1.0.tgz#a37b3f2d4f56f856f93277281ef52bd791273e63" + integrity sha512-hBaxisHC6HXRVvxX+/t1n8mOdmCVIKgkXsf2WoUkJi7upHJTwYTsdCmx01QPOjKNT34QMQQ9sL0tVBlbiMFjxA== dependencies: - confusing-browser-globals "^1.0.6" + confusing-browser-globals "^1.0.9" eslint-import-resolver-node@^0.3.2: version "0.3.2" @@ -4901,10 +5408,10 @@ eslint-import-resolver-node@^0.3.2: debug "^2.6.9" resolve "^1.5.0" -eslint-loader@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.2.tgz#453542a1230d6ffac90e4e7cb9cadba9d851be68" - integrity sha512-rA9XiXEOilLYPOIInvVH5S/hYfyTPyxag6DZhoQOduM+3TkghAEQ3VcFO8VnX4J4qg/UIBzp72aOf/xvYmpmsg== +eslint-loader@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337" + integrity sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg== dependencies: loader-fs-cache "^1.0.0" loader-utils "^1.0.2" @@ -4912,51 +5419,58 @@ eslint-loader@^2.1.0: object-hash "^1.1.4" rimraf "^2.6.1" -eslint-module-utils@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" - integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== +eslint-module-utils@^2.4.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.0.tgz#cdf0b40d623032274ccd2abd7e64c4e524d6e19c" + integrity sha512-kCo8pZaNz2dsAW7nCUjuVoI11EBXXpIzfNxmaoLhXoRDOnqXLC4iSGVRdZPhOitfbdEfMEfKOiENaK6wDPZEGw== dependencies: - debug "^2.6.8" + debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-flowtype@^2.46.1: - version "2.50.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz#61379d6dce1d010370acd6681740fd913d68175f" - integrity sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ== +eslint-plugin-eslint-plugin@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-2.1.0.tgz#a7a00f15a886957d855feacaafee264f039e62d5" + integrity sha512-kT3A/ZJftt28gbl/Cv04qezb/NQ1dwYIbi8lyf806XMxkus7DvOVCLIfTXMrorp322Pnoez7+zabXH29tADIDg== + +eslint-plugin-flowtype@^3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c" + integrity sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw== dependencies: - lodash "^4.17.10" + lodash "^4.17.15" -eslint-plugin-graphql@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-graphql/-/eslint-plugin-graphql-3.0.3.tgz#9ecdaf5ea8397973e29cea9dbf860420694e9df0" - integrity sha512-hHwLyxSkC5rkakJ/SNTWwOswPdVhvfyMCnEOloevrLQIOHUNVIQBg1ljCaRe9C40HdzgcGUFUdG5BHLCKm8tuw== +eslint-plugin-graphql@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-graphql/-/eslint-plugin-graphql-3.1.1.tgz#640f7f73f12cee2f7145140bd2ff21694018bff5" + integrity sha512-VNu2AipS8P1BAnE/tcJ2EmBWjFlCnG+1jKdUlFNDQjocWZlFiPpMu9xYNXePoEXK+q+jG51M/6PdhOjEgJZEaQ== dependencies: graphql-config "^2.0.1" lodash "^4.11.1" -eslint-plugin-import@^2.9.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.0.tgz#7a5ba8d32622fb35eb9c8db195c2090bd18a3678" - integrity sha512-PZpAEC4gj/6DEMMoU2Df01C5c50r7zdGIN52Yfi7CvvWaYssG7Jt5R9nFG5gmqodxNOz9vQS87xk6Izdtpdrig== +eslint-plugin-import@^2.19.1: + version "2.19.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.19.1.tgz#5654e10b7839d064dd0d46cd1b88ec2133a11448" + integrity sha512-x68131aKoCZlCae7rDXKSAQmbT5DQuManyXo2sK6fJJ0aK5CWAkv6A6HJZGgqC8IhjQxYPgo6/IY4Oz8AFsbBw== dependencies: array-includes "^3.0.3" + array.prototype.flat "^1.2.1" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.0" + eslint-module-utils "^2.4.1" has "^1.0.3" - lodash "^4.17.11" minimatch "^3.0.4" + object.values "^1.1.0" read-pkg-up "^2.0.0" - resolve "^1.11.0" + resolve "^1.12.0" -eslint-plugin-jsx-a11y@^6.0.3: - version "6.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz#4ebba9f339b600ff415ae4166e3e2e008831cf0c" - integrity sha512-cjN2ObWrRz0TTw7vEcGQrx+YltMvZoOEx4hWU8eEERDnBIU00OTq7Vr+jA7DFKxiwLNv4tTh5Pq2GUNEa8b6+w== +eslint-plugin-jsx-a11y@^6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" + integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== dependencies: + "@babel/runtime" "^7.4.5" aria-query "^3.0.0" array-includes "^3.0.3" ast-types-flow "^0.0.7" @@ -4964,30 +5478,28 @@ eslint-plugin-jsx-a11y@^6.0.3: damerau-levenshtein "^1.0.4" emoji-regex "^7.0.2" has "^1.0.3" - jsx-ast-utils "^2.0.1" + jsx-ast-utils "^2.2.1" -eslint-plugin-react@^7.8.2: - version "7.14.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.2.tgz#94c193cc77a899ac0ecbb2766fbef88685b7ecc1" - integrity sha512-jZdnKe3ip7FQOdjxks9XPN0pjUKZYq48OggNMd16Sk+8VXx6JOvXmlElxROCgp7tiUsTsze3jd78s/9AFJP2mA== +eslint-plugin-react-hooks@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" + integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== + +eslint-plugin-react@^7.17.0: + version "7.17.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.17.0.tgz#a31b3e134b76046abe3cd278e7482bd35a1d12d7" + integrity sha512-ODB7yg6lxhBVMeiH1c7E95FLD4E/TwmFjltiU+ethv7KPdCwgiFuOZg9zNRHyufStTDLl/dEFqI2Q1VPmCd78A== dependencies: array-includes "^3.0.3" doctrine "^2.1.0" + eslint-plugin-eslint-plugin "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.1.0" + jsx-ast-utils "^2.2.3" object.entries "^1.1.0" - object.fromentries "^2.0.0" + object.fromentries "^2.0.1" object.values "^1.1.0" prop-types "^15.7.2" - resolve "^1.10.1" - -eslint-scope@3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" - integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" + resolve "^1.13.1" eslint-scope@^4.0.0, eslint-scope@^4.0.3: version "4.0.3" @@ -4997,66 +5509,77 @@ eslint-scope@^4.0.0, eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" - integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" - integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^5.6.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== +eslint@^6.7.2: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== dependencies: "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" + ajv "^6.10.0" chalk "^2.1.0" cross-spawn "^6.0.5" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" + glob-parent "^5.0.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.11" + lodash "^4.17.14" minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" + optionator "^0.8.3" progress "^2.0.0" regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" table "^5.2.3" text-table "^0.2.0" + v8-compile-cache "^2.0.3" -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== +espree@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" + integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" + acorn "^7.1.0" + acorn-jsx "^5.1.0" + eslint-visitor-keys "^1.1.0" esprima@^3.1.3: version "3.1.3" @@ -5109,10 +5632,10 @@ eval@^0.1.0: dependencies: require-like ">= 0.1.1" -event-source-polyfill@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-1.0.5.tgz#b34be2740a685a8dc65ae750065fc983538ffcfe" - integrity sha512-PdStgZ3+G2o2gjqsBYbV4931ByVmwLwSrX7mFgawCL+9I1npo9dwAQTnWtNWXe5IY2P8+AbbPteeOueiEtRCUA== +event-source-polyfill@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-1.0.11.tgz#37b5d37161b8980bbbacb29081b7c8e501909e3a" + integrity sha512-fbo96OutP0Bb+gIYTTy8LGhNWySdetsFElCn/vhOzQL3cXWsS70TP/aRUe32U7F+PuOZH/tvb40tZgoJV8/Ilw== eventemitter3@^3.0.0, eventemitter3@^3.1.0: version "3.1.2" @@ -5188,19 +5711,6 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" - integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -5229,6 +5739,22 @@ execa@^2.0.3: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + executable@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" @@ -5288,17 +5814,17 @@ expect@^24.8.0: jest-message-util "^24.8.0" jest-regex-util "^24.3.0" -express-graphql@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/express-graphql/-/express-graphql-0.7.1.tgz#6c7712ee966c3aba1930e064ea4c8181e56fd3ef" - integrity sha512-YpheAqTbSKpb5h57rV2yu2dPNUBi4FvZDspZ5iEV3ov34PBRgnM4lEBkv60+vZRJ6SweYL14N8AGYdov7g6ooQ== +express-graphql@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/express-graphql/-/express-graphql-0.9.0.tgz#00fd8552f866bac5c9a4612b2c4c82076107b3c2" + integrity sha512-wccd9Lb6oeJ8yHpUs/8LcnGjFUUQYmOG9A5BNLybRdCzGw0PeUrtBxsIR8bfiur6uSW4OvPkVDoYH06z6/N9+w== dependencies: - accepts "^1.3.5" + accepts "^1.3.7" content-type "^1.0.4" - http-errors "^1.7.1" - raw-body "^2.3.3" + http-errors "^1.7.3" + raw-body "^2.4.1" -express@^4.16.3, express@^4.17.1: +express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -5416,7 +5942,7 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= -fast-glob@^2.0.2, fast-glob@^2.2.2: +fast-glob@^2.0.2: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== @@ -5440,12 +5966,12 @@ fast-glob@^3.0.3: merge2 "^1.2.3" micromatch "^4.0.2" -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -5483,11 +6009,6 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -fbjs-css-vars@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" - integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== - fbjs@^0.8.0: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" @@ -5501,20 +6022,6 @@ fbjs@^0.8.0: setimmediate "^1.0.5" ua-parser-js "^0.7.18" -fbjs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" - integrity sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA== - dependencies: - core-js "^2.4.1" - fbjs-css-vars "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.18" - fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" @@ -5542,6 +6049,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +figures@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" + integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -5650,7 +6164,7 @@ find-cache-dir@^0.1.1: mkdirp "^0.5.1" pkg-dir "^1.0.0" -find-cache-dir@^2.0.0: +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -5659,6 +6173,15 @@ find-cache-dir@^2.0.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-cache-dir@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.2.0.tgz#e7fe44c1abc1299f516146e563108fd1006c1874" + integrity sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.0" + pkg-dir "^4.1.0" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -5706,7 +6229,7 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" -flat@^4.0.0: +flat@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== @@ -5718,10 +6241,10 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== -flowgen@^1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/flowgen/-/flowgen-1.9.2.tgz#bf4b6319b5455e8724094ab1d8ba2a3b6f3c3a13" - integrity sha512-YKKNGUqLX/J8nNClaaoaAmICZVVUACRERbyuZPSLN/sDEK5DWRStvV+cUG/QL2ZCLRc1obZgHvkF2LR5CEK2oQ== +flowgen@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/flowgen/-/flowgen-1.10.0.tgz#a041ae31d543d22166e7ba7c296b8445deb3c2e4" + integrity sha512-3lsoaa1vxGXhnkHuoE4mLPJi/klvpR3ID8R9CFJ/GBNi+cxJXecWQaUPrWMdNI5tGs8Y+7wrIZaCVFKFLQiGOg== dependencies: "@babel/code-frame" "^7.0.0" "@babel/highlight" "^7.0.0" @@ -5730,7 +6253,7 @@ flowgen@^1.9.2: paralleljs "^0.2.1" prettier "^1.16.4" shelljs "^0.8.3" - typescript "^3.3.3333" + typescript "^3.4" typescript-compiler "^1.4.1-2" flush-write-stream@^1.0.0: @@ -5741,6 +6264,13 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + follow-redirects@^1.0.0: version "1.7.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" @@ -5814,12 +6344,12 @@ fs-exists-cached@1.0.0, fs-exists-cached@^1.0.0: resolved "https://registry.yarnpkg.com/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz#cf25554ca050dc49ae6656b41de42258989dcbce" integrity sha1-zyVVTKBQ3EmuZla0HeQiWJidy84= -fs-extra@^4.0.1, fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== +fs-extra@8.1.0, fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: - graceful-fs "^4.1.2" + graceful-fs "^4.2.0" jsonfile "^4.0.0" universalify "^0.1.0" @@ -5832,7 +6362,7 @@ fs-extra@^5.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^7.0.0, fs-extra@^7.0.1: +fs-extra@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== @@ -5871,6 +6401,11 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" +fsevents@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -5881,86 +6416,91 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gatsby-cli@^2.7.20: - version "2.7.20" - resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-2.7.20.tgz#1117b21802741c18ec6d16cd53dbb7f41bba8d22" - integrity sha512-LVFv8RvMc8zLjCMHOJAdx0nA3Pg7baX7kFUyC/ixMJwhUSy/qUKtt4VNCpGnnTpqjO+743kyVQuw+zNK3dQtIg== +gatsby-cli@^2.8.22: + version "2.8.22" + resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-2.8.22.tgz#3c3ccb228767f329ff29047935595a1a1414ef96" + integrity sha512-uZix0CalIzZ6Wx5pbu5VoWA7KalWdWdfofm+thXRe4VlyJ9VnKmHAslBB03NOl707JoMsBLshHsGYynHwp0jdA== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/runtime" "^7.0.0" - "@hapi/joi" "^15.1.0" - better-opn "^0.1.4" - bluebird "^3.5.0" + "@babel/code-frame" "^7.5.5" + "@babel/runtime" "^7.7.6" + "@hapi/joi" "^15.1.1" + better-opn "^1.0.0" + bluebird "^3.7.2" chalk "^2.4.2" - ci-info "^2.0.0" - clipboardy "^1.2.3" - common-tags "^1.4.0" - configstore "^4.0.0" - convert-hrtime "^2.0.0" - core-js "^2.5.0" - envinfo "^5.8.1" - execa "^0.8.0" + clipboardy "^2.1.0" + common-tags "^1.8.0" + configstore "^5.0.0" + convert-hrtime "^3.0.0" + core-js "^2.6.11" + envinfo "^7.5.0" + execa "^3.4.0" fs-exists-cached "^1.0.0" - fs-extra "^4.0.1" - gatsby-telemetry "^1.1.7" - hosted-git-info "^2.6.0" + fs-extra "^8.1.0" + gatsby-core-utils "^1.0.25" + gatsby-telemetry "^1.1.46" + hosted-git-info "^3.0.2" is-valid-path "^0.1.1" - lodash "^4.17.14" + lodash "^4.17.15" meant "^1.0.1" node-fetch "^2.6.0" object.entries "^1.1.0" - opentracing "^0.14.3" + opentracing "^0.14.4" pretty-error "^2.1.1" progress "^2.0.3" - prompts "^2.1.0" - react "^16.8.4" + prompts "^2.3.0" + react "^16.12.0" + redux "^4.0.4" resolve-cwd "^2.0.0" - semver "^6.1.1" - source-map "0.5.7" + semver "^6.3.0" + signal-exit "^3.0.2" + source-map "0.7.3" stack-trace "^0.0.10" strip-ansi "^5.2.0" - update-notifier "^2.3.0" - uuid "3.3.2" + update-notifier "^3.0.1" + uuid "3.3.3" yargs "^12.0.5" - yurnalist "^1.0.5" + yurnalist "^1.1.1" optionalDependencies: - ink "^2.3.0" + ink "^2.6.0" ink-spinner "^3.0.1" -gatsby-core-utils@^1.0.0, gatsby-core-utils@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-1.0.3.tgz#f7616192ac0b4d0fc04587d924533c3cece70980" - integrity sha512-01B0wqVTftFcYwVR7HGJy+Nriy+xxC++VZhsWNCFWtby1NwfSDUwkoScGcZ/jXvg9waEmBC1n70FwVIDnoHzSA== +gatsby-core-utils@^1.0.0, gatsby-core-utils@^1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-1.0.25.tgz#8cc8e76a79063c43ac06d9b72100b7c6f1fb5b60" + integrity sha512-Pz5xueweH9qv5TIW7wwlTxI/CbyzkiE5xvgLicbHbU+InH+lCNt4VuvGP1gQcIRuHMCIbuVKSiVCC7jnxEbtrA== + dependencies: + ci-info "2.0.0" + node-object-hash "^2.0.0" -gatsby-graphiql-explorer@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-0.2.3.tgz#fdfc6c1b8b5019df57aad025badb552e3141f6e4" - integrity sha512-SwZZ79V5TPxWP44bJTP3x4XvJH6mHDXoMTKO4RAhUygN0CtPSOfdedEWfEexDmteJyBYsu3kQzsI8h6qhbbSzg== +gatsby-graphiql-explorer@^0.2.31: + version "0.2.31" + resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-0.2.31.tgz#cb7a7ed2749085a28612f11ef37a35de54809710" + integrity sha512-pAK/HG/Ryw2ZDWb/5rnSBmPf8KsnFGlO/zS9m2IdLjnQS0kA0b9UbfZ5bjkg7pwPPLhWilEX+uON0l51N4gnmg== dependencies: - "@babel/runtime" "^7.0.0" + "@babel/runtime" "^7.7.6" -gatsby-link@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-2.2.3.tgz#2477c0093a0183014ce8012758db94e06d0cf43d" - integrity sha512-uWDd7QMXIlHk4mTakcUEsvw/VGqcG2M72DFfEDJq50X7gyrm2pwHwsPnT5MQsuqCF+SVNG4ryzJ8TyQotoF/fQ== +gatsby-link@^2.2.27: + version "2.2.27" + resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-2.2.27.tgz#d36aa62e9854ef3102ca85c2a6fa833943059303" + integrity sha512-Jiz6ShReB25plqTKsTAVpfFvN1K/JziNhr1z8Q6p+dPzQaNWfEC61kpRKE69J1WWycvRdxCSZEkOgY/0nlAifg== dependencies: - "@babel/runtime" "^7.0.0" - "@types/reach__router" "^1.0.0" - prop-types "^15.6.1" + "@babel/runtime" "^7.7.6" + "@types/reach__router" "^1.2.6" + prop-types "^15.7.2" -gatsby-page-utils@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-0.0.5.tgz#faefc2ece9f14bfd161ddd0104d1e12b54ef7a70" - integrity sha512-yHL4OKgVEOWOuTUCO2ZPPmWyA1bAtSUPrf+W5w3p24pUwqMkz2Yu2hii/PhgQs+2ap6BkpSwBjBSYS2YLRmTNg== +gatsby-page-utils@^0.0.36: + version "0.0.36" + resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-0.0.36.tgz#348e5e30dfbbad8273dbd4a9705a57624520175e" + integrity sha512-W+9+PdEWKCxO5cEr8D3F0vyN2sDLeoSwROwiuO+J791HHUj+HgnDzRAt97WjBwcD4ghT+ONs5Ao2WyR+bVrIzw== dependencies: - "@babel/runtime" "^7.0.0" - bluebird "^3.5.0" - chokidar "2.1.2" + "@babel/runtime" "^7.7.6" + bluebird "^3.7.2" + chokidar "3.3.0" fs-exists-cached "^1.0.0" - glob "^7.1.1" - lodash "^4.17.14" + gatsby-core-utils "^1.0.25" + glob "^7.1.6" + lodash "^4.17.15" micromatch "^3.1.10" - slash "^1.0.0" gatsby-plugin-alias-imports@^1.0.5: version "1.0.5" @@ -6018,16 +6558,16 @@ gatsby-plugin-mdx@^1.0.17: unist-util-remove "^1.0.1" unist-util-visit "^1.4.0" -gatsby-plugin-netlify@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/gatsby-plugin-netlify/-/gatsby-plugin-netlify-2.1.3.tgz#61bd13e97175e4b438094a03c0848118f794deab" - integrity sha512-tc43xvKuXosvDxcD6TpVCO2UX0XywKlmC46kVl3aAuKAf1lygqLEUSahKcJ/oorbx6SD0CCY135mkHLj6YsYaw== +gatsby-plugin-netlify@^2.1.30: + version "2.1.30" + resolved "https://registry.yarnpkg.com/gatsby-plugin-netlify/-/gatsby-plugin-netlify-2.1.30.tgz#e6412b399d5182f11bccce06c8dc0aef008d2f5d" + integrity sha512-JOiG9zlPwGSYiDdCqLcnGvAuo3k/bW7IBEqdo3qo+ZDQk515HWdCPuYHfwXXOW4gCUB+5OCxnafOxTCYj7QXbg== dependencies: - "@babel/runtime" "^7.0.0" - fs-extra "^4.0.2" + "@babel/runtime" "^7.7.6" + fs-extra "^8.1.0" kebab-hash "^0.1.2" - lodash "^4.17.14" - webpack-assets-manifest "^3.0.2" + lodash "^4.17.15" + webpack-assets-manifest "^3.1.1" gatsby-plugin-nprogress@^2.1.2: version "2.1.2" @@ -6037,17 +6577,17 @@ gatsby-plugin-nprogress@^2.1.2: "@babel/runtime" "^7.0.0" nprogress "^0.2.0" -gatsby-plugin-page-creator@^2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.1.5.tgz#723fc0392a67978cab649a402ad88f6f06b74e4c" - integrity sha512-nUcsaJAaMy9UQS66QY0Dys6Xx+2CGG2EVyvDQ4NQ713la62jicOU764Bmi5G7sE2QGgpNoBtUQCW+aE6UMGpLQ== +gatsby-plugin-page-creator@^2.1.37, gatsby-plugin-page-creator@^2.1.5: + version "2.1.37" + resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.1.37.tgz#cfdcbbbe6cb9e347a0063714646be156e5959e44" + integrity sha512-EsHDgT4hQx9Zxqf6zUIP9qQh+0Wk1tPyiJtPRADY1jkzwu2dAidJkaUtH4XR8BExhjZ9xYB5uDliSNrGkZg7fw== dependencies: - "@babel/runtime" "^7.0.0" - bluebird "^3.5.0" + "@babel/runtime" "^7.7.6" + bluebird "^3.7.2" fs-exists-cached "^1.0.0" - gatsby-page-utils "^0.0.5" - glob "^7.1.1" - lodash "^4.17.14" + gatsby-page-utils "^0.0.36" + glob "^7.1.6" + lodash "^4.17.15" micromatch "^3.1.10" gatsby-plugin-react-helmet@^3.1.2: @@ -6105,13 +6645,13 @@ gatsby-plugin-typography@^2.3.2: dependencies: "@babel/runtime" "^7.0.0" -gatsby-react-router-scroll@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-2.1.3.tgz#4f1654555da14b4860386fab711b3bac0e177ac5" - integrity sha512-es1J3xISzrjVhvMKhf9GxgVaBKpVne6/Nk05rvHU9ZVv2jn8GjlB/DrGf+Yw0LZU5fiEJ5ePBr+YffnrPDY29A== +gatsby-react-router-scroll@^2.1.19: + version "2.1.19" + resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-2.1.19.tgz#4bac8cb5aaba5e2ad6b589a3d289d39257c3b5da" + integrity sha512-qK6kE48Efzf8zOsmRw6UiZH7VXuv4ti6taGu5je1D9IGDgMpETKXRA0jmKB1up50XQ4WXvyyLASOqWK3UdDNYw== dependencies: - "@babel/runtime" "^7.0.0" - scroll-behavior "^0.9.9" + "@babel/runtime" "^7.7.6" + scroll-behavior "^0.9.10" warning "^3.0.0" gatsby-remark-external-links@^0.0.4: @@ -6171,28 +6711,28 @@ gatsby-source-filesystem@^2.1.6: valid-url "^1.0.9" xstate "^3.1.0" -gatsby-telemetry@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-1.1.7.tgz#dd2a363852ce87990249586e75189e7b05d1f561" - integrity sha512-mVJwkg4kdHGBt1OKlpcDO1gKoRd5oiJHKYR1jGrShXbB8FE4c52Z2Geg0xMKNXCeUbMUEZB78IPGlJ94nnPAag== +gatsby-telemetry@^1.1.46: + version "1.1.46" + resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-1.1.46.tgz#c44d196afa5e15ed7909af9ed5f3d869b684f3cd" + integrity sha512-HFrrZc/mZtzt2DsMc34HZiIEHpaXt1kKcFZC6s3Q3KqkgUweCZMwE7N52jkhGA+c3aFOZU/D+CtyP9dWcrsM/Q== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/runtime" "^7.0.0" - bluebird "^3.5.0" - boxen "^3.1.0" - ci-info "2.0.0" - configstore "^4.0.0" - envinfo "^5.8.1" - fs-extra "^7.0.1" + "@babel/code-frame" "^7.5.5" + "@babel/runtime" "^7.7.6" + bluebird "^3.7.2" + boxen "^4.2.0" + configstore "^5.0.0" + envinfo "^7.5.0" + fs-extra "^8.1.0" + gatsby-core-utils "^1.0.25" git-up "4.0.1" - is-docker "1.1.0" - lodash "^4.17.14" - node-fetch "2.3.0" + is-docker "2.0.0" + lodash "^4.17.15" + node-fetch "2.6.0" resolve-cwd "^2.0.0" - source-map "^0.5.7" + source-map "^0.7.3" stack-trace "^0.0.10" stack-utils "1.0.2" - uuid "3.3.2" + uuid "3.3.3" gatsby-theme-docs-system@^0.2.2: version "0.2.2" @@ -6231,136 +6771,140 @@ gatsby-theme-docs-system@^0.2.2: typography "^0.16.19" webpack "~4.28.4" -gatsby@^2.13.41: - version "2.13.41" - resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-2.13.41.tgz#918e22432b4d487420e4bbf65fbbe1cdd8d3b05e" - integrity sha512-vTPAt4xq2WOqx8EOUA72zUb9joyYiYowK0eBmt4O+HEyDHnLieubO66srTgH0XDsdXKpc1Aivug9oeKgIV5vdQ== +gatsby@^2.18.17: + version "2.18.17" + resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-2.18.17.tgz#43fb4c092b09e76cc9137cfc20c67ba7fdcd755d" + integrity sha512-Zj/LjZwzM0RXoqMmM+6H48IOazmJcuzyVY2yfTi8oYtcQH0F4xIELiDZJkZQb7mttlIsJTX3U1NLCYXPcohWwg== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/core" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/polyfill" "^7.0.0" - "@babel/runtime" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@gatsbyjs/relay-compiler" "2.0.0-printer-fix.2" - "@hapi/joi" "^15.0.0" + "@babel/code-frame" "^7.5.5" + "@babel/core" "^7.7.5" + "@babel/parser" "^7.7.5" + "@babel/polyfill" "^7.7.0" + "@babel/runtime" "^7.7.6" + "@babel/traverse" "^7.7.4" + "@hapi/joi" "^15.1.1" "@mikaelkristiansson/domready" "^1.0.9" "@pieh/friendly-errors-webpack-plugin" "1.7.0-chalk-2" - "@reach/router" "^1.1.1" - address "1.0.3" - autoprefixer "^9.6.0" + "@reach/router" "^1.2.1" + "@typescript-eslint/eslint-plugin" "^2.11.0" + "@typescript-eslint/parser" "^2.11.0" + address "1.1.2" + autoprefixer "^9.7.3" + axios "^0.19.0" babel-core "7.0.0-bridge.0" - babel-eslint "^9.0.0" - babel-loader "^8.0.0" - babel-plugin-add-module-exports "^0.2.1" - babel-plugin-dynamic-import-node "^1.2.0" - babel-plugin-remove-graphql-queries "^2.7.2" - babel-preset-gatsby "^0.2.8" - better-opn "0.1.4" - better-queue "^3.8.6" - bluebird "^3.5.0" + babel-eslint "^10.0.3" + babel-loader "^8.0.6" + babel-plugin-add-module-exports "^0.3.3" + babel-plugin-dynamic-import-node "^2.3.0" + babel-plugin-remove-graphql-queries "^2.7.19" + babel-preset-gatsby "^0.2.26" + better-opn "1.0.0" + better-queue "^3.8.10" + bluebird "^3.7.2" browserslist "3.2.8" - cache-manager "^2.9.0" - cache-manager-fs-hash "^0.0.6" - chalk "^2.3.2" - chokidar "2.1.2" - common-tags "^1.4.0" - compression "^1.7.3" - convert-hrtime "^2.0.0" - copyfiles "^1.2.0" - core-js "^2.5.0" + cache-manager "^2.10.1" + cache-manager-fs-hash "^0.0.7" + chalk "^2.4.2" + chokidar "3.3.0" + common-tags "^1.8.0" + compression "^1.7.4" + convert-hrtime "^3.0.0" + copyfiles "^2.1.1" + core-js "^2.6.11" cors "^2.8.5" - css-loader "^1.0.0" - debug "^3.1.0" - del "^3.0.0" - detect-port "^1.2.1" + css-loader "^1.0.1" + debug "^3.2.6" + del "^5.1.0" + detect-port "^1.3.0" devcert-san "^0.3.3" - dotenv "^4.0.0" - eslint "^5.6.0" - eslint-config-react-app "^3.0.0" - eslint-loader "^2.1.0" - eslint-plugin-flowtype "^2.46.1" - eslint-plugin-graphql "^3.0.3" - eslint-plugin-import "^2.9.0" - eslint-plugin-jsx-a11y "^6.0.3" - eslint-plugin-react "^7.8.2" - event-source-polyfill "^1.0.5" - express "^4.16.3" - express-graphql "^0.7.1" + dotenv "^8.2.0" + eslint "^6.7.2" + eslint-config-react-app "^5.1.0" + eslint-loader "^2.2.1" + eslint-plugin-flowtype "^3.13.0" + eslint-plugin-graphql "^3.1.0" + eslint-plugin-import "^2.19.1" + eslint-plugin-jsx-a11y "^6.2.3" + eslint-plugin-react "^7.17.0" + eslint-plugin-react-hooks "^1.7.0" + event-source-polyfill "^1.0.11" + express "^4.17.1" + express-graphql "^0.9.0" fast-levenshtein "^2.0.6" file-loader "^1.1.11" - flat "^4.0.0" + flat "^4.1.0" fs-exists-cached "1.0.0" - fs-extra "^5.0.0" - gatsby-cli "^2.7.20" - gatsby-core-utils "^1.0.3" - gatsby-graphiql-explorer "^0.2.3" - gatsby-link "^2.2.3" - gatsby-plugin-page-creator "^2.1.5" - gatsby-react-router-scroll "^2.1.3" - gatsby-telemetry "^1.1.7" - glob "^7.1.1" - got "8.0.0" - graphql "^14.1.1" - graphql-compose "^6.3.2" - graphql-playground-middleware-express "^1.7.10" + fs-extra "^8.1.0" + gatsby-cli "^2.8.22" + gatsby-core-utils "^1.0.25" + gatsby-graphiql-explorer "^0.2.31" + gatsby-link "^2.2.27" + gatsby-plugin-page-creator "^2.1.37" + gatsby-react-router-scroll "^2.1.19" + gatsby-telemetry "^1.1.46" + glob "^7.1.6" + got "8.3.2" + graphql "^14.5.8" + graphql-compose "^6.3.7" + graphql-playground-middleware-express "^1.7.12" invariant "^2.2.4" is-relative "^1.0.0" - is-relative-url "^2.0.0" - is-wsl "^1.1.0" - jest-worker "^23.2.0" + is-relative-url "^3.0.0" + is-wsl "^2.1.1" + jest-worker "^24.9.0" json-loader "^0.5.7" json-stringify-safe "^5.0.1" - lodash "^4.17.14" - lokijs "^1.5.7" + lodash "^4.17.15" + lokijs "^1.5.8" md5 "^2.2.1" - md5-file "^3.1.1" + md5-file "^3.2.3" micromatch "^3.1.10" - mime "^2.2.0" - mini-css-extract-plugin "^0.4.0" - mitt "^1.1.2" + mime "^2.4.4" + mini-css-extract-plugin "^0.8.0" + mitt "^1.2.0" mkdirp "^0.5.1" - moment "^2.21.0" + moment "^2.24.0" name-all-modules-plugin "^1.0.1" normalize-path "^2.1.1" null-loader "^0.1.1" - opentracing "^0.14.3" - optimize-css-assets-webpack-plugin "^5.0.1" - parseurl "^1.3.2" + opentracing "^0.14.4" + optimize-css-assets-webpack-plugin "^5.0.3" + parseurl "^1.3.3" physical-cpu-count "^2.0.0" - pnp-webpack-plugin "^1.4.1" - postcss-flexbugs-fixes "^3.0.0" - postcss-loader "^2.1.3" - prop-types "^15.6.1" + pnp-webpack-plugin "^1.5.0" + postcss-flexbugs-fixes "^3.3.1" + postcss-loader "^2.1.6" + prompts "^2.3.0" + prop-types "^15.7.2" raw-loader "^0.5.1" react-dev-utils "^4.2.3" react-error-overlay "^3.0.0" - react-hot-loader "^4.12.5" - redux "^4.0.0" + react-hot-loader "^4.12.18" + redux "^4.0.4" redux-thunk "^2.3.0" - semver "^5.6.0" + semver "^5.7.1" shallow-compare "^1.2.2" sift "^5.1.0" signal-exit "^3.0.2" - slash "^1.0.0" - socket.io "^2.0.3" + slugify "^1.3.6" + socket.io "^2.3.0" stack-trace "^0.0.10" - string-similarity "^1.2.0" - style-loader "^0.21.0" - terser-webpack-plugin "1.2.4" - "true-case-path" "^1.0.3" + string-similarity "^1.2.2" + style-loader "^0.23.1" + terser-webpack-plugin "^1.4.2" + "true-case-path" "^2.2.1" type-of "^2.0.1" - url-loader "^1.0.1" + url-loader "^1.1.2" util.promisify "^1.0.0" - uuid "^3.1.0" - v8-compile-cache "^1.1.0" - webpack "~4.28.4" - webpack-dev-middleware "^3.0.1" - webpack-dev-server "^3.1.14" - webpack-hot-middleware "^2.21.0" - webpack-merge "^4.1.0" - webpack-stats-plugin "^0.1.5" - xstate "^4.3.2" + uuid "^3.3.3" + v8-compile-cache "^1.1.2" + webpack "~4.41.2" + webpack-dev-middleware "^3.7.2" + webpack-dev-server "^3.9.0" + webpack-hot-middleware "^2.25.0" + webpack-merge "^4.2.2" + webpack-stats-plugin "^0.3.0" + xstate "^4.7.2" yaml-loader "^0.5.0" gauge@~2.7.3: @@ -6377,11 +6921,21 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gentype@^3.9.1: + version "3.9.1" + resolved "https://registry.yarnpkg.com/gentype/-/gentype-3.9.1.tgz#8e5f3e0b1bbe9abc7d9332afa5fc278c126a06ac" + integrity sha512-PSkwxSlmjt339gL+t1HSpcBN83zcenVVh66Fgv6GWhe0mObv5T70IZqSLtiRsejWDpNX74Nd5JNtOR2+SmJBOA== + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-own-enumerable-property-symbols@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" @@ -6422,14 +6976,14 @@ get-stream@^2.2.0: object-assign "^4.0.1" pinkie-promise "^2.0.0" -get-stream@^4.0.0: +get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" -get-stream@^5.0.0: +get-stream@^5.0.0, get-stream@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== @@ -6476,10 +7030,10 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" - integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== +glob-parent@^5.0.0, glob-parent@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== dependencies: is-glob "^4.0.1" @@ -6488,10 +7042,10 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -6543,12 +7097,19 @@ global@~4.3.0: min-document "^2.19.0" process "~0.5.1" -globals@^11.1.0, globals@^11.7.0: +globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globby@^10.0.0, globby@^10.0.1: +globals@^12.1.0: + version "12.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" + integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== + dependencies: + type-fest "^0.8.1" + +globby@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== @@ -6627,47 +7188,29 @@ google-closure-compiler@20191111.0.0: google-closure-compiler-osx "^20191111.0.0" google-closure-compiler-windows "^20191111.0.0" -got@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/got/-/got-8.0.0.tgz#57a11f841edc58e3f3eba4b3ac220faf5133770f" - integrity sha512-lqVA9ORcSGfJPHfMXh1RW451aYMP1NyXivpGqGggnfDqNz3QVfMl7MkuEz+dr70gK2X8dhLiS5YzHhCV3/3yOQ== +got@8.3.2, got@^8.3.1, got@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== dependencies: + "@sindresorhus/is" "^0.7.0" cacheable-request "^2.1.1" decompress-response "^3.3.0" duplexer3 "^0.1.4" get-stream "^3.0.0" into-stream "^3.1.0" - is-plain-obj "^1.1.0" is-retry-allowed "^1.1.0" - is-stream "^1.1.0" isurl "^1.0.0-alpha5" lowercase-keys "^1.0.0" mimic-response "^1.0.0" - p-cancelable "^0.3.0" - p-timeout "^1.2.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" pify "^3.0.0" safe-buffer "^5.1.1" timed-out "^4.0.1" url-parse-lax "^3.0.0" url-to-options "^1.0.1" -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - got@^7.0.0, got@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" @@ -6688,43 +7231,37 @@ got@^7.0.0, got@^7.1.0: url-parse-lax "^1.0.0" url-to-options "^1.0.1" -got@^8.3.1, got@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" - integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: - "@sindresorhus/is" "^0.7.0" - cacheable-request "^2.1.1" + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" decompress-response "^3.3.0" duplexer3 "^0.1.4" - get-stream "^3.0.0" - into-stream "^3.1.0" - is-retry-allowed "^1.1.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - mimic-response "^1.0.0" - p-cancelable "^0.4.0" - p-timeout "^2.0.1" - pify "^3.0.0" - safe-buffer "^5.1.1" - timed-out "^4.0.1" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" - url-to-options "^1.0.1" -graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.2.0" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" - integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= -graphql-compose@^6.3.2: - version "6.3.2" - resolved "https://registry.yarnpkg.com/graphql-compose/-/graphql-compose-6.3.2.tgz#0eff6e0f086c934af950db88b90a6667f879c59b" - integrity sha512-2sk4G3F/j7U4OBnPkB/HrE8Cejh8nHIJFBOGcqQvsELHXUHtx4S11zR0OU+J3cMtpE/2visBUGUhEHL9WlUK9A== +graphql-compose@^6.3.7: + version "6.3.8" + resolved "https://registry.yarnpkg.com/graphql-compose/-/graphql-compose-6.3.8.tgz#9f82a85d5001a83adf1f7c4d3b5e5f72c432a062" + integrity sha512-o0/jzQEMIpSjryLKwmD1vGrCubiPxD0LxlGTgWDSu38TBepu2GhugC9gYgTEbtiCZAHPtvkZ90SzzABOWZyQLA== dependencies: graphql-type-json "^0.2.4" object-path "^0.11.4" @@ -6753,7 +7290,7 @@ graphql-playground-html@1.6.12: resolved "https://registry.yarnpkg.com/graphql-playground-html/-/graphql-playground-html-1.6.12.tgz#8b3b34ab6013e2c877f0ceaae478fafc8ca91b85" integrity sha512-yOYFwwSMBL0MwufeL8bkrNDgRE7eF/kTHiwrqn9FiR9KLcNIl1xw9l9a+6yIRZM56JReQOHpbQFXTZn1IuSKRg== -graphql-playground-middleware-express@^1.7.10: +graphql-playground-middleware-express@^1.7.12: version "1.7.12" resolved "https://registry.yarnpkg.com/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.12.tgz#de4b2402a02159b2125561fe38eb378b56cf6d99" integrity sha512-17szgonnVSxWVrgblLRHHLjWnMUONfkULIwSunaMvYx8k5oG3yL86cyGCbHuDFUFkyr2swLhdfYl4mDfDXuvOA== @@ -6772,10 +7309,10 @@ graphql-type-json@^0.2.4: resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.2.4.tgz#545af27903e40c061edd30840a272ea0a49992f9" integrity sha512-/tq02ayMQjrG4oDFDRLLrPk0KvJXue0nVXoItBe7uAdbNXjQUu+HYCBdAmPLQoseVzUKKMzrhq2P/sfI76ON6w== -graphql@^14.1.1: - version "14.4.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.4.0.tgz#e97086acfc0338e4fdc8f7dba519c6b8a6badfd9" - integrity sha512-E55z1oK6e4cGxCqlSsRWytYDPcIUxky3XkbuQUf6TIjCmn6C7CuBJpmkMF1066q95yPAGOZVPTVT7jABKbRFSA== +graphql@^14.5.8: + version "14.5.8" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.5.8.tgz#504f3d3114cb9a0a3f359bbbcf38d9e5bf6a6b3c" + integrity sha512-MMwmi0zlVLQKLdGiMfWkgQD7dY/TUKt4L+zgJ/aR0Howebod3aNgP5JkgvAULiR2HPVZaP2VEElqtdidHweLkg== dependencies: iterall "^1.2.2" @@ -6864,15 +7401,20 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbol-support-x@^1.4.1: version "1.4.2" resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== has-to-string-tag-x@^1.2.0: version "1.4.1" @@ -6917,6 +7459,11 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + has@^1.0.0, has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -7039,11 +7586,18 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: +hosted-git-info@^2.1.4: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== +hosted-git-info@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.2.tgz#8b7e3bd114b59b51786f8bade0f39ddc80275a97" + integrity sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw== + dependencies: + lru-cache "^5.1.1" + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -7103,6 +7657,11 @@ http-cache-semantics@3.8.1: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== +http-cache-semantics@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5" + integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew== + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -7119,7 +7678,7 @@ http-errors@1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-errors@1.7.3, http-errors@^1.7.1, http-errors@~1.7.2: +http-errors@1.7.3, http-errors@^1.7.3, http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== @@ -7145,7 +7704,7 @@ http-errors@~1.6.2: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= -http-proxy-middleware@^0.19.1: +http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== @@ -7186,20 +7745,25 @@ https-proxy-agent@^2.2.1: agent-base "^4.1.0" debug "^3.1.0" -husky@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/husky/-/husky-3.0.1.tgz#06152c28e129622b05fa09c494209de8cf2dfb59" - integrity sha512-PXBv+iGKw23GHUlgELRlVX9932feFL407/wHFwtsGeArp0dDM4u+/QusSQwPKxmNgjpSL+ustbOdQ2jetgAZbA== +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +husky@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/husky/-/husky-3.1.0.tgz#5faad520ab860582ed94f0c1a77f0f04c90b57c0" + integrity sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ== dependencies: chalk "^2.4.2" + ci-info "^2.0.0" cosmiconfig "^5.2.1" execa "^1.0.0" get-stdin "^7.0.0" - is-ci "^2.0.0" opencollective-postinstall "^2.0.2" pkg-dir "^4.2.0" - please-upgrade-node "^3.1.1" - read-pkg "^5.1.1" + please-upgrade-node "^3.2.0" + read-pkg "^5.2.0" run-node "^1.0.0" slash "^3.0.0" @@ -7294,11 +7858,6 @@ imagemin@^6.0.0: pify "^4.0.1" replace-ext "^1.0.0" -immutable@~3.7.6: - version "3.7.6" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" - integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= - import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -7314,10 +7873,10 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" - integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -7364,6 +7923,11 @@ indent-string@^3.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -7374,6 +7938,11 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -7410,28 +7979,28 @@ ink-spinner@^3.0.1: cli-spinners "^1.0.0" prop-types "^15.5.10" -ink@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/ink/-/ink-2.3.0.tgz#222136be17bb72fc742e19090483e7e0e7dc3690" - integrity sha512-931rgXHAS3hM++8ygWPOBeHOFwTzHh3pDAVZtiBVOUH6tVvJijym43ODUy22ySo2NwYUFeR/Zj3xuWzBEKMiHw== - dependencies: - "@types/react" "^16.8.6" - arrify "^1.0.1" - auto-bind "^2.0.0" - chalk "^2.4.1" - cli-cursor "^2.1.0" - cli-truncate "^1.1.0" +ink@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/ink/-/ink-2.6.0.tgz#04acefbed32f6ef9ed20512c51ec8b8e09a890c5" + integrity sha512-nD/wlSuB6WnFsFB0nUcOJdy28YvvDer3eo+gezjvZqojGA4Rx5sQpacvN//Aai83DRgwrRTyKBl5aciOcfP3zQ== + dependencies: + ansi-escapes "^4.2.1" + arrify "^2.0.1" + auto-bind "^3.0.0" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-truncate "^2.0.0" is-ci "^2.0.0" lodash.throttle "^4.1.1" log-update "^3.0.0" prop-types "^15.6.2" - react-reconciler "^0.20.0" - scheduler "^0.13.2" + react-reconciler "^0.24.0" + scheduler "^0.18.0" signal-exit "^3.0.2" - slice-ansi "^1.0.0" - string-length "^2.0.0" - widest-line "^2.0.0" - wrap-ansi "^5.0.0" + slice-ansi "^3.0.0" + string-length "^3.1.0" + widest-line "^3.1.0" + wrap-ansi "^6.2.0" yoga-layout-prebuilt "^1.9.3" inline-style-parser@0.1.1: @@ -7459,22 +8028,22 @@ inquirer@3.3.0: strip-ansi "^4.0.0" through "^2.3.6" -inquirer@^6.2.0, inquirer@^6.2.2: - version "6.4.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.4.1.tgz#7bd9e5ab0567cd23b41b0180b68e0cfa82fc3c0b" - integrity sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw== +inquirer@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.2.tgz#b39b205b95c9424839a1fd991d60426cf9bbc0e9" + integrity sha512-cZGvHaHwcR9E3xK9EGO5pHKELU+yaeJO7l2qGKIbqk4bCuDuAn15LCoUTS2nSkfv9JybFlnAGrOcVpCDZZOLhw== dependencies: - ansi-escapes "^3.2.0" + ansi-escapes "^4.2.1" chalk "^2.4.2" - cli-cursor "^2.1.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.11" - mute-stream "0.0.7" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" + rxjs "^6.5.3" + string-width "^4.1.0" strip-ansi "^5.1.0" through "^2.3.6" @@ -7506,11 +8075,6 @@ invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" @@ -7536,6 +8100,11 @@ is-absolute-url@^2.0.0: resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= +is-absolute-url@^3.0.0, is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -7568,6 +8137,11 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -7585,15 +8159,22 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^1.1.4, is-buffer@^1.1.5, is-buffer@~1.1.1: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.0, is-buffer@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" - integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== +is-buffer@^2.0.0, is-buffer@^2.0.2, is-buffer@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== is-builtin-module@^3.0.0: version "3.0.0" @@ -7602,17 +8183,10 @@ is-builtin-module@^3.0.0: dependencies: builtin-modules "^3.0.0" -is-callable@^1.1.3, is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== - -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== - dependencies: - ci-info "^1.5.0" +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== is-ci@^2.0.0: version "2.0.0" @@ -7687,10 +8261,10 @@ is-directory@^0.3.1: resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= -is-docker@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-1.1.0.tgz#f04374d4eee5310e9a8e113bf1495411e46176a1" - integrity sha1-8EN01O7lMQ6ajhE78UlUEeRhdqE= +is-docker@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" @@ -7733,6 +8307,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-function@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" @@ -7757,7 +8336,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -7806,10 +8385,10 @@ is-natural-number@^4.0.1: resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= +is-npm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-3.0.0.tgz#ec9147bfb629c43f494cf67936a961edec7e8053" + integrity sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA== is-number@^3.0.0: version "3.0.0" @@ -7828,6 +8407,11 @@ is-obj@^1.0.0, is-obj@^1.0.1: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + is-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" @@ -7840,22 +8424,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= - -is-path-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz#2e0c7e463ff5b7a0eb60852d851a6809347a124c" - integrity sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw== - -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== - dependencies: - is-path-inside "^1.0.0" +is-path-cwd@^2.0.0, is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== is-path-in-cwd@^2.0.0: version "2.1.0" @@ -7878,6 +8450,11 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" +is-path-inside@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" + integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== + is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -7905,11 +8482,6 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= - is-reference@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.3.tgz#e99059204b66fdbe09305cfca715a29caa5c8a51" @@ -7917,12 +8489,12 @@ is-reference@^1.1.2: dependencies: "@types/estree" "0.0.39" -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= +is-regex@^1.0.4, is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== dependencies: - has "^1.0.1" + has "^1.0.3" is-regexp@^1.0.0: version "1.0.0" @@ -7936,6 +8508,13 @@ is-relative-url@^2.0.0: dependencies: is-absolute-url "^2.0.0" +is-relative-url@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-relative-url/-/is-relative-url-3.0.0.tgz#f623c8e26baa5bd3742b3b7ec074f50f3b45b3f3" + integrity sha512-U1iSYRlY2GIMGuZx7gezlB5dp1Kheaym7zKzO1PV06mOihiWTXejLwm4poEJysPyXF+HtK/BEd0DVlcCh30pEA== + dependencies: + is-absolute-url "^3.0.0" + is-relative@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" @@ -7989,7 +8568,7 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.0" -is-typedarray@~1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -8045,6 +8624,16 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== + +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -8199,15 +8788,15 @@ jest-config@^24.8.0: pretty-format "^24.8.0" realpath-native "^1.1.0" -jest-diff@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz#146435e7d1e3ffdf293d53ff97e193f1d1546172" - integrity sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g== +jest-diff@^24.3.0, jest-diff@^24.8.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== dependencies: chalk "^2.0.1" - diff-sequences "^24.3.0" - jest-get-type "^24.8.0" - pretty-format "^24.8.0" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" jest-docblock@^24.3.0: version "24.3.0" @@ -8250,10 +8839,10 @@ jest-environment-node@^24.8.0: jest-mock "^24.8.0" jest-util "^24.8.0" -jest-get-type@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz#a7440de30b651f5a70ea3ed7ff073a32dfe646fc" - integrity sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ== +jest-get-type@^24.8.0, jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== jest-haste-map@^24.8.0: version "24.8.0" @@ -8274,6 +8863,25 @@ jest-haste-map@^24.8.0: optionalDependencies: fsevents "^1.2.7" +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + jest-jasmine2@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz#a9c7e14c83dd77d8b15e820549ce8987cc8cd898" @@ -8327,6 +8935,20 @@ jest-message-util@^24.8.0: slash "^2.0.0" stack-utils "^1.0.1" +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + jest-mock@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz#2f9d14d37699e863f1febf4e4d5a33b7fdbbde56" @@ -8334,6 +8956,13 @@ jest-mock@^24.8.0: dependencies: "@jest/types" "^24.8.0" +jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + jest-pnp-resolver@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" @@ -8344,6 +8973,11 @@ jest-regex-util@^24.3.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== +jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + jest-resolve-dependencies@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz#19eec3241f2045d3f990dba331d0d7526acff8e0" @@ -8423,6 +9057,11 @@ jest-serializer@^24.4.0: resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q== +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + jest-snapshot@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz#3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6" @@ -8459,6 +9098,24 @@ jest-util@^24.8.0: slash "^2.0.0" source-map "^0.6.0" +jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + jest-validate@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz#624c41533e6dfe356ffadc6e2423a35c2d3b4849" @@ -8484,19 +9141,12 @@ jest-watcher@^24.8.0: jest-util "^24.8.0" string-length "^2.0.0" -jest-worker@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" - integrity sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk= - dependencies: - merge-stream "^1.0.1" - -jest-worker@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" - integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== dependencies: - merge-stream "^1.0.1" + merge-stream "^2.0.0" supports-color "^6.1.0" jest@^24.3.1: @@ -8538,7 +9188,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@^3.10.0, js-yaml@^3.11.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.5.2: +js-yaml@^3.10.0, js-yaml@^3.11.0, js-yaml@^3.13.1, js-yaml@^3.5.2: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -8633,6 +9283,13 @@ json3@^3.3.2: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== +json5@2.x, json5@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" + integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + dependencies: + minimist "^1.2.0" + json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -8640,13 +9297,6 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== - dependencies: - minimist "^1.2.0" - jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -8669,10 +9319,10 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.0.tgz#e2bade6d09c8ef9d5f6b9ff2ace67b2cdbc7e370" - integrity sha512-yAmhGSzR7TsD0OQpu1AGLz8Bx84cxMqtgoJrufomY6BlveEDlREhvu1rea21936xbe5tlUh7IPda82m5ae0H8Q== +jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" + integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== dependencies: array-includes "^3.0.3" object.assign "^4.1.0" @@ -8691,6 +9341,13 @@ keyv@3.0.0: dependencies: json-buffer "3.0.0" +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -8720,7 +9377,7 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== -kleur@^3.0.2: +kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== @@ -8733,19 +9390,12 @@ last-call-webpack-plugin@^3.0.0: lodash "^4.17.5" webpack-sources "^1.1.0" -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= - dependencies: - package-json "^4.0.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= +latest-version@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== dependencies: - invert-kv "^1.0.0" + package-json "^6.3.0" lcid@^2.0.0: version "2.0.0" @@ -8759,11 +9409,16 @@ left-pad@^1.3.0: resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== -leven@^2.0.0, leven@^2.1.0: +leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -8777,10 +9432,10 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -lint-staged@^9.2.1: - version "9.2.1" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.2.1.tgz#57fc5947611604d5a32e478734a13f3e4687f646" - integrity sha512-3lGgJfBddCy/WndKdNko+uJbwyYjBD1k+V+SA+phBYWzH265S95KQya/Wln/UL+hOjc7NcjtFYVCUWuAcqYHhg== +lint-staged@^9.5.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.5.0.tgz#290ec605252af646d9b74d73a0fa118362b05a33" + integrity sha512-nawMob9cb/G1J98nb8v3VC/E8rcX1rryUYXVZ69aT9kde6YWX+uvNOEHY5yf2gcWcTJGiD0kqXmCnS3oD75GIA== dependencies: chalk "^2.4.2" commander "^2.20.0" @@ -8792,6 +9447,7 @@ lint-staged@^9.2.1: listr "^0.14.3" log-symbols "^3.0.0" micromatch "^4.0.2" + normalize-path "^3.0.0" please-upgrade-node "^3.1.1" string-argv "^0.3.0" stringify-object "^3.3.0" @@ -8893,7 +9549,7 @@ loader-fs-cache@^1.0.0: find-cache-dir "^0.1.1" mkdirp "0.5.1" -loader-runner@^2.3.0: +loader-runner@^2.3.0, loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== @@ -9012,7 +9668,7 @@ lodash.maxby@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.maxby/-/lodash.maxby-4.6.0.tgz#082240068f3c7a227aa00a8380e4f38cf0786e3d" integrity sha1-CCJABo88eiJ6oAqDgOTzjPB4bj0= -lodash.memoize@^4.1.2: +lodash.memoize@4.x, lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= @@ -9057,12 +9713,17 @@ lodash.toarray@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= +lodash.unescape@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.11.1, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: +lodash@^4.11.1, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -9107,15 +9768,15 @@ logalot@^2.0.0, logalot@^2.1.0: figures "^1.3.5" squeak "^1.0.0" -loglevel@^1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280" - integrity sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA== +loglevel@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" + integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== -lokijs@^1.5.7: - version "1.5.7" - resolved "https://registry.yarnpkg.com/lokijs/-/lokijs-1.5.7.tgz#3bbeb5c2dbffebd78d035bac82c7c4e6055870f0" - integrity sha512-2SqUV6JH4f15Z5/7LVsyadSUwHhZppxhujgy/VhVqiRYMGt5oaocb7fV/3JGjHJ6rTuEIajnpTLGRz9cJW/c3g== +lokijs@^1.5.8: + version "1.5.8" + resolved "https://registry.yarnpkg.com/lokijs/-/lokijs-1.5.8.tgz#9296f288edb2147389ec692fc972c428c59179d1" + integrity sha512-D8E3TBrY35o1ELnonp2MF8b3wKu2tVNl2TqRjvS+95oPMMe7OoIAxNY1qr+5BEZwnWn2V4ErAjVt000DonM+FA== longest-streak@^1.0.0: version "1.0.0" @@ -9139,7 +9800,7 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loud-rejection@^1.0.0, loud-rejection@^1.2.0: +loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= @@ -9147,6 +9808,14 @@ loud-rejection@^1.0.0, loud-rejection@^1.2.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +loud-rejection@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-2.2.0.tgz#4255eb6e9c74045b0edc021fa7397ab655a8517c" + integrity sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ== + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.2" + lower-case-first@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" @@ -9164,11 +9833,16 @@ lowercase-keys@1.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= -lowercase-keys@^1.0.0: +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + lpad-align@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.2.tgz#21f600ac1c3095c3c6e497ee67271ee08481fe9e" @@ -9202,18 +9876,20 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -ltcdr@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ltcdr/-/ltcdr-2.2.1.tgz#5ab87ad1d4c1dab8e8c08bbf037ee0c1902287cf" - integrity sha1-Wrh60dTB2rjowIu/A37gwZAih88= - -magic-string@0.25.4, magic-string@^0.25.2, magic-string@^0.25.3: +magic-string@0.25.4: version "0.25.4" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.4.tgz#325b8a0a79fc423db109b77fd5a19183b7ba5143" integrity sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw== dependencies: sourcemap-codec "^1.4.4" +magic-string@^0.25.0, magic-string@^0.25.2, magic-string@^0.25.3: + version "0.25.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.5.tgz#694fa8c6b9a51d83cc4a72c5b6883a7cfa890e40" + integrity sha512-vIO/BOm9odBHBAGwv0gZPLJeO9IpwliiIc0uPeAW93rrFMJ/R3M665IAEfOU/IW3kD4S9AtEn76lfTn1Yif+9A== + dependencies: + sourcemap-codec "^1.4.4" + make-dir@^1.0.0, make-dir@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -9236,6 +9912,11 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" +make-error@1.x: + version "1.3.5" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" + integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -9243,6 +9924,11 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -9282,7 +9968,7 @@ markdown-table@^1.1.0: resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== -md5-file@^3.1.1: +md5-file@^3.1.1, md5-file@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-3.2.3.tgz#f9bceb941eca2214a4c0727f5e700314e770f06f" integrity sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw== @@ -9390,13 +10076,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - mem@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" @@ -9452,13 +10131,6 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -9526,7 +10198,7 @@ mime@1.6.0, mime@^1.3.4: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.0.3, mime@^2.2.0, mime@^2.3.1, mime@^2.4.2: +mime@^2.0.3, mime@^2.2.0, mime@^2.3.1, mime@^2.4.4: version "2.4.4" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== @@ -9541,7 +10213,7 @@ mimic-fn@^2.0.0, mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0: +mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== @@ -9553,12 +10225,13 @@ min-document@^2.19.0: dependencies: dom-walk "^0.1.0" -mini-css-extract-plugin@^0.4.0: - version "0.4.5" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz#c99e9e78d54f3fa775633aee5933aeaa4e80719a" - integrity sha512-dqBanNfktnp2hwL2YguV9Jh91PFX7gu7nRLs4TGsbAfAG6WOtlynFRYzwDwmmeSb5uIwHo9nx1ta0f7vAZVp2w== +mini-css-extract-plugin@^0.8.0: + version "0.8.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz#a875e169beb27c88af77dd962771c9eedc3da161" + integrity sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw== dependencies: loader-utils "^1.1.0" + normalize-url "1.9.1" schema-utils "^1.0.0" webpack-sources "^1.1.0" @@ -9637,10 +10310,10 @@ mississippi@^3.0.0: stream-each "^1.1.0" through2 "^2.0.0" -mitt@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.1.3.tgz#528c506238a05dce11cd914a741ea2cc332da9b8" - integrity sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA== +mitt@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" + integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== mixin-deep@^1.2.0: version "1.3.1" @@ -9650,7 +10323,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.1, mkdirp@0.x, mkdirp@^0.5, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -9664,7 +10337,7 @@ modularscale@^1.0.2: dependencies: lodash.isnumber "^3.0.0" -moment@^2.21.0: +moment@^2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== @@ -9718,7 +10391,7 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -mute-stream@~0.0.4: +mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== @@ -9774,7 +10447,7 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0: +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== @@ -9808,7 +10481,7 @@ node-abi@^2.7.0: dependencies: semver "^5.4.1" -node-emoji@^1.6.1, node-emoji@^1.8.1: +node-emoji@^1.10.0, node-emoji@^1.8.1: version "1.10.0" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== @@ -9825,10 +10498,10 @@ node-fetch@2.1.2: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= -node-fetch@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" - integrity sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA== +node-fetch@2.6.0, node-fetch@^2.2.0, node-fetch@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== node-fetch@^1.0.1: version "1.7.3" @@ -9838,22 +10511,17 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" -node-fetch@^2.2.0, node-fetch@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - -node-forge@0.7.5: - version "0.7.5" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" - integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-libs-browser@^2.0.0: +node-libs-browser@^2.0.0, node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== @@ -9898,6 +10566,11 @@ node-notifier@^5.2.1: shellwords "^0.1.1" which "^1.3.0" +node-object-hash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-2.0.0.tgz#9971fcdb7d254f05016bd9ccf508352bee11116b" + integrity sha512-VZR0zroAusy1ETZMZiGeLkdu50LGjG5U1KHZqTruqtTyQ2wfWhHG2Ow4nsUbfTFGlaREgNHcCWoM/OzEm6p+NQ== + node-pre-gyp@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" @@ -9914,12 +10587,12 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.23: - version "1.1.23" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.23.tgz#de7409f72de044a2fa59c097f436ba89c39997f0" - integrity sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w== +node-releases@^1.1.44: + version "1.1.44" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.44.tgz#cd66438a6eb875e3eb012b6a12e48d9f4326ffd7" + integrity sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw== dependencies: - semver "^5.3.0" + semver "^6.3.0" noms@0.0.0: version "0.0.0" @@ -9959,7 +10632,7 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -9969,6 +10642,16 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + normalize-url@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" @@ -9983,6 +10666,11 @@ normalize-url@^3.0.0, normalize-url@^3.3.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" @@ -10033,6 +10721,13 @@ npm-run-path@^3.0.0: dependencies: path-key "^3.0.0" +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -10060,11 +10755,6 @@ null-loader@^0.1.1: resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-0.1.1.tgz#17be9abfcd3ff0e1512f6fc4afcb1f5039378fae" integrity sha1-F76av80/8OFRL2/Er8sfUDk3j64= -nullthrows@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" @@ -10109,7 +10799,17 @@ object-hash@^1.1.4: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== -object-keys@^1.0.11, object-keys@^1.0.12: +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-is@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -10146,15 +10846,15 @@ object.entries@^1.1.0: function-bind "^1.1.1" has "^1.0.3" -object.fromentries@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" - integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA== +object.fromentries@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== dependencies: - define-properties "^1.1.2" - es-abstract "^1.11.0" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" - has "^1.0.1" + has "^1.0.3" object.getownpropertydescriptors@^2.0.3: version "2.0.3" @@ -10224,15 +10924,22 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +open@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + opencollective-postinstall@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== -opentracing@^0.14.3: - version "0.14.3" - resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.3.tgz#23e3ad029fa66a653926adbe57e834469f8550aa" - integrity sha1-I+OtAp+mamU5Jq2+V+g0Rp+FUKo= +opentracing@^0.14.4: + version "0.14.4" + resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.4.tgz#a113408ea740da3a90fde5b3b0011a375c2e4268" + integrity sha512-nNnZDkUNExBwEpb7LZaeMeQgvrlO8l4bgY/LvGNZCR0xG/dGWqHqjKrAmR5GUoYo0FIz38kxasvA1aevxWs2CA== opn@5.1.0: version "5.1.0" @@ -10241,7 +10948,7 @@ opn@5.1.0: dependencies: is-wsl "^1.1.0" -opn@^5.4.0, opn@^5.5.0: +opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== @@ -10256,25 +10963,25 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optimize-css-assets-webpack-plugin@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159" - integrity sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A== +optimize-css-assets-webpack-plugin@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== dependencies: - cssnano "^4.1.0" + cssnano "^4.1.10" last-call-webpack-plugin "^3.0.0" -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= +optionator@^0.8.1, optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" - fast-levenshtein "~2.0.4" + fast-levenshtein "~2.0.6" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" - wordwrap "~1.0.0" + word-wrap "~1.2.3" original@>=0.0.5, original@^1.0.0: version "1.0.2" @@ -10305,15 +11012,6 @@ os-homedir@^2.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-2.0.0.tgz#a0c76bb001a8392a503cbd46e7e650b3423a923c" integrity sha512-saRNz0DSC5C/I++gFIaJTXoFJMRwiP5zHar5vV3xQ2TkgEw6hDCcU5F272JjUylpiVgBrZNQHnfjkLabTfb92Q== -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - os-locale@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -10346,6 +11044,11 @@ p-cancelable@^0.4.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -10434,16 +11137,18 @@ p-map-series@^1.0.0: dependencies: p-reduce "^1.0.0" -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== - p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + p-pipe@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" @@ -10468,7 +11173,7 @@ p-retry@^3.0.1: dependencies: retry "^0.12.0" -p-timeout@^1.1.1, p-timeout@^1.2.0: +p-timeout@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= @@ -10492,15 +11197,15 @@ p-try@^2.0.0, p-try@^2.1.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" pako@^1.0.5, pako@~1.0.5: version "1.0.10" @@ -10688,7 +11393,7 @@ parseuri@0.0.5: dependencies: better-assert "~1.0.0" -parseurl@^1.3.2, parseurl@~1.3.2, parseurl@~1.3.3: +parseurl@^1.3.3, parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -10755,10 +11460,10 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-key@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.0.tgz#99a10d870a803bdd5ee6f0470e58dfcd2f9a54d3" - integrity sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg== +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: version "1.0.6" @@ -10829,10 +11534,10 @@ physical-cpu-count@^2.0.0: resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660" integrity sha1-GN4vl+S/epVRrXURlCtUlverpmA= -picomatch@^2.0.5: - version "2.0.7" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" - integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== +picomatch@^2.0.4, picomatch@^2.0.5: + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== pidtree@^0.3.0: version "0.3.0" @@ -10901,17 +11606,17 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^4.2.0: +pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" -please-upgrade-node@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" - integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ== +please-upgrade-node@^3.1.1, please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== dependencies: semver-compare "^1.0.0" @@ -10935,21 +11640,21 @@ pngquant-bin@^5.0.0: execa "^0.10.0" logalot "^2.0.0" -pnp-webpack-plugin@^1.4.1: +pnp-webpack-plugin@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz#62a1cd3068f46d564bb33c56eb250e4d586676eb" integrity sha512-jd9olUr9D7do+RN8Wspzhpxhgp1n6Vd0NtQ4SFkmIACZoEL1nkyAdW9Ygrinjec0vgDcWjscFQQ1gDW8rsfKTg== dependencies: ts-pnp "^1.1.2" -portfinder@^1.0.20: - version "1.0.20" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" - integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw== +portfinder@^1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" posix-character-classes@^0.1.0: version "0.1.1" @@ -11013,7 +11718,7 @@ postcss-discard-overridden@^4.0.1: dependencies: postcss "^7.0.0" -postcss-flexbugs-fixes@^3.0.0: +postcss-flexbugs-fixes@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.3.1.tgz#0783cc7212850ef707f97f8bc8b6fb624e00c75d" integrity sha512-9y9kDDf2F9EjKX6x9ueNa5GARvsUbXw4ezH8vXItXHwKzljbu8awP7t5dCaabKYm18Vs1lo5bKQcnc0HkISt+w== @@ -11028,7 +11733,7 @@ postcss-load-config@^2.0.0: cosmiconfig "^5.0.0" import-cwd "^2.0.0" -postcss-loader@^2.1.3: +postcss-loader@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.6.tgz#1d7dd7b17c6ba234b9bed5af13e0bea40a42d740" integrity sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg== @@ -11283,6 +11988,11 @@ postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== +postcss-value-parser@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" + integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== + postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" @@ -11292,10 +12002,10 @@ postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.23: source-map "^0.6.1" supports-color "^5.4.0" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.16, postcss@^7.0.5: - version "7.0.17" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" - integrity sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ== +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.23, postcss@^7.0.5: + version "7.0.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" + integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -11335,7 +12045,7 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.1: +prepend-http@^1.0.0, prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= @@ -11345,10 +12055,10 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -prettier@^1.16.4, prettier@^1.18.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" - integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== +prettier@^1.16.4, prettier@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== pretty-bytes@^4.0.2: version "4.0.2" @@ -11368,12 +12078,12 @@ pretty-error@^2.1.1: renderkid "^2.0.1" utila "~0.4" -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== +pretty-format@^24.8.0, pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" ansi-regex "^4.0.0" ansi-styles "^3.2.0" react-is "^16.8.4" @@ -11432,13 +12142,13 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prompts@^2.0.1, prompts@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.1.0.tgz#bf90bc71f6065d255ea2bdc0fe6520485c1b45db" - integrity sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg== +prompts@^2.0.1, prompts@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4" + integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg== dependencies: - kleur "^3.0.2" - sisteransi "^1.0.0" + kleur "^3.0.3" + sisteransi "^1.0.3" prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" @@ -11564,6 +12274,14 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + query-string@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" @@ -11627,7 +12345,7 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@^2.3.3: +raw-body@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== @@ -11642,7 +12360,7 @@ raw-loader@^0.5.1: resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" integrity sha1-DD0L6u2KAclm2Xh793goElKpeao= -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: +rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -11676,15 +12394,15 @@ react-dev-utils@^4.2.3: strip-ansi "3.0.1" text-table "0.2.0" -react-dom@^16.8.6: - version "16.8.6" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" - integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== +react-dom@^16.12.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.12.0.tgz#0da4b714b8d13c2038c9396b54a92baea633fe11" + integrity sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.13.6" + scheduler "^0.18.0" react-error-overlay@^3.0.0: version "3.0.0" @@ -11706,10 +12424,10 @@ react-helmet@^5.2.1: react-fast-compare "^2.0.2" react-side-effect "^1.1.0" -react-hot-loader@^4.12.5: - version "4.12.9" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.12.9.tgz#cb2a85731ca38366b0e9e28e7fd1dbd7dcacc1ef" - integrity sha512-lWT3JpWUN7nGHSoI9c4MV+42ov79bd8aqwDzhoyKev3owIh+hbEivT6Mb81lCV6tWuqm9trKo2/Th2/YDhFCdw== +react-hot-loader@^4.12.18: + version "4.12.18" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.12.18.tgz#a9029e34af2690d76208f9a35189d73c2dfea6a7" + integrity sha512-qYD0Qi9lIbg9jLyfmodfqvAQqCBsoPKxAhca8Nxvy2/2pO5Q9r2kM28jN0bbbSnhwK8dJ7FjsfVtXKOxMW+bqw== dependencies: fast-levenshtein "^2.0.6" global "^4.3.0" @@ -11730,15 +12448,15 @@ react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== -react-reconciler@^0.20.0: - version "0.20.4" - resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.20.4.tgz#3da6a95841592f849cb4edd3d38676c86fd920b2" - integrity sha512-kxERc4H32zV2lXMg/iMiwQHOtyqf15qojvkcZ5Ja2CPkjVohHw9k70pdDBwrnQhLVetUJBSYyqU3yqrlVTOajA== +react-reconciler@^0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.24.0.tgz#5a396b2c2f5efe8554134a5935f49f546723f2dd" + integrity sha512-gAGnwWkf+NOTig9oOowqid9O0HjTDC+XVGBCAmJYYJ2A2cN/O4gDdIuuUQjv8A4v6GDwVfJkagpBBLW5OW9HSw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.13.6" + scheduler "^0.18.0" react-side-effect@^1.1.0: version "1.1.5" @@ -11753,15 +12471,14 @@ react-typography@^0.16.19: resolved "https://registry.yarnpkg.com/react-typography/-/react-typography-0.16.19.tgz#5736b47961dcf6b9605b6fa38d41980db2588e28" integrity sha512-kV2qLEsdm0x9P4YXQEDVc88tDb4Vg0h/vdVZGgbqaRn8ERvNzV76JHUeOby3vvcUYU5MPd5Kz5DPH9Bhp4I/iw== -react@^16.8.4, react@^16.8.6: - version "16.8.6" - resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" - integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== +react@^16.12.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.12.0.tgz#0c0a9c6a142429e3614834d5a778e18aa78a0b83" + integrity sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.13.6" read-chunk@^3.0.0: version "3.2.0" @@ -11822,7 +12539,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -read-pkg@^5.1.1: +read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== @@ -11880,6 +12597,13 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" + integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== + dependencies: + picomatch "^2.0.4" + realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" @@ -11914,18 +12638,18 @@ redux-thunk@^2.3.0: resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== -redux@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5" - integrity sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg== +redux@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" + integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== dependencies: loose-envify "^1.4.0" symbol-observable "^1.2.0" -regenerate-unicode-properties@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz#7b38faa296252376d363558cfbda90c9ce709662" - integrity sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ== +regenerate-unicode-properties@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== dependencies: regenerate "^1.4.0" @@ -11964,16 +12688,24 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp-tree@^0.1.6: - version "0.1.10" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz#d837816a039c7af8a8d64d7a7c3cf6a1d93450bc" - integrity sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ== +regexp.prototype.flags@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" + integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== + regexpu-core@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" @@ -11983,32 +12715,32 @@ regexpu-core@^1.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" - integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== +regexpu-core@^4.5.4, regexpu-core@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" + integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== dependencies: regenerate "^1.4.0" - regenerate-unicode-properties "^8.0.2" + regenerate-unicode-properties "^8.1.0" regjsgen "^0.5.0" regjsparser "^0.6.0" unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.1.0" -registry-auth-token@^3.0.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" - integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== +registry-auth-token@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.0.0.tgz#30e55961eec77379da551ea5c4cf43cbf03522be" + integrity sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw== dependencies: - rc "^1.1.6" + rc "^1.2.8" safe-buffer "^5.0.1" -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== dependencies: - rc "^1.0.1" + rc "^1.2.8" regjsgen@^0.2.0: version "0.2.0" @@ -12034,14 +12766,6 @@ regjsparser@^0.6.0: dependencies: jsesc "~0.5.0" -relay-runtime@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-2.0.0.tgz#0e42df90365cc69f104f7e4b20fdcf975f5a9c0b" - integrity sha512-o/LPFHTI6+3FLJXM3Ec4N6hzkKYILVHYRJThNX0UQlMnqjTVPR6NO4qFE2QzzEiUS+lys+qfnvBzSmNbSh1zWQ== - dependencies: - "@babel/runtime" "^7.0.0" - fbjs "^1.0.0" - remark-emoji@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-2.0.2.tgz#49c134021132c192ee4cceed1988ec9b8ced7eb8" @@ -12314,14 +13038,21 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" - integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== +resolve@1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" + integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" -responselike@1.0.2: +resolve@1.x, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.1.tgz#9e018c540fcf0c427d678b9931cbf45e984bcaff" + integrity sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg== + dependencies: + path-parse "^1.0.6" + +responselike@1.0.2, responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= @@ -12336,6 +13067,14 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -12401,13 +13140,20 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.0, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" +rimraf@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b" + integrity sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -12424,36 +13170,6 @@ rollup-plugin-babel@^4.3.3: "@babel/helper-module-imports" "^7.0.0" rollup-pluginutils "^2.8.1" -rollup-plugin-buble@^0.19.8: - version "0.19.8" - resolved "https://registry.yarnpkg.com/rollup-plugin-buble/-/rollup-plugin-buble-0.19.8.tgz#f9232e2bb62a7573d04f9705c1bd6f02c2a02c6a" - integrity sha512-8J4zPk2DQdk3rxeZvxgzhHh/rm5nJkjwgcsUYisCQg1QbT5yagW+hehYEW7ZNns/NVbDCTv4JQ7h4fC8qKGOKw== - dependencies: - buble "^0.19.8" - rollup-pluginutils "^2.3.3" - -rollup-plugin-commonjs@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" - integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== - dependencies: - estree-walker "^0.6.1" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-node-resolve@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" - integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - dependencies: - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.11.1" - rollup-pluginutils "^2.8.1" - rollup-plugin-terser@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.1.3.tgz#5f4c4603b12b4f8d093f4b6f31c9aa5eba98a223" @@ -12465,17 +13181,35 @@ rollup-plugin-terser@^5.1.3: serialize-javascript "^2.1.2" terser "^4.1.0" -rollup-pluginutils@^2.3.3, rollup-pluginutils@^2.8.1: +rollup-plugin-typescript2@^0.25.3: + version "0.25.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.25.3.tgz#a5fb2f0f85488789334ce540abe6c7011cbdf40f" + integrity sha512-ADkSaidKBovJmf5VBnZBZe+WzaZwofuvYdzGAKTN/J4hN7QJCFYAq7IrH9caxlru6T5qhX41PNFS1S4HqhsGQg== + dependencies: + find-cache-dir "^3.0.0" + fs-extra "8.1.0" + resolve "1.12.0" + rollup-pluginutils "2.8.1" + tslib "1.10.0" + +rollup-pluginutils@2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz#8fa6dd0697344938ef26c2c09d2488ce9e33ce97" integrity sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== dependencies: estree-walker "^0.6.1" -rollup@^1.27.13: - version "1.27.13" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.27.13.tgz#d6d3500512daacbf8de54d2800de62d893085b90" - integrity sha512-hDi7M07MpmNSDE8YVwGVFA8L7n8jTLJ4lG65nMAijAyqBe//rtu4JdxjUBE7JqXfdpqxqDTbCDys9WcqdpsQvw== +rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.28.0: + version "1.28.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.28.0.tgz#d576a6a0fd7490b2e1f531ef8b411795fb80da87" + integrity sha512-v2J/DmQi9+Nf6frGqzwZRvbiuTTrqH0yzoUF4Eybf8sONT4UpLZzJYnYzW96Zm9X1+4SJmijfnFBWCzHDAXYnQ== dependencies: "@types/estree" "*" "@types/node" "*" @@ -12522,10 +13256,10 @@ rx-lite@*, rx-lite@^4.0.8: resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= -rxjs@^6.3.3, rxjs@^6.4.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" - integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== +rxjs@^6.3.3, rxjs@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== dependencies: tslib "^1.9.0" @@ -12566,10 +13300,10 @@ sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@^0.13.2, scheduler@^0.13.6: - version "0.13.6" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" - integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ== +scheduler@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.18.0.tgz#5901ad6659bc1d8f3fdaf36eb7a67b0d6746b1c4" + integrity sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -12591,13 +13325,13 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -scroll-behavior@^0.9.9: - version "0.9.10" - resolved "https://registry.yarnpkg.com/scroll-behavior/-/scroll-behavior-0.9.10.tgz#c8953adeeb3586060b903328d860aa8346d62861" - integrity sha512-JVJQkBkqMLEM4ATtbHTKare97zhz/qlla9mNttFYY/bcpyOb4BuBGEQ/N9AQWXvshzf6zo9jP60TlphnJ4YPoQ== +scroll-behavior@^0.9.10: + version "0.9.11" + resolved "https://registry.yarnpkg.com/scroll-behavior/-/scroll-behavior-0.9.11.tgz#f7b34380c038062bdcbd604c90e1d313220f7f3c" + integrity sha512-Eo32cg2uFiQwEiJXHHoTfXLybTlyA1O3ZOIiTz8EqRWie+ExL+7l8PcejhKT+5QmRtykXSlsTRVDC3BVB3S/bg== dependencies: - dom-helpers "^3.2.1" - invariant "^2.2.2" + dom-helpers "^3.4.0" + invariant "^2.2.4" section-matter@^1.0.0: version "1.0.0" @@ -12619,12 +13353,12 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" - integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== +selfsigned@^1.10.7: + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== dependencies: - node-forge "0.7.5" + node-forge "0.9.0" semver-compare@^1.0.0: version "1.0.0" @@ -12650,15 +13384,20 @@ semver-truncate@^1.1.2: dependencies: semver "^5.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.1.1: - version "6.1.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.2.tgz#079960381376a3db62eb2edc8a3bfb10c7cfe318" - integrity sha512-z4PqiCpomGtWj8633oeAdXm1Kn1W++3T8epkZYnwiVgIYIJ0QHszhInYSJTYxebByQH7KVCEAn8R9duzZW2PhQ== +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== send@0.17.1: version "0.17.1" @@ -12687,11 +13426,6 @@ sentence-case@^2.1.0: no-case "^2.2.0" upper-case-first "^1.1.2" -serialize-javascript@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" - integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== - serialize-javascript@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" @@ -12801,11 +13535,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + shell-quote@1.6.1, shell-quote@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" @@ -12840,11 +13586,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -signedsource@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" - integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= - simple-concat@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" @@ -12875,10 +13616,10 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -sisteransi@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" - integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ== +sisteransi@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" + integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== sitemap@^1.12.0: version "1.13.0" @@ -12908,13 +13649,6 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= -slice-ansi@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== - dependencies: - is-fullwidth-code-point "^2.0.0" - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -12924,6 +13658,20 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slugify@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.3.6.tgz#ba5fd6159b570fe4811d02ea9b1f4906677638c3" + integrity sha512-wA9XS475ZmGNlEnYYLPReSfuz/c3VQsEMoU43mi6OnKMCdbnFXd4/Yg7J0lBv8jkPolacMpOrWEaoYxuE1+hoQ== + snake-case@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" @@ -12966,17 +13714,17 @@ socket.io-adapter@~1.1.0: resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= -socket.io-client@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.2.0.tgz#84e73ee3c43d5020ccc1a258faeeb9aec2723af7" - integrity sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA== +socket.io-client@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" + integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== dependencies: backo2 "1.0.2" base64-arraybuffer "0.1.5" component-bind "1.0.0" component-emitter "1.2.1" - debug "~3.1.0" - engine.io-client "~3.3.1" + debug "~4.1.0" + engine.io-client "~3.4.0" has-binary2 "~1.0.2" has-cors "1.1.0" indexof "0.0.1" @@ -12995,17 +13743,26 @@ socket.io-parser@~3.3.0: debug "~3.1.0" isarray "2.0.1" -socket.io@^2.0.3: - version "2.2.0" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.2.0.tgz#f0f633161ef6712c972b307598ecd08c9b1b4d5b" - integrity sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w== +socket.io-parser@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.0.tgz#370bb4a151df2f77ce3345ff55a7072cc6e9565a" + integrity sha512-/G/VOI+3DBp0+DJKW4KesGnQkQPFmUCbA/oO2QGT6CWxU7hLGWqU3tyuzeSK/dqcyeHsQg1vTe9jiZI8GU9SCQ== + dependencies: + component-emitter "1.2.1" + debug "~4.1.0" + isarray "2.0.1" + +socket.io@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.3.0.tgz#cd762ed6a4faeca59bc1f3e243c0969311eb73fb" + integrity sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg== dependencies: debug "~4.1.0" - engine.io "~3.3.1" + engine.io "~3.4.0" has-binary2 "~1.0.2" socket.io-adapter "~1.1.0" - socket.io-client "2.2.0" - socket.io-parser "~3.3.0" + socket.io-client "2.3.0" + socket.io-parser "~3.4.0" sockjs-client@1.1.4: version "1.1.4" @@ -13019,10 +13776,10 @@ sockjs-client@1.1.4: json3 "^3.3.2" url-parse "^1.1.8" -sockjs-client@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" - integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== dependencies: debug "^3.2.5" eventsource "^1.0.7" @@ -13081,7 +13838,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6, source-map-support@~0.5.10, source-map-support@~0.5.12: +source-map-support@^0.5.6, source-map-support@~0.5.12: version "0.5.12" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== @@ -13094,7 +13851,12 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@0.5.7, source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.3: +source-map@0.7.3, source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -13104,11 +13866,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - sourcemap-codec@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f" @@ -13157,10 +13914,10 @@ spdy-transport@^3.0.0: readable-stream "^3.0.6" wbuf "^1.7.3" -spdy@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52" - integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q== +spdy@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" + integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== dependencies: debug "^4.1.0" handle-thing "^2.0.0" @@ -13337,7 +14094,15 @@ string-length@^2.0.0: astral-regex "^1.0.0" strip-ansi "^4.0.0" -string-similarity@^1.2.0: +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + +string-similarity@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-1.2.2.tgz#99b2c20a3c9bbb3903964eae1d89856db3d8db9b" integrity sha512-IoHUjcw3Srl8nsPlW04U3qwWPk3oG2ffLM0tN853d/E/JlIvcmZmDY2Kz5HzKp4lEi2T7QD7Zuvjq/1rDw+XcQ== @@ -13365,7 +14130,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: +string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -13374,6 +14139,15 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + string.prototype.padend@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" @@ -13392,6 +14166,22 @@ string.prototype.trim@^1.1.2: es-abstract "^1.5.0" function-bind "^1.0.2" +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" @@ -13451,6 +14241,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-bom-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" @@ -13468,6 +14265,11 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-dirs@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" @@ -13492,7 +14294,12 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: +strip-json-comments@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + +strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= @@ -13504,13 +14311,13 @@ strip-outer@^1.0.0: dependencies: escape-string-regexp "^1.0.2" -style-loader@^0.21.0: - version "0.21.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852" - integrity sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg== +style-loader@^0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== dependencies: loader-utils "^1.1.0" - schema-utils "^0.4.5" + schema-utils "^1.0.0" style-to-object@^0.2.1: version "0.2.3" @@ -13595,6 +14402,13 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + svgo@^1.0.0, svgo@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.2.tgz#0253d34eccf2aed4ad4f283e11ee75198f9d7316" @@ -13643,7 +14457,7 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tapable@^1.0.0, tapable@^1.1.0: +tapable@^1.0.0, tapable@^1.1.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== @@ -13724,50 +14538,30 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -terser-webpack-plugin@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.4.tgz#56f87540c28dd5265753431009388f473b5abba3" - integrity sha512-64IiILNQlACWZLzFlpzNaG0bpQ4ytaB7fwOsbpsdIV70AfLUmIGGeuKL0YV2WmtcrURjE2aOvHD4/lrFV3Rg+Q== - dependencies: - cacache "^11.3.2" - find-cache-dir "^2.0.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^1.7.0" - source-map "^0.6.1" - terser "^3.17.0" - webpack-sources "^1.3.0" - worker-farm "^1.7.0" +term-size@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.1.1.tgz#f81ec25854af91a480d2f9d0c77ffcb26594ed1a" + integrity sha512-UqvQSch04R+69g4RDhrslmGvGL3ucDRX/U+snYW0Mab4uCAyKSndUksaoqlJ81QKSpRnIsuOYQCbC2ZWx2896A== -terser-webpack-plugin@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz#69aa22426299f4b5b3775cbed8cb2c5d419aa1d4" - integrity sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg== +terser-webpack-plugin@^1.1.0, terser-webpack-plugin@^1.4.2, terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== dependencies: - cacache "^11.3.2" - find-cache-dir "^2.0.0" + cacache "^12.0.2" + find-cache-dir "^2.1.0" is-wsl "^1.1.0" - loader-utils "^1.2.3" schema-utils "^1.0.0" - serialize-javascript "^1.7.0" + serialize-javascript "^2.1.2" source-map "^0.6.1" - terser "^4.0.0" - webpack-sources "^1.3.0" + terser "^4.1.2" + webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@^3.17.0: - version "3.17.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" - integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== - dependencies: - commander "^2.19.0" - source-map "~0.6.1" - source-map-support "~0.5.10" - -terser@^4.0.0, terser@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.2.tgz#b2656c8a506f7ce805a3f300a2ff48db022fa391" - integrity sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw== +terser@^4.1.0, terser@^4.1.2: + version "4.5.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.5.1.tgz#63b52d6b6ce344aa6fedcd0ee06a695799eb50bd" + integrity sha512-lH9zLIbX8PRBEFCTvfHGCy0s9HEKnNso1Dx9swSopF3VUnFLB8DpQ61tHxoofovNC/sG0spajJM3EIIRSTByiQ== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -13892,6 +14686,11 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" @@ -13982,23 +14781,44 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.4.tgz#3b52b1f13924f460c3fbfd0df69b587dbcbc762e" integrity sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q== -"true-case-path@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" - integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== - dependencies: - glob "^7.1.2" +"true-case-path@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" + integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== + +ts-jest@^24.2.0: + version "24.2.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.2.0.tgz#7abca28c2b4b0a1fdd715cd667d65d047ea4e768" + integrity sha512-Yc+HLyldlIC9iIK8xEN7tV960Or56N49MDP7hubCZUeI7EbIOTsas6rXCMB4kQjLACJ7eDOF4xWEO5qumpKsag== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + mkdirp "0.x" + resolve "1.x" + semver "^5.5" + yargs-parser "10.x" ts-pnp@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.2.tgz#be8e4bfce5d00f0f58e0666a82260c34a57af552" integrity sha512-f5Knjh7XCyRIzoC/z1Su1yLLRrPrFCgtUAh/9fCSP6NKbATwpOL1+idQVXQokK9GRFURn/jYPGPfegIctwunoA== -tslib@^1.6.0, tslib@^1.9.0: +tslib@1.10.0, tslib@^1.6.0, tslib@^1.8.1, tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -14033,6 +14853,11 @@ type-fest@^0.6.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -14046,6 +14871,13 @@ type-of@^2.0.1: resolved "https://registry.yarnpkg.com/type-of/-/type-of-2.0.1.tgz#e72a1741896568e9f628378d816d6912f7f23972" integrity sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI= +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -14056,10 +14888,10 @@ typescript-compiler@^1.4.1-2: resolved "https://registry.yarnpkg.com/typescript-compiler/-/typescript-compiler-1.4.1-2.tgz#ba4f7db22d91534a1929d90009dce161eb72fd3f" integrity sha1-uk99si2RU0oZKdkACdzhYety/T8= -typescript@^3.3.3333, typescript@^3.7.3: - version "3.7.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.3.tgz#b36840668a16458a7025b9eabfad11b66ab85c69" - integrity sha512-Mcr/Qk7hXqFBXMN7p7Lusj1ktCBydylfQM/FZCk5glCNQJrCUKPkMHdo9R0MTFWsC/4kPFvDS0fDPvukfCkFsw== +typescript@^3.4, typescript@^3.7.4: + version "3.7.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.4.tgz#1743a5ec5fef6a1fa9f3e4708e33c81c73876c19" + integrity sha512-A25xv5XCtarLwXpcDNZzCGvW2D1S3/bACratYBx2sax8PefsFhlYmkQicKHvpYflFS8if4zne5zT5kpJ7pzuvw== typography-normalize@^0.16.19: version "0.16.19" @@ -14239,6 +15071,13 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + unist-builder@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-1.0.4.tgz#e1808aed30bd72adc3607f25afecebef4dd59e17" @@ -14366,29 +15205,26 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= - upath@^1.1.0, upath@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== -update-notifier@^2.3.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" - integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== +update-notifier@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-3.0.1.tgz#78ecb68b915e2fd1be9f767f6e298ce87b736250" + integrity sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ== dependencies: - boxen "^1.2.1" + boxen "^3.0.0" chalk "^2.0.1" - configstore "^3.0.0" + configstore "^4.0.0" + has-yarn "^2.1.0" import-lazy "^2.1.0" - is-ci "^1.0.10" + is-ci "^2.0.0" is-installed-globally "^0.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" + is-npm "^3.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.0.0" semver-diff "^2.0.0" xdg-basedir "^3.0.0" @@ -14421,7 +15257,7 @@ url-join@^1.1.0: resolved "https://registry.yarnpkg.com/url-join/-/url-join-1.1.0.tgz#741c6c2f4596c4830d6718460920d0c92202dc78" integrity sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg= -url-loader@^1.0.1: +url-loader@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== @@ -14519,16 +15355,21 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@3.3.2, uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@3.3.3, uuid@^3.0.0, uuid@^3.0.1, uuid@^3.3.2, uuid@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" + integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== -v8-compile-cache@^1.1.0: +v8-compile-cache@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4" integrity sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA== +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + valid-url@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" @@ -14662,7 +15503,7 @@ warning@^3.0.0: dependencies: loose-envify "^1.0.0" -watchpack@^1.5.0: +watchpack@^1.5.0, watchpack@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== @@ -14688,7 +15529,7 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-assets-manifest@^3.0.2: +webpack-assets-manifest@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/webpack-assets-manifest/-/webpack-assets-manifest-3.1.1.tgz#39bbc3bf2ee57fcd8ba07cda51c9ba4a3c6ae1de" integrity sha512-JV9V2QKc5wEWQptdIjvXDUL1ucbPLH2f27toAY3SNdGZp+xSaStAgpoMcvMZmqtFrBc9a5pTS1058vxyMPOzRQ== @@ -14701,54 +15542,57 @@ webpack-assets-manifest@^3.0.2: tapable "^1.0.0" webpack-sources "^1.0.0" -webpack-dev-middleware@^3.0.1, webpack-dev-middleware@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" - integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== dependencies: memory-fs "^0.4.1" - mime "^2.4.2" + mime "^2.4.4" + mkdirp "^0.5.1" range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@^3.1.14: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.7.2.tgz#f79caa5974b7f8b63268ef5421222a8486d792f5" - integrity sha512-mjWtrKJW2T9SsjJ4/dxDC2fkFVUw8jlpemDERqV0ZJIkjjjamR2AbQlr3oz+j4JLhYCHImHnXZK5H06P2wvUew== +webpack-dev-server@^3.9.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz#1ff3e5cccf8e0897aa3f5909c654e623f69b1c0e" + integrity sha512-AGG4+XrrXn4rbZUueyNrQgO4KGnol+0wm3MPdqGLmmA+NofZl3blZQKxZ9BND6RDNuvAK9OMYClhjOSnxpWRoA== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" - chokidar "^2.1.6" + chokidar "^2.1.8" compression "^1.7.4" connect-history-api-fallback "^1.6.0" debug "^4.1.1" del "^4.1.1" express "^4.17.1" html-entities "^1.2.1" - http-proxy-middleware "^0.19.1" + http-proxy-middleware "0.19.1" import-local "^2.0.0" internal-ip "^4.3.0" ip "^1.1.5" + is-absolute-url "^3.0.3" killable "^1.0.1" - loglevel "^1.6.3" + loglevel "^1.6.6" opn "^5.5.0" p-retry "^3.0.1" - portfinder "^1.0.20" + portfinder "^1.0.25" schema-utils "^1.0.0" - selfsigned "^1.10.4" - semver "^6.1.1" + selfsigned "^1.10.7" + semver "^6.3.0" serve-index "^1.9.1" sockjs "0.3.19" - sockjs-client "1.3.0" - spdy "^4.0.0" + sockjs-client "1.4.0" + spdy "^4.0.1" strip-ansi "^3.0.1" supports-color "^6.1.0" url "^0.11.0" - webpack-dev-middleware "^3.7.0" + webpack-dev-middleware "^3.7.2" webpack-log "^2.0.0" + ws "^6.2.1" yargs "12.0.5" -webpack-hot-middleware@^2.21.0: +webpack-hot-middleware@^2.25.0: version "2.25.0" resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz#4528a0a63ec37f8f8ef565cf9e534d57d09fe706" integrity sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA== @@ -14766,12 +15610,12 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-merge@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4" - integrity sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw== +webpack-merge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== dependencies: - lodash "^4.17.5" + lodash "^4.17.15" webpack-sources@^0.2.0: version "0.2.3" @@ -14781,18 +15625,18 @@ webpack-sources@^0.2.0: source-list-map "^1.1.1" source-map "~0.5.3" -webpack-sources@^1.0.0, webpack-sources@^1.1.0, webpack-sources@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" - integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== +webpack-sources@^1.0.0, webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" -webpack-stats-plugin@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/webpack-stats-plugin/-/webpack-stats-plugin-0.1.5.tgz#29e5f12ebfd53158d31d656a113ac1f7b86179d9" - integrity sha1-KeXxLr/VMVjTHWVqETrB97hhedk= +webpack-stats-plugin@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/webpack-stats-plugin/-/webpack-stats-plugin-0.3.1.tgz#1103c39a305a4e6ba15d5078db84bc0b35447417" + integrity sha512-pxqzFE055NlNTlNyfDG3xlB2QwT1EWdm/CF5dCJI/e+rRHVxrWhWg1rf1lfsWhI1/EePv8gi/A36YxO/+u0FgQ== webpack@~4.28.4: version "4.28.4" @@ -14824,6 +15668,35 @@ webpack@~4.28.4: watchpack "^1.5.0" webpack-sources "^1.3.0" +webpack@~4.41.2: + version "4.41.5" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" + integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + websocket-driver@>=0.5.1: version "0.7.3" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" @@ -14895,6 +15768,13 @@ which@^1.2.14, which@^1.2.9, which@^1.3.0: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -14909,6 +15789,13 @@ widest-line@^2.0.0: dependencies: string-width "^2.1.1" +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + with-open-file@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/with-open-file/-/with-open-file-0.1.6.tgz#0bc178ecab75f6baac8ae11c85e07445d690ea50" @@ -14918,16 +15805,16 @@ with-open-file@^0.1.6: p-try "^2.1.0" pify "^4.0.1" +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -14951,7 +15838,7 @@ wrap-ansi@^3.0.1: string-width "^2.1.1" strip-ansi "^4.0.0" -wrap-ansi@^5.0.0: +wrap-ansi@^5.0.0, wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== @@ -14960,6 +15847,15 @@ wrap-ansi@^5.0.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -14983,6 +15879,16 @@ write-file-atomic@^2.0.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-file-atomic@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.1.tgz#558328352e673b5bb192cf86500d60b230667d4b" + integrity sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -14997,6 +15903,18 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" +ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +ws@^7.1.2: + version "7.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.1.tgz#03ed52423cd744084b2cf42ed197c8b65a936b8e" + integrity sha512-sucePNSafamSKoOqoNfBd8V0StlkzJKL2ZAhGQinCfNQ+oacw+Pk7lcdAElecBF2VkLNZRiIb5Oi1Q5lVUVt2A== + ws@~6.1.0: version "6.1.4" resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" @@ -15014,6 +15932,11 @@ xdg-basedir@^3.0.0: resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + xhr@^2.0.1: version "2.5.0" resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" @@ -15057,23 +15980,16 @@ xstate@^3.1.0: resolved "https://registry.yarnpkg.com/xstate/-/xstate-3.3.3.tgz#64177cd4473d4c2424b3df7d2434d835404b09a9" integrity sha512-p0ZYDPWxZZZRAJyD3jaGO9/MYioHuxZp6sjcLhPfBZHAprl4EDrZRGDqRVH9VvK8oa6Nrbpf+U5eNmn8KFwO3g== -xstate@^4.3.2: - version "4.6.3" - resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.6.3.tgz#21e5a132867e5509a08d16c32b525ba4898492bd" - integrity sha512-ihJcpZWjqW60psaC+RxFhfZxgFDNRpEmHeSsM4DgtKswsz6HxEzNx7rgesZtg8/LqluOba8puy8lVtB748RG6A== - dependencies: - "@vuepress/plugin-google-analytics" "^1.0.1" +xstate@^4.7.2: + version "4.7.5" + resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.7.5.tgz#b684db66f5ce32422dd97de0fbdf188bc07fe169" + integrity sha512-1QbwTUviBCHSnT3ct+GZZspzbNsftMEzP1lXmeR/zJphA1BHeLh/JV+woCmRdTBHyuGcJ2I7u7pp/+Y9e4qq9A== xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -15096,6 +16012,20 @@ yaml-loader@^0.5.0: dependencies: js-yaml "^3.5.2" +yaml@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" + integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== + dependencies: + "@babel/runtime" "^7.6.3" + +yargs-parser@10.x: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" @@ -15104,12 +16034,13 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= +yargs-parser@^13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== dependencies: - camelcase "^4.1.0" + camelcase "^5.0.0" + decamelize "^1.2.0" yargs@12.0.5, yargs@^12.0.2, yargs@^12.0.5: version "12.0.5" @@ -15129,24 +16060,21 @@ yargs@12.0.5, yargs@^12.0.2, yargs@^12.0.5: y18n "^3.2.1 || ^4.0.0" yargs-parser "^11.1.1" -yargs@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" - integrity sha1-UqzCP+7Kw0BCB47njAwAf1CF20w= +yargs@^13.2.4: + version "13.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^2.0.0" + string-width "^3.0.0" which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.1" yauzl@^2.4.2: version "2.10.0" @@ -15166,35 +16094,35 @@ yoga-layout-prebuilt@^1.9.3: resolved "https://registry.yarnpkg.com/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.9.3.tgz#11e3be29096afe3c284e5d963cc2d628148c1372" integrity sha512-9SNQpwuEh2NucU83i2KMZnONVudZ86YNcFk9tq74YaqrQfgJWO3yB9uzH1tAg8iqh5c9F5j0wuyJ2z72wcum2w== -yurnalist@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/yurnalist/-/yurnalist-1.0.5.tgz#98534ddc1330e1316684981f53cba879ffc07a28" - integrity sha512-EuLjqX3Q15iVM0UtZa5Ju536uRmklKd2kKhdE5D5fIh8RZmh+pJ8c6wj2oGo0TA+T/Ii2o79cIHCTMfciW8jlA== +yurnalist@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/yurnalist/-/yurnalist-1.1.1.tgz#701fea4d6a02f7a44d57bc0dcf75138590549dcb" + integrity sha512-WMk8SL262zU/3Cr8twpfx/kdhPDAkhWN9HukNeb1U1xVrwU9iIAsCgYI8J5QMZTz+5N3Et/ZKzvOzVCjd/dAWA== dependencies: babel-runtime "^6.26.0" - chalk "^2.1.0" + chalk "^2.4.2" cli-table3 "^0.5.1" - debug "^4.1.0" - deep-equal "^1.0.1" - detect-indent "^5.0.0" - inquirer "^6.2.0" + debug "^4.1.1" + deep-equal "^1.1.0" + detect-indent "^6.0.0" + inquirer "^7.0.0" invariant "^2.2.0" is-builtin-module "^3.0.0" is-ci "^2.0.0" - leven "^2.0.0" - loud-rejection "^1.2.0" - node-emoji "^1.6.1" + leven "^3.1.0" + loud-rejection "^2.2.0" + node-emoji "^1.10.0" object-path "^0.11.2" read "^1.0.7" - rimraf "^2.5.0" - semver "^5.1.0" - strip-ansi "^5.0.0" - strip-bom "^3.0.0" + rimraf "^3.0.0" + semver "^6.3.0" + strip-ansi "^5.2.0" + strip-bom "^4.0.0" -zen-observable@^0.8.14: - version "0.8.14" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.14.tgz#d33058359d335bc0db1f0af66158b32872af3bf7" - integrity sha512-kQz39uonEjEESwh+qCi83kcC3rZJGh4mrZW7xjkSQYXkq//JZHTtKo+6yuVloTgMtzsIWOJrjIrKvk/dqm0L5g== +zen-observable@^0.8.15: + version "0.8.15" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== zwitch@^1.0.0: version "1.0.4" -- knotmirror 0.0.1