├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .prettierrc.js ├── .travis.yml ├── LICENSE.md ├── README.md ├── base ├── Dockerfile └── alpine │ └── Dockerfile ├── bin ├── base.js ├── build.js ├── constants.js ├── strapi.js └── utils.js ├── examples ├── custom-with-run │ ├── Dockerfile │ └── run.sh ├── custom │ ├── .dockerignore │ └── Dockerfile ├── mongo │ └── docker-compose.yml ├── mysql │ └── docker-compose.yml ├── postgresql │ └── docker-compose.yml └── prod │ └── docker-compose.yml ├── package.json ├── strapi ├── Dockerfile └── docker-entrypoint.sh └── yarn.lock /.eslintignore: -------------------------------------------------------------------------------- 1 | examples -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | commonjs: true, 4 | es6: true, 5 | node: true, 6 | }, 7 | extends: 'eslint:recommended', 8 | globals: { 9 | Atomics: 'readonly', 10 | SharedArrayBuffer: 'readonly', 11 | }, 12 | parserOptions: { 13 | ecmaVersion: 2018, 14 | }, 15 | rules: {}, 16 | }; 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | app 2 | db 3 | node_modules -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | endOfLine: 'lf', 3 | semi: true, 4 | singleQuote: true, 5 | tabWidth: 2, 6 | trailingComma: 'es5', 7 | printWidth: 100, 8 | }; 9 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 12 4 | 5 | sudo: required 6 | 7 | services: 8 | - docker 9 | 10 | script: 11 | - ./bin/build.js --type=all 12 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015-2019 Strapi Solutions. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [Strapi](https://github.com/strapi/strapi) containerized 2 | 3 | > ⚠️ This image is only for Strapi v3. For now, we will not update it for v4. 4 | > 5 | > However, to build an image compatible with Strapi v4, we recommend you check out this tool created by the Strapi Community: https://github.com/strapi-community/strapi-tool-dockerize 6 |
7 | 8 | ![Strapi](https://cldup.com/7umchwdUBh.png) 9 | 10 | API creation made simple, secure and fast. 11 | The most advanced open-source Content Management Framework to build powerful API with no effort. 12 | 13 | --- 14 | 15 | [![Travis](https://img.shields.io/travis/com/strapi/strapi-docker.svg?style=for-the-badge)](https://app.travis-ci.com/github/strapi/strapi-docker) 16 | [![Docker Pulls](https://img.shields.io/docker/pulls/strapi/strapi.svg?style=for-the-badge)](https://hub.docker.com/r/strapi/strapi) 17 | 18 | ## Images 19 | 20 | Strapi comes with two images: `strapi/strapi` and `strapi/base`. 21 | 22 | Use [`strapi/strapi`](#how-to-use-strapistrapi) to create a new project or run a project on your host machine. 23 | 24 | Use [`strapi/base`](#how-to-use-strapibase) to build a Dockerfile and create an image for your app. 25 | 26 | ## How to use `strapi/strapi` 27 | 28 | This image allows you to create a new strapi project or run a project from your host machine. The default command that will run in your project is [`strapi develop`](https://strapi.io/documentation/v3.x/cli/CLI.html#strapi-develop-dev). 29 | 30 | ### Creating a new project 31 | 32 | When running this image, strapi will check if there is a project in the `/srv/app` folder of the container. If there is nothing then it will run the [`strapi new`](https://strapi.io/documentation/developer-docs/latest/developer-resources/cli/CLI.html#strapi-new) command in the container /srv/app folder. You can create a new project by running this command. 33 | 34 | ```bash 35 | docker run -it -p 1337:1337 -v `pwd`/project-name:/srv/app strapi/strapi 36 | ``` 37 | 38 | This command creates a project with an SQLite database. Then starts it on port `1337`. 39 | 40 | The `-v` option creates a `project-name` folder on your computer that will be shared with the docker container. 41 | Once the project is created it will be available in this folder on your computer. 42 | 43 | **Environment variables** 44 | 45 | When creating a new project with this image you can pass database configurations to the [`strapi new`](https://strapi.io/documentation/developer-docs/latest/developer-resources/cli/CLI.html#strapi-new) command. 46 | 47 | - `DATABASE_CLIENT` a database provider supported by Strapi: (sqlite, postgres, mysql ,mongo). 48 | - `DATABASE_HOST` database host. 49 | - `DATABASE_PORT` database port. 50 | - `DATABASE_NAME` database name. 51 | - `DATABASE_USERNAME` database username. 52 | - `DATABASE_PASSWORD` database password. 53 | - `DATABASE_SSL` boolean for SSL. 54 | - `EXTRA_ARGS` pass extra args to the [`strapi new`](https://strapi.io/documentation/developer-docs/latest/developer-resources/cli/CLI.html#strapi-new). 55 | 56 | **Example** 57 | 58 | You can create a strapi project that will connect to a remote postgres database like so: 59 | 60 | ```bash 61 | docker run -it \ 62 | -e DATABASE_CLIENT=postgres \ 63 | -e DATABASE_NAME=strapi \ 64 | -e DATABASE_HOST=0.0.0.0 \ 65 | -e DATABASE_PORT=5432 \ 66 | -e DATABASE_USERNAME=strapi \ 67 | -e DATABASE_PASSWORD=strapi \ 68 | -p 1337:1337 \ 69 | -v `pwd`/project-name:/srv/app \ 70 | strapi/strapi 71 | ``` 72 | 73 | You can also create projects using docker-compose. See examples of using these variables with docker-compose in the [examples folder](./examples). 74 | 75 | ### Running a project from your host machine 76 | 77 | You can also use `strapi/strapi` to run a project you already have created (or cloned for a repo) on your computer. 78 | 79 | First make sure to delete the `node_modules` folder if you have already installed your dependencies on your host machine. Then run: 80 | 81 | ```bash 82 | cd my-project 83 | docker run -it -p 1337:1337 -v `pwd`:/srv/app strapi/strapi 84 | ``` 85 | 86 | This will start by installing the dependencies and then run `strapi develop` in the project. 87 | 88 | **Environment variables** 89 | 90 | If you are using environment variables in your code you can pass them with the -e option (e.g `docker run -e ENV_VAR=sth ...`). 91 | 92 | You can for example set your database configuration with environment variables. 93 | Because the default container command is [`strapi develop`](https://strapi.io/documentation/v3.x/cli/CLI.html#strapi-develop-dev) you will need to update your `development` database configuration following the `production` example in the [documentation](https://strapi.io/documentation/v3.x/concepts/configurations.html#dynamic-configurations). Then you can run: 94 | 95 | ```bash 96 | docker run -it \ 97 | -e DATABASE_NAME=strapi \ 98 | -e DATABASE_HOST=0.0.0.0 \ 99 | -e DATABASE_PORT=1234 \ 100 | -e DATABASE_USERNAME=strapi \ 101 | -e DATABASE_PASSWORD=strapi \ 102 | -p 1337:1337 \ 103 | -v `pwd`/project-name:/srv/app \ 104 | strapi/strapi 105 | ``` 106 | 107 | 108 | ### Upgrading Strapi in Docker container 109 | 110 | - **Important!** Upgrading `strapi/strapi` Docker image tag **does not** upgrade Strapi version. 111 | - Strapi NodeJS application builds itself during first startup only, if detects empty folder and is normally stored in mounted volume. See [docker-entrypoint.sh](https://github.com/strapi/strapi-docker/blob/master/strapi/docker-entrypoint.sh). 112 | - To upgrade, first follow the guides ([general](https://strapi.io/documentation/developer-docs/latest/guides/update-version.html) and [version-specific](https://strapi.io/documentation/developer-docs/latest/migration-guide/)) to rebuild actual Strapi NodeJS application. Secondly, update docker tag to match the version to avoid confusion. 113 | 114 | ## How to use `strapi/base` 115 | 116 | When deploying a strapi application to production you can use docker to package your whole app in an image. You can create a Dockerfile in your strapi project like the one in [`./examples/custom`](./examples/custom) 117 | 118 | ## Building the images in this repository 119 | 120 | You can build the images with the build command. To see the options run: 121 | 122 | ``` 123 | yarn install 124 | ./bin/build.js --help 125 | ``` 126 | -------------------------------------------------------------------------------- /base/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG NODE_VERSION 2 | FROM node:${NODE_VERSION} 3 | 4 | EXPOSE 1337 5 | -------------------------------------------------------------------------------- /base/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG NODE_VERSION 2 | FROM node:${NODE_VERSION} 3 | 4 | RUN apk add --no-cache build-base gcc autoconf automake zlib-dev libpng-dev nasm bash 5 | 6 | EXPOSE 1337 7 | -------------------------------------------------------------------------------- /bin/base.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { execDocker } = require('./utils'); 4 | const { NODE_VERSIONS, BASE_IMAGE_NAME, LATEST_NODE_VERSION } = require('./constants'); 5 | 6 | module.exports = { 7 | buildBaseImages, 8 | }; 9 | 10 | async function buildBaseImages({ shouldPush = false } = {}) { 11 | const createdTags = []; 12 | for (const nodeVersion of NODE_VERSIONS) { 13 | const tags = await buildBaseImage({ nodeVersion, shouldPush }); 14 | const alpineTags = await buildBaseImage({ 15 | nodeVersion, 16 | alpine: true, 17 | shouldPush, 18 | }); 19 | 20 | createdTags.push(...tags, ...alpineTags); 21 | } 22 | 23 | return createdTags.map(tag => `${BASE_IMAGE_NAME}:${tag}`); 24 | } 25 | 26 | async function buildBaseImage({ nodeVersion, alpine, shouldPush = false }) { 27 | let tmpImg = `${BASE_IMAGE_NAME}:tmp`; 28 | 29 | await execDocker([ 30 | 'build', 31 | '--build-arg', 32 | `NODE_VERSION=${nodeVersion}${alpine ? '-alpine' : ''}`, 33 | '-t', 34 | tmpImg, 35 | `./base${alpine ? '/alpine' : ''}`, 36 | ]); 37 | 38 | const tags = buildBaseTags({ nodeVersion, alpine }); 39 | 40 | for (const tag of tags) { 41 | await execDocker(['tag', tmpImg, `${BASE_IMAGE_NAME}:${tag}`]); 42 | 43 | if (shouldPush) { 44 | await execDocker(['push', `${BASE_IMAGE_NAME}:${tag}`]); 45 | } 46 | } 47 | 48 | await execDocker(['image', 'rm', tmpImg]); 49 | return tags; 50 | } 51 | 52 | function buildBaseTags({ nodeVersion, alpine = false }) { 53 | let tags = []; 54 | 55 | tags.push(`${nodeVersion}${alpine ? '-alpine' : ''}`); 56 | 57 | if (nodeVersion === LATEST_NODE_VERSION && !alpine) { 58 | tags.push('latest'); 59 | } else if (nodeVersion === LATEST_NODE_VERSION && alpine) { 60 | tags.push('alpine'); 61 | } 62 | 63 | return tags; 64 | } 65 | -------------------------------------------------------------------------------- /bin/build.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict'; 3 | 4 | const yargs = require('yargs'); 5 | 6 | const { buildBaseImages } = require('./base'); 7 | const { buildStrapiImages } = require('./strapi'); 8 | 9 | async function run() { 10 | const shouldPush = argv.push; 11 | const version = argv.strapiVersion; 12 | 13 | switch (argv.type) { 14 | case 'base': { 15 | const images = await buildBaseImages({ shouldPush }); 16 | logImages(images); 17 | 18 | break; 19 | } 20 | case 'strapi': { 21 | const images = await buildStrapiImages({ version, shouldPush }); 22 | logImages(images); 23 | 24 | break; 25 | } 26 | case 'all': 27 | default: { 28 | const baseImages = await buildBaseImages({ shouldPush }); 29 | const strapiImages = await buildStrapiImages({ version, shouldPush }); 30 | logImages([...baseImages, ...strapiImages]); 31 | 32 | break; 33 | } 34 | } 35 | } 36 | 37 | const argv = yargs 38 | .option('type', { 39 | alias: 't', 40 | describe: 'Which images to build (all,strapi,base)', 41 | default: 'all', 42 | type: 'string', 43 | }) 44 | .option('push', { 45 | alias: 'p', 46 | describe: 'Should push the image after creating it', 47 | default: process.env.PUSH || false, 48 | type: 'boolean', 49 | }) 50 | .option('strapiVersion', { 51 | describe: 'strapi version to build', 52 | default: process.env.STRAPI_VERSION || 'latest', 53 | type: 'string', 54 | }) 55 | .version(false) 56 | .help('h') 57 | .alias('h', 'help').argv; 58 | 59 | if (argv.help) { 60 | yargs.showHelp(); 61 | return; 62 | } 63 | 64 | run().catch(error => { 65 | console.error(error); 66 | process.exit(1); 67 | }); 68 | 69 | function logImages(imgs) { 70 | console.log('---------------------------------------'); 71 | console.log('Images created:'); 72 | console.log(imgs.map(img => `- ${img}`).join('\n')); 73 | console.log('---------------------------------------'); 74 | } 75 | -------------------------------------------------------------------------------- /bin/constants.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const ORG = process.env.ORG || 'strapi'; 4 | const REPO = 'strapi/strapi'; 5 | const BASE_IMAGE_NAME = `${ORG}/base`; 6 | const STRAPI_IMAGE_NAME = `${ORG}/strapi`; 7 | const NODE_VERSIONS = [10, 12, 14]; 8 | const LATEST_NODE_VERSION = 14; 9 | 10 | module.exports = { 11 | ORG, 12 | REPO, 13 | BASE_IMAGE_NAME, 14 | STRAPI_IMAGE_NAME, 15 | NODE_VERSIONS, 16 | LATEST_NODE_VERSION, 17 | }; 18 | -------------------------------------------------------------------------------- /bin/strapi.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const semver = require('semver'); 4 | 5 | const { execDocker, getLatestStrapiRelease } = require('./utils'); 6 | const { STRAPI_IMAGE_NAME, NODE_VERSIONS, LATEST_NODE_VERSION } = require('./constants'); 7 | 8 | module.exports = { 9 | buildStrapiImages, 10 | }; 11 | 12 | async function buildStrapiImages({ version, shouldPush = false } = {}) { 13 | if (version === 'latest' || !version) { 14 | version = await getLatestStrapiRelease(); 15 | } 16 | 17 | if (semver.valid(version) === null) { 18 | throw new Error('Invalid strapi version provided: ' + version); 19 | } 20 | 21 | const createdTags = []; 22 | 23 | for (const nodeVersion of NODE_VERSIONS) { 24 | const tags = await buildStrapiImage({ nodeVersion, version, shouldPush }); 25 | const alpineTags = await buildStrapiImage({ 26 | nodeVersion, 27 | version, 28 | alpine: true, 29 | shouldPush, 30 | }); 31 | 32 | createdTags.push(...tags, ...alpineTags); 33 | } 34 | 35 | return createdTags.map(tag => `${STRAPI_IMAGE_NAME}:${tag}`); 36 | } 37 | 38 | async function buildStrapiImage({ nodeVersion, version, alpine = false, shouldPush = false }) { 39 | let tmpImg = `${STRAPI_IMAGE_NAME}:tmp`; 40 | 41 | await execDocker([ 42 | 'build', 43 | '--build-arg', 44 | `BASE_VERSION=${nodeVersion}${alpine ? '-alpine' : ''}`, 45 | '--build-arg', 46 | `STRAPI_VERSION=${version}`, 47 | '-t', 48 | tmpImg, 49 | './strapi', 50 | ]); 51 | 52 | const tags = buildStrapiTags({ version, nodeVersion, alpine }); 53 | 54 | for (let tag of tags) { 55 | await execDocker(['tag', tmpImg, `${STRAPI_IMAGE_NAME}:${tag}`]); 56 | 57 | if (shouldPush) { 58 | await execDocker(['push', `${STRAPI_IMAGE_NAME}:${tag}`]); 59 | } 60 | } 61 | 62 | await execDocker(['image', 'rm', tmpImg]); 63 | 64 | return tags; 65 | } 66 | 67 | function buildStrapiTags({ version: strapiVersion, nodeVersion, alpine = false }) { 68 | let tags = []; 69 | let versions = [strapiVersion]; 70 | 71 | const major = semver.major(strapiVersion); 72 | const minor = semver.minor(strapiVersion); 73 | const patch = semver.patch(strapiVersion); 74 | const pre = semver.prerelease(strapiVersion); 75 | 76 | if (!pre) { 77 | versions = [major, `${major}.${minor}`, `${major}.${minor}.${patch}`]; 78 | } 79 | 80 | for (const version of versions) { 81 | tags.push(`${version}-node${nodeVersion}${alpine ? '-alpine' : ''}`); 82 | 83 | if (nodeVersion === LATEST_NODE_VERSION) { 84 | tags.push(`${version}${alpine ? '-alpine' : ''}`); 85 | } 86 | } 87 | 88 | if (nodeVersion === LATEST_NODE_VERSION && !alpine) { 89 | tags.push('latest'); 90 | } 91 | 92 | if (nodeVersion === LATEST_NODE_VERSION && alpine) { 93 | tags.push('alpine'); 94 | } 95 | 96 | return tags; 97 | } 98 | -------------------------------------------------------------------------------- /bin/utils.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const execa = require('execa'); 4 | const got = require('got'); 5 | 6 | const { REPO } = require('./constants'); 7 | 8 | async function getLatestStrapiRelease() { 9 | const { body } = await got(`https://api.github.com/repos/${REPO}/releases/latest`, { 10 | json: true, 11 | }); 12 | 13 | return body.tag_name.slice(1); // remove the v prefix 14 | } 15 | 16 | function execDocker(args) { 17 | console.log(`docker ${args.join(' ')}`); 18 | return execa('docker', args, { 19 | stdio: 'inherit', 20 | }); 21 | } 22 | 23 | module.exports = { 24 | execDocker, 25 | getLatestStrapiRelease, 26 | }; 27 | -------------------------------------------------------------------------------- /examples/custom-with-run/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM strapi/base 2 | 3 | WORKDIR /srv/app 4 | 5 | COPY ./package.json ./ 6 | COPY ./yarn.lock ./ 7 | 8 | RUN yarn install 9 | 10 | COPY . . 11 | 12 | ENV NODE_ENV production 13 | 14 | 15 | EXPOSE 1337 16 | 17 | RUN chmod a+x /srv/app/run.sh 18 | 19 | CMD ["/srv/app/run.sh"] 20 | -------------------------------------------------------------------------------- /examples/custom-with-run/run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | yarn build 4 | yarn start 5 | -------------------------------------------------------------------------------- /examples/custom/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /examples/custom/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM strapi/base 2 | 3 | WORKDIR /my-path 4 | 5 | COPY ./package.json ./ 6 | COPY ./yarn.lock ./ 7 | 8 | RUN yarn install 9 | 10 | COPY . . 11 | 12 | ENV NODE_ENV production 13 | 14 | RUN yarn build 15 | 16 | EXPOSE 1337 17 | 18 | CMD ["yarn", "start"] 19 | -------------------------------------------------------------------------------- /examples/mongo/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | strapi: 5 | container_name: strapi 6 | image: strapi/strapi 7 | environment: 8 | - DATABASE_CLIENT=mongo 9 | - DATABASE_HOST=db 10 | - DATABASE_PORT=27017 11 | - DATABASE_NAME=strapi 12 | - DATABASE_USERNAME= 13 | - DATABASE_PASSWORD= 14 | - AUTHENTICATION_DATABASE=strapi 15 | ports: 16 | - 1337:1337 17 | volumes: 18 | - ./app:/srv/app 19 | depends_on: 20 | - db 21 | 22 | db: 23 | container_name: mongo 24 | image: mongo 25 | environment: 26 | - MONGO_INITDB_DATABASE=strapi 27 | ports: 28 | - 27017:27017 29 | volumes: 30 | - ./db:/data/db 31 | restart: always 32 | -------------------------------------------------------------------------------- /examples/mysql/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | strapi: 5 | container_name: strapi 6 | image: strapi/strapi 7 | environment: 8 | - DATABASE_CLIENT=mysql 9 | - DATABASE_HOST=db 10 | - DATABASE_PORT=3306 11 | - DATABASE_NAME=strapi 12 | - DATABASE_USERNAME=strapi 13 | - DATABASE_PASSWORD=strapi 14 | ports: 15 | - 1337:1337 16 | volumes: 17 | - ./app:/srv/app 18 | depends_on: 19 | - db 20 | 21 | db: 22 | container_name: mysql 23 | image: mysql:5.7 24 | restart: always 25 | command: --default-authentication-plugin=mysql_native_password 26 | environment: 27 | MYSQL_DATABASE: strapi 28 | MYSQL_USER: strapi 29 | MYSQL_PASSWORD: strapi 30 | MYSQL_ROOT_PASSWORD: strapi 31 | volumes: 32 | - ./db:/var/lib/mysql 33 | -------------------------------------------------------------------------------- /examples/postgresql/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | strapi: 5 | container_name: strapi 6 | image: strapi/strapi 7 | environment: 8 | - DATABASE_CLIENT=postgres 9 | - DATABASE_HOST=db 10 | - DATABASE_PORT=5432 11 | - DATABASE_NAME=strapi 12 | - DATABASE_USERNAME=strapi 13 | - DATABASE_PASSWORD=strapi 14 | ports: 15 | - 1337:1337 16 | volumes: 17 | - ./app:/srv/app 18 | depends_on: 19 | - db 20 | 21 | db: 22 | container_name: postgres 23 | image: postgres 24 | restart: always 25 | volumes: 26 | - ./db:/var/lib/postgresql/data 27 | environment: 28 | POSTGRES_USER: strapi 29 | POSTGRES_PASSWORD: strapi 30 | POSTGRES_DB: strapi 31 | -------------------------------------------------------------------------------- /examples/prod/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | strapi: 5 | container_name: strapi 6 | image: strapi/strapi 7 | environment: 8 | - NODE_ENV=production 9 | - DATABASE_CLIENT=postgres 10 | - DATABASE_HOST=db 11 | - DATABASE_PORT=5432 12 | - DATABASE_NAME=strapi 13 | - DATABASE_USERNAME=strapi 14 | - DATABASE_PASSWORD=strapi 15 | ports: 16 | - 1337:1337 17 | volumes: 18 | - ./app:/srv/app 19 | depends_on: 20 | - db 21 | command: 'strapi start' 22 | 23 | db: 24 | container_name: postgres 25 | image: postgres 26 | restart: always 27 | volumes: 28 | - ./db:/var/lib/postgresql/data 29 | environment: 30 | POSTGRES_USER: strapi 31 | POSTGRES_PASSWORD: strapi 32 | POSTGRES_DB: strapi 33 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "strapi-docker", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "repository": "https://github.com/strapi/strapi-docker.git", 6 | "author": "Alexandre Bodin ", 7 | "license": "MIT", 8 | "scripts": { 9 | "lint": "eslint ." 10 | }, 11 | "dependencies": { 12 | "chalk": "^2.4.2", 13 | "execa": "^3.1.0", 14 | "got": "^9.6.0", 15 | "semver": "^6.3.0", 16 | "yargs": "^14.2.0" 17 | }, 18 | "devDependencies": { 19 | "eslint": "^6.5.1", 20 | "prettier": "1.19.1" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /strapi/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BASE_VERSION 2 | FROM strapi/base:${BASE_VERSION} 3 | 4 | ARG STRAPI_VERSION 5 | RUN yarn global add strapi@${STRAPI_VERSION} 6 | 7 | RUN mkdir /srv/app && chown 1000:1000 -R /srv/app 8 | 9 | WORKDIR /srv/app 10 | 11 | VOLUME /srv/app 12 | 13 | COPY docker-entrypoint.sh /usr/local/bin/ 14 | ENTRYPOINT ["docker-entrypoint.sh"] 15 | 16 | CMD ["strapi", "develop"] 17 | -------------------------------------------------------------------------------- /strapi/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -ea 3 | 4 | if [ "$1" = "strapi" ]; then 5 | 6 | if [ ! -f "package.json" ]; then 7 | 8 | DATABASE_CLIENT=${DATABASE_CLIENT:-sqlite} 9 | 10 | EXTRA_ARGS=${EXTRA_ARGS} 11 | 12 | echo "Using strapi $(strapi version)" 13 | echo "No project found at /srv/app. Creating a new strapi project" 14 | 15 | DOCKER=true strapi new . \ 16 | --dbclient=$DATABASE_CLIENT \ 17 | --dbhost=$DATABASE_HOST \ 18 | --dbport=$DATABASE_PORT \ 19 | --dbname=$DATABASE_NAME \ 20 | --dbusername=$DATABASE_USERNAME \ 21 | --dbpassword=$DATABASE_PASSWORD \ 22 | --dbssl=$DATABASE_SSL \ 23 | $EXTRA_ARGS 24 | 25 | elif [ ! -d "node_modules" ] || [ ! "$(ls -qAL node_modules 2>/dev/null)" ]; then 26 | 27 | echo "Node modules not installed. Installing..." 28 | 29 | if [ -f "yarn.lock" ]; then 30 | 31 | yarn install 32 | 33 | else 34 | 35 | npm install 36 | 37 | fi 38 | 39 | fi 40 | 41 | fi 42 | 43 | echo "Starting your app..." 44 | 45 | exec "$@" 46 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.5.5" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" 8 | integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== 9 | dependencies: 10 | "@babel/highlight" "^7.0.0" 11 | 12 | "@babel/highlight@^7.0.0": 13 | version "7.5.0" 14 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" 15 | integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== 16 | dependencies: 17 | chalk "^2.0.0" 18 | esutils "^2.0.2" 19 | js-tokens "^4.0.0" 20 | 21 | "@sindresorhus/is@^0.14.0": 22 | version "0.14.0" 23 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" 24 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== 25 | 26 | "@szmarczak/http-timer@^1.1.2": 27 | version "1.1.2" 28 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" 29 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== 30 | dependencies: 31 | defer-to-connect "^1.0.1" 32 | 33 | acorn-jsx@^5.1.0: 34 | version "5.1.0" 35 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" 36 | integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== 37 | 38 | acorn@^7.1.0: 39 | version "7.1.1" 40 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" 41 | integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== 42 | 43 | ajv@^6.10.0, ajv@^6.10.2: 44 | version "6.10.2" 45 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" 46 | integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== 47 | dependencies: 48 | fast-deep-equal "^2.0.1" 49 | fast-json-stable-stringify "^2.0.0" 50 | json-schema-traverse "^0.4.1" 51 | uri-js "^4.2.2" 52 | 53 | ansi-escapes@^3.2.0: 54 | version "3.2.0" 55 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" 56 | integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== 57 | 58 | ansi-regex@^3.0.0: 59 | version "3.0.0" 60 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 61 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 62 | 63 | ansi-regex@^4.1.0: 64 | version "4.1.0" 65 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 66 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 67 | 68 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 69 | version "3.2.1" 70 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 71 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 72 | dependencies: 73 | color-convert "^1.9.0" 74 | 75 | argparse@^1.0.7: 76 | version "1.0.10" 77 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 78 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 79 | dependencies: 80 | sprintf-js "~1.0.2" 81 | 82 | astral-regex@^1.0.0: 83 | version "1.0.0" 84 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 85 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 86 | 87 | balanced-match@^1.0.0: 88 | version "1.0.0" 89 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 90 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 91 | 92 | brace-expansion@^1.1.7: 93 | version "1.1.11" 94 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 95 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 96 | dependencies: 97 | balanced-match "^1.0.0" 98 | concat-map "0.0.1" 99 | 100 | cacheable-request@^6.0.0: 101 | version "6.1.0" 102 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" 103 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== 104 | dependencies: 105 | clone-response "^1.0.2" 106 | get-stream "^5.1.0" 107 | http-cache-semantics "^4.0.0" 108 | keyv "^3.0.0" 109 | lowercase-keys "^2.0.0" 110 | normalize-url "^4.1.0" 111 | responselike "^1.0.2" 112 | 113 | callsites@^3.0.0: 114 | version "3.1.0" 115 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 116 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 117 | 118 | camelcase@^5.0.0: 119 | version "5.3.1" 120 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 121 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 122 | 123 | chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: 124 | version "2.4.2" 125 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 126 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 127 | dependencies: 128 | ansi-styles "^3.2.1" 129 | escape-string-regexp "^1.0.5" 130 | supports-color "^5.3.0" 131 | 132 | chardet@^0.7.0: 133 | version "0.7.0" 134 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 135 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 136 | 137 | cli-cursor@^2.1.0: 138 | version "2.1.0" 139 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 140 | integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= 141 | dependencies: 142 | restore-cursor "^2.0.0" 143 | 144 | cli-width@^2.0.0: 145 | version "2.2.0" 146 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 147 | integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= 148 | 149 | cliui@^5.0.0: 150 | version "5.0.0" 151 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 152 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 153 | dependencies: 154 | string-width "^3.1.0" 155 | strip-ansi "^5.2.0" 156 | wrap-ansi "^5.1.0" 157 | 158 | clone-response@^1.0.2: 159 | version "1.0.2" 160 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 161 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= 162 | dependencies: 163 | mimic-response "^1.0.0" 164 | 165 | color-convert@^1.9.0: 166 | version "1.9.3" 167 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 168 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 169 | dependencies: 170 | color-name "1.1.3" 171 | 172 | color-name@1.1.3: 173 | version "1.1.3" 174 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 175 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 176 | 177 | concat-map@0.0.1: 178 | version "0.0.1" 179 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 180 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 181 | 182 | cross-spawn@^6.0.5: 183 | version "6.0.5" 184 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 185 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 186 | dependencies: 187 | nice-try "^1.0.4" 188 | path-key "^2.0.1" 189 | semver "^5.5.0" 190 | shebang-command "^1.2.0" 191 | which "^1.2.9" 192 | 193 | cross-spawn@^7.0.0: 194 | version "7.0.1" 195 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" 196 | integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== 197 | dependencies: 198 | path-key "^3.1.0" 199 | shebang-command "^2.0.0" 200 | which "^2.0.1" 201 | 202 | debug@^4.0.1: 203 | version "4.1.1" 204 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 205 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 206 | dependencies: 207 | ms "^2.1.1" 208 | 209 | decamelize@^1.2.0: 210 | version "1.2.0" 211 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 212 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 213 | 214 | decompress-response@^3.3.0: 215 | version "3.3.0" 216 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 217 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 218 | dependencies: 219 | mimic-response "^1.0.0" 220 | 221 | deep-is@~0.1.3: 222 | version "0.1.3" 223 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 224 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 225 | 226 | defer-to-connect@^1.0.1: 227 | version "1.0.2" 228 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.0.2.tgz#4bae758a314b034ae33902b5aac25a8dd6a8633e" 229 | integrity sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw== 230 | 231 | doctrine@^3.0.0: 232 | version "3.0.0" 233 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 234 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 235 | dependencies: 236 | esutils "^2.0.2" 237 | 238 | duplexer3@^0.1.4: 239 | version "0.1.4" 240 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 241 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 242 | 243 | emoji-regex@^7.0.1: 244 | version "7.0.3" 245 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 246 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 247 | 248 | end-of-stream@^1.1.0: 249 | version "1.4.4" 250 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 251 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 252 | dependencies: 253 | once "^1.4.0" 254 | 255 | escape-string-regexp@^1.0.5: 256 | version "1.0.5" 257 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 258 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 259 | 260 | eslint-scope@^5.0.0: 261 | version "5.0.0" 262 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" 263 | integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== 264 | dependencies: 265 | esrecurse "^4.1.0" 266 | estraverse "^4.1.1" 267 | 268 | eslint-utils@^1.4.2: 269 | version "1.4.3" 270 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" 271 | integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== 272 | dependencies: 273 | eslint-visitor-keys "^1.1.0" 274 | 275 | eslint-visitor-keys@^1.1.0: 276 | version "1.1.0" 277 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" 278 | integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== 279 | 280 | eslint@^6.5.1: 281 | version "6.5.1" 282 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.5.1.tgz#828e4c469697d43bb586144be152198b91e96ed6" 283 | integrity sha512-32h99BoLYStT1iq1v2P9uwpyznQ4M2jRiFB6acitKz52Gqn+vPaMDUTB1bYi1WN4Nquj2w+t+bimYUG83DC55A== 284 | dependencies: 285 | "@babel/code-frame" "^7.0.0" 286 | ajv "^6.10.0" 287 | chalk "^2.1.0" 288 | cross-spawn "^6.0.5" 289 | debug "^4.0.1" 290 | doctrine "^3.0.0" 291 | eslint-scope "^5.0.0" 292 | eslint-utils "^1.4.2" 293 | eslint-visitor-keys "^1.1.0" 294 | espree "^6.1.1" 295 | esquery "^1.0.1" 296 | esutils "^2.0.2" 297 | file-entry-cache "^5.0.1" 298 | functional-red-black-tree "^1.0.1" 299 | glob-parent "^5.0.0" 300 | globals "^11.7.0" 301 | ignore "^4.0.6" 302 | import-fresh "^3.0.0" 303 | imurmurhash "^0.1.4" 304 | inquirer "^6.4.1" 305 | is-glob "^4.0.0" 306 | js-yaml "^3.13.1" 307 | json-stable-stringify-without-jsonify "^1.0.1" 308 | levn "^0.3.0" 309 | lodash "^4.17.14" 310 | minimatch "^3.0.4" 311 | mkdirp "^0.5.1" 312 | natural-compare "^1.4.0" 313 | optionator "^0.8.2" 314 | progress "^2.0.0" 315 | regexpp "^2.0.1" 316 | semver "^6.1.2" 317 | strip-ansi "^5.2.0" 318 | strip-json-comments "^3.0.1" 319 | table "^5.2.3" 320 | text-table "^0.2.0" 321 | v8-compile-cache "^2.0.3" 322 | 323 | espree@^6.1.1: 324 | version "6.1.2" 325 | resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" 326 | integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== 327 | dependencies: 328 | acorn "^7.1.0" 329 | acorn-jsx "^5.1.0" 330 | eslint-visitor-keys "^1.1.0" 331 | 332 | esprima@^4.0.0: 333 | version "4.0.1" 334 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 335 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 336 | 337 | esquery@^1.0.1: 338 | version "1.0.1" 339 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" 340 | integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== 341 | dependencies: 342 | estraverse "^4.0.0" 343 | 344 | esrecurse@^4.1.0: 345 | version "4.2.1" 346 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 347 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== 348 | dependencies: 349 | estraverse "^4.1.0" 350 | 351 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: 352 | version "4.3.0" 353 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 354 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 355 | 356 | esutils@^2.0.2: 357 | version "2.0.3" 358 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 359 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 360 | 361 | execa@^3.1.0: 362 | version "3.1.0" 363 | resolved "https://registry.yarnpkg.com/execa/-/execa-3.1.0.tgz#d7a4a54b1ef3784c3d528c2bb7107f5720356929" 364 | integrity sha512-KcBxdjv1JlRiHMIRSDtvaGlUb6SQ4TLqxG9blJNTo6bzYYZZBHBZPKqMmK5Eftok7wl1iwDIRofxdu8tBlidQA== 365 | dependencies: 366 | cross-spawn "^7.0.0" 367 | get-stream "^5.0.0" 368 | is-stream "^2.0.0" 369 | merge-stream "^2.0.0" 370 | npm-run-path "^4.0.0" 371 | onetime "^5.1.0" 372 | p-finally "^2.0.0" 373 | signal-exit "^3.0.2" 374 | strip-final-newline "^2.0.0" 375 | 376 | external-editor@^3.0.3: 377 | version "3.1.0" 378 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" 379 | integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== 380 | dependencies: 381 | chardet "^0.7.0" 382 | iconv-lite "^0.4.24" 383 | tmp "^0.0.33" 384 | 385 | fast-deep-equal@^2.0.1: 386 | version "2.0.1" 387 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 388 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= 389 | 390 | fast-json-stable-stringify@^2.0.0: 391 | version "2.0.0" 392 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 393 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 394 | 395 | fast-levenshtein@~2.0.4: 396 | version "2.0.6" 397 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 398 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 399 | 400 | figures@^2.0.0: 401 | version "2.0.0" 402 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 403 | integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= 404 | dependencies: 405 | escape-string-regexp "^1.0.5" 406 | 407 | file-entry-cache@^5.0.1: 408 | version "5.0.1" 409 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 410 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== 411 | dependencies: 412 | flat-cache "^2.0.1" 413 | 414 | find-up@^3.0.0: 415 | version "3.0.0" 416 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 417 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 418 | dependencies: 419 | locate-path "^3.0.0" 420 | 421 | flat-cache@^2.0.1: 422 | version "2.0.1" 423 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 424 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== 425 | dependencies: 426 | flatted "^2.0.0" 427 | rimraf "2.6.3" 428 | write "1.0.3" 429 | 430 | flatted@^2.0.0: 431 | version "2.0.1" 432 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" 433 | integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== 434 | 435 | fs.realpath@^1.0.0: 436 | version "1.0.0" 437 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 438 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 439 | 440 | functional-red-black-tree@^1.0.1: 441 | version "1.0.1" 442 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 443 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 444 | 445 | get-caller-file@^2.0.1: 446 | version "2.0.5" 447 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 448 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 449 | 450 | get-stream@^4.1.0: 451 | version "4.1.0" 452 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 453 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 454 | dependencies: 455 | pump "^3.0.0" 456 | 457 | get-stream@^5.0.0, get-stream@^5.1.0: 458 | version "5.1.0" 459 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" 460 | integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== 461 | dependencies: 462 | pump "^3.0.0" 463 | 464 | glob-parent@^5.0.0: 465 | version "5.1.2" 466 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 467 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 468 | dependencies: 469 | is-glob "^4.0.1" 470 | 471 | glob@^7.1.3: 472 | version "7.1.5" 473 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.5.tgz#6714c69bee20f3c3e64c4dd905553e532b40cdc0" 474 | integrity sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ== 475 | dependencies: 476 | fs.realpath "^1.0.0" 477 | inflight "^1.0.4" 478 | inherits "2" 479 | minimatch "^3.0.4" 480 | once "^1.3.0" 481 | path-is-absolute "^1.0.0" 482 | 483 | globals@^11.7.0: 484 | version "11.12.0" 485 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 486 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 487 | 488 | got@^9.6.0: 489 | version "9.6.0" 490 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" 491 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== 492 | dependencies: 493 | "@sindresorhus/is" "^0.14.0" 494 | "@szmarczak/http-timer" "^1.1.2" 495 | cacheable-request "^6.0.0" 496 | decompress-response "^3.3.0" 497 | duplexer3 "^0.1.4" 498 | get-stream "^4.1.0" 499 | lowercase-keys "^1.0.1" 500 | mimic-response "^1.0.1" 501 | p-cancelable "^1.0.0" 502 | to-readable-stream "^1.0.0" 503 | url-parse-lax "^3.0.0" 504 | 505 | has-flag@^3.0.0: 506 | version "3.0.0" 507 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 508 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 509 | 510 | http-cache-semantics@^4.0.0: 511 | version "4.0.3" 512 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5" 513 | integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew== 514 | 515 | iconv-lite@^0.4.24: 516 | version "0.4.24" 517 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 518 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 519 | dependencies: 520 | safer-buffer ">= 2.1.2 < 3" 521 | 522 | ignore@^4.0.6: 523 | version "4.0.6" 524 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 525 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 526 | 527 | import-fresh@^3.0.0: 528 | version "3.1.0" 529 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" 530 | integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ== 531 | dependencies: 532 | parent-module "^1.0.0" 533 | resolve-from "^4.0.0" 534 | 535 | imurmurhash@^0.1.4: 536 | version "0.1.4" 537 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 538 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 539 | 540 | inflight@^1.0.4: 541 | version "1.0.6" 542 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 543 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 544 | dependencies: 545 | once "^1.3.0" 546 | wrappy "1" 547 | 548 | inherits@2: 549 | version "2.0.4" 550 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 551 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 552 | 553 | inquirer@^6.4.1: 554 | version "6.5.2" 555 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" 556 | integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== 557 | dependencies: 558 | ansi-escapes "^3.2.0" 559 | chalk "^2.4.2" 560 | cli-cursor "^2.1.0" 561 | cli-width "^2.0.0" 562 | external-editor "^3.0.3" 563 | figures "^2.0.0" 564 | lodash "^4.17.12" 565 | mute-stream "0.0.7" 566 | run-async "^2.2.0" 567 | rxjs "^6.4.0" 568 | string-width "^2.1.0" 569 | strip-ansi "^5.1.0" 570 | through "^2.3.6" 571 | 572 | is-extglob@^2.1.1: 573 | version "2.1.1" 574 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 575 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 576 | 577 | is-fullwidth-code-point@^2.0.0: 578 | version "2.0.0" 579 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 580 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 581 | 582 | is-glob@^4.0.0, is-glob@^4.0.1: 583 | version "4.0.1" 584 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 585 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 586 | dependencies: 587 | is-extglob "^2.1.1" 588 | 589 | is-promise@^2.1.0: 590 | version "2.1.0" 591 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 592 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 593 | 594 | is-stream@^2.0.0: 595 | version "2.0.0" 596 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" 597 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== 598 | 599 | isexe@^2.0.0: 600 | version "2.0.0" 601 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 602 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 603 | 604 | js-tokens@^4.0.0: 605 | version "4.0.0" 606 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 607 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 608 | 609 | js-yaml@^3.13.1: 610 | version "3.13.1" 611 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 612 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 613 | dependencies: 614 | argparse "^1.0.7" 615 | esprima "^4.0.0" 616 | 617 | json-buffer@3.0.0: 618 | version "3.0.0" 619 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 620 | integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= 621 | 622 | json-schema-traverse@^0.4.1: 623 | version "0.4.1" 624 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 625 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 626 | 627 | json-stable-stringify-without-jsonify@^1.0.1: 628 | version "1.0.1" 629 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 630 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 631 | 632 | keyv@^3.0.0: 633 | version "3.1.0" 634 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" 635 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== 636 | dependencies: 637 | json-buffer "3.0.0" 638 | 639 | levn@^0.3.0, levn@~0.3.0: 640 | version "0.3.0" 641 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 642 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 643 | dependencies: 644 | prelude-ls "~1.1.2" 645 | type-check "~0.3.2" 646 | 647 | locate-path@^3.0.0: 648 | version "3.0.0" 649 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 650 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 651 | dependencies: 652 | p-locate "^3.0.0" 653 | path-exists "^3.0.0" 654 | 655 | lodash@^4.17.12, lodash@^4.17.14: 656 | version "4.17.21" 657 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 658 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 659 | 660 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: 661 | version "1.0.1" 662 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 663 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 664 | 665 | lowercase-keys@^2.0.0: 666 | version "2.0.0" 667 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 668 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 669 | 670 | merge-stream@^2.0.0: 671 | version "2.0.0" 672 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 673 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 674 | 675 | mimic-fn@^1.0.0: 676 | version "1.2.0" 677 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 678 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== 679 | 680 | mimic-fn@^2.1.0: 681 | version "2.1.0" 682 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 683 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 684 | 685 | mimic-response@^1.0.0, mimic-response@^1.0.1: 686 | version "1.0.1" 687 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 688 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 689 | 690 | minimatch@^3.0.4: 691 | version "3.0.4" 692 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 693 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 694 | dependencies: 695 | brace-expansion "^1.1.7" 696 | 697 | minimist@0.0.8: 698 | version "0.0.8" 699 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 700 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 701 | 702 | mkdirp@^0.5.1: 703 | version "0.5.1" 704 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 705 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 706 | dependencies: 707 | minimist "0.0.8" 708 | 709 | ms@^2.1.1: 710 | version "2.1.2" 711 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 712 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 713 | 714 | mute-stream@0.0.7: 715 | version "0.0.7" 716 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 717 | integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= 718 | 719 | natural-compare@^1.4.0: 720 | version "1.4.0" 721 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 722 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 723 | 724 | nice-try@^1.0.4: 725 | version "1.0.5" 726 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 727 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 728 | 729 | normalize-url@^4.1.0: 730 | version "4.5.1" 731 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" 732 | integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== 733 | 734 | npm-run-path@^4.0.0: 735 | version "4.0.0" 736 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.0.tgz#d644ec1bd0569187d2a52909971023a0a58e8438" 737 | integrity sha512-8eyAOAH+bYXFPSnNnKr3J+yoybe8O87Is5rtAQ8qRczJz1ajcsjg8l2oZqP+Ppx15Ii3S1vUTjQN2h4YO2tWWQ== 738 | dependencies: 739 | path-key "^3.0.0" 740 | 741 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 742 | version "1.4.0" 743 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 744 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 745 | dependencies: 746 | wrappy "1" 747 | 748 | onetime@^2.0.0: 749 | version "2.0.1" 750 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 751 | integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= 752 | dependencies: 753 | mimic-fn "^1.0.0" 754 | 755 | onetime@^5.1.0: 756 | version "5.1.0" 757 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" 758 | integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== 759 | dependencies: 760 | mimic-fn "^2.1.0" 761 | 762 | optionator@^0.8.2: 763 | version "0.8.2" 764 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 765 | integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= 766 | dependencies: 767 | deep-is "~0.1.3" 768 | fast-levenshtein "~2.0.4" 769 | levn "~0.3.0" 770 | prelude-ls "~1.1.2" 771 | type-check "~0.3.2" 772 | wordwrap "~1.0.0" 773 | 774 | os-tmpdir@~1.0.2: 775 | version "1.0.2" 776 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 777 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 778 | 779 | p-cancelable@^1.0.0: 780 | version "1.1.0" 781 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 782 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== 783 | 784 | p-finally@^2.0.0: 785 | version "2.0.1" 786 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" 787 | integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== 788 | 789 | p-limit@^2.0.0: 790 | version "2.2.1" 791 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" 792 | integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== 793 | dependencies: 794 | p-try "^2.0.0" 795 | 796 | p-locate@^3.0.0: 797 | version "3.0.0" 798 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 799 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 800 | dependencies: 801 | p-limit "^2.0.0" 802 | 803 | p-try@^2.0.0: 804 | version "2.2.0" 805 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 806 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 807 | 808 | parent-module@^1.0.0: 809 | version "1.0.1" 810 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 811 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 812 | dependencies: 813 | callsites "^3.0.0" 814 | 815 | path-exists@^3.0.0: 816 | version "3.0.0" 817 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 818 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 819 | 820 | path-is-absolute@^1.0.0: 821 | version "1.0.1" 822 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 823 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 824 | 825 | path-key@^2.0.1: 826 | version "2.0.1" 827 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 828 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 829 | 830 | path-key@^3.0.0, path-key@^3.1.0: 831 | version "3.1.0" 832 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.0.tgz#99a10d870a803bdd5ee6f0470e58dfcd2f9a54d3" 833 | integrity sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg== 834 | 835 | prelude-ls@~1.1.2: 836 | version "1.1.2" 837 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 838 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 839 | 840 | prepend-http@^2.0.0: 841 | version "2.0.0" 842 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 843 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= 844 | 845 | prettier@1.19.1: 846 | version "1.19.1" 847 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" 848 | integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== 849 | 850 | progress@^2.0.0: 851 | version "2.0.3" 852 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 853 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 854 | 855 | pump@^3.0.0: 856 | version "3.0.0" 857 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 858 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 859 | dependencies: 860 | end-of-stream "^1.1.0" 861 | once "^1.3.1" 862 | 863 | punycode@^2.1.0: 864 | version "2.1.1" 865 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 866 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 867 | 868 | regexpp@^2.0.1: 869 | version "2.0.1" 870 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" 871 | integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== 872 | 873 | require-directory@^2.1.1: 874 | version "2.1.1" 875 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 876 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 877 | 878 | require-main-filename@^2.0.0: 879 | version "2.0.0" 880 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 881 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 882 | 883 | resolve-from@^4.0.0: 884 | version "4.0.0" 885 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 886 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 887 | 888 | responselike@^1.0.2: 889 | version "1.0.2" 890 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 891 | integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= 892 | dependencies: 893 | lowercase-keys "^1.0.0" 894 | 895 | restore-cursor@^2.0.0: 896 | version "2.0.0" 897 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 898 | integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= 899 | dependencies: 900 | onetime "^2.0.0" 901 | signal-exit "^3.0.2" 902 | 903 | rimraf@2.6.3: 904 | version "2.6.3" 905 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 906 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 907 | dependencies: 908 | glob "^7.1.3" 909 | 910 | run-async@^2.2.0: 911 | version "2.3.0" 912 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 913 | integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= 914 | dependencies: 915 | is-promise "^2.1.0" 916 | 917 | rxjs@^6.4.0: 918 | version "6.5.3" 919 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" 920 | integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA== 921 | dependencies: 922 | tslib "^1.9.0" 923 | 924 | "safer-buffer@>= 2.1.2 < 3": 925 | version "2.1.2" 926 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 927 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 928 | 929 | semver@^5.5.0: 930 | version "5.7.1" 931 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 932 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 933 | 934 | semver@^6.1.2, semver@^6.3.0: 935 | version "6.3.0" 936 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 937 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 938 | 939 | set-blocking@^2.0.0: 940 | version "2.0.0" 941 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 942 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 943 | 944 | shebang-command@^1.2.0: 945 | version "1.2.0" 946 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 947 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 948 | dependencies: 949 | shebang-regex "^1.0.0" 950 | 951 | shebang-command@^2.0.0: 952 | version "2.0.0" 953 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 954 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 955 | dependencies: 956 | shebang-regex "^3.0.0" 957 | 958 | shebang-regex@^1.0.0: 959 | version "1.0.0" 960 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 961 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 962 | 963 | shebang-regex@^3.0.0: 964 | version "3.0.0" 965 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 966 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 967 | 968 | signal-exit@^3.0.2: 969 | version "3.0.2" 970 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 971 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 972 | 973 | slice-ansi@^2.1.0: 974 | version "2.1.0" 975 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 976 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 977 | dependencies: 978 | ansi-styles "^3.2.0" 979 | astral-regex "^1.0.0" 980 | is-fullwidth-code-point "^2.0.0" 981 | 982 | sprintf-js@~1.0.2: 983 | version "1.0.3" 984 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 985 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 986 | 987 | string-width@^2.1.0: 988 | version "2.1.1" 989 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 990 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 991 | dependencies: 992 | is-fullwidth-code-point "^2.0.0" 993 | strip-ansi "^4.0.0" 994 | 995 | string-width@^3.0.0, string-width@^3.1.0: 996 | version "3.1.0" 997 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 998 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 999 | dependencies: 1000 | emoji-regex "^7.0.1" 1001 | is-fullwidth-code-point "^2.0.0" 1002 | strip-ansi "^5.1.0" 1003 | 1004 | strip-ansi@^4.0.0: 1005 | version "4.0.0" 1006 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1007 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1008 | dependencies: 1009 | ansi-regex "^3.0.0" 1010 | 1011 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 1012 | version "5.2.0" 1013 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1014 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1015 | dependencies: 1016 | ansi-regex "^4.1.0" 1017 | 1018 | strip-final-newline@^2.0.0: 1019 | version "2.0.0" 1020 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 1021 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 1022 | 1023 | strip-json-comments@^3.0.1: 1024 | version "3.0.1" 1025 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" 1026 | integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== 1027 | 1028 | supports-color@^5.3.0: 1029 | version "5.5.0" 1030 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1031 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1032 | dependencies: 1033 | has-flag "^3.0.0" 1034 | 1035 | table@^5.2.3: 1036 | version "5.4.6" 1037 | resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" 1038 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== 1039 | dependencies: 1040 | ajv "^6.10.2" 1041 | lodash "^4.17.14" 1042 | slice-ansi "^2.1.0" 1043 | string-width "^3.0.0" 1044 | 1045 | text-table@^0.2.0: 1046 | version "0.2.0" 1047 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1048 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1049 | 1050 | through@^2.3.6: 1051 | version "2.3.8" 1052 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1053 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1054 | 1055 | tmp@^0.0.33: 1056 | version "0.0.33" 1057 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 1058 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 1059 | dependencies: 1060 | os-tmpdir "~1.0.2" 1061 | 1062 | to-readable-stream@^1.0.0: 1063 | version "1.0.0" 1064 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" 1065 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== 1066 | 1067 | tslib@^1.9.0: 1068 | version "1.10.0" 1069 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" 1070 | integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== 1071 | 1072 | type-check@~0.3.2: 1073 | version "0.3.2" 1074 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1075 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 1076 | dependencies: 1077 | prelude-ls "~1.1.2" 1078 | 1079 | uri-js@^4.2.2: 1080 | version "4.2.2" 1081 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1082 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 1083 | dependencies: 1084 | punycode "^2.1.0" 1085 | 1086 | url-parse-lax@^3.0.0: 1087 | version "3.0.0" 1088 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 1089 | integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= 1090 | dependencies: 1091 | prepend-http "^2.0.0" 1092 | 1093 | v8-compile-cache@^2.0.3: 1094 | version "2.1.0" 1095 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" 1096 | integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== 1097 | 1098 | which-module@^2.0.0: 1099 | version "2.0.0" 1100 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 1101 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 1102 | 1103 | which@^1.2.9: 1104 | version "1.3.1" 1105 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1106 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1107 | dependencies: 1108 | isexe "^2.0.0" 1109 | 1110 | which@^2.0.1: 1111 | version "2.0.1" 1112 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.1.tgz#f1cf94d07a8e571b6ff006aeb91d0300c47ef0a4" 1113 | integrity sha512-N7GBZOTswtB9lkQBZA4+zAXrjEIWAUOB93AvzUiudRzRxhUdLURQ7D/gAIMY1gatT/LTbmbcv8SiYazy3eYB7w== 1114 | dependencies: 1115 | isexe "^2.0.0" 1116 | 1117 | wordwrap@~1.0.0: 1118 | version "1.0.0" 1119 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1120 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= 1121 | 1122 | wrap-ansi@^5.1.0: 1123 | version "5.1.0" 1124 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 1125 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 1126 | dependencies: 1127 | ansi-styles "^3.2.0" 1128 | string-width "^3.0.0" 1129 | strip-ansi "^5.0.0" 1130 | 1131 | wrappy@1: 1132 | version "1.0.2" 1133 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1134 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1135 | 1136 | write@1.0.3: 1137 | version "1.0.3" 1138 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 1139 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== 1140 | dependencies: 1141 | mkdirp "^0.5.1" 1142 | 1143 | y18n@^4.0.0: 1144 | version "4.0.1" 1145 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" 1146 | integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== 1147 | 1148 | yargs-parser@^15.0.0: 1149 | version "15.0.1" 1150 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" 1151 | integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== 1152 | dependencies: 1153 | camelcase "^5.0.0" 1154 | decamelize "^1.2.0" 1155 | 1156 | yargs@^14.2.0: 1157 | version "14.2.0" 1158 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.0.tgz#f116a9242c4ed8668790b40759b4906c276e76c3" 1159 | integrity sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg== 1160 | dependencies: 1161 | cliui "^5.0.0" 1162 | decamelize "^1.2.0" 1163 | find-up "^3.0.0" 1164 | get-caller-file "^2.0.1" 1165 | require-directory "^2.1.1" 1166 | require-main-filename "^2.0.0" 1167 | set-blocking "^2.0.0" 1168 | string-width "^3.0.0" 1169 | which-module "^2.0.0" 1170 | y18n "^4.0.0" 1171 | yargs-parser "^15.0.0" 1172 | --------------------------------------------------------------------------------