diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 843045e..24ee2cc 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -4,7 +4,6 @@ about: Create a report to help us improve
title: ''
labels: bug
assignees: ''
-
---
**Describe the bug**
@@ -12,6 +11,7 @@ A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
+
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
@@ -24,9 +24,10 @@ A clear and concise description of what you expected to happen.
If applicable, add screenshots to help explain your problem.
**Device (please complete the following information):**
- - Device: [e.g. iPhone6]
- - OS: [e.g. iOS8.1]
- - React Native and MeteorRN versions: [e.g. 0.62.1, 2.0.0]
+
+- Device: [e.g. iPhone6]
+- OS: [e.g. iOS8.1]
+- React Native and MeteorRN versions: [e.g. 0.62.1, 2.0.0]
**Additional context**
Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/companion-package-request.md b/.github/ISSUE_TEMPLATE/companion-package-request.md
index d31214f..3c39dee 100644
--- a/.github/ISSUE_TEMPLATE/companion-package-request.md
+++ b/.github/ISSUE_TEMPLATE/companion-package-request.md
@@ -4,7 +4,6 @@ about: Suggest an idea for a new companion package
title: ''
labels: ''
assignees: ''
-
---
**Is your feature request related to a problem? Please describe.**
diff --git a/.github/ISSUE_TEMPLATE/core-feature-request.md b/.github/ISSUE_TEMPLATE/core-feature-request.md
index 2fc593f..f920b23 100644
--- a/.github/ISSUE_TEMPLATE/core-feature-request.md
+++ b/.github/ISSUE_TEMPLATE/core-feature-request.md
@@ -4,7 +4,6 @@ about: Suggest an idea for this project that affects @meteorrn/core
title: ''
labels: core-enhancement
assignees: ''
-
---
**Is your feature request related to a problem? Please describe.**
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 3a1a770..1635c11 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -1,11 +1,9 @@
-name: "CodeQL"
+name: 'CodeQL'
on:
push:
- branches: [master, ]
- pull_request:
- # The branches below must be a subset of the branches above
branches: [master]
+ pull_request: # check code ql on every PR!
schedule:
- cron: '0 22 * * 3'
@@ -15,40 +13,40 @@ jobs:
runs-on: ubuntu-latest
steps:
- - name: Checkout repository
- uses: actions/checkout@v2
- with:
- # We must fetch at least the immediate parents so that if this is
- # a pull request then we can checkout the head.
- fetch-depth: 2
-
- # If this run was triggered by a pull request event, then checkout
- # the head of the pull request instead of the merge commit.
- - run: git checkout HEAD^2
- if: ${{ github.event_name == 'pull_request' }}
-
- # Initializes the CodeQL tools for scanning.
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v1
- # Override language selection by uncommenting this and choosing your languages
- # with:
- # languages: go, javascript, csharp, python, cpp, java
-
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
- # If this step fails, then you should remove it and run the build manually (see below)
- - name: Autobuild
- uses: github/codeql-action/autobuild@v1
-
- # âšī¸ Command-line programs to run using the OS shell.
- # đ https://git.io/JvXDl
-
- # âī¸ If the Autobuild fails above, remove it and uncomment the following three lines
- # and modify them (or add more) to build your code if your project
- # uses a compiled language
-
- #- run: |
- # make bootstrap
- # make release
-
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v1
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ with:
+ # We must fetch at least the immediate parents so that if this is
+ # a pull request then we can checkout the head.
+ fetch-depth: 2
+
+ # If this run was triggered by a pull request event, then checkout
+ # the head of the pull request instead of the merge commit.
+ - run: git checkout HEAD^2
+ if: ${{ github.event_name == 'pull_request' }}
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ # Override language selection by uncommenting this and choosing your languages
+ # with:
+ # languages: go, javascript, csharp, python, cpp, java
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v1
+
+ # âšī¸ Command-line programs to run using the OS shell.
+ # đ https://git.io/JvXDl
+
+ # âī¸ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
+
+ #- run: |
+ # make bootstrap
+ # make release
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml
index 4cfe17a..cd79a12 100644
--- a/.github/workflows/manual.yml
+++ b/.github/workflows/manual.yml
@@ -25,6 +25,6 @@ jobs:
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- # Runs a single command using the runners shell
- - name: Send review message
- run: echo "This PR for release ${{ github.event.inputs.name }} needs review from the community. Check out the changelog and provide your feedback!"
+ # Runs a single command using the runners shell
+ - name: Send review message
+ run: echo "This PR for release ${{ github.event.inputs.name }} needs review from the community. Check out the changelog and provide your feedback!"
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index f7b20bb..6c4e92f 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -1,27 +1,73 @@
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
-name: Node.js CI
+name: Test Suite
on:
push:
- branches: [ master ]
- pull_request:
- branches: [ master ]
+ branches: [master]
+ pull_request: # run on all pull requests
jobs:
- build:
-
+ lintjs:
+ name: Javascript standard lint
runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+
+ - name: setup node
+ uses: actions/setup-node@v3
+ with:
+ node-version: 16
+ - name: cache dependencies
+ uses: actions/cache@v3
+ with:
+ path: ~/.npm
+ key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
+ restore-keys: |
+ ${{ runner.os }}-node-
+ - run: npm ci --legacy-peer-deps
+ - run: npm run lint
+
+ unittest:
+ name: unit tests
+ runs-on: ubuntu-latest
+ needs: [lintjs]
strategy:
matrix:
- node-version: [10.x, 12.x]
+ node: [14, 16, 18]
+ steps:
+ - name: Checkout ${{ matrix.node }}
+ uses: actions/checkout@v3
+ - name: Setup node ${{ matrix.node }}
+ uses: actions/setup-node@v3
+ with:
+ node-version: ${{ matrix.node }}
+
+ - name: Cache dependencies ${{ matrix.node }}
+ uses: actions/cache@v3
+ with:
+ path: ~/.npm
+ key: ${{ runner.os }}-node-${{ matrix.node }}-${{ hashFiles('**/package-lock.json') }}
+ restore-keys: |
+ ${{ runner.os }}-node-${{ matrix.node }}
+ - run: npm ci --legacy-peer-deps
+ - run: npm run test:coverage
+
+ build:
+ name: Build
+ runs-on: ubuntu-latest
+ needs: [unittest]
+ strategy:
+ matrix:
+ node: [14, 16, 18]
steps:
- - uses: actions/checkout@v2
- - name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v1
- with:
- node-version: ${{ matrix.node-version }}
- - run: npm run build --if-present
+ - uses: actions/checkout@v3
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v3
+ with:
+ node-version: ${{ matrix.node-version }}
+ - run: npm run build --if-present
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index 74262fe..af86958 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -2,18 +2,17 @@ name: Mark stale issues and pull requests
on:
schedule:
- - cron: "30 1 * * *"
+ - cron: '30 1 * * *'
jobs:
stale:
-
runs-on: ubuntu-latest
steps:
- - uses: actions/stale@v1
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- stale-issue-message: 'Closing this issue due to no activity. Feel free to reopen.'
- stale-pr-message: 'Closing this PR due to no activity. Feel free to reopen.'
- stale-issue-label: 'no-issue-activity'
- stale-pr-label: 'no-pr-activity'
+ - uses: actions/stale@v1
+ with:
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ stale-issue-message: 'Closing this issue due to no activity. Feel free to reopen.'
+ stale-pr-message: 'Closing this PR due to no activity. Feel free to reopen.'
+ stale-issue-label: 'no-issue-activity'
+ stale-pr-label: 'no-pr-activity'
diff --git a/.mocharc.js b/.mocharc.js
index 31b73e1..0f75f7a 100644
--- a/.mocharc.js
+++ b/.mocharc.js
@@ -5,10 +5,10 @@ babelRegister();
// for more options see here https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.yml
module.exports = {
recursive: true,
- reporter: "spec",
+ reporter: 'spec',
retries: 0,
slow: 20,
timeout: 2000,
- ui: "bdd",
- require: ['test/hooks/mockServer.js']
-}
+ ui: 'bdd',
+ require: ['test/hooks/mockServer.js'],
+};
diff --git a/.nycrc.json b/.nycrc.json
index e1552da..45f9c89 100644
--- a/.nycrc.json
+++ b/.nycrc.json
@@ -1,3 +1,3 @@
{
- "extends": "@istanbuljs/nyc-config-babel"
-}
\ No newline at end of file
+ "extends": "@istanbuljs/nyc-config-babel"
+}
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index f8bf8d3..d02f58c 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -14,22 +14,22 @@ appearance, race, religion, or sexual identity and orientation.
Examples of behavior that contributes to creating a positive environment
include:
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
+- Using welcoming and inclusive language
+- Being respectful of differing viewpoints and experiences
+- Gracefully accepting constructive criticism
+- Focusing on what is best for the community
+- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
-* The use of sexualized language or imagery and unwelcome sexual attention or
- advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic
- address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
- professional setting
+- The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+- Trolling, insulting/derogatory comments, and personal or political attacks
+- Public or private harassment
+- Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+- Other conduct which could reasonably be considered inappropriate in a
+ professional setting
## Our Responsibilities
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index bcbe283..ab29a26 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -7,6 +7,7 @@ Thanks for your interest in contributing!
All PRs must address **one** feature or issue, and may only modify **one** package (unless there is an issue/feature that absolutely requires an update across multiple packages). Before you submit a PR, please make sure to test your update on iOS and Android in release mode. For more info on testing, see Testing below
### Contributing to docs
+
All PRs must address **one** feature or issue, and may only modify **one** package (unless there is an issue/feature that absolutely requires an update across multiple packages).
# Testing
@@ -22,12 +23,15 @@ All code-level PRs must be tested on a real device, simulators/emulators are not
Once you have your testing app installed on a device, use the following test cases depending on what features your update interacts with:
**All Updates:**
+
- Device with Internet Connection
- Device that is Offline
**Updates that interact with `AsyncStorage`, `NetInfo`, or `trackr`:**
+
- Opening from background (device put in sleep mode for at least 60 seconds, then reopened)
**Updates that interact with `NetInfo`:**
+
- Device is on WiFi
- Device is on Cellular
diff --git a/README.md b/README.md
index 352a1b1..ff2cb32 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,12 @@
# Meteor React Native
+
A set of packages allowing you to connect your React Native app to your Meteor server, and take advantage of Meteor-specific features like accounts, reactive data trackers, etc. Compatible with the latest version of React Native.
+[![Node.js CI](https://github.com/meteorrn/meteor-react-native/actions/workflows/node.js.yml/badge.svg)](https://github.com/meteorrn/meteor-react-native/actions/workflows/node.js.yml)
+[![CodeQL](https://github.com/meteorrn/meteor-react-native/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/meteorrn/meteor-react-native/actions/workflows/codeql-analysis.yml)
+![npm](https://img.shields.io/npm/dm/@meteorrn/core)
+[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
+
Check out [the @meteorrn github org](https://github.com/meteorrn) for more packages, examples, and tutorials.
[Full API Documentation](/docs/api.md)
@@ -8,9 +14,10 @@ Check out [the @meteorrn github org](https://github.com/meteorrn) for more packa
If you're new to React Native, you can view a guide to using React Native with Meteor on the [Official Meteor Guide](https://guide.meteor.com/react-native.html)
# Installation
+
1. `npm install --save @meteorrn/core`
2. Confirm you have peer dependencty `@react-native-community/netinfo` installed
-3. Confirm you have `@react-native-async-storage/async-storage@>=1.8.1` installed. If you are using Expo, or otherwise cannot use `@react-native-async-storage/async-storage`, see *Custom Storage Adapter* below.
+3. Confirm you have `@react-native-async-storage/async-storage@>=1.8.1` installed. If you are using Expo, or otherwise cannot use `@react-native-async-storage/async-storage`, see _Custom Storage Adapter_ below.
A note on AsyncStorage
This package uses `@react-native-async-storage/async-storage` by default. This may cause issues if you are using certain React Native versions, or if you are using Expo. To use a custom AsyncStorage implementation, pass it as an option in `Meteor.connect`:
@@ -20,10 +27,10 @@ import { AsyncStorage } from 'react-native';
// ...
-Meteor.connect("wss://myapp.meteor.com/websocket", { AsyncStorage });
+Meteor.connect('wss://myapp.meteor.com/websocket', { AsyncStorage });
```
-If you are using the `AsyncStorage` API yourself, its important that you use the same version that MeteorRN is using, or issues could be caused due to the conflicting versions. Make sure you are using the same AsyncStorage you pass into Meteor (or `@react-native-async-storage/async-storage` if you aren't passing anything), or you can use [MeteorRN's package interface](#package-interface).
+If you are using the `AsyncStorage` API yourself, its important that you use the same version that MeteorRN is using, or issues could be caused due to the conflicting versions. Make sure you are using the same AsyncStorage you pass into Meteor (or `@react-native-async-storage/async-storage` if you aren't passing anything), or you can use [MeteorRN's package interface](#package-interface).
# Basic Usage
@@ -31,30 +38,30 @@ If you are using the `AsyncStorage` API yourself, its important that you use the
import Meteor, { Mongo, withTracker } from '@meteorrn/core';
// "mycol" should match the name of the collection on your meteor server, or pass null for a local collection
-let MyCol = new Mongo.Collection("mycol");
+let MyCol = new Mongo.Collection('mycol');
-Meteor.connect("wss://myapp.meteor.com/websocket"); // Note the /websocket after your URL
+Meteor.connect('wss://myapp.meteor.com/websocket'); // Note the /websocket after your URL
class App extends React.Component {
- render() {
- let {myThing} = this.props;
-
- return (
-
- Here is the thing: {myThing.name}
-
- );
- }
+ render() {
+ let { myThing } = this.props;
+
+ return (
+
+ Here is the thing: {myThing.name}
+
+ );
+ }
}
let AppContainer = withTracker(() => {
- Meteor.subscribe("myThing");
- let myThing = MyCol.findOne();
-
- return {
- myThing
- };
-})(App)
+ Meteor.subscribe('myThing');
+ let myThing = MyCol.findOne();
+
+ return {
+ myThing,
+ };
+})(App);
export default AppContainer;
```
@@ -67,17 +74,20 @@ Running the app on a physical device but want to connect to local development ma
The `@meteorrn/core` package has been kept as light as possible. To access more features, you can use companion packages.
Here are some examples:
+
- `@meteorrn/oauth-google`: Allows you to let users login to your app with Google
- `@meteorrn/oauth-facebook`: Allows you to let users login to your app with Facebook
For the full list of officially recognized packages, check out [the @meteorrn github org](https://github.com/meteorrn).
# Compatibility
+
This package is compatible with React Native versions from 0.60.0 to latest (0.63.2)
For React Native <0.60.0 use [react-native-meteor](https://github.com/inProgress-team/react-native-meteor).
**Migrating from `react-native-meteor`:**
+
- cursoredFind is no longer an option. All .find() calls will return cursors (to match Meteor)
- `MeteorListView` & `MeteorComplexListView` have been removed
- `CollectionFS` has been removed
@@ -86,44 +96,48 @@ For React Native <0.60.0 use [react-native-meteor](https://github.com/inProgress
- `composeWithTracker` has been removed
# Using on Web
+
While this package was designed with React Native in mind, it is also capable of running on web (using `react-dom`). This can be useful if you need a light-weight Meteor implementation, if you want to create a client app separate from your server codebase, etc. The only change required is providing an AsyncStorage implementation. Here is a simple example:
-````
+```
const AsyncStorage = {
setItem:async (key, value) => window.localStorage.setItem(key, value),
getItem:async (key) => window.localStorage.getItem(key)
- removeItem:async (key) => window.localStorage.removeItem(key)
+ removeItem:async (key) => window.localStorage.removeItem(key)
}
Meteor.connect("wss://.../websock", {AsyncStorage});
-````
+```
# Changelog
+
The [GitHub Releases Tab](https://github.com/TheRealNate/meteor-react-native/releases) includes a full changelog
# Package Interface
To ensure that MeteorRN companion packages use the same versions of external packages like AsyncStorage as the core, `@meteorrn/core` provides a package interface, where companion packages can access certain packages. Currently package interface returns an object with the following properties:
-- AsyncStorage
+
+- AsyncStorage
### Usage
-````
+
+```
import Meteor from '@meteorrn/core';
const {AsyncStorage} = Meteor.packageInterface();
-````
-
+```
### Differences from Meteor Core to Note:
+
- This API does not implement `observeChanges` (but it does implement `observe`)
# Showcase
-| Whazzup.co | StarlingRealtime |
-| --- | --- |
+| Whazzup.co | StarlingRealtime |
+| --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| | |
-| [Whazzup.co](https://whazzup.co/) uses Meteor React Native in their native app | [StarlingRealtime](https://www.starlingrealtime.com/) uses Meteor React Native in their production app |
+| [Whazzup.co](https://whazzup.co/) uses Meteor React Native in their native app | [StarlingRealtime](https://www.starlingrealtime.com/) uses Meteor React Native in their production app |
diff --git a/SECURITY.md b/SECURITY.md
index 3104e5e..307f21c 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -4,8 +4,8 @@
| Version | Supported |
| ------- | ------------------ |
-| >=2.0.0 | :white_check_mark: |
+| >=2.0.0 | :white_check_mark: |
## Reporting a Vulnerability
-To contact the lead developer for this package (@TheRealNate) directly about a security issue, please email nate@kidzideaz.tech.
+To contact the lead developer for this package (@TheRealNate) directly about a security issue, please email nate@kidzideaz.tech.
diff --git a/companion-packages/meteorrn-local/README.md b/companion-packages/meteorrn-local/README.md
index b5842f8..da6863c 100644
--- a/companion-packages/meteorrn-local/README.md
+++ b/companion-packages/meteorrn-local/README.md
@@ -1,34 +1,36 @@
# Local
-This package allows you to store your data locally (similar to GroundDB for Meteor Web).
+This package allows you to store your data locally (similar to GroundDB for Meteor Web).
This package introduces the `Local.Collection`, which will mirror the specified remote collection, and store all documents on the device, making your data offline.
### Caveats
+
- This package (currently) works by creating a second local Mongo Collection. This means you are esentially keeping two copies of each document (that you store locally) in memory. This issue can be mitigated by keeping an "age" or "version" on all your documents, and only publishing documents that have been changed from local
- This package (currently) does not support the automatic removal/expiry of documents. Once a document has been inserted into the local database, it is there forever (unless you manually call `remove` on the Local.Collection)
### Usage:
-````
+```
import Local from '@meteorrn/local';
const MyLocalCollection = new Local.Collection("name");
MyLocalCollection.find().fetch()
-````
+```
You should use LocalCollection whenever you want to access the stored data. The Local Collection will observe the live collection and automatically update when the live collection does.
### Data Loading:
+
A `Local.Collection` exposes a property called `loadPromise` which resolves once local data has been loaded into the collection. You can use this to control loading flow, like so:
-````
+```
const Todos = new Local.Collection("todos");
class Home extends React.Component {
state = {dataLoading:true};
-
+
componentDidMount() {
Todos.loadPromise.then(() => {
this.setState({dataLoading:false});
@@ -37,30 +39,33 @@ class Home extends React.Component {
});
}
}
-````
+```
### Data Grouping
+
By default, this package stores each collection in its own AsyncStorage field. If you plan to store very large amounts of data in a collection, consider grouping the data. When you specify a certain field, data will be grouped on this field and stored in separate AsyncStorage fields. If you specify a `limit`, the limit will be applied to individual groups instead of the collection as a whole.
### API Docs
#### Collection(name, options)
-Creates a Local Collection that mirrors changes to collection with specified name.
+
+Creates a Local Collection that mirrors changes to collection with specified name.
**Options:**
-*groupBy (default: null):* Specifies a field to organize items on. Items will be grouped into separate AsyncStorage keys by specified limit. If you specifiy a limit, the limit will be applied to each group instead of the collection as a whole
+_groupBy (default: null):_ Specifies a field to organize items on. Items will be grouped into separate AsyncStorage keys by specified limit. If you specifiy a limit, the limit will be applied to each group instead of the collection as a whole
-*limit (default: -1):* Specifies a limit to the number of documents to store. The sort property is required to use this.
+_limit (default: -1):_ Specifies a limit to the number of documents to store. The sort property is required to use this.
-*sort (default: null):* Specifies a sort method to maintain documents by
+_sort (default: null):_ Specifies a sort method to maintain documents by
-*disableDateParser (default: false):* Disables the default behavior when parsing the stringified collection of automatically converting date strings into JS dates
+_disableDateParser (default: false):_ Disables the default behavior when parsing the stringified collection of automatically converting date strings into JS dates
**Properties:**
A `Local.Collection` is a local Mongo Collection that exposes the following additional properties
-*loadPromise (Promise):* A promise that resolves when the local data has been inserted into the collection. While this will typically only take a few hundred milliseconds, if you have UI that depends on the local data, you may want to use this promise in your loading flow.
+_loadPromise (Promise):_ A promise that resolves when the local data has been inserted into the collection. While this will typically only take a few hundred milliseconds, if you have UI that depends on the local data, you may want to use this promise in your loading flow.
### Compatability
+
This package takes advantage of observe and local collections, added in `@meteorrn/core@2.0.8`.
diff --git a/companion-packages/meteorrn-local/index.js b/companion-packages/meteorrn-local/index.js
index b6c6c0a..fb32b35 100644
--- a/companion-packages/meteorrn-local/index.js
+++ b/companion-packages/meteorrn-local/index.js
@@ -1,121 +1,133 @@
import { Mongo, packageInterface } from '@meteorrn/core';
-const stringifiedDateRegExp = new RegExp(/[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3}Z/);
-let fixDates = function (k,v) {
- if(stringifiedDateRegExp.test(v)) {
- return new Date(v);
- }
- return v;
+const stringifiedDateRegExp = new RegExp(
+ /[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3}Z/
+);
+let fixDates = function (k, v) {
+ if (stringifiedDateRegExp.test(v)) {
+ return new Date(v);
+ }
+ return v;
};
-const defaultOptions = {disableDateParser:false, batchUpdates:false};
+const defaultOptions = { disableDateParser: false, batchUpdates: false };
const Local = {
- Collection:function (name, _options={}) {
- const { AsyncStorage } = packageInterface();
- const options = Object.assign({}, defaultOptions, _options);
-
- const LiveCol = new Mongo.Collection(name);
- const LocalCol = new Mongo.Collection(null);
- let batchQueued = false;
-
- const _storeLocalCol = async () => {
- batchQueued = false;
- const data = LocalCol.find({}, {sort:options.sort}).fetch();
- if(options.groupBy) {
- const groups = {};
-
- for(let d of data) {
- const v = d[options.groupBy];
- groups[v] = groups[v] || [];
- groups[v].push(d);
- }
-
- for(let g in groups) {
- await AsyncStorage.setItem("@mrnlocal:" + name + ":" + g, JSON.stringify(groups[g].slice(0, options.limit)));
- }
-
- await AsyncStorage.setItem("@mrnlocal:" + name + "_groups", JSON.stringify(Object.keys(groups)));
- }
- else {
- await AsyncStorage.setItem("@mrnlocal:" + name, JSON.stringify(data));
- }
- };
-
- const storeLocalCol = async () => {
- if(options.batchUpdates) {
- if(batchQueued) {
- return;
- }
- else {
- batchQueued = true;
- setTimeout(_storeLocalCol, 150);
- return;
- }
- }
- else {
- await _storeLocalCol();
- }
- };
-
- const loadData = async () => {
-
- if(options.groupBy) {
- let groups = JSON.parse((await AsyncStorage.getItem("@mrnlocal:" + name + "_groups")) || "[]");
- for(let g of groups) {
- const storedData = await AsyncStorage.getItem("@mrnlocal:" + name + ":" + g);
- if(storedData) {
- const documents = JSON.parse(storedData, options.disableDateParser ? v=>v : fixDates);
- documents.forEach(doc => {
- LocalCol._collection.upsert(doc);
- });
- }
- }
- }
- else {
- const storedData = await AsyncStorage.getItem("@mrnlocal:" + name);
- if(storedData) {
- const documents = JSON.parse(storedData, options.disableDateParser ? v=>v : fixDates);
- documents.forEach(doc => {
- LocalCol._collection.upsert(doc);
- });
- }
- }
-
- LiveCol.find({}).observe({
- added:async doc => {
- LocalCol._collection.upsert(doc);
- storeLocalCol();
- },
- changed:async doc => {
- LocalCol._collection.upsert(doc);
- storeLocalCol();
- }
+ Collection: function (name, _options = {}) {
+ const { AsyncStorage } = packageInterface();
+ const options = Object.assign({}, defaultOptions, _options);
+
+ const LiveCol = new Mongo.Collection(name);
+ const LocalCol = new Mongo.Collection(null);
+ let batchQueued = false;
+
+ const _storeLocalCol = async () => {
+ batchQueued = false;
+ const data = LocalCol.find({}, { sort: options.sort }).fetch();
+ if (options.groupBy) {
+ const groups = {};
+
+ for (let d of data) {
+ const v = d[options.groupBy];
+ groups[v] = groups[v] || [];
+ groups[v].push(d);
+ }
+
+ for (let g in groups) {
+ await AsyncStorage.setItem(
+ '@mrnlocal:' + name + ':' + g,
+ JSON.stringify(groups[g].slice(0, options.limit))
+ );
+ }
+
+ await AsyncStorage.setItem(
+ '@mrnlocal:' + name + '_groups',
+ JSON.stringify(Object.keys(groups))
+ );
+ } else {
+ await AsyncStorage.setItem('@mrnlocal:' + name, JSON.stringify(data));
+ }
+ };
+
+ const storeLocalCol = async () => {
+ if (options.batchUpdates) {
+ if (batchQueued) {
+ return;
+ } else {
+ batchQueued = true;
+ setTimeout(_storeLocalCol, 150);
+ return;
+ }
+ } else {
+ await _storeLocalCol();
+ }
+ };
+
+ const loadData = async () => {
+ if (options.groupBy) {
+ let groups = JSON.parse(
+ (await AsyncStorage.getItem('@mrnlocal:' + name + '_groups')) || '[]'
+ );
+ for (let g of groups) {
+ const storedData = await AsyncStorage.getItem(
+ '@mrnlocal:' + name + ':' + g
+ );
+ if (storedData) {
+ const documents = JSON.parse(
+ storedData,
+ options.disableDateParser ? (v) => v : fixDates
+ );
+ documents.forEach((doc) => {
+ LocalCol._collection.upsert(doc);
});
- };
-
-
- LocalCol.__insert = LocalCol.insert;
- LocalCol.__update = LocalCol.update;
- LocalCol.__remove = LocalCol.remove;
-
- LocalCol.insert = (...args) => {
- LocalCol.__insert(...args);
- storeLocalCol();
- };
- LocalCol.update = (...args) => {
- LocalCol.__update(...args);
- storeLocalCol();
- };
- LocalCol.remove = (...args) => {
- LocalCol.__remove(...args);
- storeLocalCol();
- };
-
- LocalCol.loadPromise = loadData();
- LocalCol.save = storeLocalCol;
-
- return LocalCol;
- }
+ }
+ }
+ } else {
+ const storedData = await AsyncStorage.getItem('@mrnlocal:' + name);
+ if (storedData) {
+ const documents = JSON.parse(
+ storedData,
+ options.disableDateParser ? (v) => v : fixDates
+ );
+ documents.forEach((doc) => {
+ LocalCol._collection.upsert(doc);
+ });
+ }
+ }
+
+ LiveCol.find({}).observe({
+ added: async (doc) => {
+ LocalCol._collection.upsert(doc);
+ storeLocalCol();
+ },
+ changed: async (doc) => {
+ LocalCol._collection.upsert(doc);
+ storeLocalCol();
+ },
+ });
+ };
+
+ LocalCol.__insert = LocalCol.insert;
+ LocalCol.__update = LocalCol.update;
+ LocalCol.__remove = LocalCol.remove;
+
+ LocalCol.insert = (...args) => {
+ LocalCol.__insert(...args);
+ storeLocalCol();
+ };
+ LocalCol.update = (...args) => {
+ LocalCol.__update(...args);
+ storeLocalCol();
+ };
+ LocalCol.remove = (...args) => {
+ LocalCol.__remove(...args);
+ storeLocalCol();
+ };
+
+ LocalCol.loadPromise = loadData();
+ LocalCol.save = storeLocalCol;
+
+ return LocalCol;
+ },
};
export default Local;
diff --git a/companion-packages/meteorrn-ndev-mfa/README.md b/companion-packages/meteorrn-ndev-mfa/README.md
index c22961d..ede0ad2 100644
--- a/companion-packages/meteorrn-ndev-mfa/README.md
+++ b/companion-packages/meteorrn-ndev-mfa/README.md
@@ -3,6 +3,7 @@
# ndev:mfa for MeteorRN
This pacakge allows your MeteorRN app to interact with `ndev:mfa`. It does not support using a security key, but for users with u2f MFA, it takes advantage of the U2F Authorization Code feature. This package exposes the following client methods for MFA.
+
- useU2FAuthorizationCode
- finishLogin
- loginWithMFA
@@ -10,7 +11,7 @@ This pacakge allows your MeteorRN app to interact with `ndev:mfa`. It does not s
Here's a simple login flow:
-````
+```
import MFA from '@meteorrn/ndev-mfa';
MFA.login(username, password).then(r => {
@@ -19,11 +20,11 @@ MFA.login(username, password).then(r => {
}
else {
let code = await collectTheCodeSomehow();
-
+
if(r.method === "u2f") {
code = MFA.useU2FAuthorizationCode(code);
}
-
+
MFA.finishLogin(r.finishLoginParams, code).then(() => {
// Login Complete
}).catch(err => {
@@ -34,4 +35,4 @@ MFA.login(username, password).then(r => {
// Error (Incorrect Password? Invalid Account?)
});
-````
+```
diff --git a/companion-packages/meteorrn-ndev-mfa/index.js b/companion-packages/meteorrn-ndev-mfa/index.js
index bebbac3..ef83134 100644
--- a/companion-packages/meteorrn-ndev-mfa/index.js
+++ b/companion-packages/meteorrn-ndev-mfa/index.js
@@ -3,96 +3,110 @@ import Meteor, { Accounts } from '@meteorrn/core';
import { loginChallengeHandler, loginCompletionHandler } from './method-names';
let useU2FAuthorizationCode = function (code) {
- if(typeof(code) !== "string" || code.length !== 6) {
- throw new Error("Invalid Code");
- }
-
- return {U2FAuthorizationCode:code};
+ if (typeof code !== 'string' || code.length !== 6) {
+ throw new Error('Invalid Code');
+ }
+
+ return { U2FAuthorizationCode: code };
};
-let assembleChallengeCompletionArguments = async function (finishLoginParams, code) {
- let {res} = finishLoginParams;
- let methodArguments = [];
-
- if(res.method === "u2f") {
- let assertion;
- if(code && code.U2FAuthorizationCode) {
- /*
+let assembleChallengeCompletionArguments = async function (
+ finishLoginParams,
+ code
+) {
+ let { res } = finishLoginParams;
+ let methodArguments = [];
+
+ if (res.method === 'u2f') {
+ let assertion;
+ if (code && code.U2FAuthorizationCode) {
+ /*
We require that the MFA.useU2FAuthorizationCode method is used
even though we just pull the code out to make sure the code isn't
actually an OTP due to a coding error.
*/
- let {challengeId, challengeSecret} = finishLoginParams.res;
- assertion = {challengeId, challengeSecret, ...code};
- }
- else {
- throw new Error("Code must be a U2FAuthorizationCode");
- }
- methodArguments.push(assertion);
+ let { challengeId, challengeSecret } = finishLoginParams.res;
+ assertion = { challengeId, challengeSecret, ...code };
+ } else {
+ throw new Error('Code must be a U2FAuthorizationCode');
}
+ methodArguments.push(assertion);
+ }
- if(res.method === "otp" || res.method === "totp") {
- if(!code) {
- throw new Meteor.Error("otp-required", "An OTP is required");
- }
-
- methodArguments.push({...res, code});
- }
-
- return methodArguments;
+ if (res.method === 'otp' || res.method === 'totp') {
+ if (!code) {
+ throw new Meteor.Error('otp-required', 'An OTP is required');
+ }
+
+ methodArguments.push({ ...res, code });
+ }
+
+ return methodArguments;
};
-let finishLogin = (finishLoginParams, code) => new Promise(async (resolve, reject) => {
+let finishLogin = (finishLoginParams, code) =>
+ new Promise(async (resolve, reject) => {
let methodName = loginCompletionHandler();
- let methodArguments = await assembleChallengeCompletionArguments(finishLoginParams, code);
-
+ let methodArguments = await assembleChallengeCompletionArguments(
+ finishLoginParams,
+ code
+ );
+
Meteor._startLoggingIn();
Meteor.call(methodName, ...methodArguments, (err, result) => {
- Meteor._endLoggingIn();
- Meteor._handleLoginCallback(err, result);
-
- if(err) {
- reject(err);
- }
- else {
- resolve();
- }
- },
- );
-});
-
-let loginWithMFA = (username, password) => new Promise((resolve, reject) => {
- Meteor.call(loginChallengeHandler(), username, Accounts._hashPassword(password), async (err, res) => {
- if(err) {
- return reject(err);
- }
-
- let finishLoginParams = {res, _type:"login"};
- let doesSupportU2FLogin = false;
-
- resolve({supportsU2FLogin:doesSupportU2FLogin, method:res.method, finishLoginParams, finishParams:finishLoginParams});
+ Meteor._endLoggingIn();
+ Meteor._handleLoginCallback(err, result);
+
+ if (err) {
+ reject(err);
+ } else {
+ resolve();
+ }
});
-});
-
-let login = (username, password) => new Promise((resolve, reject) => {
- Meteor.loginWithPassword(username, password, err => {
- if(err) {
- if(err.error === "mfa-required") {
- loginWithMFA(username, password).then(resolve).catch(reject);
- }
- else {
- reject(err);
- }
+ });
+
+let loginWithMFA = (username, password) =>
+ new Promise((resolve, reject) => {
+ Meteor.call(
+ loginChallengeHandler(),
+ username,
+ Accounts._hashPassword(password),
+ async (err, res) => {
+ if (err) {
+ return reject(err);
}
- else {
- resolve({method:null});
+
+ let finishLoginParams = { res, _type: 'login' };
+ let doesSupportU2FLogin = false;
+
+ resolve({
+ supportsU2FLogin: doesSupportU2FLogin,
+ method: res.method,
+ finishLoginParams,
+ finishParams: finishLoginParams,
+ });
+ }
+ );
+ });
+
+let login = (username, password) =>
+ new Promise((resolve, reject) => {
+ Meteor.loginWithPassword(username, password, (err) => {
+ if (err) {
+ if (err.error === 'mfa-required') {
+ loginWithMFA(username, password).then(resolve).catch(reject);
+ } else {
+ reject(err);
}
+ } else {
+ resolve({ method: null });
+ }
});
-});
+ });
export default {
- useU2FAuthorizationCode,
- finishLogin,
- loginWithMFA,
- login,
+ useU2FAuthorizationCode,
+ finishLogin,
+ loginWithMFA,
+ login,
};
diff --git a/companion-packages/meteorrn-ndev-mfa/method-names.js b/companion-packages/meteorrn-ndev-mfa/method-names.js
index 23678b4..6daccda 100644
--- a/companion-packages/meteorrn-ndev-mfa/method-names.js
+++ b/companion-packages/meteorrn-ndev-mfa/method-names.js
@@ -1,13 +1,20 @@
-export let registrationChallengeHandlerU2F = () => "registrationChallengeHandlerU2F";
-export let registerCompletionHandlerU2F = () => "registerCompletionHandlerU2F";
-export let loginChallengeHandler = () => "loginChallengeHandler";
-export let loginCompletionHandlerU2F = () => "loginCompletionHandlerU2F";
-export let loginCompletionHandlerOTP = () => "loginCompletionHandlerOTP";
-export let resetPasswordChallengeHandler = () => "resetPasswordChallengeHandler";
-export let checkResetPasswordHasMFA = () => "checkResetPasswordHasMFA";
-export let registrationChallengeHandlerTOTP = () => "registrationChallengeHandlerTOTP";
-export let registrationCompletionHandlerTOTP = () => "registrationCompletionHandlerTOTP";
-export let loginCompletionHandler = () => "loginCompletionHandler";
-export let resetPasswordCheckMFARequired = () => "resetPasswordCheckMFARequired";
-export let authorizeActionChallengeHandler = () => "authorizeActionChallengeHandler";
-export let authorizeActionCompletionHandler = () => "authorizeActionCompletionHandler";
\ No newline at end of file
+export let registrationChallengeHandlerU2F = () =>
+ 'registrationChallengeHandlerU2F';
+export let registerCompletionHandlerU2F = () => 'registerCompletionHandlerU2F';
+export let loginChallengeHandler = () => 'loginChallengeHandler';
+export let loginCompletionHandlerU2F = () => 'loginCompletionHandlerU2F';
+export let loginCompletionHandlerOTP = () => 'loginCompletionHandlerOTP';
+export let resetPasswordChallengeHandler = () =>
+ 'resetPasswordChallengeHandler';
+export let checkResetPasswordHasMFA = () => 'checkResetPasswordHasMFA';
+export let registrationChallengeHandlerTOTP = () =>
+ 'registrationChallengeHandlerTOTP';
+export let registrationCompletionHandlerTOTP = () =>
+ 'registrationCompletionHandlerTOTP';
+export let loginCompletionHandler = () => 'loginCompletionHandler';
+export let resetPasswordCheckMFARequired = () =>
+ 'resetPasswordCheckMFARequired';
+export let authorizeActionChallengeHandler = () =>
+ 'authorizeActionChallengeHandler';
+export let authorizeActionCompletionHandler = () =>
+ 'authorizeActionCompletionHandler';
diff --git a/docs/api.md b/docs/api.md
index f08c1f1..71f4f02 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -1,6 +1,7 @@
# Meteor React Native Docs
Table of Contents
+
- [Meteor](#meteor)
- [Tracker](#tracker)
- [Mongo](#mongo)
@@ -10,37 +11,45 @@ Table of Contents
`import Meteor from '@meteorrn/core';`
-
### `Meteor.connect(url, options)`
+
Connect to the Meteor Server
**url**: The URL of your Meteor Server websocket. This should typically start with `ws://` (insecure, like `http://`) or `wss://` (secure, like `https://`), and have the path `/websocket`, e.g.: `wss://myapp.meteor.com/websocket`
**options**:
-* autoConnect **boolean** [true] whether to establish the connection to the server upon instantiation. When false, one can manually establish the connection with the Meteor.ddp.connect method.
-* autoReconnect **boolean** [true] whether to try to reconnect to the server when the socket connection closes, unless the closing was initiated by a call to the disconnect method.
-* reconnectInterval **number** [10000] the interval in ms between reconnection attempts.
-* AsyncStorage **object** your preferred AsyncStorage. Defaults to `'@react-native-async-storage/async-storage'` as a peer dependency.
+
+- autoConnect **boolean** [true] whether to establish the connection to the server upon instantiation. When false, one can manually establish the connection with the Meteor.ddp.connect method.
+- autoReconnect **boolean** [true] whether to try to reconnect to the server when the socket connection closes, unless the closing was initiated by a call to the disconnect method.
+- reconnectInterval **number** [10000] the interval in ms between reconnection attempts.
+- AsyncStorage **object** your preferred AsyncStorage. Defaults to `'@react-native-async-storage/async-storage'` as a peer dependency.
### `Meteor.disconnect()`
+
Disconnect from the Meteor server
### `Meteor.call(name, [arg1, arg2...], [asyncCallback])`
+
Perform a call to a method
### `Meteor.subscribe(name, [arg1, arg2, arg3])`
+
Subscribe to a collection
### `Meteor.user()`
+
Returns the logged in user
### `Meteor.users`
+
Access the meteor users collection
### `Meteor.userId()`
+
Returns the userId of the logged in user
### `Meteor.status()`
+
Gets the current connection status. Returns an object with the following properties:
**connected**: Boolean
@@ -48,9 +57,11 @@ Gets the current connection status. Returns an object with the following propert
**status**: "connected" || "disconnected"
### `Meteor.loggingIn()`
+
Returns true if attempting to login
### `Meteor.loggingOut()`
+
Returns true if attempting to logout
### `Meteor.loginWithPassword`
@@ -59,127 +70,128 @@ Returns true if attempting to logout
### `Meteor.logoutOtherClients`
-
-
Tracker
`import { withTracker, useTracker } from '@meteorrn/core'`;
-
#### `withTracker(trackerFunc)(Component)`
+
Creates a new Tracker
**Arguments:**
- * trackerFunc - Function which will be re-run reactively when it's dependencies are updated. Must return an object that is passed as properties to `Component`
- * Component - React Component which will receive properties from trackerFunc
+- trackerFunc - Function which will be re-run reactively when it's dependencies are updated. Must return an object that is passed as properties to `Component`
+- Component - React Component which will receive properties from trackerFunc
#### `useTracker(trackerFunc)` => `React Hook`
+
Creates a new Tracker React Hook. Can only be used inside a function component. See React Docs for more info.
**Arguments:**
- * trackerFunc - Function which will be re-run reactively when it's dependencies are updated.
-
+- trackerFunc - Function which will be re-run reactively when it's dependencies are updated.
## ReactiveDict
`import { ReactiveDict } from '@meteorrn/core'`
-#### `new ReactiveDict()` => *`ReactiveDict`*
-Creates a new reactive dictionary
-
+#### `new ReactiveDict()` => _`ReactiveDict`_
-#### *`ReactiveDict`*
+Creates a new reactive dictionary
-***ReactiveDict* Methods:**
- * .get(key) - Gets value of key (Reactive)
- * .set(key, value) - Sets value of key
+#### _`ReactiveDict`_
+**_ReactiveDict_ Methods:**
+- .get(key) - Gets value of key (Reactive)
+- .set(key, value) - Sets value of key
Mongo
`import { Mongo } from '@meteorrn/core';`
#### `new Mongo.Collection(collectionName, options)` => `Collection`
-Creates and returns a *Collection*
-**Arguments**
- * collectionName - Name of the remote collection, or pass `null` for a client-side collection
+Creates and returns a _Collection_
+**Arguments**
-#### *`Collection`*
+- collectionName - Name of the remote collection, or pass `null` for a client-side collection
-***Collection* Methods:**
- * .insert(document) - Inserts document into collection
- * .update(query, modifications) - Updates document in collection
- * .remove(query) - Removes document from collection
- * .find(query) => *`Cursor`* - Returns a Cursor
- * .findOne(query) => Document - Retrieves first matching Document
+#### _`Collection`_
+**_Collection_ Methods:**
-#### *`Cursor`*
+- .insert(document) - Inserts document into collection
+- .update(query, modifications) - Updates document in collection
+- .remove(query) - Removes document from collection
+- .find(query) => _`Cursor`_ - Returns a Cursor
+- .findOne(query) => Document - Retrieves first matching Document
-***Cursor* Methods:**
- * .obsrve() - Mirrors Meteor's observe behavior. Accepts object with the properties `added`, `changed`, and `removed`.
- * .fetch() => `[Document]` - Retrieves an array of matching documents
+#### _`Cursor`_
+**_Cursor_ Methods:**
+- .obsrve() - Mirrors Meteor's observe behavior. Accepts object with the properties `added`, `changed`, and `removed`.
+- .fetch() => `[Document]` - Retrieves an array of matching documents
Accounts
`import { Accounts } from '@meteorrn/core';`
-
#### `Accounts.createUser(user, callback)`
+
Creates a user
**Arguments**
- * user - The user object
- * callback - Called with a single error object or null on success
+- user - The user object
+- callback - Called with a single error object or null on success
#### `Accounts.changePassword(oldPassword, newPassword)`
+
Changes a user's password
**Arguments**
- * oldPassword - The user's current password
- * newPassword - The user's new password
+- oldPassword - The user's current password
+- newPassword - The user's new password
#### `Accounts.onLogin(callback)`
+
Registers a callback to be called when user is logged in
**Arguments**
- * callback
+- callback
#### `Accounts.onLoginFailure(callback)`
+
Registers a callback to be called when login fails
**Arguments**
- * callback
+- callback
#### `Accounts._hashPassword(plaintext)` => `{algorithm:"sha-256", digest:"..."}`
+
Hashes a password using the sha-256 algorithm. Returns an object formatted for use in accounts calls. You can access the raw hashed string using the digest property.
**Arguments**
- * plaintext - The plaintext string you want to hash
-
-Other:
-* [Accounts.forgotPassword](http://docs.meteor.com/#/full/accounts_changepassword)
-* [Accounts.resetPassword](http://docs.meteor.com/#/full/accounts_resetpassword)
+- plaintext - The plaintext string you want to hash
+Other:
+- [Accounts.forgotPassword](http://docs.meteor.com/#/full/accounts_changepassword)
+- [Accounts.resetPassword](http://docs.meteor.com/#/full/accounts_resetpassword)
## Verbosity
+
`import { enableVerbose } from '@meteorrn/core';`
Verbose Mode logs detailed information from various places around MeteorRN. **Note:** this will expose login tokens and other private information to the console.
-
#### `enableVerbose()`
+
Enables verbose mode
diff --git a/docs/installation.md b/docs/installation.md
index 256572f..c8309af 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -6,4 +6,4 @@ This package does not utilize any native modules, so to install, just:
Then in your code, make sure you run [`Meteor.connect`](/docs/api.md) to connect to your server.
-**Note**: this module contains *breaking changes*, so it will not work for React Native versions under 0.60.0.
+**Note**: this module contains _breaking changes_, so it will not work for React Native versions under 0.60.0.
diff --git a/examples/Login.jsx b/examples/Login.jsx
index 984c8d7..c2d00e2 100644
--- a/examples/Login.jsx
+++ b/examples/Login.jsx
@@ -3,38 +3,42 @@ import { View, TextInput, Button, Alert } from 'react-native';
import Meteor, { withTracker } from '@meteorrn/core';
class Login extends React.Component {
-
- state = {email:"", password:""};
+ state = { email: '', password: '' };
onLogin = () => {
let { email, password } = this.state;
-
- Meteor.loginWithPassword(email, password, err => {
- if(err) {
- Alert.alert("Error", err.reason);
- }
- else {
+
+ Meteor.loginWithPassword(email, password, (err) => {
+ if (err) {
+ Alert.alert('Error', err.reason);
+ } else {
// ...
}
});
- }
+ };
render() {
let { loggingIn } = this.props;
-
+
return (
- Login
-
- this.setState({email})}/>
-
- this.setState({password})}/>
-
- {loggingIn ?
- Loading...
- :
-
- }
+ Login
+
+ this.setState({ email })}
+ />
+
+ this.setState({ password })}
+ />
+
+ {loggingIn ? (
+ Loading...
+ ) : (
+
+ )}
);
}
@@ -42,6 +46,6 @@ class Login extends React.Component {
export default withTracker(() => {
return {
- loggingIn:Meteor.loggingIn()
+ loggingIn: Meteor.loggingIn(),
};
})(Login);
diff --git a/helpers/reactNativeBindings.js b/helpers/reactNativeBindings.js
index 81282bd..181cb61 100644
--- a/helpers/reactNativeBindings.js
+++ b/helpers/reactNativeBindings.js
@@ -1,4 +1,4 @@
-const bindings = {}
+const bindings = {};
// TODO:
// we should consider implementing an injection-based pattern for
@@ -10,15 +10,17 @@ const bindings = {}
// when devs inject their favourable behaviour
try {
- require.resolve('react-native')
- bindings.batchedUpdates = require('react-native/Libraries/Renderer/shims/ReactNative').unstable_batchedUpdates;
- bindings.runAfterInteractions = require('react-native').InteractionManager.runAfterInteractions;
+ require.resolve('react-native');
+ bindings.batchedUpdates =
+ require('react-native/Libraries/Renderer/shims/ReactNative').unstable_batchedUpdates;
+ bindings.runAfterInteractions =
+ require('react-native').InteractionManager.runAfterInteractions;
} catch (e) {
// if the module is not installed (for example when running tests)
// we fall back to some defaults that seem to be close to what
// the original functions implement
- bindings.batchedUpdates = cb => cb()
- bindings.runAfterInteractions = fn => setTimeout(() => fn(), 50)
+ bindings.batchedUpdates = (cb) => cb();
+ bindings.runAfterInteractions = (fn) => setTimeout(() => fn(), 50);
}
-module.exports = bindings
+module.exports = bindings;
diff --git a/lib/ddp.js b/lib/ddp.js
index f8b7b4e..040d627 100644
--- a/lib/ddp.js
+++ b/lib/ddp.js
@@ -22,41 +22,44 @@ const PUBLIC_EVENTS = [
const DEFAULT_RECONNECT_INTERVAL = 10000;
class EventInterface {
- constructor() {
- this.listeners = {};
- PUBLIC_EVENTS.forEach(eventName => {
- this.listeners[eventName] = {};
- });
- }
-
- activate(ddp) {
- this.ddp = ddp;
- PUBLIC_EVENTS.forEach(eventName => {
- this.ddp.addListener(eventName, event => {
- this._handleEvent(eventName, event);
- });
- });
- }
-
- _handleEvent(eventName, event) {
- for(let func of Object.values(this.listeners[eventName])) {
- try {
- func(event);
- }
- catch(e) {
- console.error("@meteorrn/core failed to call DDP event handler for " + eventName, e);
- }
- }
- }
-
- on(eventName, func) {
- const id = Math.random()+"";
- if(!this.listeners[eventName]) throw new Error(`Unsupported event name "${eventName}"`);
- this.listeners[eventName][id] = func;
- return {remove:() => delete this.listeners[eventName][id]};
- }
+ constructor() {
+ this.listeners = {};
+ PUBLIC_EVENTS.forEach((eventName) => {
+ this.listeners[eventName] = {};
+ });
+ }
+
+ activate(ddp) {
+ this.ddp = ddp;
+ PUBLIC_EVENTS.forEach((eventName) => {
+ this.ddp.addListener(eventName, (event) => {
+ this._handleEvent(eventName, event);
+ });
+ });
+ }
+
+ _handleEvent(eventName, event) {
+ for (let func of Object.values(this.listeners[eventName])) {
+ try {
+ func(event);
+ } catch (e) {
+ console.error(
+ '@meteorrn/core failed to call DDP event handler for ' + eventName,
+ e
+ );
+ }
+ }
+ }
+
+ on(eventName, func) {
+ const id = Math.random() + '';
+ if (!this.listeners[eventName])
+ throw new Error(`Unsupported event name "${eventName}"`);
+ this.listeners[eventName][id] = func;
+ return { remove: () => delete this.listeners[eventName][id] };
+ }
}
-
+
const eventInterface = new EventInterface();
export default class DDP extends EventEmitter {
@@ -66,7 +69,7 @@ export default class DDP extends EventEmitter {
constructor(options) {
super();
-
+
this.eventInterface = eventInterface;
eventInterface.activate(this);
@@ -78,7 +81,7 @@ export default class DDP extends EventEmitter {
this.reconnectInterval =
options.reconnectInterval || DEFAULT_RECONNECT_INTERVAL;
- this.messageQueue = new Queue(message => {
+ this.messageQueue = new Queue((message) => {
if (this.status === 'connected') {
this.socket.send(message);
return true;
@@ -109,7 +112,7 @@ export default class DDP extends EventEmitter {
}
});
- this.socket.on('message:in', message => {
+ this.socket.on('message:in', (message) => {
if (message.msg === 'connected') {
this.status = 'connected';
this.messageQueue.process();
@@ -134,10 +137,10 @@ export default class DDP extends EventEmitter {
disconnect() {
/*
- * If `disconnect` is called, the caller likely doesn't want the
- * the instance to try to auto-reconnect. Therefore we set the
- * `autoReconnect` flag to false.
- */
+ * If `disconnect` is called, the caller likely doesn't want the
+ * the instance to try to auto-reconnect. Therefore we set the
+ * `autoReconnect` flag to false.
+ */
this.autoReconnect = false;
this.socket.close();
}
diff --git a/lib/mongo-id.js b/lib/mongo-id.js
index 4198220..61fc45e 100644
--- a/lib/mongo-id.js
+++ b/lib/mongo-id.js
@@ -3,7 +3,7 @@ import EJSON from 'ejson';
const MongoID = {};
-const objectIdRegex = /^[0-9a-f]*$/
+const objectIdRegex = /^[0-9a-f]*$/;
MongoID._looksLikeObjectID = function _looksLikeObjectID(str) {
return str.length === 24 && objectIdRegex.test(str);
@@ -21,7 +21,9 @@ MongoID.ObjectID = function ObjectID(hexString) {
self._str = hexString;
} else {
// self._str = Random.hexString(24);
- throw new Error('Random.hexString not implemented, please pass a hexString');
+ throw new Error(
+ 'Random.hexString not implemented, please pass a hexString'
+ );
}
};
@@ -51,11 +53,14 @@ MongoID.ObjectID.prototype.getTimestamp = function getTimestamp() {
return parseInt(self._str.substr(0, 8), 16);
};
-MongoID.ObjectID.prototype.valueOf = MongoID.ObjectID.prototype.toJSONValue = MongoID.ObjectID.prototype.toHexString = function() {
- return this._str;
-};
+MongoID.ObjectID.prototype.valueOf =
+ MongoID.ObjectID.prototype.toJSONValue =
+ MongoID.ObjectID.prototype.toHexString =
+ function () {
+ return this._str;
+ };
-EJSON.addType('oid', function(str) {
+EJSON.addType('oid', function (str) {
return new MongoID.ObjectID(str);
});
diff --git a/lib/queue.js b/lib/queue.js
index 62fbd0c..2fc1f3a 100644
--- a/lib/queue.js
+++ b/lib/queue.js
@@ -1,10 +1,10 @@
export default class Queue {
/*
- * As the name implies, `consumer` is the (sole) consumer of the queue.
- * It gets called with each element of the queue and its return value
- * serves as a ack, determining whether the element is removed or not from
- * the queue, allowing then subsequent elements to be processed.
- */
+ * As the name implies, `Consumer` is the (sole) consumer of the queue.
+ * It gets called with each element of the queue and its return value
+ * serves as a ack, determining whether the element is removed or not from
+ * the queue, allowing then subsequent elements to be processed.
+ */
constructor(consumer) {
this.consumer = consumer;
diff --git a/lib/sha256.js b/lib/sha256.js
new file mode 100644
index 0000000..4020435
--- /dev/null
+++ b/lib/sha256.js
@@ -0,0 +1,236 @@
+/// METEOR WRAPPER
+//
+export const SHA256 = (function () {
+ /**
+ * Used from: https://github.com/meteor/meteor/blob/devel/packages/sha/sha256.js
+ * Secure Hash Algorithm (SHA256)
+ * http://www.webtoolkit.info/javascript-sha256.html
+ * http://anmar.eu.org/projects/jssha2/
+ *
+ * Original code by Angel Marin, Paul Johnston.
+ *
+ **/
+
+ function SHA256(s) {
+ var chrsz = 8;
+ var hexcase = 0;
+
+ function safe_add(x, y) {
+ var lsw = (x & 0xffff) + (y & 0xffff);
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return (msw << 16) | (lsw & 0xffff);
+ }
+
+ function S(X, n) {
+ return (X >>> n) | (X << (32 - n));
+ }
+ function R(X, n) {
+ return X >>> n;
+ }
+ function Ch(x, y, z) {
+ return (x & y) ^ (~x & z);
+ }
+ function Maj(x, y, z) {
+ return (x & y) ^ (x & z) ^ (y & z);
+ }
+ function Sigma0256(x) {
+ return S(x, 2) ^ S(x, 13) ^ S(x, 22);
+ }
+ function Sigma1256(x) {
+ return S(x, 6) ^ S(x, 11) ^ S(x, 25);
+ }
+ function Gamma0256(x) {
+ return S(x, 7) ^ S(x, 18) ^ R(x, 3);
+ }
+ function Gamma1256(x) {
+ return S(x, 17) ^ S(x, 19) ^ R(x, 10);
+ }
+
+ function core_sha256(m, l) {
+ var K = new Array(
+ 0x428a2f98,
+ 0x71374491,
+ 0xb5c0fbcf,
+ 0xe9b5dba5,
+ 0x3956c25b,
+ 0x59f111f1,
+ 0x923f82a4,
+ 0xab1c5ed5,
+ 0xd807aa98,
+ 0x12835b01,
+ 0x243185be,
+ 0x550c7dc3,
+ 0x72be5d74,
+ 0x80deb1fe,
+ 0x9bdc06a7,
+ 0xc19bf174,
+ 0xe49b69c1,
+ 0xefbe4786,
+ 0xfc19dc6,
+ 0x240ca1cc,
+ 0x2de92c6f,
+ 0x4a7484aa,
+ 0x5cb0a9dc,
+ 0x76f988da,
+ 0x983e5152,
+ 0xa831c66d,
+ 0xb00327c8,
+ 0xbf597fc7,
+ 0xc6e00bf3,
+ 0xd5a79147,
+ 0x6ca6351,
+ 0x14292967,
+ 0x27b70a85,
+ 0x2e1b2138,
+ 0x4d2c6dfc,
+ 0x53380d13,
+ 0x650a7354,
+ 0x766a0abb,
+ 0x81c2c92e,
+ 0x92722c85,
+ 0xa2bfe8a1,
+ 0xa81a664b,
+ 0xc24b8b70,
+ 0xc76c51a3,
+ 0xd192e819,
+ 0xd6990624,
+ 0xf40e3585,
+ 0x106aa070,
+ 0x19a4c116,
+ 0x1e376c08,
+ 0x2748774c,
+ 0x34b0bcb5,
+ 0x391c0cb3,
+ 0x4ed8aa4a,
+ 0x5b9cca4f,
+ 0x682e6ff3,
+ 0x748f82ee,
+ 0x78a5636f,
+ 0x84c87814,
+ 0x8cc70208,
+ 0x90befffa,
+ 0xa4506ceb,
+ 0xbef9a3f7,
+ 0xc67178f2
+ );
+ var HASH = new Array(
+ 0x6a09e667,
+ 0xbb67ae85,
+ 0x3c6ef372,
+ 0xa54ff53a,
+ 0x510e527f,
+ 0x9b05688c,
+ 0x1f83d9ab,
+ 0x5be0cd19
+ );
+ var W = new Array(64);
+ var a, b, c, d, e, f, g, h, i, j;
+ var T1, T2;
+
+ m[l >> 5] |= 0x80 << (24 - (l % 32));
+ m[(((l + 64) >> 9) << 4) + 15] = l;
+
+ for (var i = 0; i < m.length; i += 16) {
+ a = HASH[0];
+ b = HASH[1];
+ c = HASH[2];
+ d = HASH[3];
+ e = HASH[4];
+ f = HASH[5];
+ g = HASH[6];
+ h = HASH[7];
+
+ for (var j = 0; j < 64; j++) {
+ if (j < 16) W[j] = m[j + i];
+ else
+ W[j] = safe_add(
+ safe_add(
+ safe_add(Gamma1256(W[j - 2]), W[j - 7]),
+ Gamma0256(W[j - 15])
+ ),
+ W[j - 16]
+ );
+
+ T1 = safe_add(
+ safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]),
+ W[j]
+ );
+ T2 = safe_add(Sigma0256(a), Maj(a, b, c));
+
+ h = g;
+ g = f;
+ f = e;
+ e = safe_add(d, T1);
+ d = c;
+ c = b;
+ b = a;
+ a = safe_add(T1, T2);
+ }
+
+ HASH[0] = safe_add(a, HASH[0]);
+ HASH[1] = safe_add(b, HASH[1]);
+ HASH[2] = safe_add(c, HASH[2]);
+ HASH[3] = safe_add(d, HASH[3]);
+ HASH[4] = safe_add(e, HASH[4]);
+ HASH[5] = safe_add(f, HASH[5]);
+ HASH[6] = safe_add(g, HASH[6]);
+ HASH[7] = safe_add(h, HASH[7]);
+ }
+ return HASH;
+ }
+
+ function str2binb(str) {
+ var bin = Array();
+ var mask = (1 << chrsz) - 1;
+ for (var i = 0; i < str.length * chrsz; i += chrsz) {
+ bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - (i % 32));
+ }
+ return bin;
+ }
+
+ function Utf8Encode(string) {
+ // METEOR change:
+ // The webtoolkit.info version of this code added this
+ // Utf8Encode function (which does seem necessary for dealing
+ // with arbitrary Unicode), but the following line seems
+ // problematic:
+ //
+ // string = string.replace(/\r\n/g,"\n");
+ var utftext = '';
+
+ for (var n = 0; n < string.length; n++) {
+ var c = string.charCodeAt(n);
+
+ if (c < 128) {
+ utftext += String.fromCharCode(c);
+ } else if (c > 127 && c < 2048) {
+ utftext += String.fromCharCode((c >> 6) | 192);
+ utftext += String.fromCharCode((c & 63) | 128);
+ } else {
+ utftext += String.fromCharCode((c >> 12) | 224);
+ utftext += String.fromCharCode(((c >> 6) & 63) | 128);
+ utftext += String.fromCharCode((c & 63) | 128);
+ }
+ }
+
+ return utftext;
+ }
+
+ function binb2hex(binarray) {
+ var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef';
+ var str = '';
+ for (var i = 0; i < binarray.length * 4; i++) {
+ str +=
+ hex_tab.charAt((binarray[i >> 2] >> ((3 - (i % 4)) * 8 + 4)) & 0xf) +
+ hex_tab.charAt((binarray[i >> 2] >> ((3 - (i % 4)) * 8)) & 0xf);
+ }
+ return str;
+ }
+
+ s = Utf8Encode(s);
+ return binb2hex(core_sha256(str2binb(s), s.length * chrsz));
+ }
+
+ /// METEOR WRAPPER
+ return SHA256;
+})();
diff --git a/lib/socket.js b/lib/socket.js
index 3184f59..0153013 100644
--- a/lib/socket.js
+++ b/lib/socket.js
@@ -22,14 +22,14 @@ export default class Socket extends EventEmitter {
open() {
/*
- * Makes `open` a no-op if there's already a `rawSocket`. This avoids
- * memory / socket leaks if `open` is called twice (e.g. by a user
- * calling `ddp.connect` twice) without properly disposing of the
- * socket connection. `rawSocket` gets automatically set to `null` only
- * when it goes into a closed or error state. This way `rawSocket` is
- * disposed of correctly: the socket connection is closed, and the
- * object can be garbage collected.
- */
+ * Makes `open` a no-op if there's already a `rawSocket`. This avoids
+ * memory / socket leaks if `open` is called twice (e.g. by a user
+ * calling `ddp.connect` twice) without properly disposing of the
+ * socket connection. `rawSocket` gets automatically set to `null` only
+ * when it goes into a closed or error state. This way `rawSocket` is
+ * disposed of correctly: the socket connection is closed, and the
+ * object can be garbage collected.
+ */
if (this.rawSocket) {
return;
}
@@ -37,9 +37,9 @@ export default class Socket extends EventEmitter {
this.rawSocket = new this.SocketConstructor(this.endpoint);
/*
- * Calls to `onopen` and `onclose` directly trigger the `open` and
- * `close` events on the `Socket` instance.
- */
+ * Calls to `onopen` and `onclose` directly trigger the `open` and
+ * `close` events on the `Socket` instance.
+ */
this.rawSocket.onopen = () => this.emit('open');
this.rawSocket.onclose = () => {
this.rawSocket = null;
@@ -47,11 +47,11 @@ export default class Socket extends EventEmitter {
this.closing = false;
};
/*
- * Calls to `onmessage` trigger a `message:in` event on the `Socket`
- * instance only once the message (first parameter to `onmessage`) has
- * been successfully parsed into a javascript object.
- */
- this.rawSocket.onmessage = message => {
+ * Calls to `onmessage` trigger a `message:in` event on the `Socket`
+ * instance only once the message (first parameter to `onmessage`) has
+ * been successfully parsed into a javascript object.
+ */
+ this.rawSocket.onmessage = (message) => {
var object;
try {
object = EJSON.parse(message.data);
@@ -68,8 +68,8 @@ export default class Socket extends EventEmitter {
close() {
/*
- * Avoid throwing an error if `rawSocket === null`
- */
+ * Avoid throwing an error if `rawSocket === null`
+ */
if (this.rawSocket) {
this.closing = true;
this.rawSocket.close();
diff --git a/lib/utils.js b/lib/utils.js
index 7f8196b..2fbb40b 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -1,5 +1,4 @@
-import SHA256 from 'crypto-js/sha256';
-import _ from 'underscore';
+import { SHA256 } from './sha256';
var i = 0;
export function uniqueId() {
@@ -11,7 +10,7 @@ export function uniqueId() {
// implement a secure hashing algorithm like bcrypt
export function hashPassword(password) {
return {
- digest: SHA256(password).toString(), // lgtm [js/insufficient-password-hash]
+ digest: SHA256(password),
algorithm: 'sha-256',
};
}
@@ -21,17 +20,16 @@ var class2type = {};
var toString = class2type.toString;
-var hasOwn = class2type.hasOwnProperty;
+export const hasOwn = (obj, prop) =>
+ Object.prototype.hasOwnProperty.call(obj, prop);
var support = {};
// Populate the class2type map
-_.each(
- 'Boolean Number String Function Array Date RegExp Object Error'.split(' '),
- function(name, i) {
- class2type['[object ' + name + ']'] = name.toLowerCase();
- }
-);
+const typeMap = 'Boolean Number String Function Array Date RegExp Object Error';
+typeMap.split(' ').forEach((name, i) => {
+ class2type[`[object ${name}]`] = name.toLowerCase();
+});
function type(obj) {
if (obj == null) {
@@ -61,8 +59,8 @@ export function isPlainObject(obj) {
// Not own constructor property must be Object
if (
obj.constructor &&
- !hasOwn.call(obj, 'constructor') &&
- !hasOwn.call(obj.constructor.prototype, 'isPrototypeOf')
+ !hasOwn(obj, 'constructor') &&
+ !hasOwn(obj.constructor.prototype, 'isPrototypeOf')
) {
return false;
}
@@ -75,13 +73,14 @@ export function isPlainObject(obj) {
// Handle iteration over inherited properties before own properties.
if (support.ownLast) {
for (key in obj) {
- return hasOwn.call(obj, key);
+ return hasOwn(obj, key);
}
}
// Own properties are enumerated firstly, so to speed up,
// if last one is own, then all properties are own.
- for (key in obj) {}
+ for (key in obj) {
+ }
- return key === undefined || hasOwn.call(obj, key);
+ return key === undefined || hasOwn(obj, key);
}
diff --git a/package-lock.json b/package-lock.json
index b696453..964ca4e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4,36 +4,47 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+ "@ampproject/remapping": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.1.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
"@babel/code-frame": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
- "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
"dev": true,
"requires": {
- "@babel/highlight": "^7.16.7"
+ "@babel/highlight": "^7.18.6"
}
},
"@babel/compat-data": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz",
- "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==",
+ "version": "7.20.14",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz",
+ "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==",
"dev": true
},
"@babel/core": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.10.tgz",
- "integrity": "sha512-pbiIdZbCiMx/MM6toR+OfXarYix3uz0oVsnNtfdAGTcCTu3w/JGF8JhirevXLBJUu0WguSZI12qpKnx7EeMyLA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.16.7",
- "@babel/generator": "^7.16.8",
- "@babel/helper-compilation-targets": "^7.16.7",
- "@babel/helper-module-transforms": "^7.16.7",
- "@babel/helpers": "^7.16.7",
- "@babel/parser": "^7.16.10",
- "@babel/template": "^7.16.7",
- "@babel/traverse": "^7.16.10",
- "@babel/types": "^7.16.8",
+ "version": "7.19.6",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz",
+ "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==",
+ "dev": true,
+ "requires": {
+ "@ampproject/remapping": "^2.1.0",
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.19.6",
+ "@babel/helper-compilation-targets": "^7.19.3",
+ "@babel/helper-module-transforms": "^7.19.6",
+ "@babel/helpers": "^7.19.4",
+ "@babel/parser": "^7.19.6",
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.19.6",
+ "@babel/types": "^7.19.4",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -60,529 +71,482 @@
}
},
"@babel/generator": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz",
- "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==",
+ "version": "7.20.14",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz",
+ "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==",
"dev": true,
"requires": {
- "@babel/types": "^7.16.8",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
+ "@babel/types": "^7.20.7",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "jsesc": "^2.5.1"
},
"dependencies": {
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
}
}
},
"@babel/helper-annotate-as-pure": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
- "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+ "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
"dev": true,
"requires": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.18.6"
}
},
"@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz",
- "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz",
+ "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==",
"dev": true,
"requires": {
- "@babel/helper-explode-assignable-expression": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@babel/helper-explode-assignable-expression": "^7.18.6",
+ "@babel/types": "^7.18.9"
}
},
"@babel/helper-compilation-targets": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz",
- "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
+ "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
"dev": true,
"requires": {
- "@babel/compat-data": "^7.16.4",
- "@babel/helper-validator-option": "^7.16.7",
- "browserslist": "^4.17.5",
+ "@babel/compat-data": "^7.20.5",
+ "@babel/helper-validator-option": "^7.18.6",
+ "browserslist": "^4.21.3",
+ "lru-cache": "^5.1.1",
"semver": "^6.3.0"
}
},
"@babel/helper-create-class-features-plugin": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz",
- "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==",
+ "version": "7.20.12",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz",
+ "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==",
"dev": true,
"requires": {
- "@babel/helper-annotate-as-pure": "^7.16.7",
- "@babel/helper-environment-visitor": "^7.16.7",
- "@babel/helper-function-name": "^7.16.7",
- "@babel/helper-member-expression-to-functions": "^7.16.7",
- "@babel/helper-optimise-call-expression": "^7.16.7",
- "@babel/helper-replace-supers": "^7.16.7",
- "@babel/helper-split-export-declaration": "^7.16.7"
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.19.0",
+ "@babel/helper-member-expression-to-functions": "^7.20.7",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/helper-replace-supers": "^7.20.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+ "@babel/helper-split-export-declaration": "^7.18.6"
}
},
"@babel/helper-create-regexp-features-plugin": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz",
- "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz",
+ "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==",
"dev": true,
"requires": {
- "@babel/helper-annotate-as-pure": "^7.16.7",
- "regexpu-core": "^4.7.1"
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "regexpu-core": "^5.2.1"
}
},
"@babel/helper-define-polyfill-provider": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz",
- "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==",
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz",
+ "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==",
"dev": true,
"requires": {
- "@babel/helper-compilation-targets": "^7.13.0",
- "@babel/helper-module-imports": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/traverse": "^7.13.0",
+ "@babel/helper-compilation-targets": "^7.17.7",
+ "@babel/helper-plugin-utils": "^7.16.7",
"debug": "^4.1.1",
"lodash.debounce": "^4.0.8",
"resolve": "^1.14.2",
"semver": "^6.1.2"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- }
}
},
"@babel/helper-environment-visitor": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
- "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.16.7"
- }
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
+ "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
+ "dev": true
},
"@babel/helper-explode-assignable-expression": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz",
- "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz",
+ "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==",
"dev": true,
"requires": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.18.6"
}
},
"@babel/helper-function-name": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
- "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
- "dev": true,
- "requires": {
- "@babel/helper-get-function-arity": "^7.16.7",
- "@babel/template": "^7.16.7",
- "@babel/types": "^7.16.7"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
- "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
+ "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
"dev": true,
"requires": {
- "@babel/types": "^7.16.7"
+ "@babel/template": "^7.18.10",
+ "@babel/types": "^7.19.0"
}
},
"@babel/helper-hoist-variables": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
- "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
"dev": true,
"requires": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.18.6"
}
},
"@babel/helper-member-expression-to-functions": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz",
- "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz",
+ "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==",
"dev": true,
"requires": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.20.7"
}
},
"@babel/helper-module-imports": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
- "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
+ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
"dev": true,
"requires": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.18.6"
}
},
"@babel/helper-module-transforms": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz",
- "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==",
+ "version": "7.20.11",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz",
+ "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==",
"dev": true,
"requires": {
- "@babel/helper-environment-visitor": "^7.16.7",
- "@babel/helper-module-imports": "^7.16.7",
- "@babel/helper-simple-access": "^7.16.7",
- "@babel/helper-split-export-declaration": "^7.16.7",
- "@babel/helper-validator-identifier": "^7.16.7",
- "@babel/template": "^7.16.7",
- "@babel/traverse": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/helper-simple-access": "^7.20.2",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "@babel/template": "^7.20.7",
+ "@babel/traverse": "^7.20.10",
+ "@babel/types": "^7.20.7"
}
},
"@babel/helper-optimise-call-expression": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz",
- "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
+ "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
"dev": true,
"requires": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.18.6"
}
},
"@babel/helper-plugin-utils": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz",
- "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==",
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
+ "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
"dev": true
},
"@babel/helper-remap-async-to-generator": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz",
- "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz",
+ "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==",
"dev": true,
"requires": {
- "@babel/helper-annotate-as-pure": "^7.16.7",
- "@babel/helper-wrap-function": "^7.16.8",
- "@babel/types": "^7.16.8"
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-wrap-function": "^7.18.9",
+ "@babel/types": "^7.18.9"
}
},
"@babel/helper-replace-supers": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz",
- "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz",
+ "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==",
"dev": true,
"requires": {
- "@babel/helper-environment-visitor": "^7.16.7",
- "@babel/helper-member-expression-to-functions": "^7.16.7",
- "@babel/helper-optimise-call-expression": "^7.16.7",
- "@babel/traverse": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-member-expression-to-functions": "^7.20.7",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/template": "^7.20.7",
+ "@babel/traverse": "^7.20.7",
+ "@babel/types": "^7.20.7"
}
},
"@babel/helper-simple-access": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz",
- "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==",
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
+ "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
"dev": true,
"requires": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.20.2"
}
},
"@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz",
- "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==",
+ "version": "7.20.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
+ "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
"dev": true,
"requires": {
- "@babel/types": "^7.16.0"
+ "@babel/types": "^7.20.0"
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
- "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
"dev": true,
"requires": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.18.6"
}
},
+ "@babel/helper-string-parser": {
+ "version": "7.19.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
+ "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
+ "dev": true
+ },
"@babel/helper-validator-identifier": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
- "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
+ "version": "7.19.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+ "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
"dev": true
},
"@babel/helper-validator-option": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
- "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
+ "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
"dev": true
},
"@babel/helper-wrap-function": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz",
- "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz",
+ "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==",
"dev": true,
"requires": {
- "@babel/helper-function-name": "^7.16.7",
- "@babel/template": "^7.16.7",
- "@babel/traverse": "^7.16.8",
- "@babel/types": "^7.16.8"
+ "@babel/helper-function-name": "^7.19.0",
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.20.5",
+ "@babel/types": "^7.20.5"
}
},
"@babel/helpers": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz",
- "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==",
+ "version": "7.20.13",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz",
+ "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==",
"dev": true,
"requires": {
- "@babel/template": "^7.16.7",
- "@babel/traverse": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@babel/template": "^7.20.7",
+ "@babel/traverse": "^7.20.13",
+ "@babel/types": "^7.20.7"
}
},
"@babel/highlight": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
- "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.16.7",
+ "@babel/helper-validator-identifier": "^7.18.6",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
}
},
"@babel/parser": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.10.tgz",
- "integrity": "sha512-Sm/S9Or6nN8uiFsQU1yodyDW3MWXQhFeqzMPM+t8MJjM+pLsnFVxFZzkpXKvUXh+Gz9cbMoYYs484+Jw/NTEFQ==",
+ "version": "7.20.15",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz",
+ "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==",
"dev": true
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz",
- "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz",
+ "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz",
- "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz",
+ "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
- "@babel/plugin-proposal-optional-chaining": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.20.7"
}
},
"@babel/plugin-proposal-async-generator-functions": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz",
- "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz",
+ "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-remap-async-to-generator": "^7.16.8",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-remap-async-to-generator": "^7.18.9",
"@babel/plugin-syntax-async-generators": "^7.8.4"
}
},
"@babel/plugin-proposal-class-properties": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz",
- "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
+ "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
"dev": true,
"requires": {
- "@babel/helper-create-class-features-plugin": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-create-class-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-proposal-class-static-block": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz",
- "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz",
+ "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==",
"dev": true,
"requires": {
- "@babel/helper-create-class-features-plugin": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/helper-create-class-features-plugin": "^7.20.7",
+ "@babel/helper-plugin-utils": "^7.20.2",
"@babel/plugin-syntax-class-static-block": "^7.14.5"
}
},
"@babel/plugin-proposal-dynamic-import": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz",
- "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
+ "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.18.6",
"@babel/plugin-syntax-dynamic-import": "^7.8.3"
}
},
"@babel/plugin-proposal-export-default-from": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.16.7.tgz",
- "integrity": "sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg==",
+ "version": "7.18.10",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz",
+ "integrity": "sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-export-default-from": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.9",
+ "@babel/plugin-syntax-export-default-from": "^7.18.6"
}
},
"@babel/plugin-proposal-export-namespace-from": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz",
- "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
+ "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.18.9",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3"
}
},
"@babel/plugin-proposal-json-strings": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz",
- "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz",
+ "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.18.6",
"@babel/plugin-syntax-json-strings": "^7.8.3"
}
},
"@babel/plugin-proposal-logical-assignment-operators": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz",
- "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz",
+ "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.20.2",
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
}
},
"@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz",
- "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
+ "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.18.6",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
}
},
"@babel/plugin-proposal-numeric-separator": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz",
- "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
+ "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.18.6",
"@babel/plugin-syntax-numeric-separator": "^7.10.4"
}
},
"@babel/plugin-proposal-object-rest-spread": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz",
- "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz",
+ "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==",
"dev": true,
"requires": {
- "@babel/compat-data": "^7.16.4",
- "@babel/helper-compilation-targets": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/compat-data": "^7.20.5",
+ "@babel/helper-compilation-targets": "^7.20.7",
+ "@babel/helper-plugin-utils": "^7.20.2",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.16.7"
+ "@babel/plugin-transform-parameters": "^7.20.7"
}
},
"@babel/plugin-proposal-optional-catch-binding": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz",
- "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
+ "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.18.6",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
}
},
"@babel/plugin-proposal-optional-chaining": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz",
- "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz",
+ "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
"@babel/plugin-syntax-optional-chaining": "^7.8.3"
}
},
"@babel/plugin-proposal-private-methods": {
- "version": "7.16.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz",
- "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
+ "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
"dev": true,
"requires": {
- "@babel/helper-create-class-features-plugin": "^7.16.10",
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-create-class-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-proposal-private-property-in-object": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz",
- "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz",
+ "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==",
"dev": true,
"requires": {
- "@babel/helper-annotate-as-pure": "^7.16.7",
- "@babel/helper-create-class-features-plugin": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-create-class-features-plugin": "^7.20.5",
+ "@babel/helper-plugin-utils": "^7.20.2",
"@babel/plugin-syntax-private-property-in-object": "^7.14.5"
}
},
"@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz",
- "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
+ "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
"dev": true,
"requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-syntax-async-generators": {
@@ -622,12 +586,12 @@
}
},
"@babel/plugin-syntax-export-default-from": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.16.7.tgz",
- "integrity": "sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz",
+ "integrity": "sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-syntax-export-namespace-from": {
@@ -640,12 +604,21 @@
}
},
"@babel/plugin-syntax-flow": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz",
- "integrity": "sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz",
+ "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ }
+ },
+ "@babel/plugin-syntax-import-assertions": {
+ "version": "7.20.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz",
+ "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.19.0"
}
},
"@babel/plugin-syntax-json-strings": {
@@ -658,12 +631,12 @@
}
},
"@babel/plugin-syntax-jsx": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz",
- "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
+ "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-syntax-logical-assignment-operators": {
@@ -739,463 +712,446 @@
}
},
"@babel/plugin-syntax-typescript": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz",
- "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==",
+ "version": "7.20.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz",
+ "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.19.0"
}
},
"@babel/plugin-transform-arrow-functions": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz",
- "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz",
+ "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.20.2"
}
},
"@babel/plugin-transform-async-to-generator": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz",
- "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz",
+ "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==",
"dev": true,
"requires": {
- "@babel/helper-module-imports": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-remap-async-to-generator": "^7.16.8"
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-remap-async-to-generator": "^7.18.9"
}
},
"@babel/plugin-transform-block-scoped-functions": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz",
- "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
+ "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-block-scoping": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz",
- "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==",
+ "version": "7.20.15",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz",
+ "integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.20.2"
}
},
"@babel/plugin-transform-classes": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz",
- "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.16.7",
- "@babel/helper-environment-visitor": "^7.16.7",
- "@babel/helper-function-name": "^7.16.7",
- "@babel/helper-optimise-call-expression": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-replace-supers": "^7.16.7",
- "@babel/helper-split-export-declaration": "^7.16.7",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz",
+ "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-compilation-targets": "^7.20.7",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.19.0",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-replace-supers": "^7.20.7",
+ "@babel/helper-split-export-declaration": "^7.18.6",
"globals": "^11.1.0"
- },
- "dependencies": {
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- }
}
},
"@babel/plugin-transform-computed-properties": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz",
- "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz",
+ "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/template": "^7.20.7"
}
},
"@babel/plugin-transform-destructuring": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz",
- "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz",
+ "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.20.2"
}
},
"@babel/plugin-transform-dotall-regex": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz",
- "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
+ "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
"dev": true,
"requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-duplicate-keys": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz",
- "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz",
+ "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.9"
}
},
"@babel/plugin-transform-exponentiation-operator": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz",
- "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
+ "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
"dev": true,
"requires": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-flow-strip-types": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz",
- "integrity": "sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==",
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz",
+ "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-flow": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.19.0",
+ "@babel/plugin-syntax-flow": "^7.18.6"
}
},
"@babel/plugin-transform-for-of": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz",
- "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==",
+ "version": "7.18.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz",
+ "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-function-name": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz",
- "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz",
+ "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==",
"dev": true,
"requires": {
- "@babel/helper-compilation-targets": "^7.16.7",
- "@babel/helper-function-name": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-compilation-targets": "^7.18.9",
+ "@babel/helper-function-name": "^7.18.9",
+ "@babel/helper-plugin-utils": "^7.18.9"
}
},
"@babel/plugin-transform-literals": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz",
- "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz",
+ "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.9"
}
},
"@babel/plugin-transform-member-expression-literals": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz",
- "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
+ "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-modules-amd": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz",
- "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==",
+ "version": "7.20.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz",
+ "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "babel-plugin-dynamic-import-node": "^2.3.3"
+ "@babel/helper-module-transforms": "^7.20.11",
+ "@babel/helper-plugin-utils": "^7.20.2"
}
},
"@babel/plugin-transform-modules-commonjs": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz",
- "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==",
+ "version": "7.20.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz",
+ "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-simple-access": "^7.16.7",
- "babel-plugin-dynamic-import-node": "^2.3.3"
+ "@babel/helper-module-transforms": "^7.20.11",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-simple-access": "^7.20.2"
}
},
"@babel/plugin-transform-modules-systemjs": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz",
- "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==",
+ "version": "7.20.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz",
+ "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==",
"dev": true,
"requires": {
- "@babel/helper-hoist-variables": "^7.16.7",
- "@babel/helper-module-transforms": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-validator-identifier": "^7.16.7",
- "babel-plugin-dynamic-import-node": "^2.3.3"
+ "@babel/helper-hoist-variables": "^7.18.6",
+ "@babel/helper-module-transforms": "^7.20.11",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-validator-identifier": "^7.19.1"
}
},
"@babel/plugin-transform-modules-umd": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz",
- "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
+ "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-module-transforms": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz",
- "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz",
+ "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==",
"dev": true,
"requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.16.7"
+ "@babel/helper-create-regexp-features-plugin": "^7.20.5",
+ "@babel/helper-plugin-utils": "^7.20.2"
}
},
"@babel/plugin-transform-new-target": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz",
- "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz",
+ "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-object-assign": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.16.7.tgz",
- "integrity": "sha512-R8mawvm3x0COTJtveuoqZIjNypn2FjfvXZr4pSQ8VhEFBuQGBz4XhHasZtHXjgXU4XptZ4HtGof3NoYc93ZH9Q==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.18.6.tgz",
+ "integrity": "sha512-mQisZ3JfqWh2gVXvfqYCAAyRs6+7oev+myBsTwW5RnPhYXOTuCEw2oe3YgxlXMViXUS53lG8koulI7mJ+8JE+A==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-object-super": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz",
- "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
+ "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-replace-supers": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/helper-replace-supers": "^7.18.6"
}
},
"@babel/plugin-transform-parameters": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz",
- "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz",
+ "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.20.2"
}
},
"@babel/plugin-transform-property-literals": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz",
- "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
+ "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-react-display-name": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz",
- "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz",
+ "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-react-jsx": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz",
- "integrity": "sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==",
+ "version": "7.20.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz",
+ "integrity": "sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw==",
"dev": true,
"requires": {
- "@babel/helper-annotate-as-pure": "^7.16.7",
- "@babel/helper-module-imports": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-jsx": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/plugin-syntax-jsx": "^7.18.6",
+ "@babel/types": "^7.20.7"
}
},
"@babel/plugin-transform-react-jsx-self": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.7.tgz",
- "integrity": "sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
+ "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-react-jsx-source": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz",
- "integrity": "sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==",
+ "version": "7.19.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz",
+ "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.19.0"
}
},
"@babel/plugin-transform-regenerator": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz",
- "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz",
+ "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==",
"dev": true,
"requires": {
- "regenerator-transform": "^0.14.2"
- },
- "dependencies": {
- "regenerator-transform": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
- "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.8.4"
- }
- }
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "regenerator-transform": "^0.15.1"
}
},
"@babel/plugin-transform-reserved-words": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz",
- "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
+ "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-runtime": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.10.tgz",
- "integrity": "sha512-9nwTiqETv2G7xI4RvXHNfpGdr8pAA+Q/YtN3yLK7OoK7n9OibVm/xymJ838a9A6E/IciOLPj82lZk0fW6O4O7w==",
+ "version": "7.19.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz",
+ "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==",
"dev": true,
"requires": {
- "@babel/helper-module-imports": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "babel-plugin-polyfill-corejs2": "^0.3.0",
- "babel-plugin-polyfill-corejs3": "^0.5.0",
- "babel-plugin-polyfill-regenerator": "^0.3.0",
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.19.0",
+ "babel-plugin-polyfill-corejs2": "^0.3.3",
+ "babel-plugin-polyfill-corejs3": "^0.6.0",
+ "babel-plugin-polyfill-regenerator": "^0.4.1",
"semver": "^6.3.0"
}
},
"@babel/plugin-transform-shorthand-properties": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz",
- "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
+ "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-spread": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz",
- "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz",
+ "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0"
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0"
}
},
"@babel/plugin-transform-sticky-regex": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz",
- "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
+ "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-transform-template-literals": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz",
- "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz",
+ "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.9"
}
},
"@babel/plugin-transform-typeof-symbol": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz",
- "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz",
+ "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.9"
}
},
"@babel/plugin-transform-typescript": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz",
- "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==",
+ "version": "7.20.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.13.tgz",
+ "integrity": "sha512-O7I/THxarGcDZxkgWKMUrk7NK1/WbHAg3Xx86gqS6x9MTrNL6AwIluuZ96ms4xeDe6AVx6rjHbWHP7x26EPQBA==",
"dev": true,
"requires": {
- "@babel/helper-create-class-features-plugin": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-typescript": "^7.16.7"
+ "@babel/helper-create-class-features-plugin": "^7.20.12",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/plugin-syntax-typescript": "^7.20.0"
}
},
"@babel/plugin-transform-unicode-escapes": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz",
- "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==",
+ "version": "7.18.10",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz",
+ "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.18.9"
}
},
"@babel/plugin-transform-unicode-regex": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz",
- "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
+ "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
"dev": true,
"requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/preset-env": {
- "version": "7.16.11",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz",
- "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.16.8",
- "@babel/helper-compilation-targets": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-validator-option": "^7.16.7",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7",
- "@babel/plugin-proposal-async-generator-functions": "^7.16.8",
- "@babel/plugin-proposal-class-properties": "^7.16.7",
- "@babel/plugin-proposal-class-static-block": "^7.16.7",
- "@babel/plugin-proposal-dynamic-import": "^7.16.7",
- "@babel/plugin-proposal-export-namespace-from": "^7.16.7",
- "@babel/plugin-proposal-json-strings": "^7.16.7",
- "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
- "@babel/plugin-proposal-numeric-separator": "^7.16.7",
- "@babel/plugin-proposal-object-rest-spread": "^7.16.7",
- "@babel/plugin-proposal-optional-catch-binding": "^7.16.7",
- "@babel/plugin-proposal-optional-chaining": "^7.16.7",
- "@babel/plugin-proposal-private-methods": "^7.16.11",
- "@babel/plugin-proposal-private-property-in-object": "^7.16.7",
- "@babel/plugin-proposal-unicode-property-regex": "^7.16.7",
+ "version": "7.19.4",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz",
+ "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.19.4",
+ "@babel/helper-compilation-targets": "^7.19.3",
+ "@babel/helper-plugin-utils": "^7.19.0",
+ "@babel/helper-validator-option": "^7.18.6",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9",
+ "@babel/plugin-proposal-async-generator-functions": "^7.19.1",
+ "@babel/plugin-proposal-class-properties": "^7.18.6",
+ "@babel/plugin-proposal-class-static-block": "^7.18.6",
+ "@babel/plugin-proposal-dynamic-import": "^7.18.6",
+ "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
+ "@babel/plugin-proposal-json-strings": "^7.18.6",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
+ "@babel/plugin-proposal-numeric-separator": "^7.18.6",
+ "@babel/plugin-proposal-object-rest-spread": "^7.19.4",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.18.6",
+ "@babel/plugin-proposal-optional-chaining": "^7.18.9",
+ "@babel/plugin-proposal-private-methods": "^7.18.6",
+ "@babel/plugin-proposal-private-property-in-object": "^7.18.6",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-class-properties": "^7.12.13",
"@babel/plugin-syntax-class-static-block": "^7.14.5",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-import-assertions": "^7.18.6",
"@babel/plugin-syntax-json-strings": "^7.8.3",
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
@@ -1205,44 +1161,44 @@
"@babel/plugin-syntax-optional-chaining": "^7.8.3",
"@babel/plugin-syntax-private-property-in-object": "^7.14.5",
"@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-transform-arrow-functions": "^7.16.7",
- "@babel/plugin-transform-async-to-generator": "^7.16.8",
- "@babel/plugin-transform-block-scoped-functions": "^7.16.7",
- "@babel/plugin-transform-block-scoping": "^7.16.7",
- "@babel/plugin-transform-classes": "^7.16.7",
- "@babel/plugin-transform-computed-properties": "^7.16.7",
- "@babel/plugin-transform-destructuring": "^7.16.7",
- "@babel/plugin-transform-dotall-regex": "^7.16.7",
- "@babel/plugin-transform-duplicate-keys": "^7.16.7",
- "@babel/plugin-transform-exponentiation-operator": "^7.16.7",
- "@babel/plugin-transform-for-of": "^7.16.7",
- "@babel/plugin-transform-function-name": "^7.16.7",
- "@babel/plugin-transform-literals": "^7.16.7",
- "@babel/plugin-transform-member-expression-literals": "^7.16.7",
- "@babel/plugin-transform-modules-amd": "^7.16.7",
- "@babel/plugin-transform-modules-commonjs": "^7.16.8",
- "@babel/plugin-transform-modules-systemjs": "^7.16.7",
- "@babel/plugin-transform-modules-umd": "^7.16.7",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8",
- "@babel/plugin-transform-new-target": "^7.16.7",
- "@babel/plugin-transform-object-super": "^7.16.7",
- "@babel/plugin-transform-parameters": "^7.16.7",
- "@babel/plugin-transform-property-literals": "^7.16.7",
- "@babel/plugin-transform-regenerator": "^7.16.7",
- "@babel/plugin-transform-reserved-words": "^7.16.7",
- "@babel/plugin-transform-shorthand-properties": "^7.16.7",
- "@babel/plugin-transform-spread": "^7.16.7",
- "@babel/plugin-transform-sticky-regex": "^7.16.7",
- "@babel/plugin-transform-template-literals": "^7.16.7",
- "@babel/plugin-transform-typeof-symbol": "^7.16.7",
- "@babel/plugin-transform-unicode-escapes": "^7.16.7",
- "@babel/plugin-transform-unicode-regex": "^7.16.7",
+ "@babel/plugin-transform-arrow-functions": "^7.18.6",
+ "@babel/plugin-transform-async-to-generator": "^7.18.6",
+ "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
+ "@babel/plugin-transform-block-scoping": "^7.19.4",
+ "@babel/plugin-transform-classes": "^7.19.0",
+ "@babel/plugin-transform-computed-properties": "^7.18.9",
+ "@babel/plugin-transform-destructuring": "^7.19.4",
+ "@babel/plugin-transform-dotall-regex": "^7.18.6",
+ "@babel/plugin-transform-duplicate-keys": "^7.18.9",
+ "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
+ "@babel/plugin-transform-for-of": "^7.18.8",
+ "@babel/plugin-transform-function-name": "^7.18.9",
+ "@babel/plugin-transform-literals": "^7.18.9",
+ "@babel/plugin-transform-member-expression-literals": "^7.18.6",
+ "@babel/plugin-transform-modules-amd": "^7.18.6",
+ "@babel/plugin-transform-modules-commonjs": "^7.18.6",
+ "@babel/plugin-transform-modules-systemjs": "^7.19.0",
+ "@babel/plugin-transform-modules-umd": "^7.18.6",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1",
+ "@babel/plugin-transform-new-target": "^7.18.6",
+ "@babel/plugin-transform-object-super": "^7.18.6",
+ "@babel/plugin-transform-parameters": "^7.18.8",
+ "@babel/plugin-transform-property-literals": "^7.18.6",
+ "@babel/plugin-transform-regenerator": "^7.18.6",
+ "@babel/plugin-transform-reserved-words": "^7.18.6",
+ "@babel/plugin-transform-shorthand-properties": "^7.18.6",
+ "@babel/plugin-transform-spread": "^7.19.0",
+ "@babel/plugin-transform-sticky-regex": "^7.18.6",
+ "@babel/plugin-transform-template-literals": "^7.18.9",
+ "@babel/plugin-transform-typeof-symbol": "^7.18.9",
+ "@babel/plugin-transform-unicode-escapes": "^7.18.10",
+ "@babel/plugin-transform-unicode-regex": "^7.18.6",
"@babel/preset-modules": "^0.1.5",
- "@babel/types": "^7.16.8",
- "babel-plugin-polyfill-corejs2": "^0.3.0",
- "babel-plugin-polyfill-corejs3": "^0.5.0",
- "babel-plugin-polyfill-regenerator": "^0.3.0",
- "core-js-compat": "^3.20.2",
+ "@babel/types": "^7.19.4",
+ "babel-plugin-polyfill-corejs2": "^0.3.3",
+ "babel-plugin-polyfill-corejs3": "^0.6.0",
+ "babel-plugin-polyfill-regenerator": "^0.4.1",
+ "core-js-compat": "^3.25.1",
"semver": "^6.3.0"
}
},
@@ -1260,135 +1216,71 @@
}
},
"@babel/register": {
- "version": "7.16.9",
- "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.9.tgz",
- "integrity": "sha512-jJ72wcghdRIlENfvALcyODhNoGE5j75cYHdC+aQMh6cU/P86tiiXTp9XYZct1UxUMo/4+BgQRyNZEGx0KWGS+g==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz",
+ "integrity": "sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==",
"dev": true,
"requires": {
"clone-deep": "^4.0.1",
"find-cache-dir": "^2.0.0",
"make-dir": "^2.1.0",
- "pirates": "^4.0.0",
+ "pirates": "^4.0.5",
"source-map-support": "^0.5.16"
- },
- "dependencies": {
- "make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
- "dev": true,
- "requires": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- }
- },
- "pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- }
}
},
+ "@babel/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+ "dev": true
+ },
"@babel/runtime": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz",
- "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==",
+ "version": "7.20.13",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz",
+ "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==",
"dev": true,
"requires": {
- "regenerator-runtime": "^0.13.4"
+ "regenerator-runtime": "^0.13.11"
}
},
"@babel/template": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
- "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
+ "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.16.7",
- "@babel/parser": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@babel/code-frame": "^7.18.6",
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7"
}
},
"@babel/traverse": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz",
- "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.16.7",
- "@babel/generator": "^7.16.8",
- "@babel/helper-environment-visitor": "^7.16.7",
- "@babel/helper-function-name": "^7.16.7",
- "@babel/helper-hoist-variables": "^7.16.7",
- "@babel/helper-split-export-declaration": "^7.16.7",
- "@babel/parser": "^7.16.10",
- "@babel/types": "^7.16.8",
+ "version": "7.20.13",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz",
+ "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.20.7",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.19.0",
+ "@babel/helper-hoist-variables": "^7.18.6",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/parser": "^7.20.13",
+ "@babel/types": "^7.20.7",
"debug": "^4.1.0",
"globals": "^11.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- }
}
},
"@babel/types": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz",
- "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz",
+ "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.16.7",
+ "@babel/helper-string-parser": "^7.19.4",
+ "@babel/helper-validator-identifier": "^7.19.1",
"to-fast-properties": "^2.0.0"
- },
- "dependencies": {
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
- "dev": true
- }
}
},
"@bcoe/v8-coverage": {
@@ -1410,12 +1302,6 @@
"resolve-from": "^5.0.0"
},
"dependencies": {
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- },
"find-up": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
@@ -1444,10 +1330,10 @@
"p-limit": "^2.2.0"
}
},
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true
}
}
@@ -1464,10 +1350,58 @@
"integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
"dev": true
},
- "@react-native-async-storage/async-storage": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.13.2.tgz",
- "integrity": "sha512-isTDvUApRJPVWFxV15yrQSOGqarX7cIedq/y4N5yWSnotf68D9qvDEv1I7rCXhkBDi0u4OJt6GA9dksUT0D3wg==",
+ "@jridgewell/gen-mapping": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/set-array": "^1.0.0",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "dev": true
+ },
+ "@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "dev": true
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "dev": true
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.17",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+ "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
+ }
+ },
+ "@meteorrn/minimongo": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@meteorrn/minimongo/-/minimongo-1.0.1.tgz",
+ "integrity": "sha512-dMMmP8tdrLIYdqxuMpJ9OuNDguFrGE2W+U1Y/3wQbxgtc+uycaeom3tf8fPWn6Erw0MuPqPUnZDq0RoHEvd4Rg==",
+ "requires": {
+ "base64-js": "^1.5.1",
+ "eventemitter3": "^1.1.0",
+ "invariant": "^2.1.1"
+ }
+ },
+ "@react-native-community/async-storage": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/async-storage/-/async-storage-1.12.1.tgz",
+ "integrity": "sha512-70WGaH3PKYASi4BThuEEKMkyAgE9k7VytBqmgPRx3MzJx9/MkspwqJGmn3QLCgHLIFUgF1pit2mWICbRJ3T3lg==",
"optional": true,
"requires": {
"deep-assign": "^3.0.0"
@@ -1483,9 +1417,9 @@
}
},
"@sinonjs/commons": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
- "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
"dev": true,
"requires": {
"type-detect": "4.0.8"
@@ -1501,9 +1435,9 @@
}
},
"@sinonjs/samsam": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.0.2.tgz",
- "integrity": "sha512-jxPRPp9n93ci7b8hMfJOFDPRLFYadN6FSpeROFTR4UNF4i5b+EK6m4QXPO46BDhFgRy1JuS87zAnFOzCUwMJcQ==",
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.3.tgz",
+ "integrity": "sha512-nhOb2dWPeb1sd3IQXL/dVPnKHDOAFfvichtBf4xV00/rU1QbPCQqKMbvIheIjqwVjh7qIgf2AHTHi391yMOMpQ==",
"dev": true,
"requires": {
"@sinonjs/commons": "^1.6.0",
@@ -1512,9 +1446,9 @@
}
},
"@sinonjs/text-encoding": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
- "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==",
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz",
+ "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==",
"dev": true
},
"@types/istanbul-lib-coverage": {
@@ -1523,12 +1457,6 @@
"integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
"dev": true
},
- "@ungap/promise-all-settled": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
- "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
- "dev": true
- },
"aggregate-error": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
@@ -1560,16 +1488,19 @@
"dev": true
},
"ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
},
"any-observable": {
"version": "0.3.0",
@@ -1607,7 +1538,7 @@
"archy": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
- "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
+ "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
"dev": true
},
"argparse": {
@@ -1622,7 +1553,7 @@
"arr-diff": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
"dev": true
},
"arr-flatten": {
@@ -1634,13 +1565,13 @@
"arr-union": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
"dev": true
},
"array-unique": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
"dev": true
},
"asn1.js": {
@@ -1676,13 +1607,13 @@
"inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==",
"dev": true
},
"util": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
- "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==",
"dev": true,
"requires": {
"inherits": "2.0.1"
@@ -1699,7 +1630,7 @@
"assign-symbols": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
"dev": true
},
"atob": {
@@ -1708,15 +1639,6 @@
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true
},
- "babel-plugin-dynamic-import-node": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
- "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
- "dev": true,
- "requires": {
- "object.assign": "^4.1.0"
- }
- },
"babel-plugin-istanbul": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
@@ -1728,57 +1650,42 @@
"@istanbuljs/schema": "^0.1.2",
"istanbul-lib-instrument": "^5.0.4",
"test-exclude": "^6.0.0"
- },
- "dependencies": {
- "istanbul-lib-instrument": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz",
- "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- }
- }
}
},
"babel-plugin-polyfill-corejs2": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz",
- "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==",
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz",
+ "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==",
"dev": true,
"requires": {
- "@babel/compat-data": "^7.13.11",
- "@babel/helper-define-polyfill-provider": "^0.3.1",
+ "@babel/compat-data": "^7.17.7",
+ "@babel/helper-define-polyfill-provider": "^0.3.3",
"semver": "^6.1.1"
}
},
"babel-plugin-polyfill-corejs3": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz",
- "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz",
+ "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==",
"dev": true,
"requires": {
- "@babel/helper-define-polyfill-provider": "^0.3.1",
- "core-js-compat": "^3.20.0"
+ "@babel/helper-define-polyfill-provider": "^0.3.3",
+ "core-js-compat": "^3.25.1"
}
},
"babel-plugin-polyfill-regenerator": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz",
- "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz",
+ "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==",
"dev": true,
"requires": {
- "@babel/helper-define-polyfill-provider": "^0.3.1"
+ "@babel/helper-define-polyfill-provider": "^0.3.3"
}
},
"babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
- "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
"dev": true,
"requires": {
"core-js": "^2.4.0",
@@ -1794,9 +1701,9 @@
}
},
"balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"base": {
@@ -1817,7 +1724,7 @@
"define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
"dev": true,
"requires": {
"is-descriptor": "^1.0.0"
@@ -1854,16 +1761,10 @@
}
}
},
- "base-64": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz",
- "integrity": "sha1-eAqZyE59YAJgNhURxId2E78k9rs="
- },
"base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
},
"binary-extensions": {
"version": "2.2.0",
@@ -1872,9 +1773,9 @@
"dev": true
},
"bn.js": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz",
- "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
"dev": true
},
"brace-expansion": {
@@ -1908,7 +1809,7 @@
"extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
@@ -1919,7 +1820,7 @@
"brorand": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
"dev": true
},
"browser-stdout": {
@@ -2002,12 +1903,6 @@
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
}
}
},
@@ -2021,16 +1916,15 @@
}
},
"browserslist": {
- "version": "4.19.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz",
- "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==",
+ "version": "4.21.5",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+ "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30001286",
- "electron-to-chromium": "^1.4.17",
- "escalade": "^3.1.1",
- "node-releases": "^2.0.1",
- "picocolors": "^1.0.0"
+ "caniuse-lite": "^1.0.30001449",
+ "electron-to-chromium": "^1.4.284",
+ "node-releases": "^2.0.8",
+ "update-browserslist-db": "^1.0.10"
}
},
"buffer": {
@@ -2053,33 +1947,78 @@
"buffer-xor": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
- "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
"dev": true
},
"builtin-status-codes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
- "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
"dev": true
},
"c8": {
- "version": "7.11.0",
- "resolved": "https://registry.npmjs.org/c8/-/c8-7.11.0.tgz",
- "integrity": "sha512-XqPyj1uvlHMr+Y1IeRndC2X5P7iJzJlEJwBpCdBbq2JocXOgJfr+JVfJkyNMGROke5LfKrhSFXGFXnwnRJAUJw==",
+ "version": "7.12.0",
+ "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz",
+ "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==",
"dev": true,
"requires": {
"@bcoe/v8-coverage": "^0.2.3",
- "@istanbuljs/schema": "^0.1.2",
+ "@istanbuljs/schema": "^0.1.3",
"find-up": "^5.0.0",
"foreground-child": "^2.0.0",
- "istanbul-lib-coverage": "^3.0.1",
+ "istanbul-lib-coverage": "^3.2.0",
"istanbul-lib-report": "^3.0.0",
- "istanbul-reports": "^3.0.2",
- "rimraf": "^3.0.0",
+ "istanbul-reports": "^3.1.4",
+ "rimraf": "^3.0.2",
"test-exclude": "^6.0.0",
- "v8-to-istanbul": "^8.0.0",
+ "v8-to-istanbul": "^9.0.0",
"yargs": "^16.2.0",
- "yargs-parser": "^20.2.7"
+ "yargs-parser": "^20.2.9"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^5.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "requires": {
+ "yocto-queue": "^0.1.0"
+ }
+ },
+ "p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^3.0.2"
+ }
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ }
}
},
"cache-base": {
@@ -2109,22 +2048,23 @@
"make-dir": "^3.0.0",
"package-hash": "^4.0.0",
"write-file-atomic": "^3.0.0"
- }
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ },
+ "dependencies": {
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.0.0"
+ }
+ }
}
},
"caller-callsite": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
- "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+ "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==",
"dev": true,
"requires": {
"callsites": "^2.0.0"
@@ -2133,7 +2073,7 @@
"caller-path": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
- "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+ "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==",
"dev": true,
"requires": {
"caller-callsite": "^2.0.0"
@@ -2142,52 +2082,51 @@
"callsites": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
- "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+ "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
"dev": true
},
"camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true
},
"caniuse-lite": {
- "version": "1.0.30001301",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001301.tgz",
- "integrity": "sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA==",
+ "version": "1.0.30001456",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001456.tgz",
+ "integrity": "sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==",
"dev": true
},
"chai": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz",
- "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==",
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
+ "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
"dev": true,
"requires": {
"assertion-error": "^1.1.0",
"check-error": "^1.0.2",
"deep-eql": "^3.0.1",
"get-func-name": "^2.0.0",
+ "loupe": "^2.3.1",
"pathval": "^1.1.1",
"type-detect": "^4.0.5"
}
},
"chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
}
},
"check-error": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
- "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
+ "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==",
"dev": true
},
"chokidar": {
@@ -2278,7 +2217,7 @@
"define-property": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
@@ -2295,7 +2234,7 @@
"cli-cursor": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
- "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
"dev": true,
"requires": {
"restore-cursor": "^2.0.0"
@@ -2304,93 +2243,61 @@
"cli-truncate": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz",
- "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
+ "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==",
"dev": true,
"requires": {
"slice-ansi": "0.0.4",
"string-width": "^1.0.1"
- }
- },
- "cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
},
"dependencies": {
"ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"dev": true
},
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
"dev": true,
"requires": {
- "color-name": "~1.1.4"
+ "number-is-nan": "^1.0.0"
}
},
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
"string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
"dev": true,
"requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
}
},
"strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
"requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
+ "ansi-regex": "^2.0.0"
}
}
}
},
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
"clone-deep": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
@@ -2405,13 +2312,13 @@
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
"dev": true
},
"collection-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
"dev": true,
"requires": {
"map-visit": "^1.0.0",
@@ -2430,7 +2337,7 @@
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
},
"commander": {
@@ -2442,7 +2349,7 @@
"commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
"dev": true
},
"compare-module-exports": {
@@ -2460,7 +2367,7 @@
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
"console-browserify": {
@@ -2472,22 +2379,19 @@
"constants-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
- "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
"dev": true
},
"convert-source-map": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true
},
"copy-descriptor": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
"dev": true
},
"core-js": {
@@ -2497,21 +2401,12 @@
"dev": true
},
"core-js-compat": {
- "version": "3.20.3",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz",
- "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==",
+ "version": "3.28.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.28.0.tgz",
+ "integrity": "sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==",
"dev": true,
"requires": {
- "browserslist": "^4.19.1",
- "semver": "7.0.0"
- },
- "dependencies": {
- "semver": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
- "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
- "dev": true
- }
+ "browserslist": "^4.21.5"
}
},
"core-util-is": {
@@ -2578,14 +2473,14 @@
}
},
"cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
"requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
}
},
"crypto-browserify": {
@@ -2607,11 +2502,6 @@
"randomfill": "^1.0.3"
}
},
- "crypto-js": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz",
- "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q=="
- },
"date-fns": {
"version": "1.30.1",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
@@ -2619,12 +2509,12 @@
"dev": true
},
"debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "2.1.2"
}
},
"decamelize": {
@@ -2642,7 +2532,7 @@
"dedent": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
- "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
+ "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
"dev": true
},
"deep-assign": {
@@ -2664,23 +2554,14 @@
}
},
"default-require-extensions": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz",
- "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz",
+ "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==",
"dev": true,
"requires": {
"strip-bom": "^4.0.0"
}
},
- "define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
- "dev": true,
- "requires": {
- "object-keys": "^1.0.12"
- }
- },
"define-property": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -2764,20 +2645,20 @@
"dev": true
},
"ejson": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/ejson/-/ejson-2.2.0.tgz",
- "integrity": "sha512-kWa0AKAxDhmr4t6c4pgQqk6yL52/M67xOMh60HRnAeydzo5QIxOitN5bE1+e0rbdnxfly7FTB9e2Ny0ypLMbag=="
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/ejson/-/ejson-2.2.3.tgz",
+ "integrity": "sha512-hsFvJp6OpGxFRQfBR3PSxFpaPALdHDY+SB3TRbMpLWNhvu8GzLiZutof5+/DFd2QekZo3KyXau75ngdJqQUSrw=="
},
"electron-to-chromium": {
- "version": "1.4.51",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.51.tgz",
- "integrity": "sha512-JNEmcYl3mk1tGQmy0EvL5eik/CKSBuzAyGP0QFdG6LIgxQe3II0BL1m2zKc2MZMf3uGqHWE1TFddJML0RpjSHQ==",
+ "version": "1.4.302",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.302.tgz",
+ "integrity": "sha512-Uk7C+7aPBryUR1Fwvk9VmipBcN9fVsqBO57jV2ZjTm+IZ6BMNqu7EDVEg2HxCNufk6QcWlFsBkhQyQroB2VWKw==",
"dev": true
},
"elegant-spinner": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
- "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=",
+ "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==",
"dev": true
},
"elliptic": {
@@ -2833,7 +2714,7 @@
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true
},
"esprima": {
@@ -2851,7 +2732,7 @@
"eventemitter3": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
- "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg="
+ "integrity": "sha512-DOFqA1MF46fmZl2xtzXR3MPCRsXqgoFqdXcrCVYM3JNnfUeHTm/fh/v/iU7gBFpwkuBmoJPAm5GuhdDfSEJMJA=="
},
"events": {
"version": "3.3.0",
@@ -2882,12 +2763,65 @@
"p-finally": "^1.0.0",
"signal-exit": "^3.0.0",
"strip-eof": "^1.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+ "dev": true
+ }
}
},
"expand-brackets": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
"dev": true,
"requires": {
"debug": "^2.3.3",
@@ -2899,10 +2833,19 @@
"to-regex": "^3.0.1"
},
"dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
"define-property": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
@@ -2911,18 +2854,24 @@
"extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
}
}
},
"extend-shallow": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
"dev": true,
"requires": {
"assign-symbols": "^1.0.0",
@@ -2959,7 +2908,7 @@
"define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
"dev": true,
"requires": {
"is-descriptor": "^1.0.0"
@@ -2968,7 +2917,7 @@
"extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
@@ -3008,7 +2957,7 @@
"figures": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
- "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
+ "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.5",
@@ -3018,7 +2967,7 @@
"fill-range": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
"dev": true,
"requires": {
"extend-shallow": "^2.0.1",
@@ -3030,7 +2979,7 @@
"extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
@@ -3047,46 +2996,21 @@
"commondir": "^1.0.1",
"make-dir": "^2.0.0",
"pkg-dir": "^3.0.0"
- },
- "dependencies": {
- "make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
- "dev": true,
- "requires": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- }
- },
- "pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
}
},
"find-parent-dir": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz",
- "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=",
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz",
+ "integrity": "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==",
"dev": true
},
"find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
+ "locate-path": "^3.0.0"
}
},
"flat": {
@@ -3098,7 +3022,7 @@
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
"dev": true
},
"foreground-child": {
@@ -3109,55 +3033,12 @@
"requires": {
"cross-spawn": "^7.0.0",
"signal-exit": "^3.0.2"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
}
},
"fragment-cache": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
"dev": true,
"requires": {
"map-cache": "^0.2.2"
@@ -3172,7 +3053,7 @@
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
"fsevents": {
@@ -3203,20 +3084,9 @@
"get-func-name": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
- "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
+ "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==",
"dev": true
},
- "get-intrinsic": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
- }
- },
"get-own-enumerable-property-symbols": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
@@ -3232,25 +3102,25 @@
"get-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
"dev": true
},
"get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
"dev": true
},
"glob": {
- "version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
- "minimatch": "^3.0.4",
+ "minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
@@ -3264,16 +3134,16 @@
"is-glob": "^4.0.1"
}
},
- "graceful-fs": {
- "version": "4.2.9",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
- "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true
},
- "growl": {
- "version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
- "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+ "graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
"dev": true
},
"has": {
@@ -3288,28 +3158,30 @@
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true
+ }
}
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "has-symbols": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
- "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true
},
"has-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
"dev": true,
"requires": {
"get-value": "^2.0.6",
@@ -3320,7 +3192,7 @@
"has-values": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
"dev": true,
"requires": {
"is-number": "^3.0.0",
@@ -3330,7 +3202,7 @@
"kind-of": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
@@ -3359,12 +3231,6 @@
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
}
}
},
@@ -3405,7 +3271,7 @@
"hmac-drbg": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
- "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
"dev": true,
"requires": {
"hash.js": "^1.0.3",
@@ -3422,7 +3288,7 @@
"https-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
- "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
"dev": true
},
"husky": {
@@ -3445,29 +3311,37 @@
"import-fresh": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
- "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+ "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
"dev": true,
"requires": {
"caller-path": "^2.0.0",
"resolve-from": "^3.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
+ "dev": true
+ }
}
},
"imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true
},
"indent-string": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
- "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+ "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==",
"dev": true
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
"requires": {
"once": "^1.3.0",
@@ -3491,7 +3365,7 @@
"is-accessor-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
@@ -3500,7 +3374,7 @@
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
@@ -3511,7 +3385,7 @@
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
"dev": true
},
"is-binary-path": {
@@ -3539,9 +3413,9 @@
}
},
"is-core-module": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
- "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
+ "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
"dev": true,
"requires": {
"has": "^1.0.3"
@@ -3550,7 +3424,7 @@
"is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
@@ -3559,7 +3433,7 @@
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
@@ -3589,34 +3463,31 @@
"is-directory": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
- "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+ "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
"dev": true
},
"is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
"dev": true
},
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true
},
"is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
},
"is-glob": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"requires": {
"is-extglob": "^2.1.1"
@@ -3625,7 +3496,7 @@
"is-number": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
@@ -3634,7 +3505,7 @@
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
@@ -3645,7 +3516,7 @@
"is-obj": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
+ "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg=="
},
"is-observable": {
"version": "1.1.0",
@@ -3680,19 +3551,19 @@
"is-regexp": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
- "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
+ "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==",
"dev": true
},
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
"dev": true
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
"dev": true
},
"is-unicode-supported": {
@@ -3710,19 +3581,19 @@
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
"dev": true
},
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
"dev": true
},
"istanbul-lib-coverage": {
@@ -3741,43 +3612,32 @@
}
},
"istanbul-lib-instrument": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
- "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
"dev": true,
"requires": {
- "@babel/core": "^7.7.5",
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
"@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-coverage": "^3.2.0",
"semver": "^6.3.0"
}
},
"istanbul-lib-processinfo": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz",
- "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz",
+ "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==",
"dev": true,
"requires": {
"archy": "^1.0.0",
- "cross-spawn": "^7.0.0",
- "istanbul-lib-coverage": "^3.0.0-alpha.1",
- "make-dir": "^3.0.0",
+ "cross-spawn": "^7.0.3",
+ "istanbul-lib-coverage": "^3.2.0",
"p-map": "^3.0.0",
"rimraf": "^3.0.0",
- "uuid": "^3.3.3"
+ "uuid": "^8.3.2"
},
"dependencies": {
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
"p-map": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
@@ -3786,36 +3646,6 @@
"requires": {
"aggregate-error": "^3.0.0"
}
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
}
}
},
@@ -3836,11 +3666,20 @@
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
"requires": {
"has-flag": "^4.0.0"
}
@@ -3856,35 +3695,12 @@
"debug": "^4.1.1",
"istanbul-lib-coverage": "^3.0.0",
"source-map": "^0.6.1"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
}
},
"istanbul-reports": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.3.tgz",
- "integrity": "sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+ "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
"dev": true,
"requires": {
"html-escaper": "^2.0.0",
@@ -3907,37 +3723,6 @@
"jest-get-type": "^22.1.0",
"leven": "^2.1.0",
"pretty-format": "^23.6.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
}
},
"js-tokens": {
@@ -3955,6 +3740,12 @@
"esprima": "^4.0.0"
}
},
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
+ },
"json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
@@ -3982,7 +3773,7 @@
"leven": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
- "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
+ "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==",
"dev": true
},
"lint-staged": {
@@ -4015,26 +3806,6 @@
"stringify-object": "^3.2.2"
},
"dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
"debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
@@ -4044,26 +3815,11 @@
"ms": "^2.1.1"
}
},
- "lodash": {
- "version": "4.17.20",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
- "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
- "dev": true
- },
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
"dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
}
}
},
@@ -4095,7 +3851,7 @@
"listr-silent-renderer": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz",
- "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=",
+ "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==",
"dev": true
},
"listr-update-renderer": {
@@ -4114,14 +3870,54 @@
"strip-ansi": "^3.0.1"
},
"dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
"log-symbols": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
- "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
+ "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==",
"dev": true,
"requires": {
"chalk": "^1.0.0"
}
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true
}
}
},
@@ -4137,88 +3933,61 @@
"figures": "^2.0.0"
},
"dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
"figures": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
- "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.5"
}
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
}
}
},
"locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
- "p-locate": "^5.0.0"
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
}
},
"lodash": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
- "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4="
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
},
"lodash._reinterpolate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
- "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+ "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==",
"dev": true
},
"lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
"dev": true
},
"lodash.flattendeep": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
- "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
+ "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==",
"dev": true
},
"lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
"dev": true
},
"lodash.some": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
- "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=",
+ "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==",
"dev": true
},
"lodash.template": {
@@ -4247,50 +4016,62 @@
"dev": true,
"requires": {
"chalk": "^2.0.1"
+ }
+ },
+ "log-update": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz",
+ "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.0.0",
+ "cli-cursor": "^2.0.0",
+ "wrap-ansi": "^3.0.1"
},
"dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
- "color-convert": "^1.9.0"
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
}
},
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-regex": "^3.0.0"
}
},
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "wrap-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
+ "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0"
}
}
}
},
- "log-update": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz",
- "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=",
- "dev": true,
- "requires": {
- "ansi-escapes": "^3.0.0",
- "cli-cursor": "^2.0.0",
- "wrap-ansi": "^3.0.1"
- }
- },
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -4299,35 +4080,52 @@
"js-tokens": "^3.0.0 || ^4.0.0"
}
},
+ "loupe": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz",
+ "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==",
+ "dev": true,
+ "requires": {
+ "get-func-name": "^2.0.0"
+ }
+ },
"lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
"requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
+ "yallist": "^3.0.2"
}
},
"make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"dev": true,
"requires": {
- "semver": "^6.0.0"
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
}
},
"map-cache": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
"dev": true
},
"map-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
"dev": true,
"requires": {
"object-visit": "^1.0.0"
@@ -4446,7 +4244,7 @@
"minimalistic-crypto-utils": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
"dev": true
},
"minimatch": {
@@ -4458,16 +4256,6 @@
"brace-expansion": "^1.1.7"
}
},
- "minimongo-cache": {
- "version": "0.0.48",
- "resolved": "https://registry.npmjs.org/minimongo-cache/-/minimongo-cache-0.0.48.tgz",
- "integrity": "sha1-pvu3i2YnVUJJr+78EkPPfLpr6gc=",
- "requires": {
- "eventemitter3": "^1.1.0",
- "invariant": "^2.1.1",
- "lodash": "~2.4.1"
- }
- },
"mixin-deep": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
@@ -4490,32 +4278,29 @@
}
},
"mocha": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz",
- "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.1.0.tgz",
+ "integrity": "sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg==",
"dev": true,
"requires": {
- "@ungap/promise-all-settled": "1.1.2",
"ansi-colors": "4.1.1",
"browser-stdout": "1.3.1",
"chokidar": "3.5.3",
- "debug": "4.3.3",
+ "debug": "4.3.4",
"diff": "5.0.0",
"escape-string-regexp": "4.0.0",
"find-up": "5.0.0",
"glob": "7.2.0",
- "growl": "1.10.5",
"he": "1.2.0",
"js-yaml": "4.1.0",
"log-symbols": "4.1.0",
- "minimatch": "4.2.1",
+ "minimatch": "5.0.1",
"ms": "2.1.3",
- "nanoid": "3.3.1",
+ "nanoid": "3.3.3",
"serialize-javascript": "6.0.0",
"strip-json-comments": "3.1.1",
"supports-color": "8.1.1",
- "which": "2.0.2",
- "workerpool": "6.2.0",
+ "workerpool": "6.2.1",
"yargs": "16.2.0",
"yargs-parser": "20.2.4",
"yargs-unparser": "2.0.0"
@@ -4572,29 +4357,22 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- }
- }
- },
"escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true
},
+ "find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
"glob": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
@@ -4635,6 +4413,15 @@
"argparse": "^2.0.1"
}
},
+ "locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^5.0.0"
+ }
+ },
"log-symbols": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -4646,12 +4433,23 @@
}
},
"minimatch": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
- "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
+ "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
"dev": true,
"requires": {
- "brace-expansion": "^1.1.7"
+ "brace-expansion": "^2.0.1"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ }
}
},
"ms": {
@@ -4660,6 +4458,30 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
+ "p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "requires": {
+ "yocto-queue": "^0.1.0"
+ }
+ },
+ "p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^3.0.2"
+ }
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ },
"supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -4669,15 +4491,6 @@
"has-flag": "^4.0.0"
}
},
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
"yargs-parser": {
"version": "20.2.4",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
@@ -4687,24 +4500,21 @@
}
},
"mock-socket": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-2.0.0.tgz",
- "integrity": "sha1-0vlB64AQwr6ql5g+SCf7xiERq8s=",
- "dev": true,
- "requires": {
- "urijs": "~1.17.0"
- }
+ "version": "9.1.5",
+ "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.1.5.tgz",
+ "integrity": "sha512-3DeNIcsQixWHHKk6NdoBhWI4t1VMj5/HzfnI1rE/pLl5qKx7+gd4DNA07ehTaZ6MoUU053si6Hd+YtiM/tQZfg==",
+ "dev": true
},
"ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"nanoid": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
- "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
+ "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==",
"dev": true
},
"nanomatch": {
@@ -4727,25 +4537,34 @@
}
},
"nise": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.0.tgz",
- "integrity": "sha512-W5WlHu+wvo3PaKLsJJkgPup2LrsXCcm7AWwyNZkUnn5rwPkuPBi3Iwk5SQtN0mv+K65k7nKKjwNQ30wg3wLAQQ==",
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz",
+ "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==",
"dev": true,
"requires": {
- "@sinonjs/commons": "^1.7.0",
- "@sinonjs/fake-timers": "^7.0.4",
+ "@sinonjs/commons": "^2.0.0",
+ "@sinonjs/fake-timers": "^10.0.2",
"@sinonjs/text-encoding": "^0.7.1",
"just-extend": "^4.0.2",
"path-to-regexp": "^1.7.0"
},
"dependencies": {
+ "@sinonjs/commons": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
+ "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
+ "dev": true,
+ "requires": {
+ "type-detect": "4.0.8"
+ }
+ },
"@sinonjs/fake-timers": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz",
- "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==",
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz",
+ "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==",
"dev": true,
"requires": {
- "@sinonjs/commons": "^1.7.0"
+ "@sinonjs/commons": "^2.0.0"
}
}
}
@@ -4791,20 +4610,15 @@
}
},
"node-releases": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz",
- "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==",
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
+ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
"dev": true
},
- "node-require-fallback": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-require-fallback/-/node-require-fallback-1.0.0.tgz",
- "integrity": "sha1-D5E4S2XJXrFwfSkoIOpbdjKojGo="
- },
"normalize-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz",
- "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=",
+ "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==",
"dev": true
},
"npm-path": {
@@ -4814,32 +4628,62 @@
"dev": true,
"requires": {
"which": "^1.2.10"
+ },
+ "dependencies": {
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
}
},
"npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
"dev": true,
"requires": {
"path-key": "^2.0.0"
+ },
+ "dependencies": {
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true
+ }
}
},
"npm-which": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz",
- "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=",
+ "integrity": "sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A==",
"dev": true,
"requires": {
"commander": "^2.9.0",
"npm-path": "^2.0.2",
"which": "^1.2.10"
+ },
+ "dependencies": {
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
}
},
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
"dev": true
},
"nyc": {
@@ -4877,12 +4721,6 @@
"yargs": "^15.0.2"
},
"dependencies": {
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true
- },
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -4892,12 +4730,6 @@
"color-convert": "^2.0.1"
}
},
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- },
"cliui": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
@@ -4927,7 +4759,7 @@
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"dev": true
},
"find-cache-dir": {
@@ -4951,11 +4783,17 @@
"path-exists": "^4.0.0"
}
},
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
+ "istanbul-lib-instrument": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
+ "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.7.5",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.0.0",
+ "semver": "^6.3.0"
+ }
},
"locate-path": {
"version": "5.0.0",
@@ -4963,7 +4801,16 @@
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"requires": {
- "p-locate": "^4.1.0"
+ "p-locate": "^4.1.0"
+ }
+ },
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.0.0"
}
},
"p-locate": {
@@ -4984,6 +4831,12 @@
"aggregate-error": "^3.0.0"
}
},
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ },
"pkg-dir": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
@@ -4993,32 +4846,6 @@
"find-up": "^4.0.0"
}
},
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
"wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
@@ -5070,12 +4897,13 @@
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true
},
"object-copy": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
"dev": true,
"requires": {
"copy-descriptor": "^0.1.0",
@@ -5086,7 +4914,7 @@
"define-property": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
@@ -5095,7 +4923,7 @@
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
@@ -5103,37 +4931,19 @@
}
}
},
- "object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true
- },
"object-visit": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
"dev": true,
"requires": {
"isobject": "^3.0.0"
}
},
- "object.assign": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
- "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "has-symbols": "^1.0.1",
- "object-keys": "^1.1.1"
- }
- },
"object.pick": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
"dev": true,
"requires": {
"isobject": "^3.0.1"
@@ -5142,7 +4952,7 @@
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
"requires": {
"wrappy": "1"
@@ -5151,7 +4961,7 @@
"onetime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
"dev": true,
"requires": {
"mimic-fn": "^1.0.0"
@@ -5160,13 +4970,13 @@
"os-browserify": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
- "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
"dev": true
},
"p-finally": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
"dev": true
},
"p-limit": {
@@ -5179,23 +4989,12 @@
}
},
"p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
- "p-limit": "^3.0.2"
- },
- "dependencies": {
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- }
+ "p-limit": "^2.0.0"
}
},
"p-map": {
@@ -5244,7 +5043,7 @@
"parse-json": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
"dev": true,
"requires": {
"error-ex": "^1.3.1",
@@ -5254,7 +5053,7 @@
"pascalcase": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
"dev": true
},
"path-browserify": {
@@ -5264,27 +5063,27 @@
"dev": true
},
"path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
"dev": true
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true
},
"path-is-inside": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
"dev": true
},
"path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true
},
"path-parse": {
@@ -5305,7 +5104,7 @@
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
"dev": true
}
}
@@ -5342,15 +5141,15 @@
"dev": true
},
"pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true
},
"pirates": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz",
- "integrity": "sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==",
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
+ "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
"dev": true
},
"pkg-dir": {
@@ -5360,42 +5159,6 @@
"dev": true,
"requires": {
"find-up": "^3.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- }
}
},
"please-upgrade-node": {
@@ -5410,13 +5173,13 @@
"posix-character-classes": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
"dev": true
},
"prettier": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz",
- "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
+ "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
"dev": true
},
"pretty-format": {
@@ -5430,26 +5193,17 @@
},
"dependencies": {
"ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
"dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
}
}
},
"process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
"dev": true
},
"process-nextick-args": {
@@ -5467,20 +5221,10 @@
"fromentries": "^1.2.0"
}
},
- "prop-types": {
- "version": "15.7.2",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
- "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
- "requires": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.8.1"
- }
- },
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
"dev": true
},
"public-encrypt": {
@@ -5508,19 +5252,19 @@
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
"dev": true
},
"querystring": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
- "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
"dev": true
},
"querystring-es3": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
- "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
"dev": true
},
"randombytes": {
@@ -5542,11 +5286,6 @@
"safe-buffer": "^5.1.0"
}
},
- "react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
"react-refresh": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
@@ -5568,6 +5307,12 @@
"util-deprecate": "~1.0.1"
},
"dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -5595,20 +5340,29 @@
"dev": true
},
"regenerate-unicode-properties": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz",
- "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
+ "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
"dev": true,
"requires": {
"regenerate": "^1.4.2"
}
},
"regenerator-runtime": {
- "version": "0.13.9",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
- "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==",
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
"dev": true
},
+ "regenerator-transform": {
+ "version": "0.15.1",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
+ "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
"regex-not": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
@@ -5620,29 +5374,23 @@
}
},
"regexpu-core": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz",
- "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz",
+ "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==",
"dev": true,
"requires": {
+ "@babel/regjsgen": "^0.8.0",
"regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^9.0.0",
- "regjsgen": "^0.5.2",
- "regjsparser": "^0.7.0",
+ "regenerate-unicode-properties": "^10.1.0",
+ "regjsparser": "^0.9.1",
"unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.0.0"
+ "unicode-match-property-value-ecmascript": "^2.1.0"
}
},
- "regjsgen": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
- "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==",
- "dev": true
- },
"regjsparser": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz",
- "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==",
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
+ "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
"dev": true,
"requires": {
"jsesc": "~0.5.0"
@@ -5651,7 +5399,7 @@
"jsesc": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
"dev": true
}
}
@@ -5659,28 +5407,28 @@
"release-zalgo": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz",
- "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=",
+ "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==",
"dev": true,
"requires": {
"es6-error": "^4.0.1"
}
},
"repeat-element": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
- "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
+ "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
"dev": true
},
"repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
"dev": true
},
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"dev": true
},
"require-main-filename": {
@@ -5690,32 +5438,32 @@
"dev": true
},
"resolve": {
- "version": "1.21.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.1.tgz",
- "integrity": "sha512-lfEImVbnolPuaSZuLQ52cAxPBHeI77sPwCOWRdy12UG/CNa8an7oBHH1R+Fp1/mUqSJi4c8TIP6FOIPSZAUrEQ==",
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
"dev": true,
"requires": {
- "is-core-module": "^2.8.0",
+ "is-core-module": "^2.9.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
}
},
"resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true
},
"resolve-url": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
"dev": true
},
"restore-cursor": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
- "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
"dev": true,
"requires": {
"onetime": "^2.0.0",
@@ -5751,22 +5499,6 @@
"dev": true,
"requires": {
"glob": "^7.1.3"
- },
- "dependencies": {
- "glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- }
}
},
"ripemd160": {
@@ -5780,24 +5512,24 @@
}
},
"rxjs": {
- "version": "6.6.3",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
- "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
}
},
"safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"dev": true
},
"safe-regex": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
"dev": true,
"requires": {
"ret": "~0.1.10"
@@ -5818,7 +5550,7 @@
"semver-compare": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
- "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
+ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
"dev": true
},
"serialize-javascript": {
@@ -5833,7 +5565,7 @@
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
"dev": true
},
"set-value": {
@@ -5851,7 +5583,7 @@
"extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
@@ -5862,7 +5594,7 @@
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
"dev": true
},
"sha.js": {
@@ -5885,24 +5617,24 @@
}
},
"shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"requires": {
- "shebang-regex": "^1.0.0"
+ "shebang-regex": "^3.0.0"
}
},
"shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
},
"signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"dev": true
},
"sinon": {
@@ -5939,7 +5671,7 @@
"slice-ansi": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
- "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
+ "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==",
"dev": true
},
"snapdragon": {
@@ -5958,10 +5690,19 @@
"use": "^3.1.0"
},
"dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
"define-property": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
@@ -5970,11 +5711,23 @@
"extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true
}
}
},
@@ -5992,7 +5745,7 @@
"define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
"dev": true,
"requires": {
"is-descriptor": "^1.0.0"
@@ -6041,7 +5794,7 @@
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
@@ -6050,9 +5803,9 @@
}
},
"source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"source-map-resolve": {
@@ -6068,10 +5821,20 @@
"urix": "^0.1.0"
}
},
+ "source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
"source-map-url": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
- "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
"dev": true
},
"spawn-wrap": {
@@ -6088,13 +5851,13 @@
"which": "^2.0.1"
},
"dependencies": {
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
"dev": true,
"requires": {
- "isexe": "^2.0.0"
+ "semver": "^6.0.0"
}
}
}
@@ -6111,7 +5874,7 @@
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true
},
"staged-git-files": {
@@ -6123,7 +5886,7 @@
"static-extend": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
"dev": true,
"requires": {
"define-property": "^0.2.5",
@@ -6133,7 +5896,7 @@
"define-property": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
@@ -6167,18 +5930,18 @@
"string-argv": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz",
- "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=",
+ "integrity": "sha512-p6/Mqq0utTQWUeGMi/m0uBtlLZEwXSY3+mXzeRRqw7fz5ezUb28Wr0R99NlfbWaMmL/jCyT9be4jpn7Yz8IO8w==",
"dev": true
},
"string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
}
},
"string_decoder": {
@@ -6188,14 +5951,6 @@
"dev": true,
"requires": {
"safe-buffer": "~5.2.0"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- }
}
},
"stringify-object": {
@@ -6210,12 +5965,12 @@
}
},
"strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "^5.0.1"
}
},
"strip-bom": {
@@ -6227,13 +5982,13 @@
"strip-eof": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
"dev": true
},
"strip-indent": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
- "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+ "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==",
"dev": true
},
"strip-json-comments": {
@@ -6243,10 +5998,13 @@
"dev": true
},
"supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
},
"supports-preserve-symlinks-flag": {
"version": "1.0.0",
@@ -6269,22 +6027,6 @@
"@istanbuljs/schema": "^0.1.2",
"glob": "^7.1.4",
"minimatch": "^3.0.4"
- },
- "dependencies": {
- "glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- }
}
},
"timers-browserify": {
@@ -6299,13 +6041,19 @@
"to-arraybuffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
- "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==",
+ "dev": true
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true
},
"to-object-path": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
@@ -6314,7 +6062,7 @@
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
@@ -6337,7 +6085,7 @@
"to-regex-range": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
"dev": true,
"requires": {
"is-number": "^3.0.0",
@@ -6353,7 +6101,7 @@
"tty-browserify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
- "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+ "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==",
"dev": true
},
"type-detect": {
@@ -6377,11 +6125,6 @@
"is-typedarray": "^1.0.0"
}
},
- "underscore": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz",
- "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw=="
- },
"unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
@@ -6399,15 +6142,15 @@
}
},
"unicode-match-property-value-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
- "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
"dev": true
},
"unicode-property-aliases-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
"dev": true
},
"union-value": {
@@ -6425,7 +6168,7 @@
"unset-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
"dev": true,
"requires": {
"has-value": "^0.3.1",
@@ -6435,7 +6178,7 @@
"has-value": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
"dev": true,
"requires": {
"get-value": "^2.0.3",
@@ -6446,7 +6189,7 @@
"isobject": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
"dev": true,
"requires": {
"isarray": "1.0.0"
@@ -6457,27 +6200,31 @@
"has-values": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
"dev": true
}
}
},
- "urijs": {
- "version": "1.17.1",
- "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.17.1.tgz",
- "integrity": "sha1-Cii/LgDfwk7rCXT+uCaKI4x7rC0=",
- "dev": true
+ "update-browserslist-db": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
+ "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
+ "dev": true,
+ "requires": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ }
},
"urix": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
"dev": true
},
"url": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
- "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
"dev": true,
"requires": {
"punycode": "1.3.2",
@@ -6487,7 +6234,7 @@
"punycode": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
- "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
"dev": true
}
}
@@ -6510,7 +6257,7 @@
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
"dev": true
}
}
@@ -6518,32 +6265,24 @@
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true
},
"uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"dev": true
},
"v8-to-istanbul": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
- "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
+ "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
"dev": true,
"requires": {
+ "@jridgewell/trace-mapping": "^0.3.12",
"@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0",
- "source-map": "^0.7.3"
- },
- "dependencies": {
- "source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
- "dev": true
- }
+ "convert-source-map": "^1.6.0"
}
},
"vm-browserify": {
@@ -6553,9 +6292,9 @@
"dev": true
},
"which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"requires": {
"isexe": "^2.0.0"
@@ -6564,7 +6303,7 @@
"which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
"dev": true
},
"wipe-node-cache": {
@@ -6585,61 +6324,55 @@
"wolfy87-eventemitter": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/wolfy87-eventemitter/-/wolfy87-eventemitter-4.3.0.tgz",
- "integrity": "sha1-ZJc5bJXnQ1nwa241QJM5MY2Nlk8="
+ "integrity": "sha512-zPOFkOo5xFycO1XKnZmeRMv2u+z+HAwS3/3qDUNNDOlZqcqJQp2QGkOc85YmxmDE8OLbvd0wlmBQl9ffrrrrzQ=="
},
"workerpool": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
- "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz",
+ "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
"dev": true
},
"wrap-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
- "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "color-convert": "^2.0.1"
}
},
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "color-name": "~1.1.4"
}
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
}
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
},
"write-file-atomic": {
@@ -6667,9 +6400,9 @@
"dev": true
},
"yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true
},
"yargs": {
@@ -6685,40 +6418,6 @@
"string-width": "^4.2.0",
"y18n": "^5.0.5",
"yargs-parser": "^20.2.2"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- }
}
},
"yargs-parser": {
@@ -6737,6 +6436,14 @@
"decamelize": "^4.0.0",
"flat": "^5.0.2",
"is-plain-obj": "^2.1.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true
+ }
}
},
"yocto-queue": {
diff --git a/package.json b/package.json
index 7c4215d..a40e03b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@meteorrn/core",
- "version": "2.3.1",
+ "version": "2.4.0",
"description": "Full Meteor Client for React Native",
"main": "src/index.js",
"repository": {
@@ -8,7 +8,8 @@
"url": "git+https://github.com/TheRealNate/meteor-react-native.git"
},
"scripts": {
- "lint": "prettier --check ./**/*.js",
+ "lint": "prettier --check .",
+ "lint:fix": "prettier --write .",
"test:coverage": "nyc --reporter=html --reporter=text ./node_modules/.bin/mocha 'test/**/*tests.js'"
},
"keywords": [
@@ -26,42 +27,37 @@
},
"homepage": "https://github.com/TheRealNate/meteor-react-native#readme",
"dependencies": {
- "base-64": "^0.1.0",
- "crypto-js": "^3.1.6",
- "ejson": "^2.1.2",
- "minimongo-cache": "0.0.48",
- "node-require-fallback": "^1.0.0",
- "prop-types": "^15.5.10",
- "underscore": "^1.8.3",
- "wolfy87-eventemitter": "^4.3.0"
+ "@meteorrn/minimongo": "1.0.1",
+ "ejson": "2.2.3",
+ "wolfy87-eventemitter": "4.3.0"
},
"devDependencies": {
- "@babel/core": "^7.16.10",
- "@babel/preset-env": "^7.16.11",
- "@babel/register": "^7.16.9",
- "@istanbuljs/nyc-config-babel": "^3.0.0",
- "babel-plugin-istanbul": "^6.1.1",
- "c8": "^7.11.0",
- "chai": "^4.3.4",
- "husky": "^0.14.3",
- "lint-staged": "^7.1.2",
- "metro-react-native-babel-preset": "^0.66.2",
- "mocha": "^9.1.4",
- "mock-socket": "^2.0.0",
- "nyc": "^15.1.0",
- "prettier": "^1.12.1",
- "rewiremock": "^3.14.3",
- "sinon": "^12.0.1"
+ "@babel/core": "7.19.6",
+ "@babel/preset-env": "7.19.4",
+ "@babel/register": "7.18.9",
+ "@istanbuljs/nyc-config-babel": "3.0.0",
+ "babel-plugin-istanbul": "6.1.1",
+ "c8": "7.12.0",
+ "chai": "4.3.6",
+ "husky": "0.14.3",
+ "lint-staged": "7.3.0",
+ "metro-react-native-babel-preset": "0.66.2",
+ "mocha": "10.1.0",
+ "mock-socket": "9.1.5",
+ "nyc": "15.1.0",
+ "prettier": "2.7.1",
+ "rewiremock": "3.14.3",
+ "sinon": "12.0.1"
},
"optionalDependencies": {
- "@react-native-async-storage/async-storage": ">=1.8.1"
+ "@react-native-community/async-storage": ">=1.12.1"
},
"peerDependencies": {
"@react-native-community/netinfo": "*",
"react": "*",
- "react-native": ">= 0.60.0"
+ "react-native": "*"
},
"engines": {
- "node": ">= 10.x"
+ "node": ">= 14.x"
}
}
diff --git a/src/Call.js b/src/Call.js
index 61421bc..3a47134 100644
--- a/src/Call.js
+++ b/src/Call.js
@@ -1,6 +1,6 @@
import Data from './Data';
-export default function(eventName) {
+export default function (eventName) {
var args = Array.prototype.slice.call(arguments, 1);
if (args.length && typeof args[args.length - 1] === 'function') {
var callback = args.pop();
diff --git a/src/Collection.js b/src/Collection.js
index ecfe7cd..205f3dd 100644
--- a/src/Collection.js
+++ b/src/Collection.js
@@ -1,41 +1,63 @@
import Tracker from './Tracker.js';
import EJSON from 'ejson';
-import _ from 'underscore';
-
import Data from './Data';
import Random from '../lib/Random';
import call from './Call';
-import { isPlainObject } from '../lib/utils.js';
+import { hasOwn, isPlainObject } from '../lib/utils.js';
const observers = {};
-
-export const runObservers = (type, collection, newDocument, oldDocument) => {
- if(observers[collection]) {
- observers[collection].forEach(({cursor, callbacks}) => {
- if(callbacks[type]) {
- if(type === 'removed') {
- callbacks['removed'](newDocument);
- }
- else if(Data.db[collection].findOne({$and:[{_id:newDocument._id}, cursor._selector]})) {
+const observersByComp = {};
+/**
+ * Get the list of callbacks for changes on a collection
+ * @param {string} type - Type of change happening.
+ * @param {string} collection - Collection it has happened on
+ * @param {string} newDocument - New value of item in the colleciton
+ */
+export function getObservers(type, collection, newDocument) {
+ let observersRet = [];
+ if (observers[collection]) {
+ observers[collection].forEach(({ cursor, callbacks }) => {
+ if (callbacks[type]) {
+ if (type === 'removed') {
+ observersRet.push(callbacks['removed']);
+ } else if (
+ Data.db[collection].findOne({
+ $and: [{ _id: newDocument._id }, cursor._selector],
+ })
+ ) {
try {
- callbacks[type](newDocument, oldDocument);
+ observersRet.push(callbacks[type]);
+ } catch (e) {
+ console.error('Error in observe callback old', e);
}
- catch(e) {
- // TODO we should optionally allow an onError callback
- console.error("Error in observe callback", e);
- }
- }
- else {
+ } else {
// TODO what to do here?
}
}
});
}
-};
+ // Find the observers related to the specific query
+ if (observersByComp[collection]) {
+ let keys = Object.keys(observersByComp[collection]);
+ for (let i = 0; i < keys.length; i++) {
+ observersByComp[collection][keys[i]].callbacks.forEach(
+ ({ cursor, callback }) => {
+ let findRes = Data.db[collection].findOne({
+ $and: [{ _id: newDocument?._id }, cursor._selector],
+ });
+ if (findRes) {
+ observersRet.push(callback);
+ }
+ }
+ );
+ }
+ }
+ return observersRet;
+}
const _registerObserver = (collection, cursor, callbacks) => {
observers[collection] = observers[collection] || [];
- observers[collection].push({cursor, callbacks});
+ observers[collection].push({ cursor, callbacks });
};
class Cursor {
@@ -66,7 +88,7 @@ class Cursor {
? this._docs.map(this._collection._transform)
: this._docs;
}
-
+
observe(callbacks) {
_registerObserver(this._collection._collection.name, this, callbacks);
}
@@ -76,12 +98,12 @@ export const localCollections = [];
export class Collection {
constructor(name, options = {}) {
- if(name === null) {
+ if (name === null) {
this.localCollection = true;
name = Random.id();
localCollections.push(name);
}
-
+
if (!Data.db[name]) Data.db.addCollection(name);
this._collection = Data.db[name];
@@ -104,8 +126,44 @@ export class Collection {
} else {
docs = this._collection.find(selector, options);
}
+ result = new Cursor(
+ this,
+ docs,
+ typeof selector == 'string' ? { _id: selector } : selector
+ );
+
+ // If this is being called within a use tracker
+ // make the tracker computation to say if this
+ // collection is changed it needs to be re-run
+ if (Tracker.active && Tracker.currentComputation) {
+ let id = Tracker.currentComputation._id;
+ observersByComp[this._name] = observersByComp[this._name] || {};
+ if (!observersByComp[this._name][id]) {
+ let item = {
+ computation: Tracker.currentComputation,
+ callbacks: [],
+ };
+ observersByComp[this._name][id] = item;
+ }
+ let item = observersByComp[this._name][id];
+
+ item.callbacks.push({
+ cursor: result,
+ callback: (newVal, old) => {
+ if (old && EJSON.equals(newVal, old)) {
+ return;
+ }
- result = new Cursor(this, docs, selector);
+ item.computation.invalidate();
+ },
+ });
+
+ Tracker.onInvalidate(() => {
+ if (observersByComp[this._name][id]) {
+ delete observersByComp[this._name][id];
+ }
+ });
+ }
return result;
}
@@ -141,19 +199,28 @@ export class Collection {
});
this._collection.upsert(item);
-
- if(!this.localCollection) {
+
+ if (!this.localCollection) {
Data.waitDdpConnected(() => {
- call(`/${this._name}/insert`, item, err => {
+ call(`/${this._name}/insert`, item, (err) => {
if (err) {
this._collection.del(id);
return callback(err);
}
-
+
callback(null, id);
});
});
}
+ // Notify relevant observers that the item has been updated with its new value
+ let observers = getObservers('added', this._collection.name, item);
+ observers.forEach((callback) => {
+ try {
+ callback(item, undefined);
+ } catch (e) {
+ console.error('Error in observe callback', e);
+ }
+ });
return id;
}
@@ -162,7 +229,7 @@ export class Collection {
if (typeof options == 'function') {
callback = options;
}
-
+ let old = this._collection.get(id);
if (!this._collection.get(id))
return callback({
error: 409,
@@ -171,20 +238,30 @@ export class Collection {
// change mini mongo for optimize UI changes
this._collection.upsert({ _id: id, ...modifier.$set });
-
- if(!this.localCollection || (options && options.localOnly)) {
+
+ if (!this.localCollection || (options && options.localOnly)) {
Data.waitDdpConnected(() => {
- call(`/${this._name}/update`, { _id: id }, modifier, err => {
+ call(`/${this._name}/update`, { _id: id }, modifier, (err) => {
if (err) {
// todo in such case the _collection's document should be reverted
// unless we remove the auto-update to the server anyways
return callback(err);
}
-
+
callback(null, id);
});
});
}
+ let newItem = this._collection.findOne({ _id: id });
+ // Notify relevant observers that the item has been updated with its new value
+ let observers = getObservers('changed', this._collection.name, newItem);
+ observers.forEach((callback) => {
+ try {
+ callback(newItem, old);
+ } catch (e) {
+ console.error('Error in observe callback', e);
+ }
+ });
}
remove(id, callback = () => {}) {
@@ -193,7 +270,7 @@ export class Collection {
if (element) {
this._collection.del(element._id);
- if(!this.localCollection) {
+ if (!this.localCollection) {
Data.waitDdpConnected(() => {
call(`/${this._name}/remove`, { _id: id }, (err, res) => {
if (err) {
@@ -204,6 +281,16 @@ export class Collection {
});
});
}
+
+ // Load the observers for removing the element
+ let observers = getObservers('removed', this._collection.name, element);
+ observers.forEach((callback) => {
+ try {
+ callback(element);
+ } catch (e) {
+ console.error('Error in observe callback', e);
+ }
+ });
} else {
callback(`No document with _id : ${id}`);
}
@@ -216,9 +303,9 @@ export class Collection {
if (!this._helpers) {
this._helpers = function Document(doc) {
- return _.extend(this, doc);
+ return Object.assign(this, doc);
};
- this._transform = doc => {
+ this._transform = (doc) => {
if (_transform) {
doc = _transform(doc);
}
@@ -226,7 +313,7 @@ export class Collection {
};
}
- _.each(helpers, (helper, key) => {
+ Object.entries(helpers).forEach(([key, helper]) => {
this._helpers.prototype[key] = helper;
});
}
@@ -249,8 +336,8 @@ function wrapTransform(transform) {
// No need to doubly-wrap transforms.
if (transform.__wrappedTransform__) return transform;
- var wrapped = function(doc) {
- if (!_.has(doc, '_id')) {
+ var wrapped = function (doc) {
+ if (!hasOwn(doc, '_id')) {
// XXX do we ever have a transform on the oplog's collection? because that
// collection has no _id.
throw new Error('can only transform documents with _id');
@@ -258,7 +345,7 @@ function wrapTransform(transform) {
var id = doc._id;
// XXX consider making tracker a weak dependency and checking Package.tracker here
- var transformed = Tracker.nonreactive(function() {
+ var transformed = Tracker.nonreactive(function () {
return transform(doc);
});
@@ -266,7 +353,7 @@ function wrapTransform(transform) {
throw new Error('transform must return object');
}
- if (_.has(transformed, '_id')) {
+ if (hasOwn(transformed, '_id')) {
if (!EJSON.equals(transformed._id, id)) {
throw new Error("transformed document can't have different _id");
}
diff --git a/src/Data.js b/src/Data.js
index c1a9df5..851b6d6 100644
--- a/src/Data.js
+++ b/src/Data.js
@@ -1,6 +1,9 @@
-import minimongo from 'minimongo-cache';
+import minimongo from '@meteorrn/minimongo';
import Tracker from './Tracker.js';
-import { batchedUpdates, runAfterInteractions } from '../helpers/reactNativeBindings'
+import {
+ batchedUpdates,
+ runAfterInteractions,
+} from '../helpers/reactNativeBindings';
const db = new minimongo();
db.debug = false;
@@ -64,17 +67,21 @@ export default {
off(eventName, cb) {
this._cbs.splice(
this._cbs.findIndex(
- _cb => _cb.callback == cb && _cb.eventName == eventName
+ (_cb) => _cb.callback == cb && _cb.eventName == eventName
),
1
);
},
notify(eventName) {
- this._cbs.map(cb => {
- if (cb.eventName == eventName && typeof cb.callback == 'function') {
- cb.callback();
- }
- });
+ // Notifify that changes have been made
+ // Put in timeout so it doesn't block main thread
+ setTimeout(() => {
+ this._cbs.map((cb) => {
+ if (cb.eventName == eventName && typeof cb.callback == 'function') {
+ cb.callback();
+ }
+ });
+ }, 1);
},
waitDdpConnected(cb) {
if (this.ddp && this.ddp.status == 'connected') {
diff --git a/src/Meteor.d.ts b/src/Meteor.d.ts
index 81f5d12..217d00d 100644
--- a/src/Meteor.d.ts
+++ b/src/Meteor.d.ts
@@ -1,28 +1,33 @@
declare module '@meteorrn/core' {
- function connect(endpoint: string, options?: any): void;
- function disconnect(): void;
- function reconnect(): void;
+ function connect(endpoint: string, options?: any): void;
+ function disconnect(): void;
+ function reconnect(): void;
- type Status = 'change' | 'connected' | 'disconnected' | 'loggingIn' | 'loggingOut';
+ type Status =
+ | 'change'
+ | 'connected'
+ | 'disconnected'
+ | 'loggingIn'
+ | 'loggingOut';
- function call(...args: any[]): void;
- function status(): {
- connected: boolean;
- status: Status;
- };
+ function call(...args: any[]): void;
+ function status(): {
+ connected: boolean;
+ status: Status;
+ };
- function logout(callback: (error: any) => void): void;
- function loggingOut(): boolean;
- function loggingIn(): boolean;
+ function logout(callback: (error: any) => void): void;
+ function loggingOut(): boolean;
+ function loggingIn(): boolean;
- interface Data {
- getUrl(): string;
- waitDdpReady(cb: (...args: any[]) => void): void;
- onChange(cb: (...args: any[]) => void): void;
- offChange(cb: (...args: any[]) => void): void;
- on(eventName: string, cb: (...args: any[]) => void): void;
- off(eventName: string, cb: (...args: any[]) => void): void;
- waitDdpConnected(cb: (...args: any[]) => void): void;
- }
- function getData(): Data;
+ interface Data {
+ getUrl(): string;
+ waitDdpReady(cb: (...args: any[]) => void): void;
+ onChange(cb: (...args: any[]) => void): void;
+ offChange(cb: (...args: any[]) => void): void;
+ on(eventName: string, cb: (...args: any[]) => void): void;
+ off(eventName: string, cb: (...args: any[]) => void): void;
+ waitDdpConnected(cb: (...args: any[]) => void): void;
+ }
+ function getData(): Data;
}
diff --git a/src/Meteor.js b/src/Meteor.js
index cf6463f..c6efc38 100644
--- a/src/Meteor.js
+++ b/src/Meteor.js
@@ -5,7 +5,7 @@ import Random from '../lib/Random';
import Data from './Data';
import Mongo from './Mongo';
-import { Collection, runObservers, localCollections } from './Collection';
+import { Collection, getObservers, localCollections } from './Collection';
import call from './Call';
import withTracker from './components/withTracker';
@@ -20,6 +20,7 @@ const Meteor = {
enableVerbose() {
isVerbose = true;
},
+ _reactiveDict: new ReactiveDict(),
Random,
Mongo,
Tracker,
@@ -27,7 +28,7 @@ const Meteor = {
ReactiveDict,
Collection,
collection() {
- throw new Error("Meteor.collection is deprecated. Use Mongo.Collection");
+ throw new Error('Meteor.collection is deprecated. Use Mongo.Collection');
},
withTracker,
useTracker,
@@ -36,13 +37,15 @@ const Meteor = {
},
status() {
return {
- connected: Data.ddp ? Data.ddp.status == 'connected' : false,
+ connected: !!this._reactiveDict.get('connected'),
status: Data.ddp ? Data.ddp.status : 'disconnected',
//retryCount: 0
//retryTime:
//reason:
};
},
+
+ removing: {},
call: call,
disconnect() {
if (Data.ddp) {
@@ -53,33 +56,49 @@ const Meteor = {
for (var i in Data.subscriptions) {
const sub = Data.subscriptions[i];
Data.ddp.unsub(sub.subIdRemember);
+ this.removing[sub.subIdRemember] = true;
sub.subIdRemember = Data.ddp.sub(sub.name, sub.params);
}
+ // If we get a double restart, make sure we keep track and
+ // remove it later
+ Object.keys(this.removing).forEach((item) => {
+ Data.ddp.unsub(item);
+ });
},
waitDdpConnected: Data.waitDdpConnected.bind(Data),
reconnect() {
Data.ddp && Data.ddp.connect();
},
- packageInterface:() => {
+ packageInterface: () => {
return {
- AsyncStorage:Data._options.AsyncStorage || require('@react-native-async-storage/async-storage').default
+ AsyncStorage:
+ Data._options.AsyncStorage ||
+ require('@react-native-community/async-storage').default,
};
},
connect(endpoint, options) {
if (!endpoint) endpoint = Data._endpoint;
if (!options) options = Data._options;
- if((!endpoint.startsWith("ws") || !endpoint.endsWith("/websocket")) && !options.suppressUrlErrors) {
- throw new Error(`Your url "${endpoint}" may be in the wrong format. It should start with "ws://" or "wss://" and end with "/websocket", e.g. "wss://myapp.meteor.com/websocket". To disable this warning, connect with option "suppressUrlErrors" as true, e.g. Meteor.connect("${endpoint}", {suppressUrlErrors:true});`);
+ if (
+ (!endpoint.startsWith('ws') || !endpoint.endsWith('/websocket')) &&
+ !options.suppressUrlErrors
+ ) {
+ throw new Error(
+ `Your url "${endpoint}" may be in the wrong format. It should start with "ws://" or "wss://" and end with "/websocket", e.g. "wss://myapp.meteor.com/websocket". To disable this warning, connect with option "suppressUrlErrors" as true, e.g. Meteor.connect("${endpoint}", {suppressUrlErrors:true});`
+ );
}
if (!options.AsyncStorage) {
- const AsyncStorage = require('@react-native-async-storage/async-storage').default;
+ const AsyncStorage =
+ require('@react-native-community/async-storage').default;
if (AsyncStorage) {
options.AsyncStorage = AsyncStorage;
} else {
- throw new Error('No AsyncStorage detected. Import an AsyncStorage package and add to `options` in the Meteor.connect() method');
+ throw new Error(
+ 'No AsyncStorage detected. Import an AsyncStorage package and add to `options` in the Meteor.connect() method'
+ );
}
}
@@ -91,44 +110,53 @@ const Meteor = {
SocketConstructor: WebSocket,
...options,
});
-
+
try {
- const NetInfo = require("@react-native-community/netinfo").default;
- NetInfo.addEventListener(({type, isConnected, isInternetReachable, isWifiEnabled}) => {
- if (isConnected && Data.ddp.autoReconnect) {
- Data.ddp.connect();
+ const NetInfo = require('@react-native-community/netinfo').default;
+ // Reconnect if we lose internet
+ NetInfo.addEventListener(
+ ({ type, isConnected, isInternetReachable, isWifiEnabled }) => {
+ if (isConnected && Data.ddp.autoReconnect) {
+ Data.ddp.connect();
+ }
}
- });
- }
- catch(e) {
- console.warn("Warning: NetInfo not installed, so DDP will not automatically reconnect");
+ );
+ } catch (e) {
+ console.warn(
+ 'Warning: NetInfo not installed, so DDP will not automatically reconnect'
+ );
}
Data.ddp.on('connected', () => {
// Clear the collections of any stale data in case this is a reconnect
if (Data.db && Data.db.collections) {
for (var collection in Data.db.collections) {
- if(!localCollections.includes(collection)) { // Dont clear data from local collections
+ if (!localCollections.includes(collection)) {
+ // Dont clear data from local collections
Data.db[collection].remove({});
}
}
}
- Data.notify('change');
-
- if(isVerbose) {
+ if (isVerbose) {
console.info('Connected to DDP server.');
}
this._loadInitialUser().then(() => {
this._subscriptionsRestart();
});
+ this._reactiveDict.set('connected', true);
+ this.connected = true;
+ Data.notify('change');
});
let lastDisconnect = null;
Data.ddp.on('disconnected', () => {
+ this.connected = false;
+ this._reactiveDict.set('connected', false);
+
Data.notify('change');
- if(isVerbose) {
+ if (isVerbose) {
console.info('Disconnected from DDP server.');
}
@@ -141,7 +169,7 @@ const Meteor = {
lastDisconnect = new Date();
});
- Data.ddp.on('added', message => {
+ Data.ddp.on('added', (message) => {
if (!Data.db[message.collection]) {
Data.db.addCollection(message.collection);
}
@@ -151,11 +179,17 @@ const Meteor = {
};
Data.db[message.collection].upsert(document);
-
- runObservers("added", message.collection, document);
+ let observers = getObservers('added', message.collection, document);
+ observers.forEach((callback) => {
+ try {
+ callback(document, null);
+ } catch (e) {
+ console.error('Error in observe callback', e);
+ }
+ });
});
- Data.ddp.on('ready', message => {
+ Data.ddp.on('ready', (message) => {
const idsMap = new Map();
for (var i in Data.subscriptions) {
const sub = Data.subscriptions[i];
@@ -172,44 +206,71 @@ const Meteor = {
}
});
- Data.ddp.on('changed', message => {
+ Data.ddp.on('changed', (message) => {
const unset = {};
if (message.cleared) {
- message.cleared.forEach(field => {
+ message.cleared.forEach((field) => {
unset[field] = null;
});
}
- if(Data.db[message.collection]) {
+ if (Data.db[message.collection]) {
const document = {
_id: message.id,
...message.fields,
...unset,
};
- const oldDocument = Data.db[message.collection].findOne({_id:message.id});
+ const oldDocument = Data.db[message.collection].findOne({
+ _id: message.id,
+ });
Data.db[message.collection].upsert(document);
-
- runObservers("changed", message.collection, document, oldDocument);
+ let observers = getObservers('changed', message.collection, document);
+ observers.forEach((callback) => {
+ try {
+ callback(document, oldDocument);
+ } catch (e) {
+ console.error('Error in observe callback', e);
+ }
+ });
}
});
- Data.ddp.on('removed', message => {
- if(Data.db[message.collection]) {
- const oldDocument = Data.db[message.collection].findOne({_id:message.id});
+ Data.ddp.on('removed', (message) => {
+ if (Data.db[message.collection]) {
+ const oldDocument = Data.db[message.collection].findOne({
+ _id: message.id,
+ });
+ let observers = getObservers(
+ 'removed',
+ message.collection,
+ oldDocument
+ );
Data.db[message.collection].del(message.id);
- runObservers("removed", message.collection, oldDocument);
+ observers.forEach((callback) => {
+ try {
+ callback(null, oldDocument);
+ } catch (e) {
+ console.error('Error in observe callback', e);
+ }
+ });
}
});
- Data.ddp.on('result', message => {
- const call = Data.calls.find(call => call.id == message.id);
+ Data.ddp.on('result', (message) => {
+ const call = Data.calls.find((call) => call.id == message.id);
if (typeof call.callback == 'function')
call.callback(message.error, message.result);
- Data.calls.splice(Data.calls.findIndex(call => call.id == message.id), 1);
+ Data.calls.splice(
+ Data.calls.findIndex((call) => call.id == message.id),
+ 1
+ );
});
- Data.ddp.on('nosub', message => {
+ Data.ddp.on('nosub', (message) => {
+ if (this.removing[message.id]) {
+ delete this.removing[message.id];
+ }
for (var i in Data.subscriptions) {
const sub = Data.subscriptions[i];
if (sub.subIdRemember == message.id) {
@@ -217,6 +278,9 @@ const Meteor = {
}
}
});
+ Data.ddp.on('error', (message) => {
+ console.warn(message);
+ });
},
subscribe(name) {
let params = Array.prototype.slice.call(arguments, 1);
@@ -293,7 +357,7 @@ const Meteor = {
readyDeps: new Tracker.Dependency(),
readyCallback: callbacks.onReady,
stopCallback: callbacks.onStop,
- stop: function() {
+ stop: function () {
Data.ddp.unsub(this.subIdRemember);
delete Data.subscriptions[this.id];
this.ready && this.readyDeps.changed();
@@ -307,10 +371,10 @@ const Meteor = {
// return a handle to the application.
var handle = {
- stop: function() {
+ stop: function () {
if (Data.subscriptions[id]) Data.subscriptions[id].stop();
},
- ready: function() {
+ ready: function () {
if (!Data.subscriptions[id]) return false;
let record = Data.subscriptions[id];
@@ -327,17 +391,21 @@ const Meteor = {
// as a change to mark the subscription "inactive" so that it can
// be reused from the rerun. If it isn't reused, it's killed from
// an afterFlush.
- Tracker.onInvalidate(function(c) {
+ Tracker.onInvalidate(function (c) {
if (Data.subscriptions[id]) {
Data.subscriptions[id].inactive = true;
}
- Tracker.afterFlush(function() {
+ Tracker.afterFlush(function () {
if (Data.subscriptions[id] && Data.subscriptions[id].inactive) {
handle.stop();
}
});
});
+ } else {
+ if (Data.subscriptions[id]) {
+ Data.subscriptions[id].inactive = true;
+ }
}
return handle;
diff --git a/src/Mongo.js b/src/Mongo.js
index 8c29adc..9fb669c 100644
--- a/src/Mongo.js
+++ b/src/Mongo.js
@@ -1,5 +1,5 @@
import { Collection } from './Collection';
export default {
- Collection
+ Collection,
};
diff --git a/src/ReactiveDict.js b/src/ReactiveDict.js
index cbbb06d..db040af 100644
--- a/src/ReactiveDict.js
+++ b/src/ReactiveDict.js
@@ -1,13 +1,13 @@
import EJSON from 'ejson';
import MongoID from '../lib/mongo-id';
-import Data from './Data';
+import Tracker from './Tracker';
-const stringify = function(value) {
+const stringify = function (value) {
if (value === undefined) return 'undefined';
return EJSON.stringify(value);
};
-const parse = function(serialized) {
+const parse = function (serialized) {
if (serialized === undefined || serialized === 'undefined') return undefined;
return EJSON.parse(serialized);
};
@@ -20,6 +20,9 @@ export default class ReactiveDict {
this.keys[i] = stringify(dictName[i]);
}
}
+
+ this.keyDeps = {};
+ this.keyValueDeps = {};
}
set(keyOrObject, value) {
if (typeof keyOrObject === 'object' && value === undefined) {
@@ -39,8 +42,11 @@ export default class ReactiveDict {
if (value === oldSerializedValue) return;
this.keys[key] = value;
+ if (this.keyDeps[key]) {
+ this.keyDeps[key].changed();
+ }
- Data.notify('change');
+ //Data.notify('change');
}
setDefault(key, value) {
// for now, explicitly check for undefined, since there is no
@@ -51,8 +57,17 @@ export default class ReactiveDict {
}
}
get(key) {
+ this._ensureKey(key);
+ this.keyDeps[key].depend();
return parse(this.keys[key]);
}
+
+ _ensureKey(key) {
+ if (!this.keyDeps[key]) {
+ this.keyDeps[key] = new Tracker.Dependency();
+ this.keyValueDeps[key] = {};
+ }
+ }
equals(key, value) {
// We don't allow objects (or arrays that might include objects) for
// .equals, because JSON.stringify doesn't canonicalize object key
@@ -63,6 +78,8 @@ export default class ReactiveDict {
//
// XXX we could allow arrays as long as we recursively check that there
// are no objects
+ this._ensureKey(key);
+ this.keyDeps[key].depend();
if (
typeof value !== 'string' &&
typeof value !== 'number' &&
diff --git a/src/Tracker.js b/src/Tracker.js
index 79aafac..51c9399 100644
--- a/src/Tracker.js
+++ b/src/Tracker.js
@@ -34,7 +34,7 @@ Tracker.currentComputation = null;
function setCurrentComputation(c) {
Tracker.currentComputation = c;
- Tracker.active = !! c;
+ Tracker.active = !!c;
}
function _debugFunc() {
@@ -43,10 +43,13 @@ function _debugFunc() {
// on some browser we come across, like it was on IE 7).
//
// Lazy evaluation because `Meteor` does not exist right away.(??)
- return (typeof Meteor !== "undefined" ? Meteor._debug :
- ((typeof console !== "undefined") && console.error ?
- function () { console.error.apply(console, arguments); } :
- function () {}));
+ return typeof Meteor !== 'undefined'
+ ? Meteor._debug
+ : typeof console !== 'undefined' && console.error
+ ? function () {
+ console.error.apply(console, arguments);
+ }
+ : function () {};
}
function _maybeSuppressMoreLogs(messagesLength) {
@@ -54,7 +57,7 @@ function _maybeSuppressMoreLogs(messagesLength) {
// printed errors. Since the current implementation of _throwOrLog can log
// multiple separate log messages, suppress all of them if at least one suppress
// is expected as we still want them to count as one.
- if (typeof Meteor !== "undefined") {
+ if (typeof Meteor !== 'undefined') {
if (Meteor._suppressed_log_expected()) {
Meteor._suppress_log(messagesLength - 1);
}
@@ -65,12 +68,13 @@ function _throwOrLog(from, e) {
if (throwFirstError) {
throw e;
} else {
- var printArgs = ["Exception from Tracker " + from + " function:"];
+ var printArgs = ['Exception from Tracker ' + from + ' function:'];
if (e.stack && e.message && e.name) {
var idx = e.stack.indexOf(e.message);
- if (idx < 0 || idx > e.name.length + 2) { // check for "Error: "
+ if (idx < 0 || idx > e.name.length + 2) {
+ // check for "Error: "
// message is not part of the stack
- var message = e.name + ": " + e.message;
+ var message = e.name + ': ' + e.message;
printArgs.push(message);
}
}
@@ -89,7 +93,7 @@ function _throwOrLog(from, e) {
// no-op). This has the benefit of not adding an unnecessary stack
// frame on the client.
function withNoYieldsAllowed(f) {
- if ((typeof Meteor === 'undefined') || Meteor.isClient) {
+ if (typeof Meteor === 'undefined' || Meteor.isClient) {
return f;
} else {
return function () {
@@ -121,12 +125,10 @@ var throwFirstError = false;
var afterFlushCallbacks = [];
function requireFlush() {
- if (! willFlush) {
+ if (!willFlush) {
// We want this code to work without Meteor, see debugFunc above
- if (typeof Meteor !== "undefined")
- setTimeout(Tracker._runFlush);
- else
- setTimeout(Tracker._runFlush, 0);
+ if (typeof Meteor !== 'undefined') setTimeout(Tracker._runFlush);
+ else setTimeout(Tracker._runFlush, 0);
willFlush = true;
}
}
@@ -149,9 +151,10 @@ var constructingComputation = false;
*/
Tracker.Computation = class Computation {
constructor(f, parent, onError) {
- if (! constructingComputation)
+ if (!constructingComputation)
throw new Error(
- "Tracker.Computation constructor is private; use Tracker.autorun");
+ 'Tracker.Computation constructor is private; use Tracker.autorun'
+ );
constructingComputation = false;
// http://docs.meteor.com/#computation_stopped
@@ -205,8 +208,7 @@ Tracker.Computation = class Computation {
errored = false;
} finally {
this.firstRun = false;
- if (errored)
- this.stop();
+ if (errored) this.stop();
}
}
@@ -219,7 +221,7 @@ Tracker.Computation = class Computation {
*/
onInvalidate(f) {
if (typeof f !== 'function')
- throw new Error("onInvalidate requires a function");
+ throw new Error('onInvalidate requires a function');
if (this.invalidated) {
Tracker.nonreactive(() => {
@@ -236,8 +238,7 @@ Tracker.Computation = class Computation {
* @param {Function} callback Function to be called on stop. Receives one argument, the computation that was stopped.
*/
onStop(f) {
- if (typeof f !== 'function')
- throw new Error("onStop requires a function");
+ if (typeof f !== 'function') throw new Error('onStop requires a function');
if (this.stopped) {
Tracker.nonreactive(() => {
@@ -255,10 +256,12 @@ Tracker.Computation = class Computation {
* @locus Client
*/
invalidate() {
- if (! this.invalidated) {
+ if (!this.invalidated) {
// if we're currently in _recompute(), don't enqueue
// ourselves, since we'll rerun immediately anyway.
- if (! this._recomputing && ! this.stopped) {
+
+ if (!this._recomputing && !this.stopped && !this._isPending) {
+ this._isPending = true;
requireFlush();
pendingComputations.push(this);
}
@@ -267,7 +270,7 @@ Tracker.Computation = class Computation {
// callbacks can't add callbacks, because
// this.invalidated === true.
- for(var i = 0, f; f = this._onInvalidateCallbacks[i]; i++) {
+ for (var i = 0, f; (f = this._onInvalidateCallbacks[i]); i++) {
Tracker.nonreactive(() => {
withNoYieldsAllowed(f)(this);
});
@@ -283,10 +286,10 @@ Tracker.Computation = class Computation {
* @locus Client
*/
stop() {
- if (! this.stopped) {
+ if (!this.stopped) {
this.stopped = true;
this.invalidate();
- for(var i = 0, f; f = this._onStopCallbacks[i]; i++) {
+ for (var i = 0, f; (f = this._onStopCallbacks[i]); i++) {
Tracker.nonreactive(() => {
withNoYieldsAllowed(f)(this);
});
@@ -311,10 +314,11 @@ Tracker.Computation = class Computation {
}
_needsRecompute() {
- return this.invalidated && ! this.stopped;
+ return this.invalidated && !this.stopped;
}
_recompute() {
+ this._isPending = false;
this._recomputing = true;
try {
if (this._needsRecompute()) {
@@ -324,7 +328,7 @@ Tracker.Computation = class Computation {
if (this._onError) {
this._onError(e);
} else {
- _throwOrLog("recompute", e);
+ _throwOrLog('recompute', e);
}
}
}
@@ -340,8 +344,7 @@ Tracker.Computation = class Computation {
* @locus Client
*/
flush() {
- if (this._recomputing)
- return;
+ if (this._recomputing) return;
this._recompute();
}
@@ -392,14 +395,13 @@ Tracker.Dependency = class Dependency {
* @returns {Boolean}
*/
depend(computation) {
- if (! computation) {
- if (! Tracker.active)
- return false;
+ if (!computation) {
+ if (!Tracker.active) return false;
computation = Tracker.currentComputation;
}
var id = computation._id;
- if (! (id in this._dependentsById)) {
+ if (!(id in this._dependentsById)) {
this._dependentsById[id] = computation;
computation.onInvalidate(() => {
delete this._dependentsById[id];
@@ -416,8 +418,9 @@ Tracker.Dependency = class Dependency {
* @locus Client
*/
changed() {
- for (var id in this._dependentsById)
+ for (var id in this._dependentsById) {
this._dependentsById[id].invalidate();
+ }
}
// http://docs.meteor.com/#dependency_hasdependents
@@ -428,8 +431,7 @@ Tracker.Dependency = class Dependency {
* @returns {Boolean}
*/
hasDependents() {
- for (var id in this._dependentsById)
- return true;
+ for (var id in this._dependentsById) return true;
return false;
}
};
@@ -441,8 +443,10 @@ Tracker.Dependency = class Dependency {
* @locus Client
*/
Tracker.flush = function (options) {
- Tracker._runFlush({ finishSynchronously: true,
- throwFirstError: options && options._throwFirstError });
+ Tracker._runFlush({
+ finishSynchronously: true,
+ throwFirstError: options && options._throwFirstError,
+ });
};
/**
@@ -452,7 +456,7 @@ Tracker.flush = function (options) {
*/
Tracker.inFlush = function () {
return inFlush;
-}
+};
// Run all pending computations and afterFlush callbacks. If we were not called
// directly via Tracker.flush, this may return before they're all done to allow
@@ -472,21 +476,18 @@ Tracker._runFlush = function (options) {
if (Tracker.inFlush())
throw new Error("Can't call Tracker.flush while flushing");
- if (inCompute)
- throw new Error("Can't flush inside Tracker.autorun");
+ if (inCompute) throw new Error("Can't flush inside Tracker.autorun");
options = options || {};
inFlush = true;
willFlush = true;
- throwFirstError = !! options.throwFirstError;
+ throwFirstError = !!options.throwFirstError;
var recomputedCount = 0;
var finishedTry = false;
try {
- while (pendingComputations.length ||
- afterFlushCallbacks.length) {
-
+ while (pendingComputations.length || afterFlushCallbacks.length) {
// recompute all pending computations
while (pendingComputations.length) {
var comp = pendingComputations.shift();
@@ -495,7 +496,7 @@ Tracker._runFlush = function (options) {
pendingComputations.unshift(comp);
}
- if (! options.finishSynchronously && ++recomputedCount > 1000) {
+ if (!options.finishSynchronously && ++recomputedCount > 1000) {
finishedTry = true;
return;
}
@@ -508,19 +509,19 @@ Tracker._runFlush = function (options) {
try {
func();
} catch (e) {
- _throwOrLog("afterFlush", e);
+ _throwOrLog('afterFlush', e);
}
}
}
finishedTry = true;
} finally {
- if (! finishedTry) {
+ if (!finishedTry) {
// we're erroring due to throwFirstError being true.
inFlush = false; // needed before calling `Tracker.flush()` again
// finish flushing
Tracker._runFlush({
finishSynchronously: options.finishSynchronously,
- throwFirstError: false
+ throwFirstError: false,
});
}
willFlush = false;
@@ -530,7 +531,7 @@ Tracker._runFlush = function (options) {
// required to finish synchronously, so we'd like to give the event loop a
// chance. We should flush again soon.
if (options.finishSynchronously) {
- throw new Error("still have more to do?"); // shouldn't happen
+ throw new Error('still have more to do?'); // shouldn't happen
}
setTimeout(requireFlush, 10);
}
@@ -572,7 +573,10 @@ Tracker.autorun = function (f, options) {
constructingComputation = true;
var c = new Tracker.Computation(
- f, Tracker.currentComputation, options.onError);
+ f,
+ Tracker.currentComputation,
+ options.onError
+ );
if (Tracker.active)
Tracker.onInvalidate(function () {
@@ -612,8 +616,8 @@ Tracker.nonreactive = function (f) {
* @param {Function} callback A callback function that will be invoked as `func(c)`, where `c` is the computation on which the callback is registered.
*/
Tracker.onInvalidate = function (f) {
- if (! Tracker.active)
- throw new Error("Tracker.onInvalidate requires a currentComputation");
+ if (!Tracker.active)
+ throw new Error('Tracker.onInvalidate requires a currentComputation');
Tracker.currentComputation.onInvalidate(f);
};
diff --git a/src/components/useTracker.js b/src/components/useTracker.js
index 7cfd833..c063210 100644
--- a/src/components/useTracker.js
+++ b/src/components/useTracker.js
@@ -1,30 +1,44 @@
-import { useEffect, useState } from 'react';
+import { useEffect, useRef, useReducer, useMemo } from 'react';
import Tracker from '../Tracker.js';
-import Data from '../Data';
+const fur = (x: number): number => x + 1;
+const useForceUpdate = () => useReducer(fur, 0)[1];
export default (trackerFn, deps = []) => {
- const [response, setResponse] = useState(trackerFn());
- const meteorDataDep = new Tracker.Dependency();
- let computation = null;
- const dataChangedCallback = () => {
- meteorDataDep.changed();
- };
+ const { current: refs } = useRef({
+ data: null,
+ meteorDataDep: new Tracker.Dependency(),
+ trackerFn: trackerFn,
+ computation: null,
+ isMounted: true,
+ });
+ const forceUpdate = useForceUpdate();
+ refs.trackerFn = trackerFn;
- const stopComputation = () => {
- computation && computation.stop();
- computation = null;
- };
+ useMemo(() => {
+ if (refs.computation) {
+ refs.computation.stop();
+ refs.computation = null;
+ }
+ Tracker.nonreactive(() => {
+ Tracker.autorun((currentComputation) => {
+ if (refs.isMounted) {
+ refs.computation = currentComputation;
+ refs.data = trackerFn();
+ forceUpdate();
+ } else {
+ refs.computation?.stop();
+ }
+ });
+ });
+ }, deps);
- Data.onChange(dataChangedCallback);
+ useEffect(() => {
+ return () => {
+ refs.isMounted = false;
+ refs.computation?.stop();
+ refs.computation = null;
+ };
+ }, []);
- useEffect(() => {
- stopComputation();
- Tracker.autorun(currentComputation => {
- meteorDataDep.depend();
- computation = currentComputation;
- setResponse(trackerFn());
- });
- return () => { stopComputation(); Data.offChange(dataChangedCallback); };
- }, deps);
- return response;
+ return refs.data;
};
diff --git a/src/components/withTracker.js b/src/components/withTracker.js
index 73553a4..d7eadbe 100644
--- a/src/components/withTracker.js
+++ b/src/components/withTracker.js
@@ -1,16 +1,17 @@
import React, { forwardRef, memo } from 'react';
import useTracker from './useTracker';
-export default function withTracker (options) {
- return Component => {
- const expandedOptions = typeof options === 'function' ? { getMeteorData: options } : options;
- const { getMeteorData, pure = true } = expandedOptions;
+export default function withTracker(options) {
+ return (Component) => {
+ const expandedOptions =
+ typeof options === 'function' ? { getMeteorData: options } : options;
+ const { getMeteorData, pure = true } = expandedOptions;
- const WithTracker = forwardRef((props, ref) => {
- const data = useTracker(() => getMeteorData(props) || {}, [props]);
- return React.createElement(Component, {ref, ...props, ...data});
- });
+ const WithTracker = forwardRef((props, ref) => {
+ const data = useTracker(() => getMeteorData(props) || {}, [props]);
+ return React.createElement(Component, { ref, ...props, ...data });
+ });
- return pure ? memo(WithTracker) : WithTracker;
- };
-}
\ No newline at end of file
+ return pure ? memo(WithTracker) : WithTracker;
+ };
+}
diff --git a/src/index.js b/src/index.js
index 72c2a8a..7bb9099 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,13 +1,20 @@
import Meteor from './Meteor.js';
import User from './user/User.js';
import Accounts from './user/Accounts.js';
-import Tracker from './Tracker.js'
+import Tracker from './Tracker.js';
Object.assign(Meteor, User);
-const {
- useTracker, withTracker, Mongo, packageInterface, ReactiveDict
-} = Meteor;
+const { useTracker, withTracker, Mongo, packageInterface, ReactiveDict } =
+ Meteor;
-export { useTracker, Accounts, withTracker, Mongo, packageInterface, ReactiveDict, Tracker };
+export {
+ useTracker,
+ Accounts,
+ withTracker,
+ Mongo,
+ packageInterface,
+ ReactiveDict,
+ Tracker,
+};
export default Meteor;
diff --git a/src/user/Accounts.js b/src/user/Accounts.js
index 75288df..7f36df0 100644
--- a/src/user/Accounts.js
+++ b/src/user/Accounts.js
@@ -6,21 +6,22 @@ import Meteor from '../Meteor.js';
class AccountsPassword {
_hashPassword = hashPassword;
-
+
createUser = (options, callback = () => {}) => {
// Replace password with the hashed password.
options.password = hashPassword(options.password);
User._startLoggingIn();
call('createUser', options, (err, result) => {
- Meteor.isVerbose && console.info("Accounts.createUser::: err:", err, "result:", result);
-
+ Meteor.isVerbose &&
+ console.info('Accounts.createUser::: err:', err, 'result:', result);
+
User._endLoggingIn();
User._handleLoginCallback(err, result);
callback(err);
});
};
-
+
changePassword = (oldPassword, newPassword, callback = () => {}) => {
//TODO check Meteor.user() to prevent if not logged
@@ -36,25 +37,26 @@ class AccountsPassword {
callback(err);
}
);
- }
-
+ };
+
forgotPassword = (options, callback = () => {}) => {
if (!options.email) {
return callback('Must pass options.email');
}
- call('forgotPassword', options, err => {
+ call('forgotPassword', options, (err) => {
callback(err);
});
};
-
+
resetPassword = (token, newPassword, callback = () => {}) => {
if (!newPassword) {
return callback('Must pass a new password');
}
call('resetPassword', token, hashPassword(newPassword), (err, result) => {
- Meteor.isVerbose && console.info("Accounts.resetPassword::: err:", err, "result:", result);
+ Meteor.isVerbose &&
+ console.info('Accounts.resetPassword::: err:', err, 'result:', result);
if (!err) {
User._loginWithToken(result.token);
@@ -63,17 +65,18 @@ class AccountsPassword {
callback(err);
});
};
-
+
onLogin = (cb) => {
- if(Data._tokenIdSaved) { // Execute callback immediately if already logged in
+ if (Data._tokenIdSaved) {
+ // Execute callback immediately if already logged in
return cb();
}
Data.on('onLogin', cb);
};
-
+
onLoginFailure = (cb) => {
Data.on('onLoginFailure', cb);
- }
+ };
}
export default new AccountsPassword();
diff --git a/src/user/User.js b/src/user/User.js
index 266ccd9..50fd1c2 100644
--- a/src/user/User.js
+++ b/src/user/User.js
@@ -2,34 +2,42 @@ import Data from '../Data';
import { hashPassword } from '../../lib/utils';
import Mongo from '../Mongo';
import Meteor from '../Meteor.js';
+import ReactiveDict from '../ReactiveDict';
const TOKEN_KEY = 'reactnativemeteor_usertoken';
-const Users = new Mongo.Collection("users");
+const Users = new Mongo.Collection('users');
const User = {
- users:Users,
+ users: Users,
+ _reactiveDict: new ReactiveDict(),
+
user() {
- if (!User._userIdSaved) return null;
+ let user_id = this._reactiveDict.get('_userIdSaved');
+
+ if (!user_id) return null;
- return Users.findOne(User._userIdSaved);
+ return Users.findOne(user_id);
},
userId() {
- if (!User._userIdSaved) return null;
+ let user_id = this._reactiveDict.get('_userIdSaved');
+
+ if (!user_id) return null;
- const user = Users.findOne(User._userIdSaved);
+ const user = Users.findOne(user_id);
return user && user._id;
},
_isLoggingIn: true,
_isLoggingOut: false,
loggingIn() {
- return User._isLoggingIn;
+ return this._reactiveDict.get('_loggingIn');
},
loggingOut() {
return User._isLoggingOut;
},
logout(callback) {
+ this._isTokenLogin = false;
User._startLoggingOut();
- Meteor.call('logout', err => {
+ Meteor.call('logout', (err) => {
User.handleLogout();
Meteor.connect();
@@ -39,10 +47,13 @@ const User = {
handleLogout() {
Data._options.AsyncStorage.removeItem(TOKEN_KEY);
Data._tokenIdSaved = null;
+ this._reactiveDict.set('_userIdSaved', null);
+
User._userIdSaved = null;
User._endLoggingOut();
},
loginWithPassword(selector, password, callback) {
+ this._isTokenLogin = false;
if (typeof selector === 'string') {
if (selector.indexOf('@') === -1) selector = { username: selector };
else selector = { email: selector };
@@ -56,12 +67,10 @@ const User = {
password: hashPassword(password),
},
(err, result) => {
- User._endLoggingIn();
-
User._handleLoginCallback(err, result);
typeof callback == 'function' && callback(err);
- },
+ }
);
},
logoutOtherClients(callback = () => {}) {
@@ -70,7 +79,7 @@ const User = {
User._handleLoginCallback(err, res);
- Meteor.call('removeOtherTokens', err => {
+ Meteor.call('removeOtherTokens', (err) => {
callback(err);
});
});
@@ -78,15 +87,13 @@ const User = {
_login(user, callback) {
User._startLoggingIn();
Meteor.call('login', user, (err, result) => {
- User._endLoggingIn();
-
User._handleLoginCallback(err, result);
typeof callback == 'function' && callback(err);
});
},
_startLoggingIn() {
- User._isLoggingIn = true;
+ this._reactiveDict.set('_loggingIn', true);
Data.notify('loggingIn');
},
_startLoggingOut() {
@@ -94,7 +101,7 @@ const User = {
Data.notify('loggingOut');
},
_endLoggingIn() {
- User._isLoggingIn = false;
+ this._reactiveDict.set('_loggingIn', false);
Data.notify('loggingIn');
},
_endLoggingOut() {
@@ -103,29 +110,79 @@ const User = {
},
_handleLoginCallback(err, result) {
if (!err) {
- Meteor.isVerbose && console.info("User._handleLoginCallback::: token:", result.token, "id:", result.id);
+ Meteor.isVerbose &&
+ console.info(
+ 'User._handleLoginCallback::: token:',
+ result.token,
+ 'id:',
+ result.id
+ );
Data._options.AsyncStorage.setItem(TOKEN_KEY, result.token);
Data._tokenIdSaved = result.token;
+ this._reactiveDict.set('_userIdSaved', result.id);
User._userIdSaved = result.id;
+ User._endLoggingIn();
+ this._isTokenLogin = false;
Data.notify('onLogin');
} else {
- Meteor.isVerbose && console.info("User._handleLoginCallback::: error:", err);
+ Meteor.isVerbose &&
+ console.info('User._handleLoginCallback::: error:', err);
+ if (this._isTokenLogin) {
+ setTimeout(() => {
+ if (User._userIdSaved) {
+ return;
+ }
+ this._timeout *= 2;
+ if (Meteor.user()) {
+ return;
+ }
+ User._loginWithToken(User._userIdSaved);
+ }, this._timeout);
+ }
+ // Signify we aren't logginging in any more after a few seconds
+ if (this._timeout > 2000) {
+ User._endLoggingIn();
+ }
+ User._endLoggingIn();
Data.notify('onLoginFailure');
- User.handleLogout();
}
Data.notify('change');
},
+
+ _timeout: 50,
+ _isTokenLogin: false,
+ _isCallingLogin: false,
_loginWithToken(value) {
Data._tokenIdSaved = value;
if (value !== null) {
- Meteor.isVerbose && console.info("User._loginWithToken::: token:", value);
+ this._isTokenLogin = true;
+ Meteor.isVerbose && console.info('User._loginWithToken::: token:', value);
+ if (this._isCallingLogin) {
+ return;
+ }
+ this._isCallingLogin = true;
User._startLoggingIn();
Meteor.call('login', { resume: value }, (err, result) => {
- User._endLoggingIn();
- User._handleLoginCallback(err, result);
+ this._isCallingLogin = false;
+ if (err?.error == 'too-many-requests') {
+ Meteor.isVerbose &&
+ console.info(
+ 'User._handleLoginCallback::: too many requests retrying:',
+ err
+ );
+ let time = err.details?.timeToReset || err.timeToReset;
+ setTimeout(() => {
+ if (User._userIdSaved) {
+ return;
+ }
+ this._loadInitialUser();
+ }, time + 100);
+ } else {
+ User._handleLoginCallback(err, result);
+ }
});
} else {
- Meteor.isVerbose && console.info("User._loginWithToken::: token is null");
+ Meteor.isVerbose && console.info('User._loginWithToken::: token is null');
User._endLoggingIn();
}
},
@@ -133,6 +190,9 @@ const User = {
return Data._tokenIdSaved;
},
async _loadInitialUser() {
+ this._timeout = 500;
+
+ User._startLoggingIn();
var value = null;
try {
value = await Data._options.AsyncStorage.getItem(TOKEN_KEY);
@@ -144,6 +204,4 @@ const User = {
},
};
-User.loginWithToken = User._loginWithToken;
-
export default User;
diff --git a/test/hooks/mockServer.js b/test/hooks/mockServer.js
index 8d3a9a8..a4587cd 100644
--- a/test/hooks/mockServer.js
+++ b/test/hooks/mockServer.js
@@ -1,20 +1,41 @@
const endpoint = 'ws://localhost:3000/websocket';
import { Server } from 'mock-socket';
-let server
+let server;
// with this we mock a websocket server that runs for the full test-suite
// so we don't run into issues with open/close functionality
module.exports = {
- mochaGlobalSetup () {
- console.debug('Open mockserver on', endpoint)
+ mochaGlobalSetup() {
+ console.debug('Open mockserver on', endpoint);
server = new Server(endpoint);
+
+ // we need with never mock-socket versions to
+ // handle the way it responds from within a connected callback
+ // thus we create some ioc pattern here to allow
+ // test clients to implement test-specific behaviour
+ const messageFn = (data) => server.emit('message', data);
+ let currentMessageFn = messageFn;
+
+ server.message = (fn) => {
+ if (typeof fn === 'function') {
+ currentMessageFn = fn;
+ } else {
+ currentMessageFn = messageFn;
+ }
+ };
+
+ server.on('connection', (socket) => {
+ socket.on('message', (data) => {
+ currentMessageFn(data, server, socket);
+ });
+ });
},
- mochaGlobalTeardown () {
- console.debug('Closing mockserver')
+ mochaGlobalTeardown() {
+ console.debug('Closing mockserver');
server.stop();
},
// some tests might need access to the server to mock a response
- server: () => server
-}
+ server: () => server,
+};
diff --git a/test/lib/ddp.tests.js b/test/lib/ddp.tests.js
index d316b64..7249f70 100644
--- a/test/lib/ddp.tests.js
+++ b/test/lib/ddp.tests.js
@@ -1,9 +1,9 @@
import DDP from '../../lib/ddp';
import { WebSocket } from 'mock-socket';
import { expect } from 'chai';
-import { server } from '../hooks/mockServer'
+import { server } from '../hooks/mockServer';
-describe('ddp', function() {
+describe('ddp', function () {
let validOptions;
let ddp;
const endpoint = 'ws://localhost:3000/websocket';
@@ -12,13 +12,13 @@ describe('ddp', function() {
// add them to this array and remove them all during
// afterEach hook so we prevent mem-leaks and false
// assertions due to old listeners catching up new messages
- const listeners = []
+ const listeners = [];
const listen = (target, event, fn) => {
- target.on(event, fn)
- listeners.push({ target, event, fn })
- }
+ target.on(event, fn);
+ listeners.push({ target, event, fn });
+ };
- beforeEach(function() {
+ beforeEach(function () {
validOptions = {
SocketConstructor: WebSocket,
endpoint,
@@ -30,44 +30,51 @@ describe('ddp', function() {
ddp.disconnect();
}
- while(listeners.length) {
- const { target, event, fn } = listeners.pop()
- target.off(event, fn)
+ while (listeners.length) {
+ const { target, event, fn } = listeners.pop();
+ target.off(event, fn);
}
});
- it('should throw an error if not passed a socketConstructor', function() {
- expect(() => new DDP({})).to.throw('this.SocketConstructor is not a constructor');
+ it('should throw an error if not passed a socketConstructor', function () {
+ expect(() => new DDP({})).to.throw(
+ 'this.SocketConstructor is not a constructor'
+ );
});
- it('should throw an error given no endpoint', function() {
- expect(() => new DDP({
- SocketConstructor: WebSocket,
- })).to.throw('Failed to construct \'WebSocket\': 1 argument required, but only 0 present');
+ it('should throw an error given no endpoint', function () {
+ expect(
+ () =>
+ new DDP({
+ SocketConstructor: WebSocket,
+ })
+ ).to.throw(
+ "Failed to construct 'WebSocket': 1 argument required, but only 0 present"
+ );
});
- it('should start in the disconnected state', function() {
+ it('should start in the disconnected state', function () {
ddp = new DDP(validOptions);
expect(ddp.status).to.equal('disconnected');
});
- it('should start with autoreconnect true given no autoReconnect parameter', function() {
+ it('should start with autoreconnect true given no autoReconnect parameter', function () {
ddp = new DDP(validOptions);
expect(ddp.autoReconnect).to.equal(true);
});
- it('should start with autoreconnect false given autoReconnect parameter set to false', function() {
+ it('should start with autoreconnect false given autoReconnect parameter set to false', function () {
validOptions.autoReconnect = false;
ddp = new DDP(validOptions);
expect(ddp.autoReconnect).to.equal(false);
});
- it('should start with autoconnect true given no autoConnect parameter', function() {
+ it('should start with autoconnect true given no autoConnect parameter', function () {
ddp = new DDP(validOptions);
expect(ddp.autoConnect).to.equal(true);
});
- it('should start with autoconnect false given autoReconnect parameter set to false', function() {
+ it('should start with autoconnect false given autoReconnect parameter set to false', function () {
validOptions.autoConnect = false;
ddp = new DDP(validOptions);
expect(ddp.autoConnect).to.equal(false);
@@ -84,9 +91,9 @@ describe('ddp', function() {
it('opens socket only once', function (done) {
ddp = new DDP(validOptions);
- let count = 0
+ let count = 0;
listen(ddp.socket, 'open', () => {
- count++
+ count++;
});
ddp.connect();
@@ -98,8 +105,8 @@ describe('ddp', function() {
setTimeout(() => {
expect(count).to.equal(1);
- done()
- }, 15)
+ done();
+ }, 15);
});
it('answers endpoint ping with pong messages', function (done) {
@@ -107,57 +114,57 @@ describe('ddp', function() {
ddp = new DDP(validOptions);
ddp.connect();
- listen(ddp.socket, 'message:out', message => {
+ listen(ddp.socket, 'message:out', (message) => {
if (message.msg === 'pong') {
expect(message.id).to.equal(99);
done();
}
- })
+ });
listen(ddp.socket, 'open', () => {
ddp.socket.emit('message:in', { msg: 'connected' });
ddp.socket.emit('message:in', { msg: 'ping', id: 99 });
- })
+ });
});
it('auto-reconnects if socket closed unexpected', function (done) {
validOptions.autoConnect = false;
validOptions.autoReconnect = true;
validOptions.reconnectInterval = 500;
ddp = new DDP(validOptions);
- let expected = false
+ let expected = false;
listen(ddp.socket, 'open', () => {
ddp.socket.emit('message:in', { msg: 'connected' });
- })
+ });
listen(ddp, 'connected', () => {
if (expected) {
- done()
+ done();
}
- })
+ });
ddp.connect();
setTimeout(() => {
expected = true;
ddp.socket.close();
- }, 25)
+ }, 25);
});
it('only receives valid message from rawSocket', function (done) {
ddp = new DDP(validOptions);
- const validObj = { foo: 'bar' }
- listen(ddp.socket, 'message:in', obj => {
- if (obj.msg) return // ignore the real ones, just check for our foo
+ const validObj = { foo: 'bar' };
+ listen(ddp.socket, 'message:in', (obj) => {
+ if (obj.msg) return; // ignore the real ones, just check for our foo
expect(obj).to.deep.equal(validObj);
done();
});
// to be ignored
- server().emit('message', '{"invalid":')
+ server().emit('message', '{"invalid":');
// should be valid
- server().emit('message', '{"foo":"bar"}')
- })
+ server().emit('message', '{"foo":"bar"}');
+ });
describe('events', function () {
it('emits custom events', function (done) {
@@ -171,7 +178,7 @@ describe('ddp', function() {
done();
});
- server().emit('message', '{"msg":"ready"}')
+ server().emit('message', '{"msg":"ready"}');
});
it('emits connected event', function (done) {
validOptions.autoConnect = false;
@@ -180,7 +187,7 @@ describe('ddp', function() {
ddp.connect();
listen(ddp.socket, 'open', () => {
ddp.socket.emit('message:in', { msg: 'connected' });
- })
+ });
});
it('emits disconnected event', function (done) {
validOptions.autoConnect = true;
@@ -190,7 +197,7 @@ describe('ddp', function() {
listen(ddp, 'disconnected', () => {
// will be set to false when actively calling disconnect
expect(ddp.autoReconnect).to.equal(false);
- done()
+ done();
});
listen(ddp.socket, 'open', () => {
@@ -199,7 +206,7 @@ describe('ddp', function() {
listen(ddp, 'connected', () => {
ddp.disconnect();
- })
+ });
});
});
@@ -208,27 +215,27 @@ describe('ddp', function() {
validOptions.autoConnect = false;
validOptions.autoReconnect = false;
ddp = new DDP(validOptions);
- ddp.disconnect()
+ ddp.disconnect();
// should ignore methods when not connected
// but when connected the queue will run
- ddp.method('foo', { foo: 'bar'})
+ ddp.method('foo', { foo: 'bar' });
- listen(ddp.socket, 'message:out', message => {
+ listen(ddp.socket, 'message:out', (message) => {
if (message.msg === 'method') {
expect(message.id).to.equal('0');
expect(message.method).to.equal('foo');
expect(message.params).to.deep.equal({
- foo: 'bar'
+ foo: 'bar',
});
- done()
+ done();
}
- })
+ });
ddp.connect();
listen(ddp.socket, 'open', () => {
ddp.socket.emit('message:in', { msg: 'connected' });
- })
+ });
});
});
describe('sub/unsub', function () {
@@ -236,53 +243,53 @@ describe('ddp', function() {
validOptions.autoConnect = false;
validOptions.autoReconnect = false;
ddp = new DDP(validOptions);
- ddp.disconnect()
+ ddp.disconnect();
// should ignore methods when not connected
// but when connected the queue will run
- ddp.sub('foo', { foo: 'bar'})
+ ddp.sub('foo', { foo: 'bar' });
- listen(ddp.socket, 'message:out', message => {
+ listen(ddp.socket, 'message:out', (message) => {
if (message.msg === 'sub') {
expect(message.id).to.equal('1');
expect(message.method).to.equal('foo');
expect(message.params).to.deep.equal({
- foo: 'bar'
+ foo: 'bar',
});
- done()
+ done();
}
- })
+ });
ddp.connect();
listen(ddp.socket, 'open', () => {
ddp.socket.emit('message:in', { msg: 'connected' });
- })
+ });
});
it('handles unsubscription', function () {
validOptions.autoConnect = false;
validOptions.autoReconnect = false;
ddp = new DDP(validOptions);
- ddp.disconnect()
+ ddp.disconnect();
// should ignore methods when not connected
// but when connected the queue will run
- ddp.unsub('1')
+ ddp.unsub('1');
- listen(ddp.socket, 'message:out', message => {
+ listen(ddp.socket, 'message:out', (message) => {
if (message.msg === 'unsub') {
expect(message.id).to.equal('2');
expect(message.method).to.equal('foo');
expect(message.params).to.deep.equal({
- foo: 'bar'
+ foo: 'bar',
});
- done()
+ done();
}
- })
+ });
ddp.connect();
listen(ddp.socket, 'open', () => {
ddp.socket.emit('message:in', { msg: 'connected' });
- })
- })
+ });
+ });
});
});
diff --git a/test/lib/mongo-id.tests.js b/test/lib/mongo-id.tests.js
index d13ea2b..2f50faa 100644
--- a/test/lib/mongo-id.tests.js
+++ b/test/lib/mongo-id.tests.js
@@ -1,14 +1,14 @@
import MongoID from '../../lib/mongo-id';
-import EJSON from 'ejson'
+import EJSON from 'ejson';
import { expect } from 'chai';
-const randomHex = length => {
- let str = ''
+const randomHex = (length) => {
+ let str = '';
for (let j = 0; j < length; j++) {
- str += Math.floor(Math.random()*16).toString(16);
+ str += Math.floor(Math.random() * 16).toString(16);
}
- return str
-}
+ return str;
+};
const createObjectId = () => new MongoID.ObjectID(randomHex(24));
@@ -28,20 +28,23 @@ describe('mongo-id', function () {
});
describe(MongoID.ObjectID.name, function () {
it('throws if the hex string is not given', function () {
- expect(() => MongoID.ObjectID())
- .to.throw('Random.hexString not implemented, please pass a hexString');
+ expect(() => MongoID.ObjectID()).to.throw(
+ 'Random.hexString not implemented, please pass a hexString'
+ );
});
it('throws if the hex string is not a valid ObjectID-like', function () {
for (let i = 0; i < 24; i++) {
const str = randomHex(i) || '1';
- expect(() => MongoID.ObjectID(str))
- .to.throw('Invalid hexadecimal string for creating an ObjectI');
+ expect(() => MongoID.ObjectID(str)).to.throw(
+ 'Invalid hexadecimal string for creating an ObjectI'
+ );
}
for (let j = 0; j < 10; j++) {
- const str = randomHex(23) + 'g'
- expect(() => MongoID.ObjectID(str))
- .to.throw('Invalid hexadecimal string for creating an ObjectI');
+ const str = randomHex(23) + 'g';
+ expect(() => MongoID.ObjectID(str)).to.throw(
+ 'Invalid hexadecimal string for creating an ObjectI'
+ );
}
});
});
@@ -54,15 +57,16 @@ describe('mongo-id', function () {
expect(MongoID.idStringify(oid._str)).to.equal('-' + oid._str);
expect(MongoID.idStringify('foobar')).to.equal('foobar');
- const jsonStr = JSON.stringify({ value: oid._str })
+ const jsonStr = JSON.stringify({ value: oid._str });
expect(MongoID.idStringify(jsonStr)).to.equal('-' + jsonStr);
- [true, false, 0, 1, -1, null].forEach(val => {
+ [true, false, 0, 1, -1, null].forEach((val) => {
expect(MongoID.idStringify(val)).to.equal('~' + JSON.stringify(val));
- })
+ });
- expect(() => MongoID.idStringify(new Date()))
- .to.throw('Meteor does not currently support objects other than ObjectID as ids')
+ expect(() => MongoID.idStringify(new Date())).to.throw(
+ 'Meteor does not currently support objects other than ObjectID as ids'
+ );
});
});
@@ -73,7 +77,7 @@ describe('mongo-id', function () {
expect(MongoID.idParse('-')).to.equal(undefined);
expect(MongoID.idParse('-foo')).to.equal('foo');
expect(MongoID.idParse('~{"foo":"bar"}')).to.deep.equal({
- foo: 'bar'
+ foo: 'bar',
});
const hex = randomHex(24);
const oid = MongoID.idParse(hex);
@@ -84,7 +88,7 @@ describe('mongo-id', function () {
describe('prototype', function () {
it('implements a toString method', function () {
const oid = createObjectId();
- const str = `ObjectID("${oid._str}")`
+ const str = `ObjectID("${oid._str}")`;
expect(oid.toString()).to.equal(str);
});
@@ -106,8 +110,8 @@ describe('mongo-id', function () {
});
it('returns the mongo timestamp', function () {
- const timeStamp = 1234567800
- const hex = `${timeStamp.toString(16)}${randomHex(16)}`
+ const timeStamp = 1234567800;
+ const hex = `${timeStamp.toString(16)}${randomHex(16)}`;
const oid = new MongoID.ObjectID(hex);
expect(oid.getTimestamp()).to.equal(timeStamp);
});
@@ -117,9 +121,9 @@ describe('mongo-id', function () {
it('is ejsonable', function () {
const oid = createObjectId();
const str = EJSON.stringify(oid);
- const expected = `{"$type":"oid","$value":"${oid._str}"}`
- expect(str).to.deep.equal(expected)
+ const expected = `{"$type":"oid","$value":"${oid._str}"}`;
+ expect(str).to.deep.equal(expected);
expect(EJSON.parse(expected).equals(oid)).to.equal(true);
});
});
-})
\ No newline at end of file
+});
diff --git a/test/lib/queue.tests.js b/test/lib/queue.tests.js
index 3bc6928..d9af797 100644
--- a/test/lib/queue.tests.js
+++ b/test/lib/queue.tests.js
@@ -3,7 +3,7 @@ import { expect } from 'chai';
describe('queue', function () {
it('delegates operations to a consumer', function () {
- const q = new Queue(obj => {
+ const q = new Queue((obj) => {
expect(q.queue.length).to.equal(1);
expect(obj.id).to.equal('foo');
return true;
diff --git a/test/lib/random.tests.js b/test/lib/random.tests.js
index 7b0a987..0c4ffe8 100644
--- a/test/lib/random.tests.js
+++ b/test/lib/random.tests.js
@@ -11,11 +11,12 @@ describe('Random', function () {
}
});
it('generates ids with unmistakable chars', function () {
- const regex = /^[23456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijkmnopqrstuvwxyz]*$/
+ const regex =
+ /^[23456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijkmnopqrstuvwxyz]*$/;
for (let i = 0; i < 128; i++) {
const id = Random.id();
expect(regex.test(id)).to.equal(true);
}
- })
+ });
});
diff --git a/test/lib/utils.tests.js b/test/lib/utils.tests.js
index 5c6b5a3..705963d 100644
--- a/test/lib/utils.tests.js
+++ b/test/lib/utils.tests.js
@@ -1,19 +1,17 @@
-import {hashPassword, isPlainObject, uniqueId} from '../../lib/utils';
+import { hashPassword, isPlainObject, uniqueId } from '../../lib/utils';
import { expect } from 'chai';
describe('utils', function () {
describe(isPlainObject.name, function () {
it('returns true for plain objects', function () {
expect(isPlainObject({})).to.equal(true);
- expect(isPlainObject( Object.create(null))).to.equal(true);
+ expect(isPlainObject(Object.create(null))).to.equal(true);
});
it('returns false for non-plain objects', function () {
class CustomClass {}
- const a = []
- a.prototype = {}
-
- ;[
-
+ const a = [];
+ a.prototype = {};
+ [
'',
new Date(),
false,
@@ -25,8 +23,8 @@ describe('utils', function () {
null,
undefined,
new CustomClass(),
- a
- ].forEach(obj => {
+ a,
+ ].forEach((obj) => {
expect(isPlainObject(obj)).to.equal(false);
});
});
@@ -34,7 +32,7 @@ describe('utils', function () {
describe(uniqueId.name, function () {
it('always returns a unique value', function () {
- const ids = new Set()
+ const ids = new Set();
for (let i = 0; i < 1000; i++) {
const id = uniqueId();
@@ -52,7 +50,9 @@ describe('utils', function () {
it('creates a sha256 password hash', function () {
const value = 'foo';
const hashed = hashPassword(value);
- expect(hashed.digest).to.equal('2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae');
+ expect(hashed.digest).to.equal(
+ '2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae'
+ );
});
- })
+ });
});
diff --git a/test/src/Collection.tests.js b/test/src/Collection.tests.js
index 03d20f3..96165ea 100644
--- a/test/src/Collection.tests.js
+++ b/test/src/Collection.tests.js
@@ -1,10 +1,14 @@
import { WebSocket } from 'mock-socket';
-import { Collection, localCollections, runObservers } from '../../src/Collection';
+import {
+ Collection,
+ localCollections,
+ runObservers,
+} from '../../src/Collection';
import { expect } from 'chai';
-import Data from '../../src/Data'
-import DDP from '../../lib/ddp'
-import Random from '../../lib/Random'
-import { server } from '../hooks/mockServer'
+import Data from '../../src/Data';
+import DDP from '../../lib/ddp';
+import Random from '../../lib/Random';
+import { server } from '../hooks/mockServer';
describe('Collection', function () {
const endpoint = 'ws://localhost:3000/websocket';
@@ -16,7 +20,7 @@ describe('Collection', function () {
Data.ddp = new DDP({
SocketConstructor: WebSocket,
endpoint,
- })
+ });
Data.ddp.socket.on('open', () => {
Data.ddp.socket.emit('message:in', { msg: 'connected' });
});
@@ -24,23 +28,26 @@ describe('Collection', function () {
// we simulate similar behaviour as in Meteor.call
// but without relying on Meteor here
- Data.ddp.socket.on('message:in', message => {
- if (!message.id) return
+ Data.ddp.socket.on('message:in', (message) => {
+ if (!message.id) return;
- const call = Data.calls.find(call => call.id === message.id);
- if (!call) return
+ const call = Data.calls.find((call) => call.id === message.id);
+ if (!call) return;
if (typeof call.callback === 'function') {
call.callback(message.error, message.result);
}
- Data.calls.splice(Data.calls.findIndex(call => call.id === message.id), 1);
- })
+ Data.calls.splice(
+ Data.calls.findIndex((call) => call.id === message.id),
+ 1
+ );
+ });
}
- })
+ });
describe('constructor', function () {
it('creates a new collection and one in Minimongo', function () {
- const name = Random.id(6)
+ const name = Random.id(6);
const c = new Collection(name);
expect(c._name).to.equal(name);
expect(c._transform).to.equal(null);
@@ -54,52 +61,57 @@ describe('Collection', function () {
expect(Data.db.collections[c._name]).to.equal(c._collection);
});
it('creates a collection with transform options', function () {
- let transform = () => null
- let c
+ let transform = () => null;
+ let c;
c = new Collection(Random.id(), { transform });
- expect(() => c._transform({}))
- .to.throw('can only transform documents with _id')
+ expect(() => c._transform({})).to.throw(
+ 'can only transform documents with _id'
+ );
// transform returns currently null (as you can see above)
- const _id = Random.id()
- expect(() => c._transform({ _id }))
- .to.throw('transform must return object')
+ const _id = Random.id();
+ expect(() => c._transform({ _id })).to.throw(
+ 'transform must return object'
+ );
- transform = () => ({ _id: Random.id() })
+ transform = () => ({ _id: Random.id() });
c = new Collection(Random.id(), { transform });
- expect(() => c._transform({ _id }))
- .to.throw('transformed document can\'t have different _id')
+ expect(() => c._transform({ _id })).to.throw(
+ "transformed document can't have different _id"
+ );
- transform = () => ({ foo: 'bar' })
+ transform = () => ({ foo: 'bar' });
c = new Collection(Random.id(), { transform });
- expect(c._transform({ _id })).to.deep.equal({ _id, foo: 'bar' })
+ expect(c._transform({ _id })).to.deep.equal({ _id, foo: 'bar' });
});
});
describe('insert', function () {
it('throws on wrong _id value', function (done) {
const c = new Collection(Random.id());
- c.insert({ _id: () => {} }, err => {
- expect(err).to.equal('Meteor requires document _id fields to be non-empty strings');
+ c.insert({ _id: () => {} }, (err) => {
+ expect(err).to.equal(
+ 'Meteor requires document _id fields to be non-empty strings'
+ );
done();
- })
+ });
});
it('inserts docs', function (done) {
const c = new Collection(Random.id());
expect(c.find().count()).to.equal(0);
- const methodName = `/${c._name}/insert`
- const listener = server().on('message', (messageStr) => {
+ const methodName = `/${c._name}/insert`;
+ server().message((messageStr) => {
const message = JSON.parse(messageStr);
if (message.msg === 'method' && message.method === methodName) {
// we need to timeout a little, otherwise the response id
// will not yet be in Data.calls
- const response = { id: message.id }
+ const response = { id: message.id };
setTimeout(() => {
server().emit('message', JSON.stringify(response));
- }, 5)
+ }, 5);
}
});
@@ -109,27 +121,26 @@ describe('Collection', function () {
expect(c.findOne(docId)).to.deep.equal({
_id: docId,
foo: 'bar',
- _version: 1
+ _version: 1,
});
- server().removeEventListener('message', listener)
+ server().message(null);
done();
});
});
it('does not insert if server responded with error', function (done) {
const c = new Collection(Random.id());
expect(c.find().count()).to.equal(0);
-
- const methodName = `/${c._name}/insert`
- const listener = server().on('message', (messageStr) => {
+ const methodName = `/${c._name}/insert`;
+ server().message((messageStr) => {
const message = JSON.parse(messageStr);
if (message.msg === 'method' && message.method === methodName) {
// we need to timeout a little, otherwise the response id
// will not yet be in Data.calls
- const response = { id: message.id, error: 'expect this err' }
+ const response = { id: message.id, error: 'expect this err' };
setTimeout(() => {
server().emit('message', JSON.stringify(response));
- }, 5)
+ }, 5);
}
});
@@ -138,23 +149,23 @@ describe('Collection', function () {
expect(c.find().count()).to.equal(0);
expect(c.findOne(docId)).to.deep.equal(undefined);
expect(err).to.equal('expect this err');
- server().removeEventListener('message', listener)
+ server().message(null);
done();
});
});
it('inserts sync on a local collection', function (done) {
const c = new Collection(null);
expect(c.find().count()).to.equal(0);
- const docId = c.insert({ foo: 'bar' })
+ const docId = c.insert({ foo: 'bar' });
expect(c.find().count()).to.equal(1);
expect(c.findOne(docId)).to.deep.equal({
_id: docId,
foo: 'bar',
- '_version': 1
+ _version: 1,
});
// throws on reinsert
- c.insert({ _id: docId }, err => {
+ c.insert({ _id: docId }, (err) => {
expect(err).to.deep.equal({
error: 409,
reason: `Duplicate key _id with value ${docId}`,
@@ -162,69 +173,75 @@ describe('Collection', function () {
done();
});
});
- })
+ });
describe('update', function () {
it('updates a doc', function (done) {
const c = new Collection(Random.id());
expect(c.find().count()).to.equal(0);
- const insertMethod = `/${c._name}/insert`
- const updateMethod = `/${c._name}/update`
- const listener = server().on('message', (messageStr) => {
+ const insertMethod = `/${c._name}/insert`;
+ const updateMethod = `/${c._name}/update`;
+ server().message((messageStr) => {
const message = JSON.parse(messageStr);
- if (message.msg === 'method' && [insertMethod, updateMethod].includes(message.method)) {
+ if (
+ message.msg === 'method' &&
+ [insertMethod, updateMethod].includes(message.method)
+ ) {
// we need to timeout a little, otherwise the response id
// will not yet be in Data.calls
- const response = { id: message.id }
+ const response = { id: message.id };
setTimeout(() => {
server().emit('message', JSON.stringify(response));
- }, 5)
+ }, 5);
}
});
c.insert({ foo: 'bar' }, (err, docId) => {
- c.update(docId, { $set: { foo: 'baz' }}, (err, docId2) => {
+ c.update(docId, { $set: { foo: 'baz' } }, (err, docId2) => {
expect(err).to.equal(null);
expect(docId2).to.equal(docId);
expect(c.find().count()).to.equal(1);
expect(c.findOne(docId)).to.deep.equal({
_id: docId,
foo: 'baz',
- _version: 2
+ _version: 2,
});
- server().removeEventListener('message', listener)
+ server().message(null);
done();
- })
+ });
});
});
it('resolves to error if the server responds with error', function (done) {
const c = new Collection(Random.id());
expect(c.find().count()).to.equal(0);
- const insertMethod = `/${c._name}/insert`
- const updateMethod = `/${c._name}/update`
- const listener = server().on('message', (messageStr) => {
+ const insertMethod = `/${c._name}/insert`;
+ const updateMethod = `/${c._name}/update`;
+ server().message((messageStr) => {
const message = JSON.parse(messageStr);
- if (message.msg === 'method' && [insertMethod, updateMethod].includes(message.method)) {
+ if (
+ message.msg === 'method' &&
+ [insertMethod, updateMethod].includes(message.method)
+ ) {
// we need to timeout a little, otherwise the response id
// will not yet be in Data.calls
- const response = { id: message.id }
+ const response = { id: message.id };
if (message.method === updateMethod) {
- response.error = 'expect this update err'
+ response.error = 'expect this update err';
}
setTimeout(() => {
server().emit('message', JSON.stringify(response));
- }, 5)
+ }, 5);
}
});
c.insert({ foo: 'bar' }, (err, docId) => {
- c.update(docId, { $set: { foo: 'baz' }}, (err, docId2) => {
+ c.update(docId, { $set: { foo: 'baz' } }, (err, docId2) => {
expect(docId2).to.equal(undefined);
expect(err).to.equal('expect this update err');
expect(c.find().count()).to.equal(1);
@@ -233,28 +250,28 @@ describe('Collection', function () {
expect(c.findOne(docId)).to.deep.equal({
_id: docId,
foo: 'baz',
- _version: 2
+ _version: 2,
});
- server().removeEventListener('message', listener)
+ server().message(null);
done();
- })
+ });
});
});
it('updates a doc on a local collection', function () {
const c = new Collection(null);
const docId = c.insert({});
- c.update(docId, { $set: { foo: 'bar'}});
- c.update(docId, { $set: { foo: 'baz'}});
+ c.update(docId, { $set: { foo: 'bar' } });
+ c.update(docId, { $set: { foo: 'baz' } });
const doc2 = c.findOne(docId);
expect(doc2).to.deep.equal({ _id: docId, _version: 3, foo: 'baz' });
});
it('returns with an error if the doc is not found', function (done) {
const c = new Collection(null);
- const id = Random.id()
- c.update(id, { $set: {}}, (err) => {
+ const id = Random.id();
+ c.update(id, { $set: {} }, (err) => {
expect(err).to.deep.equal({
error: 409,
- reason: `Item not found in collection ${c._name} with id ${id}`
+ reason: `Item not found in collection ${c._name} with id ${id}`,
});
done();
});
@@ -266,18 +283,21 @@ describe('Collection', function () {
const c = new Collection(Random.id());
expect(c.find().count()).to.equal(0);
- const insertMethod = `/${c._name}/insert`
- const removeMethod = `/${c._name}/remove`
- const listener = server().on('message', (messageStr) => {
+ const insertMethod = `/${c._name}/insert`;
+ const removeMethod = `/${c._name}/remove`;
+ server().message((messageStr) => {
const message = JSON.parse(messageStr);
- if (message.msg === 'method' && [insertMethod, removeMethod].includes(message.method)) {
+ if (
+ message.msg === 'method' &&
+ [insertMethod, removeMethod].includes(message.method)
+ ) {
// we need to timeout a little, otherwise the response id
// will not yet be in Data.calls
- const response = { id: message.id }
+ const response = { id: message.id };
setTimeout(() => {
server().emit('message', JSON.stringify(response));
- }, 5)
+ }, 5);
}
});
@@ -287,32 +307,35 @@ describe('Collection', function () {
expect(docId2).to.equal(undefined);
expect(c.find().count()).to.equal(0);
expect(c.findOne(docId)).to.deep.equal(undefined);
- server().removeEventListener('message', listener)
+ server().message(null);
done();
- })
+ });
});
});
it('does not remove if server responds with error', function (done) {
const c = new Collection(Random.id());
expect(c.find().count()).to.equal(0);
- const insertMethod = `/${c._name}/insert`
- const removeMethod = `/${c._name}/remove`
- const listener = server().on('message', (messageStr) => {
+ const insertMethod = `/${c._name}/insert`;
+ const removeMethod = `/${c._name}/remove`;
+ server().message((messageStr) => {
const message = JSON.parse(messageStr);
- if (message.msg === 'method' && [insertMethod, removeMethod].includes(message.method)) {
+ if (
+ message.msg === 'method' &&
+ [insertMethod, removeMethod].includes(message.method)
+ ) {
// we need to timeout a little, otherwise the response id
// will not yet be in Data.calls
- const response = { id: message.id }
+ const response = { id: message.id };
if (message.method === removeMethod) {
- response.error = 'expect this remove err'
+ response.error = 'expect this remove err';
}
setTimeout(() => {
server().emit('message', JSON.stringify(response));
- }, 5)
+ }, 5);
}
});
@@ -323,23 +346,23 @@ describe('Collection', function () {
expect(c.findOne(docId)).to.deep.equal({
_id: docId,
foo: 'bar',
- _version: 3 // because it got upserted again
+ _version: 3, // because it got upserted again
});
- server().removeEventListener('message', listener)
+ server().message(null);
done();
- })
+ });
});
});
it('removes a doc on a local collection', function () {
const c = new Collection(null);
expect(c.find().count()).to.equal(0);
- const docId = c.insert({})
+ const docId = c.insert({});
expect(c.find().count()).to.equal(1);
c.remove(docId);
expect(c.find().count()).to.equal(0);
- c.insert({ foo: 'bar' })
- c.insert({ foo: 'baz' })
+ c.insert({ foo: 'bar' });
+ c.insert({ foo: 'baz' });
expect(c.find().count()).to.equal(2);
c.remove({ foo: 'bar' });
expect(c.find().count()).to.equal(1);
@@ -355,7 +378,7 @@ describe('Collection', function () {
});
describe('Cursor', function () {
- let c
+ let c;
beforeEach(function () {
c = new Collection(null);
@@ -366,7 +389,7 @@ describe('Cursor', function () {
c.insert({ foo: Random.id() });
c.insert({ foo: Random.id() });
const cursor = c.find({
- foo: { $exists: true }
+ foo: { $exists: true },
});
expect(cursor.count()).to.equal(3);
});
@@ -375,8 +398,8 @@ describe('Cursor', function () {
{ foo: Random.id(8) },
{ foo: Random.id(8) },
{ foo: Random.id(8) },
- { foo: Random.id(8) }
- ].map(doc => {
+ { foo: Random.id(8) },
+ ].map((doc) => {
const docId = c.insert(doc);
return c.findOne(docId);
});
@@ -391,8 +414,8 @@ describe('Cursor', function () {
{ foo: Random.id(8) },
{ foo: Random.id(8) },
{ foo: Random.id(8) },
- { foo: Random.id(8) }
- ].map(doc => {
+ { foo: Random.id(8) },
+ ].map((doc) => {
const docId = c.insert(doc);
return c.findOne(docId);
});
@@ -406,19 +429,19 @@ describe('Cursor', function () {
});
it('_transformedDocs', function () {
c = new Collection(null, {
- transform: doc => {
- doc.bar = 'baz'
- return doc
- }
- })
- const docId = c.insert({ foo: 'bar'});
+ transform: (doc) => {
+ doc.bar = 'baz';
+ return doc;
+ },
+ });
+ const docId = c.insert({ foo: 'bar' });
const doc = c.find({}).fetch()[0];
expect(doc).to.deep.equal({
_id: docId,
foo: 'bar',
bar: 'baz',
- _version: 1
+ _version: 1,
});
});
it('map', function () {
@@ -426,8 +449,8 @@ describe('Cursor', function () {
{ foo: Random.id(8) },
{ foo: Random.id(8) },
{ foo: Random.id(8) },
- { foo: Random.id(8) }
- ].map(doc => {
+ { foo: Random.id(8) },
+ ].map((doc) => {
const docId = c.insert(doc);
return c.findOne(docId);
});
@@ -448,56 +471,57 @@ describe('Cursor', function () {
describe('runObservers', function () {
it('runs observers for registered added callback', function (done) {
const c = new Collection(null);
+ let foo = Random.id();
c.find().observe({
- added (newDoc, oldDoc) {
+ added(newDoc, oldDoc) {
expect(oldDoc).to.equal(undefined);
- expect(newDoc).to.equal(doc);
+ expect(newDoc.foo).to.equal(foo);
done();
- }
+ },
});
- const docId = c.insert({ foo: Random.id()});
+ const docId = c.insert({ foo: foo });
const doc = c.findOne(docId);
- runObservers('added', c._name, doc);
});
it('runs observers for registered changed callback', function (done) {
const c = new Collection(null);
c.find().observe({
- changed (newDoc, oldDoc) {
+ changed(newDoc, oldDoc) {
expect(newDoc).to.not.deep.equal(oldDoc);
expect(newDoc._id).to.equal(oldDoc._id);
done();
- }
+ },
});
- const docId = c.insert({ foo: Random.id()});
+ const docId = c.insert({ foo: Random.id() });
const doc = c.findOne(docId);
- c.update(docId, { $set: { foo: 'bar'}});
+ c.update(docId, { $set: { foo: 'bar' } });
const doc2 = c.findOne(docId);
- runObservers('changed', c._name, doc2, doc);
});
it('runs observers for registered remove callback', function (done) {
const c = new Collection(null);
+ const expectDocId = c.insert({ foo: Random.id() });
+ const expectDoc = c.findOne();
+
c.find().observe({
- removed (doc) {
+ removed(doc) {
expect(doc).to.deep.equal(expectDoc);
done();
- }
+ },
});
- const expectDoc = { foo: 'bar' };
- runObservers('removed', c._name, expectDoc);
+ c.remove(expectDocId);
});
it('catches overseve callback errors', function () {
const c = new Collection(null);
c.find().observe({
- added () {
- throw new Error()
- }
+ added() {
+ throw new Error();
+ },
});
- const docId = c.insert({ foo: Random.id()});
+ const docId = c.insert({ foo: Random.id() });
const doc = c.findOne(docId);
- runObservers('added', c._name, doc);
- })
-});
\ No newline at end of file
+ // runObservers('added', c._name, doc);
+ });
+});
diff --git a/test/src/ReactiveDict.tests.js b/test/src/ReactiveDict.tests.js
index 12a754b..70a3e15 100644
--- a/test/src/ReactiveDict.tests.js
+++ b/test/src/ReactiveDict.tests.js
@@ -1,16 +1,16 @@
-import { expect } from 'chai'
+import { expect } from 'chai';
import ReactiveDict from '../../src/ReactiveDict';
-import MongoID from '../../lib/mongo-id'
+import MongoID from '../../lib/mongo-id';
describe('ReactiveDict', function () {
it('sets to undefined', function () {
- const dict = new ReactiveDict;
+ const dict = new ReactiveDict();
dict.set('foo', undefined);
expect(dict.get('foo')).to.equal(undefined);
});
it('sets from objects', function () {
- const dict = new ReactiveDict;
- dict.set({ foo: 'bar', bar: undefined});
+ const dict = new ReactiveDict();
+ dict.set({ foo: 'bar', bar: undefined });
expect(dict.get('foo')).to.equal('bar');
expect(dict.get('bar')).to.equal(undefined);
});
@@ -22,7 +22,7 @@ describe('ReactiveDict', function () {
expect(nowFromDict.getTime()).to.equal(now.getTime());
});
it('has setDefault', function () {
- let dict = new ReactiveDict;
+ let dict = new ReactiveDict();
dict.set('A', 'blah');
dict.set('B', undefined);
@@ -40,7 +40,7 @@ describe('ReactiveDict', function () {
expect(dict.get('D')).to.equal(undefined);
// with object
- dict = new ReactiveDict;
+ dict = new ReactiveDict();
dict.set({ A: undefined, B: 'blah' });
dict.setDefault('A', 'default');
@@ -48,19 +48,26 @@ describe('ReactiveDict', function () {
expect(dict.get('B')).to.equal('blah');
});
it('has equals implemented', function () {
- const dict = new ReactiveDict()
+ const dict = new ReactiveDict();
- ;[null,'bar', 1, true, new Date(), new MongoID.ObjectID('ffffffffffffffffffffffff')]
- .forEach(value => {
- expect(dict.equals('foo', value)).to.equal(false);
- dict.set('foo', value)
- expect(dict.equals('foo', value)).to.equal(true);
- })
+ [
+ null,
+ 'bar',
+ 1,
+ true,
+ new Date(),
+ new MongoID.ObjectID('ffffffffffffffffffffffff'),
+ ].forEach((value) => {
+ expect(dict.equals('foo', value)).to.equal(false);
+ dict.set('foo', value);
+ expect(dict.equals('foo', value)).to.equal(true);
+ });
// throws for other types
class Custom {}
- expect(() => dict.equals('foo', new Custom()))
- .to.throw('ReactiveDict.equals: value must be scalar');
+ expect(() => dict.equals('foo', new Custom())).to.throw(
+ 'ReactiveDict.equals: value must be scalar'
+ );
});
-})
+});
diff --git a/test/src/Tracker.tests.js b/test/src/Tracker.tests.js
index 610f86a..ff3ff3e 100644
--- a/test/src/Tracker.tests.js
+++ b/test/src/Tracker.tests.js
@@ -1,13 +1,12 @@
-import Tracker from '../../src/Tracker'
-import { expect } from 'chai'
+import Tracker from '../../src/Tracker';
+import { expect } from 'chai';
-const eql = (a, b, deep) => deep
- ? expect(a).to.deep.equal(b)
- : expect(a).to.equal(b);
+const eql = (a, b, deep) =>
+ deep ? expect(a).to.deep.equal(b) : expect(a).to.equal(b);
describe('Tracker', function () {
it('run', function () {
- const t = new Tracker.Dependency;
+ const t = new Tracker.Dependency();
let x = 0;
const handle = Tracker.autorun(function (/* handle */) {
t.depend();
@@ -30,7 +29,6 @@ describe('Tracker', function () {
Tracker.flush();
expect(x).to.equal(3);
-
t.changed();
// Prevent the function from running further.
handle.stop();
@@ -41,7 +39,6 @@ describe('Tracker', function () {
Tracker.flush();
expect(x).to.equal(3);
-
Tracker.autorun(function (internalHandle) {
t.depend();
++x;
@@ -64,45 +61,55 @@ describe('Tracker', function () {
expect(x).to.equal(6);
// throw tests
- expect(() => Tracker.autorun())
- .to.throw('Tracker.autorun requires a function argument')
- expect(() => Tracker.autorun({}))
- .to.throw('Tracker.autorun requires a function argument')
- })
- it('#run',function () {
- let i = 0, d = new Tracker.Dependency, d2 = new Tracker.Dependency;
+ expect(() => Tracker.autorun()).to.throw(
+ 'Tracker.autorun requires a function argument'
+ );
+ expect(() => Tracker.autorun({})).to.throw(
+ 'Tracker.autorun requires a function argument'
+ );
+ });
+ it('#run', function () {
+ let i = 0,
+ d = new Tracker.Dependency(),
+ d2 = new Tracker.Dependency();
const computation = Tracker.autorun(function (c) {
d.depend();
i = i + 1;
//when #run() is called, this dependency should be picked up
- if (i>=2 && i<4) { d2.depend(); }
+ if (i >= 2 && i < 4) {
+ d2.depend();
+ }
});
expect(i).to.equal(1);
computation.run();
expect(i).to.equal(2);
- d.changed(); Tracker.flush();
+ d.changed();
+ Tracker.flush();
expect(i).to.equal(3);
//we expect to depend on d2 at this point
- d2.changed(); Tracker.flush();
+ d2.changed();
+ Tracker.flush();
expect(i).to.equal(4);
//we no longer depend on d2, only d
- d2.changed(); Tracker.flush();
+ d2.changed();
+ Tracker.flush();
expect(i).to.equal(4);
- d.changed(); Tracker.flush();
+ d.changed();
+ Tracker.flush();
expect(i).to.equal(5);
- })
+ });
it('nested run', function () {
- const a = new Tracker.Dependency;
- const b = new Tracker.Dependency;
- const c = new Tracker.Dependency;
- const d = new Tracker.Dependency;
- const e = new Tracker.Dependency;
- const f = new Tracker.Dependency;
+ const a = new Tracker.Dependency();
+ const b = new Tracker.Dependency();
+ const c = new Tracker.Dependency();
+ const d = new Tracker.Dependency();
+ const e = new Tracker.Dependency();
+ const f = new Tracker.Dependency();
- let buf = "";
+ let buf = '';
const c1 = Tracker.autorun(function () {
a.depend();
@@ -138,7 +145,7 @@ describe('Tracker', function () {
const check = function (str) {
expect(buf).to.equal(str);
- buf = "";
+ buf = '';
};
check('abcdef');
@@ -214,7 +221,7 @@ describe('Tracker', function () {
expect(f.hasDependents()).to.equal(false);
});
it('flush', function () {
- let buf = "";
+ let buf = '';
const c1 = Tracker.autorun(function (c) {
buf += 'a';
@@ -233,16 +240,15 @@ describe('Tracker', function () {
//////
- buf = "";
+ buf = '';
const c2 = Tracker.autorun(function (c) {
buf += 'a';
// invalidate first time
- if (c.firstRun)
- c.invalidate();
+ if (c.firstRun) c.invalidate();
Tracker.onInvalidate(function () {
- buf += "*";
+ buf += '*';
});
});
@@ -258,15 +264,14 @@ describe('Tracker', function () {
// Can flush a different run from a run;
// no current computation in afterFlush
- buf = "";
+ buf = '';
const c3 = Tracker.autorun(function (c) {
buf += 'a';
// invalidate first time
- if (c.firstRun)
- c.invalidate();
+ if (c.firstRun) c.invalidate();
Tracker.afterFlush(function () {
- buf += (Tracker.active ? "1" : "0");
+ buf += Tracker.active ? '1' : '0';
});
});
@@ -293,7 +298,7 @@ describe('Tracker', function () {
eql(typeof arg, 'undefined');
expect(() => {
Tracker.flush();
- }).to.throw('Can\'t call Tracker.flush while flushing');
+ }).to.throw("Can't call Tracker.flush while flushing");
});
Tracker.flush();
@@ -303,17 +308,19 @@ describe('Tracker', function () {
Tracker.autorun(function () {
Tracker.flush();
});
- }).to.throw('Can\'t flush inside Tracker.autorun');
+ }).to.throw("Can't flush inside Tracker.autorun");
expect(() => {
Tracker.autorun(function () {
Tracker.autorun(function () {});
Tracker.flush();
});
- }).to.throw('Can\'t flush inside Tracker.autorun');
+ }).to.throw("Can't flush inside Tracker.autorun");
});
it('#flush', function () {
- let i = 0, j = 0, d = new Tracker.Dependency;
+ let i = 0,
+ j = 0,
+ d = new Tracker.Dependency();
const c1 = Tracker.autorun(function () {
d.depend();
i = i + 1;
@@ -322,8 +329,8 @@ describe('Tracker', function () {
d.depend();
j = j + 1;
});
- eql(i,1);
- eql(j,1);
+ eql(i, 1);
+ eql(j, 1);
d.changed();
c1.flush();
@@ -333,7 +340,7 @@ describe('Tracker', function () {
Tracker.flush();
eql(i, 2);
eql(j, 2);
- })
+ });
it('lifecycle', function () {
expect(Tracker.active).to.equal(false);
eql(null, Tracker.currentComputation);
@@ -370,8 +377,7 @@ describe('Tracker', function () {
});
runCount++;
- if (shouldStop)
- c.stop();
+ if (shouldStop) c.stop();
});
firstRun = false;
@@ -398,13 +404,12 @@ describe('Tracker', function () {
eql(buf, [6, 8], true);
Tracker.flush();
eql(buf, [6, 8, 14, 11, 13, 12, 15], true);
-
});
it('onInvalidate', function () {
- let buf = "";
+ let buf = '';
const c1 = Tracker.autorun(function () {
- buf += "*";
+ buf += '*';
});
const append = function (x, expectedComputation) {
@@ -457,12 +462,12 @@ describe('Tracker', function () {
Tracker.flush();
eql(buf, 'xabc*ze*yd*');
- buf = "";
+ buf = '';
c1.onInvalidate(append('m'));
Tracker.flush();
eql(buf, '');
c1.stop();
- eql(buf, 'ms'); // s is from onStop
+ eql(buf, 'ms'); // s is from onStop
Tracker.flush();
eql(buf, 'ms');
c1.onStop(append('S'));
@@ -481,7 +486,7 @@ describe('Tracker', function () {
// When c1 is invalidated, it invalidates c2, then stops.
const c1 = Tracker.autorun(function (c) {
- if (! c.firstRun) {
+ if (!c.firstRun) {
buf.push('A');
c2.invalidate();
c.stop();
@@ -489,7 +494,7 @@ describe('Tracker', function () {
});
const c2 = Tracker.autorun(function (c) {
- if (! c.firstRun) {
+ if (!c.firstRun) {
buf.push('B');
c.stop();
}
@@ -503,11 +508,11 @@ describe('Tracker', function () {
eql(buf.join(''), 'ABC', true);
});
it('throwFirstError', function () {
- const d = new Tracker.Dependency;
+ const d = new Tracker.Dependency();
Tracker.autorun(function (c) {
d.depend();
- if (!c.firstRun) throw new Error("expected error foo");
+ if (!c.firstRun) throw new Error('expected error foo');
});
d.changed();
@@ -516,13 +521,13 @@ describe('Tracker', function () {
d.changed();
expect(() => {
- Tracker.flush({_throwFirstError: true});
+ Tracker.flush({ _throwFirstError: true });
}).to.throw(/expected error foo/);
});
it('no infinite recomputation - async', function (done) {
let reran = false;
const c = Tracker.autorun(function (c) {
- if (! c.firstRun) reran = true;
+ if (!c.firstRun) reran = true;
c.invalidate();
});
expect(reran).to.equal(false);
@@ -551,20 +556,22 @@ describe('Tracker', function () {
eql(n, 2000);
});
it('Tracker.autorun, onError option - async', function (done) {
- const d = new Tracker.Dependency;
- const c = Tracker.autorun(function (c) {
- d.depend();
-
- if (! c.firstRun) throw new Error("expected error foo");
- }, {
- onError: function (err) {
- eql(err.message, "expected error foo")
- done()
+ const d = new Tracker.Dependency();
+ const c = Tracker.autorun(
+ function (c) {
+ d.depend();
+
+ if (!c.firstRun) throw new Error('expected error foo');
+ },
+ {
+ onError: function (err) {
+ eql(err.message, 'expected error foo');
+ done();
+ },
}
- });
+ );
d.changed();
Tracker.flush();
});
-
-})
\ No newline at end of file
+});