├── .env.dist
├── .gitignore
├── .prettierrc
├── .travis.yml
├── LICENSE
├── README.md
├── package.json
├── src
├── __tests__
│ ├── __stubs__
│ │ └── config
│ │ │ └── braintree.ts
│ ├── braintree.controller.spec.ts
│ ├── braintree.module.spec.ts
│ ├── braintree.provider.spec.ts
│ ├── braintree.subscription.spec.ts
│ ├── braintree.transactions.spec.ts
│ ├── braintree.webhook.controller.options.spec.ts
│ ├── braintree.webhook.provider.spec.ts
│ ├── e2e
│ │ └── braintree.controller.e2e-spec.ts
│ └── webhooks.spec.ts
├── braintree.constants.ts
├── braintree.core.module.ts
├── braintree.module.ts
├── braintree.provider.ts
├── braintree.webhook.controller.ts
├── braintree.webhook.module.ts
├── braintree.webhook.provider.ts
├── decorators
│ ├── braintree.webhook.handler.ts
│ ├── index.ts
│ ├── inject.braintree.provider.ts
│ └── webhooks
│ │ ├── braintree.webhook.method.decorator.ts
│ │ ├── index.ts
│ │ └── subscriptions.ts
├── index.ts
└── interfaces
│ ├── braintree.options.interface.ts
│ ├── braintree.transaction.interface.ts
│ ├── braintree.webhook.methods.interface.ts
│ ├── braintree.webhook.notification.interface.ts
│ ├── braintree.webhook.options.interface.ts
│ ├── braintree.webhook.payload.interface.ts
│ └── index.ts
├── tsconfig.json
└── yarn.lock
/.env.dist:
--------------------------------------------------------------------------------
1 | BRAINTREE_MERCHANT_ID=merchantId
2 | BRAINTREE_PUBLIC_KEY=publicKey
3 | BRAINTREE_PRIVATE_KEY=privateKey
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | coverage
4 | .env
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "printWidth": 80,
4 | "proseWrap": "always",
5 | "tabWidth": 2,
6 | "useTabs": false,
7 | "trailingComma": "all",
8 | "bracketSpacing": true,
9 | "jsxBracketSameLine": false,
10 | "semi": true
11 | }
12 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - "8"
4 | - "10"
5 | - "node"
6 | git:
7 | depth: 5
8 | addons:
9 | firefox: "latest"
10 | before_install:
11 | - npm i -g npm@latest
12 | - npm i -g yarn
13 | install:
14 | - yarn
15 | script:
16 | - yarn run test
17 | after_success: yarn run coveralls
18 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Nestjs Community
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |

