├── src
├── config
│ ├── index.ts
│ └── Pino.ts
├── routes
│ ├── index.ts
│ ├── puppies
│ │ ├── index.ts
│ │ ├── imports.ts
│ │ └── PuppyRouter.ts
│ ├── imports.ts
│ └── APIRouter.ts
├── shared
│ ├── utils
│ │ ├── index.ts
│ │ └── JSONUtils.ts
│ ├── index.ts
│ └── routing
│ │ ├── index.ts
│ │ └── CustomRouter.ts
├── imports.ts
├── App.ts
└── server.ts
├── scripts
├── start.sh
├── prod.sh
├── postinstall.sh
├── dev.sh
└── dk-build.sh
├── .prettierrc.json
├── .editorconfig
├── hooks
└── build
├── .dockerignore
├── .githooks
└── pre-commit
├── static
└── index.html
├── tsconfig.json
├── .gitignore
├── CONTRIBUTING.md
├── docker-compose.yml
├── pm2.ecosystem.config.js
├── .travis.yml
├── tests
├── 2-advanced.test.js
└── 1-basic.test.js
├── Dockerfile
├── LICENSE.md
├── package.json
├── README.md
└── yarn.lock
/src/config/index.ts:
--------------------------------------------------------------------------------
1 | import * as pino from './Pino';
2 |
3 | export { pino };
4 |
--------------------------------------------------------------------------------
/src/routes/index.ts:
--------------------------------------------------------------------------------
1 | import ApiRouter from './APIRouter';
2 |
3 | export { ApiRouter };
4 |
--------------------------------------------------------------------------------
/src/routes/puppies/index.ts:
--------------------------------------------------------------------------------
1 | import PuppyRouter from './PuppyRouter';
2 |
3 | export { PuppyRouter };
4 |
--------------------------------------------------------------------------------
/src/shared/utils/index.ts:
--------------------------------------------------------------------------------
1 | import * as json_utils from './JSONUtils';
2 |
3 | export { json_utils };
4 |
--------------------------------------------------------------------------------
/scripts/start.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | if [ "$NODE_ENV" == production ]
4 | then npm run prod
5 | else npm run dev
6 | fi
7 |
--------------------------------------------------------------------------------
/src/shared/index.ts:
--------------------------------------------------------------------------------
1 | import * as routing from './routing';
2 | import * as utils from './utils';
3 |
4 | export { routing, utils };
5 |
--------------------------------------------------------------------------------
/src/shared/routing/index.ts:
--------------------------------------------------------------------------------
1 | import * as custom_router from './CustomRouter';
2 |
3 | // Export as a cohesive module
4 | export { custom_router };
5 |
--------------------------------------------------------------------------------
/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "semi": true,
3 | "bracketSpacing": true,
4 | "singleQuote": true,
5 | "useTabs": false,
6 | "tabWidth": 2,
7 | "printWidth": 80,
8 | "proseWrap": "preserve"
9 | }
10 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | end_of_line = lf
5 | insert_final_newline = true
6 |
7 | [*.{js,jsx,ts,tsx}]
8 | charset = utf-8
9 |
10 | [{*.{ts,tsx}, *.json, *.{yml, yaml}, Dockerfile, *.sh}}]
11 | indent_style = space
12 | indent_size = 2
13 |
--------------------------------------------------------------------------------
/src/imports.ts:
--------------------------------------------------------------------------------
1 | import { pino } from './config';
2 | import { routing, utils } from './shared';
3 |
4 | // Import de-structuring
5 | const { serverLogger, expressLogger } = pino;
6 |
7 | // Re-exports
8 | export { routing, utils, serverLogger, expressLogger };
9 |
--------------------------------------------------------------------------------
/hooks/build:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ## Build Docker image
4 | docker build --build-arg BUILD_ENV="$BUILD_ENV" \
5 | --build-arg BUILD_TAG="$BUILD_TAG" \
6 | --tag "$DOCKER_REPO:$BUILD_TAG" \
7 | --target "$BUILD_ENV" \
8 | .
9 |
--------------------------------------------------------------------------------
/src/routes/puppies/imports.ts:
--------------------------------------------------------------------------------
1 | import { CustomRouter, routesLogger, utils } from '../imports';
2 |
3 | const puppiesLogger = routesLogger.child({ name: 'server:routes:puppies' });
4 | const { sendPrettyJSON } = utils.json_utils;
5 |
6 | export { CustomRouter, puppiesLogger, sendPrettyJSON };
7 |
--------------------------------------------------------------------------------
/src/shared/utils/JSONUtils.ts:
--------------------------------------------------------------------------------
1 | import { Response } from 'express';
2 |
3 | function sendPrettyJSON(res: Response, obj: Object, spacing: number = 2) {
4 | res.set('Content-Type', 'application/json');
5 | res.send(JSON.stringify(obj, null, spacing));
6 | }
7 |
8 | export { sendPrettyJSON };
9 |
--------------------------------------------------------------------------------
/scripts/prod.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | ## Configurations
4 | SERVER_DIR="build/server.js"
5 |
6 | ## Set Node environment
7 | export NODE_ENV=producion
8 |
9 | ## Compile app to Javascript if not Docker
10 | [ -z "$IS_DOCKER" ] && npm run build
11 |
12 | ## Run the app
13 | node "$SERVER_DIR"
14 |
--------------------------------------------------------------------------------
/src/routes/imports.ts:
--------------------------------------------------------------------------------
1 | import { routing, serverLogger, utils } from '../imports';
2 |
3 | // Import de-structuring
4 | const { default: CustomRouter } = routing.custom_router;
5 | const routesLogger = serverLogger.child({ name: 'server:routes' });
6 |
7 | // Re-exports
8 | export { routesLogger, CustomRouter, utils };
9 |
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | ## General
2 | node_modules/
3 | .git/
4 | yarn-error.log
5 | README.md
6 | Dockerfile
7 | .gitignore
8 | .dockerignore
9 |
10 | ## Compiled output
11 | build/
12 |
13 | ## Editors
14 | .idea/
15 | .vscode/
16 | .editorconfig
17 |
18 | ## Others
19 | pm2.ecosystem.config.js
20 | docker-compose.yml
21 | .env
22 | .prettierrc.json
23 |
--------------------------------------------------------------------------------
/.githooks/pre-commit:
--------------------------------------------------------------------------------
1 | OUT_LENGTH=$(yarn prettier -l | wc -l)
2 |
3 | if [ $OUT_LENGTH -eq 3 ]; then
4 | echo "Passed Prettier check!"
5 | elif [ $OUT_LENGTH -gt 3 ]; then
6 | echo "Some files were Prettified; please stage \
7 | the ones you'd like to commit!"
8 | exit 1
9 | else
10 | echo "Something went wrong: Got an OUT_LENGTH of $OUT_LENGTH"
11 | exit 2
12 | fi
13 |
14 |
--------------------------------------------------------------------------------
/scripts/postinstall.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | ## Only set up hooks if not running on Docker Cloud,
4 | ## and if Git is available.
5 | if [ "$IS_DOCKER" != "true" ] && [ -n "$(command -v git)" ]; then
6 | git config core.hooksPath .githooks
7 | echo "Successfully configured Git hooks."
8 | else
9 | echo "Git installation not detected, or currently running in Docker Cloud; \
10 | skipping Git hooks setup."
11 | fi
12 |
--------------------------------------------------------------------------------
/src/shared/routing/CustomRouter.ts:
--------------------------------------------------------------------------------
1 | import { Router } from 'express';
2 |
3 | abstract class CustomRouter {
4 | /** Internal initialized Express router */
5 | protected router: Router;
6 |
7 | /** Initialize Router upon construction */
8 | constructor() {
9 | this.router = Router();
10 | }
11 |
12 | /** Export internal router to be used as Express middleware */
13 | export = (): Router => this.router;
14 | }
15 |
16 | export default CustomRouter;
17 |
--------------------------------------------------------------------------------
/static/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Express Starter
6 |
7 |
8 | Hello, World!
9 | Your Express server is up and running.
10 | Why not try accessing
11 | /api,
12 | /api/puppies and
13 |
14 | /api/puppies?message=hello%20everyone
15 | ?
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/routes/APIRouter.ts:
--------------------------------------------------------------------------------
1 | import { CustomRouter } from './imports';
2 | import { PuppyRouter } from './puppies';
3 | import { Router } from 'express';
4 |
5 | export class APIRouter extends CustomRouter {
6 | private puppyRouter = new PuppyRouter().export();
7 |
8 | constructor() {
9 | super();
10 | this.registerRoutes();
11 | }
12 |
13 | registerRoutes() {
14 | this.router.use('/puppies', this.puppyRouter);
15 | this.router.get('/', function(_, res) {
16 | res.header('Content-Type', 'text/plain');
17 | res.json('The API is working!');
18 | });
19 | }
20 | }
21 |
22 | export default APIRouter;
23 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "lib": ["es2018"],
4 | "target": "es6",
5 | "module": "commonjs",
6 | "moduleResolution": "node",
7 | "typeRoots": ["node_modules/@types", "typings"],
8 | "rootDir": "src",
9 | "outDir": "build",
10 | "strict": true,
11 | "allowJs": false,
12 | "inlineSourceMap": true,
13 | "removeComments": true,
14 | "noImplicitAny": false,
15 | "noImplicitReturns": true,
16 | "preserveConstEnums": true,
17 | "allowSyntheticDefaultImports": true
18 | },
19 | "include": ["src/**/*.ts"],
20 | "exclude": ["node_modules"],
21 | "compileOnSave": false
22 | }
23 |
--------------------------------------------------------------------------------
/src/config/Pino.ts:
--------------------------------------------------------------------------------
1 | import * as pino from 'pino';
2 | import * as pinoExpress from 'express-pino-logger';
3 |
4 | const {
5 | npm_package_config_dev_log_level: DEV_LOG_LEVEL,
6 | npm_package_config_prod_log_level: PROD_LOG_LEVEL,
7 | LOG_LEVEL: ENV_LOG_LEVEL,
8 | NODE_ENV
9 | } = process.env;
10 |
11 | // Choose a logging level based on the current environment
12 | // prettier-ignore
13 | const level = ENV_LOG_LEVEL || NODE_ENV === 'development'
14 | ? DEV_LOG_LEVEL
15 | : PROD_LOG_LEVEL;
16 |
17 | const serverLogger = pino({ name: 'server', level });
18 | const expressLogger = pinoExpress({ name: 'express', level });
19 |
20 | export { serverLogger, expressLogger };
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Compiled output
2 | /build/
3 |
4 | ## Environment configs
5 | .env
6 |
7 | ## Node dependencies
8 | /node_modules
9 |
10 | ## IDEs and editors
11 | .idea/
12 | .project
13 | .classpath
14 | .c9/
15 | *.launch
16 | .settings/
17 | *.sublime-workspace
18 |
19 | ## IDE - VSCode
20 | .vscode/*
21 | !.vscode/settings.json
22 | !.vscode/tasks.json
23 | !.vscode/launch.json
24 | !.vscode/extensions.json
25 |
26 | ## Miscellaneous
27 | /.sass-cache
28 | /connect.lock
29 | /coverage
30 | /libpeerconnection.log
31 | npm-debug.log
32 | yarn-error.log
33 | testem.log
34 | /typings
35 |
36 | ## e2e
37 | /e2e/*.js
38 | /e2e/*.map
39 |
40 | ## System Files
41 | .DS_Store
42 | Thumbs.db
43 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing Guidelines
2 |
3 | ## Formatting
4 | Ensure that your code is formatted with [Prettier](https://prettier.io) before
5 | opening a pull request—this is configured automatically via Git hooks, through
6 | the `postinstall` NPM script.
7 |
8 | > You should see a pre-commit message, *"Passed Prettier check!"* upon
9 | > committing. If you don't, please manually run `yarn prettier` to make sure
10 | > your code is properly formatted!
11 |
12 | ## PR Branches
13 | Please have your PR target the *master* branch; the *stable* branch will
14 | periodically be brought up-to-date with *master* when *master* proves itself to
15 | be relatively bug-free.
16 |
17 | *That's all for now, happy contributing! Thanks for being a part of this project*
18 | 😊.
19 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | # docker-compose
2 |
3 | version: "3.4"
4 |
5 | services:
6 | express:
7 | build:
8 | context: .
9 | target: ${BUILD_ENV}
10 | args:
11 | - BUILD_ENV=${BUILD_ENV}
12 | - BUILD_TAG=${BUILD_TAG}
13 | # environment:
14 | # - NODE_ENV=... (useful if you want to set BUILD_ENV="development" to include
15 | # all dependencies and dynamically launch with "yarn start")
16 | # - LOG_LEVEL=... (for dynamically setting up an override log level)
17 | # - LOG_FILTER=... (for dynamically setting up an override log filter)
18 | image: stevenxie/express-starter:${BUILD_TAG}
19 | container_name: express-starter
20 | ports:
21 | - "3000:3000"
22 | volumes:
23 | - express-vol:/app/dist
24 | # restart: on-failure
25 |
26 | volumes:
27 | express-vol:
28 |
--------------------------------------------------------------------------------
/pm2.ecosystem.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | /**
3 | * Application configuration section
4 | * http://pm2.keymetrics.io/docs/usage/application-declaration/
5 | */
6 | apps: [
7 | {
8 | name: "express-starter",
9 | script: "scripts/start.sh",
10 | watch: false,
11 | env: { NODE_ENV: "development" },
12 | env_production: { NODE_ENV: "production" }
13 | }
14 | ],
15 |
16 | /**
17 | * Deployment section
18 | * http://pm2.keymetrics.io/docs/usage/deployment/
19 | */
20 | /*
21 | deploy: {
22 | production: {
23 | user: "%USER%", // i.e. dev
24 | host: "%HOST%", // i.e. 127.0.0.1
25 | ref: "origin/master", // Branch
26 | repo: "git@github.com:%USERNAME%/%REPOSITORY%.git",
27 | path: "%PATH_TO_APP%",
28 | "post-deploy": "npm install && npm run pm2",
29 | }
30 | }
31 | */
32 | };
33 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | # .travis.yml
2 |
3 | ## Language and services
4 | sudo: required
5 | language: node_js
6 | node_js: node
7 | services: docker
8 |
9 | ## Git configuration
10 | git:
11 | depth: 5 # limit clone depth
12 | submodules: false
13 |
14 | ## Env configuration
15 | env:
16 | - NODE_ENV=test
17 |
18 | ## Define custom jobs
19 | definitions:
20 | local-test: &local-test
21 | stage: Local test
22 | install: yarn
23 | script:
24 | - echo "Running local test against $(node -v)..."
25 | - yarn test
26 |
27 | docker-test: &docker-test
28 | stage: Docker test
29 | install: yarn dk-build-dev
30 | script:
31 | - echo "Running Docker test..."
32 | - yarn dk-test
33 |
34 | ## Build stages
35 | jobs:
36 | include:
37 | ## Local tests (with differing Node versions)
38 | - <<: *local-test
39 | node_js: "node"
40 | - <<: *local-test
41 | node_js: "stable"
42 | - <<: *local-test
43 | node_js: "lts/*"
44 |
45 | ## Docker test
46 | - <<: *docker-test
47 |
--------------------------------------------------------------------------------
/scripts/dev.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | ## Configurations
4 | SERVER_DIR="build/server.js"
5 |
6 | ## Set Node environment
7 | export NODE_ENV=development
8 |
9 | ## Default log filter to NPM package config
10 | [ "$LOG_FILTER" == "" ] && LOG_FILTER=$npm_package_config_jmespath_log_filter
11 |
12 | ## Log all output if undefined or null log filter
13 | if [ -n "$LOG_FILTER" ] && [ "$LOG_FILTER" != "null" ]
14 | then echo "Logging with the JMESPath query filter: $LOG_FILTER"
15 | else LOG_FILTER="*"
16 | fi
17 |
18 | ## Prebuild initial app into Javascript
19 | npm run build
20 |
21 | ## Start app using Nodemon with auto-watching enabled, pipe through pin-pretty
22 | run_server="nodemon --watch static --watch src \
23 | --ignore 'src/**/*.spec.ts' \
24 | --ext ts,html,css \
25 | $SERVER_DIR | pino-pretty -c -t -s '$LOG_FILTER'"
26 |
27 | ## Recompile app upon changes to src/
28 | run_watching_compiler="npm run compile-watch"
29 |
30 | ## Simultaneously run server and compiler
31 | concurrently --kill-others \
32 | --names 'server,compiler' \
33 | "$run_watching_compiler" "$run_server"
34 |
--------------------------------------------------------------------------------
/src/routes/puppies/PuppyRouter.ts:
--------------------------------------------------------------------------------
1 | import { Request, Response } from 'express';
2 | import {
3 | CustomRouter,
4 | puppiesLogger as logger,
5 | sendPrettyJSON
6 | } from './imports';
7 |
8 | class PuppyRouter extends CustomRouter {
9 | private hitCount = 0;
10 |
11 | constructor() {
12 | super();
13 | this.registerRoutes();
14 | }
15 |
16 | registerRoutes() {
17 | this.router.get('/', this.getPuppies);
18 | }
19 |
20 | /**
21 | * Returns an `application/json` response that reflects the current
22 | * state of the program.
23 | * Is an arrow function in order to capture `this` in its closure, so that
24 | * it would register correctly in `registerRoutes`.
25 | */
26 | getPuppies = (req: Request, res: Response) => {
27 | this.hitCount += 1;
28 | const resObj = {
29 | message: 'Puppies API was hit!',
30 | requestQuery: req.query,
31 | requestIP: req.ip,
32 | count: this.hitCount,
33 | NODE_ENV: process.env.NODE_ENV
34 | };
35 | // Log to Pino
36 | logger.info(resObj);
37 | // Send to client as prettified JSON
38 | sendPrettyJSON(res, resObj);
39 | };
40 | }
41 |
42 | export default PuppyRouter;
43 |
--------------------------------------------------------------------------------
/scripts/dk-build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ## Environment argument must exist
4 | if [ $# -eq 0 ]; then
5 | echo "Build environment argument required."
6 | exit 1
7 | fi
8 |
9 | ## If the Docker image version variable is not set,
10 | ## attempt to set it from the NPM config. If it
11 | # still doesn't work, abort.
12 | if [ -z "$IMAGE_VERSION" ]; then
13 | IMAGE_VERSION="$npm_package_config_docker_image_version"
14 | if [ -z "$IMAGE_VERSION" ]; then
15 | echo "Could not identify Docker image version number \
16 | for tagging and labelling purposes."
17 | exit 2
18 | fi
19 | fi
20 |
21 | ## Set the BUILD_TAG
22 | if [ "$1" == production ]; then
23 | export BUILD_TAG="$IMAGE_VERSION-prod"
24 | elif [ "$1" == development ]; then
25 | export BUILD_TAG="$IMAGE_VERSION-dev"
26 | else
27 | echo "Could not identify build environment: $1"
28 | exit 3
29 | fi
30 |
31 | ## Set the BUILD_ENV
32 | export BUILD_ENV="$1"
33 |
34 | ## Initiate build
35 | echo "Building Docker image with BUILD_ENV=$BUILD_ENV \
36 | and BUILD_TAG=$BUILD_TAG..."
37 | docker-compose build
38 |
39 | ## Save build config in .env for future use
40 | ## with docker-compose
41 | echo "Saving build configurations into '.env'..."
42 | echo "BUILD_ENV=$BUILD_ENV" > .env
43 | echo "BUILD_TAG=$BUILD_TAG" >> .env
44 | echo "Done."
45 |
--------------------------------------------------------------------------------
/tests/2-advanced.test.js:
--------------------------------------------------------------------------------
1 | const chai = require('chai');
2 | const chaiHttp = require('chai-http');
3 | const { default: startServer } = require('../build/server');
4 |
5 | const { expect } = chai;
6 |
7 | // Begin advanced tests
8 | startServer().then(function(server) {
9 | chai.use(chaiHttp);
10 | const { request } = chai;
11 |
12 | describe('Server', function() {
13 | // Test '/api/puppies' endpoint
14 | it('should have a functioning /api/puppies endpoint', function(done) {
15 | request(server)
16 | .get('/api/puppies')
17 | .end(function(err, res) {
18 | expect(err).to.be.null;
19 | expect(res).to.have.status(200);
20 | expect(res).to.be.json;
21 | expect(res).to.have.property('body');
22 |
23 | // Expectations for 'res.body'
24 | const { body } = res;
25 | expect(body).to.be.an('object');
26 | expect(body).to.have.property('message', 'Puppies API was hit!');
27 | done();
28 | });
29 | });
30 |
31 | // Test unexpected endpoint
32 | it('should return 404 on unknown routes', function(done) {
33 | request(server)
34 | .get('/asdfasdf')
35 | .end(function(err, res) {
36 | expect(err).to.be.null;
37 | expect(res).to.have.status(404);
38 | });
39 | done();
40 | });
41 | });
42 | });
43 |
--------------------------------------------------------------------------------
/tests/1-basic.test.js:
--------------------------------------------------------------------------------
1 | const chai = require('chai');
2 | const chaiHttp = require('chai-http');
3 | const { default: startServer } = require('../build/server');
4 | const { expect } = chai;
5 |
6 | // Begin environment test
7 | describe('Environment', function() {
8 | // Ensure testing environment is configured
9 | it('should be configured for testing', function() {
10 | expect(process.env.NODE_ENV).to.equal('test');
11 | expect(startServer).to.be.a('function');
12 | });
13 | });
14 |
15 | // Begin basic tests
16 | startServer().then(function(server) {
17 | chai.use(chaiHttp);
18 | const { request } = chai;
19 |
20 | describe('Server', function() {
21 | // Test '/' endpoint
22 | it('should have an index route', function(done) {
23 | request(server)
24 | .get('/')
25 | .end(function(err, res) {
26 | expect(err).to.be.null;
27 | expect(res).to.have.status(200);
28 | done();
29 | });
30 | });
31 |
32 | // Test '/api' endpoint
33 | it('should have an /api route', function(done) {
34 | request(server)
35 | .get('/api')
36 | .end(function(err, res) {
37 | expect(err).to.be.null;
38 | expect(res).to.have.status(200);
39 | expect(res).to.be.text;
40 | expect(res).to.include({ text: '"The API is working!"' });
41 | done();
42 | });
43 | });
44 |
45 | });
46 | });
47 |
--------------------------------------------------------------------------------
/src/App.ts:
--------------------------------------------------------------------------------
1 | import * as path from 'path';
2 | import * as express from 'express';
3 | import * as bodyParser from 'body-parser';
4 |
5 | import { ApiRouter } from './routes';
6 | import { expressLogger } from './imports';
7 | type Application = express.Application;
8 |
9 | /// Creates and configures an Express web server.
10 | class App {
11 | /** Express app instance */
12 | private instance = express();
13 | private apiRouter = new ApiRouter().export();
14 |
15 | /** Configure Express instance */
16 | constructor() {
17 | this.setup();
18 | this.middlewares();
19 | this.routes();
20 | }
21 |
22 | /** Configure Express settings */
23 | private setup() {
24 | this.instance.set('trust proxy', 'loopback');
25 | }
26 |
27 | /** Configure Express middleware */
28 | private middlewares() {
29 | this.instance.use(expressLogger);
30 | this.instance.use('/api', bodyParser.json());
31 | this.instance.use('/api', bodyParser.urlencoded({ extended: false }));
32 | }
33 |
34 | /** Configure API endpoints */
35 | private routes() {
36 | const staticDir = path.join(__dirname, '..', 'static');
37 | const indexDir = path.resolve(staticDir, 'index.html');
38 |
39 | // Configure API route
40 | this.instance.use('/api', this.apiRouter);
41 |
42 | // Configure to serve index and assets from static as a fallback mechanism
43 | // (Ideally, you should be using NGINX to serve static assets! Express is
44 | // best used as an API server, as it is generally slower than NGINX.)
45 | this.instance.get('/', (req, res) => res.sendFile(indexDir));
46 | this.instance.use(express.static(staticDir));
47 | }
48 |
49 | /** Exports the App's internal Express instance */
50 | export = (): Application => this.instance;
51 | }
52 |
53 | export default App;
54 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | # dockerfile
2 |
3 | ##################################################
4 | ## DEVELOPMENT STAGE
5 | ##################################################
6 |
7 | FROM node:10.4.0-alpine AS development
8 |
9 | # Set labels
10 | ARG BUILD_TAG="latest"
11 | LABEL version=$BUILD_TAG maintainer="Steven Xie "
12 |
13 | # Create app directory and bundle app source
14 | WORKDIR /app
15 | COPY . .
16 |
17 | # Install Linux dependencies
18 | RUN apk update && apk add --no-cache git
19 |
20 | # Configure BUILD_ENV and IS_DOCKER variables
21 | ARG BUILD_ENV="development"
22 | ENV IS_DOCKER=true
23 |
24 | # Install app dependencies; also, if constructing a production build,
25 | # precompile the Javascript, remove 'src/', and reinstall only production
26 | # dependencies
27 | RUN echo "Building with BUILD_ENV: $BUILD_ENV" && yarn && \
28 | if [ "$BUILD_ENV" == production ]; then \
29 | echo "Precompiling to Javascript for production..." && \
30 | yarn compile && yarn --production --prefer-offline && \
31 | rm -rf src/; \
32 | else yarn cache clean; fi
33 |
34 | # Configure NODE_ENV variable
35 | ENV NODE_ENV=$BUILD_ENV
36 |
37 | # Expose port and volume mount point
38 | EXPOSE 3000
39 | VOLUME /app
40 |
41 | # Configure starting command
42 | CMD [ "yarn", "start" ]
43 |
44 |
45 | ##################################################
46 | ## PRODUCTION STAGE
47 | ##################################################
48 |
49 | FROM node:10.4.0-alpine AS production
50 |
51 | # Set labels
52 | ARG VERSION="latest"
53 | LABEL version=$VERSION maintainer="Steven Xie "
54 |
55 | # Create app directory and extract production build from previous stage
56 | WORKDIR /app
57 | COPY --from=development /app .
58 |
59 | # If 'BUILD_ENV' build arg is available, use it here
60 | ARG BUILD_ENV="production"
61 | ENV NODE_ENV=$BUILD_ENV IS_DOCKER=true
62 |
63 | # Expose port and volume mount point
64 | EXPOSE 3000
65 | VOLUME /app/build
66 |
67 | # Configure starting command
68 | CMD [ "yarn", "start" ]
69 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright (c) 2018 by Steven Xie ().
2 | All Rights Reserved.
3 |
4 | *ATTRIBUTION ASSURANCE LICENSE (adapted from the original BSD license)*
5 |
6 |
7 | Redistribution and use in source and binary forms, with or without
8 | modification, are permitted provided that the conditions below are met.
9 | These conditions require a modest attribution to Steven Xie (the
10 | "Author"), who hopes that its promotional value may help justify the
11 | thousands of dollars in otherwise billable time invested in writing
12 | this and other freely available, open-source software.
13 |
14 | 1. Redistributions of source code, in whole or part and with or without
15 | modification (the "Code"), must prominently display this GPG-signed
16 | text in verifiable form.
17 | 2. Redistributions of the Code in binary form must be accompanied by
18 | this GPG-signed text in any documentation and, each time the resulting
19 | executable program or a program dependent thereon is launched, a
20 | prominent display (e.g., splash screen or banner text) of the Author's
21 | attribution information, which includes:
22 | (a) Name ("Steven Xie"), and
23 | (b) Email ("hello@stevenxie.me")
24 | 3. Neither the name nor any trademark of the Author may be used to
25 | endorse or promote products derived from this software without specific
26 | prior written permission.
27 | 4. Users are entirely responsible, to the exclusion of the Author and
28 | any other persons, for compliance with (1) regulations set by owners or
29 | administrators of employed equipment, (2) licensing terms of any other
30 | software, and (3) local regulations regarding use, including those
31 | regarding import, export, and use of encryption software.
32 |
33 | THIS FREE SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND
34 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
35 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
36 | FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
37 | EVENT SHALL THE AUTHOR OR ANY CONTRIBUTOR BE LIABLE FOR
38 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
39 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
40 | EFFECTS OF UNAUTHORIZED OR MALICIOUS NETWORK ACCESS;
41 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
42 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
43 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
44 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
45 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
46 | IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47 |
--------------------------------------------------------------------------------
/src/server.ts:
--------------------------------------------------------------------------------
1 | import * as dotenv from 'dotenv';
2 | import { Application } from 'express';
3 | import * as _getPort from 'get-port';
4 | import * as http from 'http';
5 |
6 | import App from './App';
7 | import { serverLogger as logger } from './imports';
8 |
9 | // Make V8 refer back to Typescript code when outputting messages
10 | if (process.env.NODE_ENV === 'development') {
11 | const { install } = require('source-map-support');
12 | install();
13 | }
14 | // Load .env variables upon entry, if available
15 | dotenv.load();
16 |
17 | const app = new App().export(); // Start application
18 | if (process.env.NODE_ENV !== 'test') start();
19 |
20 | /** Main thread logic. */
21 | function start() {
22 | return getPort()
23 | .then(listenOnPort)
24 | .catch(function(err) {
25 | logger.fatal(`An unknown fatal error occurred: ${err}`);
26 | process.exit(1);
27 | });
28 | }
29 |
30 | /** Get the port using `get-port`. */
31 | async function getPort(): Promise {
32 | const DEFAULT_PORT = 3000;
33 | return await _getPort(process.env.PORT || DEFAULT_PORT);
34 | }
35 |
36 | /** Configure the Express server to listen on the specified port. */
37 | function listenOnPort(port: string) {
38 | const server = http.createServer(app); // Serve the app using `http`
39 | server.listen(port);
40 | server.on('listening', onListening(port));
41 | server.on('error', onError(port));
42 | return server;
43 | }
44 |
45 | /** Returns a function to be called upon successful listen. */
46 | function onListening(port: string) {
47 | return function() {
48 | logger.info('Listening on port %s...', port);
49 |
50 | // Open in browser (for dev mode only), while logging errors as an alert...
51 | const {
52 | NODE_ENV,
53 | IS_DOCKER,
54 | npm_package_config_browser_live_reload: LIVE_RELOAD
55 | } = process.env;
56 | if (
57 | NODE_ENV === 'development' &&
58 | LIVE_RELOAD === 'true' &&
59 | IS_DOCKER !== 'true'
60 | ) {
61 | const opn = require('opn');
62 | opn(`http://127.0.0.1:${port}`).catch((err: Error) =>
63 | logger.warn('Could not open in browser: %O', err)
64 | );
65 | }
66 | };
67 | }
68 |
69 | /** Returns a function to be called upon server listening failure. */
70 | function onError(port: string) {
71 | return function(err: NodeJS.ErrnoException) {
72 | // Only handling 'listen' errors!
73 | if (err.syscall !== 'listen') throw err;
74 |
75 | switch (err.code) {
76 | case 'EACCES':
77 | logger.fatal('Port %s requires elevated privileges.', port);
78 | break;
79 | case 'EADDRINUSE':
80 | logger.fatal('Port %s is already in use.', port);
81 | break;
82 | default:
83 | logger.fatal('HTTP server ran into a fatal error: %O', err);
84 | }
85 |
86 | logger.fatal('Exiting due to critical error...');
87 | process.exit(2);
88 | };
89 | }
90 |
91 | export default start; // Export server starter for testing purposes
92 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "express-starter",
3 | "version": "1.6.0",
4 | "description": "An opinionated Typescript starter setup for Express + Pino.",
5 | "repository": "https://github.com/steven-xie/express-starter",
6 | "bugs": {
7 | "url": "https://github.com/steven-xie/express-starter/issues",
8 | "email": "dev@stevenxie.me"
9 | },
10 | "author": "Steven Xie (https://stevenxie.me)",
11 | "license": "AAL",
12 | "config": {
13 | "dev-log-level": "debug",
14 | "prod-log-level": "error",
15 | "jmespath-log-filter": "contains(name, `server`)",
16 | "browser-live-reload": false,
17 | "docker-image-version": "1.3.0"
18 | },
19 | "scripts": {
20 | "dev": "./scripts/dev.sh",
21 | "prod": "./scripts/prod.sh",
22 | "start": "./scripts/start.sh",
23 | "build": "[ -d build ] && npm run clean; npm run compile",
24 | "compile": "tsc --project tsconfig.json",
25 | "compile-watch": "npm run compile -- --watch",
26 | "clean": "rimraf build",
27 | "test": "NODE_ENV=test; npm run build; mocha -Sb --exit tests/*.test.js",
28 | "prettier": "prettier --write 'src/**/*.ts'",
29 | "dk-build": "npm run dk-build-prod",
30 | "dk-build-dev": "./scripts/dk-build.sh development",
31 | "dk-build-prod": "./scripts/dk-build.sh production",
32 | "dk-foreground": "docker-compose up",
33 | "dk-up": "docker-compose up -d",
34 | "dk-down": "docker-compose down --volumes",
35 | "dk-start": "docker-compose start express",
36 | "dk-stop": "docker-compose stop express",
37 | "dk-restart": "docker-compose restart express",
38 | "dk-pause": "docker-compose pause",
39 | "dk-exec": "docker-compose exec",
40 | "dk-run": "docker-compose run",
41 | "dk-sh": "npm run dk-exec express sh",
42 | "dk-cold-sh": "npm run dk-run express sh",
43 | "dk-test": "npm run dk-run express yarn test",
44 | "dk-ps": "docker-compose ps",
45 | "dk-logs": "docker-compose logs express",
46 | "dk-inspect": "docker inspect express-starter",
47 | "dk-purge": "npm run dk-down -- --rmi all --remove-orphans",
48 | "pm2": "pm2 startOrRestart pm2.ecosystem.config.js --env production",
49 | "pm2-setup": "pm2 deploy pm2.ecosystem.config.js production setup",
50 | "pm2-deploy": "pm2 deploy pm2.ecosystem.config.js production",
51 | "pm2-update": "pm2 deploy pm2.ecosystem.config.js production update",
52 | "pm2-update-force": "npm run pm2-update --force",
53 | "postinstall": "./scripts/postinstall.sh"
54 | },
55 | "dependencies": {
56 | "body-parser": "^1.18.3",
57 | "dotenv": "^6.0.0",
58 | "express": "^4.16.3",
59 | "express-pino-logger": "^3.0.1",
60 | "get-port": "^3.2.0",
61 | "pino": "^4.17.3"
62 | },
63 | "devDependencies": {
64 | "@types/body-parser": "^1.17.0",
65 | "@types/express": "^4.16.0",
66 | "@types/node": "^10.3.2",
67 | "@types/opn": "^5.1.0",
68 | "@types/pino": "^4.16.0",
69 | "chai": "^4.1.2",
70 | "chai-http": "^4.0.0",
71 | "concurrently": "^3.5.1",
72 | "mocha": "^5.2.0",
73 | "nodemon": "^1.17.5",
74 | "opn": "^5.3.0",
75 | "pino-pretty": "https://github.com/pinojs/pino-pretty.git#v2.0.0-rc.1",
76 | "prettier": "^1.13.5",
77 | "rimraf": "^2.6.2",
78 | "source-map-support": "^0.5.6",
79 | "typescript": "^2.9.1"
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | > ### Archive Notice
2 | >
3 | > Since I no longer use [Express](https://www.expressjs.com) for my backend
4 | > services (I've no write my backends almost exclusively in
5 | > [Go](https://golang.org)), I'm archiving this repository—it will no longer
6 | > be maintained. Feel free to fork it, though!
7 |
8 | # express-starter
9 |
10 | *An opinionated Typescript starter setup for [Express](https://www.expressjs.com) + [Pino](https://getpino.io). Deployable with [Docker](https://www.docker.com) and [PM2](http://pm2.keymetrics.io). Works really well with [`ng-starter`](https://github.com/steven-xie/ng-starter)!*
11 |
12 | [](https://travis-ci.org/steven-xie/express-starter/) [](https://codeclimate.com/github/steven-xie/express-starter/maintainability) [](https://hub.docker.com/r/stevenxie/express-starter/) [](https://www.typescriptlang.org) [](https://github.com/prettier/prettier)
13 |
14 | ## Installation:
15 |
16 | ```bash
17 | # If using Yarn:
18 | yarn install
19 |
20 | # If using NPM:
21 | npm install
22 | ```
23 |
24 |
25 |
26 |
27 |
28 | ## General usage
29 |
30 | ### Starting the server:
31 |
32 | ```bash
33 | # If using Yarn:
34 | yarn dev # starts a dev server with hot-reloading
35 | # and detailed debugging.
36 | yarn prod # starts a production server with minimal
37 | # debugging and no hot-reloading.
38 | yarn start # selects 'yarn dev' or 'yarn prod' based
39 | # on your NODE_ENV
40 |
41 | # If using NPM, replace 'yarn ...' with 'npm run ...'
42 | # However, 'yarn' is highly recommended for a more
43 | # deterministic package installation!
44 | ```
45 |
46 | ### Default endpoints:
47 |
48 | * `/` - Endpoint for `static/index.html`. Static assets are served from `static/`.
49 |
50 | > *Note that in production, usage of Express as a static asset server is discouraged, as it is much more efficient to use NGINX to serve static content, and to use Express only as an API server.*
51 |
52 | * `/api` - Main API endpoint; returns a `text/plain` message indicating that the
53 | API is working.
54 | * `/api/puppies` - Sample API endpoint that counts page refreshes. Sends data
55 | as `application/json`.
56 |
57 |
58 |
59 |
60 |
61 | ## Usage with Docker
62 |
63 | ### Setup
64 |
65 | _**Method 1:** Building an image from scratch._
66 |
67 | First, edit `package.json`'s *config* section:
68 | * Set `docker-image-version` to a pattern that matches **#.#.#** (typically
69 | using [*semver*](https://semver.org))). This affects the tag of the
70 | built **Docker image** (which will look something along the lines of
71 | **#.#.#-prod** or **#.#.#-dev**), and also sets the image **version** label.
72 |
73 | Now, decide whether you want to build for **production** or **development**
74 | (this affects the installed dependencies, and whether `express-starter` runs
75 | in development / production mode), and run the associated command:
76 |
77 | ```bash
78 | # dk = docker
79 |
80 | ## For a production build:
81 | yarn dk-build-prod
82 | ## Or, a shorter alias for the above:
83 | yarn dk-build
84 |
85 | ## For a development build:
86 | yarn dk-build-dev
87 | ```
88 |
89 | Once you build a version, the `.env` file will be populated with the build
90 | configuration (i.e. `BUILD_ENV` and `BUILD_TAG`).
91 |
92 | _**Method 2:** Pulling a remote registry image._
93 |
94 | Pull the latest image from Docker Hub:
95 |
96 | ```bash
97 | docker pull stevenxie/express-starter
98 | ```
99 |
100 | Then, start a container from [Docker Compose](https://docs.docker.com/compose/)
101 | (which is named `express-starter`, configured to expose port **3000**, and
102 | mount a volume named `express-vol`). If no image has been built, it will also
103 | build an image before starting a container from it. *Make sure you have
104 | [Docker Compose](https://docs.docker.com/compose/) installed, or look up how
105 | to manually configure a build with `docker build`!*
106 |
107 | ```bash
108 | # To see output in the console foreground (dk = docker)
109 | yarn dk-foreground
110 |
111 | # To run in the background
112 | yarn dk-up
113 | ```
114 |
115 | ### Normal usage
116 |
117 | To instantiate a container, run `yarn dk-up`. If no image is built, it will
118 | also build the initial image.
119 |
120 | > *For more information about Docker images and containers, please see [Docker's documentation](https://docs.docker.com/v17.09/engine/userguide/storagedriver/imagesandcontainers/).*
121 |
122 | To stop the container, run `yarn dk-stop`, and to run it again, run
123 | `yarn dk-start`. The container can also be paused with `yarn dk-pause`.
124 |
125 | To remove the container entirely, run `yarn dk-down`. To also remove images,
126 | run `yarn dk-purge`.
127 |
128 | > See the `package.json` for more useful Docker-related scripts! Each Docker
129 | > script is prefixed with `dk-`.
130 |
131 | If you have multiple environments / tags, you can have the `yarn dk-...` scripts
132 | target a different image by editing the `.env` file with the correct `BUILD_ENV`
133 | and `BUILD_TAG`.
134 |
135 | ### Accessing Volumes on Mac OS X
136 |
137 | If you're on a Mac, you won't be able to access the `express-vol` Docker
138 | volume directly through the filesystem; you'll have to access it through
139 | Docker's VM as follows:
140 |
141 | ```bash
142 | screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
143 |
144 | # At this point, your screen will become blank.
145 | # Press enter, and wait for the prompt to show up.
146 | # When it does, you can access the volumes at the
147 | # following location:
148 | cd /var/lib/docker/volumes
149 | ```
150 |
151 |
152 |
153 |
154 |
155 | ## Usage with PM2
156 |
157 | To launch on a server with [PM2](http://pm2.keymetrics.io) installed globally,
158 | run with `yarn pm2` or `npm run pm2`. This will allow you to monitor the status
159 | of the server, and auto-restart it if it crashes.
160 |
161 | ### Using auto-deployment:
162 |
163 | If you have your server settings correctly filled out in
164 | **pm2.ecosystem.conf.js → deployment**, and your server has your GitHub SSH
165 | keys / credentials, then you can set-up the server instantly as follows:
166 |
167 | ```bash
168 | # Assuming using Yarn:
169 | yarn pm2-setup
170 | yarn pm2-deploy
171 | ```
172 |
173 | After that, every time you want to update to the latest Git commit, just run
174 | `yarn pm2-update`. If you've at some point performed a `git push --force`,
175 | then it is necessary to run `yarn pm2-update-force` instead.
176 |
177 |
178 |
179 |
180 |
181 | ## Configuration
182 |
183 | ### package.json: config
184 |
185 | * `dev-log-level` – logging level for when the server is started in
186 | development mode _(default: `debug`)_.
187 | * `prod-log-level` – logging level for when the server is started in
188 | production mode _(default: `error`)_.
189 | * `jmespath-log-filter` – the filter to be applied to the console
190 | output logs during development. Uses the
191 | [JMESPath query language](http://jmespath.org). To show all output,
192 | set to: `*`. _(default: `` contains(name, `server`) ``)_
193 | * `browser-live-reload` – whether or not you would like the _browser_ to reload
194 | when you save your code. Useful if you're making visual changes. (The server
195 | itself will always live-reload to reflect new changes). _(default: `false`)_
196 | * `docker-image-version` — a pattern that matches **#.#.#** (typically using
197 | [semver](https://semver.org)). This affects the tag of the built
198 | **docker image** (which will look something along the lines of **#.#.#-prod**
199 | or **#.#.#-dev**), and also sets the image **version** label.
200 |
201 | ### docker-compose.yml
202 | The '**services → express → environment**' section can be configured with
203 | environment variables like `NODE_ENV`, `LOG_LEVEL`, and `LOG_FILTER`, which
204 | will override related settings in the NPM package configuration.
205 |
206 | ### pm2.ecosystem.config.js
207 |
208 | Allows you to configure custom properties for [PM2](https://pm2.io) monitoring
209 | and remote deployment. [See the documentation for details](http://pm2.keymetrics.io/docs/usage/application-declaration/).
210 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@types/body-parser@*", "@types/body-parser@^1.17.0":
6 | version "1.17.0"
7 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.0.tgz#9f5c9d9bd04bb54be32d5eb9fc0d8c974e6cf58c"
8 | dependencies:
9 | "@types/connect" "*"
10 | "@types/node" "*"
11 |
12 | "@types/connect@*":
13 | version "3.4.32"
14 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.32.tgz#aa0e9616b9435ccad02bc52b5b454ffc2c70ba28"
15 | dependencies:
16 | "@types/node" "*"
17 |
18 | "@types/events@*":
19 | version "1.2.0"
20 | resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86"
21 |
22 | "@types/express-serve-static-core@*":
23 | version "4.11.2"
24 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.11.2.tgz#b3c4bd7d45f765dbb782842fa80200967ae14eba"
25 | dependencies:
26 | "@types/events" "*"
27 | "@types/node" "*"
28 |
29 | "@types/express@^4.16.0":
30 | version "4.16.0"
31 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.16.0.tgz#6d8bc42ccaa6f35cf29a2b7c3333cb47b5a32a19"
32 | dependencies:
33 | "@types/body-parser" "*"
34 | "@types/express-serve-static-core" "*"
35 | "@types/serve-static" "*"
36 |
37 | "@types/mime@*":
38 | version "2.0.0"
39 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.0.tgz#5a7306e367c539b9f6543499de8dd519fac37a8b"
40 |
41 | "@types/node@*":
42 | version "10.1.4"
43 | resolved "https://registry.yarnpkg.com/@types/node/-/node-10.1.4.tgz#606651d3f8a8bec08b8cb262161aab9209f4a29d"
44 |
45 | "@types/node@^10.3.2":
46 | version "10.3.2"
47 | resolved "https://registry.yarnpkg.com/@types/node/-/node-10.3.2.tgz#3840ec6c12556fdda6e0e6d036df853101d732a4"
48 |
49 | "@types/opn@^5.1.0":
50 | version "5.1.0"
51 | resolved "https://registry.yarnpkg.com/@types/opn/-/opn-5.1.0.tgz#bff7bc371677f4bdbb37884400e03fd81f743927"
52 | dependencies:
53 | "@types/node" "*"
54 |
55 | "@types/pino@^4.16.0":
56 | version "4.16.0"
57 | resolved "https://registry.yarnpkg.com/@types/pino/-/pino-4.16.0.tgz#802d0e8d36009a39c5c9163634a3344073f04be5"
58 | dependencies:
59 | "@types/events" "*"
60 | "@types/node" "*"
61 |
62 | "@types/serve-static@*":
63 | version "1.13.2"
64 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.2.tgz#f5ac4d7a6420a99a6a45af4719f4dcd8cd907a48"
65 | dependencies:
66 | "@types/express-serve-static-core" "*"
67 | "@types/mime" "*"
68 |
69 | abbrev@1:
70 | version "1.1.1"
71 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
72 |
73 | accepts@~1.3.5:
74 | version "1.3.5"
75 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
76 | dependencies:
77 | mime-types "~2.1.18"
78 | negotiator "0.6.1"
79 |
80 | ansi-align@^2.0.0:
81 | version "2.0.0"
82 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
83 | dependencies:
84 | string-width "^2.0.0"
85 |
86 | ansi-regex@^0.2.0, ansi-regex@^0.2.1:
87 | version "0.2.1"
88 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9"
89 |
90 | ansi-regex@^2.0.0:
91 | version "2.1.1"
92 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
93 |
94 | ansi-regex@^3.0.0:
95 | version "3.0.0"
96 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
97 |
98 | ansi-styles@^1.1.0:
99 | version "1.1.0"
100 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de"
101 |
102 | ansi-styles@^3.2.1:
103 | version "3.2.1"
104 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
105 | dependencies:
106 | color-convert "^1.9.0"
107 |
108 | anymatch@^2.0.0:
109 | version "2.0.0"
110 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
111 | dependencies:
112 | micromatch "^3.1.4"
113 | normalize-path "^2.1.1"
114 |
115 | aproba@^1.0.3:
116 | version "1.2.0"
117 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
118 |
119 | are-we-there-yet@~1.1.2:
120 | version "1.1.5"
121 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
122 | dependencies:
123 | delegates "^1.0.0"
124 | readable-stream "^2.0.6"
125 |
126 | args@^4.0.0:
127 | version "4.0.0"
128 | resolved "https://registry.yarnpkg.com/args/-/args-4.0.0.tgz#5ca24cdba43d4b17111c56616f5f2e9d91933954"
129 | dependencies:
130 | camelcase "5.0.0"
131 | chalk "2.3.2"
132 | leven "2.1.0"
133 | mri "1.1.0"
134 |
135 | arr-diff@^4.0.0:
136 | version "4.0.0"
137 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
138 |
139 | arr-flatten@^1.1.0:
140 | version "1.1.0"
141 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
142 |
143 | arr-union@^3.1.0:
144 | version "3.1.0"
145 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
146 |
147 | array-flatten@1.1.1:
148 | version "1.1.1"
149 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
150 |
151 | array-unique@^0.3.2:
152 | version "0.3.2"
153 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
154 |
155 | assertion-error@^1.0.1:
156 | version "1.1.0"
157 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
158 |
159 | assign-symbols@^1.0.0:
160 | version "1.0.0"
161 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
162 |
163 | async-each@^1.0.0:
164 | version "1.0.1"
165 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
166 |
167 | asynckit@^0.4.0:
168 | version "0.4.0"
169 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
170 |
171 | atob@^2.1.1:
172 | version "2.1.1"
173 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a"
174 |
175 | balanced-match@^1.0.0:
176 | version "1.0.0"
177 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
178 |
179 | base@^0.11.1:
180 | version "0.11.2"
181 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
182 | dependencies:
183 | cache-base "^1.0.1"
184 | class-utils "^0.3.5"
185 | component-emitter "^1.2.1"
186 | define-property "^1.0.0"
187 | isobject "^3.0.1"
188 | mixin-deep "^1.2.0"
189 | pascalcase "^0.1.1"
190 |
191 | binary-extensions@^1.0.0:
192 | version "1.11.0"
193 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
194 |
195 | body-parser@1.18.2:
196 | version "1.18.2"
197 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
198 | dependencies:
199 | bytes "3.0.0"
200 | content-type "~1.0.4"
201 | debug "2.6.9"
202 | depd "~1.1.1"
203 | http-errors "~1.6.2"
204 | iconv-lite "0.4.19"
205 | on-finished "~2.3.0"
206 | qs "6.5.1"
207 | raw-body "2.3.2"
208 | type-is "~1.6.15"
209 |
210 | body-parser@^1.18.3:
211 | version "1.18.3"
212 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
213 | dependencies:
214 | bytes "3.0.0"
215 | content-type "~1.0.4"
216 | debug "2.6.9"
217 | depd "~1.1.2"
218 | http-errors "~1.6.3"
219 | iconv-lite "0.4.23"
220 | on-finished "~2.3.0"
221 | qs "6.5.2"
222 | raw-body "2.3.3"
223 | type-is "~1.6.16"
224 |
225 | boxen@^1.2.1:
226 | version "1.3.0"
227 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
228 | dependencies:
229 | ansi-align "^2.0.0"
230 | camelcase "^4.0.0"
231 | chalk "^2.0.1"
232 | cli-boxes "^1.0.0"
233 | string-width "^2.0.0"
234 | term-size "^1.2.0"
235 | widest-line "^2.0.0"
236 |
237 | brace-expansion@^1.1.7:
238 | version "1.1.11"
239 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
240 | dependencies:
241 | balanced-match "^1.0.0"
242 | concat-map "0.0.1"
243 |
244 | braces@^2.3.0, braces@^2.3.1:
245 | version "2.3.2"
246 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
247 | dependencies:
248 | arr-flatten "^1.1.0"
249 | array-unique "^0.3.2"
250 | extend-shallow "^2.0.1"
251 | fill-range "^4.0.0"
252 | isobject "^3.0.1"
253 | repeat-element "^1.1.2"
254 | snapdragon "^0.8.1"
255 | snapdragon-node "^2.0.1"
256 | split-string "^3.0.2"
257 | to-regex "^3.0.1"
258 |
259 | browser-stdout@1.3.1:
260 | version "1.3.1"
261 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
262 |
263 | buffer-from@^1.0.0:
264 | version "1.1.0"
265 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04"
266 |
267 | bytes@3.0.0:
268 | version "3.0.0"
269 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
270 |
271 | cache-base@^1.0.1:
272 | version "1.0.1"
273 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
274 | dependencies:
275 | collection-visit "^1.0.0"
276 | component-emitter "^1.2.1"
277 | get-value "^2.0.6"
278 | has-value "^1.0.0"
279 | isobject "^3.0.1"
280 | set-value "^2.0.0"
281 | to-object-path "^0.3.0"
282 | union-value "^1.0.0"
283 | unset-value "^1.0.0"
284 |
285 | camelcase@5.0.0:
286 | version "5.0.0"
287 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42"
288 |
289 | camelcase@^4.0.0:
290 | version "4.1.0"
291 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
292 |
293 | capture-stack-trace@^1.0.0:
294 | version "1.0.0"
295 | resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d"
296 |
297 | chai-http@^4.0.0:
298 | version "4.0.0"
299 | resolved "https://registry.yarnpkg.com/chai-http/-/chai-http-4.0.0.tgz#810f579e98ae9d7847701759de7682361f2f286f"
300 | dependencies:
301 | cookiejar "^2.1.1"
302 | is-ip "^2.0.0"
303 | methods "^1.1.2"
304 | qs "^6.5.1"
305 | superagent "^3.7.0"
306 |
307 | chai@^4.1.2:
308 | version "4.1.2"
309 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c"
310 | dependencies:
311 | assertion-error "^1.0.1"
312 | check-error "^1.0.1"
313 | deep-eql "^3.0.0"
314 | get-func-name "^2.0.0"
315 | pathval "^1.0.0"
316 | type-detect "^4.0.0"
317 |
318 | chalk@0.5.1:
319 | version "0.5.1"
320 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174"
321 | dependencies:
322 | ansi-styles "^1.1.0"
323 | escape-string-regexp "^1.0.0"
324 | has-ansi "^0.1.0"
325 | strip-ansi "^0.3.0"
326 | supports-color "^0.2.0"
327 |
328 | chalk@2.3.2:
329 | version "2.3.2"
330 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65"
331 | dependencies:
332 | ansi-styles "^3.2.1"
333 | escape-string-regexp "^1.0.5"
334 | supports-color "^5.3.0"
335 |
336 | chalk@^2.0.1, chalk@^2.3.2, chalk@^2.4.1:
337 | version "2.4.1"
338 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
339 | dependencies:
340 | ansi-styles "^3.2.1"
341 | escape-string-regexp "^1.0.5"
342 | supports-color "^5.3.0"
343 |
344 | check-error@^1.0.1:
345 | version "1.0.2"
346 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
347 |
348 | chokidar@^2.0.2:
349 | version "2.0.3"
350 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176"
351 | dependencies:
352 | anymatch "^2.0.0"
353 | async-each "^1.0.0"
354 | braces "^2.3.0"
355 | glob-parent "^3.1.0"
356 | inherits "^2.0.1"
357 | is-binary-path "^1.0.0"
358 | is-glob "^4.0.0"
359 | normalize-path "^2.1.1"
360 | path-is-absolute "^1.0.0"
361 | readdirp "^2.0.0"
362 | upath "^1.0.0"
363 | optionalDependencies:
364 | fsevents "^1.1.2"
365 |
366 | chownr@^1.0.1:
367 | version "1.0.1"
368 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
369 |
370 | ci-info@^1.0.0:
371 | version "1.1.3"
372 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2"
373 |
374 | class-utils@^0.3.5:
375 | version "0.3.6"
376 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
377 | dependencies:
378 | arr-union "^3.1.0"
379 | define-property "^0.2.5"
380 | isobject "^3.0.0"
381 | static-extend "^0.1.1"
382 |
383 | cli-boxes@^1.0.0:
384 | version "1.0.0"
385 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
386 |
387 | code-point-at@^1.0.0:
388 | version "1.1.0"
389 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
390 |
391 | collection-visit@^1.0.0:
392 | version "1.0.0"
393 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
394 | dependencies:
395 | map-visit "^1.0.0"
396 | object-visit "^1.0.0"
397 |
398 | color-convert@^1.9.0:
399 | version "1.9.1"
400 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
401 | dependencies:
402 | color-name "^1.1.1"
403 |
404 | color-name@^1.1.1:
405 | version "1.1.3"
406 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
407 |
408 | combined-stream@1.0.6:
409 | version "1.0.6"
410 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
411 | dependencies:
412 | delayed-stream "~1.0.0"
413 |
414 | commander@2.15.1:
415 | version "2.15.1"
416 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
417 |
418 | commander@2.6.0:
419 | version "2.6.0"
420 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d"
421 |
422 | component-emitter@^1.2.0, component-emitter@^1.2.1:
423 | version "1.2.1"
424 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
425 |
426 | concat-map@0.0.1:
427 | version "0.0.1"
428 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
429 |
430 | concurrently@^3.5.1:
431 | version "3.5.1"
432 | resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.5.1.tgz#ee8b60018bbe86b02df13e5249453c6ececd2521"
433 | dependencies:
434 | chalk "0.5.1"
435 | commander "2.6.0"
436 | date-fns "^1.23.0"
437 | lodash "^4.5.1"
438 | rx "2.3.24"
439 | spawn-command "^0.0.2-1"
440 | supports-color "^3.2.3"
441 | tree-kill "^1.1.0"
442 |
443 | configstore@^3.0.0:
444 | version "3.1.2"
445 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f"
446 | dependencies:
447 | dot-prop "^4.1.0"
448 | graceful-fs "^4.1.2"
449 | make-dir "^1.0.0"
450 | unique-string "^1.0.0"
451 | write-file-atomic "^2.0.0"
452 | xdg-basedir "^3.0.0"
453 |
454 | console-control-strings@^1.0.0, console-control-strings@~1.1.0:
455 | version "1.1.0"
456 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
457 |
458 | content-disposition@0.5.2:
459 | version "0.5.2"
460 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
461 |
462 | content-type@~1.0.4:
463 | version "1.0.4"
464 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
465 |
466 | cookie-signature@1.0.6:
467 | version "1.0.6"
468 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
469 |
470 | cookie@0.3.1:
471 | version "0.3.1"
472 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
473 |
474 | cookiejar@^2.1.0, cookiejar@^2.1.1:
475 | version "2.1.2"
476 | resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c"
477 |
478 | copy-descriptor@^0.1.0:
479 | version "0.1.1"
480 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
481 |
482 | core-util-is@~1.0.0:
483 | version "1.0.2"
484 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
485 |
486 | create-error-class@^3.0.0:
487 | version "3.0.2"
488 | resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
489 | dependencies:
490 | capture-stack-trace "^1.0.0"
491 |
492 | cross-spawn@^5.0.1:
493 | version "5.1.0"
494 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
495 | dependencies:
496 | lru-cache "^4.0.1"
497 | shebang-command "^1.2.0"
498 | which "^1.2.9"
499 |
500 | crypto-random-string@^1.0.0:
501 | version "1.0.0"
502 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
503 |
504 | date-fns@^1.23.0:
505 | version "1.29.0"
506 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6"
507 |
508 | dateformat@^3.0.3:
509 | version "3.0.3"
510 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
511 |
512 | debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3:
513 | version "2.6.9"
514 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
515 | dependencies:
516 | ms "2.0.0"
517 |
518 | debug@3.1.0, debug@^3.1.0:
519 | version "3.1.0"
520 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
521 | dependencies:
522 | ms "2.0.0"
523 |
524 | decode-uri-component@^0.2.0:
525 | version "0.2.0"
526 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
527 |
528 | deep-eql@^3.0.0:
529 | version "3.0.1"
530 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
531 | dependencies:
532 | type-detect "^4.0.0"
533 |
534 | deep-extend@^0.6.0:
535 | version "0.6.0"
536 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
537 |
538 | define-property@^0.2.5:
539 | version "0.2.5"
540 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
541 | dependencies:
542 | is-descriptor "^0.1.0"
543 |
544 | define-property@^1.0.0:
545 | version "1.0.0"
546 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
547 | dependencies:
548 | is-descriptor "^1.0.0"
549 |
550 | define-property@^2.0.2:
551 | version "2.0.2"
552 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
553 | dependencies:
554 | is-descriptor "^1.0.2"
555 | isobject "^3.0.1"
556 |
557 | delayed-stream@~1.0.0:
558 | version "1.0.0"
559 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
560 |
561 | delegates@^1.0.0:
562 | version "1.0.0"
563 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
564 |
565 | depd@1.1.1:
566 | version "1.1.1"
567 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
568 |
569 | depd@~1.1.1, depd@~1.1.2:
570 | version "1.1.2"
571 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
572 |
573 | destroy@~1.0.4:
574 | version "1.0.4"
575 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
576 |
577 | detect-libc@^1.0.2:
578 | version "1.0.3"
579 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
580 |
581 | diff@3.5.0:
582 | version "3.5.0"
583 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
584 |
585 | dot-prop@^4.1.0:
586 | version "4.2.0"
587 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
588 | dependencies:
589 | is-obj "^1.0.0"
590 |
591 | dotenv@^6.0.0:
592 | version "6.0.0"
593 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.0.0.tgz#24e37c041741c5f4b25324958ebbc34bca965935"
594 |
595 | duplexer3@^0.1.4:
596 | version "0.1.4"
597 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
598 |
599 | duplexer@~0.1.1:
600 | version "0.1.1"
601 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
602 |
603 | ee-first@1.1.1:
604 | version "1.1.1"
605 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
606 |
607 | encodeurl@~1.0.2:
608 | version "1.0.2"
609 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
610 |
611 | end-of-stream@^1.1.0:
612 | version "1.4.1"
613 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
614 | dependencies:
615 | once "^1.4.0"
616 |
617 | escape-html@~1.0.3:
618 | version "1.0.3"
619 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
620 |
621 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.5:
622 | version "1.0.5"
623 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
624 |
625 | etag@~1.8.1:
626 | version "1.8.1"
627 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
628 |
629 | event-stream@~3.3.0:
630 | version "3.3.4"
631 | resolved "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
632 | dependencies:
633 | duplexer "~0.1.1"
634 | from "~0"
635 | map-stream "~0.1.0"
636 | pause-stream "0.0.11"
637 | split "0.3"
638 | stream-combiner "~0.0.4"
639 | through "~2.3.1"
640 |
641 | execa@^0.7.0:
642 | version "0.7.0"
643 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
644 | dependencies:
645 | cross-spawn "^5.0.1"
646 | get-stream "^3.0.0"
647 | is-stream "^1.1.0"
648 | npm-run-path "^2.0.0"
649 | p-finally "^1.0.0"
650 | signal-exit "^3.0.0"
651 | strip-eof "^1.0.0"
652 |
653 | expand-brackets@^2.1.4:
654 | version "2.1.4"
655 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
656 | dependencies:
657 | debug "^2.3.3"
658 | define-property "^0.2.5"
659 | extend-shallow "^2.0.1"
660 | posix-character-classes "^0.1.0"
661 | regex-not "^1.0.0"
662 | snapdragon "^0.8.1"
663 | to-regex "^3.0.1"
664 |
665 | express-pino-logger@^3.0.1:
666 | version "3.0.1"
667 | resolved "https://registry.yarnpkg.com/express-pino-logger/-/express-pino-logger-3.0.1.tgz#31befe82ed4f1d685d90eeb035923c0c79fe95cc"
668 | dependencies:
669 | pino-http "^3.0.1"
670 |
671 | express@^4.16.3:
672 | version "4.16.3"
673 | resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53"
674 | dependencies:
675 | accepts "~1.3.5"
676 | array-flatten "1.1.1"
677 | body-parser "1.18.2"
678 | content-disposition "0.5.2"
679 | content-type "~1.0.4"
680 | cookie "0.3.1"
681 | cookie-signature "1.0.6"
682 | debug "2.6.9"
683 | depd "~1.1.2"
684 | encodeurl "~1.0.2"
685 | escape-html "~1.0.3"
686 | etag "~1.8.1"
687 | finalhandler "1.1.1"
688 | fresh "0.5.2"
689 | merge-descriptors "1.0.1"
690 | methods "~1.1.2"
691 | on-finished "~2.3.0"
692 | parseurl "~1.3.2"
693 | path-to-regexp "0.1.7"
694 | proxy-addr "~2.0.3"
695 | qs "6.5.1"
696 | range-parser "~1.2.0"
697 | safe-buffer "5.1.1"
698 | send "0.16.2"
699 | serve-static "1.13.2"
700 | setprototypeof "1.1.0"
701 | statuses "~1.4.0"
702 | type-is "~1.6.16"
703 | utils-merge "1.0.1"
704 | vary "~1.1.2"
705 |
706 | extend-shallow@^2.0.1:
707 | version "2.0.1"
708 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
709 | dependencies:
710 | is-extendable "^0.1.0"
711 |
712 | extend-shallow@^3.0.0, extend-shallow@^3.0.2:
713 | version "3.0.2"
714 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
715 | dependencies:
716 | assign-symbols "^1.0.0"
717 | is-extendable "^1.0.1"
718 |
719 | extend@^3.0.0:
720 | version "3.0.1"
721 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
722 |
723 | extglob@^2.0.4:
724 | version "2.0.4"
725 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
726 | dependencies:
727 | array-unique "^0.3.2"
728 | define-property "^1.0.0"
729 | expand-brackets "^2.1.4"
730 | extend-shallow "^2.0.1"
731 | fragment-cache "^0.2.1"
732 | regex-not "^1.0.0"
733 | snapdragon "^0.8.1"
734 | to-regex "^3.0.1"
735 |
736 | fast-json-parse@^1.0.3:
737 | version "1.0.3"
738 | resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d"
739 |
740 | fast-safe-stringify@^1.0.8, fast-safe-stringify@^1.2.3:
741 | version "1.2.3"
742 | resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz#9fe22c37fb2f7f86f06b8f004377dbf8f1ee7bc1"
743 |
744 | fill-range@^4.0.0:
745 | version "4.0.0"
746 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
747 | dependencies:
748 | extend-shallow "^2.0.1"
749 | is-number "^3.0.0"
750 | repeat-string "^1.6.1"
751 | to-regex-range "^2.1.0"
752 |
753 | finalhandler@1.1.1:
754 | version "1.1.1"
755 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
756 | dependencies:
757 | debug "2.6.9"
758 | encodeurl "~1.0.2"
759 | escape-html "~1.0.3"
760 | on-finished "~2.3.0"
761 | parseurl "~1.3.2"
762 | statuses "~1.4.0"
763 | unpipe "~1.0.0"
764 |
765 | flatstr@^1.0.5:
766 | version "1.0.6"
767 | resolved "https://registry.yarnpkg.com/flatstr/-/flatstr-1.0.6.tgz#14cd86c1ff72f6be8e461825a904d55351764522"
768 |
769 | for-in@^1.0.2:
770 | version "1.0.2"
771 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
772 |
773 | form-data@^2.3.1:
774 | version "2.3.2"
775 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099"
776 | dependencies:
777 | asynckit "^0.4.0"
778 | combined-stream "1.0.6"
779 | mime-types "^2.1.12"
780 |
781 | formidable@^1.2.0:
782 | version "1.2.1"
783 | resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659"
784 |
785 | forwarded@~0.1.2:
786 | version "0.1.2"
787 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
788 |
789 | fragment-cache@^0.2.1:
790 | version "0.2.1"
791 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
792 | dependencies:
793 | map-cache "^0.2.2"
794 |
795 | fresh@0.5.2:
796 | version "0.5.2"
797 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
798 |
799 | from@~0:
800 | version "0.1.7"
801 | resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
802 |
803 | fs-minipass@^1.2.5:
804 | version "1.2.5"
805 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
806 | dependencies:
807 | minipass "^2.2.1"
808 |
809 | fs.realpath@^1.0.0:
810 | version "1.0.0"
811 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
812 |
813 | fsevents@^1.1.2:
814 | version "1.2.4"
815 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
816 | dependencies:
817 | nan "^2.9.2"
818 | node-pre-gyp "^0.10.0"
819 |
820 | gauge@~2.7.3:
821 | version "2.7.4"
822 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
823 | dependencies:
824 | aproba "^1.0.3"
825 | console-control-strings "^1.0.0"
826 | has-unicode "^2.0.0"
827 | object-assign "^4.1.0"
828 | signal-exit "^3.0.0"
829 | string-width "^1.0.1"
830 | strip-ansi "^3.0.1"
831 | wide-align "^1.1.0"
832 |
833 | get-func-name@^2.0.0:
834 | version "2.0.0"
835 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
836 |
837 | get-port@^3.2.0:
838 | version "3.2.0"
839 | resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc"
840 |
841 | get-stream@^3.0.0:
842 | version "3.0.0"
843 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
844 |
845 | get-value@^2.0.3, get-value@^2.0.6:
846 | version "2.0.6"
847 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
848 |
849 | glob-parent@^3.1.0:
850 | version "3.1.0"
851 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
852 | dependencies:
853 | is-glob "^3.1.0"
854 | path-dirname "^1.0.0"
855 |
856 | glob@7.1.2, glob@^7.0.5:
857 | version "7.1.2"
858 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
859 | dependencies:
860 | fs.realpath "^1.0.0"
861 | inflight "^1.0.4"
862 | inherits "2"
863 | minimatch "^3.0.4"
864 | once "^1.3.0"
865 | path-is-absolute "^1.0.0"
866 |
867 | global-dirs@^0.1.0:
868 | version "0.1.1"
869 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
870 | dependencies:
871 | ini "^1.3.4"
872 |
873 | got@^6.7.1:
874 | version "6.7.1"
875 | resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
876 | dependencies:
877 | create-error-class "^3.0.0"
878 | duplexer3 "^0.1.4"
879 | get-stream "^3.0.0"
880 | is-redirect "^1.0.0"
881 | is-retry-allowed "^1.0.0"
882 | is-stream "^1.0.0"
883 | lowercase-keys "^1.0.0"
884 | safe-buffer "^5.0.1"
885 | timed-out "^4.0.0"
886 | unzip-response "^2.0.1"
887 | url-parse-lax "^1.0.0"
888 |
889 | graceful-fs@^4.1.11, graceful-fs@^4.1.2:
890 | version "4.1.11"
891 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
892 |
893 | growl@1.10.5:
894 | version "1.10.5"
895 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
896 |
897 | has-ansi@^0.1.0:
898 | version "0.1.0"
899 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e"
900 | dependencies:
901 | ansi-regex "^0.2.0"
902 |
903 | has-flag@^1.0.0:
904 | version "1.0.0"
905 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
906 |
907 | has-flag@^3.0.0:
908 | version "3.0.0"
909 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
910 |
911 | has-unicode@^2.0.0:
912 | version "2.0.1"
913 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
914 |
915 | has-value@^0.3.1:
916 | version "0.3.1"
917 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
918 | dependencies:
919 | get-value "^2.0.3"
920 | has-values "^0.1.4"
921 | isobject "^2.0.0"
922 |
923 | has-value@^1.0.0:
924 | version "1.0.0"
925 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
926 | dependencies:
927 | get-value "^2.0.6"
928 | has-values "^1.0.0"
929 | isobject "^3.0.0"
930 |
931 | has-values@^0.1.4:
932 | version "0.1.4"
933 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
934 |
935 | has-values@^1.0.0:
936 | version "1.0.0"
937 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
938 | dependencies:
939 | is-number "^3.0.0"
940 | kind-of "^4.0.0"
941 |
942 | he@1.1.1:
943 | version "1.1.1"
944 | resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
945 |
946 | http-errors@1.6.2:
947 | version "1.6.2"
948 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
949 | dependencies:
950 | depd "1.1.1"
951 | inherits "2.0.3"
952 | setprototypeof "1.0.3"
953 | statuses ">= 1.3.1 < 2"
954 |
955 | http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
956 | version "1.6.3"
957 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
958 | dependencies:
959 | depd "~1.1.2"
960 | inherits "2.0.3"
961 | setprototypeof "1.1.0"
962 | statuses ">= 1.4.0 < 2"
963 |
964 | iconv-lite@0.4.19:
965 | version "0.4.19"
966 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
967 |
968 | iconv-lite@0.4.23, iconv-lite@^0.4.4:
969 | version "0.4.23"
970 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
971 | dependencies:
972 | safer-buffer ">= 2.1.2 < 3"
973 |
974 | ignore-by-default@^1.0.1:
975 | version "1.0.1"
976 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
977 |
978 | ignore-walk@^3.0.1:
979 | version "3.0.1"
980 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
981 | dependencies:
982 | minimatch "^3.0.4"
983 |
984 | import-lazy@^2.1.0:
985 | version "2.1.0"
986 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
987 |
988 | imurmurhash@^0.1.4:
989 | version "0.1.4"
990 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
991 |
992 | inflight@^1.0.4:
993 | version "1.0.6"
994 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
995 | dependencies:
996 | once "^1.3.0"
997 | wrappy "1"
998 |
999 | inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.3:
1000 | version "2.0.3"
1001 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1002 |
1003 | ini@^1.3.4, ini@~1.3.0:
1004 | version "1.3.5"
1005 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
1006 |
1007 | ip-regex@^2.0.0:
1008 | version "2.1.0"
1009 | resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
1010 |
1011 | ipaddr.js@1.6.0:
1012 | version "1.6.0"
1013 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b"
1014 |
1015 | is-accessor-descriptor@^0.1.6:
1016 | version "0.1.6"
1017 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
1018 | dependencies:
1019 | kind-of "^3.0.2"
1020 |
1021 | is-accessor-descriptor@^1.0.0:
1022 | version "1.0.0"
1023 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
1024 | dependencies:
1025 | kind-of "^6.0.0"
1026 |
1027 | is-binary-path@^1.0.0:
1028 | version "1.0.1"
1029 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
1030 | dependencies:
1031 | binary-extensions "^1.0.0"
1032 |
1033 | is-buffer@^1.1.5:
1034 | version "1.1.6"
1035 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
1036 |
1037 | is-ci@^1.0.10:
1038 | version "1.1.0"
1039 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5"
1040 | dependencies:
1041 | ci-info "^1.0.0"
1042 |
1043 | is-data-descriptor@^0.1.4:
1044 | version "0.1.4"
1045 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
1046 | dependencies:
1047 | kind-of "^3.0.2"
1048 |
1049 | is-data-descriptor@^1.0.0:
1050 | version "1.0.0"
1051 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
1052 | dependencies:
1053 | kind-of "^6.0.0"
1054 |
1055 | is-descriptor@^0.1.0:
1056 | version "0.1.6"
1057 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
1058 | dependencies:
1059 | is-accessor-descriptor "^0.1.6"
1060 | is-data-descriptor "^0.1.4"
1061 | kind-of "^5.0.0"
1062 |
1063 | is-descriptor@^1.0.0, is-descriptor@^1.0.2:
1064 | version "1.0.2"
1065 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
1066 | dependencies:
1067 | is-accessor-descriptor "^1.0.0"
1068 | is-data-descriptor "^1.0.0"
1069 | kind-of "^6.0.2"
1070 |
1071 | is-extendable@^0.1.0, is-extendable@^0.1.1:
1072 | version "0.1.1"
1073 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
1074 |
1075 | is-extendable@^1.0.1:
1076 | version "1.0.1"
1077 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
1078 | dependencies:
1079 | is-plain-object "^2.0.4"
1080 |
1081 | is-extglob@^2.1.0, is-extglob@^2.1.1:
1082 | version "2.1.1"
1083 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1084 |
1085 | is-fullwidth-code-point@^1.0.0:
1086 | version "1.0.0"
1087 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
1088 | dependencies:
1089 | number-is-nan "^1.0.0"
1090 |
1091 | is-fullwidth-code-point@^2.0.0:
1092 | version "2.0.0"
1093 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
1094 |
1095 | is-glob@^3.1.0:
1096 | version "3.1.0"
1097 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
1098 | dependencies:
1099 | is-extglob "^2.1.0"
1100 |
1101 | is-glob@^4.0.0:
1102 | version "4.0.0"
1103 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
1104 | dependencies:
1105 | is-extglob "^2.1.1"
1106 |
1107 | is-installed-globally@^0.1.0:
1108 | version "0.1.0"
1109 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
1110 | dependencies:
1111 | global-dirs "^0.1.0"
1112 | is-path-inside "^1.0.0"
1113 |
1114 | is-ip@^2.0.0:
1115 | version "2.0.0"
1116 | resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-2.0.0.tgz#68eea07e8a0a0a94c2d080dd674c731ab2a461ab"
1117 | dependencies:
1118 | ip-regex "^2.0.0"
1119 |
1120 | is-npm@^1.0.0:
1121 | version "1.0.0"
1122 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
1123 |
1124 | is-number@^3.0.0:
1125 | version "3.0.0"
1126 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
1127 | dependencies:
1128 | kind-of "^3.0.2"
1129 |
1130 | is-number@^4.0.0:
1131 | version "4.0.0"
1132 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
1133 |
1134 | is-obj@^1.0.0:
1135 | version "1.0.1"
1136 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
1137 |
1138 | is-odd@^2.0.0:
1139 | version "2.0.0"
1140 | resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24"
1141 | dependencies:
1142 | is-number "^4.0.0"
1143 |
1144 | is-path-inside@^1.0.0:
1145 | version "1.0.1"
1146 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
1147 | dependencies:
1148 | path-is-inside "^1.0.1"
1149 |
1150 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
1151 | version "2.0.4"
1152 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
1153 | dependencies:
1154 | isobject "^3.0.1"
1155 |
1156 | is-redirect@^1.0.0:
1157 | version "1.0.0"
1158 | resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
1159 |
1160 | is-retry-allowed@^1.0.0:
1161 | version "1.1.0"
1162 | resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
1163 |
1164 | is-stream@^1.0.0, is-stream@^1.1.0:
1165 | version "1.1.0"
1166 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
1167 |
1168 | is-windows@^1.0.2:
1169 | version "1.0.2"
1170 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
1171 |
1172 | is-wsl@^1.1.0:
1173 | version "1.1.0"
1174 | resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
1175 |
1176 | isarray@1.0.0, isarray@~1.0.0:
1177 | version "1.0.0"
1178 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1179 |
1180 | isexe@^2.0.0:
1181 | version "2.0.0"
1182 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1183 |
1184 | isobject@^2.0.0:
1185 | version "2.1.0"
1186 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
1187 | dependencies:
1188 | isarray "1.0.0"
1189 |
1190 | isobject@^3.0.0, isobject@^3.0.1:
1191 | version "3.0.1"
1192 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
1193 |
1194 | jmespath@^0.15.0:
1195 | version "0.15.0"
1196 | resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217"
1197 |
1198 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
1199 | version "3.2.2"
1200 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
1201 | dependencies:
1202 | is-buffer "^1.1.5"
1203 |
1204 | kind-of@^4.0.0:
1205 | version "4.0.0"
1206 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
1207 | dependencies:
1208 | is-buffer "^1.1.5"
1209 |
1210 | kind-of@^5.0.0:
1211 | version "5.1.0"
1212 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
1213 |
1214 | kind-of@^6.0.0, kind-of@^6.0.2:
1215 | version "6.0.2"
1216 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
1217 |
1218 | latest-version@^3.0.0:
1219 | version "3.1.0"
1220 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
1221 | dependencies:
1222 | package-json "^4.0.0"
1223 |
1224 | leven@2.1.0:
1225 | version "2.1.0"
1226 | resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
1227 |
1228 | lodash@^4.5.1:
1229 | version "4.17.10"
1230 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
1231 |
1232 | lowercase-keys@^1.0.0:
1233 | version "1.0.1"
1234 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
1235 |
1236 | lru-cache@^4.0.1:
1237 | version "4.1.3"
1238 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c"
1239 | dependencies:
1240 | pseudomap "^1.0.2"
1241 | yallist "^2.1.2"
1242 |
1243 | make-dir@^1.0.0:
1244 | version "1.3.0"
1245 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
1246 | dependencies:
1247 | pify "^3.0.0"
1248 |
1249 | map-cache@^0.2.2:
1250 | version "0.2.2"
1251 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
1252 |
1253 | map-stream@~0.1.0:
1254 | version "0.1.0"
1255 | resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
1256 |
1257 | map-visit@^1.0.0:
1258 | version "1.0.0"
1259 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
1260 | dependencies:
1261 | object-visit "^1.0.0"
1262 |
1263 | media-typer@0.3.0:
1264 | version "0.3.0"
1265 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
1266 |
1267 | merge-descriptors@1.0.1:
1268 | version "1.0.1"
1269 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
1270 |
1271 | methods@^1.1.1, methods@^1.1.2, methods@~1.1.2:
1272 | version "1.1.2"
1273 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
1274 |
1275 | micromatch@^3.1.4:
1276 | version "3.1.10"
1277 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
1278 | dependencies:
1279 | arr-diff "^4.0.0"
1280 | array-unique "^0.3.2"
1281 | braces "^2.3.1"
1282 | define-property "^2.0.2"
1283 | extend-shallow "^3.0.2"
1284 | extglob "^2.0.4"
1285 | fragment-cache "^0.2.1"
1286 | kind-of "^6.0.2"
1287 | nanomatch "^1.2.9"
1288 | object.pick "^1.3.0"
1289 | regex-not "^1.0.0"
1290 | snapdragon "^0.8.1"
1291 | to-regex "^3.0.2"
1292 |
1293 | mime-db@~1.33.0:
1294 | version "1.33.0"
1295 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
1296 |
1297 | mime-types@^2.1.12, mime-types@~2.1.18:
1298 | version "2.1.18"
1299 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
1300 | dependencies:
1301 | mime-db "~1.33.0"
1302 |
1303 | mime@1.4.1:
1304 | version "1.4.1"
1305 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
1306 |
1307 | mime@^1.4.1:
1308 | version "1.6.0"
1309 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
1310 |
1311 | minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4:
1312 | version "3.0.4"
1313 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
1314 | dependencies:
1315 | brace-expansion "^1.1.7"
1316 |
1317 | minimist@0.0.8:
1318 | version "0.0.8"
1319 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
1320 |
1321 | minimist@^1.2.0:
1322 | version "1.2.0"
1323 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
1324 |
1325 | minipass@^2.2.1, minipass@^2.3.3:
1326 | version "2.3.3"
1327 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233"
1328 | dependencies:
1329 | safe-buffer "^5.1.2"
1330 | yallist "^3.0.0"
1331 |
1332 | minizlib@^1.1.0:
1333 | version "1.1.0"
1334 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb"
1335 | dependencies:
1336 | minipass "^2.2.1"
1337 |
1338 | mixin-deep@^1.2.0:
1339 | version "1.3.1"
1340 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
1341 | dependencies:
1342 | for-in "^1.0.2"
1343 | is-extendable "^1.0.1"
1344 |
1345 | mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1:
1346 | version "0.5.1"
1347 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
1348 | dependencies:
1349 | minimist "0.0.8"
1350 |
1351 | mocha@^5.2.0:
1352 | version "5.2.0"
1353 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6"
1354 | dependencies:
1355 | browser-stdout "1.3.1"
1356 | commander "2.15.1"
1357 | debug "3.1.0"
1358 | diff "3.5.0"
1359 | escape-string-regexp "1.0.5"
1360 | glob "7.1.2"
1361 | growl "1.10.5"
1362 | he "1.1.1"
1363 | minimatch "3.0.4"
1364 | mkdirp "0.5.1"
1365 | supports-color "5.4.0"
1366 |
1367 | mri@1.1.0:
1368 | version "1.1.0"
1369 | resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.0.tgz#5c0a3f29c8ccffbbb1ec941dcec09d71fa32f36a"
1370 |
1371 | ms@2.0.0:
1372 | version "2.0.0"
1373 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1374 |
1375 | nan@^2.9.2:
1376 | version "2.10.0"
1377 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
1378 |
1379 | nanomatch@^1.2.9:
1380 | version "1.2.9"
1381 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2"
1382 | dependencies:
1383 | arr-diff "^4.0.0"
1384 | array-unique "^0.3.2"
1385 | define-property "^2.0.2"
1386 | extend-shallow "^3.0.2"
1387 | fragment-cache "^0.2.1"
1388 | is-odd "^2.0.0"
1389 | is-windows "^1.0.2"
1390 | kind-of "^6.0.2"
1391 | object.pick "^1.3.0"
1392 | regex-not "^1.0.0"
1393 | snapdragon "^0.8.1"
1394 | to-regex "^3.0.1"
1395 |
1396 | needle@^2.2.0:
1397 | version "2.2.1"
1398 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d"
1399 | dependencies:
1400 | debug "^2.1.2"
1401 | iconv-lite "^0.4.4"
1402 | sax "^1.2.4"
1403 |
1404 | negotiator@0.6.1:
1405 | version "0.6.1"
1406 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
1407 |
1408 | node-pre-gyp@^0.10.0:
1409 | version "0.10.0"
1410 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46"
1411 | dependencies:
1412 | detect-libc "^1.0.2"
1413 | mkdirp "^0.5.1"
1414 | needle "^2.2.0"
1415 | nopt "^4.0.1"
1416 | npm-packlist "^1.1.6"
1417 | npmlog "^4.0.2"
1418 | rc "^1.1.7"
1419 | rimraf "^2.6.1"
1420 | semver "^5.3.0"
1421 | tar "^4"
1422 |
1423 | nodemon@^1.17.5:
1424 | version "1.17.5"
1425 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.17.5.tgz#e6a665c872fdf09d48bf2a81f3e85f8cfb39322a"
1426 | dependencies:
1427 | chokidar "^2.0.2"
1428 | debug "^3.1.0"
1429 | ignore-by-default "^1.0.1"
1430 | minimatch "^3.0.4"
1431 | pstree.remy "^1.1.0"
1432 | semver "^5.5.0"
1433 | supports-color "^5.2.0"
1434 | touch "^3.1.0"
1435 | undefsafe "^2.0.2"
1436 | update-notifier "^2.3.0"
1437 |
1438 | nopt@^4.0.1:
1439 | version "4.0.1"
1440 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
1441 | dependencies:
1442 | abbrev "1"
1443 | osenv "^0.1.4"
1444 |
1445 | nopt@~1.0.10:
1446 | version "1.0.10"
1447 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
1448 | dependencies:
1449 | abbrev "1"
1450 |
1451 | normalize-path@^2.1.1:
1452 | version "2.1.1"
1453 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
1454 | dependencies:
1455 | remove-trailing-separator "^1.0.1"
1456 |
1457 | npm-bundled@^1.0.1:
1458 | version "1.0.3"
1459 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308"
1460 |
1461 | npm-packlist@^1.1.6:
1462 | version "1.1.10"
1463 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a"
1464 | dependencies:
1465 | ignore-walk "^3.0.1"
1466 | npm-bundled "^1.0.1"
1467 |
1468 | npm-run-path@^2.0.0:
1469 | version "2.0.2"
1470 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
1471 | dependencies:
1472 | path-key "^2.0.0"
1473 |
1474 | npmlog@^4.0.2:
1475 | version "4.1.2"
1476 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
1477 | dependencies:
1478 | are-we-there-yet "~1.1.2"
1479 | console-control-strings "~1.1.0"
1480 | gauge "~2.7.3"
1481 | set-blocking "~2.0.0"
1482 |
1483 | number-is-nan@^1.0.0:
1484 | version "1.0.1"
1485 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
1486 |
1487 | object-assign@^4.1.0:
1488 | version "4.1.1"
1489 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1490 |
1491 | object-copy@^0.1.0:
1492 | version "0.1.0"
1493 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
1494 | dependencies:
1495 | copy-descriptor "^0.1.0"
1496 | define-property "^0.2.5"
1497 | kind-of "^3.0.3"
1498 |
1499 | object-visit@^1.0.0:
1500 | version "1.0.1"
1501 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
1502 | dependencies:
1503 | isobject "^3.0.0"
1504 |
1505 | object.pick@^1.3.0:
1506 | version "1.3.0"
1507 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
1508 | dependencies:
1509 | isobject "^3.0.1"
1510 |
1511 | on-finished@~2.3.0:
1512 | version "2.3.0"
1513 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
1514 | dependencies:
1515 | ee-first "1.1.1"
1516 |
1517 | once@^1.3.0, once@^1.3.1, once@^1.4.0:
1518 | version "1.4.0"
1519 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1520 | dependencies:
1521 | wrappy "1"
1522 |
1523 | opn@^5.3.0:
1524 | version "5.3.0"
1525 | resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c"
1526 | dependencies:
1527 | is-wsl "^1.1.0"
1528 |
1529 | os-homedir@^1.0.0:
1530 | version "1.0.2"
1531 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
1532 |
1533 | os-tmpdir@^1.0.0:
1534 | version "1.0.2"
1535 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
1536 |
1537 | osenv@^0.1.4:
1538 | version "0.1.5"
1539 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
1540 | dependencies:
1541 | os-homedir "^1.0.0"
1542 | os-tmpdir "^1.0.0"
1543 |
1544 | p-finally@^1.0.0:
1545 | version "1.0.0"
1546 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
1547 |
1548 | package-json@^4.0.0:
1549 | version "4.0.1"
1550 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
1551 | dependencies:
1552 | got "^6.7.1"
1553 | registry-auth-token "^3.0.1"
1554 | registry-url "^3.0.3"
1555 | semver "^5.1.0"
1556 |
1557 | parseurl@~1.3.2:
1558 | version "1.3.2"
1559 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
1560 |
1561 | pascalcase@^0.1.1:
1562 | version "0.1.1"
1563 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
1564 |
1565 | path-dirname@^1.0.0:
1566 | version "1.0.2"
1567 | resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
1568 |
1569 | path-is-absolute@^1.0.0:
1570 | version "1.0.1"
1571 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1572 |
1573 | path-is-inside@^1.0.1:
1574 | version "1.0.2"
1575 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
1576 |
1577 | path-key@^2.0.0:
1578 | version "2.0.1"
1579 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
1580 |
1581 | path-to-regexp@0.1.7:
1582 | version "0.1.7"
1583 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
1584 |
1585 | pathval@^1.0.0:
1586 | version "1.1.0"
1587 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
1588 |
1589 | pause-stream@0.0.11:
1590 | version "0.0.11"
1591 | resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
1592 | dependencies:
1593 | through "~2.3"
1594 |
1595 | pify@^3.0.0:
1596 | version "3.0.0"
1597 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
1598 |
1599 | pino-http@^3.0.1:
1600 | version "3.2.2"
1601 | resolved "https://registry.yarnpkg.com/pino-http/-/pino-http-3.2.2.tgz#c4ea2d6f14b6f496c956b0687bc5fb36462c1a43"
1602 | dependencies:
1603 | pino "^4.10.2"
1604 | pino-std-serializers "^1.0.0"
1605 |
1606 | "pino-pretty@https://github.com/pinojs/pino-pretty.git#v2.0.0-rc.1":
1607 | version "2.0.0-rc.1"
1608 | resolved "https://github.com/pinojs/pino-pretty.git#a6de664492ca19eee1410302588a46607aba999d"
1609 | dependencies:
1610 | args "^4.0.0"
1611 | chalk "^2.3.2"
1612 | dateformat "^3.0.3"
1613 | fast-json-parse "^1.0.3"
1614 | jmespath "^0.15.0"
1615 | pump "^3.0.0"
1616 | split2 "^2.2.0"
1617 | through2 "^2.0.3"
1618 |
1619 | pino-std-serializers@^1.0.0:
1620 | version "1.2.0"
1621 | resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-1.2.0.tgz#ae5525560bb99b9a84661e809941a3cee796a725"
1622 |
1623 | pino-std-serializers@^2.0.0:
1624 | version "2.1.0"
1625 | resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-2.1.0.tgz#01953dcaecd5f43b331ecf2e312a49c9fd64851c"
1626 |
1627 | pino@^4.10.2:
1628 | version "4.17.1"
1629 | resolved "https://registry.yarnpkg.com/pino/-/pino-4.17.1.tgz#cb586a99388e8edfa7eb917471dded9e4bbaafa2"
1630 | dependencies:
1631 | chalk "^2.4.1"
1632 | fast-json-parse "^1.0.3"
1633 | fast-safe-stringify "^1.2.3"
1634 | flatstr "^1.0.5"
1635 | pino-std-serializers "^2.0.0"
1636 | pump "^3.0.0"
1637 | quick-format-unescaped "^1.1.2"
1638 | split2 "^2.2.0"
1639 |
1640 | pino@^4.17.3:
1641 | version "4.17.3"
1642 | resolved "https://registry.yarnpkg.com/pino/-/pino-4.17.3.tgz#3536ea36f6258356ba8891d18dbf1afed41fcf09"
1643 | dependencies:
1644 | chalk "^2.4.1"
1645 | fast-json-parse "^1.0.3"
1646 | fast-safe-stringify "^1.2.3"
1647 | flatstr "^1.0.5"
1648 | pino-std-serializers "^2.0.0"
1649 | pump "^3.0.0"
1650 | quick-format-unescaped "^1.1.2"
1651 | split2 "^2.2.0"
1652 |
1653 | posix-character-classes@^0.1.0:
1654 | version "0.1.1"
1655 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
1656 |
1657 | prepend-http@^1.0.1:
1658 | version "1.0.4"
1659 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
1660 |
1661 | prettier@^1.13.5:
1662 | version "1.13.5"
1663 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.5.tgz#7ae2076998c8edce79d63834e9b7b09fead6bfd0"
1664 |
1665 | process-nextick-args@~2.0.0:
1666 | version "2.0.0"
1667 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
1668 |
1669 | proxy-addr@~2.0.3:
1670 | version "2.0.3"
1671 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341"
1672 | dependencies:
1673 | forwarded "~0.1.2"
1674 | ipaddr.js "1.6.0"
1675 |
1676 | ps-tree@^1.1.0:
1677 | version "1.1.0"
1678 | resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014"
1679 | dependencies:
1680 | event-stream "~3.3.0"
1681 |
1682 | pseudomap@^1.0.2:
1683 | version "1.0.2"
1684 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
1685 |
1686 | pstree.remy@^1.1.0:
1687 | version "1.1.0"
1688 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.0.tgz#f2af27265bd3e5b32bbfcc10e80bac55ba78688b"
1689 | dependencies:
1690 | ps-tree "^1.1.0"
1691 |
1692 | pump@^3.0.0:
1693 | version "3.0.0"
1694 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
1695 | dependencies:
1696 | end-of-stream "^1.1.0"
1697 | once "^1.3.1"
1698 |
1699 | qs@6.5.1:
1700 | version "6.5.1"
1701 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
1702 |
1703 | qs@6.5.2, qs@^6.5.1:
1704 | version "6.5.2"
1705 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
1706 |
1707 | quick-format-unescaped@^1.1.2:
1708 | version "1.1.2"
1709 | resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-1.1.2.tgz#0ca581de3174becef25ac3c2e8956342381db698"
1710 | dependencies:
1711 | fast-safe-stringify "^1.0.8"
1712 |
1713 | range-parser@~1.2.0:
1714 | version "1.2.0"
1715 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
1716 |
1717 | raw-body@2.3.2:
1718 | version "2.3.2"
1719 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
1720 | dependencies:
1721 | bytes "3.0.0"
1722 | http-errors "1.6.2"
1723 | iconv-lite "0.4.19"
1724 | unpipe "1.0.0"
1725 |
1726 | raw-body@2.3.3:
1727 | version "2.3.3"
1728 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
1729 | dependencies:
1730 | bytes "3.0.0"
1731 | http-errors "1.6.3"
1732 | iconv-lite "0.4.23"
1733 | unpipe "1.0.0"
1734 |
1735 | rc@^1.0.1, rc@^1.1.6, rc@^1.1.7:
1736 | version "1.2.8"
1737 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
1738 | dependencies:
1739 | deep-extend "^0.6.0"
1740 | ini "~1.3.0"
1741 | minimist "^1.2.0"
1742 | strip-json-comments "~2.0.1"
1743 |
1744 | readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.3.5:
1745 | version "2.3.6"
1746 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
1747 | dependencies:
1748 | core-util-is "~1.0.0"
1749 | inherits "~2.0.3"
1750 | isarray "~1.0.0"
1751 | process-nextick-args "~2.0.0"
1752 | safe-buffer "~5.1.1"
1753 | string_decoder "~1.1.1"
1754 | util-deprecate "~1.0.1"
1755 |
1756 | readdirp@^2.0.0:
1757 | version "2.1.0"
1758 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
1759 | dependencies:
1760 | graceful-fs "^4.1.2"
1761 | minimatch "^3.0.2"
1762 | readable-stream "^2.0.2"
1763 | set-immediate-shim "^1.0.1"
1764 |
1765 | regex-not@^1.0.0, regex-not@^1.0.2:
1766 | version "1.0.2"
1767 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
1768 | dependencies:
1769 | extend-shallow "^3.0.2"
1770 | safe-regex "^1.1.0"
1771 |
1772 | registry-auth-token@^3.0.1:
1773 | version "3.3.2"
1774 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20"
1775 | dependencies:
1776 | rc "^1.1.6"
1777 | safe-buffer "^5.0.1"
1778 |
1779 | registry-url@^3.0.3:
1780 | version "3.1.0"
1781 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942"
1782 | dependencies:
1783 | rc "^1.0.1"
1784 |
1785 | remove-trailing-separator@^1.0.1:
1786 | version "1.1.0"
1787 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
1788 |
1789 | repeat-element@^1.1.2:
1790 | version "1.1.2"
1791 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
1792 |
1793 | repeat-string@^1.6.1:
1794 | version "1.6.1"
1795 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
1796 |
1797 | resolve-url@^0.2.1:
1798 | version "0.2.1"
1799 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
1800 |
1801 | ret@~0.1.10:
1802 | version "0.1.15"
1803 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
1804 |
1805 | rimraf@^2.6.1, rimraf@^2.6.2:
1806 | version "2.6.2"
1807 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
1808 | dependencies:
1809 | glob "^7.0.5"
1810 |
1811 | rx@2.3.24:
1812 | version "2.3.24"
1813 | resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7"
1814 |
1815 | safe-buffer@5.1.1:
1816 | version "5.1.1"
1817 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
1818 |
1819 | safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
1820 | version "5.1.2"
1821 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
1822 |
1823 | safe-regex@^1.1.0:
1824 | version "1.1.0"
1825 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
1826 | dependencies:
1827 | ret "~0.1.10"
1828 |
1829 | "safer-buffer@>= 2.1.2 < 3":
1830 | version "2.1.2"
1831 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
1832 |
1833 | sax@^1.2.4:
1834 | version "1.2.4"
1835 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
1836 |
1837 | semver-diff@^2.0.0:
1838 | version "2.1.0"
1839 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
1840 | dependencies:
1841 | semver "^5.0.3"
1842 |
1843 | semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5.0:
1844 | version "5.5.0"
1845 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
1846 |
1847 | send@0.16.2:
1848 | version "0.16.2"
1849 | resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
1850 | dependencies:
1851 | debug "2.6.9"
1852 | depd "~1.1.2"
1853 | destroy "~1.0.4"
1854 | encodeurl "~1.0.2"
1855 | escape-html "~1.0.3"
1856 | etag "~1.8.1"
1857 | fresh "0.5.2"
1858 | http-errors "~1.6.2"
1859 | mime "1.4.1"
1860 | ms "2.0.0"
1861 | on-finished "~2.3.0"
1862 | range-parser "~1.2.0"
1863 | statuses "~1.4.0"
1864 |
1865 | serve-static@1.13.2:
1866 | version "1.13.2"
1867 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
1868 | dependencies:
1869 | encodeurl "~1.0.2"
1870 | escape-html "~1.0.3"
1871 | parseurl "~1.3.2"
1872 | send "0.16.2"
1873 |
1874 | set-blocking@~2.0.0:
1875 | version "2.0.0"
1876 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
1877 |
1878 | set-immediate-shim@^1.0.1:
1879 | version "1.0.1"
1880 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
1881 |
1882 | set-value@^0.4.3:
1883 | version "0.4.3"
1884 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
1885 | dependencies:
1886 | extend-shallow "^2.0.1"
1887 | is-extendable "^0.1.1"
1888 | is-plain-object "^2.0.1"
1889 | to-object-path "^0.3.0"
1890 |
1891 | set-value@^2.0.0:
1892 | version "2.0.0"
1893 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
1894 | dependencies:
1895 | extend-shallow "^2.0.1"
1896 | is-extendable "^0.1.1"
1897 | is-plain-object "^2.0.3"
1898 | split-string "^3.0.1"
1899 |
1900 | setprototypeof@1.0.3:
1901 | version "1.0.3"
1902 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
1903 |
1904 | setprototypeof@1.1.0:
1905 | version "1.1.0"
1906 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
1907 |
1908 | shebang-command@^1.2.0:
1909 | version "1.2.0"
1910 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
1911 | dependencies:
1912 | shebang-regex "^1.0.0"
1913 |
1914 | shebang-regex@^1.0.0:
1915 | version "1.0.0"
1916 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
1917 |
1918 | signal-exit@^3.0.0, signal-exit@^3.0.2:
1919 | version "3.0.2"
1920 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
1921 |
1922 | snapdragon-node@^2.0.1:
1923 | version "2.1.1"
1924 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
1925 | dependencies:
1926 | define-property "^1.0.0"
1927 | isobject "^3.0.0"
1928 | snapdragon-util "^3.0.1"
1929 |
1930 | snapdragon-util@^3.0.1:
1931 | version "3.0.1"
1932 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
1933 | dependencies:
1934 | kind-of "^3.2.0"
1935 |
1936 | snapdragon@^0.8.1:
1937 | version "0.8.2"
1938 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
1939 | dependencies:
1940 | base "^0.11.1"
1941 | debug "^2.2.0"
1942 | define-property "^0.2.5"
1943 | extend-shallow "^2.0.1"
1944 | map-cache "^0.2.2"
1945 | source-map "^0.5.6"
1946 | source-map-resolve "^0.5.0"
1947 | use "^3.1.0"
1948 |
1949 | source-map-resolve@^0.5.0:
1950 | version "0.5.2"
1951 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
1952 | dependencies:
1953 | atob "^2.1.1"
1954 | decode-uri-component "^0.2.0"
1955 | resolve-url "^0.2.1"
1956 | source-map-url "^0.4.0"
1957 | urix "^0.1.0"
1958 |
1959 | source-map-support@^0.5.6:
1960 | version "0.5.6"
1961 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13"
1962 | dependencies:
1963 | buffer-from "^1.0.0"
1964 | source-map "^0.6.0"
1965 |
1966 | source-map-url@^0.4.0:
1967 | version "0.4.0"
1968 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
1969 |
1970 | source-map@^0.5.6:
1971 | version "0.5.7"
1972 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
1973 |
1974 | source-map@^0.6.0:
1975 | version "0.6.1"
1976 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
1977 |
1978 | spawn-command@^0.0.2-1:
1979 | version "0.0.2-1"
1980 | resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0"
1981 |
1982 | split-string@^3.0.1, split-string@^3.0.2:
1983 | version "3.1.0"
1984 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
1985 | dependencies:
1986 | extend-shallow "^3.0.0"
1987 |
1988 | split2@^2.2.0:
1989 | version "2.2.0"
1990 | resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493"
1991 | dependencies:
1992 | through2 "^2.0.2"
1993 |
1994 | split@0.3:
1995 | version "0.3.3"
1996 | resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
1997 | dependencies:
1998 | through "2"
1999 |
2000 | static-extend@^0.1.1:
2001 | version "0.1.2"
2002 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
2003 | dependencies:
2004 | define-property "^0.2.5"
2005 | object-copy "^0.1.0"
2006 |
2007 | "statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2":
2008 | version "1.5.0"
2009 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
2010 |
2011 | statuses@~1.4.0:
2012 | version "1.4.0"
2013 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
2014 |
2015 | stream-combiner@~0.0.4:
2016 | version "0.0.4"
2017 | resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14"
2018 | dependencies:
2019 | duplexer "~0.1.1"
2020 |
2021 | string-width@^1.0.1:
2022 | version "1.0.2"
2023 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
2024 | dependencies:
2025 | code-point-at "^1.0.0"
2026 | is-fullwidth-code-point "^1.0.0"
2027 | strip-ansi "^3.0.0"
2028 |
2029 | "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1:
2030 | version "2.1.1"
2031 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
2032 | dependencies:
2033 | is-fullwidth-code-point "^2.0.0"
2034 | strip-ansi "^4.0.0"
2035 |
2036 | string_decoder@~1.1.1:
2037 | version "1.1.1"
2038 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
2039 | dependencies:
2040 | safe-buffer "~5.1.0"
2041 |
2042 | strip-ansi@^0.3.0:
2043 | version "0.3.0"
2044 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220"
2045 | dependencies:
2046 | ansi-regex "^0.2.1"
2047 |
2048 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
2049 | version "3.0.1"
2050 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
2051 | dependencies:
2052 | ansi-regex "^2.0.0"
2053 |
2054 | strip-ansi@^4.0.0:
2055 | version "4.0.0"
2056 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
2057 | dependencies:
2058 | ansi-regex "^3.0.0"
2059 |
2060 | strip-eof@^1.0.0:
2061 | version "1.0.0"
2062 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
2063 |
2064 | strip-json-comments@~2.0.1:
2065 | version "2.0.1"
2066 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
2067 |
2068 | superagent@^3.7.0:
2069 | version "3.8.3"
2070 | resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128"
2071 | dependencies:
2072 | component-emitter "^1.2.0"
2073 | cookiejar "^2.1.0"
2074 | debug "^3.1.0"
2075 | extend "^3.0.0"
2076 | form-data "^2.3.1"
2077 | formidable "^1.2.0"
2078 | methods "^1.1.1"
2079 | mime "^1.4.1"
2080 | qs "^6.5.1"
2081 | readable-stream "^2.3.5"
2082 |
2083 | supports-color@5.4.0, supports-color@^5.2.0, supports-color@^5.3.0:
2084 | version "5.4.0"
2085 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
2086 | dependencies:
2087 | has-flag "^3.0.0"
2088 |
2089 | supports-color@^0.2.0:
2090 | version "0.2.0"
2091 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
2092 |
2093 | supports-color@^3.2.3:
2094 | version "3.2.3"
2095 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
2096 | dependencies:
2097 | has-flag "^1.0.0"
2098 |
2099 | tar@^4:
2100 | version "4.4.4"
2101 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd"
2102 | dependencies:
2103 | chownr "^1.0.1"
2104 | fs-minipass "^1.2.5"
2105 | minipass "^2.3.3"
2106 | minizlib "^1.1.0"
2107 | mkdirp "^0.5.0"
2108 | safe-buffer "^5.1.2"
2109 | yallist "^3.0.2"
2110 |
2111 | term-size@^1.2.0:
2112 | version "1.2.0"
2113 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
2114 | dependencies:
2115 | execa "^0.7.0"
2116 |
2117 | through2@^2.0.2, through2@^2.0.3:
2118 | version "2.0.3"
2119 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
2120 | dependencies:
2121 | readable-stream "^2.1.5"
2122 | xtend "~4.0.1"
2123 |
2124 | through@2, through@~2.3, through@~2.3.1:
2125 | version "2.3.8"
2126 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
2127 |
2128 | timed-out@^4.0.0:
2129 | version "4.0.1"
2130 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
2131 |
2132 | to-object-path@^0.3.0:
2133 | version "0.3.0"
2134 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
2135 | dependencies:
2136 | kind-of "^3.0.2"
2137 |
2138 | to-regex-range@^2.1.0:
2139 | version "2.1.1"
2140 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
2141 | dependencies:
2142 | is-number "^3.0.0"
2143 | repeat-string "^1.6.1"
2144 |
2145 | to-regex@^3.0.1, to-regex@^3.0.2:
2146 | version "3.0.2"
2147 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
2148 | dependencies:
2149 | define-property "^2.0.2"
2150 | extend-shallow "^3.0.2"
2151 | regex-not "^1.0.2"
2152 | safe-regex "^1.1.0"
2153 |
2154 | touch@^3.1.0:
2155 | version "3.1.0"
2156 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b"
2157 | dependencies:
2158 | nopt "~1.0.10"
2159 |
2160 | tree-kill@^1.1.0:
2161 | version "1.2.0"
2162 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36"
2163 |
2164 | type-detect@^4.0.0:
2165 | version "4.0.8"
2166 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
2167 |
2168 | type-is@~1.6.15, type-is@~1.6.16:
2169 | version "1.6.16"
2170 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
2171 | dependencies:
2172 | media-typer "0.3.0"
2173 | mime-types "~2.1.18"
2174 |
2175 | typescript@^2.9.1:
2176 | version "2.9.1"
2177 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.1.tgz#fdb19d2c67a15d11995fd15640e373e09ab09961"
2178 |
2179 | undefsafe@^2.0.2:
2180 | version "2.0.2"
2181 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76"
2182 | dependencies:
2183 | debug "^2.2.0"
2184 |
2185 | union-value@^1.0.0:
2186 | version "1.0.0"
2187 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
2188 | dependencies:
2189 | arr-union "^3.1.0"
2190 | get-value "^2.0.6"
2191 | is-extendable "^0.1.1"
2192 | set-value "^0.4.3"
2193 |
2194 | unique-string@^1.0.0:
2195 | version "1.0.0"
2196 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
2197 | dependencies:
2198 | crypto-random-string "^1.0.0"
2199 |
2200 | unpipe@1.0.0, unpipe@~1.0.0:
2201 | version "1.0.0"
2202 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
2203 |
2204 | unset-value@^1.0.0:
2205 | version "1.0.0"
2206 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
2207 | dependencies:
2208 | has-value "^0.3.1"
2209 | isobject "^3.0.0"
2210 |
2211 | unzip-response@^2.0.1:
2212 | version "2.0.1"
2213 | resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
2214 |
2215 | upath@^1.0.0:
2216 | version "1.1.0"
2217 | resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
2218 |
2219 | update-notifier@^2.3.0:
2220 | version "2.5.0"
2221 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6"
2222 | dependencies:
2223 | boxen "^1.2.1"
2224 | chalk "^2.0.1"
2225 | configstore "^3.0.0"
2226 | import-lazy "^2.1.0"
2227 | is-ci "^1.0.10"
2228 | is-installed-globally "^0.1.0"
2229 | is-npm "^1.0.0"
2230 | latest-version "^3.0.0"
2231 | semver-diff "^2.0.0"
2232 | xdg-basedir "^3.0.0"
2233 |
2234 | urix@^0.1.0:
2235 | version "0.1.0"
2236 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
2237 |
2238 | url-parse-lax@^1.0.0:
2239 | version "1.0.0"
2240 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
2241 | dependencies:
2242 | prepend-http "^1.0.1"
2243 |
2244 | use@^3.1.0:
2245 | version "3.1.0"
2246 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544"
2247 | dependencies:
2248 | kind-of "^6.0.2"
2249 |
2250 | util-deprecate@~1.0.1:
2251 | version "1.0.2"
2252 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
2253 |
2254 | utils-merge@1.0.1:
2255 | version "1.0.1"
2256 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
2257 |
2258 | vary@~1.1.2:
2259 | version "1.1.2"
2260 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
2261 |
2262 | which@^1.2.9:
2263 | version "1.3.1"
2264 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
2265 | dependencies:
2266 | isexe "^2.0.0"
2267 |
2268 | wide-align@^1.1.0:
2269 | version "1.1.3"
2270 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
2271 | dependencies:
2272 | string-width "^1.0.2 || 2"
2273 |
2274 | widest-line@^2.0.0:
2275 | version "2.0.0"
2276 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273"
2277 | dependencies:
2278 | string-width "^2.1.1"
2279 |
2280 | wrappy@1:
2281 | version "1.0.2"
2282 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2283 |
2284 | write-file-atomic@^2.0.0:
2285 | version "2.3.0"
2286 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab"
2287 | dependencies:
2288 | graceful-fs "^4.1.11"
2289 | imurmurhash "^0.1.4"
2290 | signal-exit "^3.0.2"
2291 |
2292 | xdg-basedir@^3.0.0:
2293 | version "3.0.0"
2294 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
2295 |
2296 | xtend@~4.0.1:
2297 | version "4.0.1"
2298 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
2299 |
2300 | yallist@^2.1.2:
2301 | version "2.1.2"
2302 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
2303 |
2304 | yallist@^3.0.0, yallist@^3.0.2:
2305 | version "3.0.2"
2306 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
2307 |
--------------------------------------------------------------------------------