├── .gitignore
├── .npmignore
├── README.md
├── dist
├── bundle.js
├── index.d.ts
└── interfaces.d.ts
├── example
├── .gitignore
├── README.md
├── package-lock.json
├── package.json
├── public
│ ├── favicon.ico
│ ├── img
│ │ ├── loading.gif
│ │ └── paymaya.png
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── robots.txt
└── src
│ ├── components
│ ├── Header
│ │ └── index.js
│ └── ModalMessage
│ │ └── index.js
│ ├── containers
│ ├── App
│ │ └── index.js
│ ├── Cancel
│ │ └── index.js
│ ├── Checkout
│ │ └── index.js
│ ├── CreditCard
│ │ └── index.js
│ ├── Failure
│ │ └── index.js
│ ├── Home
│ │ └── index.js
│ ├── SinglePayment
│ │ └── index.js
│ ├── Success
│ │ └── index.js
│ └── WalletLink
│ │ └── index.js
│ ├── index.css
│ ├── index.js
│ ├── reducers
│ └── index.js
│ ├── store.js
│ └── utils
│ └── index.js
├── package-lock.json
├── package.json
├── rollup.config.js
├── src
├── .babelrc
├── index.ts
└── interfaces.ts
└── tsconfig.json
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | build
3 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .idea
2 | index.html
3 | node_modules
4 | rollup.config.js
5 | src
6 | tsconfig.json
7 | example
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Overview
2 |
3 | Official client side SDK by PayMaya Payment Gateway. For assistance you may reach us through paymayadevs@voyager.ph
4 |
5 | ## Install
6 |
7 |
8 | `npm install --save paymaya-js-sdk`
9 |
10 | or
11 |
12 | `yarn add paymaya-js-sdk`
13 |
14 |
15 | ## Run
16 |
17 | You can either import it like:
18 |
19 | ```javascript
20 | import PaymayaSdkClient from 'paymaya-js-sdk'
21 | ```
22 |
23 | or simply include it through a script tag on your HTML site:
24 |
25 | ```html
26 |
27 | ```
28 |
29 | NOTE: when including via script tags, the SDK is globally available using the variable `PayMayaSDK`
30 |
31 | ## Usage
32 |
33 | Before using any of the publicly available methods, you need to initialize the SDK by using the `init` method (you only need to do this once in app's lifetime).
34 |
35 | React:
36 | ```js
37 | import paymaya from 'paymaya-js-sdk';
38 |
39 | function App() {
40 | const exampleCheckoutObject = {};
41 | useEffect(() => {
42 | paymaya.init('my-public-key', true);
43 | paymaya.createCheckout(exampleCheckoutObject);
44 | }, []);
45 | return (
46 |
49 | );
50 | }
51 | ```
52 |
53 | or vanilla js
54 | ```js
55 |
60 | ```
61 |
62 | ## SDK API
63 |
64 | * [init](#initpublickey-issandbox)
65 |
66 | * [createCheckout](#createcheckoutcheckoutrequestobject)
67 |
68 | * [createWalletLink](#createwalletlinkwalletlinkrequestobject)
69 |
70 | * [createSinglePayment](#createsinglepaymentsinglepaymentrequestobject)
71 |
72 | * [addTransactionHandler](#addtransactionhandlercallback)
73 |
74 | * [createCreditCardForm](#createcreditcardformtargethtmlelement-options)
75 |
76 | ---
77 |
78 | #### `init(publicKey, isSandbox)`
79 | This method initializes SDK. It must be run before other methods are being used.
80 |
81 | Returns: `void`
82 |
83 | `init` properties:
84 |
85 | | Parameter | Type | Required | Description |
86 | |-----------------------|--------|----------|--------------------------------------------------------|
87 | | publicKey | string | Yes | Public API key delivered by PayMaya. |
88 | | isSandbox | boolean | No | Boolean that indicates whether SDK should use sandbox environment or not. Defaults to `true`, if not supplied. |
89 |
90 | ---
91 |
92 | #### `createCheckout(checkoutRequestObject)`
93 | This method redirects the user to PayMaya Checkout, where the user can finalize his/her payment.
94 |
95 | Returns: `Promise`
96 |
97 | `checkoutRequestObject` properties are defined [here](https://developers.paymaya.com/blog/entry/paymaya-checkout-api-overview#checkoutObject).
98 |
99 | Example `checkoutRequestObject`:
100 | ```json
101 | {
102 | "totalAmount": {
103 | "value": 100,
104 | "currency": "PHP",
105 | "details": {
106 | "discount": 0,
107 | "serviceCharge": 0,
108 | "shippingFee": 0,
109 | "tax": 0,
110 | "subtotal": 100
111 | }
112 | },
113 | "buyer": {
114 | "firstName": "John",
115 | "middleName": "Paul",
116 | "lastName": "Doe",
117 | "birthday": "1995-10-24",
118 | "customerSince": "1995-10-24",
119 | "sex": "M",
120 | "contact": {
121 | "phone": "+639181008888",
122 | "email": "merchant@merchantsite.com"
123 | },
124 | "shippingAddress": {
125 | "firstName": "John",
126 | "middleName": "Paul",
127 | "lastName": "Doe",
128 | "phone": "+639181008888",
129 | "email": "merchant@merchantsite.com",
130 | "line1": "6F Launchpad",
131 | "line2": "Reliance Street",
132 | "city": "Mandaluyong City",
133 | "state": "Metro Manila",
134 | "zipCode": "1552",
135 | "countryCode": "PH",
136 | "shippingType": "ST" // ST - for standard, SD - for same day
137 | },
138 | "billingAddress": {
139 | "line1": "6F Launchpad",
140 | "line2": "Reliance Street",
141 | "city": "Mandaluyong City",
142 | "state": "Metro Manila",
143 | "zipCode": "1552",
144 | "countryCode": "PH"
145 | }
146 | },
147 | "items": [
148 | {
149 | "name": "Canvas Slip Ons",
150 | "quantity": 1,
151 | "code": "CVG-096732",
152 | "description": "Shoes",
153 | "amount": {
154 | "value": 100,
155 | "details": {
156 | "discount": 0,
157 | "serviceCharge": 0,
158 | "shippingFee": 0,
159 | "tax": 0,
160 | "subtotal": 100
161 | }
162 | },
163 | "totalAmount": {
164 | "value": 100,
165 | "details": {
166 | "discount": 0,
167 | "serviceCharge": 0,
168 | "shippingFee": 0,
169 | "tax": 0,
170 | "subtotal": 100
171 | }
172 | }
173 | }
174 | ],
175 | "redirectUrl": {
176 | "success": "https://www.merchantsite.com/success",
177 | "failure": "https://www.merchantsite.com/failure",
178 | "cancel": "https://www.merchantsite.com/cancel"
179 | },
180 | "requestReferenceNumber": "1551191039",
181 | "metadata": {}
182 | }
183 | ```
184 |
185 | ---
186 |
187 | #### `createWalletLink(walletLinkrequestObject)`
188 | This method creates a wallet link that allows charging to a PayMaya account.
189 |
190 | Returns `Promise`
191 |
192 | `walletLinkRequestObject` properties:
193 |
194 | | Parameter | Type | Required | Description |
195 | |-----------------------|--------|----------|--------------------------------------------------------|
196 | | redirectUrl | object | | Object containing merchant's callback urls |
197 | | redirectUrl.success | string | | Url that the user will be redirected on after successful payment |
198 | | redirectUrl.failure | string | | Url that the user will be redirected on after failed payment |
199 | | redirectUrl.cancel | string | | Url that the user will be redirected on after canceled payment |
200 | | requestReferenceNumber | string | | Request reference number |
201 | | metadata | object | No | Additional information regarding payment |
202 |
203 | ---
204 |
205 | #### `createSinglePayment(singlePaymentRequestObject)`
206 | This method creates a single payment redirection, allowing the user to finalize the transaction.
207 |
208 | Returns `Promise`
209 |
210 | `createSinglePayment` properties:
211 |
212 | | Parameter | Type | Required | Description |
213 | |-----------------------|--------|----------|--------------------------------------------------------|
214 | | totalAmount | object | | Object containing payment amount |
215 | | totalAmount.currency | string | | Currency of transaction |
216 | | totalAmount.value | string | | Value of transaction |
217 | | redirectUrl | object | | Object containing merchant's callback urls |
218 | | redirectUrl.success | string | | Url that the user will be redirected on after successful payment |
219 | | redirectUrl.failure | string | | Url that the user will be redirected on after failed payment |
220 | | redirectUrl.cancel | string | | Url that the user will be redirected on after canceled payment |
221 | | requestReferenceNumber | string | | Request reference number |
222 | | metadata | object | | Additional information regarding payment |
223 |
224 |
225 | ---
226 |
227 | #### `addTransactionHandler(callback)`
228 | This method assigns a listener for credit card form method [createdCreditCardForm](#createcreditcardformtargethtmlelement-options) - whenever the user fills all the information required (cvc, credit card number and expiry date) and then tokenizes that data, a `callback` will be fired with payment token.
229 |
230 | Returns `void`
231 |
232 | Example usage:
233 |
234 | ```js
235 | sdk
236 | .createCreditCardForm(iframeContainer, {})
237 | .addTransactionHandler((paymentTokenId) => this.setState({open: true, iframe: true, bodyResponse: {paymentTokenId}}))
238 | ```
239 | `addTransactionHandler` properties:
240 |
241 | | Parameter | Type | Required | Description |
242 | |-----------------------|--------|----------|--------------------------------------------------------|
243 | | callback | function | Yes | function that will be fired once credit card form is tokenized |
244 |
245 | `callback(paymentTokenId)` properties:
246 |
247 | | Parameter | Type | Required | Description |
248 | |-----------------------|--------|----------|--------------------------------------------------------|
249 | | paymentTokenId | string | | a string that will be passed as argument to merchant's callback function |
250 |
251 | ---
252 |
253 | #### `createCreditCardForm(targetHtmlElement, options)`
254 | This method creates a credit card form in selected html element, by embedding a safe iframe instance in it - allowing the user to fill his credit card information in a safe manner.
255 |
256 | Returns `void`
257 |
258 | `createdCreditCardForm` properties:
259 |
260 | | Parameter | Type | Required | Description |
261 | |-----------------------|--------|----------|--------------------------------------------------------|
262 | | targetHtmlElement | HTMLElement | Yes | a target html element in which form will be embedded |
263 | | options | object | No | options object containing styling schema |
264 | | options.buttonText | string | No | label text for a button inside the form |
265 | | options.buttonColor | string | No | button color (example: '#000') |
266 | | options.buttonTextColor | string | No | button text color (example: '#000') |
267 | | options.showLogo | boolean | No | boolean whether to show PayMaya logo or not |
268 |
269 | ## Examples
270 |
271 | A sample React.JS project is available under [/example](https://github.com/PayMaya/PayMaya-JS-SDK-v2/tree/master/example) in the repo.
272 |
273 | ```sh
274 | git clone git@github.com:PayMaya/PayMaya-JS-SDK-v2.git
275 | cd PayMaya-JS-SDK-v2
276 | npm ci
277 | cd example
278 | npm ci
279 | npm start
280 | ```
--------------------------------------------------------------------------------
/dist/bundle.js:
--------------------------------------------------------------------------------
1 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).PayMayaSDK=e()}(this,(function(){"use strict";
2 | /*! *****************************************************************************
3 | Copyright (c) Microsoft Corporation. All rights reserved.
4 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use
5 | this file except in compliance with the License. You may obtain a copy of the
6 | License at http://www.apache.org/licenses/LICENSE-2.0
7 |
8 | THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
9 | KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
10 | WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
11 | MERCHANTABLITY OR NON-INFRINGEMENT.
12 |
13 | See the Apache Version 2.0 License for specific language governing permissions
14 | and limitations under the License.
15 | ***************************************************************************** */function t(t,e,r,n){return new(r||(r=Promise))((function(i,o){function a(t){try{c(n.next(t))}catch(t){o(t)}}function s(t){try{c(n.throw(t))}catch(t){o(t)}}function c(t){t.done?i(t.value):new r((function(e){e(t.value)})).then(a,s)}c((n=n.apply(t,e||[])).next())}))}function e(t,e){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1] void): void;
13 | createCheckout(checkoutRequestObject: CreateCheckoutObject): Promise;
14 | createWalletLink(walletLinkRequestObject: CreateWalletLinkObject): Promise;
15 | createSinglePayment(singlePaymentRequestObject: CreateSinglePaymentObject): Promise;
16 | createCreditCardForm(targetHtmlElement: HTMLElement, options?: CreditCardFormOptions): this;
17 | }
18 | declare const _default: PayMayaSDK;
19 | export default _default;
20 |
--------------------------------------------------------------------------------
/dist/interfaces.d.ts:
--------------------------------------------------------------------------------
1 | export interface CreateCheckoutObject {
2 | totalAmount: TotalAmount;
3 | buyer?: Buyer;
4 | items: Item[];
5 | redirectUrl?: RedirectUrls;
6 | requestReferenceNumber: string;
7 | metadata: {};
8 | }
9 | export interface CreateWalletLinkObject extends RedirectUrls {
10 | requestReferenceNumber: string;
11 | metadata: {};
12 | }
13 | export interface CreateSinglePaymentObject extends RedirectUrls {
14 | totalAmount: {
15 | currency: string;
16 | value: string;
17 | };
18 | requestReferenceNumber: string;
19 | metadata: {};
20 | }
21 | export interface CreditCardFormOptions {
22 | buttonText: string;
23 | buttonColor: string;
24 | buttonTextColor: string;
25 | showLogo: boolean;
26 | }
27 | interface TotalAmount {
28 | value: number;
29 | currency: string;
30 | details?: Details;
31 | }
32 | interface Details {
33 | discount?: number;
34 | serviceCharge?: number;
35 | shippingFee?: number;
36 | tax?: number;
37 | subtotal?: number;
38 | }
39 | interface Buyer {
40 | firstName?: string;
41 | middleName?: string;
42 | lastName?: string;
43 | birthday?: string;
44 | customerSince?: string;
45 | sex?: string;
46 | contact?: {
47 | phone?: string;
48 | email?: string;
49 | };
50 | shippingAddress?: ShippingAddress;
51 | billingAddress?: BillingAddress;
52 | }
53 | export declare enum ShippingType {
54 | ST = "ST",
55 | SD = "SD"
56 | }
57 | interface ShippingAddress extends BillingAddress {
58 | firstName: string;
59 | middleName: string;
60 | lastName: string;
61 | phone: string;
62 | email: string;
63 | shippingType: ShippingType;
64 | }
65 | interface BillingAddress {
66 | line1?: string;
67 | line2?: string;
68 | city?: string;
69 | state?: string;
70 | zipCode?: string;
71 | countryCode?: string;
72 | }
73 | interface Item {
74 | name: string;
75 | quantity?: number;
76 | code?: string;
77 | description?: string;
78 | amount?: Amount;
79 | totalAmount: Amount;
80 | }
81 | interface Amount {
82 | value: number;
83 | details?: Details;
84 | }
85 | interface RedirectUrls {
86 | success?: string;
87 | failure?: string;
88 | cancel?: string;
89 | }
90 | export {};
91 |
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # production
12 | /build
13 |
14 | # misc
15 | .DS_Store
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 |
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
2 |
3 | ## Available Scripts
4 |
5 | In the project directory, you can run:
6 |
7 | ### `yarn start`
8 |
9 | Runs the app in the development mode.
10 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
11 |
12 | The page will reload if you make edits.
13 | You will also see any lint errors in the console.
14 |
15 | ### `yarn test`
16 |
17 | Launches the test runner in the interactive watch mode.
18 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
19 |
20 | ### `yarn build`
21 |
22 | Builds the app for production to the `build` folder.
23 | It correctly bundles React in production mode and optimizes the build for the best performance.
24 |
25 | The build is minified and the filenames include the hashes.
26 | Your app is ready to be deployed!
27 |
28 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
29 |
30 | ### `yarn eject`
31 |
32 | **Note: this is a one-way operation. Once you `eject`, you can’t go back!**
33 |
34 | If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
35 |
36 | Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.
37 |
38 | You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.
39 |
40 | ## Learn More
41 |
42 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
43 |
44 | To learn React, check out the [React documentation](https://reactjs.org/).
45 |
46 | ### Code Splitting
47 |
48 | This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting
49 |
50 | ### Analyzing the Bundle Size
51 |
52 | This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size
53 |
54 | ### Making a Progressive Web App
55 |
56 | This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app
57 |
58 | ### Advanced Configuration
59 |
60 | This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration
61 |
62 | ### Deployment
63 |
64 | This section has moved here: https://facebook.github.io/create-react-app/docs/deployment
65 |
66 | ### `yarn build` fails to minify
67 |
68 | This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify
69 |
--------------------------------------------------------------------------------
/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "paymaya_sdk_sample",
3 | "version": "1.0.0",
4 | "private": true,
5 | "dependencies": {
6 | "@testing-library/jest-dom": "4.2.4",
7 | "@testing-library/react": "9.3.2",
8 | "@testing-library/user-event": "7.1.2",
9 | "connected-react-router": "4.5.0",
10 | "paymaya-js-sdk": "file:..",
11 | "react": "16.13.0",
12 | "react-dom": "16.13.0",
13 | "react-redux": "5.1.2",
14 | "react-responsive-modal": "4.0.1",
15 | "react-router": "4.4.0-beta.8",
16 | "react-router-dom": "4.4.0-beta.8",
17 | "react-scripts": "3.4.0",
18 | "redux": "4.0.5",
19 | "redux-form": "8.2.6",
20 | "redux-thunk": "2.3.0",
21 | "sanitize.css": "7.0.3",
22 | "serve": "10.1.2"
23 | },
24 | "scripts": {
25 | "start": "react-scripts start",
26 | "build": "react-scripts build",
27 | "test": "react-scripts test",
28 | "eject": "react-scripts eject"
29 | },
30 | "eslintConfig": {
31 | "extends": "react-app"
32 | },
33 | "browserslist": {
34 | "production": [
35 | ">0.2%",
36 | "not dead",
37 | "not op_mini all"
38 | ],
39 | "development": [
40 | "last 1 chrome version",
41 | "last 1 firefox version",
42 | "last 1 safari version"
43 | ]
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/example/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PayMaya/PayMaya-JS-SDK-v2/f833a1441272e086e9b016816c5cef71f3e315fd/example/public/favicon.ico
--------------------------------------------------------------------------------
/example/public/img/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PayMaya/PayMaya-JS-SDK-v2/f833a1441272e086e9b016816c5cef71f3e315fd/example/public/img/loading.gif
--------------------------------------------------------------------------------
/example/public/img/paymaya.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PayMaya/PayMaya-JS-SDK-v2/f833a1441272e086e9b016816c5cef71f3e315fd/example/public/img/paymaya.png
--------------------------------------------------------------------------------
/example/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
17 |
18 |
27 | Paymaya SDK Sample
28 |
29 |
30 |
31 |
32 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/example/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PayMaya/PayMaya-JS-SDK-v2/f833a1441272e086e9b016816c5cef71f3e315fd/example/public/logo192.png
--------------------------------------------------------------------------------
/example/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PayMaya/PayMaya-JS-SDK-v2/f833a1441272e086e9b016816c5cef71f3e315fd/example/public/logo512.png
--------------------------------------------------------------------------------
/example/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "Paymaya SDK Sample",
3 | "name": "Paymaya SDK Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/example/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/example/src/components/Header/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { NavLink } from 'react-router-dom'
3 |
4 | const Header = () => (
5 |
6 |
7 | Documentation
8 | Checkout
9 | Single payment
10 | Wallet link
11 | Credit card
12 |
13 | )
14 |
15 | export default Header
--------------------------------------------------------------------------------
/example/src/components/ModalMessage/index.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react'
2 | import Modal from 'react-responsive-modal'
3 |
4 | class ModalMessage extends Component {
5 |
6 | constructor(props){
7 | super(props);
8 | this.state = {
9 | open: false
10 | }
11 | }
12 |
13 | componentDidMount(){
14 | this.setModal(true)
15 | }
16 |
17 | setModal = (value) => {
18 | this.setState({
19 | open: value
20 | })
21 | }
22 |
23 | setBackground = (type) => {
24 | switch(type){
25 | case 'success':
26 | return '#4caf50'
27 | case 'failure':
28 | return '#f44336'
29 | case 'cancel':
30 | return '#ff9800'
31 | default:
32 | return '#8dc540'
33 | }
34 | }
35 |
36 | onCloseModal = () => {
37 | this.props.history.push('payment-methods')
38 | this.setModal(false)
39 | }
40 |
41 | render() {
42 | const { type } = this.props
43 | const { open } = this.state
44 | return (
45 |
51 |
56 |
59 |
66 |
67 |
68 | );
69 | }
70 | }
71 |
72 | export default ModalMessage;
--------------------------------------------------------------------------------
/example/src/containers/App/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Route, BrowserRouter, Switch, Redirect } from 'react-router-dom'
3 |
4 | import Header from '../../components/Header'
5 |
6 | import Home from '../Home'
7 | import Checkout from '../Checkout'
8 | import SinglePayment from '../SinglePayment'
9 | import WalletLink from '../WalletLink'
10 | import CreditCard from '../CreditCard'
11 | import Success from '../Success'
12 | import Failure from '../Failure'
13 | import Cancel from '../Cancel'
14 |
15 | const App = () => (
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | )
33 |
34 | export default App
35 |
--------------------------------------------------------------------------------
/example/src/containers/Cancel/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ModalMessage from '../../components/ModalMessage'
3 |
4 | const Cancel = (props) => (
5 |
6 | )
7 |
8 | export default Cancel
--------------------------------------------------------------------------------
/example/src/containers/Checkout/index.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react'
2 | import paymaya from 'paymaya-js-sdk'
3 | import Modal from 'react-responsive-modal'
4 |
5 | import { isEmptyObject } from '../../utils'
6 |
7 | class Checkout extends Component {
8 | constructor(props){
9 | super(props);
10 | this.state = {
11 | open: false,
12 | loading: false,
13 | requestReferenceNumber: "6319921",
14 | items: [
15 | {
16 | name: "Nike Footwear",
17 | quantity: 1,
18 | totalAmount: {
19 | value: '100'
20 | }
21 | }
22 |
23 | ],
24 | totalAmount: {
25 | value: '100',
26 | currency: 'PHP',
27 | },
28 | metadata: {},
29 | redirectUrl: {
30 | success: "http://localhost:3000/success",
31 | failure: "http://localhost:3000/failure",
32 | cancel: "http://localhost:3000/cancel"
33 | },
34 | bodyResponse: {},
35 | errorResponse: {}
36 | }
37 | }
38 |
39 | async createCheckout(response){
40 | this.setState({
41 | loading: true,
42 | errorResponse: {}
43 | })
44 | paymaya.init('pk-Z0OSzLvIcOI2UIvDhdTGVVfRSSeiGStnceqwUE7n0Ah', true)
45 | await paymaya.createCheckout(response).then().catch(err => {
46 | this.setState({
47 | errorResponse: err,
48 | loading: false
49 | })
50 | })
51 | }
52 |
53 | onCloseModal = () => {
54 | this.setState({
55 | open: false,
56 | bodyResponse: {},
57 | errorResponse: {},
58 | loading: false
59 | })
60 | }
61 |
62 | handleCheckout = () => {
63 |
64 | const { requestReferenceNumber, totalAmount, items, metadata, redirectUrl } = this.state
65 |
66 | const bodyResponseForCheckout = {
67 | requestReferenceNumber,
68 | totalAmount,
69 | items,
70 | metadata,
71 | redirectUrl
72 |
73 | }
74 |
75 | this.setState({
76 | bodyResponse: bodyResponseForCheckout,
77 | open: true
78 | })
79 |
80 | }
81 |
82 | render() {
83 | const { bodyResponse, errorResponse, open, loading } = this.state
84 | return (
85 |
86 |
87 |
Checkout
88 |
89 |
90 |
95 | {!isEmptyObject(bodyResponse) && {JSON.stringify(bodyResponse, null, 2)}
}
96 | {!isEmptyObject(errorResponse) && {JSON.stringify(errorResponse, null, 2)}
}
97 |
98 | {!loading &&
}
99 | {loading &&

}
100 |
101 |
102 |
103 | );
104 | }
105 | }
106 |
107 | export default Checkout;
--------------------------------------------------------------------------------
/example/src/containers/CreditCard/index.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react'
2 | import paymaya from 'paymaya-js-sdk'
3 | import Modal from 'react-responsive-modal'
4 |
5 | import { isEmptyObject } from '../../utils'
6 |
7 | class PaymentMethods extends Component {
8 | constructor(props){
9 | super(props);
10 | this.state = {
11 | open: false,
12 | loading: false,
13 | requestReferenceNumber: "6319921",
14 | items: [
15 | {
16 | name: "Nike Footwear",
17 | quantity: 1,
18 | totalAmount: {
19 | value: '100'
20 | }
21 | }
22 |
23 | ],
24 | totalAmount: {
25 | value: '100',
26 | currency: 'PHP',
27 | },
28 | metadata: {},
29 | redirectUrl: {
30 | success: "http://localhost:3000/success",
31 | failure: "http://localhost:3000/failure",
32 | cancel: "http://localhost:3000/cancel"
33 | },
34 | bodyResponse: {},
35 | errorResponse: {}
36 | }
37 | }
38 |
39 | componentDidMount(){
40 | this.createCreditCardForm()
41 | }
42 |
43 | createCreditCardForm = () => {
44 | paymaya.init('pk-MOfNKu3FmHMVHtjyjG7vhr7vFevRkWxmxYL1Yq6iFk5', true)
45 | const iframeContainer = document.getElementById("iframe-container")
46 | paymaya
47 | .createCreditCardForm(iframeContainer)
48 | .addTransactionHandler((paymentTokenId) => this.setState({open: true, bodyResponse: {paymentTokenId}}))
49 | }
50 |
51 | onCloseModal = () => {
52 | this.setState({
53 | open: false,
54 | bodyResponse: {},
55 | errorResponse: {},
56 | loading: false
57 | })
58 | }
59 |
60 | render() {
61 | const { bodyResponse, errorResponse, open, loading } = this.state
62 | return (
63 |
64 |
65 |
Credit card
66 |
67 |
68 |
69 |
74 | {!isEmptyObject(bodyResponse) && {JSON.stringify(bodyResponse, null, 2)}
}
75 | {!isEmptyObject(errorResponse) && {JSON.stringify(errorResponse, null, 2)}
}
76 |
77 | {!loading &&
}
78 | {loading &&

}
79 |
80 |
81 |
82 | );
83 | }
84 | }
85 |
86 | export default PaymentMethods;
87 |
--------------------------------------------------------------------------------
/example/src/containers/Failure/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ModalMessage from '../../components/ModalMessage'
3 |
4 | const Failure = (props) => (
5 |
6 | )
7 |
8 | export default Failure
--------------------------------------------------------------------------------
/example/src/containers/Home/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const Home = () => (
4 |
50 | )
51 |
52 | export default Home
--------------------------------------------------------------------------------
/example/src/containers/SinglePayment/index.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react'
2 | import paymaya from 'paymaya-js-sdk'
3 | import Modal from 'react-responsive-modal'
4 |
5 | import { isEmptyObject } from '../../utils'
6 |
7 | class SinglePayment extends Component {
8 | constructor(props){
9 | super(props);
10 | this.state = {
11 | open: false,
12 | loading: false,
13 | requestReferenceNumber: "6319921",
14 | items: [
15 | {
16 | name: "Nike Footwear",
17 | quantity: 1,
18 | totalAmount: {
19 | value: '100'
20 | }
21 | }
22 |
23 | ],
24 | totalAmount: {
25 | value: '100',
26 | currency: 'PHP',
27 | },
28 | metadata: {},
29 | redirectUrl: {
30 | success: "http://localhost:3000/success",
31 | failure: "http://localhost:3000/failure",
32 | cancel: "http://localhost:3000/cancel"
33 | },
34 | bodyResponse: {},
35 | errorResponse: {}
36 | }
37 | }
38 |
39 | async createSinglePayment(response){
40 | this.setState({
41 | loading: true,
42 | errorResponse: {}
43 | })
44 | paymaya.init('pk-MOfNKu3FmHMVHtjyjG7vhr7vFevRkWxmxYL1Yq6iFk5', true)
45 | await paymaya.createSinglePayment(response).then().catch(err => {
46 | this.setState({
47 | errorResponse: err,
48 | loading: false
49 | })
50 | })
51 | }
52 |
53 | onCloseModal = () => {
54 | this.setState({
55 | open: false,
56 | bodyResponse: {},
57 | errorResponse: {},
58 | loading: false
59 | })
60 | }
61 |
62 | handleSinglePayment = () => {
63 |
64 | const { requestReferenceNumber, totalAmount, metadata, redirectUrl } = this.state
65 |
66 | const bodyResponseForSinglePayment = {
67 | requestReferenceNumber,
68 | totalAmount,
69 | metadata,
70 | redirectUrl
71 |
72 | }
73 |
74 | this.setState({
75 | bodyResponse: bodyResponseForSinglePayment,
76 | open: true
77 | })
78 |
79 | }
80 |
81 | render() {
82 | const { bodyResponse, errorResponse, open, loading } = this.state
83 | return (
84 |
85 |
86 |
Single payment
87 |
88 |
89 |
94 | {!isEmptyObject(bodyResponse) && {JSON.stringify(bodyResponse, null, 2)}
}
95 | {!isEmptyObject(errorResponse) && {JSON.stringify(errorResponse, null, 2)}
}
96 |
97 | {!loading &&
}
98 | {loading &&

}
99 |
100 |
101 |
102 | );
103 | }
104 | }
105 |
106 | export default SinglePayment;
--------------------------------------------------------------------------------
/example/src/containers/Success/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ModalMessage from '../../components/ModalMessage'
3 |
4 | const Success = (props) => (
5 |
6 | )
7 |
8 | export default Success
--------------------------------------------------------------------------------
/example/src/containers/WalletLink/index.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react'
2 | import paymaya from 'paymaya-js-sdk'
3 | import Modal from 'react-responsive-modal'
4 |
5 | import { isEmptyObject } from '../../utils'
6 |
7 | class WalletLink extends Component {
8 | constructor(props){
9 | super(props);
10 | this.state = {
11 | open: false,
12 | loading: false,
13 | requestReferenceNumber: "6319921",
14 | items: [
15 | {
16 | name: "Nike Footwear",
17 | quantity: 1,
18 | totalAmount: {
19 | value: '100'
20 | }
21 | }
22 |
23 | ],
24 | totalAmount: {
25 | value: '100',
26 | currency: 'PHP',
27 | },
28 | metadata: {},
29 | redirectUrl: {
30 | success: "http://localhost:3000/success",
31 | failure: "http://localhost:3000/failure",
32 | cancel: "http://localhost:3000/cancel"
33 | },
34 | bodyResponse: {},
35 | errorResponse: {}
36 | }
37 | }
38 |
39 |
40 | async createWalletLink(response){
41 | this.setState({
42 | loading: true,
43 | errorResponse: {}
44 | })
45 | paymaya.init('pk-MOfNKu3FmHMVHtjyjG7vhr7vFevRkWxmxYL1Yq6iFk5', true)
46 | await paymaya.createWalletLink(response).then().catch(err => {
47 | this.setState({
48 | errorResponse: err,
49 | loading: false
50 | })
51 | })
52 | }
53 |
54 |
55 | onCloseModal = () => {
56 | this.setState({
57 | open: false,
58 | bodyResponse: {},
59 | errorResponse: {},
60 | loading: false
61 | })
62 | }
63 |
64 | handleWalletLink = () => {
65 |
66 | const { requestReferenceNumber, metadata, redirectUrl } = this.state
67 |
68 | const bodyResponseForSinglePayment = {
69 | requestReferenceNumber,
70 | metadata,
71 | redirectUrl
72 |
73 | }
74 |
75 | this.setState({
76 | bodyResponse: bodyResponseForSinglePayment,
77 | open: true,
78 | action: this.createWalletLink
79 | })
80 |
81 | }
82 |
83 | render() {
84 | const { bodyResponse, errorResponse, open, loading } = this.state
85 | return (
86 |
87 |
88 |
Wallet link
89 |
90 |
91 |
96 | {!isEmptyObject(bodyResponse) && {JSON.stringify(bodyResponse, null, 2)}
}
97 | {!isEmptyObject(errorResponse) && {JSON.stringify(errorResponse, null, 2)}
}
98 |
99 | {!loading &&
}
100 | {loading &&

}
101 |
102 |
103 |
104 | );
105 | }
106 | }
107 |
108 | export default WalletLink;
--------------------------------------------------------------------------------
/example/src/index.css:
--------------------------------------------------------------------------------
1 | *{
2 | outline: none;
3 | }
4 |
5 | html {
6 | font-size: 100%;
7 | }
8 |
9 | body {
10 | margin: 0;
11 | padding: 0;
12 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial,
13 | sans-serif;
14 | font-size: 1rem;
15 | line-height: 1.5;
16 | }
17 |
18 | button:disabled {
19 | opacity: 0.5;
20 | }
21 |
22 | header {
23 | width: 30%;
24 | box-shadow: 5px 0 10px rgba(0,0,0,0.5);
25 | position: fixed;
26 | height: 100vh;
27 | padding: 20px 25px;
28 | box-sizing: border-box;
29 | }
30 |
31 | header img {
32 | max-width: 100%;
33 | margin: 10px auto 20px;
34 | }
35 |
36 | a{
37 | color: #8dc540;
38 | text-decoration: none;
39 | display: block;
40 | }
41 | a:hover,
42 | a.active{
43 | text-decoration: underline;
44 | }
45 |
46 | main {
47 | display: flex;
48 | margin-left: 30%;
49 | width: 70%;
50 | flex-basis: 70%;
51 | padding: 10px 25px;
52 | box-sizing: border-box;
53 | }
54 |
55 | .form {
56 | width: 100%;
57 | margin-bottom: 200px;
58 | }
59 |
60 | .form div {
61 | margin-bottom: 25px;
62 | }
63 |
64 | .form div label, .form div input {
65 | display: block;
66 | margin-bottom: 10px;
67 | }
68 |
69 | .form input{
70 | padding: 10px 15px;
71 | width: 100%;
72 | border: 1px solid rgba(0,0,0,1);
73 | border-radius: 60px;
74 | line-height: 20px;
75 | outline: none;
76 | }
77 |
78 | .form button{
79 | display: inline-block;
80 | min-width: 150px;
81 | max-width: 100%;
82 | padding: 13px 23px;
83 | background-color: #8dc540;
84 | border: 2px solid transparent;
85 | border-radius: 60px;
86 | color: #fff;
87 | font-size: .875rem;
88 | line-height: 20px;
89 | font-weight: 700;
90 | text-transform: uppercase;
91 | text-align: center;
92 | text-decoration: none;
93 | text-shadow: none;
94 | cursor: pointer;
95 | transition: .2s ease-in-out;
96 | }
97 |
98 | .form button:hover{
99 | transform: scale(1.1,1.1);
100 | }
101 |
102 | #iframe-container iframe{
103 | height: 300px;
104 | width: 1024px;
105 | max-width: 100%;
106 | border: none;
107 | }
108 |
109 | pre{
110 | white-space: pre-wrap;
111 | }
112 |
--------------------------------------------------------------------------------
/example/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { render } from 'react-dom'
3 | import { Provider } from 'react-redux'
4 | import { ConnectedRouter } from 'connected-react-router'
5 |
6 | import store, { history } from './store'
7 | import App from './containers/App'
8 |
9 | import 'sanitize.css/sanitize.css'
10 | import './index.css'
11 |
12 | const root = document.querySelector('#root')
13 |
14 | render(
15 |
16 |
17 |
18 |
19 | ,
20 | root
21 | )
22 |
--------------------------------------------------------------------------------
/example/src/reducers/index.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from 'redux'
2 | import { reducer as formReducer } from 'redux-form'
3 |
4 | export default combineReducers({
5 | form: formReducer
6 | })
7 |
--------------------------------------------------------------------------------
/example/src/store.js:
--------------------------------------------------------------------------------
1 | import { createStore, applyMiddleware, compose } from 'redux'
2 | import { connectRouter, routerMiddleware } from 'connected-react-router'
3 | import thunk from 'redux-thunk'
4 | import * as History from 'history'
5 | import rootReducer from './reducers'
6 |
7 | export const history = History.createBrowserHistory()
8 |
9 | const initialState = {}
10 | const enhancers = []
11 | const middleware = [thunk, routerMiddleware(history)]
12 |
13 | if (process.env.NODE_ENV === 'development') {
14 | const devToolsExtension = window.__REDUX_DEVTOOLS_EXTENSION__
15 |
16 | if (typeof devToolsExtension === 'function') {
17 | enhancers.push(devToolsExtension())
18 | }
19 | }
20 |
21 | const composedEnhancers = compose(
22 | applyMiddleware(...middleware),
23 | ...enhancers
24 | )
25 |
26 | export default createStore(
27 | connectRouter(history)(rootReducer),
28 | initialState,
29 | composedEnhancers
30 | )
31 |
--------------------------------------------------------------------------------
/example/src/utils/index.js:
--------------------------------------------------------------------------------
1 | export const isEmptyObject = (obj) => {
2 | return Object.entries(obj).length === 0 && obj.constructor === Object
3 | }
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "paymaya-js-sdk",
3 | "version": "2.0.1",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@babel/code-frame": {
8 | "version": "7.8.3",
9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
10 | "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
11 | "dev": true,
12 | "requires": {
13 | "@babel/highlight": "^7.8.3"
14 | }
15 | },
16 | "@babel/compat-data": {
17 | "version": "7.8.6",
18 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.6.tgz",
19 | "integrity": "sha512-CurCIKPTkS25Mb8mz267vU95vy+TyUpnctEX2lV33xWNmHAfjruztgiPBbXZRh3xZZy1CYvGx6XfxyTVS+sk7Q==",
20 | "dev": true,
21 | "requires": {
22 | "browserslist": "^4.8.5",
23 | "invariant": "^2.2.4",
24 | "semver": "^5.5.0"
25 | },
26 | "dependencies": {
27 | "semver": {
28 | "version": "5.7.1",
29 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
30 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
31 | "dev": true
32 | }
33 | }
34 | },
35 | "@babel/core": {
36 | "version": "7.8.7",
37 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.7.tgz",
38 | "integrity": "sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA==",
39 | "dev": true,
40 | "requires": {
41 | "@babel/code-frame": "^7.8.3",
42 | "@babel/generator": "^7.8.7",
43 | "@babel/helpers": "^7.8.4",
44 | "@babel/parser": "^7.8.7",
45 | "@babel/template": "^7.8.6",
46 | "@babel/traverse": "^7.8.6",
47 | "@babel/types": "^7.8.7",
48 | "convert-source-map": "^1.7.0",
49 | "debug": "^4.1.0",
50 | "gensync": "^1.0.0-beta.1",
51 | "json5": "^2.1.0",
52 | "lodash": "^4.17.13",
53 | "resolve": "^1.3.2",
54 | "semver": "^5.4.1",
55 | "source-map": "^0.5.0"
56 | },
57 | "dependencies": {
58 | "semver": {
59 | "version": "5.7.1",
60 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
61 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
62 | "dev": true
63 | },
64 | "source-map": {
65 | "version": "0.5.7",
66 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
67 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
68 | "dev": true
69 | }
70 | }
71 | },
72 | "@babel/generator": {
73 | "version": "7.8.7",
74 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz",
75 | "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==",
76 | "dev": true,
77 | "requires": {
78 | "@babel/types": "^7.8.7",
79 | "jsesc": "^2.5.1",
80 | "lodash": "^4.17.13",
81 | "source-map": "^0.5.0"
82 | },
83 | "dependencies": {
84 | "source-map": {
85 | "version": "0.5.7",
86 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
87 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
88 | "dev": true
89 | }
90 | }
91 | },
92 | "@babel/helper-annotate-as-pure": {
93 | "version": "7.8.3",
94 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz",
95 | "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==",
96 | "dev": true,
97 | "requires": {
98 | "@babel/types": "^7.8.3"
99 | }
100 | },
101 | "@babel/helper-builder-binary-assignment-operator-visitor": {
102 | "version": "7.8.3",
103 | "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz",
104 | "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==",
105 | "dev": true,
106 | "requires": {
107 | "@babel/helper-explode-assignable-expression": "^7.8.3",
108 | "@babel/types": "^7.8.3"
109 | }
110 | },
111 | "@babel/helper-call-delegate": {
112 | "version": "7.8.7",
113 | "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz",
114 | "integrity": "sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ==",
115 | "dev": true,
116 | "requires": {
117 | "@babel/helper-hoist-variables": "^7.8.3",
118 | "@babel/traverse": "^7.8.3",
119 | "@babel/types": "^7.8.7"
120 | }
121 | },
122 | "@babel/helper-compilation-targets": {
123 | "version": "7.8.7",
124 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz",
125 | "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==",
126 | "dev": true,
127 | "requires": {
128 | "@babel/compat-data": "^7.8.6",
129 | "browserslist": "^4.9.1",
130 | "invariant": "^2.2.4",
131 | "levenary": "^1.1.1",
132 | "semver": "^5.5.0"
133 | },
134 | "dependencies": {
135 | "semver": {
136 | "version": "5.7.1",
137 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
138 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
139 | "dev": true
140 | }
141 | }
142 | },
143 | "@babel/helper-create-regexp-features-plugin": {
144 | "version": "7.8.6",
145 | "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.6.tgz",
146 | "integrity": "sha512-bPyujWfsHhV/ztUkwGHz/RPV1T1TDEsSZDsN42JPehndA+p1KKTh3npvTadux0ZhCrytx9tvjpWNowKby3tM6A==",
147 | "dev": true,
148 | "requires": {
149 | "@babel/helper-annotate-as-pure": "^7.8.3",
150 | "@babel/helper-regex": "^7.8.3",
151 | "regexpu-core": "^4.6.0"
152 | }
153 | },
154 | "@babel/helper-define-map": {
155 | "version": "7.8.3",
156 | "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz",
157 | "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==",
158 | "dev": true,
159 | "requires": {
160 | "@babel/helper-function-name": "^7.8.3",
161 | "@babel/types": "^7.8.3",
162 | "lodash": "^4.17.13"
163 | }
164 | },
165 | "@babel/helper-explode-assignable-expression": {
166 | "version": "7.8.3",
167 | "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz",
168 | "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==",
169 | "dev": true,
170 | "requires": {
171 | "@babel/traverse": "^7.8.3",
172 | "@babel/types": "^7.8.3"
173 | }
174 | },
175 | "@babel/helper-function-name": {
176 | "version": "7.8.3",
177 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
178 | "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
179 | "dev": true,
180 | "requires": {
181 | "@babel/helper-get-function-arity": "^7.8.3",
182 | "@babel/template": "^7.8.3",
183 | "@babel/types": "^7.8.3"
184 | }
185 | },
186 | "@babel/helper-get-function-arity": {
187 | "version": "7.8.3",
188 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
189 | "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
190 | "dev": true,
191 | "requires": {
192 | "@babel/types": "^7.8.3"
193 | }
194 | },
195 | "@babel/helper-hoist-variables": {
196 | "version": "7.8.3",
197 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz",
198 | "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==",
199 | "dev": true,
200 | "requires": {
201 | "@babel/types": "^7.8.3"
202 | }
203 | },
204 | "@babel/helper-member-expression-to-functions": {
205 | "version": "7.8.3",
206 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz",
207 | "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==",
208 | "dev": true,
209 | "requires": {
210 | "@babel/types": "^7.8.3"
211 | }
212 | },
213 | "@babel/helper-module-imports": {
214 | "version": "7.8.3",
215 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz",
216 | "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==",
217 | "dev": true,
218 | "requires": {
219 | "@babel/types": "^7.8.3"
220 | }
221 | },
222 | "@babel/helper-module-transforms": {
223 | "version": "7.8.6",
224 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz",
225 | "integrity": "sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg==",
226 | "dev": true,
227 | "requires": {
228 | "@babel/helper-module-imports": "^7.8.3",
229 | "@babel/helper-replace-supers": "^7.8.6",
230 | "@babel/helper-simple-access": "^7.8.3",
231 | "@babel/helper-split-export-declaration": "^7.8.3",
232 | "@babel/template": "^7.8.6",
233 | "@babel/types": "^7.8.6",
234 | "lodash": "^4.17.13"
235 | }
236 | },
237 | "@babel/helper-optimise-call-expression": {
238 | "version": "7.8.3",
239 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz",
240 | "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==",
241 | "dev": true,
242 | "requires": {
243 | "@babel/types": "^7.8.3"
244 | }
245 | },
246 | "@babel/helper-plugin-utils": {
247 | "version": "7.8.3",
248 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
249 | "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
250 | "dev": true
251 | },
252 | "@babel/helper-regex": {
253 | "version": "7.8.3",
254 | "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz",
255 | "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==",
256 | "dev": true,
257 | "requires": {
258 | "lodash": "^4.17.13"
259 | }
260 | },
261 | "@babel/helper-remap-async-to-generator": {
262 | "version": "7.8.3",
263 | "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz",
264 | "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==",
265 | "dev": true,
266 | "requires": {
267 | "@babel/helper-annotate-as-pure": "^7.8.3",
268 | "@babel/helper-wrap-function": "^7.8.3",
269 | "@babel/template": "^7.8.3",
270 | "@babel/traverse": "^7.8.3",
271 | "@babel/types": "^7.8.3"
272 | }
273 | },
274 | "@babel/helper-replace-supers": {
275 | "version": "7.8.6",
276 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz",
277 | "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==",
278 | "dev": true,
279 | "requires": {
280 | "@babel/helper-member-expression-to-functions": "^7.8.3",
281 | "@babel/helper-optimise-call-expression": "^7.8.3",
282 | "@babel/traverse": "^7.8.6",
283 | "@babel/types": "^7.8.6"
284 | }
285 | },
286 | "@babel/helper-simple-access": {
287 | "version": "7.8.3",
288 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz",
289 | "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==",
290 | "dev": true,
291 | "requires": {
292 | "@babel/template": "^7.8.3",
293 | "@babel/types": "^7.8.3"
294 | }
295 | },
296 | "@babel/helper-split-export-declaration": {
297 | "version": "7.8.3",
298 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
299 | "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
300 | "dev": true,
301 | "requires": {
302 | "@babel/types": "^7.8.3"
303 | }
304 | },
305 | "@babel/helper-validator-identifier": {
306 | "version": "7.10.4",
307 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
308 | "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
309 | "dev": true
310 | },
311 | "@babel/helper-wrap-function": {
312 | "version": "7.8.3",
313 | "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz",
314 | "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==",
315 | "dev": true,
316 | "requires": {
317 | "@babel/helper-function-name": "^7.8.3",
318 | "@babel/template": "^7.8.3",
319 | "@babel/traverse": "^7.8.3",
320 | "@babel/types": "^7.8.3"
321 | }
322 | },
323 | "@babel/helpers": {
324 | "version": "7.8.4",
325 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz",
326 | "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==",
327 | "dev": true,
328 | "requires": {
329 | "@babel/template": "^7.8.3",
330 | "@babel/traverse": "^7.8.4",
331 | "@babel/types": "^7.8.3"
332 | }
333 | },
334 | "@babel/highlight": {
335 | "version": "7.8.3",
336 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
337 | "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
338 | "dev": true,
339 | "requires": {
340 | "chalk": "^2.0.0",
341 | "esutils": "^2.0.2",
342 | "js-tokens": "^4.0.0"
343 | }
344 | },
345 | "@babel/parser": {
346 | "version": "7.8.7",
347 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz",
348 | "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==",
349 | "dev": true
350 | },
351 | "@babel/plugin-proposal-async-generator-functions": {
352 | "version": "7.8.3",
353 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz",
354 | "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==",
355 | "dev": true,
356 | "requires": {
357 | "@babel/helper-plugin-utils": "^7.8.3",
358 | "@babel/helper-remap-async-to-generator": "^7.8.3",
359 | "@babel/plugin-syntax-async-generators": "^7.8.0"
360 | }
361 | },
362 | "@babel/plugin-proposal-dynamic-import": {
363 | "version": "7.8.3",
364 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz",
365 | "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==",
366 | "dev": true,
367 | "requires": {
368 | "@babel/helper-plugin-utils": "^7.8.3",
369 | "@babel/plugin-syntax-dynamic-import": "^7.8.0"
370 | }
371 | },
372 | "@babel/plugin-proposal-json-strings": {
373 | "version": "7.8.3",
374 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz",
375 | "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==",
376 | "dev": true,
377 | "requires": {
378 | "@babel/helper-plugin-utils": "^7.8.3",
379 | "@babel/plugin-syntax-json-strings": "^7.8.0"
380 | }
381 | },
382 | "@babel/plugin-proposal-nullish-coalescing-operator": {
383 | "version": "7.8.3",
384 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz",
385 | "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==",
386 | "dev": true,
387 | "requires": {
388 | "@babel/helper-plugin-utils": "^7.8.3",
389 | "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0"
390 | }
391 | },
392 | "@babel/plugin-proposal-object-rest-spread": {
393 | "version": "7.8.3",
394 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz",
395 | "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==",
396 | "dev": true,
397 | "requires": {
398 | "@babel/helper-plugin-utils": "^7.8.3",
399 | "@babel/plugin-syntax-object-rest-spread": "^7.8.0"
400 | }
401 | },
402 | "@babel/plugin-proposal-optional-catch-binding": {
403 | "version": "7.8.3",
404 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz",
405 | "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==",
406 | "dev": true,
407 | "requires": {
408 | "@babel/helper-plugin-utils": "^7.8.3",
409 | "@babel/plugin-syntax-optional-catch-binding": "^7.8.0"
410 | }
411 | },
412 | "@babel/plugin-proposal-optional-chaining": {
413 | "version": "7.8.3",
414 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz",
415 | "integrity": "sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg==",
416 | "dev": true,
417 | "requires": {
418 | "@babel/helper-plugin-utils": "^7.8.3",
419 | "@babel/plugin-syntax-optional-chaining": "^7.8.0"
420 | }
421 | },
422 | "@babel/plugin-proposal-unicode-property-regex": {
423 | "version": "7.8.3",
424 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz",
425 | "integrity": "sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ==",
426 | "dev": true,
427 | "requires": {
428 | "@babel/helper-create-regexp-features-plugin": "^7.8.3",
429 | "@babel/helper-plugin-utils": "^7.8.3"
430 | }
431 | },
432 | "@babel/plugin-syntax-async-generators": {
433 | "version": "7.8.4",
434 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
435 | "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
436 | "dev": true,
437 | "requires": {
438 | "@babel/helper-plugin-utils": "^7.8.0"
439 | }
440 | },
441 | "@babel/plugin-syntax-dynamic-import": {
442 | "version": "7.8.3",
443 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
444 | "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
445 | "dev": true,
446 | "requires": {
447 | "@babel/helper-plugin-utils": "^7.8.0"
448 | }
449 | },
450 | "@babel/plugin-syntax-json-strings": {
451 | "version": "7.8.3",
452 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
453 | "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
454 | "dev": true,
455 | "requires": {
456 | "@babel/helper-plugin-utils": "^7.8.0"
457 | }
458 | },
459 | "@babel/plugin-syntax-nullish-coalescing-operator": {
460 | "version": "7.8.3",
461 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
462 | "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
463 | "dev": true,
464 | "requires": {
465 | "@babel/helper-plugin-utils": "^7.8.0"
466 | }
467 | },
468 | "@babel/plugin-syntax-object-rest-spread": {
469 | "version": "7.8.3",
470 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
471 | "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
472 | "dev": true,
473 | "requires": {
474 | "@babel/helper-plugin-utils": "^7.8.0"
475 | }
476 | },
477 | "@babel/plugin-syntax-optional-catch-binding": {
478 | "version": "7.8.3",
479 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
480 | "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
481 | "dev": true,
482 | "requires": {
483 | "@babel/helper-plugin-utils": "^7.8.0"
484 | }
485 | },
486 | "@babel/plugin-syntax-optional-chaining": {
487 | "version": "7.8.3",
488 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
489 | "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
490 | "dev": true,
491 | "requires": {
492 | "@babel/helper-plugin-utils": "^7.8.0"
493 | }
494 | },
495 | "@babel/plugin-syntax-top-level-await": {
496 | "version": "7.8.3",
497 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz",
498 | "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==",
499 | "dev": true,
500 | "requires": {
501 | "@babel/helper-plugin-utils": "^7.8.3"
502 | }
503 | },
504 | "@babel/plugin-transform-arrow-functions": {
505 | "version": "7.8.3",
506 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz",
507 | "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==",
508 | "dev": true,
509 | "requires": {
510 | "@babel/helper-plugin-utils": "^7.8.3"
511 | }
512 | },
513 | "@babel/plugin-transform-async-to-generator": {
514 | "version": "7.8.3",
515 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz",
516 | "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==",
517 | "dev": true,
518 | "requires": {
519 | "@babel/helper-module-imports": "^7.8.3",
520 | "@babel/helper-plugin-utils": "^7.8.3",
521 | "@babel/helper-remap-async-to-generator": "^7.8.3"
522 | }
523 | },
524 | "@babel/plugin-transform-block-scoped-functions": {
525 | "version": "7.8.3",
526 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz",
527 | "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==",
528 | "dev": true,
529 | "requires": {
530 | "@babel/helper-plugin-utils": "^7.8.3"
531 | }
532 | },
533 | "@babel/plugin-transform-block-scoping": {
534 | "version": "7.8.3",
535 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz",
536 | "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==",
537 | "dev": true,
538 | "requires": {
539 | "@babel/helper-plugin-utils": "^7.8.3",
540 | "lodash": "^4.17.13"
541 | }
542 | },
543 | "@babel/plugin-transform-classes": {
544 | "version": "7.8.6",
545 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz",
546 | "integrity": "sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg==",
547 | "dev": true,
548 | "requires": {
549 | "@babel/helper-annotate-as-pure": "^7.8.3",
550 | "@babel/helper-define-map": "^7.8.3",
551 | "@babel/helper-function-name": "^7.8.3",
552 | "@babel/helper-optimise-call-expression": "^7.8.3",
553 | "@babel/helper-plugin-utils": "^7.8.3",
554 | "@babel/helper-replace-supers": "^7.8.6",
555 | "@babel/helper-split-export-declaration": "^7.8.3",
556 | "globals": "^11.1.0"
557 | }
558 | },
559 | "@babel/plugin-transform-computed-properties": {
560 | "version": "7.8.3",
561 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz",
562 | "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==",
563 | "dev": true,
564 | "requires": {
565 | "@babel/helper-plugin-utils": "^7.8.3"
566 | }
567 | },
568 | "@babel/plugin-transform-destructuring": {
569 | "version": "7.8.3",
570 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz",
571 | "integrity": "sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ==",
572 | "dev": true,
573 | "requires": {
574 | "@babel/helper-plugin-utils": "^7.8.3"
575 | }
576 | },
577 | "@babel/plugin-transform-dotall-regex": {
578 | "version": "7.8.3",
579 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz",
580 | "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==",
581 | "dev": true,
582 | "requires": {
583 | "@babel/helper-create-regexp-features-plugin": "^7.8.3",
584 | "@babel/helper-plugin-utils": "^7.8.3"
585 | }
586 | },
587 | "@babel/plugin-transform-duplicate-keys": {
588 | "version": "7.8.3",
589 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz",
590 | "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==",
591 | "dev": true,
592 | "requires": {
593 | "@babel/helper-plugin-utils": "^7.8.3"
594 | }
595 | },
596 | "@babel/plugin-transform-exponentiation-operator": {
597 | "version": "7.8.3",
598 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz",
599 | "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==",
600 | "dev": true,
601 | "requires": {
602 | "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3",
603 | "@babel/helper-plugin-utils": "^7.8.3"
604 | }
605 | },
606 | "@babel/plugin-transform-for-of": {
607 | "version": "7.8.6",
608 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz",
609 | "integrity": "sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw==",
610 | "dev": true,
611 | "requires": {
612 | "@babel/helper-plugin-utils": "^7.8.3"
613 | }
614 | },
615 | "@babel/plugin-transform-function-name": {
616 | "version": "7.8.3",
617 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz",
618 | "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==",
619 | "dev": true,
620 | "requires": {
621 | "@babel/helper-function-name": "^7.8.3",
622 | "@babel/helper-plugin-utils": "^7.8.3"
623 | }
624 | },
625 | "@babel/plugin-transform-literals": {
626 | "version": "7.8.3",
627 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz",
628 | "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==",
629 | "dev": true,
630 | "requires": {
631 | "@babel/helper-plugin-utils": "^7.8.3"
632 | }
633 | },
634 | "@babel/plugin-transform-member-expression-literals": {
635 | "version": "7.8.3",
636 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz",
637 | "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==",
638 | "dev": true,
639 | "requires": {
640 | "@babel/helper-plugin-utils": "^7.8.3"
641 | }
642 | },
643 | "@babel/plugin-transform-modules-amd": {
644 | "version": "7.8.3",
645 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz",
646 | "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==",
647 | "dev": true,
648 | "requires": {
649 | "@babel/helper-module-transforms": "^7.8.3",
650 | "@babel/helper-plugin-utils": "^7.8.3",
651 | "babel-plugin-dynamic-import-node": "^2.3.0"
652 | }
653 | },
654 | "@babel/plugin-transform-modules-commonjs": {
655 | "version": "7.8.3",
656 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz",
657 | "integrity": "sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg==",
658 | "dev": true,
659 | "requires": {
660 | "@babel/helper-module-transforms": "^7.8.3",
661 | "@babel/helper-plugin-utils": "^7.8.3",
662 | "@babel/helper-simple-access": "^7.8.3",
663 | "babel-plugin-dynamic-import-node": "^2.3.0"
664 | }
665 | },
666 | "@babel/plugin-transform-modules-systemjs": {
667 | "version": "7.8.3",
668 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz",
669 | "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==",
670 | "dev": true,
671 | "requires": {
672 | "@babel/helper-hoist-variables": "^7.8.3",
673 | "@babel/helper-module-transforms": "^7.8.3",
674 | "@babel/helper-plugin-utils": "^7.8.3",
675 | "babel-plugin-dynamic-import-node": "^2.3.0"
676 | }
677 | },
678 | "@babel/plugin-transform-modules-umd": {
679 | "version": "7.8.3",
680 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz",
681 | "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==",
682 | "dev": true,
683 | "requires": {
684 | "@babel/helper-module-transforms": "^7.8.3",
685 | "@babel/helper-plugin-utils": "^7.8.3"
686 | }
687 | },
688 | "@babel/plugin-transform-named-capturing-groups-regex": {
689 | "version": "7.8.3",
690 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz",
691 | "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==",
692 | "dev": true,
693 | "requires": {
694 | "@babel/helper-create-regexp-features-plugin": "^7.8.3"
695 | }
696 | },
697 | "@babel/plugin-transform-new-target": {
698 | "version": "7.8.3",
699 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz",
700 | "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==",
701 | "dev": true,
702 | "requires": {
703 | "@babel/helper-plugin-utils": "^7.8.3"
704 | }
705 | },
706 | "@babel/plugin-transform-object-super": {
707 | "version": "7.8.3",
708 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz",
709 | "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==",
710 | "dev": true,
711 | "requires": {
712 | "@babel/helper-plugin-utils": "^7.8.3",
713 | "@babel/helper-replace-supers": "^7.8.3"
714 | }
715 | },
716 | "@babel/plugin-transform-parameters": {
717 | "version": "7.8.7",
718 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.7.tgz",
719 | "integrity": "sha512-brYWaEPTRimOctz2NDA3jnBbDi7SVN2T4wYuu0aqSzxC3nozFZngGaw29CJ9ZPweB7k+iFmZuoG3IVPIcXmD2g==",
720 | "dev": true,
721 | "requires": {
722 | "@babel/helper-call-delegate": "^7.8.7",
723 | "@babel/helper-get-function-arity": "^7.8.3",
724 | "@babel/helper-plugin-utils": "^7.8.3"
725 | }
726 | },
727 | "@babel/plugin-transform-property-literals": {
728 | "version": "7.8.3",
729 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz",
730 | "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==",
731 | "dev": true,
732 | "requires": {
733 | "@babel/helper-plugin-utils": "^7.8.3"
734 | }
735 | },
736 | "@babel/plugin-transform-regenerator": {
737 | "version": "7.8.7",
738 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz",
739 | "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==",
740 | "dev": true,
741 | "requires": {
742 | "regenerator-transform": "^0.14.2"
743 | }
744 | },
745 | "@babel/plugin-transform-reserved-words": {
746 | "version": "7.8.3",
747 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz",
748 | "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==",
749 | "dev": true,
750 | "requires": {
751 | "@babel/helper-plugin-utils": "^7.8.3"
752 | }
753 | },
754 | "@babel/plugin-transform-shorthand-properties": {
755 | "version": "7.8.3",
756 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz",
757 | "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==",
758 | "dev": true,
759 | "requires": {
760 | "@babel/helper-plugin-utils": "^7.8.3"
761 | }
762 | },
763 | "@babel/plugin-transform-spread": {
764 | "version": "7.8.3",
765 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz",
766 | "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==",
767 | "dev": true,
768 | "requires": {
769 | "@babel/helper-plugin-utils": "^7.8.3"
770 | }
771 | },
772 | "@babel/plugin-transform-sticky-regex": {
773 | "version": "7.8.3",
774 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz",
775 | "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==",
776 | "dev": true,
777 | "requires": {
778 | "@babel/helper-plugin-utils": "^7.8.3",
779 | "@babel/helper-regex": "^7.8.3"
780 | }
781 | },
782 | "@babel/plugin-transform-template-literals": {
783 | "version": "7.8.3",
784 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz",
785 | "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==",
786 | "dev": true,
787 | "requires": {
788 | "@babel/helper-annotate-as-pure": "^7.8.3",
789 | "@babel/helper-plugin-utils": "^7.8.3"
790 | }
791 | },
792 | "@babel/plugin-transform-typeof-symbol": {
793 | "version": "7.8.4",
794 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz",
795 | "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==",
796 | "dev": true,
797 | "requires": {
798 | "@babel/helper-plugin-utils": "^7.8.3"
799 | }
800 | },
801 | "@babel/plugin-transform-unicode-regex": {
802 | "version": "7.8.3",
803 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz",
804 | "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==",
805 | "dev": true,
806 | "requires": {
807 | "@babel/helper-create-regexp-features-plugin": "^7.8.3",
808 | "@babel/helper-plugin-utils": "^7.8.3"
809 | }
810 | },
811 | "@babel/preset-env": {
812 | "version": "7.8.7",
813 | "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.7.tgz",
814 | "integrity": "sha512-BYftCVOdAYJk5ASsznKAUl53EMhfBbr8CJ1X+AJLfGPscQkwJFiaV/Wn9DPH/7fzm2v6iRYJKYHSqyynTGw0nw==",
815 | "dev": true,
816 | "requires": {
817 | "@babel/compat-data": "^7.8.6",
818 | "@babel/helper-compilation-targets": "^7.8.7",
819 | "@babel/helper-module-imports": "^7.8.3",
820 | "@babel/helper-plugin-utils": "^7.8.3",
821 | "@babel/plugin-proposal-async-generator-functions": "^7.8.3",
822 | "@babel/plugin-proposal-dynamic-import": "^7.8.3",
823 | "@babel/plugin-proposal-json-strings": "^7.8.3",
824 | "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3",
825 | "@babel/plugin-proposal-object-rest-spread": "^7.8.3",
826 | "@babel/plugin-proposal-optional-catch-binding": "^7.8.3",
827 | "@babel/plugin-proposal-optional-chaining": "^7.8.3",
828 | "@babel/plugin-proposal-unicode-property-regex": "^7.8.3",
829 | "@babel/plugin-syntax-async-generators": "^7.8.0",
830 | "@babel/plugin-syntax-dynamic-import": "^7.8.0",
831 | "@babel/plugin-syntax-json-strings": "^7.8.0",
832 | "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
833 | "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
834 | "@babel/plugin-syntax-optional-catch-binding": "^7.8.0",
835 | "@babel/plugin-syntax-optional-chaining": "^7.8.0",
836 | "@babel/plugin-syntax-top-level-await": "^7.8.3",
837 | "@babel/plugin-transform-arrow-functions": "^7.8.3",
838 | "@babel/plugin-transform-async-to-generator": "^7.8.3",
839 | "@babel/plugin-transform-block-scoped-functions": "^7.8.3",
840 | "@babel/plugin-transform-block-scoping": "^7.8.3",
841 | "@babel/plugin-transform-classes": "^7.8.6",
842 | "@babel/plugin-transform-computed-properties": "^7.8.3",
843 | "@babel/plugin-transform-destructuring": "^7.8.3",
844 | "@babel/plugin-transform-dotall-regex": "^7.8.3",
845 | "@babel/plugin-transform-duplicate-keys": "^7.8.3",
846 | "@babel/plugin-transform-exponentiation-operator": "^7.8.3",
847 | "@babel/plugin-transform-for-of": "^7.8.6",
848 | "@babel/plugin-transform-function-name": "^7.8.3",
849 | "@babel/plugin-transform-literals": "^7.8.3",
850 | "@babel/plugin-transform-member-expression-literals": "^7.8.3",
851 | "@babel/plugin-transform-modules-amd": "^7.8.3",
852 | "@babel/plugin-transform-modules-commonjs": "^7.8.3",
853 | "@babel/plugin-transform-modules-systemjs": "^7.8.3",
854 | "@babel/plugin-transform-modules-umd": "^7.8.3",
855 | "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3",
856 | "@babel/plugin-transform-new-target": "^7.8.3",
857 | "@babel/plugin-transform-object-super": "^7.8.3",
858 | "@babel/plugin-transform-parameters": "^7.8.7",
859 | "@babel/plugin-transform-property-literals": "^7.8.3",
860 | "@babel/plugin-transform-regenerator": "^7.8.7",
861 | "@babel/plugin-transform-reserved-words": "^7.8.3",
862 | "@babel/plugin-transform-shorthand-properties": "^7.8.3",
863 | "@babel/plugin-transform-spread": "^7.8.3",
864 | "@babel/plugin-transform-sticky-regex": "^7.8.3",
865 | "@babel/plugin-transform-template-literals": "^7.8.3",
866 | "@babel/plugin-transform-typeof-symbol": "^7.8.4",
867 | "@babel/plugin-transform-unicode-regex": "^7.8.3",
868 | "@babel/types": "^7.8.7",
869 | "browserslist": "^4.8.5",
870 | "core-js-compat": "^3.6.2",
871 | "invariant": "^2.2.2",
872 | "levenary": "^1.1.1",
873 | "semver": "^5.5.0"
874 | },
875 | "dependencies": {
876 | "semver": {
877 | "version": "5.7.1",
878 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
879 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
880 | "dev": true
881 | }
882 | }
883 | },
884 | "@babel/runtime": {
885 | "version": "7.8.7",
886 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.7.tgz",
887 | "integrity": "sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg==",
888 | "dev": true,
889 | "requires": {
890 | "regenerator-runtime": "^0.13.4"
891 | }
892 | },
893 | "@babel/template": {
894 | "version": "7.8.6",
895 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
896 | "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
897 | "dev": true,
898 | "requires": {
899 | "@babel/code-frame": "^7.8.3",
900 | "@babel/parser": "^7.8.6",
901 | "@babel/types": "^7.8.6"
902 | }
903 | },
904 | "@babel/traverse": {
905 | "version": "7.8.6",
906 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz",
907 | "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==",
908 | "dev": true,
909 | "requires": {
910 | "@babel/code-frame": "^7.8.3",
911 | "@babel/generator": "^7.8.6",
912 | "@babel/helper-function-name": "^7.8.3",
913 | "@babel/helper-split-export-declaration": "^7.8.3",
914 | "@babel/parser": "^7.8.6",
915 | "@babel/types": "^7.8.6",
916 | "debug": "^4.1.0",
917 | "globals": "^11.1.0",
918 | "lodash": "^4.17.13"
919 | }
920 | },
921 | "@babel/types": {
922 | "version": "7.8.7",
923 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz",
924 | "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==",
925 | "dev": true,
926 | "requires": {
927 | "esutils": "^2.0.2",
928 | "lodash": "^4.17.13",
929 | "to-fast-properties": "^2.0.0"
930 | }
931 | },
932 | "@types/estree": {
933 | "version": "0.0.42",
934 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.42.tgz",
935 | "integrity": "sha512-K1DPVvnBCPxzD+G51/cxVIoc2X8uUVl1zpJeE6iKcgHMj4+tbat5Xu4TjV7v2QSDbIeAfLi2hIk+u2+s0MlpUQ==",
936 | "dev": true
937 | },
938 | "@types/node": {
939 | "version": "13.7.7",
940 | "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.7.tgz",
941 | "integrity": "sha512-Uo4chgKbnPNlxQwoFmYIwctkQVkMMmsAoGGU4JKwLuvBefF0pCq4FybNSnfkfRCpC7ZW7kttcC/TrRtAJsvGtg==",
942 | "dev": true
943 | },
944 | "@types/resolve": {
945 | "version": "0.0.8",
946 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
947 | "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==",
948 | "dev": true,
949 | "requires": {
950 | "@types/node": "*"
951 | }
952 | },
953 | "acorn": {
954 | "version": "7.1.1",
955 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz",
956 | "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==",
957 | "dev": true
958 | },
959 | "ansi-styles": {
960 | "version": "3.2.1",
961 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
962 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
963 | "dev": true,
964 | "requires": {
965 | "color-convert": "^1.9.0"
966 | }
967 | },
968 | "babel-plugin-dynamic-import-node": {
969 | "version": "2.3.0",
970 | "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
971 | "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
972 | "dev": true,
973 | "requires": {
974 | "object.assign": "^4.1.0"
975 | }
976 | },
977 | "browserslist": {
978 | "version": "4.9.1",
979 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.1.tgz",
980 | "integrity": "sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw==",
981 | "dev": true,
982 | "requires": {
983 | "caniuse-lite": "^1.0.30001030",
984 | "electron-to-chromium": "^1.3.363",
985 | "node-releases": "^1.1.50"
986 | }
987 | },
988 | "buffer-from": {
989 | "version": "1.1.1",
990 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
991 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
992 | "dev": true
993 | },
994 | "builtin-modules": {
995 | "version": "3.1.0",
996 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
997 | "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==",
998 | "dev": true
999 | },
1000 | "caniuse-lite": {
1001 | "version": "1.0.30001032",
1002 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001032.tgz",
1003 | "integrity": "sha512-8joOm7BwcpEN4BfVHtfh0hBXSAPVYk+eUIcNntGtMkUWy/6AKRCDZINCLe3kB1vHhT2vBxBF85Hh9VlPXi/qjA==",
1004 | "dev": true
1005 | },
1006 | "chalk": {
1007 | "version": "2.4.2",
1008 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1009 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1010 | "dev": true,
1011 | "requires": {
1012 | "ansi-styles": "^3.2.1",
1013 | "escape-string-regexp": "^1.0.5",
1014 | "supports-color": "^5.3.0"
1015 | }
1016 | },
1017 | "color-convert": {
1018 | "version": "1.9.3",
1019 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1020 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1021 | "dev": true,
1022 | "requires": {
1023 | "color-name": "1.1.3"
1024 | }
1025 | },
1026 | "color-name": {
1027 | "version": "1.1.3",
1028 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1029 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
1030 | "dev": true
1031 | },
1032 | "commander": {
1033 | "version": "2.20.3",
1034 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
1035 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
1036 | "dev": true
1037 | },
1038 | "commondir": {
1039 | "version": "1.0.1",
1040 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
1041 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
1042 | "dev": true
1043 | },
1044 | "convert-source-map": {
1045 | "version": "1.7.0",
1046 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
1047 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
1048 | "dev": true,
1049 | "requires": {
1050 | "safe-buffer": "~5.1.1"
1051 | }
1052 | },
1053 | "core-js-compat": {
1054 | "version": "3.6.4",
1055 | "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz",
1056 | "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==",
1057 | "dev": true,
1058 | "requires": {
1059 | "browserslist": "^4.8.3",
1060 | "semver": "7.0.0"
1061 | },
1062 | "dependencies": {
1063 | "semver": {
1064 | "version": "7.0.0",
1065 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
1066 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
1067 | "dev": true
1068 | }
1069 | }
1070 | },
1071 | "debug": {
1072 | "version": "4.1.1",
1073 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
1074 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
1075 | "dev": true,
1076 | "requires": {
1077 | "ms": "^2.1.1"
1078 | }
1079 | },
1080 | "define-properties": {
1081 | "version": "1.1.3",
1082 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
1083 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
1084 | "dev": true,
1085 | "requires": {
1086 | "object-keys": "^1.0.12"
1087 | }
1088 | },
1089 | "electron-to-chromium": {
1090 | "version": "1.3.369",
1091 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.369.tgz",
1092 | "integrity": "sha512-6laJEDffEppIKT01TbyQtNhbdvF8ZfJWuK4L53sQCSiUHv0wSsJOFPvV0E63PZEQUzGcS2ZRSJlM5F4Ol9ffHg==",
1093 | "dev": true
1094 | },
1095 | "escape-string-regexp": {
1096 | "version": "1.0.5",
1097 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1098 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1099 | "dev": true
1100 | },
1101 | "estree-walker": {
1102 | "version": "0.6.1",
1103 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
1104 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
1105 | "dev": true
1106 | },
1107 | "esutils": {
1108 | "version": "2.0.3",
1109 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
1110 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
1111 | "dev": true
1112 | },
1113 | "find-cache-dir": {
1114 | "version": "3.3.0",
1115 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.0.tgz",
1116 | "integrity": "sha512-PtXtQb7IrD8O+h6Cq1dbpJH5NzD8+9keN1zZ0YlpDzl1PwXEJEBj6u1Xa92t1Hwluoozd9TNKul5Hi2iqpsWwg==",
1117 | "dev": true,
1118 | "requires": {
1119 | "commondir": "^1.0.1",
1120 | "make-dir": "^3.0.2",
1121 | "pkg-dir": "^4.1.0"
1122 | }
1123 | },
1124 | "find-up": {
1125 | "version": "4.1.0",
1126 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
1127 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
1128 | "dev": true,
1129 | "requires": {
1130 | "locate-path": "^5.0.0",
1131 | "path-exists": "^4.0.0"
1132 | }
1133 | },
1134 | "fs-extra": {
1135 | "version": "8.1.0",
1136 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
1137 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
1138 | "dev": true,
1139 | "requires": {
1140 | "graceful-fs": "^4.2.0",
1141 | "jsonfile": "^4.0.0",
1142 | "universalify": "^0.1.0"
1143 | }
1144 | },
1145 | "function-bind": {
1146 | "version": "1.1.1",
1147 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1148 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1149 | "dev": true
1150 | },
1151 | "gensync": {
1152 | "version": "1.0.0-beta.1",
1153 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz",
1154 | "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==",
1155 | "dev": true
1156 | },
1157 | "globals": {
1158 | "version": "11.12.0",
1159 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1160 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1161 | "dev": true
1162 | },
1163 | "graceful-fs": {
1164 | "version": "4.2.3",
1165 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
1166 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
1167 | "dev": true
1168 | },
1169 | "has-flag": {
1170 | "version": "3.0.0",
1171 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1172 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1173 | "dev": true
1174 | },
1175 | "has-symbols": {
1176 | "version": "1.0.1",
1177 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
1178 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
1179 | "dev": true
1180 | },
1181 | "invariant": {
1182 | "version": "2.2.4",
1183 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
1184 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
1185 | "dev": true,
1186 | "requires": {
1187 | "loose-envify": "^1.0.0"
1188 | }
1189 | },
1190 | "is-module": {
1191 | "version": "1.0.0",
1192 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
1193 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
1194 | "dev": true
1195 | },
1196 | "is-reference": {
1197 | "version": "1.1.4",
1198 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz",
1199 | "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==",
1200 | "dev": true,
1201 | "requires": {
1202 | "@types/estree": "0.0.39"
1203 | },
1204 | "dependencies": {
1205 | "@types/estree": {
1206 | "version": "0.0.39",
1207 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
1208 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
1209 | "dev": true
1210 | }
1211 | }
1212 | },
1213 | "jest-worker": {
1214 | "version": "26.3.0",
1215 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz",
1216 | "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==",
1217 | "dev": true,
1218 | "requires": {
1219 | "@types/node": "*",
1220 | "merge-stream": "^2.0.0",
1221 | "supports-color": "^7.0.0"
1222 | },
1223 | "dependencies": {
1224 | "has-flag": {
1225 | "version": "4.0.0",
1226 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1227 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1228 | "dev": true
1229 | },
1230 | "supports-color": {
1231 | "version": "7.2.0",
1232 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1233 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1234 | "dev": true,
1235 | "requires": {
1236 | "has-flag": "^4.0.0"
1237 | }
1238 | }
1239 | }
1240 | },
1241 | "js-tokens": {
1242 | "version": "4.0.0",
1243 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1244 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1245 | "dev": true
1246 | },
1247 | "jsesc": {
1248 | "version": "2.5.2",
1249 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
1250 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
1251 | "dev": true
1252 | },
1253 | "json5": {
1254 | "version": "2.1.1",
1255 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
1256 | "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
1257 | "dev": true,
1258 | "requires": {
1259 | "minimist": "^1.2.0"
1260 | }
1261 | },
1262 | "jsonfile": {
1263 | "version": "4.0.0",
1264 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
1265 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
1266 | "dev": true,
1267 | "requires": {
1268 | "graceful-fs": "^4.1.6"
1269 | }
1270 | },
1271 | "leven": {
1272 | "version": "3.1.0",
1273 | "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
1274 | "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
1275 | "dev": true
1276 | },
1277 | "levenary": {
1278 | "version": "1.1.1",
1279 | "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz",
1280 | "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==",
1281 | "dev": true,
1282 | "requires": {
1283 | "leven": "^3.1.0"
1284 | }
1285 | },
1286 | "locate-path": {
1287 | "version": "5.0.0",
1288 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
1289 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
1290 | "dev": true,
1291 | "requires": {
1292 | "p-locate": "^4.1.0"
1293 | }
1294 | },
1295 | "lodash": {
1296 | "version": "4.17.20",
1297 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
1298 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
1299 | "dev": true
1300 | },
1301 | "loose-envify": {
1302 | "version": "1.4.0",
1303 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1304 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1305 | "dev": true,
1306 | "requires": {
1307 | "js-tokens": "^3.0.0 || ^4.0.0"
1308 | }
1309 | },
1310 | "magic-string": {
1311 | "version": "0.25.6",
1312 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.6.tgz",
1313 | "integrity": "sha512-3a5LOMSGoCTH5rbqobC2HuDNRtE2glHZ8J7pK+QZYppyWA36yuNpsX994rIY2nCuyP7CZYy7lQq/X2jygiZ89g==",
1314 | "dev": true,
1315 | "requires": {
1316 | "sourcemap-codec": "^1.4.4"
1317 | }
1318 | },
1319 | "make-dir": {
1320 | "version": "3.0.2",
1321 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz",
1322 | "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==",
1323 | "dev": true,
1324 | "requires": {
1325 | "semver": "^6.0.0"
1326 | }
1327 | },
1328 | "merge-stream": {
1329 | "version": "2.0.0",
1330 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
1331 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
1332 | "dev": true
1333 | },
1334 | "minimist": {
1335 | "version": "1.2.5",
1336 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
1337 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
1338 | "dev": true
1339 | },
1340 | "ms": {
1341 | "version": "2.1.2",
1342 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1343 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1344 | "dev": true
1345 | },
1346 | "node-releases": {
1347 | "version": "1.1.50",
1348 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.50.tgz",
1349 | "integrity": "sha512-lgAmPv9eYZ0bGwUYAKlr8MG6K4CvWliWqnkcT2P8mMAgVrH3lqfBPorFlxiG1pHQnqmavJZ9vbMXUTNyMLbrgQ==",
1350 | "dev": true,
1351 | "requires": {
1352 | "semver": "^6.3.0"
1353 | }
1354 | },
1355 | "object-keys": {
1356 | "version": "1.1.1",
1357 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
1358 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
1359 | "dev": true
1360 | },
1361 | "object.assign": {
1362 | "version": "4.1.0",
1363 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
1364 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
1365 | "dev": true,
1366 | "requires": {
1367 | "define-properties": "^1.1.2",
1368 | "function-bind": "^1.1.1",
1369 | "has-symbols": "^1.0.0",
1370 | "object-keys": "^1.0.11"
1371 | }
1372 | },
1373 | "p-limit": {
1374 | "version": "2.2.2",
1375 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
1376 | "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
1377 | "dev": true,
1378 | "requires": {
1379 | "p-try": "^2.0.0"
1380 | }
1381 | },
1382 | "p-locate": {
1383 | "version": "4.1.0",
1384 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
1385 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
1386 | "dev": true,
1387 | "requires": {
1388 | "p-limit": "^2.2.0"
1389 | }
1390 | },
1391 | "p-try": {
1392 | "version": "2.2.0",
1393 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
1394 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
1395 | "dev": true
1396 | },
1397 | "path-exists": {
1398 | "version": "4.0.0",
1399 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
1400 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
1401 | "dev": true
1402 | },
1403 | "path-parse": {
1404 | "version": "1.0.6",
1405 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
1406 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
1407 | "dev": true
1408 | },
1409 | "pkg-dir": {
1410 | "version": "4.2.0",
1411 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
1412 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
1413 | "dev": true,
1414 | "requires": {
1415 | "find-up": "^4.0.0"
1416 | }
1417 | },
1418 | "private": {
1419 | "version": "0.1.8",
1420 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
1421 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
1422 | "dev": true
1423 | },
1424 | "randombytes": {
1425 | "version": "2.1.0",
1426 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
1427 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
1428 | "dev": true,
1429 | "requires": {
1430 | "safe-buffer": "^5.1.0"
1431 | }
1432 | },
1433 | "regenerate": {
1434 | "version": "1.4.0",
1435 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
1436 | "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
1437 | "dev": true
1438 | },
1439 | "regenerate-unicode-properties": {
1440 | "version": "8.1.0",
1441 | "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz",
1442 | "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==",
1443 | "dev": true,
1444 | "requires": {
1445 | "regenerate": "^1.4.0"
1446 | }
1447 | },
1448 | "regenerator-runtime": {
1449 | "version": "0.13.4",
1450 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz",
1451 | "integrity": "sha512-plpwicqEzfEyTQohIKktWigcLzmNStMGwbOUbykx51/29Z3JOGYldaaNGK7ngNXV+UcoqvIMmloZ48Sr74sd+g==",
1452 | "dev": true
1453 | },
1454 | "regenerator-transform": {
1455 | "version": "0.14.2",
1456 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.2.tgz",
1457 | "integrity": "sha512-V4+lGplCM/ikqi5/mkkpJ06e9Bujq1NFmNLvsCs56zg3ZbzrnUzAtizZ24TXxtRX/W2jcdScwQCnbL0CICTFkQ==",
1458 | "dev": true,
1459 | "requires": {
1460 | "@babel/runtime": "^7.8.4",
1461 | "private": "^0.1.8"
1462 | }
1463 | },
1464 | "regexpu-core": {
1465 | "version": "4.6.0",
1466 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz",
1467 | "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==",
1468 | "dev": true,
1469 | "requires": {
1470 | "regenerate": "^1.4.0",
1471 | "regenerate-unicode-properties": "^8.1.0",
1472 | "regjsgen": "^0.5.0",
1473 | "regjsparser": "^0.6.0",
1474 | "unicode-match-property-ecmascript": "^1.0.4",
1475 | "unicode-match-property-value-ecmascript": "^1.1.0"
1476 | }
1477 | },
1478 | "regjsgen": {
1479 | "version": "0.5.1",
1480 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz",
1481 | "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==",
1482 | "dev": true
1483 | },
1484 | "regjsparser": {
1485 | "version": "0.6.3",
1486 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.3.tgz",
1487 | "integrity": "sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA==",
1488 | "dev": true,
1489 | "requires": {
1490 | "jsesc": "~0.5.0"
1491 | },
1492 | "dependencies": {
1493 | "jsesc": {
1494 | "version": "0.5.0",
1495 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
1496 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
1497 | "dev": true
1498 | }
1499 | }
1500 | },
1501 | "resolve": {
1502 | "version": "1.15.1",
1503 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
1504 | "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
1505 | "dev": true,
1506 | "requires": {
1507 | "path-parse": "^1.0.6"
1508 | }
1509 | },
1510 | "rollup": {
1511 | "version": "1.32.0",
1512 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.0.tgz",
1513 | "integrity": "sha512-ab2tF5pdDqm2zuI8j02ceyrJSScl9V2C24FgWQ1v1kTFTu1UrG5H0hpP++mDZlEFyZX4k0chtGEHU2i+pAzBgA==",
1514 | "dev": true,
1515 | "requires": {
1516 | "@types/estree": "*",
1517 | "@types/node": "*",
1518 | "acorn": "^7.1.0"
1519 | }
1520 | },
1521 | "rollup-plugin-babel": {
1522 | "version": "4.3.3",
1523 | "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.3.3.tgz",
1524 | "integrity": "sha512-tKzWOCmIJD/6aKNz0H1GMM+lW1q9KyFubbWzGiOG540zxPPifnEAHTZwjo0g991Y+DyOZcLqBgqOdqazYE5fkw==",
1525 | "dev": true,
1526 | "requires": {
1527 | "@babel/helper-module-imports": "^7.0.0",
1528 | "rollup-pluginutils": "^2.8.1"
1529 | }
1530 | },
1531 | "rollup-plugin-commonjs": {
1532 | "version": "10.1.0",
1533 | "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz",
1534 | "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==",
1535 | "dev": true,
1536 | "requires": {
1537 | "estree-walker": "^0.6.1",
1538 | "is-reference": "^1.1.2",
1539 | "magic-string": "^0.25.2",
1540 | "resolve": "^1.11.0",
1541 | "rollup-pluginutils": "^2.8.1"
1542 | }
1543 | },
1544 | "rollup-plugin-node-resolve": {
1545 | "version": "5.2.0",
1546 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz",
1547 | "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==",
1548 | "dev": true,
1549 | "requires": {
1550 | "@types/resolve": "0.0.8",
1551 | "builtin-modules": "^3.1.0",
1552 | "is-module": "^1.0.0",
1553 | "resolve": "^1.11.1",
1554 | "rollup-pluginutils": "^2.8.1"
1555 | }
1556 | },
1557 | "rollup-plugin-terser": {
1558 | "version": "7.0.2",
1559 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
1560 | "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
1561 | "dev": true,
1562 | "requires": {
1563 | "@babel/code-frame": "^7.10.4",
1564 | "jest-worker": "^26.2.1",
1565 | "serialize-javascript": "^4.0.0",
1566 | "terser": "^5.0.0"
1567 | },
1568 | "dependencies": {
1569 | "@babel/code-frame": {
1570 | "version": "7.10.4",
1571 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
1572 | "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
1573 | "dev": true,
1574 | "requires": {
1575 | "@babel/highlight": "^7.10.4"
1576 | }
1577 | },
1578 | "@babel/highlight": {
1579 | "version": "7.10.4",
1580 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
1581 | "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
1582 | "dev": true,
1583 | "requires": {
1584 | "@babel/helper-validator-identifier": "^7.10.4",
1585 | "chalk": "^2.0.0",
1586 | "js-tokens": "^4.0.0"
1587 | }
1588 | }
1589 | }
1590 | },
1591 | "rollup-plugin-typescript2": {
1592 | "version": "0.26.0",
1593 | "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.26.0.tgz",
1594 | "integrity": "sha512-lUK7XZVG77tu8dmv1L/0LZFlavED/5Yo6e4iMMl6fdox/yKdj4IFRRPPJEXNdmEaT1nDQQeCi7b5IwKHffMNeg==",
1595 | "dev": true,
1596 | "requires": {
1597 | "find-cache-dir": "^3.2.0",
1598 | "fs-extra": "8.1.0",
1599 | "resolve": "1.15.1",
1600 | "rollup-pluginutils": "2.8.2",
1601 | "tslib": "1.10.0"
1602 | }
1603 | },
1604 | "rollup-pluginutils": {
1605 | "version": "2.8.2",
1606 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
1607 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
1608 | "dev": true,
1609 | "requires": {
1610 | "estree-walker": "^0.6.1"
1611 | }
1612 | },
1613 | "safe-buffer": {
1614 | "version": "5.1.2",
1615 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1616 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1617 | "dev": true
1618 | },
1619 | "semver": {
1620 | "version": "6.3.0",
1621 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1622 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1623 | "dev": true
1624 | },
1625 | "serialize-javascript": {
1626 | "version": "4.0.0",
1627 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
1628 | "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
1629 | "dev": true,
1630 | "requires": {
1631 | "randombytes": "^2.1.0"
1632 | }
1633 | },
1634 | "source-map": {
1635 | "version": "0.7.3",
1636 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
1637 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
1638 | "dev": true
1639 | },
1640 | "source-map-support": {
1641 | "version": "0.5.19",
1642 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
1643 | "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
1644 | "dev": true,
1645 | "requires": {
1646 | "buffer-from": "^1.0.0",
1647 | "source-map": "^0.6.0"
1648 | },
1649 | "dependencies": {
1650 | "source-map": {
1651 | "version": "0.6.1",
1652 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1653 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1654 | "dev": true
1655 | }
1656 | }
1657 | },
1658 | "sourcemap-codec": {
1659 | "version": "1.4.8",
1660 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
1661 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
1662 | "dev": true
1663 | },
1664 | "supports-color": {
1665 | "version": "5.5.0",
1666 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1667 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1668 | "dev": true,
1669 | "requires": {
1670 | "has-flag": "^3.0.0"
1671 | }
1672 | },
1673 | "terser": {
1674 | "version": "5.3.3",
1675 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.3.tgz",
1676 | "integrity": "sha512-vRQDIlD+2Pg8YMwVK9kMM3yGylG95EIwzBai1Bw7Ot4OBfn3VP1TZn3EWx4ep2jERN/AmnVaTiGuelZSN7ds/A==",
1677 | "dev": true,
1678 | "requires": {
1679 | "commander": "^2.20.0",
1680 | "source-map": "~0.7.2",
1681 | "source-map-support": "~0.5.19"
1682 | }
1683 | },
1684 | "to-fast-properties": {
1685 | "version": "2.0.0",
1686 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1687 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
1688 | "dev": true
1689 | },
1690 | "tslib": {
1691 | "version": "1.10.0",
1692 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
1693 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
1694 | "dev": true
1695 | },
1696 | "typescript": {
1697 | "version": "3.8.3",
1698 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz",
1699 | "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==",
1700 | "dev": true
1701 | },
1702 | "unicode-canonical-property-names-ecmascript": {
1703 | "version": "1.0.4",
1704 | "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
1705 | "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
1706 | "dev": true
1707 | },
1708 | "unicode-match-property-ecmascript": {
1709 | "version": "1.0.4",
1710 | "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
1711 | "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
1712 | "dev": true,
1713 | "requires": {
1714 | "unicode-canonical-property-names-ecmascript": "^1.0.4",
1715 | "unicode-property-aliases-ecmascript": "^1.0.4"
1716 | }
1717 | },
1718 | "unicode-match-property-value-ecmascript": {
1719 | "version": "1.1.0",
1720 | "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz",
1721 | "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==",
1722 | "dev": true
1723 | },
1724 | "unicode-property-aliases-ecmascript": {
1725 | "version": "1.0.5",
1726 | "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz",
1727 | "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==",
1728 | "dev": true
1729 | },
1730 | "universalify": {
1731 | "version": "0.1.2",
1732 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
1733 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
1734 | "dev": true
1735 | }
1736 | }
1737 | }
1738 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "paymaya-js-sdk",
3 | "version": "2.0.1",
4 | "description": "",
5 | "main": "dist/bundle.js",
6 | "types": "dist/index.d.ts",
7 | "scripts": {
8 | "build": "rollup -c",
9 | "watch": "rollup -cw",
10 | "prepublishOnly": "npm run build"
11 | },
12 | "devDependencies": {
13 | "@babel/core": "^7.8.7",
14 | "@babel/preset-env": "^7.8.7",
15 | "rollup": "^1.32.0",
16 | "rollup-plugin-babel": "^4.3.3",
17 | "rollup-plugin-commonjs": "^10.1.0",
18 | "rollup-plugin-node-resolve": "^5.2.0",
19 | "rollup-plugin-terser": "^7.0.2",
20 | "rollup-plugin-typescript2": "^0.26.0",
21 | "typescript": "^3.8.3"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import typescript from 'rollup-plugin-typescript2';
2 | import babel from 'rollup-plugin-babel';
3 | import resolve from 'rollup-plugin-node-resolve'
4 | import commonjs from 'rollup-plugin-commonjs'
5 | import { terser } from "rollup-plugin-terser";
6 |
7 | export default {
8 | input: 'src/index.ts', // our source file
9 | output: {
10 | file: 'dist/bundle.js',
11 | format: 'umd',
12 | plugins: [terser()],
13 | name: 'PayMayaSDK'
14 | },
15 | plugins: [
16 | typescript({
17 | typescript: require('typescript'),
18 | }),
19 | resolve(),
20 | commonjs({
21 | include: 'node_modules/**',
22 | }),
23 | babel({
24 | exclude: 'node_modules/**' // only transpile our source code
25 | })
26 | ]
27 | };
28 |
--------------------------------------------------------------------------------
/src/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["@babel/env", {"modules": false}]
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import {
2 | CreateCheckoutObject,
3 | CreateSinglePaymentObject,
4 | CreateWalletLinkObject,
5 | CreditCardFormOptions
6 | } from './interfaces';
7 |
8 | class PayMayaSDK {
9 | private publicKey: string = '';
10 | private isSandbox: boolean = true;
11 | private apiUrl: string = '';
12 | private formUrl: string = '';
13 | private eventOrigin: string = '';
14 |
15 | public init(publicKey: string, isSandbox: boolean = true) {
16 | this.publicKey = publicKey;
17 | this.isSandbox = isSandbox;
18 |
19 | if (this.isSandbox) {
20 | this.apiUrl = 'https://pg-sandbox.paymaya.com';
21 | this.formUrl = 'https://paymayajs-staging.s3.amazonaws.com/dist/index.html';
22 | this.eventOrigin = 'https://paymayajs-staging.s3.amazonaws.com';
23 | } else {
24 | this.apiUrl = 'https://pg.paymaya.com';
25 | this.formUrl = 'https://paymayajs.s3.amazonaws.com/dist/index.html';
26 | this.eventOrigin = 'https://paymayajs.s3.amazonaws.com';
27 | }
28 | }
29 |
30 | private checkData(data: any) {
31 | if (!data) {
32 | throw Error();
33 | }
34 | }
35 |
36 | private checkIfInitialized() {
37 | if (
38 | this.publicKey === ''
39 | || this.apiUrl === ''
40 | || this.formUrl === ''
41 | || this.eventOrigin === ''
42 | ) {
43 | throw Error('You must first run init() method!');
44 | }
45 | }
46 |
47 | private async genericRequestFn(requestMethod: string, requestBody: any, url: string) {
48 | const config = {
49 | headers: {
50 | 'Content-Type': 'application/json',
51 | 'Authorization': `Basic ${btoa(this.publicKey)}`
52 | },
53 | method: requestMethod,
54 | body: JSON.stringify(requestBody)
55 | };
56 |
57 | const apiCall = await fetch(`${this.apiUrl}${url}`, config);
58 | const response = await apiCall.json();
59 |
60 | if (
61 | apiCall.status === 200
62 | && response.redirectUrl !== undefined
63 | && response.redirectUrl !== ''
64 | ) {
65 | return response;
66 | } else {
67 | throw response;
68 | }
69 | }
70 |
71 | public addTransactionHandler(callback: (arg: string) => void) {
72 | try {
73 | this.checkIfInitialized();
74 | this.checkData({}.toString.call(callback) === '[object Function]');
75 | window.addEventListener('message', (event) => {
76 | if (event.origin === this.eventOrigin) {
77 | const data = JSON.parse(event.data);
78 | callback(data.paymentTokenId);
79 | }
80 | });
81 | } catch (e) {
82 | console.error(e);
83 | console.error('SDK: addTransactionHandler(callback) - callback must be a function')
84 | }
85 | }
86 |
87 | public async createCheckout(checkoutRequestObject: CreateCheckoutObject) {
88 | try {
89 | this.checkIfInitialized();
90 | const response = await this.genericRequestFn('POST', checkoutRequestObject, '/checkout/v1/checkouts');
91 | window.location.href = response.redirectUrl;
92 | } catch (e) {
93 | console.error(e);
94 | console.error('SDK: createCheckout(checkoutRequestObject) - error');
95 | }
96 | }
97 |
98 | public async createWalletLink(walletLinkRequestObject: CreateWalletLinkObject) {
99 | try {
100 | this.checkIfInitialized();
101 | const response = await this.genericRequestFn('POST', walletLinkRequestObject, '/payby/v2/paymaya/link');
102 | window.location.href = response.redirectUrl;
103 | } catch (e) {
104 | console.error(e);
105 | console.error('SDK: createWalletLink(walletLinkRequestObject) - error');
106 | }
107 | }
108 |
109 | public async createSinglePayment(singlePaymentRequestObject: CreateSinglePaymentObject) {
110 | try {
111 | this.checkIfInitialized();
112 | const response = await this.genericRequestFn('POST', singlePaymentRequestObject, '/payby/v2/paymaya/payments');
113 | window.location.href = response.redirectUrl;
114 | } catch (e) {
115 | console.error(e);
116 | console.error('SDK: createSinglePayment(singlePaymentRequestObject) - error');
117 | }
118 | }
119 |
120 | public createCreditCardForm(targetHtmlElement: HTMLElement, options?: CreditCardFormOptions) {
121 | try {
122 | this.checkIfInitialized();
123 | this.checkData(targetHtmlElement instanceof HTMLElement);
124 | const iframeInstance = document.createElement('iframe');
125 | iframeInstance.setAttribute('id', 'paymaya-card-form');
126 | iframeInstance.setAttribute('src', `${this.formUrl}?sandbox=${String(this.isSandbox)}&publicKey=${this.publicKey}&options=${options ? JSON.stringify(options) : ''}`);
127 | targetHtmlElement.appendChild(iframeInstance);
128 | return this;
129 | } catch (e) {
130 | console.error(e);
131 | console.error('SDK: createCreditCardform(targetHtmlElement, options) - error');
132 | }
133 | }
134 | }
135 |
136 | export default new PayMayaSDK();
137 |
--------------------------------------------------------------------------------
/src/interfaces.ts:
--------------------------------------------------------------------------------
1 | export interface CreateCheckoutObject {
2 | totalAmount: TotalAmount;
3 | buyer?: Buyer;
4 | items: Item[];
5 | redirectUrl?: RedirectUrls;
6 | requestReferenceNumber: string;
7 | metadata: {};
8 | }
9 |
10 | export interface CreateWalletLinkObject extends RedirectUrls {
11 | requestReferenceNumber: string;
12 | metadata: {};
13 | }
14 |
15 | export interface CreateSinglePaymentObject extends RedirectUrls {
16 | totalAmount: {
17 | currency: string;
18 | value: string;
19 | };
20 | requestReferenceNumber: string;
21 | metadata: {};
22 | }
23 |
24 | export interface CreditCardFormOptions {
25 | buttonText: string;
26 | buttonColor: string;
27 | buttonTextColor: string;
28 | showLogo: boolean;
29 | }
30 |
31 | interface TotalAmount {
32 | value: number;
33 | currency: string;
34 | details?: Details;
35 | }
36 |
37 | interface Details {
38 | discount?: number;
39 | serviceCharge?: number;
40 | shippingFee?: number;
41 | tax?: number;
42 | subtotal?: number;
43 | }
44 |
45 | interface Buyer {
46 | firstName?: string;
47 | middleName?: string;
48 | lastName?: string;
49 | birthday?: string;
50 | customerSince?: string;
51 | sex?: string;
52 | contact?: {
53 | phone?: string;
54 | email?: string;
55 | };
56 | shippingAddress?: ShippingAddress;
57 | billingAddress?: BillingAddress;
58 | }
59 |
60 | export enum ShippingType {
61 | ST = 'ST',
62 | SD = 'SD',
63 | }
64 |
65 | interface ShippingAddress extends BillingAddress {
66 | firstName: string;
67 | middleName: string;
68 | lastName: string;
69 | phone: string;
70 | email: string;
71 | shippingType: ShippingType;
72 | }
73 |
74 | interface BillingAddress {
75 | line1?: string;
76 | line2?: string;
77 | city?: string;
78 | state?: string;
79 | zipCode?: string;
80 | countryCode?: string;
81 | }
82 |
83 | interface Item {
84 | name: string;
85 | quantity?: number;
86 | code?: string;
87 | description?: string;
88 | amount?: Amount;
89 | totalAmount: Amount;
90 | }
91 |
92 | interface Amount {
93 | value: number;
94 | details?: Details;
95 | }
96 |
97 | interface RedirectUrls {
98 | success?: string;
99 | failure?: string;
100 | cancel?: string;
101 | }
102 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": true,
4 | "declarationDir": "./dist",
5 | "module": "es6",
6 | "noImplicitAny": true,
7 | "outDir": "./dist",
8 | "target": "es5"
9 | },
10 | "include": [
11 | "src/**/*"
12 | ],
13 | "exclude": ["node_modules"]
14 | }
15 |
--------------------------------------------------------------------------------