2 |
3 |
4 |
5 |
6 |
7 |
8 | Nestjs Braintree
9 |
10 | A module for Braintree reoccurring payments and transactions built for the Nestjs framework.
11 |
12 | Using the Braintree node SDK.
13 |
14 | > NOTE! Currently building
15 |
16 | ## Install
17 |
18 | ```bash
19 | $ yarn add nestjs-braintree
20 | ```
21 |
22 | ## Use
23 |
24 | ### Basic use
25 |
26 | ```typescript
27 | import { Module } from '@nestjs/common';
28 | import { BraintreeModule } from 'nestjs-braintree';
29 | import * as braintree from 'braintree';
30 |
31 | @Module({
32 | imports: [
33 | BraintreeModule.forRoot({
34 | environment: braintree.Environment.Sandbox,
35 | merchantId: '',
36 | publicKey: '',
37 | privateKey: '',
38 | }),
39 | ],
40 | })
41 | export default class AppModule {}
42 | ```
43 |
44 | ### In a subModule
45 | ```typescript
46 | import { Module } from '@nestjs/common';
47 | import { BraintreeModule } from 'nestjs-braintree';
48 |
49 | @Module({
50 | imports: [
51 | BraintreeModule.forFeature(),
52 | ],
53 | })
54 | export default class SubModule {}
55 | ```
56 |
57 | ### Use with nestjs-config
58 |
59 | ```typescript
60 | import { Module } from '@nestjs/common';
61 | import { BraintreeModule } from 'nestjs-braintree';
62 | import { ConfigModule, ConfigService } from 'nestjs-config';
63 |
64 | @Module({
65 | imports: [
66 | ConfigModule.load('root/to/config/*/**.{ts,js}'),
67 | BraintreeModule.forRootAsync({
68 | useFactory: async (config: ConfigService) => config.get('braintree'),
69 | inject: [ConfigService],
70 | }),
71 | ],
72 | })
73 | export default class AppModule {}
74 |
75 | //config/braintree.ts
76 | import * as braintree from 'braintree';
77 |
78 | export default {
79 | environment:
80 | process.env.NODE_ENV == 'development'
81 | ? braintree.Environment.Sandbox
82 | : braintree.Environment.Live,
83 | merchantId: process.env.BRAINTREE_MERCHANT_ID,
84 | publicKey: process.env.BRAINTREE_PUBLIC_KEY,
85 | privateKey: process.env.BRAINTREE_PRIVATE_KEY,
86 | };
87 | ```
88 |
89 | ## Transactions
90 |
91 | Braintree is capable of making one off transactions
92 |
93 | ```typescript
94 | import { Module } from '@nestjs/common';
95 | import { BraintreeModule, InjectBraintreeProvider } from 'nestjs-braintree';
96 | import { ConfigModule, ConfigService } from 'nestjs-config';
97 |
98 | class TransactionProvider {
99 | constructor(
100 | @InjectBraintreeProvider()
101 | private readonly braintreeProvider: BraintreeProvider,
102 | ) {}
103 |
104 | takePayment(amount: string, nonce: string) {
105 | this.braintreeProvider.sale({
106 | payment_method_nonce: nonce,
107 | amount,
108 | });
109 | }
110 | }
111 |
112 | @Module({
113 | imports: [
114 | ConfigModule.load('root/to/config/*/**.{ts,js}'),
115 | BraintreeModule.forRoot({
116 | useFactory: async (config: ConfigService) => config.get('braintree'),
117 | inject: [ConfigService],
118 | }),
119 | ],
120 | providers: [TransactionProvider],
121 | })
122 | export default class AppModule {}
123 | ```
124 |
125 | Available methods relating to transactions are
126 |
127 | #### Sale
128 | `braintreeProvider.sale(transaction: BraintreeTransactionInterface): Promise`
129 |
130 | #### Refund
131 | `braintreeProvider.refund(transactionId: string, amount?: string, orderId?: string): Promise`
132 |
133 | #### Find
134 | `braintreeProvider.find(transactionId: string): Promise`
135 |
136 | > The braintree SDK does offer additional methods. I will implement them soon hopefully
137 |
138 | ## Webhooks
139 |
140 | When using subscriptions with braintree, braintree will issue webhooks to your
141 | endpoint which you can use the decorators to handle those actions.
142 |
143 | ```typescript
144 | import { Module } from '@nestjs/common';
145 | import {
146 | BraintreeModule,
147 | BraintreeWebhookModule,
148 | BraintreeSubscriptionCanceled,
149 | BraintreeSubscriptionExpired,
150 | BraintreeWebhookHandler,
151 | } from 'nestjs-braintree';
152 | import { ConfigModule, ConfigService } from 'nestjs-config';
153 |
154 | @BraintreeWebhookHandler()
155 | class SubscriptionProvider {
156 | @BraintreeSubscriptionCanceled()
157 | canceled() {
158 | console.log('subscription canceled');
159 | }
160 |
161 | @BraintreeSubscriptionExpired()
162 | expired() {
163 | console.log('subscription expired');
164 | }
165 | }
166 |
167 | @Module({
168 | imports: [
169 | ConfigModule.load('root/to/config/*/**.{ts,js}'),
170 | BraintreeModule.forRootAsync({
171 | useFactory: async (config: ConfigService) => config.get('braintree'),
172 | inject: [ConfigService],
173 | }),
174 | BraintreeWebhookModule,
175 | ],
176 | providers: [SubscriptionProvider],
177 | })
178 | export default class AppModule {}
179 | ```
180 |
181 | ### Use Example
182 | The idea of the Braintree Webhook Module is to make implementation of actions a lot easier. For example we can build a provider like this one to cancel canceled subscriptions.
183 |
184 | ```ts
185 | @BraintreeWebhookHandler()
186 | export class SubscriptionProvider {
187 | constructor(@InjectRepository(Subscription) private readonly subscriptionRepository: Repository) {}
188 |
189 | async findByBraintreeId(braintreeId: string): Promise {
190 | return await this.subscriptionRepository.find({
191 | where: {
192 | braintreeId,
193 | },
194 | });
195 | }
196 |
197 | async update(subscription: Subscription): Promise {
198 | return await this.subscriptionRepository.update(subscription);
199 | }
200 |
201 | @BraintreeSubscriptionCanceled()
202 | async canceled(webhook: BraintreeWebhook) {
203 | const subscription = await this.findByBraintreeId(webhook.subscription.id);
204 | if (!subscription) {
205 | return;
206 | }
207 | subscription.active = false;
208 | await this.update(subscription);
209 | }
210 | }
211 | ```
212 |
213 | ### Available webhooks
214 |
215 | Shortname | Braintree webhook name/const/key | NestJS decorator
216 | --- | --- | ---
217 | Subscription Canceled | `subscription_canceled` | `@BraintreeSubscriptionCanceled()`
218 | Subscription Expired | `subscription_expired` | `@BraintreeSubscriptionExpired()`
219 | Subscription Charged Successfully | `subscription_charged_successfully` | `@BraintreeSubscriptionChargedSuccessfully()`
220 | Subscription Charged Unsuccessfully | `subscription_charged_unsuccessfully` | `@BraintreeSubscriptionChargedUnsuccessfully()`
221 | Subscription Went Active | `subscription_went_active` | `@BraintreeSubscriptionWentActive()`
222 | Subscription Went Past Due | `subscription_went_past_due` | `@BraintreeSubscriptionWentPastDue()`
223 | Subscription Trial Ended | `subscription_trial_ended` | `@BraintreeSubscriptionTrialEnded()`
224 |
225 | You can find out more about the webhooks [here](https://developers.braintreepayments.com/reference/general/webhooks/overview).
226 |
227 | #### Custom routing for webhooks
228 | You may want to divert from the default routing of `{your_domain}/braintree/webhook` for whatever reason. You can do so using the `forRoot` method on the `BraintreeWebhookModule` like so
229 |
230 | ```ts
231 | @Module({
232 | imports: [
233 | ConfigModule.load('root/to/config/*/**.{ts,js}'),
234 | BraintreeModule.forRootAsync({
235 | useFactory: async (config: ConfigService) => config.get('braintree'),
236 | inject: [ConfigService],
237 | }),
238 | BraintreeWebhookModule.forRoot({
239 | root: 'replace-braintree',
240 | handle: 'replace-webhook',
241 | }),
242 | ],
243 | providers: [SubscriptionProvider],
244 | })
245 | export default class AppModule {}
246 | ```
247 |
248 | The above will result in your route for your braintree webhooks being `{your_domain}/replace-braintree/replace-webhook`
249 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nestjs-braintree",
3 | "version": "0.0.2",
4 | "description": "Nestjs braintree module",
5 | "main": "dist/index.js",
6 | "repository": "git@github.com:nestjs-community/nestjs-braintree.git",
7 | "author": "ashleigh ",
8 | "license": "MIT",
9 | "keywords": [
10 | "nestjs",
11 | "braintree",
12 | "payments",
13 | "subscriptions",
14 | "webhook",
15 | "gatway"
16 | ],
17 | "devDependencies": {
18 | "@nestjs/common": "^5.2.2",
19 | "@nestjs/core": "^5.2.2",
20 | "@nestjs/testing": "^5.2.2",
21 | "@types/jest": "^23.3.1",
22 | "@types/node": "^12.7.9",
23 | "coveralls": "^3.0.2",
24 | "jest": "^24.9.0",
25 | "nestjs-config": "^1.2.2",
26 | "prettier": "^1.14.2",
27 | "supertest": "^3.3.0",
28 | "ts-jest": "^23.1.4",
29 | "typescript": "^3.0.3"
30 | },
31 | "dependencies": {
32 | "braintree": "^2.12.0",
33 | "reflect-metadata": "^0.1.12"
34 | },
35 | "scripts": {
36 | "test": "jest",
37 | "coverage": "jest --coverage",
38 | "coveralls": "yarn run coverage --coverageReporters=text-lcov | coveralls",
39 | "test:watch": "jest --watch",
40 | "build": "rm -rf ./dist && tsc",
41 | "format": "prettier **/**/*.ts --ignore-path ./.prettierignore --write && git status",
42 | "prepublish": "npm run format && npm run build"
43 | },
44 | "jest": {
45 | "moduleFileExtensions": [
46 | "js",
47 | "json",
48 | "ts"
49 | ],
50 | "rootDir": "src",
51 | "testRegex": ".spec.ts$",
52 | "transform": {
53 | "^.+\\.(t|j)s$": "ts-jest"
54 | },
55 | "coverageDirectory": "./coverage"
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/__tests__/__stubs__/config/braintree.ts:
--------------------------------------------------------------------------------
1 | import * as braintree from 'braintree';
2 |
3 | export default {
4 | environment: braintree.Environment.Sandbox,
5 | merchantId: process.env.BRAINTREE_MERCHANT_ID,
6 | publicKey: process.env.BRAINTREE_PUBLIC_KEY,
7 | privateKey: process.env.BRAINTREE_PRIVATE_KEY,
8 | }
--------------------------------------------------------------------------------
/src/__tests__/braintree.controller.spec.ts:
--------------------------------------------------------------------------------
1 | import { Test, TestingModule } from '@nestjs/testing';
2 | import * as path from 'path';
3 | import { ConfigModule, ConfigService } from 'nestjs-config';
4 | import {
5 | BraintreeModule,
6 | BraintreeWebhookController,
7 | BraintreeWebhookModule,
8 | BraintreeSubscriptionCanceled,
9 | BraintreeSubscriptionExpired,
10 | } from './..';
11 | import BraintreeProvider from '../braintree.provider';
12 | import BraintreeWebhookProvider from '../braintree.webhook.provider';
13 |
14 | class SubscriptionProvider {
15 | @BraintreeSubscriptionCanceled()
16 | canceled() {}
17 |
18 | @BraintreeSubscriptionExpired()
19 | expired() {}
20 | }
21 |
22 | describe('BraintreeWebhookController', async () => {
23 | let module: TestingModule;
24 |
25 | beforeEach(async () => {
26 | module = await Test.createTestingModule({
27 | imports: [
28 | ConfigModule.load(
29 | path.resolve(__dirname, '__stubs__', 'config', '*.ts'),
30 | ),
31 | BraintreeModule.forRootAsync({
32 | useFactory: async config => config.get('braintree'),
33 | inject: [ConfigService],
34 | }),
35 | BraintreeWebhookModule,
36 | ],
37 | providers: [SubscriptionProvider],
38 | }).compile();
39 | });
40 |
41 | it('Webhook controller must instance', () => {
42 | const controller = module.get(
43 | BraintreeWebhookController,
44 | );
45 |
46 | expect(controller).toBeInstanceOf(BraintreeWebhookController);
47 | });
48 |
49 | it('webhookmodule should instance subscription provider', () => {
50 | const provider = module.get(SubscriptionProvider);
51 |
52 | expect(provider).toBeInstanceOf(SubscriptionProvider);
53 | });
54 |
55 | it('wehook controller instances', () => {
56 | const braintreeWebhookController = module.get(
57 | BraintreeWebhookController,
58 | );
59 |
60 | expect(braintreeWebhookController.braintree).toBeInstanceOf(
61 | BraintreeProvider,
62 | );
63 | expect(braintreeWebhookController.webhookProvider).toBeInstanceOf(
64 | BraintreeWebhookProvider,
65 | );
66 | });
67 | });
68 |
--------------------------------------------------------------------------------
/src/__tests__/braintree.module.spec.ts:
--------------------------------------------------------------------------------
1 | import { Test, TestingModule } from '@nestjs/testing';
2 | import * as braintree from 'braintree';
3 | import { ConfigService, ConfigModule } from 'nestjs-config';
4 | import * as path from 'path';
5 | import {
6 | BraintreeModule,
7 | BRAINTREE_OPTIONS_PROVIDER,
8 | BraintreeProvider,
9 | InjectBraintreeProvider,
10 | } from '..';
11 | import { Injectable, Module } from '@nestjs/common';
12 |
13 | describe('Braintree Module', () => {
14 | it('Does it instance with options using registry', async () => {
15 | const module = await Test.createTestingModule({
16 | imports: [
17 | BraintreeModule.forRoot({
18 | environment: braintree.Environment.Sandbox,
19 | merchantId: 'merchantId',
20 | publicKey: 'publicKey',
21 | privateKey: 'privateKey',
22 | }),
23 | ],
24 | }).compile();
25 |
26 | const options = module.get(BRAINTREE_OPTIONS_PROVIDER);
27 | const provider = module.get(BraintreeProvider);
28 |
29 | expect(options.environment).toBe(braintree.Environment.Sandbox);
30 | expect(options.merchantId).toBe('merchantId');
31 | expect(options.publicKey).toBe('publicKey');
32 | expect(options.privateKey).toBe('privateKey');
33 | expect(provider).toBeInstanceOf(BraintreeProvider);
34 | });
35 |
36 | it('Does it instance with options using async registry', async () => {
37 | const module = await Test.createTestingModule({
38 | imports: [
39 | ConfigModule.load(
40 | path.resolve(__dirname, '__stubs__', 'config', '*.ts'),
41 | ),
42 | BraintreeModule.forRootAsync({
43 | useFactory: config => config.get('braintree'),
44 | inject: [ConfigService],
45 | }),
46 | ],
47 | }).compile();
48 |
49 | const options = module.get(BRAINTREE_OPTIONS_PROVIDER);
50 | const provider = module.get(BraintreeProvider);
51 |
52 | expect(options.environment).toBe(braintree.Environment.Sandbox);
53 | expect(typeof options.merchantId).toBe('string');
54 | expect(typeof options.publicKey).toBe('string');
55 | expect(typeof options.privateKey).toBe('string');
56 | expect(provider).toBeInstanceOf(BraintreeProvider);
57 | });
58 |
59 | it('BraintreeProvider is avaliable to providers', async () => {
60 | class TestProvider {
61 | constructor(
62 | @InjectBraintreeProvider()
63 | private readonly braintreeProvider: BraintreeProvider,
64 | ) {}
65 |
66 | getProvider(): BraintreeProvider {
67 | return this.braintreeProvider;
68 | }
69 | }
70 |
71 | const module = await Test.createTestingModule({
72 | imports: [
73 | ConfigModule.load(
74 | path.resolve(__dirname, '__stubs__', 'config', '*.ts'),
75 | ),
76 | BraintreeModule.forRootAsync({
77 | useFactory: config => config.get('braintree'),
78 | inject: [ConfigService],
79 | }),
80 | ],
81 | providers: [TestProvider],
82 | }).compile();
83 |
84 | const provider = module.get(TestProvider);
85 |
86 | expect(provider.getProvider()).toBeInstanceOf(BraintreeProvider);
87 | });
88 | it('BraintreeModule.forFeature', async () => {
89 | @Module({
90 | imports: [BraintreeModule.forFeature()],
91 | })
92 | class TestModule {}
93 |
94 | const module: TestingModule = await Test.createTestingModule({
95 | imports: [
96 | BraintreeModule.forRoot({
97 | environment: braintree.Environment.Sandbox,
98 | merchantId: 'merchantId',
99 | publicKey: 'publicKey',
100 | privateKey: 'privateKey',
101 | }),
102 | TestModule,
103 | ],
104 | }).compile();
105 |
106 | const testProvider = module.select(TestModule).get(BraintreeProvider);
107 |
108 | expect(testProvider).toBeInstanceOf(BraintreeProvider);
109 | });
110 | });
111 |
--------------------------------------------------------------------------------
/src/__tests__/braintree.provider.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestingModule, Test } from '@nestjs/testing';
2 | import { BraintreeModule, BraintreeProvider } from './..';
3 | import * as braintree from 'braintree';
4 |
5 | describe('BraintreeProvider', () => {
6 | let module: TestingModule;
7 |
8 | beforeEach(async () => {
9 | module = await Test.createTestingModule({
10 | imports: [
11 | BraintreeModule.forRoot({
12 | environment: braintree.Environment.Sandbox,
13 | merchantId: 'merchantId',
14 | publicKey: 'publicKey',
15 | privateKey: 'privateKey',
16 | }),
17 | ],
18 | }).compile();
19 | });
20 |
21 | it('WebhookProvider shoud return BraintreeWebhookNotificationInterface with sample payload', async () => {
22 | const gateway = braintree.connect({
23 | environment: braintree.Environment.Sandbox,
24 | merchantId: 'merchantId',
25 | publicKey: 'publicKey',
26 | privateKey: 'privateKey',
27 | });
28 | const braintreeProvider = module.get(BraintreeProvider);
29 |
30 | const result = await braintreeProvider.parseWebhook(
31 | gateway.webhookTesting.sampleNotification(
32 | braintree.WebhookNotification.Kind.SubscriptionCanceled,
33 | ),
34 | );
35 |
36 | expect(result).toHaveProperty('kind');
37 | expect(result).toHaveProperty('subject');
38 | expect(result).toHaveProperty('timestamp');
39 | });
40 | });
41 |
--------------------------------------------------------------------------------
/src/__tests__/braintree.subscription.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestingModule, Test } from '@nestjs/testing';
2 | import { ConfigModule, ConfigService } from 'nestjs-config';
3 | import * as path from 'path';
4 | import { BraintreeModule, BraintreeProvider } from './../../src';
5 |
6 | describe('Braintree subscription methods', () => {
7 | let module: TestingModule;
8 | let provider: BraintreeProvider;
9 |
10 | beforeEach(async () => {
11 | module = await Test.createTestingModule({
12 | imports: [
13 | ConfigModule.load(
14 | path.resolve(__dirname, '__stubs__', 'config', '*.ts'),
15 | ),
16 | BraintreeModule.forRootAsync({
17 | useFactory: async config => config.get('braintree'),
18 | inject: [ConfigService],
19 | }),
20 | ],
21 | }).compile();
22 |
23 | provider = module.get(BraintreeProvider);
24 | });
25 |
26 | it('', () => {});
27 |
28 | // it('Create Subscription', async () => {
29 |
30 | // //TODO implement paymentMethodToken somehow. Try this https://developers.braintreepayments.com/reference/request/payment-method/create/node
31 |
32 | // // const result = await provider.createSubscription({
33 | // // paymentMethodToken: '',
34 | // // planId: 'c8vr',
35 | // // });
36 | // });
37 | });
38 |
--------------------------------------------------------------------------------
/src/__tests__/braintree.transactions.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestingModule, Test } from '@nestjs/testing';
2 | import { ConfigModule, ConfigService } from 'nestjs-config';
3 | import * as path from 'path';
4 | import { BraintreeModule, BraintreeProvider } from './../../src';
5 |
6 | const nonces = {
7 | valid: 'fake-valid-nonce',
8 | };
9 |
10 | describe('Braintree transaction methods', () => {
11 | let module: TestingModule;
12 | let provider: BraintreeProvider;
13 | let transactionId: string;
14 |
15 | beforeEach(async () => {
16 | module = await Test.createTestingModule({
17 | imports: [
18 | ConfigModule.load(
19 | path.resolve(__dirname, '__stubs__', 'config', '*.ts'),
20 | ),
21 | BraintreeModule.forRootAsync({
22 | useFactory: async config => config.get('braintree'),
23 | inject: [ConfigService],
24 | }),
25 | ],
26 | }).compile();
27 |
28 | provider = module.get(BraintreeProvider);
29 | });
30 |
31 | it('Create Transaction', async () => {
32 | const result = await provider.sale({
33 | payment_method_nonce: nonces.valid,
34 | amount: '10.00',
35 | });
36 |
37 | transactionId = result.transaction.id;
38 |
39 | expect(result.success).toBeTruthy();
40 | expect(result).toHaveProperty('transaction');
41 | expect(result.transaction).toHaveProperty('amount');
42 | expect(result.transaction.amount).toEqual('10.00');
43 | });
44 |
45 | it('Find Transaction', async () => {
46 | const transaction = await provider.find(transactionId);
47 |
48 | expect(transaction).toHaveProperty('id');
49 | expect(transaction).toHaveProperty('status');
50 | expect(transaction).toHaveProperty('type');
51 | expect(transaction).toHaveProperty('amount');
52 | expect(transaction).toHaveProperty('createdAt');
53 | expect(transaction).toHaveProperty('updatedAt');
54 | });
55 |
56 | //it('Refund Transaction', async () => {
57 | //const refundResult = await provider.refund(transactionId);
58 |
59 | //console.log('refund', refundResult);
60 | //});
61 | });
62 |
--------------------------------------------------------------------------------
/src/__tests__/braintree.webhook.controller.options.spec.ts:
--------------------------------------------------------------------------------
1 | import { Test, TestingModule } from '@nestjs/testing';
2 | import BraintreeModule from '../braintree.module';
3 | import BraintreeWebhookModule from '../braintree.webhook.module';
4 | import * as braintree from 'braintree';
5 | import { BraintreeWebhookController } from '..';
6 | import { PATH_METADATA, METHOD_METADATA } from '@nestjs/common/constants';
7 | import { RequestMethod } from '@nestjs/common';
8 |
9 | describe('BraintreeWebhookController', () => {
10 | it('Should instance with default route', async () => {
11 | const module: TestingModule = await Test.createTestingModule({
12 | imports: [
13 | BraintreeModule.forRoot({
14 | environment: braintree.Environment.Sandbox,
15 | merchantId: 'merchantId',
16 | publicKey: 'publicKey',
17 | privateKey: 'privateKey',
18 | }),
19 | BraintreeWebhookModule,
20 | ],
21 | }).compile();
22 | const controller = module.get(BraintreeWebhookController);
23 |
24 | expect(controller).toBeInstanceOf(BraintreeWebhookController);
25 | expect(Reflect.getMetadata(PATH_METADATA, BraintreeWebhookController)).toBe(
26 | 'braintree',
27 | );
28 | expect(
29 | Reflect.getMetadata(
30 | METHOD_METADATA,
31 | Object.getOwnPropertyDescriptor(
32 | BraintreeWebhookController.prototype,
33 | 'handle',
34 | ).value,
35 | ),
36 | ).toBe(RequestMethod.POST);
37 | expect(
38 | Reflect.getMetadata(
39 | PATH_METADATA,
40 | Object.getOwnPropertyDescriptor(
41 | BraintreeWebhookController.prototype,
42 | 'handle',
43 | ).value,
44 | ),
45 | ).toBe('webhook');
46 | });
47 |
48 | it('Should instance with forRoot', async () => {
49 | const module: TestingModule = await Test.createTestingModule({
50 | imports: [
51 | BraintreeModule.forRoot({
52 | environment: braintree.Environment.Sandbox,
53 | merchantId: 'merchantId',
54 | publicKey: 'publicKey',
55 | privateKey: 'privateKey',
56 | }),
57 | BraintreeWebhookModule.forRoot({
58 | root: 'testing',
59 | handle: 'this',
60 | }),
61 | ],
62 | }).compile();
63 | const controller = module.get(BraintreeWebhookController);
64 |
65 | expect(controller).toBeInstanceOf(BraintreeWebhookController);
66 | expect(Reflect.getMetadata(PATH_METADATA, BraintreeWebhookController)).toBe(
67 | 'testing',
68 | );
69 | expect(
70 | Reflect.getMetadata(
71 | METHOD_METADATA,
72 | Object.getOwnPropertyDescriptor(
73 | BraintreeWebhookController.prototype,
74 | 'handle',
75 | ).value,
76 | ),
77 | ).toBe(RequestMethod.POST);
78 | expect(
79 | Reflect.getMetadata(
80 | PATH_METADATA,
81 | Object.getOwnPropertyDescriptor(
82 | BraintreeWebhookController.prototype,
83 | 'handle',
84 | ).value,
85 | ),
86 | ).toBe('this');
87 | });
88 | });
89 |
--------------------------------------------------------------------------------
/src/__tests__/braintree.webhook.provider.spec.ts:
--------------------------------------------------------------------------------
1 | import { Test, TestingModule } from '@nestjs/testing';
2 | import {
3 | BraintreeModule,
4 | BraintreeWebhookModule,
5 | BraintreeSubscriptionCanceled,
6 | BraintreeSubscriptionExpired,
7 | BraintreeProvider,
8 | BraintreeWebhookHandler,
9 | } from './..';
10 | import * as braintree from 'braintree';
11 | import BraintreeWebhookProvider from '../braintree.webhook.provider';
12 | import { Injectable } from '@nestjs/common';
13 | import { ModuleRef } from '@nestjs/core';
14 | import { ModulesContainer } from '@nestjs/core/injector/modules-container';
15 |
16 | describe('BraintreeWebhookController', async () => {
17 | it('Decorator methods should be called from WebhookProvider', async () => {
18 | @BraintreeWebhookHandler()
19 | class SubscriptionProvider {
20 | public static called = false;
21 |
22 | @BraintreeSubscriptionCanceled()
23 | canceled(webhook) {
24 | //this is a work around the jest spyon reflect issue
25 | SubscriptionProvider.called = true;
26 | }
27 |
28 | @BraintreeSubscriptionExpired()
29 | expired(webhook) {}
30 | }
31 |
32 | const module: TestingModule = await Test.createTestingModule({
33 | imports: [
34 | BraintreeModule.forRoot({
35 | environment: braintree.Environment.Sandbox,
36 | merchantId: 'merchantId',
37 | publicKey: 'publicKey',
38 | privateKey: 'privateKey',
39 | }),
40 | BraintreeWebhookModule,
41 | ],
42 | providers: [SubscriptionProvider],
43 | }).compile();
44 |
45 | const gateway = braintree.connect({
46 | environment: braintree.Environment.Sandbox,
47 | merchantId: 'merchantId',
48 | publicKey: 'publicKey',
49 | privateKey: 'privateKey',
50 | });
51 |
52 | const braintreeProvider = module.get(BraintreeProvider);
53 | const webhookProvider = module.get(
54 | BraintreeWebhookProvider,
55 | );
56 |
57 | const webhookNotification = await braintreeProvider.parseWebhook(
58 | gateway.webhookTesting.sampleNotification(
59 | braintree.WebhookNotification.Kind.SubscriptionCanceled,
60 | ),
61 | );
62 |
63 | webhookProvider.handle(webhookNotification);
64 |
65 | expect(SubscriptionProvider.called).toBeTruthy();
66 | });
67 |
68 | it('Make sure providers are still instanced with DI', async () => {
69 | @Injectable()
70 | class UselessProvider {
71 | public static called = false;
72 | callMe() {
73 | UselessProvider.called = true;
74 | }
75 | }
76 |
77 | @BraintreeWebhookHandler()
78 | class SubscriptionProvider {
79 | constructor(private readonly uselessProvider: UselessProvider) {
80 | this.uselessProvider = uselessProvider;
81 | }
82 |
83 | @BraintreeSubscriptionCanceled()
84 | canceled() {
85 | this.uselessProvider.callMe();
86 | }
87 | }
88 |
89 | const module: TestingModule = await Test.createTestingModule({
90 | imports: [
91 | BraintreeModule.forRoot({
92 | environment: braintree.Environment.Sandbox,
93 | merchantId: 'merchantId',
94 | publicKey: 'publicKey',
95 | privateKey: 'privateKey',
96 | }),
97 | BraintreeWebhookModule,
98 | ],
99 | providers: [UselessProvider, SubscriptionProvider],
100 | }).compile();
101 |
102 | const gateway = braintree.connect({
103 | environment: braintree.Environment.Sandbox,
104 | merchantId: 'merchantId',
105 | publicKey: 'publicKey',
106 | privateKey: 'privateKey',
107 | });
108 |
109 | const braintreeProvider = module.get(BraintreeProvider);
110 | const webhookProvider = module.get(
111 | BraintreeWebhookProvider,
112 | );
113 |
114 | const webhookNotification = await braintreeProvider.parseWebhook(
115 | gateway.webhookTesting.sampleNotification(
116 | braintree.WebhookNotification.Kind.SubscriptionCanceled,
117 | ),
118 | );
119 |
120 | webhookProvider.handle(webhookNotification);
121 |
122 | expect(UselessProvider.called).toBeTruthy();
123 | });
124 |
125 | it('Instances', async () => {
126 | const module: TestingModule = await Test.createTestingModule({
127 | imports: [
128 | BraintreeModule.forRoot({
129 | environment: braintree.Environment.Sandbox,
130 | merchantId: 'merchantId',
131 | publicKey: 'publicKey',
132 | privateKey: 'privateKey',
133 | }),
134 | BraintreeWebhookModule,
135 | ],
136 | }).compile();
137 |
138 | const braintreeWebhookModule = module.get(
139 | BraintreeWebhookModule,
140 | );
141 |
142 | expect(braintreeWebhookModule.moduleRef).toBeInstanceOf(ModuleRef);
143 | expect(braintreeWebhookModule.modulesContainer).toBeInstanceOf(
144 | ModulesContainer,
145 | );
146 | expect(braintreeWebhookModule.braintreeWebhookProvider).toBeInstanceOf(
147 | BraintreeWebhookProvider,
148 | );
149 | });
150 | });
151 |
--------------------------------------------------------------------------------
/src/__tests__/e2e/braintree.controller.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { INestApplication } from "@nestjs/common";
2 | import { TestingModule, Test } from "@nestjs/testing";
3 | import { BraintreeWebhookModule } from "../..";
4 | import { ConfigService, ConfigModule } from "nestjs-config";
5 | import BraintreeModule from "../../braintree.module";
6 | import * as path from 'path';
7 | import * as request from 'supertest';
8 | import * as braintree from 'braintree';
9 | import { BraintreeWebhookHandler, BraintreeSubscriptionCanceled, BraintreeSubscriptionChargedSuccessfully } from "../../decorators";
10 |
11 | describe('BraintreeWebhookController', async () => {
12 | let app: INestApplication;
13 | let module: TestingModule;
14 |
15 | const gateway = braintree.connect({
16 | environment: braintree.Environment.Sandbox,
17 | merchantId: 'merchantId',
18 | publicKey: 'publicKey',
19 | privateKey: 'privateKey',
20 | });
21 |
22 | beforeAll(async () => {
23 |
24 | @BraintreeWebhookHandler()
25 | class TestProvider {
26 | @BraintreeSubscriptionCanceled()
27 | canceled() {
28 | return true;
29 | }
30 |
31 | @BraintreeSubscriptionChargedSuccessfully()
32 | callMe() {
33 | throw new Error('hello I am errors');
34 | }
35 | }
36 |
37 | module = await Test.createTestingModule({
38 | imports: [
39 | ConfigModule.load(
40 | path.resolve(__dirname, '../', '__stubs__', 'config', '*.ts'),
41 | ),
42 | BraintreeModule.forRoot({
43 | environment: braintree.Environment.Sandbox,
44 | merchantId: 'merchantId',
45 | publicKey: 'publicKey',
46 | privateKey: 'privateKey',
47 | }),
48 | BraintreeWebhookModule,
49 | ],
50 | providers: [TestProvider],
51 | }).compile();
52 |
53 | app = module.createNestApplication();
54 | await app.init();
55 | });
56 |
57 | it('/braintree/webhook (POST) Canceled', async () => {
58 | const webhook = gateway.webhookTesting.sampleNotification(
59 | braintree.WebhookNotification.Kind.SubscriptionCanceled,
60 | );
61 |
62 | return await request(app.getHttpServer())
63 | .post('/braintree/webhook')
64 | .set('Content-Type', 'application/json')
65 | .send(webhook)
66 | .expect(201);
67 | });
68 |
69 | afterAll(async () => {
70 | await app.close();
71 | });
72 | });
--------------------------------------------------------------------------------
/src/__tests__/webhooks.spec.ts:
--------------------------------------------------------------------------------
1 | import { Test, TestingModule } from '@nestjs/testing';
2 | import { BraintreeModule, BraintreeWebhookModule } from './../';
3 | import * as braintree from 'braintree';
4 | import {
5 | BraintreeWebhookHandler,
6 | BraintreeSubscriptionCanceled,
7 | BraintreeSubscriptionExpired,
8 | BraintreeSubscriptionChargedSuccessfully,
9 | BraintreeSubscriptionChargedUnSuccessfully,
10 | BraintreeSubscriptionTrialEnded,
11 | BraintreeSubscriptionWentPastDue,
12 | BraintreeSubscriptionWentActive,
13 | } from '../decorators';
14 | import BraintreeProvider from '../braintree.provider';
15 | import BraintreeWebhookProvider from '../braintree.webhook.provider';
16 |
17 | describe('Braintree Webhooks', async () => {
18 | let module: TestingModule;
19 |
20 | @BraintreeWebhookHandler()
21 | class TestProvider {
22 | public static called = null;
23 |
24 | @BraintreeSubscriptionCanceled()
25 | canceled() {
26 | TestProvider.called = 'canceled';
27 | }
28 |
29 | @BraintreeSubscriptionExpired()
30 | expired() {
31 | TestProvider.called = 'expired';
32 | }
33 |
34 | @BraintreeSubscriptionChargedSuccessfully()
35 | chargedSuccessFully() {
36 | TestProvider.called = 'chargedSuccessfully';
37 | }
38 |
39 | @BraintreeSubscriptionChargedUnSuccessfully()
40 | chargedUnsuccessfully() {
41 | TestProvider.called = 'chargedUnsuccessfully';
42 | }
43 |
44 | @BraintreeSubscriptionTrialEnded()
45 | trialEnded() {
46 | TestProvider.called = 'trialEnded';
47 | }
48 |
49 | @BraintreeSubscriptionWentPastDue()
50 | wentPastDue() {
51 | TestProvider.called = 'wentPastDue';
52 | }
53 |
54 | @BraintreeSubscriptionWentActive()
55 | wentActive() {
56 | TestProvider.called = 'wentActive';
57 | }
58 | }
59 |
60 | const gateway = braintree.connect({
61 | environment: braintree.Environment.Sandbox,
62 | merchantId: 'merchantId',
63 | publicKey: 'publicKey',
64 | privateKey: 'privateKey',
65 | });
66 |
67 | beforeEach(async () => {
68 | module = await Test.createTestingModule({
69 | imports: [
70 | BraintreeModule.forRoot({
71 | environment: braintree.Environment.Sandbox,
72 | merchantId: 'merchantId',
73 | publicKey: 'publicKey',
74 | privateKey: 'privateKey',
75 | }),
76 | BraintreeWebhookModule,
77 | ],
78 | providers: [TestProvider],
79 | }).compile();
80 |
81 | TestProvider.called = null;
82 | });
83 |
84 | it('Canceled', async () => {
85 | const braintreeProvider = module.get(BraintreeProvider);
86 | const braintreeWebhookProvider = module.get(BraintreeWebhookProvider);
87 |
88 | const webhookNotification = await braintreeProvider.parseWebhook(
89 | gateway.webhookTesting.sampleNotification(
90 | braintree.WebhookNotification.Kind.SubscriptionCanceled,
91 | ),
92 | );
93 |
94 | braintreeWebhookProvider.handle(webhookNotification);
95 |
96 | expect(TestProvider.called).toBe('canceled');
97 | });
98 |
99 | it('Expired', async () => {
100 | const braintreeProvider = module.get(BraintreeProvider);
101 | const braintreeWebhookProvider = module.get(BraintreeWebhookProvider);
102 |
103 | const webhookNotification = await braintreeProvider.parseWebhook(
104 | gateway.webhookTesting.sampleNotification(
105 | braintree.WebhookNotification.Kind.SubscriptionExpired,
106 | ),
107 | );
108 |
109 | braintreeWebhookProvider.handle(webhookNotification);
110 |
111 | expect(TestProvider.called).toBe('expired');
112 | });
113 |
114 | it('ChargedSuccessfully', async () => {
115 | const braintreeProvider = module.get(BraintreeProvider);
116 | const braintreeWebhookProvider = module.get(BraintreeWebhookProvider);
117 |
118 | const webhookNotification = await braintreeProvider.parseWebhook(
119 | gateway.webhookTesting.sampleNotification(
120 | braintree.WebhookNotification.Kind.SubscriptionChargedSuccessfully,
121 | ),
122 | );
123 |
124 | braintreeWebhookProvider.handle(webhookNotification);
125 |
126 | expect(TestProvider.called).toBe('chargedSuccessfully');
127 | });
128 |
129 | it('ChargedUnSuccessfully', async () => {
130 | const braintreeProvider = module.get(BraintreeProvider);
131 | const braintreeWebhookProvider = module.get(BraintreeWebhookProvider);
132 |
133 | const webhookNotification = await braintreeProvider.parseWebhook(
134 | gateway.webhookTesting.sampleNotification(
135 | braintree.WebhookNotification.Kind.SubscriptionChargedUnsuccessfully,
136 | ),
137 | );
138 |
139 | braintreeWebhookProvider.handle(webhookNotification);
140 |
141 | expect(TestProvider.called).toBe('chargedUnsuccessfully');
142 | });
143 |
144 | it('TrialEnded', async () => {
145 | const braintreeProvider = module.get(BraintreeProvider);
146 | const braintreeWebhookProvider = module.get(BraintreeWebhookProvider);
147 |
148 | const webhookNotification = await braintreeProvider.parseWebhook(
149 | gateway.webhookTesting.sampleNotification(
150 | braintree.WebhookNotification.Kind.SubscriptionTrialEnded,
151 | ),
152 | );
153 |
154 | braintreeWebhookProvider.handle(webhookNotification);
155 |
156 | expect(TestProvider.called).toBe('trialEnded');
157 | });
158 |
159 | it('wentPastDue', async () => {
160 | const braintreeProvider = module.get(BraintreeProvider);
161 | const braintreeWebhookProvider = module.get(BraintreeWebhookProvider);
162 |
163 | const webhookNotification = await braintreeProvider.parseWebhook(
164 | gateway.webhookTesting.sampleNotification(
165 | braintree.WebhookNotification.Kind.SubscriptionWentPastDue,
166 | ),
167 | );
168 |
169 | braintreeWebhookProvider.handle(webhookNotification);
170 |
171 | expect(TestProvider.called).toBe('wentPastDue');
172 | });
173 |
174 | it('wentActive', async () => {
175 | const braintreeProvider = module.get(BraintreeProvider);
176 | const braintreeWebhookProvider = module.get(BraintreeWebhookProvider);
177 |
178 | const webhookNotification = await braintreeProvider.parseWebhook(
179 | gateway.webhookTesting.sampleNotification(
180 | braintree.WebhookNotification.Kind.SubscriptionWentActive,
181 | ),
182 | );
183 |
184 | braintreeWebhookProvider.handle(webhookNotification);
185 |
186 | expect(TestProvider.called).toBe('wentActive');
187 | });
188 | });
189 |
--------------------------------------------------------------------------------
/src/braintree.constants.ts:
--------------------------------------------------------------------------------
1 | export const BRAINTREE_OPTIONS_PROVIDER = 'BRAINTREE_OPTIONS_PROVIDER';
2 | export const BRAINTREE_WEBHOOK_SUBSCRIPTION_CANCELED = 'subscription_canceled';
3 | export const BRAINTREE_WEBHOOK_SUBSCRIPTION_EXPIRED = 'subscription_expired';
4 | export const BRAINTREE_WEBHOOK_SUBSCRIPTION_CHARGED_SUCCESSFULLY = 'subscription_charged_successfully';
5 | export const BRAINTREE_WEBHOOK_SUBSCRIPTION_CHARGED_UNSUCCESSFULLY = 'subscription_charged_unsuccessfully';
6 | export const BRAINTREE_WEBHOOK_SUBSCRIPTION_WENT_ACTIVE = 'subscription_went_active';
7 | export const BRAINTREE_WEBHOOK_SUBSCRIPTION_TRIAL_ENDED = 'subscription_trial_ended';
8 | export const BRAINTREE_WEBHOOK_SUBSCRIPTION_WENT_PAST_DUE = 'subscription_went_past_due';
9 | export const BRAINTREE_WEBHOOK_METHOD = 'BRAINTREE_WEBHOOK_METHOD';
10 | export const BRAINTREE_WEBHOOK_PROVIDER = 'BRAINTREE_WEBHOOK_PROVIDER';
--------------------------------------------------------------------------------
/src/braintree.core.module.ts:
--------------------------------------------------------------------------------
1 | import {Module, DynamicModule, Provider, Global} from '@nestjs/common';
2 | import { BRAINTREE_OPTIONS_PROVIDER} from './braintree.constants';
3 | import BraintreeProvider from './braintree.provider';
4 | import { BraintreeOptions, BraintreeAsyncOptions } from './interfaces';
5 |
6 | @Global()
7 | @Module({})
8 | export default class BraintreeCoreModule {
9 |
10 | private static provider = {
11 | provide: BraintreeProvider,
12 | useFactory: (options: BraintreeOptions) => new BraintreeProvider(options),
13 | inject: [BRAINTREE_OPTIONS_PROVIDER],
14 | };
15 |
16 | public static forRoot(options: BraintreeOptions): DynamicModule {
17 | return {
18 | module: BraintreeCoreModule,
19 | providers: [
20 | {
21 | provide: BRAINTREE_OPTIONS_PROVIDER,
22 | useValue: options,
23 | },
24 | this.provider,
25 | ],
26 | exports: [BraintreeProvider],
27 | };
28 | }
29 |
30 | public static forRootAsync(options: BraintreeAsyncOptions): DynamicModule {
31 | return {
32 | module: BraintreeCoreModule,
33 | providers: [
34 | this.createOptionsProvider(options),
35 | this.provider,
36 | ],
37 | exports: [BraintreeProvider],
38 | };
39 | }
40 |
41 | private static createOptionsProvider(options: BraintreeAsyncOptions): Provider {
42 | return {
43 | provide: BRAINTREE_OPTIONS_PROVIDER,
44 | useFactory: options.useFactory,
45 | inject: options.inject || [],
46 | };
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/braintree.module.ts:
--------------------------------------------------------------------------------
1 | import {Module, DynamicModule} from '@nestjs/common';
2 | import { BraintreeOptions, BraintreeAsyncOptions } from './interfaces';
3 | import BraintreeCoreModule from './braintree.core.module';
4 |
5 | @Module({
6 | })
7 | export default class BraintreeModule {
8 |
9 | public static forRoot(options: BraintreeOptions): DynamicModule {
10 | return {
11 | module: BraintreeModule,
12 | imports: [BraintreeCoreModule.forRoot(options)],
13 | };
14 | }
15 |
16 | public static forRootAsync(options: BraintreeAsyncOptions): DynamicModule {
17 | return {
18 | module: BraintreeModule,
19 | imports: [BraintreeCoreModule.forRootAsync(options)],
20 | };
21 | }
22 |
23 | public static forFeature(): DynamicModule {
24 | return {
25 | module: BraintreeModule,
26 | imports: [BraintreeCoreModule],
27 | };
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/braintree.provider.ts:
--------------------------------------------------------------------------------
1 | import {Injectable, Inject} from '@nestjs/common';
2 | import {
3 | BraintreeOptions,
4 | BraintreeWebhookPayloadInterface,
5 | BraintreeWebhookNotificationInterface,
6 | BraintreeTransactionInterface,
7 | BraintreeTransactionResultInterface,
8 | BraintreeSubscriptionInterface,
9 | BraintreeSubscriptionResultInterface,
10 | } from './interfaces';
11 | import * as braintree from 'braintree';
12 | import { BRAINTREE_OPTIONS_PROVIDER } from './braintree.constants';
13 |
14 | @Injectable()
15 | export default class BraintreeProvider {
16 |
17 | protected readonly gateway;
18 |
19 | constructor(@Inject(BRAINTREE_OPTIONS_PROVIDER) options: BraintreeOptions) {
20 | this.gateway = braintree.connect(options);
21 | }
22 |
23 | async parseWebhook(payload: BraintreeWebhookPayloadInterface): Promise {
24 | return await this.gateway.webhookNotification.parse(payload.bt_signature, payload.bt_payload);
25 | }
26 |
27 | async sale(transaction: BraintreeTransactionInterface): Promise {
28 |
29 | return await this.gateway.transaction.sale(transaction);
30 | }
31 |
32 | async refund(transactionId: string, amount?: string, orderId?: string): Promise {
33 | return await this.gateway.transaction.refund(transactionId, amount, orderId);
34 | }
35 |
36 | async find(transactionId: string): Promise {
37 | return await this.gateway.transaction.find(transactionId);
38 | }
39 |
40 | async createSubscription(subscription: BraintreeSubscriptionInterface): Promise {
41 | return await this.gateway.subscription.create(subscription);
42 | }
43 |
44 | async cancelSubscription(subscriptionId: string): Promise {
45 | return await this.gateway.subscription.cancel(subscriptionId);
46 | }
47 |
48 | async findSubscription(subscriptionId: string): Promise {
49 | return await this.gateway.subscription.find(subscriptionId);
50 | }
51 |
52 | async updateSubscription(subscriptionId: string, subscription: BraintreeSubscriptionInterface): Promise {
53 | return await this.gateway.subscription.update(subscriptionId, subscription);
54 | }
55 |
56 | // TODO implement confusing looking search plans
57 | // https://developers.braintreepayments.com/reference/request/subscription/search/node#search-results
58 | }
--------------------------------------------------------------------------------
/src/braintree.webhook.controller.ts:
--------------------------------------------------------------------------------
1 | import {Controller, Req, Logger, HttpException, RequestMethod} from '@nestjs/common';
2 | import BraintreeProvider from './braintree.provider';
3 | import BraintreeWebhookProvider from './braintree.webhook.provider';
4 | import { BraintreeWebhookNotificationInterface } from './interfaces';
5 | import { PATH_METADATA, METHOD_METADATA } from '@nestjs/common/constants';
6 |
7 | @Controller()
8 | export default class BraintreeWebhookController {
9 |
10 | constructor(
11 | private readonly braintree: BraintreeProvider,
12 | private readonly webhookProvider: BraintreeWebhookProvider,
13 | ) {}
14 |
15 | public static forRoot(root: string = 'braintree', handle: string = 'webhook') {
16 | Reflect.defineMetadata(PATH_METADATA, root, BraintreeWebhookController);
17 | Reflect.defineMetadata(
18 | METHOD_METADATA,
19 | RequestMethod.POST,
20 | Object.getOwnPropertyDescriptor(BraintreeWebhookController.prototype, 'handle').value,
21 | );
22 | Reflect.defineMetadata(
23 | PATH_METADATA,
24 | handle,
25 | Object.getOwnPropertyDescriptor(BraintreeWebhookController.prototype, 'handle').value,
26 | );
27 | return BraintreeWebhookController;
28 | }
29 |
30 | async handle(@Req() request) {
31 | let webhook: BraintreeWebhookNotificationInterface;
32 | try {
33 | webhook = await this.braintree.parseWebhook({
34 | bt_signature: request.body.bt_signature,
35 | bt_payload: request.body.bt_payload,
36 | });
37 | await this.webhookProvider.handle(webhook);
38 | } catch (e) {
39 | //TODO log something? see braintree for correct proceedure on signature failure
40 | Logger.warn('Failed to process webhook', this.constructor.name);
41 | throw new HttpException('Failed', 500);
42 | }
43 | }
44 | }
--------------------------------------------------------------------------------
/src/braintree.webhook.module.ts:
--------------------------------------------------------------------------------
1 | import {Module, OnModuleInit,} from '@nestjs/common';
2 | import {ModuleRef} from '@nestjs/core';
3 | import BraintreeWebhookController from './braintree.webhook.controller';
4 | import BraintreeWebhookProvider from './braintree.webhook.provider';
5 | import BraintreeModule from './braintree.module';
6 | import { ModulesContainer } from '@nestjs/core/injector/modules-container';
7 | import { metadata as NEST_METADATA_CONSTANTS } from '@nestjs/common/constants';
8 | import { BRAINTREE_WEBHOOK_PROVIDER, BRAINTREE_WEBHOOK_METHOD } from './braintree.constants';
9 | import { MetadataScanner } from '@nestjs/core/metadata-scanner';
10 | import { Injectable, DynamicModule } from '@nestjs/common/interfaces';
11 | import { BraintreeWebhookOptionsInterface } from './interfaces';
12 |
13 | @Module({
14 | imports: [BraintreeModule],
15 | providers: [BraintreeWebhookProvider],
16 | controllers: [BraintreeWebhookController.forRoot('braintree', 'webhook')],
17 | })
18 | export default class BraintreeWebhookModule implements OnModuleInit {
19 |
20 | constructor(
21 | private readonly moduleRef: ModuleRef,
22 | private readonly modulesContainer: ModulesContainer,
23 | private readonly braintreeWebhookProvider: BraintreeWebhookProvider,
24 | ) {
25 | this.onModuleInit();
26 | }
27 |
28 | onModuleInit() {
29 | [...this.modulesContainer.values()].forEach(({metatype}) => {
30 | const metadata = Reflect.getMetadata(NEST_METADATA_CONSTANTS.PROVIDERS, metatype) || [];
31 | const providers = [...metadata.filter(metatype => typeof metatype === 'function')];
32 | providers.map(provider => {
33 | if (Reflect.getOwnMetadata(BRAINTREE_WEBHOOK_PROVIDER, provider)) {
34 |
35 | const realProvider = this.moduleRef.get(provider, {strict: false});
36 |
37 | this.braintreeWebhookProvider.addProvider(realProvider);
38 |
39 | const metadataScanner = new MetadataScanner();
40 |
41 | metadataScanner.scanFromPrototype(null, provider['prototype'], method => {
42 | const descriptor = Reflect.getOwnPropertyDescriptor(
43 | provider['prototype'],
44 | method,
45 | );
46 |
47 | const hook = Reflect.getMetadata(BRAINTREE_WEBHOOK_METHOD, descriptor.value);
48 |
49 | if (hook) {
50 | this.braintreeWebhookProvider.addMethod(hook, method, realProvider.constructor.name);
51 | }
52 | });
53 |
54 | }
55 | });
56 | });
57 | }
58 |
59 | public static forRoot(webhookOptions: BraintreeWebhookOptionsInterface): DynamicModule {
60 | return {
61 | module: BraintreeWebhookModule,
62 | imports: [BraintreeModule],
63 | providers: [BraintreeWebhookProvider],
64 | controllers: [BraintreeWebhookController.forRoot(webhookOptions.root, webhookOptions.handle)],
65 | };
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/src/braintree.webhook.provider.ts:
--------------------------------------------------------------------------------
1 | import {Injectable, Provider, Logger, HttpException} from '@nestjs/common';
2 | import {
3 | BraintreeWebhookNotificationInterface,
4 | BraintreeWebhookMethodInterface,
5 | BraintreeWebhookMethodTreeInterface,
6 | } from './interfaces';
7 | import {
8 | BRAINTREE_WEBHOOK_SUBSCRIPTION_CANCELED,
9 | BRAINTREE_WEBHOOK_SUBSCRIPTION_EXPIRED,
10 | BRAINTREE_WEBHOOK_SUBSCRIPTION_CHARGED_SUCCESSFULLY,
11 | BRAINTREE_WEBHOOK_SUBSCRIPTION_CHARGED_UNSUCCESSFULLY,
12 | BRAINTREE_WEBHOOK_SUBSCRIPTION_TRIAL_ENDED,
13 | BRAINTREE_WEBHOOK_SUBSCRIPTION_WENT_ACTIVE,
14 | BRAINTREE_WEBHOOK_SUBSCRIPTION_WENT_PAST_DUE,
15 | } from './braintree.constants';
16 |
17 | @Injectable()
18 | export default class BraintreeWebhookProvider {
19 |
20 | private providers: {[k: string]: Provider} = {};
21 | private methods: BraintreeWebhookMethodTreeInterface = {
22 | [BRAINTREE_WEBHOOK_SUBSCRIPTION_CANCELED]: [],
23 | [BRAINTREE_WEBHOOK_SUBSCRIPTION_EXPIRED]: [],
24 | [BRAINTREE_WEBHOOK_SUBSCRIPTION_CHARGED_SUCCESSFULLY]: [],
25 | [BRAINTREE_WEBHOOK_SUBSCRIPTION_CHARGED_UNSUCCESSFULLY]: [],
26 | [BRAINTREE_WEBHOOK_SUBSCRIPTION_TRIAL_ENDED]: [],
27 | [BRAINTREE_WEBHOOK_SUBSCRIPTION_WENT_ACTIVE]: [],
28 | [BRAINTREE_WEBHOOK_SUBSCRIPTION_WENT_PAST_DUE]: [],
29 | };
30 |
31 | async handle(webhook: BraintreeWebhookNotificationInterface): Promise {
32 | if (Object.keys(this.methods).includes(webhook.kind)) {
33 | this.methods[webhook.kind].forEach(async (methodProto: BraintreeWebhookMethodInterface) => {
34 | try {
35 | await this.providers[methodProto.provider][methodProto.method](webhook);
36 | } catch(e) {
37 | Logger.error(`There was an error calling ${methodProto.method} from ${methodProto.provider}`, e.stack, 'BraintreeWebhookProvider');
38 | throw HttpException;
39 | }
40 | });
41 | }
42 | }
43 |
44 | addProvider(provider: Provider) {
45 | this.providers[provider.constructor.name] = provider;
46 | Logger.log(`Added provider [${provider.constructor.name}]`, 'BraintreeWebhookProvider');
47 | }
48 |
49 | addMethod(hook: string, method: string, provider: string) {
50 | this.methods[hook] = [
51 | ...this.methods[hook],
52 | {
53 | provider,
54 | method,
55 | },
56 | ];
57 | Logger.log(`Added method [${method}]`, 'BraintreeWebhookProvider');
58 | }
59 | }
--------------------------------------------------------------------------------
/src/decorators/braintree.webhook.handler.ts:
--------------------------------------------------------------------------------
1 | import { BRAINTREE_WEBHOOK_PROVIDER } from './../braintree.constants';
2 |
3 | export const BraintreeWebhookHandler = (): ClassDecorator => {
4 | return target => {
5 | Reflect.defineMetadata(BRAINTREE_WEBHOOK_PROVIDER, true, target);
6 | };
7 | };
8 |
--------------------------------------------------------------------------------
/src/decorators/index.ts:
--------------------------------------------------------------------------------
1 | import InjectBraintreeProvider from './inject.braintree.provider';
2 |
3 | export { InjectBraintreeProvider };
4 |
5 | export * from './braintree.webhook.handler';
6 | export * from './webhooks';
7 |
--------------------------------------------------------------------------------
/src/decorators/inject.braintree.provider.ts:
--------------------------------------------------------------------------------
1 | import { Inject } from '@nestjs/common';
2 | import BraintreeProvider from './../braintree.provider';
3 |
4 | const InjectBraintreeProvider = () => Inject(BraintreeProvider);
5 |
6 | export default InjectBraintreeProvider;
7 |
--------------------------------------------------------------------------------
/src/decorators/webhooks/braintree.webhook.method.decorator.ts:
--------------------------------------------------------------------------------
1 | import 'reflect-metadata';
2 | import {
3 | BRAINTREE_WEBHOOK_METHOD,
4 | } from './../../braintree.constants';
5 |
6 | export const BraintreeWebhookMethodDecorator = (method) => (): MethodDecorator => {
7 | return (
8 | target: Object,
9 | key: string | symbol,
10 | descriptor: PropertyDescriptor,
11 | ) => {
12 | Reflect.defineMetadata(
13 | BRAINTREE_WEBHOOK_METHOD,
14 | method,
15 | descriptor.value,
16 | );
17 | return descriptor;
18 | };
19 | };
20 |
--------------------------------------------------------------------------------
/src/decorators/webhooks/index.ts:
--------------------------------------------------------------------------------
1 | export * from './subscriptions';
--------------------------------------------------------------------------------
/src/decorators/webhooks/subscriptions.ts:
--------------------------------------------------------------------------------
1 | import {
2 | BRAINTREE_WEBHOOK_SUBSCRIPTION_CANCELED,
3 | BRAINTREE_WEBHOOK_SUBSCRIPTION_EXPIRED,
4 | BRAINTREE_WEBHOOK_SUBSCRIPTION_CHARGED_SUCCESSFULLY,
5 | BRAINTREE_WEBHOOK_SUBSCRIPTION_CHARGED_UNSUCCESSFULLY,
6 | BRAINTREE_WEBHOOK_SUBSCRIPTION_TRIAL_ENDED,
7 | BRAINTREE_WEBHOOK_SUBSCRIPTION_WENT_ACTIVE,
8 | BRAINTREE_WEBHOOK_SUBSCRIPTION_WENT_PAST_DUE
9 | } from './../../braintree.constants';
10 | import {BraintreeWebhookMethodDecorator} from './braintree.webhook.method.decorator';
11 |
12 | export const BraintreeSubscriptionCanceled = BraintreeWebhookMethodDecorator(BRAINTREE_WEBHOOK_SUBSCRIPTION_CANCELED);
13 | export const BraintreeSubscriptionExpired = BraintreeWebhookMethodDecorator(BRAINTREE_WEBHOOK_SUBSCRIPTION_EXPIRED);
14 | export const BraintreeSubscriptionChargedSuccessfully = BraintreeWebhookMethodDecorator(BRAINTREE_WEBHOOK_SUBSCRIPTION_CHARGED_SUCCESSFULLY);
15 | export const BraintreeSubscriptionChargedUnSuccessfully = BraintreeWebhookMethodDecorator(BRAINTREE_WEBHOOK_SUBSCRIPTION_CHARGED_UNSUCCESSFULLY);
16 | export const BraintreeSubscriptionTrialEnded = BraintreeWebhookMethodDecorator(BRAINTREE_WEBHOOK_SUBSCRIPTION_TRIAL_ENDED);
17 | export const BraintreeSubscriptionWentActive = BraintreeWebhookMethodDecorator(BRAINTREE_WEBHOOK_SUBSCRIPTION_WENT_ACTIVE);
18 | export const BraintreeSubscriptionWentPastDue = BraintreeWebhookMethodDecorator(BRAINTREE_WEBHOOK_SUBSCRIPTION_WENT_PAST_DUE);
19 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import BraintreeModule from './braintree.module';
2 | import BraintreeProvider from './braintree.provider';
3 | import BraintreeWebhookController from './braintree.webhook.controller';
4 | import {BraintreeOptions, BraintreeAsyncOptions} from './interfaces/braintree.options.interface';
5 | import BraintreeWebhookModule from './braintree.webhook.module';
6 |
7 | export * from './braintree.constants';
8 | export * from './decorators';
9 | export * from './interfaces';
10 |
11 | export {
12 | BraintreeModule,
13 | BraintreeProvider,
14 | BraintreeAsyncOptions,
15 | BraintreeOptions,
16 | BraintreeWebhookController,
17 | BraintreeWebhookModule,
18 | };
--------------------------------------------------------------------------------
/src/interfaces/braintree.options.interface.ts:
--------------------------------------------------------------------------------
1 | export interface BraintreeOptions {
2 | environment: string;
3 | merchantId: string;
4 | publicKey: string;
5 | privateKey: string;
6 | }
7 |
8 | export interface BraintreeAsyncOptions {
9 | inject?: any[];
10 | useFactory?: (...args: any[]) => Promise;
11 | }
12 |
--------------------------------------------------------------------------------
/src/interfaces/braintree.transaction.interface.ts:
--------------------------------------------------------------------------------
1 | import {
2 | CreditCard,
3 | DisbursementDetails,
4 | PayPalAccount,
5 | ApplePayCard,
6 | AndroidPayCard,
7 | CoinbaseAccount,
8 | VisaCheckoutCard,
9 | MasterpassCard,
10 | SamsungPayCard,
11 | } from 'braintree';
12 |
13 | export interface BraintreeTransactionOptionsInterface {
14 | submitForSettlement?: boolean;
15 | addBillingAddressToPaymentMethod?: boolean;
16 | holdInEscrow?: boolean;
17 | paypal?: BraintreePayPalOptionsInterface;
18 | skipAdvancedFraudChecking?: boolean;
19 | skipAvs?: boolean;
20 | skipCvv?: boolean;
21 | storeInVault?: boolean;
22 | storeInVaultOnSuccess?: boolean;
23 | storeShippingAddressInVault?: boolean;
24 | treeDSecure?: {
25 | required: boolean;
26 | };
27 | venmo?: {
28 | profileId: string;
29 | };
30 | }
31 |
32 | export interface BraintreePayPalOptionsInterface {
33 | customField: string;
34 | description: string;
35 | }
36 |
37 | export interface BraintreeDescriptorInterface {
38 | name?: string;
39 | phone?: string;
40 | url?: string;
41 | }
42 |
43 | export interface BraintreeAddressInterface {
44 | company?: string;
45 | countryName?: string;
46 | countryCodeAlpha2?: string;
47 | countryCodeAlpha3?: string;
48 | countryCodeNumeric?: string;
49 | extendedAddress?: string;
50 | firstName?: string;
51 | lastName?: string;
52 | locality?: string;
53 | postalCode?: string;
54 | region?: string;
55 | streetAddress?: string;
56 | }
57 |
58 | export interface BraintreeCustomerInterface {
59 | id?: string;
60 | firstName?: string;
61 | lastName?: string;
62 | company?: string;
63 | phone?: string;
64 | fax?: string;
65 | website?: string;
66 | email?: string;
67 | }
68 |
69 | export interface BraintreeTransactionInterface {
70 | payment_method_nonce: string;
71 | amount: string;
72 | billing?: BraintreeAddressInterface;
73 | billingAddressId?: string;
74 | channel?: string;
75 | customFields?: { [s: string]: string };
76 | customerId?: string;
77 | deviceSessionId?: string;
78 | discountAmount?: string;
79 | merchantAccountId?: string;
80 | options?: BraintreeTransactionInterface;
81 | orderId?: string;
82 | paymentMethodToken?: string;
83 | purchaseOrderNumber?: string;
84 | serviceFeeAmount?: string;
85 | sharedBillingAddress?: string;
86 | sharedCustomerId?: string;
87 | sharedPaymentMethodNonce?: string;
88 | sharedPaymentMethodToken?: string;
89 | sharedSippingAddressId?: string;
90 | shipping?: BraintreeAddressInterface;
91 | shippingAddressId?: string;
92 | shippingAmount?: string;
93 | shippingFromPostalCode?: string;
94 | taxAmount?: string;
95 | taxExempt?: boolean;
96 | transactionSource?: 'recurring' | 'unscheduled' | 'recurring_first' | 'moto';
97 | descriptor?: BraintreeDescriptorInterface;
98 | }
99 |
100 | export interface BraintreeTransactionResultInterface {
101 | success: boolean;
102 | transaction: BraintreeTransaction;
103 | }
104 |
105 | export interface BraintreeSubscriptionOptionsInterface {
106 | doNotInheritAddOnsOrDiscounts?: boolean;
107 | paypal?: {
108 | description?: string;
109 | };
110 | startImmediately?: boolean;
111 | }
112 |
113 | export interface BraintreeSubscriptionInterface {
114 | paymentMethodToken: string;
115 | planId: string;
116 | price?: string;
117 | paymentMethodNonce?: string;
118 | options?: BraintreeSubscriptionOptionsInterface;
119 | trialDuration?: number;
120 | trialDurationUnit?: 'day' | 'month';
121 | trialPeriod?: boolean;
122 | numberOfBillingCycles?: number;
123 | neverExpires?: boolean;
124 | merchantAccountId?: string;
125 | id?: string;
126 | firstBillingDate?: Date;
127 | discounts?: {
128 | add?: {
129 | amount?: string;
130 | inheritFromId: string;
131 | neverExpires?: boolean;
132 | numberOfBillingCycles?: string;
133 | quantity?: number;
134 | }[];
135 | remove: string[];
136 | update: {
137 | amount?: string;
138 | existingId: string;
139 | neverExpires?: boolean;
140 | numberOfBillingCycles?: number;
141 | quantity?: number;
142 | }[];
143 | };
144 | descriptor?: BraintreeDescriptorInterface;
145 | }
146 |
147 | export interface BraintreeTransaction {
148 | id: string;
149 | status: string;
150 | type: string;
151 | currencyIsoCode: string;
152 | amount: string;
153 | merchantAccountId: string;
154 | subMerchantAccountId: string | null;
155 | masterMerchantAccountId: string | null;
156 | orderId: string | null;
157 | createdAt: string;
158 | updatedAt: string;
159 | customer: {
160 | id: string | null;
161 | firstName: string | null;
162 | lastName: string | null;
163 | company: string | null;
164 | email: string | null;
165 | website: string | null;
166 | phone: string | null;
167 | fax: string | null;
168 | };
169 | billing: {
170 | id: string | null;
171 | firstName: string | null;
172 | lastName: string | null;
173 | company: string | null;
174 | streetAddress: string | null;
175 | extendedAddress: string | null;
176 | locality: string | null;
177 | region: string | null;
178 | postalCode: string | null;
179 | countryName: string | null;
180 | countryCodeAlpha2: string | null;
181 | countryCodeAlpha3: string | null;
182 | countryCodeNumeric: string | null;
183 | };
184 | refundId: string | null;
185 | refundIds: string[];
186 | refundedTransactionId: string;
187 | partialSettlementTransactionIds: string[];
188 | authorizedTransactionId: string | null;
189 | settlementBatchId: string | null;
190 | shipping: {
191 | id: string | null;
192 | firstName: string | null;
193 | lastName: string | null;
194 | company: string | null;
195 | streetAddress: string | null;
196 | extendedAddress: string | null;
197 | locality: string | null;
198 | region: string | null;
199 | postalCode: string | null;
200 | countryName: string | null;
201 | countryCodeAlpha2: string | null;
202 | countryCodeAlpha3: string | null;
203 | countryCodeNumeric: string | null;
204 | };
205 | customFields: string | object;
206 | avsErrorResponseCode: string | null;
207 | avsPostalCodeResponseCode: string;
208 | avsStreetAddressResponseCode: string;
209 | cvvResponseCode: string;
210 | gatewayRejectionReason: null | string;
211 | processorAuthorizationCode: string;
212 | processorResponseCode: string;
213 | processorResponseText: string;
214 | additionalProcessorResponse: null | string;
215 | voiceReferralNumber: null | string;
216 | purchaseOrderNumber: null | string;
217 | taxAmount: null | string;
218 | taxExempt: boolean;
219 | creditCard: CreditCard;
220 | statusHistory: object;
221 | planId: null | string;
222 | subscriptionId: null | string;
223 | subscription: {
224 | billingPeriodEndDate: null | string;
225 | billingPeriodStartDate: null | string;
226 | };
227 | addOns: [];
228 | discounts: [];
229 | descriptor: {
230 | name: string | null;
231 | phone: string | null;
232 | url: string | null;
233 | };
234 | recurring: boolean;
235 | channel: null | string;
236 | serviceFeeAmount: null | string;
237 | escrowStatus: null | string;
238 | disbursementDetails: DisbursementDetails;
239 | disputes: [];
240 | authorizationAjustments: [];
241 | paymentInstrumentType: string;
242 | processorSettlementResponseCode: string;
243 | processorSettlementResponseText: string;
244 | threeDSecureInfo: null | string;
245 | shipsFromPostalCode: null | string;
246 | shippingAmount: null | string;
247 | discountAmount: null | string;
248 | networkTransactionId: string;
249 | refundGlobalIds: [];
250 | refundedTransactionGlobalId: null | string;
251 | partialSettlementTransactionGlobalIds: [];
252 | authorizedTransactionGlobalId: null | string;
253 | globalId: string;
254 | processorResponseType: string;
255 | paypalAccount: PayPalAccount;
256 | coinbaseAccount: CoinbaseAccount;
257 | applePayCard: ApplePayCard;
258 | androidPayCard: AndroidPayCard;
259 | visaCheckoutCard: VisaCheckoutCard;
260 | masterpassCard: MasterpassCard;
261 | samsungPayCard: SamsungPayCard;
262 | }
263 |
264 | export interface BraintreeSubscriptionResultInterface {
265 | transaction: BraintreeTransaction[];
266 | subscription: {}; // TODO add result types
267 | }
268 |
--------------------------------------------------------------------------------
/src/interfaces/braintree.webhook.methods.interface.ts:
--------------------------------------------------------------------------------
1 | export interface BraintreeWebhookMethodInterface {
2 | provider: string;
3 | method: string;
4 | }
5 |
6 | export interface BraintreeWebhookMethodTreeInterface {
7 | [k: string]: BraintreeWebhookMethodInterface[];
8 | }
9 |
--------------------------------------------------------------------------------
/src/interfaces/braintree.webhook.notification.interface.ts:
--------------------------------------------------------------------------------
1 | export interface BraintreeWebhookNotificationInterface {
2 | timestamp: string;
3 | kind: string;
4 | subject: object; //TODO add different types to what could be returned
5 | }
6 |
--------------------------------------------------------------------------------
/src/interfaces/braintree.webhook.options.interface.ts:
--------------------------------------------------------------------------------
1 | export interface BraintreeWebhookOptionsInterface {
2 | root: string;
3 | handle: string;
4 | }
5 |
--------------------------------------------------------------------------------
/src/interfaces/braintree.webhook.payload.interface.ts:
--------------------------------------------------------------------------------
1 | export interface BraintreeWebhookPayloadInterface {
2 | bt_signature: string;
3 | bt_payload: string;
4 | }
5 |
--------------------------------------------------------------------------------
/src/interfaces/index.ts:
--------------------------------------------------------------------------------
1 | export * from './braintree.options.interface';
2 | export * from './braintree.webhook.payload.interface';
3 | export * from './braintree.webhook.notification.interface';
4 | export * from './braintree.webhook.methods.interface';
5 | export * from './braintree.webhook.options.interface';
6 | export * from './braintree.transaction.interface';
7 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "moduleResolution": "node",
4 | "module": "commonjs",
5 | "declaration": true,
6 | "noImplicitAny": false,
7 | "noUnusedLocals": false,
8 | "removeComments": false,
9 | "noLib": false,
10 | "emitDecoratorMetadata": true,
11 | "experimentalDecorators": true,
12 | "target": "es6",
13 | "sourceMap": false,
14 | "allowJs": false,
15 | "rootDir": "./src",
16 | "baseUrl": "./",
17 | "outDir": "./dist",
18 | "lib": ["es2017"]
19 | },
20 | "include": [
21 | "*.ts",
22 | "**/*.ts"
23 | ],
24 | "exclude": [
25 | "node_modules",
26 | "./**/*.spec.ts",
27 | "examples"
28 | ]
29 | }
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13":
6 | version "7.12.13"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
8 | dependencies:
9 | "@babel/highlight" "^7.12.13"
10 |
11 | "@babel/compat-data@^7.13.0":
12 | version "7.13.0"
13 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.0.tgz#7889eb7ee6518e2afa5d312b15fd7fd1fe9f3744"
14 |
15 | "@babel/core@^7.1.0":
16 | version "7.13.1"
17 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.1.tgz#7ddd027176debe40f13bb88bac0c21218c5b1ecf"
18 | dependencies:
19 | "@babel/code-frame" "^7.12.13"
20 | "@babel/generator" "^7.13.0"
21 | "@babel/helper-compilation-targets" "^7.13.0"
22 | "@babel/helper-module-transforms" "^7.13.0"
23 | "@babel/helpers" "^7.13.0"
24 | "@babel/parser" "^7.13.0"
25 | "@babel/template" "^7.12.13"
26 | "@babel/traverse" "^7.13.0"
27 | "@babel/types" "^7.13.0"
28 | convert-source-map "^1.7.0"
29 | debug "^4.1.0"
30 | gensync "^1.0.0-beta.2"
31 | json5 "^2.1.2"
32 | lodash "^4.17.19"
33 | semver "7.0.0"
34 | source-map "^0.5.0"
35 |
36 | "@babel/generator@^7.13.0", "@babel/generator@^7.4.0":
37 | version "7.13.0"
38 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.0.tgz#bd00d4394ca22f220390c56a0b5b85568ec1ec0c"
39 | dependencies:
40 | "@babel/types" "^7.13.0"
41 | jsesc "^2.5.1"
42 | source-map "^0.5.0"
43 |
44 | "@babel/helper-compilation-targets@^7.13.0":
45 | version "7.13.0"
46 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.0.tgz#c9cf29b82a76fd637f0faa35544c4ace60a155a1"
47 | dependencies:
48 | "@babel/compat-data" "^7.13.0"
49 | "@babel/helper-validator-option" "^7.12.17"
50 | browserslist "^4.14.5"
51 | semver "7.0.0"
52 |
53 | "@babel/helper-function-name@^7.12.13":
54 | version "7.12.13"
55 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a"
56 | dependencies:
57 | "@babel/helper-get-function-arity" "^7.12.13"
58 | "@babel/template" "^7.12.13"
59 | "@babel/types" "^7.12.13"
60 |
61 | "@babel/helper-get-function-arity@^7.12.13":
62 | version "7.12.13"
63 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583"
64 | dependencies:
65 | "@babel/types" "^7.12.13"
66 |
67 | "@babel/helper-member-expression-to-functions@^7.13.0":
68 | version "7.13.0"
69 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091"
70 | dependencies:
71 | "@babel/types" "^7.13.0"
72 |
73 | "@babel/helper-module-imports@^7.12.13":
74 | version "7.12.13"
75 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0"
76 | dependencies:
77 | "@babel/types" "^7.12.13"
78 |
79 | "@babel/helper-module-transforms@^7.13.0":
80 | version "7.13.0"
81 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1"
82 | dependencies:
83 | "@babel/helper-module-imports" "^7.12.13"
84 | "@babel/helper-replace-supers" "^7.13.0"
85 | "@babel/helper-simple-access" "^7.12.13"
86 | "@babel/helper-split-export-declaration" "^7.12.13"
87 | "@babel/helper-validator-identifier" "^7.12.11"
88 | "@babel/template" "^7.12.13"
89 | "@babel/traverse" "^7.13.0"
90 | "@babel/types" "^7.13.0"
91 | lodash "^4.17.19"
92 |
93 | "@babel/helper-optimise-call-expression@^7.12.13":
94 | version "7.12.13"
95 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea"
96 | dependencies:
97 | "@babel/types" "^7.12.13"
98 |
99 | "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0":
100 | version "7.13.0"
101 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af"
102 |
103 | "@babel/helper-replace-supers@^7.13.0":
104 | version "7.13.0"
105 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24"
106 | dependencies:
107 | "@babel/helper-member-expression-to-functions" "^7.13.0"
108 | "@babel/helper-optimise-call-expression" "^7.12.13"
109 | "@babel/traverse" "^7.13.0"
110 | "@babel/types" "^7.13.0"
111 |
112 | "@babel/helper-simple-access@^7.12.13":
113 | version "7.12.13"
114 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4"
115 | dependencies:
116 | "@babel/types" "^7.12.13"
117 |
118 | "@babel/helper-split-export-declaration@^7.12.13":
119 | version "7.12.13"
120 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05"
121 | dependencies:
122 | "@babel/types" "^7.12.13"
123 |
124 | "@babel/helper-validator-identifier@^7.12.11":
125 | version "7.12.11"
126 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
127 |
128 | "@babel/helper-validator-option@^7.12.17":
129 | version "7.12.17"
130 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
131 |
132 | "@babel/helpers@^7.13.0":
133 | version "7.13.0"
134 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.0.tgz#7647ae57377b4f0408bf4f8a7af01c42e41badc0"
135 | dependencies:
136 | "@babel/template" "^7.12.13"
137 | "@babel/traverse" "^7.13.0"
138 | "@babel/types" "^7.13.0"
139 |
140 | "@babel/highlight@^7.12.13":
141 | version "7.12.13"
142 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c"
143 | dependencies:
144 | "@babel/helper-validator-identifier" "^7.12.11"
145 | chalk "^2.0.0"
146 | js-tokens "^4.0.0"
147 |
148 | "@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.0", "@babel/parser@^7.4.3":
149 | version "7.13.0"
150 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.0.tgz#49b9b6ee213e5634fa80361dae139effef893f78"
151 |
152 | "@babel/plugin-syntax-object-rest-spread@^7.0.0":
153 | version "7.8.3"
154 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
155 | dependencies:
156 | "@babel/helper-plugin-utils" "^7.8.0"
157 |
158 | "@babel/template@^7.12.13", "@babel/template@^7.4.0":
159 | version "7.12.13"
160 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
161 | dependencies:
162 | "@babel/code-frame" "^7.12.13"
163 | "@babel/parser" "^7.12.13"
164 | "@babel/types" "^7.12.13"
165 |
166 | "@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.4.3":
167 | version "7.13.0"
168 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc"
169 | dependencies:
170 | "@babel/code-frame" "^7.12.13"
171 | "@babel/generator" "^7.13.0"
172 | "@babel/helper-function-name" "^7.12.13"
173 | "@babel/helper-split-export-declaration" "^7.12.13"
174 | "@babel/parser" "^7.13.0"
175 | "@babel/types" "^7.13.0"
176 | debug "^4.1.0"
177 | globals "^11.1.0"
178 | lodash "^4.17.19"
179 |
180 | "@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0":
181 | version "7.13.0"
182 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80"
183 | dependencies:
184 | "@babel/helper-validator-identifier" "^7.12.11"
185 | lodash "^4.17.19"
186 | to-fast-properties "^2.0.0"
187 |
188 | "@braintree/wrap-promise@1.1.1":
189 | version "1.1.1"
190 | resolved "https://registry.yarnpkg.com/@braintree/wrap-promise/-/wrap-promise-1.1.1.tgz#d22c76855e6d4b4012610060421fae1a37ec90b0"
191 |
192 | "@cnakazawa/watch@^1.0.3":
193 | version "1.0.4"
194 | resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a"
195 | dependencies:
196 | exec-sh "^0.3.2"
197 | minimist "^1.2.0"
198 |
199 | "@jest/console@^24.7.1", "@jest/console@^24.9.0":
200 | version "24.9.0"
201 | resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0"
202 | dependencies:
203 | "@jest/source-map" "^24.9.0"
204 | chalk "^2.0.1"
205 | slash "^2.0.0"
206 |
207 | "@jest/core@^24.9.0":
208 | version "24.9.0"
209 | resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4"
210 | dependencies:
211 | "@jest/console" "^24.7.1"
212 | "@jest/reporters" "^24.9.0"
213 | "@jest/test-result" "^24.9.0"
214 | "@jest/transform" "^24.9.0"
215 | "@jest/types" "^24.9.0"
216 | ansi-escapes "^3.0.0"
217 | chalk "^2.0.1"
218 | exit "^0.1.2"
219 | graceful-fs "^4.1.15"
220 | jest-changed-files "^24.9.0"
221 | jest-config "^24.9.0"
222 | jest-haste-map "^24.9.0"
223 | jest-message-util "^24.9.0"
224 | jest-regex-util "^24.3.0"
225 | jest-resolve "^24.9.0"
226 | jest-resolve-dependencies "^24.9.0"
227 | jest-runner "^24.9.0"
228 | jest-runtime "^24.9.0"
229 | jest-snapshot "^24.9.0"
230 | jest-util "^24.9.0"
231 | jest-validate "^24.9.0"
232 | jest-watcher "^24.9.0"
233 | micromatch "^3.1.10"
234 | p-each-series "^1.0.0"
235 | realpath-native "^1.1.0"
236 | rimraf "^2.5.4"
237 | slash "^2.0.0"
238 | strip-ansi "^5.0.0"
239 |
240 | "@jest/environment@^24.9.0":
241 | version "24.9.0"
242 | resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18"
243 | dependencies:
244 | "@jest/fake-timers" "^24.9.0"
245 | "@jest/transform" "^24.9.0"
246 | "@jest/types" "^24.9.0"
247 | jest-mock "^24.9.0"
248 |
249 | "@jest/fake-timers@^24.9.0":
250 | version "24.9.0"
251 | resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93"
252 | dependencies:
253 | "@jest/types" "^24.9.0"
254 | jest-message-util "^24.9.0"
255 | jest-mock "^24.9.0"
256 |
257 | "@jest/reporters@^24.9.0":
258 | version "24.9.0"
259 | resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43"
260 | dependencies:
261 | "@jest/environment" "^24.9.0"
262 | "@jest/test-result" "^24.9.0"
263 | "@jest/transform" "^24.9.0"
264 | "@jest/types" "^24.9.0"
265 | chalk "^2.0.1"
266 | exit "^0.1.2"
267 | glob "^7.1.2"
268 | istanbul-lib-coverage "^2.0.2"
269 | istanbul-lib-instrument "^3.0.1"
270 | istanbul-lib-report "^2.0.4"
271 | istanbul-lib-source-maps "^3.0.1"
272 | istanbul-reports "^2.2.6"
273 | jest-haste-map "^24.9.0"
274 | jest-resolve "^24.9.0"
275 | jest-runtime "^24.9.0"
276 | jest-util "^24.9.0"
277 | jest-worker "^24.6.0"
278 | node-notifier "^5.4.2"
279 | slash "^2.0.0"
280 | source-map "^0.6.0"
281 | string-length "^2.0.0"
282 |
283 | "@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0":
284 | version "24.9.0"
285 | resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714"
286 | dependencies:
287 | callsites "^3.0.0"
288 | graceful-fs "^4.1.15"
289 | source-map "^0.6.0"
290 |
291 | "@jest/test-result@^24.9.0":
292 | version "24.9.0"
293 | resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca"
294 | dependencies:
295 | "@jest/console" "^24.9.0"
296 | "@jest/types" "^24.9.0"
297 | "@types/istanbul-lib-coverage" "^2.0.0"
298 |
299 | "@jest/test-sequencer@^24.9.0":
300 | version "24.9.0"
301 | resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31"
302 | dependencies:
303 | "@jest/test-result" "^24.9.0"
304 | jest-haste-map "^24.9.0"
305 | jest-runner "^24.9.0"
306 | jest-runtime "^24.9.0"
307 |
308 | "@jest/transform@^24.9.0":
309 | version "24.9.0"
310 | resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56"
311 | dependencies:
312 | "@babel/core" "^7.1.0"
313 | "@jest/types" "^24.9.0"
314 | babel-plugin-istanbul "^5.1.0"
315 | chalk "^2.0.1"
316 | convert-source-map "^1.4.0"
317 | fast-json-stable-stringify "^2.0.0"
318 | graceful-fs "^4.1.15"
319 | jest-haste-map "^24.9.0"
320 | jest-regex-util "^24.9.0"
321 | jest-util "^24.9.0"
322 | micromatch "^3.1.10"
323 | pirates "^4.0.1"
324 | realpath-native "^1.1.0"
325 | slash "^2.0.0"
326 | source-map "^0.6.1"
327 | write-file-atomic "2.4.1"
328 |
329 | "@jest/types@^24.9.0":
330 | version "24.9.0"
331 | resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59"
332 | dependencies:
333 | "@types/istanbul-lib-coverage" "^2.0.0"
334 | "@types/istanbul-reports" "^1.1.1"
335 | "@types/yargs" "^13.0.0"
336 |
337 | "@nestjs/common@^5.2.2":
338 | version "5.2.2"
339 | resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-5.2.2.tgz#f6256271ceb85a961304631422e6589bef252129"
340 | dependencies:
341 | axios "0.17.1"
342 | cli-color "1.2.0"
343 | deprecate "1.0.0"
344 | multer "1.3.0"
345 |
346 | "@nestjs/core@^5.2.2":
347 | version "5.2.2"
348 | resolved "https://registry.yarnpkg.com/@nestjs/core/-/core-5.2.2.tgz#ea87b481bb280bcbd419b526cae11e34f7406290"
349 | dependencies:
350 | body-parser "1.18.2"
351 | cors "2.8.4"
352 | express "4.16.3"
353 | iterare "0.0.8"
354 | object-hash "1.3.0"
355 | optional "0.1.4"
356 | path-to-regexp "2.2.1"
357 |
358 | "@nestjs/testing@^5.2.2":
359 | version "5.2.2"
360 | resolved "https://registry.yarnpkg.com/@nestjs/testing/-/testing-5.2.2.tgz#b1338bb0f54ccf5ea16661196bbd42c2403049b5"
361 | dependencies:
362 | deprecate "1.0.0"
363 | optional "0.1.4"
364 |
365 | "@types/babel__core@^7.1.0":
366 | version "7.1.12"
367 | resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d"
368 | dependencies:
369 | "@babel/parser" "^7.1.0"
370 | "@babel/types" "^7.0.0"
371 | "@types/babel__generator" "*"
372 | "@types/babel__template" "*"
373 | "@types/babel__traverse" "*"
374 |
375 | "@types/babel__generator@*":
376 | version "7.6.2"
377 | resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8"
378 | dependencies:
379 | "@babel/types" "^7.0.0"
380 |
381 | "@types/babel__template@*":
382 | version "7.4.0"
383 | resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be"
384 | dependencies:
385 | "@babel/parser" "^7.1.0"
386 | "@babel/types" "^7.0.0"
387 |
388 | "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
389 | version "7.11.0"
390 | resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0"
391 | dependencies:
392 | "@babel/types" "^7.3.0"
393 |
394 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
395 | version "2.0.3"
396 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
397 |
398 | "@types/istanbul-lib-report@*":
399 | version "3.0.0"
400 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686"
401 | dependencies:
402 | "@types/istanbul-lib-coverage" "*"
403 |
404 | "@types/istanbul-reports@^1.1.1":
405 | version "1.1.2"
406 | resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2"
407 | dependencies:
408 | "@types/istanbul-lib-coverage" "*"
409 | "@types/istanbul-lib-report" "*"
410 |
411 | "@types/jest@^23.3.1":
412 | version "23.3.1"
413 | resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.1.tgz#a4319aedb071d478e6f407d1c4578ec8156829cf"
414 |
415 | "@types/node@^12.7.9":
416 | version "12.7.9"
417 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.9.tgz#da0210f91096aa67138cf5afd04c4d629f8a406a"
418 |
419 | "@types/stack-utils@^1.0.1":
420 | version "1.0.1"
421 | resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
422 |
423 | "@types/yargs-parser@*":
424 | version "20.2.0"
425 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9"
426 |
427 | "@types/yargs@^13.0.0":
428 | version "13.0.11"
429 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.11.tgz#def2f0c93e4bdf2c61d7e34899b17e34be28d3b1"
430 | dependencies:
431 | "@types/yargs-parser" "*"
432 |
433 | abab@^2.0.0:
434 | version "2.0.0"
435 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f"
436 |
437 | accepts@~1.3.5:
438 | version "1.3.5"
439 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
440 | dependencies:
441 | mime-types "~2.1.18"
442 | negotiator "0.6.1"
443 |
444 | acorn-globals@^4.1.0:
445 | version "4.1.0"
446 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538"
447 | dependencies:
448 | acorn "^5.0.0"
449 |
450 | acorn@^5.0.0, acorn@^5.5.3:
451 | version "5.7.2"
452 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.2.tgz#91fa871883485d06708800318404e72bfb26dcc5"
453 |
454 | ajv@^6.12.3:
455 | version "6.12.6"
456 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
457 | dependencies:
458 | fast-deep-equal "^3.1.1"
459 | fast-json-stable-stringify "^2.0.0"
460 | json-schema-traverse "^0.4.1"
461 | uri-js "^4.2.2"
462 |
463 | ansi-escapes@^3.0.0:
464 | version "3.1.0"
465 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
466 |
467 | ansi-regex@^2.1.1:
468 | version "2.1.1"
469 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
470 |
471 | ansi-regex@^3.0.0:
472 | version "3.0.0"
473 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
474 |
475 | ansi-regex@^4.0.0, ansi-regex@^4.1.0:
476 | version "4.1.0"
477 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
478 |
479 | ansi-styles@^3.2.0, ansi-styles@^3.2.1:
480 | version "3.2.1"
481 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
482 | dependencies:
483 | color-convert "^1.9.0"
484 |
485 | anymatch@^2.0.0:
486 | version "2.0.0"
487 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
488 | dependencies:
489 | micromatch "^3.1.4"
490 | normalize-path "^2.1.1"
491 |
492 | append-field@^0.1.0:
493 | version "0.1.0"
494 | resolved "https://registry.yarnpkg.com/append-field/-/append-field-0.1.0.tgz#6ddc58fa083c7bc545d3c5995b2830cc2366d44a"
495 |
496 | argparse@^1.0.7:
497 | version "1.0.10"
498 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
499 | dependencies:
500 | sprintf-js "~1.0.2"
501 |
502 | arr-diff@^4.0.0:
503 | version "4.0.0"
504 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
505 |
506 | arr-flatten@^1.1.0:
507 | version "1.1.0"
508 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
509 |
510 | arr-union@^3.1.0:
511 | version "3.1.0"
512 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
513 |
514 | array-equal@^1.0.0:
515 | version "1.0.0"
516 | resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
517 |
518 | array-flatten@1.1.1:
519 | version "1.1.1"
520 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
521 |
522 | array-unique@^0.3.2:
523 | version "0.3.2"
524 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
525 |
526 | asn1@~0.2.3:
527 | version "0.2.4"
528 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
529 | dependencies:
530 | safer-buffer "~2.1.0"
531 |
532 | assert-plus@1.0.0, assert-plus@^1.0.0:
533 | version "1.0.0"
534 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
535 |
536 | assign-symbols@^1.0.0:
537 | version "1.0.0"
538 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
539 |
540 | astral-regex@^1.0.0:
541 | version "1.0.0"
542 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
543 |
544 | async-limiter@~1.0.0:
545 | version "1.0.1"
546 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
547 |
548 | asynckit@^0.4.0:
549 | version "0.4.0"
550 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
551 |
552 | atob@^2.1.1:
553 | version "2.1.2"
554 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
555 |
556 | aws-sign2@~0.7.0:
557 | version "0.7.0"
558 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
559 |
560 | aws4@^1.8.0:
561 | version "1.8.0"
562 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
563 |
564 | axios@0.17.1:
565 | version "0.17.1"
566 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.17.1.tgz#2d8e3e5d0bdbd7327f91bc814f5c57660f81824d"
567 | dependencies:
568 | follow-redirects "^1.2.5"
569 | is-buffer "^1.1.5"
570 |
571 | babel-jest@^24.9.0:
572 | version "24.9.0"
573 | resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54"
574 | dependencies:
575 | "@jest/transform" "^24.9.0"
576 | "@jest/types" "^24.9.0"
577 | "@types/babel__core" "^7.1.0"
578 | babel-plugin-istanbul "^5.1.0"
579 | babel-preset-jest "^24.9.0"
580 | chalk "^2.4.2"
581 | slash "^2.0.0"
582 |
583 | babel-plugin-istanbul@^5.1.0:
584 | version "5.2.0"
585 | resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854"
586 | dependencies:
587 | "@babel/helper-plugin-utils" "^7.0.0"
588 | find-up "^3.0.0"
589 | istanbul-lib-instrument "^3.3.0"
590 | test-exclude "^5.2.3"
591 |
592 | babel-plugin-jest-hoist@^24.9.0:
593 | version "24.9.0"
594 | resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756"
595 | dependencies:
596 | "@types/babel__traverse" "^7.0.6"
597 |
598 | babel-preset-jest@^24.9.0:
599 | version "24.9.0"
600 | resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc"
601 | dependencies:
602 | "@babel/plugin-syntax-object-rest-spread" "^7.0.0"
603 | babel-plugin-jest-hoist "^24.9.0"
604 |
605 | balanced-match@^1.0.0:
606 | version "1.0.0"
607 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
608 |
609 | base@^0.11.1:
610 | version "0.11.2"
611 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
612 | dependencies:
613 | cache-base "^1.0.1"
614 | class-utils "^0.3.5"
615 | component-emitter "^1.2.1"
616 | define-property "^1.0.0"
617 | isobject "^3.0.1"
618 | mixin-deep "^1.2.0"
619 | pascalcase "^0.1.1"
620 |
621 | bcrypt-pbkdf@^1.0.0:
622 | version "1.0.2"
623 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
624 | dependencies:
625 | tweetnacl "^0.14.3"
626 |
627 | bindings@^1.5.0:
628 | version "1.5.0"
629 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
630 | dependencies:
631 | file-uri-to-path "1.0.0"
632 |
633 | body-parser@1.18.2:
634 | version "1.18.2"
635 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
636 | dependencies:
637 | bytes "3.0.0"
638 | content-type "~1.0.4"
639 | debug "2.6.9"
640 | depd "~1.1.1"
641 | http-errors "~1.6.2"
642 | iconv-lite "0.4.19"
643 | on-finished "~2.3.0"
644 | qs "6.5.1"
645 | raw-body "2.3.2"
646 | type-is "~1.6.15"
647 |
648 | brace-expansion@^1.1.7:
649 | version "1.1.11"
650 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
651 | dependencies:
652 | balanced-match "^1.0.0"
653 | concat-map "0.0.1"
654 |
655 | braces@^2.3.1:
656 | version "2.3.2"
657 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
658 | dependencies:
659 | arr-flatten "^1.1.0"
660 | array-unique "^0.3.2"
661 | extend-shallow "^2.0.1"
662 | fill-range "^4.0.0"
663 | isobject "^3.0.1"
664 | repeat-element "^1.1.2"
665 | snapdragon "^0.8.1"
666 | snapdragon-node "^2.0.1"
667 | split-string "^3.0.2"
668 | to-regex "^3.0.1"
669 |
670 | braintree@^2.12.0:
671 | version "2.12.0"
672 | resolved "https://registry.yarnpkg.com/braintree/-/braintree-2.12.0.tgz#4c589401f00a683ddcaf9ece2bc0b1f69b268e28"
673 | dependencies:
674 | "@braintree/wrap-promise" "1.1.1"
675 | dateformat "1.0.1-1.2.3"
676 | depd "~1.1.0"
677 | readable-stream "1.1.10"
678 | semver "5.1.0"
679 | underscore "1.8.3"
680 | xml2js "0.1.13"
681 |
682 | browser-process-hrtime@^0.1.2:
683 | version "0.1.2"
684 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e"
685 |
686 | browser-resolve@^1.11.3:
687 | version "1.11.3"
688 | resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
689 | dependencies:
690 | resolve "1.1.7"
691 |
692 | browserslist@^4.14.5:
693 | version "4.16.3"
694 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717"
695 | dependencies:
696 | caniuse-lite "^1.0.30001181"
697 | colorette "^1.2.1"
698 | electron-to-chromium "^1.3.649"
699 | escalade "^3.1.1"
700 | node-releases "^1.1.70"
701 |
702 | bser@^2.0.0:
703 | version "2.0.0"
704 | resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719"
705 | dependencies:
706 | node-int64 "^0.4.0"
707 |
708 | buffer-from@^1.0.0:
709 | version "1.1.1"
710 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
711 |
712 | builtin-modules@^1.0.0:
713 | version "1.1.1"
714 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
715 |
716 | busboy@^0.2.11:
717 | version "0.2.14"
718 | resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453"
719 | dependencies:
720 | dicer "0.2.5"
721 | readable-stream "1.1.x"
722 |
723 | bytes@3.0.0:
724 | version "3.0.0"
725 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
726 |
727 | cache-base@^1.0.1:
728 | version "1.0.1"
729 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
730 | dependencies:
731 | collection-visit "^1.0.0"
732 | component-emitter "^1.2.1"
733 | get-value "^2.0.6"
734 | has-value "^1.0.0"
735 | isobject "^3.0.1"
736 | set-value "^2.0.0"
737 | to-object-path "^0.3.0"
738 | union-value "^1.0.0"
739 | unset-value "^1.0.0"
740 |
741 | callsites@^3.0.0:
742 | version "3.1.0"
743 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
744 |
745 | camelcase@^5.0.0, camelcase@^5.3.1:
746 | version "5.3.1"
747 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
748 |
749 | caniuse-lite@^1.0.30001181:
750 | version "1.0.30001191"
751 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz#bacb432b6701f690c8c5f7c680166b9a9f0843d9"
752 |
753 | capture-exit@^2.0.0:
754 | version "2.0.0"
755 | resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
756 | dependencies:
757 | rsvp "^4.8.4"
758 |
759 | caseless@~0.12.0:
760 | version "0.12.0"
761 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
762 |
763 | chalk@^2.0.0, chalk@^2.0.1:
764 | version "2.4.1"
765 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
766 | dependencies:
767 | ansi-styles "^3.2.1"
768 | escape-string-regexp "^1.0.5"
769 | supports-color "^5.3.0"
770 |
771 | chalk@^2.4.2:
772 | version "2.4.2"
773 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
774 | dependencies:
775 | ansi-styles "^3.2.1"
776 | escape-string-regexp "^1.0.5"
777 | supports-color "^5.3.0"
778 |
779 | ci-info@^2.0.0:
780 | version "2.0.0"
781 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
782 |
783 | class-utils@^0.3.5:
784 | version "0.3.6"
785 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
786 | dependencies:
787 | arr-union "^3.1.0"
788 | define-property "^0.2.5"
789 | isobject "^3.0.0"
790 | static-extend "^0.1.1"
791 |
792 | cli-color@1.2.0:
793 | version "1.2.0"
794 | resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.2.0.tgz#3a5ae74fd76b6267af666e69e2afbbd01def34d1"
795 | dependencies:
796 | ansi-regex "^2.1.1"
797 | d "1"
798 | es5-ext "^0.10.12"
799 | es6-iterator "2"
800 | memoizee "^0.4.3"
801 | timers-ext "0.1"
802 |
803 | cliui@^5.0.0:
804 | version "5.0.0"
805 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
806 | dependencies:
807 | string-width "^3.1.0"
808 | strip-ansi "^5.2.0"
809 | wrap-ansi "^5.1.0"
810 |
811 | closest-file-data@^0.1.4:
812 | version "0.1.4"
813 | resolved "https://registry.yarnpkg.com/closest-file-data/-/closest-file-data-0.1.4.tgz#975f87c132f299d24a0375b9f63ca3fb88f72b3a"
814 |
815 | co@^4.6.0:
816 | version "4.6.0"
817 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
818 |
819 | collection-visit@^1.0.0:
820 | version "1.0.0"
821 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
822 | dependencies:
823 | map-visit "^1.0.0"
824 | object-visit "^1.0.0"
825 |
826 | color-convert@^1.9.0:
827 | version "1.9.3"
828 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
829 | dependencies:
830 | color-name "1.1.3"
831 |
832 | color-name@1.1.3:
833 | version "1.1.3"
834 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
835 |
836 | colorette@^1.2.1:
837 | version "1.2.1"
838 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
839 |
840 | combined-stream@1.0.6, combined-stream@~1.0.6:
841 | version "1.0.6"
842 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
843 | dependencies:
844 | delayed-stream "~1.0.0"
845 |
846 | component-emitter@^1.2.0, component-emitter@^1.2.1:
847 | version "1.2.1"
848 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
849 |
850 | concat-map@0.0.1:
851 | version "0.0.1"
852 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
853 |
854 | concat-stream@^1.5.0:
855 | version "1.6.2"
856 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
857 | dependencies:
858 | buffer-from "^1.0.0"
859 | inherits "^2.0.3"
860 | readable-stream "^2.2.2"
861 | typedarray "^0.0.6"
862 |
863 | content-disposition@0.5.2:
864 | version "0.5.2"
865 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
866 |
867 | content-type@~1.0.4:
868 | version "1.0.4"
869 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
870 |
871 | convert-source-map@^1.4.0:
872 | version "1.5.1"
873 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
874 |
875 | convert-source-map@^1.7.0:
876 | version "1.7.0"
877 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
878 | dependencies:
879 | safe-buffer "~5.1.1"
880 |
881 | cookie-signature@1.0.6:
882 | version "1.0.6"
883 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
884 |
885 | cookie@0.3.1:
886 | version "0.3.1"
887 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
888 |
889 | cookiejar@^2.1.0:
890 | version "2.1.2"
891 | resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c"
892 |
893 | copy-descriptor@^0.1.0:
894 | version "0.1.1"
895 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
896 |
897 | core-util-is@1.0.2, core-util-is@~1.0.0:
898 | version "1.0.2"
899 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
900 |
901 | cors@2.8.4:
902 | version "2.8.4"
903 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.4.tgz#2bd381f2eb201020105cd50ea59da63090694686"
904 | dependencies:
905 | object-assign "^4"
906 | vary "^1"
907 |
908 | coveralls@^3.0.2:
909 | version "3.1.0"
910 | resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.1.0.tgz#13c754d5e7a2dd8b44fe5269e21ca394fb4d615b"
911 | dependencies:
912 | js-yaml "^3.13.1"
913 | lcov-parse "^1.0.0"
914 | log-driver "^1.2.7"
915 | minimist "^1.2.5"
916 | request "^2.88.2"
917 |
918 | cross-spawn@^6.0.0:
919 | version "6.0.5"
920 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
921 | dependencies:
922 | nice-try "^1.0.4"
923 | path-key "^2.0.1"
924 | semver "^5.5.0"
925 | shebang-command "^1.2.0"
926 | which "^1.2.9"
927 |
928 | cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
929 | version "0.3.4"
930 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797"
931 |
932 | cssstyle@^1.0.0:
933 | version "1.1.1"
934 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb"
935 | dependencies:
936 | cssom "0.3.x"
937 |
938 | d@1:
939 | version "1.0.0"
940 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
941 | dependencies:
942 | es5-ext "^0.10.9"
943 |
944 | dashdash@^1.12.0:
945 | version "1.14.1"
946 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
947 | dependencies:
948 | assert-plus "^1.0.0"
949 |
950 | data-urls@^1.0.0:
951 | version "1.0.1"
952 | resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.0.1.tgz#d416ac3896918f29ca84d81085bc3705834da579"
953 | dependencies:
954 | abab "^2.0.0"
955 | whatwg-mimetype "^2.1.0"
956 | whatwg-url "^7.0.0"
957 |
958 | dateformat@1.0.1-1.2.3:
959 | version "1.0.1-1.2.3"
960 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.1-1.2.3.tgz#2e5d03039eca89f9d8797f99389de5fb0f4aa2fc"
961 |
962 | debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
963 | version "2.6.9"
964 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
965 | dependencies:
966 | ms "2.0.0"
967 |
968 | debug@^3.1.0:
969 | version "3.1.0"
970 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
971 | dependencies:
972 | ms "2.0.0"
973 |
974 | debug@^4.1.0, debug@^4.1.1:
975 | version "4.3.1"
976 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
977 | dependencies:
978 | ms "2.1.2"
979 |
980 | debuglog@0.0.2:
981 | version "0.0.2"
982 | resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-0.0.2.tgz#6c0dcf07e2c3f74524629b741668bd46c7b362eb"
983 |
984 | decamelize@^1.2.0:
985 | version "1.2.0"
986 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
987 |
988 | decode-uri-component@^0.2.0:
989 | version "0.2.0"
990 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
991 |
992 | deep-is@~0.1.3:
993 | version "0.1.3"
994 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
995 |
996 | define-properties@^1.1.2:
997 | version "1.1.3"
998 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
999 | dependencies:
1000 | object-keys "^1.0.12"
1001 |
1002 | define-property@^0.2.5:
1003 | version "0.2.5"
1004 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
1005 | dependencies:
1006 | is-descriptor "^0.1.0"
1007 |
1008 | define-property@^1.0.0:
1009 | version "1.0.0"
1010 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
1011 | dependencies:
1012 | is-descriptor "^1.0.0"
1013 |
1014 | define-property@^2.0.2:
1015 | version "2.0.2"
1016 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
1017 | dependencies:
1018 | is-descriptor "^1.0.2"
1019 | isobject "^3.0.1"
1020 |
1021 | delayed-stream@~1.0.0:
1022 | version "1.0.0"
1023 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
1024 |
1025 | depd@1.1.1:
1026 | version "1.1.1"
1027 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
1028 |
1029 | depd@~1.1.0, depd@~1.1.1, depd@~1.1.2:
1030 | version "1.1.2"
1031 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
1032 |
1033 | deprecate@1.0.0:
1034 | version "1.0.0"
1035 | resolved "https://registry.npmjs.org/deprecate/-/deprecate-1.0.0.tgz#661490ed2428916a6c8883d8834e5646f4e4a4a8"
1036 |
1037 | destroy@~1.0.4:
1038 | version "1.0.4"
1039 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
1040 |
1041 | detect-newline@^2.1.0:
1042 | version "2.1.0"
1043 | resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
1044 |
1045 | dicer@0.2.5:
1046 | version "0.2.5"
1047 | resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f"
1048 | dependencies:
1049 | readable-stream "1.1.x"
1050 | streamsearch "0.1.2"
1051 |
1052 | diff-sequences@^24.9.0:
1053 | version "24.9.0"
1054 | resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5"
1055 |
1056 | domexception@^1.0.1:
1057 | version "1.0.1"
1058 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
1059 | dependencies:
1060 | webidl-conversions "^4.0.2"
1061 |
1062 | dotenv@^8.0.0:
1063 | version "8.2.0"
1064 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
1065 |
1066 | ecc-jsbn@~0.1.1:
1067 | version "0.1.2"
1068 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
1069 | dependencies:
1070 | jsbn "~0.1.0"
1071 | safer-buffer "^2.1.0"
1072 |
1073 | ee-first@1.1.1:
1074 | version "1.1.1"
1075 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
1076 |
1077 | electron-to-chromium@^1.3.649:
1078 | version "1.3.672"
1079 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.672.tgz#3a6e335016dab4bc584d5292adc4f98f54541f6a"
1080 |
1081 | emoji-regex@^7.0.1:
1082 | version "7.0.3"
1083 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
1084 |
1085 | encodeurl@~1.0.2:
1086 | version "1.0.2"
1087 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
1088 |
1089 | end-of-stream@^1.1.0:
1090 | version "1.4.4"
1091 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
1092 | dependencies:
1093 | once "^1.4.0"
1094 |
1095 | error-ex@^1.3.1:
1096 | version "1.3.2"
1097 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
1098 | dependencies:
1099 | is-arrayish "^0.2.1"
1100 |
1101 | es-abstract@^1.5.1:
1102 | version "1.12.0"
1103 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
1104 | dependencies:
1105 | es-to-primitive "^1.1.1"
1106 | function-bind "^1.1.1"
1107 | has "^1.0.1"
1108 | is-callable "^1.1.3"
1109 | is-regex "^1.0.4"
1110 |
1111 | es-to-primitive@^1.1.1:
1112 | version "1.1.1"
1113 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
1114 | dependencies:
1115 | is-callable "^1.1.1"
1116 | is-date-object "^1.0.1"
1117 | is-symbol "^1.0.1"
1118 |
1119 | es5-ext@^0.10.12, es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2:
1120 | version "0.10.46"
1121 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572"
1122 | dependencies:
1123 | es6-iterator "~2.0.3"
1124 | es6-symbol "~3.1.1"
1125 | next-tick "1"
1126 |
1127 | es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.3:
1128 | version "2.0.3"
1129 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
1130 | dependencies:
1131 | d "1"
1132 | es5-ext "^0.10.35"
1133 | es6-symbol "^3.1.1"
1134 |
1135 | es6-symbol@^3.1.1, es6-symbol@~3.1.1:
1136 | version "3.1.1"
1137 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
1138 | dependencies:
1139 | d "1"
1140 | es5-ext "~0.10.14"
1141 |
1142 | es6-weak-map@^2.0.2:
1143 | version "2.0.2"
1144 | resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
1145 | dependencies:
1146 | d "1"
1147 | es5-ext "^0.10.14"
1148 | es6-iterator "^2.0.1"
1149 | es6-symbol "^3.1.1"
1150 |
1151 | escalade@^3.1.1:
1152 | version "3.1.1"
1153 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
1154 |
1155 | escape-html@~1.0.3:
1156 | version "1.0.3"
1157 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
1158 |
1159 | escape-string-regexp@^1.0.5:
1160 | version "1.0.5"
1161 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
1162 |
1163 | escodegen@^1.9.1:
1164 | version "1.11.0"
1165 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589"
1166 | dependencies:
1167 | esprima "^3.1.3"
1168 | estraverse "^4.2.0"
1169 | esutils "^2.0.2"
1170 | optionator "^0.8.1"
1171 | optionalDependencies:
1172 | source-map "~0.6.1"
1173 |
1174 | esprima@^3.1.3:
1175 | version "3.1.3"
1176 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
1177 |
1178 | esprima@^4.0.0:
1179 | version "4.0.1"
1180 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
1181 |
1182 | estraverse@^4.2.0:
1183 | version "4.2.0"
1184 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
1185 |
1186 | esutils@^2.0.2:
1187 | version "2.0.2"
1188 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
1189 |
1190 | etag@~1.8.1:
1191 | version "1.8.1"
1192 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
1193 |
1194 | event-emitter@^0.3.5:
1195 | version "0.3.5"
1196 | resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
1197 | dependencies:
1198 | d "1"
1199 | es5-ext "~0.10.14"
1200 |
1201 | exec-sh@^0.3.2:
1202 | version "0.3.4"
1203 | resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5"
1204 |
1205 | execa@^1.0.0:
1206 | version "1.0.0"
1207 | resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
1208 | dependencies:
1209 | cross-spawn "^6.0.0"
1210 | get-stream "^4.0.0"
1211 | is-stream "^1.1.0"
1212 | npm-run-path "^2.0.0"
1213 | p-finally "^1.0.0"
1214 | signal-exit "^3.0.0"
1215 | strip-eof "^1.0.0"
1216 |
1217 | exit@^0.1.2:
1218 | version "0.1.2"
1219 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
1220 |
1221 | expand-brackets@^2.1.4:
1222 | version "2.1.4"
1223 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
1224 | dependencies:
1225 | debug "^2.3.3"
1226 | define-property "^0.2.5"
1227 | extend-shallow "^2.0.1"
1228 | posix-character-classes "^0.1.0"
1229 | regex-not "^1.0.0"
1230 | snapdragon "^0.8.1"
1231 | to-regex "^3.0.1"
1232 |
1233 | expect@^24.9.0:
1234 | version "24.9.0"
1235 | resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca"
1236 | dependencies:
1237 | "@jest/types" "^24.9.0"
1238 | ansi-styles "^3.2.0"
1239 | jest-get-type "^24.9.0"
1240 | jest-matcher-utils "^24.9.0"
1241 | jest-message-util "^24.9.0"
1242 | jest-regex-util "^24.9.0"
1243 |
1244 | express@4.16.3:
1245 | version "4.16.3"
1246 | resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53"
1247 | dependencies:
1248 | accepts "~1.3.5"
1249 | array-flatten "1.1.1"
1250 | body-parser "1.18.2"
1251 | content-disposition "0.5.2"
1252 | content-type "~1.0.4"
1253 | cookie "0.3.1"
1254 | cookie-signature "1.0.6"
1255 | debug "2.6.9"
1256 | depd "~1.1.2"
1257 | encodeurl "~1.0.2"
1258 | escape-html "~1.0.3"
1259 | etag "~1.8.1"
1260 | finalhandler "1.1.1"
1261 | fresh "0.5.2"
1262 | merge-descriptors "1.0.1"
1263 | methods "~1.1.2"
1264 | on-finished "~2.3.0"
1265 | parseurl "~1.3.2"
1266 | path-to-regexp "0.1.7"
1267 | proxy-addr "~2.0.3"
1268 | qs "6.5.1"
1269 | range-parser "~1.2.0"
1270 | safe-buffer "5.1.1"
1271 | send "0.16.2"
1272 | serve-static "1.13.2"
1273 | setprototypeof "1.1.0"
1274 | statuses "~1.4.0"
1275 | type-is "~1.6.16"
1276 | utils-merge "1.0.1"
1277 | vary "~1.1.2"
1278 |
1279 | extend-shallow@^2.0.1:
1280 | version "2.0.1"
1281 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
1282 | dependencies:
1283 | is-extendable "^0.1.0"
1284 |
1285 | extend-shallow@^3.0.0, extend-shallow@^3.0.2:
1286 | version "3.0.2"
1287 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
1288 | dependencies:
1289 | assign-symbols "^1.0.0"
1290 | is-extendable "^1.0.1"
1291 |
1292 | extend@^3.0.0, extend@~3.0.2:
1293 | version "3.0.2"
1294 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
1295 |
1296 | extglob@^2.0.4:
1297 | version "2.0.4"
1298 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
1299 | dependencies:
1300 | array-unique "^0.3.2"
1301 | define-property "^1.0.0"
1302 | expand-brackets "^2.1.4"
1303 | extend-shallow "^2.0.1"
1304 | fragment-cache "^0.2.1"
1305 | regex-not "^1.0.0"
1306 | snapdragon "^0.8.1"
1307 | to-regex "^3.0.1"
1308 |
1309 | extsprintf@1.3.0:
1310 | version "1.3.0"
1311 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
1312 |
1313 | extsprintf@^1.2.0:
1314 | version "1.4.0"
1315 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
1316 |
1317 | fast-deep-equal@^3.1.1:
1318 | version "3.1.3"
1319 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
1320 |
1321 | fast-json-stable-stringify@^2.0.0:
1322 | version "2.0.0"
1323 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
1324 |
1325 | fast-levenshtein@~2.0.4:
1326 | version "2.0.6"
1327 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
1328 |
1329 | fb-watchman@^2.0.0:
1330 | version "2.0.0"
1331 | resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58"
1332 | dependencies:
1333 | bser "^2.0.0"
1334 |
1335 | file-uri-to-path@1.0.0:
1336 | version "1.0.0"
1337 | resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
1338 |
1339 | fill-range@^4.0.0:
1340 | version "4.0.0"
1341 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
1342 | dependencies:
1343 | extend-shallow "^2.0.1"
1344 | is-number "^3.0.0"
1345 | repeat-string "^1.6.1"
1346 | to-regex-range "^2.1.0"
1347 |
1348 | finalhandler@1.1.1:
1349 | version "1.1.1"
1350 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
1351 | dependencies:
1352 | debug "2.6.9"
1353 | encodeurl "~1.0.2"
1354 | escape-html "~1.0.3"
1355 | on-finished "~2.3.0"
1356 | parseurl "~1.3.2"
1357 | statuses "~1.4.0"
1358 | unpipe "~1.0.0"
1359 |
1360 | find-up@^3.0.0:
1361 | version "3.0.0"
1362 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
1363 | dependencies:
1364 | locate-path "^3.0.0"
1365 |
1366 | follow-redirects@^1.2.5:
1367 | version "1.5.7"
1368 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.7.tgz#a39e4804dacb90202bca76a9e2ac10433ca6a69a"
1369 | dependencies:
1370 | debug "^3.1.0"
1371 |
1372 | for-in@^1.0.2:
1373 | version "1.0.2"
1374 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
1375 |
1376 | forever-agent@~0.6.1:
1377 | version "0.6.1"
1378 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
1379 |
1380 | form-data@^2.3.1, form-data@~2.3.2:
1381 | version "2.3.2"
1382 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099"
1383 | dependencies:
1384 | asynckit "^0.4.0"
1385 | combined-stream "1.0.6"
1386 | mime-types "^2.1.12"
1387 |
1388 | formidable@^1.2.0:
1389 | version "1.2.1"
1390 | resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659"
1391 |
1392 | forwarded@~0.1.2:
1393 | version "0.1.2"
1394 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
1395 |
1396 | fragment-cache@^0.2.1:
1397 | version "0.2.1"
1398 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
1399 | dependencies:
1400 | map-cache "^0.2.2"
1401 |
1402 | fresh@0.5.2:
1403 | version "0.5.2"
1404 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
1405 |
1406 | fs-extra@6.0.1:
1407 | version "6.0.1"
1408 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b"
1409 | dependencies:
1410 | graceful-fs "^4.1.2"
1411 | jsonfile "^4.0.0"
1412 | universalify "^0.1.0"
1413 |
1414 | fs.realpath@^1.0.0:
1415 | version "1.0.0"
1416 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
1417 |
1418 | fsevents@^1.2.7:
1419 | version "1.2.13"
1420 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38"
1421 | dependencies:
1422 | bindings "^1.5.0"
1423 | nan "^2.12.1"
1424 |
1425 | function-bind@^1.1.1:
1426 | version "1.1.1"
1427 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
1428 |
1429 | gensync@^1.0.0-beta.2:
1430 | version "1.0.0-beta.2"
1431 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
1432 |
1433 | get-caller-file@^2.0.1:
1434 | version "2.0.5"
1435 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
1436 |
1437 | get-stream@^4.0.0:
1438 | version "4.1.0"
1439 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
1440 | dependencies:
1441 | pump "^3.0.0"
1442 |
1443 | get-value@^2.0.3, get-value@^2.0.6:
1444 | version "2.0.6"
1445 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
1446 |
1447 | getpass@^0.1.1:
1448 | version "0.1.7"
1449 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
1450 | dependencies:
1451 | assert-plus "^1.0.0"
1452 |
1453 | glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
1454 | version "7.1.6"
1455 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
1456 | dependencies:
1457 | fs.realpath "^1.0.0"
1458 | inflight "^1.0.4"
1459 | inherits "2"
1460 | minimatch "^3.0.4"
1461 | once "^1.3.0"
1462 | path-is-absolute "^1.0.0"
1463 |
1464 | globals@^11.1.0:
1465 | version "11.7.0"
1466 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673"
1467 |
1468 | graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
1469 | version "4.1.11"
1470 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
1471 |
1472 | graceful-fs@^4.1.15:
1473 | version "4.2.6"
1474 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
1475 |
1476 | growly@^1.3.0:
1477 | version "1.3.0"
1478 | resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
1479 |
1480 | har-schema@^2.0.0:
1481 | version "2.0.0"
1482 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
1483 |
1484 | har-validator@~5.1.3:
1485 | version "5.1.5"
1486 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
1487 | dependencies:
1488 | ajv "^6.12.3"
1489 | har-schema "^2.0.0"
1490 |
1491 | has-flag@^3.0.0:
1492 | version "3.0.0"
1493 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
1494 |
1495 | has-value@^0.3.1:
1496 | version "0.3.1"
1497 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
1498 | dependencies:
1499 | get-value "^2.0.3"
1500 | has-values "^0.1.4"
1501 | isobject "^2.0.0"
1502 |
1503 | has-value@^1.0.0:
1504 | version "1.0.0"
1505 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
1506 | dependencies:
1507 | get-value "^2.0.6"
1508 | has-values "^1.0.0"
1509 | isobject "^3.0.0"
1510 |
1511 | has-values@^0.1.4:
1512 | version "0.1.4"
1513 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
1514 |
1515 | has-values@^1.0.0:
1516 | version "1.0.0"
1517 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
1518 | dependencies:
1519 | is-number "^3.0.0"
1520 | kind-of "^4.0.0"
1521 |
1522 | has@^1.0.1:
1523 | version "1.0.3"
1524 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
1525 | dependencies:
1526 | function-bind "^1.1.1"
1527 |
1528 | hosted-git-info@^2.1.4:
1529 | version "2.7.1"
1530 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
1531 |
1532 | html-encoding-sniffer@^1.0.2:
1533 | version "1.0.2"
1534 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
1535 | dependencies:
1536 | whatwg-encoding "^1.0.1"
1537 |
1538 | html-escaper@^2.0.0:
1539 | version "2.0.2"
1540 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
1541 |
1542 | http-errors@1.6.2:
1543 | version "1.6.2"
1544 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
1545 | dependencies:
1546 | depd "1.1.1"
1547 | inherits "2.0.3"
1548 | setprototypeof "1.0.3"
1549 | statuses ">= 1.3.1 < 2"
1550 |
1551 | http-errors@~1.6.2:
1552 | version "1.6.3"
1553 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
1554 | dependencies:
1555 | depd "~1.1.2"
1556 | inherits "2.0.3"
1557 | setprototypeof "1.1.0"
1558 | statuses ">= 1.4.0 < 2"
1559 |
1560 | http-signature@~1.2.0:
1561 | version "1.2.0"
1562 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
1563 | dependencies:
1564 | assert-plus "^1.0.0"
1565 | jsprim "^1.2.2"
1566 | sshpk "^1.7.0"
1567 |
1568 | iconv-lite@0.4.19:
1569 | version "0.4.19"
1570 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
1571 |
1572 | iconv-lite@0.4.23:
1573 | version "0.4.23"
1574 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
1575 | dependencies:
1576 | safer-buffer ">= 2.1.2 < 3"
1577 |
1578 | import-local@^2.0.0:
1579 | version "2.0.0"
1580 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
1581 | dependencies:
1582 | pkg-dir "^3.0.0"
1583 | resolve-cwd "^2.0.0"
1584 |
1585 | imurmurhash@^0.1.4:
1586 | version "0.1.4"
1587 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
1588 |
1589 | inflight@^1.0.4:
1590 | version "1.0.6"
1591 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1592 | dependencies:
1593 | once "^1.3.0"
1594 | wrappy "1"
1595 |
1596 | inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
1597 | version "2.0.3"
1598 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1599 |
1600 | invariant@^2.2.4:
1601 | version "2.2.4"
1602 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
1603 | dependencies:
1604 | loose-envify "^1.0.0"
1605 |
1606 | ipaddr.js@1.8.0:
1607 | version "1.8.0"
1608 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e"
1609 |
1610 | is-accessor-descriptor@^0.1.6:
1611 | version "0.1.6"
1612 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
1613 | dependencies:
1614 | kind-of "^3.0.2"
1615 |
1616 | is-accessor-descriptor@^1.0.0:
1617 | version "1.0.0"
1618 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
1619 | dependencies:
1620 | kind-of "^6.0.0"
1621 |
1622 | is-arrayish@^0.2.1:
1623 | version "0.2.1"
1624 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
1625 |
1626 | is-buffer@^1.1.5:
1627 | version "1.1.6"
1628 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
1629 |
1630 | is-builtin-module@^1.0.0:
1631 | version "1.0.0"
1632 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
1633 | dependencies:
1634 | builtin-modules "^1.0.0"
1635 |
1636 | is-callable@^1.1.1, is-callable@^1.1.3:
1637 | version "1.1.4"
1638 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
1639 |
1640 | is-ci@^2.0.0:
1641 | version "2.0.0"
1642 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
1643 | dependencies:
1644 | ci-info "^2.0.0"
1645 |
1646 | is-data-descriptor@^0.1.4:
1647 | version "0.1.4"
1648 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
1649 | dependencies:
1650 | kind-of "^3.0.2"
1651 |
1652 | is-data-descriptor@^1.0.0:
1653 | version "1.0.0"
1654 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
1655 | dependencies:
1656 | kind-of "^6.0.0"
1657 |
1658 | is-date-object@^1.0.1:
1659 | version "1.0.1"
1660 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
1661 |
1662 | is-descriptor@^0.1.0:
1663 | version "0.1.6"
1664 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
1665 | dependencies:
1666 | is-accessor-descriptor "^0.1.6"
1667 | is-data-descriptor "^0.1.4"
1668 | kind-of "^5.0.0"
1669 |
1670 | is-descriptor@^1.0.0, is-descriptor@^1.0.2:
1671 | version "1.0.2"
1672 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
1673 | dependencies:
1674 | is-accessor-descriptor "^1.0.0"
1675 | is-data-descriptor "^1.0.0"
1676 | kind-of "^6.0.2"
1677 |
1678 | is-extendable@^0.1.0, is-extendable@^0.1.1:
1679 | version "0.1.1"
1680 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
1681 |
1682 | is-extendable@^1.0.1:
1683 | version "1.0.1"
1684 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
1685 | dependencies:
1686 | is-plain-object "^2.0.4"
1687 |
1688 | is-fullwidth-code-point@^2.0.0:
1689 | version "2.0.0"
1690 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
1691 |
1692 | is-generator-fn@^2.0.0:
1693 | version "2.1.0"
1694 | resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
1695 |
1696 | is-number@^3.0.0:
1697 | version "3.0.0"
1698 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
1699 | dependencies:
1700 | kind-of "^3.0.2"
1701 |
1702 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
1703 | version "2.0.4"
1704 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
1705 | dependencies:
1706 | isobject "^3.0.1"
1707 |
1708 | is-promise@^2.1:
1709 | version "2.1.0"
1710 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
1711 |
1712 | is-regex@^1.0.4:
1713 | version "1.0.4"
1714 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
1715 | dependencies:
1716 | has "^1.0.1"
1717 |
1718 | is-stream@^1.1.0:
1719 | version "1.1.0"
1720 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
1721 |
1722 | is-symbol@^1.0.1:
1723 | version "1.0.1"
1724 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
1725 |
1726 | is-typedarray@~1.0.0:
1727 | version "1.0.0"
1728 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
1729 |
1730 | is-windows@^1.0.2:
1731 | version "1.0.2"
1732 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
1733 |
1734 | is-wsl@^1.1.0:
1735 | version "1.1.0"
1736 | resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
1737 |
1738 | isarray@0.0.1:
1739 | version "0.0.1"
1740 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
1741 |
1742 | isarray@1.0.0, isarray@~1.0.0:
1743 | version "1.0.0"
1744 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1745 |
1746 | isexe@^2.0.0:
1747 | version "2.0.0"
1748 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1749 |
1750 | isobject@^2.0.0:
1751 | version "2.1.0"
1752 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
1753 | dependencies:
1754 | isarray "1.0.0"
1755 |
1756 | isobject@^3.0.0, isobject@^3.0.1:
1757 | version "3.0.1"
1758 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
1759 |
1760 | isstream@~0.1.2:
1761 | version "0.1.2"
1762 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
1763 |
1764 | istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5:
1765 | version "2.0.5"
1766 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49"
1767 |
1768 | istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0:
1769 | version "3.3.0"
1770 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630"
1771 | dependencies:
1772 | "@babel/generator" "^7.4.0"
1773 | "@babel/parser" "^7.4.3"
1774 | "@babel/template" "^7.4.0"
1775 | "@babel/traverse" "^7.4.3"
1776 | "@babel/types" "^7.4.0"
1777 | istanbul-lib-coverage "^2.0.5"
1778 | semver "^6.0.0"
1779 |
1780 | istanbul-lib-report@^2.0.4:
1781 | version "2.0.8"
1782 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33"
1783 | dependencies:
1784 | istanbul-lib-coverage "^2.0.5"
1785 | make-dir "^2.1.0"
1786 | supports-color "^6.1.0"
1787 |
1788 | istanbul-lib-source-maps@^3.0.1:
1789 | version "3.0.6"
1790 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8"
1791 | dependencies:
1792 | debug "^4.1.1"
1793 | istanbul-lib-coverage "^2.0.5"
1794 | make-dir "^2.1.0"
1795 | rimraf "^2.6.3"
1796 | source-map "^0.6.1"
1797 |
1798 | istanbul-reports@^2.2.6:
1799 | version "2.2.7"
1800 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931"
1801 | dependencies:
1802 | html-escaper "^2.0.0"
1803 |
1804 | iterare@0.0.8:
1805 | version "0.0.8"
1806 | resolved "https://registry.yarnpkg.com/iterare/-/iterare-0.0.8.tgz#a969a80a1fbff6b78f28776594d7bc2bdfab6aad"
1807 |
1808 | jest-changed-files@^24.9.0:
1809 | version "24.9.0"
1810 | resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039"
1811 | dependencies:
1812 | "@jest/types" "^24.9.0"
1813 | execa "^1.0.0"
1814 | throat "^4.0.0"
1815 |
1816 | jest-cli@^24.9.0:
1817 | version "24.9.0"
1818 | resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af"
1819 | dependencies:
1820 | "@jest/core" "^24.9.0"
1821 | "@jest/test-result" "^24.9.0"
1822 | "@jest/types" "^24.9.0"
1823 | chalk "^2.0.1"
1824 | exit "^0.1.2"
1825 | import-local "^2.0.0"
1826 | is-ci "^2.0.0"
1827 | jest-config "^24.9.0"
1828 | jest-util "^24.9.0"
1829 | jest-validate "^24.9.0"
1830 | prompts "^2.0.1"
1831 | realpath-native "^1.1.0"
1832 | yargs "^13.3.0"
1833 |
1834 | jest-config@^24.9.0:
1835 | version "24.9.0"
1836 | resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5"
1837 | dependencies:
1838 | "@babel/core" "^7.1.0"
1839 | "@jest/test-sequencer" "^24.9.0"
1840 | "@jest/types" "^24.9.0"
1841 | babel-jest "^24.9.0"
1842 | chalk "^2.0.1"
1843 | glob "^7.1.1"
1844 | jest-environment-jsdom "^24.9.0"
1845 | jest-environment-node "^24.9.0"
1846 | jest-get-type "^24.9.0"
1847 | jest-jasmine2 "^24.9.0"
1848 | jest-regex-util "^24.3.0"
1849 | jest-resolve "^24.9.0"
1850 | jest-util "^24.9.0"
1851 | jest-validate "^24.9.0"
1852 | micromatch "^3.1.10"
1853 | pretty-format "^24.9.0"
1854 | realpath-native "^1.1.0"
1855 |
1856 | jest-diff@^24.9.0:
1857 | version "24.9.0"
1858 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da"
1859 | dependencies:
1860 | chalk "^2.0.1"
1861 | diff-sequences "^24.9.0"
1862 | jest-get-type "^24.9.0"
1863 | pretty-format "^24.9.0"
1864 |
1865 | jest-docblock@^24.3.0:
1866 | version "24.9.0"
1867 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2"
1868 | dependencies:
1869 | detect-newline "^2.1.0"
1870 |
1871 | jest-each@^24.9.0:
1872 | version "24.9.0"
1873 | resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05"
1874 | dependencies:
1875 | "@jest/types" "^24.9.0"
1876 | chalk "^2.0.1"
1877 | jest-get-type "^24.9.0"
1878 | jest-util "^24.9.0"
1879 | pretty-format "^24.9.0"
1880 |
1881 | jest-environment-jsdom@^24.9.0:
1882 | version "24.9.0"
1883 | resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b"
1884 | dependencies:
1885 | "@jest/environment" "^24.9.0"
1886 | "@jest/fake-timers" "^24.9.0"
1887 | "@jest/types" "^24.9.0"
1888 | jest-mock "^24.9.0"
1889 | jest-util "^24.9.0"
1890 | jsdom "^11.5.1"
1891 |
1892 | jest-environment-node@^24.9.0:
1893 | version "24.9.0"
1894 | resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3"
1895 | dependencies:
1896 | "@jest/environment" "^24.9.0"
1897 | "@jest/fake-timers" "^24.9.0"
1898 | "@jest/types" "^24.9.0"
1899 | jest-mock "^24.9.0"
1900 | jest-util "^24.9.0"
1901 |
1902 | jest-get-type@^24.9.0:
1903 | version "24.9.0"
1904 | resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e"
1905 |
1906 | jest-haste-map@^24.9.0:
1907 | version "24.9.0"
1908 | resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d"
1909 | dependencies:
1910 | "@jest/types" "^24.9.0"
1911 | anymatch "^2.0.0"
1912 | fb-watchman "^2.0.0"
1913 | graceful-fs "^4.1.15"
1914 | invariant "^2.2.4"
1915 | jest-serializer "^24.9.0"
1916 | jest-util "^24.9.0"
1917 | jest-worker "^24.9.0"
1918 | micromatch "^3.1.10"
1919 | sane "^4.0.3"
1920 | walker "^1.0.7"
1921 | optionalDependencies:
1922 | fsevents "^1.2.7"
1923 |
1924 | jest-jasmine2@^24.9.0:
1925 | version "24.9.0"
1926 | resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0"
1927 | dependencies:
1928 | "@babel/traverse" "^7.1.0"
1929 | "@jest/environment" "^24.9.0"
1930 | "@jest/test-result" "^24.9.0"
1931 | "@jest/types" "^24.9.0"
1932 | chalk "^2.0.1"
1933 | co "^4.6.0"
1934 | expect "^24.9.0"
1935 | is-generator-fn "^2.0.0"
1936 | jest-each "^24.9.0"
1937 | jest-matcher-utils "^24.9.0"
1938 | jest-message-util "^24.9.0"
1939 | jest-runtime "^24.9.0"
1940 | jest-snapshot "^24.9.0"
1941 | jest-util "^24.9.0"
1942 | pretty-format "^24.9.0"
1943 | throat "^4.0.0"
1944 |
1945 | jest-leak-detector@^24.9.0:
1946 | version "24.9.0"
1947 | resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a"
1948 | dependencies:
1949 | jest-get-type "^24.9.0"
1950 | pretty-format "^24.9.0"
1951 |
1952 | jest-matcher-utils@^24.9.0:
1953 | version "24.9.0"
1954 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073"
1955 | dependencies:
1956 | chalk "^2.0.1"
1957 | jest-diff "^24.9.0"
1958 | jest-get-type "^24.9.0"
1959 | pretty-format "^24.9.0"
1960 |
1961 | jest-message-util@^24.9.0:
1962 | version "24.9.0"
1963 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3"
1964 | dependencies:
1965 | "@babel/code-frame" "^7.0.0"
1966 | "@jest/test-result" "^24.9.0"
1967 | "@jest/types" "^24.9.0"
1968 | "@types/stack-utils" "^1.0.1"
1969 | chalk "^2.0.1"
1970 | micromatch "^3.1.10"
1971 | slash "^2.0.0"
1972 | stack-utils "^1.0.1"
1973 |
1974 | jest-mock@^24.9.0:
1975 | version "24.9.0"
1976 | resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6"
1977 | dependencies:
1978 | "@jest/types" "^24.9.0"
1979 |
1980 | jest-pnp-resolver@^1.2.1:
1981 | version "1.2.2"
1982 | resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
1983 |
1984 | jest-regex-util@^24.3.0, jest-regex-util@^24.9.0:
1985 | version "24.9.0"
1986 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636"
1987 |
1988 | jest-resolve-dependencies@^24.9.0:
1989 | version "24.9.0"
1990 | resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab"
1991 | dependencies:
1992 | "@jest/types" "^24.9.0"
1993 | jest-regex-util "^24.3.0"
1994 | jest-snapshot "^24.9.0"
1995 |
1996 | jest-resolve@^24.9.0:
1997 | version "24.9.0"
1998 | resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321"
1999 | dependencies:
2000 | "@jest/types" "^24.9.0"
2001 | browser-resolve "^1.11.3"
2002 | chalk "^2.0.1"
2003 | jest-pnp-resolver "^1.2.1"
2004 | realpath-native "^1.1.0"
2005 |
2006 | jest-runner@^24.9.0:
2007 | version "24.9.0"
2008 | resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42"
2009 | dependencies:
2010 | "@jest/console" "^24.7.1"
2011 | "@jest/environment" "^24.9.0"
2012 | "@jest/test-result" "^24.9.0"
2013 | "@jest/types" "^24.9.0"
2014 | chalk "^2.4.2"
2015 | exit "^0.1.2"
2016 | graceful-fs "^4.1.15"
2017 | jest-config "^24.9.0"
2018 | jest-docblock "^24.3.0"
2019 | jest-haste-map "^24.9.0"
2020 | jest-jasmine2 "^24.9.0"
2021 | jest-leak-detector "^24.9.0"
2022 | jest-message-util "^24.9.0"
2023 | jest-resolve "^24.9.0"
2024 | jest-runtime "^24.9.0"
2025 | jest-util "^24.9.0"
2026 | jest-worker "^24.6.0"
2027 | source-map-support "^0.5.6"
2028 | throat "^4.0.0"
2029 |
2030 | jest-runtime@^24.9.0:
2031 | version "24.9.0"
2032 | resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac"
2033 | dependencies:
2034 | "@jest/console" "^24.7.1"
2035 | "@jest/environment" "^24.9.0"
2036 | "@jest/source-map" "^24.3.0"
2037 | "@jest/transform" "^24.9.0"
2038 | "@jest/types" "^24.9.0"
2039 | "@types/yargs" "^13.0.0"
2040 | chalk "^2.0.1"
2041 | exit "^0.1.2"
2042 | glob "^7.1.3"
2043 | graceful-fs "^4.1.15"
2044 | jest-config "^24.9.0"
2045 | jest-haste-map "^24.9.0"
2046 | jest-message-util "^24.9.0"
2047 | jest-mock "^24.9.0"
2048 | jest-regex-util "^24.3.0"
2049 | jest-resolve "^24.9.0"
2050 | jest-snapshot "^24.9.0"
2051 | jest-util "^24.9.0"
2052 | jest-validate "^24.9.0"
2053 | realpath-native "^1.1.0"
2054 | slash "^2.0.0"
2055 | strip-bom "^3.0.0"
2056 | yargs "^13.3.0"
2057 |
2058 | jest-serializer@^24.9.0:
2059 | version "24.9.0"
2060 | resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73"
2061 |
2062 | jest-snapshot@^24.9.0:
2063 | version "24.9.0"
2064 | resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba"
2065 | dependencies:
2066 | "@babel/types" "^7.0.0"
2067 | "@jest/types" "^24.9.0"
2068 | chalk "^2.0.1"
2069 | expect "^24.9.0"
2070 | jest-diff "^24.9.0"
2071 | jest-get-type "^24.9.0"
2072 | jest-matcher-utils "^24.9.0"
2073 | jest-message-util "^24.9.0"
2074 | jest-resolve "^24.9.0"
2075 | mkdirp "^0.5.1"
2076 | natural-compare "^1.4.0"
2077 | pretty-format "^24.9.0"
2078 | semver "^6.2.0"
2079 |
2080 | jest-util@^24.9.0:
2081 | version "24.9.0"
2082 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162"
2083 | dependencies:
2084 | "@jest/console" "^24.9.0"
2085 | "@jest/fake-timers" "^24.9.0"
2086 | "@jest/source-map" "^24.9.0"
2087 | "@jest/test-result" "^24.9.0"
2088 | "@jest/types" "^24.9.0"
2089 | callsites "^3.0.0"
2090 | chalk "^2.0.1"
2091 | graceful-fs "^4.1.15"
2092 | is-ci "^2.0.0"
2093 | mkdirp "^0.5.1"
2094 | slash "^2.0.0"
2095 | source-map "^0.6.0"
2096 |
2097 | jest-validate@^24.9.0:
2098 | version "24.9.0"
2099 | resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab"
2100 | dependencies:
2101 | "@jest/types" "^24.9.0"
2102 | camelcase "^5.3.1"
2103 | chalk "^2.0.1"
2104 | jest-get-type "^24.9.0"
2105 | leven "^3.1.0"
2106 | pretty-format "^24.9.0"
2107 |
2108 | jest-watcher@^24.9.0:
2109 | version "24.9.0"
2110 | resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b"
2111 | dependencies:
2112 | "@jest/test-result" "^24.9.0"
2113 | "@jest/types" "^24.9.0"
2114 | "@types/yargs" "^13.0.0"
2115 | ansi-escapes "^3.0.0"
2116 | chalk "^2.0.1"
2117 | jest-util "^24.9.0"
2118 | string-length "^2.0.0"
2119 |
2120 | jest-worker@^24.6.0, jest-worker@^24.9.0:
2121 | version "24.9.0"
2122 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5"
2123 | dependencies:
2124 | merge-stream "^2.0.0"
2125 | supports-color "^6.1.0"
2126 |
2127 | jest@^24.9.0:
2128 | version "24.9.0"
2129 | resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171"
2130 | dependencies:
2131 | import-local "^2.0.0"
2132 | jest-cli "^24.9.0"
2133 |
2134 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
2135 | version "4.0.0"
2136 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
2137 |
2138 | js-yaml@^3.13.1:
2139 | version "3.14.1"
2140 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
2141 | dependencies:
2142 | argparse "^1.0.7"
2143 | esprima "^4.0.0"
2144 |
2145 | jsbn@~0.1.0:
2146 | version "0.1.1"
2147 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
2148 |
2149 | jsdom@^11.5.1:
2150 | version "11.12.0"
2151 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8"
2152 | dependencies:
2153 | abab "^2.0.0"
2154 | acorn "^5.5.3"
2155 | acorn-globals "^4.1.0"
2156 | array-equal "^1.0.0"
2157 | cssom ">= 0.3.2 < 0.4.0"
2158 | cssstyle "^1.0.0"
2159 | data-urls "^1.0.0"
2160 | domexception "^1.0.1"
2161 | escodegen "^1.9.1"
2162 | html-encoding-sniffer "^1.0.2"
2163 | left-pad "^1.3.0"
2164 | nwsapi "^2.0.7"
2165 | parse5 "4.0.0"
2166 | pn "^1.1.0"
2167 | request "^2.87.0"
2168 | request-promise-native "^1.0.5"
2169 | sax "^1.2.4"
2170 | symbol-tree "^3.2.2"
2171 | tough-cookie "^2.3.4"
2172 | w3c-hr-time "^1.0.1"
2173 | webidl-conversions "^4.0.2"
2174 | whatwg-encoding "^1.0.3"
2175 | whatwg-mimetype "^2.1.0"
2176 | whatwg-url "^6.4.1"
2177 | ws "^5.2.0"
2178 | xml-name-validator "^3.0.0"
2179 |
2180 | jsesc@^2.5.1:
2181 | version "2.5.1"
2182 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe"
2183 |
2184 | json-parse-better-errors@^1.0.1:
2185 | version "1.0.2"
2186 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
2187 |
2188 | json-schema-traverse@^0.4.1:
2189 | version "0.4.1"
2190 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
2191 |
2192 | json-schema@0.2.3:
2193 | version "0.2.3"
2194 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
2195 |
2196 | json-stringify-safe@~5.0.1:
2197 | version "5.0.1"
2198 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
2199 |
2200 | json5@^0.5.0:
2201 | version "0.5.1"
2202 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
2203 |
2204 | json5@^2.1.2:
2205 | version "2.2.0"
2206 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
2207 | dependencies:
2208 | minimist "^1.2.5"
2209 |
2210 | jsonfile@^4.0.0:
2211 | version "4.0.0"
2212 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
2213 | optionalDependencies:
2214 | graceful-fs "^4.1.6"
2215 |
2216 | jsprim@^1.2.2:
2217 | version "1.4.1"
2218 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
2219 | dependencies:
2220 | assert-plus "1.0.0"
2221 | extsprintf "1.3.0"
2222 | json-schema "0.2.3"
2223 | verror "1.10.0"
2224 |
2225 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
2226 | version "3.2.2"
2227 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
2228 | dependencies:
2229 | is-buffer "^1.1.5"
2230 |
2231 | kind-of@^4.0.0:
2232 | version "4.0.0"
2233 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
2234 | dependencies:
2235 | is-buffer "^1.1.5"
2236 |
2237 | kind-of@^5.0.0:
2238 | version "5.1.0"
2239 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
2240 |
2241 | kind-of@^6.0.0, kind-of@^6.0.2:
2242 | version "6.0.2"
2243 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
2244 |
2245 | kleur@^3.0.3:
2246 | version "3.0.3"
2247 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
2248 |
2249 | lcov-parse@^1.0.0:
2250 | version "1.0.0"
2251 | resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0"
2252 |
2253 | left-pad@^1.3.0:
2254 | version "1.3.0"
2255 | resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e"
2256 |
2257 | leven@^3.1.0:
2258 | version "3.1.0"
2259 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
2260 |
2261 | levn@~0.3.0:
2262 | version "0.3.0"
2263 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
2264 | dependencies:
2265 | prelude-ls "~1.1.2"
2266 | type-check "~0.3.2"
2267 |
2268 | load-json-file@^4.0.0:
2269 | version "4.0.0"
2270 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
2271 | dependencies:
2272 | graceful-fs "^4.1.2"
2273 | parse-json "^4.0.0"
2274 | pify "^3.0.0"
2275 | strip-bom "^3.0.0"
2276 |
2277 | locate-path@^3.0.0:
2278 | version "3.0.0"
2279 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
2280 | dependencies:
2281 | p-locate "^3.0.0"
2282 | path-exists "^3.0.0"
2283 |
2284 | lodash.get@^4.4.2:
2285 | version "4.4.2"
2286 | resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
2287 |
2288 | lodash.set@^4.3.2:
2289 | version "4.3.2"
2290 | resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
2291 |
2292 | lodash.sortby@^4.7.0:
2293 | version "4.7.0"
2294 | resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
2295 |
2296 | lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.19:
2297 | version "4.17.21"
2298 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
2299 |
2300 | log-driver@^1.2.7:
2301 | version "1.2.7"
2302 | resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8"
2303 |
2304 | loose-envify@^1.0.0:
2305 | version "1.4.0"
2306 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
2307 | dependencies:
2308 | js-tokens "^3.0.0 || ^4.0.0"
2309 |
2310 | lru-queue@0.1:
2311 | version "0.1.0"
2312 | resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3"
2313 | dependencies:
2314 | es5-ext "~0.10.2"
2315 |
2316 | make-dir@^2.1.0:
2317 | version "2.1.0"
2318 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
2319 | dependencies:
2320 | pify "^4.0.1"
2321 | semver "^5.6.0"
2322 |
2323 | makeerror@1.0.x:
2324 | version "1.0.11"
2325 | resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
2326 | dependencies:
2327 | tmpl "1.0.x"
2328 |
2329 | map-cache@^0.2.2:
2330 | version "0.2.2"
2331 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
2332 |
2333 | map-visit@^1.0.0:
2334 | version "1.0.0"
2335 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
2336 | dependencies:
2337 | object-visit "^1.0.0"
2338 |
2339 | media-typer@0.3.0:
2340 | version "0.3.0"
2341 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
2342 |
2343 | memoizee@^0.4.3:
2344 | version "0.4.14"
2345 | resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57"
2346 | dependencies:
2347 | d "1"
2348 | es5-ext "^0.10.45"
2349 | es6-weak-map "^2.0.2"
2350 | event-emitter "^0.3.5"
2351 | is-promise "^2.1"
2352 | lru-queue "0.1"
2353 | next-tick "1"
2354 | timers-ext "^0.1.5"
2355 |
2356 | merge-descriptors@1.0.1:
2357 | version "1.0.1"
2358 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
2359 |
2360 | merge-stream@^2.0.0:
2361 | version "2.0.0"
2362 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
2363 |
2364 | methods@^1.1.1, methods@^1.1.2, methods@~1.1.2:
2365 | version "1.1.2"
2366 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
2367 |
2368 | micromatch@^3.1.10, micromatch@^3.1.4:
2369 | version "3.1.10"
2370 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
2371 | dependencies:
2372 | arr-diff "^4.0.0"
2373 | array-unique "^0.3.2"
2374 | braces "^2.3.1"
2375 | define-property "^2.0.2"
2376 | extend-shallow "^3.0.2"
2377 | extglob "^2.0.4"
2378 | fragment-cache "^0.2.1"
2379 | kind-of "^6.0.2"
2380 | nanomatch "^1.2.9"
2381 | object.pick "^1.3.0"
2382 | regex-not "^1.0.0"
2383 | snapdragon "^0.8.1"
2384 | to-regex "^3.0.2"
2385 |
2386 | mime-db@~1.36.0:
2387 | version "1.36.0"
2388 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397"
2389 |
2390 | mime-types@^2.1.12, mime-types@~2.1.18, mime-types@~2.1.19:
2391 | version "2.1.20"
2392 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19"
2393 | dependencies:
2394 | mime-db "~1.36.0"
2395 |
2396 | mime@1.4.1:
2397 | version "1.4.1"
2398 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
2399 |
2400 | mime@^1.4.1:
2401 | version "1.6.0"
2402 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
2403 |
2404 | minimatch@^3.0.4:
2405 | version "3.0.4"
2406 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
2407 | dependencies:
2408 | brace-expansion "^1.1.7"
2409 |
2410 | minimist@0.0.8:
2411 | version "0.0.8"
2412 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
2413 |
2414 | minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5:
2415 | version "1.2.5"
2416 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
2417 |
2418 | mixin-deep@^1.2.0:
2419 | version "1.3.2"
2420 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
2421 | dependencies:
2422 | for-in "^1.0.2"
2423 | is-extendable "^1.0.1"
2424 |
2425 | mkdirp@^0.5.1:
2426 | version "0.5.1"
2427 | resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
2428 | dependencies:
2429 | minimist "0.0.8"
2430 |
2431 | ms@2.0.0:
2432 | version "2.0.0"
2433 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
2434 |
2435 | ms@2.1.2:
2436 | version "2.1.2"
2437 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
2438 |
2439 | multer@1.3.0:
2440 | version "1.3.0"
2441 | resolved "https://registry.yarnpkg.com/multer/-/multer-1.3.0.tgz#092b2670f6846fa4914965efc8cf94c20fec6cd2"
2442 | dependencies:
2443 | append-field "^0.1.0"
2444 | busboy "^0.2.11"
2445 | concat-stream "^1.5.0"
2446 | mkdirp "^0.5.1"
2447 | object-assign "^3.0.0"
2448 | on-finished "^2.3.0"
2449 | type-is "^1.6.4"
2450 | xtend "^4.0.0"
2451 |
2452 | nan@^2.12.1:
2453 | version "2.14.2"
2454 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
2455 |
2456 | nanomatch@^1.2.9:
2457 | version "1.2.13"
2458 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
2459 | dependencies:
2460 | arr-diff "^4.0.0"
2461 | array-unique "^0.3.2"
2462 | define-property "^2.0.2"
2463 | extend-shallow "^3.0.2"
2464 | fragment-cache "^0.2.1"
2465 | is-windows "^1.0.2"
2466 | kind-of "^6.0.2"
2467 | object.pick "^1.3.0"
2468 | regex-not "^1.0.0"
2469 | snapdragon "^0.8.1"
2470 | to-regex "^3.0.1"
2471 |
2472 | natural-compare@^1.4.0:
2473 | version "1.4.0"
2474 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
2475 |
2476 | negotiator@0.6.1:
2477 | version "0.6.1"
2478 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
2479 |
2480 | nestjs-config@^1.2.2:
2481 | version "1.4.7"
2482 | resolved "https://registry.yarnpkg.com/nestjs-config/-/nestjs-config-1.4.7.tgz#901046598c8e4dbd98783caf7bf4cd096484c252"
2483 | dependencies:
2484 | dotenv "^8.0.0"
2485 | glob "^7.1.2"
2486 | lodash.get "^4.4.2"
2487 | lodash.set "^4.3.2"
2488 | reflect-metadata "^0.1.12"
2489 | rxjs "^6.0.0"
2490 |
2491 | next-tick@1:
2492 | version "1.0.0"
2493 | resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
2494 |
2495 | nice-try@^1.0.4:
2496 | version "1.0.5"
2497 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
2498 |
2499 | node-int64@^0.4.0:
2500 | version "0.4.0"
2501 | resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
2502 |
2503 | node-modules-regexp@^1.0.0:
2504 | version "1.0.0"
2505 | resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
2506 |
2507 | node-notifier@^5.4.2:
2508 | version "5.4.3"
2509 | resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50"
2510 | dependencies:
2511 | growly "^1.3.0"
2512 | is-wsl "^1.1.0"
2513 | semver "^5.5.0"
2514 | shellwords "^0.1.1"
2515 | which "^1.3.0"
2516 |
2517 | node-releases@^1.1.70:
2518 | version "1.1.70"
2519 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08"
2520 |
2521 | normalize-package-data@^2.3.2:
2522 | version "2.4.0"
2523 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
2524 | dependencies:
2525 | hosted-git-info "^2.1.4"
2526 | is-builtin-module "^1.0.0"
2527 | semver "2 || 3 || 4 || 5"
2528 | validate-npm-package-license "^3.0.1"
2529 |
2530 | normalize-path@^2.1.1:
2531 | version "2.1.1"
2532 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
2533 | dependencies:
2534 | remove-trailing-separator "^1.0.1"
2535 |
2536 | npm-run-path@^2.0.0:
2537 | version "2.0.2"
2538 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
2539 | dependencies:
2540 | path-key "^2.0.0"
2541 |
2542 | nwsapi@^2.0.7:
2543 | version "2.0.8"
2544 | resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.8.tgz#e3603579b7e162b3dbedae4fb24e46f771d8fa24"
2545 |
2546 | oauth-sign@~0.9.0:
2547 | version "0.9.0"
2548 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
2549 |
2550 | object-assign@^3.0.0:
2551 | version "3.0.0"
2552 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
2553 |
2554 | object-assign@^4:
2555 | version "4.1.1"
2556 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
2557 |
2558 | object-copy@^0.1.0:
2559 | version "0.1.0"
2560 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
2561 | dependencies:
2562 | copy-descriptor "^0.1.0"
2563 | define-property "^0.2.5"
2564 | kind-of "^3.0.3"
2565 |
2566 | object-hash@1.3.0:
2567 | version "1.3.0"
2568 | resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.0.tgz#76d9ba6ff113cf8efc0d996102851fe6723963e2"
2569 |
2570 | object-keys@^1.0.12:
2571 | version "1.0.12"
2572 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
2573 |
2574 | object-visit@^1.0.0:
2575 | version "1.0.1"
2576 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
2577 | dependencies:
2578 | isobject "^3.0.0"
2579 |
2580 | object.getownpropertydescriptors@^2.0.3:
2581 | version "2.0.3"
2582 | resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
2583 | dependencies:
2584 | define-properties "^1.1.2"
2585 | es-abstract "^1.5.1"
2586 |
2587 | object.pick@^1.3.0:
2588 | version "1.3.0"
2589 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
2590 | dependencies:
2591 | isobject "^3.0.1"
2592 |
2593 | on-finished@^2.3.0, on-finished@~2.3.0:
2594 | version "2.3.0"
2595 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
2596 | dependencies:
2597 | ee-first "1.1.1"
2598 |
2599 | once@^1.3.0, once@^1.3.1, once@^1.4.0:
2600 | version "1.4.0"
2601 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
2602 | dependencies:
2603 | wrappy "1"
2604 |
2605 | optional@0.1.4:
2606 | version "0.1.4"
2607 | resolved "https://registry.yarnpkg.com/optional/-/optional-0.1.4.tgz#cdb1a9bedc737d2025f690ceeb50e049444fd5b3"
2608 |
2609 | optionator@^0.8.1:
2610 | version "0.8.2"
2611 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
2612 | dependencies:
2613 | deep-is "~0.1.3"
2614 | fast-levenshtein "~2.0.4"
2615 | levn "~0.3.0"
2616 | prelude-ls "~1.1.2"
2617 | type-check "~0.3.2"
2618 | wordwrap "~1.0.0"
2619 |
2620 | p-each-series@^1.0.0:
2621 | version "1.0.0"
2622 | resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71"
2623 | dependencies:
2624 | p-reduce "^1.0.0"
2625 |
2626 | p-finally@^1.0.0:
2627 | version "1.0.0"
2628 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
2629 |
2630 | p-limit@^2.0.0:
2631 | version "2.3.0"
2632 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
2633 | dependencies:
2634 | p-try "^2.0.0"
2635 |
2636 | p-locate@^3.0.0:
2637 | version "3.0.0"
2638 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
2639 | dependencies:
2640 | p-limit "^2.0.0"
2641 |
2642 | p-reduce@^1.0.0:
2643 | version "1.0.0"
2644 | resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa"
2645 |
2646 | p-try@^2.0.0:
2647 | version "2.2.0"
2648 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
2649 |
2650 | parse-json@^4.0.0:
2651 | version "4.0.0"
2652 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
2653 | dependencies:
2654 | error-ex "^1.3.1"
2655 | json-parse-better-errors "^1.0.1"
2656 |
2657 | parse5@4.0.0:
2658 | version "4.0.0"
2659 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
2660 |
2661 | parseurl@~1.3.2:
2662 | version "1.3.2"
2663 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
2664 |
2665 | pascalcase@^0.1.1:
2666 | version "0.1.1"
2667 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
2668 |
2669 | path-exists@^3.0.0:
2670 | version "3.0.0"
2671 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
2672 |
2673 | path-is-absolute@^1.0.0:
2674 | version "1.0.1"
2675 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
2676 |
2677 | path-key@^2.0.0, path-key@^2.0.1:
2678 | version "2.0.1"
2679 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
2680 |
2681 | path-to-regexp@0.1.7:
2682 | version "0.1.7"
2683 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
2684 |
2685 | path-to-regexp@2.2.1:
2686 | version "2.2.1"
2687 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45"
2688 |
2689 | path-type@^3.0.0:
2690 | version "3.0.0"
2691 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
2692 | dependencies:
2693 | pify "^3.0.0"
2694 |
2695 | performance-now@^2.1.0:
2696 | version "2.1.0"
2697 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
2698 |
2699 | pify@^3.0.0:
2700 | version "3.0.0"
2701 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
2702 |
2703 | pify@^4.0.1:
2704 | version "4.0.1"
2705 | resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
2706 |
2707 | pirates@^4.0.1:
2708 | version "4.0.1"
2709 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
2710 | dependencies:
2711 | node-modules-regexp "^1.0.0"
2712 |
2713 | pkg-dir@^3.0.0:
2714 | version "3.0.0"
2715 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
2716 | dependencies:
2717 | find-up "^3.0.0"
2718 |
2719 | pn@^1.1.0:
2720 | version "1.1.0"
2721 | resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
2722 |
2723 | posix-character-classes@^0.1.0:
2724 | version "0.1.1"
2725 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
2726 |
2727 | prelude-ls@~1.1.2:
2728 | version "1.1.2"
2729 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
2730 |
2731 | prettier@^1.14.2:
2732 | version "1.14.2"
2733 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.2.tgz#0ac1c6e1a90baa22a62925f41963c841983282f9"
2734 |
2735 | pretty-format@^24.9.0:
2736 | version "24.9.0"
2737 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9"
2738 | dependencies:
2739 | "@jest/types" "^24.9.0"
2740 | ansi-regex "^4.0.0"
2741 | ansi-styles "^3.2.0"
2742 | react-is "^16.8.4"
2743 |
2744 | process-nextick-args@~2.0.0:
2745 | version "2.0.0"
2746 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
2747 |
2748 | prompts@^2.0.1:
2749 | version "2.4.0"
2750 | resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7"
2751 | dependencies:
2752 | kleur "^3.0.3"
2753 | sisteransi "^1.0.5"
2754 |
2755 | proxy-addr@~2.0.3:
2756 | version "2.0.4"
2757 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93"
2758 | dependencies:
2759 | forwarded "~0.1.2"
2760 | ipaddr.js "1.8.0"
2761 |
2762 | psl@^1.1.24:
2763 | version "1.1.29"
2764 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67"
2765 |
2766 | psl@^1.1.28:
2767 | version "1.8.0"
2768 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
2769 |
2770 | pump@^3.0.0:
2771 | version "3.0.0"
2772 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
2773 | dependencies:
2774 | end-of-stream "^1.1.0"
2775 | once "^1.3.1"
2776 |
2777 | punycode@^1.4.1:
2778 | version "1.4.1"
2779 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
2780 |
2781 | punycode@^2.1.0, punycode@^2.1.1:
2782 | version "2.1.1"
2783 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
2784 |
2785 | qs@6.5.1:
2786 | version "6.5.1"
2787 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
2788 |
2789 | qs@^6.5.1, qs@~6.5.2:
2790 | version "6.5.2"
2791 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
2792 |
2793 | range-parser@~1.2.0:
2794 | version "1.2.0"
2795 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
2796 |
2797 | raw-body@2.3.2:
2798 | version "2.3.2"
2799 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
2800 | dependencies:
2801 | bytes "3.0.0"
2802 | http-errors "1.6.2"
2803 | iconv-lite "0.4.19"
2804 | unpipe "1.0.0"
2805 |
2806 | react-is@^16.8.4:
2807 | version "16.13.1"
2808 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
2809 |
2810 | read-pkg-up@^4.0.0:
2811 | version "4.0.0"
2812 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978"
2813 | dependencies:
2814 | find-up "^3.0.0"
2815 | read-pkg "^3.0.0"
2816 |
2817 | read-pkg@^3.0.0:
2818 | version "3.0.0"
2819 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
2820 | dependencies:
2821 | load-json-file "^4.0.0"
2822 | normalize-package-data "^2.3.2"
2823 | path-type "^3.0.0"
2824 |
2825 | readable-stream@1.1.10:
2826 | version "1.1.10"
2827 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.10.tgz#d4dc2e5319e9c90d1e71c69390ef62cd90827f65"
2828 | dependencies:
2829 | core-util-is "~1.0.0"
2830 | string_decoder "~0.10.x"
2831 | optionalDependencies:
2832 | debuglog "0.0.2"
2833 |
2834 | readable-stream@1.1.x:
2835 | version "1.1.14"
2836 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
2837 | dependencies:
2838 | core-util-is "~1.0.0"
2839 | inherits "~2.0.1"
2840 | isarray "0.0.1"
2841 | string_decoder "~0.10.x"
2842 |
2843 | readable-stream@^2.2.2, readable-stream@^2.3.5:
2844 | version "2.3.6"
2845 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
2846 | dependencies:
2847 | core-util-is "~1.0.0"
2848 | inherits "~2.0.3"
2849 | isarray "~1.0.0"
2850 | process-nextick-args "~2.0.0"
2851 | safe-buffer "~5.1.1"
2852 | string_decoder "~1.1.1"
2853 | util-deprecate "~1.0.1"
2854 |
2855 | realpath-native@^1.1.0:
2856 | version "1.1.0"
2857 | resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c"
2858 | dependencies:
2859 | util.promisify "^1.0.0"
2860 |
2861 | reflect-metadata@^0.1.12:
2862 | version "0.1.13"
2863 | resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08"
2864 |
2865 | regex-not@^1.0.0, regex-not@^1.0.2:
2866 | version "1.0.2"
2867 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
2868 | dependencies:
2869 | extend-shallow "^3.0.2"
2870 | safe-regex "^1.1.0"
2871 |
2872 | remove-trailing-separator@^1.0.1:
2873 | version "1.1.0"
2874 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
2875 |
2876 | repeat-element@^1.1.2:
2877 | version "1.1.3"
2878 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
2879 |
2880 | repeat-string@^1.6.1:
2881 | version "1.6.1"
2882 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
2883 |
2884 | request-promise-core@1.1.1:
2885 | version "1.1.1"
2886 | resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6"
2887 | dependencies:
2888 | lodash "^4.13.1"
2889 |
2890 | request-promise-native@^1.0.5:
2891 | version "1.0.5"
2892 | resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5"
2893 | dependencies:
2894 | request-promise-core "1.1.1"
2895 | stealthy-require "^1.1.0"
2896 | tough-cookie ">=2.3.3"
2897 |
2898 | request@^2.87.0, request@^2.88.2:
2899 | version "2.88.2"
2900 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
2901 | dependencies:
2902 | aws-sign2 "~0.7.0"
2903 | aws4 "^1.8.0"
2904 | caseless "~0.12.0"
2905 | combined-stream "~1.0.6"
2906 | extend "~3.0.2"
2907 | forever-agent "~0.6.1"
2908 | form-data "~2.3.2"
2909 | har-validator "~5.1.3"
2910 | http-signature "~1.2.0"
2911 | is-typedarray "~1.0.0"
2912 | isstream "~0.1.2"
2913 | json-stringify-safe "~5.0.1"
2914 | mime-types "~2.1.19"
2915 | oauth-sign "~0.9.0"
2916 | performance-now "^2.1.0"
2917 | qs "~6.5.2"
2918 | safe-buffer "^5.1.2"
2919 | tough-cookie "~2.5.0"
2920 | tunnel-agent "^0.6.0"
2921 | uuid "^3.3.2"
2922 |
2923 | require-directory@^2.1.1:
2924 | version "2.1.1"
2925 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
2926 |
2927 | require-main-filename@^2.0.0:
2928 | version "2.0.0"
2929 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
2930 |
2931 | resolve-cwd@^2.0.0:
2932 | version "2.0.0"
2933 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
2934 | dependencies:
2935 | resolve-from "^3.0.0"
2936 |
2937 | resolve-from@^3.0.0:
2938 | version "3.0.0"
2939 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
2940 |
2941 | resolve-url@^0.2.1:
2942 | version "0.2.1"
2943 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
2944 |
2945 | resolve@1.1.7:
2946 | version "1.1.7"
2947 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
2948 |
2949 | ret@~0.1.10:
2950 | version "0.1.15"
2951 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
2952 |
2953 | rimraf@^2.5.4:
2954 | version "2.6.2"
2955 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
2956 | dependencies:
2957 | glob "^7.0.5"
2958 |
2959 | rimraf@^2.6.3:
2960 | version "2.7.1"
2961 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
2962 | dependencies:
2963 | glob "^7.1.3"
2964 |
2965 | rsvp@^4.8.4:
2966 | version "4.8.5"
2967 | resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
2968 |
2969 | rxjs@^6.0.0:
2970 | version "6.2.2"
2971 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.2.tgz#eb75fa3c186ff5289907d06483a77884586e1cf9"
2972 | dependencies:
2973 | tslib "^1.9.0"
2974 |
2975 | safe-buffer@5.1.1:
2976 | version "5.1.1"
2977 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
2978 |
2979 | safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
2980 | version "5.1.2"
2981 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
2982 |
2983 | safe-regex@^1.1.0:
2984 | version "1.1.0"
2985 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
2986 | dependencies:
2987 | ret "~0.1.10"
2988 |
2989 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
2990 | version "2.1.2"
2991 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
2992 |
2993 | sane@^4.0.3:
2994 | version "4.1.0"
2995 | resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded"
2996 | dependencies:
2997 | "@cnakazawa/watch" "^1.0.3"
2998 | anymatch "^2.0.0"
2999 | capture-exit "^2.0.0"
3000 | exec-sh "^0.3.2"
3001 | execa "^1.0.0"
3002 | fb-watchman "^2.0.0"
3003 | micromatch "^3.1.4"
3004 | minimist "^1.1.1"
3005 | walker "~1.0.5"
3006 |
3007 | sax@>=0.1.1, sax@^1.2.4:
3008 | version "1.2.4"
3009 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
3010 |
3011 | "semver@2 || 3 || 4 || 5", semver@^5.5.0:
3012 | version "5.5.1"
3013 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477"
3014 |
3015 | semver@5.1.0:
3016 | version "5.1.0"
3017 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.1.0.tgz#85f2cf8550465c4df000cf7d86f6b054106ab9e5"
3018 |
3019 | semver@7.0.0:
3020 | version "7.0.0"
3021 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
3022 |
3023 | semver@^5.6.0:
3024 | version "5.7.1"
3025 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
3026 |
3027 | semver@^6.0.0, semver@^6.2.0:
3028 | version "6.3.0"
3029 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
3030 |
3031 | send@0.16.2:
3032 | version "0.16.2"
3033 | resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
3034 | dependencies:
3035 | debug "2.6.9"
3036 | depd "~1.1.2"
3037 | destroy "~1.0.4"
3038 | encodeurl "~1.0.2"
3039 | escape-html "~1.0.3"
3040 | etag "~1.8.1"
3041 | fresh "0.5.2"
3042 | http-errors "~1.6.2"
3043 | mime "1.4.1"
3044 | ms "2.0.0"
3045 | on-finished "~2.3.0"
3046 | range-parser "~1.2.0"
3047 | statuses "~1.4.0"
3048 |
3049 | serve-static@1.13.2:
3050 | version "1.13.2"
3051 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
3052 | dependencies:
3053 | encodeurl "~1.0.2"
3054 | escape-html "~1.0.3"
3055 | parseurl "~1.3.2"
3056 | send "0.16.2"
3057 |
3058 | set-blocking@^2.0.0:
3059 | version "2.0.0"
3060 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
3061 |
3062 | set-value@^0.4.3:
3063 | version "0.4.3"
3064 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
3065 | dependencies:
3066 | extend-shallow "^2.0.1"
3067 | is-extendable "^0.1.1"
3068 | is-plain-object "^2.0.1"
3069 | to-object-path "^0.3.0"
3070 |
3071 | set-value@^2.0.0:
3072 | version "2.0.0"
3073 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
3074 | dependencies:
3075 | extend-shallow "^2.0.1"
3076 | is-extendable "^0.1.1"
3077 | is-plain-object "^2.0.3"
3078 | split-string "^3.0.1"
3079 |
3080 | setprototypeof@1.0.3:
3081 | version "1.0.3"
3082 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
3083 |
3084 | setprototypeof@1.1.0:
3085 | version "1.1.0"
3086 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
3087 |
3088 | shebang-command@^1.2.0:
3089 | version "1.2.0"
3090 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
3091 | dependencies:
3092 | shebang-regex "^1.0.0"
3093 |
3094 | shebang-regex@^1.0.0:
3095 | version "1.0.0"
3096 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
3097 |
3098 | shellwords@^0.1.1:
3099 | version "0.1.1"
3100 | resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
3101 |
3102 | signal-exit@^3.0.0, signal-exit@^3.0.2:
3103 | version "3.0.2"
3104 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
3105 |
3106 | sisteransi@^1.0.5:
3107 | version "1.0.5"
3108 | resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
3109 |
3110 | slash@^2.0.0:
3111 | version "2.0.0"
3112 | resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
3113 |
3114 | snapdragon-node@^2.0.1:
3115 | version "2.1.1"
3116 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
3117 | dependencies:
3118 | define-property "^1.0.0"
3119 | isobject "^3.0.0"
3120 | snapdragon-util "^3.0.1"
3121 |
3122 | snapdragon-util@^3.0.1:
3123 | version "3.0.1"
3124 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
3125 | dependencies:
3126 | kind-of "^3.2.0"
3127 |
3128 | snapdragon@^0.8.1:
3129 | version "0.8.2"
3130 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
3131 | dependencies:
3132 | base "^0.11.1"
3133 | debug "^2.2.0"
3134 | define-property "^0.2.5"
3135 | extend-shallow "^2.0.1"
3136 | map-cache "^0.2.2"
3137 | source-map "^0.5.6"
3138 | source-map-resolve "^0.5.0"
3139 | use "^3.1.0"
3140 |
3141 | source-map-resolve@^0.5.0:
3142 | version "0.5.2"
3143 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
3144 | dependencies:
3145 | atob "^2.1.1"
3146 | decode-uri-component "^0.2.0"
3147 | resolve-url "^0.2.1"
3148 | source-map-url "^0.4.0"
3149 | urix "^0.1.0"
3150 |
3151 | source-map-support@^0.5.6:
3152 | version "0.5.9"
3153 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f"
3154 | dependencies:
3155 | buffer-from "^1.0.0"
3156 | source-map "^0.6.0"
3157 |
3158 | source-map-url@^0.4.0:
3159 | version "0.4.0"
3160 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
3161 |
3162 | source-map@^0.5.0, source-map@^0.5.6:
3163 | version "0.5.7"
3164 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
3165 |
3166 | source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
3167 | version "0.6.1"
3168 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
3169 |
3170 | spdx-correct@^3.0.0:
3171 | version "3.0.0"
3172 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82"
3173 | dependencies:
3174 | spdx-expression-parse "^3.0.0"
3175 | spdx-license-ids "^3.0.0"
3176 |
3177 | spdx-exceptions@^2.1.0:
3178 | version "2.1.0"
3179 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9"
3180 |
3181 | spdx-expression-parse@^3.0.0:
3182 | version "3.0.0"
3183 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
3184 | dependencies:
3185 | spdx-exceptions "^2.1.0"
3186 | spdx-license-ids "^3.0.0"
3187 |
3188 | spdx-license-ids@^3.0.0:
3189 | version "3.0.0"
3190 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87"
3191 |
3192 | split-string@^3.0.1, split-string@^3.0.2:
3193 | version "3.1.0"
3194 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
3195 | dependencies:
3196 | extend-shallow "^3.0.0"
3197 |
3198 | sprintf-js@~1.0.2:
3199 | version "1.0.3"
3200 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
3201 |
3202 | sshpk@^1.7.0:
3203 | version "1.14.2"
3204 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98"
3205 | dependencies:
3206 | asn1 "~0.2.3"
3207 | assert-plus "^1.0.0"
3208 | dashdash "^1.12.0"
3209 | getpass "^0.1.1"
3210 | safer-buffer "^2.0.2"
3211 | optionalDependencies:
3212 | bcrypt-pbkdf "^1.0.0"
3213 | ecc-jsbn "~0.1.1"
3214 | jsbn "~0.1.0"
3215 | tweetnacl "~0.14.0"
3216 |
3217 | stack-utils@^1.0.1:
3218 | version "1.0.1"
3219 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620"
3220 |
3221 | static-extend@^0.1.1:
3222 | version "0.1.2"
3223 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
3224 | dependencies:
3225 | define-property "^0.2.5"
3226 | object-copy "^0.1.0"
3227 |
3228 | "statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2":
3229 | version "1.5.0"
3230 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
3231 |
3232 | statuses@~1.4.0:
3233 | version "1.4.0"
3234 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
3235 |
3236 | stealthy-require@^1.1.0:
3237 | version "1.1.1"
3238 | resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
3239 |
3240 | streamsearch@0.1.2:
3241 | version "0.1.2"
3242 | resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a"
3243 |
3244 | string-length@^2.0.0:
3245 | version "2.0.0"
3246 | resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed"
3247 | dependencies:
3248 | astral-regex "^1.0.0"
3249 | strip-ansi "^4.0.0"
3250 |
3251 | string-width@^3.0.0, string-width@^3.1.0:
3252 | version "3.1.0"
3253 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
3254 | dependencies:
3255 | emoji-regex "^7.0.1"
3256 | is-fullwidth-code-point "^2.0.0"
3257 | strip-ansi "^5.1.0"
3258 |
3259 | string_decoder@~0.10.x:
3260 | version "0.10.31"
3261 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
3262 |
3263 | string_decoder@~1.1.1:
3264 | version "1.1.1"
3265 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
3266 | dependencies:
3267 | safe-buffer "~5.1.0"
3268 |
3269 | strip-ansi@^4.0.0:
3270 | version "4.0.0"
3271 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
3272 | dependencies:
3273 | ansi-regex "^3.0.0"
3274 |
3275 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
3276 | version "5.2.0"
3277 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
3278 | dependencies:
3279 | ansi-regex "^4.1.0"
3280 |
3281 | strip-bom@^3.0.0:
3282 | version "3.0.0"
3283 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
3284 |
3285 | strip-eof@^1.0.0:
3286 | version "1.0.0"
3287 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
3288 |
3289 | superagent@^3.8.3:
3290 | version "3.8.3"
3291 | resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128"
3292 | dependencies:
3293 | component-emitter "^1.2.0"
3294 | cookiejar "^2.1.0"
3295 | debug "^3.1.0"
3296 | extend "^3.0.0"
3297 | form-data "^2.3.1"
3298 | formidable "^1.2.0"
3299 | methods "^1.1.1"
3300 | mime "^1.4.1"
3301 | qs "^6.5.1"
3302 | readable-stream "^2.3.5"
3303 |
3304 | supertest@^3.3.0:
3305 | version "3.3.0"
3306 | resolved "https://registry.yarnpkg.com/supertest/-/supertest-3.3.0.tgz#79b27bd7d34392974ab33a31fa51a3e23385987e"
3307 | dependencies:
3308 | methods "^1.1.2"
3309 | superagent "^3.8.3"
3310 |
3311 | supports-color@^5.3.0:
3312 | version "5.5.0"
3313 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
3314 | dependencies:
3315 | has-flag "^3.0.0"
3316 |
3317 | supports-color@^6.1.0:
3318 | version "6.1.0"
3319 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
3320 | dependencies:
3321 | has-flag "^3.0.0"
3322 |
3323 | symbol-tree@^3.2.2:
3324 | version "3.2.2"
3325 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
3326 |
3327 | test-exclude@^5.2.3:
3328 | version "5.2.3"
3329 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0"
3330 | dependencies:
3331 | glob "^7.1.3"
3332 | minimatch "^3.0.4"
3333 | read-pkg-up "^4.0.0"
3334 | require-main-filename "^2.0.0"
3335 |
3336 | throat@^4.0.0:
3337 | version "4.1.0"
3338 | resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
3339 |
3340 | timers-ext@0.1, timers-ext@^0.1.5:
3341 | version "0.1.5"
3342 | resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.5.tgz#77147dd4e76b660c2abb8785db96574cbbd12922"
3343 | dependencies:
3344 | es5-ext "~0.10.14"
3345 | next-tick "1"
3346 |
3347 | tmpl@1.0.x:
3348 | version "1.0.4"
3349 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
3350 |
3351 | to-fast-properties@^2.0.0:
3352 | version "2.0.0"
3353 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
3354 |
3355 | to-object-path@^0.3.0:
3356 | version "0.3.0"
3357 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
3358 | dependencies:
3359 | kind-of "^3.0.2"
3360 |
3361 | to-regex-range@^2.1.0:
3362 | version "2.1.1"
3363 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
3364 | dependencies:
3365 | is-number "^3.0.0"
3366 | repeat-string "^1.6.1"
3367 |
3368 | to-regex@^3.0.1, to-regex@^3.0.2:
3369 | version "3.0.2"
3370 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
3371 | dependencies:
3372 | define-property "^2.0.2"
3373 | extend-shallow "^3.0.2"
3374 | regex-not "^1.0.2"
3375 | safe-regex "^1.1.0"
3376 |
3377 | tough-cookie@>=2.3.3, tough-cookie@^2.3.4:
3378 | version "2.4.3"
3379 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
3380 | dependencies:
3381 | psl "^1.1.24"
3382 | punycode "^1.4.1"
3383 |
3384 | tough-cookie@~2.5.0:
3385 | version "2.5.0"
3386 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
3387 | dependencies:
3388 | psl "^1.1.28"
3389 | punycode "^2.1.1"
3390 |
3391 | tr46@^1.0.1:
3392 | version "1.0.1"
3393 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
3394 | dependencies:
3395 | punycode "^2.1.0"
3396 |
3397 | ts-jest@^23.1.4:
3398 | version "23.1.4"
3399 | resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.1.4.tgz#66ac1d8d3fbf8f9a98432b11aa377aa850664b2b"
3400 | dependencies:
3401 | closest-file-data "^0.1.4"
3402 | fs-extra "6.0.1"
3403 | json5 "^0.5.0"
3404 | lodash "^4.17.10"
3405 |
3406 | tslib@^1.9.0:
3407 | version "1.9.3"
3408 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
3409 |
3410 | tunnel-agent@^0.6.0:
3411 | version "0.6.0"
3412 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
3413 | dependencies:
3414 | safe-buffer "^5.0.1"
3415 |
3416 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
3417 | version "0.14.5"
3418 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
3419 |
3420 | type-check@~0.3.2:
3421 | version "0.3.2"
3422 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
3423 | dependencies:
3424 | prelude-ls "~1.1.2"
3425 |
3426 | type-is@^1.6.4, type-is@~1.6.15, type-is@~1.6.16:
3427 | version "1.6.16"
3428 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
3429 | dependencies:
3430 | media-typer "0.3.0"
3431 | mime-types "~2.1.18"
3432 |
3433 | typedarray@^0.0.6:
3434 | version "0.0.6"
3435 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
3436 |
3437 | typescript@^3.0.3:
3438 | version "3.9.9"
3439 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.9.tgz#e69905c54bc0681d0518bd4d587cc6f2d0b1a674"
3440 |
3441 | underscore@1.8.3:
3442 | version "1.8.3"
3443 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
3444 |
3445 | union-value@^1.0.0:
3446 | version "1.0.0"
3447 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
3448 | dependencies:
3449 | arr-union "^3.1.0"
3450 | get-value "^2.0.6"
3451 | is-extendable "^0.1.1"
3452 | set-value "^0.4.3"
3453 |
3454 | universalify@^0.1.0:
3455 | version "0.1.2"
3456 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
3457 |
3458 | unpipe@1.0.0, unpipe@~1.0.0:
3459 | version "1.0.0"
3460 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
3461 |
3462 | unset-value@^1.0.0:
3463 | version "1.0.0"
3464 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
3465 | dependencies:
3466 | has-value "^0.3.1"
3467 | isobject "^3.0.0"
3468 |
3469 | uri-js@^4.2.2:
3470 | version "4.4.1"
3471 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
3472 | dependencies:
3473 | punycode "^2.1.0"
3474 |
3475 | urix@^0.1.0:
3476 | version "0.1.0"
3477 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
3478 |
3479 | use@^3.1.0:
3480 | version "3.1.1"
3481 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
3482 |
3483 | util-deprecate@~1.0.1:
3484 | version "1.0.2"
3485 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
3486 |
3487 | util.promisify@^1.0.0:
3488 | version "1.0.0"
3489 | resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
3490 | dependencies:
3491 | define-properties "^1.1.2"
3492 | object.getownpropertydescriptors "^2.0.3"
3493 |
3494 | utils-merge@1.0.1:
3495 | version "1.0.1"
3496 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
3497 |
3498 | uuid@^3.3.2:
3499 | version "3.3.2"
3500 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
3501 |
3502 | validate-npm-package-license@^3.0.1:
3503 | version "3.0.4"
3504 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
3505 | dependencies:
3506 | spdx-correct "^3.0.0"
3507 | spdx-expression-parse "^3.0.0"
3508 |
3509 | vary@^1, vary@~1.1.2:
3510 | version "1.1.2"
3511 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
3512 |
3513 | verror@1.10.0:
3514 | version "1.10.0"
3515 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
3516 | dependencies:
3517 | assert-plus "^1.0.0"
3518 | core-util-is "1.0.2"
3519 | extsprintf "^1.2.0"
3520 |
3521 | w3c-hr-time@^1.0.1:
3522 | version "1.0.1"
3523 | resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"
3524 | dependencies:
3525 | browser-process-hrtime "^0.1.2"
3526 |
3527 | walker@^1.0.7, walker@~1.0.5:
3528 | version "1.0.7"
3529 | resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
3530 | dependencies:
3531 | makeerror "1.0.x"
3532 |
3533 | webidl-conversions@^4.0.2:
3534 | version "4.0.2"
3535 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
3536 |
3537 | whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3:
3538 | version "1.0.4"
3539 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz#63fb016b7435b795d9025632c086a5209dbd2621"
3540 | dependencies:
3541 | iconv-lite "0.4.23"
3542 |
3543 | whatwg-mimetype@^2.1.0:
3544 | version "2.1.0"
3545 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz#f0f21d76cbba72362eb609dbed2a30cd17fcc7d4"
3546 |
3547 | whatwg-url@^6.4.1:
3548 | version "6.5.0"
3549 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8"
3550 | dependencies:
3551 | lodash.sortby "^4.7.0"
3552 | tr46 "^1.0.1"
3553 | webidl-conversions "^4.0.2"
3554 |
3555 | whatwg-url@^7.0.0:
3556 | version "7.0.0"
3557 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd"
3558 | dependencies:
3559 | lodash.sortby "^4.7.0"
3560 | tr46 "^1.0.1"
3561 | webidl-conversions "^4.0.2"
3562 |
3563 | which-module@^2.0.0:
3564 | version "2.0.0"
3565 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
3566 |
3567 | which@^1.2.9, which@^1.3.0:
3568 | version "1.3.1"
3569 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
3570 | dependencies:
3571 | isexe "^2.0.0"
3572 |
3573 | wordwrap@~1.0.0:
3574 | version "1.0.0"
3575 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
3576 |
3577 | wrap-ansi@^5.1.0:
3578 | version "5.1.0"
3579 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
3580 | dependencies:
3581 | ansi-styles "^3.2.0"
3582 | string-width "^3.0.0"
3583 | strip-ansi "^5.0.0"
3584 |
3585 | wrappy@1:
3586 | version "1.0.2"
3587 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
3588 |
3589 | write-file-atomic@2.4.1:
3590 | version "2.4.1"
3591 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529"
3592 | dependencies:
3593 | graceful-fs "^4.1.11"
3594 | imurmurhash "^0.1.4"
3595 | signal-exit "^3.0.2"
3596 |
3597 | ws@^5.2.0:
3598 | version "5.2.3"
3599 | resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d"
3600 | dependencies:
3601 | async-limiter "~1.0.0"
3602 |
3603 | xml-name-validator@^3.0.0:
3604 | version "3.0.0"
3605 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
3606 |
3607 | xml2js@0.1.13:
3608 | version "0.1.13"
3609 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.1.13.tgz#438ff3b1d85a51ad659ffc2ebe83403e10c98722"
3610 | dependencies:
3611 | sax ">=0.1.1"
3612 |
3613 | xtend@^4.0.0:
3614 | version "4.0.1"
3615 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
3616 |
3617 | y18n@^4.0.0:
3618 | version "4.0.1"
3619 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
3620 |
3621 | yargs-parser@^13.1.2:
3622 | version "13.1.2"
3623 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
3624 | dependencies:
3625 | camelcase "^5.0.0"
3626 | decamelize "^1.2.0"
3627 |
3628 | yargs@^13.3.0:
3629 | version "13.3.2"
3630 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
3631 | dependencies:
3632 | cliui "^5.0.0"
3633 | find-up "^3.0.0"
3634 | get-caller-file "^2.0.1"
3635 | require-directory "^2.1.1"
3636 | require-main-filename "^2.0.0"
3637 | set-blocking "^2.0.0"
3638 | string-width "^3.0.0"
3639 | which-module "^2.0.0"
3640 | y18n "^4.0.0"
3641 | yargs-parser "^13.1.2"
3642 |
--------------------------------------------------------------------------------