├── examples └── local-mongodb-kafka │ ├── .gitignore │ ├── producer │ ├── package.json │ ├── yarn.lock │ └── index.js │ ├── server │ ├── package.json │ ├── server.js │ └── yarn.lock │ ├── README.md │ └── docker-compose.yml ├── index.js ├── src ├── database │ ├── index.ts │ ├── inmemmory.ts │ └── mongo.ts ├── index.ts ├── types.ts └── EventSource.ts ├── .gitignore ├── lib ├── types.js ├── types.js.map ├── database │ ├── index.js.map │ ├── index.js │ ├── inmemmory.js.map │ ├── inmemmory.js │ ├── mongo.js.map │ └── mongo.js ├── index.js.map ├── index.js ├── EventSource.js.map └── EventSource.js ├── lib.map ├── .prettierrc ├── .npmignore ├── .circleci └── config.yml ├── tsconfig.json ├── LICENSE ├── package.json ├── test ├── EventSource.spec.js └── Mongodb.spec.js ├── README.md └── yarn.lock /examples/local-mongodb-kafka/.gitignore: -------------------------------------------------------------------------------- 1 | zk-*/ -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib'); 2 | -------------------------------------------------------------------------------- /src/database/index.ts: -------------------------------------------------------------------------------- 1 | export { MongoDB } from './mongo'; -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vscode/ 3 | data/ 4 | node_modules/ 5 | *.log 6 | 7 | monitor/build -------------------------------------------------------------------------------- /lib/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | exports.__esModule = true; 3 | //# sourceMappingURL=types.js.map -------------------------------------------------------------------------------- /lib/types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /lib.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"lib","sourceRoot":"","sources":["src/database/Interface.ts"],"names":[],"mappings":";;;;;;QAKA,CAAC"} -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 4, 4 | "semi": true, 5 | "singleQuote": true, 6 | "printWidth": 120 7 | } -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { EventSource } from './EventSource'; 2 | export { MongoDB } from './database/mongo'; 3 | export { Inmemmory } from './database/inmemmory'; 4 | -------------------------------------------------------------------------------- /lib/database/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":";;AAAA,iCAAkC;AAAzB,0BAAA,OAAO,CAAA"} -------------------------------------------------------------------------------- /lib/database/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | exports.__esModule = true; 3 | var mongo_1 = require("./mongo"); 4 | exports.MongoDB = mongo_1.MongoDB; 5 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vscode 3 | data/ 4 | examples/ 5 | integration-tests/ 6 | node_modules/ 7 | src/ 8 | test/ 9 | tests/ 10 | .gitignore 11 | .babelrc 12 | .flowconfig 13 | *.log 14 | 15 | monitor/ -------------------------------------------------------------------------------- /lib/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,6CAA4C;AAAnC,oCAAA,WAAW,CAAA;AACpB,0CAA2C;AAAlC,0BAAA,OAAO,CAAA;AAChB,kDAAiD;AAAxC,gCAAA,SAAS,CAAA"} -------------------------------------------------------------------------------- /examples/local-mongodb-kafka/producer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "producer", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "start": "node ." 8 | }, 9 | "dependencies": { 10 | "faker": "^4.1.0", 11 | "node-rdkafka": "^2.8.0" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/local-mongodb-kafka/server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "1.0.0", 4 | "main": "server.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "start": "nodemon server.js" 8 | }, 9 | "dependencies": { 10 | "express": "^4.17.1", 11 | "node-rdkafka": "^2.8.0", 12 | "nodemon": "^2.0.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | exports.__esModule = true; 3 | var EventSource_1 = require("./EventSource"); 4 | exports.EventSource = EventSource_1.EventSource; 5 | var mongo_1 = require("./database/mongo"); 6 | exports.MongoDB = mongo_1.MongoDB; 7 | var inmemmory_1 = require("./database/inmemmory"); 8 | exports.Inmemmory = inmemmory_1.Inmemmory; 9 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2.1 2 | orbs: 3 | node: circleci/node@1.1.6 4 | jobs: 5 | build-and-test: 6 | executor: 7 | name: node/default 8 | steps: 9 | - checkout 10 | - node/with-cache: 11 | steps: 12 | - run: npm install 13 | - run: npm test 14 | workflows: 15 | build-and-test: 16 | jobs: 17 | - build-and-test -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "noImplicitAny": true, 5 | "removeComments": true, 6 | "preserveConstEnums": true, 7 | "outDir": "./lib", 8 | "sourceMap": true, 9 | "allowSyntheticDefaultImports": true 10 | }, 11 | "include": ["src/**/*"], 12 | "exclude": ["node_modules", "**/*.spec.ts"] 13 | } 14 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | export interface DB { 2 | replaceSnapshot(context: Context, state: Event): Promise; 3 | insertEvent(evt: any): Promise; 4 | getEvents(context: Context, seq?: number): Promise; 5 | getSnapshot(context: Context): Promise | null; 6 | } 7 | 8 | export interface Event { 9 | _id?: string; 10 | seq?: number; 11 | isSnapshot?: boolean; 12 | [key: string]: any; 13 | } 14 | 15 | export type Context = { 16 | name: string; 17 | value: string | number; 18 | } 19 | -------------------------------------------------------------------------------- /src/database/inmemmory.ts: -------------------------------------------------------------------------------- 1 | import { DB, Event, Context } from '../types'; 2 | 3 | export class Inmemmory implements DB { 4 | replaceSnapshot(context: Context, state: Event): Promise { 5 | throw new Error("Method not implemented."); 6 | } 7 | events: Event[] = []; 8 | 9 | insertEvent(evt: any): Promise { 10 | return new Promise(resolve => { 11 | const event = Object.assign({}, evt, { 12 | seq: this.events.length, 13 | }); 14 | this.events.push(event); 15 | resolve(event); 16 | }); 17 | } 18 | getEvents(context: Context, seq?: number): Promise { 19 | return new Promise(resolve => { 20 | resolve([...this.events.filter((e: Event) => e[context.name] === context.value )]); 21 | }); 22 | } 23 | getSnapshot(context: Context): Promise { 24 | return new Promise(resolve => { 25 | resolve(this.events.find(e => e.isSnapshot && e[context.name] === context.value)); 26 | }); 27 | } 28 | } 29 | 30 | export default { Inmemmory }; 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 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 | -------------------------------------------------------------------------------- /examples/local-mongodb-kafka/README.md: -------------------------------------------------------------------------------- 1 | # MongoDB and Kafka Messages 2 | 3 | ## About this example 4 | 5 | This example aims to demonstrate the place where event-sourcing is usually required: reducing a state from a set of events. Althogh the integration with message delivery is out of skope of this project and it is up to the user do descide how to integrate Osiris, I wanted to demonstrate how simpe it is to integrate and how it can work in a real ife solution. 6 | 7 | ## The Staks 8 | 9 | The stack can be loaded with the `docker-comose` and consists of a Kafka cluster with Zookeeper and a MongoDB for storing the events. 10 | 11 | ## What does this example do? 12 | 13 | Set up a kafka cluster to stream messages from a peoducer to a consumer (server) which then can show the state with a basic HTTP API. 14 | 15 | 16 | ## Running this example 17 | 18 | Pre-requisites: 19 | 1. Docker + Docker-compose enabled 20 | 2. NodeJS 21 | 3. yarn (npm i -g yarn) 22 | 23 | Running 24 | 1. Start the stack with `docker-compose up -d` 25 | 2. cd into './server 26 | 3. yarn install && yarn start 27 | 4. in a new terminal: cd into ./producer 28 | 5. yarn install && yarn start 29 | 30 | -------------------------------------------------------------------------------- /lib/database/inmemmory.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"inmemmory.js","sourceRoot":"","sources":["../../src/database/inmemmory.ts"],"names":[],"mappings":";;;;;;;;;AAEA;IAAA;QAII,WAAM,GAAY,EAAE,CAAC;IAqBzB,CAAC;IAxBG,mCAAe,GAAf,UAAgB,OAAgB,EAAE,KAAY;QAC1C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAGD,+BAAW,GAAX,UAAY,GAAQ;QAApB,iBAQC;QAPG,OAAO,IAAI,OAAO,CAAC,UAAA,OAAO;YACtB,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE;gBACjC,GAAG,EAAE,KAAI,CAAC,MAAM,CAAC,MAAM;aAC1B,CAAC,CAAC;YACH,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC;IACD,6BAAS,GAAT,UAAU,OAAgB,EAAE,GAAY;QAAxC,iBAIC;QAHG,OAAO,IAAI,OAAO,CAAC,UAAA,OAAO;YACtB,OAAO,gBAAK,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAC,CAAQ,IAAK,OAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,KAAK,EAAjC,CAAiC,CAAE,EAAE,CAAC;QACvF,CAAC,CAAC,CAAC;IACP,CAAC;IACD,+BAAW,GAAX,UAAY,OAAgB;QAA5B,iBAIC;QAHG,OAAO,IAAI,OAAO,CAAC,UAAA,OAAO;YACtB,OAAO,CAAC,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,KAAK,EAAjD,CAAiD,CAAC,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACP,CAAC;IACL,gBAAC;AAAD,CAAC,AAzBD,IAyBC;AAzBY,8BAAS;AA2BtB,qBAAe,EAAE,SAAS,WAAA,EAAE,CAAC"} -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "osiris-es", 3 | "description": "Event sourcing made easy for nodejs", 4 | "version": "2.2.0", 5 | "main": "index.js", 6 | "repository": "https://github.com/assafg/osiris", 7 | "license": "MIT", 8 | "scripts": { 9 | "test": "yarn build && mocha", 10 | "ts": "tsc --watch", 11 | "build": "tsc", 12 | "prettier": "prettier --write 'src/**'" 13 | }, 14 | "dependencies": { 15 | "aws-sdk": "^2.580.0", 16 | "lodash": "^4.17.15", 17 | "moment": "^2.24.0", 18 | "mongodb": "^3.3.5", 19 | "pg": "^7.14.0", 20 | "typescript": "^3.7.2", 21 | "uuid": "^3.3.3" 22 | }, 23 | "devDependencies": { 24 | "@types/lodash": "^4.14.149", 25 | "@types/mongodb": "^3.3.11", 26 | "@types/pg": "^7.11.2", 27 | "@types/uuid": "^3.4.6", 28 | "chai": "^4.2.0", 29 | "faker": "^4.1.0", 30 | "flow-bin": "^0.112.0", 31 | "mocha": "^7.1.2", 32 | "mongodb-memory-server": "^6.5.2", 33 | "mongojs": "^3.1.0", 34 | "prettier": "1.19.1", 35 | "tape": "^4.11.0" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /examples/local-mongodb-kafka/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2.1" 2 | 3 | services: 4 | zookeeper: 5 | image: zookeeper:3.4.9 6 | hostname: zookeeper 7 | ports: 8 | - "2181:2181" 9 | environment: 10 | ZOO_MY_ID: 1 11 | ZOO_PORT: 2181 12 | ZOO_SERVERS: server.1=zookeeper:2888:3888 13 | volumes: 14 | - ./zk-single-kafka-single/zookeeper/data:/data 15 | - ./zk-single-kafka-single/zookeeper/datalog:/datalog 16 | 17 | kafka: 18 | image: confluentinc/cp-kafka:5.4.1 19 | hostname: kafka 20 | ports: 21 | - "9092:9092" 22 | environment: 23 | KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka:19092,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092 24 | KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT 25 | KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL 26 | KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181" 27 | KAFKA_BROKER_ID: 1 28 | KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO" 29 | KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 30 | volumes: 31 | - ./zk-single-kafka-single/kafka/data:/var/lib/kafka/data 32 | depends_on: 33 | - zookeeper 34 | 35 | mongo: 36 | image: mongo 37 | volumes: 38 | - ${PWD}/mongo-data:/data/db' 39 | ports: 40 | - 27017:27017 41 | restart: always 42 | 43 | 44 | -------------------------------------------------------------------------------- /examples/local-mongodb-kafka/producer/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | bindings@^1.3.1: 6 | version "1.5.0" 7 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" 8 | integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 9 | dependencies: 10 | file-uri-to-path "1.0.0" 11 | 12 | faker@^4.1.0: 13 | version "4.1.0" 14 | resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f" 15 | integrity sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8= 16 | 17 | file-uri-to-path@1.0.0: 18 | version "1.0.0" 19 | resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" 20 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 21 | 22 | nan@^2.14.0: 23 | version "2.14.0" 24 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" 25 | integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== 26 | 27 | node-rdkafka@^2.8.0: 28 | version "2.8.0" 29 | resolved "https://registry.yarnpkg.com/node-rdkafka/-/node-rdkafka-2.8.0.tgz#a434c049d3db5d9f7c5f394446d2e30bf857586c" 30 | integrity sha512-ZjCeUi7LxQIRXGkrUPvXcOnRwMO5vnUrqnDuR0eNbUla1jz1tRfvGYpncg7fdcxzHzT9Ddf8JJvQWpuGEu2DZQ== 31 | dependencies: 32 | bindings "^1.3.1" 33 | nan "^2.14.0" 34 | -------------------------------------------------------------------------------- /lib/database/inmemmory.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __spreadArrays = (this && this.__spreadArrays) || function () { 3 | for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; 4 | for (var r = Array(s), k = 0, i = 0; i < il; i++) 5 | for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) 6 | r[k] = a[j]; 7 | return r; 8 | }; 9 | exports.__esModule = true; 10 | var Inmemmory = (function () { 11 | function Inmemmory() { 12 | this.events = []; 13 | } 14 | Inmemmory.prototype.replaceSnapshot = function (context, state) { 15 | throw new Error("Method not implemented."); 16 | }; 17 | Inmemmory.prototype.insertEvent = function (evt) { 18 | var _this = this; 19 | return new Promise(function (resolve) { 20 | var event = Object.assign({}, evt, { 21 | seq: _this.events.length 22 | }); 23 | _this.events.push(event); 24 | resolve(event); 25 | }); 26 | }; 27 | Inmemmory.prototype.getEvents = function (context, seq) { 28 | var _this = this; 29 | return new Promise(function (resolve) { 30 | resolve(__spreadArrays(_this.events.filter(function (e) { return e[context.name] === context.value; }))); 31 | }); 32 | }; 33 | Inmemmory.prototype.getSnapshot = function (context) { 34 | var _this = this; 35 | return new Promise(function (resolve) { 36 | resolve(_this.events.find(function (e) { return e.isSnapshot && e[context.name] === context.value; })); 37 | }); 38 | }; 39 | return Inmemmory; 40 | }()); 41 | exports.Inmemmory = Inmemmory; 42 | exports["default"] = { Inmemmory: Inmemmory }; 43 | //# sourceMappingURL=inmemmory.js.map -------------------------------------------------------------------------------- /lib/EventSource.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"EventSource.js","sourceRoot":"","sources":["../src/EventSource.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAA6C;AAG7C;IAII,qBAAY,EAAM,EAAE,SAAsB;QAA1C,iBAGC;QAHmB,0BAAA,EAAA,cAAsB;QAS1C,eAAU,GAAG,UAAC,QAAa,EAAE,QAAa,EAAE,GAAW;YACnD,IAAI,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBACrB,OAAO,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;aACxD;YAGD,IAAI,QAAQ,KAAK,IAAI,EAAE;gBACnB,OAAO,IAAI,CAAC;aACf;YACD,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC7C,OAAO,QAAQ,CAAC;aACnB;YACD,IAAI,iBAAQ,CAAC,QAAQ,CAAC,IAAI,iBAAQ,CAAC,QAAQ,CAAC,EAAE;gBAE1C,IAAM,GAAG,GAAU,kBAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAI,CAAC,UAAU,CAAU,CAAC;gBAC3E,OAAO,GAAG,CAAC;aACd;YACD,OAAO,QAAQ,CAAC;QACpB,CAAC,CAAC;QAEF,YAAO,GAAG,UAAC,GAAW,EAAE,GAAU;YAC9B,IAAM,GAAG,GAAG,kBAAS,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAI,CAAC,UAAU,CAAC,CAAC;YACrD,OAAO,GAAG,CAAC;QACf,CAAC,CAAC;QAEF,aAAQ,GAAG,UAAO,OAAgB;;;;4BACb,WAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAA;;wBAA7C,QAAQ,GAAG,SAAkC;wBAEtC,WAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAA;;wBAAtE,MAAM,GAAG,SAA6D;wBAG1E,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,EAAE;4BAC1B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,EAApC,CAAoC,CAAC,CAAC;yBACrE;wBAGD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;4BAChC,WAAO,QAAQ,EAAC;yBACnB;wBAEK,KAAK,GAAU,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;wBAIrD,WAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAA;;wBAAnC,SAAmC,CAAC;wBAGpC,OAAO,KAAK,CAAC,UAAU,CAAC;wBACxB,OAAO,KAAK,CAAC,GAAG,CAAC;wBACjB,WAAO,KAAK,EAAC;;;aAChB,CAAC;QA1DE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,6BAAO,GAAP,UAAQ,GAAU;QACd,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAsDO,8BAAQ,GAAhB,UAAiB,OAAe,EAAE,KAAa;QAEvC,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAEvD,CAAC;IACL,kBAAC;AAAD,CAAC,AAtED,IAsEC;AAtEY,kCAAW;AAwExB,qBAAe,EAAE,WAAW,aAAA,EAAE,CAAC"} -------------------------------------------------------------------------------- /examples/local-mongodb-kafka/server/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const Kafka = require('node-rdkafka'); 3 | 4 | const { EventSource } = require('../../../lib'); 5 | const { MongoDB } = require('../../../lib/database'); 6 | 7 | const app = express(); 8 | const port = 3000; 9 | 10 | (async () => { 11 | const db = new MongoDB('mongodb://localhost:27017/osiris', 'testCollection'); 12 | await db.connect(); 13 | const es = new EventSource(db); 14 | 15 | app.get('/:contextName/:contextValue', async (req, res) => { 16 | const start = Date.now(); 17 | const { contextName, contextValue } = req.params; 18 | const state = await es.getState({ 19 | name: contextName, 20 | value: contextValue, 21 | }); 22 | 23 | res.send(Object.assign({ took: Date.now() - start}, state)); 24 | }); 25 | 26 | app.get('/event/:contextName/:contextValue', async (req, res) => { 27 | const { contextName, contextValue } = req.params; 28 | const all = await db.getEvents({ 29 | name: contextName, 30 | value: contextValue, 31 | }); 32 | res.send(all); 33 | }); 34 | 35 | app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`)); 36 | 37 | consumer.connect((err) => { 38 | if(err) { 39 | console.error(err); 40 | } 41 | }); 42 | 43 | consumer 44 | .on('ready', () => { 45 | consumer.subscribe(['osiris-messages']); 46 | consumer.consume(); 47 | }) 48 | .on('data', async data => { 49 | try { 50 | const message = JSON.parse(data.value.toString()); 51 | await es.onEvent(message); 52 | consumer.commit(data); 53 | } catch (err) { 54 | console.error(err); 55 | } 56 | }); 57 | })(); 58 | 59 | var consumer = new Kafka.KafkaConsumer({ 60 | 'group.id': 'kafka', 61 | 'metadata.broker.list': 'localhost:9092', 62 | 'offset_commit_cb': function(err, topicPartitions) { 63 | if (err) { 64 | // There was an error committing 65 | console.error(err); 66 | } 67 | } 68 | }); 69 | -------------------------------------------------------------------------------- /src/EventSource.ts: -------------------------------------------------------------------------------- 1 | import { mergeWith, isObject } from 'lodash'; 2 | import { DB, Event, Context } from './types'; 3 | 4 | export class EventSource { 5 | db: DB; 6 | aggregate: any; 7 | 8 | constructor(db: DB, aggregate: object = {}) { 9 | this.db = db; 10 | this.aggregate = aggregate; 11 | } 12 | 13 | onEvent(evt: Event) { 14 | return this.db.insertEvent(evt); 15 | } 16 | 17 | customizer = (objValue: any, srcValue: any, key: string): any | null => { 18 | if (this.aggregate[key]) { 19 | return Number(objValue || 0) + Number(srcValue || 0); 20 | } 21 | 22 | // Delete existing value 23 | if (objValue === null) { 24 | return null; 25 | } 26 | if (objValue === null || objValue === undefined) { 27 | return srcValue; 28 | } 29 | if (isObject(objValue) && isObject(srcValue)) { 30 | // const obj = mergeWith(objValue, srcValue, this.customizer); 31 | const obj: Event = mergeWith(objValue, srcValue, this.customizer) as Event; 32 | return obj; 33 | } 34 | return objValue; 35 | }; 36 | 37 | reducer = (acc: object, cur: Event): any => { 38 | const obj = mergeWith({}, cur, acc, this.customizer); 39 | return obj; 40 | }; 41 | 42 | getState = async (context: Context) => { 43 | const snapshot = await this.db.getSnapshot(context); 44 | 45 | let events = await this.db.getEvents(context, snapshot ? snapshot.seq : 0); 46 | 47 | // Find only events after the snapshot 48 | if (snapshot && snapshot.seq) { 49 | events = events.filter(e => e.seq > snapshot.seq || e.isSnapshot); 50 | } 51 | 52 | // No new events beyond the snapshot 53 | if (!events || events.length === 0) { 54 | return snapshot; 55 | } 56 | 57 | const state: Event = events.reduce(this.reducer, {}); 58 | 59 | // async 60 | 61 | await this.snapshot(context, state); 62 | 63 | // clean the state object 64 | delete state.isSnapshot; 65 | delete state.seq; 66 | return state; 67 | }; 68 | 69 | private snapshot(context:Context, state?: Event): Promise { 70 | // setImmediate(() => { 71 | return this.db.replaceSnapshot(context, state); 72 | // }) 73 | } 74 | } 75 | 76 | export default { EventSource }; 77 | -------------------------------------------------------------------------------- /examples/local-mongodb-kafka/producer/index.js: -------------------------------------------------------------------------------- 1 | const Kafka = require('node-rdkafka'); 2 | const faker = require('faker'); 3 | 4 | const producer = new Kafka.Producer({ 5 | 'client.id': 'kafka', 6 | 'metadata.broker.list': 'localhost:9092', 7 | 'compression.codec': 'gzip', 8 | 'retry.backoff.ms': 200, 9 | 'message.send.max.retries': 10, 10 | 'socket.keepalive.enable': true, 11 | 'queue.buffering.max.messages': 100000, 12 | 'queue.buffering.max.ms': 1000, 13 | 'batch.num.messages': 1000000, 14 | dr_cb: true, 15 | }); 16 | 17 | // Connect to the broker manually 18 | producer.connect(); 19 | 20 | // Wait for the ready event before proceeding 21 | producer.on('ready', function() { 22 | try { 23 | // [...Array(30).keys()].forEach(createUser); 24 | 25 | // create a user every 10 second 26 | setInterval(createUser, 10000); 27 | } catch (err) { 28 | console.error('A problem occurred when sending our message'); 29 | console.error(err); 30 | } 31 | }); 32 | 33 | const createUser = () => { 34 | const id = faker.random.uuid(); 35 | 36 | sendMessage({ 37 | id, 38 | email: faker.internet.email(), 39 | }); 40 | 41 | sendMessage({ 42 | id, 43 | name: faker.name.findName(), 44 | }); 45 | 46 | sendMessage({ 47 | id, 48 | address: { 49 | city: faker.address.city(), 50 | streetAddress: faker.address.streetAddress(), 51 | country: faker.address.country(), 52 | zip: faker.address.zipCode(), 53 | }, 54 | }); 55 | }; 56 | 57 | const sendMessage = (msg, topic = 'osiris-messages') => { 58 | console.log('sending', msg.id); 59 | 60 | producer.produce( 61 | // Topic to send the message to 62 | topic, 63 | // optionally we can manually specify a partition for the message 64 | // this defaults to -1 - which will use librdkafka's default partitioner (consistent random for keyed messages, random for unkeyed messages) 65 | null, 66 | // Message to send. Must be a buffer 67 | Buffer.from(JSON.stringify(msg)), 68 | // for keyed messages, we also specify the key - note that this field is optional 69 | 'Stormwind', 70 | // you can send a timestamp here. If your broker version supports it, 71 | // it will get added. Otherwise, we default to 0 72 | Date.now() 73 | // you can send an opaque token here, which gets passed along 74 | // to your delivery reports 75 | ); 76 | }; 77 | -------------------------------------------------------------------------------- /test/EventSource.spec.js: -------------------------------------------------------------------------------- 1 | const test = require('tape'); 2 | const { EventSource } = require('..'); 3 | const { Inmemmory } = require('../lib/database/inmemmory'); 4 | 5 | test('test reducer', function(t) { 6 | const events = [ 7 | { context: 'John Doe', score: 2 }, 8 | { context: 'John Doe', score: 3 }, 9 | { context: 'John Doe', score: 4 }, 10 | { context: 'John Doe', score: 1 }, 11 | ]; 12 | 13 | const simpleState = new EventSource(Inmemmory, 'John Doe'); 14 | const expected1 = { 15 | context: 'John Doe', 16 | score: 1, // last event's value 17 | }; 18 | 19 | let result = events.reduce(simpleState.reducer, {}); 20 | t.deepEqual(result, expected1, 'objects should be equal'); 21 | 22 | const aggregateScore = new EventSource( 23 | {}, 24 | { 25 | score: true, 26 | } 27 | ); 28 | const expected2 = { 29 | context: 'John Doe', 30 | score: 10, 31 | }; 32 | result = events.reduce(aggregateScore.reducer, {}); 33 | t.deepEqual(result, expected2, 'objects should be equal'); 34 | t.end(); 35 | }); 36 | 37 | test('test reducing of complex objects', function(t) { 38 | const events = [ 39 | { context: 'Sherlock', address: { street: 'Baker st' } }, 40 | { context: 'Sherlock', address: { number: 25 } }, 41 | { context: 'Sherlock', address: { city: 'London' } }, 42 | { context: 'Sherlock', profession: 'detective' }, 43 | ]; 44 | 45 | const es = new EventSource(); 46 | const expected = { 47 | context: 'Sherlock', 48 | address: { 49 | street: 'Baker st', 50 | number: 25, 51 | city: 'London', 52 | }, 53 | profession: 'detective', 54 | }; 55 | 56 | const result = events.reduce(es.reducer, {}); 57 | t.deepEqual(result, expected, 'objects should be equal'); 58 | t.end(); 59 | }); 60 | 61 | test('test delete', function(t) { 62 | const events = [ 63 | { context: 'Sherlock', address: { street: 'Baker st' } }, 64 | { context: 'Sherlock', address: { number: 25 } }, 65 | { context: 'Sherlock', address: { city: 'London' } }, 66 | { context: 'Sherlock', address: { number: null } }, 67 | ]; 68 | 69 | const es = new EventSource(); 70 | const expected = { 71 | context: 'Sherlock', 72 | address: { 73 | street: 'Baker st', 74 | number: null, 75 | city: 'London', 76 | }, 77 | }; 78 | 79 | const result = events.reduce(es.reducer, {}); 80 | t.deepEqual(result, expected, 'objects should be equal'); 81 | t.end(); 82 | }); 83 | -------------------------------------------------------------------------------- /lib/database/mongo.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/database/mongo.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAAsD;AACtD,6BAA0B;AAE1B,IAAM,MAAM,GAAG,iBAAiB,CAAC;AACjC;IASI,iBAAY,MAAc,EAAE,cAAsB;QAAlD,iBAGC;QA6DD,gBAAW,GAAG,UAAO,GAAQ;;;;;wBACA,KAAA,CAAA,KAAA,MAAM,CAAA,CAAC,MAAM,CAAA;8BAClC,EAAE;4BACF,GAAG;;4BAEC,GAAG,EAAE,SAAE,EAAE;;wBACJ,WAAM,IAAI,CAAC,oBAAoB,EAAE,EAAA;;wBALxC,SAAS,GAAU,yBAKjB,MAAG,GAAE,SAAiC;sCAEpC;wBAEV,WAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,EAAC;;;aAC/C,CAAC;QAEF,cAAS,GAAG,UAAO,OAAgB,EAAE,GAAe;YAAf,oBAAA,EAAA,OAAe;;;;;;;4BAC1C,KAAK,aAAU,GAAC,OAAO,CAAC,IAAI,IAAG,OAAO,CAAC,KAAK,KAAE,CAAC;4BACrD,IAAI,GAAG,EAAE;gCACL,KAAK,CAAC,GAAG,GAAG;oCACR,IAAI,EAAE,GAAG;iCACZ,CAAC;6BACL;4BACY,WAAM,IAAI,CAAC,UAAU;qCAC7B,IAAI,CAAC,KAAK,CAAC;qCACX,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;qCAChB,OAAO,EAAE,EAAA;;4BAHR,IAAI,GAAG,SAGC;4BAEd,WAAO,IAAI,CAAC,GAAG,CAAC,UAAC,CAAQ;oCACrB,OAAO,CAAC,CAAC,GAAG,CAAC;oCACb,OAAO,CAAC,CAAC;gCACb,CAAC,CAAC,EAAC;;;;SACN,CAAC;QA5FE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACzC,CAAC;IAEK,iCAAe,GAArB,UAAsB,OAAgB,EAAE,KAAY;;;;;;;wBAC1C,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;;;;wBAExC,WAAM,OAAO,CAAC,eAAe,CAAC;;;;gDAC1B,WAAM,IAAI,CAAC,UAAU,CAAC,UAAU,WAAG,GAAC,OAAO,CAAC,IAAI,IAAG,OAAO,CAAC,KAAK,EAAE,aAAU,GAAE,IAAI,MAAG,EAAA;;4CAArF,SAAqF,CAAC;4CACtF,WAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC,EAAC;;;iCAC1E,CAAC,EAAA;;wBAHF,SAGE,CAAA;;;;wBAEF,OAAO,CAAC,GAAG,CAAC,0DAA0D,EAAE,GAAC,CAAC,CAAC;;4BAE3E,WAAM,OAAO,CAAC,UAAU,EAAE,EAAA;;wBAA1B,SAA0B,CAAC;;;;;;KAElC;IAEK,yBAAO,GAAb;;;;;;wBACI,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAW,CAAC,IAAI,CAAC,MAAM,EAAE;4BACxC,eAAe,EAAE,IAAI;4BACrB,kBAAkB,EAAE,IAAI;yBAC3B,CAAC,CAAC;wBAEH,WAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAA;;wBAA5B,SAA4B,CAAC;wBAClB,WAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAA;;wBAA5B,EAAE,GAAG,SAAuB;wBACf,WAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAA;;wBAArD,UAAU,GAAG,SAAwC;wBACzC,WAAM,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAA;;wBAA9C,SAAS,GAAG,SAAkC;wBACpD,UAAU,CAAC,WAAW,CAAC;4BACnB,GAAG,EAAE,CAAC;yBACT,CAAC,CAAC;wBACH,UAAU,CAAC,WAAW,CAAC;4BACnB,GAAG,EAAE,CAAC,CAAC;4BACP,QAAQ,EAAE,CAAC;yBACd,CAAC,CAAC;wBAES,WAAM,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAA;;wBAA9C,GAAG,GAAG,SAAwC;6BAChD,CAAC,GAAG,EAAJ,cAAI;wBACJ,WAAM,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,EAAA;;wBAA7D,SAA6D,CAAC;;;wBAGlE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;wBACb,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;wBAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;;;;;KAC9B;IAEK,4BAAU,GAAhB;;;;4BACI,WAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAA;;wBAA1B,SAA0B,CAAC;;;;;KAC9B;IAEK,sCAAoB,GAA1B;;;;;4BAC6B,WAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAC1D,EAAE,GAAG,EAAE,MAAM,EAAE,EACf,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,CAClC,EAAA;;wBAHK,gBAAgB,GAAG,SAGxB;wBAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;4BACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;yBAC7C;wBAED,WAAO,gBAAgB,CAAC,KAAK,CAAC,cAAc,EAAC;;;;KAChD;IAiCD,6BAAW,GAAX,UAAY,OAAgB;;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,WAAG,GAAC,OAAO,CAAC,IAAI,IAAG,OAAO,CAAC,KAAK,EAAE,aAAU,GAAE,IAAI,MAAG,CAAC;IACxF,CAAC;IAGL,cAAC;AAAD,CAAC,AA7GD,IA6GC;AA7GY,0BAAO;AA+GpB,qBAAe,EAAE,OAAO,SAAA,EAAE,CAAC"} -------------------------------------------------------------------------------- /src/database/mongo.ts: -------------------------------------------------------------------------------- 1 | import { DB, Event, Context } from '../types'; 2 | import { MongoClient, Collection, Db } from 'mongodb'; 3 | import { v1 } from 'uuid'; 4 | 5 | const SEQ_ID = 'osiris-sequence'; 6 | export class MongoDB implements DB { 7 | _client: MongoClient; 8 | db: Db; 9 | collection: Collection; 10 | sequences: Collection; 11 | 12 | dbpath: string; 13 | collectionName: string; 14 | 15 | constructor(dbpath: string, collectionName: string) { 16 | this.dbpath = dbpath; 17 | this.collectionName = collectionName; 18 | } 19 | 20 | async replaceSnapshot(context: Context, state: Event): Promise{ 21 | const session = this._client.startSession(); 22 | try{ 23 | await session.withTransaction(async () => { 24 | await this.collection.deleteMany({ [context.name]: context.value, isSnapshot: true }); 25 | return this.insertEvent(Object.assign({}, state, { isSnapshot: true})); 26 | }) 27 | } catch(e){ 28 | console.log('The transaction was aborted due to an unexpected error: ', e); 29 | } finally { 30 | await session.endSession(); 31 | } 32 | } 33 | 34 | async connect() { 35 | this._client = new MongoClient(this.dbpath, { 36 | useNewUrlParser: true, 37 | useUnifiedTopology: true, 38 | }); 39 | 40 | await this._client.connect(); 41 | const db = await this._client.db(); 42 | const collection = await db.collection(this.collectionName); 43 | const sequences = await db.collection('__sequences'); 44 | collection.createIndex({ 45 | seq: 1, 46 | }); 47 | collection.createIndex({ 48 | seq: -1, 49 | snapshot: 1, 50 | }); 51 | 52 | const seq = await sequences.findOne({ _id: SEQ_ID }); 53 | if (!seq) { 54 | await sequences.insertOne({ _id: SEQ_ID, sequence_value: 1 }); 55 | } 56 | 57 | this.db = db; 58 | this.collection = collection; 59 | this.sequences = sequences; 60 | } 61 | 62 | async disconnect() { 63 | await this._client.close(); 64 | } 65 | 66 | async getNextSequenceValue() { 67 | const sequenceDocument = await this.sequences.findOneAndUpdate( 68 | { _id: SEQ_ID }, 69 | { $inc: { sequence_value: 1 } }, 70 | ); 71 | 72 | if (!sequenceDocument.value) { 73 | throw new Error('invalid sequence value'); 74 | } 75 | 76 | return sequenceDocument.value.sequence_value; 77 | } 78 | 79 | insertEvent = async (evt: any) => { 80 | const decorated: Event = Object.assign( 81 | {}, 82 | evt, 83 | { 84 | _id: v1(), 85 | seq: await this.getNextSequenceValue(), 86 | }, 87 | ) as Event; 88 | 89 | return this.collection.insertOne(decorated); 90 | }; 91 | 92 | getEvents = async (context: Context, seq: number = 0): Promise => { 93 | const query: any = { [context.name]: context.value }; 94 | if (seq) { 95 | query.seq = { 96 | $gte: seq, 97 | }; 98 | } 99 | const docs = await this.collection 100 | .find(query) 101 | .sort({ seq: 1 }) 102 | .toArray(); 103 | 104 | return docs.map((l: Event) => { 105 | delete l._id; 106 | return l; 107 | }); 108 | }; 109 | 110 | getSnapshot(context: Context): Promise { 111 | return this.collection.findOne({ [context.name]: context.value, isSnapshot: true }); 112 | } 113 | 114 | 115 | } 116 | 117 | export default { MongoDB }; 118 | -------------------------------------------------------------------------------- /test/Mongodb.spec.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai'); 2 | const { MongoMemoryServer } = require('mongodb-memory-server'); 3 | const { EventSource } = require('../lib'); 4 | const { MongoDB } = require('../lib/database'); 5 | 6 | const { MongoClient } = require('mongodb'); 7 | 8 | describe('Test the Event source over mongodb', () => { 9 | const mongod = new MongoMemoryServer(); 10 | let db; 11 | let es; 12 | 13 | before(async () => { 14 | const uri = await mongod.getUri(); 15 | db = new MongoDB(`${uri}`, 'testCollection'); 16 | await db.connect(); 17 | es = new EventSource(db); 18 | }); 19 | 20 | after(async () => { 21 | console.log('After'); 22 | 23 | db.disconnect(); 24 | await mongod.stop(); 25 | }); 26 | 27 | it('should test the event source on a new DB', async () => { 28 | const context = { 29 | name: 'name', 30 | value: 'John Snow', 31 | }; 32 | 33 | await es.onEvent({ 34 | name: context.value, 35 | isOnline: true, 36 | }); 37 | 38 | let state = await es.getState(context); 39 | 40 | expect(state).to.deep.equal({ 41 | name: context.value, 42 | isOnline: true, 43 | }); 44 | 45 | await es.onEvent({ 46 | name: context.value, 47 | isOnline: false, 48 | }); 49 | 50 | state = await es.getState(context); 51 | 52 | expect(state).to.deep.equal({ 53 | name: context.value, 54 | isOnline: false, 55 | }); 56 | 57 | const events = await db.getEvents(context); 58 | expect([ 59 | { name: 'John Snow', isOnline: true, seq: 1 }, 60 | { name: 'John Snow', isOnline: false, seq: 3 }, 61 | { name: 'John Snow', isOnline: false, seq: 4, isSnapshot: true }, 62 | ]).to.deep.equal(events); 63 | 64 | await es.onEvent({ 65 | name: context.value, 66 | afterSnapshot: true, 67 | }); 68 | 69 | return new Promise(res => { 70 | setImmediate(async () => { 71 | const events = await db.getEvents(context); 72 | expect([ 73 | { name: 'John Snow', isOnline: true, seq: 1 }, 74 | { name: 'John Snow', isOnline: false, seq: 3 }, 75 | { name: 'John Snow', isOnline: false, seq: 4, isSnapshot: true }, 76 | { name: 'John Snow', afterSnapshot:true, seq: 5 }, 77 | ]).to.deep.equal(events); 78 | res(); 79 | }) 80 | }) 81 | 82 | }); 83 | 84 | it('should count the number of living characters', async () => { 85 | const es = new EventSource(db); 86 | await es.onEvent({ 87 | name: 'Daenerys Targaryen', 88 | isAlive: true, 89 | }); 90 | await es.onEvent({ 91 | name: 'Ned Stark', 92 | isAlive: true, 93 | }); 94 | 95 | await es.onEvent({ 96 | name: 'John Snow', 97 | isAlive: true, 98 | }); 99 | 100 | await es.onEvent({ 101 | name: 'John Snow', 102 | isAlive: false, 103 | }); 104 | 105 | await es.onEvent({ 106 | name: 'Arya Stark', 107 | isAlive: true, 108 | }); 109 | 110 | await es.onEvent({ 111 | name: 'John Snow', 112 | isAlive: true, 113 | }); 114 | 115 | await es.onEvent({ 116 | name: 'Arya Stark', 117 | isAlive: true, 118 | }); 119 | 120 | await es.onEvent({ 121 | name: 'Ned Stark', 122 | isAlive: false, 123 | }); 124 | 125 | await es.onEvent({ 126 | name: 'Tyrion Lannister', 127 | isAlive: true, 128 | }); 129 | 130 | await es.onEvent({ 131 | name: 'Daenerys Targaryen', 132 | isAlive: false, 133 | }); 134 | 135 | const uri = await mongod.getUri(); 136 | 137 | const client = await MongoClient.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true }); 138 | 139 | const _db = await client.db(); 140 | const col = await _db.collection('testCollection'); 141 | 142 | const docs = await col 143 | .aggregate([ 144 | { $match: { isAlive: { $exists: true } } }, // find all events related to the query 145 | { $sort: { seq: 1 } }, 146 | { 147 | $group: { 148 | _id: '$name', 149 | isAlive: { 150 | $last: '$isAlive', 151 | }, 152 | }, 153 | }, 154 | { $match: { isAlive: true } }, 155 | ]) 156 | .toArray(); 157 | 158 | const names = docs.map(d => d._id).sort(); 159 | 160 | expect(names).to.deep.equal(['Arya Stark', 'John Snow', 'Tyrion Lannister']); 161 | 162 | client.close(); 163 | }); 164 | }); 165 | -------------------------------------------------------------------------------- /lib/EventSource.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | var __generator = (this && this.__generator) || function (thisArg, body) { 12 | var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; 13 | return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; 14 | function verb(n) { return function (v) { return step([n, v]); }; } 15 | function step(op) { 16 | if (f) throw new TypeError("Generator is already executing."); 17 | while (_) try { 18 | if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 19 | if (y = 0, t) op = [op[0] & 2, t.value]; 20 | switch (op[0]) { 21 | case 0: case 1: t = op; break; 22 | case 4: _.label++; return { value: op[1], done: false }; 23 | case 5: _.label++; y = op[1]; op = [0]; continue; 24 | case 7: op = _.ops.pop(); _.trys.pop(); continue; 25 | default: 26 | if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } 27 | if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } 28 | if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } 29 | if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } 30 | if (t[2]) _.ops.pop(); 31 | _.trys.pop(); continue; 32 | } 33 | op = body.call(thisArg, _); 34 | } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } 35 | if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; 36 | } 37 | }; 38 | exports.__esModule = true; 39 | var lodash_1 = require("lodash"); 40 | var EventSource = (function () { 41 | function EventSource(db, aggregate) { 42 | var _this = this; 43 | if (aggregate === void 0) { aggregate = {}; } 44 | this.customizer = function (objValue, srcValue, key) { 45 | if (_this.aggregate[key]) { 46 | return Number(objValue || 0) + Number(srcValue || 0); 47 | } 48 | if (objValue === null) { 49 | return null; 50 | } 51 | if (objValue === null || objValue === undefined) { 52 | return srcValue; 53 | } 54 | if (lodash_1.isObject(objValue) && lodash_1.isObject(srcValue)) { 55 | var obj = lodash_1.mergeWith(objValue, srcValue, _this.customizer); 56 | return obj; 57 | } 58 | return objValue; 59 | }; 60 | this.reducer = function (acc, cur) { 61 | var obj = lodash_1.mergeWith({}, cur, acc, _this.customizer); 62 | return obj; 63 | }; 64 | this.getState = function (context) { return __awaiter(_this, void 0, void 0, function () { 65 | var snapshot, events, state; 66 | return __generator(this, function (_a) { 67 | switch (_a.label) { 68 | case 0: return [4, this.db.getSnapshot(context)]; 69 | case 1: 70 | snapshot = _a.sent(); 71 | return [4, this.db.getEvents(context, snapshot ? snapshot.seq : 0)]; 72 | case 2: 73 | events = _a.sent(); 74 | if (snapshot && snapshot.seq) { 75 | events = events.filter(function (e) { return e.seq > snapshot.seq || e.isSnapshot; }); 76 | } 77 | if (!events || events.length === 0) { 78 | return [2, snapshot]; 79 | } 80 | state = events.reduce(this.reducer, {}); 81 | return [4, this.snapshot(context, state)]; 82 | case 3: 83 | _a.sent(); 84 | delete state.isSnapshot; 85 | delete state.seq; 86 | return [2, state]; 87 | } 88 | }); 89 | }); }; 90 | this.db = db; 91 | this.aggregate = aggregate; 92 | } 93 | EventSource.prototype.onEvent = function (evt) { 94 | return this.db.insertEvent(evt); 95 | }; 96 | EventSource.prototype.snapshot = function (context, state) { 97 | return this.db.replaceSnapshot(context, state); 98 | }; 99 | return EventSource; 100 | }()); 101 | exports.EventSource = EventSource; 102 | exports["default"] = { EventSource: EventSource }; 103 | //# sourceMappingURL=EventSource.js.map -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Osiris 2 | ## Simple event sourcing for nodejs (Beta) 3 | > Osiris is an Egyptian god, identified as the god of the afterlife, the underworld, and the dead, 4 | > but more appropriately as the god of transition, resurrection, and regeneration 5 | 6 | This project tries to make event sourcing simple and straight forward. 7 | 8 | *If you're new to Event Sourcing a good reference can be found [here](http://microservices.io/patterns/data/event-sourcing.html)* 9 | 10 | ### Usage 11 | 12 | ``` 13 | npm install osiris-es --save 14 | ``` 15 | or 16 | ``` 17 | yarn add osiris-es 18 | ``` 19 | 20 | Once installed you can use the main EventSource class to store and manage any model as an event-source 21 | 22 | The EventSource class was writtern to be abstracted away from the underlying database. Since the pattern is very generic and can manage creating states from almosta ny data model, an underlying document DB such as MongoDB is ideal in keeping the mechanism generic. 23 | 24 | ```javascript 25 | 26 | const { EventSource, MongoDB } = require('osiris-es'); 27 | const db = new MongoDB('mongodb://localhost:27017/my-db', 'my-collection'); 28 | await db.connect(); 29 | // initialize the EventSource with the DB connector 30 | const es = new EventSource(db); 31 | ... 32 | 33 | es.onEvent({ 34 | name: 'Bob', 35 | company: 'Hooly', 36 | ... 37 | }) 38 | 39 | es.onEvent({ 40 | name: 'Bob', 41 | title: 'VP Past Mistakes', 42 | ... 43 | }) 44 | 45 | const context = { 46 | name: 'name', // the property we want to source by 47 | value: 'Bob', // the value we want to source by 48 | } 49 | 50 | es.getState(context) 51 | .then(state => { 52 | console.log(state); 53 | /* 54 | { 55 | name: 'Bob', 56 | company: 'Hooly', 57 | title: 'VP Past Mistakes', 58 | } 59 | */ 60 | }) 61 | .catch(err => { 62 | console.error(err); 63 | }); 64 | 65 | ``` 66 | 67 | You can also ask the EventSource to aggregate specific fields: 68 | 69 | ```javascript 70 | ... 71 | const es = new EventSource(db, { 72 | overtime: true 73 | }); 74 | ... 75 | 76 | es.onEvent({ 77 | name: 'Bob', 78 | overtime: 1 79 | }) 80 | es.onEvent({ 81 | name: 'Bob', 82 | overtime: 3 83 | }) 84 | 85 | es.getState(context) 86 | .then(state => { 87 | console.log(state); 88 | /* 89 | { 90 | name: 'Bob', 91 | overtime: 4, 92 | } 93 | */ 94 | }) 95 | .catch(err => { 96 | console.error(err); 97 | }); 98 | 99 | ``` 100 | 101 | ### What is "Context" 102 | Since we are storing generic events that may or may not have a common denominator, when requesting a state we pass a `contxt` which is a property name and value. The `context` is the "subject" fot the query. Let's say I'm storing user information. If I want the state of a specific user, I will choose a unique user identifier as the context name and the specific user's id ass the value. If I want the state of a company (aggregated state of all the events for the specific company, then context's name will be the company's identifier (e.g. "company-name") and the value will be the company's name. 103 | Consider the following sourced events: 104 | 105 | ``` 106 | { name: 'bob', company: 'acme', salary: 1000, seq: 1000 } 107 | { name: 'jane', company: 'acme', salary: 2000, seq: 1001 } 108 | { name: 'nancy', company: 'acme', salary: 4000, seq: 1002 } 109 | { name: 'bob', company: 'globex', salary: 1500, seq: 1003 } 110 | { company: 'acme', addrss: '2514 Maryland Avenue, Polk City, FL', seq: 1004} 111 | ``` 112 | To get the state of 'bob': 113 | ```javascript 114 | const es = new EventSource(db); 115 | es.getState({ 116 | name: 'name', 117 | value: 'bob' 118 | }).then(state => { 119 | // State should be: { name: 'bob', company: 'globex', salary: 1500, seq: 1003 } 120 | ) 121 | ``` 122 | and to get the state of 'acme' company: 123 | ```javascript 124 | const es = new EventSource(db, { salary: true }); 125 | es.getState({ 126 | name: 'company', 127 | name: 'acme' 128 | }).then(state => { 129 | // State should be: 130 | /* 131 | { 132 | name: 'nancy', 133 | company: 'acme', 134 | salary: 7000, 135 | addrss: '2514 Maryland Avenue, Polk City, FL', 136 | seq: 1004 137 | } 138 | */ 139 | //Notice that the salary is the aggregation of all the salaries and the name is the name of the last employee event's name - 'nancy' 140 | ) 141 | 142 | ``` 143 | Using different *contexts* for a single store can be tricky and may require specific indices and a more fine-grained aggregation 144 | behavior. 145 | The intention of this library is to provide a simple solution for explicit use cases and ***not*** to cover all the edge-cases. in the example above a better approach would be to create a separate store for the company state. 146 | 147 | ### Snapshot 148 | Over time the number of events can get large and the time to retrieve and reduce the state can be time-consuming therefore we create snapshots that will be the basis of next states' calculation. Currently, the snapshot is taken automatically if on state retrieval there are over 1000 events (this passive approach can be dangerous a state is created infrequently - in this case a snapshot should be created actively by calling `es.snapshot()`. 149 | 150 | ### Supported Databases 151 | - MongoDB 152 | 153 | I have removed the support for Postgres and DynamoDB in favor for a mor generic suport and tests in MongoDB. The support for other DBs may be added in the future 154 | 155 | ## Next Steps: 156 | - Better Documentation and API Documentation 157 | - Tests 158 | - More DB Implementations 159 | - More examples 160 | - Support for archiving / deleting records 161 | -------------------------------------------------------------------------------- /lib/database/mongo.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | var __generator = (this && this.__generator) || function (thisArg, body) { 12 | var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; 13 | return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; 14 | function verb(n) { return function (v) { return step([n, v]); }; } 15 | function step(op) { 16 | if (f) throw new TypeError("Generator is already executing."); 17 | while (_) try { 18 | if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 19 | if (y = 0, t) op = [op[0] & 2, t.value]; 20 | switch (op[0]) { 21 | case 0: case 1: t = op; break; 22 | case 4: _.label++; return { value: op[1], done: false }; 23 | case 5: _.label++; y = op[1]; op = [0]; continue; 24 | case 7: op = _.ops.pop(); _.trys.pop(); continue; 25 | default: 26 | if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } 27 | if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } 28 | if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } 29 | if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } 30 | if (t[2]) _.ops.pop(); 31 | _.trys.pop(); continue; 32 | } 33 | op = body.call(thisArg, _); 34 | } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } 35 | if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; 36 | } 37 | }; 38 | exports.__esModule = true; 39 | var mongodb_1 = require("mongodb"); 40 | var uuid_1 = require("uuid"); 41 | var SEQ_ID = 'osiris-sequence'; 42 | var MongoDB = (function () { 43 | function MongoDB(dbpath, collectionName) { 44 | var _this = this; 45 | this.insertEvent = function (evt) { return __awaiter(_this, void 0, void 0, function () { 46 | var decorated, _a, _b, _c, _d; 47 | return __generator(this, function (_e) { 48 | switch (_e.label) { 49 | case 0: 50 | _b = (_a = Object).assign; 51 | _c = [{}, 52 | evt]; 53 | _d = { 54 | _id: uuid_1.v1() 55 | }; 56 | return [4, this.getNextSequenceValue()]; 57 | case 1: 58 | decorated = _b.apply(_a, _c.concat([(_d.seq = _e.sent(), 59 | _d)])); 60 | return [2, this.collection.insertOne(decorated)]; 61 | } 62 | }); 63 | }); }; 64 | this.getEvents = function (context, seq) { 65 | if (seq === void 0) { seq = 0; } 66 | return __awaiter(_this, void 0, void 0, function () { 67 | var query, docs; 68 | var _a; 69 | return __generator(this, function (_b) { 70 | switch (_b.label) { 71 | case 0: 72 | query = (_a = {}, _a[context.name] = context.value, _a); 73 | if (seq) { 74 | query.seq = { 75 | $gte: seq 76 | }; 77 | } 78 | return [4, this.collection 79 | .find(query) 80 | .sort({ seq: 1 }) 81 | .toArray()]; 82 | case 1: 83 | docs = _b.sent(); 84 | return [2, docs.map(function (l) { 85 | delete l._id; 86 | return l; 87 | })]; 88 | } 89 | }); 90 | }); 91 | }; 92 | this.dbpath = dbpath; 93 | this.collectionName = collectionName; 94 | } 95 | MongoDB.prototype.replaceSnapshot = function (context, state) { 96 | return __awaiter(this, void 0, void 0, function () { 97 | var session, e_1; 98 | var _this = this; 99 | return __generator(this, function (_a) { 100 | switch (_a.label) { 101 | case 0: 102 | session = this._client.startSession(); 103 | _a.label = 1; 104 | case 1: 105 | _a.trys.push([1, 3, 4, 6]); 106 | return [4, session.withTransaction(function () { return __awaiter(_this, void 0, void 0, function () { 107 | var _a; 108 | return __generator(this, function (_b) { 109 | switch (_b.label) { 110 | case 0: return [4, this.collection.deleteMany((_a = {}, _a[context.name] = context.value, _a.isSnapshot = true, _a))]; 111 | case 1: 112 | _b.sent(); 113 | return [2, this.insertEvent(Object.assign({}, state, { isSnapshot: true }))]; 114 | } 115 | }); 116 | }); })]; 117 | case 2: 118 | _a.sent(); 119 | return [3, 6]; 120 | case 3: 121 | e_1 = _a.sent(); 122 | console.log('The transaction was aborted due to an unexpected error: ', e_1); 123 | return [3, 6]; 124 | case 4: return [4, session.endSession()]; 125 | case 5: 126 | _a.sent(); 127 | return [7]; 128 | case 6: return [2]; 129 | } 130 | }); 131 | }); 132 | }; 133 | MongoDB.prototype.connect = function () { 134 | return __awaiter(this, void 0, void 0, function () { 135 | var db, collection, sequences, seq; 136 | return __generator(this, function (_a) { 137 | switch (_a.label) { 138 | case 0: 139 | this._client = new mongodb_1.MongoClient(this.dbpath, { 140 | useNewUrlParser: true, 141 | useUnifiedTopology: true 142 | }); 143 | return [4, this._client.connect()]; 144 | case 1: 145 | _a.sent(); 146 | return [4, this._client.db()]; 147 | case 2: 148 | db = _a.sent(); 149 | return [4, db.collection(this.collectionName)]; 150 | case 3: 151 | collection = _a.sent(); 152 | return [4, db.collection('__sequences')]; 153 | case 4: 154 | sequences = _a.sent(); 155 | collection.createIndex({ 156 | seq: 1 157 | }); 158 | collection.createIndex({ 159 | seq: -1, 160 | snapshot: 1 161 | }); 162 | return [4, sequences.findOne({ _id: SEQ_ID })]; 163 | case 5: 164 | seq = _a.sent(); 165 | if (!!seq) return [3, 7]; 166 | return [4, sequences.insertOne({ _id: SEQ_ID, sequence_value: 1 })]; 167 | case 6: 168 | _a.sent(); 169 | _a.label = 7; 170 | case 7: 171 | this.db = db; 172 | this.collection = collection; 173 | this.sequences = sequences; 174 | return [2]; 175 | } 176 | }); 177 | }); 178 | }; 179 | MongoDB.prototype.disconnect = function () { 180 | return __awaiter(this, void 0, void 0, function () { 181 | return __generator(this, function (_a) { 182 | switch (_a.label) { 183 | case 0: return [4, this._client.close()]; 184 | case 1: 185 | _a.sent(); 186 | return [2]; 187 | } 188 | }); 189 | }); 190 | }; 191 | MongoDB.prototype.getNextSequenceValue = function () { 192 | return __awaiter(this, void 0, void 0, function () { 193 | var sequenceDocument; 194 | return __generator(this, function (_a) { 195 | switch (_a.label) { 196 | case 0: return [4, this.sequences.findOneAndUpdate({ _id: SEQ_ID }, { $inc: { sequence_value: 1 } })]; 197 | case 1: 198 | sequenceDocument = _a.sent(); 199 | if (!sequenceDocument.value) { 200 | throw new Error('invalid sequence value'); 201 | } 202 | return [2, sequenceDocument.value.sequence_value]; 203 | } 204 | }); 205 | }); 206 | }; 207 | MongoDB.prototype.getSnapshot = function (context) { 208 | var _a; 209 | return this.collection.findOne((_a = {}, _a[context.name] = context.value, _a.isSnapshot = true, _a)); 210 | }; 211 | return MongoDB; 212 | }()); 213 | exports.MongoDB = MongoDB; 214 | exports["default"] = { MongoDB: MongoDB }; 215 | //# sourceMappingURL=mongo.js.map -------------------------------------------------------------------------------- /examples/local-mongodb-kafka/server/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@sindresorhus/is@^0.14.0": 6 | version "0.14.0" 7 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" 8 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== 9 | 10 | "@szmarczak/http-timer@^1.1.2": 11 | version "1.1.2" 12 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" 13 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== 14 | dependencies: 15 | defer-to-connect "^1.0.1" 16 | 17 | "@types/color-name@^1.1.1": 18 | version "1.1.1" 19 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 20 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 21 | 22 | abbrev@1: 23 | version "1.1.1" 24 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 25 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 26 | 27 | accepts@~1.3.7: 28 | version "1.3.7" 29 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 30 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 31 | dependencies: 32 | mime-types "~2.1.24" 33 | negotiator "0.6.2" 34 | 35 | ansi-align@^3.0.0: 36 | version "3.0.0" 37 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" 38 | integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== 39 | dependencies: 40 | string-width "^3.0.0" 41 | 42 | ansi-regex@^4.1.0: 43 | version "4.1.0" 44 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 45 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 46 | 47 | ansi-regex@^5.0.0: 48 | version "5.0.0" 49 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 50 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 51 | 52 | ansi-styles@^4.1.0: 53 | version "4.2.1" 54 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 55 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 56 | dependencies: 57 | "@types/color-name" "^1.1.1" 58 | color-convert "^2.0.1" 59 | 60 | anymatch@~3.1.1: 61 | version "3.1.1" 62 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 63 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 64 | dependencies: 65 | normalize-path "^3.0.0" 66 | picomatch "^2.0.4" 67 | 68 | array-flatten@1.1.1: 69 | version "1.1.1" 70 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 71 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 72 | 73 | balanced-match@^1.0.0: 74 | version "1.0.0" 75 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 76 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 77 | 78 | binary-extensions@^2.0.0: 79 | version "2.0.0" 80 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" 81 | integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== 82 | 83 | bindings@^1.3.1: 84 | version "1.5.0" 85 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" 86 | integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 87 | dependencies: 88 | file-uri-to-path "1.0.0" 89 | 90 | body-parser@1.19.0: 91 | version "1.19.0" 92 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 93 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 94 | dependencies: 95 | bytes "3.1.0" 96 | content-type "~1.0.4" 97 | debug "2.6.9" 98 | depd "~1.1.2" 99 | http-errors "1.7.2" 100 | iconv-lite "0.4.24" 101 | on-finished "~2.3.0" 102 | qs "6.7.0" 103 | raw-body "2.4.0" 104 | type-is "~1.6.17" 105 | 106 | boxen@^4.2.0: 107 | version "4.2.0" 108 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" 109 | integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== 110 | dependencies: 111 | ansi-align "^3.0.0" 112 | camelcase "^5.3.1" 113 | chalk "^3.0.0" 114 | cli-boxes "^2.2.0" 115 | string-width "^4.1.0" 116 | term-size "^2.1.0" 117 | type-fest "^0.8.1" 118 | widest-line "^3.1.0" 119 | 120 | brace-expansion@^1.1.7: 121 | version "1.1.11" 122 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 123 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 124 | dependencies: 125 | balanced-match "^1.0.0" 126 | concat-map "0.0.1" 127 | 128 | braces@~3.0.2: 129 | version "3.0.2" 130 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 131 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 132 | dependencies: 133 | fill-range "^7.0.1" 134 | 135 | bytes@3.1.0: 136 | version "3.1.0" 137 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 138 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 139 | 140 | cacheable-request@^6.0.0: 141 | version "6.1.0" 142 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" 143 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== 144 | dependencies: 145 | clone-response "^1.0.2" 146 | get-stream "^5.1.0" 147 | http-cache-semantics "^4.0.0" 148 | keyv "^3.0.0" 149 | lowercase-keys "^2.0.0" 150 | normalize-url "^4.1.0" 151 | responselike "^1.0.2" 152 | 153 | camelcase@^5.3.1: 154 | version "5.3.1" 155 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 156 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 157 | 158 | chalk@^3.0.0: 159 | version "3.0.0" 160 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 161 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 162 | dependencies: 163 | ansi-styles "^4.1.0" 164 | supports-color "^7.1.0" 165 | 166 | chokidar@^3.2.2: 167 | version "3.3.1" 168 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" 169 | integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== 170 | dependencies: 171 | anymatch "~3.1.1" 172 | braces "~3.0.2" 173 | glob-parent "~5.1.0" 174 | is-binary-path "~2.1.0" 175 | is-glob "~4.0.1" 176 | normalize-path "~3.0.0" 177 | readdirp "~3.3.0" 178 | optionalDependencies: 179 | fsevents "~2.1.2" 180 | 181 | ci-info@^2.0.0: 182 | version "2.0.0" 183 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 184 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 185 | 186 | cli-boxes@^2.2.0: 187 | version "2.2.0" 188 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" 189 | integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== 190 | 191 | clone-response@^1.0.2: 192 | version "1.0.2" 193 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 194 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= 195 | dependencies: 196 | mimic-response "^1.0.0" 197 | 198 | color-convert@^2.0.1: 199 | version "2.0.1" 200 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 201 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 202 | dependencies: 203 | color-name "~1.1.4" 204 | 205 | color-name@~1.1.4: 206 | version "1.1.4" 207 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 208 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 209 | 210 | concat-map@0.0.1: 211 | version "0.0.1" 212 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 213 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 214 | 215 | configstore@^5.0.1: 216 | version "5.0.1" 217 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" 218 | integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== 219 | dependencies: 220 | dot-prop "^5.2.0" 221 | graceful-fs "^4.1.2" 222 | make-dir "^3.0.0" 223 | unique-string "^2.0.0" 224 | write-file-atomic "^3.0.0" 225 | xdg-basedir "^4.0.0" 226 | 227 | content-disposition@0.5.3: 228 | version "0.5.3" 229 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 230 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 231 | dependencies: 232 | safe-buffer "5.1.2" 233 | 234 | content-type@~1.0.4: 235 | version "1.0.4" 236 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 237 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 238 | 239 | cookie-signature@1.0.6: 240 | version "1.0.6" 241 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 242 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 243 | 244 | cookie@0.4.0: 245 | version "0.4.0" 246 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 247 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 248 | 249 | crypto-random-string@^2.0.0: 250 | version "2.0.0" 251 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" 252 | integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== 253 | 254 | debug@2.6.9, debug@^2.2.0: 255 | version "2.6.9" 256 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 257 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 258 | dependencies: 259 | ms "2.0.0" 260 | 261 | debug@^3.2.6: 262 | version "3.2.6" 263 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 264 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 265 | dependencies: 266 | ms "^2.1.1" 267 | 268 | decompress-response@^3.3.0: 269 | version "3.3.0" 270 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 271 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 272 | dependencies: 273 | mimic-response "^1.0.0" 274 | 275 | deep-extend@^0.6.0: 276 | version "0.6.0" 277 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 278 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 279 | 280 | defer-to-connect@^1.0.1: 281 | version "1.1.3" 282 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" 283 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== 284 | 285 | depd@~1.1.2: 286 | version "1.1.2" 287 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 288 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 289 | 290 | destroy@~1.0.4: 291 | version "1.0.4" 292 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 293 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 294 | 295 | dot-prop@^5.2.0: 296 | version "5.2.0" 297 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" 298 | integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== 299 | dependencies: 300 | is-obj "^2.0.0" 301 | 302 | duplexer3@^0.1.4: 303 | version "0.1.4" 304 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 305 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 306 | 307 | ee-first@1.1.1: 308 | version "1.1.1" 309 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 310 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 311 | 312 | emoji-regex@^7.0.1: 313 | version "7.0.3" 314 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 315 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 316 | 317 | emoji-regex@^8.0.0: 318 | version "8.0.0" 319 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 320 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 321 | 322 | encodeurl@~1.0.2: 323 | version "1.0.2" 324 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 325 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 326 | 327 | end-of-stream@^1.1.0: 328 | version "1.4.4" 329 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 330 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 331 | dependencies: 332 | once "^1.4.0" 333 | 334 | escape-goat@^2.0.0: 335 | version "2.1.1" 336 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" 337 | integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== 338 | 339 | escape-html@~1.0.3: 340 | version "1.0.3" 341 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 342 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 343 | 344 | etag@~1.8.1: 345 | version "1.8.1" 346 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 347 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 348 | 349 | express@^4.17.1: 350 | version "4.17.1" 351 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 352 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 353 | dependencies: 354 | accepts "~1.3.7" 355 | array-flatten "1.1.1" 356 | body-parser "1.19.0" 357 | content-disposition "0.5.3" 358 | content-type "~1.0.4" 359 | cookie "0.4.0" 360 | cookie-signature "1.0.6" 361 | debug "2.6.9" 362 | depd "~1.1.2" 363 | encodeurl "~1.0.2" 364 | escape-html "~1.0.3" 365 | etag "~1.8.1" 366 | finalhandler "~1.1.2" 367 | fresh "0.5.2" 368 | merge-descriptors "1.0.1" 369 | methods "~1.1.2" 370 | on-finished "~2.3.0" 371 | parseurl "~1.3.3" 372 | path-to-regexp "0.1.7" 373 | proxy-addr "~2.0.5" 374 | qs "6.7.0" 375 | range-parser "~1.2.1" 376 | safe-buffer "5.1.2" 377 | send "0.17.1" 378 | serve-static "1.14.1" 379 | setprototypeof "1.1.1" 380 | statuses "~1.5.0" 381 | type-is "~1.6.18" 382 | utils-merge "1.0.1" 383 | vary "~1.1.2" 384 | 385 | file-uri-to-path@1.0.0: 386 | version "1.0.0" 387 | resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" 388 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 389 | 390 | fill-range@^7.0.1: 391 | version "7.0.1" 392 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 393 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 394 | dependencies: 395 | to-regex-range "^5.0.1" 396 | 397 | finalhandler@~1.1.2: 398 | version "1.1.2" 399 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 400 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 401 | dependencies: 402 | debug "2.6.9" 403 | encodeurl "~1.0.2" 404 | escape-html "~1.0.3" 405 | on-finished "~2.3.0" 406 | parseurl "~1.3.3" 407 | statuses "~1.5.0" 408 | unpipe "~1.0.0" 409 | 410 | forwarded@~0.1.2: 411 | version "0.1.2" 412 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 413 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 414 | 415 | fresh@0.5.2: 416 | version "0.5.2" 417 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 418 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 419 | 420 | fsevents@~2.1.2: 421 | version "2.1.2" 422 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" 423 | integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== 424 | 425 | get-stream@^4.1.0: 426 | version "4.1.0" 427 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 428 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 429 | dependencies: 430 | pump "^3.0.0" 431 | 432 | get-stream@^5.1.0: 433 | version "5.1.0" 434 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" 435 | integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== 436 | dependencies: 437 | pump "^3.0.0" 438 | 439 | glob-parent@~5.1.0: 440 | version "5.1.1" 441 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 442 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 443 | dependencies: 444 | is-glob "^4.0.1" 445 | 446 | global-dirs@^2.0.1: 447 | version "2.0.1" 448 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" 449 | integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== 450 | dependencies: 451 | ini "^1.3.5" 452 | 453 | got@^9.6.0: 454 | version "9.6.0" 455 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" 456 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== 457 | dependencies: 458 | "@sindresorhus/is" "^0.14.0" 459 | "@szmarczak/http-timer" "^1.1.2" 460 | cacheable-request "^6.0.0" 461 | decompress-response "^3.3.0" 462 | duplexer3 "^0.1.4" 463 | get-stream "^4.1.0" 464 | lowercase-keys "^1.0.1" 465 | mimic-response "^1.0.1" 466 | p-cancelable "^1.0.0" 467 | to-readable-stream "^1.0.0" 468 | url-parse-lax "^3.0.0" 469 | 470 | graceful-fs@^4.1.2: 471 | version "4.2.3" 472 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 473 | integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== 474 | 475 | has-flag@^3.0.0: 476 | version "3.0.0" 477 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 478 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 479 | 480 | has-flag@^4.0.0: 481 | version "4.0.0" 482 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 483 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 484 | 485 | has-yarn@^2.1.0: 486 | version "2.1.0" 487 | resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" 488 | integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== 489 | 490 | http-cache-semantics@^4.0.0: 491 | version "4.1.0" 492 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 493 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 494 | 495 | http-errors@1.7.2: 496 | version "1.7.2" 497 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 498 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 499 | dependencies: 500 | depd "~1.1.2" 501 | inherits "2.0.3" 502 | setprototypeof "1.1.1" 503 | statuses ">= 1.5.0 < 2" 504 | toidentifier "1.0.0" 505 | 506 | http-errors@~1.7.2: 507 | version "1.7.3" 508 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 509 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 510 | dependencies: 511 | depd "~1.1.2" 512 | inherits "2.0.4" 513 | setprototypeof "1.1.1" 514 | statuses ">= 1.5.0 < 2" 515 | toidentifier "1.0.0" 516 | 517 | iconv-lite@0.4.24: 518 | version "0.4.24" 519 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 520 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 521 | dependencies: 522 | safer-buffer ">= 2.1.2 < 3" 523 | 524 | ignore-by-default@^1.0.1: 525 | version "1.0.1" 526 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 527 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= 528 | 529 | import-lazy@^2.1.0: 530 | version "2.1.0" 531 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 532 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= 533 | 534 | imurmurhash@^0.1.4: 535 | version "0.1.4" 536 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 537 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 538 | 539 | inherits@2.0.3: 540 | version "2.0.3" 541 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 542 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 543 | 544 | inherits@2.0.4: 545 | version "2.0.4" 546 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 547 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 548 | 549 | ini@^1.3.5, ini@~1.3.0: 550 | version "1.3.5" 551 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 552 | integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== 553 | 554 | ipaddr.js@1.9.1: 555 | version "1.9.1" 556 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 557 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 558 | 559 | is-binary-path@~2.1.0: 560 | version "2.1.0" 561 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 562 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 563 | dependencies: 564 | binary-extensions "^2.0.0" 565 | 566 | is-ci@^2.0.0: 567 | version "2.0.0" 568 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" 569 | integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== 570 | dependencies: 571 | ci-info "^2.0.0" 572 | 573 | is-extglob@^2.1.1: 574 | version "2.1.1" 575 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 576 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 577 | 578 | is-fullwidth-code-point@^2.0.0: 579 | version "2.0.0" 580 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 581 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 582 | 583 | is-fullwidth-code-point@^3.0.0: 584 | version "3.0.0" 585 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 586 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 587 | 588 | is-glob@^4.0.1, is-glob@~4.0.1: 589 | version "4.0.1" 590 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 591 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 592 | dependencies: 593 | is-extglob "^2.1.1" 594 | 595 | is-installed-globally@^0.3.1: 596 | version "0.3.2" 597 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" 598 | integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== 599 | dependencies: 600 | global-dirs "^2.0.1" 601 | is-path-inside "^3.0.1" 602 | 603 | is-npm@^4.0.0: 604 | version "4.0.0" 605 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" 606 | integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== 607 | 608 | is-number@^7.0.0: 609 | version "7.0.0" 610 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 611 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 612 | 613 | is-obj@^2.0.0: 614 | version "2.0.0" 615 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" 616 | integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== 617 | 618 | is-path-inside@^3.0.1: 619 | version "3.0.2" 620 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" 621 | integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== 622 | 623 | is-typedarray@^1.0.0: 624 | version "1.0.0" 625 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 626 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 627 | 628 | is-yarn-global@^0.3.0: 629 | version "0.3.0" 630 | resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" 631 | integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== 632 | 633 | json-buffer@3.0.0: 634 | version "3.0.0" 635 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 636 | integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= 637 | 638 | keyv@^3.0.0: 639 | version "3.1.0" 640 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" 641 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== 642 | dependencies: 643 | json-buffer "3.0.0" 644 | 645 | latest-version@^5.0.0: 646 | version "5.1.0" 647 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" 648 | integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== 649 | dependencies: 650 | package-json "^6.3.0" 651 | 652 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: 653 | version "1.0.1" 654 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 655 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 656 | 657 | lowercase-keys@^2.0.0: 658 | version "2.0.0" 659 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 660 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 661 | 662 | make-dir@^3.0.0: 663 | version "3.0.2" 664 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" 665 | integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== 666 | dependencies: 667 | semver "^6.0.0" 668 | 669 | media-typer@0.3.0: 670 | version "0.3.0" 671 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 672 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 673 | 674 | merge-descriptors@1.0.1: 675 | version "1.0.1" 676 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 677 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 678 | 679 | methods@~1.1.2: 680 | version "1.1.2" 681 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 682 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 683 | 684 | mime-db@1.43.0: 685 | version "1.43.0" 686 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" 687 | integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== 688 | 689 | mime-types@~2.1.24: 690 | version "2.1.26" 691 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" 692 | integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== 693 | dependencies: 694 | mime-db "1.43.0" 695 | 696 | mime@1.6.0: 697 | version "1.6.0" 698 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 699 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 700 | 701 | mimic-response@^1.0.0, mimic-response@^1.0.1: 702 | version "1.0.1" 703 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 704 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 705 | 706 | minimatch@^3.0.4: 707 | version "3.0.4" 708 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 709 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 710 | dependencies: 711 | brace-expansion "^1.1.7" 712 | 713 | minimist@^1.2.0: 714 | version "1.2.5" 715 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 716 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 717 | 718 | ms@2.0.0: 719 | version "2.0.0" 720 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 721 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 722 | 723 | ms@2.1.1: 724 | version "2.1.1" 725 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 726 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 727 | 728 | ms@^2.1.1: 729 | version "2.1.2" 730 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 731 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 732 | 733 | nan@^2.14.0: 734 | version "2.14.0" 735 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" 736 | integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== 737 | 738 | negotiator@0.6.2: 739 | version "0.6.2" 740 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 741 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 742 | 743 | node-rdkafka@^2.8.0: 744 | version "2.8.0" 745 | resolved "https://registry.yarnpkg.com/node-rdkafka/-/node-rdkafka-2.8.0.tgz#a434c049d3db5d9f7c5f394446d2e30bf857586c" 746 | integrity sha512-ZjCeUi7LxQIRXGkrUPvXcOnRwMO5vnUrqnDuR0eNbUla1jz1tRfvGYpncg7fdcxzHzT9Ddf8JJvQWpuGEu2DZQ== 747 | dependencies: 748 | bindings "^1.3.1" 749 | nan "^2.14.0" 750 | 751 | nodemon@^2.0.3: 752 | version "2.0.3" 753 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.3.tgz#e9c64df8740ceaef1cb00e1f3da57c0a93ef3714" 754 | integrity sha512-lLQLPS90Lqwc99IHe0U94rDgvjo+G9I4uEIxRG3evSLROcqQ9hwc0AxlSHKS4T1JW/IMj/7N5mthiN58NL/5kw== 755 | dependencies: 756 | chokidar "^3.2.2" 757 | debug "^3.2.6" 758 | ignore-by-default "^1.0.1" 759 | minimatch "^3.0.4" 760 | pstree.remy "^1.1.7" 761 | semver "^5.7.1" 762 | supports-color "^5.5.0" 763 | touch "^3.1.0" 764 | undefsafe "^2.0.2" 765 | update-notifier "^4.0.0" 766 | 767 | nopt@~1.0.10: 768 | version "1.0.10" 769 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 770 | integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= 771 | dependencies: 772 | abbrev "1" 773 | 774 | normalize-path@^3.0.0, normalize-path@~3.0.0: 775 | version "3.0.0" 776 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 777 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 778 | 779 | normalize-url@^4.1.0: 780 | version "4.5.0" 781 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" 782 | integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== 783 | 784 | on-finished@~2.3.0: 785 | version "2.3.0" 786 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 787 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 788 | dependencies: 789 | ee-first "1.1.1" 790 | 791 | once@^1.3.1, once@^1.4.0: 792 | version "1.4.0" 793 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 794 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 795 | dependencies: 796 | wrappy "1" 797 | 798 | p-cancelable@^1.0.0: 799 | version "1.1.0" 800 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 801 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== 802 | 803 | package-json@^6.3.0: 804 | version "6.5.0" 805 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" 806 | integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== 807 | dependencies: 808 | got "^9.6.0" 809 | registry-auth-token "^4.0.0" 810 | registry-url "^5.0.0" 811 | semver "^6.2.0" 812 | 813 | parseurl@~1.3.3: 814 | version "1.3.3" 815 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 816 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 817 | 818 | path-to-regexp@0.1.7: 819 | version "0.1.7" 820 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 821 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 822 | 823 | picomatch@^2.0.4, picomatch@^2.0.7: 824 | version "2.2.2" 825 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 826 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 827 | 828 | prepend-http@^2.0.0: 829 | version "2.0.0" 830 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 831 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= 832 | 833 | proxy-addr@~2.0.5: 834 | version "2.0.6" 835 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" 836 | integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== 837 | dependencies: 838 | forwarded "~0.1.2" 839 | ipaddr.js "1.9.1" 840 | 841 | pstree.remy@^1.1.7: 842 | version "1.1.7" 843 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.7.tgz#c76963a28047ed61542dc361aa26ee55a7fa15f3" 844 | integrity sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A== 845 | 846 | pump@^3.0.0: 847 | version "3.0.0" 848 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 849 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 850 | dependencies: 851 | end-of-stream "^1.1.0" 852 | once "^1.3.1" 853 | 854 | pupa@^2.0.1: 855 | version "2.0.1" 856 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.0.1.tgz#dbdc9ff48ffbea4a26a069b6f9f7abb051008726" 857 | integrity sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA== 858 | dependencies: 859 | escape-goat "^2.0.0" 860 | 861 | qs@6.7.0: 862 | version "6.7.0" 863 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 864 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 865 | 866 | range-parser@~1.2.1: 867 | version "1.2.1" 868 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 869 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 870 | 871 | raw-body@2.4.0: 872 | version "2.4.0" 873 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 874 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 875 | dependencies: 876 | bytes "3.1.0" 877 | http-errors "1.7.2" 878 | iconv-lite "0.4.24" 879 | unpipe "1.0.0" 880 | 881 | rc@^1.2.8: 882 | version "1.2.8" 883 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 884 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 885 | dependencies: 886 | deep-extend "^0.6.0" 887 | ini "~1.3.0" 888 | minimist "^1.2.0" 889 | strip-json-comments "~2.0.1" 890 | 891 | readdirp@~3.3.0: 892 | version "3.3.0" 893 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" 894 | integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== 895 | dependencies: 896 | picomatch "^2.0.7" 897 | 898 | registry-auth-token@^4.0.0: 899 | version "4.1.1" 900 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" 901 | integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== 902 | dependencies: 903 | rc "^1.2.8" 904 | 905 | registry-url@^5.0.0: 906 | version "5.1.0" 907 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" 908 | integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== 909 | dependencies: 910 | rc "^1.2.8" 911 | 912 | responselike@^1.0.2: 913 | version "1.0.2" 914 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 915 | integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= 916 | dependencies: 917 | lowercase-keys "^1.0.0" 918 | 919 | safe-buffer@5.1.2: 920 | version "5.1.2" 921 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 922 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 923 | 924 | "safer-buffer@>= 2.1.2 < 3": 925 | version "2.1.2" 926 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 927 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 928 | 929 | semver-diff@^3.1.1: 930 | version "3.1.1" 931 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" 932 | integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== 933 | dependencies: 934 | semver "^6.3.0" 935 | 936 | semver@^5.7.1: 937 | version "5.7.1" 938 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 939 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 940 | 941 | semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: 942 | version "6.3.0" 943 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 944 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 945 | 946 | send@0.17.1: 947 | version "0.17.1" 948 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 949 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 950 | dependencies: 951 | debug "2.6.9" 952 | depd "~1.1.2" 953 | destroy "~1.0.4" 954 | encodeurl "~1.0.2" 955 | escape-html "~1.0.3" 956 | etag "~1.8.1" 957 | fresh "0.5.2" 958 | http-errors "~1.7.2" 959 | mime "1.6.0" 960 | ms "2.1.1" 961 | on-finished "~2.3.0" 962 | range-parser "~1.2.1" 963 | statuses "~1.5.0" 964 | 965 | serve-static@1.14.1: 966 | version "1.14.1" 967 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 968 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 969 | dependencies: 970 | encodeurl "~1.0.2" 971 | escape-html "~1.0.3" 972 | parseurl "~1.3.3" 973 | send "0.17.1" 974 | 975 | setprototypeof@1.1.1: 976 | version "1.1.1" 977 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 978 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 979 | 980 | signal-exit@^3.0.2: 981 | version "3.0.3" 982 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 983 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 984 | 985 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 986 | version "1.5.0" 987 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 988 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 989 | 990 | string-width@^3.0.0: 991 | version "3.1.0" 992 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 993 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 994 | dependencies: 995 | emoji-regex "^7.0.1" 996 | is-fullwidth-code-point "^2.0.0" 997 | strip-ansi "^5.1.0" 998 | 999 | string-width@^4.0.0, string-width@^4.1.0: 1000 | version "4.2.0" 1001 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1002 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1003 | dependencies: 1004 | emoji-regex "^8.0.0" 1005 | is-fullwidth-code-point "^3.0.0" 1006 | strip-ansi "^6.0.0" 1007 | 1008 | strip-ansi@^5.1.0: 1009 | version "5.2.0" 1010 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1011 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1012 | dependencies: 1013 | ansi-regex "^4.1.0" 1014 | 1015 | strip-ansi@^6.0.0: 1016 | version "6.0.0" 1017 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1018 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1019 | dependencies: 1020 | ansi-regex "^5.0.0" 1021 | 1022 | strip-json-comments@~2.0.1: 1023 | version "2.0.1" 1024 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1025 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1026 | 1027 | supports-color@^5.5.0: 1028 | version "5.5.0" 1029 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1030 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1031 | dependencies: 1032 | has-flag "^3.0.0" 1033 | 1034 | supports-color@^7.1.0: 1035 | version "7.1.0" 1036 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 1037 | integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== 1038 | dependencies: 1039 | has-flag "^4.0.0" 1040 | 1041 | term-size@^2.1.0: 1042 | version "2.2.0" 1043 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" 1044 | integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== 1045 | 1046 | to-readable-stream@^1.0.0: 1047 | version "1.0.0" 1048 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" 1049 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== 1050 | 1051 | to-regex-range@^5.0.1: 1052 | version "5.0.1" 1053 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1054 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1055 | dependencies: 1056 | is-number "^7.0.0" 1057 | 1058 | toidentifier@1.0.0: 1059 | version "1.0.0" 1060 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 1061 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 1062 | 1063 | touch@^3.1.0: 1064 | version "3.1.0" 1065 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 1066 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 1067 | dependencies: 1068 | nopt "~1.0.10" 1069 | 1070 | type-fest@^0.8.1: 1071 | version "0.8.1" 1072 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1073 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1074 | 1075 | type-is@~1.6.17, type-is@~1.6.18: 1076 | version "1.6.18" 1077 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1078 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1079 | dependencies: 1080 | media-typer "0.3.0" 1081 | mime-types "~2.1.24" 1082 | 1083 | typedarray-to-buffer@^3.1.5: 1084 | version "3.1.5" 1085 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 1086 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 1087 | dependencies: 1088 | is-typedarray "^1.0.0" 1089 | 1090 | undefsafe@^2.0.2: 1091 | version "2.0.3" 1092 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" 1093 | integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== 1094 | dependencies: 1095 | debug "^2.2.0" 1096 | 1097 | unique-string@^2.0.0: 1098 | version "2.0.0" 1099 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" 1100 | integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== 1101 | dependencies: 1102 | crypto-random-string "^2.0.0" 1103 | 1104 | unpipe@1.0.0, unpipe@~1.0.0: 1105 | version "1.0.0" 1106 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1107 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1108 | 1109 | update-notifier@^4.0.0: 1110 | version "4.1.0" 1111 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.0.tgz#4866b98c3bc5b5473c020b1250583628f9a328f3" 1112 | integrity sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew== 1113 | dependencies: 1114 | boxen "^4.2.0" 1115 | chalk "^3.0.0" 1116 | configstore "^5.0.1" 1117 | has-yarn "^2.1.0" 1118 | import-lazy "^2.1.0" 1119 | is-ci "^2.0.0" 1120 | is-installed-globally "^0.3.1" 1121 | is-npm "^4.0.0" 1122 | is-yarn-global "^0.3.0" 1123 | latest-version "^5.0.0" 1124 | pupa "^2.0.1" 1125 | semver-diff "^3.1.1" 1126 | xdg-basedir "^4.0.0" 1127 | 1128 | url-parse-lax@^3.0.0: 1129 | version "3.0.0" 1130 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 1131 | integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= 1132 | dependencies: 1133 | prepend-http "^2.0.0" 1134 | 1135 | utils-merge@1.0.1: 1136 | version "1.0.1" 1137 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1138 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1139 | 1140 | vary@~1.1.2: 1141 | version "1.1.2" 1142 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1143 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 1144 | 1145 | widest-line@^3.1.0: 1146 | version "3.1.0" 1147 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" 1148 | integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== 1149 | dependencies: 1150 | string-width "^4.0.0" 1151 | 1152 | wrappy@1: 1153 | version "1.0.2" 1154 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1155 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1156 | 1157 | write-file-atomic@^3.0.0: 1158 | version "3.0.3" 1159 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" 1160 | integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== 1161 | dependencies: 1162 | imurmurhash "^0.1.4" 1163 | is-typedarray "^1.0.0" 1164 | signal-exit "^3.0.2" 1165 | typedarray-to-buffer "^3.1.5" 1166 | 1167 | xdg-basedir@^4.0.0: 1168 | version "4.0.0" 1169 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" 1170 | integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== 1171 | -------------------------------------------------------------------------------- /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.8.3": 6 | version "7.8.3" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" 8 | integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== 9 | dependencies: 10 | "@babel/highlight" "^7.8.3" 11 | 12 | "@babel/generator@^7.4.0", "@babel/generator@^7.9.5": 13 | version "7.9.5" 14 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.5.tgz#27f0917741acc41e6eaaced6d68f96c3fa9afaf9" 15 | integrity sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ== 16 | dependencies: 17 | "@babel/types" "^7.9.5" 18 | jsesc "^2.5.1" 19 | lodash "^4.17.13" 20 | source-map "^0.5.0" 21 | 22 | "@babel/helper-function-name@^7.9.5": 23 | version "7.9.5" 24 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" 25 | integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== 26 | dependencies: 27 | "@babel/helper-get-function-arity" "^7.8.3" 28 | "@babel/template" "^7.8.3" 29 | "@babel/types" "^7.9.5" 30 | 31 | "@babel/helper-get-function-arity@^7.8.3": 32 | version "7.8.3" 33 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" 34 | integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== 35 | dependencies: 36 | "@babel/types" "^7.8.3" 37 | 38 | "@babel/helper-split-export-declaration@^7.8.3": 39 | version "7.8.3" 40 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" 41 | integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== 42 | dependencies: 43 | "@babel/types" "^7.8.3" 44 | 45 | "@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": 46 | version "7.9.5" 47 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" 48 | integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== 49 | 50 | "@babel/highlight@^7.8.3": 51 | version "7.9.0" 52 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" 53 | integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== 54 | dependencies: 55 | "@babel/helper-validator-identifier" "^7.9.0" 56 | chalk "^2.0.0" 57 | js-tokens "^4.0.0" 58 | 59 | "@babel/parser@^7.4.3", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": 60 | version "7.9.4" 61 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" 62 | integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== 63 | 64 | "@babel/template@^7.4.0", "@babel/template@^7.8.3": 65 | version "7.8.6" 66 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" 67 | integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== 68 | dependencies: 69 | "@babel/code-frame" "^7.8.3" 70 | "@babel/parser" "^7.8.6" 71 | "@babel/types" "^7.8.6" 72 | 73 | "@babel/traverse@^7.4.3": 74 | version "7.9.5" 75 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.5.tgz#6e7c56b44e2ac7011a948c21e283ddd9d9db97a2" 76 | integrity sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ== 77 | dependencies: 78 | "@babel/code-frame" "^7.8.3" 79 | "@babel/generator" "^7.9.5" 80 | "@babel/helper-function-name" "^7.9.5" 81 | "@babel/helper-split-export-declaration" "^7.8.3" 82 | "@babel/parser" "^7.9.0" 83 | "@babel/types" "^7.9.5" 84 | debug "^4.1.0" 85 | globals "^11.1.0" 86 | lodash "^4.17.13" 87 | 88 | "@babel/types@^7.4.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.5": 89 | version "7.9.5" 90 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444" 91 | integrity sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg== 92 | dependencies: 93 | "@babel/helper-validator-identifier" "^7.9.5" 94 | lodash "^4.17.13" 95 | to-fast-properties "^2.0.0" 96 | 97 | "@types/bson@*": 98 | version "4.0.2" 99 | resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.0.2.tgz#7accb85942fc39bbdb7515d4de437c04f698115f" 100 | integrity sha512-+uWmsejEHfmSjyyM/LkrP0orfE2m5Mx9Xel4tXNeqi1ldK5XMQcDsFkBmLDtuyKUbxj2jGDo0H240fbCRJZo7Q== 101 | dependencies: 102 | "@types/node" "*" 103 | 104 | "@types/cross-spawn@^6.0.1": 105 | version "6.0.1" 106 | resolved "https://registry.yarnpkg.com/@types/cross-spawn/-/cross-spawn-6.0.1.tgz#60fa0c87046347c17d9735e5289e72b804ca9b63" 107 | integrity sha512-MtN1pDYdI6D6QFDzy39Q+6c9rl2o/xN7aWGe6oZuzqq5N6+YuwFsWiEAv3dNzvzN9YzU+itpN8lBzFpphQKLAw== 108 | dependencies: 109 | "@types/node" "*" 110 | 111 | "@types/debug@^4.1.5": 112 | version "4.1.5" 113 | resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" 114 | integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== 115 | 116 | "@types/dedent@^0.7.0": 117 | version "0.7.0" 118 | resolved "https://registry.yarnpkg.com/@types/dedent/-/dedent-0.7.0.tgz#155f339ca404e6dd90b9ce46a3f78fd69ca9b050" 119 | integrity sha512-EGlKlgMhnLt/cM4DbUSafFdrkeJoC9Mvnj0PUCU7tFmTjMjNRT957kXCx0wYm3JuEq4o4ZsS5vG+NlkM2DMd2A== 120 | 121 | "@types/find-cache-dir@^3.2.0": 122 | version "3.2.0" 123 | resolved "https://registry.yarnpkg.com/@types/find-cache-dir/-/find-cache-dir-3.2.0.tgz#eaaf331699dccf52c47926e4d4f8f3ed8db33f3c" 124 | integrity sha512-+JeT9qb2Jwzw72WdjU+TSvD5O1QRPWCeRpDJV+guiIq+2hwR0DFGw+nZNbTFjMIVe6Bf4GgAKeB/6Ytx6+MbeQ== 125 | 126 | "@types/find-package-json@^1.1.1": 127 | version "1.1.1" 128 | resolved "https://registry.yarnpkg.com/@types/find-package-json/-/find-package-json-1.1.1.tgz#c0d296ac74fe3309ed0fe75a9c3edb42a776d30c" 129 | integrity sha512-XMCocYkg6VUpkbOQMKa3M5cgc3MvU/LJKQwd3VUJrWZbLr2ARUggupsCAF8DxjEEIuSO6HlnH+vl+XV4bgVeEQ== 130 | dependencies: 131 | "@types/node" "*" 132 | 133 | "@types/get-port@^4.0.1": 134 | version "4.2.0" 135 | resolved "https://registry.yarnpkg.com/@types/get-port/-/get-port-4.2.0.tgz#4fc44616c737d37d3ee7926d86fa975d0afba5e4" 136 | integrity sha512-Iv2FAb5RnIk/eFO2CTu8k+0VMmIR15pKbcqRWi+s3ydW+aKXlN2yemP92SrO++ERyJx+p6Ie1ggbLBMbU1SjiQ== 137 | dependencies: 138 | get-port "*" 139 | 140 | "@types/lockfile@^1.0.1": 141 | version "1.0.1" 142 | resolved "https://registry.yarnpkg.com/@types/lockfile/-/lockfile-1.0.1.tgz#434a3455e89843312f01976e010c60f1bcbd56f7" 143 | integrity sha512-65WZedEm4AnOsBDdsapJJG42MhROu3n4aSSiu87JXF/pSdlubxZxp3S1yz3kTfkJ2KBPud4CpjoHVAptOm9Zmw== 144 | 145 | "@types/lodash@^4.14.149": 146 | version "4.14.149" 147 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440" 148 | integrity sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ== 149 | 150 | "@types/md5-file@^4.0.1": 151 | version "4.0.1" 152 | resolved "https://registry.yarnpkg.com/@types/md5-file/-/md5-file-4.0.1.tgz#5e6cfb7949dc375049b8f6fd8f91adacfc176c63" 153 | integrity sha512-uK6vlo/LJp6iNWinpSzZwMe8Auzs0UYxesm7OGfQS3oz6PJciHtrKcqVOGk4wjYKawrl234vwNWvHyXH1ZzRyQ== 154 | 155 | "@types/mkdirp@^1.0.0": 156 | version "1.0.0" 157 | resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-1.0.0.tgz#16ce0eabe4a9a3afe64557ad0ee6886ec3d32927" 158 | integrity sha512-ONFY9//bCEr3DWKON3iDv/Q8LXnhaYYaNDeFSN0AtO5o4sLf9F0pstJKKKjQhXE0kJEeHs8eR6SAsROhhc2Csw== 159 | dependencies: 160 | "@types/node" "*" 161 | 162 | "@types/mongodb@^3.3.11": 163 | version "3.5.5" 164 | resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.5.5.tgz#eaf5e521500406bad37c887c4a9ce6c8cbfb498b" 165 | integrity sha512-iIWBu740IPolqzpYUBdQs1T4LMiJv1CIIcJb6gX2mGtb/VmnFWONSiyUG+lJF4IUg+QEuIqpalW3eshiTCc8dQ== 166 | dependencies: 167 | "@types/bson" "*" 168 | "@types/node" "*" 169 | 170 | "@types/node@*": 171 | version "13.11.1" 172 | resolved "https://registry.yarnpkg.com/@types/node/-/node-13.11.1.tgz#49a2a83df9d26daacead30d0ccc8762b128d53c7" 173 | integrity sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g== 174 | 175 | "@types/pg-types@*": 176 | version "1.11.5" 177 | resolved "https://registry.yarnpkg.com/@types/pg-types/-/pg-types-1.11.5.tgz#1eebbe62b6772fcc75c18957a90f933d155e005b" 178 | integrity sha512-L8ogeT6vDzT1vxlW3KITTCt+BVXXVkLXfZ/XNm6UqbcJgxf+KPO7yjWx7dQQE8RW07KopL10x2gNMs41+IkMGQ== 179 | 180 | "@types/pg@^7.11.2": 181 | version "7.14.3" 182 | resolved "https://registry.yarnpkg.com/@types/pg/-/pg-7.14.3.tgz#eb166e4f4287923890b10ed20371f937938cb995" 183 | integrity sha512-go5zddQ1FrUQHeBvqPzQ1svKo4KKucSwvqLsvwc/EIuQ9sxDA21b68xc/RwhzAK5pPCnez8NrkYatFIGdJBVvA== 184 | dependencies: 185 | "@types/node" "*" 186 | "@types/pg-types" "*" 187 | 188 | "@types/tmp@0.1.0": 189 | version "0.1.0" 190 | resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.1.0.tgz#19cf73a7bcf641965485119726397a096f0049bd" 191 | integrity sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA== 192 | 193 | "@types/uuid@7.0.0": 194 | version "7.0.0" 195 | resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-7.0.0.tgz#9f6993ccc8210efa90bda7e1afabbb06a9f860cd" 196 | integrity sha512-RiX1I0lK9WFLFqy2xOxke396f0wKIzk5sAll0tL4J4XDYJXURI7JOs96XQb3nP+2gEpQ/LutBb66jgiT5oQshQ== 197 | 198 | "@types/uuid@^3.4.6": 199 | version "3.4.8" 200 | resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-3.4.8.tgz#4ba887fcef88bd9a7515ca2de336d691e3e18318" 201 | integrity sha512-zHWce3allXWSmRx6/AGXKCtSOA7JjeWd2L3t4aHfysNk8mouQnWCocveaT7a4IEIlPVHp81jzlnknqTgCjCLXA== 202 | 203 | agent-base@6: 204 | version "6.0.0" 205 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.0.tgz#5d0101f19bbfaed39980b22ae866de153b93f09a" 206 | integrity sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw== 207 | dependencies: 208 | debug "4" 209 | 210 | ansi-colors@3.2.3: 211 | version "3.2.3" 212 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" 213 | integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== 214 | 215 | ansi-regex@^3.0.0: 216 | version "3.0.0" 217 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 218 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 219 | 220 | ansi-regex@^4.1.0: 221 | version "4.1.0" 222 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 223 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 224 | 225 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 226 | version "3.2.1" 227 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 228 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 229 | dependencies: 230 | color-convert "^1.9.0" 231 | 232 | anymatch@~3.1.1: 233 | version "3.1.1" 234 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 235 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 236 | dependencies: 237 | normalize-path "^3.0.0" 238 | picomatch "^2.0.4" 239 | 240 | append-transform@^1.0.0: 241 | version "1.0.0" 242 | resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" 243 | integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== 244 | dependencies: 245 | default-require-extensions "^2.0.0" 246 | 247 | archy@^1.0.0: 248 | version "1.0.0" 249 | resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" 250 | integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= 251 | 252 | argparse@^1.0.7: 253 | version "1.0.10" 254 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 255 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 256 | dependencies: 257 | sprintf-js "~1.0.2" 258 | 259 | assertion-error@^1.1.0: 260 | version "1.1.0" 261 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 262 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 263 | 264 | aws-sdk@^2.580.0: 265 | version "2.656.0" 266 | resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.656.0.tgz#0d74664ddbf30701073be9f9913ee7266afef3b4" 267 | integrity sha512-UzqDvvt6i7gpuzEdK0GT/JOfBJcsCPranzZWdQ9HR4+5E0m5kf5gybZ6OX+UseIAE2/WND6Dv0aHgiI21AKenw== 268 | dependencies: 269 | buffer "4.9.1" 270 | events "1.1.1" 271 | ieee754 "1.1.13" 272 | jmespath "0.15.0" 273 | querystring "0.2.0" 274 | sax "1.2.1" 275 | url "0.10.3" 276 | uuid "3.3.2" 277 | xml2js "0.4.19" 278 | 279 | balanced-match@^1.0.0: 280 | version "1.0.0" 281 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 282 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 283 | 284 | base64-js@^1.0.2: 285 | version "1.3.1" 286 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" 287 | integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== 288 | 289 | binary-extensions@^2.0.0: 290 | version "2.0.0" 291 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" 292 | integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== 293 | 294 | bl@^2.2.0: 295 | version "2.2.0" 296 | resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.0.tgz#e1a574cdf528e4053019bb800b041c0ac88da493" 297 | integrity sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA== 298 | dependencies: 299 | readable-stream "^2.3.5" 300 | safe-buffer "^5.1.1" 301 | 302 | bl@^4.0.1: 303 | version "4.0.2" 304 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz#52b71e9088515d0606d9dd9cc7aa48dc1f98e73a" 305 | integrity sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ== 306 | dependencies: 307 | buffer "^5.5.0" 308 | inherits "^2.0.4" 309 | readable-stream "^3.4.0" 310 | 311 | brace-expansion@^1.1.7: 312 | version "1.1.11" 313 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 314 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 315 | dependencies: 316 | balanced-match "^1.0.0" 317 | concat-map "0.0.1" 318 | 319 | braces@~3.0.2: 320 | version "3.0.2" 321 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 322 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 323 | dependencies: 324 | fill-range "^7.0.1" 325 | 326 | browser-stdout@1.3.1: 327 | version "1.3.1" 328 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 329 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 330 | 331 | bson@^1.1.1, bson@^1.1.4: 332 | version "1.1.4" 333 | resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.4.tgz#f76870d799f15b854dffb7ee32f0a874797f7e89" 334 | integrity sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q== 335 | 336 | buffer-crc32@~0.2.3: 337 | version "0.2.13" 338 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 339 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= 340 | 341 | buffer-writer@2.0.0: 342 | version "2.0.0" 343 | resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" 344 | integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== 345 | 346 | buffer@4.9.1: 347 | version "4.9.1" 348 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 349 | integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= 350 | dependencies: 351 | base64-js "^1.0.2" 352 | ieee754 "^1.1.4" 353 | isarray "^1.0.0" 354 | 355 | buffer@^5.5.0: 356 | version "5.6.0" 357 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" 358 | integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== 359 | dependencies: 360 | base64-js "^1.0.2" 361 | ieee754 "^1.1.4" 362 | 363 | caching-transform@^3.0.2: 364 | version "3.0.2" 365 | resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-3.0.2.tgz#601d46b91eca87687a281e71cef99791b0efca70" 366 | integrity sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w== 367 | dependencies: 368 | hasha "^3.0.0" 369 | make-dir "^2.0.0" 370 | package-hash "^3.0.0" 371 | write-file-atomic "^2.4.2" 372 | 373 | camelcase@^5.0.0, camelcase@^5.3.1: 374 | version "5.3.1" 375 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 376 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 377 | 378 | chai@^4.2.0: 379 | version "4.2.0" 380 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" 381 | integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== 382 | dependencies: 383 | assertion-error "^1.1.0" 384 | check-error "^1.0.2" 385 | deep-eql "^3.0.1" 386 | get-func-name "^2.0.0" 387 | pathval "^1.1.0" 388 | type-detect "^4.0.5" 389 | 390 | chalk@^2.0.0, chalk@^2.4.2: 391 | version "2.4.2" 392 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 393 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 394 | dependencies: 395 | ansi-styles "^3.2.1" 396 | escape-string-regexp "^1.0.5" 397 | supports-color "^5.3.0" 398 | 399 | check-error@^1.0.2: 400 | version "1.0.2" 401 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 402 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 403 | 404 | chokidar@3.3.0: 405 | version "3.3.0" 406 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" 407 | integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== 408 | dependencies: 409 | anymatch "~3.1.1" 410 | braces "~3.0.2" 411 | glob-parent "~5.1.0" 412 | is-binary-path "~2.1.0" 413 | is-glob "~4.0.1" 414 | normalize-path "~3.0.0" 415 | readdirp "~3.2.0" 416 | optionalDependencies: 417 | fsevents "~2.1.1" 418 | 419 | cliui@^5.0.0: 420 | version "5.0.0" 421 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 422 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 423 | dependencies: 424 | string-width "^3.1.0" 425 | strip-ansi "^5.2.0" 426 | wrap-ansi "^5.1.0" 427 | 428 | color-convert@^1.9.0: 429 | version "1.9.3" 430 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 431 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 432 | dependencies: 433 | color-name "1.1.3" 434 | 435 | color-name@1.1.3: 436 | version "1.1.3" 437 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 438 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 439 | 440 | commondir@^1.0.1: 441 | version "1.0.1" 442 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 443 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 444 | 445 | concat-map@0.0.1: 446 | version "0.0.1" 447 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 448 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 449 | 450 | convert-source-map@^1.6.0: 451 | version "1.7.0" 452 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" 453 | integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== 454 | dependencies: 455 | safe-buffer "~5.1.1" 456 | 457 | core-util-is@~1.0.0: 458 | version "1.0.2" 459 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 460 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 461 | 462 | cp-file@^6.2.0: 463 | version "6.2.0" 464 | resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-6.2.0.tgz#40d5ea4a1def2a9acdd07ba5c0b0246ef73dc10d" 465 | integrity sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA== 466 | dependencies: 467 | graceful-fs "^4.1.2" 468 | make-dir "^2.0.0" 469 | nested-error-stacks "^2.0.0" 470 | pify "^4.0.1" 471 | safe-buffer "^5.0.1" 472 | 473 | cross-spawn@^4: 474 | version "4.0.2" 475 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" 476 | integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= 477 | dependencies: 478 | lru-cache "^4.0.1" 479 | which "^1.2.9" 480 | 481 | cross-spawn@^7.0.1: 482 | version "7.0.2" 483 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" 484 | integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw== 485 | dependencies: 486 | path-key "^3.1.0" 487 | shebang-command "^2.0.0" 488 | which "^2.0.1" 489 | 490 | debug@3.2.6: 491 | version "3.2.6" 492 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 493 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 494 | dependencies: 495 | ms "^2.1.1" 496 | 497 | debug@4, debug@^4.1.0, debug@^4.1.1: 498 | version "4.1.1" 499 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 500 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 501 | dependencies: 502 | ms "^2.1.1" 503 | 504 | decamelize@^1.2.0: 505 | version "1.2.0" 506 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 507 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 508 | 509 | dedent@^0.7.0: 510 | version "0.7.0" 511 | resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 512 | integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= 513 | 514 | deep-eql@^3.0.1: 515 | version "3.0.1" 516 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 517 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 518 | dependencies: 519 | type-detect "^4.0.0" 520 | 521 | deep-equal@~1.1.1: 522 | version "1.1.1" 523 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" 524 | integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== 525 | dependencies: 526 | is-arguments "^1.0.4" 527 | is-date-object "^1.0.1" 528 | is-regex "^1.0.4" 529 | object-is "^1.0.1" 530 | object-keys "^1.1.1" 531 | regexp.prototype.flags "^1.2.0" 532 | 533 | default-require-extensions@^2.0.0: 534 | version "2.0.0" 535 | resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" 536 | integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc= 537 | dependencies: 538 | strip-bom "^3.0.0" 539 | 540 | define-properties@^1.1.2, define-properties@^1.1.3: 541 | version "1.1.3" 542 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 543 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 544 | dependencies: 545 | object-keys "^1.0.12" 546 | 547 | defined@~1.0.0: 548 | version "1.0.0" 549 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" 550 | integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= 551 | 552 | denque@^1.4.1: 553 | version "1.4.1" 554 | resolved "https://registry.yarnpkg.com/denque/-/denque-1.4.1.tgz#6744ff7641c148c3f8a69c307e51235c1f4a37cf" 555 | integrity sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ== 556 | 557 | diff@3.5.0: 558 | version "3.5.0" 559 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 560 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 561 | 562 | dotignore@~0.1.2: 563 | version "0.1.2" 564 | resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" 565 | integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== 566 | dependencies: 567 | minimatch "^3.0.4" 568 | 569 | each-series@^1.0.0: 570 | version "1.0.0" 571 | resolved "https://registry.yarnpkg.com/each-series/-/each-series-1.0.0.tgz#f886e6c66dfdb25ef1fe73564146ee5cb478afcb" 572 | integrity sha1-+Ibmxm39sl7x/nNWQUbuXLR4r8s= 573 | 574 | emoji-regex@^7.0.1: 575 | version "7.0.3" 576 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 577 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 578 | 579 | end-of-stream@^1.4.1: 580 | version "1.4.4" 581 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 582 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 583 | dependencies: 584 | once "^1.4.0" 585 | 586 | error-ex@^1.3.1: 587 | version "1.3.2" 588 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 589 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 590 | dependencies: 591 | is-arrayish "^0.2.1" 592 | 593 | es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: 594 | version "1.17.5" 595 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" 596 | integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== 597 | dependencies: 598 | es-to-primitive "^1.2.1" 599 | function-bind "^1.1.1" 600 | has "^1.0.3" 601 | has-symbols "^1.0.1" 602 | is-callable "^1.1.5" 603 | is-regex "^1.0.5" 604 | object-inspect "^1.7.0" 605 | object-keys "^1.1.1" 606 | object.assign "^4.1.0" 607 | string.prototype.trimleft "^2.1.1" 608 | string.prototype.trimright "^2.1.1" 609 | 610 | es-to-primitive@^1.2.1: 611 | version "1.2.1" 612 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 613 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 614 | dependencies: 615 | is-callable "^1.1.4" 616 | is-date-object "^1.0.1" 617 | is-symbol "^1.0.2" 618 | 619 | es6-error@^4.0.1: 620 | version "4.1.1" 621 | resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" 622 | integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== 623 | 624 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: 625 | version "1.0.5" 626 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 627 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 628 | 629 | esprima@^4.0.0: 630 | version "4.0.1" 631 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 632 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 633 | 634 | events@1.1.1: 635 | version "1.1.1" 636 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 637 | integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= 638 | 639 | faker@^4.1.0: 640 | version "4.1.0" 641 | resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f" 642 | integrity sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8= 643 | 644 | fd-slicer@~1.1.0: 645 | version "1.1.0" 646 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 647 | integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= 648 | dependencies: 649 | pend "~1.2.0" 650 | 651 | fill-range@^7.0.1: 652 | version "7.0.1" 653 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 654 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 655 | dependencies: 656 | to-regex-range "^5.0.1" 657 | 658 | find-cache-dir@3.3.1: 659 | version "3.3.1" 660 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" 661 | integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== 662 | dependencies: 663 | commondir "^1.0.1" 664 | make-dir "^3.0.2" 665 | pkg-dir "^4.1.0" 666 | 667 | find-cache-dir@^2.1.0: 668 | version "2.1.0" 669 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" 670 | integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== 671 | dependencies: 672 | commondir "^1.0.1" 673 | make-dir "^2.0.0" 674 | pkg-dir "^3.0.0" 675 | 676 | find-package-json@^1.2.0: 677 | version "1.2.0" 678 | resolved "https://registry.yarnpkg.com/find-package-json/-/find-package-json-1.2.0.tgz#4057d1b943f82d8445fe52dc9cf456f6b8b58083" 679 | integrity sha512-+SOGcLGYDJHtyqHd87ysBhmaeQ95oWspDKnMXBrnQ9Eq4OkLNqejgoaD8xVWu6GPa0B6roa6KinCMEMcVeqONw== 680 | 681 | find-up@3.0.0, find-up@^3.0.0: 682 | version "3.0.0" 683 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 684 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 685 | dependencies: 686 | locate-path "^3.0.0" 687 | 688 | find-up@^4.0.0: 689 | version "4.1.0" 690 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 691 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 692 | dependencies: 693 | locate-path "^5.0.0" 694 | path-exists "^4.0.0" 695 | 696 | flat@^4.1.0: 697 | version "4.1.0" 698 | resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" 699 | integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== 700 | dependencies: 701 | is-buffer "~2.0.3" 702 | 703 | flow-bin@^0.112.0: 704 | version "0.112.0" 705 | resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.112.0.tgz#6a21c31937c4a2f23a750056a364c598a95ea216" 706 | integrity sha512-vdcuKv0UU55vjv0e2EVh1ZxlU+TSNT19SkE+6gT1vYzTKtzYE6dLuAmBIiS3Rg2N9D9HOI6TKSyl53zPtqZLrA== 707 | 708 | for-each@~0.3.3: 709 | version "0.3.3" 710 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" 711 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== 712 | dependencies: 713 | is-callable "^1.1.3" 714 | 715 | foreground-child@^1.5.6: 716 | version "1.5.6" 717 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" 718 | integrity sha1-T9ca0t/elnibmApcCilZN8svXOk= 719 | dependencies: 720 | cross-spawn "^4" 721 | signal-exit "^3.0.0" 722 | 723 | fs-constants@^1.0.0: 724 | version "1.0.0" 725 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 726 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 727 | 728 | fs.realpath@^1.0.0: 729 | version "1.0.0" 730 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 731 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 732 | 733 | fsevents@~2.1.1: 734 | version "2.1.3" 735 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 736 | integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 737 | 738 | function-bind@^1.1.1, function-bind@~1.1.1: 739 | version "1.1.1" 740 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 741 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 742 | 743 | get-caller-file@^2.0.1: 744 | version "2.0.5" 745 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 746 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 747 | 748 | get-func-name@^2.0.0: 749 | version "2.0.0" 750 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 751 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 752 | 753 | get-port@*, get-port@5.1.1: 754 | version "5.1.1" 755 | resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" 756 | integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== 757 | 758 | glob-parent@~5.1.0: 759 | version "5.1.1" 760 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 761 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 762 | dependencies: 763 | is-glob "^4.0.1" 764 | 765 | glob@7.1.3: 766 | version "7.1.3" 767 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 768 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 769 | dependencies: 770 | fs.realpath "^1.0.0" 771 | inflight "^1.0.4" 772 | inherits "2" 773 | minimatch "^3.0.4" 774 | once "^1.3.0" 775 | path-is-absolute "^1.0.0" 776 | 777 | glob@^7.1.3, glob@~7.1.6: 778 | version "7.1.6" 779 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 780 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 781 | dependencies: 782 | fs.realpath "^1.0.0" 783 | inflight "^1.0.4" 784 | inherits "2" 785 | minimatch "^3.0.4" 786 | once "^1.3.0" 787 | path-is-absolute "^1.0.0" 788 | 789 | globals@^11.1.0: 790 | version "11.12.0" 791 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 792 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 793 | 794 | graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: 795 | version "4.2.3" 796 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 797 | integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== 798 | 799 | growl@1.10.5: 800 | version "1.10.5" 801 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 802 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 803 | 804 | has-flag@^3.0.0: 805 | version "3.0.0" 806 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 807 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 808 | 809 | has-symbols@^1.0.0, has-symbols@^1.0.1: 810 | version "1.0.1" 811 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 812 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 813 | 814 | has@^1.0.3, has@~1.0.3: 815 | version "1.0.3" 816 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 817 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 818 | dependencies: 819 | function-bind "^1.1.1" 820 | 821 | hasha@^3.0.0: 822 | version "3.0.0" 823 | resolved "https://registry.yarnpkg.com/hasha/-/hasha-3.0.0.tgz#52a32fab8569d41ca69a61ff1a214f8eb7c8bd39" 824 | integrity sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk= 825 | dependencies: 826 | is-stream "^1.0.1" 827 | 828 | he@1.2.0: 829 | version "1.2.0" 830 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 831 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 832 | 833 | hosted-git-info@^2.1.4: 834 | version "2.8.8" 835 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" 836 | integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== 837 | 838 | html-escaper@^2.0.0: 839 | version "2.0.2" 840 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 841 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 842 | 843 | https-proxy-agent@5.0.0: 844 | version "5.0.0" 845 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" 846 | integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== 847 | dependencies: 848 | agent-base "6" 849 | debug "4" 850 | 851 | ieee754@1.1.13, ieee754@^1.1.4: 852 | version "1.1.13" 853 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" 854 | integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== 855 | 856 | imurmurhash@^0.1.4: 857 | version "0.1.4" 858 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 859 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 860 | 861 | inflight@^1.0.4: 862 | version "1.0.6" 863 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 864 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 865 | dependencies: 866 | once "^1.3.0" 867 | wrappy "1" 868 | 869 | inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: 870 | version "2.0.4" 871 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 872 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 873 | 874 | is-arguments@^1.0.4: 875 | version "1.0.4" 876 | resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" 877 | integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== 878 | 879 | is-arrayish@^0.2.1: 880 | version "0.2.1" 881 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 882 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 883 | 884 | is-binary-path@~2.1.0: 885 | version "2.1.0" 886 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 887 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 888 | dependencies: 889 | binary-extensions "^2.0.0" 890 | 891 | is-buffer@~2.0.3: 892 | version "2.0.4" 893 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" 894 | integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== 895 | 896 | is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5: 897 | version "1.1.5" 898 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" 899 | integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== 900 | 901 | is-date-object@^1.0.1: 902 | version "1.0.2" 903 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 904 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 905 | 906 | is-extglob@^2.1.1: 907 | version "2.1.1" 908 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 909 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 910 | 911 | is-fullwidth-code-point@^2.0.0: 912 | version "2.0.0" 913 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 914 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 915 | 916 | is-glob@^4.0.1, is-glob@~4.0.1: 917 | version "4.0.1" 918 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 919 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 920 | dependencies: 921 | is-extglob "^2.1.1" 922 | 923 | is-number@^7.0.0: 924 | version "7.0.0" 925 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 926 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 927 | 928 | is-regex@^1.0.4, is-regex@^1.0.5, is-regex@~1.0.5: 929 | version "1.0.5" 930 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" 931 | integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== 932 | dependencies: 933 | has "^1.0.3" 934 | 935 | is-stream@^1.0.1: 936 | version "1.1.0" 937 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 938 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 939 | 940 | is-symbol@^1.0.2: 941 | version "1.0.3" 942 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 943 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 944 | dependencies: 945 | has-symbols "^1.0.1" 946 | 947 | isarray@^1.0.0, isarray@~1.0.0: 948 | version "1.0.0" 949 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 950 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 951 | 952 | isexe@^2.0.0: 953 | version "2.0.0" 954 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 955 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 956 | 957 | istanbul-lib-coverage@^2.0.5: 958 | version "2.0.5" 959 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" 960 | integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== 961 | 962 | istanbul-lib-hook@^2.0.7: 963 | version "2.0.7" 964 | resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz#c95695f383d4f8f60df1f04252a9550e15b5b133" 965 | integrity sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA== 966 | dependencies: 967 | append-transform "^1.0.0" 968 | 969 | istanbul-lib-instrument@^3.3.0: 970 | version "3.3.0" 971 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" 972 | integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== 973 | dependencies: 974 | "@babel/generator" "^7.4.0" 975 | "@babel/parser" "^7.4.3" 976 | "@babel/template" "^7.4.0" 977 | "@babel/traverse" "^7.4.3" 978 | "@babel/types" "^7.4.0" 979 | istanbul-lib-coverage "^2.0.5" 980 | semver "^6.0.0" 981 | 982 | istanbul-lib-report@^2.0.8: 983 | version "2.0.8" 984 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" 985 | integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== 986 | dependencies: 987 | istanbul-lib-coverage "^2.0.5" 988 | make-dir "^2.1.0" 989 | supports-color "^6.1.0" 990 | 991 | istanbul-lib-source-maps@^3.0.6: 992 | version "3.0.6" 993 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" 994 | integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== 995 | dependencies: 996 | debug "^4.1.1" 997 | istanbul-lib-coverage "^2.0.5" 998 | make-dir "^2.1.0" 999 | rimraf "^2.6.3" 1000 | source-map "^0.6.1" 1001 | 1002 | istanbul-reports@^2.2.4: 1003 | version "2.2.7" 1004 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" 1005 | integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== 1006 | dependencies: 1007 | html-escaper "^2.0.0" 1008 | 1009 | jmespath@0.15.0: 1010 | version "0.15.0" 1011 | resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" 1012 | integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= 1013 | 1014 | js-tokens@^4.0.0: 1015 | version "4.0.0" 1016 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1017 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1018 | 1019 | js-yaml@3.13.1, js-yaml@^3.13.1: 1020 | version "3.13.1" 1021 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1022 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1023 | dependencies: 1024 | argparse "^1.0.7" 1025 | esprima "^4.0.0" 1026 | 1027 | jsesc@^2.5.1: 1028 | version "2.5.2" 1029 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1030 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1031 | 1032 | json-parse-better-errors@^1.0.1: 1033 | version "1.0.2" 1034 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 1035 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 1036 | 1037 | load-json-file@^4.0.0: 1038 | version "4.0.0" 1039 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" 1040 | integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= 1041 | dependencies: 1042 | graceful-fs "^4.1.2" 1043 | parse-json "^4.0.0" 1044 | pify "^3.0.0" 1045 | strip-bom "^3.0.0" 1046 | 1047 | locate-path@^3.0.0: 1048 | version "3.0.0" 1049 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1050 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1051 | dependencies: 1052 | p-locate "^3.0.0" 1053 | path-exists "^3.0.0" 1054 | 1055 | locate-path@^5.0.0: 1056 | version "5.0.0" 1057 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1058 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1059 | dependencies: 1060 | p-locate "^4.1.0" 1061 | 1062 | lockfile@^1.0.4: 1063 | version "1.0.4" 1064 | resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" 1065 | integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== 1066 | dependencies: 1067 | signal-exit "^3.0.2" 1068 | 1069 | lodash.flattendeep@^4.4.0: 1070 | version "4.4.0" 1071 | resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" 1072 | integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= 1073 | 1074 | lodash@^4.17.13, lodash@^4.17.15: 1075 | version "4.17.15" 1076 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 1077 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 1078 | 1079 | log-symbols@3.0.0: 1080 | version "3.0.0" 1081 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" 1082 | integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== 1083 | dependencies: 1084 | chalk "^2.4.2" 1085 | 1086 | lru-cache@^4.0.1: 1087 | version "4.1.5" 1088 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 1089 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== 1090 | dependencies: 1091 | pseudomap "^1.0.2" 1092 | yallist "^2.1.2" 1093 | 1094 | make-dir@^2.0.0, make-dir@^2.1.0: 1095 | version "2.1.0" 1096 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" 1097 | integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== 1098 | dependencies: 1099 | pify "^4.0.1" 1100 | semver "^5.6.0" 1101 | 1102 | make-dir@^3.0.2: 1103 | version "3.1.0" 1104 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 1105 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 1106 | dependencies: 1107 | semver "^6.0.0" 1108 | 1109 | md5-file@^4.0.0: 1110 | version "4.0.0" 1111 | resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-4.0.0.tgz#f3f7ba1e2dd1144d5bf1de698d0e5f44a4409584" 1112 | integrity sha512-UC0qFwyAjn4YdPpKaDNw6gNxRf7Mcx7jC1UGCY4boCzgvU2Aoc1mOGzTtrjjLKhM5ivsnhoKpQVxKPp+1j1qwg== 1113 | 1114 | memory-pager@^1.0.2: 1115 | version "1.5.0" 1116 | resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" 1117 | integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== 1118 | 1119 | merge-source-map@^1.1.0: 1120 | version "1.1.0" 1121 | resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" 1122 | integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== 1123 | dependencies: 1124 | source-map "^0.6.1" 1125 | 1126 | minimatch@3.0.4, minimatch@^3.0.4: 1127 | version "3.0.4" 1128 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1129 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1130 | dependencies: 1131 | brace-expansion "^1.1.7" 1132 | 1133 | minimist@^1.2.5, minimist@~1.2.0: 1134 | version "1.2.5" 1135 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1136 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1137 | 1138 | mkdirp@0.5.5, mkdirp@^0.5.0: 1139 | version "0.5.5" 1140 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 1141 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 1142 | dependencies: 1143 | minimist "^1.2.5" 1144 | 1145 | mkdirp@^1.0.3: 1146 | version "1.0.4" 1147 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 1148 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 1149 | 1150 | mocha@^7.1.2: 1151 | version "7.1.2" 1152 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.1.2.tgz#8e40d198acf91a52ace122cd7599c9ab857b29e6" 1153 | integrity sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA== 1154 | dependencies: 1155 | ansi-colors "3.2.3" 1156 | browser-stdout "1.3.1" 1157 | chokidar "3.3.0" 1158 | debug "3.2.6" 1159 | diff "3.5.0" 1160 | escape-string-regexp "1.0.5" 1161 | find-up "3.0.0" 1162 | glob "7.1.3" 1163 | growl "1.10.5" 1164 | he "1.2.0" 1165 | js-yaml "3.13.1" 1166 | log-symbols "3.0.0" 1167 | minimatch "3.0.4" 1168 | mkdirp "0.5.5" 1169 | ms "2.1.1" 1170 | node-environment-flags "1.0.6" 1171 | object.assign "4.1.0" 1172 | strip-json-comments "2.0.1" 1173 | supports-color "6.0.0" 1174 | which "1.3.1" 1175 | wide-align "1.1.3" 1176 | yargs "13.3.2" 1177 | yargs-parser "13.1.2" 1178 | yargs-unparser "1.6.0" 1179 | 1180 | moment@^2.24.0: 1181 | version "2.24.0" 1182 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" 1183 | integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== 1184 | 1185 | mongodb-memory-server-core@6.5.2: 1186 | version "6.5.2" 1187 | resolved "https://registry.yarnpkg.com/mongodb-memory-server-core/-/mongodb-memory-server-core-6.5.2.tgz#21c96b6e3104b999905ecb232f83d2432467a0f5" 1188 | integrity sha512-Cs1wB+GrL2KconDD2emk6ptU1OqdYia11I7fw5sOqnEWc8stTQ4rtptbRcLmHyTcTgRYC/fsQQvzbbd7DBf4DQ== 1189 | dependencies: 1190 | "@types/cross-spawn" "^6.0.1" 1191 | "@types/debug" "^4.1.5" 1192 | "@types/dedent" "^0.7.0" 1193 | "@types/find-cache-dir" "^3.2.0" 1194 | "@types/find-package-json" "^1.1.1" 1195 | "@types/get-port" "^4.0.1" 1196 | "@types/lockfile" "^1.0.1" 1197 | "@types/md5-file" "^4.0.1" 1198 | "@types/mkdirp" "^1.0.0" 1199 | "@types/tmp" "0.1.0" 1200 | "@types/uuid" "7.0.0" 1201 | camelcase "^5.3.1" 1202 | cross-spawn "^7.0.1" 1203 | debug "^4.1.1" 1204 | dedent "^0.7.0" 1205 | find-cache-dir "3.3.1" 1206 | find-package-json "^1.2.0" 1207 | get-port "5.1.1" 1208 | https-proxy-agent "5.0.0" 1209 | lockfile "^1.0.4" 1210 | md5-file "^4.0.0" 1211 | mkdirp "^1.0.3" 1212 | tar-stream "^2.1.1" 1213 | tmp "^0.1.0" 1214 | uuid "^7.0.2" 1215 | yauzl "^2.10.0" 1216 | optionalDependencies: 1217 | mongodb "^3.5.4" 1218 | 1219 | mongodb-memory-server@^6.5.2: 1220 | version "6.5.2" 1221 | resolved "https://registry.yarnpkg.com/mongodb-memory-server/-/mongodb-memory-server-6.5.2.tgz#47f4c19ab830f63ee6119629072eee2df7d8957a" 1222 | integrity sha512-PUCiWcHGwyqQiZF3J4iCy1DXqPjoNtehV2qMFJ26rhNBFzmc5SW+9/FUQwGNLge5/Lm1dEwcraJD5PUe8m9Kdg== 1223 | dependencies: 1224 | mongodb-memory-server-core "6.5.2" 1225 | 1226 | mongodb@^3.3.2, mongodb@^3.3.5: 1227 | version "3.5.5" 1228 | resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.5.5.tgz#1334c3e5a384469ac7ef0dea69d59acc829a496a" 1229 | integrity sha512-GCjDxR3UOltDq00Zcpzql6dQo1sVry60OXJY3TDmFc2SWFY6c8Gn1Ardidc5jDirvJrx2GC3knGOImKphbSL3A== 1230 | dependencies: 1231 | bl "^2.2.0" 1232 | bson "^1.1.1" 1233 | denque "^1.4.1" 1234 | require_optional "^1.0.1" 1235 | safe-buffer "^5.1.2" 1236 | optionalDependencies: 1237 | saslprep "^1.0.0" 1238 | 1239 | mongodb@^3.5.4: 1240 | version "3.5.6" 1241 | resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.5.6.tgz#a1be2d9796c8a8a5b0e6bcbc6baaaa406bd5c0d5" 1242 | integrity sha512-sh3q3GLDLT4QmoDLamxtAECwC3RGjq+oNuK1ENV8+tnipIavss6sMYt77hpygqlMOCt0Sla5cl7H4SKCVBCGEg== 1243 | dependencies: 1244 | bl "^2.2.0" 1245 | bson "^1.1.4" 1246 | denque "^1.4.1" 1247 | require_optional "^1.0.1" 1248 | safe-buffer "^5.1.2" 1249 | optionalDependencies: 1250 | saslprep "^1.0.0" 1251 | 1252 | mongojs@^3.1.0: 1253 | version "3.1.0" 1254 | resolved "https://registry.yarnpkg.com/mongojs/-/mongojs-3.1.0.tgz#4242e6f5218a7301c35393b64ba9130d1d9488ef" 1255 | integrity sha512-aXJ4xfXwx9s1cqtKTZ24PypXiWhIgvgENObQzCGbV4QBxEVedy3yuErhx6znk959cF2dOzL2ClgXJvIhfgkpIQ== 1256 | dependencies: 1257 | each-series "^1.0.0" 1258 | mongodb "^3.3.2" 1259 | nyc "^14.1.1" 1260 | once "^1.4.0" 1261 | parse-mongo-url "^1.1.1" 1262 | readable-stream "^3.4.0" 1263 | thunky "^1.1.0" 1264 | to-mongodb-core "^2.0.0" 1265 | 1266 | ms@2.1.1: 1267 | version "2.1.1" 1268 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1269 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 1270 | 1271 | ms@^2.1.1: 1272 | version "2.1.2" 1273 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1274 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1275 | 1276 | nested-error-stacks@^2.0.0: 1277 | version "2.1.0" 1278 | resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" 1279 | integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== 1280 | 1281 | node-environment-flags@1.0.6: 1282 | version "1.0.6" 1283 | resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" 1284 | integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== 1285 | dependencies: 1286 | object.getownpropertydescriptors "^2.0.3" 1287 | semver "^5.7.0" 1288 | 1289 | normalize-package-data@^2.3.2: 1290 | version "2.5.0" 1291 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1292 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1293 | dependencies: 1294 | hosted-git-info "^2.1.4" 1295 | resolve "^1.10.0" 1296 | semver "2 || 3 || 4 || 5" 1297 | validate-npm-package-license "^3.0.1" 1298 | 1299 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1300 | version "3.0.0" 1301 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1302 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1303 | 1304 | nyc@^14.1.1: 1305 | version "14.1.1" 1306 | resolved "https://registry.yarnpkg.com/nyc/-/nyc-14.1.1.tgz#151d64a6a9f9f5908a1b73233931e4a0a3075eeb" 1307 | integrity sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw== 1308 | dependencies: 1309 | archy "^1.0.0" 1310 | caching-transform "^3.0.2" 1311 | convert-source-map "^1.6.0" 1312 | cp-file "^6.2.0" 1313 | find-cache-dir "^2.1.0" 1314 | find-up "^3.0.0" 1315 | foreground-child "^1.5.6" 1316 | glob "^7.1.3" 1317 | istanbul-lib-coverage "^2.0.5" 1318 | istanbul-lib-hook "^2.0.7" 1319 | istanbul-lib-instrument "^3.3.0" 1320 | istanbul-lib-report "^2.0.8" 1321 | istanbul-lib-source-maps "^3.0.6" 1322 | istanbul-reports "^2.2.4" 1323 | js-yaml "^3.13.1" 1324 | make-dir "^2.1.0" 1325 | merge-source-map "^1.1.0" 1326 | resolve-from "^4.0.0" 1327 | rimraf "^2.6.3" 1328 | signal-exit "^3.0.2" 1329 | spawn-wrap "^1.4.2" 1330 | test-exclude "^5.2.3" 1331 | uuid "^3.3.2" 1332 | yargs "^13.2.2" 1333 | yargs-parser "^13.0.0" 1334 | 1335 | object-inspect@^1.7.0, object-inspect@~1.7.0: 1336 | version "1.7.0" 1337 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" 1338 | integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== 1339 | 1340 | object-is@^1.0.1: 1341 | version "1.0.2" 1342 | resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" 1343 | integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== 1344 | 1345 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 1346 | version "1.1.1" 1347 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1348 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1349 | 1350 | object.assign@4.1.0, object.assign@^4.1.0: 1351 | version "4.1.0" 1352 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 1353 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 1354 | dependencies: 1355 | define-properties "^1.1.2" 1356 | function-bind "^1.1.1" 1357 | has-symbols "^1.0.0" 1358 | object-keys "^1.0.11" 1359 | 1360 | object.getownpropertydescriptors@^2.0.3: 1361 | version "2.1.0" 1362 | resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" 1363 | integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== 1364 | dependencies: 1365 | define-properties "^1.1.3" 1366 | es-abstract "^1.17.0-next.1" 1367 | 1368 | once@^1.3.0, once@^1.4.0: 1369 | version "1.4.0" 1370 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1371 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1372 | dependencies: 1373 | wrappy "1" 1374 | 1375 | os-homedir@^1.0.1: 1376 | version "1.0.2" 1377 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1378 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 1379 | 1380 | p-limit@^2.0.0, p-limit@^2.2.0: 1381 | version "2.3.0" 1382 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1383 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1384 | dependencies: 1385 | p-try "^2.0.0" 1386 | 1387 | p-locate@^3.0.0: 1388 | version "3.0.0" 1389 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1390 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 1391 | dependencies: 1392 | p-limit "^2.0.0" 1393 | 1394 | p-locate@^4.1.0: 1395 | version "4.1.0" 1396 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1397 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1398 | dependencies: 1399 | p-limit "^2.2.0" 1400 | 1401 | p-try@^2.0.0: 1402 | version "2.2.0" 1403 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1404 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1405 | 1406 | package-hash@^3.0.0: 1407 | version "3.0.0" 1408 | resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-3.0.0.tgz#50183f2d36c9e3e528ea0a8605dff57ce976f88e" 1409 | integrity sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA== 1410 | dependencies: 1411 | graceful-fs "^4.1.15" 1412 | hasha "^3.0.0" 1413 | lodash.flattendeep "^4.4.0" 1414 | release-zalgo "^1.0.0" 1415 | 1416 | packet-reader@1.0.0: 1417 | version "1.0.0" 1418 | resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" 1419 | integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== 1420 | 1421 | parse-json@^4.0.0: 1422 | version "4.0.0" 1423 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 1424 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= 1425 | dependencies: 1426 | error-ex "^1.3.1" 1427 | json-parse-better-errors "^1.0.1" 1428 | 1429 | parse-mongo-url@^1.1.1: 1430 | version "1.1.1" 1431 | resolved "https://registry.yarnpkg.com/parse-mongo-url/-/parse-mongo-url-1.1.1.tgz#66238df5f8e7c0c8ca4cd970d4ab6a1373eb75b5" 1432 | integrity sha1-ZiON9fjnwMjKTNlw1KtqE3PrdbU= 1433 | 1434 | path-exists@^3.0.0: 1435 | version "3.0.0" 1436 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1437 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1438 | 1439 | path-exists@^4.0.0: 1440 | version "4.0.0" 1441 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1442 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1443 | 1444 | path-is-absolute@^1.0.0: 1445 | version "1.0.1" 1446 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1447 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1448 | 1449 | path-key@^3.1.0: 1450 | version "3.1.1" 1451 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1452 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1453 | 1454 | path-parse@^1.0.6: 1455 | version "1.0.6" 1456 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1457 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 1458 | 1459 | path-type@^3.0.0: 1460 | version "3.0.0" 1461 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" 1462 | integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== 1463 | dependencies: 1464 | pify "^3.0.0" 1465 | 1466 | pathval@^1.1.0: 1467 | version "1.1.0" 1468 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" 1469 | integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= 1470 | 1471 | pend@~1.2.0: 1472 | version "1.2.0" 1473 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 1474 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= 1475 | 1476 | pg-connection-string@0.1.3: 1477 | version "0.1.3" 1478 | resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-0.1.3.tgz#da1847b20940e42ee1492beaf65d49d91b245df7" 1479 | integrity sha1-2hhHsglA5C7hSSvq9l1J2RskXfc= 1480 | 1481 | pg-int8@1.0.1: 1482 | version "1.0.1" 1483 | resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" 1484 | integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== 1485 | 1486 | pg-packet-stream@^1.1.0: 1487 | version "1.1.0" 1488 | resolved "https://registry.yarnpkg.com/pg-packet-stream/-/pg-packet-stream-1.1.0.tgz#e45c3ae678b901a2873af1e17b92d787962ef914" 1489 | integrity sha512-kRBH0tDIW/8lfnnOyTwKD23ygJ/kexQVXZs7gEyBljw4FYqimZFxnMMx50ndZ8In77QgfGuItS5LLclC2TtjYg== 1490 | 1491 | pg-pool@^2.0.10: 1492 | version "2.0.10" 1493 | resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-2.0.10.tgz#842ee23b04e86824ce9d786430f8365082d81c4a" 1494 | integrity sha512-qdwzY92bHf3nwzIUcj+zJ0Qo5lpG/YxchahxIN8+ZVmXqkahKXsnl2aiJPHLYN9o5mB/leG+Xh6XKxtP7e0sjg== 1495 | 1496 | pg-types@^2.1.0: 1497 | version "2.2.0" 1498 | resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" 1499 | integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== 1500 | dependencies: 1501 | pg-int8 "1.0.1" 1502 | postgres-array "~2.0.0" 1503 | postgres-bytea "~1.0.0" 1504 | postgres-date "~1.0.4" 1505 | postgres-interval "^1.1.0" 1506 | 1507 | pg@^7.14.0: 1508 | version "7.18.2" 1509 | resolved "https://registry.yarnpkg.com/pg/-/pg-7.18.2.tgz#4e219f05a00aff4db6aab1ba02f28ffa4513b0bb" 1510 | integrity sha512-Mvt0dGYMwvEADNKy5PMQGlzPudKcKKzJds/VbOeZJpb6f/pI3mmoXX0JksPgI3l3JPP/2Apq7F36O63J7mgveA== 1511 | dependencies: 1512 | buffer-writer "2.0.0" 1513 | packet-reader "1.0.0" 1514 | pg-connection-string "0.1.3" 1515 | pg-packet-stream "^1.1.0" 1516 | pg-pool "^2.0.10" 1517 | pg-types "^2.1.0" 1518 | pgpass "1.x" 1519 | semver "4.3.2" 1520 | 1521 | pgpass@1.x: 1522 | version "1.0.2" 1523 | resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.2.tgz#2a7bb41b6065b67907e91da1b07c1847c877b306" 1524 | integrity sha1-Knu0G2BltnkH6R2hsHwYR8h3swY= 1525 | dependencies: 1526 | split "^1.0.0" 1527 | 1528 | picomatch@^2.0.4: 1529 | version "2.2.2" 1530 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1531 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1532 | 1533 | pify@^3.0.0: 1534 | version "3.0.0" 1535 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1536 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 1537 | 1538 | pify@^4.0.1: 1539 | version "4.0.1" 1540 | resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" 1541 | integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== 1542 | 1543 | pkg-dir@^3.0.0: 1544 | version "3.0.0" 1545 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" 1546 | integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== 1547 | dependencies: 1548 | find-up "^3.0.0" 1549 | 1550 | pkg-dir@^4.1.0: 1551 | version "4.2.0" 1552 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1553 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1554 | dependencies: 1555 | find-up "^4.0.0" 1556 | 1557 | postgres-array@~2.0.0: 1558 | version "2.0.0" 1559 | resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" 1560 | integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== 1561 | 1562 | postgres-bytea@~1.0.0: 1563 | version "1.0.0" 1564 | resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" 1565 | integrity sha1-AntTPAqokOJtFy1Hz5zOzFIazTU= 1566 | 1567 | postgres-date@~1.0.4: 1568 | version "1.0.4" 1569 | resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.4.tgz#1c2728d62ef1bff49abdd35c1f86d4bdf118a728" 1570 | integrity sha512-bESRvKVuTrjoBluEcpv2346+6kgB7UlnqWZsnbnCccTNq/pqfj1j6oBaN5+b/NrDXepYUT/HKadqv3iS9lJuVA== 1571 | 1572 | postgres-interval@^1.1.0: 1573 | version "1.2.0" 1574 | resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" 1575 | integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== 1576 | dependencies: 1577 | xtend "^4.0.0" 1578 | 1579 | prettier@1.19.1: 1580 | version "1.19.1" 1581 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" 1582 | integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== 1583 | 1584 | process-nextick-args@~2.0.0: 1585 | version "2.0.1" 1586 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1587 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1588 | 1589 | pseudomap@^1.0.2: 1590 | version "1.0.2" 1591 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1592 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 1593 | 1594 | punycode@1.3.2: 1595 | version "1.3.2" 1596 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 1597 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 1598 | 1599 | querystring@0.2.0: 1600 | version "0.2.0" 1601 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 1602 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 1603 | 1604 | read-pkg-up@^4.0.0: 1605 | version "4.0.0" 1606 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" 1607 | integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== 1608 | dependencies: 1609 | find-up "^3.0.0" 1610 | read-pkg "^3.0.0" 1611 | 1612 | read-pkg@^3.0.0: 1613 | version "3.0.0" 1614 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" 1615 | integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= 1616 | dependencies: 1617 | load-json-file "^4.0.0" 1618 | normalize-package-data "^2.3.2" 1619 | path-type "^3.0.0" 1620 | 1621 | readable-stream@^2.3.5: 1622 | version "2.3.7" 1623 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1624 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1625 | dependencies: 1626 | core-util-is "~1.0.0" 1627 | inherits "~2.0.3" 1628 | isarray "~1.0.0" 1629 | process-nextick-args "~2.0.0" 1630 | safe-buffer "~5.1.1" 1631 | string_decoder "~1.1.1" 1632 | util-deprecate "~1.0.1" 1633 | 1634 | readable-stream@^3.1.1, readable-stream@^3.4.0: 1635 | version "3.6.0" 1636 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 1637 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 1638 | dependencies: 1639 | inherits "^2.0.3" 1640 | string_decoder "^1.1.1" 1641 | util-deprecate "^1.0.1" 1642 | 1643 | readdirp@~3.2.0: 1644 | version "3.2.0" 1645 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" 1646 | integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== 1647 | dependencies: 1648 | picomatch "^2.0.4" 1649 | 1650 | regexp.prototype.flags@^1.2.0: 1651 | version "1.3.0" 1652 | resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" 1653 | integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== 1654 | dependencies: 1655 | define-properties "^1.1.3" 1656 | es-abstract "^1.17.0-next.1" 1657 | 1658 | release-zalgo@^1.0.0: 1659 | version "1.0.0" 1660 | resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" 1661 | integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= 1662 | dependencies: 1663 | es6-error "^4.0.1" 1664 | 1665 | require-directory@^2.1.1: 1666 | version "2.1.1" 1667 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1668 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1669 | 1670 | require-main-filename@^2.0.0: 1671 | version "2.0.0" 1672 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 1673 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 1674 | 1675 | require_optional@^1.0.1: 1676 | version "1.0.1" 1677 | resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" 1678 | integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g== 1679 | dependencies: 1680 | resolve-from "^2.0.0" 1681 | semver "^5.1.0" 1682 | 1683 | resolve-from@^2.0.0: 1684 | version "2.0.0" 1685 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" 1686 | integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= 1687 | 1688 | resolve-from@^4.0.0: 1689 | version "4.0.0" 1690 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1691 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1692 | 1693 | resolve@^1.10.0, resolve@~1.15.1: 1694 | version "1.15.1" 1695 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" 1696 | integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== 1697 | dependencies: 1698 | path-parse "^1.0.6" 1699 | 1700 | resumer@~0.0.0: 1701 | version "0.0.0" 1702 | resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" 1703 | integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= 1704 | dependencies: 1705 | through "~2.3.4" 1706 | 1707 | rimraf@^2.6.2, rimraf@^2.6.3: 1708 | version "2.7.1" 1709 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 1710 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 1711 | dependencies: 1712 | glob "^7.1.3" 1713 | 1714 | safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: 1715 | version "5.2.0" 1716 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 1717 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== 1718 | 1719 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1720 | version "5.1.2" 1721 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1722 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1723 | 1724 | saslprep@^1.0.0: 1725 | version "1.0.3" 1726 | resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" 1727 | integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== 1728 | dependencies: 1729 | sparse-bitfield "^3.0.3" 1730 | 1731 | sax@1.2.1: 1732 | version "1.2.1" 1733 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" 1734 | integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= 1735 | 1736 | sax@>=0.6.0: 1737 | version "1.2.4" 1738 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 1739 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1740 | 1741 | "semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.6.0, semver@^5.7.0: 1742 | version "5.7.1" 1743 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1744 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1745 | 1746 | semver@4.3.2: 1747 | version "4.3.2" 1748 | resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" 1749 | integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c= 1750 | 1751 | semver@^6.0.0: 1752 | version "6.3.0" 1753 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1754 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1755 | 1756 | set-blocking@^2.0.0: 1757 | version "2.0.0" 1758 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1759 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 1760 | 1761 | shebang-command@^2.0.0: 1762 | version "2.0.0" 1763 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1764 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1765 | dependencies: 1766 | shebang-regex "^3.0.0" 1767 | 1768 | shebang-regex@^3.0.0: 1769 | version "3.0.0" 1770 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1771 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1772 | 1773 | signal-exit@^3.0.0, signal-exit@^3.0.2: 1774 | version "3.0.3" 1775 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1776 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1777 | 1778 | source-map@^0.5.0: 1779 | version "0.5.7" 1780 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1781 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1782 | 1783 | source-map@^0.6.1: 1784 | version "0.6.1" 1785 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1786 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1787 | 1788 | sparse-bitfield@^3.0.3: 1789 | version "3.0.3" 1790 | resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" 1791 | integrity sha1-/0rm5oZWBWuks+eSqzM004JzyhE= 1792 | dependencies: 1793 | memory-pager "^1.0.2" 1794 | 1795 | spawn-wrap@^1.4.2: 1796 | version "1.4.3" 1797 | resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.3.tgz#81b7670e170cca247d80bf5faf0cfb713bdcf848" 1798 | integrity sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw== 1799 | dependencies: 1800 | foreground-child "^1.5.6" 1801 | mkdirp "^0.5.0" 1802 | os-homedir "^1.0.1" 1803 | rimraf "^2.6.2" 1804 | signal-exit "^3.0.2" 1805 | which "^1.3.0" 1806 | 1807 | spdx-correct@^3.0.0: 1808 | version "3.1.0" 1809 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" 1810 | integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== 1811 | dependencies: 1812 | spdx-expression-parse "^3.0.0" 1813 | spdx-license-ids "^3.0.0" 1814 | 1815 | spdx-exceptions@^2.1.0: 1816 | version "2.2.0" 1817 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" 1818 | integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== 1819 | 1820 | spdx-expression-parse@^3.0.0: 1821 | version "3.0.0" 1822 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 1823 | integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== 1824 | dependencies: 1825 | spdx-exceptions "^2.1.0" 1826 | spdx-license-ids "^3.0.0" 1827 | 1828 | spdx-license-ids@^3.0.0: 1829 | version "3.0.5" 1830 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 1831 | integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== 1832 | 1833 | split@^1.0.0: 1834 | version "1.0.1" 1835 | resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" 1836 | integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== 1837 | dependencies: 1838 | through "2" 1839 | 1840 | sprintf-js@~1.0.2: 1841 | version "1.0.3" 1842 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1843 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1844 | 1845 | "string-width@^1.0.2 || 2": 1846 | version "2.1.1" 1847 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1848 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1849 | dependencies: 1850 | is-fullwidth-code-point "^2.0.0" 1851 | strip-ansi "^4.0.0" 1852 | 1853 | string-width@^3.0.0, string-width@^3.1.0: 1854 | version "3.1.0" 1855 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1856 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1857 | dependencies: 1858 | emoji-regex "^7.0.1" 1859 | is-fullwidth-code-point "^2.0.0" 1860 | strip-ansi "^5.1.0" 1861 | 1862 | string.prototype.trim@~1.2.1: 1863 | version "1.2.1" 1864 | resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" 1865 | integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw== 1866 | dependencies: 1867 | define-properties "^1.1.3" 1868 | es-abstract "^1.17.0-next.1" 1869 | function-bind "^1.1.1" 1870 | 1871 | string.prototype.trimend@^1.0.0: 1872 | version "1.0.1" 1873 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" 1874 | integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== 1875 | dependencies: 1876 | define-properties "^1.1.3" 1877 | es-abstract "^1.17.5" 1878 | 1879 | string.prototype.trimleft@^2.1.1: 1880 | version "2.1.2" 1881 | resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" 1882 | integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== 1883 | dependencies: 1884 | define-properties "^1.1.3" 1885 | es-abstract "^1.17.5" 1886 | string.prototype.trimstart "^1.0.0" 1887 | 1888 | string.prototype.trimright@^2.1.1: 1889 | version "2.1.2" 1890 | resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" 1891 | integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== 1892 | dependencies: 1893 | define-properties "^1.1.3" 1894 | es-abstract "^1.17.5" 1895 | string.prototype.trimend "^1.0.0" 1896 | 1897 | string.prototype.trimstart@^1.0.0: 1898 | version "1.0.1" 1899 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" 1900 | integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== 1901 | dependencies: 1902 | define-properties "^1.1.3" 1903 | es-abstract "^1.17.5" 1904 | 1905 | string_decoder@^1.1.1: 1906 | version "1.3.0" 1907 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1908 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1909 | dependencies: 1910 | safe-buffer "~5.2.0" 1911 | 1912 | string_decoder@~1.1.1: 1913 | version "1.1.1" 1914 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1915 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1916 | dependencies: 1917 | safe-buffer "~5.1.0" 1918 | 1919 | strip-ansi@^4.0.0: 1920 | version "4.0.0" 1921 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1922 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1923 | dependencies: 1924 | ansi-regex "^3.0.0" 1925 | 1926 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 1927 | version "5.2.0" 1928 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1929 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1930 | dependencies: 1931 | ansi-regex "^4.1.0" 1932 | 1933 | strip-bom@^3.0.0: 1934 | version "3.0.0" 1935 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1936 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 1937 | 1938 | strip-json-comments@2.0.1: 1939 | version "2.0.1" 1940 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1941 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1942 | 1943 | supports-color@6.0.0: 1944 | version "6.0.0" 1945 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" 1946 | integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== 1947 | dependencies: 1948 | has-flag "^3.0.0" 1949 | 1950 | supports-color@^5.3.0: 1951 | version "5.5.0" 1952 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1953 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1954 | dependencies: 1955 | has-flag "^3.0.0" 1956 | 1957 | supports-color@^6.1.0: 1958 | version "6.1.0" 1959 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" 1960 | integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== 1961 | dependencies: 1962 | has-flag "^3.0.0" 1963 | 1964 | tape@^4.11.0: 1965 | version "4.13.2" 1966 | resolved "https://registry.yarnpkg.com/tape/-/tape-4.13.2.tgz#eb419b9d9bc004025b1a81a5b63093e07f425629" 1967 | integrity sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ== 1968 | dependencies: 1969 | deep-equal "~1.1.1" 1970 | defined "~1.0.0" 1971 | dotignore "~0.1.2" 1972 | for-each "~0.3.3" 1973 | function-bind "~1.1.1" 1974 | glob "~7.1.6" 1975 | has "~1.0.3" 1976 | inherits "~2.0.4" 1977 | is-regex "~1.0.5" 1978 | minimist "~1.2.0" 1979 | object-inspect "~1.7.0" 1980 | resolve "~1.15.1" 1981 | resumer "~0.0.0" 1982 | string.prototype.trim "~1.2.1" 1983 | through "~2.3.8" 1984 | 1985 | tar-stream@^2.1.1: 1986 | version "2.1.2" 1987 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.2.tgz#6d5ef1a7e5783a95ff70b69b97455a5968dc1325" 1988 | integrity sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q== 1989 | dependencies: 1990 | bl "^4.0.1" 1991 | end-of-stream "^1.4.1" 1992 | fs-constants "^1.0.0" 1993 | inherits "^2.0.3" 1994 | readable-stream "^3.1.1" 1995 | 1996 | test-exclude@^5.2.3: 1997 | version "5.2.3" 1998 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" 1999 | integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== 2000 | dependencies: 2001 | glob "^7.1.3" 2002 | minimatch "^3.0.4" 2003 | read-pkg-up "^4.0.0" 2004 | require-main-filename "^2.0.0" 2005 | 2006 | through@2, through@~2.3.4, through@~2.3.8: 2007 | version "2.3.8" 2008 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2009 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 2010 | 2011 | thunky@^1.1.0: 2012 | version "1.1.0" 2013 | resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" 2014 | integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== 2015 | 2016 | tmp@^0.1.0: 2017 | version "0.1.0" 2018 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" 2019 | integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== 2020 | dependencies: 2021 | rimraf "^2.6.3" 2022 | 2023 | to-fast-properties@^2.0.0: 2024 | version "2.0.0" 2025 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 2026 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 2027 | 2028 | to-mongodb-core@^2.0.0: 2029 | version "2.0.0" 2030 | resolved "https://registry.yarnpkg.com/to-mongodb-core/-/to-mongodb-core-2.0.0.tgz#3596ec7613ac9ad3b98a89dcb9aefba569cd27eb" 2031 | integrity sha1-NZbsdhOsmtO5ioncua77pWnNJ+s= 2032 | 2033 | to-regex-range@^5.0.1: 2034 | version "5.0.1" 2035 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2036 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2037 | dependencies: 2038 | is-number "^7.0.0" 2039 | 2040 | type-detect@^4.0.0, type-detect@^4.0.5: 2041 | version "4.0.8" 2042 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 2043 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 2044 | 2045 | typescript@^3.7.2: 2046 | version "3.8.3" 2047 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" 2048 | integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== 2049 | 2050 | url@0.10.3: 2051 | version "0.10.3" 2052 | resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" 2053 | integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= 2054 | dependencies: 2055 | punycode "1.3.2" 2056 | querystring "0.2.0" 2057 | 2058 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 2059 | version "1.0.2" 2060 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2061 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2062 | 2063 | uuid@3.3.2: 2064 | version "3.3.2" 2065 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" 2066 | integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== 2067 | 2068 | uuid@^3.3.2, uuid@^3.3.3: 2069 | version "3.4.0" 2070 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 2071 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 2072 | 2073 | uuid@^7.0.2: 2074 | version "7.0.3" 2075 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" 2076 | integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== 2077 | 2078 | validate-npm-package-license@^3.0.1: 2079 | version "3.0.4" 2080 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 2081 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 2082 | dependencies: 2083 | spdx-correct "^3.0.0" 2084 | spdx-expression-parse "^3.0.0" 2085 | 2086 | which-module@^2.0.0: 2087 | version "2.0.0" 2088 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 2089 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 2090 | 2091 | which@1.3.1, which@^1.2.9, which@^1.3.0: 2092 | version "1.3.1" 2093 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 2094 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 2095 | dependencies: 2096 | isexe "^2.0.0" 2097 | 2098 | which@^2.0.1: 2099 | version "2.0.2" 2100 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2101 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2102 | dependencies: 2103 | isexe "^2.0.0" 2104 | 2105 | wide-align@1.1.3: 2106 | version "1.1.3" 2107 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 2108 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 2109 | dependencies: 2110 | string-width "^1.0.2 || 2" 2111 | 2112 | wrap-ansi@^5.1.0: 2113 | version "5.1.0" 2114 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 2115 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 2116 | dependencies: 2117 | ansi-styles "^3.2.0" 2118 | string-width "^3.0.0" 2119 | strip-ansi "^5.0.0" 2120 | 2121 | wrappy@1: 2122 | version "1.0.2" 2123 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2124 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2125 | 2126 | write-file-atomic@^2.4.2: 2127 | version "2.4.3" 2128 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" 2129 | integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== 2130 | dependencies: 2131 | graceful-fs "^4.1.11" 2132 | imurmurhash "^0.1.4" 2133 | signal-exit "^3.0.2" 2134 | 2135 | xml2js@0.4.19: 2136 | version "0.4.19" 2137 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" 2138 | integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== 2139 | dependencies: 2140 | sax ">=0.6.0" 2141 | xmlbuilder "~9.0.1" 2142 | 2143 | xmlbuilder@~9.0.1: 2144 | version "9.0.7" 2145 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" 2146 | integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= 2147 | 2148 | xtend@^4.0.0: 2149 | version "4.0.2" 2150 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 2151 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 2152 | 2153 | y18n@^4.0.0: 2154 | version "4.0.0" 2155 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 2156 | integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 2157 | 2158 | yallist@^2.1.2: 2159 | version "2.1.2" 2160 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 2161 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 2162 | 2163 | yargs-parser@13.1.2, yargs-parser@^13.0.0, yargs-parser@^13.1.2: 2164 | version "13.1.2" 2165 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" 2166 | integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== 2167 | dependencies: 2168 | camelcase "^5.0.0" 2169 | decamelize "^1.2.0" 2170 | 2171 | yargs-unparser@1.6.0: 2172 | version "1.6.0" 2173 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" 2174 | integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== 2175 | dependencies: 2176 | flat "^4.1.0" 2177 | lodash "^4.17.15" 2178 | yargs "^13.3.0" 2179 | 2180 | yargs@13.3.2, yargs@^13.2.2, yargs@^13.3.0: 2181 | version "13.3.2" 2182 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" 2183 | integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== 2184 | dependencies: 2185 | cliui "^5.0.0" 2186 | find-up "^3.0.0" 2187 | get-caller-file "^2.0.1" 2188 | require-directory "^2.1.1" 2189 | require-main-filename "^2.0.0" 2190 | set-blocking "^2.0.0" 2191 | string-width "^3.0.0" 2192 | which-module "^2.0.0" 2193 | y18n "^4.0.0" 2194 | yargs-parser "^13.1.2" 2195 | 2196 | yauzl@^2.10.0: 2197 | version "2.10.0" 2198 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 2199 | integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= 2200 | dependencies: 2201 | buffer-crc32 "~0.2.3" 2202 | fd-slicer "~1.1.0" 2203 | --------------------------------------------------------------------------------