├── .circleci └── config.yml ├── .gitignore ├── .huskyrc ├── .nycrc ├── .prettierrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── bin └── app-server.js ├── docker ├── Dockerfile ├── Dockerfile.cra-builder └── Dockerfile.cra-runtime ├── docs ├── app-server-config-options.md ├── deploy-apps-with-docker.md ├── deploy-cra-apps-with-docker.md ├── requests-routing.md ├── serving-assets-with-custom-headers.md └── usage-with-cra.md ├── examples └── create-react-app │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── app-server.config.js │ ├── package.json │ ├── public │ └── index.html │ ├── src │ └── index.js │ └── yarn.lock ├── package.json ├── src ├── IAppServerConfig.ts ├── getAppServerConfig.ts ├── getExpressApp.ts ├── index.ts ├── logger.ts └── utils │ ├── addTrailingSlash.ts │ ├── getConfigurationFromEnv.ts │ ├── readConfigFile.ts │ └── toAbsolute.ts ├── test ├── getAppServerConfig.ts ├── getExpressApp.ts ├── tsconfig.json └── utils │ ├── addTrailingSlash.ts │ ├── getConfigurationFromEnv.ts │ └── toAbsolute.ts ├── tsconfig.json ├── tslint.json └── yarn.lock /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | jobs: 3 | qa: 4 | docker: 5 | - image: circleci/node:lts 6 | steps: 7 | - checkout 8 | - run: 9 | name: Install dependencies 10 | command: yarn install --frozen-lockfile 11 | - run: 12 | name: Compile modules 13 | command: yarn compile 14 | - run: 15 | name: Run linters 16 | command: yarn lint 17 | - run: 18 | name: Run tests and calculate code coverage 19 | command: npm run coverage 20 | - run: 21 | name: Publish code coverage report 22 | command: yarn publish-coverage 23 | docker-build-push: 24 | docker: 25 | - image: circleci/node:lts 26 | steps: 27 | - checkout 28 | - setup_remote_docker 29 | - run: 30 | name: Login to Docker Hub 31 | command: docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD 32 | - run: 33 | name: Set $DOCKER_TAG 34 | command: echo 'export DOCKER_TAG=${CIRCLE_TAG:-$CIRCLE_BRANCH}' >> $BASH_ENV 35 | - run: 36 | name: Build docker images 37 | command: | 38 | docker build -f docker/Dockerfile -t staticdeploy/app-server:$DOCKER_TAG . 39 | docker build -f docker/Dockerfile.cra-builder -t staticdeploy/app-server:$DOCKER_TAG-cra-builder . 40 | docker build -f docker/Dockerfile.cra-runtime -t staticdeploy/app-server:$DOCKER_TAG-cra-runtime --build-arg DOCKER_TAG=$DOCKER_TAG . 41 | - run: 42 | name: Push docker images 43 | command: | 44 | docker push staticdeploy/app-server:$DOCKER_TAG 45 | docker push staticdeploy/app-server:$DOCKER_TAG-cra-builder 46 | docker push staticdeploy/app-server:$DOCKER_TAG-cra-runtime 47 | npm-publish: 48 | docker: 49 | - image: circleci/node:lts 50 | steps: 51 | - checkout 52 | - run: 53 | name: Install dependencies 54 | command: yarn install --frozen-lockfile 55 | - run: 56 | name: Login to npm 57 | command: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > .npmrc 58 | - run: 59 | name: Compile modules 60 | command: yarn compile 61 | - run: 62 | name: Publish npm modules 63 | command: npm publish 64 | 65 | workflows: 66 | version: 2 67 | qa-docker-npm: 68 | jobs: 69 | - qa: 70 | # Run for all branches and all tags 71 | filters: 72 | tags: 73 | only: /.*/ 74 | - docker-build-push: 75 | requires: 76 | - qa 77 | # Run for all branches and all tags 78 | filters: 79 | tags: 80 | only: /.*/ 81 | - npm-publish: 82 | requires: 83 | - qa 84 | # Run only for tags starting with a v, don't run for branches 85 | filters: 86 | tags: 87 | only: /^v.*/ 88 | branches: 89 | ignore: /.*/ 90 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Npm + yarn files 2 | node_modules/ 3 | npm-debug.log 4 | yarn-error.log 5 | 6 | # Typescript compiler output directory 7 | lib/ 8 | 9 | # Nyc (test coverage) files 10 | coverage/ 11 | .nyc_output/ 12 | -------------------------------------------------------------------------------- /.huskyrc: -------------------------------------------------------------------------------- 1 | { 2 | "hooks": { 3 | "pre-commit": "yarn lint && yarn test && yarn compile" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.nycrc: -------------------------------------------------------------------------------- 1 | { 2 | "include": [ 3 | "src/**/*.ts" 4 | ], 5 | "reporter": [ 6 | "lcov", 7 | "text-summary", 8 | "html" 9 | ], 10 | "extension": [ 11 | ".ts" 12 | ] 13 | } 14 | 15 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 4, 3 | "proseWrap": "always", 4 | "overrides": [ 5 | { 6 | "files": "*.md", 7 | "options": { 8 | "tabWidth": 2 9 | } 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 4.1.0 (January 29, 2020) 2 | 3 | Features: 4 | 5 | - add the value of the `basePath` option as the `BASE_PATH` property of the 6 | `window.APP_CONFIG` object defined by the configuration script 7 | - when a `Content-Security-Policy` header is defined for an html asset, patch 8 | its value to whitelist (via sha256 source) the configuration script injected 9 | in the html 10 | 11 | ## 4.0.0 (August 29, 2019) 12 | 13 | Features: 14 | 15 | - add option `--headers` to allow attaching custom headers to responses 16 | - add option `--fallbackStatusCode` to change the status code with which the 17 | fallback asset is served 18 | - add option `--configuration` to allow passing the JSON configuration object 19 | directly (not just via env variables) 20 | - add option `--config` to allow passing config options via config file 21 | 22 | Breaking changes: 23 | 24 | - remove deprecated options `--index`, `--fallbackResource`, and `--baseUrl` 25 | - remove option `--selector` (as StaticDeploy only supports `script#app-config`) 26 | - option `--configKeyPrefix` renamed `--configurationKeyPrefix` (to avoid 27 | confusion between the terms `config`, referring to the config options taken by 28 | **app-server**, and `configuration`, the JSON configuration object inject into 29 | static apps) 30 | - use StaticDeploy core module for implementing routing logic (before the logic 31 | was more or less a copy-paste of StaticDeploy's code) 32 | 33 | Fixes: 34 | 35 | - remove `x-powered-by` header from responses 36 | 37 | ## 3.0.0 (April 4, 2019) 38 | 39 | Breaking changes: 40 | 41 | - update docker images to `node:lts` (10) 42 | 43 | ## 2.1.0 (June 19, 2018) 44 | 45 | Deprecations: 46 | 47 | - option `--fallbackResource` renamed `--fallbackAssetPath` (to use the same 48 | name as [StaticDeploy](https://github.com/staticdeploy/staticdeploy)) 49 | 50 | Fixes: 51 | 52 | - fix typo in `--root` option description 53 | 54 | ## 2.0.0 (June 16, 2018) 55 | 56 | Breaking changes: 57 | 58 | - asset matching algorithm changed: 59 | 60 | - when requesting `/path`, if both files `/path.html` and `/path/index.html` 61 | exist, `/path.html` is served (used to be the contrary) 62 | - some paths that responded 404 now respond the fallback resource (issue #3) 63 | 64 | - log format changed (from Standard Apache Common Log Format to JSON) 65 | 66 | - removed `dev-config-server` bin (but added `@staticdeploy/app-config` as 67 | dependency, which provides the same `dev-config-server` bin) 68 | 69 | - removed exported function `getConfigScriptHandler` (if needed, should now be 70 | imported from `@staticdeploy/app-config`) 71 | 72 | Deprecations: 73 | 74 | - option `--index` renamed `--fallbackResource` 75 | - option `--baseUrl` renamed `--basePath` 76 | 77 | Fixes: 78 | 79 | - serve fallback resource even when path contains dots (issue #3) 80 | - 301 to `/baseUrl/` on GET `/baseUrl` (issue #1) 81 | 82 | Features: 83 | 84 | - add option `--configKeyPrefix` 85 | 86 | ## 1.1.1 (September 21, 2017) 87 | 88 | Fixes: 89 | 90 | - publish `bin` folder to npm 91 | 92 | ## 1.1.0 (September 21, 2017) 93 | 94 | Features: 95 | 96 | - `dev-config-server` binary to serve configuration during development 97 | 98 | ## 1.0.2 (September 16, 2017) 99 | 100 | Publish useful package metadata to npm. 101 | 102 | ## 1.0.1 (September 16, 2017) 103 | 104 | First version published to npm. 105 | 106 | ## 1.0.0 (September 16, 2017) 107 | 108 | Initial release. Not published on npm due to package access issues. 109 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017-2020 Paolo Scanferla 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![npm version](https://img.shields.io/npm/v/@staticdeploy/app-server.svg)](https://www.npmjs.com/package/@staticdeploy/app-server) 2 | [![build status](https://img.shields.io/circleci/project/github/staticdeploy/app-server.svg)](https://circleci.com/gh/staticdeploy/app-server) 3 | [![coverage status](https://codecov.io/github/staticdeploy/app-server/coverage.svg?branch=master)](https://codecov.io/github/staticdeploy/app-server?branch=master) 4 | [![dependency status](https://david-dm.org/staticdeploy/app-server.svg)](https://david-dm.org/staticdeploy/app-server) 5 | [![devDependency status](https://david-dm.org/staticdeploy/app-server/dev-status.svg)](https://david-dm.org/staticdeploy/app-server#info=devDependencies) 6 | 7 | # app-server 8 | 9 | A tool to serve and apply runtime configuration to static apps. 10 | 11 | This tool was created to allow 12 | [create-react-app](https://github.com/facebook/create-react-app) apps to be 13 | configured at runtime (serve-time) via environment variables, making them easily 14 | "dockerizable". It can however be used to serve and configure any static app. 15 | 16 | ### Install 17 | 18 | ``` 19 | yarn add -D @staticdeploy/app-server 20 | ``` 21 | 22 | ### Guides 23 | 24 | - [usage with create-react-app](docs/usage-with-cra.md) 25 | - [deploy create-react-app apps with Docker](docs/deploy-cra-apps-with-docker.md) 26 | - [deploy generic static apps with Docker](docs/deploy-apps-with-docker.md) 27 | - [serving assets with custom headers](docs/serving-assets-with-custom-headers.md) 28 | 29 | ### Reference documentation 30 | 31 | - [app-server config options](docs/app-server-config-options.md) 32 | - [how requests are routed](docs/requests-routing.md) 33 | -------------------------------------------------------------------------------- /bin/app-server.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | require("../lib/index.js"); 4 | -------------------------------------------------------------------------------- /docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:lts-alpine 2 | 3 | # Install app-server into directory /app-server 4 | WORKDIR /app-server 5 | 6 | # Copy files 7 | COPY package.json yarn.lock tsconfig.json ./ 8 | COPY src ./src/ 9 | COPY bin ./bin/ 10 | 11 | # Install dependencies 12 | RUN yarn install --frozen-lockfile && \ 13 | # Install curl for performing healthchecks 14 | apk add --no-cache curl && \ 15 | # Compile code 16 | yarn compile && \ 17 | # Remove dev dependencies and other unnecessary files 18 | yarn install --production && \ 19 | yarn cache clean && \ 20 | rm -r yarn.lock tsconfig.json src 21 | 22 | # Configure healthcheck. We consider the container healthy if requesting / 23 | # something is returned 24 | HEALTHCHECK CMD curl http://localhost/ || exit 1 25 | 26 | # Configure environment and listening port 27 | ENV NODE_ENV production 28 | ENV APP_SERVER_PORT 80 29 | EXPOSE 80 30 | 31 | # Return to default WORKDIR 32 | WORKDIR / 33 | 34 | # Set start command 35 | CMD [ "node", "/app-server/bin/app-server.js" ] 36 | -------------------------------------------------------------------------------- /docker/Dockerfile.cra-builder: -------------------------------------------------------------------------------- 1 | FROM node:lts 2 | 3 | ONBUILD WORKDIR /app 4 | 5 | # Copy source files 6 | ONBUILD COPY . . 7 | 8 | # Create an empty app-server.config.js file if it doesn't exist 9 | ONBUILD RUN if [ ! -f app-server.config.js ]; then echo "module.exports={};" > app-server.config.js; fi 10 | 11 | # Set PUBLIC_URL so that app paths are relative (app-server will then figure out 12 | # what to serve) 13 | ONBUILD ENV PUBLIC_URL . 14 | 15 | # Install dependencies (with yarn if there is a yarn.lock) 16 | ONBUILD RUN if [ -f yarn.lock ]; then yarn install; else npm install; fi 17 | 18 | # Build the app 19 | ONBUILD RUN yarn build 20 | -------------------------------------------------------------------------------- /docker/Dockerfile.cra-runtime: -------------------------------------------------------------------------------- 1 | ARG DOCKER_TAG 2 | FROM staticdeploy/app-server:$DOCKER_TAG 3 | 4 | # Copy files from cra-runtime stage 5 | ONBUILD COPY --from=0 /app/build /build 6 | ONBUILD COPY --from=0 /app/app-server.config.js /app-server.config.js 7 | -------------------------------------------------------------------------------- /docs/app-server-config-options.md: -------------------------------------------------------------------------------- 1 | ## app-server config options 2 | 3 | The **app-server** binary takes the following config options: 4 | 5 | - `--config`: path of the javascript file exporting the **app-server** config. 6 | Defaults to `app-server.config.js` 7 | - `--root`: root directory to serve. Defaults to `build` 8 | - `--fallbackAssetPath`: absolute path (relative to the root directory) of the 9 | asset to use as fallback when requests don't match any other asset. The asset 10 | MUST exist. Defaults to `/index.html` 11 | - `--fallbackStatusCode`: status code to use when serving the fallback asset. 12 | Defaults to `200` 13 | - `--headers`: (asset matcher, headers) map specifying which headers to assign 14 | to which assets 15 | - `--configuration`: JSON configuration object for the static app, i.e. what 16 | becomes `window.APP_CONFIG` 17 | - `--configurationKeyPrefix`: Prefix of the environment variables used to 18 | generate the configuration for the static app. Defaults to `APP_CONFIG_` 19 | - `--basePath`: static app base path. Defaults to `/` 20 | - `--port`: port to listen on. Defaults to `3000` 21 | 22 | Options can also be passed via config file, a javascript file exporting an 23 | object defining one or more of the above config options. Example: 24 | 25 | ```js 26 | module.exports = { 27 | fallbackAssetPath: "/not-found.html", 28 | fallbackStatusCode: 404 29 | }; 30 | ``` 31 | 32 | Options can also be passed as upper-cased, snake-cased, environment variables 33 | prefixed by `APP_SERVER_`. Eg: 34 | 35 | ```sh 36 | export APP_SERVER_FALLBACK_ASSET_PATH=... 37 | export APP_SERVER_FALLBACK_STATUS_CODE=... 38 | ``` 39 | 40 | Option sources have the following priority: 41 | 42 | 1. command line flags 43 | 2. environment variables 44 | 3. options defined in the config file 45 | 46 | Meaning for example that when an option is provided both as a command line flag 47 | and as an environment variable, the value provided with the command line flag is 48 | used. 49 | 50 | ## App configuration generation 51 | 52 | The JSON configuration object that is injected by **app-server** into the served 53 | static app (as the global variable `window.APP_CONFIG`) is generated by merging: 54 | 55 | - the JSON object passed as the `--configuration` option 56 | - a JSON object generated from environment variables using the following 57 | algorithm: 58 | - filter variables whose name doesn't start with the prefix specified by the 59 | `--configurationKeyPrefix` option 60 | - strip the prefix from the name of the remaining variables 61 | - create the object using those key-value pairs 62 | - the following variables automatically added by **app-server**: 63 | - `BASE_PATH`: the base path specified with the `--basePath` option 64 | 65 | ### Example 66 | 67 | Given the `--configuration` option: 68 | 69 | ```json 70 | { 71 | "KEY_0": "OPT_VALUE_0", 72 | "KEY_1": "OPT_VALUE_1" 73 | } 74 | ``` 75 | 76 | the `--basePath` option `/`, and given the environment: 77 | 78 | ```sh 79 | APP_CONFIG_KEY_1=ENV_VALUE_1 80 | APP_CONFIG_KEY_2=ENV_VALUE_2 81 | NON_PREFIXED_KEY=VALUE 82 | ``` 83 | 84 | the following `window.APP_CONFIG` is generated: 85 | 86 | ```js 87 | window.APP_CONFIG = { 88 | KEY_0: "OPT_VALUE_0", 89 | KEY_1: "ENV_VALUE_1", 90 | KEY_2: "ENV_VALUE_2", 91 | BASE_PATH: "/" 92 | }; 93 | ``` 94 | -------------------------------------------------------------------------------- /docs/deploy-apps-with-docker.md: -------------------------------------------------------------------------------- 1 | ## Deploy apps with Docker 2 | 3 | To deploy an app with docker using **app-server**, you can either install 4 | **app-server** from npm inside your own docker image, or you can start your 5 | image from `staticdeploy/app-server`, a (relatively) lightweight image with 6 | **app-server** pre-installed. 7 | 8 | ### Example installing from npm 9 | 10 | ```Dockerfile 11 | FROM node 12 | 13 | # Build your app. For example you could do something like: 14 | # COPY . . 15 | # RUN npm install 16 | # RUN npm run build 17 | 18 | # Install app-server 19 | RUN npm install --global @staticdeploy/app-server 20 | 21 | # Set app-server as the image start command, starting with the necessary flags. 22 | # For example if the build step produces a dist/ directory that you wish 23 | # app-server to serve, you would do: 24 | # CMD ["app-server", "--root=dist/"] 25 | CMD ["app-server"] 26 | ``` 27 | 28 | ### Example starting from staticdeploy/app-server 29 | 30 | ```Dockerfile 31 | # First docker stage: build the app 32 | FROM node 33 | 34 | # Build your app. For example you could do something like: 35 | # COPY . . 36 | # RUN npm install 37 | # RUN npm run build 38 | 39 | # Second docker stage: copy artifacts into the staticdeploy/app-server image 40 | FROM staticdeploy/app-server:vX.Y.Z 41 | 42 | # Copy artifacts from the previous stage (assuming they were produced in the 43 | # /dist directory) into the /build directory of the image, the default directory 44 | # served by app-server 45 | COPY --from=0 /dist /build 46 | ``` 47 | -------------------------------------------------------------------------------- /docs/deploy-cra-apps-with-docker.md: -------------------------------------------------------------------------------- 1 | ## Deploy create-react-app apps with Docker 2 | 3 | Assuming you've set up your project as described in the 4 | [usage with create-react-app guide](usage-with-cra.md), then all you need to 5 | build a docker image for building and serving your app is using the following 6 | `Dockerfile`: 7 | 8 | ```Dockerfile 9 | FROM staticdeploy/app-server:vX.Y.Z-cra-builder 10 | FROM staticdeploy/app-server:vX.Y.Z-cra-runtime 11 | ``` 12 | 13 | The first `FROM` instruction will run the `ONBUILD` instructions of the 14 | `:vX.Y.Z-cra-builder` image, which will install dependencies with **npm** (or 15 | **yarn** if your project has a `yarn.lock`) and build the app by running the 16 | `build` npm script. 17 | 18 | The second `FROM` instruction will copy the built app into the (relatively) 19 | small `:vX.Y.Z-cra-runtime` image where **app-server** is installed and 20 | configured to serve the app. 21 | 22 | You can then run your app image passing in configuration via environment 23 | variables: 24 | 25 | ```sh 26 | docker run -e APP_CONFIG_MY_VAR=my_val my-app-image 27 | ``` 28 | -------------------------------------------------------------------------------- /docs/requests-routing.md: -------------------------------------------------------------------------------- 1 | ## How requests are routed 2 | 3 | **app-server** was created to serve Single Page Applications (SPA), and its 4 | routing algorithm was designed to solve the problems that arise when SPAs do 5 | client-side routing using the 6 | [HTML5 history API](https://developer.mozilla.org/en-US/docs/Web/API/History_API), 7 | i.e. when they change their path in the browser URL. 8 | 9 | When **app-server** receives a GET request for a certain path, it tries to match 10 | the request to one of the assets it's tasked to serve, even if the requested 11 | path is not strictly equal to the asset path. If it can't match the request to 12 | any asset, it serves the asset designated to be the fallback asset (typically 13 | `/index.html`). We'll explain the routing algorithm with an example. 14 | 15 | ### Example 16 | 17 | Let's assume **app-server** is serving the following directory: 18 | 19 | ```sh 20 | / 21 | ├── index.html 22 | └── js/ 23 | └── index.js 24 | ``` 25 | 26 | #### Falling back to a "catch all" asset 27 | 28 | When a request is made for `/` or for `/index.html`, naturally **app-server** 29 | responds with the `/index.html` file. When a request is made instead for 30 | `/some/path/`, **app-server** tries to match it to one of the files in the 31 | directory. `/some/path/` doesn't look anything like `/index.html` or 32 | `/js/index.js`, so **app-server** determines that no file matches the requested 33 | path, and serves the fallback asset, which happens to be `/index.html`. 34 | 35 | This behaviour solves the problem of a user reloading a Single Page Application 36 | when the browser URL has been modified by client-side routing: instead of 37 | getting a 404 because the reloaded URL is not `/`, the browser receives the 38 | `index.html` and the app can restart without issues. 39 | 40 | #### Serving files with a "similar" path 41 | 42 | When a request is made for `/js/index.js`, naturally **app-server** responds 43 | with the `/js/index.js` file. But when a request is made for 44 | `/some/path/js/index.js`, instead of responding with a 404 or with the fallback 45 | asset, **app-server** sees that the requested path looks a lot like 46 | `/js/index.js`, assumes that the requester wanted that file, and responds with a 47 | 301, redirecting to the file's _canonical path_, i.e. `/js/index.js`. 48 | 49 | This behaviour saves the developer of the app from having to statically specify 50 | (in the code or at build time) the _exact_ paths of the app's assets. In the 51 | example above, in the `index.html` file the developer can just point to the 52 | `index.js` file with a relative URL: `./js/index.js`. Now even when 53 | `/index.html` is loaded - as a fallback - from `/some/path/`, `./js/index.js` 54 | will be resolved by the browser to `/some/path/js/index.js`, which leads to the 55 | correct file. 56 | 57 | This is especially useful when the app is deployed _not-at-the-root_ of a 58 | domain, e.g. `example.com/base-path/`. In this case, if the developer had to 59 | statically specify the _exact_ paths, they'd have to know beforehand (or at most 60 | at build time) what the base path of the deployed app would be, an information 61 | they might not have or that might change over time, requiring the app to be 62 | rebuilt. 63 | -------------------------------------------------------------------------------- /docs/serving-assets-with-custom-headers.md: -------------------------------------------------------------------------------- 1 | # Serving assets with custom headers 2 | 3 | **app-server** allows you to specify custom headers to use when serving assets. 4 | For example, if you are serving a static app containing assets `index.html` and 5 | `index.js`, you can tell StaticDeploy to serve `index.html` with header 6 | `Cache-Control: must-revalidate`, and `index.js` with `Cache-Control: public`. 7 | 8 | Custom headers are specified per-asset, using the `--headers` config option. 9 | Example (using a config file): 10 | 11 | ```js 12 | module.exports = { 13 | // ... other options 14 | headers: { 15 | "**/*.html": { 16 | "Cache-Control": "must-revalidate" 17 | }, 18 | "**/*.js": { 19 | "Cache-Control": "public" 20 | } 21 | } 22 | }; 23 | ``` 24 | 25 | The `headers` option is a `(asset matcher, headers)` map. `asset matcher` is a 26 | [glob pattern](https://github.com/micromatch/micromatch) used to match assets' 27 | paths, while the `headers` object containing the headers to use when serving the 28 | matching assets. 29 | 30 | Common use cases for custom headers are: 31 | 32 | - specifying caching policies 33 | - specifying security headers 34 | - overriding an asset's `Content-Type` 35 | 36 | ### Content-Security-Policy 37 | 38 | If you specify a `Content-Security-Policy` header for an `html` asset, 39 | **app-server** will modify it to whitelist the inline `app-config` configuration 40 | script that gets injected into the html. 41 | -------------------------------------------------------------------------------- /docs/usage-with-cra.md: -------------------------------------------------------------------------------- 1 | ## Usage with create-react-app 2 | 3 | ### [Example project](../examples/create-react-app/) 4 | 5 | ### How-to 6 | 7 | First: 8 | 9 | - add the following ` 17 | ``` 18 | - access the config variable in your code: 19 | ```js 20 | console.log(window.APP_CONFIG.MY_VAR); 21 | ``` 22 | 23 | Then: 24 | 25 | #### In development 26 | 27 | - define your development configuration in the `app-config` script as seen above 28 | - start the development server with `yarn start` 29 | 30 | #### In production 31 | 32 | - build your app with `yarn build` 33 | - run **app-server** defining configuration via environment variables: 34 | ```sh 35 | env APP_CONFIG_MY_VAR=my_val app-server 36 | ``` 37 | 38 | ### How it works 39 | 40 | #### In development 41 | 42 | **react-scripts** starts the development server of the app. 43 | 44 | When the app is loaded in the browser, the `#app-config` script in `index.html` 45 | defines `window.APP_CONFIG`. The variable can then be accessed by the app code. 46 | 47 | #### In production 48 | 49 | **app-server** starts a static server for files under the `build` directory. It 50 | also generates - from environment variables, command line options, or a 51 | configuration file - the javascript snippet defining `window.APP_CONFIG`, and 52 | injects it as content of the `#app-config` script in `index.html`, replacing the 53 | development configuration. 54 | 55 | When the app is loaded in the browser, the `#app-config` script is evaluated, 56 | defining `window.APP_CONFIG` that can then be accessed by the app code. 57 | -------------------------------------------------------------------------------- /examples/create-react-app/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | 6 | # testing 7 | /coverage 8 | 9 | # production 10 | /build 11 | 12 | # misc 13 | npm-debug.log* 14 | yarn-debug.log* 15 | yarn-error.log* 16 | -------------------------------------------------------------------------------- /examples/create-react-app/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM staticdeploy/app-server:master-cra-builder 2 | FROM staticdeploy/app-server:master-cra-runtime 3 | -------------------------------------------------------------------------------- /examples/create-react-app/README.md: -------------------------------------------------------------------------------- 1 | # create-react-app app example 2 | 3 | Example of using **app-server** with a trivial 4 | [**create-react-app**](https://github.com/facebook/create-react-app) app. 5 | 6 | ## Run the example in development mode 7 | 8 | ```sh 9 | git clone https://github.com/staticdeploy/app-server.git 10 | cd app-server/examples/create-react-app 11 | yarn install 12 | # Start the development server 13 | yarn start 14 | ``` 15 | 16 | Open the app at http://localhost:3000 and see the `Hello world!` greeting. 17 | Change the value of the variable defined in `public/index.html` and see that the 18 | greeting target has changed. 19 | 20 | ### What happens in the example 21 | 22 | `yarn start` simply starts **create-react-app**'s development server. 23 | 24 | When the app is loaded: 25 | 26 | 1. the `#app-config` script in the app's `index.html` defines the variable 27 | `window.APP_CONFIG` 28 | 2. the appropriate greeting is rendered 29 | 30 | ## Run the example in production mode with Docker 31 | 32 | ```sh 33 | git clone https://github.com/staticdeploy/app-server.git 34 | cd app-server/examples/create-react-app 35 | # Build the app Docker image 36 | docker build -t app-server-example . 37 | # Run the image passing in the necessary configuration 38 | docker run --rm --init -p 3000:80 -e APP_CONFIG_TARGET=world app-server-example 39 | ``` 40 | 41 | Open the app at http://localhost:3000 and see the `Hello world!` greeting. Stop 42 | the container and restart it passing in a different value for the 43 | `APP_CONFIG_TARGET` variable. Re-open the app and see that the greeting target 44 | has changed. 45 | 46 | ### What happens in the example 47 | 48 | The `docker build ...` command builds the app docker image, using the 49 | `staticdeploy/app-server:cra-builder` and `staticdeploy/app-server:cra-runtime` 50 | base images which respectively: 51 | 52 | - build the app into a static bundle 53 | - setup**app-server** to serve the bundle 54 | 55 | When the image is run with `docker run ...`, `app-server`: 56 | 57 | 1. starts serving the app using StaticDeploy's serving algorithm, that includes 58 | features such as: 59 | 1. using a fallback asset for requests to non-existing assets 60 | 2. allowing the user to use non-canonical paths to request assets (e.g. 61 | `/foo/index.js` instead of `/index.js`) 62 | 3. injecting the app configuration in the served html files 63 | 4. specifying custom headers for assets 64 | 65 | When the app is loaded: 66 | 67 | 1. the `#app-config` script in the app's `index.html` is evaluated 68 | 2. the content of the script defines the variable `window.APP_CONFIG` 69 | 3. the appropriate greeting is rendered 70 | -------------------------------------------------------------------------------- /examples/create-react-app/app-server.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | headers: { 3 | "**/*.html": { 4 | "Cache-Control": "must-revalidate" 5 | } 6 | } 7 | }; 8 | -------------------------------------------------------------------------------- /examples/create-react-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "create-react-app", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "start": "react-scripts start", 6 | "build": "react-scripts build", 7 | "test": "react-scripts test --env=jsdom" 8 | }, 9 | "dependencies": { 10 | "react": "^16.12.0", 11 | "react-dom": "^16.12.0" 12 | }, 13 | "devDependencies": { 14 | "npm-run-all": "^4.1.5", 15 | "react-scripts": "3.3.0" 16 | }, 17 | "browserslist": { 18 | "production": [ 19 | ">0.2%", 20 | "not dead", 21 | "not op_mini all" 22 | ], 23 | "development": [ 24 | "last 1 chrome version", 25 | "last 1 firefox version", 26 | "last 1 safari version" 27 | ] 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /examples/create-react-app/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | create-react-app app 5 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /examples/create-react-app/src/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | 4 | const { TARGET } = window.APP_CONFIG; 5 | 6 | class App extends React.Component { 7 | render() { 8 | return
{`Hello ${TARGET}!`}
; 9 | } 10 | } 11 | 12 | ReactDOM.render(, document.getElementById("root")); 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@staticdeploy/app-server", 3 | "description": "Serve and apply runtime configuration to static apps", 4 | "version": "4.1.0", 5 | "publishConfig": { 6 | "access": "public" 7 | }, 8 | "main": "./lib/index.js", 9 | "typings": "./lib/index.d.ts", 10 | "bin": { 11 | "app-server": "./bin/app-server.js" 12 | }, 13 | "files": [ 14 | "bin", 15 | "lib" 16 | ], 17 | "author": "Paolo Scanferla ", 18 | "license": "MIT", 19 | "homepage": "https://github.com/staticdeploy/app-server", 20 | "repository": { 21 | "type": "git", 22 | "url": "https://github.com/staticdeploy/app-server.git" 23 | }, 24 | "bugs": { 25 | "url": "https://github.com/staticdeploy/app-server/issues" 26 | }, 27 | "keywords": [ 28 | "static", 29 | "server", 30 | "configuration", 31 | "create-react-app" 32 | ], 33 | "scripts": { 34 | "compile": "tsc", 35 | "prettier": "prettier src/**/*.ts test/**/*.ts docs/**/*md", 36 | "prettify": "yarn prettier --write", 37 | "lint:prettier": "yarn prettier --list-different", 38 | "lint:tslint": "tslint src/**/*.ts test/**/*.ts", 39 | "lint": "yarn lint:prettier && yarn lint:tslint", 40 | "test": "NODE_ENV=test mocha --exit -r ts-node/register --extension ts 'test/**/*.ts'", 41 | "coverage": "nyc --all yarn test", 42 | "publish-coverage": "codecov", 43 | "start": "node bin/app-server.js" 44 | }, 45 | "dependencies": { 46 | "@staticdeploy/core": "^0.15.0", 47 | "@staticdeploy/serve-static": "^0.15.0", 48 | "bunyan": "^1.8.12", 49 | "bunyan-middleware": "^1.0.0", 50 | "express": "^4.17.1", 51 | "fs-extra": "^8.1.0", 52 | "lodash": "^4.17.15", 53 | "yargs": "^15.1.0" 54 | }, 55 | "devDependencies": { 56 | "@types/bunyan": "^1.8.6", 57 | "@types/chai": "^4.2.7", 58 | "@types/cheerio": "^0.22.15", 59 | "@types/express": "^4.17.2", 60 | "@types/fs-extra": "^8.0.1", 61 | "@types/lodash": "^4.14.149", 62 | "@types/mocha": "^5.2.7", 63 | "@types/supertest": "^2.0.8", 64 | "@types/uuid": "^3.4.7", 65 | "@types/yargs": "^15.0.2", 66 | "chai": "^4.2.0", 67 | "cheerio": "^1.0.0-rc.3", 68 | "codecov": "^3.6.2", 69 | "create-fs-tree": "^1.0.0", 70 | "decache": "^4.5.1", 71 | "husky": "^4.2.1", 72 | "mocha": "^7.0.1", 73 | "nyc": "^15.0.0", 74 | "prettier": "^1.19.1", 75 | "supertest": "^4.0.2", 76 | "ts-node": "^8.6.2", 77 | "tslint": "^6.0.0", 78 | "tslint-config-prettier": "^1.18.0", 79 | "typescript": "^3.7.5", 80 | "uuid": "^3.4.0", 81 | "vm2": "^3.8.4" 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/IAppServerConfig.ts: -------------------------------------------------------------------------------- 1 | import { IConfiguration } from "@staticdeploy/core"; 2 | 3 | export default interface IAppServerConfig { 4 | root: string; 5 | fallbackAssetPath: string; 6 | fallbackStatusCode: number; 7 | headers: { 8 | [assetMatcher: string]: { 9 | [headerName: string]: string; 10 | }; 11 | }; 12 | basePath: string; 13 | configuration: IConfiguration; 14 | port: number; 15 | } 16 | -------------------------------------------------------------------------------- /src/getAppServerConfig.ts: -------------------------------------------------------------------------------- 1 | import { resolve } from "path"; 2 | import yargs from "yargs"; 3 | 4 | import IAppServerConfig from "./IAppServerConfig"; 5 | import addTrailingSlash from "./utils/addTrailingSlash"; 6 | import getConfigurationFromEnv from "./utils/getConfigurationFromEnv"; 7 | import readConfigFile from "./utils/readConfigFile"; 8 | import toAbsolute from "./utils/toAbsolute"; 9 | 10 | // Get app-server config, either from a config file, command line args, or 11 | // environment variables. The function validates the config and sets the 12 | // appropriate defaults 13 | export default function getAppServerConfig( 14 | argv: string[], 15 | env: NodeJS.ProcessEnv 16 | ): IAppServerConfig { 17 | const yargsConfig = yargs 18 | .usage("Usage: $0 ") 19 | .env("APP_SERVER") 20 | .option("config", { 21 | coerce: resolve, 22 | config: true, 23 | default: "app-server.config.js", 24 | describe: 25 | "Path of the javascript file exporting the app-server config", 26 | configParser: (configFilePath: string) => { 27 | const config = readConfigFile(configFilePath); 28 | const { configuration, headers } = config; 29 | return { 30 | ...config, 31 | // Options 'configuration' and 'headers' are expected by 32 | // yargs to be strings, but they are objects when specified 33 | // in the config file, hence the need to stringify them 34 | ...(configuration 35 | ? { configuration: JSON.stringify(configuration) } 36 | : undefined), 37 | ...(headers 38 | ? { headers: JSON.stringify(headers) } 39 | : undefined) 40 | }; 41 | } 42 | }) 43 | .option("root", { 44 | default: "build", 45 | describe: "Root directory to serve", 46 | type: "string" 47 | }) 48 | .option("fallbackAssetPath", { 49 | coerce: toAbsolute, 50 | default: "/index.html", 51 | describe: 52 | "Absolute path (relative to the root directory) of the asset to use as fallback when requests don't match any other asset. The asset MUST exist", 53 | type: "string" 54 | }) 55 | .option("fallbackStatusCode", { 56 | default: 200, 57 | describe: "Status code to use when serving the fallback asset", 58 | type: "number" 59 | }) 60 | .option("headers", { 61 | default: "{}", 62 | describe: 63 | "(asset matcher, headers) map specifying which headers to assign to which assets", 64 | type: "string" 65 | }) 66 | .option("configuration", { 67 | default: "{}", 68 | describe: 69 | "JSON configuration object for the static app, i.e. what becomes window.APP_CONFIG", 70 | type: "string" 71 | }) 72 | .option("configurationKeyPrefix", { 73 | default: "APP_CONFIG_", 74 | describe: 75 | "Prefix of the environment variables used to generate the configuration for the static app", 76 | type: "string" 77 | }) 78 | .option("basePath", { 79 | coerce: basePath => toAbsolute(addTrailingSlash(basePath)), 80 | default: "/", 81 | describe: "Static app base path", 82 | type: "string" 83 | }) 84 | .option("port", { 85 | default: 3000, 86 | describe: "Port to listen on", 87 | type: "number" 88 | }) 89 | .wrap(Math.min(120, yargs.terminalWidth())) 90 | .strict() 91 | .parse(argv); 92 | 93 | return { 94 | root: yargsConfig.root, 95 | fallbackAssetPath: yargsConfig.fallbackAssetPath, 96 | fallbackStatusCode: yargsConfig.fallbackStatusCode, 97 | headers: JSON.parse(yargsConfig.headers), 98 | configuration: { 99 | // Environment-variable configurations take precedence over 100 | // config-file configurations 101 | ...JSON.parse(yargsConfig.configuration), 102 | ...getConfigurationFromEnv(env, yargsConfig.configurationKeyPrefix) 103 | }, 104 | basePath: yargsConfig.basePath, 105 | port: yargsConfig.port 106 | }; 107 | } 108 | -------------------------------------------------------------------------------- /src/getExpressApp.ts: -------------------------------------------------------------------------------- 1 | import serveStatic from "@staticdeploy/serve-static"; 2 | import bunyanMiddleware from "bunyan-middleware"; 3 | import express from "express"; 4 | 5 | import IAppServerConfig from "./IAppServerConfig"; 6 | import logger from "./logger"; 7 | 8 | export default async function getExpressApp(config: IAppServerConfig) { 9 | const app = express(); 10 | 11 | // Disable x-powered-by header for security reasons 12 | app.disable("x-powered-by"); 13 | 14 | // Log requests 15 | app.use(bunyanMiddleware({ logger })); 16 | 17 | app.use( 18 | config.basePath, 19 | await serveStatic({ 20 | root: config.root, 21 | fallbackAssetPath: config.fallbackAssetPath, 22 | fallbackStatusCode: config.fallbackStatusCode, 23 | configuration: config.configuration, 24 | headers: config.headers, 25 | basePath: config.basePath 26 | }) 27 | ); 28 | 29 | return app; 30 | } 31 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import getAppServerConfig from "./getAppServerConfig"; 2 | import getExpressApp from "./getExpressApp"; 3 | import logger from "./logger"; 4 | 5 | // Create and start the server 6 | (async () => { 7 | try { 8 | const config = getAppServerConfig(process.argv, process.env); 9 | const app = await getExpressApp(config); 10 | app.listen(config.port, () => { 11 | logger.info(`app-server started on port ${config.port}`); 12 | }); 13 | } catch (err) { 14 | logger.error(err, "Error starting app-server"); 15 | process.exit(1); 16 | } 17 | })(); 18 | -------------------------------------------------------------------------------- /src/logger.ts: -------------------------------------------------------------------------------- 1 | import bunyan from "bunyan"; 2 | 3 | export default bunyan.createLogger({ 4 | name: "@staticdeploy/app-server", 5 | streams: 6 | process.env.NODE_ENV === "test" 7 | ? [] 8 | : [{ level: "info", stream: process.stdout }] 9 | }); 10 | -------------------------------------------------------------------------------- /src/utils/addTrailingSlash.ts: -------------------------------------------------------------------------------- 1 | export default function addTrailingSlash(path: string) { 2 | return /\/$/.test(path) ? path : `${path}/`; 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/getConfigurationFromEnv.ts: -------------------------------------------------------------------------------- 1 | import { IConfiguration } from "@staticdeploy/core"; 2 | import { startsWith } from "lodash"; 3 | 4 | export default function getConfigurationFromEnv( 5 | env: { [key: string]: string | undefined }, 6 | keyPrefix: string 7 | ): IConfiguration { 8 | return Object.keys(env) 9 | .filter(key => env[key] && startsWith(key, keyPrefix)) 10 | .reduce( 11 | (configuration, key) => ({ 12 | ...configuration, 13 | [key.slice(keyPrefix.length)]: env[key] as string 14 | }), 15 | {} 16 | ); 17 | } 18 | -------------------------------------------------------------------------------- /src/utils/readConfigFile.ts: -------------------------------------------------------------------------------- 1 | import { pathExistsSync } from "fs-extra"; 2 | 3 | import logger from "../logger"; 4 | 5 | export default function readConfigFile(configFilePath: string): any { 6 | // If there is no config file, return an empty config object 7 | if (!pathExistsSync(configFilePath)) { 8 | return {}; 9 | } 10 | 11 | // Read and return the config file 12 | try { 13 | return require(configFilePath); 14 | } catch (err) { 15 | // On error, log the error and exit the process 16 | logger.error(err, `failed reading config file ${configFilePath}`); 17 | process.exit(1); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/utils/toAbsolute.ts: -------------------------------------------------------------------------------- 1 | import { join } from "path"; 2 | 3 | export default function toAbsolute(path: string) { 4 | return join("/", path); 5 | } 6 | -------------------------------------------------------------------------------- /test/getAppServerConfig.ts: -------------------------------------------------------------------------------- 1 | import { expect } from "chai"; 2 | import { createTree, destroyTree } from "create-fs-tree"; 3 | import decache from "decache"; 4 | import { tmpdir } from "os"; 5 | import { join } from "path"; 6 | 7 | import getAppServerConfig from "../src/getAppServerConfig"; 8 | 9 | describe("getAppServerConfig", () => { 10 | const configFileDir = join(tmpdir(), "app-server"); 11 | const configFileName = "app-server.config.js"; 12 | const configFilePath = join(configFileDir, configFileName); 13 | afterEach(() => { 14 | try { 15 | decache(configFilePath); 16 | } catch { 17 | // Ignore errors when configFilePath was never required (and cached) 18 | } 19 | destroyTree(configFileDir); 20 | }); 21 | 22 | it("has defaults for all options", () => { 23 | const config = getAppServerConfig([], {}); 24 | expect(config).to.deep.equal({ 25 | basePath: "/", 26 | configuration: {}, 27 | fallbackAssetPath: "/index.html", 28 | fallbackStatusCode: 200, 29 | headers: {}, 30 | port: 3000, 31 | root: "build" 32 | }); 33 | }); 34 | 35 | it("gets the config from a config file, if present", () => { 36 | createTree(configFileDir, { 37 | [configFileName]: ` 38 | module.exports = { 39 | basePath: "/basePath/" 40 | }; 41 | ` 42 | }); 43 | const config = getAppServerConfig(["--config", configFilePath], {}); 44 | expect(config).to.deep.equal({ 45 | basePath: "/basePath/", 46 | configuration: {}, 47 | fallbackAssetPath: "/index.html", 48 | fallbackStatusCode: 200, 49 | headers: {}, 50 | port: 3000, 51 | root: "build" 52 | }); 53 | }); 54 | 55 | describe("parses headers into an object", () => { 56 | it("case: hedaers in config file", () => { 57 | createTree(configFileDir, { 58 | [configFileName]: ` 59 | module.exports = { 60 | headers: { "**": { "x-custom": "x-custom" }} 61 | }; 62 | ` 63 | }); 64 | const config = getAppServerConfig(["--config", configFilePath], {}); 65 | expect(config).to.deep.equal({ 66 | basePath: "/", 67 | configuration: {}, 68 | fallbackAssetPath: "/index.html", 69 | fallbackStatusCode: 200, 70 | headers: { 71 | "**": { 72 | "x-custom": "x-custom" 73 | } 74 | }, 75 | port: 3000, 76 | root: "build" 77 | }); 78 | }); 79 | 80 | it("case: hedaers as cli options", () => { 81 | const config = getAppServerConfig( 82 | [ 83 | "--headers", 84 | JSON.stringify({ "**": { "x-custom": "x-custom" } }) 85 | ], 86 | {} 87 | ); 88 | expect(config).to.deep.equal({ 89 | basePath: "/", 90 | configuration: {}, 91 | fallbackAssetPath: "/index.html", 92 | fallbackStatusCode: 200, 93 | headers: { 94 | "**": { 95 | "x-custom": "x-custom" 96 | } 97 | }, 98 | port: 3000, 99 | root: "build" 100 | }); 101 | }); 102 | }); 103 | 104 | it("gets the configuration from yargs options and from the environment (with priority for the environment)", () => { 105 | const config = getAppServerConfig( 106 | [ 107 | "--configuration", 108 | JSON.stringify({ KEY_0: "CLI_VALUE_0", KEY_1: "CLI_VALUE_1" }) 109 | ], 110 | { 111 | APP_CONFIG_KEY_1: "ENV_VALUE_1", 112 | APP_CONFIG_KEY_2: "ENV_VALUE_2" 113 | } 114 | ); 115 | expect(config).to.deep.equal({ 116 | basePath: "/", 117 | configuration: { 118 | KEY_0: "CLI_VALUE_0", 119 | KEY_1: "ENV_VALUE_1", 120 | KEY_2: "ENV_VALUE_2" 121 | }, 122 | fallbackAssetPath: "/index.html", 123 | fallbackStatusCode: 200, 124 | headers: {}, 125 | port: 3000, 126 | root: "build" 127 | }); 128 | }); 129 | }); 130 | -------------------------------------------------------------------------------- /test/getExpressApp.ts: -------------------------------------------------------------------------------- 1 | import { expect } from "chai"; 2 | import { load } from "cheerio"; 3 | import { createTree, destroyTree } from "create-fs-tree"; 4 | import { tmpdir } from "os"; 5 | import { join } from "path"; 6 | import request from "supertest"; 7 | import { v4 } from "uuid"; 8 | import { VM } from "vm2"; 9 | 10 | import getExpressApp from "../src/getExpressApp"; 11 | 12 | describe("getExpressApp", () => { 13 | // Create static app to serve (and destroy it after tests) 14 | const root = join(tmpdir(), "staticdeploy/app-server/", v4()); 15 | const baseAppServerConfig = { 16 | root: root, 17 | fallbackAssetPath: "/index.html", 18 | fallbackStatusCode: 200, 19 | headers: {}, 20 | basePath: "/", 21 | configuration: {}, 22 | port: 3000 23 | }; 24 | 25 | before(() => { 26 | createTree(root, { 27 | "index.html": '', 28 | "404.html": "404.html", 29 | js: { "index.js": "index.js" } 30 | }); 31 | }); 32 | after(() => { 33 | destroyTree(root); 34 | }); 35 | 36 | describe("serves assets of the static app", () => { 37 | it("case: basePath = /", async () => { 38 | const expressApp = await getExpressApp(baseAppServerConfig); 39 | await request(expressApp) 40 | .get("/") 41 | .expect(200) 42 | .expect(/head/); 43 | await request(expressApp) 44 | .get("/?querystring") 45 | .expect(200) 46 | .expect(/head/); 47 | await request(expressApp) 48 | .get("/#hash") 49 | .expect(200) 50 | .expect(/head/); 51 | await request(expressApp) 52 | .get("/js/index.js") 53 | .expect(200) 54 | .expect("index.js"); 55 | }); 56 | 57 | it("case: basePath = /basePath/", async () => { 58 | const expressApp = await getExpressApp({ 59 | ...baseAppServerConfig, 60 | basePath: "/basePath/" 61 | }); 62 | await request(expressApp) 63 | .get("/basePath/") 64 | .expect(200) 65 | .expect(/head/); 66 | await request(expressApp) 67 | .get("/basePath/?querystring") 68 | .expect(200) 69 | .expect(/head/); 70 | await request(expressApp) 71 | .get("/basePath/#hash") 72 | .expect(200) 73 | .expect(/head/); 74 | await request(expressApp) 75 | .get("/basePath/js/index.js") 76 | .expect(200) 77 | .expect("index.js"); 78 | }); 79 | }); 80 | 81 | it("301 to /basePath/ on GET /basePath", async () => { 82 | const expressApp = await getExpressApp({ 83 | ...baseAppServerConfig, 84 | basePath: "/basePath/" 85 | }); 86 | await request(expressApp) 87 | .get("/basePath") 88 | .expect(301) 89 | .expect("location", "/basePath/"); 90 | await request(expressApp) 91 | .get("/basePath?querystring") 92 | .expect(301) 93 | .expect("location", "/basePath/"); 94 | await request(expressApp) 95 | .get("/basePath#hash") 96 | .expect(301) 97 | .expect("location", "/basePath/"); 98 | await request(expressApp) 99 | .get("/basePath/") 100 | .expect(200) 101 | .expect(/head/); 102 | }); 103 | 104 | describe("serves assets using StaticDeploy's algorithm, that", () => { 105 | describe("allows requesting assets by their non-canonical paths", () => { 106 | it("case: basePath = /", async () => { 107 | const expressApp = await getExpressApp(baseAppServerConfig); 108 | return request(expressApp) 109 | .get("/foo/bar/js/index.js") 110 | .expect(301) 111 | .expect("location", "/js/index.js"); 112 | }); 113 | it("case: basePath = /basePath/", async () => { 114 | const expressApp = await getExpressApp({ 115 | ...baseAppServerConfig, 116 | basePath: "/basePath/" 117 | }); 118 | return request(expressApp) 119 | .get("/basePath/foo/bar/js/index.js") 120 | .expect(301) 121 | .expect("location", "/basePath/js/index.js"); 122 | }); 123 | }); 124 | 125 | it("uses a fallback asset", async () => { 126 | const expressApp = await getExpressApp({ 127 | ...baseAppServerConfig, 128 | fallbackAssetPath: "/404.html", 129 | fallbackStatusCode: 404 130 | }); 131 | return request(expressApp) 132 | .get("/not-existing") 133 | .expect(404) 134 | .expect(/404.html/); 135 | }); 136 | 137 | it("sets the correct content-type header", async () => { 138 | const expressApp = await getExpressApp(baseAppServerConfig); 139 | await request(expressApp) 140 | .get("/") 141 | .expect("content-type", /text\/html/); 142 | await request(expressApp) 143 | .get("/js/index.js") 144 | .expect("content-type", /application\/javascript/); 145 | }); 146 | 147 | it("sets custom headers", async () => { 148 | const expressApp = await getExpressApp({ 149 | ...baseAppServerConfig, 150 | headers: { 151 | "**/*": { "x-custom": "x-custom" } 152 | } 153 | }); 154 | return request(expressApp) 155 | .get("/") 156 | .expect("x-custom", "x-custom"); 157 | }); 158 | 159 | it("configures html files", async () => { 160 | const expressApp = await getExpressApp({ 161 | ...baseAppServerConfig, 162 | configuration: { KEY: "VALUE" } 163 | }); 164 | return request(expressApp) 165 | .get("/") 166 | .then(res => { 167 | const $ = load(res.text); 168 | const scriptContent = $("script#app-config").html(); 169 | const vm = new VM({ sandbox: { window: {} } }); 170 | vm.run(scriptContent!); 171 | const APP_CONFIG = vm.run("window.APP_CONFIG"); 172 | expect(APP_CONFIG).to.deep.equal({ 173 | BASE_PATH: "/", 174 | KEY: "VALUE" 175 | }); 176 | }); 177 | }); 178 | 179 | it("injects the correct BASE_PATH configuration value", async () => { 180 | const expressApp = await getExpressApp({ 181 | ...baseAppServerConfig, 182 | basePath: "/basePath/" 183 | }); 184 | return request(expressApp) 185 | .get("/basePath/") 186 | .then(res => { 187 | const $ = load(res.text); 188 | const scriptContent = $("script#app-config").html(); 189 | const vm = new VM({ sandbox: { window: {} } }); 190 | vm.run(scriptContent!); 191 | const APP_CONFIG = vm.run("window.APP_CONFIG"); 192 | expect(APP_CONFIG).to.deep.equal({ 193 | BASE_PATH: "/basePath/" 194 | }); 195 | }); 196 | }); 197 | 198 | it("whitelists the app-config script in the CSP header, if the header is present", async () => { 199 | const expressApp = await getExpressApp({ 200 | ...baseAppServerConfig, 201 | headers: { 202 | "**/*": { 203 | "content-security-policy": "default-src 'self'" 204 | } 205 | } 206 | }); 207 | await request(expressApp) 208 | .get("/") 209 | .expect( 210 | "content-security-policy", 211 | "default-src 'self'; script-src 'sha256-ZyuLks6agCugBPFxQdY5ymNgF6NVm8BUoX85hOgGVqo='" 212 | ); 213 | }); 214 | }); 215 | }); 216 | -------------------------------------------------------------------------------- /test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "include": ["**/*.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /test/utils/addTrailingSlash.ts: -------------------------------------------------------------------------------- 1 | import { expect } from "chai"; 2 | 3 | import addTrailingSlash from "../../src/utils/addTrailingSlash"; 4 | 5 | describe("util addTrailingSlash", () => { 6 | it("if the path doesn't end with a slash, appends it", () => { 7 | expect(addTrailingSlash("/path")).to.equal("/path/"); 8 | }); 9 | 10 | it("if the path ends with a slash, does nothing", () => { 11 | expect(addTrailingSlash("/path/")).to.equal("/path/"); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /test/utils/getConfigurationFromEnv.ts: -------------------------------------------------------------------------------- 1 | import { expect } from "chai"; 2 | 3 | import getConfigurationFromEnv from "../../src/utils/getConfigurationFromEnv"; 4 | 5 | describe("util getConfigurationFromEnv", () => { 6 | it("extracts non-empty configuration values from the env object", () => { 7 | const configuration = getConfigurationFromEnv( 8 | { 9 | APP_CONFIG_UNDEFINED: undefined, 10 | APP_CONFIG_EMPTY_STRING: "", 11 | APP_CONFIG_KEY_1: "value_1", 12 | APP_CONFIG_KEY_2: "value_2" 13 | }, 14 | "APP_CONFIG_" 15 | ); 16 | expect(configuration).to.deep.equal({ 17 | KEY_1: "value_1", 18 | KEY_2: "value_2" 19 | }); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /test/utils/toAbsolute.ts: -------------------------------------------------------------------------------- 1 | import { expect } from "chai"; 2 | 3 | import toAbsolute from "../../src/utils/toAbsolute"; 4 | 5 | describe("util toAbsolute", () => { 6 | it("makes a non absolute path absolute", () => { 7 | expect(toAbsolute("path/")).to.equal("/path/"); 8 | }); 9 | 10 | it("doesn't change an absolute path", () => { 11 | expect(toAbsolute("/path/")).to.equal("/path/"); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": ["src/**/*.ts"], 3 | "compilerOptions": { 4 | "outDir": "lib", 5 | "declaration": true, 6 | "rootDirs": ["src", "test"], 7 | "target": "es2017", 8 | "module": "commonjs", 9 | "moduleResolution": "node", 10 | "esModuleInterop": true, 11 | "pretty": true, 12 | "sourceMap": true, 13 | "noEmitOnError": true, 14 | "alwaysStrict": true, 15 | "forceConsistentCasingInFileNames": true, 16 | "noFallthroughCasesInSwitch": true, 17 | "noImplicitAny": true, 18 | "noImplicitReturns": true, 19 | "noImplicitThis": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "strictNullChecks": true, 23 | "strictFunctionTypes": true, 24 | "strictPropertyInitialization": true 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["tslint:latest", "tslint-config-prettier"], 3 | "rules": { 4 | "array-type": false, 5 | "object-literal-shorthand": false, 6 | "object-literal-sort-keys": false, 7 | "no-implicit-dependencies": false, 8 | "no-submodule-imports": false, 9 | "variable-name": false 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": 6 | version "7.8.3" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" 8 | integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== 9 | dependencies: 10 | "@babel/highlight" "^7.8.3" 11 | 12 | "@babel/core@^7.7.5": 13 | version "7.8.3" 14 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.3.tgz#30b0ebb4dd1585de6923a0b4d179e0b9f5d82941" 15 | integrity sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA== 16 | dependencies: 17 | "@babel/code-frame" "^7.8.3" 18 | "@babel/generator" "^7.8.3" 19 | "@babel/helpers" "^7.8.3" 20 | "@babel/parser" "^7.8.3" 21 | "@babel/template" "^7.8.3" 22 | "@babel/traverse" "^7.8.3" 23 | "@babel/types" "^7.8.3" 24 | convert-source-map "^1.7.0" 25 | debug "^4.1.0" 26 | gensync "^1.0.0-beta.1" 27 | json5 "^2.1.0" 28 | lodash "^4.17.13" 29 | resolve "^1.3.2" 30 | semver "^5.4.1" 31 | source-map "^0.5.0" 32 | 33 | "@babel/generator@^7.8.3": 34 | version "7.8.3" 35 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.3.tgz#0e22c005b0a94c1c74eafe19ef78ce53a4d45c03" 36 | integrity sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug== 37 | dependencies: 38 | "@babel/types" "^7.8.3" 39 | jsesc "^2.5.1" 40 | lodash "^4.17.13" 41 | source-map "^0.5.0" 42 | 43 | "@babel/helper-function-name@^7.8.3": 44 | version "7.8.3" 45 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" 46 | integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== 47 | dependencies: 48 | "@babel/helper-get-function-arity" "^7.8.3" 49 | "@babel/template" "^7.8.3" 50 | "@babel/types" "^7.8.3" 51 | 52 | "@babel/helper-get-function-arity@^7.8.3": 53 | version "7.8.3" 54 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" 55 | integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== 56 | dependencies: 57 | "@babel/types" "^7.8.3" 58 | 59 | "@babel/helper-split-export-declaration@^7.8.3": 60 | version "7.8.3" 61 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" 62 | integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== 63 | dependencies: 64 | "@babel/types" "^7.8.3" 65 | 66 | "@babel/helpers@^7.8.3": 67 | version "7.8.3" 68 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.3.tgz#382fbb0382ce7c4ce905945ab9641d688336ce85" 69 | integrity sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ== 70 | dependencies: 71 | "@babel/template" "^7.8.3" 72 | "@babel/traverse" "^7.8.3" 73 | "@babel/types" "^7.8.3" 74 | 75 | "@babel/highlight@^7.8.3": 76 | version "7.8.3" 77 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" 78 | integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== 79 | dependencies: 80 | chalk "^2.0.0" 81 | esutils "^2.0.2" 82 | js-tokens "^4.0.0" 83 | 84 | "@babel/parser@^7.7.5", "@babel/parser@^7.8.3": 85 | version "7.8.3" 86 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081" 87 | integrity sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ== 88 | 89 | "@babel/runtime@^7.6.3": 90 | version "7.8.3" 91 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" 92 | integrity sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w== 93 | dependencies: 94 | regenerator-runtime "^0.13.2" 95 | 96 | "@babel/template@^7.7.4", "@babel/template@^7.8.3": 97 | version "7.8.3" 98 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" 99 | integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== 100 | dependencies: 101 | "@babel/code-frame" "^7.8.3" 102 | "@babel/parser" "^7.8.3" 103 | "@babel/types" "^7.8.3" 104 | 105 | "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.3": 106 | version "7.8.3" 107 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.3.tgz#a826215b011c9b4f73f3a893afbc05151358bf9a" 108 | integrity sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg== 109 | dependencies: 110 | "@babel/code-frame" "^7.8.3" 111 | "@babel/generator" "^7.8.3" 112 | "@babel/helper-function-name" "^7.8.3" 113 | "@babel/helper-split-export-declaration" "^7.8.3" 114 | "@babel/parser" "^7.8.3" 115 | "@babel/types" "^7.8.3" 116 | debug "^4.1.0" 117 | globals "^11.1.0" 118 | lodash "^4.17.13" 119 | 120 | "@babel/types@^7.8.3": 121 | version "7.8.3" 122 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" 123 | integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== 124 | dependencies: 125 | esutils "^2.0.2" 126 | lodash "^4.17.13" 127 | to-fast-properties "^2.0.0" 128 | 129 | "@istanbuljs/load-nyc-config@^1.0.0": 130 | version "1.0.0" 131 | resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" 132 | integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== 133 | dependencies: 134 | camelcase "^5.3.1" 135 | find-up "^4.1.0" 136 | js-yaml "^3.13.1" 137 | resolve-from "^5.0.0" 138 | 139 | "@istanbuljs/schema@^0.1.2": 140 | version "0.1.2" 141 | resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" 142 | integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== 143 | 144 | "@staticdeploy/core@^0.15.0": 145 | version "0.15.0" 146 | resolved "https://registry.yarnpkg.com/@staticdeploy/core/-/core-0.15.0.tgz#d3c8ed36add2665bc46317af7dcbff0839c695bd" 147 | integrity sha512-9I5L+QMxpT05bmtzvEwDDTl+zBIaCmX2OtfseaoUfvS9o0yrjT6mVAWi29o7PJrZj65Xuu25HO9hJOHhlx1rWA== 148 | dependencies: 149 | cheerio "^1.0.0-rc.3" 150 | content-security-policy-builder "^2.1.0" 151 | content-security-policy-parser "^0.3.0" 152 | escape-string-regexp "^2.0.0" 153 | lodash "^4.17.15" 154 | md5 "^2.2.1" 155 | micromatch "^4.0.2" 156 | mime "^2.4.4" 157 | validator "^12.1.0" 158 | 159 | "@staticdeploy/http-adapters@^0.15.0": 160 | version "0.15.0" 161 | resolved "https://registry.yarnpkg.com/@staticdeploy/http-adapters/-/http-adapters-0.15.0.tgz#1e919cf6d94e960802a4b5f00772663eec542ce6" 162 | integrity sha512-G68hxdVzeB5786e8UjA7HOD/HvNMexirqbPqqJ3C/lSpw/Ju/CR0yHRjaRA6i/VfzvE+b5Y7MiK2Xt2HIpX1wQ== 163 | dependencies: 164 | "@staticdeploy/core" "^0.15.0" 165 | convexpress "^2.3.0" 166 | express "^4.17.1" 167 | 168 | "@staticdeploy/memory-storages@^0.15.0": 169 | version "0.15.0" 170 | resolved "https://registry.yarnpkg.com/@staticdeploy/memory-storages/-/memory-storages-0.15.0.tgz#c7f8b9507a1a9a4f831339036b5da6fb71ca2d02" 171 | integrity sha512-63TvTSEnV0gZvpIjSfZClJAgLqQE+alzlIlFfgI78gL1C7UXc6Gi848GZ598lCxUZMSqZXp5SRCdLYKdl2sy/w== 172 | dependencies: 173 | "@staticdeploy/core" "^0.15.0" 174 | lodash "^4.17.15" 175 | 176 | "@staticdeploy/serve-static@^0.15.0": 177 | version "0.15.0" 178 | resolved "https://registry.yarnpkg.com/@staticdeploy/serve-static/-/serve-static-0.15.0.tgz#33fdd900f0b7e8314857d564d0e1a709c0ac6229" 179 | integrity sha512-/YEBXx7czVRZhWMukdC1V+62kTwOeSxd46NFGr2YuDbpGaFVWGoGQ++gSbpUT5qMqOXjqFjGho3stgJLUjg3ZA== 180 | dependencies: 181 | "@staticdeploy/core" "^0.15.0" 182 | "@staticdeploy/http-adapters" "^0.15.0" 183 | "@staticdeploy/memory-storages" "^0.15.0" 184 | "@staticdeploy/tar-archiver" "^0.15.0" 185 | express "^4.17.1" 186 | 187 | "@staticdeploy/tar-archiver@^0.15.0": 188 | version "0.15.0" 189 | resolved "https://registry.yarnpkg.com/@staticdeploy/tar-archiver/-/tar-archiver-0.15.0.tgz#ae9bc4beea038de3a3509c785502ef5e4f1e60ef" 190 | integrity sha512-1WeEuBIyYxRkXlfWYFbXjgGP3fIxmux9Q1JIeaGPfsamC4qWcUXRzJY3qm7sb18W0gBN+H+OZjhs63uMgUEalw== 191 | dependencies: 192 | "@staticdeploy/core" "^0.15.0" 193 | bluebird "^3.7.2" 194 | fs-extra "^8.1.0" 195 | recursive-readdir "^2.2.2" 196 | tar "^5.0.5" 197 | 198 | "@types/body-parser@*", "@types/body-parser@^1.16.8": 199 | version "1.17.1" 200 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.1.tgz#18fcf61768fb5c30ccc508c21d6fd2e8b3bf7897" 201 | integrity sha512-RoX2EZjMiFMjZh9lmYrwgoP9RTpAjSHiJxdp4oidAQVO02T7HER3xj9UKue5534ULWeqVEkujhWcyvUce+d68w== 202 | dependencies: 203 | "@types/connect" "*" 204 | "@types/node" "*" 205 | 206 | "@types/bunyan@^1.8.6": 207 | version "1.8.6" 208 | resolved "https://registry.yarnpkg.com/@types/bunyan/-/bunyan-1.8.6.tgz#6527641cca30bedec5feb9ab527b7803b8000582" 209 | integrity sha512-YiozPOOsS6bIuz31ilYqR5SlLif4TBWsousN2aCWLi5233nZSX19tFbcQUPdR7xJ8ypPyxkCGNxg0CIV5n9qxQ== 210 | dependencies: 211 | "@types/node" "*" 212 | 213 | "@types/chai@^4.2.7": 214 | version "4.2.8" 215 | resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.8.tgz#c8d645506db0d15f4aafd4dfa873f443ad87ea59" 216 | integrity sha512-U1bQiWbln41Yo6EeHMr+34aUhvrMVyrhn9lYfPSpLTCrZlGxU4Rtn1bocX+0p2Fc/Jkd2FanCEXdw0WNfHHM0w== 217 | 218 | "@types/cheerio@^0.22.15": 219 | version "0.22.16" 220 | resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.16.tgz#c748a97b8a6f781b04bbda4a552e11b35bcc77e4" 221 | integrity sha512-bSbnU/D4yzFdzLpp3+rcDj0aQQMIRUBNJU7azPxdqMpnexjUSvGJyDuOBQBHeOZh1mMKgsJm6Dy+LLh80Ew4tQ== 222 | dependencies: 223 | "@types/node" "*" 224 | 225 | "@types/color-name@^1.1.1": 226 | version "1.1.1" 227 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 228 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 229 | 230 | "@types/connect@*": 231 | version "3.4.33" 232 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" 233 | integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== 234 | dependencies: 235 | "@types/node" "*" 236 | 237 | "@types/cookiejar@*": 238 | version "2.1.1" 239 | resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" 240 | integrity sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw== 241 | 242 | "@types/express-serve-static-core@*": 243 | version "4.17.2" 244 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.2.tgz#f6f41fa35d42e79dbf6610eccbb2637e6008a0cf" 245 | integrity sha512-El9yMpctM6tORDAiBwZVLMcxoTMcqqRO9dVyYcn7ycLWbvR8klrDn8CAOwRfZujZtWD7yS/mshTdz43jMOejbg== 246 | dependencies: 247 | "@types/node" "*" 248 | "@types/range-parser" "*" 249 | 250 | "@types/express@^4.0.35", "@types/express@^4.11.1", "@types/express@^4.17.2": 251 | version "4.17.2" 252 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.2.tgz#a0fb7a23d8855bac31bc01d5a58cadd9b2173e6c" 253 | integrity sha512-5mHFNyavtLoJmnusB8OKJ5bshSzw+qkMIBAobLrIM48HJvunFva9mOa6aBwh64lBFyNwBbs0xiEFuj4eU/NjCA== 254 | dependencies: 255 | "@types/body-parser" "*" 256 | "@types/express-serve-static-core" "*" 257 | "@types/serve-static" "*" 258 | 259 | "@types/fs-extra@^8.0.1": 260 | version "8.0.1" 261 | resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.0.1.tgz#a2378d6e7e8afea1564e44aafa2e207dadf77686" 262 | integrity sha512-J00cVDALmi/hJOYsunyT52Hva5TnJeKP5yd1r+mH/ZU0mbYZflR0Z5kw5kITtKTRYMhm1JMClOFYdHnQszEvqw== 263 | dependencies: 264 | "@types/node" "*" 265 | 266 | "@types/lodash@^4.14.149": 267 | version "4.14.149" 268 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440" 269 | integrity sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ== 270 | 271 | "@types/mime@*": 272 | version "2.0.1" 273 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" 274 | integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw== 275 | 276 | "@types/mocha@^5.2.7": 277 | version "5.2.7" 278 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" 279 | integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== 280 | 281 | "@types/node@*": 282 | version "13.5.1" 283 | resolved "https://registry.yarnpkg.com/@types/node/-/node-13.5.1.tgz#6fae50892d1841f4b38b298e2f78fb68c5960cb9" 284 | integrity sha512-Jj2W7VWQ2uM83f8Ls5ON9adxN98MvyJsMSASYFuSvrov8RMRY64Ayay7KV35ph1TSGIJ2gG9ZVDdEq3c3zaydA== 285 | 286 | "@types/parse-json@^4.0.0": 287 | version "4.0.0" 288 | resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 289 | integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 290 | 291 | "@types/range-parser@*": 292 | version "1.2.3" 293 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" 294 | integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== 295 | 296 | "@types/serve-static@*": 297 | version "1.13.3" 298 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1" 299 | integrity sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g== 300 | dependencies: 301 | "@types/express-serve-static-core" "*" 302 | "@types/mime" "*" 303 | 304 | "@types/superagent@*": 305 | version "4.1.4" 306 | resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-4.1.4.tgz#63f74955a28073870cfd9c100bcacb26d72b3764" 307 | integrity sha512-SRH2q6/5/nhOkAuLXm3azRGjBYpoKCZWh138Rt1AxSIyE6/1b9uClIH2V+JfyDtjIvgr5yQqYgNUmdpbneJoZQ== 308 | dependencies: 309 | "@types/cookiejar" "*" 310 | "@types/node" "*" 311 | 312 | "@types/supertest@^2.0.8": 313 | version "2.0.8" 314 | resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.8.tgz#23801236e2b85204ed771a8e7c40febba7da2bda" 315 | integrity sha512-wcax7/ip4XSSJRLbNzEIUVy2xjcBIZZAuSd2vtltQfRK7kxhx5WMHbLHkYdxN3wuQCrwpYrg86/9byDjPXoGMA== 316 | dependencies: 317 | "@types/superagent" "*" 318 | 319 | "@types/uuid@^3.4.7": 320 | version "3.4.7" 321 | resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-3.4.7.tgz#51d42247473bc00e38cc8dfaf70d936842a36c03" 322 | integrity sha512-C2j2FWgQkF1ru12SjZJyMaTPxs/f6n90+5G5qNakBxKXjTBc/YTSelHh4Pz1HUDwxFXD9WvpQhOGCDC+/Y4mIQ== 323 | 324 | "@types/yargs-parser@*": 325 | version "15.0.0" 326 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" 327 | integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== 328 | 329 | "@types/yargs@^15.0.2": 330 | version "15.0.2" 331 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.2.tgz#0bf292a0369493cee030e2e4f4ff84f5982b028d" 332 | integrity sha512-hFkuAp58M2xOc1QgJhkFrLMnqa8KWTFRTnzrI1zlEcOfg3DZ0eH3aPAo/N6QlVVu8E4KS4xD1jtEG3rdQYFmIg== 333 | dependencies: 334 | "@types/yargs-parser" "*" 335 | 336 | accepts@~1.3.7: 337 | version "1.3.7" 338 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 339 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 340 | dependencies: 341 | mime-types "~2.1.24" 342 | negotiator "0.6.2" 343 | 344 | agent-base@^4.3.0: 345 | version "4.3.0" 346 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" 347 | integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== 348 | dependencies: 349 | es6-promisify "^5.0.0" 350 | 351 | aggregate-error@^3.0.0: 352 | version "3.0.1" 353 | resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" 354 | integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== 355 | dependencies: 356 | clean-stack "^2.0.0" 357 | indent-string "^4.0.0" 358 | 359 | ajv@^6.6.1: 360 | version "6.11.0" 361 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" 362 | integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA== 363 | dependencies: 364 | fast-deep-equal "^3.1.1" 365 | fast-json-stable-stringify "^2.0.0" 366 | json-schema-traverse "^0.4.1" 367 | uri-js "^4.2.2" 368 | 369 | ansi-colors@3.2.3: 370 | version "3.2.3" 371 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" 372 | integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== 373 | 374 | ansi-regex@^3.0.0: 375 | version "3.0.0" 376 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 377 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 378 | 379 | ansi-regex@^4.1.0: 380 | version "4.1.0" 381 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 382 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 383 | 384 | ansi-regex@^5.0.0: 385 | version "5.0.0" 386 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 387 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 388 | 389 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 390 | version "3.2.1" 391 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 392 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 393 | dependencies: 394 | color-convert "^1.9.0" 395 | 396 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 397 | version "4.2.1" 398 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 399 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 400 | dependencies: 401 | "@types/color-name" "^1.1.1" 402 | color-convert "^2.0.1" 403 | 404 | anymatch@~3.1.1: 405 | version "3.1.1" 406 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 407 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 408 | dependencies: 409 | normalize-path "^3.0.0" 410 | picomatch "^2.0.4" 411 | 412 | append-transform@^2.0.0: 413 | version "2.0.0" 414 | resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" 415 | integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== 416 | dependencies: 417 | default-require-extensions "^3.0.0" 418 | 419 | archy@^1.0.0: 420 | version "1.0.0" 421 | resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" 422 | integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= 423 | 424 | arg@^4.1.0: 425 | version "4.1.2" 426 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.2.tgz#e70c90579e02c63d80e3ad4e31d8bfdb8bd50064" 427 | integrity sha512-+ytCkGcBtHZ3V2r2Z06AncYO8jz46UEamcspGoU8lHcEbpn6J77QK0vdWvChsclg/tM5XIJC5tnjmPp7Eq6Obg== 428 | 429 | argparse@^1.0.7: 430 | version "1.0.10" 431 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 432 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 433 | dependencies: 434 | sprintf-js "~1.0.2" 435 | 436 | argv@^0.0.2: 437 | version "0.0.2" 438 | resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" 439 | integrity sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas= 440 | 441 | array-flatten@1.1.1: 442 | version "1.1.1" 443 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 444 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 445 | 446 | assertion-error@^1.1.0: 447 | version "1.1.0" 448 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 449 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 450 | 451 | asynckit@^0.4.0: 452 | version "0.4.0" 453 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 454 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 455 | 456 | balanced-match@^1.0.0: 457 | version "1.0.0" 458 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 459 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 460 | 461 | binary-extensions@^2.0.0: 462 | version "2.0.0" 463 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" 464 | integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== 465 | 466 | bluebird@^3.7.2: 467 | version "3.7.2" 468 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" 469 | integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== 470 | 471 | body-parser@1.19.0, body-parser@^1.18.2: 472 | version "1.19.0" 473 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 474 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 475 | dependencies: 476 | bytes "3.1.0" 477 | content-type "~1.0.4" 478 | debug "2.6.9" 479 | depd "~1.1.2" 480 | http-errors "1.7.2" 481 | iconv-lite "0.4.24" 482 | on-finished "~2.3.0" 483 | qs "6.7.0" 484 | raw-body "2.4.0" 485 | type-is "~1.6.17" 486 | 487 | boolbase@~1.0.0: 488 | version "1.0.0" 489 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" 490 | integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= 491 | 492 | brace-expansion@^1.1.7: 493 | version "1.1.11" 494 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 495 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 496 | dependencies: 497 | balanced-match "^1.0.0" 498 | concat-map "0.0.1" 499 | 500 | braces@^3.0.1, braces@~3.0.2: 501 | version "3.0.2" 502 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 503 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 504 | dependencies: 505 | fill-range "^7.0.1" 506 | 507 | browser-stdout@1.3.1: 508 | version "1.3.1" 509 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 510 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 511 | 512 | buffer-from@^1.0.0: 513 | version "1.1.1" 514 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 515 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 516 | 517 | builtin-modules@^1.1.1: 518 | version "1.1.1" 519 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 520 | integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= 521 | 522 | bunyan-middleware@^1.0.0: 523 | version "1.0.0" 524 | resolved "https://registry.yarnpkg.com/bunyan-middleware/-/bunyan-middleware-1.0.0.tgz#540b7eda6f5f1838f9d822c5b4b240c706b94a0c" 525 | integrity sha512-+49P7RS9eDR0dqP/3TtmyWCiw6RO1O3w2npw3PQDpxe5p4NQkeTIkTGVJcLqkvsCQRaCnPeekuASCJM5diPwvw== 526 | dependencies: 527 | "@types/bunyan" "^1.8.6" 528 | "@types/express" "^4.0.35" 529 | uuid "^3.0.0" 530 | 531 | bunyan@^1.8.12: 532 | version "1.8.12" 533 | resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.12.tgz#f150f0f6748abdd72aeae84f04403be2ef113797" 534 | integrity sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c= 535 | optionalDependencies: 536 | dtrace-provider "~0.8" 537 | moment "^2.10.6" 538 | mv "~2" 539 | safe-json-stringify "~1" 540 | 541 | bytes@3.1.0: 542 | version "3.1.0" 543 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 544 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 545 | 546 | caching-transform@^4.0.0: 547 | version "4.0.0" 548 | resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" 549 | integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== 550 | dependencies: 551 | hasha "^5.0.0" 552 | make-dir "^3.0.0" 553 | package-hash "^4.0.0" 554 | write-file-atomic "^3.0.0" 555 | 556 | callsite@^1.0.0: 557 | version "1.0.0" 558 | resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" 559 | integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= 560 | 561 | callsites@^3.0.0: 562 | version "3.1.0" 563 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 564 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 565 | 566 | camelcase@^5.0.0, camelcase@^5.3.1: 567 | version "5.3.1" 568 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 569 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 570 | 571 | chai@^4.2.0: 572 | version "4.2.0" 573 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" 574 | integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== 575 | dependencies: 576 | assertion-error "^1.1.0" 577 | check-error "^1.0.2" 578 | deep-eql "^3.0.1" 579 | get-func-name "^2.0.0" 580 | pathval "^1.1.0" 581 | type-detect "^4.0.5" 582 | 583 | chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0: 584 | version "2.4.2" 585 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 586 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 587 | dependencies: 588 | ansi-styles "^3.2.1" 589 | escape-string-regexp "^1.0.5" 590 | supports-color "^5.3.0" 591 | 592 | chalk@^3.0.0: 593 | version "3.0.0" 594 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 595 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 596 | dependencies: 597 | ansi-styles "^4.1.0" 598 | supports-color "^7.1.0" 599 | 600 | charenc@~0.0.1: 601 | version "0.0.2" 602 | resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" 603 | integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= 604 | 605 | check-error@^1.0.2: 606 | version "1.0.2" 607 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 608 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 609 | 610 | cheerio@^1.0.0-rc.3: 611 | version "1.0.0-rc.3" 612 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" 613 | integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== 614 | dependencies: 615 | css-select "~1.2.0" 616 | dom-serializer "~0.1.1" 617 | entities "~1.1.1" 618 | htmlparser2 "^3.9.1" 619 | lodash "^4.15.0" 620 | parse5 "^3.0.1" 621 | 622 | chokidar@3.3.0: 623 | version "3.3.0" 624 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" 625 | integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== 626 | dependencies: 627 | anymatch "~3.1.1" 628 | braces "~3.0.2" 629 | glob-parent "~5.1.0" 630 | is-binary-path "~2.1.0" 631 | is-glob "~4.0.1" 632 | normalize-path "~3.0.0" 633 | readdirp "~3.2.0" 634 | optionalDependencies: 635 | fsevents "~2.1.1" 636 | 637 | chownr@^1.1.3: 638 | version "1.1.3" 639 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" 640 | integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== 641 | 642 | ci-info@^2.0.0: 643 | version "2.0.0" 644 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 645 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 646 | 647 | clean-stack@^2.0.0: 648 | version "2.2.0" 649 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" 650 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== 651 | 652 | cliui@^5.0.0: 653 | version "5.0.0" 654 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 655 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 656 | dependencies: 657 | string-width "^3.1.0" 658 | strip-ansi "^5.2.0" 659 | wrap-ansi "^5.1.0" 660 | 661 | cliui@^6.0.0: 662 | version "6.0.0" 663 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" 664 | integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== 665 | dependencies: 666 | string-width "^4.2.0" 667 | strip-ansi "^6.0.0" 668 | wrap-ansi "^6.2.0" 669 | 670 | codecov@^3.6.2: 671 | version "3.6.2" 672 | resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.6.2.tgz#9503533d744233f6864f8f3ead9435d285ed3f47" 673 | integrity sha512-i1VYZYY3M8Lodk/QRsIWYVimkuhl0oMSiM2itxbTbEIjB0PCSWP1cI7cscu5P0MayggoTl6I/jkXV2go8Ub8/Q== 674 | dependencies: 675 | argv "^0.0.2" 676 | ignore-walk "^3.0.1" 677 | js-yaml "^3.13.1" 678 | teeny-request "^3.11.3" 679 | urlgrey "^0.4.4" 680 | validator "^12.1.0" 681 | 682 | color-convert@^1.9.0: 683 | version "1.9.3" 684 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 685 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 686 | dependencies: 687 | color-name "1.1.3" 688 | 689 | color-convert@^2.0.1: 690 | version "2.0.1" 691 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 692 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 693 | dependencies: 694 | color-name "~1.1.4" 695 | 696 | color-name@1.1.3: 697 | version "1.1.3" 698 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 699 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 700 | 701 | color-name@~1.1.4: 702 | version "1.1.4" 703 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 704 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 705 | 706 | combined-stream@^1.0.6: 707 | version "1.0.8" 708 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 709 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 710 | dependencies: 711 | delayed-stream "~1.0.0" 712 | 713 | commander@^2.12.1: 714 | version "2.20.3" 715 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 716 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 717 | 718 | commondir@^1.0.1: 719 | version "1.0.1" 720 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 721 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 722 | 723 | compare-versions@^3.5.1: 724 | version "3.5.1" 725 | resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.5.1.tgz#26e1f5cf0d48a77eced5046b9f67b6b61075a393" 726 | integrity sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg== 727 | 728 | component-emitter@^1.2.0: 729 | version "1.3.0" 730 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" 731 | integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== 732 | 733 | concat-map@0.0.1: 734 | version "0.0.1" 735 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 736 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 737 | 738 | content-disposition@0.5.3: 739 | version "0.5.3" 740 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 741 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 742 | dependencies: 743 | safe-buffer "5.1.2" 744 | 745 | content-security-policy-builder@^2.1.0: 746 | version "2.1.0" 747 | resolved "https://registry.yarnpkg.com/content-security-policy-builder/-/content-security-policy-builder-2.1.0.tgz#0a2364d769a3d7014eec79ff7699804deb8cfcbb" 748 | integrity sha512-/MtLWhJVvJNkA9dVLAp6fg9LxD2gfI6R2Fi1hPmfjYXSahJJzcfvoeDOxSyp4NvxMuwWv3WMssE9o31DoULHrQ== 749 | 750 | content-security-policy-parser@^0.3.0: 751 | version "0.3.0" 752 | resolved "https://registry.yarnpkg.com/content-security-policy-parser/-/content-security-policy-parser-0.3.0.tgz#a14d4ed54c8d098621ba46cabcd20a78be0c691e" 753 | integrity sha512-ub90B4t9EfDPv3DCH7vEwGe4tVMkSm4Ow1HsmvmEQwinDfpTEDmkuJVa5WpzHDTt2bUirNRZuzL6S0msASlJhg== 754 | 755 | content-type@~1.0.4: 756 | version "1.0.4" 757 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 758 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 759 | 760 | convert-source-map@^1.7.0: 761 | version "1.7.0" 762 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" 763 | integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== 764 | dependencies: 765 | safe-buffer "~5.1.1" 766 | 767 | convexpress@^2.3.0: 768 | version "2.3.0" 769 | resolved "https://registry.yarnpkg.com/convexpress/-/convexpress-2.3.0.tgz#2a76d1c4d619f7c34b5e095faafc0a740becac88" 770 | integrity sha512-8wyW1SIHN2cJb1R2oWYs6RnK75+ZsXBm0+upg7z9+9DUUGP+GaGu3wdT96mH+X+ykQNkErrjgqZ8/dkH4WEBgw== 771 | dependencies: 772 | "@types/body-parser" "^1.16.8" 773 | "@types/express" "^4.11.1" 774 | ajv "^6.6.1" 775 | body-parser "^1.18.2" 776 | express "^4.16.3" 777 | glob "^7.1.2" 778 | ramda "^0.26.1" 779 | swagger-ui-express "^4.0.2" 780 | type-is "^1.6.16" 781 | 782 | cookie-signature@1.0.6: 783 | version "1.0.6" 784 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 785 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 786 | 787 | cookie@0.4.0: 788 | version "0.4.0" 789 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 790 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 791 | 792 | cookiejar@^2.1.0: 793 | version "2.1.2" 794 | resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" 795 | integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== 796 | 797 | core-util-is@~1.0.0: 798 | version "1.0.2" 799 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 800 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 801 | 802 | cosmiconfig@^6.0.0: 803 | version "6.0.0" 804 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" 805 | integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== 806 | dependencies: 807 | "@types/parse-json" "^4.0.0" 808 | import-fresh "^3.1.0" 809 | parse-json "^5.0.0" 810 | path-type "^4.0.0" 811 | yaml "^1.7.2" 812 | 813 | create-fs-tree@^1.0.0: 814 | version "1.0.0" 815 | resolved "https://registry.yarnpkg.com/create-fs-tree/-/create-fs-tree-1.0.0.tgz#f9dde6938182cbd49889cfa6f452c7d9deae4300" 816 | integrity sha1-+d3mk4GCy9SYic+m9FLH2d6uQwA= 817 | dependencies: 818 | fs-extra "^3.0.1" 819 | 820 | cross-spawn@^7.0.0: 821 | version "7.0.1" 822 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" 823 | integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== 824 | dependencies: 825 | path-key "^3.1.0" 826 | shebang-command "^2.0.0" 827 | which "^2.0.1" 828 | 829 | crypt@~0.0.1: 830 | version "0.0.2" 831 | resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" 832 | integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= 833 | 834 | css-select@~1.2.0: 835 | version "1.2.0" 836 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" 837 | integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= 838 | dependencies: 839 | boolbase "~1.0.0" 840 | css-what "2.1" 841 | domutils "1.5.1" 842 | nth-check "~1.0.1" 843 | 844 | css-what@2.1: 845 | version "2.1.3" 846 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" 847 | integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== 848 | 849 | debug@2.6.9: 850 | version "2.6.9" 851 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 852 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 853 | dependencies: 854 | ms "2.0.0" 855 | 856 | debug@3.2.6, debug@^3.1.0: 857 | version "3.2.6" 858 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 859 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 860 | dependencies: 861 | ms "^2.1.1" 862 | 863 | debug@^4.1.0, debug@^4.1.1: 864 | version "4.1.1" 865 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 866 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 867 | dependencies: 868 | ms "^2.1.1" 869 | 870 | decache@^4.5.1: 871 | version "4.5.1" 872 | resolved "https://registry.yarnpkg.com/decache/-/decache-4.5.1.tgz#94a977a88a4188672c96550ec4889582ceecdf49" 873 | integrity sha512-5J37nATc6FmOTLbcsr9qx7Nm28qQyg1SK4xyEHqM0IBkNhWFp0Sm+vKoWYHD8wq+OUEb9jLyaKFfzzd1A9hcoA== 874 | dependencies: 875 | callsite "^1.0.0" 876 | 877 | decamelize@^1.2.0: 878 | version "1.2.0" 879 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 880 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 881 | 882 | deep-eql@^3.0.1: 883 | version "3.0.1" 884 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 885 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 886 | dependencies: 887 | type-detect "^4.0.0" 888 | 889 | default-require-extensions@^3.0.0: 890 | version "3.0.0" 891 | resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" 892 | integrity sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg== 893 | dependencies: 894 | strip-bom "^4.0.0" 895 | 896 | define-properties@^1.1.2, define-properties@^1.1.3: 897 | version "1.1.3" 898 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 899 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 900 | dependencies: 901 | object-keys "^1.0.12" 902 | 903 | delayed-stream@~1.0.0: 904 | version "1.0.0" 905 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 906 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 907 | 908 | depd@~1.1.2: 909 | version "1.1.2" 910 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 911 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 912 | 913 | destroy@~1.0.4: 914 | version "1.0.4" 915 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 916 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 917 | 918 | diff@3.5.0: 919 | version "3.5.0" 920 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 921 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 922 | 923 | diff@^4.0.1: 924 | version "4.0.2" 925 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 926 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 927 | 928 | dom-serializer@0: 929 | version "0.2.2" 930 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" 931 | integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== 932 | dependencies: 933 | domelementtype "^2.0.1" 934 | entities "^2.0.0" 935 | 936 | dom-serializer@~0.1.1: 937 | version "0.1.1" 938 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" 939 | integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== 940 | dependencies: 941 | domelementtype "^1.3.0" 942 | entities "^1.1.1" 943 | 944 | domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: 945 | version "1.3.1" 946 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" 947 | integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== 948 | 949 | domelementtype@^2.0.1: 950 | version "2.0.1" 951 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" 952 | integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== 953 | 954 | domhandler@^2.3.0: 955 | version "2.4.2" 956 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" 957 | integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== 958 | dependencies: 959 | domelementtype "1" 960 | 961 | domutils@1.5.1: 962 | version "1.5.1" 963 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" 964 | integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= 965 | dependencies: 966 | dom-serializer "0" 967 | domelementtype "1" 968 | 969 | domutils@^1.5.1: 970 | version "1.7.0" 971 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" 972 | integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== 973 | dependencies: 974 | dom-serializer "0" 975 | domelementtype "1" 976 | 977 | dtrace-provider@~0.8: 978 | version "0.8.8" 979 | resolved "https://registry.yarnpkg.com/dtrace-provider/-/dtrace-provider-0.8.8.tgz#2996d5490c37e1347be263b423ed7b297fb0d97e" 980 | integrity sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg== 981 | dependencies: 982 | nan "^2.14.0" 983 | 984 | ee-first@1.1.1: 985 | version "1.1.1" 986 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 987 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 988 | 989 | emoji-regex@^7.0.1: 990 | version "7.0.3" 991 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 992 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 993 | 994 | emoji-regex@^8.0.0: 995 | version "8.0.0" 996 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 997 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 998 | 999 | encodeurl@~1.0.2: 1000 | version "1.0.2" 1001 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 1002 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 1003 | 1004 | entities@^1.1.1, entities@~1.1.1: 1005 | version "1.1.2" 1006 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" 1007 | integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== 1008 | 1009 | entities@^2.0.0: 1010 | version "2.0.0" 1011 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" 1012 | integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== 1013 | 1014 | error-ex@^1.3.1: 1015 | version "1.3.2" 1016 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 1017 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 1018 | dependencies: 1019 | is-arrayish "^0.2.1" 1020 | 1021 | es-abstract@^1.17.0-next.1: 1022 | version "1.17.4" 1023 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" 1024 | integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== 1025 | dependencies: 1026 | es-to-primitive "^1.2.1" 1027 | function-bind "^1.1.1" 1028 | has "^1.0.3" 1029 | has-symbols "^1.0.1" 1030 | is-callable "^1.1.5" 1031 | is-regex "^1.0.5" 1032 | object-inspect "^1.7.0" 1033 | object-keys "^1.1.1" 1034 | object.assign "^4.1.0" 1035 | string.prototype.trimleft "^2.1.1" 1036 | string.prototype.trimright "^2.1.1" 1037 | 1038 | es-to-primitive@^1.2.1: 1039 | version "1.2.1" 1040 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 1041 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 1042 | dependencies: 1043 | is-callable "^1.1.4" 1044 | is-date-object "^1.0.1" 1045 | is-symbol "^1.0.2" 1046 | 1047 | es6-error@^4.0.1: 1048 | version "4.1.1" 1049 | resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" 1050 | integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== 1051 | 1052 | es6-promise@^4.0.3: 1053 | version "4.2.8" 1054 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" 1055 | integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== 1056 | 1057 | es6-promisify@^5.0.0: 1058 | version "5.0.0" 1059 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 1060 | integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= 1061 | dependencies: 1062 | es6-promise "^4.0.3" 1063 | 1064 | escape-html@~1.0.3: 1065 | version "1.0.3" 1066 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 1067 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 1068 | 1069 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: 1070 | version "1.0.5" 1071 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1072 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1073 | 1074 | escape-string-regexp@^2.0.0: 1075 | version "2.0.0" 1076 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 1077 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 1078 | 1079 | esprima@^4.0.0: 1080 | version "4.0.1" 1081 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1082 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1083 | 1084 | esutils@^2.0.2: 1085 | version "2.0.3" 1086 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1087 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1088 | 1089 | etag@~1.8.1: 1090 | version "1.8.1" 1091 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 1092 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 1093 | 1094 | express@^4.16.3, express@^4.17.1: 1095 | version "4.17.1" 1096 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 1097 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 1098 | dependencies: 1099 | accepts "~1.3.7" 1100 | array-flatten "1.1.1" 1101 | body-parser "1.19.0" 1102 | content-disposition "0.5.3" 1103 | content-type "~1.0.4" 1104 | cookie "0.4.0" 1105 | cookie-signature "1.0.6" 1106 | debug "2.6.9" 1107 | depd "~1.1.2" 1108 | encodeurl "~1.0.2" 1109 | escape-html "~1.0.3" 1110 | etag "~1.8.1" 1111 | finalhandler "~1.1.2" 1112 | fresh "0.5.2" 1113 | merge-descriptors "1.0.1" 1114 | methods "~1.1.2" 1115 | on-finished "~2.3.0" 1116 | parseurl "~1.3.3" 1117 | path-to-regexp "0.1.7" 1118 | proxy-addr "~2.0.5" 1119 | qs "6.7.0" 1120 | range-parser "~1.2.1" 1121 | safe-buffer "5.1.2" 1122 | send "0.17.1" 1123 | serve-static "1.14.1" 1124 | setprototypeof "1.1.1" 1125 | statuses "~1.5.0" 1126 | type-is "~1.6.18" 1127 | utils-merge "1.0.1" 1128 | vary "~1.1.2" 1129 | 1130 | extend@^3.0.0: 1131 | version "3.0.2" 1132 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 1133 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 1134 | 1135 | fast-deep-equal@^3.1.1: 1136 | version "3.1.1" 1137 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" 1138 | integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== 1139 | 1140 | fast-json-stable-stringify@^2.0.0: 1141 | version "2.1.0" 1142 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1143 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1144 | 1145 | fill-range@^7.0.1: 1146 | version "7.0.1" 1147 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1148 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1149 | dependencies: 1150 | to-regex-range "^5.0.1" 1151 | 1152 | finalhandler@~1.1.2: 1153 | version "1.1.2" 1154 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 1155 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 1156 | dependencies: 1157 | debug "2.6.9" 1158 | encodeurl "~1.0.2" 1159 | escape-html "~1.0.3" 1160 | on-finished "~2.3.0" 1161 | parseurl "~1.3.3" 1162 | statuses "~1.5.0" 1163 | unpipe "~1.0.0" 1164 | 1165 | find-cache-dir@^3.2.0: 1166 | version "3.2.0" 1167 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.2.0.tgz#e7fe44c1abc1299f516146e563108fd1006c1874" 1168 | integrity sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg== 1169 | dependencies: 1170 | commondir "^1.0.1" 1171 | make-dir "^3.0.0" 1172 | pkg-dir "^4.1.0" 1173 | 1174 | find-up@3.0.0, find-up@^3.0.0: 1175 | version "3.0.0" 1176 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 1177 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 1178 | dependencies: 1179 | locate-path "^3.0.0" 1180 | 1181 | find-up@^4.0.0, find-up@^4.1.0: 1182 | version "4.1.0" 1183 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 1184 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 1185 | dependencies: 1186 | locate-path "^5.0.0" 1187 | path-exists "^4.0.0" 1188 | 1189 | find-versions@^3.2.0: 1190 | version "3.2.0" 1191 | resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" 1192 | integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== 1193 | dependencies: 1194 | semver-regex "^2.0.0" 1195 | 1196 | flat@^4.1.0: 1197 | version "4.1.0" 1198 | resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" 1199 | integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== 1200 | dependencies: 1201 | is-buffer "~2.0.3" 1202 | 1203 | foreground-child@^2.0.0: 1204 | version "2.0.0" 1205 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" 1206 | integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== 1207 | dependencies: 1208 | cross-spawn "^7.0.0" 1209 | signal-exit "^3.0.2" 1210 | 1211 | form-data@^2.3.1: 1212 | version "2.5.1" 1213 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" 1214 | integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== 1215 | dependencies: 1216 | asynckit "^0.4.0" 1217 | combined-stream "^1.0.6" 1218 | mime-types "^2.1.12" 1219 | 1220 | formidable@^1.2.0: 1221 | version "1.2.1" 1222 | resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659" 1223 | integrity sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg== 1224 | 1225 | forwarded@~0.1.2: 1226 | version "0.1.2" 1227 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 1228 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 1229 | 1230 | fresh@0.5.2: 1231 | version "0.5.2" 1232 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 1233 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 1234 | 1235 | fromentries@^1.2.0: 1236 | version "1.2.0" 1237 | resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.2.0.tgz#e6aa06f240d6267f913cea422075ef88b63e7897" 1238 | integrity sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ== 1239 | 1240 | fs-extra@^3.0.1: 1241 | version "3.0.1" 1242 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" 1243 | integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= 1244 | dependencies: 1245 | graceful-fs "^4.1.2" 1246 | jsonfile "^3.0.0" 1247 | universalify "^0.1.0" 1248 | 1249 | fs-extra@^8.1.0: 1250 | version "8.1.0" 1251 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 1252 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 1253 | dependencies: 1254 | graceful-fs "^4.2.0" 1255 | jsonfile "^4.0.0" 1256 | universalify "^0.1.0" 1257 | 1258 | fs-minipass@^2.0.0: 1259 | version "2.1.0" 1260 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" 1261 | integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== 1262 | dependencies: 1263 | minipass "^3.0.0" 1264 | 1265 | fs.realpath@^1.0.0: 1266 | version "1.0.0" 1267 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1268 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1269 | 1270 | fsevents@~2.1.1: 1271 | version "2.1.2" 1272 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" 1273 | integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== 1274 | 1275 | function-bind@^1.1.1: 1276 | version "1.1.1" 1277 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1278 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1279 | 1280 | gensync@^1.0.0-beta.1: 1281 | version "1.0.0-beta.1" 1282 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" 1283 | integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== 1284 | 1285 | get-caller-file@^2.0.1: 1286 | version "2.0.5" 1287 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1288 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1289 | 1290 | get-func-name@^2.0.0: 1291 | version "2.0.0" 1292 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 1293 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 1294 | 1295 | glob-parent@~5.1.0: 1296 | version "5.1.0" 1297 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" 1298 | integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== 1299 | dependencies: 1300 | is-glob "^4.0.1" 1301 | 1302 | glob@7.1.3: 1303 | version "7.1.3" 1304 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 1305 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 1306 | dependencies: 1307 | fs.realpath "^1.0.0" 1308 | inflight "^1.0.4" 1309 | inherits "2" 1310 | minimatch "^3.0.4" 1311 | once "^1.3.0" 1312 | path-is-absolute "^1.0.0" 1313 | 1314 | glob@^6.0.1: 1315 | version "6.0.4" 1316 | resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" 1317 | integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI= 1318 | dependencies: 1319 | inflight "^1.0.4" 1320 | inherits "2" 1321 | minimatch "2 || 3" 1322 | once "^1.3.0" 1323 | path-is-absolute "^1.0.0" 1324 | 1325 | glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: 1326 | version "7.1.6" 1327 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 1328 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 1329 | dependencies: 1330 | fs.realpath "^1.0.0" 1331 | inflight "^1.0.4" 1332 | inherits "2" 1333 | minimatch "^3.0.4" 1334 | once "^1.3.0" 1335 | path-is-absolute "^1.0.0" 1336 | 1337 | globals@^11.1.0: 1338 | version "11.12.0" 1339 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1340 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1341 | 1342 | graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: 1343 | version "4.2.3" 1344 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 1345 | integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== 1346 | 1347 | growl@1.10.5: 1348 | version "1.10.5" 1349 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 1350 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 1351 | 1352 | has-flag@^3.0.0: 1353 | version "3.0.0" 1354 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1355 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1356 | 1357 | has-flag@^4.0.0: 1358 | version "4.0.0" 1359 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1360 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1361 | 1362 | has-symbols@^1.0.0, has-symbols@^1.0.1: 1363 | version "1.0.1" 1364 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 1365 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 1366 | 1367 | has@^1.0.3: 1368 | version "1.0.3" 1369 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1370 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1371 | dependencies: 1372 | function-bind "^1.1.1" 1373 | 1374 | hasha@^5.0.0: 1375 | version "5.1.0" 1376 | resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.1.0.tgz#dd05ccdfcfe7dab626247ce2a58efe461922f4ca" 1377 | integrity sha512-OFPDWmzPN1l7atOV1TgBVmNtBxaIysToK6Ve9DK+vT6pYuklw/nPNT+HJbZi0KDcI6vWB+9tgvZ5YD7fA3CXcA== 1378 | dependencies: 1379 | is-stream "^2.0.0" 1380 | type-fest "^0.8.0" 1381 | 1382 | he@1.2.0: 1383 | version "1.2.0" 1384 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 1385 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 1386 | 1387 | html-escaper@^2.0.0: 1388 | version "2.0.0" 1389 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" 1390 | integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== 1391 | 1392 | htmlparser2@^3.9.1: 1393 | version "3.10.1" 1394 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" 1395 | integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== 1396 | dependencies: 1397 | domelementtype "^1.3.1" 1398 | domhandler "^2.3.0" 1399 | domutils "^1.5.1" 1400 | entities "^1.1.1" 1401 | inherits "^2.0.1" 1402 | readable-stream "^3.1.1" 1403 | 1404 | http-errors@1.7.2: 1405 | version "1.7.2" 1406 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 1407 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 1408 | dependencies: 1409 | depd "~1.1.2" 1410 | inherits "2.0.3" 1411 | setprototypeof "1.1.1" 1412 | statuses ">= 1.5.0 < 2" 1413 | toidentifier "1.0.0" 1414 | 1415 | http-errors@~1.7.2: 1416 | version "1.7.3" 1417 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 1418 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 1419 | dependencies: 1420 | depd "~1.1.2" 1421 | inherits "2.0.4" 1422 | setprototypeof "1.1.1" 1423 | statuses ">= 1.5.0 < 2" 1424 | toidentifier "1.0.0" 1425 | 1426 | https-proxy-agent@^2.2.1: 1427 | version "2.2.4" 1428 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" 1429 | integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== 1430 | dependencies: 1431 | agent-base "^4.3.0" 1432 | debug "^3.1.0" 1433 | 1434 | husky@^4.2.1: 1435 | version "4.2.1" 1436 | resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.1.tgz#b09f1bd9129e6c323cc515dc17081d0615e2d7c1" 1437 | integrity sha512-Qa0lRreeIf4Tl92sSs42ER6qc3hzoyQPPorzOrFWfPEVbdi6LuvJEqWKPk905fOWIR76iBpp7ECZNIwk+a8xuQ== 1438 | dependencies: 1439 | chalk "^3.0.0" 1440 | ci-info "^2.0.0" 1441 | compare-versions "^3.5.1" 1442 | cosmiconfig "^6.0.0" 1443 | find-versions "^3.2.0" 1444 | opencollective-postinstall "^2.0.2" 1445 | pkg-dir "^4.2.0" 1446 | please-upgrade-node "^3.2.0" 1447 | slash "^3.0.0" 1448 | which-pm-runs "^1.0.0" 1449 | 1450 | iconv-lite@0.4.24: 1451 | version "0.4.24" 1452 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1453 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1454 | dependencies: 1455 | safer-buffer ">= 2.1.2 < 3" 1456 | 1457 | ignore-walk@^3.0.1: 1458 | version "3.0.3" 1459 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" 1460 | integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== 1461 | dependencies: 1462 | minimatch "^3.0.4" 1463 | 1464 | import-fresh@^3.1.0: 1465 | version "3.2.1" 1466 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 1467 | integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== 1468 | dependencies: 1469 | parent-module "^1.0.0" 1470 | resolve-from "^4.0.0" 1471 | 1472 | imurmurhash@^0.1.4: 1473 | version "0.1.4" 1474 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1475 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1476 | 1477 | indent-string@^4.0.0: 1478 | version "4.0.0" 1479 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 1480 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 1481 | 1482 | inflight@^1.0.4: 1483 | version "1.0.6" 1484 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1485 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1486 | dependencies: 1487 | once "^1.3.0" 1488 | wrappy "1" 1489 | 1490 | inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: 1491 | version "2.0.4" 1492 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1493 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1494 | 1495 | inherits@2.0.3: 1496 | version "2.0.3" 1497 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1498 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1499 | 1500 | ipaddr.js@1.9.0: 1501 | version "1.9.0" 1502 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" 1503 | integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== 1504 | 1505 | is-arrayish@^0.2.1: 1506 | version "0.2.1" 1507 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1508 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1509 | 1510 | is-binary-path@~2.1.0: 1511 | version "2.1.0" 1512 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1513 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1514 | dependencies: 1515 | binary-extensions "^2.0.0" 1516 | 1517 | is-buffer@~1.1.1: 1518 | version "1.1.6" 1519 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1520 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 1521 | 1522 | is-buffer@~2.0.3: 1523 | version "2.0.4" 1524 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" 1525 | integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== 1526 | 1527 | is-callable@^1.1.4, is-callable@^1.1.5: 1528 | version "1.1.5" 1529 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" 1530 | integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== 1531 | 1532 | is-date-object@^1.0.1: 1533 | version "1.0.2" 1534 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 1535 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 1536 | 1537 | is-extglob@^2.1.1: 1538 | version "2.1.1" 1539 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1540 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1541 | 1542 | is-fullwidth-code-point@^2.0.0: 1543 | version "2.0.0" 1544 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1545 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1546 | 1547 | is-fullwidth-code-point@^3.0.0: 1548 | version "3.0.0" 1549 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1550 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1551 | 1552 | is-glob@^4.0.1, is-glob@~4.0.1: 1553 | version "4.0.1" 1554 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1555 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1556 | dependencies: 1557 | is-extglob "^2.1.1" 1558 | 1559 | is-number@^7.0.0: 1560 | version "7.0.0" 1561 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1562 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1563 | 1564 | is-regex@^1.0.5: 1565 | version "1.0.5" 1566 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" 1567 | integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== 1568 | dependencies: 1569 | has "^1.0.3" 1570 | 1571 | is-stream@^2.0.0: 1572 | version "2.0.0" 1573 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" 1574 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== 1575 | 1576 | is-symbol@^1.0.2: 1577 | version "1.0.3" 1578 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 1579 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 1580 | dependencies: 1581 | has-symbols "^1.0.1" 1582 | 1583 | is-typedarray@^1.0.0: 1584 | version "1.0.0" 1585 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1586 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 1587 | 1588 | is-windows@^1.0.2: 1589 | version "1.0.2" 1590 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 1591 | integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== 1592 | 1593 | isarray@~1.0.0: 1594 | version "1.0.0" 1595 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1596 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1597 | 1598 | isexe@^2.0.0: 1599 | version "2.0.0" 1600 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1601 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1602 | 1603 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: 1604 | version "3.0.0" 1605 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" 1606 | integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== 1607 | 1608 | istanbul-lib-hook@^3.0.0: 1609 | version "3.0.0" 1610 | resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" 1611 | integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== 1612 | dependencies: 1613 | append-transform "^2.0.0" 1614 | 1615 | istanbul-lib-instrument@^4.0.0: 1616 | version "4.0.0" 1617 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.0.tgz#53321a7970f076262fd3292c8f9b2e4ac544aae1" 1618 | integrity sha512-Nm4wVHdo7ZXSG30KjZ2Wl5SU/Bw7bDx1PdaiIFzEStdjs0H12mOTncn1GVYuqQSaZxpg87VGBRsVRPGD2cD1AQ== 1619 | dependencies: 1620 | "@babel/core" "^7.7.5" 1621 | "@babel/parser" "^7.7.5" 1622 | "@babel/template" "^7.7.4" 1623 | "@babel/traverse" "^7.7.4" 1624 | "@istanbuljs/schema" "^0.1.2" 1625 | istanbul-lib-coverage "^3.0.0" 1626 | semver "^6.3.0" 1627 | 1628 | istanbul-lib-processinfo@^2.0.2: 1629 | version "2.0.2" 1630 | resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz#e1426514662244b2f25df728e8fd1ba35fe53b9c" 1631 | integrity sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw== 1632 | dependencies: 1633 | archy "^1.0.0" 1634 | cross-spawn "^7.0.0" 1635 | istanbul-lib-coverage "^3.0.0-alpha.1" 1636 | make-dir "^3.0.0" 1637 | p-map "^3.0.0" 1638 | rimraf "^3.0.0" 1639 | uuid "^3.3.3" 1640 | 1641 | istanbul-lib-report@^3.0.0: 1642 | version "3.0.0" 1643 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" 1644 | integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== 1645 | dependencies: 1646 | istanbul-lib-coverage "^3.0.0" 1647 | make-dir "^3.0.0" 1648 | supports-color "^7.1.0" 1649 | 1650 | istanbul-lib-source-maps@^4.0.0: 1651 | version "4.0.0" 1652 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" 1653 | integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== 1654 | dependencies: 1655 | debug "^4.1.1" 1656 | istanbul-lib-coverage "^3.0.0" 1657 | source-map "^0.6.1" 1658 | 1659 | istanbul-reports@^3.0.0: 1660 | version "3.0.0" 1661 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.0.tgz#d4d16d035db99581b6194e119bbf36c963c5eb70" 1662 | integrity sha512-2osTcC8zcOSUkImzN2EWQta3Vdi4WjjKw99P2yWx5mLnigAM0Rd5uYFn1cf2i/Ois45GkNjaoTqc5CxgMSX80A== 1663 | dependencies: 1664 | html-escaper "^2.0.0" 1665 | istanbul-lib-report "^3.0.0" 1666 | 1667 | js-tokens@^4.0.0: 1668 | version "4.0.0" 1669 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1670 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1671 | 1672 | js-yaml@3.13.1, js-yaml@^3.13.1: 1673 | version "3.13.1" 1674 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1675 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1676 | dependencies: 1677 | argparse "^1.0.7" 1678 | esprima "^4.0.0" 1679 | 1680 | jsesc@^2.5.1: 1681 | version "2.5.2" 1682 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1683 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1684 | 1685 | json-parse-better-errors@^1.0.1: 1686 | version "1.0.2" 1687 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 1688 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 1689 | 1690 | json-schema-traverse@^0.4.1: 1691 | version "0.4.1" 1692 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1693 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1694 | 1695 | json5@^2.1.0: 1696 | version "2.1.1" 1697 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" 1698 | integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== 1699 | dependencies: 1700 | minimist "^1.2.0" 1701 | 1702 | jsonfile@^3.0.0: 1703 | version "3.0.1" 1704 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" 1705 | integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= 1706 | optionalDependencies: 1707 | graceful-fs "^4.1.6" 1708 | 1709 | jsonfile@^4.0.0: 1710 | version "4.0.0" 1711 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1712 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 1713 | optionalDependencies: 1714 | graceful-fs "^4.1.6" 1715 | 1716 | lines-and-columns@^1.1.6: 1717 | version "1.1.6" 1718 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 1719 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 1720 | 1721 | locate-path@^3.0.0: 1722 | version "3.0.0" 1723 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1724 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1725 | dependencies: 1726 | p-locate "^3.0.0" 1727 | path-exists "^3.0.0" 1728 | 1729 | locate-path@^5.0.0: 1730 | version "5.0.0" 1731 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1732 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1733 | dependencies: 1734 | p-locate "^4.1.0" 1735 | 1736 | lodash.flattendeep@^4.4.0: 1737 | version "4.4.0" 1738 | resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" 1739 | integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= 1740 | 1741 | lodash@^4.15.0, lodash@^4.17.13, lodash@^4.17.15: 1742 | version "4.17.15" 1743 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 1744 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 1745 | 1746 | log-symbols@2.2.0: 1747 | version "2.2.0" 1748 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" 1749 | integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== 1750 | dependencies: 1751 | chalk "^2.0.1" 1752 | 1753 | make-dir@^3.0.0: 1754 | version "3.0.0" 1755 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" 1756 | integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== 1757 | dependencies: 1758 | semver "^6.0.0" 1759 | 1760 | make-error@^1.1.1: 1761 | version "1.3.5" 1762 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" 1763 | integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== 1764 | 1765 | md5@^2.2.1: 1766 | version "2.2.1" 1767 | resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" 1768 | integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk= 1769 | dependencies: 1770 | charenc "~0.0.1" 1771 | crypt "~0.0.1" 1772 | is-buffer "~1.1.1" 1773 | 1774 | media-typer@0.3.0: 1775 | version "0.3.0" 1776 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1777 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 1778 | 1779 | merge-descriptors@1.0.1: 1780 | version "1.0.1" 1781 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1782 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 1783 | 1784 | methods@^1.1.1, methods@^1.1.2, methods@~1.1.2: 1785 | version "1.1.2" 1786 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1787 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 1788 | 1789 | micromatch@^4.0.2: 1790 | version "4.0.2" 1791 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" 1792 | integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== 1793 | dependencies: 1794 | braces "^3.0.1" 1795 | picomatch "^2.0.5" 1796 | 1797 | mime-db@1.43.0: 1798 | version "1.43.0" 1799 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" 1800 | integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== 1801 | 1802 | mime-types@^2.1.12, mime-types@~2.1.24: 1803 | version "2.1.26" 1804 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" 1805 | integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== 1806 | dependencies: 1807 | mime-db "1.43.0" 1808 | 1809 | mime@1.6.0, mime@^1.4.1: 1810 | version "1.6.0" 1811 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 1812 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1813 | 1814 | mime@^2.4.4: 1815 | version "2.4.4" 1816 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" 1817 | integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== 1818 | 1819 | "minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4: 1820 | version "3.0.4" 1821 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1822 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1823 | dependencies: 1824 | brace-expansion "^1.1.7" 1825 | 1826 | minimist@0.0.8: 1827 | version "0.0.8" 1828 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1829 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 1830 | 1831 | minimist@^1.2.0: 1832 | version "1.2.0" 1833 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1834 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 1835 | 1836 | minipass@^3.0.0: 1837 | version "3.1.1" 1838 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" 1839 | integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== 1840 | dependencies: 1841 | yallist "^4.0.0" 1842 | 1843 | minizlib@^2.1.0: 1844 | version "2.1.0" 1845 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3" 1846 | integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA== 1847 | dependencies: 1848 | minipass "^3.0.0" 1849 | yallist "^4.0.0" 1850 | 1851 | mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: 1852 | version "0.5.1" 1853 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1854 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 1855 | dependencies: 1856 | minimist "0.0.8" 1857 | 1858 | mocha@^7.0.1: 1859 | version "7.0.1" 1860 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.0.1.tgz#276186d35a4852f6249808c6dd4a1376cbf6c6ce" 1861 | integrity sha512-9eWmWTdHLXh72rGrdZjNbG3aa1/3NRPpul1z0D979QpEnFdCG0Q5tv834N+94QEN2cysfV72YocQ3fn87s70fg== 1862 | dependencies: 1863 | ansi-colors "3.2.3" 1864 | browser-stdout "1.3.1" 1865 | chokidar "3.3.0" 1866 | debug "3.2.6" 1867 | diff "3.5.0" 1868 | escape-string-regexp "1.0.5" 1869 | find-up "3.0.0" 1870 | glob "7.1.3" 1871 | growl "1.10.5" 1872 | he "1.2.0" 1873 | js-yaml "3.13.1" 1874 | log-symbols "2.2.0" 1875 | minimatch "3.0.4" 1876 | mkdirp "0.5.1" 1877 | ms "2.1.1" 1878 | node-environment-flags "1.0.6" 1879 | object.assign "4.1.0" 1880 | strip-json-comments "2.0.1" 1881 | supports-color "6.0.0" 1882 | which "1.3.1" 1883 | wide-align "1.1.3" 1884 | yargs "13.3.0" 1885 | yargs-parser "13.1.1" 1886 | yargs-unparser "1.6.0" 1887 | 1888 | moment@^2.10.6: 1889 | version "2.24.0" 1890 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" 1891 | integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== 1892 | 1893 | ms@2.0.0: 1894 | version "2.0.0" 1895 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1896 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1897 | 1898 | ms@2.1.1: 1899 | version "2.1.1" 1900 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1901 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 1902 | 1903 | ms@^2.1.1: 1904 | version "2.1.2" 1905 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1906 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1907 | 1908 | mv@~2: 1909 | version "2.1.1" 1910 | resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" 1911 | integrity sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI= 1912 | dependencies: 1913 | mkdirp "~0.5.1" 1914 | ncp "~2.0.0" 1915 | rimraf "~2.4.0" 1916 | 1917 | nan@^2.14.0: 1918 | version "2.14.0" 1919 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" 1920 | integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== 1921 | 1922 | ncp@~2.0.0: 1923 | version "2.0.0" 1924 | resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" 1925 | integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= 1926 | 1927 | negotiator@0.6.2: 1928 | version "0.6.2" 1929 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 1930 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 1931 | 1932 | node-environment-flags@1.0.6: 1933 | version "1.0.6" 1934 | resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" 1935 | integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== 1936 | dependencies: 1937 | object.getownpropertydescriptors "^2.0.3" 1938 | semver "^5.7.0" 1939 | 1940 | node-fetch@^2.2.0: 1941 | version "2.6.0" 1942 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" 1943 | integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== 1944 | 1945 | node-preload@^0.2.0: 1946 | version "0.2.1" 1947 | resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" 1948 | integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== 1949 | dependencies: 1950 | process-on-spawn "^1.0.0" 1951 | 1952 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1953 | version "3.0.0" 1954 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1955 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1956 | 1957 | nth-check@~1.0.1: 1958 | version "1.0.2" 1959 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" 1960 | integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== 1961 | dependencies: 1962 | boolbase "~1.0.0" 1963 | 1964 | nyc@^15.0.0: 1965 | version "15.0.0" 1966 | resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.0.0.tgz#eb32db2c0f29242c2414fe46357f230121cfc162" 1967 | integrity sha512-qcLBlNCKMDVuKb7d1fpxjPR8sHeMVX0CHarXAVzrVWoFrigCkYR8xcrjfXSPi5HXM7EU78L6ywO7w1c5rZNCNg== 1968 | dependencies: 1969 | "@istanbuljs/load-nyc-config" "^1.0.0" 1970 | "@istanbuljs/schema" "^0.1.2" 1971 | caching-transform "^4.0.0" 1972 | convert-source-map "^1.7.0" 1973 | decamelize "^1.2.0" 1974 | find-cache-dir "^3.2.0" 1975 | find-up "^4.1.0" 1976 | foreground-child "^2.0.0" 1977 | glob "^7.1.6" 1978 | istanbul-lib-coverage "^3.0.0" 1979 | istanbul-lib-hook "^3.0.0" 1980 | istanbul-lib-instrument "^4.0.0" 1981 | istanbul-lib-processinfo "^2.0.2" 1982 | istanbul-lib-report "^3.0.0" 1983 | istanbul-lib-source-maps "^4.0.0" 1984 | istanbul-reports "^3.0.0" 1985 | js-yaml "^3.13.1" 1986 | make-dir "^3.0.0" 1987 | node-preload "^0.2.0" 1988 | p-map "^3.0.0" 1989 | process-on-spawn "^1.0.0" 1990 | resolve-from "^5.0.0" 1991 | rimraf "^3.0.0" 1992 | signal-exit "^3.0.2" 1993 | spawn-wrap "^2.0.0" 1994 | test-exclude "^6.0.0" 1995 | uuid "^3.3.3" 1996 | yargs "^15.0.2" 1997 | 1998 | object-inspect@^1.7.0: 1999 | version "1.7.0" 2000 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" 2001 | integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== 2002 | 2003 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 2004 | version "1.1.1" 2005 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 2006 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 2007 | 2008 | object.assign@4.1.0, object.assign@^4.1.0: 2009 | version "4.1.0" 2010 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 2011 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 2012 | dependencies: 2013 | define-properties "^1.1.2" 2014 | function-bind "^1.1.1" 2015 | has-symbols "^1.0.0" 2016 | object-keys "^1.0.11" 2017 | 2018 | object.getownpropertydescriptors@^2.0.3: 2019 | version "2.1.0" 2020 | resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" 2021 | integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== 2022 | dependencies: 2023 | define-properties "^1.1.3" 2024 | es-abstract "^1.17.0-next.1" 2025 | 2026 | on-finished@~2.3.0: 2027 | version "2.3.0" 2028 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 2029 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 2030 | dependencies: 2031 | ee-first "1.1.1" 2032 | 2033 | once@^1.3.0: 2034 | version "1.4.0" 2035 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2036 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 2037 | dependencies: 2038 | wrappy "1" 2039 | 2040 | opencollective-postinstall@^2.0.2: 2041 | version "2.0.2" 2042 | resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" 2043 | integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== 2044 | 2045 | p-limit@^2.0.0, p-limit@^2.2.0: 2046 | version "2.2.2" 2047 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" 2048 | integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== 2049 | dependencies: 2050 | p-try "^2.0.0" 2051 | 2052 | p-locate@^3.0.0: 2053 | version "3.0.0" 2054 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 2055 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 2056 | dependencies: 2057 | p-limit "^2.0.0" 2058 | 2059 | p-locate@^4.1.0: 2060 | version "4.1.0" 2061 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 2062 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 2063 | dependencies: 2064 | p-limit "^2.2.0" 2065 | 2066 | p-map@^3.0.0: 2067 | version "3.0.0" 2068 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" 2069 | integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== 2070 | dependencies: 2071 | aggregate-error "^3.0.0" 2072 | 2073 | p-try@^2.0.0: 2074 | version "2.2.0" 2075 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 2076 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 2077 | 2078 | package-hash@^4.0.0: 2079 | version "4.0.0" 2080 | resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" 2081 | integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== 2082 | dependencies: 2083 | graceful-fs "^4.1.15" 2084 | hasha "^5.0.0" 2085 | lodash.flattendeep "^4.4.0" 2086 | release-zalgo "^1.0.0" 2087 | 2088 | parent-module@^1.0.0: 2089 | version "1.0.1" 2090 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 2091 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 2092 | dependencies: 2093 | callsites "^3.0.0" 2094 | 2095 | parse-json@^5.0.0: 2096 | version "5.0.0" 2097 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" 2098 | integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== 2099 | dependencies: 2100 | "@babel/code-frame" "^7.0.0" 2101 | error-ex "^1.3.1" 2102 | json-parse-better-errors "^1.0.1" 2103 | lines-and-columns "^1.1.6" 2104 | 2105 | parse5@^3.0.1: 2106 | version "3.0.3" 2107 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" 2108 | integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== 2109 | dependencies: 2110 | "@types/node" "*" 2111 | 2112 | parseurl@~1.3.3: 2113 | version "1.3.3" 2114 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 2115 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 2116 | 2117 | path-exists@^3.0.0: 2118 | version "3.0.0" 2119 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 2120 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 2121 | 2122 | path-exists@^4.0.0: 2123 | version "4.0.0" 2124 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 2125 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 2126 | 2127 | path-is-absolute@^1.0.0: 2128 | version "1.0.1" 2129 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2130 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 2131 | 2132 | path-key@^3.1.0: 2133 | version "3.1.1" 2134 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 2135 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 2136 | 2137 | path-parse@^1.0.6: 2138 | version "1.0.6" 2139 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 2140 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 2141 | 2142 | path-to-regexp@0.1.7: 2143 | version "0.1.7" 2144 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 2145 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 2146 | 2147 | path-type@^4.0.0: 2148 | version "4.0.0" 2149 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 2150 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 2151 | 2152 | pathval@^1.1.0: 2153 | version "1.1.0" 2154 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" 2155 | integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= 2156 | 2157 | picomatch@^2.0.4, picomatch@^2.0.5: 2158 | version "2.2.1" 2159 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" 2160 | integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== 2161 | 2162 | pkg-dir@^4.1.0, pkg-dir@^4.2.0: 2163 | version "4.2.0" 2164 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 2165 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 2166 | dependencies: 2167 | find-up "^4.0.0" 2168 | 2169 | please-upgrade-node@^3.2.0: 2170 | version "3.2.0" 2171 | resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" 2172 | integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== 2173 | dependencies: 2174 | semver-compare "^1.0.0" 2175 | 2176 | prettier@^1.19.1: 2177 | version "1.19.1" 2178 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" 2179 | integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== 2180 | 2181 | process-nextick-args@~2.0.0: 2182 | version "2.0.1" 2183 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 2184 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 2185 | 2186 | process-on-spawn@^1.0.0: 2187 | version "1.0.0" 2188 | resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" 2189 | integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg== 2190 | dependencies: 2191 | fromentries "^1.2.0" 2192 | 2193 | proxy-addr@~2.0.5: 2194 | version "2.0.5" 2195 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" 2196 | integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== 2197 | dependencies: 2198 | forwarded "~0.1.2" 2199 | ipaddr.js "1.9.0" 2200 | 2201 | punycode@^2.1.0: 2202 | version "2.1.1" 2203 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2204 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 2205 | 2206 | qs@6.7.0: 2207 | version "6.7.0" 2208 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 2209 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 2210 | 2211 | qs@^6.5.1: 2212 | version "6.9.1" 2213 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9" 2214 | integrity sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA== 2215 | 2216 | ramda@^0.26.1: 2217 | version "0.26.1" 2218 | resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" 2219 | integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== 2220 | 2221 | range-parser@~1.2.1: 2222 | version "1.2.1" 2223 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 2224 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 2225 | 2226 | raw-body@2.4.0: 2227 | version "2.4.0" 2228 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 2229 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 2230 | dependencies: 2231 | bytes "3.1.0" 2232 | http-errors "1.7.2" 2233 | iconv-lite "0.4.24" 2234 | unpipe "1.0.0" 2235 | 2236 | readable-stream@^2.3.5: 2237 | version "2.3.7" 2238 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 2239 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 2240 | dependencies: 2241 | core-util-is "~1.0.0" 2242 | inherits "~2.0.3" 2243 | isarray "~1.0.0" 2244 | process-nextick-args "~2.0.0" 2245 | safe-buffer "~5.1.1" 2246 | string_decoder "~1.1.1" 2247 | util-deprecate "~1.0.1" 2248 | 2249 | readable-stream@^3.1.1: 2250 | version "3.5.0" 2251 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.5.0.tgz#465d70e6d1087f6162d079cd0b5db7fbebfd1606" 2252 | integrity sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA== 2253 | dependencies: 2254 | inherits "^2.0.3" 2255 | string_decoder "^1.1.1" 2256 | util-deprecate "^1.0.1" 2257 | 2258 | readdirp@~3.2.0: 2259 | version "3.2.0" 2260 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" 2261 | integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== 2262 | dependencies: 2263 | picomatch "^2.0.4" 2264 | 2265 | recursive-readdir@^2.2.2: 2266 | version "2.2.2" 2267 | resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" 2268 | integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== 2269 | dependencies: 2270 | minimatch "3.0.4" 2271 | 2272 | regenerator-runtime@^0.13.2: 2273 | version "0.13.3" 2274 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" 2275 | integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== 2276 | 2277 | release-zalgo@^1.0.0: 2278 | version "1.0.0" 2279 | resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" 2280 | integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= 2281 | dependencies: 2282 | es6-error "^4.0.1" 2283 | 2284 | require-directory@^2.1.1: 2285 | version "2.1.1" 2286 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2287 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 2288 | 2289 | require-main-filename@^2.0.0: 2290 | version "2.0.0" 2291 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 2292 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 2293 | 2294 | resolve-from@^4.0.0: 2295 | version "4.0.0" 2296 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 2297 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 2298 | 2299 | resolve-from@^5.0.0: 2300 | version "5.0.0" 2301 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 2302 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 2303 | 2304 | resolve@^1.3.2: 2305 | version "1.15.0" 2306 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" 2307 | integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== 2308 | dependencies: 2309 | path-parse "^1.0.6" 2310 | 2311 | rimraf@^3.0.0: 2312 | version "3.0.1" 2313 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.1.tgz#48d3d4cb46c80d388ab26cd61b1b466ae9ae225a" 2314 | integrity sha512-IQ4ikL8SjBiEDZfk+DFVwqRK8md24RWMEJkdSlgNLkyyAImcjf8SWvU1qFMDOb4igBClbTQ/ugPqXcRwdFTxZw== 2315 | dependencies: 2316 | glob "^7.1.3" 2317 | 2318 | rimraf@~2.4.0: 2319 | version "2.4.5" 2320 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" 2321 | integrity sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto= 2322 | dependencies: 2323 | glob "^6.0.1" 2324 | 2325 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2326 | version "5.1.2" 2327 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2328 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2329 | 2330 | safe-buffer@~5.2.0: 2331 | version "5.2.0" 2332 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 2333 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== 2334 | 2335 | safe-json-stringify@~1: 2336 | version "1.2.0" 2337 | resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" 2338 | integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== 2339 | 2340 | "safer-buffer@>= 2.1.2 < 3": 2341 | version "2.1.2" 2342 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2343 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2344 | 2345 | semver-compare@^1.0.0: 2346 | version "1.0.0" 2347 | resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 2348 | integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= 2349 | 2350 | semver-regex@^2.0.0: 2351 | version "2.0.0" 2352 | resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" 2353 | integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== 2354 | 2355 | semver@^5.3.0, semver@^5.4.1, semver@^5.7.0: 2356 | version "5.7.1" 2357 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 2358 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 2359 | 2360 | semver@^6.0.0, semver@^6.3.0: 2361 | version "6.3.0" 2362 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 2363 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 2364 | 2365 | send@0.17.1: 2366 | version "0.17.1" 2367 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 2368 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 2369 | dependencies: 2370 | debug "2.6.9" 2371 | depd "~1.1.2" 2372 | destroy "~1.0.4" 2373 | encodeurl "~1.0.2" 2374 | escape-html "~1.0.3" 2375 | etag "~1.8.1" 2376 | fresh "0.5.2" 2377 | http-errors "~1.7.2" 2378 | mime "1.6.0" 2379 | ms "2.1.1" 2380 | on-finished "~2.3.0" 2381 | range-parser "~1.2.1" 2382 | statuses "~1.5.0" 2383 | 2384 | serve-static@1.14.1: 2385 | version "1.14.1" 2386 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 2387 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 2388 | dependencies: 2389 | encodeurl "~1.0.2" 2390 | escape-html "~1.0.3" 2391 | parseurl "~1.3.3" 2392 | send "0.17.1" 2393 | 2394 | set-blocking@^2.0.0: 2395 | version "2.0.0" 2396 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2397 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 2398 | 2399 | setprototypeof@1.1.1: 2400 | version "1.1.1" 2401 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 2402 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 2403 | 2404 | shebang-command@^2.0.0: 2405 | version "2.0.0" 2406 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2407 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 2408 | dependencies: 2409 | shebang-regex "^3.0.0" 2410 | 2411 | shebang-regex@^3.0.0: 2412 | version "3.0.0" 2413 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2414 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 2415 | 2416 | signal-exit@^3.0.2: 2417 | version "3.0.2" 2418 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2419 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 2420 | 2421 | slash@^3.0.0: 2422 | version "3.0.0" 2423 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 2424 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 2425 | 2426 | source-map-support@^0.5.6: 2427 | version "0.5.16" 2428 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" 2429 | integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== 2430 | dependencies: 2431 | buffer-from "^1.0.0" 2432 | source-map "^0.6.0" 2433 | 2434 | source-map@^0.5.0: 2435 | version "0.5.7" 2436 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2437 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 2438 | 2439 | source-map@^0.6.0, source-map@^0.6.1: 2440 | version "0.6.1" 2441 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2442 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2443 | 2444 | spawn-wrap@^2.0.0: 2445 | version "2.0.0" 2446 | resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" 2447 | integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== 2448 | dependencies: 2449 | foreground-child "^2.0.0" 2450 | is-windows "^1.0.2" 2451 | make-dir "^3.0.0" 2452 | rimraf "^3.0.0" 2453 | signal-exit "^3.0.2" 2454 | which "^2.0.1" 2455 | 2456 | sprintf-js@~1.0.2: 2457 | version "1.0.3" 2458 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2459 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2460 | 2461 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 2462 | version "1.5.0" 2463 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 2464 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 2465 | 2466 | "string-width@^1.0.2 || 2": 2467 | version "2.1.1" 2468 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2469 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 2470 | dependencies: 2471 | is-fullwidth-code-point "^2.0.0" 2472 | strip-ansi "^4.0.0" 2473 | 2474 | string-width@^3.0.0, string-width@^3.1.0: 2475 | version "3.1.0" 2476 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 2477 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 2478 | dependencies: 2479 | emoji-regex "^7.0.1" 2480 | is-fullwidth-code-point "^2.0.0" 2481 | strip-ansi "^5.1.0" 2482 | 2483 | string-width@^4.1.0, string-width@^4.2.0: 2484 | version "4.2.0" 2485 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 2486 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 2487 | dependencies: 2488 | emoji-regex "^8.0.0" 2489 | is-fullwidth-code-point "^3.0.0" 2490 | strip-ansi "^6.0.0" 2491 | 2492 | string.prototype.trimleft@^2.1.1: 2493 | version "2.1.1" 2494 | resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" 2495 | integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== 2496 | dependencies: 2497 | define-properties "^1.1.3" 2498 | function-bind "^1.1.1" 2499 | 2500 | string.prototype.trimright@^2.1.1: 2501 | version "2.1.1" 2502 | resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" 2503 | integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== 2504 | dependencies: 2505 | define-properties "^1.1.3" 2506 | function-bind "^1.1.1" 2507 | 2508 | string_decoder@^1.1.1: 2509 | version "1.3.0" 2510 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 2511 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 2512 | dependencies: 2513 | safe-buffer "~5.2.0" 2514 | 2515 | string_decoder@~1.1.1: 2516 | version "1.1.1" 2517 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 2518 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 2519 | dependencies: 2520 | safe-buffer "~5.1.0" 2521 | 2522 | strip-ansi@^4.0.0: 2523 | version "4.0.0" 2524 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2525 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 2526 | dependencies: 2527 | ansi-regex "^3.0.0" 2528 | 2529 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 2530 | version "5.2.0" 2531 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 2532 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 2533 | dependencies: 2534 | ansi-regex "^4.1.0" 2535 | 2536 | strip-ansi@^6.0.0: 2537 | version "6.0.0" 2538 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 2539 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 2540 | dependencies: 2541 | ansi-regex "^5.0.0" 2542 | 2543 | strip-bom@^4.0.0: 2544 | version "4.0.0" 2545 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" 2546 | integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 2547 | 2548 | strip-json-comments@2.0.1: 2549 | version "2.0.1" 2550 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2551 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 2552 | 2553 | superagent@^3.8.3: 2554 | version "3.8.3" 2555 | resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" 2556 | integrity sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA== 2557 | dependencies: 2558 | component-emitter "^1.2.0" 2559 | cookiejar "^2.1.0" 2560 | debug "^3.1.0" 2561 | extend "^3.0.0" 2562 | form-data "^2.3.1" 2563 | formidable "^1.2.0" 2564 | methods "^1.1.1" 2565 | mime "^1.4.1" 2566 | qs "^6.5.1" 2567 | readable-stream "^2.3.5" 2568 | 2569 | supertest@^4.0.2: 2570 | version "4.0.2" 2571 | resolved "https://registry.yarnpkg.com/supertest/-/supertest-4.0.2.tgz#c2234dbdd6dc79b6f15b99c8d6577b90e4ce3f36" 2572 | integrity sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ== 2573 | dependencies: 2574 | methods "^1.1.2" 2575 | superagent "^3.8.3" 2576 | 2577 | supports-color@6.0.0: 2578 | version "6.0.0" 2579 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" 2580 | integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== 2581 | dependencies: 2582 | has-flag "^3.0.0" 2583 | 2584 | supports-color@^5.3.0: 2585 | version "5.5.0" 2586 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2587 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2588 | dependencies: 2589 | has-flag "^3.0.0" 2590 | 2591 | supports-color@^7.1.0: 2592 | version "7.1.0" 2593 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 2594 | integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== 2595 | dependencies: 2596 | has-flag "^4.0.0" 2597 | 2598 | swagger-ui-dist@^3.18.1: 2599 | version "3.25.0" 2600 | resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.25.0.tgz#90279cdcc56e591fcfbe7b5240a9d653b989336d" 2601 | integrity sha512-vwvJPPbdooTvDwLGzjIXinOXizDJJ6U1hxnJL3y6U3aL1d2MSXDmKg2139XaLBhsVZdnQJV2bOkX4reB+RXamg== 2602 | 2603 | swagger-ui-express@^4.0.2: 2604 | version "4.1.3" 2605 | resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-4.1.3.tgz#90ba85e03f02e2e240e04fd62f4c62fdf358f4d5" 2606 | integrity sha512-f8SEn4YWkKh/HGK0ZjuA2VqA78i1aY6OIa5cqYNgOkBobfHV6Mz4dphQW/us8HYhEFfbENq329PyfIonWfzFrw== 2607 | dependencies: 2608 | swagger-ui-dist "^3.18.1" 2609 | 2610 | tar@^5.0.5: 2611 | version "5.0.5" 2612 | resolved "https://registry.yarnpkg.com/tar/-/tar-5.0.5.tgz#03fcdb7105bc8ea3ce6c86642b9c942495b04f93" 2613 | integrity sha512-MNIgJddrV2TkuwChwcSNds/5E9VijOiw7kAc1y5hTNJoLDSuIyid2QtLYiCYNnICebpuvjhPQZsXwUL0O3l7OQ== 2614 | dependencies: 2615 | chownr "^1.1.3" 2616 | fs-minipass "^2.0.0" 2617 | minipass "^3.0.0" 2618 | minizlib "^2.1.0" 2619 | mkdirp "^0.5.0" 2620 | yallist "^4.0.0" 2621 | 2622 | teeny-request@^3.11.3: 2623 | version "3.11.3" 2624 | resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-3.11.3.tgz#335c629f7645e5d6599362df2f3230c4cbc23a55" 2625 | integrity sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw== 2626 | dependencies: 2627 | https-proxy-agent "^2.2.1" 2628 | node-fetch "^2.2.0" 2629 | uuid "^3.3.2" 2630 | 2631 | test-exclude@^6.0.0: 2632 | version "6.0.0" 2633 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" 2634 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== 2635 | dependencies: 2636 | "@istanbuljs/schema" "^0.1.2" 2637 | glob "^7.1.4" 2638 | minimatch "^3.0.4" 2639 | 2640 | to-fast-properties@^2.0.0: 2641 | version "2.0.0" 2642 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 2643 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 2644 | 2645 | to-regex-range@^5.0.1: 2646 | version "5.0.1" 2647 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2648 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2649 | dependencies: 2650 | is-number "^7.0.0" 2651 | 2652 | toidentifier@1.0.0: 2653 | version "1.0.0" 2654 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 2655 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 2656 | 2657 | ts-node@^8.6.2: 2658 | version "8.6.2" 2659 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.6.2.tgz#7419a01391a818fbafa6f826a33c1a13e9464e35" 2660 | integrity sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg== 2661 | dependencies: 2662 | arg "^4.1.0" 2663 | diff "^4.0.1" 2664 | make-error "^1.1.1" 2665 | source-map-support "^0.5.6" 2666 | yn "3.1.1" 2667 | 2668 | tslib@^1.10.0, tslib@^1.8.1: 2669 | version "1.10.0" 2670 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" 2671 | integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== 2672 | 2673 | tslint-config-prettier@^1.18.0: 2674 | version "1.18.0" 2675 | resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" 2676 | integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== 2677 | 2678 | tslint@^6.0.0: 2679 | version "6.0.0" 2680 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.0.0.tgz#1c0148beac4779924216302f192cdaa153618310" 2681 | integrity sha512-9nLya8GBtlFmmFMW7oXXwoXS1NkrccqTqAtwXzdPV9e2mqSEvCki6iHL/Fbzi5oqbugshzgGPk7KBb2qNP1DSA== 2682 | dependencies: 2683 | "@babel/code-frame" "^7.0.0" 2684 | builtin-modules "^1.1.1" 2685 | chalk "^2.3.0" 2686 | commander "^2.12.1" 2687 | diff "^4.0.1" 2688 | glob "^7.1.1" 2689 | js-yaml "^3.13.1" 2690 | minimatch "^3.0.4" 2691 | mkdirp "^0.5.1" 2692 | resolve "^1.3.2" 2693 | semver "^5.3.0" 2694 | tslib "^1.10.0" 2695 | tsutils "^2.29.0" 2696 | 2697 | tsutils@^2.29.0: 2698 | version "2.29.0" 2699 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" 2700 | integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== 2701 | dependencies: 2702 | tslib "^1.8.1" 2703 | 2704 | type-detect@^4.0.0, type-detect@^4.0.5: 2705 | version "4.0.8" 2706 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 2707 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 2708 | 2709 | type-fest@^0.8.0: 2710 | version "0.8.1" 2711 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 2712 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 2713 | 2714 | type-is@^1.6.16, type-is@~1.6.17, type-is@~1.6.18: 2715 | version "1.6.18" 2716 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 2717 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 2718 | dependencies: 2719 | media-typer "0.3.0" 2720 | mime-types "~2.1.24" 2721 | 2722 | typedarray-to-buffer@^3.1.5: 2723 | version "3.1.5" 2724 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 2725 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 2726 | dependencies: 2727 | is-typedarray "^1.0.0" 2728 | 2729 | typescript@^3.7.5: 2730 | version "3.7.5" 2731 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" 2732 | integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== 2733 | 2734 | universalify@^0.1.0: 2735 | version "0.1.2" 2736 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 2737 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 2738 | 2739 | unpipe@1.0.0, unpipe@~1.0.0: 2740 | version "1.0.0" 2741 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 2742 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 2743 | 2744 | uri-js@^4.2.2: 2745 | version "4.2.2" 2746 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 2747 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 2748 | dependencies: 2749 | punycode "^2.1.0" 2750 | 2751 | urlgrey@^0.4.4: 2752 | version "0.4.4" 2753 | resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f" 2754 | integrity sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8= 2755 | 2756 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 2757 | version "1.0.2" 2758 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2759 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2760 | 2761 | utils-merge@1.0.1: 2762 | version "1.0.1" 2763 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 2764 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 2765 | 2766 | uuid@^3.0.0, uuid@^3.3.2, uuid@^3.3.3, uuid@^3.4.0: 2767 | version "3.4.0" 2768 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 2769 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 2770 | 2771 | validator@^12.1.0: 2772 | version "12.2.0" 2773 | resolved "https://registry.yarnpkg.com/validator/-/validator-12.2.0.tgz#660d47e96267033fd070096c3b1a6f2db4380a0a" 2774 | integrity sha512-jJfE/DW6tIK1Ek8nCfNFqt8Wb3nzMoAbocBF6/Icgg1ZFSBpObdnwVY2jQj6qUqzhx5jc71fpvBWyLGO7Xl+nQ== 2775 | 2776 | vary@~1.1.2: 2777 | version "1.1.2" 2778 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 2779 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 2780 | 2781 | vm2@^3.8.4: 2782 | version "3.8.4" 2783 | resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.8.4.tgz#882be9135467942d84d1af80b6e6549b57c69041" 2784 | integrity sha512-5HThl+RBO/pwE9SF0kM4nLrpq5vXHBNk4BMX27xztvl0j1RsZ4/PMVJAu9rM9yfOtTo5KroL7XNX3031ExleSw== 2785 | 2786 | which-module@^2.0.0: 2787 | version "2.0.0" 2788 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 2789 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 2790 | 2791 | which-pm-runs@^1.0.0: 2792 | version "1.0.0" 2793 | resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" 2794 | integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= 2795 | 2796 | which@1.3.1: 2797 | version "1.3.1" 2798 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 2799 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 2800 | dependencies: 2801 | isexe "^2.0.0" 2802 | 2803 | which@^2.0.1: 2804 | version "2.0.2" 2805 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2806 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2807 | dependencies: 2808 | isexe "^2.0.0" 2809 | 2810 | wide-align@1.1.3: 2811 | version "1.1.3" 2812 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 2813 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 2814 | dependencies: 2815 | string-width "^1.0.2 || 2" 2816 | 2817 | wrap-ansi@^5.1.0: 2818 | version "5.1.0" 2819 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 2820 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 2821 | dependencies: 2822 | ansi-styles "^3.2.0" 2823 | string-width "^3.0.0" 2824 | strip-ansi "^5.0.0" 2825 | 2826 | wrap-ansi@^6.2.0: 2827 | version "6.2.0" 2828 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" 2829 | integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== 2830 | dependencies: 2831 | ansi-styles "^4.0.0" 2832 | string-width "^4.1.0" 2833 | strip-ansi "^6.0.0" 2834 | 2835 | wrappy@1: 2836 | version "1.0.2" 2837 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2838 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2839 | 2840 | write-file-atomic@^3.0.0: 2841 | version "3.0.1" 2842 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.1.tgz#558328352e673b5bb192cf86500d60b230667d4b" 2843 | integrity sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw== 2844 | dependencies: 2845 | imurmurhash "^0.1.4" 2846 | is-typedarray "^1.0.0" 2847 | signal-exit "^3.0.2" 2848 | typedarray-to-buffer "^3.1.5" 2849 | 2850 | y18n@^4.0.0: 2851 | version "4.0.0" 2852 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 2853 | integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 2854 | 2855 | yallist@^4.0.0: 2856 | version "4.0.0" 2857 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2858 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2859 | 2860 | yaml@^1.7.2: 2861 | version "1.7.2" 2862 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" 2863 | integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== 2864 | dependencies: 2865 | "@babel/runtime" "^7.6.3" 2866 | 2867 | yargs-parser@13.1.1, yargs-parser@^13.1.1: 2868 | version "13.1.1" 2869 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" 2870 | integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== 2871 | dependencies: 2872 | camelcase "^5.0.0" 2873 | decamelize "^1.2.0" 2874 | 2875 | yargs-parser@^16.1.0: 2876 | version "16.1.0" 2877 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" 2878 | integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== 2879 | dependencies: 2880 | camelcase "^5.0.0" 2881 | decamelize "^1.2.0" 2882 | 2883 | yargs-unparser@1.6.0: 2884 | version "1.6.0" 2885 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" 2886 | integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== 2887 | dependencies: 2888 | flat "^4.1.0" 2889 | lodash "^4.17.15" 2890 | yargs "^13.3.0" 2891 | 2892 | yargs@13.3.0, yargs@^13.3.0: 2893 | version "13.3.0" 2894 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" 2895 | integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== 2896 | dependencies: 2897 | cliui "^5.0.0" 2898 | find-up "^3.0.0" 2899 | get-caller-file "^2.0.1" 2900 | require-directory "^2.1.1" 2901 | require-main-filename "^2.0.0" 2902 | set-blocking "^2.0.0" 2903 | string-width "^3.0.0" 2904 | which-module "^2.0.0" 2905 | y18n "^4.0.0" 2906 | yargs-parser "^13.1.1" 2907 | 2908 | yargs@^15.0.2, yargs@^15.1.0: 2909 | version "15.1.0" 2910 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.1.0.tgz#e111381f5830e863a89550bd4b136bb6a5f37219" 2911 | integrity sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg== 2912 | dependencies: 2913 | cliui "^6.0.0" 2914 | decamelize "^1.2.0" 2915 | find-up "^4.1.0" 2916 | get-caller-file "^2.0.1" 2917 | require-directory "^2.1.1" 2918 | require-main-filename "^2.0.0" 2919 | set-blocking "^2.0.0" 2920 | string-width "^4.2.0" 2921 | which-module "^2.0.0" 2922 | y18n "^4.0.0" 2923 | yargs-parser "^16.1.0" 2924 | 2925 | yn@3.1.1: 2926 | version "3.1.1" 2927 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 2928 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 2929 | --------------------------------------------------------------------------------