From 4e7f244190c6ffbf7b20443e3e69cf2402c4268a Mon Sep 17 00:00:00 2001 From: undergroundwires Date: Tue, 31 Dec 2019 16:09:39 +0100 Subject: [PATCH] Initial commit --- .browserslistrc | 2 + .github/workflows/build-and-deploy.yaml | 91 + .github/workflows/run-tests.yaml | 26 + .gitignore | 4 + Dockerfile | 21 + LICENSE | 674 + README.md | 119 + aws.drawio | 1 + aws/certificate-stack.yaml | 211 + aws/dns-stack.yaml | 61 + aws/iam-stack.yaml | 496 + aws/scripts/configure/create-role-profile.sh | 36 + aws/scripts/configure/create-user-profile.sh | 25 + aws/scripts/configure/mask-identity.sh | 17 + aws/scripts/deploy/deploy-stack.sh | 43 + aws/scripts/deploy/deploy-to-s3.sh | 47 + .../deploy/invalidate-cloudfront-cache.sh | 45 + aws/web-stack.yaml | 138 + docs/app-ddd.drawio | 1 + docs/app-ddd.png | Bin 0 -> 26367 bytes docs/aws-cloudformation.drawio | 1 + docs/aws-cloudformation.png | Bin 0 -> 246142 bytes docs/aws-solution.drawio | 1 + docs/aws-solution.png | Bin 0 -> 58590 bytes docs/ci-cd.drawio | 1 + docs/ci-cd.png | Bin 0 -> 48903 bytes package-lock.json | 11303 ++++++++++++++++ package.json | 42 + postcss.config.js | 5 + public/favicon.ico | Bin 0 -> 108332 bytes public/index.html | 21 + src/App.vue | 83 + src/application/ApplicationParser.ts | 103 + src/application/State/ApplicationState.ts | 65 + src/application/State/Code/ApplicationCode.ts | 27 + src/application/State/Code/CodeBuilder.ts | 27 + .../State/Code/IApplicationCode.ts | 6 + .../Renderer/AdminRightsFunctionRenderer.ts | 18 + .../State/Code/Renderer/AsciiArtRenderer.ts | 16 + .../State/Code/Renderer/CodeRenderer.ts | 11 + .../State/Code/Renderer/FunctionRenderer.ts | 31 + .../State/Filter/IFilterMatches.ts | 7 + src/application/State/Filter/IUserFilter.ts | 9 + src/application/State/Filter/UserFilter.ts | 34 + src/application/State/IApplicationState.ts | 21 + .../State/Selection/IUserSelection.ts | 14 + .../State/Selection/UserSelection.ts | 86 + src/application/application.yaml | 1026 ++ src/application/application.yaml.d.ts | 23 + src/domain/Application.ts | 118 + src/domain/Category.ts | 25 + src/domain/IApplication.ts | 12 + src/domain/ICategory.ts | 13 + src/domain/IDocumentable.ts | 3 + src/domain/IScript.ts | 8 + src/domain/Script.ts | 51 + src/global.d.ts | 59 + src/infrastructure/Clipboard.ts | 14 + src/infrastructure/Entity/BaseEntity.ts | 14 + src/infrastructure/Entity/IEntity.ts | 5 + src/infrastructure/Events/ISignal.ts | 4 + src/infrastructure/Events/Signal.ts | 18 + src/infrastructure/Repository/IRepository.ts | 9 + .../Repository/InMemoryRepository.ts | 40 + src/infrastructure/SaveFileDialog.ts | 16 + src/infrastructure/Threading/AsyncLazy.ts | 34 + src/main.ts | 10 + .../Bootstrapping/ApplicationBootstrapper.ts | 24 + .../Bootstrapping/IVueBootstrapper.ts | 7 + .../Bootstrapping/Modules/IconBootstrapper.ts | 18 + .../Modules/TooltipBootstrapper.ts | 8 + .../Bootstrapping/Modules/TreeBootstrapper.ts | 8 + .../Bootstrapping/Modules/VueBootstrapper.ts | 7 + src/presentation/IconButton.vue | 74 + src/presentation/Scripts/Cards/CardList.vue | 62 + .../Scripts/Cards/CardListItem.vue | 248 + .../Scripts/Cards/CardListItemScripts.vue | 101 + .../Scripts/Cards/ScriptNodeParser.ts | 43 + src/presentation/Scripts/CategoryTree.vue | 19 + .../Scripts/SelectableTree/INode.ts | 7 + .../Scripts/SelectableTree/Node.vue | 46 + .../Scripts/SelectableTree/SelectableTree.vue | 181 + .../Scripts/Selector/SelectableOption.vue | 32 + .../Scripts/Selector/TheSelector.vue | 106 + src/presentation/Scripts/TheGrouper.vue | 48 + src/presentation/StatefulVue.ts | 11 + src/presentation/TheCodeArea.vue | 53 + src/presentation/TheCodeButtons.vue | 64 + src/presentation/TheHeader.vue | 66 + src/presentation/TheSearchBar.vue | 78 + src/presentation/styles/colors.scss | 8 + src/presentation/styles/fonts.scss | 26 + .../styles/fonts/Slabo27px-v6.woff2 | Bin 0 -> 8780 bytes .../styles/fonts/yesteryear-v8.woff2 | Bin 0 -> 23060 bytes src/presentation/styles/tooltip.scss | 43 + src/presentation/styles/tree.scss | 35 + src/shims-tsx.d.ts | 13 + src/shims-vue.d.ts | 4 + tests/unit/application/UserSelection.spec.ts | 41 + tests/unit/infrastructure/AsyncLazy.spec.ts | 55 + .../infrastructure/InMemoryRepository.spec.ts | 72 + tests/unit/infrastructure/Signal.spec.ts | 77 + tests/unit/stubs/ApplicationStub.ts | 21 + tests/unit/stubs/CategoryStub.ts | 20 + tests/unit/stubs/NumericEntityStub.ts | 7 + tests/unit/stubs/ScriptStub.ts | 12 + tsconfig.json | 40 + tslint.json | 19 + 108 files changed, 17296 insertions(+) create mode 100644 .browserslistrc create mode 100644 .github/workflows/build-and-deploy.yaml create mode 100644 .github/workflows/run-tests.yaml create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 README.md create mode 100644 aws.drawio create mode 100644 aws/certificate-stack.yaml create mode 100644 aws/dns-stack.yaml create mode 100644 aws/iam-stack.yaml create mode 100644 aws/scripts/configure/create-role-profile.sh create mode 100644 aws/scripts/configure/create-user-profile.sh create mode 100644 aws/scripts/configure/mask-identity.sh create mode 100644 aws/scripts/deploy/deploy-stack.sh create mode 100644 aws/scripts/deploy/deploy-to-s3.sh create mode 100644 aws/scripts/deploy/invalidate-cloudfront-cache.sh create mode 100644 aws/web-stack.yaml create mode 100644 docs/app-ddd.drawio create mode 100644 docs/app-ddd.png create mode 100644 docs/aws-cloudformation.drawio create mode 100644 docs/aws-cloudformation.png create mode 100644 docs/aws-solution.drawio create mode 100644 docs/aws-solution.png create mode 100644 docs/ci-cd.drawio create mode 100644 docs/ci-cd.png create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 src/App.vue create mode 100644 src/application/ApplicationParser.ts create mode 100644 src/application/State/ApplicationState.ts create mode 100644 src/application/State/Code/ApplicationCode.ts create mode 100644 src/application/State/Code/CodeBuilder.ts create mode 100644 src/application/State/Code/IApplicationCode.ts create mode 100644 src/application/State/Code/Renderer/AdminRightsFunctionRenderer.ts create mode 100644 src/application/State/Code/Renderer/AsciiArtRenderer.ts create mode 100644 src/application/State/Code/Renderer/CodeRenderer.ts create mode 100644 src/application/State/Code/Renderer/FunctionRenderer.ts create mode 100644 src/application/State/Filter/IFilterMatches.ts create mode 100644 src/application/State/Filter/IUserFilter.ts create mode 100644 src/application/State/Filter/UserFilter.ts create mode 100644 src/application/State/IApplicationState.ts create mode 100644 src/application/State/Selection/IUserSelection.ts create mode 100644 src/application/State/Selection/UserSelection.ts create mode 100644 src/application/application.yaml create mode 100644 src/application/application.yaml.d.ts create mode 100644 src/domain/Application.ts create mode 100644 src/domain/Category.ts create mode 100644 src/domain/IApplication.ts create mode 100644 src/domain/ICategory.ts create mode 100644 src/domain/IDocumentable.ts create mode 100644 src/domain/IScript.ts create mode 100644 src/domain/Script.ts create mode 100644 src/global.d.ts create mode 100644 src/infrastructure/Clipboard.ts create mode 100644 src/infrastructure/Entity/BaseEntity.ts create mode 100644 src/infrastructure/Entity/IEntity.ts create mode 100644 src/infrastructure/Events/ISignal.ts create mode 100644 src/infrastructure/Events/Signal.ts create mode 100644 src/infrastructure/Repository/IRepository.ts create mode 100644 src/infrastructure/Repository/InMemoryRepository.ts create mode 100644 src/infrastructure/SaveFileDialog.ts create mode 100644 src/infrastructure/Threading/AsyncLazy.ts create mode 100644 src/main.ts create mode 100644 src/presentation/Bootstrapping/ApplicationBootstrapper.ts create mode 100644 src/presentation/Bootstrapping/IVueBootstrapper.ts create mode 100644 src/presentation/Bootstrapping/Modules/IconBootstrapper.ts create mode 100644 src/presentation/Bootstrapping/Modules/TooltipBootstrapper.ts create mode 100644 src/presentation/Bootstrapping/Modules/TreeBootstrapper.ts create mode 100644 src/presentation/Bootstrapping/Modules/VueBootstrapper.ts create mode 100644 src/presentation/IconButton.vue create mode 100644 src/presentation/Scripts/Cards/CardList.vue create mode 100644 src/presentation/Scripts/Cards/CardListItem.vue create mode 100644 src/presentation/Scripts/Cards/CardListItemScripts.vue create mode 100644 src/presentation/Scripts/Cards/ScriptNodeParser.ts create mode 100644 src/presentation/Scripts/CategoryTree.vue create mode 100644 src/presentation/Scripts/SelectableTree/INode.ts create mode 100644 src/presentation/Scripts/SelectableTree/Node.vue create mode 100644 src/presentation/Scripts/SelectableTree/SelectableTree.vue create mode 100644 src/presentation/Scripts/Selector/SelectableOption.vue create mode 100644 src/presentation/Scripts/Selector/TheSelector.vue create mode 100644 src/presentation/Scripts/TheGrouper.vue create mode 100644 src/presentation/StatefulVue.ts create mode 100644 src/presentation/TheCodeArea.vue create mode 100644 src/presentation/TheCodeButtons.vue create mode 100644 src/presentation/TheHeader.vue create mode 100644 src/presentation/TheSearchBar.vue create mode 100644 src/presentation/styles/colors.scss create mode 100644 src/presentation/styles/fonts.scss create mode 100644 src/presentation/styles/fonts/Slabo27px-v6.woff2 create mode 100644 src/presentation/styles/fonts/yesteryear-v8.woff2 create mode 100644 src/presentation/styles/tooltip.scss create mode 100644 src/presentation/styles/tree.scss create mode 100644 src/shims-tsx.d.ts create mode 100644 src/shims-vue.d.ts create mode 100644 tests/unit/application/UserSelection.spec.ts create mode 100644 tests/unit/infrastructure/AsyncLazy.spec.ts create mode 100644 tests/unit/infrastructure/InMemoryRepository.spec.ts create mode 100644 tests/unit/infrastructure/Signal.spec.ts create mode 100644 tests/unit/stubs/ApplicationStub.ts create mode 100644 tests/unit/stubs/CategoryStub.ts create mode 100644 tests/unit/stubs/NumericEntityStub.ts create mode 100644 tests/unit/stubs/ScriptStub.ts create mode 100644 tsconfig.json create mode 100644 tslint.json diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 00000000..d6471a38 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,2 @@ +> 1% +last 2 versions diff --git a/.github/workflows/build-and-deploy.yaml b/.github/workflows/build-and-deploy.yaml new file mode 100644 index 00000000..d7d46683 --- /dev/null +++ b/.github/workflows/build-and-deploy.yaml @@ -0,0 +1,91 @@ +name: Build & deploy + +on: + push: + branches: + - master + +jobs: + build-and-deploy: + runs-on: ubuntu-18.04 + steps: + - + name: "Prepare: Checkout" + uses: actions/checkout@v1 + - + name: "Prepare: Create AWS user profile" + run: >- + bash "aws/scripts/configure/create-user-profile.sh" \ + --profile user \ + --access-key-id ${{secrets.AWS_DEPLOYMENT_USER_ACCESS_KEY_ID}} \ + --secret-access-key ${{secrets.AWS_DEPLOYMENT_USER_SECRET_ACCESS_KEY}} \ + --region us-east-1 + - + name: "Infrastructure: Deploy IAM stack" + run: >- + bash "aws/scripts/deploy/deploy-stack.sh" \ + --template-file aws/iam-stack.yaml \ + --stack-name privacysexy-iam-stack \ + --capabilities CAPABILITY_IAM \ + --region us-east-1 --role-arn ${{secrets.AWS_IAM_STACK_DEPLOYMENT_ROLE_ARN}} \ + --profile user --session ${{github.actor}}-${{github.event_name}}-${{github.sha}} + - + name: "Infrastructure: Deploy certificate stack" + run: >- + bash "aws/scripts/deploy/deploy-stack.sh" \ + --template-file aws/certificate-stack.yaml \ + --stack-name privacysexy-certificate-stack \ + --region us-east-1 \ + --role-arn ${{secrets.AWS_CERTIFICATE_STACK_DEPLOYMENT_ROLE_ARN}} \ + --profile user --session ${{github.actor}}-${{github.event_name}}-${{github.sha}} + - + name: "Infrastructure: Deploy DNS stack" + run: >- + bash "aws/scripts/deploy/deploy-stack.sh" \ + --template-file aws/dns-stack.yaml \ + --stack-name privacysexy-dns-stack \ + --region us-east-1 \ + --role-arn ${{secrets.AWS_DNS_STACK_DEPLOYMENT_ROLE_ARN}} \ + --profile user --session ${{github.actor}}-${{github.event_name}}-${{github.sha}} + - + name: "Infrastructure: Deploy web stack" + run: >- + bash "aws/scripts/deploy/deploy-stack.sh" \ + --template-file aws/web-stack.yaml \ + --stack-name privacysexy-web-stack \ + --region us-east-1 \ + --role-arn ${{secrets.AWS_WEB_STACK_DEPLOYMENT_ROLE_ARN}} \ + --profile user --session ${{github.actor}}-${{github.event_name}}-${{github.sha}} + - + name: "App: Setup node" + uses: actions/setup-node@v1 + with: + node-version: '11.x' + - + name: "App: Install dependencies" + run: npm install + - + name: "App: Run tests" + run: npm run test:unit + - + name: "App: Build" + run: npm run build + - + name: "App: Deploy to S3" + run: >- + bash "aws/scripts/deploy/deploy-to-s3.sh" \ + --folder dist \ + --web-stack-name privacysexy-web-stack --web-stack-s3-name-output-name S3BucketName \ + --storage-class ONEZONE_IA \ + --role-arn ${{secrets.AWS_S3_SITE_DEPLOYMENT_ROLE_ARN}} \ + --region us-east-1 \ + --profile user --session ${{github.actor}}-${{github.event_name}}-${{github.sha}} + - + name: "App: Invalidate CloudFront cache" + run: >- + bash "aws/scripts/deploy/invalidate-cloudfront-cache.sh" \ + --paths "/*" \ + --web-stack-name privacysexy-web-stack --web-stack-cloudfront-arn-output-name CloudFrontDistributionArn \ + --role-arn ${{secrets.AWS_CLOUDFRONT_SITE_DEPLOYMENT_ROLE_ARN}} \ + --region us-east-1 \ + --profile user --session ${{github.actor}}-${{github.event_name}}-${{github.sha}} \ No newline at end of file diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml new file mode 100644 index 00000000..3559cea4 --- /dev/null +++ b/.github/workflows/run-tests.yaml @@ -0,0 +1,26 @@ +name: Run tests + +on: + push: + branches: + - '*' + - '!master' + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v1 + - + name: Setup node + uses: actions/setup-node@v1 + with: + node-version: '11.x' + - + name: Install dependencies + run: npm install + - + name: Run tests + run: npm run test:unit diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..df6d8162 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules +/dist +.vs +.vscode \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..5628d24c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +# +-+-+-+-+-+ +-+-+-+-+-+ +# |B|u|i|l|d| |S|t|a|g|e| +# +-+-+-+-+-+ +-+-+-+-+-+ +FROM node:lts-alpine as build-stage +WORKDIR /app +COPY package*.json ./ +RUN npm install +COPY . . +RUN npm run build +# For testing purposes, it's easy to run http-server on lts-alpine such as continuing from here: +# RUN npm install -g http-server +# EXPOSE 8080 +# CMD [ "http-server", "dist" ] + +# +-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+ +# |P|r|o|d|u|c|t|i|o|n| |S|t|a|g|e| +# +-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+ +FROM nginx:stable-alpine as production-stage +COPY --from=build-stage /app/dist /usr/share/nginx/html +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..f288702d --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 00000000..5be57842 --- /dev/null +++ b/README.md @@ -0,0 +1,119 @@ +# privacy.sexy + +Privacy & security generator tool for Windows. + +> because privacy is sexy 🍑🍆 + +[https://privacy.sexy](https://privacy.sexy) + +In this repo you find: + +- Application & infrastructure code of privacy.sexy, simply everything is code & open-sourced. +- Fully automated CI/CD pipeline to AWS for provisioning serverless infrastructure using GitHub actions. +- Vue.js application in conjunction with domain-driven design, event-driven architecture & data-driven programming. + +## Commands + +- Setup and run + - For development: + - `npm install` to project setup. + - `npm run serve` to compile & hot-reload for development. + - Production (using Docker): + - Build `docker build -t undergroundwires/privacy.sexy .` + - Run `docker run -it -p 8080:8080 --rm --name privacy.sexy-1 undergroundwires/privacy.sexy` +- Prepare for production: `npm run build` +- Run tests: `npm run test:unit` +- Lint and fix files: `npm run lint` + +## Extend scripts + +Fork it & add more scripts in `src/application/application.yml` and send a pull request 👌 + +## Architecture + +### Application + +- Powered by **TypeScript** + **Vue.js** 💪 + - and driven by **Domain-driven design**, **Event-driven architecture**, **Data-driven programming** concepts. +- Application uses highly decoupled models & services in different DDD layers. + - **Domain layer** is where the application is modelled with validation logic. + - **Presentation Layer** + - Consists of Vue.js components & UI stuff. + - Event driven as in components simply listens to events from the state and act accordingly. + - **Application Layer** + - Keeps the application state + - The [state](src/application/State/ApplicationState.ts) is a mutable singleton & event producer. + - The application is defined & controlled in a [single YAML file](`\application\application.yaml`) (see [Data-driven programming](https://en.wikipedia.org/wiki/Data-driven_programming)) + +![DDD + vue.js](docs/app-ddd.png) + +### AWS Infrastructure + +- The application runs in AWS 100% serverless and automatically provisioned using [CloudFormation files](/aws) and GitHub Actions. +- Maximum security & automation and minimum AWS costs were the highest priorities of the design. + +![AWS solution](docs/aws-solution.png) + +#### GitOps: CI/CD to AWS + +- Everything that's merged in the master goes directly to production. + - Deploy infrastructure ► Deploy web application ► Invalidate CloudFront Cache +- See more at [build-and-deploy.yaml](.GitHub/workflows/build-and-deploy.yaml) + +![CI/CD to AWS with GitHub Actions](docs/ci-cd.png) + +##### CloudFormation + +![CloudFormation design](docs/aws-cloudformation.png) + +- AWS infrastructure is defined as code with following files: + - `iam-stack`: Creates & updates the deployment user. + - Everything in IAM layer is fine-grained using least privileges principle. + - Each deployment step has its own temporary credentials with own permissions. + - `certificate-stack.yaml` + - It'll generate SSL certification for the root domain and www subdomain. + - ❗ It [must](https://aws.amazon.com/premiumsupport/knowledge-center/cloudfront-invalid-viewer-certificate/) be deployed in `us-east-1` to be able to be used by CloudFront by `web-stack`. + - It uses CustomResource and a lambda instead of native `AWS::CertificateManager::Certificate` because: + - Problem: + - AWS variant waits until a certificate is validated. + - There's no way to automate validation without workaround. + - Solution: + - Deploy a lambda that deploys the certificate (so we don't wait until certificate is validated) + - Get DNS records to be used in validation & export it to be used later. + - `web-stack.yaml`: It'll deploy S3 bucket and CloudFront in front of it. + - `dns-stack.yaml`: It'll deploy Route53 hosted zone + - Each time Route53 hosted zone is re-created it's required to update the DNS records in the domain registrar. See *Configure your domain registrar*. +- I use cross stacks instead of single stack or nested stacks because: + - Easier to test & maintain & smaller files and different lifecycles for different areas. + - It allows to deploy web bucket in different region than others as other stacks are global (`us-east-1`) resources. + +##### Initial deployment + +- ❗ Prerequisite: A registered domain name for website. + +1. **Configure build agent (GitHub actions)** + - Deploy manually `iam-stack.yaml` with stack name `privacysexy-iam-stack` (to follow the convention) + - It'll give you deploy user. Go to console & generate secret id + key (Security credentials => Create access key) for the user [IAM users](https://console.aws.amazon.com/iam/home#/users). + - 🚶 Deploy secrets: + - Add secret id & key in GitHub Secrets. + - `AWS_DEPLOYMENT_USER_ACCESS_KEY_ID`, `AWS_DEPLOYMENT_USER_SECRET_ACCESS_KEY` + - Add more secrets given from Outputs section of the CloudFormation stack. + - Run GitHub actions to deploy rest of the application. + - It'll run `certificate-stack.yaml` and then `iam-stack.yaml`. + +2. **Configure your domain registrar** + - ❗ **Web stack will fail** after DNS stack because you need to validate your domain. + - 🚶 Go to your domain registrar and change name servers to NS values + - `dns-stack.yaml` outputs those in CloudFormation stack. + - You can alternatively find those in [Route53](https://console.aws.amazon.com/route53/home#hosted-zones) + - When nameservers of your domain updated, the certification will get validated automatically, you can then delete the failed stack in CloudFormation & re-run the GitHub actions. + +## Thank you for the awesome projects 🍺 + +- [Vue.js](https://vuejs.org/) the only big JavaScript framework that's not backed by companies that make money off your data. +- [liquor-tree](https://GitHub.com/amsik/liquor-tree) for the awesome & super extensible tree component. +- [Ace](https://ace.c9.io/) for code box. +- [FileSaver.js](https://GitHub.com/eligrey/FileSaver.js) for save file dialog. +- [chai](https://GitHub.com/chaijs/chai) & [mocha](https://GitHub.com/mochajs/mocha) for making testing fun. +- [js-yaml-loader](https://GitHub.com/wwilsman/js-yaml-loader) for ahead of time loading `application.yml` +- [v-tooltip](https://GitHub.com/Akryum/v-tooltip) takes seconds to have a tooltip, exactly what I needed. diff --git a/aws.drawio b/aws.drawio new file mode 100644 index 00000000..fa6f6f35 --- /dev/null +++ b/aws.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/aws/certificate-stack.yaml b/aws/certificate-stack.yaml new file mode 100644 index 00000000..7a75a035 --- /dev/null +++ b/aws/certificate-stack.yaml @@ -0,0 +1,211 @@ +AWSTemplateFormatVersion: '2010-09-09' +Description: Creates certificate for the root + www subdomain. !! It must be deployed in us-east-1 to be able to be used by CloudFront. + +Parameters: + + RootDomainName: + Type: String + Default: privacy.sexy + Description: The root DNS name of the website e.g. privacy.sexy + AllowedPattern: (?!-)[a-zA-Z0-9-.]{1,63}(? + 'use strict'; + const aws = require('aws-sdk'); + const acm = new aws.ACM(); + const log = (t) => console.log(t); + + exports.handler = async (event, context) => { + log(`Request recieved:\n${JSON.stringify(event)}`); + const userData = event.ResourceProperties; + const rootDomain = userData.RootDomainName; + let data = null; + try { + switch(event.RequestType) { + case 'Create': + data = await handleCreateAsync(rootDomain, userData.Tags); + break; + case 'Update': + data = await handleUpdateAsync(); + break; + case 'Delete': + data = await handleDeleteAsync(rootDomain); + break; + } + await sendResponseAsync(event, context, 'SUCCESS', data); + } catch(error) { + await sendResponseAsync(event, context, 'ERROR', { + title: `Failed to ${event.RequestType}, see error`, + error: error + }); + } + } + + async function handleCreateAsync(rootDomain, tags) { + const { CertificateArn } = await acm.requestCertificate({ + DomainName: rootDomain, + SubjectAlternativeNames: [`www.${rootDomain}`], + Tags: tags, + ValidationMethod: 'DNS', + }).promise(); + log(`Cert requested:${CertificateArn}`); + const waitAsync = (ms) => new Promise(resolve => setTimeout(resolve, ms)); + const maxAttempts = 10; + let options = undefined; + for (let attempt = 0; attempt < maxAttempts && !options; attempt++) { + await waitAsync(2000); + const { Certificate } = await acm.describeCertificate({ CertificateArn }).promise(); + if(Certificate.DomainValidationOptions.filter((o) => o.ResourceRecord).length === 2) { + options = Certificate.DomainValidationOptions; + } + } + if(!options) { + throw new Error(`No records after ${maxAttempts} attempts.`); + } + return getResponseData(options, CertificateArn, rootDomain); + } + + async function handleDeleteAsync(rootDomain) { + const certs = await acm.listCertificates({}).promise(); + const cert = certs.CertificateSummaryList.find((cert) => cert.DomainName === rootDomain); + if (cert) { + await acm.deleteCertificate({ CertificateArn: cert.CertificateArn }).promise(); + log(`Deleted ${cert.CertificateArn}`); + } else { + log('Cannot find'); // Do not fail, delete can be called when e.g. CF fails before creating cert + } + return null; + } + + async function handleUpdateAsync() { + throw new Error(`Not yet implemented update`); + } + + function getResponseData(options, arn, rootDomain) { + const findRecord = (url) => options.find(option => option.DomainName === url).ResourceRecord; + const root = findRecord(rootDomain); + const www = findRecord(`www.${rootDomain}`); + const data = { + CertificateArn: arn, + RootVerificationRecordName: root.Name, + RootVerificationRecordValue: root.Value, + WwwVerificationRecordName: www.Name, + WwwVerificationRecordValue: www.Value, + }; + return data; + } + + /* cfn-response can't async / await :( */ + async function sendResponseAsync(event, context, responseStatus, responseData, physicalResourceId) { + return new Promise((s, f) => { + var b = JSON.stringify({ + Status: responseStatus, + Reason: `See the details in CloudWatch Log Stream: ${context.logStreamName}`, + PhysicalResourceId: physicalResourceId || context.logStreamName, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + Data: responseData + }); + log(`Response body:\n${b}`); + var u = require("url").parse(event.ResponseURL); + var r = require("https").request( + { + hostname: u.hostname, + port: 443, + path: u.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": b.length + } + }, (p) => { + log(`Status code: ${p.statusCode}`); + log(`Status message: ${p.statusMessage}`); + s(context.done()); + }); + r.on("error", (e) => { + log(`request failed: ${e}`); + f(context.done(e)); + }); + r.write(b); + r.end(); + }); + } + +Outputs: + CertificateArn: + Description: The Amazon Resource Name (ARN) of an AWS Certificate Manager (ACM) certificate. + Value: !GetAtt AcmCertificateForHostedZone.CertificateArn + Export: + Name: !Join [':', [ !Ref 'AWS::StackName', CertificateArn ]] + + RootVerificationRecordName: + Description: Name for root domain CNAME verification record + Value: !GetAtt AcmCertificateForHostedZone.RootVerificationRecordName + Export: + Name: !Join [':', [ !Ref 'AWS::StackName', RootVerificationRecordName ]] + + RootVerificationRecordValue: + Description: Value for root domain name CNAME verification record + Value: !GetAtt AcmCertificateForHostedZone.RootVerificationRecordValue + Export: + Name: !Join [':', [ !Ref 'AWS::StackName', RootVerificationRecordValue ]] + + WwwVerificationRecordName: + Description: Name for www domain name CNAME verification record + Value: !GetAtt AcmCertificateForHostedZone.WwwVerificationRecordName + Export: + Name: !Join [':', [ !Ref 'AWS::StackName', WwwVerificationRecordName ]] + + WwwVerificationRecordValue: + Description: Value for www domain name CNAME verification record + Value: !GetAtt AcmCertificateForHostedZone.WwwVerificationRecordValue + Export: + Name: !Join [':', [ !Ref 'AWS::StackName', WwwVerificationRecordValue ]] diff --git a/aws/dns-stack.yaml b/aws/dns-stack.yaml new file mode 100644 index 00000000..59eb983a --- /dev/null +++ b/aws/dns-stack.yaml @@ -0,0 +1,61 @@ +AWSTemplateFormatVersion: '2010-09-09' +Description: Creates hosted zone & sets up records for the CloudFront URL. + +Parameters: + + RootDomainName: + Type: String + Default: privacy.sexy + Description: The root DNS name of the website e.g. privacy.sexy + AllowedPattern: (?!-)[a-zA-Z0-9-.]{1,63}(? Deploys the identity management for the deployment + +# Granulatiy cheatsheet: https://iam.cloudonaut.io/ + +Parameters: + WebStackName: + Type: String + Default: privacysexy-web-stack + Description: Name of the web stack. + DnsStackName: + Type: String + Default: privacysexy-dns-stack + Description: Name of the DNS stack. + CertificateStackName: + Type: String + Default: privacysexy-certificate-stack + Description: Name of the IAM stack. + +Resources: + + # ----------------------------- + # ------ User & Group --------- + # ----------------------------- + DeploymentGroup: + Type: AWS::IAM::Group + Properties: + # GroupName: No hardcoded naming because of easier CloudFormation management + ManagedPolicyArns: + - !Ref AllowValidateTemplatePolicy + + DeploymentUser: + Type: AWS::IAM::User + Properties: + # # UserName: No hardcoded naming because of easier CloudFormation management + # # Policies: Assing policies on group level + Tags: + - + Key: Application + Value: privacy.sexy + + AddDeploymentUserToDeploymentGroup: + Type: AWS::IAM::UserToGroupAddition + Properties: + GroupName: !Ref DeploymentGroup + Users: + - !Ref DeploymentUser + + # ----------------------------- + # ----------- Roles ----------- + # ----------------------------- + IamStackDeployRole: + Type: AWS::IAM::Role + Properties: + Description: Allows to deploy IAM stack + AssumeRolePolicyDocument: + Statement: + - + Effect: Allow + Principal: + AWS: !GetAtt DeploymentUser.Arn + Action: sts:AssumeRole + Tags: + - + Key: Application + Value: privacy.sexy + ManagedPolicyArns: + - !Ref CloudFormationDeployPolicy + - !Ref PolicyDeployPolicy + - !Ref IamStackDeployPolicy + + CertificateStackDeployRole: + Type: AWS::IAM::Role + Properties: + Description: Allows to deploy certificate stack + AssumeRolePolicyDocument: + Statement: + - + Effect: Allow + Principal: + AWS: !GetAtt DeploymentUser.Arn + Action: sts:AssumeRole + Tags: + - + Key: Application + Value: privacy.sexy + ManagedPolicyArns: + - !Ref CloudFormationDeployPolicy + - !Ref LambdaBackedCustomResourceDeployPolicy + + DnsStackDeployRole: + Type: AWS::IAM::Role + Properties: + Description: Allows to deploy DNS stack + AssumeRolePolicyDocument: + Statement: + - + Effect: Allow + Principal: + AWS: !GetAtt DeploymentUser.Arn + Action: sts:AssumeRole + Tags: + - + Key: Application + Value: privacy.sexy + ManagedPolicyArns: + - !Ref CloudFormationDeployPolicy + - !Ref DnsStackDeployPolicy + + WebStackDeployRole: + Type: AWS::IAM::Role + Properties: + Description: Allows to deploy web stack + AssumeRolePolicyDocument: + Statement: + - + Effect: Allow + Principal: + AWS: !GetAtt DeploymentUser.Arn + Action: sts:AssumeRole + Tags: + - + Key: Application + Value: privacy.sexy + ManagedPolicyArns: + - !Ref CloudFormationDeployPolicy + - !Ref WebStackDeployPolicy + + S3SiteDeployRole: + Type: 'AWS::IAM::Role' + Properties: + Description: "Allows to deploy website to S3" + AssumeRolePolicyDocument: + Statement: + - + Effect: Allow + Principal: + AWS: !GetAtt DeploymentUser.Arn + Action: sts:AssumeRole + Tags: + - + Key: Application + Value: privacy.sexy + ManagedPolicyArns: + - !Ref S3SiteDeployPolicy + - !Ref StackExportReaderPolicy + + CloudFrontSiteDeployRole: + Type: 'AWS::IAM::Role' + Properties: + Description: "Allows to informs to CloudFront to renew its cache from S3" + AssumeRolePolicyDocument: + Statement: + - + Effect: Allow + Principal: + AWS: !GetAtt DeploymentUser.Arn + Action: sts:AssumeRole + Tags: + - + Key: Application + Value: privacy.sexy + ManagedPolicyArns: + - !Ref CloudFrontInvalidationPolicy + - !Ref StackExportReaderPolicy + + ResolveCertificateLambdaRole: # See certificate stack + Type: AWS::IAM::Role + Properties: + Description: Allow deployment of certificates + AssumeRolePolicyDocument: + Statement: + - + Effect: Allow + Principal: + Service: lambda.amazonaws.com + Action: sts:AssumeRole + ManagedPolicyArns: + - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole + - !Ref CertificateDeployPolicy + + # -------------------------------- + # ----------- Policies ----------- + # -------------------------------- + + AllowValidateTemplatePolicy: + Type: AWS::IAM::ManagedPolicy + Properties: + Description: "No read & writes to resources, reveals just basic CloudFormation API to be used for validating templates" + # ManagedPolicyName: No hardcoded naming because of easier CloudFormation management + PolicyDocument: + Version: 2012-10-17 + Statement: + - + Sid: AllowCloudFormationTemplateValidation + Effect: Allow + Action: + - cloudformation:ValidateTemplate + Resource: '*' + + CloudFormationDeployPolicy: + Type: AWS::IAM::ManagedPolicy + Properties: + Description: "Allows deploying CloudFormation using CLI command 'aws cloudformation deploy' (with change sets)" + # ManagedPolicyName: No hardcoded naming because of easier CloudFormation management + PolicyDocument: + Version: 2012-10-17 + Statement: + - + Sid: AllowCloudFormationStackOperations + Effect: Allow + Action: + - cloudformation:GetTemplateSummary + - cloudformation:DescribeStacks + - cloudformation:CreateChangeSet + - cloudformation:ExecuteChangeSet + - cloudformation:DescribeChangeSet + Resource: + - !Sub arn:aws:cloudformation:*:${AWS::AccountId}:stack/${WebStackName}/* + - !Sub arn:aws:cloudformation:*:${AWS::AccountId}:stack/${DnsStackName}/* + - !Sub arn:aws:cloudformation:*:${AWS::AccountId}:stack/${AWS::StackName}/* + - !Sub arn:aws:cloudformation:*:${AWS::AccountId}:stack/${CertificateStackName}/* + + IamStackDeployPolicy: + Type: AWS::IAM::ManagedPolicy + Properties: + Description: Allows deploying IAM CloudFormation stack. + # ManagedPolicyName: No hardcoded naming because of easier CloudFormation management + PolicyDocument: + Version: 2012-10-17 + Statement: + - + Sid: AllowUserArnExport + Effect: Allow + Action: + - iam:GetUser + Resource: + - !GetAtt DeploymentUser.Arn + - + Sid: AllowTagging + Effect: Allow + Action: + - iam:TagResource + Resource: + - !Sub arn:aws:cloudformation::${AWS::AccountId}:stack/${AWS::StackName}/* + - !GetAtt DeploymentUser.Arn + - + Sid: AllowRoleDeployment + Effect: Allow + Action: + - iam:CreateRole + Resource: + - !Sub arn:aws:iam::${AWS::AccountId}:role/${AWS::StackName}-* + + LambdaBackedCustomResourceDeployPolicy: + Type: AWS::IAM::ManagedPolicy + Properties: + Description: Allows deploying a lambda-backed custom resource. + # ManagedPolicyName: # ManagedPolicyName: No hardcoded naming because of easier CloudFormation management + PolicyDocument: + Version: 2012-10-17 + Statement: + - + Sid: AllowLambdaDeployment + Effect: Allow + Action: + - lambda:GetFunction + - lambda:DeleteFunction + - lambda:CreateFunction + - lambda:GetFunctionConfiguration + - lambda:InvokeFunction + Resource: + - !Sub arn:aws:lambda:*:${AWS::AccountId}:function:${CertificateStackName}* + - + Sid: AllowPassingLambdaRole + Effect: Allow + Action: + - iam:PassRole + Resource: + - !GetAtt ResolveCertificateLambdaRole.Arn + + CertificateDeployPolicy: + Type: AWS::IAM::ManagedPolicy + Properties: + Description: Allows deploying certifications stack. + # ManagedPolicyName: # ManagedPolicyName: No hardcoded naming because of easier CloudFormation management + PolicyDocument: + Version: 2012-10-17 + Statement: + - + Sid: AllowCertificateDeployment + Effect: Allow + Action: + - acm:RequestCertificate + - acm:DescribeCertificate + - acm:DeleteCertificate + - acm:AddTagsToCertificate + - acm:ListCertificates + Resource: '*' # Certificate Manager does not support resource level IAM + + PolicyDeployPolicy: + Type: AWS::IAM::ManagedPolicy + Properties: + Description: Allows deployment of policies + # ManagedPolicyName: Commented out because CloudFormation requires to rename when replacing custom-named resource + PolicyDocument: + Version: 2012-10-17 + Statement: + - + Sid: AllowPolicyUpdates + Effect: Allow + Action: + - iam:ListPolicyVersions + - iam:CreatePolicyVersion + - iam:DeletePolicyVersion + - iam:CreatePolicy + - iam:DeletePolicy + - iam:GetPolicy + Resource: + - !Sub arn:aws:iam::${AWS::AccountId}:policy/${AWS::StackName}-* # when ManagedPolicyName is not given policies get name like StackName-* + - + Sid: AllowPoliciesOnRoles + Effect: Allow + Action: + - iam:AttachRolePolicy + - iam:DetachRolePolicy + - iam:GetRole + Resource: + - !Sub arn:aws:iam::${AWS::AccountId}:role/${AWS::StackName}-* + - + Sid: AllowPolicyAssigmentToGroup + Effect: Allow + Action: + - iam:AttachGroupPolicy + - iam:DetachGroupPolicy + Resource: + - !GetAtt DeploymentGroup.Arn + - + Sid: AllowGettingGroupInformation + Effect: Allow + Action: + - iam:GetGroup + Resource: !Sub arn:aws:iam::${AWS::AccountId}:group/${DeploymentGroup} + + DnsStackDeployPolicy: + Type: AWS::IAM::ManagedPolicy + Properties: + Description: Allows deployment of DNS stack + PolicyDocument: + Version: 2012-10-17 + Statement: + - + Sid: AllowHostedZoneDeployment + Effect: Allow + Action: + - route53:CreateHostedZone + - route53:ListQueryLoggingConfigs + - route53:DeleteHostedZone + - route53:GetChange + - route53:ChangeTagsForResource + - route53:GetHostedZone + - route53:ChangeResourceRecordSets + Resource: '*' # Does not support resource-level permissions https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/access-control-overview.html#access-control-manage-access-intro-resource-policies + + WebStackDeployPolicy: + # We need a role to run s3:PutBucketPolicy, IAM users cannot run it. See https://stackoverflow.com/a/48551383 + Type: AWS::IAM::ManagedPolicy + Properties: + Description: Allows deployment of web stack + PolicyDocument: + Version: 2012-10-17 + Statement: + - + Sid: AllowCloudFrontOAIDeployment + Effect: Allow + Action: + - cloudfront:GetCloudFrontOriginAccessIdentity + - cloudfront:CreateCloudFrontOriginAccessIdentity + - cloudfront:GetCloudFrontOriginAccessIdentityConfig + - cloudfront:DeleteCloudFrontOriginAccessIdentity + Resource: '*' # Does not support resource-level permissions https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cf-api-permissions-ref.html + - + Sid: AllowCloudFrontDistributionDeployment + Effect: Allow + Action: + - cloudfront:CreateDistribution + - cloudfront:DeleteDistribution + - cloudfront:UpdateDistribution + - cloudfront:GetDistribution + - cloudfront:TagResource + - cloudfront:UpdateCloudFrontOriginAccessIdentity + Resource: !Sub arn:aws:cloudfront::${AWS::AccountId}:* + - + Sid: AllowS3BucketPolicyAccess + Effect: Allow + Action: + - s3:CreateBucket + - s3:DeleteBucket + - s3:PutBucketWebsite + - s3:DeleteBucketPolicy + - s3:PutBucketPolicy + - s3:GetBucketPolicy + Resource: !Sub arn:aws:s3:::${WebStackName}* + - + Sid: AllowRecordDeploymentToRoute53 + Effect: Allow + Action: + - route53:GetHostedZone + - route53:ChangeResourceRecordSets + - route53:GetChange + - route53:ListResourceRecordSets + Resource: '*' # Does not support resource-level permissions https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/access-control-overview.html#access-control-manage-access-intro-resource-policies + + S3SiteDeployPolicy: + Type: AWS::IAM::ManagedPolicy + Properties: + Description: Allows listing buckets to be able to list objects in a bucket + # ManagedPolicyName: Commented out because CloudFormation requires to rename when replacing custom-named resources + PolicyDocument: + Version: 2012-10-17 + Statement: + - + Sid: AllowListingObjects + Effect: Allow + Action: + - s3:ListBucket # To allow ListObjectsV2 + Resource: !Sub arn:aws:s3:::${WebStackName}* + - + Sid: AllowUpdatingObjects + Effect: Allow + Action: + - s3:PutObject + - s3:DeleteObject + Resource: !Sub arn:aws:s3:::${WebStackName}*/* + + CloudFrontInvalidationPolicy: + Type: AWS::IAM::ManagedPolicy + Properties: + Description: Allows creating invalidations on CloudFront + # ManagedPolicyName: Commented out because CloudFormation requires to rename when replacing custom-named resource + PolicyDocument: + Version: 2012-10-17 + Statement: + - + Sid: AllowCloudFrontInvalidations + Effect: Allow + Action: + - cloudfront:CreateInvalidation + Resource: "*" # Does not support resource-level permissions https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cf-api-permissions-ref.html + + StackExportReaderPolicy: + Type: AWS::IAM::ManagedPolicy + Properties: + Description: Allows creating invalidations on CloudFront + # ManagedPolicyName: Commented out because CloudFormation requires to rename when replacing custom-named resource + PolicyDocument: + Version: 2012-10-17 + Statement: + - + Sid: AllowGettingBucketName + Effect: Allow + Action: + - cloudformation:DescribeStacks + Resource: !Sub arn:aws:cloudformation:*:${AWS::AccountId}:stack/${WebStackName}/* + +Outputs: + ResolveCertificateLambdaRoleArn: + Description: The Amazon Resource Name (ARN) of the lambda for deploying certificates. + Value: !GetAtt ResolveCertificateLambdaRole.Arn + Export: + Name: !Join [ ':', [ !Ref 'AWS::StackName', ResolveCertificateLambdaRoleArn ] ] + + CertificateStackDeployRoleArn: + Description: "GitHub secret: AWS_CERTIFICATE_STACK_DEPLOYMENT_ROLE_ARN" + Value: !GetAtt CertificateStackDeployRole.Arn + + DnsStackDeployRoleArn: + Description: "GitHub secret: AWS_DNS_STACK_DEPLOYMENT_ROLE_ARN" + Value: !GetAtt DnsStackDeployRole.Arn + + IamStackDeployRoleArn: + Description: "GitHub secret: AWS_IAM_STACK_DEPLOYMENT_ROLE_ARN" + Value: !GetAtt IamStackDeployRole.Arn + + WebStackDeployRoleArn: + Description: "GitHub secret: AWS_WEB_STACK_DEPLOYMENT_ROLE_ARN" + Value: !GetAtt WebStackDeployRole.Arn + + S3SiteDeployRoleArn: + Description: "GitHub secret: AWS_S3_SITE_DEPLOYMENT_ROLE_ARN" + Value: !GetAtt S3SiteDeployRole.Arn + + CloudFrontSiteDeployRoleArn: + Description: "GitHub secret: AWS_CLOUDFRONT_SITE_DEPLOYMENT_ROLE_ARN" + Value: !GetAtt CloudFrontSiteDeployRole.Arn diff --git a/aws/scripts/configure/create-role-profile.sh b/aws/scripts/configure/create-role-profile.sh new file mode 100644 index 00000000..98f127d0 --- /dev/null +++ b/aws/scripts/configure/create-role-profile.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# Parse parameters +while [[ "$#" -gt 0 ]]; do case $1 in + --user-profile) USER_PROFILE="$2"; shift;; + --role-profile) ROLE_PROFILE="$2"; shift;; + --role-arn) ROLE_ARN="$2"; shift;; + --session) SESSION="$2";shift;; + --region) REGION="$2";shift;; + *) echo "Unknown parameter passed: $1"; exit 1;; +esac; shift; done + +# Verify parameters +if [ -z "$USER_PROFILE" ]; then echo "User profile name is not set."; exit 1; fi; +if [ -z "$ROLE_PROFILE" ]; then echo "Role profile name is not set."; exit 1; fi; +if [ -z "$ROLE_ARN" ]; then echo "Role ARN is not set"; exit 1; fi; +if [ -z "$SESSION" ]; then echo "Session name is not set."; exit 1; fi; +if [ -z "$REGION" ]; then echo "Region is not set."; exit 1; fi; + +creds=$(aws sts assume-role --role-arn $ROLE_ARN --role-session-name $SESSION --profile $USER_PROFILE) + +aws_access_key_id=$(echo $creds | jq -r '.Credentials.AccessKeyId') +echo ::add-mask::$aws_access_key_id +aws_secret_access_key=$(echo $creds | jq -r '.Credentials.SecretAccessKey') +echo ::add-mask::$aws_secret_access_key +aws_session_token=$(echo $creds | jq -r '.Credentials.SessionToken') +echo ::add-mask::$aws_session_token + +aws configure --profile $ROLE_PROFILE set aws_access_key_id $aws_access_key_id +aws configure --profile $ROLE_PROFILE set aws_secret_access_key $aws_secret_access_key +aws configure --profile $ROLE_PROFILE set aws_session_token $aws_session_token +aws configure --profile $ROLE_PROFILE set region $REGION + +echo Profile $ROLE_PROFILE is created + +bash "${BASH_SOURCE%/*}/mask-identity.sh" --profile $ROLE_PROFILE \ No newline at end of file diff --git a/aws/scripts/configure/create-user-profile.sh b/aws/scripts/configure/create-user-profile.sh new file mode 100644 index 00000000..bd6591a7 --- /dev/null +++ b/aws/scripts/configure/create-user-profile.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Parse parameters +while [[ "$#" -gt 0 ]]; do case $1 in + --profile) PROFILE="$2"; shift;; + --access-key-id) ACCESS_KEY_ID="$2"; shift;; + --secret-access-key) SECRET_ACCESS_KEY="$2"; shift;; + --region) REGION="$2";shift;; + *) echo "Unknown parameter passed: $1"; exit 1;; +esac; shift; done + +# Verify parameters +if [ -z "$PROFILE" ]; then echo "Profile name is not set."; exit 1; fi; +echo $PROFILE +if [ -z "$ACCESS_KEY_ID" ]; then echo "Access key ID is not set"; exit 1; fi; +if [ -z "$SECRET_ACCESS_KEY" ]; then echo "Secret access key is not set."; exit 1; fi; +if [ -z "$REGION" ]; then echo "Region is not set."; exit 1; fi; + +aws configure --profile $PROFILE set aws_access_key_id $ACCESS_KEY_ID +aws configure --profile $PROFILE set aws_secret_access_key $SECRET_ACCESS_KEY +aws configure --profile $PROFILE set region $REGION + +echo Profile $PROFILE is created + +bash "${BASH_SOURCE%/*}/mask-identity.sh" --profile $PROFILE \ No newline at end of file diff --git a/aws/scripts/configure/mask-identity.sh b/aws/scripts/configure/mask-identity.sh new file mode 100644 index 00000000..e71c4739 --- /dev/null +++ b/aws/scripts/configure/mask-identity.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Parse parameters +while [[ "$#" -gt 0 ]]; do case $1 in + --profile) PROFILE="$2";shift;; + *) echo "Unknown parameter passed: $1"; exit 1;; +esac; shift; done + +# Verify parameters +if [ -z "$PROFILE" ]; then echo "Profile name is not set."; exit 1; fi; + +aws_identity=$(aws sts get-caller-identity --profile $PROFILE) +echo ::add-mask::$(echo $aws_identity | jq -r '.Account') +echo ::add-mask::$(echo $aws_identity | jq -r '.UserId') +echo ::add-mask::$(echo $aws_identity | jq -r '.Arn') + +echo Credentials are masked \ No newline at end of file diff --git a/aws/scripts/deploy/deploy-stack.sh b/aws/scripts/deploy/deploy-stack.sh new file mode 100644 index 00000000..2b03a8f3 --- /dev/null +++ b/aws/scripts/deploy/deploy-stack.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Parse parameters +while [[ "$#" -gt 0 ]]; do case $1 in + --template-file) TEMPLATE_FILE="$2"; shift;; + --stack-name) STACK_NAME="$2"; shift;; + --profile) PROFILE="$2"; shift;; + --capabilities) CAPABILITY_IAM="$2"; shift;; + --role-arn) ROLE_ARN="$2";shift;; + --session) SESSION="$2";shift;; + --region) REGION="$2";shift;; + *) echo "Unknown parameter passed: $1"; exit 1;; +esac; shift; done + +# Verify parameters +if [ -z "$TEMPLATE_FILE" ]; then echo "Template file is not set."; exit 1; fi; +if [ -z "$STACK_NAME" ]; then echo "Template file is not set."; exit 1; fi; +if [ -z "$PROFILE" ]; then echo "Profile is not set."; exit 1; fi; +if [ -z "$ROLE_ARN" ]; then echo "Role ARN is not set."; exit 1; fi; +if [ -z "$SESSION" ]; then echo "Role session is not set."; exit 1; fi; + + +echo Validating stack "$STACK_NAME" +aws cloudformation validate-template \ + --template-body file://$TEMPLATE_FILE \ + --profile $PROFILE + +ROLE_PROFILE=$STACK_NAME + +echo Assuming role +bash "${BASH_SOURCE%/*}/../configure/create-role-profile.sh" \ + --role-profile $ROLE_PROFILE --user-profile $PROFILE \ + --role-arn $ROLE_ARN \ + --session $SESSION \ + --region $REGION + +echo Deploying stack "$TEMPLATE_FILE" +aws cloudformation deploy \ + --template-file $TEMPLATE_FILE \ + --stack-name $STACK_NAME \ + ${CAPABILITY_IAM:+ --capabilities $CAPABILITY_IAM} \ + --no-fail-on-empty-changeset \ + --profile $ROLE_PROFILE \ No newline at end of file diff --git a/aws/scripts/deploy/deploy-to-s3.sh b/aws/scripts/deploy/deploy-to-s3.sh new file mode 100644 index 00000000..20746de8 --- /dev/null +++ b/aws/scripts/deploy/deploy-to-s3.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +# Parse parameters +while [[ "$#" -gt 0 ]]; do case $1 in + --folder) FOLDER="$2"; shift;; + --web-stack-name) WEB_STACK_NAME="$2"; shift;; + --web-stack-s3-name-output-name) WEB_STACK_S3_NAME_OUTPUT_NAME="$2"; shift;; + --storage-class) STORAGE_CLASS="$2"; shift;; + --profile) PROFILE="$2"; shift;; + --role-arn) ROLE_ARN="$2";shift;; + --session) SESSION="$2";shift;; + --region) REGION="$2";shift;; + *) echo "Unknown parameter passed: $1"; exit 1;; +esac; shift; done + +# Verify parameters +if [ -z "$FOLDER" ]; then echo "Folder is not set."; exit 1; fi; +if [ -z "$PROFILE" ]; then echo "Profile is not set."; exit 1; fi; +if [ -z "$ROLE_ARN" ]; then echo "Role ARN is not set."; exit 1; fi; +if [ -z "$SESSION" ]; then echo "Role session is not set."; exit 1; fi; +if [ -z "$WEB_STACK_NAME" ]; then echo "Web stack name is not set."; exit 1; fi; +if [ -z "$WEB_STACK_S3_NAME_OUTPUT_NAME" ]; then echo "S3 name output name is not set."; exit 1; fi; +if [ -z "$STORAGE_CLASS" ]; then echo "S3 object storage class is not set."; exit 1; fi; + +echo Assuming role +ROLE_PROFILE=deploy-s3 +bash "${BASH_SOURCE%/*}/../configure/create-role-profile.sh" \ + --role-profile $ROLE_PROFILE --user-profile $PROFILE \ + --role-arn $ROLE_ARN \ + --session $SESSION \ + --region $REGION + +echo Getting S3 bucket name from stack "$WEB_STACK_NAME" with output "$WEB_STACK_S3_NAME_OUTPUT_NAME" +S3_BUCKET_NAME=$(aws cloudformation describe-stacks \ + --stack-name $WEB_STACK_NAME \ + --query "Stacks[0].Outputs[?OutputKey=='$WEB_STACK_S3_NAME_OUTPUT_NAME'].OutputValue" \ + --output text \ + --profile $ROLE_PROFILE) +if [ -z "$S3_BUCKET_NAME" ]; then echo "Could not read S3 bucket name"; exit 1; fi; +echo ::add-mask::$S3_BUCKET_NAME # Just being extra cautious + +echo Syncing folder to S3 + +aws s3 sync $FOLDER s3://$S3_BUCKET_NAME \ + --storage-class $STORAGE_CLASS \ + --no-progress --follow-symlinks --delete \ + --profile $ROLE_PROFILE \ No newline at end of file diff --git a/aws/scripts/deploy/invalidate-cloudfront-cache.sh b/aws/scripts/deploy/invalidate-cloudfront-cache.sh new file mode 100644 index 00000000..116318aa --- /dev/null +++ b/aws/scripts/deploy/invalidate-cloudfront-cache.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# Parse parameters +while [[ "$#" -gt 0 ]]; do case $1 in + --paths) PATHS="$2"; shift;; + --web-stack-name) WEB_STACK_NAME="$2"; shift;; + --web-stack-cloudfront-arn-output-name) WEB_STACK_CLOUDFRONT_ARN_OUTPUT_NAME="$2"; shift;; + --profile) PROFILE="$2"; shift;; + --role-arn) ROLE_ARN="$2";shift;; + --session) SESSION="$2";shift;; + --region) REGION="$2";shift;; + *) echo "Unknown parameter passed: $1"; exit 1;; +esac; shift; done + +# Verify parameters +if [ -z "$PATHS" ]; then echo "Paths is not set."; exit 1; fi; +if [ -z "$PROFILE" ]; then echo "Profile is not set."; exit 1; fi; +if [ -z "$ROLE_ARN" ]; then echo "Role ARN is not set."; exit 1; fi; +if [ -z "$SESSION" ]; then echo "Role session is not set."; exit 1; fi; +if [ -z "$WEB_STACK_NAME" ]; then echo "Web stack name is not set."; exit 1; fi; +if [ -z "$WEB_STACK_CLOUDFRONT_ARN_OUTPUT_NAME" ]; then echo "CloudFront ARN output name is not set."; exit 1; fi; + + +echo Assuming role +ROLE_PROFILE=invalidate-cloudfront +bash "${BASH_SOURCE%/*}/../configure/create-role-profile.sh" \ + --role-profile $ROLE_PROFILE --user-profile $PROFILE \ + --role-arn $ROLE_ARN \ + --session $SESSION \ + --region $REGION + +echo Getting CloudFront ARN from stack "$WEB_STACK_NAME" with output "$WEB_STACK_CLOUDFRONT_ARN_OUTPUT_NAME" +CLOUDFRONT_ARN=$(aws cloudformation describe-stacks \ + --stack-name $WEB_STACK_NAME \ + --query "Stacks[0].Outputs[?OutputKey=='$WEB_STACK_CLOUDFRONT_ARN_OUTPUT_NAME'].OutputValue" \ + --output text \ + --profile $ROLE_PROFILE) +if [ -z "$CLOUDFRONT_ARN" ]; then echo "Could not read CloudFront ARN"; exit 1; fi; +echo :add-mask::$CLOUDFRONT_ARN + +echo Syncing folder to S3 +aws cloudfront create-invalidation \ + --paths $PATHS \ + --distribution-id $CLOUDFRONT_ARN \ + --profile $ROLE_PROFILE \ No newline at end of file diff --git a/aws/web-stack.yaml b/aws/web-stack.yaml new file mode 100644 index 00000000..17049c30 --- /dev/null +++ b/aws/web-stack.yaml @@ -0,0 +1,138 @@ +AWSTemplateFormatVersion: '2010-09-09' + +Description: |- + > Creates an S3 bucket configured for hosting a static webpage. + > Creates CloudFront distribution that has access to read the S3 bucket. + +Parameters: + + RootDomainName: + Type: String + Default: privacy.sexy + Description: The root DNS name of the website e.g. privacy.sexy + AllowedPattern: (?!-)[a-zA-Z0-9-.]{1,63}(?3Zpdk6I4FIZ/jZdakPDlpa3tzlTNbnVVV83OzE1XhACZAUKF2Or8+k0wCBhau1f8GrpayUkC5HlzTg7IAE7T9V8M5fHfNMDJABjBegBnAwA8YIpPadhsDS50t4aIkWBrMmvDM/mNldFQ1iUJcNFqyClNOMnbRp9mGfZ5y4YYo6t2s5Am7bPmKMKa4dlHiW79lwQ8VsOyjdr+CZMors5sGqomRVVjZShiFNBVwwQfB3DKKOXbvXQ9xYlkV3HZ9pu/Ubu7MIYz/p4OD0/efJxMXmZfs6kd/vj2Txp+HlrVxfFNNWIcCACqSBmPaUQzlDzW1gdGl1mA5WENUarbfKE0F0ZTGH9izjdKTbTkVJhiniaqFq8J/ya7j2xV+t6oma3VkcvCpipknG0anWTxe7Ou7laWqn4FZ/QXntKEsnJ8cFxuomY7cjncN4kqU0GXzMcHMFYzE7EI8wPtwE534S+YplhcqejHcII4eW1fB1IzN9q1q8UVO0rfj2gNrqL1TreWarWI96AbPFG3suuEMbRpNMgpyXjROPKTNIgGKnZC5Zsqctp77n24NTDtvQmzPX09fXbjOGFGwatGj0bsMEbAfmf4uONpaF0zfKjjvqJkqc70xHAhxirOTTNtIrRlXsWE4+cclRhWIlNoSxqSJGkwDmzsBVYXfQ8soOPIHjTj1TyrrgwzjteHxdDhqQ6O23Yf5U2res2H1coeN9Z7xzgTbehc07XMlmu907PMtmeBm3AtcCHX+n8RftwO2iZsBe2j7YHrnj/IQ+9eUsSbmlCnpgwnRQ+gxepJnifE7yNUtwKvFrpDW/51ieGUmzpCw77ddiKdFMXtdhTf3Yw1wzjoCOPu2cK4fS/Oc9P3V/AeEiSoOd2Mpoj0mxotzCAIO7mbhgvH+Ayp0XjPqca6UwGrw6nsczmVpYH+nIUMCSJLny8Z7hV46PnY97uALzzbso0zAHf3clGnA7h3ySjmaMDxK1aZzRugzY+DDrHTDTpwxwvD6GeF8PbYujpbtwMtOBdaV0PLcE4Lwqk6+F3jhR0L8EXxenqoeMw44ffIdj8uXB3uWIPLY4ZRQLLoD8B79dBg6ll8Kn9e6TfsLpDvBbALLoCWZQf9wBXJSRuuYelw7ZHZgRecC6+er4ldEhy7R7pVxMA2R+Obg2xrkAuO+KEU7R18e6C15+xm9ZTjiqjOk2X1MbOc47DMrqej52Olp02o+YDDSGhE/NsDZ+pLymXBVWPoBjfaiNFfG9rtMdMXCg1SEaNc7pK0fJ+giUTCEHyTSUKiTNi4fIizs35BC5w8yYRfTlw4W1DOaSoaJLLiAfm/olKAVjokN9GkPNmkyLfvPcg0CFWFkKylZA/qemYx5/KFiYkkAeZ+kFkj4tMsJEJaNvLFGcFcrHxIfEm7iDlz4UK0GKIsGC6Y+JQmW6Ykc+i4L1+X+GfxIpuINMUb5VXG1+t9r60Jb1/yMQPQ16771x1+WPchCugC79QHnvfyjIqiR91NcGPC6yvx/QtvHhV+ka3Ep5B1Lf7FnlgYpFk+3Sp6Uhq4+zkqBCNdbQh1tStb/2rrucT9q20cVTukLMLZsMBU/rI/d8Stwjwn5fPTYkhzTlLyu0wKenR0WN0O7MTXpbc6pLc+LL0o1m/WbX8JrV9PhI//AQ== \ No newline at end of file diff --git a/docs/app-ddd.png b/docs/app-ddd.png new file mode 100644 index 0000000000000000000000000000000000000000..8b6390bc605ce673b4a63474c009d54a14fa1f65 GIT binary patch literal 26367 zcmb@tby$>7)HhD2lz=E5(h^H8CABo{F0r(9F0d@U%hHXcpooIBbO|CTQWAnF(jl#q z(j^V=?el%!>-zow{;q5H-gBRsIdkUBoH-MpeQW^JqM~4?z{A6%($Q8o!o$PI0$*7& z5`bgayFP%2M^@yoVeXH@x*$EB@pvU6|53aW;%;a^e_ly-UI_^d1|#a^YmX5{qJcLc z359k-x*(mM{!5k+2g!+mBt#^@2ysbXNmX$v;2{MP1%YHO|I2Uh>g@HuvY==j($mwP zS3*--R2&c`V21Q^LSy^@5{3XCAaQ^#sRmF$f(#((ABmNb5(Iu!y}do1&72+dkpBP5 zOM*ouWdOE-o;Cui&np1|XiubvGw`G3?C631R|Mkbi$(z)O|YD(xTvI@l(eX= zmHaQk8)&58|FZvaBsBnIIw9>{eeF?zY~=qM%hyd`)*Yt-mGv++4MG~r$(n!z{uAJ3 z4=DOS_BH@SiGcnSB5CREiI0mBTW*-1@k=63`whuD#fJke5;t;N29aRl5Le5kcD(#}} z0)wjSs;arGIlHQPsbW-REp)sM?48{F)QzRZ{iW=6Jj~R5p{PK0C{Q~J=INwq2tu0Z zI>I!4f*_tSIMmC*$XgDjCt z2M=<0@�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�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 O6n8ZBG|Fz;g#8y;hlVu( literal 0 HcmV?d00001 diff --git a/docs/aws-cloudformation.drawio b/docs/aws-cloudformation.drawio new file mode 100644 index 00000000..dc6694ac --- /dev/null +++ b/docs/aws-cloudformation.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/aws-cloudformation.png b/docs/aws-cloudformation.png new file mode 100644 index 0000000000000000000000000000000000000000..4a071a33a05eac022aa6993fda828c4b947ab7e4 GIT binary patch literal 246142 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 zⅈ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%0D7F}Ik4su+bQ=r5jsWt8d6!F3_@+ju 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 AWB>pF literal 0 HcmV?d00001 diff --git a/docs/aws-solution.drawio b/docs/aws-solution.drawio new file mode 100644 index 00000000..bb2c729f --- /dev/null +++ b/docs/aws-solution.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/aws-solution.png b/docs/aws-solution.png new file mode 100644 index 0000000000000000000000000000000000000000..e8c86ad9fb3051781bbffb6ff317bb655385e71c GIT binary patch literal 58590 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 \ No newline at end of file diff --git a/docs/ci-cd.png b/docs/ci-cd.png new file mode 100644 index 0000000000000000000000000000000000000000..4a89ca9fb8e6136223660f47ad4c5fbad46f96f3 GIT binary patch literal 48903 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 1.40.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.0.tgz", + "integrity": "sha512-JornYo4RAXl1Mzt0lOSVPmArzAMV3rGY2VuwtaDc732WTWjdwTaeS19nCGWMcSCf305Q396lhhDAJEWWM0SgPQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.23", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.1.1", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.2", + "schema-utils": "^2.6.0" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "postcss-value-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", + "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "dev": true + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-unit-converter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", + "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", + "dev": true + }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", + "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "dev": true + }, + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", + "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.37" + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.0.0.tgz", + "integrity": "sha512-QXSAu2WBsSRXCPjvI43Y40m6fMevvyRm8JVAuF9ksQz5jha4pWP1wpaK7Yu5oLFc6+XAY+hj8YhefyXcBB53gg==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "current-script-polyfill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz", + "integrity": "sha1-8xz35PPiGLBybnOMqSoC00iO9hU=", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true + }, + "default-gateway": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-5.0.5.tgz", + "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==", + "dev": true, + "requires": { + "execa": "^3.3.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "diff": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", + "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-event-types": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.0.0.tgz", + "integrity": "sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==", + "dev": true + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easy-stack": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz", + "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.322", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", + "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.4.tgz", + "integrity": "sha512-fZ0KkoxSjLFmhW5lHbUT3tLwy3nX1qEzMYo8koY1vrsAco53CMT1djnBSeC/wUjTEZRhZl9iRw7PaMaxfJ4wzQ==", + "dev": true, + "requires": { + "stackframe": "^1.1.0" + } + }, + "es-abstract": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", + "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true + }, + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", + "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", + "dev": true, + "requires": { + "reusify": "^1.0.0" + } + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "file-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", + "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + } + }, + "file-saver": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.2.tgz", + "integrity": "sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz", + "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + } + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", + "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.6.0.tgz", + "integrity": "sha512-vqOY5gakcoon2s12V7MMe01OPwfgqulUWFzm+geQaPPOBKjW1I7aqqoBVlU0ECn97liMB0ECs16pRdIGe9qdRw==", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^2.0.4", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.0.0.tgz", + "integrity": "sha512-40Qz+LFXmd9tzYVnnBmZvFfvAADfUA14TXPK1s7IfElJTIZ97rA8w4Kin7Wt5JBrC3ShnnFJO/5vPjPEeJIq9A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "dev": true + }, + "handlebars": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", + "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "highlight.js": { + "version": "9.17.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.17.1.tgz", + "integrity": "sha512-TA2/doAur5Ol8+iM3Ov7qy3jYcr/QiJ2eDTdRF4dfbjG7AaaB99J5G+zSl11ljbl6cIcahgPY6SKb3sC3EJ0fw==", + "dev": true, + "requires": { + "handlebars": "^4.5.3" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + } + } + } + } + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "inversify": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/inversify/-/inversify-5.0.1.tgz", + "integrity": "sha512-Ieh06s48WnEYGcqHepdsJUIJUXpwH5o5vodAX+DK2JA/gjy4EbEcQZxw+uFfzysmKjiLXGYwNG3qDZsKVMcINQ==" + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "javascript-stringify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.0.1.tgz", + "integrity": "sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow==", + "dev": true + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-beautify": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.2.tgz", + "integrity": "sha512-ZtBYyNUYJIsBWERnQP0rPN9KjkrDfJcMjuVGcvXOUJrD1zmOGwhRwQ4msG+HJ+Ni/FA7+sRQEMYVzdTQDvnzvQ==", + "dev": true, + "requires": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "mkdirp": "~0.5.1", + "nopt": "~4.0.1" + } + }, + "js-message": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", + "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", + "dev": true + }, + "js-queue": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz", + "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", + "dev": true, + "requires": { + "easy-stack": "^1.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "js-yaml-loader": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/js-yaml-loader/-/js-yaml-loader-1.2.2.tgz", + "integrity": "sha512-H+NeuNrG6uOs/WMjna2SjkaCw13rMWiT/D7l9+9x5n8aq88BDsh2sRmdfxckWPIHtViYHWRG6XiCKYvS1dfyLg==", + "dev": true, + "requires": { + "js-yaml": "^3.13.1", + "loader-utils": "^1.2.3", + "un-eval": "^1.2.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "dev": true + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "jsdom-global": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz", + "integrity": "sha1-a9KZwTsMRiay2iwDk81DhdYGrLk=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "launch-editor": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz", + "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz", + "integrity": "sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==", + "dev": true, + "requires": { + "launch-editor": "^2.2.1" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "liquor-tree": { + "version": "0.2.70", + "resolved": "https://registry.npmjs.org/liquor-tree/-/liquor-tree-0.2.70.tgz", + "integrity": "sha512-5CiMlDVmuveYwwc27mYe1xZ3J4aHhZBErUhIp9ov4v4wIBso+s5JAByOOit4iOCMCQ5ODd8VggbKymzZREYbBQ==" + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz", + "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==", + "dev": true + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + } + } + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "mime-db": { + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.25", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", + "dev": true, + "requires": { + "mime-db": "1.42.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz", + "integrity": "sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "mocha": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.2.tgz", + "integrity": "sha512-FgDS9Re79yU1xz5d+C4rv1G7QagNGHZ+iXF81hO8zY35YZZcLEsJVfFolfsqKFWunATEvNzMK0r/CwWd/szO9A==", + "dev": true, + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "2.2.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "ms": "2.1.1", + "node-environment-flags": "1.0.5", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.0", + "yargs-parser": "13.1.1", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "mochapack": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/mochapack/-/mochapack-1.1.13.tgz", + "integrity": "sha512-SQQn/0hsX5E3+tFxjmAm9ruEqLRYpnINssmul69PxnRdqxnNjs4UQvOQz1zTsoE7RfJl6FAprVjvMznZFIzytQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "chalk": "^2.4.2", + "chokidar": "^2.0.0", + "glob-parent": "5.1.0", + "globby": "^10.0.1", + "interpret": "^1.2.0", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "memory-fs": "^0.4.1", + "minimatch": "^3.0.4", + "nodent-runtime": "^3.2.1", + "normalize-path": "^3.0.0", + "progress": "^2.0.3", + "source-map-support": "^0.5.13", + "toposort": "^2.0.2", + "yargs": "14.0.0" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "fast-glob": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.1.tgz", + "integrity": "sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "yargs": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.0.0.tgz", + "integrity": "sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-environment-flags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", + "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "dev": true + }, + "node-ipc": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz", + "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.5", + "js-queue": "2.0.0" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.44", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.44.tgz", + "integrity": "sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw==", + "dev": true, + "requires": { + "semver": "^6.3.0" + } + }, + "nodent-runtime": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/nodent-runtime/-/nodent-runtime-3.2.1.tgz", + "integrity": "sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==", + "dev": true + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.1.tgz", + "integrity": "sha512-CF+TKjXqoqyDwHqBhFQ+3l5t83xYi6fVT1tQNg+Ye0JRLnTxWvIroCjEp1A0k4lneHNBGnICUf0cfYVYGEazqw==", + "dev": true, + "requires": { + "parse5": "^5.1.1" + }, + "dependencies": { + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "popper.js": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.0.tgz", + "integrity": "sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw==" + }, + "portfinder": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.25.tgz", + "integrity": "sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", + "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "dev": true, + "requires": { + "css-unit-converter": "^1.1.1", + "postcss": "^7.0.5", + "postcss-selector-parser": "^5.0.0-rc.4", + "postcss-value-parser": "^3.3.1" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-value-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", + "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "dev": true + } + } + }, + "postcss-modules-scope": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz", + "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true + }, + "pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", + "dev": true, + "requires": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", + "integrity": "sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "dev": true, + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.1.tgz", + "integrity": "sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.24.0.tgz", + "integrity": "sha512-1TsPyMhLTx+9DLlmwg02iBW2p4poGA7LlkWJLpUY/XticFKNhPcx+l4FsIJLKl6oSUfXmAKpVljHEez1hwjqiw==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.0.tgz", + "integrity": "sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.1.0", + "semver": "^6.3.0" + }, + "dependencies": { + "schema-utils": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", + "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "schema-utils": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", + "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "spdy": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", + "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stackframe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.0.tgz", + "integrity": "sha512-Vx6W1Yvy+AM1R/ckVwcHQHV147pTPBKWCRLrXMuPrFVfvBUc3os7PR1QLIWCMhPpRg5eX9ojzbQIMLGBwyLjqg==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.padend": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", + "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "string.prototype.padstart": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.0.tgz", + "integrity": "sha512-envqZvUp2JItI+OeQ5UAh1ihbAV5G/2bixTojvlIa090GGqF+NQRxbWb2nv9fTGrZABv6+pE6jXoAZhhS2k4Hw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.3.tgz", + "integrity": "sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", + "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "ts-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.1.tgz", + "integrity": "sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + }, + "tslint": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.4.tgz", + "integrity": "sha512-A25xv5XCtarLwXpcDNZzCGvW2D1S3/bACratYBx2sax8PefsFhlYmkQicKHvpYflFS8if4zne5zT5kpJ7pzuvw==", + "dev": true + }, + "uglify-js": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.3.tgz", + "integrity": "sha512-7tINm46/3puUA4hCkKYo4Xdts+JDaVC9ZPRcG8Xw9R4nhO/gZgUM3TENq8IF4Vatk8qCig4MzP/c8G4u2BkVQg==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "un-eval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/un-eval/-/un-eval-1.2.0.tgz", + "integrity": "sha512-Wlj/pum6dQtGTPD/lclDtoVPkSfpjPfy1dwnnKw/sZP5DpBH9fLhBgQfsqNhe5/gS1D+vkZUuB771NRMUPA5CA==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", + "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "dev": true + }, + "v-tooltip": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/v-tooltip/-/v-tooltip-2.0.2.tgz", + "integrity": "sha512-xQ+qzOFfywkLdjHknRPgMMupQNS8yJtf9Utd5Dxiu/0n4HtrxqsgDtN2MLZ0LKbburtSAQgyypuE/snM8bBZhw==", + "requires": { + "lodash": "^4.17.11", + "popper.js": "^1.15.0", + "vue-resize": "^0.4.5" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", + "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "vue": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz", + "integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==" + }, + "vue-class-component": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-7.1.0.tgz", + "integrity": "sha512-G9152NzUkz0i0xTfhk0Afc8vzdXxDR1pfN4dTwE72cskkgJtdXfrKBkMfGvDuxUh35U500g5Ve4xL8PEGdWeHg==" + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-loader": { + "version": "15.8.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.8.3.tgz", + "integrity": "sha512-yFksTFbhp+lxlm92DrKdpVIWMpranXnTEuGSc0oW+Gk43M9LWaAmBTnfj5+FCdve715mTHvo78IdaXf5TbiTJg==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + } + }, + "vue-property-decorator": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-8.3.0.tgz", + "integrity": "sha512-77YtTbZHd5CNiPzbqv51kEgL48yvD2dUDfF28vEyw3MbQ9bBAb/tDyFzskcqjNRbWyXk1vq4oM2CK/LfhxuIBg==", + "requires": { + "vue-class-component": "^7.1.0" + } + }, + "vue-resize": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-0.4.5.tgz", + "integrity": "sha512-bhP7MlgJQ8TIkZJXAfDf78uJO+mEI3CaLABLjv0WNzr4CcGRGPIAItyWYnP6LsPA4Oq0WE+suidNs6dgpO4RHg==" + }, + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", + "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "vue-template-compiler": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz", + "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "webpack": { + "version": "4.41.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.4.tgz", + "integrity": "sha512-Lc+2uB6NjpCWsHI3trkoISOI64h9QYIXenbEWj3bn3oyjfB1lEBXjWAfAyY2sM0rZn41oD5V91OLwKRwS6Wp8Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz", + "integrity": "sha512-orUfvVYEfBMDXgEKAKVvab5iQ2wXneIEorGNsyuOyVYpjYrI7CUOhhXNDd3huMwQ3vNNWWlGP+hzflMFYNzi2g==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-walk": "^6.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.15", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "webpack-chain": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.3.0.tgz", + "integrity": "sha512-Kri8p/JrfcQtBRghyxKN8r9E1mbxzywQPAnQbyvXN+rtSa8au1Qb7JOoyAGfEBFkOvU3XH4JeGd57CHa0QXfMQ==", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "webpack-dev-server": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz", + "integrity": "sha512-AGG4+XrrXn4rbZUueyNrQgO4KGnol+0wm3MPdqGLmmA+NofZl3blZQKxZ9BND6RDNuvAK9OMYClhjOSnxpWRoA==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.6", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "dev": true, + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.1.tgz", + "integrity": "sha512-sucePNSafamSKoOqoNfBd8V0StlkzJKL2ZAhGQinCfNQ+oacw+Pk7lcdAElecBF2VkLNZRiIb5Oi1Q5lVUVt2A==", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } + }, + "yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "dev": true, + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..4f1bf1dc --- /dev/null +++ b/package.json @@ -0,0 +1,42 @@ +{ + "name": "privacy.sexy", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint", + "test:unit": "vue-cli-service test:unit" + }, + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^1.2.26", + "@fortawesome/free-brands-svg-icons": "^5.12.0", + "@fortawesome/free-regular-svg-icons": "^5.12.0", + "@fortawesome/free-solid-svg-icons": "^5.12.0", + "@fortawesome/vue-fontawesome": "^0.1.9", + "ace-builds": "^1.4.7", + "file-saver": "^2.0.2", + "inversify": "^5.0.1", + "liquor-tree": "^0.2.70", + "v-tooltip": "^2.0.2", + "vue": "^2.6.11", + "vue-class-component": "^7.1.0", + "vue-property-decorator": "^8.3.0" + }, + "devDependencies": { + "@types/chai": "^4.2.7", + "@types/mocha": "^5.2.7", + "@types/ace": "0.0.42", + "@types/file-saver": "^2.0.1", + "@vue/cli-plugin-typescript": "^4.1.1", + "@vue/cli-plugin-unit-mocha": "^4.1.1", + "@vue/cli-service": "^4.1.1", + "@vue/test-utils": "1.0.0-beta.30", + "chai": "^4.2.0", + "sass": "^1.24.0", + "sass-loader": "^8.0.0", + "js-yaml-loader": "^1.2.2", + "typescript": "^3.7.4", + "vue-template-compiler": "^2.6.11" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 00000000..961986e2 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {} + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8b4db7539550e9a8aa833782d2e97b139c4b2c59 GIT binary patch literal 108332 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 literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 00000000..a2a7b830 --- /dev/null +++ b/public/index.html @@ -0,0 +1,21 @@ + + + + + + + + Privacy is sexy 🍑🍆 + + + +

+ + + diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 00000000..7562abeb --- /dev/null +++ b/src/App.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/src/application/ApplicationParser.ts b/src/application/ApplicationParser.ts new file mode 100644 index 00000000..028b35b3 --- /dev/null +++ b/src/application/ApplicationParser.ts @@ -0,0 +1,103 @@ +import { Category } from '../domain/Category'; +import { Application } from '../domain/Application'; +import { Script } from '@/domain/Script'; +// import applicationFile from 'js-yaml-loader!@/application/application.yaml'; +// import applicationFile from 'json-loader!yaml-loader!@/application/application.yaml'; +import applicationFile, { YamlCategory, YamlScript, YamlDocumentable } from 'js-yaml-loader!./application.yaml'; +// import test from './test-loader!./test.txt'; + +interface ApplicationResult { + readonly application: Application; + readonly selectedScripts: Script[]; +} + +export class ApplicationParser { + + public static buildApplication(): ApplicationResult { + const name = applicationFile.name as string; + const version = applicationFile.version as number; + const categories = new Array(); + const selectedScripts = new Array + + diff --git a/src/presentation/Scripts/Cards/CardList.vue b/src/presentation/Scripts/Cards/CardList.vue new file mode 100644 index 00000000..d49bbf19 --- /dev/null +++ b/src/presentation/Scripts/Cards/CardList.vue @@ -0,0 +1,62 @@ + + + + + \ No newline at end of file diff --git a/src/presentation/Scripts/Cards/CardListItem.vue b/src/presentation/Scripts/Cards/CardListItem.vue new file mode 100644 index 00000000..47f55b29 --- /dev/null +++ b/src/presentation/Scripts/Cards/CardListItem.vue @@ -0,0 +1,248 @@ + + + + + \ No newline at end of file diff --git a/src/presentation/Scripts/Cards/CardListItemScripts.vue b/src/presentation/Scripts/Cards/CardListItemScripts.vue new file mode 100644 index 00000000..f1f3fb05 --- /dev/null +++ b/src/presentation/Scripts/Cards/CardListItemScripts.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/src/presentation/Scripts/Cards/ScriptNodeParser.ts b/src/presentation/Scripts/Cards/ScriptNodeParser.ts new file mode 100644 index 00000000..058bdf3c --- /dev/null +++ b/src/presentation/Scripts/Cards/ScriptNodeParser.ts @@ -0,0 +1,43 @@ +import { ICategory } from './../../../domain/ICategory'; +import { IApplicationState, IUserSelection } from '@/application/State/IApplicationState'; +import { INode } from './../SelectableTree/INode'; + +export class ScriptNodeParser { + public static parseNodes(categoryId: number, state: IApplicationState): INode[] | undefined { + const category = state.getCategory(categoryId); + if (!category) { + throw new Error(`Category with id ${categoryId} does not exist`); + } + const tree = this.parseNodesRecursively(category, state.selection); + return tree; + } + + private static parseNodesRecursively(parentCategory: ICategory, selection: IUserSelection): INode[] { + const nodes = new Array(); + if (parentCategory.subCategories && parentCategory.subCategories.length > 0) { + for (const subCategory of parentCategory.subCategories) { + const subCategoryNodes = this.parseNodesRecursively(subCategory, selection); + nodes.push( + { + id: `cat${subCategory.id}`, + text: subCategory.name, + selected: false, + children: subCategoryNodes, + documentationUrls: subCategory.documentationUrls, + }); + } + } + if (parentCategory.scripts && parentCategory.scripts.length > 0) { + for (const script of parentCategory.scripts) { + nodes.push( { + id: script.id, + text: script.name, + selected: selection.isSelected(script), + children: undefined, + documentationUrls: script.documentationUrls, + }); + } + } + return nodes; + } +} diff --git a/src/presentation/Scripts/CategoryTree.vue b/src/presentation/Scripts/CategoryTree.vue new file mode 100644 index 00000000..91dba0a5 --- /dev/null +++ b/src/presentation/Scripts/CategoryTree.vue @@ -0,0 +1,19 @@ + + + \ No newline at end of file diff --git a/src/presentation/Scripts/SelectableTree/INode.ts b/src/presentation/Scripts/SelectableTree/INode.ts new file mode 100644 index 00000000..4781c8a8 --- /dev/null +++ b/src/presentation/Scripts/SelectableTree/INode.ts @@ -0,0 +1,7 @@ +export interface INode { + readonly id: string; + readonly text: string; + readonly documentationUrls: ReadonlyArray; + readonly children?: ReadonlyArray; + readonly selected: boolean; +} diff --git a/src/presentation/Scripts/SelectableTree/Node.vue b/src/presentation/Scripts/SelectableTree/Node.vue new file mode 100644 index 00000000..dc784e32 --- /dev/null +++ b/src/presentation/Scripts/SelectableTree/Node.vue @@ -0,0 +1,46 @@ + + + + + + + \ No newline at end of file diff --git a/src/presentation/Scripts/SelectableTree/SelectableTree.vue b/src/presentation/Scripts/SelectableTree/SelectableTree.vue new file mode 100644 index 00000000..c41a3b91 --- /dev/null +++ b/src/presentation/Scripts/SelectableTree/SelectableTree.vue @@ -0,0 +1,181 @@ + + + + + + \ No newline at end of file diff --git a/src/presentation/Scripts/Selector/SelectableOption.vue b/src/presentation/Scripts/Selector/SelectableOption.vue new file mode 100644 index 00000000..327b7b5a --- /dev/null +++ b/src/presentation/Scripts/Selector/SelectableOption.vue @@ -0,0 +1,32 @@ + + + + + \ No newline at end of file diff --git a/src/presentation/Scripts/Selector/TheSelector.vue b/src/presentation/Scripts/Selector/TheSelector.vue new file mode 100644 index 00000000..19615f03 --- /dev/null +++ b/src/presentation/Scripts/Selector/TheSelector.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/src/presentation/Scripts/TheGrouper.vue b/src/presentation/Scripts/TheGrouper.vue new file mode 100644 index 00000000..0f0fb9b5 --- /dev/null +++ b/src/presentation/Scripts/TheGrouper.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/src/presentation/StatefulVue.ts b/src/presentation/StatefulVue.ts new file mode 100644 index 00000000..bdc7f665 --- /dev/null +++ b/src/presentation/StatefulVue.ts @@ -0,0 +1,11 @@ +import { ApplicationState, IApplicationState } from '../application/State/ApplicationState'; +import { Vue } from 'vue-property-decorator'; +export { IApplicationState }; + +export abstract class StatefulVue extends Vue { + public isLoading = true; + + protected getCurrentStateAsync(): Promise { + return ApplicationState.GetAsync(); + } +} diff --git a/src/presentation/TheCodeArea.vue b/src/presentation/TheCodeArea.vue new file mode 100644 index 00000000..1694f714 --- /dev/null +++ b/src/presentation/TheCodeArea.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/presentation/TheCodeButtons.vue b/src/presentation/TheCodeButtons.vue new file mode 100644 index 00000000..1ca4bc90 --- /dev/null +++ b/src/presentation/TheCodeButtons.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/src/presentation/TheHeader.vue b/src/presentation/TheHeader.vue new file mode 100644 index 00000000..1899c56d --- /dev/null +++ b/src/presentation/TheHeader.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/src/presentation/TheSearchBar.vue b/src/presentation/TheSearchBar.vue new file mode 100644 index 00000000..5d1e4d7d --- /dev/null +++ b/src/presentation/TheSearchBar.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/src/presentation/styles/colors.scss b/src/presentation/styles/colors.scss new file mode 100644 index 00000000..2b084dae --- /dev/null +++ b/src/presentation/styles/colors.scss @@ -0,0 +1,8 @@ +$white: #fff; +$light-gray: #eceef1; +$gray: darken(#eceef1, 30%); +$dark-gray: #616f86; +$slate: darken(#eceef1, 70%); +$dark-slate: #2f3133; +$accent: #1abc9c; +$black: #000 \ No newline at end of file diff --git a/src/presentation/styles/fonts.scss b/src/presentation/styles/fonts.scss new file mode 100644 index 00000000..b46c0ed3 --- /dev/null +++ b/src/presentation/styles/fonts.scss @@ -0,0 +1,26 @@ +/* latin-ext */ +@font-face { + font-family: 'Slabo 27px'; + font-style: normal; + font-weight: 400; + src: local('Slabo 27px'), local('Slabo27px-Regular'), url('~@/presentation/styles/fonts/Slabo27px-v6.woff2') format('woff2'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; + } + /* latin */ + @font-face { + font-family: 'Slabo 27px'; + font-style: normal; + font-weight: 400; + src: local('Slabo 27px'), local('Slabo27px-Regular'), url('~@/presentation/styles/fonts/Slabo27px-v6.woff2') format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; + } + /* latin */ + @font-face { + font-family: 'Yesteryear'; + font-style: normal; + font-weight: 400; + src: local('Yesteryear'), local('Yesteryear-Regular'), url('~@/presentation/styles/fonts/yesteryear-v8.woff2') format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; + } + + $default-font: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace; \ No newline at end of file diff --git a/src/presentation/styles/fonts/Slabo27px-v6.woff2 b/src/presentation/styles/fonts/Slabo27px-v6.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ca619e74845337dbc7f51ca85ff435c71b3d8a74 GIT binary patch literal 8780 zcmV-SBD39hPew8T0RR9103u8P5dZ)H09V`q03q!F0RR9100000000000000000000 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 Ct^f!C literal 0 HcmV?d00001 diff --git a/src/presentation/styles/fonts/yesteryear-v8.woff2 b/src/presentation/styles/fonts/yesteryear-v8.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ddaa61ed5d3c33f148a36e7f043d1e128244b4ea GIT binary patch literal 23060 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 literal 0 HcmV?d00001 diff --git a/src/presentation/styles/tooltip.scss b/src/presentation/styles/tooltip.scss new file mode 100644 index 00000000..9a5ef146 --- /dev/null +++ b/src/presentation/styles/tooltip.scss @@ -0,0 +1,43 @@ +// based on https://github.com/Akryum/v-tooltip/blob/83615e394c96ca491a4df04b892ae87e833beb97/demo-src/src/App.vue#L179-L303 +.tooltip { + display: block !important; + z-index: 10000; + .tooltip-inner { + background: $black; + color: $white; + border-radius: 16px; + padding: 5px 10px 4px; + } + .tooltip-arrow { + width: 0; + height: 0; + border-style: solid; + position: absolute; + margin: 5px; + border-color: $black; + z-index: 1; + } + &[x-placement^="top"] { + margin-bottom: 5px; + .tooltip-arrow { + border-width: 5px 5px 0 5px; + border-left-color: transparent !important; + border-right-color: transparent !important; + border-bottom-color: transparent !important; + bottom: -5px; + left: calc(50% - 5px); + margin-top: 0; + margin-bottom: 0; + } + } + &[aria-hidden='true'] { + visibility: hidden; + opacity: 0; + transition: opacity .15s, visibility .15s; + } + &[aria-hidden='false'] { + visibility: visible; + opacity: 1; + transition: opacity .15s; + } + } \ No newline at end of file diff --git a/src/presentation/styles/tree.scss b/src/presentation/styles/tree.scss new file mode 100644 index 00000000..2b2852da --- /dev/null +++ b/src/presentation/styles/tree.scss @@ -0,0 +1,35 @@ +// Overrides base styling for LiquorTree + +.tree-node > .tree-content > .tree-anchor > span { + color: $white !important; +} + +.tree-node { + white-space: normal !important; +} + +.tree-arrow.has-child { + &.rtl:after, &:after { + border-color: $white !important; + } +} + +.tree-node.selected > .tree-content { + > .tree-anchor > span { + font-weight: bolder; + } +} + +.tree-content:hover { + background: $dark-gray !important; +} + +.tree-checkbox { + &.checked { + background: $accent !important; + } + &.indeterminate { + border-color: $gray !important; + } + background: $dark-slate !important; +} \ No newline at end of file diff --git a/src/shims-tsx.d.ts b/src/shims-tsx.d.ts new file mode 100644 index 00000000..3b88b582 --- /dev/null +++ b/src/shims-tsx.d.ts @@ -0,0 +1,13 @@ +import Vue, { VNode } from 'vue'; + +declare global { + namespace JSX { + // tslint:disable no-empty-interface + interface Element extends VNode {} + // tslint:disable no-empty-interface + interface ElementClass extends Vue {} + interface IntrinsicElements { + [elem: string]: any; + } + } +} diff --git a/src/shims-vue.d.ts b/src/shims-vue.d.ts new file mode 100644 index 00000000..8f6f4102 --- /dev/null +++ b/src/shims-vue.d.ts @@ -0,0 +1,4 @@ +declare module '*.vue' { + import Vue from 'vue'; + export default Vue; +} diff --git a/tests/unit/application/UserSelection.spec.ts b/tests/unit/application/UserSelection.spec.ts new file mode 100644 index 00000000..aae97c99 --- /dev/null +++ b/tests/unit/application/UserSelection.spec.ts @@ -0,0 +1,41 @@ +import { CategoryStub } from './../stubs/CategoryStub'; +import { ApplicationStub } from './../stubs/ApplicationStub'; +import { ScriptStub } from './../stubs/ScriptStub'; +import { UserSelection } from '@/application/State/Selection/UserSelection'; +import 'mocha'; +import { expect } from 'chai'; + + +describe('UserSelection', () => { + it('deselectAll removes all items', async () => { + // arrange + const app = new ApplicationStub() + .withCategory(new CategoryStub(1) + .withScripts('s1', 's2', 's3', 's4')); + const selectedScripts = [new ScriptStub('s1'), new ScriptStub('s2'), new ScriptStub('s3')]; + const sut = new UserSelection(app, selectedScripts); + + // act + sut.deselectAll(); + const actual = sut.selectedScripts; + + // assert + expect(actual, JSON.stringify(sut.selectedScripts)).to.have.length(0); + }); + it('selectOnly selects expected', async () => { + // arrange + const app = new ApplicationStub() + .withCategory(new CategoryStub(1) + .withScripts('s1', 's2', 's3', 's4')); + const selectedScripts = [new ScriptStub('s1'), new ScriptStub('s2'), new ScriptStub('s3')]; + const sut = new UserSelection(app, selectedScripts); + const expected = [new ScriptStub('s2'), new ScriptStub('s3'), new ScriptStub('s4')]; + + // act + sut.selectOnly(expected); + const actual = sut.selectedScripts; + + // assert + expect(actual).to.deep.equal(expected); + }); +}); diff --git a/tests/unit/infrastructure/AsyncLazy.spec.ts b/tests/unit/infrastructure/AsyncLazy.spec.ts new file mode 100644 index 00000000..c7c4aa16 --- /dev/null +++ b/tests/unit/infrastructure/AsyncLazy.spec.ts @@ -0,0 +1,55 @@ +import { AsyncLazy } from '@/infrastructure/Threading/AsyncLazy'; +import 'mocha'; +import { expect } from 'chai'; + +describe('AsyncLazy', () => { + + it('returns value from lambda', async () => { + // arrange + const expected = 'test'; + const lambda = () => Promise.resolve(expected); + const sut = new AsyncLazy(lambda); + + // act + const actual = await sut.getValueAsync(); + + // assert + expect(actual).to.equal(expected); + }); + + describe('when running multiple times', () => { + let totalExecuted: number = 0; + + beforeEach(() => totalExecuted = 0); + + it('when running sync', async () => { + const sut = new AsyncLazy(() => { + totalExecuted++; + return Promise.resolve(totalExecuted); + }); + const results = new Array(); + for (let i = 0; i < 5; i++) { + results.push(await sut.getValueAsync()); + } + expect(totalExecuted).to.equal(1); + expect(results).to.deep.equal([1, 1, 1, 1, 1]); + }); + + it('when running long-running task paralelly', async () => { + const sleep = (time: number) => new Promise(((resolve) => setTimeout(resolve, time))); + const sut = new AsyncLazy(async () => { + await sleep(100); + totalExecuted++; + return Promise.resolve(totalExecuted); + }); + const results = await Promise.all([ + sut.getValueAsync(), + sut.getValueAsync(), + sut.getValueAsync(), + sut.getValueAsync(), + sut.getValueAsync()]); + expect(totalExecuted).to.equal(1); + expect(results).to.deep.equal([1, 1, 1, 1, 1]); + }); + }); +}); diff --git a/tests/unit/infrastructure/InMemoryRepository.spec.ts b/tests/unit/infrastructure/InMemoryRepository.spec.ts new file mode 100644 index 00000000..465edd0a --- /dev/null +++ b/tests/unit/infrastructure/InMemoryRepository.spec.ts @@ -0,0 +1,72 @@ +import { NumericEntityStub } from './../stubs/NumericEntityStub'; +import { InMemoryRepository } from '@/infrastructure/Repository/InMemoryRepository'; +import { expect } from 'chai'; + +describe('InMemoryRepository', () => { + describe('exists', () => { + const sut = new InMemoryRepository( + [new NumericEntityStub(1), new NumericEntityStub(2), new NumericEntityStub(3)]); + + describe('item exists', () => { + const actual = sut.exists(new NumericEntityStub(1)); + it('returns true', () => expect(actual).to.be.true); + }); + describe('item does not exist', () => { + const actual = sut.exists(new NumericEntityStub(99)); + it('returns false', () => expect(actual).to.be.false); + }); + }); + it('can get', () => { + // arrange + const expected = [ + new NumericEntityStub(1), new NumericEntityStub(2), new NumericEntityStub(3), new NumericEntityStub(4)]; + + // act + const sut = new InMemoryRepository(expected); + const actual = sut.getItems(); + + // assert + expect(actual).to.deep.equal(expected); + }); + it('can add', () => { + // arrange + const sut = new InMemoryRepository(); + const expected = { + length: 1, + item: new NumericEntityStub(1), + }; + + // act + sut.addItem(expected.item); + const actual = { + length: sut.length, + item: sut.getItems()[0], + }; + + // assert + expect(actual.length).to.equal(expected.length); + expect(actual.item).to.deep.equal(expected.item); + }); + it('can remove', () => { + // arrange + const initialItems = [ + new NumericEntityStub(1), new NumericEntityStub(2), new NumericEntityStub(3), new NumericEntityStub(4)]; + const idToDelete = 3; + const expected = { + length: 3, + items: [new NumericEntityStub(1), new NumericEntityStub(2), new NumericEntityStub(4)], + }; + const sut = new InMemoryRepository(initialItems); + + // act + sut.removeItem(idToDelete); + const actual = { + length: sut.length, + items: sut.getItems(), + }; + + // assert + expect(actual.length).to.equal(expected.length); + expect(actual.items).to.deep.equal(expected.items); + }); +}); diff --git a/tests/unit/infrastructure/Signal.spec.ts b/tests/unit/infrastructure/Signal.spec.ts new file mode 100644 index 00000000..2ea1fe67 --- /dev/null +++ b/tests/unit/infrastructure/Signal.spec.ts @@ -0,0 +1,77 @@ +import { Signal } from '@/infrastructure/Events/Signal'; +import { expect } from 'chai'; + +describe('Signal Tests', () => { + class ReceiverMock { + public onRecieveCalls = new Array(); + public onReceive(arg: number): void { this.onRecieveCalls.push(arg); } + } + + let signal: Signal; + beforeEach(() => signal = new Signal()); + + describe('single reciever', () => { + let receiver: ReceiverMock; + + beforeEach(() => { + receiver = new ReceiverMock(); + signal.on((arg) => receiver.onReceive(arg)); + }); + + it('notify() executes the callback', () => { + signal.notify(5); + expect(receiver.onRecieveCalls).to.have.length(1); + }); + + it('notify() executes the callback with the payload', () => { + const expected = 5; + signal.notify(expected); + expect(receiver.onRecieveCalls).to.deep.equal([expected]); + }); + }); + + describe('multiple recievers', () => { + let receivers: ReceiverMock[]; + + beforeEach(() => { + receivers = [ + new ReceiverMock(), new ReceiverMock(), + new ReceiverMock(), new ReceiverMock()]; + for (const receiver of receivers) { + signal.on((arg) => receiver.onReceive(arg)); + }}); + + + it('notify() should execute all callbacks', () => { + signal.notify(5); + receivers.every((receiver) => { + expect(receiver.onRecieveCalls).to.have.length(1); + }); + }); + + it('notify() should execute all callbacks with payload', () => { + const expected = 5; + signal.notify(expected); + receivers.every((receiver) => { + expect(receiver.onRecieveCalls).to.deep.equal([expected]); + }); + }); + + it('notify() executes in FIFO order', () => { + // arrange + const expectedSequence = [0, 1, 2, 3]; + const actualSequence = new Array(); + for (let i = 0; i < receivers.length; i++) { + receivers[i].onReceive = ((arg) => { + actualSequence.push(i); + }); + } + // act + signal.notify(5); + // assert + expect(actualSequence).to.deep.equal(expectedSequence); + }); + + }); + +}); diff --git a/tests/unit/stubs/ApplicationStub.ts b/tests/unit/stubs/ApplicationStub.ts new file mode 100644 index 00000000..85d91392 --- /dev/null +++ b/tests/unit/stubs/ApplicationStub.ts @@ -0,0 +1,21 @@ +import { IApplication, ICategory, IScript } from '@/domain/IApplication'; + +export class ApplicationStub implements IApplication { + public readonly categories = new Array(); + + public withCategory(category: ICategory): IApplication { + this.categories.push(category); + return this; + } + public findCategory(categoryId: number): ICategory { + throw new Error('Method not implemented.'); + } + + public findScript(scriptId: string): IScript { + throw new Error('Method not implemented.'); + } + + public getAllScripts(): ReadonlyArray { + throw new Error('Method not implemented.'); + } +} diff --git a/tests/unit/stubs/CategoryStub.ts b/tests/unit/stubs/CategoryStub.ts new file mode 100644 index 00000000..39534583 --- /dev/null +++ b/tests/unit/stubs/CategoryStub.ts @@ -0,0 +1,20 @@ +import { ScriptStub } from './ScriptStub'; +import { BaseEntity } from '@/infrastructure/Entity/BaseEntity'; +import { ICategory, IScript } from '@/domain/ICategory'; + +export class CategoryStub extends BaseEntity implements ICategory { + public readonly name = `category-with-id-${this.id}`; + public readonly subCategories = new Array(); + public readonly scripts = new Array(); + public readonly documentationUrls = new Array(); + + constructor(id: number) { + super(id); + } + public withScripts(...scriptIds: string[]): CategoryStub { + for (const scriptId of scriptIds) { + this.scripts.push(new ScriptStub(scriptId)); + } + return this; + } +} diff --git a/tests/unit/stubs/NumericEntityStub.ts b/tests/unit/stubs/NumericEntityStub.ts new file mode 100644 index 00000000..24e2fd79 --- /dev/null +++ b/tests/unit/stubs/NumericEntityStub.ts @@ -0,0 +1,7 @@ +import { BaseEntity } from '@/infrastructure/Entity/BaseEntity'; + +export class NumericEntityStub extends BaseEntity { + constructor(id: number) { + super(id); + } +} diff --git a/tests/unit/stubs/ScriptStub.ts b/tests/unit/stubs/ScriptStub.ts new file mode 100644 index 00000000..52666224 --- /dev/null +++ b/tests/unit/stubs/ScriptStub.ts @@ -0,0 +1,12 @@ +import { BaseEntity } from '@/infrastructure/Entity/BaseEntity'; +import { IScript } from './../../../src/domain/IScript'; + +export class ScriptStub extends BaseEntity implements IScript { + public readonly name = `name${this.id}`; + public readonly code = `name${this.id}`; + public readonly documentationUrls = new Array(); + + constructor(public readonly id: string) { + super(id); + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..98987b46 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,40 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ], + "module": "esnext", + "jsx": "preserve", + "importHelpers": true, + "moduleResolution": "node", + "experimentalDecorators": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "sourceMap": true, + "baseUrl": ".", + "types": [ + "webpack-env", + "mocha", + "chai" + ], + "paths": { + "@/*": [ + "src/*" + ] + }, + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.vue", + "tests/**/*.ts", + "tests/**/*.tsx" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/tslint.json b/tslint.json new file mode 100644 index 00000000..712fb181 --- /dev/null +++ b/tslint.json @@ -0,0 +1,19 @@ +{ + "defaultSeverity": "warning", + "extends": [ + "tslint:recommended" + ], + "linterOptions": { + "exclude": [ + "node_modules/**" + ] + }, + "rules": { + "indent": [true, "spaces", 2], + "interface-name": false, + "no-consecutive-blank-lines": false, + "object-literal-sort-keys": false, + "ordered-imports": false, + "quotemark": [true, "single"] + } +}