diff --git a/tailwind.config.js b/tailwind.config.js
deleted file mode 100644
index b67f97c..0000000
--- a/tailwind.config.js
+++ /dev/null
@@ -1,63 +0,0 @@
-module.exports = {
- theme: {
- extend: {},
- colors: {
- transparent: 'transparent',
- black: '#000',
- 'grey-darkest': '#3d4852',
- 'grey-darker': '#606f7b',
- 'grey-dark': '#8795a1',
- grey: '#b8c2cc',
- 'grey-light': '#dae1e7',
- 'grey-lighter': '#f1f5f8',
- 'grey-lightest': '#f8fafc',
- white: '#fff',
- 'snipline-green-darker': '#333510',
- 'snipline-green-dark': '#94AB0D',
- 'snipline-lime-light': '#e1f471',
- 'snipline-lime': '#CDED15',
- 'snipline-lime-dark': '#94AB0D',
- 'snipline-green': '#15ED78',
- 'snipline-yellow': '#EDE415',
- 'snipline-grey-dark': 'rgba(51, 53, 16, 0.8)',
- 'snipline-grey': '#EBF1EF',
- 'snipline-grey-light': '#DAE1E7',
- 'snipline-grey-lighter': '#E0E8EE',
- success: {
- 100: '#ECFBD7',
- 200: '#D5F8B0',
- 300: '#B3EC84',
- 400: '#90D962',
- 500: '#61C134',
- 600: '#46A526',
- 700: '#2F8A1A',
- 800: '#1C6F10',
- 900: '#0E5C09',
- },
- info: {
- 100: '#DFF6FE',
- 200: '#BFE9FE',
- 300: '#9FD9FE',
- 400: '#86CAFD',
- 500: '#5FB0FC',
- 600: '#4589D8',
- 700: '#2F67B5',
- 800: '#1E4892',
- 900: '#123278',
- },
- danger: {
- 100: '#FFEAD7',
- 200: '#FFD0B0',
- 300: '#FFB088',
- 400: '#FF916B',
- 500: '#FF5E3A',
- 600: '#DB3D2A',
- 700: '#B7221D',
- 800: '#931218',
- 900: '#7A0B18',
- }
- }
- },
- variants: {},
- plugins: []
-}
diff --git a/webpack.mix.js b/webpack.mix.js
deleted file mode 100644
index 29c90b5..0000000
--- a/webpack.mix.js
+++ /dev/null
@@ -1,53 +0,0 @@
-let mix = require('laravel-mix');
-
-/*
- |--------------------------------------------------------------------------
- | Mix Asset Management
- |--------------------------------------------------------------------------
- |
- | Mix provides a clean, fluent API for defining some Webpack build steps
- | for your Laravel application. By default, we are compiling the Sass
- | file for your application, as well as bundling up your JS files.
- |
- */
-
-mix.js('assets/js/app.js', 'public/js/').postCss('assets/css/app.css', 'public/css/', [
- require('tailwindcss'),
-]);
-
-// Full API
-// mix.js(src, output);
-// mix.react(src, output); <-- Identical to mix.js(), but registers React Babel compilation.
-// mix.preact(src, output); <-- Identical to mix.js(), but registers Preact compilation.
-// mix.coffee(src, output); <-- Identical to mix.js(), but registers CoffeeScript compilation.
-// mix.ts(src, output); <-- TypeScript support. Requires tsconfig.json to exist in the same folder as webpack.mix.js
-// mix.extract(vendorLibs);
-// mix.sass(src, output);
-// mix.less(src, output);
-// mix.stylus(src, output);
-// mix.postCss(src, output, [require('postcss-some-plugin')()]);
-// mix.browserSync('my-site.test');
-// mix.combine(files, destination);
-// mix.babel(files, destination); <-- Identical to mix.combine(), but also includes Babel compilation.
-// mix.copy(from, to);
-// mix.copyDirectory(fromDir, toDir);
-// mix.minify(file);
-// mix.sourceMaps(); // Enable sourcemaps
-// mix.version(); // Enable versioning.
-// mix.disableNotifications();
-// mix.setPublicPath('path/to/public');
-// mix.setResourceRoot('prefix/for/resource/locators');
-// mix.autoload({}); <-- Will be passed to Webpack's ProvidePlugin.
-// mix.webpackConfig({}); <-- Override webpack.config.js, without editing the file directly.
-// mix.babelConfig({}); <-- Merge extra Babel configuration (plugins, etc.) with Mix's default.
-// mix.then(function () {}) <-- Will be triggered each time Webpack finishes building.
-// mix.dump(); <-- Dump the generated webpack config object t the console.
-// mix.extend(name, handler) <-- Extend Mix's API with your own components.
-// mix.options({
-// extractVueStyles: false, // Extract .vue component styling to file, rather than inline.
-// globalVueStyles: file, // Variables file to be imported in every component.
-// processCssUrls: true, // Process/optimize relative stylesheet url()'s. Set to false, if you don't want them touched.
-// purifyCss: false, // Remove unused CSS selectors.
-// terser: {}, // Terser-specific options. https://github.com/webpack-contrib/terser-webpack-plugin#options
-// postCss: [] // Post-CSS options: https://github.com/postcss/postcss/blob/master/docs/plugins.md
-// });
diff --git a/yarn-error.log b/yarn-error.log
deleted file mode 100644
index 98a2029..0000000
--- a/yarn-error.log
+++ /dev/null
@@ -1,6456 +0,0 @@
-Arguments:
- /Users/mitchellstanley/.nvm/versions/node/v10.15.2/bin/node /usr/local/Cellar/yarn/1.16.0/libexec/bin/yarn.js
-
-PATH:
- /usr/local/opt/valet-php@7.1/sbin:/usr/local/opt/valet-php@7.1/bin:/usr/local/opt/valet-php@7.2/sbin:/usr/local/opt/valet-php@7.2/bin:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/mitchellstanley/spark-installer:/Users/mitchellstanley/Downloads/exercism-mac-64bit:/Users/mitchellstanley/.composer/vendor/bin:/Users/mitchellstanley/.rbenv/shims:/Users/mitchellstanley/.kiex/bin:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/mitchellstanley/spark-installer:/Users/mitchellstanley/Downloads/exercism-mac-64bit:/Users/mitchellstanley/.composer/vendor/bin:/Users/mitchellstanley/.rbenv/shims:/Users/mitchellstanley/.kiex/bin:/Users/mitchellstanley/.asdf/shims:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/mitchellstanley/spark-installer:/Users/mitchellstanley/Downloads/exercism-mac-64bit:/Users/mitchellstanley/.composer/vendor/bin:/Users/mitchellstanley/.rbenv/shims:/Users/mitchellstanley/.nvm/versions/node/v10.15.2/bin:/Users/mitchellstanley/.kiex/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands
-
-Yarn version:
- 1.16.0
-
-Node version:
- 10.15.2
-
-Platform:
- darwin x64
-
-Trace:
- SyntaxError: /Users/mitchellstanley/Code/projects/snipline/cli/package.json: Unexpected token } in JSON at position 283
- at JSON.parse ()
- at /usr/local/Cellar/yarn/1.16.0/libexec/lib/cli.js:1625:59
- at Generator.next ()
- at step (/usr/local/Cellar/yarn/1.16.0/libexec/lib/cli.js:304:30)
- at /usr/local/Cellar/yarn/1.16.0/libexec/lib/cli.js:315:13
-
-npm manifest:
- {
- "name": "snipcli",
- "version": "0.1.5",
- "main": "index.js",
- "author": "Mitchell Stanley ",
- "license": "MIT",
- "dependencies": {
- "cross-env": "^5.2.0",
- "laravel-mix": "^4.0.15",
- "tailwindcss": "^1.0.1",
- "lodash": "^4.17.13",
- },
- "scripts": {
- "dev": "yarn run development",
- "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
- "watch": "yarn run development -- --watch",
- "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
- "prod": "yarn run production",
- "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
- },
- "devDependencies": {
- "vue-template-compiler": "^2.6.10"
- }
- }
-
-yarn manifest:
- No manifest
-
-Lockfile:
- # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
- # yarn lockfile v1
-
-
- "@babel/code-frame@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
- integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==
- dependencies:
- "@babel/highlight" "^7.0.0"
-
- "@babel/core@^7.0.0-beta.49", "@babel/core@^7.2.0":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.4.tgz#84055750b05fcd50f9915a826b44fa347a825250"
- integrity sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- "@babel/generator" "^7.4.4"
- "@babel/helpers" "^7.4.4"
- "@babel/parser" "^7.4.4"
- "@babel/template" "^7.4.4"
- "@babel/traverse" "^7.4.4"
- "@babel/types" "^7.4.4"
- convert-source-map "^1.1.0"
- debug "^4.1.0"
- json5 "^2.1.0"
- lodash "^4.17.11"
- resolve "^1.3.2"
- semver "^5.4.1"
- source-map "^0.5.0"
-
- "@babel/generator@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041"
- integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==
- dependencies:
- "@babel/types" "^7.4.4"
- jsesc "^2.5.1"
- lodash "^4.17.11"
- source-map "^0.5.0"
- trim-right "^1.0.1"
-
- "@babel/helper-annotate-as-pure@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
- integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==
- dependencies:
- "@babel/types" "^7.0.0"
-
- "@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f"
- integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==
- dependencies:
- "@babel/helper-explode-assignable-expression" "^7.1.0"
- "@babel/types" "^7.0.0"
-
- "@babel/helper-call-delegate@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43"
- integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==
- dependencies:
- "@babel/helper-hoist-variables" "^7.4.4"
- "@babel/traverse" "^7.4.4"
- "@babel/types" "^7.4.4"
-
- "@babel/helper-define-map@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a"
- integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==
- dependencies:
- "@babel/helper-function-name" "^7.1.0"
- "@babel/types" "^7.4.4"
- lodash "^4.17.11"
-
- "@babel/helper-explode-assignable-expression@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6"
- integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==
- dependencies:
- "@babel/traverse" "^7.1.0"
- "@babel/types" "^7.0.0"
-
- "@babel/helper-function-name@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53"
- integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==
- dependencies:
- "@babel/helper-get-function-arity" "^7.0.0"
- "@babel/template" "^7.1.0"
- "@babel/types" "^7.0.0"
-
- "@babel/helper-get-function-arity@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3"
- integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==
- dependencies:
- "@babel/types" "^7.0.0"
-
- "@babel/helper-hoist-variables@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a"
- integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==
- dependencies:
- "@babel/types" "^7.4.4"
-
- "@babel/helper-member-expression-to-functions@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f"
- integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==
- dependencies:
- "@babel/types" "^7.0.0"
-
- "@babel/helper-module-imports@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d"
- integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==
- dependencies:
- "@babel/types" "^7.0.0"
-
- "@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8"
- integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==
- dependencies:
- "@babel/helper-module-imports" "^7.0.0"
- "@babel/helper-simple-access" "^7.1.0"
- "@babel/helper-split-export-declaration" "^7.4.4"
- "@babel/template" "^7.4.4"
- "@babel/types" "^7.4.4"
- lodash "^4.17.11"
-
- "@babel/helper-optimise-call-expression@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5"
- integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==
- dependencies:
- "@babel/types" "^7.0.0"
-
- "@babel/helper-plugin-utils@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250"
- integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==
-
- "@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2"
- integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==
- dependencies:
- lodash "^4.17.11"
-
- "@babel/helper-remap-async-to-generator@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f"
- integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.0.0"
- "@babel/helper-wrap-function" "^7.1.0"
- "@babel/template" "^7.1.0"
- "@babel/traverse" "^7.1.0"
- "@babel/types" "^7.0.0"
-
- "@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27"
- integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==
- dependencies:
- "@babel/helper-member-expression-to-functions" "^7.0.0"
- "@babel/helper-optimise-call-expression" "^7.0.0"
- "@babel/traverse" "^7.4.4"
- "@babel/types" "^7.4.4"
-
- "@babel/helper-simple-access@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c"
- integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==
- dependencies:
- "@babel/template" "^7.1.0"
- "@babel/types" "^7.0.0"
-
- "@babel/helper-split-export-declaration@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677"
- integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==
- dependencies:
- "@babel/types" "^7.4.4"
-
- "@babel/helper-wrap-function@^7.1.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa"
- integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==
- dependencies:
- "@babel/helper-function-name" "^7.1.0"
- "@babel/template" "^7.1.0"
- "@babel/traverse" "^7.1.0"
- "@babel/types" "^7.2.0"
-
- "@babel/helpers@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5"
- integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==
- dependencies:
- "@babel/template" "^7.4.4"
- "@babel/traverse" "^7.4.4"
- "@babel/types" "^7.4.4"
-
- "@babel/highlight@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
- integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==
- dependencies:
- chalk "^2.0.0"
- esutils "^2.0.2"
- js-tokens "^4.0.0"
-
- "@babel/parser@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6"
- integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==
-
- "@babel/plugin-proposal-async-generator-functions@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e"
- integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-remap-async-to-generator" "^7.1.0"
- "@babel/plugin-syntax-async-generators" "^7.2.0"
-
- "@babel/plugin-proposal-json-strings@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317"
- integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-json-strings" "^7.2.0"
-
- "@babel/plugin-proposal-object-rest-spread@^7.2.0", "@babel/plugin-proposal-object-rest-spread@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005"
- integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-object-rest-spread" "^7.2.0"
-
- "@babel/plugin-proposal-optional-catch-binding@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5"
- integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
-
- "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78"
- integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-regex" "^7.4.4"
- regexpu-core "^4.5.4"
-
- "@babel/plugin-syntax-async-generators@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f"
- integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-syntax-json-strings@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470"
- integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-syntax-object-rest-spread@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e"
- integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-syntax-optional-catch-binding@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c"
- integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-arrow-functions@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550"
- integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-async-to-generator@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894"
- integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==
- dependencies:
- "@babel/helper-module-imports" "^7.0.0"
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-remap-async-to-generator" "^7.1.0"
-
- "@babel/plugin-transform-block-scoped-functions@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190"
- integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-block-scoping@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d"
- integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- lodash "^4.17.11"
-
- "@babel/plugin-transform-classes@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6"
- integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.0.0"
- "@babel/helper-define-map" "^7.4.4"
- "@babel/helper-function-name" "^7.1.0"
- "@babel/helper-optimise-call-expression" "^7.0.0"
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-replace-supers" "^7.4.4"
- "@babel/helper-split-export-declaration" "^7.4.4"
- globals "^11.1.0"
-
- "@babel/plugin-transform-computed-properties@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da"
- integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-destructuring@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f"
- integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-dotall-regex@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3"
- integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-regex" "^7.4.4"
- regexpu-core "^4.5.4"
-
- "@babel/plugin-transform-duplicate-keys@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3"
- integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-exponentiation-operator@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008"
- integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==
- dependencies:
- "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0"
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-for-of@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556"
- integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-function-name@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad"
- integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==
- dependencies:
- "@babel/helper-function-name" "^7.1.0"
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-literals@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1"
- integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-member-expression-literals@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d"
- integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-modules-amd@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6"
- integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==
- dependencies:
- "@babel/helper-module-transforms" "^7.1.0"
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-modules-commonjs@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e"
- integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==
- dependencies:
- "@babel/helper-module-transforms" "^7.4.4"
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-simple-access" "^7.1.0"
-
- "@babel/plugin-transform-modules-systemjs@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405"
- integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==
- dependencies:
- "@babel/helper-hoist-variables" "^7.4.4"
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-modules-umd@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae"
- integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==
- dependencies:
- "@babel/helper-module-transforms" "^7.1.0"
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-named-capturing-groups-regex@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz#5611d96d987dfc4a3a81c4383bb173361037d68d"
- integrity sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA==
- dependencies:
- regexp-tree "^0.1.0"
-
- "@babel/plugin-transform-new-target@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5"
- integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-object-super@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598"
- integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-replace-supers" "^7.1.0"
-
- "@babel/plugin-transform-parameters@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16"
- integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==
- dependencies:
- "@babel/helper-call-delegate" "^7.4.4"
- "@babel/helper-get-function-arity" "^7.0.0"
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-property-literals@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905"
- integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-regenerator@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.4.tgz#5b4da4df79391895fca9e28f99e87e22cfc02072"
- integrity sha512-Zz3w+pX1SI0KMIiqshFZkwnVGUhDZzpX2vtPzfJBKQQq8WsP/Xy9DNdELWivxcKOCX/Pywge4SiEaPaLtoDT4g==
- dependencies:
- regenerator-transform "^0.13.4"
-
- "@babel/plugin-transform-reserved-words@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634"
- integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-runtime@^7.2.0":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz#a50f5d16e9c3a4ac18a1a9f9803c107c380bce08"
- integrity sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q==
- dependencies:
- "@babel/helper-module-imports" "^7.0.0"
- "@babel/helper-plugin-utils" "^7.0.0"
- resolve "^1.8.1"
- semver "^5.5.1"
-
- "@babel/plugin-transform-shorthand-properties@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0"
- integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-spread@^7.2.0":
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406"
- integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-sticky-regex@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1"
- integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-regex" "^7.0.0"
-
- "@babel/plugin-transform-template-literals@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0"
- integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.0.0"
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-typeof-symbol@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2"
- integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
- "@babel/plugin-transform-unicode-regex@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f"
- integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-regex" "^7.4.4"
- regexpu-core "^4.5.4"
-
- "@babel/preset-env@^7.2.0":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.4.tgz#b6f6825bfb27b3e1394ca3de4f926482722c1d6f"
- integrity sha512-FU1H+ACWqZZqfw1x2G1tgtSSYSfxJLkpaUQL37CenULFARDo+h4xJoVHzRoHbK+85ViLciuI7ME4WTIhFRBBlw==
- dependencies:
- "@babel/helper-module-imports" "^7.0.0"
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-proposal-async-generator-functions" "^7.2.0"
- "@babel/plugin-proposal-json-strings" "^7.2.0"
- "@babel/plugin-proposal-object-rest-spread" "^7.4.4"
- "@babel/plugin-proposal-optional-catch-binding" "^7.2.0"
- "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
- "@babel/plugin-syntax-async-generators" "^7.2.0"
- "@babel/plugin-syntax-json-strings" "^7.2.0"
- "@babel/plugin-syntax-object-rest-spread" "^7.2.0"
- "@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
- "@babel/plugin-transform-arrow-functions" "^7.2.0"
- "@babel/plugin-transform-async-to-generator" "^7.4.4"
- "@babel/plugin-transform-block-scoped-functions" "^7.2.0"
- "@babel/plugin-transform-block-scoping" "^7.4.4"
- "@babel/plugin-transform-classes" "^7.4.4"
- "@babel/plugin-transform-computed-properties" "^7.2.0"
- "@babel/plugin-transform-destructuring" "^7.4.4"
- "@babel/plugin-transform-dotall-regex" "^7.4.4"
- "@babel/plugin-transform-duplicate-keys" "^7.2.0"
- "@babel/plugin-transform-exponentiation-operator" "^7.2.0"
- "@babel/plugin-transform-for-of" "^7.4.4"
- "@babel/plugin-transform-function-name" "^7.4.4"
- "@babel/plugin-transform-literals" "^7.2.0"
- "@babel/plugin-transform-member-expression-literals" "^7.2.0"
- "@babel/plugin-transform-modules-amd" "^7.2.0"
- "@babel/plugin-transform-modules-commonjs" "^7.4.4"
- "@babel/plugin-transform-modules-systemjs" "^7.4.4"
- "@babel/plugin-transform-modules-umd" "^7.2.0"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.4"
- "@babel/plugin-transform-new-target" "^7.4.4"
- "@babel/plugin-transform-object-super" "^7.2.0"
- "@babel/plugin-transform-parameters" "^7.4.4"
- "@babel/plugin-transform-property-literals" "^7.2.0"
- "@babel/plugin-transform-regenerator" "^7.4.4"
- "@babel/plugin-transform-reserved-words" "^7.2.0"
- "@babel/plugin-transform-shorthand-properties" "^7.2.0"
- "@babel/plugin-transform-spread" "^7.2.0"
- "@babel/plugin-transform-sticky-regex" "^7.2.0"
- "@babel/plugin-transform-template-literals" "^7.4.4"
- "@babel/plugin-transform-typeof-symbol" "^7.2.0"
- "@babel/plugin-transform-unicode-regex" "^7.4.4"
- "@babel/types" "^7.4.4"
- browserslist "^4.5.2"
- core-js-compat "^3.0.0"
- invariant "^2.2.2"
- js-levenshtein "^1.1.3"
- semver "^5.5.0"
-
- "@babel/runtime@^7.2.0":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.4.tgz#dc2e34982eb236803aa27a07fea6857af1b9171d"
- integrity sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==
- dependencies:
- regenerator-runtime "^0.13.2"
-
- "@babel/template@^7.1.0", "@babel/template@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237"
- integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- "@babel/parser" "^7.4.4"
- "@babel/types" "^7.4.4"
-
- "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.4.tgz#0776f038f6d78361860b6823887d4f3937133fe8"
- integrity sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- "@babel/generator" "^7.4.4"
- "@babel/helper-function-name" "^7.1.0"
- "@babel/helper-split-export-declaration" "^7.4.4"
- "@babel/parser" "^7.4.4"
- "@babel/types" "^7.4.4"
- debug "^4.1.0"
- globals "^11.1.0"
- lodash "^4.17.11"
-
- "@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0"
- integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==
- dependencies:
- esutils "^2.0.2"
- lodash "^4.17.11"
- to-fast-properties "^2.0.0"
-
- "@mrmlnc/readdir-enhanced@^2.2.1":
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
- integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==
- dependencies:
- call-me-maybe "^1.0.1"
- glob-to-regexp "^0.3.0"
-
- "@nodelib/fs.stat@^1.1.2":
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
- integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
-
- "@types/events@*":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
- integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
-
- "@types/glob@^7.1.1":
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
- integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==
- dependencies:
- "@types/events" "*"
- "@types/minimatch" "*"
- "@types/node" "*"
-
- "@types/minimatch@*":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
- integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
-
- "@types/node@*":
- version "12.0.2"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.2.tgz#3452a24edf9fea138b48fad4a0a028a683da1e40"
- integrity sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA==
-
- "@types/q@^1.5.1":
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
- integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
-
- "@vue/component-compiler-utils@^2.5.1":
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz#aa46d2a6f7647440b0b8932434d22f12371e543b"
- integrity sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw==
- dependencies:
- consolidate "^0.15.1"
- hash-sum "^1.0.2"
- lru-cache "^4.1.2"
- merge-source-map "^1.1.0"
- postcss "^7.0.14"
- postcss-selector-parser "^5.0.0"
- prettier "1.16.3"
- source-map "~0.6.1"
- vue-template-es2015-compiler "^1.9.0"
-
- "@webassemblyjs/ast@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359"
- integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==
- dependencies:
- "@webassemblyjs/helper-module-context" "1.8.5"
- "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
- "@webassemblyjs/wast-parser" "1.8.5"
-
- "@webassemblyjs/floating-point-hex-parser@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721"
- integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==
-
- "@webassemblyjs/helper-api-error@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7"
- integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==
-
- "@webassemblyjs/helper-buffer@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204"
- integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==
-
- "@webassemblyjs/helper-code-frame@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e"
- integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==
- dependencies:
- "@webassemblyjs/wast-printer" "1.8.5"
-
- "@webassemblyjs/helper-fsm@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452"
- integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==
-
- "@webassemblyjs/helper-module-context@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245"
- integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- mamacro "^0.0.3"
-
- "@webassemblyjs/helper-wasm-bytecode@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61"
- integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==
-
- "@webassemblyjs/helper-wasm-section@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf"
- integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/helper-buffer" "1.8.5"
- "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
- "@webassemblyjs/wasm-gen" "1.8.5"
-
- "@webassemblyjs/ieee754@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e"
- integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==
- dependencies:
- "@xtuc/ieee754" "^1.2.0"
-
- "@webassemblyjs/leb128@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10"
- integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==
- dependencies:
- "@xtuc/long" "4.2.2"
-
- "@webassemblyjs/utf8@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc"
- integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==
-
- "@webassemblyjs/wasm-edit@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a"
- integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/helper-buffer" "1.8.5"
- "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
- "@webassemblyjs/helper-wasm-section" "1.8.5"
- "@webassemblyjs/wasm-gen" "1.8.5"
- "@webassemblyjs/wasm-opt" "1.8.5"
- "@webassemblyjs/wasm-parser" "1.8.5"
- "@webassemblyjs/wast-printer" "1.8.5"
-
- "@webassemblyjs/wasm-gen@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc"
- integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
- "@webassemblyjs/ieee754" "1.8.5"
- "@webassemblyjs/leb128" "1.8.5"
- "@webassemblyjs/utf8" "1.8.5"
-
- "@webassemblyjs/wasm-opt@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264"
- integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/helper-buffer" "1.8.5"
- "@webassemblyjs/wasm-gen" "1.8.5"
- "@webassemblyjs/wasm-parser" "1.8.5"
-
- "@webassemblyjs/wasm-parser@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d"
- integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/helper-api-error" "1.8.5"
- "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
- "@webassemblyjs/ieee754" "1.8.5"
- "@webassemblyjs/leb128" "1.8.5"
- "@webassemblyjs/utf8" "1.8.5"
-
- "@webassemblyjs/wast-parser@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c"
- integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/floating-point-hex-parser" "1.8.5"
- "@webassemblyjs/helper-api-error" "1.8.5"
- "@webassemblyjs/helper-code-frame" "1.8.5"
- "@webassemblyjs/helper-fsm" "1.8.5"
- "@xtuc/long" "4.2.2"
-
- "@webassemblyjs/wast-printer@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc"
- integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/wast-parser" "1.8.5"
- "@xtuc/long" "4.2.2"
-
- "@xtuc/ieee754@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
- integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
-
- "@xtuc/long@4.2.2":
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
- integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
-
- abbrev@1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
- integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-
- accepts@~1.3.4, accepts@~1.3.5:
- version "1.3.7"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
- integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
- dependencies:
- mime-types "~2.1.24"
- negotiator "0.6.2"
-
- acorn-dynamic-import@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948"
- integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==
-
- acorn@^6.0.5:
- version "6.1.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
- integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==
-
- ajv-errors@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
- integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
-
- ajv-keywords@^3.1.0:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d"
- integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==
-
- ajv@^6.1.0:
- version "6.10.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1"
- integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==
- dependencies:
- fast-deep-equal "^2.0.1"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.4.1"
- uri-js "^4.2.2"
-
- alphanum-sort@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
- integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
-
- ansi-colors@^3.0.0:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
- integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
-
- ansi-html@0.0.7:
- version "0.0.7"
- resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
- integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
-
- ansi-regex@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
- integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
-
- ansi-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
- integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-
- ansi-styles@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
- integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
-
- ansi-styles@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
- integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
- dependencies:
- color-convert "^1.9.0"
-
- anymatch@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
- integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
- dependencies:
- micromatch "^3.1.4"
- normalize-path "^2.1.1"
-
- aproba@^1.0.3, aproba@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
- integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
-
- are-we-there-yet@~1.1.2:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
- integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
- dependencies:
- delegates "^1.0.0"
- readable-stream "^2.0.6"
-
- argparse@^1.0.7:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
- integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
- dependencies:
- sprintf-js "~1.0.2"
-
- arr-diff@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
- integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
-
- arr-flatten@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
- integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
-
- arr-union@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
- integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-
- array-flatten@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
- integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
-
- array-flatten@^2.1.0:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
- integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
-
- array-union@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
- integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
- dependencies:
- array-uniq "^1.0.1"
-
- array-uniq@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
- integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
-
- array-unique@^0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
- integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-
- arrify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
- integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
-
- asn1.js@^4.0.0:
- version "4.10.1"
- resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
- integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
- dependencies:
- bn.js "^4.0.0"
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
-
- assert@^1.1.1:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
- integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
- dependencies:
- object-assign "^4.1.1"
- util "0.10.3"
-
- assign-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
- integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
-
- ast-types@0.9.6:
- version "0.9.6"
- resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9"
- integrity sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=
-
- async-each@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
- integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
-
- async@^1.5.2:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
- integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
-
- async@^2.4.1:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381"
- integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==
- dependencies:
- lodash "^4.17.11"
-
- atob@^2.1.1:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
- integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-
- autoprefixer@^9.4.2, autoprefixer@^9.4.5:
- version "9.5.1"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.5.1.tgz#243b1267b67e7e947f28919d786b50d3bb0fb357"
- integrity sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==
- dependencies:
- browserslist "^4.5.4"
- caniuse-lite "^1.0.30000957"
- normalize-range "^0.1.2"
- num2fraction "^1.2.2"
- postcss "^7.0.14"
- postcss-value-parser "^3.3.1"
-
- babel-code-frame@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
- integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
- dependencies:
- chalk "^1.1.3"
- esutils "^2.0.2"
- js-tokens "^3.0.2"
-
- babel-loader@^8.0.4:
- version "8.0.6"
- resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb"
- integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==
- dependencies:
- find-cache-dir "^2.0.0"
- loader-utils "^1.0.2"
- mkdirp "^0.5.1"
- pify "^4.0.1"
-
- babel-merge@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/babel-merge/-/babel-merge-2.0.1.tgz#6b2dfad78a655df66e3418eb37b1c3c5e676ad1a"
- integrity sha512-puTQQxuzS+0JlMyVdfsTVaCgzqjBXKPMv7oUANpYcHFY+7IptWZ4PZDYX+qBxrRMtrriuBA44LkKpS99EJzqVA==
- dependencies:
- "@babel/core" "^7.0.0-beta.49"
- deepmerge "^2.1.0"
- object.omit "^3.0.0"
-
- balanced-match@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
- integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-
- base64-js@^1.0.2:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
- integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
-
- base@^0.11.1:
- version "0.11.2"
- resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
- integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
- dependencies:
- cache-base "^1.0.1"
- class-utils "^0.3.5"
- component-emitter "^1.2.1"
- define-property "^1.0.0"
- isobject "^3.0.1"
- mixin-deep "^1.2.0"
- pascalcase "^0.1.1"
-
- batch@0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
- integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
-
- big.js@^5.2.2:
- version "5.2.2"
- resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
- integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
-
- binary-extensions@^1.0.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
- integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
-
- bluebird@^3.1.1, bluebird@^3.5.3:
- version "3.5.4"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714"
- integrity sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==
-
- bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
- version "4.11.8"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
- integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
-
- body-parser@1.18.3:
- version "1.18.3"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
- integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=
- dependencies:
- bytes "3.0.0"
- content-type "~1.0.4"
- debug "2.6.9"
- depd "~1.1.2"
- http-errors "~1.6.3"
- iconv-lite "0.4.23"
- on-finished "~2.3.0"
- qs "6.5.2"
- raw-body "2.3.3"
- type-is "~1.6.16"
-
- bonjour@^3.5.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
- integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU=
- dependencies:
- array-flatten "^2.1.0"
- deep-equal "^1.0.1"
- dns-equal "^1.0.0"
- dns-txt "^2.0.2"
- multicast-dns "^6.0.1"
- multicast-dns-service-types "^1.1.0"
-
- boolbase@^1.0.0, boolbase@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
- integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
-
- brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
- braces@^2.3.1, braces@^2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
- integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
- dependencies:
- arr-flatten "^1.1.0"
- array-unique "^0.3.2"
- extend-shallow "^2.0.1"
- fill-range "^4.0.0"
- isobject "^3.0.1"
- repeat-element "^1.1.2"
- snapdragon "^0.8.1"
- snapdragon-node "^2.0.1"
- split-string "^3.0.2"
- to-regex "^3.0.1"
-
- brorand@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
- integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
-
- browserify-aes@^1.0.0, browserify-aes@^1.0.4:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
- integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
- dependencies:
- buffer-xor "^1.0.3"
- cipher-base "^1.0.0"
- create-hash "^1.1.0"
- evp_bytestokey "^1.0.3"
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
- browserify-cipher@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
- integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
- dependencies:
- browserify-aes "^1.0.4"
- browserify-des "^1.0.0"
- evp_bytestokey "^1.0.0"
-
- browserify-des@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
- integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
- dependencies:
- cipher-base "^1.0.1"
- des.js "^1.0.0"
- inherits "^2.0.1"
- safe-buffer "^5.1.2"
-
- browserify-rsa@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
- integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
- dependencies:
- bn.js "^4.1.0"
- randombytes "^2.0.1"
-
- browserify-sign@^4.0.0:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
- integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=
- dependencies:
- bn.js "^4.1.1"
- browserify-rsa "^4.0.0"
- create-hash "^1.1.0"
- create-hmac "^1.1.2"
- elliptic "^6.0.0"
- inherits "^2.0.1"
- parse-asn1 "^5.0.0"
-
- browserify-zlib@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
- integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
- dependencies:
- pako "~1.0.5"
-
- browserslist@^4.0.0, browserslist@^4.5.2, browserslist@^4.5.4:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.0.tgz#5274028c26f4d933d5b1323307c1d1da5084c9ff"
- integrity sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==
- dependencies:
- caniuse-lite "^1.0.30000967"
- electron-to-chromium "^1.3.133"
- node-releases "^1.1.19"
-
- buffer-from@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
- integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
-
- buffer-indexof@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
- integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
-
- buffer-xor@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
- integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
-
- buffer@^4.3.0:
- version "4.9.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
- integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
- dependencies:
- base64-js "^1.0.2"
- ieee754 "^1.1.4"
- isarray "^1.0.0"
-
- builtin-status-codes@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
- integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
-
- bytes@3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
- integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
-
- bytes@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
- integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
-
- cacache@^11.3.2:
- version "11.3.2"
- resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa"
- integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==
- dependencies:
- bluebird "^3.5.3"
- chownr "^1.1.1"
- figgy-pudding "^3.5.1"
- glob "^7.1.3"
- graceful-fs "^4.1.15"
- lru-cache "^5.1.1"
- mississippi "^3.0.0"
- mkdirp "^0.5.1"
- move-concurrently "^1.0.1"
- promise-inflight "^1.0.1"
- rimraf "^2.6.2"
- ssri "^6.0.1"
- unique-filename "^1.1.1"
- y18n "^4.0.0"
-
- cache-base@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
- integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
- dependencies:
- collection-visit "^1.0.0"
- component-emitter "^1.2.1"
- get-value "^2.0.6"
- has-value "^1.0.0"
- isobject "^3.0.1"
- set-value "^2.0.0"
- to-object-path "^0.3.0"
- union-value "^1.0.0"
- unset-value "^1.0.0"
-
- call-me-maybe@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
- integrity sha1-JtII6onje1y95gJQoV8DHBak1ms=
-
- caller-callsite@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
- integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
- dependencies:
- callsites "^2.0.0"
-
- caller-path@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
- integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
- dependencies:
- caller-callsite "^2.0.0"
-
- callsites@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
- integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
-
- camel-case@3.0.x:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
- integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=
- dependencies:
- no-case "^2.2.0"
- upper-case "^1.1.1"
-
- camelcase-css@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
- integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
-
- camelcase@^5.0.0:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
- integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-
- caniuse-api@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
- integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
- dependencies:
- browserslist "^4.0.0"
- caniuse-lite "^1.0.0"
- lodash.memoize "^4.1.2"
- lodash.uniq "^4.5.0"
-
- caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000957, caniuse-lite@^1.0.30000967:
- version "1.0.30000967"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000967.tgz#a5039577806fccee80a04aaafb2c0890b1ee2f73"
- integrity sha512-rUBIbap+VJfxTzrM4akJ00lkvVb5/n5v3EGXfWzSH5zT8aJmGzjA8HWhJ4U6kCpzxozUSnB+yvAYDRPY6mRpgQ==
-
- chalk@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
- integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
- dependencies:
- ansi-styles "^2.2.1"
- escape-string-regexp "^1.0.2"
- has-ansi "^2.0.0"
- strip-ansi "^3.0.0"
- supports-color "^2.0.0"
-
- chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
- integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
-
- charenc@~0.0.1:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
- integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
-
- chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.1.5:
- version "2.1.5"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d"
- integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==
- dependencies:
- anymatch "^2.0.0"
- async-each "^1.0.1"
- braces "^2.3.2"
- glob-parent "^3.1.0"
- inherits "^2.0.3"
- is-binary-path "^1.0.0"
- is-glob "^4.0.0"
- normalize-path "^3.0.0"
- path-is-absolute "^1.0.0"
- readdirp "^2.2.1"
- upath "^1.1.1"
- optionalDependencies:
- fsevents "^1.2.7"
-
- chownr@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
- integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==
-
- chrome-trace-event@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48"
- integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==
- dependencies:
- tslib "^1.9.0"
-
- cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
- integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
- class-utils@^0.3.5:
- version "0.3.6"
- resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
- integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
- dependencies:
- arr-union "^3.1.0"
- define-property "^0.2.5"
- isobject "^3.0.0"
- static-extend "^0.1.1"
-
- clean-css@4.2.x, clean-css@^4.1.3:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17"
- integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==
- dependencies:
- source-map "~0.6.0"
-
- cliui@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
- integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==
- dependencies:
- string-width "^2.1.1"
- strip-ansi "^4.0.0"
- wrap-ansi "^2.0.0"
-
- coa@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
- integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
- dependencies:
- "@types/q" "^1.5.1"
- chalk "^2.4.1"
- q "^1.1.2"
-
- code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
- integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
-
- collection-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
- integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
- dependencies:
- map-visit "^1.0.0"
- object-visit "^1.0.0"
-
- color-convert@^1.9.0, color-convert@^1.9.1:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
- dependencies:
- color-name "1.1.3"
-
- color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-
- color-name@^1.0.0:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
- color-string@^1.5.2:
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
- integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==
- dependencies:
- color-name "^1.0.0"
- simple-swizzle "^0.2.2"
-
- color@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/color/-/color-3.1.1.tgz#7abf5c0d38e89378284e873c207ae2172dcc8a61"
- integrity sha512-PvUltIXRjehRKPSy89VnDWFKY58xyhTLyxIg21vwQBI6qLwZNPmC8k3C1uytIgFKEpOIzN4y32iPm8231zFHIg==
- dependencies:
- color-convert "^1.9.1"
- color-string "^1.5.2"
-
- commander@2.17.x:
- version "2.17.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
- integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
-
- commander@^2.19.0:
- version "2.20.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
- integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
-
- commander@~2.19.0:
- version "2.19.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
- integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
-
- commondir@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
- integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
-
- component-emitter@^1.2.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
- integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
-
- compressible@~2.0.16:
- version "2.0.17"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1"
- integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==
- dependencies:
- mime-db ">= 1.40.0 < 2"
-
- compression@^1.7.4:
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
- integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
- dependencies:
- 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"
-
- concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
-
- concat-stream@^1.5.0:
- version "1.6.2"
- resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
- integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
- dependencies:
- buffer-from "^1.0.0"
- inherits "^2.0.3"
- readable-stream "^2.2.2"
- typedarray "^0.0.6"
-
- concatenate@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/concatenate/-/concatenate-0.0.2.tgz#0b49d6e8c41047d7728cdc8d62a086623397b49f"
- integrity sha1-C0nW6MQQR9dyjNyNYqCGYjOXtJ8=
- dependencies:
- globs "^0.1.2"
-
- connect-history-api-fallback@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
- integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
-
- console-browserify@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
- integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
- dependencies:
- date-now "^0.1.4"
-
- console-control-strings@^1.0.0, console-control-strings@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
- integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
-
- consolidate@^0.15.1:
- version "0.15.1"
- resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7"
- integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==
- dependencies:
- bluebird "^3.1.1"
-
- constants-browserify@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
- integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
-
- content-disposition@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
- integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ=
-
- content-type@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
- integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
-
- convert-source-map@^1.1.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
- integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==
- dependencies:
- safe-buffer "~5.1.1"
-
- cookie-signature@1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
- integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
-
- cookie@0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
- integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
-
- copy-concurrently@^1.0.0:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
- integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
- dependencies:
- 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@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
- integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
-
- core-js-compat@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.0.1.tgz#bff73ba31ca8687431b9c88f78d3362646fb76f0"
- integrity sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g==
- dependencies:
- browserslist "^4.5.4"
- core-js "3.0.1"
- core-js-pure "3.0.1"
- semver "^6.0.0"
-
- core-js-pure@3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.0.1.tgz#37358fb0d024e6b86d443d794f4e37e949098cbe"
- integrity sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g==
-
- core-js@3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.1.tgz#1343182634298f7f38622f95e73f54e48ddf4738"
- integrity sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==
-
- core-util-is@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
- integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-
- cosmiconfig@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc"
- integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==
- dependencies:
- is-directory "^0.3.1"
- js-yaml "^3.9.0"
- parse-json "^4.0.0"
- require-from-string "^2.0.1"
-
- cosmiconfig@^5.0.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
- integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
- dependencies:
- import-fresh "^2.0.0"
- is-directory "^0.3.1"
- js-yaml "^3.13.1"
- parse-json "^4.0.0"
-
- create-ecdh@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
- integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==
- dependencies:
- bn.js "^4.1.0"
- elliptic "^6.0.0"
-
- create-hash@^1.1.0, create-hash@^1.1.2:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
- integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
- dependencies:
- 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@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
- integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
- dependencies:
- 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-env@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz#6ecd4c015d5773e614039ee529076669b9d126f2"
- integrity sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==
- dependencies:
- cross-spawn "^6.0.5"
- is-windows "^1.0.0"
-
- cross-spawn@^6.0.0, cross-spawn@^6.0.5:
- version "6.0.5"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
- integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
- dependencies:
- nice-try "^1.0.4"
- path-key "^2.0.1"
- semver "^5.5.0"
- shebang-command "^1.2.0"
- which "^1.2.9"
-
- crypt@~0.0.1:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
- integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=
-
- crypto-browserify@^3.11.0:
- version "3.12.0"
- resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
- integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
- dependencies:
- 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@0.0.4, css-color-names@^0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
- integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
-
- css-declaration-sorter@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
- integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
- dependencies:
- postcss "^7.0.1"
- timsort "^0.3.0"
-
- css-loader@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe"
- integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==
- dependencies:
- babel-code-frame "^6.26.0"
- css-selector-tokenizer "^0.7.0"
- icss-utils "^2.1.0"
- loader-utils "^1.0.2"
- lodash "^4.17.11"
- postcss "^6.0.23"
- postcss-modules-extract-imports "^1.2.0"
- postcss-modules-local-by-default "^1.2.0"
- postcss-modules-scope "^1.1.0"
- postcss-modules-values "^1.3.0"
- postcss-value-parser "^3.3.0"
- source-list-map "^2.0.0"
-
- css-select-base-adapter@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
- integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
-
- css-select@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede"
- integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==
- dependencies:
- boolbase "^1.0.0"
- css-what "^2.1.2"
- domutils "^1.7.0"
- nth-check "^1.0.2"
-
- css-selector-tokenizer@^0.7.0:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d"
- integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==
- dependencies:
- cssesc "^0.1.0"
- fastparse "^1.1.1"
- regexpu-core "^1.0.0"
-
- css-tree@1.0.0-alpha.28:
- version "1.0.0-alpha.28"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f"
- integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==
- dependencies:
- mdn-data "~1.1.0"
- source-map "^0.5.3"
-
- css-tree@1.0.0-alpha.29:
- version "1.0.0-alpha.29"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39"
- integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==
- dependencies:
- mdn-data "~1.1.0"
- source-map "^0.5.3"
-
- css-unit-converter@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996"
- integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=
-
- css-url-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec"
- integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=
-
- css-what@^2.1.2:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
- integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
-
- cssesc@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
- integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=
-
- cssesc@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
- integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==
-
- cssesc@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
- integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
-
- cssnano-preset-default@^4.0.7:
- version "4.0.7"
- resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76"
- integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==
- dependencies:
- 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@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
- integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
-
- cssnano-util-get-match@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
- integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
-
- cssnano-util-raw-cache@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
- integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
- dependencies:
- postcss "^7.0.0"
-
- cssnano-util-same-parent@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
- integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
-
- cssnano@^4.1.0:
- version "4.1.10"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2"
- integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==
- dependencies:
- cosmiconfig "^5.0.0"
- cssnano-preset-default "^4.0.7"
- is-resolvable "^1.0.0"
- postcss "^7.0.0"
-
- csso@^3.5.1:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
- integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==
- dependencies:
- css-tree "1.0.0-alpha.29"
-
- cyclist@~0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
- integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
-
- date-now@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
- integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
-
- de-indent@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
- integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=
-
- debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
-
- debug@^3.2.5, debug@^3.2.6:
- version "3.2.6"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
- integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
- dependencies:
- ms "^2.1.1"
-
- debug@^4.1.0, debug@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
- integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
- dependencies:
- ms "^2.1.1"
-
- decamelize@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
- integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
-
- decode-uri-component@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
- integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
-
- deep-equal@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
- integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=
-
- deep-extend@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
- integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
-
- deepmerge@^2.1.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170"
- integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==
-
- default-gateway@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
- integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==
- dependencies:
- execa "^1.0.0"
- ip-regex "^2.1.0"
-
- define-properties@^1.1.2, define-properties@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
- integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
- dependencies:
- object-keys "^1.0.12"
-
- define-property@^0.2.5:
- version "0.2.5"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
- integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
- dependencies:
- is-descriptor "^0.1.0"
-
- define-property@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
- integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
- dependencies:
- is-descriptor "^1.0.0"
-
- define-property@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
- integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
- dependencies:
- is-descriptor "^1.0.2"
- isobject "^3.0.1"
-
- del@^4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4"
- integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==
- dependencies:
- "@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"
-
- delegates@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
- integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
-
- depd@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
- integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
-
- des.js@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
- integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
- dependencies:
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
-
- destroy@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
- integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
-
- detect-file@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
- integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
-
- detect-libc@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
- integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
-
- detect-node@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
- integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
-
- diffie-hellman@^5.0.0:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
- integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
- dependencies:
- bn.js "^4.1.0"
- miller-rabin "^4.0.0"
- randombytes "^2.0.0"
-
- dir-glob@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
- integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==
- dependencies:
- arrify "^1.0.1"
- path-type "^3.0.0"
-
- dns-equal@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
- integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
-
- dns-packet@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
- integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==
- dependencies:
- ip "^1.1.0"
- safe-buffer "^5.0.1"
-
- dns-txt@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
- integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=
- dependencies:
- buffer-indexof "^1.0.0"
-
- dom-serializer@0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
- integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
- dependencies:
- domelementtype "^1.3.0"
- entities "^1.1.1"
-
- domain-browser@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
- integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
-
- domelementtype@1, domelementtype@^1.3.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
- integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
-
- domutils@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
- integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
- dependencies:
- dom-serializer "0"
- domelementtype "1"
-
- dot-prop@^4.1.1:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
- integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==
- dependencies:
- is-obj "^1.0.0"
-
- dotenv-expand@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275"
- integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=
-
- dotenv@^6.2.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064"
- integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==
-
- duplexify@^3.4.2, duplexify@^3.6.0:
- version "3.7.1"
- resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
- integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
- dependencies:
- end-of-stream "^1.0.0"
- inherits "^2.0.1"
- readable-stream "^2.0.0"
- stream-shift "^1.0.0"
-
- ee-first@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
- integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
-
- electron-to-chromium@^1.3.133:
- version "1.3.134"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.134.tgz#550222bddac43c6bd6c445c3543a0fe8a615021d"
- integrity sha512-C3uK2SrtWg/gSWaluLHWSHjyebVZCe4ZC0NVgTAoTq8tCR9FareRK5T7R7AS/nPZShtlEcjVMX1kQ8wi4nU68w==
-
- elliptic@^6.0.0:
- version "6.4.1"
- resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a"
- integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==
- dependencies:
- 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"
-
- emojis-list@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
- integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
-
- encodeurl@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
- integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-
- end-of-stream@^1.0.0, end-of-stream@^1.1.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
- integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
- dependencies:
- once "^1.4.0"
-
- enhanced-resolve@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
- integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==
- dependencies:
- graceful-fs "^4.1.2"
- memory-fs "^0.4.0"
- tapable "^1.0.0"
-
- entities@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
- integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
-
- errno@^0.1.3, errno@~0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
- integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
- dependencies:
- prr "~1.0.1"
-
- error-ex@^1.3.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
- integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
- dependencies:
- is-arrayish "^0.2.1"
-
- error-stack-parser@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.2.tgz#4ae8dbaa2bf90a8b450707b9149dcabca135520d"
- integrity sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==
- dependencies:
- stackframe "^1.0.4"
-
- es-abstract@^1.12.0, es-abstract@^1.5.1:
- version "1.13.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
- integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
- dependencies:
- es-to-primitive "^1.2.0"
- function-bind "^1.1.1"
- has "^1.0.3"
- is-callable "^1.1.4"
- is-regex "^1.0.4"
- object-keys "^1.0.12"
-
- es-to-primitive@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
- integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
- dependencies:
- is-callable "^1.1.4"
- is-date-object "^1.0.1"
- is-symbol "^1.0.2"
-
- es6-templates@^0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4"
- integrity sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=
- dependencies:
- recast "~0.11.12"
- through "~2.3.6"
-
- escape-html@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
- integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
-
- escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-
- eslint-scope@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
- integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
- dependencies:
- esrecurse "^4.1.0"
- estraverse "^4.1.1"
-
- esprima@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
- integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-
- esprima@~3.1.0:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
- integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=
-
- esrecurse@^4.1.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
- integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
- dependencies:
- estraverse "^4.1.0"
-
- estraverse@^4.1.0, estraverse@^4.1.1:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
- integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
-
- esutils@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
- integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
-
- etag@~1.8.1:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
- integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
-
- eventemitter3@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
- integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
-
- events@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
- integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==
-
- eventsource@^1.0.7:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0"
- integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==
- dependencies:
- original "^1.0.0"
-
- evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
- integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
- dependencies:
- md5.js "^1.3.4"
- safe-buffer "^5.1.1"
-
- execa@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
- integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
- dependencies:
- 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@^2.1.4:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
- integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
- dependencies:
- 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"
-
- expand-tilde@^2.0.0, expand-tilde@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
- integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
- dependencies:
- homedir-polyfill "^1.0.1"
-
- express@^4.16.4:
- version "4.16.4"
- resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e"
- integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==
- dependencies:
- accepts "~1.3.5"
- array-flatten "1.1.1"
- body-parser "1.18.3"
- content-disposition "0.5.2"
- content-type "~1.0.4"
- cookie "0.3.1"
- 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.1"
- fresh "0.5.2"
- merge-descriptors "1.0.1"
- methods "~1.1.2"
- on-finished "~2.3.0"
- parseurl "~1.3.2"
- path-to-regexp "0.1.7"
- proxy-addr "~2.0.4"
- qs "6.5.2"
- range-parser "~1.2.0"
- safe-buffer "5.1.2"
- send "0.16.2"
- serve-static "1.13.2"
- setprototypeof "1.1.0"
- statuses "~1.4.0"
- type-is "~1.6.16"
- utils-merge "1.0.1"
- vary "~1.1.2"
-
- extend-shallow@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
- integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
- dependencies:
- is-extendable "^0.1.0"
-
- extend-shallow@^3.0.0, extend-shallow@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
- integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
- dependencies:
- assign-symbols "^1.0.0"
- is-extendable "^1.0.1"
-
- extglob@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
- integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
- dependencies:
- 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"
-
- extract-text-webpack-plugin@v4.0.0-beta.0:
- version "4.0.0-beta.0"
- resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz#f7361d7ff430b42961f8d1321ba8c1757b5d4c42"
- integrity sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA==
- dependencies:
- async "^2.4.1"
- loader-utils "^1.1.0"
- schema-utils "^0.4.5"
- webpack-sources "^1.1.0"
-
- fast-deep-equal@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
- integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
-
- fast-glob@^2.0.2:
- version "2.2.6"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.6.tgz#a5d5b697ec8deda468d85a74035290a025a95295"
- integrity sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==
- dependencies:
- "@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@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
- integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
-
- fastparse@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9"
- integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==
-
- faye-websocket@^0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
- integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=
- dependencies:
- websocket-driver ">=0.5.1"
-
- faye-websocket@~0.11.1:
- version "0.11.1"
- resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38"
- integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=
- dependencies:
- websocket-driver ">=0.5.1"
-
- figgy-pudding@^3.5.1:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
- integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
-
- file-loader@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde"
- integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==
- dependencies:
- loader-utils "^1.0.2"
- schema-utils "^1.0.0"
-
- file-type@^10.7.0:
- version "10.11.0"
- resolved "https://registry.yarnpkg.com/file-type/-/file-type-10.11.0.tgz#2961d09e4675b9fb9a3ee6b69e9cd23f43fd1890"
- integrity sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==
-
- fill-range@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
- integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
- dependencies:
- extend-shallow "^2.0.1"
- is-number "^3.0.0"
- repeat-string "^1.6.1"
- to-regex-range "^2.1.0"
-
- finalhandler@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
- integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==
- dependencies:
- debug "2.6.9"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- on-finished "~2.3.0"
- parseurl "~1.3.2"
- statuses "~1.4.0"
- unpipe "~1.0.0"
-
- find-cache-dir@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
- integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
- dependencies:
- commondir "^1.0.1"
- make-dir "^2.0.0"
- pkg-dir "^3.0.0"
-
- find-up@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
- integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
- dependencies:
- locate-path "^3.0.0"
-
- findup-sync@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc"
- integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=
- dependencies:
- detect-file "^1.0.0"
- is-glob "^3.1.0"
- micromatch "^3.0.4"
- resolve-dir "^1.0.1"
-
- flush-write-stream@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
- integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
- dependencies:
- inherits "^2.0.3"
- readable-stream "^2.3.6"
-
- follow-redirects@^1.0.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76"
- integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==
- dependencies:
- debug "^3.2.6"
-
- for-in@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
- integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
-
- forwarded@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
- integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
-
- fragment-cache@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
- integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
- dependencies:
- map-cache "^0.2.2"
-
- fresh@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
- integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
-
- friendly-errors-webpack-plugin@^1.6.1:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz#efc86cbb816224565861a1be7a9d84d0aafea136"
- integrity sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw==
- dependencies:
- chalk "^1.1.3"
- error-stack-parser "^2.0.0"
- string-width "^2.0.0"
-
- from2@^2.1.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
- integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
- dependencies:
- inherits "^2.0.1"
- readable-stream "^2.0.0"
-
- fs-extra@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
- integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
- dependencies:
- graceful-fs "^4.1.2"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
-
- fs-extra@^8.0.0:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.0.1.tgz#90294081f978b1f182f347a440a209154344285b"
- integrity sha512-W+XLrggcDzlle47X/XnS7FXrXu9sDo+Ze9zpndeBxdgv88FHLm1HtmkhEwavruS6koanBjp098rUpHs65EmG7A==
- dependencies:
- graceful-fs "^4.1.2"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
-
- fs-minipass@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
- integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==
- dependencies:
- minipass "^2.2.1"
-
- fs-write-stream-atomic@^1.0.8:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
- integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
- dependencies:
- graceful-fs "^4.1.2"
- iferr "^0.1.5"
- imurmurhash "^0.1.4"
- readable-stream "1 || 2"
-
- fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
- integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-
- fsevents@^1.2.7:
- version "1.2.9"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
- integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
- dependencies:
- nan "^2.12.1"
- node-pre-gyp "^0.12.0"
-
- function-bind@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
- integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-
- gauge@~2.7.3:
- version "2.7.4"
- resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
- integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
- dependencies:
- 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"
-
- get-caller-file@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
- integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
-
- get-stream@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
- integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
- dependencies:
- pump "^3.0.0"
-
- get-value@^2.0.3, get-value@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
- integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
-
- glob-parent@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
- integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
- dependencies:
- is-glob "^3.1.0"
- path-dirname "^1.0.0"
-
- glob-to-regexp@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
- integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
-
- glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
- version "7.1.4"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
- integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
- dependencies:
- 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"
-
- global-modules@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
- integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
- dependencies:
- global-prefix "^1.0.1"
- is-windows "^1.0.1"
- resolve-dir "^1.0.0"
-
- global-prefix@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
- integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
- dependencies:
- expand-tilde "^2.0.2"
- homedir-polyfill "^1.0.1"
- ini "^1.3.4"
- is-windows "^1.0.1"
- which "^1.2.14"
-
- globals@^11.1.0:
- version "11.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
- integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-
- globby@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
- integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
- dependencies:
- array-union "^1.0.1"
- glob "^7.0.3"
- object-assign "^4.0.1"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
- globby@^8.0.1:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d"
- integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==
- dependencies:
- array-union "^1.0.1"
- dir-glob "2.0.0"
- fast-glob "^2.0.2"
- glob "^7.1.2"
- ignore "^3.3.5"
- pify "^3.0.0"
- slash "^1.0.0"
-
- globs@^0.1.2:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/globs/-/globs-0.1.4.tgz#1d13639f6174e4ae73a7f936da7d9a079f657c1c"
- integrity sha512-D23dWbOq48vlOraoSigbcQV4tWrnhwk+E/Um2cMuDS3/5dwGmdFeA7L/vAvDhLFlQOTDqHcXh35m/71g2A2WzQ==
- dependencies:
- glob "^7.1.1"
-
- graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
- version "4.1.15"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
- integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
-
- growly@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
- integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
-
- handle-thing@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754"
- integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==
-
- has-ansi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
- integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
- dependencies:
- ansi-regex "^2.0.0"
-
- has-flag@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-
- has-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
- integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
-
- has-unicode@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
- integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
-
- has-value@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
- integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
- dependencies:
- get-value "^2.0.3"
- has-values "^0.1.4"
- isobject "^2.0.0"
-
- has-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
- integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
- dependencies:
- get-value "^2.0.6"
- has-values "^1.0.0"
- isobject "^3.0.0"
-
- has-values@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
- integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
-
- has-values@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
- integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
- dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
-
- has@^1.0.0, has@^1.0.1, has@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
- dependencies:
- function-bind "^1.1.1"
-
- hash-base@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
- integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
- hash-sum@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04"
- integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=
-
- hash.js@^1.0.0, hash.js@^1.0.3:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
- integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
- dependencies:
- inherits "^2.0.3"
- minimalistic-assert "^1.0.1"
-
- he@1.2.x, he@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
- integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
-
- hex-color-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
- integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
-
- hmac-drbg@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
- integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
- dependencies:
- hash.js "^1.0.3"
- minimalistic-assert "^1.0.0"
- minimalistic-crypto-utils "^1.0.1"
-
- homedir-polyfill@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
- integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
- dependencies:
- parse-passwd "^1.0.0"
-
- hpack.js@^2.1.6:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
- integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=
- dependencies:
- inherits "^2.0.1"
- obuf "^1.0.0"
- readable-stream "^2.0.1"
- wbuf "^1.1.0"
-
- hsl-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
- integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
-
- hsla-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
- integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
-
- html-comment-regex@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
- integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
-
- html-entities@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
- integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
-
- html-loader@^0.5.5:
- version "0.5.5"
- resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea"
- integrity sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog==
- dependencies:
- es6-templates "^0.2.3"
- fastparse "^1.1.1"
- html-minifier "^3.5.8"
- loader-utils "^1.1.0"
- object-assign "^4.1.1"
-
- html-minifier@^3.5.8:
- version "3.5.21"
- resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c"
- integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==
- dependencies:
- 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"
-
- http-deceiver@^1.2.7:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
- integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
-
- http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
- version "1.6.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
- integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
- dependencies:
- depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.0"
- statuses ">= 1.4.0 < 2"
-
- http-parser-js@>=0.4.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8"
- integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==
-
- http-proxy-middleware@^0.19.1:
- version "0.19.1"
- resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a"
- integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==
- dependencies:
- http-proxy "^1.17.0"
- is-glob "^4.0.0"
- lodash "^4.17.11"
- micromatch "^3.1.10"
-
- http-proxy@^1.17.0:
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
- integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==
- dependencies:
- eventemitter3 "^3.0.0"
- follow-redirects "^1.0.0"
- requires-port "^1.0.0"
-
- https-browserify@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
- integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
-
- iconv-lite@0.4.23:
- version "0.4.23"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
- integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==
- dependencies:
- safer-buffer ">= 2.1.2 < 3"
-
- iconv-lite@^0.4.4:
- version "0.4.24"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
- integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
- dependencies:
- safer-buffer ">= 2.1.2 < 3"
-
- icss-replace-symbols@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
- integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
-
- icss-utils@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962"
- integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=
- dependencies:
- postcss "^6.0.1"
-
- ieee754@^1.1.4:
- version "1.1.13"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
- integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
-
- iferr@^0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
- integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
-
- ignore-walk@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
- integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
- dependencies:
- minimatch "^3.0.4"
-
- ignore@^3.3.5:
- version "3.3.10"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
- integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
-
- imagemin@^6.0.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-6.1.0.tgz#62508b465728fea36c03cdc07d915fe2d8cf9e13"
- integrity sha512-8ryJBL1CN5uSHpiBMX0rJw79C9F9aJqMnjGnrd/1CafegpNuA81RBAAru/jQQEOWlOJJlpRnlcVFF6wq+Ist0A==
- dependencies:
- file-type "^10.7.0"
- globby "^8.0.1"
- make-dir "^1.0.0"
- p-pipe "^1.1.0"
- pify "^4.0.1"
- replace-ext "^1.0.0"
-
- img-loader@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/img-loader/-/img-loader-3.0.1.tgz#c279691c0a9e6b94fa7d8318d2a6596d98bcee78"
- integrity sha512-0jDJqexgzOuq3zlXwFTBKJlMcaP1uXyl5t4Qu6b1IgXb3IwBDjPfVylBC8vHFIIESDw/S+5QkBbtBrt4T8wESA==
- dependencies:
- loader-utils "^1.1.0"
-
- import-cwd@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
- integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=
- dependencies:
- import-from "^2.1.0"
-
- import-fresh@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
- integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
- dependencies:
- caller-path "^2.0.0"
- resolve-from "^3.0.0"
-
- import-from@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
- integrity sha1-M1238qev/VOqpHHUuAId7ja387E=
- dependencies:
- resolve-from "^3.0.0"
-
- import-local@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
- integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
- dependencies:
- pkg-dir "^3.0.0"
- resolve-cwd "^2.0.0"
-
- imurmurhash@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
- integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
-
- indexes-of@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
- integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
-
- indexof@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
- integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
-
- inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
- inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
- integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-
- inherits@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
- integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
-
- ini@^1.3.4, ini@~1.3.0:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
- integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
-
- internal-ip@^4.2.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907"
- integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==
- dependencies:
- default-gateway "^4.2.0"
- ipaddr.js "^1.9.0"
-
- interpret@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
- integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
-
- invariant@^2.2.2:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
- integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
- dependencies:
- loose-envify "^1.0.0"
-
- invert-kv@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
- integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
-
- ip-regex@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
- integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
-
- ip@^1.1.0, ip@^1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
- integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
-
- ipaddr.js@1.9.0, ipaddr.js@^1.9.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65"
- integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==
-
- is-absolute-url@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
- integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
-
- is-accessor-descriptor@^0.1.6:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
- integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
- dependencies:
- kind-of "^3.0.2"
-
- is-accessor-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
- integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
- dependencies:
- kind-of "^6.0.0"
-
- is-arrayish@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
- integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
-
- is-arrayish@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
- integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
-
- is-binary-path@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
- integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
- dependencies:
- binary-extensions "^1.0.0"
-
- is-buffer@^1.1.5, is-buffer@~1.1.1:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
- integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-
- is-callable@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
- integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
-
- is-color-stop@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
- integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
- dependencies:
- 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@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
- integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
- dependencies:
- kind-of "^3.0.2"
-
- is-data-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
- integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
- dependencies:
- kind-of "^6.0.0"
-
- is-date-object@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
- integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
-
- is-descriptor@^0.1.0:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
- integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
- dependencies:
- is-accessor-descriptor "^0.1.6"
- is-data-descriptor "^0.1.4"
- kind-of "^5.0.0"
-
- is-descriptor@^1.0.0, is-descriptor@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
- integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
- dependencies:
- is-accessor-descriptor "^1.0.0"
- is-data-descriptor "^1.0.0"
- kind-of "^6.0.2"
-
- is-directory@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
- integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
-
- is-extendable@^0.1.0, is-extendable@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
- integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
-
- is-extendable@^1.0.0, is-extendable@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
- integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
- dependencies:
- is-plain-object "^2.0.4"
-
- is-extglob@^2.1.0, is-extglob@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-
- is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
- integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
- dependencies:
- number-is-nan "^1.0.0"
-
- is-fullwidth-code-point@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
- integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
-
- is-glob@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
- integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
- dependencies:
- is-extglob "^2.1.0"
-
- is-glob@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
- integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
- dependencies:
- is-extglob "^2.1.1"
-
- is-number@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
- integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
- dependencies:
- kind-of "^3.0.2"
-
- is-obj@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
- integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
-
- is-path-cwd@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz#2e0c7e463ff5b7a0eb60852d851a6809347a124c"
- integrity sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw==
-
- is-path-in-cwd@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb"
- integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==
- dependencies:
- is-path-inside "^2.1.0"
-
- is-path-inside@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2"
- integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==
- dependencies:
- path-is-inside "^1.0.2"
-
- is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
- integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
- dependencies:
- isobject "^3.0.1"
-
- is-regex@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
- integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
- dependencies:
- has "^1.0.1"
-
- is-resolvable@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
- integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
-
- is-stream@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
- integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
-
- is-svg@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
- integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==
- dependencies:
- html-comment-regex "^1.1.0"
-
- is-symbol@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
- integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
- dependencies:
- has-symbols "^1.0.0"
-
- is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
- integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
-
- is-wsl@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
- integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
-
- isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
- integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-
- isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
- integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
-
- isobject@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
- integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
- dependencies:
- isarray "1.0.0"
-
- isobject@^3.0.0, isobject@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
- integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-
- js-levenshtein@^1.1.3:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
- integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
-
- "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
- integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-
- js-tokens@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
- integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
-
- js-yaml@^3.13.1, js-yaml@^3.9.0:
- version "3.13.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
- integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
- dependencies:
- argparse "^1.0.7"
- esprima "^4.0.0"
-
- jsesc@^2.5.1:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
- integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
-
- jsesc@~0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
- integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
-
- json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
- integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
-
- json-schema-traverse@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
- integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-
- json3@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
- integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=
-
- json5@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
- integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
- dependencies:
- minimist "^1.2.0"
-
- json5@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
- integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==
- dependencies:
- minimist "^1.2.0"
-
- jsonfile@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
- integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
- optionalDependencies:
- graceful-fs "^4.1.6"
-
- killable@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
- integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==
-
- kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
- integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
- dependencies:
- is-buffer "^1.1.5"
-
- kind-of@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
- integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
- dependencies:
- is-buffer "^1.1.5"
-
- kind-of@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
- integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
-
- kind-of@^6.0.0, kind-of@^6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
- integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
-
- laravel-mix@^4.0.15:
- version "4.0.15"
- resolved "https://registry.yarnpkg.com/laravel-mix/-/laravel-mix-4.0.15.tgz#b8f1e07770d72b3206a6726cdb14142ae0ea5d50"
- integrity sha512-i1o1HLeBkM/QVe4OhW+aBy0xcQuGq7moQadgSV4kcwiHYjbfpcb1FpcDZByU2HKkkPtwK5uy+O77nVQe24wGPw==
- dependencies:
- "@babel/core" "^7.2.0"
- "@babel/plugin-proposal-object-rest-spread" "^7.2.0"
- "@babel/plugin-transform-runtime" "^7.2.0"
- "@babel/preset-env" "^7.2.0"
- "@babel/runtime" "^7.2.0"
- autoprefixer "^9.4.2"
- babel-loader "^8.0.4"
- babel-merge "^2.0.1"
- chokidar "^2.0.3"
- clean-css "^4.1.3"
- concatenate "0.0.2"
- css-loader "^1.0.1"
- dotenv "^6.2.0"
- dotenv-expand "^4.2.0"
- extract-text-webpack-plugin v4.0.0-beta.0
- file-loader "^2.0.0"
- friendly-errors-webpack-plugin "^1.6.1"
- fs-extra "^7.0.1"
- glob "^7.1.2"
- html-loader "^0.5.5"
- imagemin "^6.0.0"
- img-loader "^3.0.0"
- lodash "^4.17.5"
- md5 "^2.2.1"
- optimize-css-assets-webpack-plugin "^5.0.1"
- postcss-loader "^3.0.0"
- style-loader "^0.23.1"
- terser "^3.11.0"
- terser-webpack-plugin "^1.1.0"
- vue-loader "^15.4.2"
- webpack "^4.27.1"
- webpack-cli "^3.1.2"
- webpack-dev-server "^3.1.14"
- webpack-merge "^4.1.0"
- webpack-notifier "^1.5.1"
- yargs "^12.0.5"
-
- last-call-webpack-plugin@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555"
- integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==
- dependencies:
- lodash "^4.17.5"
- webpack-sources "^1.1.0"
-
- lcid@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
- integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==
- dependencies:
- invert-kv "^2.0.0"
-
- loader-runner@^2.3.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
- integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
-
- loader-utils@^1.0.2, loader-utils@^1.1.0:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
- integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
- dependencies:
- big.js "^5.2.2"
- emojis-list "^2.0.0"
- json5 "^1.0.1"
-
- locate-path@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
- integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
- dependencies:
- p-locate "^3.0.0"
- path-exists "^3.0.0"
-
- lodash.memoize@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
- integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
-
- lodash.toarray@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561"
- integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE=
-
- lodash.uniq@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
- integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-
- lodash@^4.17.11, lodash@^4.17.5:
- version "4.17.11"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
- integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
-
- loglevel@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
- integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=
-
- loose-envify@^1.0.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
- integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
- dependencies:
- js-tokens "^3.0.0 || ^4.0.0"
-
- lower-case@^1.1.1:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
- integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
-
- lru-cache@^4.1.2:
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
- integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
- dependencies:
- pseudomap "^1.0.2"
- yallist "^2.1.2"
-
- lru-cache@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
- integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
- dependencies:
- yallist "^3.0.2"
-
- make-dir@^1.0.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
- integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
- dependencies:
- pify "^3.0.0"
-
- make-dir@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
- integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
- dependencies:
- pify "^4.0.1"
- semver "^5.6.0"
-
- mamacro@^0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4"
- integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==
-
- map-age-cleaner@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
- integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
- dependencies:
- p-defer "^1.0.0"
-
- map-cache@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
- integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
-
- map-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
- integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
- dependencies:
- object-visit "^1.0.0"
-
- md5.js@^1.3.4:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
- integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
- dependencies:
- hash-base "^3.0.0"
- inherits "^2.0.1"
- safe-buffer "^5.1.2"
-
- md5@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9"
- integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=
- dependencies:
- charenc "~0.0.1"
- crypt "~0.0.1"
- is-buffer "~1.1.1"
-
- mdn-data@~1.1.0:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01"
- integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==
-
- media-typer@0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
- integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
-
- mem@^4.0.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
- integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
- dependencies:
- map-age-cleaner "^0.1.1"
- mimic-fn "^2.0.0"
- p-is-promise "^2.0.0"
-
- memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
- integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
- dependencies:
- errno "^0.1.3"
- readable-stream "^2.0.1"
-
- merge-descriptors@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
- integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
-
- merge-source-map@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646"
- integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==
- dependencies:
- source-map "^0.6.1"
-
- merge2@^1.2.3:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5"
- integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==
-
- methods@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
- integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
-
- micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8:
- version "3.1.10"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
- integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
- dependencies:
- 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@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
- integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
- dependencies:
- bn.js "^4.0.0"
- brorand "^1.0.1"
-
- mime-db@1.40.0, "mime-db@>= 1.40.0 < 2":
- version "1.40.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
- integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
-
- mime-types@~2.1.17, mime-types@~2.1.24:
- version "2.1.24"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
- integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
- dependencies:
- mime-db "1.40.0"
-
- mime@1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
- integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==
-
- mime@^2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.2.tgz#ce5229a5e99ffc313abac806b482c10e7ba6ac78"
- integrity sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg==
-
- mimic-fn@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
- integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-
- minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
- integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-
- minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
- integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-
- minimatch@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
- dependencies:
- brace-expansion "^1.1.7"
-
- minimist@0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
- integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
-
- minimist@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
- integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
-
- minipass@^2.2.1, minipass@^2.3.4:
- version "2.3.5"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
- integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
- dependencies:
- safe-buffer "^5.1.2"
- yallist "^3.0.0"
-
- minizlib@^1.1.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
- integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
- dependencies:
- minipass "^2.2.1"
-
- mississippi@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
- integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
- dependencies:
- 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@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
- integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
- dependencies:
- for-in "^1.0.2"
- is-extendable "^1.0.1"
-
- mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
- integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
- dependencies:
- minimist "0.0.8"
-
- move-concurrently@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
- integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
- dependencies:
- 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@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
- integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-
- ms@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
- integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
-
- multicast-dns-service-types@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
- integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=
-
- multicast-dns@^6.0.1:
- version "6.2.3"
- resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
- integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
- dependencies:
- dns-packet "^1.3.1"
- thunky "^1.0.2"
-
- nan@^2.12.1:
- version "2.13.2"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7"
- integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==
-
- nanomatch@^1.2.9:
- version "1.2.13"
- resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
- integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
- dependencies:
- 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"
-
- needle@^2.2.1:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
- integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
- dependencies:
- debug "^3.2.6"
- iconv-lite "^0.4.4"
- sax "^1.2.4"
-
- negotiator@0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
- integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-
- neo-async@^2.5.0:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
- integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
-
- nice-try@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
- integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-
- no-case@^2.2.0:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
- integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==
- dependencies:
- lower-case "^1.1.1"
-
- node-emoji@^1.8.1:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da"
- integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==
- dependencies:
- lodash.toarray "^4.4.0"
-
- node-forge@0.7.5:
- version "0.7.5"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df"
- integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==
-
- node-libs-browser@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.0.tgz#c72f60d9d46de08a940dedbb25f3ffa2f9bbaa77"
- integrity sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==
- dependencies:
- 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.0"
- 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 "0.0.4"
-
- node-notifier@^5.1.2:
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a"
- integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==
- dependencies:
- growly "^1.3.0"
- is-wsl "^1.1.0"
- semver "^5.5.0"
- shellwords "^0.1.1"
- which "^1.3.0"
-
- node-pre-gyp@^0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
- integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
- dependencies:
- 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"
-
- node-releases@^1.1.19:
- version "1.1.19"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.19.tgz#c492d1e381fea0350b338b646c27867e88e91b3d"
- integrity sha512-SH/B4WwovHbulIALsQllAVwqZZD1kPmKCqrhGfR29dXjLAVZMHvBjD3S6nL9D/J9QkmZ1R92/0wCMDKXUUvyyA==
- dependencies:
- semver "^5.3.0"
-
- nopt@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
- integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
- dependencies:
- abbrev "1"
- osenv "^0.1.4"
-
- normalize-path@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
- integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
- dependencies:
- remove-trailing-separator "^1.0.1"
-
- normalize-path@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
- integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-
- normalize-range@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
- integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
-
- normalize-url@^3.0.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
- integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
-
- normalize.css@^8.0.1:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3"
- integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==
-
- npm-bundled@^1.0.1:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
- integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
-
- npm-packlist@^1.1.6:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc"
- integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==
- dependencies:
- ignore-walk "^3.0.1"
- npm-bundled "^1.0.1"
-
- npm-run-path@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
- integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
- dependencies:
- path-key "^2.0.0"
-
- npmlog@^4.0.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
- integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
- dependencies:
- are-we-there-yet "~1.1.2"
- console-control-strings "~1.1.0"
- gauge "~2.7.3"
- set-blocking "~2.0.0"
-
- nth-check@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
- integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
- dependencies:
- boolbase "~1.0.0"
-
- num2fraction@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
- integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
-
- number-is-nan@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
- integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-
- object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
- integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-
- object-copy@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
- integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
- dependencies:
- copy-descriptor "^0.1.0"
- define-property "^0.2.5"
- kind-of "^3.0.3"
-
- object-keys@^1.0.12:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
- object-visit@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
- integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
- dependencies:
- isobject "^3.0.0"
-
- object.getownpropertydescriptors@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
- integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=
- dependencies:
- define-properties "^1.1.2"
- es-abstract "^1.5.1"
-
- object.omit@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-3.0.0.tgz#0e3edc2fce2ba54df5577ff529f6d97bd8a522af"
- integrity sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==
- dependencies:
- is-extendable "^1.0.0"
-
- object.pick@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
- integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
- dependencies:
- isobject "^3.0.1"
-
- object.values@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
- integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.12.0"
- function-bind "^1.1.1"
- has "^1.0.3"
-
- obuf@^1.0.0, obuf@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
- integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
-
- on-finished@~2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
- integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
- dependencies:
- ee-first "1.1.1"
-
- on-headers@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
- integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
-
- once@^1.3.0, once@^1.3.1, once@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
- dependencies:
- wrappy "1"
-
- opn@^5.5.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc"
- integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==
- dependencies:
- is-wsl "^1.1.0"
-
- optimize-css-assets-webpack-plugin@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159"
- integrity sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A==
- dependencies:
- cssnano "^4.1.0"
- last-call-webpack-plugin "^3.0.0"
-
- original@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
- integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==
- dependencies:
- url-parse "^1.4.3"
-
- os-browserify@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
- integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
-
- os-homedir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
- integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
-
- os-locale@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
- integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
- dependencies:
- execa "^1.0.0"
- lcid "^2.0.0"
- mem "^4.0.0"
-
- os-tmpdir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
- integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
-
- osenv@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
- integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
- dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.0"
-
- p-defer@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
- integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
-
- p-finally@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
- integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
-
- p-is-promise@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
- integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
-
- p-limit@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2"
- integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==
- dependencies:
- p-try "^2.0.0"
-
- p-locate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
- integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
- dependencies:
- p-limit "^2.0.0"
-
- p-map@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
- integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
-
- p-pipe@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9"
- integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k=
-
- p-try@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
- integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-
- pako@~1.0.5:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
- integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==
-
- parallel-transform@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
- integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=
- dependencies:
- cyclist "~0.2.2"
- inherits "^2.0.3"
- readable-stream "^2.1.5"
-
- param-case@2.1.x:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
- integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc=
- dependencies:
- no-case "^2.2.0"
-
- parse-asn1@^5.0.0:
- version "5.1.4"
- resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
- integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==
- dependencies:
- 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@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
- integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
- dependencies:
- error-ex "^1.3.1"
- json-parse-better-errors "^1.0.1"
-
- parse-passwd@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
- integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
-
- parseurl@~1.3.2:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
- integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
-
- pascalcase@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
- integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
-
- path-browserify@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
- integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=
-
- path-dirname@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
- integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
-
- path-exists@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
- integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
-
- path-is-absolute@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
- integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-
- path-is-inside@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
- integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
-
- path-key@^2.0.0, path-key@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
- integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
-
- path-parse@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
- integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
-
- path-to-regexp@0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
- integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
-
- path-type@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
- integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
- dependencies:
- pify "^3.0.0"
-
- pbkdf2@^3.0.3:
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6"
- integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==
- dependencies:
- create-hash "^1.1.2"
- create-hmac "^1.1.4"
- ripemd160 "^2.0.1"
- safe-buffer "^5.0.1"
- sha.js "^2.4.8"
-
- pify@^2.0.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
- integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
-
- pify@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
- integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
-
- pify@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
- integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
-
- pinkie-promise@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
- integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
- dependencies:
- pinkie "^2.0.0"
-
- pinkie@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
- integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
-
- pkg-dir@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
- integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
- dependencies:
- find-up "^3.0.0"
-
- portfinder@^1.0.20:
- version "1.0.20"
- resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a"
- integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==
- dependencies:
- async "^1.5.2"
- debug "^2.2.0"
- mkdirp "0.5.x"
-
- posix-character-classes@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
- integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
-
- postcss-calc@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436"
- integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==
- dependencies:
- 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@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
- integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
- dependencies:
- 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@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
- integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
- dependencies:
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
- postcss-discard-comments@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
- integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
- dependencies:
- postcss "^7.0.0"
-
- postcss-discard-duplicates@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
- integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
- dependencies:
- postcss "^7.0.0"
-
- postcss-discard-empty@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
- integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
- dependencies:
- postcss "^7.0.0"
-
- postcss-discard-overridden@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
- integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
- dependencies:
- postcss "^7.0.0"
-
- postcss-functions@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-functions/-/postcss-functions-3.0.0.tgz#0e94d01444700a481de20de4d55fb2640564250e"
- integrity sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4=
- dependencies:
- glob "^7.1.2"
- object-assign "^4.1.1"
- postcss "^6.0.9"
- postcss-value-parser "^3.3.0"
-
- postcss-js@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-2.0.1.tgz#4154e906ff410930afab63a24210be1b831e89a9"
- integrity sha512-8XQGohCbj6+kq8e3w6WlexkGaSjb5S8zoXnH49eB8JC6+qN2kQW+ib6fTjRgCpRRN9eeFOhMlD0NDjThW1DCBg==
- dependencies:
- camelcase-css "^2.0.1"
- postcss "^7.0.14"
-
- postcss-load-config@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484"
- integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==
- dependencies:
- cosmiconfig "^4.0.0"
- import-cwd "^2.0.0"
-
- postcss-loader@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d"
- integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==
- dependencies:
- loader-utils "^1.1.0"
- postcss "^7.0.0"
- postcss-load-config "^2.0.0"
- schema-utils "^1.0.0"
-
- postcss-merge-longhand@^4.0.11:
- version "4.0.11"
- resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
- integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
- dependencies:
- css-color-names "0.0.4"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
- stylehacks "^4.0.0"
-
- postcss-merge-rules@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
- integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
- dependencies:
- 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"
-
- postcss-minify-font-values@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
- integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
- dependencies:
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
- postcss-minify-gradients@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
- integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
- dependencies:
- 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@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
- integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
- dependencies:
- 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@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
- integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
- dependencies:
- alphanum-sort "^1.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-selector-parser "^3.0.0"
-
- postcss-modules-extract-imports@^1.2.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a"
- integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==
- dependencies:
- postcss "^6.0.1"
-
- postcss-modules-local-by-default@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
- integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=
- dependencies:
- css-selector-tokenizer "^0.7.0"
- postcss "^6.0.1"
-
- postcss-modules-scope@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
- integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A=
- dependencies:
- css-selector-tokenizer "^0.7.0"
- postcss "^6.0.1"
-
- postcss-modules-values@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
- integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=
- dependencies:
- icss-replace-symbols "^1.1.0"
- postcss "^6.0.1"
-
- postcss-nested@^4.1.1:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-4.1.2.tgz#8e0570f736bfb4be5136e31901bf2380b819a561"
- integrity sha512-9bQFr2TezohU3KRSu9f6sfecXmf/x6RXDedl8CHF6fyuyVW7UqgNMRdWMHZQWuFY6Xqs2NYk+Fj4Z4vSOf7PQg==
- dependencies:
- postcss "^7.0.14"
- postcss-selector-parser "^5.0.0"
-
- postcss-normalize-charset@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
- integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
- dependencies:
- postcss "^7.0.0"
-
- postcss-normalize-display-values@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
- integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
- dependencies:
- cssnano-util-get-match "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
- postcss-normalize-positions@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
- integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
- dependencies:
- 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@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
- integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
- dependencies:
- 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@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
- integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
- dependencies:
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
- postcss-normalize-timing-functions@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
- integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
- dependencies:
- cssnano-util-get-match "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
- postcss-normalize-unicode@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
- integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
- dependencies:
- browserslist "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
- postcss-normalize-url@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
- integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
- dependencies:
- is-absolute-url "^2.0.0"
- normalize-url "^3.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
- postcss-normalize-whitespace@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
- integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
- dependencies:
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
- postcss-ordered-values@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
- integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
- dependencies:
- cssnano-util-get-arguments "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
- postcss-reduce-initial@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
- integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
- dependencies:
- browserslist "^4.0.0"
- caniuse-api "^3.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
-
- postcss-reduce-transforms@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
- integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
- dependencies:
- cssnano-util-get-match "^4.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
- postcss-selector-parser@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865"
- integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=
- dependencies:
- dot-prop "^4.1.1"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
- postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.4:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
- integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==
- dependencies:
- cssesc "^2.0.0"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
- postcss-selector-parser@^6.0.0:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
- integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==
- dependencies:
- cssesc "^3.0.0"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
- postcss-svgo@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258"
- integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==
- dependencies:
- is-svg "^3.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
- svgo "^1.0.0"
-
- postcss-unique-selectors@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
- integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
- dependencies:
- alphanum-sort "^1.0.0"
- postcss "^7.0.0"
- uniqs "^2.0.0"
-
- postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
- integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
-
- postcss@^6.0.1, postcss@^6.0.23, postcss@^6.0.9:
- version "6.0.23"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
- integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==
- dependencies:
- chalk "^2.4.1"
- source-map "^0.6.1"
- supports-color "^5.4.0"
-
- postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.14, postcss@^7.0.5:
- version "7.0.16"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2"
- integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA==
- dependencies:
- chalk "^2.4.2"
- source-map "^0.6.1"
- supports-color "^6.1.0"
-
- prettier@1.16.3:
- version "1.16.3"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d"
- integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==
-
- pretty-hrtime@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
- integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=
-
- private@^0.1.6, private@~0.1.5:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
- integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
-
- process-nextick-args@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
- integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
-
- process@^0.11.10:
- version "0.11.10"
- resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
- integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
-
- promise-inflight@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
- integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
-
- proxy-addr@~2.0.4:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34"
- integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==
- dependencies:
- forwarded "~0.1.2"
- ipaddr.js "1.9.0"
-
- prr@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
- integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
-
- pseudomap@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
- integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
-
- public-encrypt@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
- integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
- dependencies:
- 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@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
- integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.1"
-
- pump@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
- integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.1"
-
- pumpify@^1.3.3:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
- integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
- dependencies:
- duplexify "^3.6.0"
- inherits "^2.0.3"
- pump "^2.0.0"
-
- punycode@1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
- integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
-
- punycode@^1.2.4:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
- integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
-
- punycode@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
- integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-
- q@^1.1.2:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
- integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
-
- qs@6.5.2:
- version "6.5.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
- integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
-
- querystring-es3@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
- integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
-
- querystring@0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
- integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
-
- querystringify@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
- integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==
-
- randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
- integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
- dependencies:
- safe-buffer "^5.1.0"
-
- randomfill@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
- integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
- dependencies:
- randombytes "^2.0.5"
- safe-buffer "^5.1.0"
-
- range-parser@^1.2.1, range-parser@~1.2.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
- integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-
- raw-body@2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
- integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==
- dependencies:
- bytes "3.0.0"
- http-errors "1.6.3"
- iconv-lite "0.4.23"
- unpipe "1.0.0"
-
- rc@^1.2.7:
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
- integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
- dependencies:
- deep-extend "^0.6.0"
- ini "~1.3.0"
- minimist "^1.2.0"
- strip-json-comments "~2.0.1"
-
- "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
- version "2.3.6"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
- integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
- dependencies:
- 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"
-
- readable-stream@^3.0.6:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.3.0.tgz#cb8011aad002eb717bf040291feba8569c986fb9"
- integrity sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==
- dependencies:
- inherits "^2.0.3"
- string_decoder "^1.1.1"
- util-deprecate "^1.0.1"
-
- readdirp@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
- integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
- dependencies:
- graceful-fs "^4.1.11"
- micromatch "^3.1.10"
- readable-stream "^2.0.2"
-
- recast@~0.11.12:
- version "0.11.23"
- resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3"
- integrity sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=
- dependencies:
- ast-types "0.9.6"
- esprima "~3.1.0"
- private "~0.1.5"
- source-map "~0.5.0"
-
- regenerate-unicode-properties@^8.0.2:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e"
- integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==
- dependencies:
- regenerate "^1.4.0"
-
- regenerate@^1.2.1, regenerate@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
- integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
-
- regenerator-runtime@^0.13.2:
- version "0.13.2"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447"
- integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==
-
- regenerator-transform@^0.13.4:
- version "0.13.4"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb"
- integrity sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==
- dependencies:
- private "^0.1.6"
-
- regex-not@^1.0.0, regex-not@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
- integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
- dependencies:
- extend-shallow "^3.0.2"
- safe-regex "^1.1.0"
-
- regexp-tree@^0.1.0:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.6.tgz#84900fa12fdf428a2ac25f04300382a7c0148479"
- integrity sha512-LFrA98Dw/heXqDojz7qKFdygZmFoiVlvE1Zp7Cq2cvF+ZA+03Gmhy0k0PQlsC1jvHPiTUSs+pDHEuSWv6+6D7w==
-
- regexpu-core@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
- integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=
- dependencies:
- regenerate "^1.2.1"
- regjsgen "^0.2.0"
- regjsparser "^0.1.4"
-
- regexpu-core@^4.5.4:
- version "4.5.4"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae"
- integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==
- dependencies:
- regenerate "^1.4.0"
- regenerate-unicode-properties "^8.0.2"
- regjsgen "^0.5.0"
- regjsparser "^0.6.0"
- unicode-match-property-ecmascript "^1.0.4"
- unicode-match-property-value-ecmascript "^1.1.0"
-
- regjsgen@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
- integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
-
- regjsgen@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd"
- integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==
-
- regjsparser@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
- integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=
- dependencies:
- jsesc "~0.5.0"
-
- regjsparser@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c"
- integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==
- dependencies:
- jsesc "~0.5.0"
-
- relateurl@0.2.x:
- version "0.2.7"
- resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
- integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
-
- remove-trailing-separator@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
- integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
-
- repeat-element@^1.1.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
- integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
-
- repeat-string@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
- integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
-
- replace-ext@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
- integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
-
- require-directory@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
- integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
-
- require-from-string@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
- integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
-
- require-main-filename@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
- integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
-
- requires-port@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
- integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
-
- resolve-cwd@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
- integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
- dependencies:
- resolve-from "^3.0.0"
-
- resolve-dir@^1.0.0, resolve-dir@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
- integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
- dependencies:
- expand-tilde "^2.0.0"
- global-modules "^1.0.0"
-
- resolve-from@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
- integrity sha1-six699nWiBvItuZTM17rywoYh0g=
-
- resolve-url@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
- integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-
- resolve@^1.3.2, resolve@^1.8.1:
- version "1.10.1"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18"
- integrity sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==
- dependencies:
- path-parse "^1.0.6"
-
- ret@~0.1.10:
- version "0.1.15"
- resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
- integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-
- rgb-regex@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
- integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
-
- rgba-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
- integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
-
- rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3:
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
- integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
- dependencies:
- glob "^7.1.3"
-
- ripemd160@^2.0.0, ripemd160@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
- integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
- dependencies:
- hash-base "^3.0.0"
- inherits "^2.0.1"
-
- run-queue@^1.0.0, run-queue@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
- integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
- dependencies:
- aproba "^1.1.1"
-
- safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
- integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
- safe-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
- integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
- dependencies:
- ret "~0.1.10"
-
- "safer-buffer@>= 2.1.2 < 3":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
- integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-
- sax@^1.2.4, sax@~1.2.4:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
- integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
-
- schema-utils@^0.4.5:
- version "0.4.7"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
- integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==
- dependencies:
- ajv "^6.1.0"
- ajv-keywords "^3.1.0"
-
- schema-utils@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
- integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
- dependencies:
- ajv "^6.1.0"
- ajv-errors "^1.0.0"
- ajv-keywords "^3.1.0"
-
- select-hose@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
- integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
-
- selfsigned@^1.10.4:
- version "1.10.4"
- resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd"
- integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==
- dependencies:
- node-forge "0.7.5"
-
- semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
- integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
-
- semver@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65"
- integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==
-
- send@0.16.2:
- version "0.16.2"
- resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
- integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==
- dependencies:
- 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.6.2"
- mime "1.4.1"
- ms "2.0.0"
- on-finished "~2.3.0"
- range-parser "~1.2.0"
- statuses "~1.4.0"
-
- serialize-javascript@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65"
- integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==
-
- serve-index@^1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
- integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=
- dependencies:
- 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"
-
- serve-static@1.13.2:
- version "1.13.2"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
- integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==
- dependencies:
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- parseurl "~1.3.2"
- send "0.16.2"
-
- set-blocking@^2.0.0, set-blocking@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
- integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
-
- set-value@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
- integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE=
- dependencies:
- extend-shallow "^2.0.1"
- is-extendable "^0.1.1"
- is-plain-object "^2.0.1"
- to-object-path "^0.3.0"
-
- set-value@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
- integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==
- dependencies:
- extend-shallow "^2.0.1"
- is-extendable "^0.1.1"
- is-plain-object "^2.0.3"
- split-string "^3.0.1"
-
- setimmediate@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
- integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
-
- setprototypeof@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
- integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
-
- sha.js@^2.4.0, sha.js@^2.4.8:
- version "2.4.11"
- resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
- integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
- shebang-command@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
- integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
- dependencies:
- shebang-regex "^1.0.0"
-
- shebang-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
- integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
-
- shellwords@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
- integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
-
- signal-exit@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
- integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
-
- simple-swizzle@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
- integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
- dependencies:
- is-arrayish "^0.3.1"
-
- slash@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
- integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
-
- snapdragon-node@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
- integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
- dependencies:
- define-property "^1.0.0"
- isobject "^3.0.0"
- snapdragon-util "^3.0.1"
-
- snapdragon-util@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
- integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
- dependencies:
- kind-of "^3.2.0"
-
- snapdragon@^0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
- integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
- dependencies:
- 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"
-
- sockjs-client@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177"
- integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==
- dependencies:
- 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"
-
- sockjs@0.3.19:
- version "0.3.19"
- resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
- integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==
- dependencies:
- faye-websocket "^0.10.0"
- uuid "^3.0.1"
-
- source-list-map@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
- integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
-
- source-map-resolve@^0.5.0:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
- integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
- dependencies:
- 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@~0.5.10:
- version "0.5.12"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599"
- integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==
- dependencies:
- buffer-from "^1.0.0"
- source-map "^0.6.0"
-
- source-map-url@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
- integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
-
- source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
- integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-
- source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
- integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
- spdy-transport@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
- integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
- dependencies:
- 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"
-
- spdy@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52"
- integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==
- dependencies:
- debug "^4.1.0"
- handle-thing "^2.0.0"
- http-deceiver "^1.2.7"
- select-hose "^2.0.0"
- spdy-transport "^3.0.0"
-
- split-string@^3.0.1, split-string@^3.0.2:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
- integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
- dependencies:
- extend-shallow "^3.0.0"
-
- sprintf-js@~1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
- integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-
- ssri@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
- integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
- dependencies:
- figgy-pudding "^3.5.1"
-
- stable@^0.1.8:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
- integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
-
- stackframe@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b"
- integrity sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==
-
- static-extend@^0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
- integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
- dependencies:
- define-property "^0.2.5"
- object-copy "^0.1.0"
-
- "statuses@>= 1.4.0 < 2":
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
- integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
-
- statuses@~1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
- integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==
-
- stream-browserify@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
- integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
- dependencies:
- inherits "~2.0.1"
- readable-stream "^2.0.2"
-
- stream-each@^1.1.0:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
- integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
- dependencies:
- end-of-stream "^1.1.0"
- stream-shift "^1.0.0"
-
- stream-http@^2.7.2:
- version "2.8.3"
- resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
- integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
- dependencies:
- 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@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
- integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
-
- string-width@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
-
- "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
- integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
- dependencies:
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^4.0.0"
-
- string_decoder@^1.0.0, string_decoder@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
- integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==
- dependencies:
- safe-buffer "~5.1.0"
-
- string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
-
- strip-ansi@^3.0.0, strip-ansi@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
- integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
- dependencies:
- ansi-regex "^2.0.0"
-
- strip-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
- integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
- dependencies:
- ansi-regex "^3.0.0"
-
- strip-eof@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
- integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
-
- strip-json-comments@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
- integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
-
- style-loader@^0.23.1:
- version "0.23.1"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925"
- integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==
- dependencies:
- loader-utils "^1.1.0"
- schema-utils "^1.0.0"
-
- stylehacks@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
- integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
- dependencies:
- browserslist "^4.0.0"
- postcss "^7.0.0"
- postcss-selector-parser "^3.0.0"
-
- supports-color@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
- integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-
- supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
- dependencies:
- has-flag "^3.0.0"
-
- supports-color@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
- integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
- dependencies:
- has-flag "^3.0.0"
-
- svgo@^1.0.0:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.2.tgz#0253d34eccf2aed4ad4f283e11ee75198f9d7316"
- integrity sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA==
- dependencies:
- 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.28"
- css-url-regex "^1.1.0"
- csso "^3.5.1"
- 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"
-
- tailwindcss@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-1.0.1.tgz#3116e989c64540f1c11214e8b4c08b6aea548be5"
- integrity sha512-tNyvmizhIY9ydXX8m84S/69851QROZzbH6RB/Q4w0K27OssupGcyXeD8zumzb9Yuzq6PifBH2A6ehjuBPklnYA==
- dependencies:
- autoprefixer "^9.4.5"
- bytes "^3.0.0"
- chalk "^2.4.1"
- fs-extra "^8.0.0"
- lodash "^4.17.11"
- node-emoji "^1.8.1"
- normalize.css "^8.0.1"
- postcss "^7.0.11"
- postcss-functions "^3.0.0"
- postcss-js "^2.0.0"
- postcss-nested "^4.1.1"
- postcss-selector-parser "^6.0.0"
- pretty-hrtime "^1.0.3"
-
- tapable@^1.0.0, tapable@^1.1.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
- integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
-
- tar@^4:
- version "4.4.8"
- resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d"
- integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==
- dependencies:
- chownr "^1.1.1"
- fs-minipass "^1.2.5"
- minipass "^2.3.4"
- minizlib "^1.1.1"
- mkdirp "^0.5.0"
- safe-buffer "^5.1.2"
- yallist "^3.0.2"
-
- terser-webpack-plugin@^1.1.0:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.4.tgz#56f87540c28dd5265753431009388f473b5abba3"
- integrity sha512-64IiILNQlACWZLzFlpzNaG0bpQ4ytaB7fwOsbpsdIV70AfLUmIGGeuKL0YV2WmtcrURjE2aOvHD4/lrFV3Rg+Q==
- dependencies:
- cacache "^11.3.2"
- find-cache-dir "^2.0.0"
- is-wsl "^1.1.0"
- schema-utils "^1.0.0"
- serialize-javascript "^1.7.0"
- source-map "^0.6.1"
- terser "^3.17.0"
- webpack-sources "^1.3.0"
- worker-farm "^1.7.0"
-
- terser@^3.11.0, terser@^3.17.0:
- version "3.17.0"
- resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2"
- integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==
- dependencies:
- commander "^2.19.0"
- source-map "~0.6.1"
- source-map-support "~0.5.10"
-
- through2@^2.0.0:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
- integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
- dependencies:
- readable-stream "~2.3.6"
- xtend "~4.0.1"
-
- through@~2.3.6:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
- integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
-
- thunky@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826"
- integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==
-
- timers-browserify@^2.0.4:
- version "2.0.10"
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae"
- integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==
- dependencies:
- setimmediate "^1.0.4"
-
- timsort@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
- integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
-
- to-arraybuffer@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
- integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
-
- to-fast-properties@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
- integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
-
- to-object-path@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
- integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
- dependencies:
- kind-of "^3.0.2"
-
- to-regex-range@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
- integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
- dependencies:
- is-number "^3.0.0"
- repeat-string "^1.6.1"
-
- to-regex@^3.0.1, to-regex@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
- integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
- dependencies:
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- regex-not "^1.0.2"
- safe-regex "^1.1.0"
-
- trim-right@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
- integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
-
- tslib@^1.9.0:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
- integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
-
- tty-browserify@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
- integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
-
- type-is@~1.6.16:
- version "1.6.18"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
- integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
- dependencies:
- media-typer "0.3.0"
- mime-types "~2.1.24"
-
- typedarray@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
- integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-
- uglify-js@3.4.x:
- version "3.4.10"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f"
- integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==
- dependencies:
- commander "~2.19.0"
- source-map "~0.6.1"
-
- unicode-canonical-property-names-ecmascript@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
- integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
-
- unicode-match-property-ecmascript@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
- integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
- dependencies:
- unicode-canonical-property-names-ecmascript "^1.0.4"
- unicode-property-aliases-ecmascript "^1.0.4"
-
- unicode-match-property-value-ecmascript@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277"
- integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==
-
- unicode-property-aliases-ecmascript@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57"
- integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==
-
- union-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
- integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=
- dependencies:
- arr-union "^3.1.0"
- get-value "^2.0.6"
- is-extendable "^0.1.1"
- set-value "^0.4.3"
-
- uniq@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
- integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
-
- uniqs@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
- integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
-
- unique-filename@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
- integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
- dependencies:
- unique-slug "^2.0.0"
-
- unique-slug@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6"
- integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==
- dependencies:
- imurmurhash "^0.1.4"
-
- universalify@^0.1.0:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
- integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
-
- unpipe@1.0.0, unpipe@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
- integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
-
- unquote@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
- integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
-
- unset-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
- integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
- dependencies:
- has-value "^0.3.1"
- isobject "^3.0.0"
-
- upath@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
- integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
-
- upper-case@^1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
- integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=
-
- uri-js@^4.2.2:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
- integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
- dependencies:
- punycode "^2.1.0"
-
- urix@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
- integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
-
- url-parse@^1.4.3:
- version "1.4.7"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278"
- integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==
- dependencies:
- querystringify "^2.1.1"
- requires-port "^1.0.0"
-
- url@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
- integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
- dependencies:
- punycode "1.3.2"
- querystring "0.2.0"
-
- use@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
- integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
-
- util-deprecate@^1.0.1, util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-
- util.promisify@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
- integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
- dependencies:
- define-properties "^1.1.2"
- object.getownpropertydescriptors "^2.0.3"
-
- util@0.10.3:
- version "0.10.3"
- resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
- integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
- dependencies:
- inherits "2.0.1"
-
- util@^0.11.0:
- version "0.11.1"
- resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
- integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
- dependencies:
- inherits "2.0.3"
-
- utils-merge@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
- integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-
- uuid@^3.0.1, uuid@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
- integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
-
- v8-compile-cache@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
- integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==
-
- vary@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
- integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
-
- vendors@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0"
- integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==
-
- vm-browserify@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
- integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=
- dependencies:
- indexof "0.0.1"
-
- vue-hot-reload-api@^2.3.0:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf"
- integrity sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g==
-
- vue-loader@^15.4.2:
- version "15.7.0"
- resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.7.0.tgz#27275aa5a3ef4958c5379c006dd1436ad04b25b3"
- integrity sha512-x+NZ4RIthQOxcFclEcs8sXGEWqnZHodL2J9Vq+hUz+TDZzBaDIh1j3d9M2IUlTjtrHTZy4uMuRdTi8BGws7jLA==
- dependencies:
- "@vue/component-compiler-utils" "^2.5.1"
- hash-sum "^1.0.2"
- loader-utils "^1.1.0"
- vue-hot-reload-api "^2.3.0"
- vue-style-loader "^4.1.0"
-
- vue-style-loader@^4.1.0:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.2.tgz#dedf349806f25ceb4e64f3ad7c0a44fba735fcf8"
- integrity sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==
- dependencies:
- hash-sum "^1.0.2"
- loader-utils "^1.0.2"
-
- vue-template-compiler@^2.6.10:
- version "2.6.10"
- resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc"
- integrity sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==
- dependencies:
- de-indent "^1.0.2"
- he "^1.1.0"
-
- vue-template-es2015-compiler@^1.9.0:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
- integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
-
- watchpack@^1.5.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
- integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==
- dependencies:
- chokidar "^2.0.2"
- graceful-fs "^4.1.2"
- neo-async "^2.5.0"
-
- wbuf@^1.1.0, wbuf@^1.7.3:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
- integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
- dependencies:
- minimalistic-assert "^1.0.0"
-
- webpack-cli@^3.1.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.2.tgz#aed2437b0db0a7faa2ad28484e166a5360014a91"
- integrity sha512-FLkobnaJJ+03j5eplxlI0TUxhGCOdfewspIGuvDVtpOlrAuKMFC57K42Ukxqs1tn8947/PM6tP95gQc0DCzRYA==
- dependencies:
- chalk "^2.4.1"
- cross-spawn "^6.0.5"
- enhanced-resolve "^4.1.0"
- findup-sync "^2.0.0"
- global-modules "^1.0.0"
- import-local "^2.0.0"
- interpret "^1.1.0"
- loader-utils "^1.1.0"
- supports-color "^5.5.0"
- v8-compile-cache "^2.0.2"
- yargs "^12.0.5"
-
- webpack-dev-middleware@^3.6.2:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff"
- integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==
- dependencies:
- memory-fs "^0.4.1"
- mime "^2.4.2"
- range-parser "^1.2.1"
- webpack-log "^2.0.0"
-
- webpack-dev-server@^3.1.14:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.3.1.tgz#7046e49ded5c1255a82c5d942bcdda552b72a62d"
- integrity sha512-jY09LikOyGZrxVTXK0mgIq9y2IhCoJ05848dKZqX1gAGLU1YDqgpOT71+W53JH/wI4v6ky4hm+KvSyW14JEs5A==
- dependencies:
- ansi-html "0.0.7"
- bonjour "^3.5.0"
- chokidar "^2.1.5"
- compression "^1.7.4"
- connect-history-api-fallback "^1.6.0"
- debug "^4.1.1"
- del "^4.1.0"
- express "^4.16.4"
- html-entities "^1.2.1"
- http-proxy-middleware "^0.19.1"
- import-local "^2.0.0"
- internal-ip "^4.2.0"
- ip "^1.1.5"
- killable "^1.0.1"
- loglevel "^1.6.1"
- opn "^5.5.0"
- portfinder "^1.0.20"
- schema-utils "^1.0.0"
- selfsigned "^1.10.4"
- semver "^6.0.0"
- serve-index "^1.9.1"
- sockjs "0.3.19"
- sockjs-client "1.3.0"
- spdy "^4.0.0"
- strip-ansi "^3.0.1"
- supports-color "^6.1.0"
- url "^0.11.0"
- webpack-dev-middleware "^3.6.2"
- webpack-log "^2.0.0"
- yargs "12.0.5"
-
- webpack-log@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f"
- integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==
- dependencies:
- ansi-colors "^3.0.0"
- uuid "^3.3.2"
-
- webpack-merge@^4.1.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4"
- integrity sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==
- dependencies:
- lodash "^4.17.5"
-
- webpack-notifier@^1.5.1:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/webpack-notifier/-/webpack-notifier-1.7.0.tgz#4e03ea3ba1c0588d863935363f145d067815068a"
- integrity sha512-L3UKrl500xk0VDYKkwQxy5/BPhBWsZ2xHsAx2Qe3dVKYUEk9+y690RcNTMIUcVOK2fRgK7KK3PA4ccOq1h+fTg==
- dependencies:
- node-notifier "^5.1.2"
- object-assign "^4.1.0"
- strip-ansi "^3.0.1"
-
- webpack-sources@^1.1.0, webpack-sources@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85"
- integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==
- dependencies:
- source-list-map "^2.0.0"
- source-map "~0.6.1"
-
- webpack@^4.27.1:
- version "4.31.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.31.0.tgz#ae201d45f0571336e42d1c2b5c8ab56c4d3b0c63"
- integrity sha512-n6RVO3X0LbbipoE62akME9K/JI7qYrwwufs20VvgNNpqUoH4860KkaxJTbGq5bgkVZF9FqyyTG/0WPLH3PVNJA==
- dependencies:
- "@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.0.5"
- acorn-dynamic-import "^4.0.0"
- ajv "^6.1.0"
- ajv-keywords "^3.1.0"
- chrome-trace-event "^1.0.0"
- enhanced-resolve "^4.1.0"
- eslint-scope "^4.0.0"
- json-parse-better-errors "^1.0.2"
- loader-runner "^2.3.0"
- loader-utils "^1.1.0"
- memory-fs "~0.4.1"
- micromatch "^3.1.8"
- mkdirp "~0.5.0"
- neo-async "^2.5.0"
- node-libs-browser "^2.0.0"
- schema-utils "^1.0.0"
- tapable "^1.1.0"
- terser-webpack-plugin "^1.1.0"
- watchpack "^1.5.0"
- webpack-sources "^1.3.0"
-
- websocket-driver@>=0.5.1:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb"
- integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=
- dependencies:
- http-parser-js ">=0.4.0"
- websocket-extensions ">=0.1.1"
-
- websocket-extensions@>=0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
- integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==
-
- which-module@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
- integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-
- which@^1.2.14, which@^1.2.9, which@^1.3.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
- integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
- dependencies:
- isexe "^2.0.0"
-
- wide-align@^1.1.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
- integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
- dependencies:
- string-width "^1.0.2 || 2"
-
- worker-farm@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
- integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
- dependencies:
- errno "~0.1.7"
-
- wrap-ansi@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
- integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
- dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
-
- wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-
- xtend@^4.0.0, xtend@~4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
- integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
-
- "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
- integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
-
- yallist@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
- integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
-
- yallist@^3.0.0, yallist@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
- integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
-
- yargs-parser@^11.1.1:
- version "11.1.1"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
- integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==
- dependencies:
- camelcase "^5.0.0"
- decamelize "^1.2.0"
-
- yargs@12.0.5, yargs@^12.0.5:
- version "12.0.5"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
- integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==
- dependencies:
- 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"
diff --git a/yarn.lock b/yarn.lock
deleted file mode 100644
index e932145..0000000
--- a/yarn.lock
+++ /dev/null
@@ -1,6408 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@babel/code-frame@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
- integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==
- dependencies:
- "@babel/highlight" "^7.0.0"
-
-"@babel/core@^7.0.0-beta.49", "@babel/core@^7.2.0":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.4.tgz#84055750b05fcd50f9915a826b44fa347a825250"
- integrity sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- "@babel/generator" "^7.4.4"
- "@babel/helpers" "^7.4.4"
- "@babel/parser" "^7.4.4"
- "@babel/template" "^7.4.4"
- "@babel/traverse" "^7.4.4"
- "@babel/types" "^7.4.4"
- convert-source-map "^1.1.0"
- debug "^4.1.0"
- json5 "^2.1.0"
- lodash "^4.17.11"
- resolve "^1.3.2"
- semver "^5.4.1"
- source-map "^0.5.0"
-
-"@babel/generator@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041"
- integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==
- dependencies:
- "@babel/types" "^7.4.4"
- jsesc "^2.5.1"
- lodash "^4.17.11"
- source-map "^0.5.0"
- trim-right "^1.0.1"
-
-"@babel/helper-annotate-as-pure@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
- integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==
- dependencies:
- "@babel/types" "^7.0.0"
-
-"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f"
- integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==
- dependencies:
- "@babel/helper-explode-assignable-expression" "^7.1.0"
- "@babel/types" "^7.0.0"
-
-"@babel/helper-call-delegate@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43"
- integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==
- dependencies:
- "@babel/helper-hoist-variables" "^7.4.4"
- "@babel/traverse" "^7.4.4"
- "@babel/types" "^7.4.4"
-
-"@babel/helper-define-map@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a"
- integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==
- dependencies:
- "@babel/helper-function-name" "^7.1.0"
- "@babel/types" "^7.4.4"
- lodash "^4.17.11"
-
-"@babel/helper-explode-assignable-expression@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6"
- integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==
- dependencies:
- "@babel/traverse" "^7.1.0"
- "@babel/types" "^7.0.0"
-
-"@babel/helper-function-name@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53"
- integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==
- dependencies:
- "@babel/helper-get-function-arity" "^7.0.0"
- "@babel/template" "^7.1.0"
- "@babel/types" "^7.0.0"
-
-"@babel/helper-get-function-arity@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3"
- integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==
- dependencies:
- "@babel/types" "^7.0.0"
-
-"@babel/helper-hoist-variables@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a"
- integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==
- dependencies:
- "@babel/types" "^7.4.4"
-
-"@babel/helper-member-expression-to-functions@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f"
- integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==
- dependencies:
- "@babel/types" "^7.0.0"
-
-"@babel/helper-module-imports@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d"
- integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==
- dependencies:
- "@babel/types" "^7.0.0"
-
-"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8"
- integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==
- dependencies:
- "@babel/helper-module-imports" "^7.0.0"
- "@babel/helper-simple-access" "^7.1.0"
- "@babel/helper-split-export-declaration" "^7.4.4"
- "@babel/template" "^7.4.4"
- "@babel/types" "^7.4.4"
- lodash "^4.17.11"
-
-"@babel/helper-optimise-call-expression@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5"
- integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==
- dependencies:
- "@babel/types" "^7.0.0"
-
-"@babel/helper-plugin-utils@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250"
- integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==
-
-"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2"
- integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==
- dependencies:
- lodash "^4.17.11"
-
-"@babel/helper-remap-async-to-generator@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f"
- integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.0.0"
- "@babel/helper-wrap-function" "^7.1.0"
- "@babel/template" "^7.1.0"
- "@babel/traverse" "^7.1.0"
- "@babel/types" "^7.0.0"
-
-"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27"
- integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==
- dependencies:
- "@babel/helper-member-expression-to-functions" "^7.0.0"
- "@babel/helper-optimise-call-expression" "^7.0.0"
- "@babel/traverse" "^7.4.4"
- "@babel/types" "^7.4.4"
-
-"@babel/helper-simple-access@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c"
- integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==
- dependencies:
- "@babel/template" "^7.1.0"
- "@babel/types" "^7.0.0"
-
-"@babel/helper-split-export-declaration@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677"
- integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==
- dependencies:
- "@babel/types" "^7.4.4"
-
-"@babel/helper-wrap-function@^7.1.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa"
- integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==
- dependencies:
- "@babel/helper-function-name" "^7.1.0"
- "@babel/template" "^7.1.0"
- "@babel/traverse" "^7.1.0"
- "@babel/types" "^7.2.0"
-
-"@babel/helpers@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5"
- integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==
- dependencies:
- "@babel/template" "^7.4.4"
- "@babel/traverse" "^7.4.4"
- "@babel/types" "^7.4.4"
-
-"@babel/highlight@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
- integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==
- dependencies:
- chalk "^2.0.0"
- esutils "^2.0.2"
- js-tokens "^4.0.0"
-
-"@babel/parser@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6"
- integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==
-
-"@babel/plugin-proposal-async-generator-functions@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e"
- integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-remap-async-to-generator" "^7.1.0"
- "@babel/plugin-syntax-async-generators" "^7.2.0"
-
-"@babel/plugin-proposal-json-strings@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317"
- integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-json-strings" "^7.2.0"
-
-"@babel/plugin-proposal-object-rest-spread@^7.2.0", "@babel/plugin-proposal-object-rest-spread@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005"
- integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-object-rest-spread" "^7.2.0"
-
-"@babel/plugin-proposal-optional-catch-binding@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5"
- integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
-
-"@babel/plugin-proposal-unicode-property-regex@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78"
- integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-regex" "^7.4.4"
- regexpu-core "^4.5.4"
-
-"@babel/plugin-syntax-async-generators@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f"
- integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-syntax-json-strings@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470"
- integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-syntax-object-rest-spread@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e"
- integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-syntax-optional-catch-binding@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c"
- integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-arrow-functions@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550"
- integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-async-to-generator@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894"
- integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==
- dependencies:
- "@babel/helper-module-imports" "^7.0.0"
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-remap-async-to-generator" "^7.1.0"
-
-"@babel/plugin-transform-block-scoped-functions@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190"
- integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-block-scoping@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d"
- integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- lodash "^4.17.11"
-
-"@babel/plugin-transform-classes@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6"
- integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.0.0"
- "@babel/helper-define-map" "^7.4.4"
- "@babel/helper-function-name" "^7.1.0"
- "@babel/helper-optimise-call-expression" "^7.0.0"
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-replace-supers" "^7.4.4"
- "@babel/helper-split-export-declaration" "^7.4.4"
- globals "^11.1.0"
-
-"@babel/plugin-transform-computed-properties@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da"
- integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-destructuring@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f"
- integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-dotall-regex@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3"
- integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-regex" "^7.4.4"
- regexpu-core "^4.5.4"
-
-"@babel/plugin-transform-duplicate-keys@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3"
- integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-exponentiation-operator@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008"
- integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==
- dependencies:
- "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0"
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-for-of@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556"
- integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-function-name@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad"
- integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==
- dependencies:
- "@babel/helper-function-name" "^7.1.0"
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-literals@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1"
- integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-member-expression-literals@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d"
- integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-modules-amd@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6"
- integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==
- dependencies:
- "@babel/helper-module-transforms" "^7.1.0"
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-modules-commonjs@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e"
- integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==
- dependencies:
- "@babel/helper-module-transforms" "^7.4.4"
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-simple-access" "^7.1.0"
-
-"@babel/plugin-transform-modules-systemjs@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405"
- integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==
- dependencies:
- "@babel/helper-hoist-variables" "^7.4.4"
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-modules-umd@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae"
- integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==
- dependencies:
- "@babel/helper-module-transforms" "^7.1.0"
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-named-capturing-groups-regex@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz#5611d96d987dfc4a3a81c4383bb173361037d68d"
- integrity sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA==
- dependencies:
- regexp-tree "^0.1.0"
-
-"@babel/plugin-transform-new-target@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5"
- integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-object-super@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598"
- integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-replace-supers" "^7.1.0"
-
-"@babel/plugin-transform-parameters@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16"
- integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==
- dependencies:
- "@babel/helper-call-delegate" "^7.4.4"
- "@babel/helper-get-function-arity" "^7.0.0"
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-property-literals@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905"
- integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-regenerator@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.4.tgz#5b4da4df79391895fca9e28f99e87e22cfc02072"
- integrity sha512-Zz3w+pX1SI0KMIiqshFZkwnVGUhDZzpX2vtPzfJBKQQq8WsP/Xy9DNdELWivxcKOCX/Pywge4SiEaPaLtoDT4g==
- dependencies:
- regenerator-transform "^0.13.4"
-
-"@babel/plugin-transform-reserved-words@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634"
- integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-runtime@^7.2.0":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz#a50f5d16e9c3a4ac18a1a9f9803c107c380bce08"
- integrity sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q==
- dependencies:
- "@babel/helper-module-imports" "^7.0.0"
- "@babel/helper-plugin-utils" "^7.0.0"
- resolve "^1.8.1"
- semver "^5.5.1"
-
-"@babel/plugin-transform-shorthand-properties@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0"
- integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-spread@^7.2.0":
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406"
- integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-sticky-regex@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1"
- integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-regex" "^7.0.0"
-
-"@babel/plugin-transform-template-literals@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0"
- integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.0.0"
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-typeof-symbol@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2"
- integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
-
-"@babel/plugin-transform-unicode-regex@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f"
- integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-regex" "^7.4.4"
- regexpu-core "^4.5.4"
-
-"@babel/preset-env@^7.2.0":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.4.tgz#b6f6825bfb27b3e1394ca3de4f926482722c1d6f"
- integrity sha512-FU1H+ACWqZZqfw1x2G1tgtSSYSfxJLkpaUQL37CenULFARDo+h4xJoVHzRoHbK+85ViLciuI7ME4WTIhFRBBlw==
- dependencies:
- "@babel/helper-module-imports" "^7.0.0"
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-proposal-async-generator-functions" "^7.2.0"
- "@babel/plugin-proposal-json-strings" "^7.2.0"
- "@babel/plugin-proposal-object-rest-spread" "^7.4.4"
- "@babel/plugin-proposal-optional-catch-binding" "^7.2.0"
- "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
- "@babel/plugin-syntax-async-generators" "^7.2.0"
- "@babel/plugin-syntax-json-strings" "^7.2.0"
- "@babel/plugin-syntax-object-rest-spread" "^7.2.0"
- "@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
- "@babel/plugin-transform-arrow-functions" "^7.2.0"
- "@babel/plugin-transform-async-to-generator" "^7.4.4"
- "@babel/plugin-transform-block-scoped-functions" "^7.2.0"
- "@babel/plugin-transform-block-scoping" "^7.4.4"
- "@babel/plugin-transform-classes" "^7.4.4"
- "@babel/plugin-transform-computed-properties" "^7.2.0"
- "@babel/plugin-transform-destructuring" "^7.4.4"
- "@babel/plugin-transform-dotall-regex" "^7.4.4"
- "@babel/plugin-transform-duplicate-keys" "^7.2.0"
- "@babel/plugin-transform-exponentiation-operator" "^7.2.0"
- "@babel/plugin-transform-for-of" "^7.4.4"
- "@babel/plugin-transform-function-name" "^7.4.4"
- "@babel/plugin-transform-literals" "^7.2.0"
- "@babel/plugin-transform-member-expression-literals" "^7.2.0"
- "@babel/plugin-transform-modules-amd" "^7.2.0"
- "@babel/plugin-transform-modules-commonjs" "^7.4.4"
- "@babel/plugin-transform-modules-systemjs" "^7.4.4"
- "@babel/plugin-transform-modules-umd" "^7.2.0"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.4"
- "@babel/plugin-transform-new-target" "^7.4.4"
- "@babel/plugin-transform-object-super" "^7.2.0"
- "@babel/plugin-transform-parameters" "^7.4.4"
- "@babel/plugin-transform-property-literals" "^7.2.0"
- "@babel/plugin-transform-regenerator" "^7.4.4"
- "@babel/plugin-transform-reserved-words" "^7.2.0"
- "@babel/plugin-transform-shorthand-properties" "^7.2.0"
- "@babel/plugin-transform-spread" "^7.2.0"
- "@babel/plugin-transform-sticky-regex" "^7.2.0"
- "@babel/plugin-transform-template-literals" "^7.4.4"
- "@babel/plugin-transform-typeof-symbol" "^7.2.0"
- "@babel/plugin-transform-unicode-regex" "^7.4.4"
- "@babel/types" "^7.4.4"
- browserslist "^4.5.2"
- core-js-compat "^3.0.0"
- invariant "^2.2.2"
- js-levenshtein "^1.1.3"
- semver "^5.5.0"
-
-"@babel/runtime@^7.2.0":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.4.tgz#dc2e34982eb236803aa27a07fea6857af1b9171d"
- integrity sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==
- dependencies:
- regenerator-runtime "^0.13.2"
-
-"@babel/template@^7.1.0", "@babel/template@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237"
- integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- "@babel/parser" "^7.4.4"
- "@babel/types" "^7.4.4"
-
-"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.4.tgz#0776f038f6d78361860b6823887d4f3937133fe8"
- integrity sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- "@babel/generator" "^7.4.4"
- "@babel/helper-function-name" "^7.1.0"
- "@babel/helper-split-export-declaration" "^7.4.4"
- "@babel/parser" "^7.4.4"
- "@babel/types" "^7.4.4"
- debug "^4.1.0"
- globals "^11.1.0"
- lodash "^4.17.11"
-
-"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.4.4":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0"
- integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==
- dependencies:
- esutils "^2.0.2"
- lodash "^4.17.11"
- to-fast-properties "^2.0.0"
-
-"@mrmlnc/readdir-enhanced@^2.2.1":
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
- integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==
- dependencies:
- call-me-maybe "^1.0.1"
- glob-to-regexp "^0.3.0"
-
-"@nodelib/fs.stat@^1.1.2":
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
- integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
-
-"@types/events@*":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
- integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
-
-"@types/glob@^7.1.1":
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
- integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==
- dependencies:
- "@types/events" "*"
- "@types/minimatch" "*"
- "@types/node" "*"
-
-"@types/minimatch@*":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
- integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
-
-"@types/node@*":
- version "12.0.2"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.2.tgz#3452a24edf9fea138b48fad4a0a028a683da1e40"
- integrity sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA==
-
-"@types/q@^1.5.1":
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
- integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
-
-"@vue/component-compiler-utils@^2.5.1":
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz#aa46d2a6f7647440b0b8932434d22f12371e543b"
- integrity sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw==
- dependencies:
- consolidate "^0.15.1"
- hash-sum "^1.0.2"
- lru-cache "^4.1.2"
- merge-source-map "^1.1.0"
- postcss "^7.0.14"
- postcss-selector-parser "^5.0.0"
- prettier "1.16.3"
- source-map "~0.6.1"
- vue-template-es2015-compiler "^1.9.0"
-
-"@webassemblyjs/ast@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359"
- integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==
- dependencies:
- "@webassemblyjs/helper-module-context" "1.8.5"
- "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
- "@webassemblyjs/wast-parser" "1.8.5"
-
-"@webassemblyjs/floating-point-hex-parser@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721"
- integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==
-
-"@webassemblyjs/helper-api-error@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7"
- integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==
-
-"@webassemblyjs/helper-buffer@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204"
- integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==
-
-"@webassemblyjs/helper-code-frame@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e"
- integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==
- dependencies:
- "@webassemblyjs/wast-printer" "1.8.5"
-
-"@webassemblyjs/helper-fsm@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452"
- integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==
-
-"@webassemblyjs/helper-module-context@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245"
- integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- mamacro "^0.0.3"
-
-"@webassemblyjs/helper-wasm-bytecode@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61"
- integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==
-
-"@webassemblyjs/helper-wasm-section@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf"
- integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/helper-buffer" "1.8.5"
- "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
- "@webassemblyjs/wasm-gen" "1.8.5"
-
-"@webassemblyjs/ieee754@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e"
- integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==
- dependencies:
- "@xtuc/ieee754" "^1.2.0"
-
-"@webassemblyjs/leb128@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10"
- integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==
- dependencies:
- "@xtuc/long" "4.2.2"
-
-"@webassemblyjs/utf8@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc"
- integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==
-
-"@webassemblyjs/wasm-edit@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a"
- integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/helper-buffer" "1.8.5"
- "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
- "@webassemblyjs/helper-wasm-section" "1.8.5"
- "@webassemblyjs/wasm-gen" "1.8.5"
- "@webassemblyjs/wasm-opt" "1.8.5"
- "@webassemblyjs/wasm-parser" "1.8.5"
- "@webassemblyjs/wast-printer" "1.8.5"
-
-"@webassemblyjs/wasm-gen@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc"
- integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
- "@webassemblyjs/ieee754" "1.8.5"
- "@webassemblyjs/leb128" "1.8.5"
- "@webassemblyjs/utf8" "1.8.5"
-
-"@webassemblyjs/wasm-opt@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264"
- integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/helper-buffer" "1.8.5"
- "@webassemblyjs/wasm-gen" "1.8.5"
- "@webassemblyjs/wasm-parser" "1.8.5"
-
-"@webassemblyjs/wasm-parser@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d"
- integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/helper-api-error" "1.8.5"
- "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
- "@webassemblyjs/ieee754" "1.8.5"
- "@webassemblyjs/leb128" "1.8.5"
- "@webassemblyjs/utf8" "1.8.5"
-
-"@webassemblyjs/wast-parser@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c"
- integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/floating-point-hex-parser" "1.8.5"
- "@webassemblyjs/helper-api-error" "1.8.5"
- "@webassemblyjs/helper-code-frame" "1.8.5"
- "@webassemblyjs/helper-fsm" "1.8.5"
- "@xtuc/long" "4.2.2"
-
-"@webassemblyjs/wast-printer@1.8.5":
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc"
- integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==
- dependencies:
- "@webassemblyjs/ast" "1.8.5"
- "@webassemblyjs/wast-parser" "1.8.5"
- "@xtuc/long" "4.2.2"
-
-"@xtuc/ieee754@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
- integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
-
-"@xtuc/long@4.2.2":
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
- integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
-
-abbrev@1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
- integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-
-accepts@~1.3.4, accepts@~1.3.5:
- version "1.3.7"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
- integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
- dependencies:
- mime-types "~2.1.24"
- negotiator "0.6.2"
-
-acorn-dynamic-import@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948"
- integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==
-
-acorn@^6.0.5:
- version "6.1.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
- integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==
-
-ajv-errors@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
- integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
-
-ajv-keywords@^3.1.0:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d"
- integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==
-
-ajv@^6.1.0:
- version "6.10.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1"
- integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==
- dependencies:
- fast-deep-equal "^2.0.1"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.4.1"
- uri-js "^4.2.2"
-
-alphanum-sort@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
- integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
-
-ansi-colors@^3.0.0:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
- integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
-
-ansi-html@0.0.7:
- version "0.0.7"
- resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
- integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
-
-ansi-regex@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
- integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
-
-ansi-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
- integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-
-ansi-styles@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
- integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
-
-ansi-styles@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
- integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
- dependencies:
- color-convert "^1.9.0"
-
-anymatch@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
- integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
- dependencies:
- micromatch "^3.1.4"
- normalize-path "^2.1.1"
-
-aproba@^1.0.3, aproba@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
- integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
-
-are-we-there-yet@~1.1.2:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
- integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
- dependencies:
- delegates "^1.0.0"
- readable-stream "^2.0.6"
-
-argparse@^1.0.7:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
- integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
- dependencies:
- sprintf-js "~1.0.2"
-
-arr-diff@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
- integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
-
-arr-flatten@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
- integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
-
-arr-union@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
- integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-
-array-flatten@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
- integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
-
-array-flatten@^2.1.0:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
- integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
-
-array-union@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
- integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
- dependencies:
- array-uniq "^1.0.1"
-
-array-uniq@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
- integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
-
-array-unique@^0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
- integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-
-arrify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
- integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
-
-asn1.js@^4.0.0:
- version "4.10.1"
- resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
- integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
- dependencies:
- bn.js "^4.0.0"
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
-
-assert@^1.1.1:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
- integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
- dependencies:
- object-assign "^4.1.1"
- util "0.10.3"
-
-assign-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
- integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
-
-ast-types@0.9.6:
- version "0.9.6"
- resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9"
- integrity sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=
-
-async-each@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
- integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
-
-async@^1.5.2:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
- integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
-
-async@^2.4.1:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381"
- integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==
- dependencies:
- lodash "^4.17.11"
-
-atob@^2.1.1:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
- integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-
-autoprefixer@^9.4.2, autoprefixer@^9.4.5:
- version "9.5.1"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.5.1.tgz#243b1267b67e7e947f28919d786b50d3bb0fb357"
- integrity sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==
- dependencies:
- browserslist "^4.5.4"
- caniuse-lite "^1.0.30000957"
- normalize-range "^0.1.2"
- num2fraction "^1.2.2"
- postcss "^7.0.14"
- postcss-value-parser "^3.3.1"
-
-babel-code-frame@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
- integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
- dependencies:
- chalk "^1.1.3"
- esutils "^2.0.2"
- js-tokens "^3.0.2"
-
-babel-loader@^8.0.4:
- version "8.0.6"
- resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb"
- integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==
- dependencies:
- find-cache-dir "^2.0.0"
- loader-utils "^1.0.2"
- mkdirp "^0.5.1"
- pify "^4.0.1"
-
-babel-merge@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/babel-merge/-/babel-merge-2.0.1.tgz#6b2dfad78a655df66e3418eb37b1c3c5e676ad1a"
- integrity sha512-puTQQxuzS+0JlMyVdfsTVaCgzqjBXKPMv7oUANpYcHFY+7IptWZ4PZDYX+qBxrRMtrriuBA44LkKpS99EJzqVA==
- dependencies:
- "@babel/core" "^7.0.0-beta.49"
- deepmerge "^2.1.0"
- object.omit "^3.0.0"
-
-balanced-match@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
- integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-
-base64-js@^1.0.2:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
- integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
-
-base@^0.11.1:
- version "0.11.2"
- resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
- integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
- dependencies:
- cache-base "^1.0.1"
- class-utils "^0.3.5"
- component-emitter "^1.2.1"
- define-property "^1.0.0"
- isobject "^3.0.1"
- mixin-deep "^1.2.0"
- pascalcase "^0.1.1"
-
-batch@0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
- integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
-
-big.js@^5.2.2:
- version "5.2.2"
- resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
- integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
-
-binary-extensions@^1.0.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
- integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
-
-bluebird@^3.1.1, bluebird@^3.5.3:
- version "3.5.4"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714"
- integrity sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==
-
-bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
- version "4.11.8"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
- integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
-
-body-parser@1.18.3:
- version "1.18.3"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
- integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=
- dependencies:
- bytes "3.0.0"
- content-type "~1.0.4"
- debug "2.6.9"
- depd "~1.1.2"
- http-errors "~1.6.3"
- iconv-lite "0.4.23"
- on-finished "~2.3.0"
- qs "6.5.2"
- raw-body "2.3.3"
- type-is "~1.6.16"
-
-bonjour@^3.5.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
- integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU=
- dependencies:
- array-flatten "^2.1.0"
- deep-equal "^1.0.1"
- dns-equal "^1.0.0"
- dns-txt "^2.0.2"
- multicast-dns "^6.0.1"
- multicast-dns-service-types "^1.1.0"
-
-boolbase@^1.0.0, boolbase@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
- integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
-
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-braces@^2.3.1, braces@^2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
- integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
- dependencies:
- arr-flatten "^1.1.0"
- array-unique "^0.3.2"
- extend-shallow "^2.0.1"
- fill-range "^4.0.0"
- isobject "^3.0.1"
- repeat-element "^1.1.2"
- snapdragon "^0.8.1"
- snapdragon-node "^2.0.1"
- split-string "^3.0.2"
- to-regex "^3.0.1"
-
-brorand@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
- integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
-
-browserify-aes@^1.0.0, browserify-aes@^1.0.4:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
- integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
- dependencies:
- buffer-xor "^1.0.3"
- cipher-base "^1.0.0"
- create-hash "^1.1.0"
- evp_bytestokey "^1.0.3"
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
-browserify-cipher@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
- integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
- dependencies:
- browserify-aes "^1.0.4"
- browserify-des "^1.0.0"
- evp_bytestokey "^1.0.0"
-
-browserify-des@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
- integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
- dependencies:
- cipher-base "^1.0.1"
- des.js "^1.0.0"
- inherits "^2.0.1"
- safe-buffer "^5.1.2"
-
-browserify-rsa@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
- integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
- dependencies:
- bn.js "^4.1.0"
- randombytes "^2.0.1"
-
-browserify-sign@^4.0.0:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
- integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=
- dependencies:
- bn.js "^4.1.1"
- browserify-rsa "^4.0.0"
- create-hash "^1.1.0"
- create-hmac "^1.1.2"
- elliptic "^6.0.0"
- inherits "^2.0.1"
- parse-asn1 "^5.0.0"
-
-browserify-zlib@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
- integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
- dependencies:
- pako "~1.0.5"
-
-browserslist@^4.0.0, browserslist@^4.5.2, browserslist@^4.5.4:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.0.tgz#5274028c26f4d933d5b1323307c1d1da5084c9ff"
- integrity sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==
- dependencies:
- caniuse-lite "^1.0.30000967"
- electron-to-chromium "^1.3.133"
- node-releases "^1.1.19"
-
-buffer-from@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
- integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
-
-buffer-indexof@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
- integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
-
-buffer-xor@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
- integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
-
-buffer@^4.3.0:
- version "4.9.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
- integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
- dependencies:
- base64-js "^1.0.2"
- ieee754 "^1.1.4"
- isarray "^1.0.0"
-
-builtin-status-codes@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
- integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
-
-bytes@3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
- integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
-
-bytes@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
- integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
-
-cacache@^11.3.2:
- version "11.3.2"
- resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa"
- integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==
- dependencies:
- bluebird "^3.5.3"
- chownr "^1.1.1"
- figgy-pudding "^3.5.1"
- glob "^7.1.3"
- graceful-fs "^4.1.15"
- lru-cache "^5.1.1"
- mississippi "^3.0.0"
- mkdirp "^0.5.1"
- move-concurrently "^1.0.1"
- promise-inflight "^1.0.1"
- rimraf "^2.6.2"
- ssri "^6.0.1"
- unique-filename "^1.1.1"
- y18n "^4.0.0"
-
-cache-base@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
- integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
- dependencies:
- collection-visit "^1.0.0"
- component-emitter "^1.2.1"
- get-value "^2.0.6"
- has-value "^1.0.0"
- isobject "^3.0.1"
- set-value "^2.0.0"
- to-object-path "^0.3.0"
- union-value "^1.0.0"
- unset-value "^1.0.0"
-
-call-me-maybe@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
- integrity sha1-JtII6onje1y95gJQoV8DHBak1ms=
-
-caller-callsite@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
- integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
- dependencies:
- callsites "^2.0.0"
-
-caller-path@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
- integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
- dependencies:
- caller-callsite "^2.0.0"
-
-callsites@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
- integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
-
-camel-case@3.0.x:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
- integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=
- dependencies:
- no-case "^2.2.0"
- upper-case "^1.1.1"
-
-camelcase-css@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
- integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
-
-camelcase@^5.0.0:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
- integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-
-caniuse-api@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
- integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
- dependencies:
- browserslist "^4.0.0"
- caniuse-lite "^1.0.0"
- lodash.memoize "^4.1.2"
- lodash.uniq "^4.5.0"
-
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000957, caniuse-lite@^1.0.30000967:
- version "1.0.30000967"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000967.tgz#a5039577806fccee80a04aaafb2c0890b1ee2f73"
- integrity sha512-rUBIbap+VJfxTzrM4akJ00lkvVb5/n5v3EGXfWzSH5zT8aJmGzjA8HWhJ4U6kCpzxozUSnB+yvAYDRPY6mRpgQ==
-
-chalk@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
- integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
- dependencies:
- ansi-styles "^2.2.1"
- escape-string-regexp "^1.0.2"
- has-ansi "^2.0.0"
- strip-ansi "^3.0.0"
- supports-color "^2.0.0"
-
-chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
- integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
-
-charenc@~0.0.1:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
- integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
-
-chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.1.5:
- version "2.1.5"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d"
- integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==
- dependencies:
- anymatch "^2.0.0"
- async-each "^1.0.1"
- braces "^2.3.2"
- glob-parent "^3.1.0"
- inherits "^2.0.3"
- is-binary-path "^1.0.0"
- is-glob "^4.0.0"
- normalize-path "^3.0.0"
- path-is-absolute "^1.0.0"
- readdirp "^2.2.1"
- upath "^1.1.1"
- optionalDependencies:
- fsevents "^1.2.7"
-
-chownr@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
- integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==
-
-chrome-trace-event@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48"
- integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==
- dependencies:
- tslib "^1.9.0"
-
-cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
- integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
-class-utils@^0.3.5:
- version "0.3.6"
- resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
- integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
- dependencies:
- arr-union "^3.1.0"
- define-property "^0.2.5"
- isobject "^3.0.0"
- static-extend "^0.1.1"
-
-clean-css@4.2.x, clean-css@^4.1.3:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17"
- integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==
- dependencies:
- source-map "~0.6.0"
-
-cliui@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
- integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==
- dependencies:
- string-width "^2.1.1"
- strip-ansi "^4.0.0"
- wrap-ansi "^2.0.0"
-
-coa@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
- integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
- dependencies:
- "@types/q" "^1.5.1"
- chalk "^2.4.1"
- q "^1.1.2"
-
-code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
- integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
-
-collection-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
- integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
- dependencies:
- map-visit "^1.0.0"
- object-visit "^1.0.0"
-
-color-convert@^1.9.0, color-convert@^1.9.1:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
- dependencies:
- color-name "1.1.3"
-
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-
-color-name@^1.0.0:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
-color-string@^1.5.2:
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
- integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==
- dependencies:
- color-name "^1.0.0"
- simple-swizzle "^0.2.2"
-
-color@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/color/-/color-3.1.1.tgz#7abf5c0d38e89378284e873c207ae2172dcc8a61"
- integrity sha512-PvUltIXRjehRKPSy89VnDWFKY58xyhTLyxIg21vwQBI6qLwZNPmC8k3C1uytIgFKEpOIzN4y32iPm8231zFHIg==
- dependencies:
- color-convert "^1.9.1"
- color-string "^1.5.2"
-
-commander@2.17.x:
- version "2.17.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
- integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
-
-commander@^2.19.0:
- version "2.20.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
- integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
-
-commander@~2.19.0:
- version "2.19.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
- integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
-
-commondir@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
- integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
-
-component-emitter@^1.2.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
- integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
-
-compressible@~2.0.16:
- version "2.0.17"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1"
- integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==
- dependencies:
- mime-db ">= 1.40.0 < 2"
-
-compression@^1.7.4:
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
- integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
- dependencies:
- 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"
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
-
-concat-stream@^1.5.0:
- version "1.6.2"
- resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
- integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
- dependencies:
- buffer-from "^1.0.0"
- inherits "^2.0.3"
- readable-stream "^2.2.2"
- typedarray "^0.0.6"
-
-concatenate@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/concatenate/-/concatenate-0.0.2.tgz#0b49d6e8c41047d7728cdc8d62a086623397b49f"
- integrity sha1-C0nW6MQQR9dyjNyNYqCGYjOXtJ8=
- dependencies:
- globs "^0.1.2"
-
-connect-history-api-fallback@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
- integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
-
-console-browserify@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
- integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
- dependencies:
- date-now "^0.1.4"
-
-console-control-strings@^1.0.0, console-control-strings@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
- integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
-
-consolidate@^0.15.1:
- version "0.15.1"
- resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7"
- integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==
- dependencies:
- bluebird "^3.1.1"
-
-constants-browserify@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
- integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
-
-content-disposition@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
- integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ=
-
-content-type@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
- integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
-
-convert-source-map@^1.1.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
- integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==
- dependencies:
- safe-buffer "~5.1.1"
-
-cookie-signature@1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
- integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
-
-cookie@0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
- integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
-
-copy-concurrently@^1.0.0:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
- integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
- dependencies:
- 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@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
- integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
-
-core-js-compat@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.0.1.tgz#bff73ba31ca8687431b9c88f78d3362646fb76f0"
- integrity sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g==
- dependencies:
- browserslist "^4.5.4"
- core-js "3.0.1"
- core-js-pure "3.0.1"
- semver "^6.0.0"
-
-core-js-pure@3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.0.1.tgz#37358fb0d024e6b86d443d794f4e37e949098cbe"
- integrity sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g==
-
-core-js@3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.1.tgz#1343182634298f7f38622f95e73f54e48ddf4738"
- integrity sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==
-
-core-util-is@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
- integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-
-cosmiconfig@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc"
- integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==
- dependencies:
- is-directory "^0.3.1"
- js-yaml "^3.9.0"
- parse-json "^4.0.0"
- require-from-string "^2.0.1"
-
-cosmiconfig@^5.0.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
- integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
- dependencies:
- import-fresh "^2.0.0"
- is-directory "^0.3.1"
- js-yaml "^3.13.1"
- parse-json "^4.0.0"
-
-create-ecdh@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
- integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==
- dependencies:
- bn.js "^4.1.0"
- elliptic "^6.0.0"
-
-create-hash@^1.1.0, create-hash@^1.1.2:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
- integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
- dependencies:
- 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@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
- integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
- dependencies:
- 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-env@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz#6ecd4c015d5773e614039ee529076669b9d126f2"
- integrity sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==
- dependencies:
- cross-spawn "^6.0.5"
- is-windows "^1.0.0"
-
-cross-spawn@^6.0.0, cross-spawn@^6.0.5:
- version "6.0.5"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
- integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
- dependencies:
- nice-try "^1.0.4"
- path-key "^2.0.1"
- semver "^5.5.0"
- shebang-command "^1.2.0"
- which "^1.2.9"
-
-crypt@~0.0.1:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
- integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=
-
-crypto-browserify@^3.11.0:
- version "3.12.0"
- resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
- integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
- dependencies:
- 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@0.0.4, css-color-names@^0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
- integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
-
-css-declaration-sorter@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
- integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
- dependencies:
- postcss "^7.0.1"
- timsort "^0.3.0"
-
-css-loader@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe"
- integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==
- dependencies:
- babel-code-frame "^6.26.0"
- css-selector-tokenizer "^0.7.0"
- icss-utils "^2.1.0"
- loader-utils "^1.0.2"
- lodash "^4.17.11"
- postcss "^6.0.23"
- postcss-modules-extract-imports "^1.2.0"
- postcss-modules-local-by-default "^1.2.0"
- postcss-modules-scope "^1.1.0"
- postcss-modules-values "^1.3.0"
- postcss-value-parser "^3.3.0"
- source-list-map "^2.0.0"
-
-css-select-base-adapter@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
- integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
-
-css-select@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede"
- integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==
- dependencies:
- boolbase "^1.0.0"
- css-what "^2.1.2"
- domutils "^1.7.0"
- nth-check "^1.0.2"
-
-css-selector-tokenizer@^0.7.0:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d"
- integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==
- dependencies:
- cssesc "^0.1.0"
- fastparse "^1.1.1"
- regexpu-core "^1.0.0"
-
-css-tree@1.0.0-alpha.28:
- version "1.0.0-alpha.28"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f"
- integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==
- dependencies:
- mdn-data "~1.1.0"
- source-map "^0.5.3"
-
-css-tree@1.0.0-alpha.29:
- version "1.0.0-alpha.29"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39"
- integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==
- dependencies:
- mdn-data "~1.1.0"
- source-map "^0.5.3"
-
-css-unit-converter@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996"
- integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=
-
-css-url-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec"
- integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=
-
-css-what@^2.1.2:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
- integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
-
-cssesc@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
- integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=
-
-cssesc@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
- integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==
-
-cssesc@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
- integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
-
-cssnano-preset-default@^4.0.7:
- version "4.0.7"
- resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76"
- integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==
- dependencies:
- 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@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
- integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
-
-cssnano-util-get-match@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
- integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
-
-cssnano-util-raw-cache@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
- integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
- dependencies:
- postcss "^7.0.0"
-
-cssnano-util-same-parent@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
- integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
-
-cssnano@^4.1.0:
- version "4.1.10"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2"
- integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==
- dependencies:
- cosmiconfig "^5.0.0"
- cssnano-preset-default "^4.0.7"
- is-resolvable "^1.0.0"
- postcss "^7.0.0"
-
-csso@^3.5.1:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
- integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==
- dependencies:
- css-tree "1.0.0-alpha.29"
-
-cyclist@~0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
- integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
-
-date-now@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
- integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
-
-de-indent@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
- integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=
-
-debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
-
-debug@^3.2.5, debug@^3.2.6:
- version "3.2.6"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
- integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
- dependencies:
- ms "^2.1.1"
-
-debug@^4.1.0, debug@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
- integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
- dependencies:
- ms "^2.1.1"
-
-decamelize@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
- integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
-
-decode-uri-component@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
- integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
-
-deep-equal@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
- integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=
-
-deep-extend@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
- integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
-
-deepmerge@^2.1.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170"
- integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==
-
-default-gateway@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
- integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==
- dependencies:
- execa "^1.0.0"
- ip-regex "^2.1.0"
-
-define-properties@^1.1.2, define-properties@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
- integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
- dependencies:
- object-keys "^1.0.12"
-
-define-property@^0.2.5:
- version "0.2.5"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
- integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
- dependencies:
- is-descriptor "^0.1.0"
-
-define-property@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
- integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
- dependencies:
- is-descriptor "^1.0.0"
-
-define-property@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
- integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
- dependencies:
- is-descriptor "^1.0.2"
- isobject "^3.0.1"
-
-del@^4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4"
- integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==
- dependencies:
- "@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"
-
-delegates@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
- integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
-
-depd@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
- integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
-
-des.js@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
- integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
- dependencies:
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
-
-destroy@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
- integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
-
-detect-file@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
- integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
-
-detect-libc@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
- integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
-
-detect-node@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
- integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
-
-diffie-hellman@^5.0.0:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
- integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
- dependencies:
- bn.js "^4.1.0"
- miller-rabin "^4.0.0"
- randombytes "^2.0.0"
-
-dir-glob@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
- integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==
- dependencies:
- arrify "^1.0.1"
- path-type "^3.0.0"
-
-dns-equal@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
- integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
-
-dns-packet@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
- integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==
- dependencies:
- ip "^1.1.0"
- safe-buffer "^5.0.1"
-
-dns-txt@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
- integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=
- dependencies:
- buffer-indexof "^1.0.0"
-
-dom-serializer@0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
- integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
- dependencies:
- domelementtype "^1.3.0"
- entities "^1.1.1"
-
-domain-browser@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
- integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
-
-domelementtype@1, domelementtype@^1.3.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
- integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
-
-domutils@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
- integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
- dependencies:
- dom-serializer "0"
- domelementtype "1"
-
-dot-prop@^4.1.1:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
- integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==
- dependencies:
- is-obj "^1.0.0"
-
-dotenv-expand@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275"
- integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=
-
-dotenv@^6.2.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064"
- integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==
-
-duplexify@^3.4.2, duplexify@^3.6.0:
- version "3.7.1"
- resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
- integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
- dependencies:
- end-of-stream "^1.0.0"
- inherits "^2.0.1"
- readable-stream "^2.0.0"
- stream-shift "^1.0.0"
-
-ee-first@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
- integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
-
-electron-to-chromium@^1.3.133:
- version "1.3.134"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.134.tgz#550222bddac43c6bd6c445c3543a0fe8a615021d"
- integrity sha512-C3uK2SrtWg/gSWaluLHWSHjyebVZCe4ZC0NVgTAoTq8tCR9FareRK5T7R7AS/nPZShtlEcjVMX1kQ8wi4nU68w==
-
-elliptic@^6.0.0:
- version "6.4.1"
- resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a"
- integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==
- dependencies:
- 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"
-
-emojis-list@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
- integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
-
-encodeurl@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
- integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-
-end-of-stream@^1.0.0, end-of-stream@^1.1.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
- integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
- dependencies:
- once "^1.4.0"
-
-enhanced-resolve@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
- integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==
- dependencies:
- graceful-fs "^4.1.2"
- memory-fs "^0.4.0"
- tapable "^1.0.0"
-
-entities@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
- integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
-
-errno@^0.1.3, errno@~0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
- integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
- dependencies:
- prr "~1.0.1"
-
-error-ex@^1.3.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
- integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
- dependencies:
- is-arrayish "^0.2.1"
-
-error-stack-parser@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.2.tgz#4ae8dbaa2bf90a8b450707b9149dcabca135520d"
- integrity sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==
- dependencies:
- stackframe "^1.0.4"
-
-es-abstract@^1.12.0, es-abstract@^1.5.1:
- version "1.13.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
- integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
- dependencies:
- es-to-primitive "^1.2.0"
- function-bind "^1.1.1"
- has "^1.0.3"
- is-callable "^1.1.4"
- is-regex "^1.0.4"
- object-keys "^1.0.12"
-
-es-to-primitive@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
- integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
- dependencies:
- is-callable "^1.1.4"
- is-date-object "^1.0.1"
- is-symbol "^1.0.2"
-
-es6-templates@^0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4"
- integrity sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=
- dependencies:
- recast "~0.11.12"
- through "~2.3.6"
-
-escape-html@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
- integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
-
-escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-
-eslint-scope@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
- integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
- dependencies:
- esrecurse "^4.1.0"
- estraverse "^4.1.1"
-
-esprima@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
- integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-
-esprima@~3.1.0:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
- integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=
-
-esrecurse@^4.1.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
- integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
- dependencies:
- estraverse "^4.1.0"
-
-estraverse@^4.1.0, estraverse@^4.1.1:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
- integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
-
-esutils@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
- integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
-
-etag@~1.8.1:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
- integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
-
-eventemitter3@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
- integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
-
-events@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
- integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==
-
-eventsource@^1.0.7:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0"
- integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==
- dependencies:
- original "^1.0.0"
-
-evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
- integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
- dependencies:
- md5.js "^1.3.4"
- safe-buffer "^5.1.1"
-
-execa@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
- integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
- dependencies:
- 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@^2.1.4:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
- integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
- dependencies:
- 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"
-
-expand-tilde@^2.0.0, expand-tilde@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
- integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
- dependencies:
- homedir-polyfill "^1.0.1"
-
-express@^4.16.4:
- version "4.16.4"
- resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e"
- integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==
- dependencies:
- accepts "~1.3.5"
- array-flatten "1.1.1"
- body-parser "1.18.3"
- content-disposition "0.5.2"
- content-type "~1.0.4"
- cookie "0.3.1"
- 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.1"
- fresh "0.5.2"
- merge-descriptors "1.0.1"
- methods "~1.1.2"
- on-finished "~2.3.0"
- parseurl "~1.3.2"
- path-to-regexp "0.1.7"
- proxy-addr "~2.0.4"
- qs "6.5.2"
- range-parser "~1.2.0"
- safe-buffer "5.1.2"
- send "0.16.2"
- serve-static "1.13.2"
- setprototypeof "1.1.0"
- statuses "~1.4.0"
- type-is "~1.6.16"
- utils-merge "1.0.1"
- vary "~1.1.2"
-
-extend-shallow@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
- integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
- dependencies:
- is-extendable "^0.1.0"
-
-extend-shallow@^3.0.0, extend-shallow@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
- integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
- dependencies:
- assign-symbols "^1.0.0"
- is-extendable "^1.0.1"
-
-extglob@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
- integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
- dependencies:
- 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"
-
-extract-text-webpack-plugin@v4.0.0-beta.0:
- version "4.0.0-beta.0"
- resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz#f7361d7ff430b42961f8d1321ba8c1757b5d4c42"
- integrity sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA==
- dependencies:
- async "^2.4.1"
- loader-utils "^1.1.0"
- schema-utils "^0.4.5"
- webpack-sources "^1.1.0"
-
-fast-deep-equal@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
- integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
-
-fast-glob@^2.0.2:
- version "2.2.6"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.6.tgz#a5d5b697ec8deda468d85a74035290a025a95295"
- integrity sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==
- dependencies:
- "@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@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
- integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
-
-fastparse@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9"
- integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==
-
-faye-websocket@^0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
- integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=
- dependencies:
- websocket-driver ">=0.5.1"
-
-faye-websocket@~0.11.1:
- version "0.11.1"
- resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38"
- integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=
- dependencies:
- websocket-driver ">=0.5.1"
-
-figgy-pudding@^3.5.1:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
- integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
-
-file-loader@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde"
- integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==
- dependencies:
- loader-utils "^1.0.2"
- schema-utils "^1.0.0"
-
-file-type@^10.7.0:
- version "10.11.0"
- resolved "https://registry.yarnpkg.com/file-type/-/file-type-10.11.0.tgz#2961d09e4675b9fb9a3ee6b69e9cd23f43fd1890"
- integrity sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==
-
-fill-range@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
- integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
- dependencies:
- extend-shallow "^2.0.1"
- is-number "^3.0.0"
- repeat-string "^1.6.1"
- to-regex-range "^2.1.0"
-
-finalhandler@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
- integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==
- dependencies:
- debug "2.6.9"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- on-finished "~2.3.0"
- parseurl "~1.3.2"
- statuses "~1.4.0"
- unpipe "~1.0.0"
-
-find-cache-dir@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
- integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
- dependencies:
- commondir "^1.0.1"
- make-dir "^2.0.0"
- pkg-dir "^3.0.0"
-
-find-up@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
- integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
- dependencies:
- locate-path "^3.0.0"
-
-findup-sync@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc"
- integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=
- dependencies:
- detect-file "^1.0.0"
- is-glob "^3.1.0"
- micromatch "^3.0.4"
- resolve-dir "^1.0.1"
-
-flush-write-stream@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
- integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
- dependencies:
- inherits "^2.0.3"
- readable-stream "^2.3.6"
-
-follow-redirects@^1.0.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76"
- integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==
- dependencies:
- debug "^3.2.6"
-
-for-in@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
- integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
-
-forwarded@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
- integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
-
-fragment-cache@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
- integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
- dependencies:
- map-cache "^0.2.2"
-
-fresh@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
- integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
-
-friendly-errors-webpack-plugin@^1.6.1:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz#efc86cbb816224565861a1be7a9d84d0aafea136"
- integrity sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw==
- dependencies:
- chalk "^1.1.3"
- error-stack-parser "^2.0.0"
- string-width "^2.0.0"
-
-from2@^2.1.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
- integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
- dependencies:
- inherits "^2.0.1"
- readable-stream "^2.0.0"
-
-fs-extra@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
- integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
- dependencies:
- graceful-fs "^4.1.2"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
-
-fs-extra@^8.0.0:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.0.1.tgz#90294081f978b1f182f347a440a209154344285b"
- integrity sha512-W+XLrggcDzlle47X/XnS7FXrXu9sDo+Ze9zpndeBxdgv88FHLm1HtmkhEwavruS6koanBjp098rUpHs65EmG7A==
- dependencies:
- graceful-fs "^4.1.2"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
-
-fs-minipass@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
- integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==
- dependencies:
- minipass "^2.2.1"
-
-fs-write-stream-atomic@^1.0.8:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
- integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
- dependencies:
- graceful-fs "^4.1.2"
- iferr "^0.1.5"
- imurmurhash "^0.1.4"
- readable-stream "1 || 2"
-
-fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
- integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-
-fsevents@^1.2.7:
- version "1.2.9"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
- integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
- dependencies:
- nan "^2.12.1"
- node-pre-gyp "^0.12.0"
-
-function-bind@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
- integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-
-gauge@~2.7.3:
- version "2.7.4"
- resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
- integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
- dependencies:
- 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"
-
-get-caller-file@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
- integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
-
-get-stream@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
- integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
- dependencies:
- pump "^3.0.0"
-
-get-value@^2.0.3, get-value@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
- integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
-
-glob-parent@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
- integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
- dependencies:
- is-glob "^3.1.0"
- path-dirname "^1.0.0"
-
-glob-to-regexp@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
- integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
-
-glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
- version "7.1.4"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
- integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
- dependencies:
- 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"
-
-global-modules@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
- integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
- dependencies:
- global-prefix "^1.0.1"
- is-windows "^1.0.1"
- resolve-dir "^1.0.0"
-
-global-prefix@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
- integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
- dependencies:
- expand-tilde "^2.0.2"
- homedir-polyfill "^1.0.1"
- ini "^1.3.4"
- is-windows "^1.0.1"
- which "^1.2.14"
-
-globals@^11.1.0:
- version "11.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
- integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-
-globby@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
- integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
- dependencies:
- array-union "^1.0.1"
- glob "^7.0.3"
- object-assign "^4.0.1"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
-globby@^8.0.1:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d"
- integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==
- dependencies:
- array-union "^1.0.1"
- dir-glob "2.0.0"
- fast-glob "^2.0.2"
- glob "^7.1.2"
- ignore "^3.3.5"
- pify "^3.0.0"
- slash "^1.0.0"
-
-globs@^0.1.2:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/globs/-/globs-0.1.4.tgz#1d13639f6174e4ae73a7f936da7d9a079f657c1c"
- integrity sha512-D23dWbOq48vlOraoSigbcQV4tWrnhwk+E/Um2cMuDS3/5dwGmdFeA7L/vAvDhLFlQOTDqHcXh35m/71g2A2WzQ==
- dependencies:
- glob "^7.1.1"
-
-graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
- version "4.1.15"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
- integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
-
-growly@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
- integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
-
-handle-thing@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754"
- integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==
-
-has-ansi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
- integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
- dependencies:
- ansi-regex "^2.0.0"
-
-has-flag@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-
-has-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
- integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
-
-has-unicode@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
- integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
-
-has-value@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
- integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
- dependencies:
- get-value "^2.0.3"
- has-values "^0.1.4"
- isobject "^2.0.0"
-
-has-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
- integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
- dependencies:
- get-value "^2.0.6"
- has-values "^1.0.0"
- isobject "^3.0.0"
-
-has-values@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
- integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
-
-has-values@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
- integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
- dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
-
-has@^1.0.0, has@^1.0.1, has@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
- dependencies:
- function-bind "^1.1.1"
-
-hash-base@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
- integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
-hash-sum@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04"
- integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=
-
-hash.js@^1.0.0, hash.js@^1.0.3:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
- integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
- dependencies:
- inherits "^2.0.3"
- minimalistic-assert "^1.0.1"
-
-he@1.2.x, he@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
- integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
-
-hex-color-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
- integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
-
-hmac-drbg@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
- integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
- dependencies:
- hash.js "^1.0.3"
- minimalistic-assert "^1.0.0"
- minimalistic-crypto-utils "^1.0.1"
-
-homedir-polyfill@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
- integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
- dependencies:
- parse-passwd "^1.0.0"
-
-hpack.js@^2.1.6:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
- integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=
- dependencies:
- inherits "^2.0.1"
- obuf "^1.0.0"
- readable-stream "^2.0.1"
- wbuf "^1.1.0"
-
-hsl-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
- integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
-
-hsla-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
- integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
-
-html-comment-regex@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
- integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
-
-html-entities@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
- integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
-
-html-loader@^0.5.5:
- version "0.5.5"
- resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea"
- integrity sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog==
- dependencies:
- es6-templates "^0.2.3"
- fastparse "^1.1.1"
- html-minifier "^3.5.8"
- loader-utils "^1.1.0"
- object-assign "^4.1.1"
-
-html-minifier@^3.5.8:
- version "3.5.21"
- resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c"
- integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==
- dependencies:
- 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"
-
-http-deceiver@^1.2.7:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
- integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
-
-http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
- version "1.6.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
- integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
- dependencies:
- depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.0"
- statuses ">= 1.4.0 < 2"
-
-http-parser-js@>=0.4.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8"
- integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==
-
-http-proxy-middleware@^0.19.1:
- version "0.19.1"
- resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a"
- integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==
- dependencies:
- http-proxy "^1.17.0"
- is-glob "^4.0.0"
- lodash "^4.17.11"
- micromatch "^3.1.10"
-
-http-proxy@^1.17.0:
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
- integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==
- dependencies:
- eventemitter3 "^3.0.0"
- follow-redirects "^1.0.0"
- requires-port "^1.0.0"
-
-https-browserify@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
- integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
-
-iconv-lite@0.4.23:
- version "0.4.23"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
- integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==
- dependencies:
- safer-buffer ">= 2.1.2 < 3"
-
-iconv-lite@^0.4.4:
- version "0.4.24"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
- integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
- dependencies:
- safer-buffer ">= 2.1.2 < 3"
-
-icss-replace-symbols@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
- integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
-
-icss-utils@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962"
- integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=
- dependencies:
- postcss "^6.0.1"
-
-ieee754@^1.1.4:
- version "1.1.13"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
- integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
-
-iferr@^0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
- integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
-
-ignore-walk@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
- integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
- dependencies:
- minimatch "^3.0.4"
-
-ignore@^3.3.5:
- version "3.3.10"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
- integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
-
-imagemin@^6.0.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-6.1.0.tgz#62508b465728fea36c03cdc07d915fe2d8cf9e13"
- integrity sha512-8ryJBL1CN5uSHpiBMX0rJw79C9F9aJqMnjGnrd/1CafegpNuA81RBAAru/jQQEOWlOJJlpRnlcVFF6wq+Ist0A==
- dependencies:
- file-type "^10.7.0"
- globby "^8.0.1"
- make-dir "^1.0.0"
- p-pipe "^1.1.0"
- pify "^4.0.1"
- replace-ext "^1.0.0"
-
-img-loader@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/img-loader/-/img-loader-3.0.1.tgz#c279691c0a9e6b94fa7d8318d2a6596d98bcee78"
- integrity sha512-0jDJqexgzOuq3zlXwFTBKJlMcaP1uXyl5t4Qu6b1IgXb3IwBDjPfVylBC8vHFIIESDw/S+5QkBbtBrt4T8wESA==
- dependencies:
- loader-utils "^1.1.0"
-
-import-cwd@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
- integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=
- dependencies:
- import-from "^2.1.0"
-
-import-fresh@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
- integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
- dependencies:
- caller-path "^2.0.0"
- resolve-from "^3.0.0"
-
-import-from@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
- integrity sha1-M1238qev/VOqpHHUuAId7ja387E=
- dependencies:
- resolve-from "^3.0.0"
-
-import-local@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
- integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
- dependencies:
- pkg-dir "^3.0.0"
- resolve-cwd "^2.0.0"
-
-imurmurhash@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
- integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
-
-indexes-of@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
- integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
-
-indexof@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
- integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
- integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-
-inherits@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
- integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
-
-ini@^1.3.4, ini@~1.3.0:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
- integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
-
-internal-ip@^4.2.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907"
- integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==
- dependencies:
- default-gateway "^4.2.0"
- ipaddr.js "^1.9.0"
-
-interpret@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
- integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
-
-invariant@^2.2.2:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
- integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
- dependencies:
- loose-envify "^1.0.0"
-
-invert-kv@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
- integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
-
-ip-regex@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
- integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
-
-ip@^1.1.0, ip@^1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
- integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
-
-ipaddr.js@1.9.0, ipaddr.js@^1.9.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65"
- integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==
-
-is-absolute-url@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
- integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
-
-is-accessor-descriptor@^0.1.6:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
- integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
- dependencies:
- kind-of "^3.0.2"
-
-is-accessor-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
- integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
- dependencies:
- kind-of "^6.0.0"
-
-is-arrayish@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
- integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
-
-is-arrayish@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
- integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
-
-is-binary-path@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
- integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
- dependencies:
- binary-extensions "^1.0.0"
-
-is-buffer@^1.1.5, is-buffer@~1.1.1:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
- integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-
-is-callable@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
- integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
-
-is-color-stop@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
- integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
- dependencies:
- 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@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
- integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
- dependencies:
- kind-of "^3.0.2"
-
-is-data-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
- integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
- dependencies:
- kind-of "^6.0.0"
-
-is-date-object@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
- integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
-
-is-descriptor@^0.1.0:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
- integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
- dependencies:
- is-accessor-descriptor "^0.1.6"
- is-data-descriptor "^0.1.4"
- kind-of "^5.0.0"
-
-is-descriptor@^1.0.0, is-descriptor@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
- integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
- dependencies:
- is-accessor-descriptor "^1.0.0"
- is-data-descriptor "^1.0.0"
- kind-of "^6.0.2"
-
-is-directory@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
- integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
-
-is-extendable@^0.1.0, is-extendable@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
- integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
-
-is-extendable@^1.0.0, is-extendable@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
- integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
- dependencies:
- is-plain-object "^2.0.4"
-
-is-extglob@^2.1.0, is-extglob@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-
-is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
- integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
- integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
-
-is-glob@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
- integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
- dependencies:
- is-extglob "^2.1.0"
-
-is-glob@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
- integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
- dependencies:
- is-extglob "^2.1.1"
-
-is-number@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
- integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
- dependencies:
- kind-of "^3.0.2"
-
-is-obj@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
- integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
-
-is-path-cwd@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz#2e0c7e463ff5b7a0eb60852d851a6809347a124c"
- integrity sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw==
-
-is-path-in-cwd@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb"
- integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==
- dependencies:
- is-path-inside "^2.1.0"
-
-is-path-inside@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2"
- integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==
- dependencies:
- path-is-inside "^1.0.2"
-
-is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
- integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
- dependencies:
- isobject "^3.0.1"
-
-is-regex@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
- integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
- dependencies:
- has "^1.0.1"
-
-is-resolvable@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
- integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
-
-is-stream@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
- integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
-
-is-svg@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
- integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==
- dependencies:
- html-comment-regex "^1.1.0"
-
-is-symbol@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
- integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
- dependencies:
- has-symbols "^1.0.0"
-
-is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
- integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
-
-is-wsl@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
- integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
-
-isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
- integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
- integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
-
-isobject@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
- integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
- dependencies:
- isarray "1.0.0"
-
-isobject@^3.0.0, isobject@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
- integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-
-js-levenshtein@^1.1.3:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
- integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
-
-"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
- integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-
-js-tokens@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
- integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
-
-js-yaml@^3.13.1, js-yaml@^3.9.0:
- version "3.13.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
- integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
- dependencies:
- argparse "^1.0.7"
- esprima "^4.0.0"
-
-jsesc@^2.5.1:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
- integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
-
-jsesc@~0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
- integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
-
-json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
- integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
-
-json-schema-traverse@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
- integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-
-json3@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
- integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=
-
-json5@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
- integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
- dependencies:
- minimist "^1.2.0"
-
-json5@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
- integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==
- dependencies:
- minimist "^1.2.0"
-
-jsonfile@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
- integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
- optionalDependencies:
- graceful-fs "^4.1.6"
-
-killable@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
- integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==
-
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
- integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
- integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
- integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
-
-kind-of@^6.0.0, kind-of@^6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
- integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
-
-laravel-mix@^4.0.15:
- version "4.0.15"
- resolved "https://registry.yarnpkg.com/laravel-mix/-/laravel-mix-4.0.15.tgz#b8f1e07770d72b3206a6726cdb14142ae0ea5d50"
- integrity sha512-i1o1HLeBkM/QVe4OhW+aBy0xcQuGq7moQadgSV4kcwiHYjbfpcb1FpcDZByU2HKkkPtwK5uy+O77nVQe24wGPw==
- dependencies:
- "@babel/core" "^7.2.0"
- "@babel/plugin-proposal-object-rest-spread" "^7.2.0"
- "@babel/plugin-transform-runtime" "^7.2.0"
- "@babel/preset-env" "^7.2.0"
- "@babel/runtime" "^7.2.0"
- autoprefixer "^9.4.2"
- babel-loader "^8.0.4"
- babel-merge "^2.0.1"
- chokidar "^2.0.3"
- clean-css "^4.1.3"
- concatenate "0.0.2"
- css-loader "^1.0.1"
- dotenv "^6.2.0"
- dotenv-expand "^4.2.0"
- extract-text-webpack-plugin v4.0.0-beta.0
- file-loader "^2.0.0"
- friendly-errors-webpack-plugin "^1.6.1"
- fs-extra "^7.0.1"
- glob "^7.1.2"
- html-loader "^0.5.5"
- imagemin "^6.0.0"
- img-loader "^3.0.0"
- lodash "^4.17.5"
- md5 "^2.2.1"
- optimize-css-assets-webpack-plugin "^5.0.1"
- postcss-loader "^3.0.0"
- style-loader "^0.23.1"
- terser "^3.11.0"
- terser-webpack-plugin "^1.1.0"
- vue-loader "^15.4.2"
- webpack "^4.27.1"
- webpack-cli "^3.1.2"
- webpack-dev-server "^3.1.14"
- webpack-merge "^4.1.0"
- webpack-notifier "^1.5.1"
- yargs "^12.0.5"
-
-last-call-webpack-plugin@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555"
- integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==
- dependencies:
- lodash "^4.17.5"
- webpack-sources "^1.1.0"
-
-lcid@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
- integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==
- dependencies:
- invert-kv "^2.0.0"
-
-loader-runner@^2.3.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
- integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
-
-loader-utils@^1.0.2, loader-utils@^1.1.0:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
- integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
- dependencies:
- big.js "^5.2.2"
- emojis-list "^2.0.0"
- json5 "^1.0.1"
-
-locate-path@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
- integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
- dependencies:
- p-locate "^3.0.0"
- path-exists "^3.0.0"
-
-lodash.memoize@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
- integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
-
-lodash.toarray@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561"
- integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE=
-
-lodash.uniq@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
- integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-
-lodash@^4.17.11, lodash@^4.17.5:
- version "4.17.11"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
- integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
-
-lodash@^4.17.13:
- version "4.17.15"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
- integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
-
-loglevel@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
- integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=
-
-loose-envify@^1.0.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
- integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
- dependencies:
- js-tokens "^3.0.0 || ^4.0.0"
-
-lower-case@^1.1.1:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
- integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
-
-lru-cache@^4.1.2:
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
- integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
- dependencies:
- pseudomap "^1.0.2"
- yallist "^2.1.2"
-
-lru-cache@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
- integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
- dependencies:
- yallist "^3.0.2"
-
-make-dir@^1.0.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
- integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
- dependencies:
- pify "^3.0.0"
-
-make-dir@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
- integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
- dependencies:
- pify "^4.0.1"
- semver "^5.6.0"
-
-mamacro@^0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4"
- integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==
-
-map-age-cleaner@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
- integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
- dependencies:
- p-defer "^1.0.0"
-
-map-cache@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
- integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
-
-map-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
- integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
- dependencies:
- object-visit "^1.0.0"
-
-md5.js@^1.3.4:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
- integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
- dependencies:
- hash-base "^3.0.0"
- inherits "^2.0.1"
- safe-buffer "^5.1.2"
-
-md5@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9"
- integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=
- dependencies:
- charenc "~0.0.1"
- crypt "~0.0.1"
- is-buffer "~1.1.1"
-
-mdn-data@~1.1.0:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01"
- integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==
-
-media-typer@0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
- integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
-
-mem@^4.0.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
- integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
- dependencies:
- map-age-cleaner "^0.1.1"
- mimic-fn "^2.0.0"
- p-is-promise "^2.0.0"
-
-memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
- integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
- dependencies:
- errno "^0.1.3"
- readable-stream "^2.0.1"
-
-merge-descriptors@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
- integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
-
-merge-source-map@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646"
- integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==
- dependencies:
- source-map "^0.6.1"
-
-merge2@^1.2.3:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5"
- integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==
-
-methods@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
- integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
-
-micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8:
- version "3.1.10"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
- integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
- dependencies:
- 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@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
- integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
- dependencies:
- bn.js "^4.0.0"
- brorand "^1.0.1"
-
-mime-db@1.40.0, "mime-db@>= 1.40.0 < 2":
- version "1.40.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
- integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
-
-mime-types@~2.1.17, mime-types@~2.1.24:
- version "2.1.24"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
- integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
- dependencies:
- mime-db "1.40.0"
-
-mime@1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
- integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==
-
-mime@^2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.2.tgz#ce5229a5e99ffc313abac806b482c10e7ba6ac78"
- integrity sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg==
-
-mimic-fn@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
- integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-
-minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
- integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-
-minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
- integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-
-minimatch@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
- dependencies:
- brace-expansion "^1.1.7"
-
-minimist@0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
- integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
-
-minimist@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
- integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
-
-minipass@^2.2.1, minipass@^2.3.4:
- version "2.3.5"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
- integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
- dependencies:
- safe-buffer "^5.1.2"
- yallist "^3.0.0"
-
-minizlib@^1.1.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
- integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
- dependencies:
- minipass "^2.2.1"
-
-mississippi@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
- integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
- dependencies:
- 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@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
- integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
- dependencies:
- for-in "^1.0.2"
- is-extendable "^1.0.1"
-
-mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
- integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
- dependencies:
- minimist "0.0.8"
-
-move-concurrently@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
- integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
- dependencies:
- 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@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
- integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-
-ms@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
- integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
-
-multicast-dns-service-types@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
- integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=
-
-multicast-dns@^6.0.1:
- version "6.2.3"
- resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
- integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
- dependencies:
- dns-packet "^1.3.1"
- thunky "^1.0.2"
-
-nan@^2.12.1:
- version "2.13.2"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7"
- integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==
-
-nanomatch@^1.2.9:
- version "1.2.13"
- resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
- integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
- dependencies:
- 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"
-
-needle@^2.2.1:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
- integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
- dependencies:
- debug "^3.2.6"
- iconv-lite "^0.4.4"
- sax "^1.2.4"
-
-negotiator@0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
- integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-
-neo-async@^2.5.0:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
- integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
-
-nice-try@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
- integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-
-no-case@^2.2.0:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
- integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==
- dependencies:
- lower-case "^1.1.1"
-
-node-emoji@^1.8.1:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da"
- integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==
- dependencies:
- lodash.toarray "^4.4.0"
-
-node-forge@0.7.5:
- version "0.7.5"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df"
- integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==
-
-node-libs-browser@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.0.tgz#c72f60d9d46de08a940dedbb25f3ffa2f9bbaa77"
- integrity sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==
- dependencies:
- 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.0"
- 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 "0.0.4"
-
-node-notifier@^5.1.2:
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a"
- integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==
- dependencies:
- growly "^1.3.0"
- is-wsl "^1.1.0"
- semver "^5.5.0"
- shellwords "^0.1.1"
- which "^1.3.0"
-
-node-pre-gyp@^0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
- integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
- dependencies:
- 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"
-
-node-releases@^1.1.19:
- version "1.1.19"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.19.tgz#c492d1e381fea0350b338b646c27867e88e91b3d"
- integrity sha512-SH/B4WwovHbulIALsQllAVwqZZD1kPmKCqrhGfR29dXjLAVZMHvBjD3S6nL9D/J9QkmZ1R92/0wCMDKXUUvyyA==
- dependencies:
- semver "^5.3.0"
-
-nopt@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
- integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
- dependencies:
- abbrev "1"
- osenv "^0.1.4"
-
-normalize-path@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
- integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
- dependencies:
- remove-trailing-separator "^1.0.1"
-
-normalize-path@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
- integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-
-normalize-range@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
- integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
-
-normalize-url@^3.0.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
- integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
-
-normalize.css@^8.0.1:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3"
- integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==
-
-npm-bundled@^1.0.1:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
- integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
-
-npm-packlist@^1.1.6:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc"
- integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==
- dependencies:
- ignore-walk "^3.0.1"
- npm-bundled "^1.0.1"
-
-npm-run-path@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
- integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
- dependencies:
- path-key "^2.0.0"
-
-npmlog@^4.0.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
- integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
- dependencies:
- are-we-there-yet "~1.1.2"
- console-control-strings "~1.1.0"
- gauge "~2.7.3"
- set-blocking "~2.0.0"
-
-nth-check@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
- integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
- dependencies:
- boolbase "~1.0.0"
-
-num2fraction@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
- integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
-
-number-is-nan@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
- integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-
-object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
- integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-
-object-copy@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
- integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
- dependencies:
- copy-descriptor "^0.1.0"
- define-property "^0.2.5"
- kind-of "^3.0.3"
-
-object-keys@^1.0.12:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-object-visit@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
- integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
- dependencies:
- isobject "^3.0.0"
-
-object.getownpropertydescriptors@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
- integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=
- dependencies:
- define-properties "^1.1.2"
- es-abstract "^1.5.1"
-
-object.omit@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-3.0.0.tgz#0e3edc2fce2ba54df5577ff529f6d97bd8a522af"
- integrity sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==
- dependencies:
- is-extendable "^1.0.0"
-
-object.pick@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
- integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
- dependencies:
- isobject "^3.0.1"
-
-object.values@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
- integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.12.0"
- function-bind "^1.1.1"
- has "^1.0.3"
-
-obuf@^1.0.0, obuf@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
- integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
-
-on-finished@~2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
- integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
- dependencies:
- ee-first "1.1.1"
-
-on-headers@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
- integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
-
-once@^1.3.0, once@^1.3.1, once@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
- dependencies:
- wrappy "1"
-
-opn@^5.5.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc"
- integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==
- dependencies:
- is-wsl "^1.1.0"
-
-optimize-css-assets-webpack-plugin@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159"
- integrity sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A==
- dependencies:
- cssnano "^4.1.0"
- last-call-webpack-plugin "^3.0.0"
-
-original@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
- integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==
- dependencies:
- url-parse "^1.4.3"
-
-os-browserify@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
- integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
-
-os-homedir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
- integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
-
-os-locale@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
- integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
- dependencies:
- execa "^1.0.0"
- lcid "^2.0.0"
- mem "^4.0.0"
-
-os-tmpdir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
- integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
-
-osenv@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
- integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
- dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.0"
-
-p-defer@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
- integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
-
-p-finally@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
- integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
-
-p-is-promise@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
- integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
-
-p-limit@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2"
- integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==
- dependencies:
- p-try "^2.0.0"
-
-p-locate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
- integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
- dependencies:
- p-limit "^2.0.0"
-
-p-map@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
- integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
-
-p-pipe@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9"
- integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k=
-
-p-try@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
- integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-
-pako@~1.0.5:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
- integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==
-
-parallel-transform@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
- integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=
- dependencies:
- cyclist "~0.2.2"
- inherits "^2.0.3"
- readable-stream "^2.1.5"
-
-param-case@2.1.x:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
- integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc=
- dependencies:
- no-case "^2.2.0"
-
-parse-asn1@^5.0.0:
- version "5.1.4"
- resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
- integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==
- dependencies:
- 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@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
- integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
- dependencies:
- error-ex "^1.3.1"
- json-parse-better-errors "^1.0.1"
-
-parse-passwd@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
- integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
-
-parseurl@~1.3.2:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
- integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
-
-pascalcase@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
- integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
-
-path-browserify@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
- integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=
-
-path-dirname@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
- integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
-
-path-exists@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
- integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
-
-path-is-absolute@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
- integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-
-path-is-inside@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
- integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
-
-path-key@^2.0.0, path-key@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
- integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
-
-path-parse@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
- integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
-
-path-to-regexp@0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
- integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
-
-path-type@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
- integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
- dependencies:
- pify "^3.0.0"
-
-pbkdf2@^3.0.3:
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6"
- integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==
- dependencies:
- create-hash "^1.1.2"
- create-hmac "^1.1.4"
- ripemd160 "^2.0.1"
- safe-buffer "^5.0.1"
- sha.js "^2.4.8"
-
-pify@^2.0.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
- integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
-
-pify@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
- integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
-
-pify@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
- integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
-
-pinkie-promise@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
- integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
- dependencies:
- pinkie "^2.0.0"
-
-pinkie@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
- integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
-
-pkg-dir@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
- integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
- dependencies:
- find-up "^3.0.0"
-
-portfinder@^1.0.20:
- version "1.0.20"
- resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a"
- integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==
- dependencies:
- async "^1.5.2"
- debug "^2.2.0"
- mkdirp "0.5.x"
-
-posix-character-classes@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
- integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
-
-postcss-calc@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436"
- integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==
- dependencies:
- 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@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
- integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
- dependencies:
- 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@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
- integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
- dependencies:
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-discard-comments@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
- integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
- dependencies:
- postcss "^7.0.0"
-
-postcss-discard-duplicates@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
- integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
- dependencies:
- postcss "^7.0.0"
-
-postcss-discard-empty@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
- integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
- dependencies:
- postcss "^7.0.0"
-
-postcss-discard-overridden@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
- integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
- dependencies:
- postcss "^7.0.0"
-
-postcss-functions@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-functions/-/postcss-functions-3.0.0.tgz#0e94d01444700a481de20de4d55fb2640564250e"
- integrity sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4=
- dependencies:
- glob "^7.1.2"
- object-assign "^4.1.1"
- postcss "^6.0.9"
- postcss-value-parser "^3.3.0"
-
-postcss-js@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-2.0.1.tgz#4154e906ff410930afab63a24210be1b831e89a9"
- integrity sha512-8XQGohCbj6+kq8e3w6WlexkGaSjb5S8zoXnH49eB8JC6+qN2kQW+ib6fTjRgCpRRN9eeFOhMlD0NDjThW1DCBg==
- dependencies:
- camelcase-css "^2.0.1"
- postcss "^7.0.14"
-
-postcss-load-config@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484"
- integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==
- dependencies:
- cosmiconfig "^4.0.0"
- import-cwd "^2.0.0"
-
-postcss-loader@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d"
- integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==
- dependencies:
- loader-utils "^1.1.0"
- postcss "^7.0.0"
- postcss-load-config "^2.0.0"
- schema-utils "^1.0.0"
-
-postcss-merge-longhand@^4.0.11:
- version "4.0.11"
- resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
- integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
- dependencies:
- css-color-names "0.0.4"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
- stylehacks "^4.0.0"
-
-postcss-merge-rules@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
- integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
- dependencies:
- 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"
-
-postcss-minify-font-values@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
- integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
- dependencies:
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-minify-gradients@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
- integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
- dependencies:
- 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@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
- integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
- dependencies:
- 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@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
- integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
- dependencies:
- alphanum-sort "^1.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-selector-parser "^3.0.0"
-
-postcss-modules-extract-imports@^1.2.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a"
- integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==
- dependencies:
- postcss "^6.0.1"
-
-postcss-modules-local-by-default@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
- integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=
- dependencies:
- css-selector-tokenizer "^0.7.0"
- postcss "^6.0.1"
-
-postcss-modules-scope@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
- integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A=
- dependencies:
- css-selector-tokenizer "^0.7.0"
- postcss "^6.0.1"
-
-postcss-modules-values@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
- integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=
- dependencies:
- icss-replace-symbols "^1.1.0"
- postcss "^6.0.1"
-
-postcss-nested@^4.1.1:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-4.1.2.tgz#8e0570f736bfb4be5136e31901bf2380b819a561"
- integrity sha512-9bQFr2TezohU3KRSu9f6sfecXmf/x6RXDedl8CHF6fyuyVW7UqgNMRdWMHZQWuFY6Xqs2NYk+Fj4Z4vSOf7PQg==
- dependencies:
- postcss "^7.0.14"
- postcss-selector-parser "^5.0.0"
-
-postcss-normalize-charset@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
- integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
- dependencies:
- postcss "^7.0.0"
-
-postcss-normalize-display-values@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
- integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
- dependencies:
- cssnano-util-get-match "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-positions@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
- integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
- dependencies:
- 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@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
- integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
- dependencies:
- 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@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
- integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
- dependencies:
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-timing-functions@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
- integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
- dependencies:
- cssnano-util-get-match "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-unicode@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
- integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
- dependencies:
- browserslist "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-url@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
- integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
- dependencies:
- is-absolute-url "^2.0.0"
- normalize-url "^3.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-whitespace@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
- integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
- dependencies:
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-ordered-values@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
- integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
- dependencies:
- cssnano-util-get-arguments "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-reduce-initial@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
- integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
- dependencies:
- browserslist "^4.0.0"
- caniuse-api "^3.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
-
-postcss-reduce-transforms@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
- integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
- dependencies:
- cssnano-util-get-match "^4.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-selector-parser@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865"
- integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=
- dependencies:
- dot-prop "^4.1.1"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
-postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.4:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
- integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==
- dependencies:
- cssesc "^2.0.0"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
-postcss-selector-parser@^6.0.0:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
- integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==
- dependencies:
- cssesc "^3.0.0"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
-postcss-svgo@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258"
- integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==
- dependencies:
- is-svg "^3.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
- svgo "^1.0.0"
-
-postcss-unique-selectors@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
- integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
- dependencies:
- alphanum-sort "^1.0.0"
- postcss "^7.0.0"
- uniqs "^2.0.0"
-
-postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
- integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
-
-postcss@^6.0.1, postcss@^6.0.23, postcss@^6.0.9:
- version "6.0.23"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
- integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==
- dependencies:
- chalk "^2.4.1"
- source-map "^0.6.1"
- supports-color "^5.4.0"
-
-postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.14, postcss@^7.0.5:
- version "7.0.16"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2"
- integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA==
- dependencies:
- chalk "^2.4.2"
- source-map "^0.6.1"
- supports-color "^6.1.0"
-
-prettier@1.16.3:
- version "1.16.3"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d"
- integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==
-
-pretty-hrtime@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
- integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=
-
-private@^0.1.6, private@~0.1.5:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
- integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
-
-process-nextick-args@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
- integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
-
-process@^0.11.10:
- version "0.11.10"
- resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
- integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
-
-promise-inflight@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
- integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
-
-proxy-addr@~2.0.4:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34"
- integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==
- dependencies:
- forwarded "~0.1.2"
- ipaddr.js "1.9.0"
-
-prr@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
- integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
-
-pseudomap@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
- integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
-
-public-encrypt@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
- integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
- dependencies:
- 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@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
- integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.1"
-
-pump@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
- integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.1"
-
-pumpify@^1.3.3:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
- integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
- dependencies:
- duplexify "^3.6.0"
- inherits "^2.0.3"
- pump "^2.0.0"
-
-punycode@1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
- integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
-
-punycode@^1.2.4:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
- integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
-
-punycode@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
- integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-
-q@^1.1.2:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
- integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
-
-qs@6.5.2:
- version "6.5.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
- integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
-
-querystring-es3@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
- integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
-
-querystring@0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
- integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
-
-querystringify@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
- integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==
-
-randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
- integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
- dependencies:
- safe-buffer "^5.1.0"
-
-randomfill@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
- integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
- dependencies:
- randombytes "^2.0.5"
- safe-buffer "^5.1.0"
-
-range-parser@^1.2.1, range-parser@~1.2.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
- integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-
-raw-body@2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
- integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==
- dependencies:
- bytes "3.0.0"
- http-errors "1.6.3"
- iconv-lite "0.4.23"
- unpipe "1.0.0"
-
-rc@^1.2.7:
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
- integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
- dependencies:
- deep-extend "^0.6.0"
- ini "~1.3.0"
- minimist "^1.2.0"
- strip-json-comments "~2.0.1"
-
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
- version "2.3.6"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
- integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
- dependencies:
- 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"
-
-readable-stream@^3.0.6:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.3.0.tgz#cb8011aad002eb717bf040291feba8569c986fb9"
- integrity sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==
- dependencies:
- inherits "^2.0.3"
- string_decoder "^1.1.1"
- util-deprecate "^1.0.1"
-
-readdirp@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
- integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
- dependencies:
- graceful-fs "^4.1.11"
- micromatch "^3.1.10"
- readable-stream "^2.0.2"
-
-recast@~0.11.12:
- version "0.11.23"
- resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3"
- integrity sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=
- dependencies:
- ast-types "0.9.6"
- esprima "~3.1.0"
- private "~0.1.5"
- source-map "~0.5.0"
-
-regenerate-unicode-properties@^8.0.2:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e"
- integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==
- dependencies:
- regenerate "^1.4.0"
-
-regenerate@^1.2.1, regenerate@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
- integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
-
-regenerator-runtime@^0.13.2:
- version "0.13.2"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447"
- integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==
-
-regenerator-transform@^0.13.4:
- version "0.13.4"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb"
- integrity sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==
- dependencies:
- private "^0.1.6"
-
-regex-not@^1.0.0, regex-not@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
- integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
- dependencies:
- extend-shallow "^3.0.2"
- safe-regex "^1.1.0"
-
-regexp-tree@^0.1.0:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.6.tgz#84900fa12fdf428a2ac25f04300382a7c0148479"
- integrity sha512-LFrA98Dw/heXqDojz7qKFdygZmFoiVlvE1Zp7Cq2cvF+ZA+03Gmhy0k0PQlsC1jvHPiTUSs+pDHEuSWv6+6D7w==
-
-regexpu-core@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
- integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=
- dependencies:
- regenerate "^1.2.1"
- regjsgen "^0.2.0"
- regjsparser "^0.1.4"
-
-regexpu-core@^4.5.4:
- version "4.5.4"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae"
- integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==
- dependencies:
- regenerate "^1.4.0"
- regenerate-unicode-properties "^8.0.2"
- regjsgen "^0.5.0"
- regjsparser "^0.6.0"
- unicode-match-property-ecmascript "^1.0.4"
- unicode-match-property-value-ecmascript "^1.1.0"
-
-regjsgen@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
- integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
-
-regjsgen@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd"
- integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==
-
-regjsparser@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
- integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=
- dependencies:
- jsesc "~0.5.0"
-
-regjsparser@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c"
- integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==
- dependencies:
- jsesc "~0.5.0"
-
-relateurl@0.2.x:
- version "0.2.7"
- resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
- integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
-
-remove-trailing-separator@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
- integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
-
-repeat-element@^1.1.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
- integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
-
-repeat-string@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
- integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
-
-replace-ext@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
- integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
-
-require-directory@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
- integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
-
-require-from-string@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
- integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
-
-require-main-filename@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
- integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
-
-requires-port@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
- integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
-
-resolve-cwd@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
- integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
- dependencies:
- resolve-from "^3.0.0"
-
-resolve-dir@^1.0.0, resolve-dir@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
- integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
- dependencies:
- expand-tilde "^2.0.0"
- global-modules "^1.0.0"
-
-resolve-from@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
- integrity sha1-six699nWiBvItuZTM17rywoYh0g=
-
-resolve-url@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
- integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-
-resolve@^1.3.2, resolve@^1.8.1:
- version "1.10.1"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18"
- integrity sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==
- dependencies:
- path-parse "^1.0.6"
-
-ret@~0.1.10:
- version "0.1.15"
- resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
- integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-
-rgb-regex@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
- integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
-
-rgba-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
- integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
-
-rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3:
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
- integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
- dependencies:
- glob "^7.1.3"
-
-ripemd160@^2.0.0, ripemd160@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
- integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
- dependencies:
- hash-base "^3.0.0"
- inherits "^2.0.1"
-
-run-queue@^1.0.0, run-queue@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
- integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
- dependencies:
- aproba "^1.1.1"
-
-safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
- integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-safe-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
- integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
- dependencies:
- ret "~0.1.10"
-
-"safer-buffer@>= 2.1.2 < 3":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
- integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-
-sax@^1.2.4, sax@~1.2.4:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
- integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
-
-schema-utils@^0.4.5:
- version "0.4.7"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
- integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==
- dependencies:
- ajv "^6.1.0"
- ajv-keywords "^3.1.0"
-
-schema-utils@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
- integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
- dependencies:
- ajv "^6.1.0"
- ajv-errors "^1.0.0"
- ajv-keywords "^3.1.0"
-
-select-hose@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
- integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
-
-selfsigned@^1.10.4:
- version "1.10.4"
- resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd"
- integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==
- dependencies:
- node-forge "0.7.5"
-
-semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
- integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
-
-semver@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65"
- integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==
-
-send@0.16.2:
- version "0.16.2"
- resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
- integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==
- dependencies:
- 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.6.2"
- mime "1.4.1"
- ms "2.0.0"
- on-finished "~2.3.0"
- range-parser "~1.2.0"
- statuses "~1.4.0"
-
-serialize-javascript@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65"
- integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==
-
-serve-index@^1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
- integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=
- dependencies:
- 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"
-
-serve-static@1.13.2:
- version "1.13.2"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
- integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==
- dependencies:
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- parseurl "~1.3.2"
- send "0.16.2"
-
-set-blocking@^2.0.0, set-blocking@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
- integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
-
-set-value@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
- integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE=
- dependencies:
- extend-shallow "^2.0.1"
- is-extendable "^0.1.1"
- is-plain-object "^2.0.1"
- to-object-path "^0.3.0"
-
-set-value@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
- integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==
- dependencies:
- extend-shallow "^2.0.1"
- is-extendable "^0.1.1"
- is-plain-object "^2.0.3"
- split-string "^3.0.1"
-
-setimmediate@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
- integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
-
-setprototypeof@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
- integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
-
-sha.js@^2.4.0, sha.js@^2.4.8:
- version "2.4.11"
- resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
- integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
-shebang-command@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
- integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
- dependencies:
- shebang-regex "^1.0.0"
-
-shebang-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
- integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
-
-shellwords@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
- integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
-
-signal-exit@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
- integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
-
-simple-swizzle@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
- integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
- dependencies:
- is-arrayish "^0.3.1"
-
-slash@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
- integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
-
-snapdragon-node@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
- integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
- dependencies:
- define-property "^1.0.0"
- isobject "^3.0.0"
- snapdragon-util "^3.0.1"
-
-snapdragon-util@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
- integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
- dependencies:
- kind-of "^3.2.0"
-
-snapdragon@^0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
- integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
- dependencies:
- 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"
-
-sockjs-client@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177"
- integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==
- dependencies:
- 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"
-
-sockjs@0.3.19:
- version "0.3.19"
- resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
- integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==
- dependencies:
- faye-websocket "^0.10.0"
- uuid "^3.0.1"
-
-source-list-map@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
- integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
-
-source-map-resolve@^0.5.0:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
- integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
- dependencies:
- 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@~0.5.10:
- version "0.5.12"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599"
- integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==
- dependencies:
- buffer-from "^1.0.0"
- source-map "^0.6.0"
-
-source-map-url@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
- integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
-
-source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
- integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-
-source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
- integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-spdy-transport@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
- integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
- dependencies:
- 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"
-
-spdy@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52"
- integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==
- dependencies:
- debug "^4.1.0"
- handle-thing "^2.0.0"
- http-deceiver "^1.2.7"
- select-hose "^2.0.0"
- spdy-transport "^3.0.0"
-
-split-string@^3.0.1, split-string@^3.0.2:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
- integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
- dependencies:
- extend-shallow "^3.0.0"
-
-sprintf-js@~1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
- integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-
-ssri@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
- integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
- dependencies:
- figgy-pudding "^3.5.1"
-
-stable@^0.1.8:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
- integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
-
-stackframe@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b"
- integrity sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==
-
-static-extend@^0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
- integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
- dependencies:
- define-property "^0.2.5"
- object-copy "^0.1.0"
-
-"statuses@>= 1.4.0 < 2":
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
- integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
-
-statuses@~1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
- integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==
-
-stream-browserify@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
- integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
- dependencies:
- inherits "~2.0.1"
- readable-stream "^2.0.2"
-
-stream-each@^1.1.0:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
- integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
- dependencies:
- end-of-stream "^1.1.0"
- stream-shift "^1.0.0"
-
-stream-http@^2.7.2:
- version "2.8.3"
- resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
- integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
- dependencies:
- 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@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
- integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
-
-string-width@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
-
-"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
- integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
- dependencies:
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^4.0.0"
-
-string_decoder@^1.0.0, string_decoder@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
- integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==
- dependencies:
- safe-buffer "~5.1.0"
-
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
-
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
- integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
- dependencies:
- ansi-regex "^2.0.0"
-
-strip-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
- integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
- dependencies:
- ansi-regex "^3.0.0"
-
-strip-eof@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
- integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
-
-strip-json-comments@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
- integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
-
-style-loader@^0.23.1:
- version "0.23.1"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925"
- integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==
- dependencies:
- loader-utils "^1.1.0"
- schema-utils "^1.0.0"
-
-stylehacks@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
- integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
- dependencies:
- browserslist "^4.0.0"
- postcss "^7.0.0"
- postcss-selector-parser "^3.0.0"
-
-supports-color@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
- integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-
-supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
- dependencies:
- has-flag "^3.0.0"
-
-supports-color@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
- integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
- dependencies:
- has-flag "^3.0.0"
-
-svgo@^1.0.0:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.2.tgz#0253d34eccf2aed4ad4f283e11ee75198f9d7316"
- integrity sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA==
- dependencies:
- 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.28"
- css-url-regex "^1.1.0"
- csso "^3.5.1"
- 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"
-
-tailwindcss@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-1.0.1.tgz#3116e989c64540f1c11214e8b4c08b6aea548be5"
- integrity sha512-tNyvmizhIY9ydXX8m84S/69851QROZzbH6RB/Q4w0K27OssupGcyXeD8zumzb9Yuzq6PifBH2A6ehjuBPklnYA==
- dependencies:
- autoprefixer "^9.4.5"
- bytes "^3.0.0"
- chalk "^2.4.1"
- fs-extra "^8.0.0"
- lodash "^4.17.11"
- node-emoji "^1.8.1"
- normalize.css "^8.0.1"
- postcss "^7.0.11"
- postcss-functions "^3.0.0"
- postcss-js "^2.0.0"
- postcss-nested "^4.1.1"
- postcss-selector-parser "^6.0.0"
- pretty-hrtime "^1.0.3"
-
-tapable@^1.0.0, tapable@^1.1.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
- integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
-
-tar@^4:
- version "4.4.8"
- resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d"
- integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==
- dependencies:
- chownr "^1.1.1"
- fs-minipass "^1.2.5"
- minipass "^2.3.4"
- minizlib "^1.1.1"
- mkdirp "^0.5.0"
- safe-buffer "^5.1.2"
- yallist "^3.0.2"
-
-terser-webpack-plugin@^1.1.0:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.4.tgz#56f87540c28dd5265753431009388f473b5abba3"
- integrity sha512-64IiILNQlACWZLzFlpzNaG0bpQ4ytaB7fwOsbpsdIV70AfLUmIGGeuKL0YV2WmtcrURjE2aOvHD4/lrFV3Rg+Q==
- dependencies:
- cacache "^11.3.2"
- find-cache-dir "^2.0.0"
- is-wsl "^1.1.0"
- schema-utils "^1.0.0"
- serialize-javascript "^1.7.0"
- source-map "^0.6.1"
- terser "^3.17.0"
- webpack-sources "^1.3.0"
- worker-farm "^1.7.0"
-
-terser@^3.11.0, terser@^3.17.0:
- version "3.17.0"
- resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2"
- integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==
- dependencies:
- commander "^2.19.0"
- source-map "~0.6.1"
- source-map-support "~0.5.10"
-
-through2@^2.0.0:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
- integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
- dependencies:
- readable-stream "~2.3.6"
- xtend "~4.0.1"
-
-through@~2.3.6:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
- integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
-
-thunky@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826"
- integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==
-
-timers-browserify@^2.0.4:
- version "2.0.10"
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae"
- integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==
- dependencies:
- setimmediate "^1.0.4"
-
-timsort@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
- integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
-
-to-arraybuffer@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
- integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
-
-to-fast-properties@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
- integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
-
-to-object-path@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
- integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
- dependencies:
- kind-of "^3.0.2"
-
-to-regex-range@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
- integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
- dependencies:
- is-number "^3.0.0"
- repeat-string "^1.6.1"
-
-to-regex@^3.0.1, to-regex@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
- integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
- dependencies:
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- regex-not "^1.0.2"
- safe-regex "^1.1.0"
-
-trim-right@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
- integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
-
-tslib@^1.9.0:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
- integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
-
-tty-browserify@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
- integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
-
-type-is@~1.6.16:
- version "1.6.18"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
- integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
- dependencies:
- media-typer "0.3.0"
- mime-types "~2.1.24"
-
-typedarray@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
- integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-
-uglify-js@3.4.x:
- version "3.4.10"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f"
- integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==
- dependencies:
- commander "~2.19.0"
- source-map "~0.6.1"
-
-unicode-canonical-property-names-ecmascript@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
- integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
-
-unicode-match-property-ecmascript@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
- integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
- dependencies:
- unicode-canonical-property-names-ecmascript "^1.0.4"
- unicode-property-aliases-ecmascript "^1.0.4"
-
-unicode-match-property-value-ecmascript@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277"
- integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==
-
-unicode-property-aliases-ecmascript@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57"
- integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==
-
-union-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
- integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=
- dependencies:
- arr-union "^3.1.0"
- get-value "^2.0.6"
- is-extendable "^0.1.1"
- set-value "^0.4.3"
-
-uniq@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
- integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
-
-uniqs@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
- integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
-
-unique-filename@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
- integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
- dependencies:
- unique-slug "^2.0.0"
-
-unique-slug@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6"
- integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==
- dependencies:
- imurmurhash "^0.1.4"
-
-universalify@^0.1.0:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
- integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
-
-unpipe@1.0.0, unpipe@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
- integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
-
-unquote@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
- integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
-
-unset-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
- integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
- dependencies:
- has-value "^0.3.1"
- isobject "^3.0.0"
-
-upath@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
- integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
-
-upper-case@^1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
- integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=
-
-uri-js@^4.2.2:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
- integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
- dependencies:
- punycode "^2.1.0"
-
-urix@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
- integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
-
-url-parse@^1.4.3:
- version "1.4.7"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278"
- integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==
- dependencies:
- querystringify "^2.1.1"
- requires-port "^1.0.0"
-
-url@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
- integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
- dependencies:
- punycode "1.3.2"
- querystring "0.2.0"
-
-use@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
- integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
-
-util-deprecate@^1.0.1, util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-
-util.promisify@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
- integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
- dependencies:
- define-properties "^1.1.2"
- object.getownpropertydescriptors "^2.0.3"
-
-util@0.10.3:
- version "0.10.3"
- resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
- integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
- dependencies:
- inherits "2.0.1"
-
-util@^0.11.0:
- version "0.11.1"
- resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
- integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
- dependencies:
- inherits "2.0.3"
-
-utils-merge@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
- integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-
-uuid@^3.0.1, uuid@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
- integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
-
-v8-compile-cache@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
- integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==
-
-vary@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
- integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
-
-vendors@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0"
- integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==
-
-vm-browserify@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
- integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=
- dependencies:
- indexof "0.0.1"
-
-vue-hot-reload-api@^2.3.0:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf"
- integrity sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g==
-
-vue-loader@^15.4.2:
- version "15.7.0"
- resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.7.0.tgz#27275aa5a3ef4958c5379c006dd1436ad04b25b3"
- integrity sha512-x+NZ4RIthQOxcFclEcs8sXGEWqnZHodL2J9Vq+hUz+TDZzBaDIh1j3d9M2IUlTjtrHTZy4uMuRdTi8BGws7jLA==
- dependencies:
- "@vue/component-compiler-utils" "^2.5.1"
- hash-sum "^1.0.2"
- loader-utils "^1.1.0"
- vue-hot-reload-api "^2.3.0"
- vue-style-loader "^4.1.0"
-
-vue-style-loader@^4.1.0:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.2.tgz#dedf349806f25ceb4e64f3ad7c0a44fba735fcf8"
- integrity sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==
- dependencies:
- hash-sum "^1.0.2"
- loader-utils "^1.0.2"
-
-vue-template-compiler@^2.6.10:
- version "2.6.10"
- resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc"
- integrity sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==
- dependencies:
- de-indent "^1.0.2"
- he "^1.1.0"
-
-vue-template-es2015-compiler@^1.9.0:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
- integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
-
-watchpack@^1.5.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
- integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==
- dependencies:
- chokidar "^2.0.2"
- graceful-fs "^4.1.2"
- neo-async "^2.5.0"
-
-wbuf@^1.1.0, wbuf@^1.7.3:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
- integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
- dependencies:
- minimalistic-assert "^1.0.0"
-
-webpack-cli@^3.1.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.2.tgz#aed2437b0db0a7faa2ad28484e166a5360014a91"
- integrity sha512-FLkobnaJJ+03j5eplxlI0TUxhGCOdfewspIGuvDVtpOlrAuKMFC57K42Ukxqs1tn8947/PM6tP95gQc0DCzRYA==
- dependencies:
- chalk "^2.4.1"
- cross-spawn "^6.0.5"
- enhanced-resolve "^4.1.0"
- findup-sync "^2.0.0"
- global-modules "^1.0.0"
- import-local "^2.0.0"
- interpret "^1.1.0"
- loader-utils "^1.1.0"
- supports-color "^5.5.0"
- v8-compile-cache "^2.0.2"
- yargs "^12.0.5"
-
-webpack-dev-middleware@^3.6.2:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff"
- integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==
- dependencies:
- memory-fs "^0.4.1"
- mime "^2.4.2"
- range-parser "^1.2.1"
- webpack-log "^2.0.0"
-
-webpack-dev-server@^3.1.14:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.3.1.tgz#7046e49ded5c1255a82c5d942bcdda552b72a62d"
- integrity sha512-jY09LikOyGZrxVTXK0mgIq9y2IhCoJ05848dKZqX1gAGLU1YDqgpOT71+W53JH/wI4v6ky4hm+KvSyW14JEs5A==
- dependencies:
- ansi-html "0.0.7"
- bonjour "^3.5.0"
- chokidar "^2.1.5"
- compression "^1.7.4"
- connect-history-api-fallback "^1.6.0"
- debug "^4.1.1"
- del "^4.1.0"
- express "^4.16.4"
- html-entities "^1.2.1"
- http-proxy-middleware "^0.19.1"
- import-local "^2.0.0"
- internal-ip "^4.2.0"
- ip "^1.1.5"
- killable "^1.0.1"
- loglevel "^1.6.1"
- opn "^5.5.0"
- portfinder "^1.0.20"
- schema-utils "^1.0.0"
- selfsigned "^1.10.4"
- semver "^6.0.0"
- serve-index "^1.9.1"
- sockjs "0.3.19"
- sockjs-client "1.3.0"
- spdy "^4.0.0"
- strip-ansi "^3.0.1"
- supports-color "^6.1.0"
- url "^0.11.0"
- webpack-dev-middleware "^3.6.2"
- webpack-log "^2.0.0"
- yargs "12.0.5"
-
-webpack-log@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f"
- integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==
- dependencies:
- ansi-colors "^3.0.0"
- uuid "^3.3.2"
-
-webpack-merge@^4.1.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4"
- integrity sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==
- dependencies:
- lodash "^4.17.5"
-
-webpack-notifier@^1.5.1:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/webpack-notifier/-/webpack-notifier-1.7.0.tgz#4e03ea3ba1c0588d863935363f145d067815068a"
- integrity sha512-L3UKrl500xk0VDYKkwQxy5/BPhBWsZ2xHsAx2Qe3dVKYUEk9+y690RcNTMIUcVOK2fRgK7KK3PA4ccOq1h+fTg==
- dependencies:
- node-notifier "^5.1.2"
- object-assign "^4.1.0"
- strip-ansi "^3.0.1"
-
-webpack-sources@^1.1.0, webpack-sources@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85"
- integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==
- dependencies:
- source-list-map "^2.0.0"
- source-map "~0.6.1"
-
-webpack@^4.27.1:
- version "4.31.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.31.0.tgz#ae201d45f0571336e42d1c2b5c8ab56c4d3b0c63"
- integrity sha512-n6RVO3X0LbbipoE62akME9K/JI7qYrwwufs20VvgNNpqUoH4860KkaxJTbGq5bgkVZF9FqyyTG/0WPLH3PVNJA==
- dependencies:
- "@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.0.5"
- acorn-dynamic-import "^4.0.0"
- ajv "^6.1.0"
- ajv-keywords "^3.1.0"
- chrome-trace-event "^1.0.0"
- enhanced-resolve "^4.1.0"
- eslint-scope "^4.0.0"
- json-parse-better-errors "^1.0.2"
- loader-runner "^2.3.0"
- loader-utils "^1.1.0"
- memory-fs "~0.4.1"
- micromatch "^3.1.8"
- mkdirp "~0.5.0"
- neo-async "^2.5.0"
- node-libs-browser "^2.0.0"
- schema-utils "^1.0.0"
- tapable "^1.1.0"
- terser-webpack-plugin "^1.1.0"
- watchpack "^1.5.0"
- webpack-sources "^1.3.0"
-
-websocket-driver@>=0.5.1:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb"
- integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=
- dependencies:
- http-parser-js ">=0.4.0"
- websocket-extensions ">=0.1.1"
-
-websocket-extensions@>=0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
- integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==
-
-which-module@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
- integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-
-which@^1.2.14, which@^1.2.9, which@^1.3.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
- integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
- dependencies:
- isexe "^2.0.0"
-
-wide-align@^1.1.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
- integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
- dependencies:
- string-width "^1.0.2 || 2"
-
-worker-farm@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
- integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
- dependencies:
- errno "~0.1.7"
-
-wrap-ansi@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
- integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
- dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-
-xtend@^4.0.0, xtend@~4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
- integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
-
-"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
- integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
-
-yallist@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
- integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
-
-yallist@^3.0.0, yallist@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
- integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
-
-yargs-parser@^11.1.1:
- version "11.1.1"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
- integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==
- dependencies:
- camelcase "^5.0.0"
- decamelize "^1.2.0"
-
-yargs@12.0.5, yargs@^12.0.5:
- version "12.0.5"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
- integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==
- dependencies:
- 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"
From 11b209424440caa8ebf6e82fd7c3ff696fc9fe43 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 16 Oct 2019 13:40:11 +0100
Subject: [PATCH 02/47] Add missing files
---
CHANGELOG.md | 19 ++++++
Makefile | 42 ++++++++++++
README.md | 157 ++++++++++++++++++++++++++++++++++++++++----
snap/snapcraft.yaml | 21 ++++++
4 files changed, 228 insertions(+), 11 deletions(-)
create mode 100644 CHANGELOG.md
create mode 100644 Makefile
create mode 100644 snap/snapcraft.yaml
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..db6ea21
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,19 @@
+# Changelog
+
+## 0.2.0
+
+### Features
+
+* Added `new` command to create new snippets from command line.
+* new `--run` flag for `search` command to run the selected snippet
+* Added ability to create snippets from the `web` interface.
+
+### Changes
+
+* `search` command now copies the selected snippet instead of running.
+* Updated Crystal to `0.30.1`
+* Updated `lodash` dependency for `web` interface.
+
+### Bugfixes
+
+None!
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..45a7ca0
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,42 @@
+PREFIX=/usr/local
+INSTALL_DIR=$(PREFIX)/bin
+SNIPCLI_SYSTEM=$(INSTALL_DIR)/snipcli
+
+OUT_DIR=./bin
+SNIPCLI=$(OUT_DIR)/snipcli
+SNIPCLI_SOURCES=$(shell find src/ -type f -name '*.cr')
+
+all: build
+
+build: lib $(SNIPCLI)
+
+lib:
+ @shards install --production
+
+$(SNIPCLI): $(SNIPCLI_SOURCES) | $(OUT_DIR)
+ @echo "Building snipcli in $@"
+ @crystal build -o $@ src/snipline_cli.cr -p --no-debug --release
+
+$(OUT_DIR) $(INSTALL_DIR):
+ @mkdir -p $@
+
+run:
+ $(SNIPCLI)
+
+install: build | $(INSTALL_DIR)
+ @rm -f $(SNIPCLI_SYSTEM)
+ @cp $(SNIPCLI) $(SNIPCLI_SYSTEM)
+
+link: build | $(INSTALL_DIR)
+ @echo "Symlinking $(SNIPCLI) to $(SNIPCLI_SYSTEM)"
+ @ln -s $(SNIPCLI) $(SNIPCLI_SYSTEM)
+
+force_link: build | $(INSTALL_DIR)
+ @echo "Symlinking $(SNIPCLI) to $(SNIPCLI_SYSTEM)"
+ @ln -sf $(SNIPCLI) $(SNIPCLI_SYSTEM)
+
+clean:
+ rm -rf $(SNIPCLI)
+
+distclean:
+ rm -rf $(SNIPCLI) .crystal .shards libs lib
\ No newline at end of file
diff --git a/README.md b/README.md
index 84c04f3..c2e929d 100644
--- a/README.md
+++ b/README.md
@@ -1,27 +1,162 @@
-# cli2
+# Snipline CLI
-TODO: Write a description here
+Snipline CLI is the command-line tool for [Snipline](https://snipline.io).
+
+![SnipCLI Preview](https://f002.backblazeb2.com/file/ms-uploads/snipline/2019-07-10%2010.41.26.gif)
+
+Snipline CLI allows you to search and run commands from your Snipline account directly through the command-line. It is also possible to use this for free without a Snipline account (See the documentation on using without a Snipline Account).
## Installation
-TODO: Write installation instructions here
+### Homebrew (MacOS and Linux)
+
+Snipline CLI is available through Homebrew for MacOS and Linux.
+
+```bash
+brew install snipline/snipline/snipcli
+```
+
+### Snapcraft (Linux)
+
+Linux users can download via Snapcraft
+
+```
+sudo snap install snipcli --beta
+```
+
+### From source
+
+Snipline CLI requires Crystal 0.29.0 to be installed to install from source
+
+```bash
+# Install dependencies
+shards
+# Build app
+crystal build src/snipline_cli.cr -o snipcli --release
+```
## Usage
-TODO: Write usage instructions here
+### Syncing to Snipline
+
+Log-in to your Snipline account and sync your snippets.
+
+Follow login instructions (Enter email and token)
+
+```bash
+snipcli login
+```
+
+Download snippets from your account
+
+```bash
+snipcli sync
+```
+
+This will create two files on your system: `~/.config/snipline/config.toml` and `~/.config/snipline/snippets.json`.
+
+### Searching snippets
+
+A basic search can be done with the `search` command.
+
+```bash
+snipcli search
+```
+
+By default search will ask if you wish to copy the result to clipboard, to run the result in the current terminal, use the `run` flag.
+
+```bash
+snipline search --run
+```
+
+Search options include `field`, `limit`, `run`. See `snipcli search --help` for more information
+
+Note that as of 0.2.0 it's not possible to search and copy to clipboard from a Linux VM/SSH session. Select `no` when prompted to copy to clipboard to continue and use the `--run` flag to run the command instead.
+
+### Creating a new snippet
+
+You can create a new snippet by using the `new` command. This will open a TOML file in the text editor of your preference. Once closed it will attempt to add it to your `snippets.json` file and sync to Snipline Cloud.
+
+```bash
+snipline new
+```
+
+### Web interface
+
+Snipline CLI comes with a lightweight web interface. To use it run
+
+```
+snipcli web
+```
+
+You can then view and edit snippets through a web browser. By default this works locally on port 9876, however, you can specify it to be accessible remotely with the following arguments.
+
+```bash
+snipcli web -p 3000 -b 0.0.0.0
+```
+
+### Using Snipline CLI without a Snipline Account
+
+Snipline CLI can be used without an active Snipline account. But requires either manually entering data in the `~/.config/snipline/snippets.json` file or using the `web` interface.
+
+To generate the initial configuration files use the `init` command.
+
+```bash
+snipcli init
+```
+
+At this moment the web interface does not support CRUD commands and manual entry is required.
+
+Here is an example ~/.config/snipline/snipets.json` file to get started.
+
+Note that `id` of `null` means that it has not been synced to a Snipline account. It will be lost if `snipcli sync` is ever run to fetch snippets from Snipline.
+
+```json
+[
+ {
+ "id":null,
+ "type":"snippets",
+ "attributes":
+ {
+ "is-pinned":false,
+ "name":"Symlink directory",
+ "real-command":"ln -s #{[Source]} #{[Destination]}",
+ "tags":["file", "linux"]
+ }
+ }
+]
+```
## Development
-TODO: Write development instructions here
+See the Installation section on building from source.
+
+Set log levels for additional development output.
+
+```bash
+crystal build src/snipline_cli.cr -o snipcli
+env LOG_LEVEL=DEBUG ./snipcli search git
+```
+
+To change the config file location (For testing) use the `CONFIG_FILE` environment variable.
+
+```bash
+env CONFIG_FILE=./spec/fixtures/config.toml ./snipcli search git
+```
## Contributing
-1. Fork it ()
-2. Create your feature branch (`git checkout -b my-new-feature`)
-3. Commit your changes (`git commit -am 'Add some feature'`)
-4. Push to the branch (`git push origin my-new-feature`)
-5. Create a new Pull Request
+See the [Contributing guide](CONTRIBUTING.md) for details.
+
+## TODO
+
+* More tests.
+* Create snippets through web interface.
+* Edit snippets through web interface.
+* Delete snippets through web interface.
+* More documentation (Including usage without a Snipline account).
+* Table formatting for search results.
## Contributors
-- [Mitchell Stanley](https://github.com/your-github-user) - creator and maintainer
+- [Mitchell Stanley](https://github.com/acoustep) - creator and maintainer
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
new file mode 100644
index 0000000..25e66f1
--- /dev/null
+++ b/snap/snapcraft.yaml
@@ -0,0 +1,21 @@
+name: snipcli
+version: 0.2.0
+summary: Shell Snippet organiser
+description: >
+ Snipcli is a commandline interface for managing shell commands. Sync commands with your Snipline account or use in guest mode. Snipline lets you dynamically change command parameters easily so you never have to remember how to build a command.
+
+confinement: classic
+grade: devel
+
+architectures:
+ - amd64
+ - i386
+
+parts:
+ snipcli:
+ plugin: dump
+ source: https://github.com/snipline/snipcli/releases/download/$SNAPCRAFT_PROJECT_VERSION/snipcli-$SNAPCRAFT_PROJECT_VERSION_linux_x86_64.tar.gz
+
+apps:
+ snipcli:
+ command: snipcli
From ef958f6b14fc83e1d6e24188651051948a239f69 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 16 Oct 2019 14:05:54 +0100
Subject: [PATCH 03/47] Update instructions for 0.3.0
---
README.md | 85 ++++++++++++++++++-------------------------------------
1 file changed, 27 insertions(+), 58 deletions(-)
diff --git a/README.md b/README.md
index c2e929d..6471307 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,9 @@
Snipline CLI is the command-line tool for [Snipline](https://snipline.io).
-![SnipCLI Preview](https://f002.backblazeb2.com/file/ms-uploads/snipline/2019-07-10%2010.41.26.gif)
+![SnipCLI Preview](https://f002.backblazeb2.com/file/snipline/2019-10-14+12.02.35.gif)
-Snipline CLI allows you to search and run commands from your Snipline account directly through the command-line. It is also possible to use this for free without a Snipline account (See the documentation on using without a Snipline Account).
+Snipline CLI allows you to organise your favourite shell commands from the terminal. It can optionally sync to [Snipline](https://snipline.io) account.
## Installation
@@ -26,7 +26,7 @@ sudo snap install snipcli --beta
### From source
-Snipline CLI requires Crystal 0.29.0 to be installed to install from source
+Snipline CLI requires Crystal 0.30.1 to be installed to install from source
```bash
# Install dependencies
@@ -37,6 +37,18 @@ crystal build src/snipline_cli.cr -o snipcli --release
## Usage
+### Using Snipline CLI for free
+
+Snipline CLI can be used without an active Snipline account.
+
+To generate the initial configuration files use the `init` command.
+
+```bash
+snipcli init
+```
+
+The above command will generate a `config.toml` file and a `snippets.json` file in your `~/.config/snipline` directory.
+
### Syncing to Snipline
Log-in to your Snipline account and sync your snippets.
@@ -49,33 +61,33 @@ snipcli login
Download snippets from your account
+**Note:: At the time of writing this will clear any unsynced snippets on your machine. This will be changed with a future update**
+
```bash
snipcli sync
```
-This will create two files on your system: `~/.config/snipline/config.toml` and `~/.config/snipline/snippets.json`.
-
### Searching snippets
A basic search can be done with the `search` command.
```bash
-snipcli search
+snipcli search
```
-By default search will ask if you wish to copy the result to clipboard, to run the result in the current terminal, use the `run` flag.
+If you wish to pre-filter the results you can do so by adding a searchterm and specify the field to search on.
```bash
-snipline search --run
+snipline search --field=tags
```
-Search options include `field`, `limit`, `run`. See `snipcli search --help` for more information
+Search options include `field` and `limit`. See `snipcli search --help` for more information
-Note that as of 0.2.0 it's not possible to search and copy to clipboard from a Linux VM/SSH session. Select `no` when prompted to copy to clipboard to continue and use the `--run` flag to run the command instead.
+Note that as of 0.2.0 it's not possible to search and copy to clipboard from a Linux VM/SSH session. Use `run` to run the command directly from your terminal session.
### Creating a new snippet
-You can create a new snippet by using the `new` command. This will open a TOML file in the text editor of your preference. Once closed it will attempt to add it to your `snippets.json` file and sync to Snipline Cloud.
+You can create a new snippet by using the `new` command. This will open a TOML file in the text editor of your preference. Once closed it will attempt to add it to your `snippets.json` file and sync to your Snipline Account.
```bash
snipline new
@@ -83,49 +95,7 @@ snipline new
### Web interface
-Snipline CLI comes with a lightweight web interface. To use it run
-
-```
-snipcli web
-```
-
-You can then view and edit snippets through a web browser. By default this works locally on port 9876, however, you can specify it to be accessible remotely with the following arguments.
-
-```bash
-snipcli web -p 3000 -b 0.0.0.0
-```
-
-### Using Snipline CLI without a Snipline Account
-
-Snipline CLI can be used without an active Snipline account. But requires either manually entering data in the `~/.config/snipline/snippets.json` file or using the `web` interface.
-
-To generate the initial configuration files use the `init` command.
-
-```bash
-snipcli init
-```
-
-At this moment the web interface does not support CRUD commands and manual entry is required.
-
-Here is an example ~/.config/snipline/snipets.json` file to get started.
-
-Note that `id` of `null` means that it has not been synced to a Snipline account. It will be lost if `snipcli sync` is ever run to fetch snippets from Snipline.
-
-```json
-[
- {
- "id":null,
- "type":"snippets",
- "attributes":
- {
- "is-pinned":false,
- "name":"Symlink directory",
- "real-command":"ln -s #{[Source]} #{[Destination]}",
- "tags":["file", "linux"]
- }
- }
-]
-```
+As of 0.3.0 the web interface has been removed infavour of the new TUI.
## Development
@@ -151,11 +121,10 @@ See the [Contributing guide](CONTRIBUTING.md) for details.
## TODO
* More tests.
-* Create snippets through web interface.
-* Edit snippets through web interface.
-* Delete snippets through web interface.
* More documentation (Including usage without a Snipline account).
-* Table formatting for search results.
+* Syncing local snippets via `snipcli sync`.
+* Editing snippets.
+* Compact search mode.
## Contributors
From 9f60e3f983c8a9d604f4a6597d457726cf485e20 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 16 Oct 2019 14:09:01 +0100
Subject: [PATCH 04/47] Fix some typos
---
README.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 6471307..3495842 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ Snipline CLI is the command-line tool for [Snipline](https://snipline.io).
![SnipCLI Preview](https://f002.backblazeb2.com/file/snipline/2019-10-14+12.02.35.gif)
-Snipline CLI allows you to organise your favourite shell commands from the terminal. It can optionally sync to [Snipline](https://snipline.io) account.
+Snipline CLI allows you to organise your favourite shell commands from the terminal. It can optionally sync to your [Snipline](https://snipline.io) account.
## Installation
@@ -59,7 +59,7 @@ Follow login instructions (Enter email and token)
snipcli login
```
-Download snippets from your account
+### Download snippets from your Snipline account
**Note:: At the time of writing this will clear any unsynced snippets on your machine. This will be changed with a future update**
@@ -75,10 +75,10 @@ A basic search can be done with the `search` command.
snipcli search
```
-If you wish to pre-filter the results you can do so by adding a searchterm and specify the field to search on.
+If you wish to pre-filter the results you can do so by adding a search term and specify the field to search on.
```bash
-snipline search --field=tags
+snipcli search --field=tags
```
Search options include `field` and `limit`. See `snipcli search --help` for more information
@@ -90,7 +90,7 @@ Note that as of 0.2.0 it's not possible to search and copy to clipboard from a L
You can create a new snippet by using the `new` command. This will open a TOML file in the text editor of your preference. Once closed it will attempt to add it to your `snippets.json` file and sync to your Snipline Account.
```bash
-snipline new
+snipcli new
```
### Web interface
From 585b9f26e9c18aedb0ec9f2327b3b4d6443aa63a Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 24 Oct 2019 15:12:29 +0100
Subject: [PATCH 05/47] Better flow for snipcli init command
---
src/snipline_cli/commands/init.cr | 15 ++++++++++-----
src/snipline_cli/commands/sync.cr | 6 ++++++
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr
index 7420747..3030b37 100644
--- a/src/snipline_cli/commands/init.cr
+++ b/src/snipline_cli/commands/init.cr
@@ -15,7 +15,7 @@ module SniplineCli
title = "Snipline"
[api]
- url = ""
+ url = "#{config.get("api.url")}"
token = ""
[general]
@@ -25,13 +25,18 @@ module SniplineCli
SniplineCli::Services::CreateConfigDirectory.run(SniplineCli.config_file)
File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w")
+ puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}"
unless File.exists?(File.expand_path(config.get("general.file")))
File.write(File.expand_path(config.get("general.file")), "[]", mode: "w")
- puts "Created #{config.get("general.file").colorize.mode(:bold)}"
+ puts "Created JSON file in #{File.expand_path(config.get("general.file")).colorize.mode(:bold)}"
end
- puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}"
- puts "Add your snippets to #{File.expand_path(config.get("general.file"))}"
- puts "See documentation for more information https://github.com/snipline/snipcli#using-snipline-cli-without-a-snipline-account"
+ puts ""
+ puts "Run #{"snipcli new".colorize.mode(:bold)} to create your first snippet"
+ puts "Search snippets with #{"snipcli search".colorize.mode(:bold)}"
+ puts ""
+ puts "See documentation for more information #{"https://github.com/snipline/snipcli".colorize.mode(:bold)}"
+ puts ""
+ puts "Happy Coding!"
end
end
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index ea11e8f..8e3e60b 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -18,6 +18,12 @@ module SniplineCli
def run
puts "Syncing snippets..."
+ config = SniplineCli.config
+ puts config.get("api.token")
+ if config.get("api.token") == ""
+ puts "#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}"
+ exit(1)
+ end
@snipline_api.fetch do |body|
# Save the response JSON into a file without the data wrapper
snippets = Models::SnippetDataWrapper.from_json(body).data.to_json
From cdfb4f403b397ff8b3384cf457ec3ef43ee22974 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 24 Oct 2019 15:13:42 +0100
Subject: [PATCH 06/47] Change sync failure to abort
---
src/snipline_cli/commands/sync.cr | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index 8e3e60b..a9de355 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -21,8 +21,7 @@ module SniplineCli
config = SniplineCli.config
puts config.get("api.token")
if config.get("api.token") == ""
- puts "#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}"
- exit(1)
+ abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}")
end
@snipline_api.fetch do |body|
# Save the response JSON into a file without the data wrapper
From c56b3eaa34b6501aad9b7d0c84723c6be175440a Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 24 Oct 2019 15:25:05 +0100
Subject: [PATCH 07/47] update new snippet command to adhere to cloud sync
options
---
.../services/temp_snippet_editor_file.cr | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr
index 007646a..a659b48 100644
--- a/src/snipline_cli/services/temp_snippet_editor_file.cr
+++ b/src/snipline_cli/services/temp_snippet_editor_file.cr
@@ -16,7 +16,7 @@ This section supports **Markdown**
"""
is_pinned = true
snippet_alias = ""
-sync_to_cloud = true
+sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"}
>
def create
@@ -34,11 +34,20 @@ sync_to_cloud = true
real_command: toml["real_command"].as(String),
documentation: toml["documentation"].as(String),
is_pinned: toml["is_pinned"].as(Bool),
- snippet_alias: toml["snippet_alias"].as(String),
+ snippet_alias: parse_snippet_alias(toml["snippet_alias"]),
tags: [] of String
)
end
+ def parse_snippet_alias(snippet_alias)
+ str = snippet_alias.as(String)
+ if str == ""
+ nil
+ else
+ str
+ end
+ end
+
def sync_to_cloud?
config = SniplineCli.config
toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml")))
From 2735c1921d7842229b28acd8df9c52980594eb90 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 24 Oct 2019 16:38:41 +0100
Subject: [PATCH 08/47] Saving new snippets to snipline on sync
---
src/snipline_cli/commands/search.cr | 6 +++-
src/snipline_cli/commands/sync.cr | 36 +++++++++++++++-----
src/snipline_cli/models/snippet.cr | 6 +++-
src/snipline_cli/models/snippet_attribute.cr | 2 +-
src/snipline_cli/services/search_snippets.cr | 6 +++-
src/snipline_cli/services/snipline_api.cr | 3 ++
6 files changed, 46 insertions(+), 13 deletions(-)
diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr
index b57663e..0cc086f 100644
--- a/src/snipline_cli/commands/search.cr
+++ b/src/snipline_cli/commands/search.cr
@@ -47,7 +47,11 @@ module SniplineCli
if field = flags.field
i.value_for_attribute(field).downcase.includes?(lowered_search_term)
else
- i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.includes?(lowered_search_term)
+ if !i.tags.nil?
+ i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term)
+ else
+ i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term)
+ end
end
}
end
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index a9de355..3d2b4ec 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -23,16 +23,34 @@ module SniplineCli
if config.get("api.token") == ""
abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}")
end
- @snipline_api.fetch do |body|
- # Save the response JSON into a file without the data wrapper
- snippets = Models::SnippetDataWrapper.from_json(body).data.to_json
- begin
- @file.store(snippets)
- rescue ex
- puts ex.message
- end
- end
+
+ sync_unsaved_snippets
+
+ # @snipline_api.fetch do |body|
+ # # Save the response JSON into a file without the data wrapper
+ # snippets = Models::SnippetDataWrapper.from_json(body).data.to_json
+ # begin
+ # @file.store(snippets)
+ # rescue ex
+ # puts ex.message
+ # end
+ # end
end
+
+ def sync_unsaved_snippets
+ SniplineCli::Services::LoadSnippets.run.select { |s| s.id.nil? }.each do |snippet|
+ puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..."
+ begin
+ cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet.attributes)
+ puts "Success!"
+ rescue ex : Crest::UnprocessableEntity
+ resp = SniplineCli::Models::SnippetErrorResponse.from_json(ex.response.not_nil!.body)
+ puts "Failed #{resp.errors.first.source["pointer"]}: #{resp.errors.first.detail}".colorize(:red)
+ rescue ex
+ abort ex.message
+ end
+ end
+ end
end
register_sub_command :sync, Sync
diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr
index 8548b42..f6403e6 100644
--- a/src/snipline_cli/models/snippet.cr
+++ b/src/snipline_cli/models/snippet.cr
@@ -130,7 +130,11 @@ module SniplineCli::Models
when "name"
name || ""
when "tags"
- tags.join(",") || ""
+ if !tags.nil?
+ tags.as(Array(String)).join(",") || ""
+ else
+ ""
+ end
else
""
end
diff --git a/src/snipline_cli/models/snippet_attribute.cr b/src/snipline_cli/models/snippet_attribute.cr
index 21d717c..441562e 100644
--- a/src/snipline_cli/models/snippet_attribute.cr
+++ b/src/snipline_cli/models/snippet_attribute.cr
@@ -20,7 +20,7 @@ module SniplineCli::Models
property real_command : String
@[JSON::Field(key: "tags")]
- property tags : Array(String)
+ property tags : Array(String) | Nil
def initialize(@name : String, @real_command : String, @documentation : String | Nil, @is_pinned : Bool, @snippet_alias : String | Nil, @tags : Array(String))
end
diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr
index 8bb99db..5661d9c 100644
--- a/src/snipline_cli/services/search_snippets.cr
+++ b/src/snipline_cli/services/search_snippets.cr
@@ -16,7 +16,11 @@ module SniplineCli::Services
unless search_term.empty?
lowered_search_term = search_term.downcase
results = results.select do |i|
- i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false)
+ if !i.tags.nil?
+ i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false)
+ else
+ i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false)
+ end
end
end
diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr
index 6981191..fb1014c 100644
--- a/src/snipline_cli/services/snipline_api.cr
+++ b/src/snipline_cli/services/snipline_api.cr
@@ -60,5 +60,8 @@ module SniplineCli::Services
def fetch(&block)
yield "{\"data\":[{\"attributes\":{\"alias\":\"git.sla\",\"documentation\":null,\"is-pinned\":false,\"name\":\"Git log pretty\",\"real-command\":\"git log --oneline --decorate --graph --all\",\"tags\":[]},\"id\":\"0f4846c0-3194-40bb-be77-8c4b136565f4\",\"type\":\"snippets\"}]}"
end
+
+ def create(snippet : SniplineCli::Models::Snippet)
+ end
end
end
From 94df723723f3c180bf2024c868bb8c8bea1be904 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Fri, 25 Oct 2019 13:00:46 +0100
Subject: [PATCH 09/47] Syncing local snippets to snipline
---
src/snipline_cli/commands/sync.cr | 60 ++++++++++++++++++++++++-------
1 file changed, 47 insertions(+), 13 deletions(-)
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index 3d2b4ec..3be2210 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -19,38 +19,72 @@ module SniplineCli
def run
puts "Syncing snippets..."
config = SniplineCli.config
- puts config.get("api.token")
if config.get("api.token") == ""
abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}")
end
sync_unsaved_snippets
+ download_snipline_snippets
- # @snipline_api.fetch do |body|
- # # Save the response JSON into a file without the data wrapper
- # snippets = Models::SnippetDataWrapper.from_json(body).data.to_json
- # begin
- # @file.store(snippets)
- # rescue ex
- # puts ex.message
- # end
- # end
end
+
+ def download_snipline_snippets
+ @snipline_api.fetch do |body|
+ # Save the response JSON into a file without the data wrapper
+ cloud_snippets = Models::SnippetDataWrapper.from_json(body).data
+ local_snippets = SniplineCli::Services::LoadSnippets.run
+ begin
+ # Only snippets that are in the cloud but not stored locally
+ difference = [] of SniplineCli::Models::Snippet
+ local_snippet_ids = local_snippets.map { |s| s.id }
+ cloud_snippets.each do |cs|
+ difference << cs unless local_snippet_exists?(cs, local_snippet_ids)
+ end
+ difference.each do |s|
+ puts "Storing #{s.attributes.name} from Snipline".colorize(:green)
+ local_snippets << s
+ end
+ @file.store(local_snippets.to_json) unless difference.size == 0
+ rescue ex
+ puts ex.message.colorize(:red)
+ end
+ end
+ end
+
+ def local_snippet_exists?(cs, local_snippet_ids)
+ unless cs.id.nil?
+ return local_snippet_ids.includes?(cs.id.not_nil!)
+ end
+ return false
+ end
+
def sync_unsaved_snippets
- SniplineCli::Services::LoadSnippets.run.select { |s| s.id.nil? }.each do |snippet|
+ local_snippets = SniplineCli::Services::LoadSnippets.run
+ local_snippets.select { |s| s.id.nil? }.each do |snippet|
puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..."
begin
cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet.attributes)
- puts "Success!"
+ update_local_snippet_id(cloud_snippet, local_snippets)
+ puts "Success!".colorize(:green)
rescue ex : Crest::UnprocessableEntity
resp = SniplineCli::Models::SnippetErrorResponse.from_json(ex.response.not_nil!.body)
- puts "Failed #{resp.errors.first.source["pointer"]}: #{resp.errors.first.detail}".colorize(:red)
+ puts "Failed: #{resp.errors.first.source["pointer"].gsub("/data/attributes/", "")} #{resp.errors.first.detail}".colorize(:red)
rescue ex
abort ex.message
end
end
end
+
+ def update_local_snippet_id(cloud_snippet, local_snippets)
+ local_snippets = local_snippets.map do |snippet|
+ if snippet.id.nil? && snippet.attributes.snippet_alias == cloud_snippet.attributes.snippet_alias && snippet.name == cloud_snippet.name
+ snippet.id = cloud_snippet.id
+ end
+ snippet
+ end
+ @file.store(local_snippets.to_json)
+ end
end
register_sub_command :sync, Sync
From fb353b3e7bbd92a11737108c113b0c91b5cff7ff Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 31 Oct 2019 13:34:50 +0000
Subject: [PATCH 10/47] Add timestamps to snippets
---
src/snipline_cli/commands/new.cr | 1 +
src/snipline_cli/commands/sync.cr | 2 ++
src/snipline_cli/models/snippet.cr | 8 ++++++++
src/snipline_cli/models/snippet_attribute.cr | 14 ++++++++++++++
4 files changed, 25 insertions(+)
diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr
index 2e7927b..4d2d888 100644
--- a/src/snipline_cli/commands/new.cr
+++ b/src/snipline_cli/commands/new.cr
@@ -27,6 +27,7 @@ module SniplineCli
snippet = if temp_file.sync_to_cloud?
SniplineCli::Services::SyncSnippetToSnipline.handle(snippet_attributes)
else
+ snippet_attributes.set_timestamps()
Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes)
end
if snippet.is_a?(Snippet)
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index 3be2210..8ca5a0f 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -80,6 +80,8 @@ module SniplineCli
local_snippets = local_snippets.map do |snippet|
if snippet.id.nil? && snippet.attributes.snippet_alias == cloud_snippet.attributes.snippet_alias && snippet.name == cloud_snippet.name
snippet.id = cloud_snippet.id
+ snippet.attributes.inserted_at = cloud_snippet.attributes.inserted_at
+ snippet.attributes.updated_at = cloud_snippet.attributes.updated_at
end
snippet
end
diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr
index f6403e6..b3b611f 100644
--- a/src/snipline_cli/models/snippet.cr
+++ b/src/snipline_cli/models/snippet.cr
@@ -39,6 +39,14 @@ module SniplineCli::Models
attributes.is_synced
end
+ def inserted_at
+ attributes.inserted_at
+ end
+
+ def updated_at
+ attributes.updated_at
+ end
+
#
# Params such as variables or select that require input from the user
#
diff --git a/src/snipline_cli/models/snippet_attribute.cr b/src/snipline_cli/models/snippet_attribute.cr
index 441562e..e85bc58 100644
--- a/src/snipline_cli/models/snippet_attribute.cr
+++ b/src/snipline_cli/models/snippet_attribute.cr
@@ -21,8 +21,22 @@ module SniplineCli::Models
@[JSON::Field(key: "tags")]
property tags : Array(String) | Nil
+
+ @[JSON::Field(key: "updated-at")]
+ property updated_at : String | Nil
+
+ @[JSON::Field(key: "inserted-at")]
+ property inserted_at : String | Nil
+
+ def initialize(@name : String, @real_command : String, @documentation : String | Nil, @is_pinned : Bool, @snippet_alias : String | Nil, @tags : Array(String), @inserted_at : String | Nil, @updated_at : String | Nil)
+ end
def initialize(@name : String, @real_command : String, @documentation : String | Nil, @is_pinned : Bool, @snippet_alias : String | Nil, @tags : Array(String))
end
+
+ def set_timestamps()
+ self.inserted_at = Time.utc.to_s
+ self.updated_at = Time.utc.to_s
+ end
end
end
From 53f03468944057acd1de247a7e05c1ac0f62d67d Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 31 Oct 2019 14:21:07 +0000
Subject: [PATCH 11/47] Initial Sqlite migration
---
shard.lock | 12 +++++++++++
shard.yml | 4 ++++
src/snipline_cli/commands/sync.cr | 2 ++
src/snipline_cli/services/migrator.cr | 31 +++++++++++++++++++++++++++
4 files changed, 49 insertions(+)
create mode 100644 src/snipline_cli/services/migrator.cr
diff --git a/shard.lock b/shard.lock
index 508efc7..b9630d6 100644
--- a/shard.lock
+++ b/shard.lock
@@ -8,14 +8,26 @@ shards:
github: veelenga/ameba
version: 0.10.1
+ crecto:
+ github: Crecto/crecto
+ version: 0.11.1
+
crest:
github: mamantoha/crest
version: 0.22.0
+ db:
+ github: crystal-lang/crystal-db
+ version: 0.7.0
+
http-client-digest_auth:
github: mamantoha/http-client-digest_auth
version: 0.2.0
+ micrate:
+ github: juanedi/micrate
+ version: 0.4.1
+
ncurses:
github: JohnDowson/ncurses
commit: d0e46f673b6a443255269ce610d598a0fdc7d159
diff --git a/shard.yml b/shard.yml
index a82c952..713dc20 100644
--- a/shard.yml
+++ b/shard.yml
@@ -23,6 +23,10 @@ dependencies:
ncurses:
github: JohnDowson/ncurses
branch: borders_and_lines
+ crecto:
+ github: Crecto/crecto
+ sqlite3:
+ github: crystal-lang/crystal-sqlite3
development_dependencies:
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index 8ca5a0f..994bb05 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -17,6 +17,8 @@ module SniplineCli
property file : (SniplineCli::Services::StoreSnippets) = SniplineCli::Services::StoreSnippets.new
def run
+ puts "Migrating Database..."
+ SniplineCli::Services::Migrator.run
puts "Syncing snippets..."
config = SniplineCli.config
if config.get("api.token") == ""
diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr
new file mode 100644
index 0000000..deb22d4
--- /dev/null
+++ b/src/snipline_cli/services/migrator.cr
@@ -0,0 +1,31 @@
+require "db"
+require "sqlite3"
+
+module SniplineCli::Services
+ class Migrator
+ def self.run
+ File.write(File.expand_path("~/.config/snipline/snipline.db"), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db"))
+ DB.open "sqlite3:#{File.expand_path("~/.config/snipline/snipline.db")}" do |db|
+ db.exec "create table if not exists snippets (
+ local_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
+ cloud_id TEXT NULL,
+ name TEXT NOT NULL,
+ snippet_alias TEXT NULL UNIQUE,
+ documentation TEXT NULL,
+ real_command TEXT NOT NULL,
+ tags TEXT NULL,
+ is_synced BOOLEAN DEFAULT 0,
+ is_pinned BOOLEAN DEFAULT 0,
+ inserted_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
+ )"
+ db.exec "create table if not exists schema (version)"
+ begin
+ db.query_one "select version from schema", &.read(Int)
+ rescue ex : DB::Error
+ db.exec "insert into schema (version) values (?)", 1
+ end
+ end
+ end
+ end
+end
From 3b0aa1f6d82d0badb7af5086805842278939c02c Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 31 Oct 2019 16:14:58 +0000
Subject: [PATCH 12/47] Adding new snippets now inserts into sqlite
---
src/snipline_cli.cr | 11 +++++++
src/snipline_cli/commands/init.cr | 8 ++---
src/snipline_cli/commands/login.cr | 2 +-
src/snipline_cli/commands/new.cr | 33 +++++++++++++------
src/snipline_cli/config.cr | 6 ++--
src/snipline_cli/models/snippet_schema.cr | 21 ++++++++++++
src/snipline_cli/services/snipline_api.cr | 6 ++--
.../services/sync_snippet_to_snipline.cr | 12 +++++--
8 files changed, 75 insertions(+), 24 deletions(-)
create mode 100644 src/snipline_cli/models/snippet_schema.cr
diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr
index f8bcd94..967fbf4 100644
--- a/src/snipline_cli.cr
+++ b/src/snipline_cli.cr
@@ -3,6 +3,8 @@ require "crest"
require "toml"
require "json"
require "ncurses"
+require "sqlite3"
+require "crecto"
require "./snipline_cli/config"
require "./snipline_cli/exceptions/*"
@@ -11,6 +13,15 @@ require "./snipline_cli/ncurses_windows/*"
require "./snipline_cli/services/*"
require "./snipline_cli/commands/*"
+module Repo
+ extend Crecto::Repo
+
+ config do |conf|
+ conf.adapter = Crecto::Adapters::SQLite3
+ conf.database = File.expand_path("~/.config/snipline/snipline.db")
+ end
+end
+
module SniplineCli
VERSION = "0.3.0"
diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr
index 3030b37..035191d 100644
--- a/src/snipline_cli/commands/init.cr
+++ b/src/snipline_cli/commands/init.cr
@@ -19,16 +19,16 @@ module SniplineCli
token = ""
[general]
- file = "#{config.get("general.file")}"
+ db = "#{config.get("general.db")}"
temp_dir = "#{config.get("general.temp_dir")}"
TOML
SniplineCli::Services::CreateConfigDirectory.run(SniplineCli.config_file)
File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w")
puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}"
- unless File.exists?(File.expand_path(config.get("general.file")))
- File.write(File.expand_path(config.get("general.file")), "[]", mode: "w")
- puts "Created JSON file in #{File.expand_path(config.get("general.file")).colorize.mode(:bold)}"
+ unless File.exists?(File.expand_path(config.get("general.db")))
+ File.write(File.expand_path(config.get("general.db")), "", mode: "w")
+ puts "Created SQLite file in #{File.expand_path(config.get("general.db")).colorize.mode(:bold)}"
end
puts ""
puts "Run #{"snipcli new".colorize.mode(:bold)} to create your first snippet"
diff --git a/src/snipline_cli/commands/login.cr b/src/snipline_cli/commands/login.cr
index 1b2a213..8ffbbd9 100644
--- a/src/snipline_cli/commands/login.cr
+++ b/src/snipline_cli/commands/login.cr
@@ -56,7 +56,7 @@ module SniplineCli
token = "#{token.jwt}"
[general]
- file = "#{config.get("general.file")}"
+ db = "#{config.get("general.db")}"
TOML
SniplineCli::Services::CreateConfigDirectory.run(SniplineCli.config_file)
diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr
index 4d2d888..df5cacf 100644
--- a/src/snipline_cli/commands/new.cr
+++ b/src/snipline_cli/commands/new.cr
@@ -12,8 +12,8 @@ module SniplineCli
def run
config = SniplineCli.config
- unless File.exists?(File.expand_path("#{config.get("general.file")}"))
- abort("Config file does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red))
+ unless File.exists?(File.expand_path("#{config.get("general.db")}"))
+ abort("Database does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red))
end
unless ENV.has_key?("EDITOR")
abort("Please set your environment EDITOR variable. E.g. export EDITOR=vi".colorize.back(:red).on(:red))
@@ -23,16 +23,28 @@ module SniplineCli
loop do
system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}")
snippet_attributes = temp_file.read
+ snippet = SniplineCli::Models::SnippetSchema.new
+
+ snippet.name = snippet_attributes.name
+ snippet.real_command = snippet_attributes.real_command
+ snippet.documentation = snippet_attributes.documentation
+ snippet.tags = (snippet_attributes.tags.nil?) ? nil : snippet_attributes.tags.not_nil!.join(",")
+ snippet.snippet_alias = snippet_attributes.snippet_alias
+ snippet.is_pinned = snippet_attributes.is_pinned
+ snippet.is_synced = false
+ changeset = SnippetSchema.changeset(snippet)
+ abort("Invalid") unless changeset.valid?
+ result = Repo.insert(changeset)
begin
snippet = if temp_file.sync_to_cloud?
- SniplineCli::Services::SyncSnippetToSnipline.handle(snippet_attributes)
- else
- snippet_attributes.set_timestamps()
- Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes)
+ SniplineCli::Services::SyncSnippetToSnipline.handle(result.instance)
+ # else
+ # snippet_attributes.set_timestamps()
+ # Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes)
end
- if snippet.is_a?(Snippet)
- SniplineCli::Services::AppendSnippetToLocalStorage.handle(snippet)
- end
+ # if snippet.is_a?(Snippet)
+ # SniplineCli::Services::AppendSnippetToLocalStorage.handle(snippet)
+ # end
puts "Snippet created!"
temp_file.delete
break
@@ -49,7 +61,8 @@ module SniplineCli
abort("404 API URL not found".colorize.back(:red).on(:red))
rescue ex : Crest::InternalServerError
abort("API Internal Server Error".colorize.back(:red).on(:red))
- rescue
+ rescue ex
+ puts "#{ex.message}"
abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red))
end
end
diff --git a/src/snipline_cli/config.cr b/src/snipline_cli/config.cr
index 5a2bedc..3e63d53 100644
--- a/src/snipline_cli/config.cr
+++ b/src/snipline_cli/config.cr
@@ -24,7 +24,7 @@ module SniplineCli
else
@api = {"url" => "https://api.snipline.io/api", "token" => ""}
@general = {
- "file" => "~/.config/snipline/snippets.json",
+ "db" => "~/.config/snipline/snipline.db",
"temp_dir" => "~/.config/snipline",
}
end
@@ -37,8 +37,8 @@ module SniplineCli
@api["url"].as(String)
when "api.token"
@api["token"].as(String)
- when "general.file"
- @general["file"].as(String)
+ when "general.db"
+ @general["db"].as(String)
when "general.temp_dir"
@general.has_key?("temp_dir") ? @general["temp_dir"].as(String) : "~/.config/snipline"
else
diff --git a/src/snipline_cli/models/snippet_schema.cr b/src/snipline_cli/models/snippet_schema.cr
new file mode 100644
index 0000000..b5dd88f
--- /dev/null
+++ b/src/snipline_cli/models/snippet_schema.cr
@@ -0,0 +1,21 @@
+module SniplineCli::Models
+ class SnippetSchema < Crecto::Model
+ set_created_at_field :inserted_at
+
+ schema "snippets" do
+ field :local_id, Int32, primary_key: true
+ field :cloud_id, String
+ field :name, String
+ field :real_command, String
+ field :documentation, String
+ field :tags, String
+ field :snippet_alias, String
+ field :is_pinned, Bool
+ field :is_synced, Bool
+ end
+
+ validate_required [:name, :real_command]
+ unique_constraint :snippet_alias
+ unique_constraint :name
+ end
+end
diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr
index fb1014c..4a1af8a 100644
--- a/src/snipline_cli/services/snipline_api.cr
+++ b/src/snipline_cli/services/snipline_api.cr
@@ -18,7 +18,7 @@ module SniplineCli::Services
yield resp.body
end
- def create(snippet : Snippet)
+ def create(snippet : SnippetAttribute | SnippetSchema)
config = SniplineCli.config
# begin
resp = Crest.post(
@@ -29,8 +29,8 @@ module SniplineCli::Services
},
form: {
# data: {
- :name => snippet.name.chomp,
- :real_command => snippet.real_command.chomp,
+ :name => snippet.name.not_nil!.chomp,
+ :real_command => snippet.real_command.not_nil!.chomp,
:documentation => snippet.documentation,
:alias => snippet.snippet_alias,
:is_pinned => snippet.is_pinned.to_s,
diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr
index beaf938..1ad0e79 100644
--- a/src/snipline_cli/services/sync_snippet_to_snipline.cr
+++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr
@@ -6,9 +6,15 @@ module SniplineCli::Services
include SniplineCli::Models
# Takes an array of snippets and saves them to the `snippet.json` file.
- def self.handle(snippet_attributes)
- snippet = Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes)
- SniplineApi.new.create(snippet)
+ def self.handle(snippet)
+ # snippet = Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes)
+ response = SniplineApi.new.create(snippet)
+ if snippet.is_a?(SnippetSchema)
+ snippet = Repo.get!(SnippetSchema, snippet.as(SnippetSchema).local_id)
+ snippet.cloud_id = response.id
+ after = Repo.update(snippet)
+ end
+ response
end
end
end
From ff0ade3bf5ab40d1e770b7cff44ba5cdfafb0214 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 6 Nov 2019 14:32:56 +0000
Subject: [PATCH 13/47] Start of migration to SQLite
---
src/snipline_cli/commands/search.cr | 49 +++++----
src/snipline_cli/commands/sync.cr | 40 +++----
src/snipline_cli/models/snippet_schema.cr | 101 ++++++++++++++++++
src/snipline_cli/ncurses_windows/left_pane.cr | 8 +-
.../ncurses_windows/right_pane.cr | 6 +-
src/snipline_cli/services/command_builder.cr | 10 +-
src/snipline_cli/services/load_snippets.cr | 21 ++--
src/snipline_cli/services/search_snippets.cr | 10 +-
8 files changed, 179 insertions(+), 66 deletions(-)
diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr
index 0cc086f..b45cf16 100644
--- a/src/snipline_cli/commands/search.cr
+++ b/src/snipline_cli/commands/search.cr
@@ -35,35 +35,46 @@ module SniplineCli
def run
search_term : String = arguments.search_term || ""
- snippets = SniplineCli::Services::LoadSnippets.run
+ # snippets = SniplineCli::Services::LoadSnippets.run
- unless search_term.empty?
+ snippets = if search_term.empty?
+ query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i)
+ Repo.all(SniplineCli::Models::SnippetSchema, query)
+ else
lowered_search_term = search_term.downcase
if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!)
puts "The search field entered does not exist."
return
end
- snippets.select! { |i|
- if field = flags.field
- i.value_for_attribute(field).downcase.includes?(lowered_search_term)
- else
- if !i.tags.nil?
- i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term)
- else
- i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term)
- end
- end
- }
+ query = Crecto::Repo::Query.new
+ if flags.field
+ query = query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term)
+ else
+ query = query.where("snippets.name LIKE '%?%'", lowered_search_term).or_where("snippets.real_command LIKE '%?%'", lowered_search_term).or_where("snippets.snippet_alias LIKE '%?%'", lowered_search_term).or_where("snippets.tags LIKE '%?%'", lowered_search_term)
+ end
+ query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i)
+ Repo.all(SniplineCli::Models::SnippetSchema, query)
+ # snippets.select! { |i|
+ # if field = flags.field
+ # i.value_for_attribute(field).downcase.includes?(lowered_search_term)
+ # else
+ # if !i.tags.nil?
+ # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term)
+ # else
+ # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term)
+ # end
+ # end
+ # }
end
- results = sort_results(snippets, flags.limit)
+ # results = sort_results(snippets, flags.limit)
- unless results.size > 0
- puts "No results found."
- exit(0)
- end
+ # unless results.size > 0
+ # puts "No results found."
+ # exit(0)
+ # end
- Services::DisplayResults.new(results)
+ Services::DisplayResults.new(snippets)
end
def sort_results(snippets, limit)
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index 994bb05..b3170a3 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -25,7 +25,7 @@ module SniplineCli
abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}")
end
- sync_unsaved_snippets
+ sync_unsynced_snippets
download_snipline_snippets
end
@@ -39,15 +39,25 @@ module SniplineCli
begin
# Only snippets that are in the cloud but not stored locally
difference = [] of SniplineCli::Models::Snippet
- local_snippet_ids = local_snippets.map { |s| s.id }
+ local_snippet_ids = local_snippets.map { |s| s.local_id }
cloud_snippets.each do |cs|
difference << cs unless local_snippet_exists?(cs, local_snippet_ids)
end
difference.each do |s|
puts "Storing #{s.attributes.name} from Snipline".colorize(:green)
- local_snippets << s
+ snippet = SniplineCli::Models::SnippetSchema.new
+ snippet.name = s.name
+ snippet.real_command = s.real_command
+ snippet.documentation = s.documentation
+ snippet.tags = (s.tags.nil?) ? nil : s.tags.not_nil!.join(",")
+ snippet.snippet_alias = s.snippet_alias
+ snippet.is_pinned = s.is_pinned
+ snippet.is_synced = true
+ changeset = SniplineCli::Models::SnippetSchema.changeset(snippet)
+ result = Repo.insert(changeset)
+ # local_snippets << s
end
- @file.store(local_snippets.to_json) unless difference.size == 0
+ # @file.store(local_snippets.to_json) unless difference.size == 0
rescue ex
puts ex.message.colorize(:red)
end
@@ -61,13 +71,13 @@ module SniplineCli
return false
end
- def sync_unsaved_snippets
+ def sync_unsynced_snippets
local_snippets = SniplineCli::Services::LoadSnippets.run
- local_snippets.select { |s| s.id.nil? }.each do |snippet|
+ local_snippets.select { |s| s.cloud_id.nil? }.each do |snippet|
puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..."
begin
- cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet.attributes)
- update_local_snippet_id(cloud_snippet, local_snippets)
+ cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet)
+ update_local_snippet_id(cloud_snippet, snippet)
puts "Success!".colorize(:green)
rescue ex : Crest::UnprocessableEntity
resp = SniplineCli::Models::SnippetErrorResponse.from_json(ex.response.not_nil!.body)
@@ -78,16 +88,10 @@ module SniplineCli
end
end
- def update_local_snippet_id(cloud_snippet, local_snippets)
- local_snippets = local_snippets.map do |snippet|
- if snippet.id.nil? && snippet.attributes.snippet_alias == cloud_snippet.attributes.snippet_alias && snippet.name == cloud_snippet.name
- snippet.id = cloud_snippet.id
- snippet.attributes.inserted_at = cloud_snippet.attributes.inserted_at
- snippet.attributes.updated_at = cloud_snippet.attributes.updated_at
- end
- snippet
- end
- @file.store(local_snippets.to_json)
+ def update_local_snippet_id(cloud_snippet, local_snippet)
+ local_snippet.cloud_id = cloud_snippet.id
+ local_snippet.is_synced = true
+ changeset = Repo.update(local_snippet)
end
end
diff --git a/src/snipline_cli/models/snippet_schema.cr b/src/snipline_cli/models/snippet_schema.cr
index b5dd88f..81f0b8d 100644
--- a/src/snipline_cli/models/snippet_schema.cr
+++ b/src/snipline_cli/models/snippet_schema.cr
@@ -17,5 +17,106 @@ module SniplineCli::Models
validate_required [:name, :real_command]
unique_constraint :snippet_alias
unique_constraint :name
+ #
+ # Params such as variables or select that require input from the user
+ #
+ def interactive_params : Array(SnippetParam)
+ temp_array = [] of SnippetParam
+
+ real_command.as(String).scan(/#(select)?\{\[(.+?)\]\}/) do |m|
+ param_type = (m[1]?) ? m[1] : "variable"
+ if temp_array.count { |param| param.name == m[2] && param_type == param.type } == 0
+ if param_type == "select"
+ split_equals = m[2].split("=").map { |substring| substring }
+ param_name = split_equals.shift
+ unparsed_params = split_equals.join("=")
+ if unparsed_params.is_a?(String)
+ options = unparsed_params.as(String).split(",").map(&.strip)
+ # todo
+ if options.is_a?(Array(String))
+ options = options.as(Array(String))
+ end
+ else
+ options = Array(String).new
+ end
+ # default_option = options.first || ""
+ temp_array << SnippetParam.new(param_name, "", m[2], "select", options)
+ elsif m[2].includes?("=")
+ split_equals = m[2].split("=").map { |substring| substring }
+ param_name = split_equals.shift
+ default_value = split_equals.join("=")
+ temp_array << SnippetParam.new(param_name, default_value, m[2], "variable", Array(String).new)
+ else
+ temp_array << SnippetParam.new(m[2], "", m[2], "variable", Array(String).new)
+ end
+ end
+ end
+ temp_array
+ end
+
+ #
+ # E.g. Passwords
+ #
+ def uninteractive_params : Array(SnippetPasswordParam)
+ temp_array = [] of SnippetPasswordParam
+ real_command.as(String).scan(/#password\{\[(.+?)\]\}/) do |m|
+ full = m[1].as(String)
+ options = full.split(",")
+ id = options.shift
+ length = UInt8.new(16)
+ if options.size > 0
+ length = options.shift.to_u32 || UInt8.new(16)
+ end
+ temp_array << SnippetPasswordParam.new(id, length, full)
+ end
+ temp_array
+ end
+
+ def has_params
+ interactive_params.size > 0 || uninteractive_params.size > 0
+ end
+
+ def preview_command
+ unless has_params()
+ return real_command
+ end
+
+ temp_command = real_command
+ interactive_params.each do |param|
+ if param.type == "select"
+ temp_command = temp_command.as(String).gsub("#select{[#{param.full}]}") { "<#{param.name}>" }
+ temp_command = temp_command.as(String).gsub("#select{[#{param.name}]}") { "<#{param.name}>" }
+ else
+ temp_command = temp_command.as(String).gsub("\#{[#{param.full}]}") { "<#{param.name}>" }
+ temp_command = temp_command.as(String).gsub("\#{[#{param.name}]}") { "<#{param.name}>" }
+ end
+ end
+
+ uninteractive_params.each do |param|
+ temp_command = temp_command.as(String).gsub("#password{[#{param.full}]}") { "" }
+ temp_command = temp_command.as(String).gsub("#password{[#{param.id}]}") { "" }
+ end
+ temp_command
+ end
+
+ def value_for_attribute(attribute : String)
+ case attribute
+ when "alias"
+ snippet_alias || ""
+ when "documentation"
+ documentation || ""
+ when "name"
+ name || ""
+ when "tags"
+ if !tags.nil?
+ tags.as(Array(String)).join(",") || ""
+ else
+ ""
+ end
+ else
+ ""
+ end
+ end
end
+
end
diff --git a/src/snipline_cli/ncurses_windows/left_pane.cr b/src/snipline_cli/ncurses_windows/left_pane.cr
index 12eb954..4aac91c 100644
--- a/src/snipline_cli/ncurses_windows/left_pane.cr
+++ b/src/snipline_cli/ncurses_windows/left_pane.cr
@@ -6,10 +6,10 @@ module SniplineCli::NCursesWindows
property right
property selected_index = 0
property searcher : SniplineCli::Services::SearchSnippets
- property results : Array(SniplineCli::Models::Snippet)
- property snippets : Array(SniplineCli::Models::Snippet)
+ property results : Array(SniplineCli::Models::SnippetSchema)
+ property snippets : Array(SniplineCli::Models::SnippetSchema)
- def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of SniplineCli::Models::Snippet)
+ def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of SniplineCli::Models::SnippetSchema)
@results = @snippets
@searcher = SniplineCli::Services::SearchSnippets.new(@snippets)
@@ -72,7 +72,7 @@ module SniplineCli::NCursesWindows
@window.print("[#{result.snippet_alias}] ")
end
- @window.print(result.name + "\n")
+ @window.print(result.name.as(String) + "\n")
end
def select_higher
diff --git a/src/snipline_cli/ncurses_windows/right_pane.cr b/src/snipline_cli/ncurses_windows/right_pane.cr
index 792cd7f..06188fc 100644
--- a/src/snipline_cli/ncurses_windows/right_pane.cr
+++ b/src/snipline_cli/ncurses_windows/right_pane.cr
@@ -28,7 +28,7 @@ module SniplineCli::NCursesWindows
@window
end
- def display(snippet : SniplineCli::Models::Snippet | Nil)
+ def display(snippet : SniplineCli::Models::SnippetSchema | Nil)
@window.clear
if snippet
LibNCurses.wattr_off(@window, NCurses::Attribute::Bold, nil)
@@ -48,8 +48,8 @@ module SniplineCli::NCursesWindows
end
def print_snippet(command, width)
- number_of_extra_lines = command.each_line(true).size - 3
- command.each_line(true).first(3).each do |line|
+ number_of_extra_lines = command.as(String).each_line(true).size - 3
+ command.as(String).each_line(true).first(3).each do |line|
LibNCurses.wprintw(@window, "%s\n", line)
end
if number_of_extra_lines > 0
diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr
index 4eca3a2..36a26db 100644
--- a/src/snipline_cli/services/command_builder.cr
+++ b/src/snipline_cli/services/command_builder.cr
@@ -16,12 +16,12 @@ module SniplineCli
class CommandBuilder
include SniplineCli::Models
- def self.run(snippet : Snippet, input, output, user_input = [] of String) : String
+ def self.run(snippet : SnippetSchema, input, output, user_input = [] of String) : String
unless snippet.has_params
- return snippet.real_command
+ return snippet.real_command || ""
end
- command_builder : String = snippet.real_command
+ command_builder : String = snippet.real_command || ""
Setup.new
snippet.interactive_params.each do |param|
NCurses.clear
@@ -40,8 +40,8 @@ module SniplineCli
p q r s t u v w x y z A B C D
E F G H I J K L M N O P Q R S
T U V W X Y Z 1 2 3 4 5 6 7 8
- 9 0 £ * ^ ] [ : ; | ? > < , .
- ` ~ / @}
+ 9 0 £ * ^ ] [ : ; | ? , .
+ ` ~ / }
snippet.uninteractive_params.each do |param|
# todo: use string builder instead
generated_password = ""
diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr
index 141119d..a68f3de 100644
--- a/src/snipline_cli/services/load_snippets.cr
+++ b/src/snipline_cli/services/load_snippets.cr
@@ -8,21 +8,18 @@ module SniplineCli
class LoadSnippets
include SniplineCli::Models
- def self.run : Array(Snippet)
+ def self.run : Array(SnippetSchema)
config = SniplineCli.config
log = SniplineCli.log
- log.info("Looking through file #{config.get("general.file")}")
- snippets = [] of Snippet
- unless File.readable?(File.expand_path(config.get("general.file")))
- log.warn("Could not read #{config.get("general.file")}")
- log.info("Run #{"snipline-cli sync".colorize(:green)} first")
- return snippets
+ log.info("Looking through file #{config.get("general.db")}")
+ unless File.readable?(File.expand_path(config.get("general.db")))
+ log.warn("Could not read #{config.get("general.db")}")
+ abort("Run #{"snipline-cli sync".colorize(:green)} first")
end
- File.open(File.expand_path(config.get("general.file"))) do |file|
- snippets = Array(Snippet).from_json(file)
- end
-
- snippets
+ # File.open(File.expand_path(config.get("general.db"))) do |file|
+ # snippets = Array(Snippet).from_json(file)
+ # end
+ Repo.all(SnippetSchema)
end
end
end
diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr
index 5661d9c..205d3b5 100644
--- a/src/snipline_cli/services/search_snippets.cr
+++ b/src/snipline_cli/services/search_snippets.cr
@@ -6,7 +6,7 @@ module SniplineCli::Services
property snippets
# Takes an array of snippets and saves them to the `snippet.json` file.
- def initialize(@snippets = [] of SniplineCli::Models::Snippet)
+ def initialize(@snippets = [] of SniplineCli::Models::SnippetSchema)
end
def search(search_term)
@@ -17,9 +17,9 @@ module SniplineCli::Services
lowered_search_term = search_term.downcase
results = results.select do |i|
if !i.tags.nil?
- i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false)
+ i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || i.tags.as(String).split(",").includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false)
else
- i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false)
+ i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false)
end
end
end
@@ -30,13 +30,13 @@ module SniplineCli::Services
def sort_results(snippets)
snippets.sort { |snippet_a, snippet_b|
if snippet_a.is_pinned && snippet_b.is_pinned
- snippet_a.name <=> snippet_b.name
+ snippet_a.name.as(String) <=> snippet_b.name.as(String)
elsif snippet_a.is_pinned
-1
elsif snippet_b.is_pinned
1
else
- snippet_a.name <=> snippet_b.name
+ snippet_a.name.as(String) <=> snippet_b.name.as(String)
end
}
end
From 951cd13eba4d3aaf626cc89c7d9b0a4f2d6506ea Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 6 Nov 2019 15:33:18 +0000
Subject: [PATCH 14/47] Fix bug that was duplicating snippets on sync
---
src/snipline_cli/commands/sync.cr | 87 +++++++++++++++++++------------
1 file changed, 54 insertions(+), 33 deletions(-)
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index b3170a3..5c08a93 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -26,42 +26,63 @@ module SniplineCli
end
sync_unsynced_snippets
- download_snipline_snippets
-
+ @snipline_api.fetch do |body|
+ cloud_snippets = Models::SnippetDataWrapper.from_json(body).data
+ save_new_snipline_cloud_snippets(cloud_snippets)
+ delete_orphan_snippets(cloud_snippets)
+ end
end
+ def delete_orphan_snippets(cloud_snippets)
+ # if snippet cloud_id exists locally but not in cloud
+ puts "Cleaning up snippets that are no longer in Snipline Cloud..."
+ local_snippets = SniplineCli::Services::LoadSnippets.run.select { |ls| !ls.cloud_id.nil? }
+ orphans = [] of SniplineCli::Models::SnippetSchema
+ cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id }
+ local_snippets.each do |ls|
+ orphans << ls unless cloud_snippet_exists?(ls, cloud_snippet_ids)
+ end
+ orphans.each do |ls|
+ # delete snippets
+ puts "Deleting #{ls.name}".colorize(:green)
+ Repo.delete(ls)
+ end
+ end
- def download_snipline_snippets
- @snipline_api.fetch do |body|
- # Save the response JSON into a file without the data wrapper
- cloud_snippets = Models::SnippetDataWrapper.from_json(body).data
- local_snippets = SniplineCli::Services::LoadSnippets.run
- begin
- # Only snippets that are in the cloud but not stored locally
- difference = [] of SniplineCli::Models::Snippet
- local_snippet_ids = local_snippets.map { |s| s.local_id }
- cloud_snippets.each do |cs|
- difference << cs unless local_snippet_exists?(cs, local_snippet_ids)
- end
- difference.each do |s|
- puts "Storing #{s.attributes.name} from Snipline".colorize(:green)
- snippet = SniplineCli::Models::SnippetSchema.new
- snippet.name = s.name
- snippet.real_command = s.real_command
- snippet.documentation = s.documentation
- snippet.tags = (s.tags.nil?) ? nil : s.tags.not_nil!.join(",")
- snippet.snippet_alias = s.snippet_alias
- snippet.is_pinned = s.is_pinned
- snippet.is_synced = true
- changeset = SniplineCli::Models::SnippetSchema.changeset(snippet)
- result = Repo.insert(changeset)
- # local_snippets << s
- end
- # @file.store(local_snippets.to_json) unless difference.size == 0
- rescue ex
- puts ex.message.colorize(:red)
- end
- end
+ def cloud_snippet_exists?(local_snippet, cloud_snippet_ids)
+ cloud_snippet_ids.includes?(local_snippet.cloud_id.not_nil!)
+ end
+
+
+ def save_new_snipline_cloud_snippets(cloud_snippets)
+ # Save the response JSON into a file without the data wrapper
+ local_snippets = SniplineCli::Services::LoadSnippets.run
+ begin
+ # Only snippets that are in the cloud but not stored locally
+ difference = [] of SniplineCli::Models::Snippet
+ local_snippet_cloud_ids = local_snippets.select{ |s| !s.cloud_id.nil? }.map { |s| s.cloud_id.not_nil! }
+ cloud_snippets.each do |cs|
+ difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids)
+ end
+ difference.each do |s|
+ puts "Storing #{s.attributes.name} from Snipline".colorize(:green)
+ snippet = SniplineCli::Models::SnippetSchema.new
+ snippet.name = s.name
+ snippet.cloud_id = s.id
+ snippet.real_command = s.real_command
+ snippet.documentation = s.documentation
+ snippet.tags = (s.tags.nil?) ? nil : s.tags.not_nil!.join(",")
+ snippet.snippet_alias = s.snippet_alias
+ snippet.is_pinned = s.is_pinned
+ snippet.is_synced = true
+ changeset = SniplineCli::Models::SnippetSchema.changeset(snippet)
+ result = Repo.insert(changeset)
+ # local_snippets << s
+ end
+ # @file.store(local_snippets.to_json) unless difference.size == 0
+ rescue ex
+ puts ex.message.colorize(:red)
+ end
end
def local_snippet_exists?(cs, local_snippet_ids)
From b74625e75bbef378703ea7760cf9deeb581e402c Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 6 Nov 2019 15:37:18 +0000
Subject: [PATCH 15/47] Add some todo methods for syncing
---
src/snipline_cli/commands/sync.cr | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index 5c08a93..b008691 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -30,9 +30,19 @@ module SniplineCli
cloud_snippets = Models::SnippetDataWrapper.from_json(body).data
save_new_snipline_cloud_snippets(cloud_snippets)
delete_orphan_snippets(cloud_snippets)
+ update_locally_out_of_date_snippets(cloud_snippets)
+ update_cloud_out_of_date_snippets(cloud_snippets)
end
end
+ def update_locally_out_of_date_snippets(cloud_snippets)
+ # TODO: this method is for local snippets whose updated_at is behind the cloud
+ end
+
+ def update_cloud_out_of_date_snippets(cloud_snippets)
+ # TODO: this method is for cloud snippets whose updated_at is behind the local version
+ end
+
def delete_orphan_snippets(cloud_snippets)
# if snippet cloud_id exists locally but not in cloud
puts "Cleaning up snippets that are no longer in Snipline Cloud..."
From 9a3e53abb183ea894c847a3eb0ea540fb9e26963 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Fri, 8 Nov 2019 11:09:19 +0000
Subject: [PATCH 16/47] Syncing locally out of date snippets
---
src/snipline_cli/commands/sync.cr | 40 +++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index b008691..d6c50e2 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -37,6 +37,46 @@ module SniplineCli
def update_locally_out_of_date_snippets(cloud_snippets)
# TODO: this method is for local snippets whose updated_at is behind the cloud
+ puts "local"
+ cloud_snippets.each { |cs|
+ local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: cs.id.not_nil!)
+ puts "#{local_snippet.inspect}"
+ if local_snippet
+ # cloud_updated_at = Time::Format.new(cs.not_nil!.updated_at.not_nil!).parse(cs.not_nil!.updated_at.not_nil!, Time::Location::UTC)
+ cloud_updated_at = Time.parse(
+ cs.not_nil!.updated_at.not_nil!,
+ "%F %T",
+ Time::Location::UTC
+ )
+ # cloud_updated_at.year,
+ # cloud_updated_at.month,
+ # cloud_updated_at.day,
+ # cloud_updated_at.hour,
+ # cloud_updated_at.minute,
+ # cloud_updated_at.second
+ # )
+ local_updated_at = local_snippet.not_nil!.updated_at.not_nil!
+ puts "ls #{local_updated_at.inspect} #{cloud_updated_at.inspect}"
+ if (local_updated_at - cloud_updated_at).minutes > 1
+ puts "Updating local snippet from cloud"
+ local_snippet.name = cs.not_nil!.name.not_nil!
+ local_snippet.real_command = cs.not_nil!.real_command.not_nil!
+ local_snippet.documentation = cs.not_nil!.documentation
+ local_snippet.snippet_alias = cs.not_nil!.snippet_alias
+ local_snippet.snippet_alias = cs.not_nil!.snippet_alias
+ local_snippet.is_synced = true
+ local_snippet.is_pinned = cs.not_nil!.is_pinned
+ Repo.update(local_snippet)
+ elsif (local_updated_at - cloud_updated_at).minutes < 1
+ puts "Sending local update to snipline"
+ # TODO
+ else
+ # DO NOTHING
+ end
+ # if local_snippet.updated_at < cs.not_nil!.updated_at
+ # end
+ end
+ }
end
def update_cloud_out_of_date_snippets(cloud_snippets)
From c2f8af8065fea6398f96f3e41267369c9e7dec99 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 28 Nov 2019 10:21:58 +0000
Subject: [PATCH 17/47] Editing snippets
---
src/snipline_cli/commands/sync.cr | 26 ++------
src/snipline_cli/ncurses_windows/footer.cr | 2 +-
src/snipline_cli/services/display_results.cr | 9 +++
src/snipline_cli/services/edit_snippet.cr | 65 +++++++++++++++++++
src/snipline_cli/services/snipline_api.cr | 60 +++++++++++++----
.../services/temp_snippet_editor_file.cr | 32 +++++++--
6 files changed, 155 insertions(+), 39 deletions(-)
create mode 100644 src/snipline_cli/services/edit_snippet.cr
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index d6c50e2..d070494 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -31,16 +31,13 @@ module SniplineCli
save_new_snipline_cloud_snippets(cloud_snippets)
delete_orphan_snippets(cloud_snippets)
update_locally_out_of_date_snippets(cloud_snippets)
- update_cloud_out_of_date_snippets(cloud_snippets)
end
end
def update_locally_out_of_date_snippets(cloud_snippets)
# TODO: this method is for local snippets whose updated_at is behind the cloud
- puts "local"
cloud_snippets.each { |cs|
local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: cs.id.not_nil!)
- puts "#{local_snippet.inspect}"
if local_snippet
# cloud_updated_at = Time::Format.new(cs.not_nil!.updated_at.not_nil!).parse(cs.not_nil!.updated_at.not_nil!, Time::Location::UTC)
cloud_updated_at = Time.parse(
@@ -48,41 +45,28 @@ module SniplineCli
"%F %T",
Time::Location::UTC
)
- # cloud_updated_at.year,
- # cloud_updated_at.month,
- # cloud_updated_at.day,
- # cloud_updated_at.hour,
- # cloud_updated_at.minute,
- # cloud_updated_at.second
- # )
local_updated_at = local_snippet.not_nil!.updated_at.not_nil!
- puts "ls #{local_updated_at.inspect} #{cloud_updated_at.inspect}"
if (local_updated_at - cloud_updated_at).minutes > 1
- puts "Updating local snippet from cloud"
+ puts "Updating local snippet #{local_snippet.name} from cloud"
local_snippet.name = cs.not_nil!.name.not_nil!
local_snippet.real_command = cs.not_nil!.real_command.not_nil!
local_snippet.documentation = cs.not_nil!.documentation
local_snippet.snippet_alias = cs.not_nil!.snippet_alias
- local_snippet.snippet_alias = cs.not_nil!.snippet_alias
local_snippet.is_synced = true
local_snippet.is_pinned = cs.not_nil!.is_pinned
Repo.update(local_snippet)
+ q = Repo.raw_exec("UPDATE snippets SET updated_at=? WHERE cloud_id=?", cloud_updated_at, cs.id)
+ puts q.inspect
elsif (local_updated_at - cloud_updated_at).minutes < 1
- puts "Sending local update to snipline"
- # TODO
+ puts "Updating local #{local_snippet.name} to Snipline Cloud"
+ @snipline_api.update(local_snippet)
else
# DO NOTHING
end
- # if local_snippet.updated_at < cs.not_nil!.updated_at
- # end
end
}
end
- def update_cloud_out_of_date_snippets(cloud_snippets)
- # TODO: this method is for cloud snippets whose updated_at is behind the local version
- end
-
def delete_orphan_snippets(cloud_snippets)
# if snippet cloud_id exists locally but not in cloud
puts "Cleaning up snippets that are no longer in Snipline Cloud..."
diff --git a/src/snipline_cli/ncurses_windows/footer.cr b/src/snipline_cli/ncurses_windows/footer.cr
index d8a6788..86ecbcf 100644
--- a/src/snipline_cli/ncurses_windows/footer.cr
+++ b/src/snipline_cli/ncurses_windows/footer.cr
@@ -10,7 +10,7 @@ module SniplineCli::NCursesWindows
0
)
@window.set_color 1
- LibNCurses.wprintw(@window, "%s", " Quit | Down | Up | - Copy | Run\n")
+ LibNCurses.wprintw(@window, "%s", " Quit | Down | Up | - Copy | Run | Edit\n")
LibNCurses.mvwchgat(@window, 0, 0, -1, NCurses::Attribute::Reverse, 2, nil)
@window.refresh
end
diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr
index 97d420e..75ef8db 100644
--- a/src/snipline_cli/services/display_results.cr
+++ b/src/snipline_cli/services/display_results.cr
@@ -44,6 +44,9 @@ module SniplineCli::Services
output = build_snippet
copy_snippet(output)
break
+ elsif codepoint == 69 # Shift+r - run
+ edit_snippet
+ break
elsif codepoint == 82 # Shift+r - run
output = build_snippet
run_snippet(output)
@@ -101,5 +104,11 @@ module SniplineCli::Services
NCurses.end
SniplineCli::Services::CommandBuilder.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT)
end
+
+ def edit_snippet
+ NCurses.clear
+ NCurses.end
+ SniplineCli::Services::EditSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT)
+ end
end
end
diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr
new file mode 100644
index 0000000..1790db1
--- /dev/null
+++ b/src/snipline_cli/services/edit_snippet.cr
@@ -0,0 +1,65 @@
+module SniplineCli
+ module Services
+ # LoadSnippets fetches all the snippets from the `snippet.json` file and parses them.
+ #
+ # ```crystal
+ # snippets = SniplineCli::Services::LoadSnippets.run
+ # ```
+ class EditSnippet
+ include SniplineCli::Models
+
+ def self.run(snippet : SnippetSchema, input, output)
+ config = SniplineCli.config
+ log = SniplineCli.log
+ log.info("editing snippet #{snippet.name}")
+ temp_file = SniplineCli::Services::TempSnippetEditorFile.new(snippet)
+ temp_file.create
+ loop do
+ system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}")
+ snippet_attributes = temp_file.read
+ snippet.name = snippet_attributes.name
+ snippet.real_command = snippet_attributes.real_command
+ snippet.documentation = snippet_attributes.documentation
+ snippet.tags = (snippet_attributes.tags.nil?) ? nil : snippet_attributes.tags.not_nil!.join(",")
+ snippet.snippet_alias = snippet_attributes.snippet_alias
+ snippet.is_pinned = snippet_attributes.is_pinned
+ snippet.is_synced = false
+ changeset = SnippetSchema.changeset(snippet)
+ abort("Invalid") unless changeset.valid?
+
+ begin
+ if temp_file.sync_to_cloud?
+ SniplineCli::Services::SniplineApi.new.update(snippet)
+ temp_file.delete
+ puts "Snippet updated!"
+ break
+ else
+ changeset = SnippetSchema.changeset(snippet)
+ result = Repo.update(changeset)
+ temp_file.delete
+ puts "Snippet updated!"
+ break
+ end
+ rescue ex : Crest::UnprocessableEntity
+ puts "Invalid data:".colorize.mode(:bold)
+ snippet_errors = SnippetErrorResponse.from_json(ex.response.body)
+ snippet_errors.errors.each do |error|
+ puts "#{error.source["pointer"].gsub("/data/attributes/", "")}: #{error.title}".colorize.back(:red).on(:red)
+ end
+ puts "\r\nEdit Snippet? Y/n"
+ repeat = gets
+ break if repeat == "n"
+ rescue ex : Crest::NotFound
+ abort("404 API URL not found".colorize.back(:red).on(:red))
+ rescue ex : Crest::InternalServerError
+ abort("API Internal Server Error".colorize.back(:red).on(:red))
+ rescue ex
+ puts "#{ex.message}"
+ abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red))
+ end
+ end
+ end
+ end
+ end
+end
+
diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr
index 4a1af8a..4f26c1c 100644
--- a/src/snipline_cli/services/snipline_api.cr
+++ b/src/snipline_cli/services/snipline_api.cr
@@ -39,21 +39,53 @@ module SniplineCli::Services
},
logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false
)
- # Snippet.from_json(resp.body)
SingleSnippetDataWrapper.from_json(resp.body).data
- # rescue ex : Crest::UnprocessableEntity
- # puts "RAISING"
- # puts resp.inspect
- # unless resp.nil?
- # errors = SnippetErrorResponse.from_json(resp.not_nil!.body)
- # raise SniplineCli::Exceptions::InvalidSnippet.new(errors)
- # end
- # rescue ex
-
- # puts "OTHER"
- # raise ex
- # end
end
+
+ def update(snippet : SnippetSchema)
+ config = SniplineCli.config
+ # begin
+ resp = Crest.patch(
+ "#{config.get("api.url")}/snippets/#{snippet.cloud_id}",
+ headers: {
+ # "Accept" => "application/vnd.api+json",
+ "Authorization" => "Bearer #{config.get("api.token")}",
+ },
+ form: {
+ # data: {
+ :name => snippet.name.not_nil!.chomp,
+ :real_command => snippet.real_command.not_nil!.chomp,
+ :documentation => snippet.documentation,
+ :alias => snippet.snippet_alias,
+ :is_pinned => snippet.is_pinned.to_s,
+ # :tags => snippet.tags
+ # }
+ },
+ logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false
+ )
+ response = SingleSnippetDataWrapper.from_json(resp.body).data
+ snippet.name = response.name.not_nil!
+ snippet.real_command = response.real_command.not_nil!
+ snippet.documentation = response.documentation
+ snippet.snippet_alias = response.snippet_alias
+ snippet.is_synced = true
+ snippet.is_pinned = response.is_pinned
+ Repo.update(snippet)
+ cloud_updated_at = Time.parse(
+ response.updated_at.not_nil!,
+ "%F %T",
+ Time::Location::UTC
+ )
+ puts "cloud #{cloud_updated_at}"
+ local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: response.id.not_nil!)
+ if local_snippet
+ puts "local #{local_snippet.updated_at}"
+ end
+
+ q = Repo.raw_exec("UPDATE snippets SET updated_at=? WHERE cloud_id=?", cloud_updated_at, response.id)
+ puts q.inspect
+ end
+
end
class SniplineApiTest
@@ -63,5 +95,7 @@ module SniplineCli::Services
def create(snippet : SniplineCli::Models::Snippet)
end
+ def update(snippet : SniplineCli::Models::SnippetSchema)
+ end
end
end
diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr
index a659b48..1ad8476 100644
--- a/src/snipline_cli/services/temp_snippet_editor_file.cr
+++ b/src/snipline_cli/services/temp_snippet_editor_file.cr
@@ -3,9 +3,13 @@ require "toml"
module SniplineCli::Services
# For saving Snippets locally.
class TempSnippetEditorFile
+
include SniplineCli::Models
- TEMPLATE = %<# Welcome to the terminal-based snippet editor
-# This file uses TOML syntax and will be processed after the file is closed
+
+ property snippet : SnippetSchema | Nil
+
+ property template = %<# Welcome to the terminal-based snippet editor
+# This file uses TOML syntax and will be processed after the file is saved and closed
# Fill in the below options and save+quit to continue
name = ""
real_command = """
@@ -14,15 +18,35 @@ echo 'hello, world'
documentation = """
This section supports **Markdown**
"""
-is_pinned = true
+is_pinned = false
snippet_alias = ""
sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"}
>
+
+ def initialize(@snippet : SnippetSchema | Nil = nil)
+ snippet = @snippet
+ if (snippet = @snippet).is_a?(SnippetSchema)
+ @template = %<# Welcome to the terminal-based snippet editor
+# This file uses TOML syntax and will be processed after the file is saved and closed
+# Fill in the below options and save+quit to continue
+name = "#{snippet.name}"
+real_command = """
+#{snippet.real_command}
+"""
+documentation = """
+#{snippet.documentation}
+"""
+is_pinned = #{snippet.is_pinned}
+snippet_alias = "#{snippet.snippet_alias}"
+sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"}
+>
+ end
+ end
def create
config = SniplineCli.config
unless File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"))
- File.write(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"), TEMPLATE)
+ File.write(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"), @template)
end
end
From 9d34344774e340de279eaf7e4261dde89aec67c5 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Fri, 29 Nov 2019 15:13:11 +0000
Subject: [PATCH 18/47] Switch to using is_synced for syncing
---
src/snipline_cli/commands/sync.cr | 19 ++---
src/snipline_cli/models/snippet_schema.cr | 2 +
src/snipline_cli/services/edit_snippet.cr | 70 +++++++++++--------
.../services/temp_snippet_editor_file.cr | 2 +-
4 files changed, 53 insertions(+), 40 deletions(-)
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index d070494..a51f3a8 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -36,6 +36,8 @@ module SniplineCli
def update_locally_out_of_date_snippets(cloud_snippets)
# TODO: this method is for local snippets whose updated_at is behind the cloud
+ synced_to_local_count = 0
+ synced_to_cloud_count = 0
cloud_snippets.each { |cs|
local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: cs.id.not_nil!)
if local_snippet
@@ -46,8 +48,9 @@ module SniplineCli
Time::Location::UTC
)
local_updated_at = local_snippet.not_nil!.updated_at.not_nil!
- if (local_updated_at - cloud_updated_at).minutes > 1
- puts "Updating local snippet #{local_snippet.name} from cloud"
+
+ if local_snippet.is_synced
+ # local hasn't changed - redownload from snipline just incase
local_snippet.name = cs.not_nil!.name.not_nil!
local_snippet.real_command = cs.not_nil!.real_command.not_nil!
local_snippet.documentation = cs.not_nil!.documentation
@@ -55,16 +58,16 @@ module SniplineCli
local_snippet.is_synced = true
local_snippet.is_pinned = cs.not_nil!.is_pinned
Repo.update(local_snippet)
- q = Repo.raw_exec("UPDATE snippets SET updated_at=? WHERE cloud_id=?", cloud_updated_at, cs.id)
- puts q.inspect
- elsif (local_updated_at - cloud_updated_at).minutes < 1
- puts "Updating local #{local_snippet.name} to Snipline Cloud"
- @snipline_api.update(local_snippet)
+ synced_to_local_count = synced_to_local_count + 1
else
- # DO NOTHING
+ # local has updated without sending to snipline cloud - time to update the cloud version
+ @snipline_api.update(local_snippet)
+ synced_to_cloud_count = synced_to_cloud_count + 1
end
end
}
+ puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green)
+ puts "Synced #{synced_to_cloud_count} from local database to Snipline Cloud".colorize(:green)
end
def delete_orphan_snippets(cloud_snippets)
diff --git a/src/snipline_cli/models/snippet_schema.cr b/src/snipline_cli/models/snippet_schema.cr
index 81f0b8d..0b383d6 100644
--- a/src/snipline_cli/models/snippet_schema.cr
+++ b/src/snipline_cli/models/snippet_schema.cr
@@ -15,6 +15,8 @@ module SniplineCli::Models
end
validate_required [:name, :real_command]
+ validate_length :name, min: 1
+ validate_length :real_command, min: 1
unique_constraint :snippet_alias
unique_constraint :name
#
diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr
index 1790db1..f84e846 100644
--- a/src/snipline_cli/services/edit_snippet.cr
+++ b/src/snipline_cli/services/edit_snippet.cr
@@ -25,38 +25,46 @@ module SniplineCli
snippet.is_pinned = snippet_attributes.is_pinned
snippet.is_synced = false
changeset = SnippetSchema.changeset(snippet)
- abort("Invalid") unless changeset.valid?
-
- begin
- if temp_file.sync_to_cloud?
- SniplineCli::Services::SniplineApi.new.update(snippet)
- temp_file.delete
- puts "Snippet updated!"
- break
- else
- changeset = SnippetSchema.changeset(snippet)
- result = Repo.update(changeset)
- temp_file.delete
- puts "Snippet updated!"
- break
+ if changeset.valid?
+ begin
+ if temp_file.sync_to_cloud?
+ SniplineCli::Services::SniplineApi.new.update(snippet)
+ temp_file.delete
+ puts "Snippet updated!"
+ break
+ else
+ changeset = SnippetSchema.changeset(snippet)
+ result = Repo.update(changeset)
+ temp_file.delete
+ puts "Snippet updated!"
+ break
+ end
+ rescue ex : Crest::UnprocessableEntity
+ puts "Invalid data:".colorize.mode(:bold)
+ snippet_errors = SnippetErrorResponse.from_json(ex.response.body)
+ snippet_errors.errors.each do |error|
+ puts "#{error.source["pointer"].gsub("/data/attributes/", "")}: #{error.title}".colorize.back(:red).on(:red)
+ end
+ puts "\r\nEdit Snippet? Y/n"
+ repeat = gets
+ break if repeat == "n"
+ rescue ex : Crest::NotFound
+ abort("404 API URL not found".colorize.back(:red).on(:red))
+ rescue ex : Crest::InternalServerError
+ abort("API Internal Server Error".colorize.back(:red).on(:red))
+ rescue ex
+ puts "#{ex.message}"
+ abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red))
end
- rescue ex : Crest::UnprocessableEntity
- puts "Invalid data:".colorize.mode(:bold)
- snippet_errors = SnippetErrorResponse.from_json(ex.response.body)
- snippet_errors.errors.each do |error|
- puts "#{error.source["pointer"].gsub("/data/attributes/", "")}: #{error.title}".colorize.back(:red).on(:red)
- end
- puts "\r\nEdit Snippet? Y/n"
- repeat = gets
- break if repeat == "n"
- rescue ex : Crest::NotFound
- abort("404 API URL not found".colorize.back(:red).on(:red))
- rescue ex : Crest::InternalServerError
- abort("API Internal Server Error".colorize.back(:red).on(:red))
- rescue ex
- puts "#{ex.message}"
- abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red))
- end
+ else
+ puts "Invalid data:".colorize.mode(:bold)
+ changeset.errors.each do |error|
+ puts "#{error[:field]} #{error[:message]}".colorize.back(:red).on(:red)
+ end
+ puts "\r\nEdit Snippet? Y/n"
+ repeat = gets
+ break if repeat == "n"
+ end
end
end
end
diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr
index 1ad8476..f45c061 100644
--- a/src/snipline_cli/services/temp_snippet_editor_file.cr
+++ b/src/snipline_cli/services/temp_snippet_editor_file.cr
@@ -56,7 +56,7 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"}
SnippetAttribute.new(
name: toml["name"].as(String),
real_command: toml["real_command"].as(String),
- documentation: toml["documentation"].as(String),
+ documentation: toml["documentation"].as(String).rstrip,
is_pinned: toml["is_pinned"].as(Bool),
snippet_alias: parse_snippet_alias(toml["snippet_alias"]),
tags: [] of String
From 6a6b47f5ac3e3808af3de28ac14bb7455e17f10f Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Fri, 29 Nov 2019 15:16:32 +0000
Subject: [PATCH 19/47] Add migrator to new command
---
src/snipline_cli/commands/new.cr | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr
index df5cacf..63489fb 100644
--- a/src/snipline_cli/commands/new.cr
+++ b/src/snipline_cli/commands/new.cr
@@ -15,6 +15,7 @@ module SniplineCli
unless File.exists?(File.expand_path("#{config.get("general.db")}"))
abort("Database does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red))
end
+ SniplineCli::Services::Migrator.run
unless ENV.has_key?("EDITOR")
abort("Please set your environment EDITOR variable. E.g. export EDITOR=vi".colorize.back(:red).on(:red))
end
From 9e20e9a22eb405a0d80fad84587bbc8bb5563545 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Fri, 29 Nov 2019 15:30:49 +0000
Subject: [PATCH 20/47] Update current tests
---
spec/commands/sync_spec.cr | 9 +++++----
spec/services/command_builder_spec.cr | 16 ++++++++++++----
2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/spec/commands/sync_spec.cr b/spec/commands/sync_spec.cr
index 3923555..f5b1c68 100644
--- a/spec/commands/sync_spec.cr
+++ b/spec/commands/sync_spec.cr
@@ -9,9 +9,10 @@ end
describe SniplineCli::Command::Sync do
it "Syncs snippets from server" do
- sync_command = SniplineCli::Command::Sync.new
- sync_command.snipline_api = SniplineCli::Services::SniplineApiTest.new
- sync_command.file = SniplineCli::Services::StoreSnippetsTest.new
- sync_command.run
+ # TODO
+ # sync_command = SniplineCli::Command::Sync.new
+ # sync_command.snipline_api = SniplineCli::Services::SniplineApiTest.new
+ # sync_command.file = SniplineCli::Services::StoreSnippetsTest.new
+ # sync_command.run
end
end
diff --git a/spec/services/command_builder_spec.cr b/spec/services/command_builder_spec.cr
index 42d69d2..fb874d7 100644
--- a/spec/services/command_builder_spec.cr
+++ b/spec/services/command_builder_spec.cr
@@ -1,7 +1,11 @@
describe SniplineCli::Services::CommandBuilder do
it "correctly parses snippets with no params" do
- attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}})
- snippet = SniplineCli::Models::Snippet.from_json(attributes)
+ # attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}})
+ snippet = SniplineCli::Models::SnippetSchema.new
+ snippet.name = "Git log pretty"
+ snippet.snippet_alias = "git.sla"
+ snippet.real_command = "git log --oneline --decorate --graph --all"
+ # snippet = SniplineCli::Models::Snippet.from_json(attributes)
File.tempfile("test") do |io|
response = SniplineCli::Services::CommandBuilder.run(snippet, io, io)
response.should eq("git log --oneline --decorate --graph --all")
@@ -9,8 +13,12 @@ describe SniplineCli::Services::CommandBuilder do
end
it "should generate random passwords" do
- attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"random password generator","real-command":"rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}","tags":["git"]}})
- snippet = SniplineCli::Models::Snippet.from_json(attributes)
+ # attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"random password generator","real-command":"rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}","tags":["git"]}})
+ # snippet = SniplineCli::Models::Snippet.from_json(attributes)
+ snippet = SniplineCli::Models::SnippetSchema.new
+ snippet.name = "Git log pretty"
+ snippet.snippet_alias = "git.sla"
+ snippet.real_command = "rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}"
File.tempfile("test") do |io|
response = SniplineCli::Services::CommandBuilder.run(snippet, io, io)
response.size.should eq(29)
From d7e05d7ae0b7da0b83719f48ba3ace9757847f85 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Fri, 29 Nov 2019 15:36:08 +0000
Subject: [PATCH 21/47] Run Ameba and formatter
---
spec/commands/sync_spec.cr | 2 +-
spec/services/command_builder_spec.cr | 16 +-
spec/services/documentation_formatter_spec.cr | 32 ++-
spec/spec_helper.cr | 6 +-
src/snipline_cli.cr | 12 +-
src/snipline_cli/commands/init.cr | 14 +-
src/snipline_cli/commands/new.cr | 38 +--
src/snipline_cli/commands/search.cr | 56 ++---
src/snipline_cli/commands/sync.cr | 234 +++++++++---------
src/snipline_cli/config.cr | 2 +-
src/snipline_cli/models/snippet.cr | 10 +-
src/snipline_cli/models/snippet_attribute.cr | 10 +-
src/snipline_cli/models/snippet_schema.cr | 210 ++++++++--------
.../ncurses_windows/mock_window.cr | 9 +-
src/snipline_cli/services/command_builder.cr | 2 +-
src/snipline_cli/services/display_results.cr | 8 +-
.../services/documentation_formatter.cr | 16 +-
src/snipline_cli/services/edit_snippet.cr | 101 ++++----
src/snipline_cli/services/load_snippets.cr | 4 +-
src/snipline_cli/services/migrator.cr | 32 +--
src/snipline_cli/services/search_snippets.cr | 10 +-
src/snipline_cli/services/snipline_api.cr | 54 ++--
.../services/sync_snippet_to_snipline.cr | 12 +-
.../services/temp_snippet_editor_file.cr | 35 ++-
24 files changed, 457 insertions(+), 468 deletions(-)
diff --git a/spec/commands/sync_spec.cr b/spec/commands/sync_spec.cr
index f5b1c68..358d8b6 100644
--- a/spec/commands/sync_spec.cr
+++ b/spec/commands/sync_spec.cr
@@ -9,7 +9,7 @@ end
describe SniplineCli::Command::Sync do
it "Syncs snippets from server" do
- # TODO
+ # TODO
# sync_command = SniplineCli::Command::Sync.new
# sync_command.snipline_api = SniplineCli::Services::SniplineApiTest.new
# sync_command.file = SniplineCli::Services::StoreSnippetsTest.new
diff --git a/spec/services/command_builder_spec.cr b/spec/services/command_builder_spec.cr
index fb874d7..18b623b 100644
--- a/spec/services/command_builder_spec.cr
+++ b/spec/services/command_builder_spec.cr
@@ -1,10 +1,10 @@
describe SniplineCli::Services::CommandBuilder do
it "correctly parses snippets with no params" do
# attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}})
- snippet = SniplineCli::Models::SnippetSchema.new
- snippet.name = "Git log pretty"
- snippet.snippet_alias = "git.sla"
- snippet.real_command = "git log --oneline --decorate --graph --all"
+ snippet = SniplineCli::Models::SnippetSchema.new
+ snippet.name = "Git log pretty"
+ snippet.snippet_alias = "git.sla"
+ snippet.real_command = "git log --oneline --decorate --graph --all"
# snippet = SniplineCli::Models::Snippet.from_json(attributes)
File.tempfile("test") do |io|
response = SniplineCli::Services::CommandBuilder.run(snippet, io, io)
@@ -15,10 +15,10 @@ describe SniplineCli::Services::CommandBuilder do
it "should generate random passwords" do
# attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"random password generator","real-command":"rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}","tags":["git"]}})
# snippet = SniplineCli::Models::Snippet.from_json(attributes)
- snippet = SniplineCli::Models::SnippetSchema.new
- snippet.name = "Git log pretty"
- snippet.snippet_alias = "git.sla"
- snippet.real_command = "rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}"
+ snippet = SniplineCli::Models::SnippetSchema.new
+ snippet.name = "Git log pretty"
+ snippet.snippet_alias = "git.sla"
+ snippet.real_command = "rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}"
File.tempfile("test") do |io|
response = SniplineCli::Services::CommandBuilder.run(snippet, io, io)
response.size.should eq(29)
diff --git a/spec/services/documentation_formatter_spec.cr b/spec/services/documentation_formatter_spec.cr
index 8acf05b..43a8f58 100644
--- a/spec/services/documentation_formatter_spec.cr
+++ b/spec/services/documentation_formatter_spec.cr
@@ -1,23 +1,21 @@
describe SniplineCli::Services::DocumentationFormatter do
it "returns empty when nil is passed" do
- formatter = setup_formatter()
- formatter.to_ncurses(nil).should eq("No documentation found")
- end
+ formatter = setup_formatter()
+ formatter.to_ncurses(nil).should eq("No documentation found")
+ end
- it "puts lines over its width onto new lines" do
- formatter = setup_formatter(width: 20)
- formatter.format_documentation("This sentence is longer than 20 characters", 20).should eq(["This sentence is", "longer than 20", "characters"])
- end
+ it "puts lines over its width onto new lines" do
+ formatter = setup_formatter(width: 20)
+ formatter.format_documentation("This sentence is longer than 20 characters", 20).should eq(["This sentence is", "longer than 20", "characters"])
+ end
- it "splits words over the character limit onto new lines" do
- formatter = setup_formatter(width: 20)
- formatter.format_documentation("pneumonoultramicroscopicsilicovolcanoconiosis", 20).should eq(["pneumonoultramicrosc", "opicsilicovolcanocon", "iosis"])
- end
-
- it "works with a realistic example" do
- formatter = setup_formatter()
- formatter.format_documentation("Find files that contain the `searchterm`.\n\nUsing `l` will show filenames for results. Not using `l` will show contents.", 500).should eq(["Find files that contain the `searchterm`.\n", "\n", "Using `l` will show filenames for results. Not using `l` will show contents."])
- end
+ it "splits words over the character limit onto new lines" do
+ formatter = setup_formatter(width: 20)
+ formatter.format_documentation("pneumonoultramicroscopicsilicovolcanoconiosis", 20).should eq(["pneumonoultramicrosc", "opicsilicovolcanocon", "iosis"])
+ end
+ it "works with a realistic example" do
+ formatter = setup_formatter()
+ formatter.format_documentation("Find files that contain the `searchterm`.\n\nUsing `l` will show filenames for results. Not using `l` will show contents.", 500).should eq(["Find files that contain the `searchterm`.\n", "\n", "Using `l` will show filenames for results. Not using `l` will show contents."])
+ end
end
-
diff --git a/spec/spec_helper.cr b/spec/spec_helper.cr
index 792edf7..0f810bc 100644
--- a/spec/spec_helper.cr
+++ b/spec/spec_helper.cr
@@ -2,7 +2,7 @@ require "spec"
require "../src/snipline_cli"
def setup_formatter(width : Int32 = 500)
- window = SniplineCli::NCursesWindows::MockWindow.new
- window.width = width
- SniplineCli::Services::DocumentationFormatter.new(window)
+ window = SniplineCli::NCursesWindows::MockWindow.new
+ window.width = width
+ SniplineCli::Services::DocumentationFormatter.new(window)
end
diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr
index 967fbf4..480ba76 100644
--- a/src/snipline_cli.cr
+++ b/src/snipline_cli.cr
@@ -14,12 +14,12 @@ require "./snipline_cli/services/*"
require "./snipline_cli/commands/*"
module Repo
- extend Crecto::Repo
-
- config do |conf|
- conf.adapter = Crecto::Adapters::SQLite3
- conf.database = File.expand_path("~/.config/snipline/snipline.db")
- end
+ extend Crecto::Repo
+
+ config do |conf|
+ conf.adapter = Crecto::Adapters::SQLite3
+ conf.database = File.expand_path("~/.config/snipline/snipline.db")
+ end
end
module SniplineCli
diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr
index 035191d..0206f8d 100644
--- a/src/snipline_cli/commands/init.cr
+++ b/src/snipline_cli/commands/init.cr
@@ -28,15 +28,15 @@ module SniplineCli
puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}"
unless File.exists?(File.expand_path(config.get("general.db")))
File.write(File.expand_path(config.get("general.db")), "", mode: "w")
- puts "Created SQLite file in #{File.expand_path(config.get("general.db")).colorize.mode(:bold)}"
+ puts "Created SQLite file in #{File.expand_path(config.get("general.db")).colorize.mode(:bold)}"
end
- puts ""
- puts "Run #{"snipcli new".colorize.mode(:bold)} to create your first snippet"
- puts "Search snippets with #{"snipcli search".colorize.mode(:bold)}"
- puts ""
+ puts ""
+ puts "Run #{"snipcli new".colorize.mode(:bold)} to create your first snippet"
+ puts "Search snippets with #{"snipcli search".colorize.mode(:bold)}"
+ puts ""
puts "See documentation for more information #{"https://github.com/snipline/snipcli".colorize.mode(:bold)}"
- puts ""
- puts "Happy Coding!"
+ puts ""
+ puts "Happy Coding!"
end
end
diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr
index 63489fb..1c9fe29 100644
--- a/src/snipline_cli/commands/new.cr
+++ b/src/snipline_cli/commands/new.cr
@@ -15,7 +15,7 @@ module SniplineCli
unless File.exists?(File.expand_path("#{config.get("general.db")}"))
abort("Database does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red))
end
- SniplineCli::Services::Migrator.run
+ SniplineCli::Services::Migrator.run
unless ENV.has_key?("EDITOR")
abort("Please set your environment EDITOR variable. E.g. export EDITOR=vi".colorize.back(:red).on(:red))
end
@@ -24,25 +24,25 @@ module SniplineCli
loop do
system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}")
snippet_attributes = temp_file.read
- snippet = SniplineCli::Models::SnippetSchema.new
+ snippet = SniplineCli::Models::SnippetSchema.new
- snippet.name = snippet_attributes.name
- snippet.real_command = snippet_attributes.real_command
- snippet.documentation = snippet_attributes.documentation
- snippet.tags = (snippet_attributes.tags.nil?) ? nil : snippet_attributes.tags.not_nil!.join(",")
- snippet.snippet_alias = snippet_attributes.snippet_alias
- snippet.is_pinned = snippet_attributes.is_pinned
- snippet.is_synced = false
- changeset = SnippetSchema.changeset(snippet)
- abort("Invalid") unless changeset.valid?
- result = Repo.insert(changeset)
+ snippet.name = snippet_attributes.name
+ snippet.real_command = snippet_attributes.real_command
+ snippet.documentation = snippet_attributes.documentation
+ snippet.tags = (snippet_attributes.tags.nil?) ? nil : snippet_attributes.tags.not_nil!.join(",")
+ snippet.snippet_alias = snippet_attributes.snippet_alias
+ snippet.is_pinned = snippet_attributes.is_pinned
+ snippet.is_synced = false
+ changeset = SnippetSchema.changeset(snippet)
+ abort("Invalid") unless changeset.valid?
+ result = Repo.insert(changeset)
begin
- snippet = if temp_file.sync_to_cloud?
- SniplineCli::Services::SyncSnippetToSnipline.handle(result.instance)
- # else
- # snippet_attributes.set_timestamps()
- # Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes)
- end
+ if temp_file.sync_to_cloud?
+ SniplineCli::Services::SyncSnippetToSnipline.handle(result.instance)
+ # else
+ # snippet_attributes.set_timestamps()
+ # Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes)
+ end
# if snippet.is_a?(Snippet)
# SniplineCli::Services::AppendSnippetToLocalStorage.handle(snippet)
# end
@@ -63,7 +63,7 @@ module SniplineCli
rescue ex : Crest::InternalServerError
abort("API Internal Server Error".colorize.back(:red).on(:red))
rescue ex
- puts "#{ex.message}"
+ puts "#{ex.message}"
abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red))
end
end
diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr
index b45cf16..3432d30 100644
--- a/src/snipline_cli/commands/search.cr
+++ b/src/snipline_cli/commands/search.cr
@@ -38,34 +38,34 @@ module SniplineCli
# snippets = SniplineCli::Services::LoadSnippets.run
snippets = if search_term.empty?
- query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i)
- Repo.all(SniplineCli::Models::SnippetSchema, query)
- else
- lowered_search_term = search_term.downcase
- if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!)
- puts "The search field entered does not exist."
- return
- end
- query = Crecto::Repo::Query.new
- if flags.field
- query = query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term)
- else
- query = query.where("snippets.name LIKE '%?%'", lowered_search_term).or_where("snippets.real_command LIKE '%?%'", lowered_search_term).or_where("snippets.snippet_alias LIKE '%?%'", lowered_search_term).or_where("snippets.tags LIKE '%?%'", lowered_search_term)
- end
- query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i)
- Repo.all(SniplineCli::Models::SnippetSchema, query)
- # snippets.select! { |i|
- # if field = flags.field
- # i.value_for_attribute(field).downcase.includes?(lowered_search_term)
- # else
- # if !i.tags.nil?
- # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term)
- # else
- # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term)
- # end
- # end
- # }
- end
+ query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i)
+ Repo.all(SniplineCli::Models::SnippetSchema, query)
+ else
+ lowered_search_term = search_term.downcase
+ if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!)
+ puts "The search field entered does not exist."
+ return
+ end
+ query = Crecto::Repo::Query.new
+ if flags.field
+ query = query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term)
+ else
+ query = query.where("snippets.name LIKE '%?%'", lowered_search_term).or_where("snippets.real_command LIKE '%?%'", lowered_search_term).or_where("snippets.snippet_alias LIKE '%?%'", lowered_search_term).or_where("snippets.tags LIKE '%?%'", lowered_search_term)
+ end
+ query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i)
+ Repo.all(SniplineCli::Models::SnippetSchema, query)
+ # snippets.select! { |i|
+ # if field = flags.field
+ # i.value_for_attribute(field).downcase.includes?(lowered_search_term)
+ # else
+ # if !i.tags.nil?
+ # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term)
+ # else
+ # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term)
+ # end
+ # end
+ # }
+ end
# results = sort_results(snippets, flags.limit)
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index a51f3a8..0ab4c2e 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -17,140 +17,132 @@ module SniplineCli
property file : (SniplineCli::Services::StoreSnippets) = SniplineCli::Services::StoreSnippets.new
def run
- puts "Migrating Database..."
- SniplineCli::Services::Migrator.run
+ puts "Migrating Database..."
+ SniplineCli::Services::Migrator.run
puts "Syncing snippets..."
config = SniplineCli.config
- if config.get("api.token") == ""
- abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}")
- end
+ if config.get("api.token") == ""
+ abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}")
+ end
- sync_unsynced_snippets
+ sync_unsynced_snippets
@snipline_api.fetch do |body|
cloud_snippets = Models::SnippetDataWrapper.from_json(body).data
- save_new_snipline_cloud_snippets(cloud_snippets)
- delete_orphan_snippets(cloud_snippets)
- update_locally_out_of_date_snippets(cloud_snippets)
- end
+ save_new_snipline_cloud_snippets(cloud_snippets)
+ delete_orphan_snippets(cloud_snippets)
+ update_locally_out_of_date_snippets(cloud_snippets)
+ end
end
- def update_locally_out_of_date_snippets(cloud_snippets)
- # TODO: this method is for local snippets whose updated_at is behind the cloud
- synced_to_local_count = 0
- synced_to_cloud_count = 0
- cloud_snippets.each { |cs|
- local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: cs.id.not_nil!)
- if local_snippet
- # cloud_updated_at = Time::Format.new(cs.not_nil!.updated_at.not_nil!).parse(cs.not_nil!.updated_at.not_nil!, Time::Location::UTC)
- cloud_updated_at = Time.parse(
- cs.not_nil!.updated_at.not_nil!,
- "%F %T",
- Time::Location::UTC
- )
- local_updated_at = local_snippet.not_nil!.updated_at.not_nil!
-
- if local_snippet.is_synced
- # local hasn't changed - redownload from snipline just incase
- local_snippet.name = cs.not_nil!.name.not_nil!
- local_snippet.real_command = cs.not_nil!.real_command.not_nil!
- local_snippet.documentation = cs.not_nil!.documentation
- local_snippet.snippet_alias = cs.not_nil!.snippet_alias
- local_snippet.is_synced = true
- local_snippet.is_pinned = cs.not_nil!.is_pinned
- Repo.update(local_snippet)
- synced_to_local_count = synced_to_local_count + 1
- else
- # local has updated without sending to snipline cloud - time to update the cloud version
- @snipline_api.update(local_snippet)
- synced_to_cloud_count = synced_to_cloud_count + 1
- end
- end
- }
- puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green)
- puts "Synced #{synced_to_cloud_count} from local database to Snipline Cloud".colorize(:green)
- end
-
- def delete_orphan_snippets(cloud_snippets)
- # if snippet cloud_id exists locally but not in cloud
- puts "Cleaning up snippets that are no longer in Snipline Cloud..."
- local_snippets = SniplineCli::Services::LoadSnippets.run.select { |ls| !ls.cloud_id.nil? }
- orphans = [] of SniplineCli::Models::SnippetSchema
- cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id }
- local_snippets.each do |ls|
- orphans << ls unless cloud_snippet_exists?(ls, cloud_snippet_ids)
- end
- orphans.each do |ls|
- # delete snippets
- puts "Deleting #{ls.name}".colorize(:green)
- Repo.delete(ls)
- end
- end
+ def update_locally_out_of_date_snippets(cloud_snippets)
+ # TODO: this method is for local snippets whose updated_at is behind the cloud
+ synced_to_local_count = 0
+ synced_to_cloud_count = 0
+ cloud_snippets.each { |cs|
+ local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: cs.id.not_nil!)
+ if local_snippet
+ if local_snippet.is_synced
+ # local hasn't changed - redownload from snipline just incase
+ local_snippet.name = cs.not_nil!.name.not_nil!
+ local_snippet.real_command = cs.not_nil!.real_command.not_nil!
+ local_snippet.documentation = cs.not_nil!.documentation
+ local_snippet.snippet_alias = cs.not_nil!.snippet_alias
+ local_snippet.is_synced = true
+ local_snippet.is_pinned = cs.not_nil!.is_pinned
+ Repo.update(local_snippet)
+ synced_to_local_count = synced_to_local_count + 1
+ else
+ # local has updated without sending to snipline cloud - time to update the cloud version
+ @snipline_api.update(local_snippet)
+ synced_to_cloud_count = synced_to_cloud_count + 1
+ end
+ end
+ }
+ puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green)
+ puts "Synced #{synced_to_cloud_count} from local database to Snipline Cloud".colorize(:green)
+ end
- def cloud_snippet_exists?(local_snippet, cloud_snippet_ids)
- cloud_snippet_ids.includes?(local_snippet.cloud_id.not_nil!)
- end
+ def delete_orphan_snippets(cloud_snippets)
+ # if snippet cloud_id exists locally but not in cloud
+ puts "Cleaning up snippets that are no longer in Snipline Cloud..."
+ local_snippets = SniplineCli::Services::LoadSnippets.run.select { |ls| !ls.cloud_id.nil? }
+ orphans = [] of SniplineCli::Models::SnippetSchema
+ cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id }
+ local_snippets.each do |ls|
+ orphans << ls unless cloud_snippet_exists?(ls, cloud_snippet_ids)
+ end
+ orphans.each do |ls|
+ # delete snippets
+ puts "Deleting #{ls.name}".colorize(:green)
+ Repo.delete(ls)
+ end
+ end
+ def cloud_snippet_exists?(local_snippet, cloud_snippet_ids)
+ cloud_snippet_ids.includes?(local_snippet.cloud_id.not_nil!)
+ end
- def save_new_snipline_cloud_snippets(cloud_snippets)
- # Save the response JSON into a file without the data wrapper
- local_snippets = SniplineCli::Services::LoadSnippets.run
- begin
- # Only snippets that are in the cloud but not stored locally
- difference = [] of SniplineCli::Models::Snippet
- local_snippet_cloud_ids = local_snippets.select{ |s| !s.cloud_id.nil? }.map { |s| s.cloud_id.not_nil! }
- cloud_snippets.each do |cs|
- difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids)
- end
- difference.each do |s|
- puts "Storing #{s.attributes.name} from Snipline".colorize(:green)
- snippet = SniplineCli::Models::SnippetSchema.new
- snippet.name = s.name
- snippet.cloud_id = s.id
- snippet.real_command = s.real_command
- snippet.documentation = s.documentation
- snippet.tags = (s.tags.nil?) ? nil : s.tags.not_nil!.join(",")
- snippet.snippet_alias = s.snippet_alias
- snippet.is_pinned = s.is_pinned
- snippet.is_synced = true
- changeset = SniplineCli::Models::SnippetSchema.changeset(snippet)
- result = Repo.insert(changeset)
- # local_snippets << s
- end
- # @file.store(local_snippets.to_json) unless difference.size == 0
- rescue ex
- puts ex.message.colorize(:red)
- end
- end
+ def save_new_snipline_cloud_snippets(cloud_snippets)
+ # Save the response JSON into a file without the data wrapper
+ local_snippets = SniplineCli::Services::LoadSnippets.run
+ begin
+ # Only snippets that are in the cloud but not stored locally
+ difference = [] of SniplineCli::Models::Snippet
+ local_snippet_cloud_ids = local_snippets.select { |s| !s.cloud_id.nil? }.map { |s| s.cloud_id.not_nil! }
+ cloud_snippets.each do |cs|
+ difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids)
+ end
+ difference.each do |s|
+ puts "Storing #{s.attributes.name} from Snipline".colorize(:green)
+ snippet = SniplineCli::Models::SnippetSchema.new
+ snippet.name = s.name
+ snippet.cloud_id = s.id
+ snippet.real_command = s.real_command
+ snippet.documentation = s.documentation
+ snippet.tags = (s.tags.nil?) ? nil : s.tags.not_nil!.join(",")
+ snippet.snippet_alias = s.snippet_alias
+ snippet.is_pinned = s.is_pinned
+ snippet.is_synced = true
+ changeset = SniplineCli::Models::SnippetSchema.changeset(snippet)
+ Repo.insert(changeset)
+ # local_snippets << s
+ end
+ # @file.store(local_snippets.to_json) unless difference.size == 0
+ rescue ex
+ puts ex.message.colorize(:red)
+ end
+ end
- def local_snippet_exists?(cs, local_snippet_ids)
- unless cs.id.nil?
- return local_snippet_ids.includes?(cs.id.not_nil!)
- end
- return false
- end
+ def local_snippet_exists?(cs, local_snippet_ids)
+ if cs.id.nil?
+ false
+ else
+ local_snippet_ids.includes?(cs.id.not_nil!)
+ end
+ end
- def sync_unsynced_snippets
- local_snippets = SniplineCli::Services::LoadSnippets.run
- local_snippets.select { |s| s.cloud_id.nil? }.each do |snippet|
- puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..."
- begin
- cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet)
- update_local_snippet_id(cloud_snippet, snippet)
- puts "Success!".colorize(:green)
- rescue ex : Crest::UnprocessableEntity
- resp = SniplineCli::Models::SnippetErrorResponse.from_json(ex.response.not_nil!.body)
- puts "Failed: #{resp.errors.first.source["pointer"].gsub("/data/attributes/", "")} #{resp.errors.first.detail}".colorize(:red)
- rescue ex
- abort ex.message
- end
- end
- end
+ def sync_unsynced_snippets
+ local_snippets = SniplineCli::Services::LoadSnippets.run
+ local_snippets.select { |s| s.cloud_id.nil? }.each do |snippet|
+ puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..."
+ begin
+ cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet)
+ update_local_snippet_id(cloud_snippet, snippet)
+ puts "Success!".colorize(:green)
+ rescue ex : Crest::UnprocessableEntity
+ resp = SniplineCli::Models::SnippetErrorResponse.from_json(ex.response.not_nil!.body)
+ puts "Failed: #{resp.errors.first.source["pointer"].gsub("/data/attributes/", "")} #{resp.errors.first.detail}".colorize(:red)
+ rescue ex
+ abort ex.message
+ end
+ end
+ end
- def update_local_snippet_id(cloud_snippet, local_snippet)
- local_snippet.cloud_id = cloud_snippet.id
- local_snippet.is_synced = true
- changeset = Repo.update(local_snippet)
- end
+ def update_local_snippet_id(cloud_snippet, local_snippet)
+ local_snippet.cloud_id = cloud_snippet.id
+ local_snippet.is_synced = true
+ Repo.update(local_snippet)
+ end
end
register_sub_command :sync, Sync
diff --git a/src/snipline_cli/config.cr b/src/snipline_cli/config.cr
index 3e63d53..44d4e54 100644
--- a/src/snipline_cli/config.cr
+++ b/src/snipline_cli/config.cr
@@ -24,7 +24,7 @@ module SniplineCli
else
@api = {"url" => "https://api.snipline.io/api", "token" => ""}
@general = {
- "db" => "~/.config/snipline/snipline.db",
+ "db" => "~/.config/snipline/snipline.db",
"temp_dir" => "~/.config/snipline",
}
end
diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr
index b3b611f..9b130db 100644
--- a/src/snipline_cli/models/snippet.cr
+++ b/src/snipline_cli/models/snippet.cr
@@ -138,11 +138,11 @@ module SniplineCli::Models
when "name"
name || ""
when "tags"
- if !tags.nil?
- tags.as(Array(String)).join(",") || ""
- else
- ""
- end
+ if !tags.nil?
+ tags.as(Array(String)).join(",") || ""
+ else
+ ""
+ end
else
""
end
diff --git a/src/snipline_cli/models/snippet_attribute.cr b/src/snipline_cli/models/snippet_attribute.cr
index e85bc58..1794a33 100644
--- a/src/snipline_cli/models/snippet_attribute.cr
+++ b/src/snipline_cli/models/snippet_attribute.cr
@@ -21,7 +21,7 @@ module SniplineCli::Models
@[JSON::Field(key: "tags")]
property tags : Array(String) | Nil
-
+
@[JSON::Field(key: "updated-at")]
property updated_at : String | Nil
@@ -34,9 +34,9 @@ module SniplineCli::Models
def initialize(@name : String, @real_command : String, @documentation : String | Nil, @is_pinned : Bool, @snippet_alias : String | Nil, @tags : Array(String))
end
- def set_timestamps()
- self.inserted_at = Time.utc.to_s
- self.updated_at = Time.utc.to_s
- end
+ def set_timestamps
+ self.inserted_at = Time.utc.to_s
+ self.updated_at = Time.utc.to_s
+ end
end
end
diff --git a/src/snipline_cli/models/snippet_schema.cr b/src/snipline_cli/models/snippet_schema.cr
index 0b383d6..b7137e0 100644
--- a/src/snipline_cli/models/snippet_schema.cr
+++ b/src/snipline_cli/models/snippet_schema.cr
@@ -1,124 +1,124 @@
module SniplineCli::Models
- class SnippetSchema < Crecto::Model
- set_created_at_field :inserted_at
+ class SnippetSchema < Crecto::Model
+ set_created_at_field :inserted_at
- schema "snippets" do
- field :local_id, Int32, primary_key: true
+ schema "snippets" do
+ field :local_id, Int32, primary_key: true
field :cloud_id, String
- field :name, String
+ field :name, String
field :real_command, String
field :documentation, String
field :tags, String
field :snippet_alias, String
field :is_pinned, Bool
field :is_synced, Bool
- end
+ end
- validate_required [:name, :real_command]
- validate_length :name, min: 1
- validate_length :real_command, min: 1
- unique_constraint :snippet_alias
- unique_constraint :name
- #
- # Params such as variables or select that require input from the user
- #
- def interactive_params : Array(SnippetParam)
- temp_array = [] of SnippetParam
+ validate_required [:name, :real_command]
+ validate_length :name, min: 1
+ validate_length :real_command, min: 1
+ unique_constraint :snippet_alias
+ unique_constraint :name
- real_command.as(String).scan(/#(select)?\{\[(.+?)\]\}/) do |m|
- param_type = (m[1]?) ? m[1] : "variable"
- if temp_array.count { |param| param.name == m[2] && param_type == param.type } == 0
- if param_type == "select"
- split_equals = m[2].split("=").map { |substring| substring }
- param_name = split_equals.shift
- unparsed_params = split_equals.join("=")
- if unparsed_params.is_a?(String)
- options = unparsed_params.as(String).split(",").map(&.strip)
- # todo
- if options.is_a?(Array(String))
- options = options.as(Array(String))
- end
- else
- options = Array(String).new
- end
- # default_option = options.first || ""
- temp_array << SnippetParam.new(param_name, "", m[2], "select", options)
- elsif m[2].includes?("=")
- split_equals = m[2].split("=").map { |substring| substring }
- param_name = split_equals.shift
- default_value = split_equals.join("=")
- temp_array << SnippetParam.new(param_name, default_value, m[2], "variable", Array(String).new)
- else
- temp_array << SnippetParam.new(m[2], "", m[2], "variable", Array(String).new)
- end
- end
- end
- temp_array
- end
+ #
+ # Params such as variables or select that require input from the user
+ #
+ def interactive_params : Array(SnippetParam)
+ temp_array = [] of SnippetParam
- #
- # E.g. Passwords
- #
- def uninteractive_params : Array(SnippetPasswordParam)
- temp_array = [] of SnippetPasswordParam
- real_command.as(String).scan(/#password\{\[(.+?)\]\}/) do |m|
- full = m[1].as(String)
- options = full.split(",")
- id = options.shift
- length = UInt8.new(16)
- if options.size > 0
- length = options.shift.to_u32 || UInt8.new(16)
- end
- temp_array << SnippetPasswordParam.new(id, length, full)
- end
- temp_array
- end
+ real_command.as(String).scan(/#(select)?\{\[(.+?)\]\}/) do |m|
+ param_type = (m[1]?) ? m[1] : "variable"
+ if temp_array.count { |param| param.name == m[2] && param_type == param.type } == 0
+ if param_type == "select"
+ split_equals = m[2].split("=").map { |substring| substring }
+ param_name = split_equals.shift
+ unparsed_params = split_equals.join("=")
+ if unparsed_params.is_a?(String)
+ options = unparsed_params.as(String).split(",").map(&.strip)
+ # todo
+ if options.is_a?(Array(String))
+ options = options.as(Array(String))
+ end
+ else
+ options = Array(String).new
+ end
+ # default_option = options.first || ""
+ temp_array << SnippetParam.new(param_name, "", m[2], "select", options)
+ elsif m[2].includes?("=")
+ split_equals = m[2].split("=").map { |substring| substring }
+ param_name = split_equals.shift
+ default_value = split_equals.join("=")
+ temp_array << SnippetParam.new(param_name, default_value, m[2], "variable", Array(String).new)
+ else
+ temp_array << SnippetParam.new(m[2], "", m[2], "variable", Array(String).new)
+ end
+ end
+ end
+ temp_array
+ end
- def has_params
- interactive_params.size > 0 || uninteractive_params.size > 0
- end
+ #
+ # E.g. Passwords
+ #
+ def uninteractive_params : Array(SnippetPasswordParam)
+ temp_array = [] of SnippetPasswordParam
+ real_command.as(String).scan(/#password\{\[(.+?)\]\}/) do |m|
+ full = m[1].as(String)
+ options = full.split(",")
+ id = options.shift
+ length = UInt8.new(16)
+ if options.size > 0
+ length = options.shift.to_u32 || UInt8.new(16)
+ end
+ temp_array << SnippetPasswordParam.new(id, length, full)
+ end
+ temp_array
+ end
- def preview_command
- unless has_params()
- return real_command
- end
+ def has_params
+ interactive_params.size > 0 || uninteractive_params.size > 0
+ end
- temp_command = real_command
- interactive_params.each do |param|
- if param.type == "select"
- temp_command = temp_command.as(String).gsub("#select{[#{param.full}]}") { "<#{param.name}>" }
- temp_command = temp_command.as(String).gsub("#select{[#{param.name}]}") { "<#{param.name}>" }
- else
- temp_command = temp_command.as(String).gsub("\#{[#{param.full}]}") { "<#{param.name}>" }
- temp_command = temp_command.as(String).gsub("\#{[#{param.name}]}") { "<#{param.name}>" }
- end
- end
+ def preview_command
+ unless has_params()
+ return real_command
+ end
- uninteractive_params.each do |param|
- temp_command = temp_command.as(String).gsub("#password{[#{param.full}]}") { "" }
- temp_command = temp_command.as(String).gsub("#password{[#{param.id}]}") { "" }
- end
- temp_command
- end
+ temp_command = real_command
+ interactive_params.each do |param|
+ if param.type == "select"
+ temp_command = temp_command.as(String).gsub("#select{[#{param.full}]}") { "<#{param.name}>" }
+ temp_command = temp_command.as(String).gsub("#select{[#{param.name}]}") { "<#{param.name}>" }
+ else
+ temp_command = temp_command.as(String).gsub("\#{[#{param.full}]}") { "<#{param.name}>" }
+ temp_command = temp_command.as(String).gsub("\#{[#{param.name}]}") { "<#{param.name}>" }
+ end
+ end
- def value_for_attribute(attribute : String)
- case attribute
- when "alias"
- snippet_alias || ""
- when "documentation"
- documentation || ""
- when "name"
- name || ""
- when "tags"
- if !tags.nil?
- tags.as(Array(String)).join(",") || ""
- else
- ""
- end
- else
- ""
- end
- end
- end
+ uninteractive_params.each do |param|
+ temp_command = temp_command.as(String).gsub("#password{[#{param.full}]}") { "" }
+ temp_command = temp_command.as(String).gsub("#password{[#{param.id}]}") { "" }
+ end
+ temp_command
+ end
+ def value_for_attribute(attribute : String)
+ case attribute
+ when "alias"
+ snippet_alias || ""
+ when "documentation"
+ documentation || ""
+ when "name"
+ name || ""
+ when "tags"
+ if !tags.nil?
+ tags.as(Array(String)).join(",") || ""
+ else
+ ""
+ end
+ else
+ ""
+ end
+ end
+ end
end
diff --git a/src/snipline_cli/ncurses_windows/mock_window.cr b/src/snipline_cli/ncurses_windows/mock_window.cr
index cdab9f5..6b76065 100644
--- a/src/snipline_cli/ncurses_windows/mock_window.cr
+++ b/src/snipline_cli/ncurses_windows/mock_window.cr
@@ -1,6 +1,7 @@
class SniplineCli::NCursesWindows::MockWindow
- property width = 500
- def print(output)
- output
- end
+ property width = 500
+
+ def print(output)
+ output
+ end
end
diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr
index 36a26db..f3cc851 100644
--- a/src/snipline_cli/services/command_builder.cr
+++ b/src/snipline_cli/services/command_builder.cr
@@ -41,7 +41,7 @@ module SniplineCli
E F G H I J K L M N O P Q R S
T U V W X Y Z 1 2 3 4 5 6 7 8
9 0 £ * ^ ] [ : ; | ? , .
- ` ~ / }
+ ` ~ /}
snippet.uninteractive_params.each do |param|
# todo: use string builder instead
generated_password = ""
diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr
index 75ef8db..e652c97 100644
--- a/src/snipline_cli/services/display_results.cr
+++ b/src/snipline_cli/services/display_results.cr
@@ -105,10 +105,10 @@ module SniplineCli::Services
SniplineCli::Services::CommandBuilder.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT)
end
- def edit_snippet
- NCurses.clear
- NCurses.end
+ def edit_snippet
+ NCurses.clear
+ NCurses.end
SniplineCli::Services::EditSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT)
- end
+ end
end
end
diff --git a/src/snipline_cli/services/documentation_formatter.cr b/src/snipline_cli/services/documentation_formatter.cr
index ba210fa..21fafb5 100644
--- a/src/snipline_cli/services/documentation_formatter.cr
+++ b/src/snipline_cli/services/documentation_formatter.cr
@@ -34,14 +34,14 @@ module SniplineCli::Services
if line.size >= width
words = line.split(' ')
- words = words.flat_map { |word|
- # for words that are longer than the width
- if word.size >= width
- word.chars.to_a.each_slice(width).to_a.map{ |w| w.join }
- else
- word
- end
- }
+ words = words.flat_map { |word|
+ # for words that are longer than the width
+ if word.size >= width
+ word.chars.to_a.each_slice(width).to_a.map { |w| w.join }
+ else
+ word
+ end
+ }
formatted_line = String::Builder.new
words.each do |word|
if formatted_line.empty?
diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr
index f84e846..c2ac6e3 100644
--- a/src/snipline_cli/services/edit_snippet.cr
+++ b/src/snipline_cli/services/edit_snippet.cr
@@ -11,63 +11,62 @@ module SniplineCli
def self.run(snippet : SnippetSchema, input, output)
config = SniplineCli.config
log = SniplineCli.log
- log.info("editing snippet #{snippet.name}")
+ log.info("editing snippet #{snippet.name}")
temp_file = SniplineCli::Services::TempSnippetEditorFile.new(snippet)
temp_file.create
loop do
system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}")
snippet_attributes = temp_file.read
- snippet.name = snippet_attributes.name
- snippet.real_command = snippet_attributes.real_command
- snippet.documentation = snippet_attributes.documentation
- snippet.tags = (snippet_attributes.tags.nil?) ? nil : snippet_attributes.tags.not_nil!.join(",")
- snippet.snippet_alias = snippet_attributes.snippet_alias
- snippet.is_pinned = snippet_attributes.is_pinned
- snippet.is_synced = false
- changeset = SnippetSchema.changeset(snippet)
- if changeset.valid?
- begin
- if temp_file.sync_to_cloud?
- SniplineCli::Services::SniplineApi.new.update(snippet)
- temp_file.delete
- puts "Snippet updated!"
- break
- else
- changeset = SnippetSchema.changeset(snippet)
- result = Repo.update(changeset)
- temp_file.delete
- puts "Snippet updated!"
- break
- end
- rescue ex : Crest::UnprocessableEntity
- puts "Invalid data:".colorize.mode(:bold)
- snippet_errors = SnippetErrorResponse.from_json(ex.response.body)
- snippet_errors.errors.each do |error|
- puts "#{error.source["pointer"].gsub("/data/attributes/", "")}: #{error.title}".colorize.back(:red).on(:red)
- end
- puts "\r\nEdit Snippet? Y/n"
- repeat = gets
- break if repeat == "n"
- rescue ex : Crest::NotFound
- abort("404 API URL not found".colorize.back(:red).on(:red))
- rescue ex : Crest::InternalServerError
- abort("API Internal Server Error".colorize.back(:red).on(:red))
- rescue ex
- puts "#{ex.message}"
- abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red))
- end
- else
- puts "Invalid data:".colorize.mode(:bold)
- changeset.errors.each do |error|
- puts "#{error[:field]} #{error[:message]}".colorize.back(:red).on(:red)
- end
- puts "\r\nEdit Snippet? Y/n"
- repeat = gets
- break if repeat == "n"
- end
- end
+ snippet.name = snippet_attributes.name
+ snippet.real_command = snippet_attributes.real_command
+ snippet.documentation = snippet_attributes.documentation
+ snippet.tags = (snippet_attributes.tags.nil?) ? nil : snippet_attributes.tags.not_nil!.join(",")
+ snippet.snippet_alias = snippet_attributes.snippet_alias
+ snippet.is_pinned = snippet_attributes.is_pinned
+ snippet.is_synced = false
+ changeset = SnippetSchema.changeset(snippet)
+ if changeset.valid?
+ begin
+ if temp_file.sync_to_cloud?
+ SniplineCli::Services::SniplineApi.new.update(snippet)
+ temp_file.delete
+ puts "Snippet updated!"
+ break
+ else
+ changeset = SnippetSchema.changeset(snippet)
+ Repo.update(changeset)
+ temp_file.delete
+ puts "Snippet updated!"
+ break
+ end
+ rescue ex : Crest::UnprocessableEntity
+ puts "Invalid data:".colorize.mode(:bold)
+ snippet_errors = SnippetErrorResponse.from_json(ex.response.body)
+ snippet_errors.errors.each do |error|
+ puts "#{error.source["pointer"].gsub("/data/attributes/", "")}: #{error.title}".colorize.back(:red).on(:red)
+ end
+ puts "\r\nEdit Snippet? Y/n"
+ repeat = gets
+ break if repeat == "n"
+ rescue ex : Crest::NotFound
+ abort("404 API URL not found".colorize.back(:red).on(:red))
+ rescue ex : Crest::InternalServerError
+ abort("API Internal Server Error".colorize.back(:red).on(:red))
+ rescue ex
+ puts "#{ex.message}"
+ abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red))
+ end
+ else
+ puts "Invalid data:".colorize.mode(:bold)
+ changeset.errors.each do |error|
+ puts "#{error[:field]} #{error[:message]}".colorize.back(:red).on(:red)
+ end
+ puts "\r\nEdit Snippet? Y/n"
+ repeat = gets
+ break if repeat == "n"
+ end
+ end
end
end
end
end
-
diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr
index a68f3de..3022602 100644
--- a/src/snipline_cli/services/load_snippets.cr
+++ b/src/snipline_cli/services/load_snippets.cr
@@ -14,12 +14,12 @@ module SniplineCli
log.info("Looking through file #{config.get("general.db")}")
unless File.readable?(File.expand_path(config.get("general.db")))
log.warn("Could not read #{config.get("general.db")}")
- abort("Run #{"snipline-cli sync".colorize(:green)} first")
+ abort("Run #{"snipline-cli sync".colorize(:green)} first")
end
# File.open(File.expand_path(config.get("general.db"))) do |file|
# snippets = Array(Snippet).from_json(file)
# end
- Repo.all(SnippetSchema)
+ Repo.all(SnippetSchema)
end
end
end
diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr
index deb22d4..312990c 100644
--- a/src/snipline_cli/services/migrator.cr
+++ b/src/snipline_cli/services/migrator.cr
@@ -2,14 +2,14 @@ require "db"
require "sqlite3"
module SniplineCli::Services
- class Migrator
- def self.run
- File.write(File.expand_path("~/.config/snipline/snipline.db"), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db"))
- DB.open "sqlite3:#{File.expand_path("~/.config/snipline/snipline.db")}" do |db|
- db.exec "create table if not exists snippets (
- local_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
+ class Migrator
+ def self.run
+ File.write(File.expand_path("~/.config/snipline/snipline.db"), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db"))
+ DB.open "sqlite3:#{File.expand_path("~/.config/snipline/snipline.db")}" do |db|
+ db.exec "create table if not exists snippets (
+ local_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
cloud_id TEXT NULL,
- name TEXT NOT NULL,
+ name TEXT NOT NULL,
snippet_alias TEXT NULL UNIQUE,
documentation TEXT NULL,
real_command TEXT NOT NULL,
@@ -19,13 +19,13 @@ module SniplineCli::Services
inserted_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
)"
- db.exec "create table if not exists schema (version)"
- begin
- db.query_one "select version from schema", &.read(Int)
- rescue ex : DB::Error
- db.exec "insert into schema (version) values (?)", 1
- end
- end
- end
- end
+ db.exec "create table if not exists schema (version)"
+ begin
+ db.query_one "select version from schema", &.read(Int)
+ rescue ex : DB::Error
+ db.exec "insert into schema (version) values (?)", 1
+ end
+ end
+ end
+ end
end
diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr
index 205d3b5..7b6d722 100644
--- a/src/snipline_cli/services/search_snippets.cr
+++ b/src/snipline_cli/services/search_snippets.cr
@@ -16,11 +16,11 @@ module SniplineCli::Services
unless search_term.empty?
lowered_search_term = search_term.downcase
results = results.select do |i|
- if !i.tags.nil?
- i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || i.tags.as(String).split(",").includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false)
- else
- i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false)
- end
+ if !i.tags.nil?
+ i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || i.tags.as(String).split(",").includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false)
+ else
+ i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false)
+ end
end
end
diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr
index 4f26c1c..c0beb4e 100644
--- a/src/snipline_cli/services/snipline_api.cr
+++ b/src/snipline_cli/services/snipline_api.cr
@@ -42,11 +42,11 @@ module SniplineCli::Services
SingleSnippetDataWrapper.from_json(resp.body).data
end
- def update(snippet : SnippetSchema)
+ def update(snippet : SnippetSchema)
config = SniplineCli.config
# begin
resp = Crest.patch(
- "#{config.get("api.url")}/snippets/#{snippet.cloud_id}",
+ "#{config.get("api.url")}/snippets/#{snippet.cloud_id}",
headers: {
# "Accept" => "application/vnd.api+json",
"Authorization" => "Bearer #{config.get("api.token")}",
@@ -64,28 +64,27 @@ module SniplineCli::Services
logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false
)
response = SingleSnippetDataWrapper.from_json(resp.body).data
- snippet.name = response.name.not_nil!
- snippet.real_command = response.real_command.not_nil!
- snippet.documentation = response.documentation
- snippet.snippet_alias = response.snippet_alias
- snippet.is_synced = true
- snippet.is_pinned = response.is_pinned
- Repo.update(snippet)
- cloud_updated_at = Time.parse(
- response.updated_at.not_nil!,
- "%F %T",
- Time::Location::UTC
- )
- puts "cloud #{cloud_updated_at}"
- local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: response.id.not_nil!)
- if local_snippet
- puts "local #{local_snippet.updated_at}"
- end
-
- q = Repo.raw_exec("UPDATE snippets SET updated_at=? WHERE cloud_id=?", cloud_updated_at, response.id)
- puts q.inspect
- end
+ snippet.name = response.name.not_nil!
+ snippet.real_command = response.real_command.not_nil!
+ snippet.documentation = response.documentation
+ snippet.snippet_alias = response.snippet_alias
+ snippet.is_synced = true
+ snippet.is_pinned = response.is_pinned
+ Repo.update(snippet)
+ cloud_updated_at = Time.parse(
+ response.updated_at.not_nil!,
+ "%F %T",
+ Time::Location::UTC
+ )
+ puts "cloud #{cloud_updated_at}"
+ local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: response.id.not_nil!)
+ if local_snippet
+ puts "local #{local_snippet.updated_at}"
+ end
+ q = Repo.raw_exec("UPDATE snippets SET updated_at=? WHERE cloud_id=?", cloud_updated_at, response.id)
+ puts q.inspect
+ end
end
class SniplineApiTest
@@ -93,9 +92,10 @@ module SniplineCli::Services
yield "{\"data\":[{\"attributes\":{\"alias\":\"git.sla\",\"documentation\":null,\"is-pinned\":false,\"name\":\"Git log pretty\",\"real-command\":\"git log --oneline --decorate --graph --all\",\"tags\":[]},\"id\":\"0f4846c0-3194-40bb-be77-8c4b136565f4\",\"type\":\"snippets\"}]}"
end
- def create(snippet : SniplineCli::Models::Snippet)
- end
- def update(snippet : SniplineCli::Models::SnippetSchema)
- end
+ def create(snippet : SniplineCli::Models::Snippet)
+ end
+
+ def update(snippet : SniplineCli::Models::SnippetSchema)
+ end
end
end
diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr
index 1ad0e79..84ea9f1 100644
--- a/src/snipline_cli/services/sync_snippet_to_snipline.cr
+++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr
@@ -9,12 +9,12 @@ module SniplineCli::Services
def self.handle(snippet)
# snippet = Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes)
response = SniplineApi.new.create(snippet)
- if snippet.is_a?(SnippetSchema)
- snippet = Repo.get!(SnippetSchema, snippet.as(SnippetSchema).local_id)
- snippet.cloud_id = response.id
- after = Repo.update(snippet)
- end
- response
+ if snippet.is_a?(SnippetSchema)
+ snippet = Repo.get!(SnippetSchema, snippet.as(SnippetSchema).local_id)
+ snippet.cloud_id = response.id
+ Repo.update(snippet)
+ end
+ response
end
end
end
diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr
index f45c061..ee6e808 100644
--- a/src/snipline_cli/services/temp_snippet_editor_file.cr
+++ b/src/snipline_cli/services/temp_snippet_editor_file.cr
@@ -3,10 +3,9 @@ require "toml"
module SniplineCli::Services
# For saving Snippets locally.
class TempSnippetEditorFile
-
include SniplineCli::Models
- property snippet : SnippetSchema | Nil
+ property snippet : SnippetSchema | Nil
property template = %<# Welcome to the terminal-based snippet editor
# This file uses TOML syntax and will be processed after the file is saved and closed
@@ -22,11 +21,11 @@ is_pinned = false
snippet_alias = ""
sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"}
>
-
- def initialize(@snippet : SnippetSchema | Nil = nil)
- snippet = @snippet
- if (snippet = @snippet).is_a?(SnippetSchema)
- @template = %<# Welcome to the terminal-based snippet editor
+
+ def initialize(@snippet : SnippetSchema | Nil = nil)
+ snippet = @snippet
+ if (snippet = @snippet).is_a?(SnippetSchema)
+ @template = %<# Welcome to the terminal-based snippet editor
# This file uses TOML syntax and will be processed after the file is saved and closed
# Fill in the below options and save+quit to continue
name = "#{snippet.name}"
@@ -40,8 +39,8 @@ is_pinned = #{snippet.is_pinned}
snippet_alias = "#{snippet.snippet_alias}"
sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"}
>
- end
- end
+ end
+ end
def create
config = SniplineCli.config
@@ -56,21 +55,21 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"}
SnippetAttribute.new(
name: toml["name"].as(String),
real_command: toml["real_command"].as(String),
- documentation: toml["documentation"].as(String).rstrip,
+ documentation: toml["documentation"].as(String).rstrip,
is_pinned: toml["is_pinned"].as(Bool),
snippet_alias: parse_snippet_alias(toml["snippet_alias"]),
tags: [] of String
)
end
- def parse_snippet_alias(snippet_alias)
- str = snippet_alias.as(String)
- if str == ""
- nil
- else
- str
- end
- end
+ def parse_snippet_alias(snippet_alias)
+ str = snippet_alias.as(String)
+ if str == ""
+ nil
+ else
+ str
+ end
+ end
def sync_to_cloud?
config = SniplineCli.config
From 03351a211f61c76b910f4c6ff93d153f3c7b597e Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 4 Dec 2019 11:11:38 +0000
Subject: [PATCH 22/47] Remove redundant namespace calls
---
src/snipline_cli.cr | 6 ++--
src/snipline_cli/commands/init.cr | 2 +-
src/snipline_cli/commands/login.cr | 2 +-
src/snipline_cli/commands/new.cr | 15 +++-------
src/snipline_cli/commands/search.cr | 8 ++----
src/snipline_cli/commands/sync.cr | 28 +++++++++----------
src/snipline_cli/ncurses_windows/left_pane.cr | 10 +++----
.../ncurses_windows/multi_param.cr | 2 +-
src/snipline_cli/ncurses_windows/param.cr | 2 +-
.../ncurses_windows/right_pane.cr | 6 ++--
.../append_snippet_to_local_storage.cr | 5 ++--
src/snipline_cli/services/command_builder.cr | 1 -
src/snipline_cli/services/display_results.cr | 5 ++--
src/snipline_cli/services/edit_snippet.cr | 5 ++--
src/snipline_cli/services/load_snippets.cr | 1 -
src/snipline_cli/services/search_snippets.cr | 2 +-
src/snipline_cli/services/snipline_api.cr | 7 ++---
.../services/sync_snippet_to_snipline.cr | 1 -
.../services/temp_snippet_editor_file.cr | 1 -
19 files changed, 47 insertions(+), 62 deletions(-)
diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr
index 480ba76..c8f9395 100644
--- a/src/snipline_cli.cr
+++ b/src/snipline_cli.cr
@@ -13,6 +13,8 @@ require "./snipline_cli/ncurses_windows/*"
require "./snipline_cli/services/*"
require "./snipline_cli/commands/*"
+include SniplineCli::Services
+
module Repo
extend Crecto::Repo
@@ -26,7 +28,7 @@ module SniplineCli
VERSION = "0.3.0"
def self.config
- SniplineCli::Config.config
+ Config.config
end
def self.config_file
@@ -34,7 +36,7 @@ module SniplineCli
end
def self.log
- SniplineCli::Services::Log.log
+ Log.log
end
# The base Command Class that inherits from [Admiral](https://github.com/jwaldrip/admiral.cr)
diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr
index 0206f8d..922e2b8 100644
--- a/src/snipline_cli/commands/init.cr
+++ b/src/snipline_cli/commands/init.cr
@@ -23,7 +23,7 @@ module SniplineCli
temp_dir = "#{config.get("general.temp_dir")}"
TOML
- SniplineCli::Services::CreateConfigDirectory.run(SniplineCli.config_file)
+ CreateConfigDirectory.run(SniplineCli.config_file)
File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w")
puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}"
unless File.exists?(File.expand_path(config.get("general.db")))
diff --git a/src/snipline_cli/commands/login.cr b/src/snipline_cli/commands/login.cr
index 8ffbbd9..5bdd5d7 100644
--- a/src/snipline_cli/commands/login.cr
+++ b/src/snipline_cli/commands/login.cr
@@ -59,7 +59,7 @@ module SniplineCli
db = "#{config.get("general.db")}"
TOML
- SniplineCli::Services::CreateConfigDirectory.run(SniplineCli.config_file)
+ CreateConfigDirectory.run(SniplineCli.config_file)
File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w")
puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}"
puts "To fetch your snippets run #{"snipcli sync".colorize.mode(:bold)}"
diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr
index 1c9fe29..9f695e9 100644
--- a/src/snipline_cli/commands/new.cr
+++ b/src/snipline_cli/commands/new.cr
@@ -7,7 +7,6 @@ module SniplineCli
# This command generates a config file in the requested location.
# By default this location is ~/.config/snipline/config.toml
class New < Admiral::Command
- include SniplineCli::Models
define_help description: "Create a new Snippet"
def run
@@ -15,16 +14,16 @@ module SniplineCli
unless File.exists?(File.expand_path("#{config.get("general.db")}"))
abort("Database does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red))
end
- SniplineCli::Services::Migrator.run
+ Migrator.run
unless ENV.has_key?("EDITOR")
abort("Please set your environment EDITOR variable. E.g. export EDITOR=vi".colorize.back(:red).on(:red))
end
- temp_file = SniplineCli::Services::TempSnippetEditorFile.new
+ temp_file = TempSnippetEditorFile.new
temp_file.create
loop do
system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}")
snippet_attributes = temp_file.read
- snippet = SniplineCli::Models::SnippetSchema.new
+ snippet = SnippetSchema.new
snippet.name = snippet_attributes.name
snippet.real_command = snippet_attributes.real_command
@@ -38,14 +37,8 @@ module SniplineCli
result = Repo.insert(changeset)
begin
if temp_file.sync_to_cloud?
- SniplineCli::Services::SyncSnippetToSnipline.handle(result.instance)
- # else
- # snippet_attributes.set_timestamps()
- # Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes)
+ SyncSnippetToSnipline.handle(result.instance)
end
- # if snippet.is_a?(Snippet)
- # SniplineCli::Services::AppendSnippetToLocalStorage.handle(snippet)
- # end
puts "Snippet created!"
temp_file.delete
break
diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr
index 3432d30..4cc964a 100644
--- a/src/snipline_cli/commands/search.cr
+++ b/src/snipline_cli/commands/search.cr
@@ -35,11 +35,9 @@ module SniplineCli
def run
search_term : String = arguments.search_term || ""
- # snippets = SniplineCli::Services::LoadSnippets.run
-
snippets = if search_term.empty?
query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i)
- Repo.all(SniplineCli::Models::SnippetSchema, query)
+ Repo.all(SnippetSchema, query)
else
lowered_search_term = search_term.downcase
if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!)
@@ -53,7 +51,7 @@ module SniplineCli
query = query.where("snippets.name LIKE '%?%'", lowered_search_term).or_where("snippets.real_command LIKE '%?%'", lowered_search_term).or_where("snippets.snippet_alias LIKE '%?%'", lowered_search_term).or_where("snippets.tags LIKE '%?%'", lowered_search_term)
end
query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i)
- Repo.all(SniplineCli::Models::SnippetSchema, query)
+ Repo.all(SnippetSchema, query)
# snippets.select! { |i|
# if field = flags.field
# i.value_for_attribute(field).downcase.includes?(lowered_search_term)
@@ -74,7 +72,7 @@ module SniplineCli
# exit(0)
# end
- Services::DisplayResults.new(snippets)
+ DisplayResults.new(snippets)
end
def sort_results(snippets, limit)
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index 0ab4c2e..60c3837 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -13,12 +13,12 @@ module SniplineCli
class Sync < Admiral::Command
define_help description: "For syncing snippets from Snipline"
- property snipline_api : (SniplineCli::Services::SniplineApi | SniplineCli::Services::SniplineApiTest) = SniplineCli::Services::SniplineApi.new
- property file : (SniplineCli::Services::StoreSnippets) = SniplineCli::Services::StoreSnippets.new
+ property snipline_api : (SniplineApi | SniplineApiTest) = SniplineApi.new
+ property file : (StoreSnippets) = StoreSnippets.new
def run
puts "Migrating Database..."
- SniplineCli::Services::Migrator.run
+ Migrator.run
puts "Syncing snippets..."
config = SniplineCli.config
if config.get("api.token") == ""
@@ -27,7 +27,7 @@ module SniplineCli
sync_unsynced_snippets
@snipline_api.fetch do |body|
- cloud_snippets = Models::SnippetDataWrapper.from_json(body).data
+ cloud_snippets = SnippetDataWrapper.from_json(body).data
save_new_snipline_cloud_snippets(cloud_snippets)
delete_orphan_snippets(cloud_snippets)
update_locally_out_of_date_snippets(cloud_snippets)
@@ -39,7 +39,7 @@ module SniplineCli
synced_to_local_count = 0
synced_to_cloud_count = 0
cloud_snippets.each { |cs|
- local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: cs.id.not_nil!)
+ local_snippet = Repo.get_by(SnippetSchema, cloud_id: cs.id.not_nil!)
if local_snippet
if local_snippet.is_synced
# local hasn't changed - redownload from snipline just incase
@@ -65,8 +65,8 @@ module SniplineCli
def delete_orphan_snippets(cloud_snippets)
# if snippet cloud_id exists locally but not in cloud
puts "Cleaning up snippets that are no longer in Snipline Cloud..."
- local_snippets = SniplineCli::Services::LoadSnippets.run.select { |ls| !ls.cloud_id.nil? }
- orphans = [] of SniplineCli::Models::SnippetSchema
+ local_snippets = LoadSnippets.run.select { |ls| !ls.cloud_id.nil? }
+ orphans = [] of SnippetSchema
cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id }
local_snippets.each do |ls|
orphans << ls unless cloud_snippet_exists?(ls, cloud_snippet_ids)
@@ -84,17 +84,17 @@ module SniplineCli
def save_new_snipline_cloud_snippets(cloud_snippets)
# Save the response JSON into a file without the data wrapper
- local_snippets = SniplineCli::Services::LoadSnippets.run
+ local_snippets = LoadSnippets.run
begin
# Only snippets that are in the cloud but not stored locally
- difference = [] of SniplineCli::Models::Snippet
+ difference = [] of Snippet
local_snippet_cloud_ids = local_snippets.select { |s| !s.cloud_id.nil? }.map { |s| s.cloud_id.not_nil! }
cloud_snippets.each do |cs|
difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids)
end
difference.each do |s|
puts "Storing #{s.attributes.name} from Snipline".colorize(:green)
- snippet = SniplineCli::Models::SnippetSchema.new
+ snippet = SnippetSchema.new
snippet.name = s.name
snippet.cloud_id = s.id
snippet.real_command = s.real_command
@@ -103,7 +103,7 @@ module SniplineCli
snippet.snippet_alias = s.snippet_alias
snippet.is_pinned = s.is_pinned
snippet.is_synced = true
- changeset = SniplineCli::Models::SnippetSchema.changeset(snippet)
+ changeset = SnippetSchema.changeset(snippet)
Repo.insert(changeset)
# local_snippets << s
end
@@ -122,15 +122,15 @@ module SniplineCli
end
def sync_unsynced_snippets
- local_snippets = SniplineCli::Services::LoadSnippets.run
+ local_snippets = LoadSnippets.run
local_snippets.select { |s| s.cloud_id.nil? }.each do |snippet|
puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..."
begin
- cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet)
+ cloud_snippet = SyncSnippetToSnipline.handle(snippet)
update_local_snippet_id(cloud_snippet, snippet)
puts "Success!".colorize(:green)
rescue ex : Crest::UnprocessableEntity
- resp = SniplineCli::Models::SnippetErrorResponse.from_json(ex.response.not_nil!.body)
+ resp = SnippetErrorResponse.from_json(ex.response.not_nil!.body)
puts "Failed: #{resp.errors.first.source["pointer"].gsub("/data/attributes/", "")} #{resp.errors.first.detail}".colorize(:red)
rescue ex
abort ex.message
diff --git a/src/snipline_cli/ncurses_windows/left_pane.cr b/src/snipline_cli/ncurses_windows/left_pane.cr
index 4aac91c..2a65c56 100644
--- a/src/snipline_cli/ncurses_windows/left_pane.cr
+++ b/src/snipline_cli/ncurses_windows/left_pane.cr
@@ -5,13 +5,13 @@ module SniplineCli::NCursesWindows
property left
property right
property selected_index = 0
- property searcher : SniplineCli::Services::SearchSnippets
- property results : Array(SniplineCli::Models::SnippetSchema)
- property snippets : Array(SniplineCli::Models::SnippetSchema)
+ property searcher : SearchSnippets
+ property results : Array(SnippetSchema)
+ property snippets : Array(SnippetSchema)
- def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of SniplineCli::Models::SnippetSchema)
+ def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of SnippetSchema)
@results = @snippets
- @searcher = SniplineCli::Services::SearchSnippets.new(@snippets)
+ @searcher = SearchSnippets.new(@snippets)
@border = NCurses::Window.new(
NCurses.height - (header_footer_height * 2),
diff --git a/src/snipline_cli/ncurses_windows/multi_param.cr b/src/snipline_cli/ncurses_windows/multi_param.cr
index e7f0e0f..5cba19f 100644
--- a/src/snipline_cli/ncurses_windows/multi_param.cr
+++ b/src/snipline_cli/ncurses_windows/multi_param.cr
@@ -7,7 +7,7 @@ module SniplineCli::NCursesWindows
property entered_text : String = ""
property selected_index : UInt32 = 0
- def initialize(@command_builder : String, @param : SniplineCli::Models::SnippetParam)
+ def initialize(@command_builder : String, @param : SnippetParam)
@border = NCurses::Window.new(
NCurses.height,
NCurses.width,
diff --git a/src/snipline_cli/ncurses_windows/param.cr b/src/snipline_cli/ncurses_windows/param.cr
index 6c48169..243e259 100644
--- a/src/snipline_cli/ncurses_windows/param.cr
+++ b/src/snipline_cli/ncurses_windows/param.cr
@@ -6,7 +6,7 @@ module SniplineCli::NCursesWindows
property param
property entered_text : String = ""
- def initialize(@command_builder : String, @param : SniplineCli::Models::SnippetParam)
+ def initialize(@command_builder : String, @param : SnippetParam)
@border = NCurses::Window.new(
NCurses.height,
NCurses.width,
diff --git a/src/snipline_cli/ncurses_windows/right_pane.cr b/src/snipline_cli/ncurses_windows/right_pane.cr
index 06188fc..f1e126a 100644
--- a/src/snipline_cli/ncurses_windows/right_pane.cr
+++ b/src/snipline_cli/ncurses_windows/right_pane.cr
@@ -4,7 +4,7 @@ module SniplineCli::NCursesWindows
property border
property left
property right
- property documentation_formatter : SniplineCli::Services::DocumentationFormatter
+ property documentation_formatter : DocumentationFormatter
def initialize(header_footer_height, @left : Int32, @right : Int32)
@border = NCurses::Window.new(
@@ -19,7 +19,7 @@ module SniplineCli::NCursesWindows
3,
@left + 2
)
- @documentation_formatter = SniplineCli::Services::DocumentationFormatter.new(@window)
+ @documentation_formatter = DocumentationFormatter.new(@window)
@window.set_color 2
@border.set_color 2
LibNCurses.box(@border, 0, 0)
@@ -28,7 +28,7 @@ module SniplineCli::NCursesWindows
@window
end
- def display(snippet : SniplineCli::Models::SnippetSchema | Nil)
+ def display(snippet : SnippetSchema | Nil)
@window.clear
if snippet
LibNCurses.wattr_off(@window, NCurses::Attribute::Bold, nil)
diff --git a/src/snipline_cli/services/append_snippet_to_local_storage.cr b/src/snipline_cli/services/append_snippet_to_local_storage.cr
index 868b449..f70f9a8 100644
--- a/src/snipline_cli/services/append_snippet_to_local_storage.cr
+++ b/src/snipline_cli/services/append_snippet_to_local_storage.cr
@@ -1,15 +1,14 @@
module SniplineCli::Services
# For saving Snippets locally.
class AppendSnippetToLocalStorage
- include SniplineCli::Models
# Takes an array of snippets and saves them to the `snippet.json` file.
def self.handle(snippet)
- snippets = SniplineCli::Services::LoadSnippets.run
+ snippets = LoadSnippets.run
if snippet.is_a?(Snippet)
snippets << snippet.as(Snippet)
end
- SniplineCli::Services::StoreSnippets.new.store(snippets.to_json)
+ StoreSnippets.new.store(snippets.to_json)
return
end
end
diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr
index f3cc851..b82e6d9 100644
--- a/src/snipline_cli/services/command_builder.cr
+++ b/src/snipline_cli/services/command_builder.cr
@@ -14,7 +14,6 @@ module SniplineCli
# end
# ```
class CommandBuilder
- include SniplineCli::Models
def self.run(snippet : SnippetSchema, input, output, user_input = [] of String) : String
unless snippet.has_params
diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr
index e652c97..936836e 100644
--- a/src/snipline_cli/services/display_results.cr
+++ b/src/snipline_cli/services/display_results.cr
@@ -1,7 +1,6 @@
module SniplineCli::Services
# For saving Snippets locally.
class DisplayResults
- include SniplineCli::Models
property header
property search
property left_pane
@@ -102,13 +101,13 @@ module SniplineCli::Services
def build_snippet
NCurses.clear
NCurses.end
- SniplineCli::Services::CommandBuilder.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT)
+ CommandBuilder.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT)
end
def edit_snippet
NCurses.clear
NCurses.end
- SniplineCli::Services::EditSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT)
+ EditSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT)
end
end
end
diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr
index c2ac6e3..df91f5b 100644
--- a/src/snipline_cli/services/edit_snippet.cr
+++ b/src/snipline_cli/services/edit_snippet.cr
@@ -6,13 +6,12 @@ module SniplineCli
# snippets = SniplineCli::Services::LoadSnippets.run
# ```
class EditSnippet
- include SniplineCli::Models
def self.run(snippet : SnippetSchema, input, output)
config = SniplineCli.config
log = SniplineCli.log
log.info("editing snippet #{snippet.name}")
- temp_file = SniplineCli::Services::TempSnippetEditorFile.new(snippet)
+ temp_file = TempSnippetEditorFile.new(snippet)
temp_file.create
loop do
system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}")
@@ -28,7 +27,7 @@ module SniplineCli
if changeset.valid?
begin
if temp_file.sync_to_cloud?
- SniplineCli::Services::SniplineApi.new.update(snippet)
+ SniplineApi.new.update(snippet)
temp_file.delete
puts "Snippet updated!"
break
diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr
index 3022602..bf5efc0 100644
--- a/src/snipline_cli/services/load_snippets.cr
+++ b/src/snipline_cli/services/load_snippets.cr
@@ -6,7 +6,6 @@ module SniplineCli
# snippets = SniplineCli::Services::LoadSnippets.run
# ```
class LoadSnippets
- include SniplineCli::Models
def self.run : Array(SnippetSchema)
config = SniplineCli.config
diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr
index 7b6d722..2a4a8fd 100644
--- a/src/snipline_cli/services/search_snippets.cr
+++ b/src/snipline_cli/services/search_snippets.cr
@@ -6,7 +6,7 @@ module SniplineCli::Services
property snippets
# Takes an array of snippets and saves them to the `snippet.json` file.
- def initialize(@snippets = [] of SniplineCli::Models::SnippetSchema)
+ def initialize(@snippets = [] of SnippetSchema)
end
def search(search_term)
diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr
index c0beb4e..735f932 100644
--- a/src/snipline_cli/services/snipline_api.cr
+++ b/src/snipline_cli/services/snipline_api.cr
@@ -3,7 +3,6 @@ require "json"
module SniplineCli::Services
# For talking to the Snipline API.
class SniplineApi
- include SniplineCli::Models
# Fetches the user's Snippets.
def fetch(&block)
@@ -77,7 +76,7 @@ module SniplineCli::Services
Time::Location::UTC
)
puts "cloud #{cloud_updated_at}"
- local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: response.id.not_nil!)
+ local_snippet = Repo.get_by(SnippetSchema, cloud_id: response.id.not_nil!)
if local_snippet
puts "local #{local_snippet.updated_at}"
end
@@ -92,10 +91,10 @@ module SniplineCli::Services
yield "{\"data\":[{\"attributes\":{\"alias\":\"git.sla\",\"documentation\":null,\"is-pinned\":false,\"name\":\"Git log pretty\",\"real-command\":\"git log --oneline --decorate --graph --all\",\"tags\":[]},\"id\":\"0f4846c0-3194-40bb-be77-8c4b136565f4\",\"type\":\"snippets\"}]}"
end
- def create(snippet : SniplineCli::Models::Snippet)
+ def create(snippet : Snippet)
end
- def update(snippet : SniplineCli::Models::SnippetSchema)
+ def update(snippet : SnippetSchema)
end
end
end
diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr
index 84ea9f1..88a2f41 100644
--- a/src/snipline_cli/services/sync_snippet_to_snipline.cr
+++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr
@@ -3,7 +3,6 @@ require "json"
module SniplineCli::Services
# For saving Snippets locally.
class SyncSnippetToSnipline
- include SniplineCli::Models
# Takes an array of snippets and saves them to the `snippet.json` file.
def self.handle(snippet)
diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr
index ee6e808..a57f5bd 100644
--- a/src/snipline_cli/services/temp_snippet_editor_file.cr
+++ b/src/snipline_cli/services/temp_snippet_editor_file.cr
@@ -3,7 +3,6 @@ require "toml"
module SniplineCli::Services
# For saving Snippets locally.
class TempSnippetEditorFile
- include SniplineCli::Models
property snippet : SnippetSchema | Nil
From 5703b890b1eddef1278078862a887742ac10c763 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 4 Dec 2019 11:34:25 +0000
Subject: [PATCH 23/47] Move old snippet models to become parsers
---
.../snippet_attribute_parser_spec.cr} | 5 +-
spec/services/command_builder_spec.cr | 4 +-
src/snipline_cli.cr | 1 +
src/snipline_cli/commands/new.cr | 4 +-
src/snipline_cli/commands/search.cr | 4 +-
src/snipline_cli/commands/sync.cr | 12 +-
src/snipline_cli/models/snippet.cr | 79 ++++-------
src/snipline_cli/models/snippet_schema.cr | 124 ------------------
src/snipline_cli/ncurses_windows/left_pane.cr | 8 +-
.../ncurses_windows/right_pane.cr | 2 +-
.../snippet_attribute_parser.cr} | 5 +-
.../snippet_data_parser.cr} | 11 +-
src/snipline_cli/parsers/snippet_parser.cr | 74 +++++++++++
src/snipline_cli/services/command_builder.cr | 2 +-
src/snipline_cli/services/edit_snippet.cr | 6 +-
src/snipline_cli/services/load_snippets.cr | 4 +-
src/snipline_cli/services/search_snippets.cr | 2 +-
src/snipline_cli/services/snipline_api.cr | 14 +-
.../services/sync_snippet_to_snipline.cr | 4 +-
.../services/temp_snippet_editor_file.cr | 8 +-
20 files changed, 152 insertions(+), 221 deletions(-)
rename spec/{models/snippet_attribute_spec.cr => parsers/snippet_attribute_parser_spec.cr} (79%)
delete mode 100644 src/snipline_cli/models/snippet_schema.cr
rename src/snipline_cli/{models/snippet_attribute.cr => parsers/snippet_attribute_parser.cr} (95%)
rename src/snipline_cli/{models/snippet_data_wrapper.cr => parsers/snippet_data_parser.cr} (74%)
create mode 100644 src/snipline_cli/parsers/snippet_parser.cr
diff --git a/spec/models/snippet_attribute_spec.cr b/spec/parsers/snippet_attribute_parser_spec.cr
similarity index 79%
rename from spec/models/snippet_attribute_spec.cr
rename to spec/parsers/snippet_attribute_parser_spec.cr
index 565b3b2..859ed79 100644
--- a/spec/models/snippet_attribute_spec.cr
+++ b/spec/parsers/snippet_attribute_parser_spec.cr
@@ -1,6 +1,6 @@
-describe SniplineCli::Models::SnippetAttribute do
+describe SniplineCli::Parsers::SnippetAttributeParser do
it "correctly parses snippets attributes" do
- attributes = SniplineCli::Models::SnippetAttribute.from_json(
+ attributes = SniplineCli::Parsers::SnippetAttributeParser.from_json(
%(
{
"is-pinned": true,
@@ -18,3 +18,4 @@ describe SniplineCli::Models::SnippetAttribute do
attributes.documentation.should eq nil
end
end
+
diff --git a/spec/services/command_builder_spec.cr b/spec/services/command_builder_spec.cr
index 18b623b..c1468f3 100644
--- a/spec/services/command_builder_spec.cr
+++ b/spec/services/command_builder_spec.cr
@@ -1,7 +1,7 @@
describe SniplineCli::Services::CommandBuilder do
it "correctly parses snippets with no params" do
# attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}})
- snippet = SniplineCli::Models::SnippetSchema.new
+ snippet = SniplineCli::Models::Snippet.new
snippet.name = "Git log pretty"
snippet.snippet_alias = "git.sla"
snippet.real_command = "git log --oneline --decorate --graph --all"
@@ -15,7 +15,7 @@ describe SniplineCli::Services::CommandBuilder do
it "should generate random passwords" do
# attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"random password generator","real-command":"rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}","tags":["git"]}})
# snippet = SniplineCli::Models::Snippet.from_json(attributes)
- snippet = SniplineCli::Models::SnippetSchema.new
+ snippet = SniplineCli::Models::Snippet.new
snippet.name = "Git log pretty"
snippet.snippet_alias = "git.sla"
snippet.real_command = "rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}"
diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr
index c8f9395..1608bdb 100644
--- a/src/snipline_cli.cr
+++ b/src/snipline_cli.cr
@@ -8,6 +8,7 @@ require "crecto"
require "./snipline_cli/config"
require "./snipline_cli/exceptions/*"
+require "./snipline_cli/parsers/*"
require "./snipline_cli/models/*"
require "./snipline_cli/ncurses_windows/*"
require "./snipline_cli/services/*"
diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr
index 9f695e9..91793e3 100644
--- a/src/snipline_cli/commands/new.cr
+++ b/src/snipline_cli/commands/new.cr
@@ -23,7 +23,7 @@ module SniplineCli
loop do
system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}")
snippet_attributes = temp_file.read
- snippet = SnippetSchema.new
+ snippet = Snippet.new
snippet.name = snippet_attributes.name
snippet.real_command = snippet_attributes.real_command
@@ -32,7 +32,7 @@ module SniplineCli
snippet.snippet_alias = snippet_attributes.snippet_alias
snippet.is_pinned = snippet_attributes.is_pinned
snippet.is_synced = false
- changeset = SnippetSchema.changeset(snippet)
+ changeset = Snippet.changeset(snippet)
abort("Invalid") unless changeset.valid?
result = Repo.insert(changeset)
begin
diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr
index 4cc964a..6e11294 100644
--- a/src/snipline_cli/commands/search.cr
+++ b/src/snipline_cli/commands/search.cr
@@ -37,7 +37,7 @@ module SniplineCli
snippets = if search_term.empty?
query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i)
- Repo.all(SnippetSchema, query)
+ Repo.all(Snippet, query)
else
lowered_search_term = search_term.downcase
if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!)
@@ -51,7 +51,7 @@ module SniplineCli
query = query.where("snippets.name LIKE '%?%'", lowered_search_term).or_where("snippets.real_command LIKE '%?%'", lowered_search_term).or_where("snippets.snippet_alias LIKE '%?%'", lowered_search_term).or_where("snippets.tags LIKE '%?%'", lowered_search_term)
end
query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i)
- Repo.all(SnippetSchema, query)
+ Repo.all(Snippet, query)
# snippets.select! { |i|
# if field = flags.field
# i.value_for_attribute(field).downcase.includes?(lowered_search_term)
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index 60c3837..e10bcad 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -27,7 +27,7 @@ module SniplineCli
sync_unsynced_snippets
@snipline_api.fetch do |body|
- cloud_snippets = SnippetDataWrapper.from_json(body).data
+ cloud_snippets = SnippetDataParser.from_json(body).data
save_new_snipline_cloud_snippets(cloud_snippets)
delete_orphan_snippets(cloud_snippets)
update_locally_out_of_date_snippets(cloud_snippets)
@@ -39,7 +39,7 @@ module SniplineCli
synced_to_local_count = 0
synced_to_cloud_count = 0
cloud_snippets.each { |cs|
- local_snippet = Repo.get_by(SnippetSchema, cloud_id: cs.id.not_nil!)
+ local_snippet = Repo.get_by(Snippet, cloud_id: cs.id.not_nil!)
if local_snippet
if local_snippet.is_synced
# local hasn't changed - redownload from snipline just incase
@@ -66,7 +66,7 @@ module SniplineCli
# if snippet cloud_id exists locally but not in cloud
puts "Cleaning up snippets that are no longer in Snipline Cloud..."
local_snippets = LoadSnippets.run.select { |ls| !ls.cloud_id.nil? }
- orphans = [] of SnippetSchema
+ orphans = [] of Snippet
cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id }
local_snippets.each do |ls|
orphans << ls unless cloud_snippet_exists?(ls, cloud_snippet_ids)
@@ -87,14 +87,14 @@ module SniplineCli
local_snippets = LoadSnippets.run
begin
# Only snippets that are in the cloud but not stored locally
- difference = [] of Snippet
+ difference = [] of SnippetParser
local_snippet_cloud_ids = local_snippets.select { |s| !s.cloud_id.nil? }.map { |s| s.cloud_id.not_nil! }
cloud_snippets.each do |cs|
difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids)
end
difference.each do |s|
puts "Storing #{s.attributes.name} from Snipline".colorize(:green)
- snippet = SnippetSchema.new
+ snippet = Snippet.new
snippet.name = s.name
snippet.cloud_id = s.id
snippet.real_command = s.real_command
@@ -103,7 +103,7 @@ module SniplineCli
snippet.snippet_alias = s.snippet_alias
snippet.is_pinned = s.is_pinned
snippet.is_synced = true
- changeset = SnippetSchema.changeset(snippet)
+ changeset = Snippet.changeset(snippet)
Repo.insert(changeset)
# local_snippets << s
end
diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr
index 9b130db..4be50bf 100644
--- a/src/snipline_cli/models/snippet.cr
+++ b/src/snipline_cli/models/snippet.cr
@@ -1,51 +1,24 @@
-require "json"
-
module SniplineCli::Models
- class Snippet
- JSON.mapping({
- id: String | Nil,
- type: String,
- attributes: SnippetAttribute,
- })
-
- def initialize(@id : String | Nil, @type : String, @attributes : SnippetAttribute)
- end
-
- def snippet_alias
- attributes.snippet_alias
- end
-
- def name
- attributes.name
- end
-
- def documentation
- attributes.documentation
- end
-
- def is_pinned
- attributes.is_pinned
+ class Snippet < Crecto::Model
+ set_created_at_field :inserted_at
+
+ schema "snippets" do
+ field :local_id, Int32, primary_key: true
+ field :cloud_id, String
+ field :name, String
+ field :real_command, String
+ field :documentation, String
+ field :tags, String
+ field :snippet_alias, String
+ field :is_pinned, Bool
+ field :is_synced, Bool
end
- def real_command
- attributes.real_command
- end
-
- def tags
- attributes.tags
- end
-
- def is_synced
- attributes.is_synced
- end
-
- def inserted_at
- attributes.inserted_at
- end
-
- def updated_at
- attributes.updated_at
- end
+ validate_required [:name, :real_command]
+ validate_length :name, min: 1
+ validate_length :real_command, min: 1
+ unique_constraint :snippet_alias
+ unique_constraint :name
#
# Params such as variables or select that require input from the user
@@ -53,7 +26,7 @@ module SniplineCli::Models
def interactive_params : Array(SnippetParam)
temp_array = [] of SnippetParam
- real_command.scan(/#(select)?\{\[(.+?)\]\}/) do |m|
+ real_command.as(String).scan(/#(select)?\{\[(.+?)\]\}/) do |m|
param_type = (m[1]?) ? m[1] : "variable"
if temp_array.count { |param| param.name == m[2] && param_type == param.type } == 0
if param_type == "select"
@@ -89,7 +62,7 @@ module SniplineCli::Models
#
def uninteractive_params : Array(SnippetPasswordParam)
temp_array = [] of SnippetPasswordParam
- real_command.scan(/#password\{\[(.+?)\]\}/) do |m|
+ real_command.as(String).scan(/#password\{\[(.+?)\]\}/) do |m|
full = m[1].as(String)
options = full.split(",")
id = options.shift
@@ -114,17 +87,17 @@ module SniplineCli::Models
temp_command = real_command
interactive_params.each do |param|
if param.type == "select"
- temp_command = temp_command.gsub("#select{[#{param.full}]}") { "<#{param.name}>" }
- temp_command = temp_command.gsub("#select{[#{param.name}]}") { "<#{param.name}>" }
+ temp_command = temp_command.as(String).gsub("#select{[#{param.full}]}") { "<#{param.name}>" }
+ temp_command = temp_command.as(String).gsub("#select{[#{param.name}]}") { "<#{param.name}>" }
else
- temp_command = temp_command.gsub("\#{[#{param.full}]}") { "<#{param.name}>" }
- temp_command = temp_command.gsub("\#{[#{param.name}]}") { "<#{param.name}>" }
+ temp_command = temp_command.as(String).gsub("\#{[#{param.full}]}") { "<#{param.name}>" }
+ temp_command = temp_command.as(String).gsub("\#{[#{param.name}]}") { "<#{param.name}>" }
end
end
uninteractive_params.each do |param|
- temp_command = temp_command.gsub("#password{[#{param.full}]}") { "" }
- temp_command = temp_command.gsub("#password{[#{param.id}]}") { "" }
+ temp_command = temp_command.as(String).gsub("#password{[#{param.full}]}") { "" }
+ temp_command = temp_command.as(String).gsub("#password{[#{param.id}]}") { "" }
end
temp_command
end
diff --git a/src/snipline_cli/models/snippet_schema.cr b/src/snipline_cli/models/snippet_schema.cr
deleted file mode 100644
index b7137e0..0000000
--- a/src/snipline_cli/models/snippet_schema.cr
+++ /dev/null
@@ -1,124 +0,0 @@
-module SniplineCli::Models
- class SnippetSchema < Crecto::Model
- set_created_at_field :inserted_at
-
- schema "snippets" do
- field :local_id, Int32, primary_key: true
- field :cloud_id, String
- field :name, String
- field :real_command, String
- field :documentation, String
- field :tags, String
- field :snippet_alias, String
- field :is_pinned, Bool
- field :is_synced, Bool
- end
-
- validate_required [:name, :real_command]
- validate_length :name, min: 1
- validate_length :real_command, min: 1
- unique_constraint :snippet_alias
- unique_constraint :name
-
- #
- # Params such as variables or select that require input from the user
- #
- def interactive_params : Array(SnippetParam)
- temp_array = [] of SnippetParam
-
- real_command.as(String).scan(/#(select)?\{\[(.+?)\]\}/) do |m|
- param_type = (m[1]?) ? m[1] : "variable"
- if temp_array.count { |param| param.name == m[2] && param_type == param.type } == 0
- if param_type == "select"
- split_equals = m[2].split("=").map { |substring| substring }
- param_name = split_equals.shift
- unparsed_params = split_equals.join("=")
- if unparsed_params.is_a?(String)
- options = unparsed_params.as(String).split(",").map(&.strip)
- # todo
- if options.is_a?(Array(String))
- options = options.as(Array(String))
- end
- else
- options = Array(String).new
- end
- # default_option = options.first || ""
- temp_array << SnippetParam.new(param_name, "", m[2], "select", options)
- elsif m[2].includes?("=")
- split_equals = m[2].split("=").map { |substring| substring }
- param_name = split_equals.shift
- default_value = split_equals.join("=")
- temp_array << SnippetParam.new(param_name, default_value, m[2], "variable", Array(String).new)
- else
- temp_array << SnippetParam.new(m[2], "", m[2], "variable", Array(String).new)
- end
- end
- end
- temp_array
- end
-
- #
- # E.g. Passwords
- #
- def uninteractive_params : Array(SnippetPasswordParam)
- temp_array = [] of SnippetPasswordParam
- real_command.as(String).scan(/#password\{\[(.+?)\]\}/) do |m|
- full = m[1].as(String)
- options = full.split(",")
- id = options.shift
- length = UInt8.new(16)
- if options.size > 0
- length = options.shift.to_u32 || UInt8.new(16)
- end
- temp_array << SnippetPasswordParam.new(id, length, full)
- end
- temp_array
- end
-
- def has_params
- interactive_params.size > 0 || uninteractive_params.size > 0
- end
-
- def preview_command
- unless has_params()
- return real_command
- end
-
- temp_command = real_command
- interactive_params.each do |param|
- if param.type == "select"
- temp_command = temp_command.as(String).gsub("#select{[#{param.full}]}") { "<#{param.name}>" }
- temp_command = temp_command.as(String).gsub("#select{[#{param.name}]}") { "<#{param.name}>" }
- else
- temp_command = temp_command.as(String).gsub("\#{[#{param.full}]}") { "<#{param.name}>" }
- temp_command = temp_command.as(String).gsub("\#{[#{param.name}]}") { "<#{param.name}>" }
- end
- end
-
- uninteractive_params.each do |param|
- temp_command = temp_command.as(String).gsub("#password{[#{param.full}]}") { "" }
- temp_command = temp_command.as(String).gsub("#password{[#{param.id}]}") { "" }
- end
- temp_command
- end
-
- def value_for_attribute(attribute : String)
- case attribute
- when "alias"
- snippet_alias || ""
- when "documentation"
- documentation || ""
- when "name"
- name || ""
- when "tags"
- if !tags.nil?
- tags.as(Array(String)).join(",") || ""
- else
- ""
- end
- else
- ""
- end
- end
- end
-end
diff --git a/src/snipline_cli/ncurses_windows/left_pane.cr b/src/snipline_cli/ncurses_windows/left_pane.cr
index 2a65c56..49a6318 100644
--- a/src/snipline_cli/ncurses_windows/left_pane.cr
+++ b/src/snipline_cli/ncurses_windows/left_pane.cr
@@ -1,3 +1,5 @@
+include SniplineCli::Models
+
module SniplineCli::NCursesWindows
class LeftPane
property window
@@ -6,10 +8,10 @@ module SniplineCli::NCursesWindows
property right
property selected_index = 0
property searcher : SearchSnippets
- property results : Array(SnippetSchema)
- property snippets : Array(SnippetSchema)
+ property results : Array(Snippet)
+ property snippets : Array(Snippet)
- def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of SnippetSchema)
+ def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of Snippet)
@results = @snippets
@searcher = SearchSnippets.new(@snippets)
diff --git a/src/snipline_cli/ncurses_windows/right_pane.cr b/src/snipline_cli/ncurses_windows/right_pane.cr
index f1e126a..55b1107 100644
--- a/src/snipline_cli/ncurses_windows/right_pane.cr
+++ b/src/snipline_cli/ncurses_windows/right_pane.cr
@@ -28,7 +28,7 @@ module SniplineCli::NCursesWindows
@window
end
- def display(snippet : SnippetSchema | Nil)
+ def display(snippet : Snippet | Nil)
@window.clear
if snippet
LibNCurses.wattr_off(@window, NCurses::Attribute::Bold, nil)
diff --git a/src/snipline_cli/models/snippet_attribute.cr b/src/snipline_cli/parsers/snippet_attribute_parser.cr
similarity index 95%
rename from src/snipline_cli/models/snippet_attribute.cr
rename to src/snipline_cli/parsers/snippet_attribute_parser.cr
index 1794a33..30f6d29 100644
--- a/src/snipline_cli/models/snippet_attribute.cr
+++ b/src/snipline_cli/parsers/snippet_attribute_parser.cr
@@ -1,7 +1,7 @@
require "json"
-module SniplineCli::Models
- class SnippetAttribute
+module SniplineCli::Parsers
+ class SnippetAttributeParser
include JSON::Serializable
@[JSON::Field(key: "alias")]
@@ -40,3 +40,4 @@ module SniplineCli::Models
end
end
end
+
diff --git a/src/snipline_cli/models/snippet_data_wrapper.cr b/src/snipline_cli/parsers/snippet_data_parser.cr
similarity index 74%
rename from src/snipline_cli/models/snippet_data_wrapper.cr
rename to src/snipline_cli/parsers/snippet_data_parser.cr
index b648c5f..4ee244e 100644
--- a/src/snipline_cli/models/snippet_data_wrapper.cr
+++ b/src/snipline_cli/parsers/snippet_data_parser.cr
@@ -1,13 +1,13 @@
-module SniplineCli::Models
- class SnippetDataWrapper
+module SniplineCli::Parsers
+ class SnippetDataParser
JSON.mapping({
- data: Array(Snippet),
+ data: Array(SnippetParser),
})
end
- class SingleSnippetDataWrapper
+ class SingleSnippetDataParser
JSON.mapping({
- data: Snippet,
+ data: SnippetParser,
})
end
@@ -31,3 +31,4 @@ module SniplineCli::Models
end
end
end
+
diff --git a/src/snipline_cli/parsers/snippet_parser.cr b/src/snipline_cli/parsers/snippet_parser.cr
new file mode 100644
index 0000000..04340c3
--- /dev/null
+++ b/src/snipline_cli/parsers/snippet_parser.cr
@@ -0,0 +1,74 @@
+require "json"
+
+module SniplineCli::Parsers
+ class SnippetParser
+ JSON.mapping({
+ id: String | Nil,
+ type: String,
+ attributes: SnippetAttributeParser,
+ })
+
+ def initialize(@id : String | Nil, @type : String, @attributes : SnippetAttributeParser)
+ end
+
+ def snippet_alias
+ attributes.snippet_alias
+ end
+
+ def name
+ attributes.name
+ end
+
+ def documentation
+ attributes.documentation
+ end
+
+ def is_pinned
+ attributes.is_pinned
+ end
+
+ def real_command
+ attributes.real_command
+ end
+
+ def tags
+ attributes.tags
+ end
+
+ def is_synced
+ attributes.is_synced
+ end
+
+ def inserted_at
+ attributes.inserted_at
+ end
+
+ def updated_at
+ attributes.updated_at
+ end
+
+ def has_params
+ interactive_params.size > 0 || uninteractive_params.size > 0
+ end
+
+ def value_for_attribute(attribute : String)
+ case attribute
+ when "alias"
+ snippet_alias || ""
+ when "documentation"
+ documentation || ""
+ when "name"
+ name || ""
+ when "tags"
+ if !tags.nil?
+ tags.as(Array(String)).join(",") || ""
+ else
+ ""
+ end
+ else
+ ""
+ end
+ end
+ end
+end
+
diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr
index b82e6d9..5de31e7 100644
--- a/src/snipline_cli/services/command_builder.cr
+++ b/src/snipline_cli/services/command_builder.cr
@@ -15,7 +15,7 @@ module SniplineCli
# ```
class CommandBuilder
- def self.run(snippet : SnippetSchema, input, output, user_input = [] of String) : String
+ def self.run(snippet : Snippet, input, output, user_input = [] of String) : String
unless snippet.has_params
return snippet.real_command || ""
end
diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr
index df91f5b..0f2dd7c 100644
--- a/src/snipline_cli/services/edit_snippet.cr
+++ b/src/snipline_cli/services/edit_snippet.cr
@@ -7,7 +7,7 @@ module SniplineCli
# ```
class EditSnippet
- def self.run(snippet : SnippetSchema, input, output)
+ def self.run(snippet : Snippet, input, output)
config = SniplineCli.config
log = SniplineCli.log
log.info("editing snippet #{snippet.name}")
@@ -23,7 +23,7 @@ module SniplineCli
snippet.snippet_alias = snippet_attributes.snippet_alias
snippet.is_pinned = snippet_attributes.is_pinned
snippet.is_synced = false
- changeset = SnippetSchema.changeset(snippet)
+ changeset = Snippet.changeset(snippet)
if changeset.valid?
begin
if temp_file.sync_to_cloud?
@@ -32,7 +32,7 @@ module SniplineCli
puts "Snippet updated!"
break
else
- changeset = SnippetSchema.changeset(snippet)
+ changeset = Snippet.changeset(snippet)
Repo.update(changeset)
temp_file.delete
puts "Snippet updated!"
diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr
index bf5efc0..6020a8e 100644
--- a/src/snipline_cli/services/load_snippets.cr
+++ b/src/snipline_cli/services/load_snippets.cr
@@ -7,7 +7,7 @@ module SniplineCli
# ```
class LoadSnippets
- def self.run : Array(SnippetSchema)
+ def self.run : Array(Snippet)
config = SniplineCli.config
log = SniplineCli.log
log.info("Looking through file #{config.get("general.db")}")
@@ -18,7 +18,7 @@ module SniplineCli
# File.open(File.expand_path(config.get("general.db"))) do |file|
# snippets = Array(Snippet).from_json(file)
# end
- Repo.all(SnippetSchema)
+ Repo.all(Snippet)
end
end
end
diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr
index 2a4a8fd..dd8e1c5 100644
--- a/src/snipline_cli/services/search_snippets.cr
+++ b/src/snipline_cli/services/search_snippets.cr
@@ -6,7 +6,7 @@ module SniplineCli::Services
property snippets
# Takes an array of snippets and saves them to the `snippet.json` file.
- def initialize(@snippets = [] of SnippetSchema)
+ def initialize(@snippets = [] of Snippet)
end
def search(search_term)
diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr
index 735f932..1edb627 100644
--- a/src/snipline_cli/services/snipline_api.cr
+++ b/src/snipline_cli/services/snipline_api.cr
@@ -1,5 +1,7 @@
require "json"
+include SniplineCli::Parsers
+
module SniplineCli::Services
# For talking to the Snipline API.
class SniplineApi
@@ -17,7 +19,7 @@ module SniplineCli::Services
yield resp.body
end
- def create(snippet : SnippetAttribute | SnippetSchema)
+ def create(snippet : SnippetAttributeParser | Snippet)
config = SniplineCli.config
# begin
resp = Crest.post(
@@ -38,10 +40,10 @@ module SniplineCli::Services
},
logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false
)
- SingleSnippetDataWrapper.from_json(resp.body).data
+ SingleSnippetDataParser.from_json(resp.body).data
end
- def update(snippet : SnippetSchema)
+ def update(snippet : Snippet)
config = SniplineCli.config
# begin
resp = Crest.patch(
@@ -62,7 +64,7 @@ module SniplineCli::Services
},
logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false
)
- response = SingleSnippetDataWrapper.from_json(resp.body).data
+ response = SingleSnippetDataParser.from_json(resp.body).data
snippet.name = response.name.not_nil!
snippet.real_command = response.real_command.not_nil!
snippet.documentation = response.documentation
@@ -76,7 +78,7 @@ module SniplineCli::Services
Time::Location::UTC
)
puts "cloud #{cloud_updated_at}"
- local_snippet = Repo.get_by(SnippetSchema, cloud_id: response.id.not_nil!)
+ local_snippet = Repo.get_by(Snippet, cloud_id: response.id.not_nil!)
if local_snippet
puts "local #{local_snippet.updated_at}"
end
@@ -94,7 +96,7 @@ module SniplineCli::Services
def create(snippet : Snippet)
end
- def update(snippet : SnippetSchema)
+ def update(snippet : Snippet)
end
end
end
diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr
index 88a2f41..52b660b 100644
--- a/src/snipline_cli/services/sync_snippet_to_snipline.cr
+++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr
@@ -8,8 +8,8 @@ module SniplineCli::Services
def self.handle(snippet)
# snippet = Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes)
response = SniplineApi.new.create(snippet)
- if snippet.is_a?(SnippetSchema)
- snippet = Repo.get!(SnippetSchema, snippet.as(SnippetSchema).local_id)
+ if snippet.is_a?(Snippet)
+ snippet = Repo.get!(Snippet, snippet.local_id)
snippet.cloud_id = response.id
Repo.update(snippet)
end
diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr
index a57f5bd..48b115c 100644
--- a/src/snipline_cli/services/temp_snippet_editor_file.cr
+++ b/src/snipline_cli/services/temp_snippet_editor_file.cr
@@ -4,7 +4,7 @@ module SniplineCli::Services
# For saving Snippets locally.
class TempSnippetEditorFile
- property snippet : SnippetSchema | Nil
+ property snippet : Snippet | Nil
property template = %<# Welcome to the terminal-based snippet editor
# This file uses TOML syntax and will be processed after the file is saved and closed
@@ -21,9 +21,9 @@ snippet_alias = ""
sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"}
>
- def initialize(@snippet : SnippetSchema | Nil = nil)
+ def initialize(@snippet : Snippet | Nil = nil)
snippet = @snippet
- if (snippet = @snippet).is_a?(SnippetSchema)
+ if (snippet = @snippet).is_a?(Snippet)
@template = %<# Welcome to the terminal-based snippet editor
# This file uses TOML syntax and will be processed after the file is saved and closed
# Fill in the below options and save+quit to continue
@@ -51,7 +51,7 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"}
def read
config = SniplineCli.config
toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml")))
- SnippetAttribute.new(
+ SnippetAttributeParser.new(
name: toml["name"].as(String),
real_command: toml["real_command"].as(String),
documentation: toml["documentation"].as(String).rstrip,
From f2da41e101e18eb25b65cfc82acbb680aba47288 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 4 Dec 2019 11:45:52 +0000
Subject: [PATCH 24/47] refactor some is_a if statements
---
src/snipline_cli/models/snippet.cr | 2 +-
src/snipline_cli/services/append_snippet_to_local_storage.cr | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr
index 4be50bf..5c44674 100644
--- a/src/snipline_cli/models/snippet.cr
+++ b/src/snipline_cli/models/snippet.cr
@@ -34,7 +34,7 @@ module SniplineCli::Models
param_name = split_equals.shift
unparsed_params = split_equals.join("=")
if unparsed_params.is_a?(String)
- options = unparsed_params.as(String).split(",").map(&.strip)
+ options = unparsed_params.split(",").map(&.strip)
# todo
if options.is_a?(Array(String))
options = options.as(Array(String))
diff --git a/src/snipline_cli/services/append_snippet_to_local_storage.cr b/src/snipline_cli/services/append_snippet_to_local_storage.cr
index f70f9a8..e87c583 100644
--- a/src/snipline_cli/services/append_snippet_to_local_storage.cr
+++ b/src/snipline_cli/services/append_snippet_to_local_storage.cr
@@ -6,7 +6,7 @@ module SniplineCli::Services
def self.handle(snippet)
snippets = LoadSnippets.run
if snippet.is_a?(Snippet)
- snippets << snippet.as(Snippet)
+ snippets << snippet
end
StoreSnippets.new.store(snippets.to_json)
return
From 454de7ce197a93602c2ed14427e185e2d009fbb7 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 4 Dec 2019 11:46:12 +0000
Subject: [PATCH 25/47] formatting
---
spec/parsers/snippet_attribute_parser_spec.cr | 1 -
src/snipline_cli/parsers/snippet_attribute_parser.cr | 1 -
src/snipline_cli/parsers/snippet_data_parser.cr | 1 -
src/snipline_cli/parsers/snippet_parser.cr | 1 -
src/snipline_cli/services/append_snippet_to_local_storage.cr | 1 -
src/snipline_cli/services/command_builder.cr | 1 -
src/snipline_cli/services/edit_snippet.cr | 1 -
src/snipline_cli/services/load_snippets.cr | 1 -
src/snipline_cli/services/snipline_api.cr | 1 -
src/snipline_cli/services/sync_snippet_to_snipline.cr | 1 -
src/snipline_cli/services/temp_snippet_editor_file.cr | 1 -
11 files changed, 11 deletions(-)
diff --git a/spec/parsers/snippet_attribute_parser_spec.cr b/spec/parsers/snippet_attribute_parser_spec.cr
index 859ed79..df2fa69 100644
--- a/spec/parsers/snippet_attribute_parser_spec.cr
+++ b/spec/parsers/snippet_attribute_parser_spec.cr
@@ -18,4 +18,3 @@ describe SniplineCli::Parsers::SnippetAttributeParser do
attributes.documentation.should eq nil
end
end
-
diff --git a/src/snipline_cli/parsers/snippet_attribute_parser.cr b/src/snipline_cli/parsers/snippet_attribute_parser.cr
index 30f6d29..7e539f9 100644
--- a/src/snipline_cli/parsers/snippet_attribute_parser.cr
+++ b/src/snipline_cli/parsers/snippet_attribute_parser.cr
@@ -40,4 +40,3 @@ module SniplineCli::Parsers
end
end
end
-
diff --git a/src/snipline_cli/parsers/snippet_data_parser.cr b/src/snipline_cli/parsers/snippet_data_parser.cr
index 4ee244e..ade32aa 100644
--- a/src/snipline_cli/parsers/snippet_data_parser.cr
+++ b/src/snipline_cli/parsers/snippet_data_parser.cr
@@ -31,4 +31,3 @@ module SniplineCli::Parsers
end
end
end
-
diff --git a/src/snipline_cli/parsers/snippet_parser.cr b/src/snipline_cli/parsers/snippet_parser.cr
index 04340c3..0221b8b 100644
--- a/src/snipline_cli/parsers/snippet_parser.cr
+++ b/src/snipline_cli/parsers/snippet_parser.cr
@@ -71,4 +71,3 @@ module SniplineCli::Parsers
end
end
end
-
diff --git a/src/snipline_cli/services/append_snippet_to_local_storage.cr b/src/snipline_cli/services/append_snippet_to_local_storage.cr
index e87c583..dc79097 100644
--- a/src/snipline_cli/services/append_snippet_to_local_storage.cr
+++ b/src/snipline_cli/services/append_snippet_to_local_storage.cr
@@ -1,7 +1,6 @@
module SniplineCli::Services
# For saving Snippets locally.
class AppendSnippetToLocalStorage
-
# Takes an array of snippets and saves them to the `snippet.json` file.
def self.handle(snippet)
snippets = LoadSnippets.run
diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr
index 5de31e7..fa171c2 100644
--- a/src/snipline_cli/services/command_builder.cr
+++ b/src/snipline_cli/services/command_builder.cr
@@ -14,7 +14,6 @@ module SniplineCli
# end
# ```
class CommandBuilder
-
def self.run(snippet : Snippet, input, output, user_input = [] of String) : String
unless snippet.has_params
return snippet.real_command || ""
diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr
index 0f2dd7c..066c7b3 100644
--- a/src/snipline_cli/services/edit_snippet.cr
+++ b/src/snipline_cli/services/edit_snippet.cr
@@ -6,7 +6,6 @@ module SniplineCli
# snippets = SniplineCli::Services::LoadSnippets.run
# ```
class EditSnippet
-
def self.run(snippet : Snippet, input, output)
config = SniplineCli.config
log = SniplineCli.log
diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr
index 6020a8e..91de8d7 100644
--- a/src/snipline_cli/services/load_snippets.cr
+++ b/src/snipline_cli/services/load_snippets.cr
@@ -6,7 +6,6 @@ module SniplineCli
# snippets = SniplineCli::Services::LoadSnippets.run
# ```
class LoadSnippets
-
def self.run : Array(Snippet)
config = SniplineCli.config
log = SniplineCli.log
diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr
index 1edb627..e8045fe 100644
--- a/src/snipline_cli/services/snipline_api.cr
+++ b/src/snipline_cli/services/snipline_api.cr
@@ -5,7 +5,6 @@ include SniplineCli::Parsers
module SniplineCli::Services
# For talking to the Snipline API.
class SniplineApi
-
# Fetches the user's Snippets.
def fetch(&block)
config = SniplineCli.config
diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr
index 52b660b..d32c3f1 100644
--- a/src/snipline_cli/services/sync_snippet_to_snipline.cr
+++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr
@@ -3,7 +3,6 @@ require "json"
module SniplineCli::Services
# For saving Snippets locally.
class SyncSnippetToSnipline
-
# Takes an array of snippets and saves them to the `snippet.json` file.
def self.handle(snippet)
# snippet = Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes)
diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr
index 48b115c..122c979 100644
--- a/src/snipline_cli/services/temp_snippet_editor_file.cr
+++ b/src/snipline_cli/services/temp_snippet_editor_file.cr
@@ -3,7 +3,6 @@ require "toml"
module SniplineCli::Services
# For saving Snippets locally.
class TempSnippetEditorFile
-
property snippet : Snippet | Nil
property template = %<# Welcome to the terminal-based snippet editor
From 9bd8c23405fc6c5cf03880af5632c7d185ca98d2 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 4 Dec 2019 12:26:08 +0000
Subject: [PATCH 26/47] refactor tests for new snippet parser/models
---
spec/models/snippet_spec.cr | 49 +++++++++++-----------
spec/parsers/snippet_parser_spec.cr | 34 +++++++++++++++
src/snipline_cli/models/snippet.cr | 2 +-
src/snipline_cli/parsers/snippet_parser.cr | 4 --
4 files changed, 60 insertions(+), 29 deletions(-)
create mode 100644 spec/parsers/snippet_parser_spec.cr
diff --git a/spec/models/snippet_spec.cr b/spec/models/snippet_spec.cr
index 3039da1..5c00012 100644
--- a/spec/models/snippet_spec.cr
+++ b/spec/models/snippet_spec.cr
@@ -1,42 +1,44 @@
-require "file"
+def set_attribute(attributes, attribute_name, default = nil)
+ (!attributes.nil? && attributes.has_key?(attribute_name)) ? attributes[attribute_name] : default
+end
+
+def create_test_snippet(attributes : NamedTuple | Nil = nil)
+ snippet = SniplineCli::Models::Snippet.new
+ snippet.local_id = set_attribute(attributes, :local_id, 123).as(Int32)
+ snippet.cloud_id = set_attribute(attributes, :cloud_id)
+ snippet.name = set_attribute(attributes, :name, "Git log pretty")
+ snippet.snippet_alias = set_attribute(attributes, :snippet_alias, "git.sla")
+ snippet.is_pinned = set_attribute(attributes, :is_pinned, false).as(Bool)
+ snippet.real_command = set_attribute(attributes, :real_command, "git log --oneline --decorate --graph --all")
+ snippet.tags = set_attribute(attributes, :tags, "git")
+ snippet.documentation = set_attribute(attributes, :documentation, "This is the docs")
-def create_test_object(attributes : String | Nil)
- attributes = attributes || %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}})
- SniplineCli::Models::Snippet.from_json(attributes)
+ snippet
end
describe SniplineCli::Models::Snippet do
- it "correctly parses snippets from JSON" do
- content = File.read(File.expand_path("./spec/fixtures/snippets.json"))
- snippets = Array(SniplineCli::Models::Snippet).from_json(content)
- snippets.size.should eq(2)
- snippets.first.id.should eq("0f4846c0-3194-40bb-be77-8c4b136565f4")
- end
-
it "parses with no parameters" do
- snippet = create_test_object(nil)
+ snippet = create_test_snippet()
snippet.snippet_alias.should eq("git.sla")
snippet.name.should eq("Git log pretty")
snippet.is_pinned.should eq(false)
snippet.real_command.should eq("git log --oneline --decorate --graph --all")
snippet.preview_command.should eq("git log --oneline --decorate --graph --all")
- snippet.tags.should eq(["git"])
+ snippet.tags.should eq("git")
snippet.has_params.should eq(false)
snippet.interactive_params.should eq([] of SniplineCli::Models::SnippetParam)
snippet.uninteractive_params.should eq([] of SniplineCli::Models::SnippetPasswordParam)
end
-
it "#value_for_attribute" do
- snippet = create_test_object(nil)
+ snippet = create_test_snippet(nil)
snippet.value_for_attribute("alias").should eq("git.sla")
snippet.value_for_attribute("name").should eq("Git log pretty")
snippet.value_for_attribute("tags").should eq("git")
- # snippet.value_for_attribute("documentation").should eq("")
+ snippet.value_for_attribute("documentation").should eq("This is the docs")
end
-
describe "#interactive_params" do
it "should be able to parse a variable with a default value" do
- snippet = create_test_object(%({"id":"0b36b3a1-f10f-42f9-857e-0caeb23b36c3","type":"snippets","attributes":{"alias":"git.s","is-pinned":false,"name":"Search Git history","real-command":"git log -S \#{[Test=default]} ","tags":[]}}))
+ snippet = create_test_snippet({name: "Test", real_command: "git log -S \#{[Test=default]}"})
snippet.has_params.should eq(true)
snippet.interactive_params.size.should eq(1)
snippet.interactive_params.first.name.should eq("Test")
@@ -44,9 +46,8 @@ describe SniplineCli::Models::Snippet do
snippet.interactive_params.first.full.should eq("Test=default")
snippet.interactive_params.first.type.should eq("variable")
end
-
it "should be able to parse a variable without a default value" do
- snippet = create_test_object(%({"id":"0b36b3a1-f10f-42f9-857e-0caeb23b36c3","type":"snippets","attributes":{"alias":"git.s","is-pinned":false,"name":"Search Git history","real-command":"git log -S \#{[Test]} ","tags":[]}}))
+ snippet = create_test_snippet({name: "Search Git history", real_command: "git log -S \#{[Test]} "})
snippet.has_params.should eq(true)
snippet.interactive_params.size.should eq(1)
snippet.interactive_params.first.name.should eq("Test")
@@ -56,7 +57,7 @@ describe SniplineCli::Models::Snippet do
end
it "should be able to parse multiple variables" do
- snippet = create_test_object(%({"id":"0b36b3a1-f10f-42f9-857e-0caeb23b36c3","type":"snippets","attributes":{"alias":"git.s","is-pinned":false,"name":"Search Git history","real-command":"git log -S \#{[Test]} \#{[Example=test]} ","tags":[]}}))
+ snippet = create_test_snippet({name: "Test", real_command: "git log -S \#{[Test]} \#{[Example=test]} "})
snippet.has_params.should eq(true)
snippet.interactive_params.size.should eq(2)
snippet.interactive_params.first.name.should eq("Test")
@@ -70,7 +71,7 @@ describe SniplineCli::Models::Snippet do
end
it "should be able to parse multiple choice variables" do
- snippet = create_test_object(%({"id":"0b36b3a1-f10f-42f9-857e-0caeb23b36c3","type":"snippets","attributes":{"alias":"git.s","is-pinned":false,"name":"Search Git history","real-command":"git log -S #select{[Test=option 1, option 2]} ","tags":[]}}))
+ snippet = create_test_snippet({name: "Search Git history", real_command: "git log -S #select{[Test=option 1, option 2]} "})
snippet.has_params.should eq(true)
snippet.interactive_params.size.should eq(1)
snippet.interactive_params.first.name.should eq("Test")
@@ -81,10 +82,10 @@ describe SniplineCli::Models::Snippet do
end
it "should be able to parse password variables" do
- snippet = create_test_object(%({"id":"0b36b3a1-f10f-42f9-857e-0caeb23b36c3","type":"snippets","attributes":{"alias":"git.s","is-pinned":false,"name":"Search Git history","real-command":"magento user:create #password{[Name,8]} #password{[Default]}","tags":[]}}))
+ snippet = create_test_snippet({name: "Search Git history", real_command: "magento user:create #password{[Name,8]} #password{[Default]}"})
snippet.has_params.should eq(true)
snippet.interactive_params.size.should eq(0)
snippet.preview_command.should eq("magento user:create ")
end
- end
+ end
end
diff --git a/spec/parsers/snippet_parser_spec.cr b/spec/parsers/snippet_parser_spec.cr
new file mode 100644
index 0000000..fc669fc
--- /dev/null
+++ b/spec/parsers/snippet_parser_spec.cr
@@ -0,0 +1,34 @@
+require "file"
+
+def create_test_object(attributes : String | Nil)
+ attributes = attributes || %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}})
+ SniplineCli::Parsers::SnippetParser.from_json(attributes)
+end
+
+describe SniplineCli::Parsers::SnippetParser do
+ it "correctly parses snippets from JSON" do
+ content = File.read(File.expand_path("./spec/fixtures/snippets.json"))
+ snippets = Array(SniplineCli::Parsers::SnippetParser).from_json(content)
+ snippets.size.should eq(2)
+ snippets.first.id.should eq("0f4846c0-3194-40bb-be77-8c4b136565f4")
+ end
+
+ it "parses with no parameters" do
+ snippet = create_test_object(nil)
+ snippet.snippet_alias.should eq("git.sla")
+ snippet.name.should eq("Git log pretty")
+ snippet.is_pinned.should eq(false)
+ snippet.real_command.should eq("git log --oneline --decorate --graph --all")
+ snippet.tags.should eq(["git"])
+ end
+
+ it "#value_for_attribute" do
+ snippet = create_test_object(nil)
+ snippet.value_for_attribute("alias").should eq("git.sla")
+ snippet.value_for_attribute("name").should eq("Git log pretty")
+ snippet.value_for_attribute("tags").should eq("git")
+ # snippet.value_for_attribute("documentation").should eq("")
+ end
+
+end
+
diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr
index 5c44674..4cb08a5 100644
--- a/src/snipline_cli/models/snippet.cr
+++ b/src/snipline_cli/models/snippet.cr
@@ -112,7 +112,7 @@ module SniplineCli::Models
name || ""
when "tags"
if !tags.nil?
- tags.as(Array(String)).join(",") || ""
+ tags
else
""
end
diff --git a/src/snipline_cli/parsers/snippet_parser.cr b/src/snipline_cli/parsers/snippet_parser.cr
index 0221b8b..e71e623 100644
--- a/src/snipline_cli/parsers/snippet_parser.cr
+++ b/src/snipline_cli/parsers/snippet_parser.cr
@@ -47,10 +47,6 @@ module SniplineCli::Parsers
attributes.updated_at
end
- def has_params
- interactive_params.size > 0 || uninteractive_params.size > 0
- end
-
def value_for_attribute(attribute : String)
case attribute
when "alias"
From 4c90fa4188a7b88f618d77b5ea582276a89b235b Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Fri, 6 Dec 2019 10:42:04 +0000
Subject: [PATCH 27/47] refactor searching
---
src/snipline_cli/services/search_snippets.cr | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr
index dd8e1c5..8a254ef 100644
--- a/src/snipline_cli/services/search_snippets.cr
+++ b/src/snipline_cli/services/search_snippets.cr
@@ -16,17 +16,27 @@ module SniplineCli::Services
unless search_term.empty?
lowered_search_term = search_term.downcase
results = results.select do |i|
- if !i.tags.nil?
- i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || i.tags.as(String).split(",").includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false)
- else
- i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false)
- end
+ snippet_has_search_term(i, lowered_search_term)
end
end
sort_results(results)
end
+ def snippet_has_search_term(i, lowered_search_term)
+ if i.tags.is_a?(String) && i.tags.as(String).split(",").includes?(lowered_search_term)
+ true
+ elsif i.name.as(String).downcase.includes?(lowered_search_term)
+ true
+ elsif i.real_command.as(String).downcase.includes?(lowered_search_term)
+ true
+ elsif i.snippet_alias.is_a?(String) && i.snippet_alias.as(String).downcase.includes?(lowered_search_term)
+ true
+ else
+ false
+ end
+ end
+
def sort_results(snippets)
snippets.sort { |snippet_a, snippet_b|
if snippet_a.is_pinned && snippet_b.is_pinned
From b75278476f8b83b60df69993b09704d1cd532509 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Mon, 9 Dec 2019 14:34:51 +0000
Subject: [PATCH 28/47] Fuzzy matching
---
shard.lock | 16 ++++++++++------
shard.yml | 2 ++
src/snipline_cli/commands/search.cr | 11 ++++++-----
src/snipline_cli/services/search_snippets.cr | 11 ++++++-----
4 files changed, 24 insertions(+), 16 deletions(-)
diff --git a/shard.lock b/shard.lock
index b9630d6..bc51b1a 100644
--- a/shard.lock
+++ b/shard.lock
@@ -10,7 +10,7 @@ shards:
crecto:
github: Crecto/crecto
- version: 0.11.1
+ version: 0.11.2
crest:
github: mamantoha/crest
@@ -20,19 +20,23 @@ shards:
github: crystal-lang/crystal-db
version: 0.7.0
+ fuzzy_match:
+ github: acoustep/fuzzy_match.cr
+ commit: 24513474ea58e2ce97a2d34e8668947da8863965
+
http-client-digest_auth:
github: mamantoha/http-client-digest_auth
version: 0.2.0
- micrate:
- github: juanedi/micrate
- version: 0.4.1
-
ncurses:
github: JohnDowson/ncurses
commit: d0e46f673b6a443255269ce610d598a0fdc7d159
+ sqlite3:
+ github: crystal-lang/crystal-sqlite3
+ version: 0.14.0
+
toml:
github: crystal-community/toml.cr
- commit: 5935d7f5afeed8ba126418a9f85691b4067db85c
+ commit: d02de85eed68a70dc97ab6d6e52831a4d0e890fe
diff --git a/shard.yml b/shard.yml
index 713dc20..9cc06d1 100644
--- a/shard.yml
+++ b/shard.yml
@@ -27,6 +27,8 @@ dependencies:
github: Crecto/crecto
sqlite3:
github: crystal-lang/crystal-sqlite3
+ fuzzy_match:
+ github: acoustep/fuzzy_match.cr
development_dependencies:
diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr
index 6e11294..9b91a76 100644
--- a/src/snipline_cli/commands/search.cr
+++ b/src/snipline_cli/commands/search.cr
@@ -45,13 +45,14 @@ module SniplineCli
return
end
query = Crecto::Repo::Query.new
- if flags.field
- query = query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term)
+ query = if flags.field
+ # query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term)
+ query
else
- query = query.where("snippets.name LIKE '%?%'", lowered_search_term).or_where("snippets.real_command LIKE '%?%'", lowered_search_term).or_where("snippets.snippet_alias LIKE '%?%'", lowered_search_term).or_where("snippets.tags LIKE '%?%'", lowered_search_term)
+ wildcard_query = "%#{lowered_search_term}%"
+ query.where("snippets.name LIKE ?", wildcard_query).or_where("snippets.real_command LIKE ?", wildcard_query).or_where("snippets.snippet_alias LIKE ?", wildcard_query).or_where("snippets.tags LIKE ?", wildcard_query)
end
- query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i)
- Repo.all(Snippet, query)
+ Repo.all(Snippet, query)
# snippets.select! { |i|
# if field = flags.field
# i.value_for_attribute(field).downcase.includes?(lowered_search_term)
diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr
index 8a254ef..d7eced5 100644
--- a/src/snipline_cli/services/search_snippets.cr
+++ b/src/snipline_cli/services/search_snippets.cr
@@ -1,4 +1,5 @@
require "json"
+require "fuzzy_match"
module SniplineCli::Services
# For saving Snippets locally.
@@ -20,13 +21,13 @@ module SniplineCli::Services
end
end
- sort_results(results)
+ sort_results(results, search_term)
end
def snippet_has_search_term(i, lowered_search_term)
if i.tags.is_a?(String) && i.tags.as(String).split(",").includes?(lowered_search_term)
true
- elsif i.name.as(String).downcase.includes?(lowered_search_term)
+ elsif FuzzyMatch::Simple.new(lowered_search_term, i.name.as(String).downcase).matches?
true
elsif i.real_command.as(String).downcase.includes?(lowered_search_term)
true
@@ -37,16 +38,16 @@ module SniplineCli::Services
end
end
- def sort_results(snippets)
+ def sort_results(snippets, search_term)
snippets.sort { |snippet_a, snippet_b|
if snippet_a.is_pinned && snippet_b.is_pinned
- snippet_a.name.as(String) <=> snippet_b.name.as(String)
+ FuzzyMatch::Full.new(search_term, snippet_a.name.as(String)).score <=> FuzzyMatch::Full.new(search_term, snippet_b.name.as(String)).score
elsif snippet_a.is_pinned
-1
elsif snippet_b.is_pinned
1
else
- snippet_a.name.as(String) <=> snippet_b.name.as(String)
+ FuzzyMatch::Full.new(search_term, snippet_a.name.as(String)).score <=> FuzzyMatch::Full.new(search_term, snippet_b.name.as(String)).score
end
}
end
From 4091e0df2545126b07207e3a1228f88460ffee3b Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 11 Dec 2019 14:18:50 +0000
Subject: [PATCH 29/47] Add dry run and verbose flags for syncing
---
src/snipline_cli/commands/sync.cr | 38 +++++----
src/snipline_cli/services/display_results.cr | 89 ++++++++++++--------
2 files changed, 77 insertions(+), 50 deletions(-)
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index e10bcad..635eeed 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -12,14 +12,16 @@ module SniplineCli
# ```
class Sync < Admiral::Command
define_help description: "For syncing snippets from Snipline"
+ define_flag verbose : Bool, default: false, long: verbose
+ define_flag dry_run : Bool, default: false, description: "Output the changes that would be made if the command was run without --dry-run"
property snipline_api : (SniplineApi | SniplineApiTest) = SniplineApi.new
property file : (StoreSnippets) = StoreSnippets.new
def run
- puts "Migrating Database..."
+ puts "Migrating Database..." if flags.verbose
Migrator.run
- puts "Syncing snippets..."
+ puts "Syncing snippets..." if flags.verbose
config = SniplineCli.config
if config.get("api.token") == ""
abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}")
@@ -35,7 +37,6 @@ module SniplineCli
end
def update_locally_out_of_date_snippets(cloud_snippets)
- # TODO: this method is for local snippets whose updated_at is behind the cloud
synced_to_local_count = 0
synced_to_cloud_count = 0
cloud_snippets.each { |cs|
@@ -49,22 +50,22 @@ module SniplineCli
local_snippet.snippet_alias = cs.not_nil!.snippet_alias
local_snippet.is_synced = true
local_snippet.is_pinned = cs.not_nil!.is_pinned
- Repo.update(local_snippet)
+ Repo.update(local_snippet) unless flags.dry_run
synced_to_local_count = synced_to_local_count + 1
else
# local has updated without sending to snipline cloud - time to update the cloud version
- @snipline_api.update(local_snippet)
+ @snipline_api.update(local_snippet) unless flags.dry_run
synced_to_cloud_count = synced_to_cloud_count + 1
end
end
}
- puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green)
+ puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green)
puts "Synced #{synced_to_cloud_count} from local database to Snipline Cloud".colorize(:green)
end
def delete_orphan_snippets(cloud_snippets)
# if snippet cloud_id exists locally but not in cloud
- puts "Cleaning up snippets that are no longer in Snipline Cloud..."
+ puts "Cleaning up snippets that are no longer in Snipline Cloud..." if (flags.verbose || flags.dry_run)
local_snippets = LoadSnippets.run.select { |ls| !ls.cloud_id.nil? }
orphans = [] of Snippet
cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id }
@@ -73,8 +74,8 @@ module SniplineCli
end
orphans.each do |ls|
# delete snippets
- puts "Deleting #{ls.name}".colorize(:green)
- Repo.delete(ls)
+ puts "Deleting #{ls.name}".colorize(:green) if (flags.verbose || flags.dry_run)
+ Repo.delete(ls) unless flags.dry_run
end
end
@@ -93,7 +94,7 @@ module SniplineCli
difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids)
end
difference.each do |s|
- puts "Storing #{s.attributes.name} from Snipline".colorize(:green)
+ puts "Storing #{s.attributes.name} from Snipline Cloud".colorize(:green) if (flags.verbose || flags.dry_run)
snippet = Snippet.new
snippet.name = s.name
snippet.cloud_id = s.id
@@ -104,7 +105,7 @@ module SniplineCli
snippet.is_pinned = s.is_pinned
snippet.is_synced = true
changeset = Snippet.changeset(snippet)
- Repo.insert(changeset)
+ Repo.insert(changeset) unless flags.dry_run
# local_snippets << s
end
# @file.store(local_snippets.to_json) unless difference.size == 0
@@ -124,11 +125,11 @@ module SniplineCli
def sync_unsynced_snippets
local_snippets = LoadSnippets.run
local_snippets.select { |s| s.cloud_id.nil? }.each do |snippet|
- puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..."
+ puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..." if (flags.verbose || flags.dry_run)
begin
- cloud_snippet = SyncSnippetToSnipline.handle(snippet)
+ cloud_snippet = SyncSnippetToSnipline.handle(snippet) unless flags.dry_run
update_local_snippet_id(cloud_snippet, snippet)
- puts "Success!".colorize(:green)
+ puts "#{snippet.name.colorize(:green).mode(:bold)} #{"saved successfully!".colorize(:green)}" if (flags.verbose || flags.dry_run)
rescue ex : Crest::UnprocessableEntity
resp = SnippetErrorResponse.from_json(ex.response.not_nil!.body)
puts "Failed: #{resp.errors.first.source["pointer"].gsub("/data/attributes/", "")} #{resp.errors.first.detail}".colorize(:red)
@@ -139,9 +140,12 @@ module SniplineCli
end
def update_local_snippet_id(cloud_snippet, local_snippet)
- local_snippet.cloud_id = cloud_snippet.id
- local_snippet.is_synced = true
- Repo.update(local_snippet)
+ if cloud_snippet
+ local_snippet.cloud_id = cloud_snippet.id
+ local_snippet.is_synced = true
+ Repo.update(local_snippet) unless flags.dry_run
+ puts "Updated cloud_id of #{local_snippet.name.as(String)} to #{cloud_snippet.id}" if (flags.verbose || flags.dry_run)
+ end
end
end
diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr
index 936836e..a4088b9 100644
--- a/src/snipline_cli/services/display_results.cr
+++ b/src/snipline_cli/services/display_results.cr
@@ -24,44 +24,67 @@ module SniplineCli::Services
@search.window.refresh
@search.window.get_char do |ch|
- break unless ch.is_a?(Char)
# @search.write(ch.ord.to_s)
- codepoint = ch.ord
- break if codepoint == 17 # C+q - quit
-
- if codepoint == 127
- @search.delete
- @left_pane.filter(@search.search_text)
- refresh_right_pane
- elsif codepoint == 75 # S+k - up
- @left_pane.select_higher
- refresh_right_pane
- elsif codepoint == 74 # C+j / S+j - down
- @left_pane.select_lower
- refresh_right_pane
- elsif codepoint == 67 || codepoint == 10 # Shift+c / Enter - copy
- output = build_snippet
- copy_snippet(output)
- break
- elsif codepoint == 69 # Shift+r - run
- edit_snippet
- break
- elsif codepoint == 82 # Shift+r - run
- output = build_snippet
- run_snippet(output)
- break
- else
- @search.write(ch)
- @left_pane.filter(@search.search_text)
- refresh_right_pane
- end
- @left_pane.filter(@search.search_text)
- @search.window.refresh
- end
+ # @search.write(ch.inspect)
+ # break unless ch.is_a?(Char) || ch == NCurses::Key::Up || ch == NCurses::Key::Down
+ case ch
+ when LibNCurses::Key
+ run_command_key(ch)
+ when Char
+ codepoint = ch.ord
+ break if codepoint == 17 # C+q - quit
+ break if run_character_key(ch, codepoint) == false
+ @left_pane.filter(@search.search_text)
+ end
+ @search.window.refresh
+ end
NCurses.clear
NCurses.end
end
+ def run_character_key(ch, codepoint)
+ if codepoint == 127
+ @search.delete
+ @left_pane.filter(@search.search_text)
+ refresh_right_pane
+ elsif codepoint == 75 # S+k - up
+ @left_pane.select_higher
+ refresh_right_pane
+ elsif codepoint == 74 # C+j / S+j - down
+ @left_pane.select_lower
+ refresh_right_pane
+ elsif codepoint == 67 || codepoint == 10 # Shift+c / Enter - copy
+ output = build_snippet
+ copy_snippet(output)
+ return false
+ elsif codepoint == 69 # Shift+r - run
+ edit_snippet
+ return false
+ elsif codepoint == 82 # Shift+r - run
+ output = build_snippet
+ run_snippet(output)
+ return false
+ else
+ @search.write(ch)
+ @left_pane.filter(@search.search_text)
+ refresh_right_pane
+ end
+ return true
+ end
+
+ def run_command_key(ch)
+ case ch.value
+ when 27
+ # @search.write("d")
+ @left_pane.select_lower
+ refresh_right_pane
+ when 28
+ @search.write("u")
+ else
+ @search.write("unknown #{ch}")
+ end
+ end
+
def refresh_right_pane
if @left_pane.selected_index < @left_pane.results.size
@right_pane.display(@left_pane.results[@left_pane.selected_index])
From a4396df392ae349bb9e7b05594257071acd91dfd Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 11 Dec 2019 14:49:15 +0000
Subject: [PATCH 30/47] Add deleting functionality
---
src/snipline_cli/ncurses_windows/footer.cr | 2 +-
src/snipline_cli/services/delete_snippet.cr | 28 ++++++++++++++++++++
src/snipline_cli/services/display_results.cr | 10 ++++++-
src/snipline_cli/services/snipline_api.cr | 20 ++++++++++++++
4 files changed, 58 insertions(+), 2 deletions(-)
create mode 100644 src/snipline_cli/services/delete_snippet.cr
diff --git a/src/snipline_cli/ncurses_windows/footer.cr b/src/snipline_cli/ncurses_windows/footer.cr
index 86ecbcf..3808e7d 100644
--- a/src/snipline_cli/ncurses_windows/footer.cr
+++ b/src/snipline_cli/ncurses_windows/footer.cr
@@ -10,7 +10,7 @@ module SniplineCli::NCursesWindows
0
)
@window.set_color 1
- LibNCurses.wprintw(@window, "%s", " Quit | Down | Up | - Copy | Run | Edit\n")
+ LibNCurses.wprintw(@window, "%s", " Quit | Down | Up | - Copy | Run | Edit | Delete\n")
LibNCurses.mvwchgat(@window, 0, 0, -1, NCurses::Attribute::Reverse, 2, nil)
@window.refresh
end
diff --git a/src/snipline_cli/services/delete_snippet.cr b/src/snipline_cli/services/delete_snippet.cr
new file mode 100644
index 0000000..d391e5e
--- /dev/null
+++ b/src/snipline_cli/services/delete_snippet.cr
@@ -0,0 +1,28 @@
+module SniplineCli
+ module Services
+ # LoadSnippets fetches all the snippets from the `snippet.json` file and parses them.
+ #
+ # ```crystal
+ # snippets = SniplineCli::Services::LoadSnippets.run
+ # ```
+ class DeleteSnippet
+ def self.run(snippet : Snippet, input, output)
+ config = SniplineCli.config
+ log = SniplineCli.log
+ puts "#{"Are you sure you want to permanently delete".colorize(:red)} #{snippet.name.colorize(:red).mode(:bold)}#{"? (y/N)".colorize(:red)}"
+ answer = gets
+ if ["Y", "y", "yes"].includes?(answer)
+ delete_snippet(snippet)
+ end
+ end
+
+ def self.delete_snippet(snippet)
+ if snippet.cloud_id
+ SniplineApi.new.delete(snippet)
+ end
+ Repo.delete(snippet)
+ puts "Deleted #{snippet.name}".colorize(:green)
+ end
+ end
+ end
+end
diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr
index a4088b9..a57f250 100644
--- a/src/snipline_cli/services/display_results.cr
+++ b/src/snipline_cli/services/display_results.cr
@@ -57,7 +57,10 @@ module SniplineCli::Services
output = build_snippet
copy_snippet(output)
return false
- elsif codepoint == 69 # Shift+r - run
+ elsif codepoint == 68 # Shift+d - delete
+ delete_snippet
+ return false
+ elsif codepoint == 69 # Shift+e - edit
edit_snippet
return false
elsif codepoint == 82 # Shift+r - run
@@ -132,5 +135,10 @@ module SniplineCli::Services
NCurses.end
EditSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT)
end
+ def delete_snippet
+ NCurses.clear
+ NCurses.end
+ DeleteSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT)
+ end
end
end
diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr
index e8045fe..afdcdc1 100644
--- a/src/snipline_cli/services/snipline_api.cr
+++ b/src/snipline_cli/services/snipline_api.cr
@@ -85,6 +85,23 @@ module SniplineCli::Services
q = Repo.raw_exec("UPDATE snippets SET updated_at=? WHERE cloud_id=?", cloud_updated_at, response.id)
puts q.inspect
end
+
+ def delete(snippet)
+ config = SniplineCli.config
+ begin
+ response = Crest.delete(
+ "#{config.get("api.url")}/snippets/#{snippet.cloud_id}",
+ headers: {
+ # "Accept" => "application/vnd.api+json",
+ "Authorization" => "Bearer #{config.get("api.token")}",
+ },
+ logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false
+ )
+ true
+ rescue ex
+ false
+ end
+ end
end
class SniplineApiTest
@@ -97,5 +114,8 @@ module SniplineCli::Services
def update(snippet : Snippet)
end
+
+ def delete(snippet : Snippet)
+ end
end
end
From 0442fc0fadf9bb354e6cc8f8e646f3bd4dd150c8 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 11 Dec 2019 14:54:35 +0000
Subject: [PATCH 31/47] Add check for api token before deleting from server
---
src/snipline_cli/services/delete_snippet.cr | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/snipline_cli/services/delete_snippet.cr b/src/snipline_cli/services/delete_snippet.cr
index d391e5e..9095fa5 100644
--- a/src/snipline_cli/services/delete_snippet.cr
+++ b/src/snipline_cli/services/delete_snippet.cr
@@ -7,7 +7,6 @@ module SniplineCli
# ```
class DeleteSnippet
def self.run(snippet : Snippet, input, output)
- config = SniplineCli.config
log = SniplineCli.log
puts "#{"Are you sure you want to permanently delete".colorize(:red)} #{snippet.name.colorize(:red).mode(:bold)}#{"? (y/N)".colorize(:red)}"
answer = gets
@@ -17,7 +16,8 @@ module SniplineCli
end
def self.delete_snippet(snippet)
- if snippet.cloud_id
+ config = SniplineCli.config
+ if snippet.cloud_id && config.get("api.token") != ""
SniplineApi.new.delete(snippet)
end
Repo.delete(snippet)
From cf4b3ebddcf705924ba1f93c5b5fd5437629ac65 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 12 Dec 2019 11:17:37 +0000
Subject: [PATCH 32/47] formatting
---
.tool-versions | 2 +-
shard.yml | 3 +-
spec/models/snippet_spec.cr | 24 ++--
spec/parsers/snippet_parser_spec.cr | 2 -
src/snipline_cli/commands/init.cr | 10 +-
src/snipline_cli/commands/login.cr | 4 +-
src/snipline_cli/commands/new.cr | 4 +-
src/snipline_cli/commands/search.cr | 14 +--
src/snipline_cli/commands/sync.cr | 38 +++---
src/snipline_cli/config.cr | 4 +-
src/snipline_cli/models/snippet.cr | 2 +-
.../services/create_config_directory.cr | 2 +-
src/snipline_cli/services/delete_snippet.cr | 25 ++--
src/snipline_cli/services/display_results.cr | 113 +++++++++---------
src/snipline_cli/services/edit_snippet.cr | 2 +-
src/snipline_cli/services/load_snippets.cr | 4 +-
src/snipline_cli/services/migrator.cr | 4 +-
src/snipline_cli/services/search_snippets.cr | 32 ++---
src/snipline_cli/services/snipline_api.cr | 32 ++---
src/snipline_cli/services/store_snippets.cr | 8 +-
.../services/temp_snippet_editor_file.cr | 12 +-
21 files changed, 170 insertions(+), 171 deletions(-)
diff --git a/.tool-versions b/.tool-versions
index 9668dfd..a2c7d83 100644
--- a/.tool-versions
+++ b/.tool-versions
@@ -1 +1 @@
-crystal 0.30.1
+crystal 0.32.0
diff --git a/shard.yml b/shard.yml
index 9cc06d1..34e0812 100644
--- a/shard.yml
+++ b/shard.yml
@@ -29,9 +29,10 @@ dependencies:
github: crystal-lang/crystal-sqlite3
fuzzy_match:
github: acoustep/fuzzy_match.cr
+ version: ~> 0.2.0
development_dependencies:
ameba:
github: veelenga/ameba
- version: ~> 0.10.0
+ version: ~> 0.11.0
diff --git a/spec/models/snippet_spec.cr b/spec/models/snippet_spec.cr
index 5c00012..9a4f02b 100644
--- a/spec/models/snippet_spec.cr
+++ b/spec/models/snippet_spec.cr
@@ -1,24 +1,24 @@
def set_attribute(attributes, attribute_name, default = nil)
- (!attributes.nil? && attributes.has_key?(attribute_name)) ? attributes[attribute_name] : default
+ (!attributes.nil? && attributes.has_key?(attribute_name)) ? attributes[attribute_name] : default
end
def create_test_snippet(attributes : NamedTuple | Nil = nil)
snippet = SniplineCli::Models::Snippet.new
- snippet.local_id = set_attribute(attributes, :local_id, 123).as(Int32)
- snippet.cloud_id = set_attribute(attributes, :cloud_id)
- snippet.name = set_attribute(attributes, :name, "Git log pretty")
- snippet.snippet_alias = set_attribute(attributes, :snippet_alias, "git.sla")
- snippet.is_pinned = set_attribute(attributes, :is_pinned, false).as(Bool)
- snippet.real_command = set_attribute(attributes, :real_command, "git log --oneline --decorate --graph --all")
- snippet.tags = set_attribute(attributes, :tags, "git")
- snippet.documentation = set_attribute(attributes, :documentation, "This is the docs")
+ snippet.local_id = set_attribute(attributes, :local_id, 123).as(Int32)
+ snippet.cloud_id = set_attribute(attributes, :cloud_id)
+ snippet.name = set_attribute(attributes, :name, "Git log pretty")
+ snippet.snippet_alias = set_attribute(attributes, :snippet_alias, "git.sla")
+ snippet.is_pinned = set_attribute(attributes, :is_pinned, false).as(Bool)
+ snippet.real_command = set_attribute(attributes, :real_command, "git log --oneline --decorate --graph --all")
+ snippet.tags = set_attribute(attributes, :tags, "git")
+ snippet.documentation = set_attribute(attributes, :documentation, "This is the docs")
- snippet
+ snippet
end
describe SniplineCli::Models::Snippet do
it "parses with no parameters" do
- snippet = create_test_snippet()
+ snippet = create_test_snippet()
snippet.snippet_alias.should eq("git.sla")
snippet.name.should eq("Git log pretty")
snippet.is_pinned.should eq(false)
@@ -87,5 +87,5 @@ describe SniplineCli::Models::Snippet do
snippet.interactive_params.size.should eq(0)
snippet.preview_command.should eq("magento user:create ")
end
- end
+ end
end
diff --git a/spec/parsers/snippet_parser_spec.cr b/spec/parsers/snippet_parser_spec.cr
index fc669fc..4a25e8a 100644
--- a/spec/parsers/snippet_parser_spec.cr
+++ b/spec/parsers/snippet_parser_spec.cr
@@ -29,6 +29,4 @@ describe SniplineCli::Parsers::SnippetParser do
snippet.value_for_attribute("tags").should eq("git")
# snippet.value_for_attribute("documentation").should eq("")
end
-
end
-
diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr
index 922e2b8..e3c5246 100644
--- a/src/snipline_cli/commands/init.cr
+++ b/src/snipline_cli/commands/init.cr
@@ -24,11 +24,11 @@ module SniplineCli
TOML
CreateConfigDirectory.run(SniplineCli.config_file)
- File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w")
- puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}"
- unless File.exists?(File.expand_path(config.get("general.db")))
- File.write(File.expand_path(config.get("general.db")), "", mode: "w")
- puts "Created SQLite file in #{File.expand_path(config.get("general.db")).colorize.mode(:bold)}"
+ File.write(File.expand_path(SniplineCli.config_file, home: true), toml_contents, mode: "w")
+ puts "Configuration saved to #{File.expand_path(SniplineCli.config_file, home: true).colorize.mode(:bold)}"
+ unless File.exists?(File.expand_path(config.get("general.db"), home: true))
+ File.write(File.expand_path(config.get("general.db"), home: true), "", mode: "w")
+ puts "Created SQLite file in #{File.expand_path(config.get("general.db"), home: true).colorize.mode(:bold)}"
end
puts ""
puts "Run #{"snipcli new".colorize.mode(:bold)} to create your first snippet"
diff --git a/src/snipline_cli/commands/login.cr b/src/snipline_cli/commands/login.cr
index 5bdd5d7..04938a1 100644
--- a/src/snipline_cli/commands/login.cr
+++ b/src/snipline_cli/commands/login.cr
@@ -60,8 +60,8 @@ module SniplineCli
TOML
CreateConfigDirectory.run(SniplineCli.config_file)
- File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w")
- puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}"
+ File.write(File.expand_path(SniplineCli.config_file, home: true), toml_contents, mode: "w")
+ puts "Configuration saved to #{File.expand_path(SniplineCli.config_file, home: true).colorize.mode(:bold)}"
puts "To fetch your snippets run #{"snipcli sync".colorize.mode(:bold)}"
end
rescue ex : Crest::NotFound
diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr
index 91793e3..0ae04e7 100644
--- a/src/snipline_cli/commands/new.cr
+++ b/src/snipline_cli/commands/new.cr
@@ -11,7 +11,7 @@ module SniplineCli
def run
config = SniplineCli.config
- unless File.exists?(File.expand_path("#{config.get("general.db")}"))
+ unless File.exists?(File.expand_path("#{config.get("general.db")}", home: true))
abort("Database does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red))
end
Migrator.run
@@ -21,7 +21,7 @@ module SniplineCli
temp_file = TempSnippetEditorFile.new
temp_file.create
loop do
- system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}")
+ system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}", home :true)
snippet_attributes = temp_file.read
snippet = Snippet.new
diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr
index 9b91a76..fa21339 100644
--- a/src/snipline_cli/commands/search.cr
+++ b/src/snipline_cli/commands/search.cr
@@ -46,13 +46,13 @@ module SniplineCli
end
query = Crecto::Repo::Query.new
query = if flags.field
- # query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term)
- query
- else
- wildcard_query = "%#{lowered_search_term}%"
- query.where("snippets.name LIKE ?", wildcard_query).or_where("snippets.real_command LIKE ?", wildcard_query).or_where("snippets.snippet_alias LIKE ?", wildcard_query).or_where("snippets.tags LIKE ?", wildcard_query)
- end
- Repo.all(Snippet, query)
+ # query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term)
+ query
+ else
+ wildcard_query = "%#{lowered_search_term}%"
+ query.where("snippets.name LIKE ?", wildcard_query).or_where("snippets.real_command LIKE ?", wildcard_query).or_where("snippets.snippet_alias LIKE ?", wildcard_query).or_where("snippets.tags LIKE ?", wildcard_query)
+ end
+ Repo.all(Snippet, query)
# snippets.select! { |i|
# if field = flags.field
# i.value_for_attribute(field).downcase.includes?(lowered_search_term)
diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr
index 635eeed..7729479 100644
--- a/src/snipline_cli/commands/sync.cr
+++ b/src/snipline_cli/commands/sync.cr
@@ -19,9 +19,9 @@ module SniplineCli
property file : (StoreSnippets) = StoreSnippets.new
def run
- puts "Migrating Database..." if flags.verbose
+ puts "Migrating Database..." if flags.verbose
Migrator.run
- puts "Syncing snippets..." if flags.verbose
+ puts "Syncing snippets..." if flags.verbose
config = SniplineCli.config
if config.get("api.token") == ""
abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}")
@@ -50,22 +50,22 @@ module SniplineCli
local_snippet.snippet_alias = cs.not_nil!.snippet_alias
local_snippet.is_synced = true
local_snippet.is_pinned = cs.not_nil!.is_pinned
- Repo.update(local_snippet) unless flags.dry_run
+ Repo.update(local_snippet) unless flags.dry_run
synced_to_local_count = synced_to_local_count + 1
else
# local has updated without sending to snipline cloud - time to update the cloud version
- @snipline_api.update(local_snippet) unless flags.dry_run
+ @snipline_api.update(local_snippet) unless flags.dry_run
synced_to_cloud_count = synced_to_cloud_count + 1
end
end
}
- puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green)
+ puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green)
puts "Synced #{synced_to_cloud_count} from local database to Snipline Cloud".colorize(:green)
end
def delete_orphan_snippets(cloud_snippets)
# if snippet cloud_id exists locally but not in cloud
- puts "Cleaning up snippets that are no longer in Snipline Cloud..." if (flags.verbose || flags.dry_run)
+ puts "Cleaning up snippets that are no longer in Snipline Cloud..." if (flags.verbose || flags.dry_run)
local_snippets = LoadSnippets.run.select { |ls| !ls.cloud_id.nil? }
orphans = [] of Snippet
cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id }
@@ -74,8 +74,8 @@ module SniplineCli
end
orphans.each do |ls|
# delete snippets
- puts "Deleting #{ls.name}".colorize(:green) if (flags.verbose || flags.dry_run)
- Repo.delete(ls) unless flags.dry_run
+ puts "Deleting #{ls.name}".colorize(:green) if (flags.verbose || flags.dry_run)
+ Repo.delete(ls) unless flags.dry_run
end
end
@@ -94,7 +94,7 @@ module SniplineCli
difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids)
end
difference.each do |s|
- puts "Storing #{s.attributes.name} from Snipline Cloud".colorize(:green) if (flags.verbose || flags.dry_run)
+ puts "Storing #{s.attributes.name} from Snipline Cloud".colorize(:green) if (flags.verbose || flags.dry_run)
snippet = Snippet.new
snippet.name = s.name
snippet.cloud_id = s.id
@@ -105,7 +105,7 @@ module SniplineCli
snippet.is_pinned = s.is_pinned
snippet.is_synced = true
changeset = Snippet.changeset(snippet)
- Repo.insert(changeset) unless flags.dry_run
+ Repo.insert(changeset) unless flags.dry_run
# local_snippets << s
end
# @file.store(local_snippets.to_json) unless difference.size == 0
@@ -125,11 +125,11 @@ module SniplineCli
def sync_unsynced_snippets
local_snippets = LoadSnippets.run
local_snippets.select { |s| s.cloud_id.nil? }.each do |snippet|
- puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..." if (flags.verbose || flags.dry_run)
+ puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..." if (flags.verbose || flags.dry_run)
begin
- cloud_snippet = SyncSnippetToSnipline.handle(snippet) unless flags.dry_run
+ cloud_snippet = SyncSnippetToSnipline.handle(snippet) unless flags.dry_run
update_local_snippet_id(cloud_snippet, snippet)
- puts "#{snippet.name.colorize(:green).mode(:bold)} #{"saved successfully!".colorize(:green)}" if (flags.verbose || flags.dry_run)
+ puts "#{snippet.name.colorize(:green).mode(:bold)} #{"saved successfully!".colorize(:green)}" if (flags.verbose || flags.dry_run)
rescue ex : Crest::UnprocessableEntity
resp = SnippetErrorResponse.from_json(ex.response.not_nil!.body)
puts "Failed: #{resp.errors.first.source["pointer"].gsub("/data/attributes/", "")} #{resp.errors.first.detail}".colorize(:red)
@@ -140,12 +140,12 @@ module SniplineCli
end
def update_local_snippet_id(cloud_snippet, local_snippet)
- if cloud_snippet
- local_snippet.cloud_id = cloud_snippet.id
- local_snippet.is_synced = true
- Repo.update(local_snippet) unless flags.dry_run
- puts "Updated cloud_id of #{local_snippet.name.as(String)} to #{cloud_snippet.id}" if (flags.verbose || flags.dry_run)
- end
+ if cloud_snippet
+ local_snippet.cloud_id = cloud_snippet.id
+ local_snippet.is_synced = true
+ Repo.update(local_snippet) unless flags.dry_run
+ puts "Updated cloud_id of #{local_snippet.name.as(String)} to #{cloud_snippet.id}" if (flags.verbose || flags.dry_run)
+ end
end
end
diff --git a/src/snipline_cli/config.cr b/src/snipline_cli/config.cr
index 44d4e54..530ad25 100644
--- a/src/snipline_cli/config.cr
+++ b/src/snipline_cli/config.cr
@@ -16,8 +16,8 @@ module SniplineCli
# When a new instance is created the config file is read and parsed.
def initialize
- if File.exists?(File.expand_path(SniplineCli.config_file))
- config_file = File.read(File.expand_path(SniplineCli.config_file))
+ if File.exists?(File.expand_path(SniplineCli.config_file, home: true))
+ config_file = File.read(File.expand_path(SniplineCli.config_file, home: true))
toml = TOML.parse(config_file)
@api = toml["api"].as(Hash(String, TOML::Type))
@general = toml["general"].as(Hash(String, TOML::Type))
diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr
index 4cb08a5..7f2d2aa 100644
--- a/src/snipline_cli/models/snippet.cr
+++ b/src/snipline_cli/models/snippet.cr
@@ -112,7 +112,7 @@ module SniplineCli::Models
name || ""
when "tags"
if !tags.nil?
- tags
+ tags
else
""
end
diff --git a/src/snipline_cli/services/create_config_directory.cr b/src/snipline_cli/services/create_config_directory.cr
index 468339b..10ce3fa 100644
--- a/src/snipline_cli/services/create_config_directory.cr
+++ b/src/snipline_cli/services/create_config_directory.cr
@@ -2,7 +2,7 @@ module SniplineCli
module Services
class CreateConfigDirectory
def self.run(file)
- directory_name = File.expand_path(File.dirname(file))
+ directory_name = File.expand_path(File.dirname(file), home: true)
unless File.directory?(directory_name)
SniplineCli.log.debug("Making config directory #{directory_name}")
Dir.mkdir(directory_name)
diff --git a/src/snipline_cli/services/delete_snippet.cr b/src/snipline_cli/services/delete_snippet.cr
index 9095fa5..ead32f3 100644
--- a/src/snipline_cli/services/delete_snippet.cr
+++ b/src/snipline_cli/services/delete_snippet.cr
@@ -7,22 +7,21 @@ module SniplineCli
# ```
class DeleteSnippet
def self.run(snippet : Snippet, input, output)
- log = SniplineCli.log
- puts "#{"Are you sure you want to permanently delete".colorize(:red)} #{snippet.name.colorize(:red).mode(:bold)}#{"? (y/N)".colorize(:red)}"
- answer = gets
- if ["Y", "y", "yes"].includes?(answer)
- delete_snippet(snippet)
- end
+ puts "#{"Are you sure you want to permanently delete".colorize(:red)} #{snippet.name.colorize(:red).mode(:bold)}#{"? (y/N)".colorize(:red)}"
+ answer = gets
+ if ["Y", "y", "yes"].includes?(answer)
+ delete_snippet(snippet)
+ end
end
- def self.delete_snippet(snippet)
+ def self.delete_snippet(snippet)
config = SniplineCli.config
- if snippet.cloud_id && config.get("api.token") != ""
- SniplineApi.new.delete(snippet)
- end
- Repo.delete(snippet)
- puts "Deleted #{snippet.name}".colorize(:green)
- end
+ if snippet.cloud_id && config.get("api.token") != ""
+ SniplineApi.new.delete(snippet)
+ end
+ Repo.delete(snippet)
+ puts "Deleted #{snippet.name}".colorize(:green)
+ end
end
end
end
diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr
index a57f250..2290fb9 100644
--- a/src/snipline_cli/services/display_results.cr
+++ b/src/snipline_cli/services/display_results.cr
@@ -25,68 +25,68 @@ module SniplineCli::Services
@search.window.get_char do |ch|
# @search.write(ch.ord.to_s)
- # @search.write(ch.inspect)
+ # @search.write(ch.inspect)
# break unless ch.is_a?(Char) || ch == NCurses::Key::Up || ch == NCurses::Key::Down
- case ch
- when LibNCurses::Key
- run_command_key(ch)
- when Char
- codepoint = ch.ord
- break if codepoint == 17 # C+q - quit
- break if run_character_key(ch, codepoint) == false
- @left_pane.filter(@search.search_text)
- end
- @search.window.refresh
- end
+ case ch
+ when LibNCurses::Key
+ run_command_key(ch)
+ when Char
+ codepoint = ch.ord
+ break if codepoint == 17 # C+q - quit
+ break if run_character_key(ch, codepoint) == false
+ @left_pane.filter(@search.search_text)
+ end
+ @search.window.refresh
+ end
NCurses.clear
NCurses.end
end
- def run_character_key(ch, codepoint)
- if codepoint == 127
- @search.delete
- @left_pane.filter(@search.search_text)
- refresh_right_pane
- elsif codepoint == 75 # S+k - up
- @left_pane.select_higher
- refresh_right_pane
- elsif codepoint == 74 # C+j / S+j - down
- @left_pane.select_lower
- refresh_right_pane
- elsif codepoint == 67 || codepoint == 10 # Shift+c / Enter - copy
- output = build_snippet
- copy_snippet(output)
- return false
- elsif codepoint == 68 # Shift+d - delete
- delete_snippet
- return false
- elsif codepoint == 69 # Shift+e - edit
- edit_snippet
- return false
- elsif codepoint == 82 # Shift+r - run
- output = build_snippet
- run_snippet(output)
- return false
- else
- @search.write(ch)
- @left_pane.filter(@search.search_text)
- refresh_right_pane
- end
- return true
- end
+ def run_character_key(ch, codepoint)
+ if codepoint == 127
+ @search.delete
+ @left_pane.filter(@search.search_text)
+ refresh_right_pane
+ elsif codepoint == 75 # S+k - up
+ @left_pane.select_higher
+ refresh_right_pane
+ elsif codepoint == 74 # C+j / S+j - down
+ @left_pane.select_lower
+ refresh_right_pane
+ elsif codepoint == 67 || codepoint == 10 # Shift+c / Enter - copy
+ output = build_snippet
+ copy_snippet(output)
+ return false
+ elsif codepoint == 68 # Shift+d - delete
+ delete_snippet
+ return false
+ elsif codepoint == 69 # Shift+e - edit
+ edit_snippet
+ return false
+ elsif codepoint == 82 # Shift+r - run
+ output = build_snippet
+ run_snippet(output)
+ return false
+ else
+ @search.write(ch)
+ @left_pane.filter(@search.search_text)
+ refresh_right_pane
+ end
+ true
+ end
- def run_command_key(ch)
- case ch.value
- when 27
- # @search.write("d")
- @left_pane.select_lower
- refresh_right_pane
- when 28
- @search.write("u")
- else
- @search.write("unknown #{ch}")
- end
- end
+ def run_command_key(ch)
+ case ch.value
+ when 27
+ # @search.write("d")
+ @left_pane.select_lower
+ refresh_right_pane
+ when 28
+ @search.write("u")
+ else
+ @search.write("unknown #{ch}")
+ end
+ end
def refresh_right_pane
if @left_pane.selected_index < @left_pane.results.size
@@ -135,6 +135,7 @@ module SniplineCli::Services
NCurses.end
EditSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT)
end
+
def delete_snippet
NCurses.clear
NCurses.end
diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr
index 066c7b3..0257193 100644
--- a/src/snipline_cli/services/edit_snippet.cr
+++ b/src/snipline_cli/services/edit_snippet.cr
@@ -13,7 +13,7 @@ module SniplineCli
temp_file = TempSnippetEditorFile.new(snippet)
temp_file.create
loop do
- system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}")
+ system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)}")
snippet_attributes = temp_file.read
snippet.name = snippet_attributes.name
snippet.real_command = snippet_attributes.real_command
diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr
index 91de8d7..b478ba5 100644
--- a/src/snipline_cli/services/load_snippets.cr
+++ b/src/snipline_cli/services/load_snippets.cr
@@ -10,11 +10,11 @@ module SniplineCli
config = SniplineCli.config
log = SniplineCli.log
log.info("Looking through file #{config.get("general.db")}")
- unless File.readable?(File.expand_path(config.get("general.db")))
+ unless File.readable?(File.expand_path(config.get("general.db"), home: true))
log.warn("Could not read #{config.get("general.db")}")
abort("Run #{"snipline-cli sync".colorize(:green)} first")
end
- # File.open(File.expand_path(config.get("general.db"))) do |file|
+ # File.open(File.expand_path(config.get("general.db"), home: true)) do |file|
# snippets = Array(Snippet).from_json(file)
# end
Repo.all(Snippet)
diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr
index 312990c..5f3ee52 100644
--- a/src/snipline_cli/services/migrator.cr
+++ b/src/snipline_cli/services/migrator.cr
@@ -4,8 +4,8 @@ require "sqlite3"
module SniplineCli::Services
class Migrator
def self.run
- File.write(File.expand_path("~/.config/snipline/snipline.db"), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db"))
- DB.open "sqlite3:#{File.expand_path("~/.config/snipline/snipline.db")}" do |db|
+ File.write(File.expand_path("~/.config/snipline/snipline.db", home: true), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db", home: true))
+ DB.open "sqlite3:#{File.expand_path("~/.config/snipline/snipline.db", home: true)}" do |db|
db.exec "create table if not exists snippets (
local_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
cloud_id TEXT NULL,
diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr
index d7eced5..2795735 100644
--- a/src/snipline_cli/services/search_snippets.cr
+++ b/src/snipline_cli/services/search_snippets.cr
@@ -17,37 +17,37 @@ module SniplineCli::Services
unless search_term.empty?
lowered_search_term = search_term.downcase
results = results.select do |i|
- snippet_has_search_term(i, lowered_search_term)
+ snippet_has_search_term(i, lowered_search_term)
end
end
sort_results(results, search_term)
end
- def snippet_has_search_term(i, lowered_search_term)
- if i.tags.is_a?(String) && i.tags.as(String).split(",").includes?(lowered_search_term)
- true
- elsif FuzzyMatch::Simple.new(lowered_search_term, i.name.as(String).downcase).matches?
- true
- elsif i.real_command.as(String).downcase.includes?(lowered_search_term)
- true
- elsif i.snippet_alias.is_a?(String) && i.snippet_alias.as(String).downcase.includes?(lowered_search_term)
- true
- else
- false
- end
- end
+ def snippet_has_search_term(i, lowered_search_term)
+ if i.tags.is_a?(String) && i.tags.as(String).split(",").includes?(lowered_search_term)
+ true
+ elsif FuzzyMatch::Simple.new(lowered_search_term, i.name.as(String).downcase).matches?
+ true
+ elsif i.real_command.as(String).downcase.includes?(lowered_search_term)
+ true
+ elsif i.snippet_alias.is_a?(String) && i.snippet_alias.as(String).downcase.includes?(lowered_search_term)
+ true
+ else
+ false
+ end
+ end
def sort_results(snippets, search_term)
snippets.sort { |snippet_a, snippet_b|
if snippet_a.is_pinned && snippet_b.is_pinned
- FuzzyMatch::Full.new(search_term, snippet_a.name.as(String)).score <=> FuzzyMatch::Full.new(search_term, snippet_b.name.as(String)).score
+ FuzzyMatch::Full.new(search_term, snippet_a.name.as(String)).score <=> FuzzyMatch::Full.new(search_term, snippet_b.name.as(String)).score
elsif snippet_a.is_pinned
-1
elsif snippet_b.is_pinned
1
else
- FuzzyMatch::Full.new(search_term, snippet_a.name.as(String)).score <=> FuzzyMatch::Full.new(search_term, snippet_b.name.as(String)).score
+ FuzzyMatch::Full.new(search_term, snippet_a.name.as(String)).score <=> FuzzyMatch::Full.new(search_term, snippet_b.name.as(String)).score
end
}
end
diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr
index afdcdc1..f7de554 100644
--- a/src/snipline_cli/services/snipline_api.cr
+++ b/src/snipline_cli/services/snipline_api.cr
@@ -86,22 +86,22 @@ module SniplineCli::Services
puts q.inspect
end
- def delete(snippet)
+ def delete(snippet)
config = SniplineCli.config
begin
- response = Crest.delete(
- "#{config.get("api.url")}/snippets/#{snippet.cloud_id}",
- headers: {
- # "Accept" => "application/vnd.api+json",
- "Authorization" => "Bearer #{config.get("api.token")}",
- },
- logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false
- )
- true
- rescue ex
- false
- end
- end
+ Crest.delete(
+ "#{config.get("api.url")}/snippets/#{snippet.cloud_id}",
+ headers: {
+ # "Accept" => "application/vnd.api+json",
+ "Authorization" => "Bearer #{config.get("api.token")}",
+ },
+ logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false
+ )
+ true
+ rescue ex
+ false
+ end
+ end
end
class SniplineApiTest
@@ -115,7 +115,7 @@ module SniplineCli::Services
def update(snippet : Snippet)
end
- def delete(snippet : Snippet)
- end
+ def delete(snippet : Snippet)
+ end
end
end
diff --git a/src/snipline_cli/services/store_snippets.cr b/src/snipline_cli/services/store_snippets.cr
index f31b0ab..88ceb3a 100644
--- a/src/snipline_cli/services/store_snippets.cr
+++ b/src/snipline_cli/services/store_snippets.cr
@@ -6,13 +6,13 @@ module SniplineCli::Services
# Takes an array of snippets and saves them to the `snippet.json` file.
def store(snippets)
config = SniplineCli.config
- directory = File.dirname(File.expand_path(config.get("general.file")))
+ directory = File.dirname(File.expand_path(config.get("general.file"), home: true))
unless File.directory?(directory)
puts "Creating #{directory} directory"
- Dir.mkdir(File.expand_path(directory))
+ Dir.mkdir(File.expand_path(directory, home: true))
end
- File.write(File.expand_path(config.get("general.file")), snippets, mode: "w")
- unless File.writable?(File.expand_path(config.get("general.file")))
+ File.write(File.expand_path(config.get("general.file"), home: true), snippets, mode: "w")
+ unless File.writable?(File.expand_path(config.get("general.file"), home: true))
raise Exception.new("Sync Failed: File not writable (#{config.get("general.file")}")
end
end
diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr
index 122c979..fb5166c 100644
--- a/src/snipline_cli/services/temp_snippet_editor_file.cr
+++ b/src/snipline_cli/services/temp_snippet_editor_file.cr
@@ -42,14 +42,14 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"}
def create
config = SniplineCli.config
- unless File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"))
- File.write(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"), @template)
+ unless File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true))
+ File.write(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true), @template)
end
end
def read
config = SniplineCli.config
- toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml")))
+ toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)))
SnippetAttributeParser.new(
name: toml["name"].as(String),
real_command: toml["real_command"].as(String),
@@ -71,14 +71,14 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"}
def sync_to_cloud?
config = SniplineCli.config
- toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml")))
+ toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)))
toml["sync_to_cloud"].as(Bool)
end
def delete
config = SniplineCli.config
- if File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"))
- File.delete(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"))
+ if File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true))
+ File.delete(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true))
end
end
end
From e572de941e7cd683e13f1be36a49b671a677c426 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Mon, 16 Dec 2019 09:48:34 +0000
Subject: [PATCH 33/47] compatability updates
---
shard.lock | 16 ++++++++--------
shard.yml | 9 ++++++---
src/snipline_cli/commands/new.cr | 2 +-
src/snipline_cli/ncurses_windows/left_pane.cr | 2 +-
src/snipline_cli/services/display_results.cr | 4 ++--
5 files changed, 18 insertions(+), 15 deletions(-)
diff --git a/shard.lock b/shard.lock
index bc51b1a..cbffa29 100644
--- a/shard.lock
+++ b/shard.lock
@@ -2,27 +2,27 @@ version: 1.0
shards:
admiral:
github: jwaldrip/admiral.cr
- version: 1.8.0
+ version: 1.9.0
ameba:
github: veelenga/ameba
- version: 0.10.1
+ version: 0.11.0
crecto:
- github: Crecto/crecto
- version: 0.11.2
+ github: acoustep/crecto
+ commit: fcae1f96740970ddf33790bd825eaada30378d62
crest:
github: mamantoha/crest
- version: 0.22.0
+ version: 0.23.1
db:
github: crystal-lang/crystal-db
- version: 0.7.0
+ version: 0.8.0
fuzzy_match:
github: acoustep/fuzzy_match.cr
- commit: 24513474ea58e2ce97a2d34e8668947da8863965
+ commit: ce3bff7e29a5062190dcf8618de08072f11cab66
http-client-digest_auth:
github: mamantoha/http-client-digest_auth
@@ -34,7 +34,7 @@ shards:
sqlite3:
github: crystal-lang/crystal-sqlite3
- version: 0.14.0
+ version: 0.15.0
toml:
github: crystal-community/toml.cr
diff --git a/shard.yml b/shard.yml
index 34e0812..40a3905 100644
--- a/shard.yml
+++ b/shard.yml
@@ -8,7 +8,7 @@ targets:
cli2:
main: src/cli.cr
-crystal: 0.30.1
+crystal: 0.32.0
license: MIT
@@ -24,12 +24,15 @@ dependencies:
github: JohnDowson/ncurses
branch: borders_and_lines
crecto:
- github: Crecto/crecto
+ github: acoustep/crecto
+ branch: 0320compatability
sqlite3:
github: crystal-lang/crystal-sqlite3
+ version: ~> 0.15.0
fuzzy_match:
github: acoustep/fuzzy_match.cr
- version: ~> 0.2.0
+ branch: master
+ # version: ~> 0.2.0
development_dependencies:
diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr
index 0ae04e7..2f52ef2 100644
--- a/src/snipline_cli/commands/new.cr
+++ b/src/snipline_cli/commands/new.cr
@@ -21,7 +21,7 @@ module SniplineCli
temp_file = TempSnippetEditorFile.new
temp_file.create
loop do
- system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}", home :true)
+ system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)}")
snippet_attributes = temp_file.read
snippet = Snippet.new
diff --git a/src/snipline_cli/ncurses_windows/left_pane.cr b/src/snipline_cli/ncurses_windows/left_pane.cr
index 49a6318..668c39f 100644
--- a/src/snipline_cli/ncurses_windows/left_pane.cr
+++ b/src/snipline_cli/ncurses_windows/left_pane.cr
@@ -11,7 +11,7 @@ module SniplineCli::NCursesWindows
property results : Array(Snippet)
property snippets : Array(Snippet)
- def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of Snippet)
+ def initialize(header_footer_height : Int32, @left : Int32, @right : Int32, @snippets = [] of Snippet)
@results = @snippets
@searcher = SearchSnippets.new(@snippets)
diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr
index 2290fb9..baa0ff0 100644
--- a/src/snipline_cli/services/display_results.cr
+++ b/src/snipline_cli/services/display_results.cr
@@ -16,8 +16,8 @@ module SniplineCli::Services
header_footer_height = 1
@header = SniplineCli::NCursesWindows::Header.new(header_footer_height)
@footer = SniplineCli::NCursesWindows::Footer.new(header_footer_height)
- @left_pane = SniplineCli::NCursesWindows::LeftPane.new(header_footer_height + 1, left: 0, right: (NCurses.width / 2), snippets: results)
- @right_pane = SniplineCli::NCursesWindows::RightPane.new(header_footer_height + 1, left: (NCurses.width / 2), right: (NCurses.width / 2.0).ceil.to_i32)
+ @left_pane = SniplineCli::NCursesWindows::LeftPane.new(header_footer_height + 1, left: 0, right: (NCurses.width / 2).floor.to_i32, snippets: results)
+ @right_pane = SniplineCli::NCursesWindows::RightPane.new(header_footer_height + 1, left: (NCurses.width / 2).ceil.to_i32, right: (NCurses.width / 2.0).ceil.to_i32)
@search = SniplineCli::NCursesWindows::Search.new(header_footer_height)
@left_pane.filter("")
refresh_right_pane
From daf47a1bd3b723d7ad20e5f788c7581170eb83ff Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Mon, 16 Dec 2019 10:30:38 +0000
Subject: [PATCH 34/47] update shards
---
shard.lock | 4 ++--
shard.yml | 4 ++++
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/shard.lock b/shard.lock
index bc51b1a..b9a5ec5 100644
--- a/shard.lock
+++ b/shard.lock
@@ -2,7 +2,7 @@ version: 1.0
shards:
admiral:
github: jwaldrip/admiral.cr
- version: 1.8.0
+ version: 1.9.0
ameba:
github: veelenga/ameba
@@ -22,7 +22,7 @@ shards:
fuzzy_match:
github: acoustep/fuzzy_match.cr
- commit: 24513474ea58e2ce97a2d34e8668947da8863965
+ commit: ce3bff7e29a5062190dcf8618de08072f11cab66
http-client-digest_auth:
github: mamantoha/http-client-digest_auth
diff --git a/shard.yml b/shard.yml
index 9cc06d1..754d4c0 100644
--- a/shard.yml
+++ b/shard.yml
@@ -17,6 +17,7 @@ dependencies:
github: jwaldrip/admiral.cr
crest:
github: mamantoha/crest
+ version: ~> 0.22.0
toml:
github: crystal-community/toml.cr
branch: master
@@ -25,10 +26,13 @@ dependencies:
branch: borders_and_lines
crecto:
github: Crecto/crecto
+ version: ~> 0.11.0
sqlite3:
github: crystal-lang/crystal-sqlite3
+ version: ~> 0.14.0
fuzzy_match:
github: acoustep/fuzzy_match.cr
+ branch: master
development_dependencies:
From b5d33416ecb2d1067c32c1771b7d5801e2c6ea9b Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 18 Dec 2019 16:37:23 +0000
Subject: [PATCH 35/47] Update documentation
---
shard.yml | 2 +-
src/snipline_cli.cr | 2 +-
src/snipline_cli/commands/search.cr | 73 ++++++++++---------
src/snipline_cli/models/snippet.cr | 10 ++-
src/snipline_cli/models/snippet_param.cr | 3 +
.../models/snippet_password_param.cr | 3 +
src/snipline_cli/models/token.cr | 1 +
src/snipline_cli/ncurses_windows/footer.cr | 3 +
src/snipline_cli/ncurses_windows/header.cr | 1 +
src/snipline_cli/ncurses_windows/left_pane.cr | 3 +
.../ncurses_windows/multi_param.cr | 3 +
src/snipline_cli/ncurses_windows/param.cr | 3 +
.../ncurses_windows/right_pane.cr | 1 +
src/snipline_cli/ncurses_windows/search.cr | 1 +
.../parsers/snippet_attribute_parser.cr | 3 +
src/snipline_cli/parsers/snippet_parser.cr | 3 +
.../services/create_config_directory.cr | 1 +
src/snipline_cli/services/display_results.cr | 4 +-
.../services/documentation_formatter.cr | 4 +
src/snipline_cli/services/migrator.cr | 1 +
src/snipline_cli/services/search_snippets.cr | 2 +-
src/snipline_cli/services/setup_ncurses.cr | 1 +
.../services/sync_snippet_to_snipline.cr | 2 +-
.../services/temp_snippet_editor_file.cr | 2 +-
24 files changed, 87 insertions(+), 45 deletions(-)
diff --git a/shard.yml b/shard.yml
index 40a3905..3ebd92c 100644
--- a/shard.yml
+++ b/shard.yml
@@ -32,7 +32,7 @@ dependencies:
fuzzy_match:
github: acoustep/fuzzy_match.cr
branch: master
- # version: ~> 0.2.0
+ version: ~> 0.2.0
development_dependencies:
diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr
index 1608bdb..349e0f2 100644
--- a/src/snipline_cli.cr
+++ b/src/snipline_cli.cr
@@ -21,7 +21,7 @@ module Repo
config do |conf|
conf.adapter = Crecto::Adapters::SQLite3
- conf.database = File.expand_path("~/.config/snipline/snipline.db")
+ conf.database = File.expand_path("~/.config/snipline/snipline.db", home: true)
end
end
diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr
index fa21339..5c07b3b 100644
--- a/src/snipline_cli/commands/search.cr
+++ b/src/snipline_cli/commands/search.cr
@@ -35,43 +35,48 @@ module SniplineCli
def run
search_term : String = arguments.search_term || ""
- snippets = if search_term.empty?
- query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i)
- Repo.all(Snippet, query)
- else
- lowered_search_term = search_term.downcase
- if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!)
- puts "The search field entered does not exist."
- return
+ begin
+ snippets = if search_term.empty?
+ query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i)
+ Repo.all(Snippet, query)
+ else
+ lowered_search_term = search_term.downcase
+ if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!)
+ puts "The search field entered does not exist."
+ return
+ end
+ query = Crecto::Repo::Query.new
+ query = if flags.field
+ # query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term)
+ query
+ else
+ wildcard_query = "%#{lowered_search_term}%"
+ query.where("snippets.name LIKE ?", wildcard_query).or_where("snippets.real_command LIKE ?", wildcard_query).or_where("snippets.snippet_alias LIKE ?", wildcard_query).or_where("snippets.tags LIKE ?", wildcard_query)
+ end
+ Repo.all(Snippet, query)
+ # snippets.select! { |i|
+ # if field = flags.field
+ # i.value_for_attribute(field).downcase.includes?(lowered_search_term)
+ # else
+ # if !i.tags.nil?
+ # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term)
+ # else
+ # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term)
+ # end
+ # end
+ # }
end
- query = Crecto::Repo::Query.new
- query = if flags.field
- # query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term)
- query
- else
- wildcard_query = "%#{lowered_search_term}%"
- query.where("snippets.name LIKE ?", wildcard_query).or_where("snippets.real_command LIKE ?", wildcard_query).or_where("snippets.snippet_alias LIKE ?", wildcard_query).or_where("snippets.tags LIKE ?", wildcard_query)
- end
- Repo.all(Snippet, query)
- # snippets.select! { |i|
- # if field = flags.field
- # i.value_for_attribute(field).downcase.includes?(lowered_search_term)
- # else
- # if !i.tags.nil?
- # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term)
- # else
- # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term)
- # end
- # end
- # }
- end
- # results = sort_results(snippets, flags.limit)
+ # results = sort_results(snippets, flags.limit)
- # unless results.size > 0
- # puts "No results found."
- # exit(0)
- # end
+ # unless results.size > 0
+ # puts "No results found."
+ # exit(0)
+ # end
+ rescue ex
+ puts "Error: #{ex.inspect}".colorize(:red)
+ abort
+ end
DisplayResults.new(snippets)
end
diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr
index 7f2d2aa..9783127 100644
--- a/src/snipline_cli/models/snippet.cr
+++ b/src/snipline_cli/models/snippet.cr
@@ -1,4 +1,5 @@
module SniplineCli::Models
+ # A Snippet which is usually retrieved from the SQLite database
class Snippet < Crecto::Model
set_created_at_field :inserted_at
@@ -20,9 +21,7 @@ module SniplineCli::Models
unique_constraint :snippet_alias
unique_constraint :name
- #
# Params such as variables or select that require input from the user
- #
def interactive_params : Array(SnippetParam)
temp_array = [] of SnippetParam
@@ -57,9 +56,9 @@ module SniplineCli::Models
temp_array
end
+ # Uninteractive params currently consist of password params.
#
- # E.g. Passwords
- #
+ # These are replaced on copy/run with no user interaction.
def uninteractive_params : Array(SnippetPasswordParam)
temp_array = [] of SnippetPasswordParam
real_command.as(String).scan(/#password\{\[(.+?)\]\}/) do |m|
@@ -75,10 +74,12 @@ module SniplineCli::Models
temp_array
end
+ # Checks to see if the snippet has any parameters
def has_params
interactive_params.size > 0 || uninteractive_params.size > 0
end
+ # Converts the snippet to a more human-readable format.
def preview_command
unless has_params()
return real_command
@@ -102,6 +103,7 @@ module SniplineCli::Models
temp_command
end
+ # Helper method for getting the value of a snippet attribute
def value_for_attribute(attribute : String)
case attribute
when "alias"
diff --git a/src/snipline_cli/models/snippet_param.cr b/src/snipline_cli/models/snippet_param.cr
index 4f798fb..22a6328 100644
--- a/src/snipline_cli/models/snippet_param.cr
+++ b/src/snipline_cli/models/snippet_param.cr
@@ -1,4 +1,7 @@
module SniplineCli::Models
+ # A single dynamic parameter which is apart of a Snippet
+ #
+ # When a snippet includes the text `#{[Param=value]}` or #{[Param]}` this becomes a parameter.
struct SnippetParam
property name : String
property default_value : String
diff --git a/src/snipline_cli/models/snippet_password_param.cr b/src/snipline_cli/models/snippet_password_param.cr
index 4d6d25e..08cfc3b 100644
--- a/src/snipline_cli/models/snippet_password_param.cr
+++ b/src/snipline_cli/models/snippet_password_param.cr
@@ -1,4 +1,7 @@
module SniplineCli::Models
+ # A password parameter of a snippet.
+ #
+ # When a snippet has the text `#password{[Name]}` it becomes a password parameter
struct SnippetPasswordParam
property id : String
property length : UInt32 | UInt8
diff --git a/src/snipline_cli/models/token.cr b/src/snipline_cli/models/token.cr
index 6da1769..6fdeaa5 100644
--- a/src/snipline_cli/models/token.cr
+++ b/src/snipline_cli/models/token.cr
@@ -1,6 +1,7 @@
require "json"
module SniplineCli::Models
+ # Used for parsing authentication tokens from the API
class Token
include JSON::Serializable
diff --git a/src/snipline_cli/ncurses_windows/footer.cr b/src/snipline_cli/ncurses_windows/footer.cr
index 3808e7d..77f3137 100644
--- a/src/snipline_cli/ncurses_windows/footer.cr
+++ b/src/snipline_cli/ncurses_windows/footer.cr
@@ -1,4 +1,7 @@
module SniplineCli::NCursesWindows
+ # The bottom element of the search window.
+ #
+ # This includes keyboard shortcuts for navigating the TUI
class Footer
property window
diff --git a/src/snipline_cli/ncurses_windows/header.cr b/src/snipline_cli/ncurses_windows/header.cr
index 86dc098..444049b 100644
--- a/src/snipline_cli/ncurses_windows/header.cr
+++ b/src/snipline_cli/ncurses_windows/header.cr
@@ -1,4 +1,5 @@
module SniplineCli::NCursesWindows
+ # The top element of the search interface
class Header
property window
diff --git a/src/snipline_cli/ncurses_windows/left_pane.cr b/src/snipline_cli/ncurses_windows/left_pane.cr
index 668c39f..ad9fa92 100644
--- a/src/snipline_cli/ncurses_windows/left_pane.cr
+++ b/src/snipline_cli/ncurses_windows/left_pane.cr
@@ -1,6 +1,9 @@
include SniplineCli::Models
module SniplineCli::NCursesWindows
+ # The left panel of the search interface which lists snippets
+ #
+ # When the `selected_index` is updated the highlighted snippet is changed.
class LeftPane
property window
property border
diff --git a/src/snipline_cli/ncurses_windows/multi_param.cr b/src/snipline_cli/ncurses_windows/multi_param.cr
index 5cba19f..09d0792 100644
--- a/src/snipline_cli/ncurses_windows/multi_param.cr
+++ b/src/snipline_cli/ncurses_windows/multi_param.cr
@@ -1,4 +1,7 @@
module SniplineCli::NCursesWindows
+ # The NCurses window for choosing a multi-select parameter.
+ #
+ # This window will show when a user has chosen a snippet with multi-select parameter. They will then select from the available choices before moving to the next parameter or finishing the copy/run process.
class MultiParamPane
property window
property border
diff --git a/src/snipline_cli/ncurses_windows/param.cr b/src/snipline_cli/ncurses_windows/param.cr
index 243e259..23ac2c1 100644
--- a/src/snipline_cli/ncurses_windows/param.cr
+++ b/src/snipline_cli/ncurses_windows/param.cr
@@ -1,4 +1,7 @@
module SniplineCli::NCursesWindows
+ # This window will show when a user has chosen a snippet to run/copy.
+ #
+ # They will enter text or use the default value provided by the snippet.
class ParamPane
property window
property border
diff --git a/src/snipline_cli/ncurses_windows/right_pane.cr b/src/snipline_cli/ncurses_windows/right_pane.cr
index 55b1107..f7308d4 100644
--- a/src/snipline_cli/ncurses_windows/right_pane.cr
+++ b/src/snipline_cli/ncurses_windows/right_pane.cr
@@ -1,4 +1,5 @@
module SniplineCli::NCursesWindows
+ # This NCurses window is the detail view which shows the attributes of the currently highlighted snippet.
class RightPane
property window
property border
diff --git a/src/snipline_cli/ncurses_windows/search.cr b/src/snipline_cli/ncurses_windows/search.cr
index 708f104..f635da2 100644
--- a/src/snipline_cli/ncurses_windows/search.cr
+++ b/src/snipline_cli/ncurses_windows/search.cr
@@ -1,4 +1,5 @@
module SniplineCli::NCursesWindows
+ # This view appears above the left and right panes and is where the user refines their snippet search
class Search
property window
property search_text : String = ""
diff --git a/src/snipline_cli/parsers/snippet_attribute_parser.cr b/src/snipline_cli/parsers/snippet_attribute_parser.cr
index 7e539f9..600c9dd 100644
--- a/src/snipline_cli/parsers/snippet_attribute_parser.cr
+++ b/src/snipline_cli/parsers/snippet_attribute_parser.cr
@@ -1,6 +1,9 @@
require "json"
module SniplineCli::Parsers
+ # Used for parsing JSON-API spec attributes.
+ #
+ # When a list of snippets comes from the API, there is an `attribute` attribute which contains most of the snippet properties (except id).
class SnippetAttributeParser
include JSON::Serializable
diff --git a/src/snipline_cli/parsers/snippet_parser.cr b/src/snipline_cli/parsers/snippet_parser.cr
index e71e623..9753a8e 100644
--- a/src/snipline_cli/parsers/snippet_parser.cr
+++ b/src/snipline_cli/parsers/snippet_parser.cr
@@ -1,6 +1,9 @@
require "json"
module SniplineCli::Parsers
+ # This is used for parsing snippets from the JSON API.
+ #
+ # Note how most attributes are contained within the `attribute` attribute. This is to conform to the JSON-API specification.
class SnippetParser
JSON.mapping({
id: String | Nil,
diff --git a/src/snipline_cli/services/create_config_directory.cr b/src/snipline_cli/services/create_config_directory.cr
index 10ce3fa..2c03135 100644
--- a/src/snipline_cli/services/create_config_directory.cr
+++ b/src/snipline_cli/services/create_config_directory.cr
@@ -1,5 +1,6 @@
module SniplineCli
module Services
+ # Creates a config directory for storing configuration files for SnipCLI.
class CreateConfigDirectory
def self.run(file)
directory_name = File.expand_path(File.dirname(file), home: true)
diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr
index baa0ff0..b598469 100644
--- a/src/snipline_cli/services/display_results.cr
+++ b/src/snipline_cli/services/display_results.cr
@@ -16,8 +16,8 @@ module SniplineCli::Services
header_footer_height = 1
@header = SniplineCli::NCursesWindows::Header.new(header_footer_height)
@footer = SniplineCli::NCursesWindows::Footer.new(header_footer_height)
- @left_pane = SniplineCli::NCursesWindows::LeftPane.new(header_footer_height + 1, left: 0, right: (NCurses.width / 2).floor.to_i32, snippets: results)
- @right_pane = SniplineCli::NCursesWindows::RightPane.new(header_footer_height + 1, left: (NCurses.width / 2).ceil.to_i32, right: (NCurses.width / 2.0).ceil.to_i32)
+ @left_pane = SniplineCli::NCursesWindows::LeftPane.new(header_footer_height + 1, left: 0, right: (NCurses.width / 2).floor.to_i32, snippets: results)
+ @right_pane = SniplineCli::NCursesWindows::RightPane.new(header_footer_height + 1, left: (NCurses.width / 2).ceil.to_i32, right: (NCurses.width / 2.0).ceil.to_i32)
@search = SniplineCli::NCursesWindows::Search.new(header_footer_height)
@left_pane.filter("")
refresh_right_pane
diff --git a/src/snipline_cli/services/documentation_formatter.cr b/src/snipline_cli/services/documentation_formatter.cr
index 21fafb5..44f7b0f 100644
--- a/src/snipline_cli/services/documentation_formatter.cr
+++ b/src/snipline_cli/services/documentation_formatter.cr
@@ -1,20 +1,24 @@
module SniplineCli::Services
+ # For parsing the snippet documentation attribute in NCurses.
class DocumentationFormatter
property window
def initialize(@window : NCurses::Window | SniplineCli::NCursesWindows::MockWindow)
end
+ # When the snippet does not have any documentation provide a default value.
def to_ncurses(documentation : Nil)
@window.print("No documentation found")
end
+ # Format the documentation for NCurses given the terminal width.
def to_ncurses(documentation : String)
format_documentation(documentation, @window.width).each do |line|
@window.print("#{line}")
end
end
+ # Take the documentation text and split it onto newlines while keeping whole words in tact.
def format_documentation(documentation, width)
formatted_line = String::Builder.new
formatted_lines = [] of String
diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr
index 5f3ee52..b90a50d 100644
--- a/src/snipline_cli/services/migrator.cr
+++ b/src/snipline_cli/services/migrator.cr
@@ -2,6 +2,7 @@ require "db"
require "sqlite3"
module SniplineCli::Services
+ # Keeps the database structure up to date
class Migrator
def self.run
File.write(File.expand_path("~/.config/snipline/snipline.db", home: true), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db", home: true))
diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr
index 2795735..4374933 100644
--- a/src/snipline_cli/services/search_snippets.cr
+++ b/src/snipline_cli/services/search_snippets.cr
@@ -2,7 +2,7 @@ require "json"
require "fuzzy_match"
module SniplineCli::Services
- # For saving Snippets locally.
+ # Searches snippets.
class SearchSnippets
property snippets
diff --git a/src/snipline_cli/services/setup_ncurses.cr b/src/snipline_cli/services/setup_ncurses.cr
index 282bd6c..f4c2cd6 100644
--- a/src/snipline_cli/services/setup_ncurses.cr
+++ b/src/snipline_cli/services/setup_ncurses.cr
@@ -1,4 +1,5 @@
module SniplineCli::Services
+ # Sets up the Search NCurses TUI
class Setup
def initialize
NCurses.start
diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr
index d32c3f1..7a352cc 100644
--- a/src/snipline_cli/services/sync_snippet_to_snipline.cr
+++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr
@@ -1,7 +1,7 @@
require "json"
module SniplineCli::Services
- # For saving Snippets locally.
+ # For synving snippets to Snipline Cloud.
class SyncSnippetToSnipline
# Takes an array of snippets and saves them to the `snippet.json` file.
def self.handle(snippet)
diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr
index fb5166c..b7a7f0b 100644
--- a/src/snipline_cli/services/temp_snippet_editor_file.cr
+++ b/src/snipline_cli/services/temp_snippet_editor_file.cr
@@ -1,7 +1,7 @@
require "toml"
module SniplineCli::Services
- # For saving Snippets locally.
+ # Provides the users preferred text editor with a template for editing and adding new snippets.
class TempSnippetEditorFile
property snippet : Snippet | Nil
From 7c6327eb148ac1326e5627ce607a61b4db5b5fd9 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 19 Dec 2019 12:04:20 +0000
Subject: [PATCH 36/47] Import old JSON snippets on migration
---
README.md | 4 ++-
config.spec.toml | 10 +++++++
spec/services/migrator_spec.cr | 33 +++++++++++++++++++++
src/snipline_cli.cr | 2 +-
src/snipline_cli/commands/init.cr | 1 +
src/snipline_cli/config.cr | 9 ++++--
src/snipline_cli/services/migrator.cr | 42 +++++++++++++++++++++++++--
7 files changed, 94 insertions(+), 7 deletions(-)
create mode 100644 config.spec.toml
create mode 100644 spec/services/migrator_spec.cr
diff --git a/README.md b/README.md
index 3495842..df3df0a 100644
--- a/README.md
+++ b/README.md
@@ -110,8 +110,10 @@ env LOG_LEVEL=DEBUG ./snipcli search git
To change the config file location (For testing) use the `CONFIG_FILE` environment variable.
+There is an example already in place for testing located in `config.spec.toml`
+
```bash
-env CONFIG_FILE=./spec/fixtures/config.toml ./snipcli search git
+env CONFIG_FILE=./config.spec.toml crystal spec
```
## Contributing
diff --git a/config.spec.toml b/config.spec.toml
new file mode 100644
index 0000000..46f1a22
--- /dev/null
+++ b/config.spec.toml
@@ -0,0 +1,10 @@
+title = "Snipline"
+
+[api]
+url = "http://localhost:4001/api"
+token = ""
+
+[general]
+db = "./test.db"
+file = "./snippets.json"
+temp_dir = "./temp"
diff --git a/spec/services/migrator_spec.cr b/spec/services/migrator_spec.cr
new file mode 100644
index 0000000..ab811c1
--- /dev/null
+++ b/spec/services/migrator_spec.cr
@@ -0,0 +1,33 @@
+describe SniplineCli::Services::Migrator do
+
+ after_each do
+ if File.exists?("./snippets.json")
+ File.delete("./snippets.json")
+ end
+ if File.exists?("./test.db")
+ File.delete("./test.db")
+ end
+ end
+
+ it "should create and migrate a DB from scratch" do
+ File.exists?("./test.db").should eq(false)
+ SniplineCli::Services::Migrator.run
+ File.exists?("./test.db").should eq(true)
+ DB.open "sqlite3:./test.db" do |db|
+ db.scalar("select count(*) from snippets").should eq(0)
+ end
+ end
+
+ it "should import any previously created json snippets" do
+ # File.write("./snippets.json", File.read("./spec/fixtures/snippets.json"))
+ FileUtils.cp({"./spec/fixtures/snippets.json"}, "./")
+ File.exists?(File.expand_path(SniplineCli.config.get("general.file"), home: true)).should eq(true)
+ SniplineCli::Services::Migrator.run
+ DB.open "sqlite3:./test.db" do |db|
+ db.scalar("select count(*) from snippets").should eq(2)
+ end
+ #
+ File.exists?("./snippets.json").should eq(false)
+ end
+
+end
diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr
index 349e0f2..063669f 100644
--- a/src/snipline_cli.cr
+++ b/src/snipline_cli.cr
@@ -21,7 +21,7 @@ module Repo
config do |conf|
conf.adapter = Crecto::Adapters::SQLite3
- conf.database = File.expand_path("~/.config/snipline/snipline.db", home: true)
+ conf.database = File.expand_path(SniplineCli.config.get("general.db"), home: true)
end
end
diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr
index e3c5246..42698f8 100644
--- a/src/snipline_cli/commands/init.cr
+++ b/src/snipline_cli/commands/init.cr
@@ -20,6 +20,7 @@ module SniplineCli
[general]
db = "#{config.get("general.db")}"
+ file = "#{config.get("general.file")}"
temp_dir = "#{config.get("general.temp_dir")}"
TOML
diff --git a/src/snipline_cli/config.cr b/src/snipline_cli/config.cr
index 530ad25..9df3019 100644
--- a/src/snipline_cli/config.cr
+++ b/src/snipline_cli/config.cr
@@ -24,8 +24,9 @@ module SniplineCli
else
@api = {"url" => "https://api.snipline.io/api", "token" => ""}
@general = {
- "db" => "~/.config/snipline/snipline.db",
- "temp_dir" => "~/.config/snipline",
+ "db" => "~/.config/snipline/snipline.db",
+ "file" => "~/.config/snipline/snippets.json",
+ "temp_dir" => "~/.config/snipline",
}
end
end
@@ -38,7 +39,9 @@ module SniplineCli
when "api.token"
@api["token"].as(String)
when "general.db"
- @general["db"].as(String)
+ @general.has_key?("db") ? @general["db"].as(String) : "~/.config/snipline/snipline.db"
+ when "general.file"
+ @general.has_key?("file") ? @general["file"].as(String) : "~/.config/snipline/snippets.json"
when "general.temp_dir"
@general.has_key?("temp_dir") ? @general["temp_dir"].as(String) : "~/.config/snipline"
else
diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr
index b90a50d..ca161f2 100644
--- a/src/snipline_cli/services/migrator.cr
+++ b/src/snipline_cli/services/migrator.cr
@@ -1,12 +1,15 @@
require "db"
require "sqlite3"
+require "json"
+require "crecto"
module SniplineCli::Services
# Keeps the database structure up to date
class Migrator
def self.run
- File.write(File.expand_path("~/.config/snipline/snipline.db", home: true), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db", home: true))
- DB.open "sqlite3:#{File.expand_path("~/.config/snipline/snipline.db", home: true)}" do |db|
+ config = SniplineCli.config
+ File.write(File.expand_path(config.get("general.db"), home: true), "", mode: "w") unless File.exists?(File.expand_path(config.get("general.db"), home: true))
+ DB.open "sqlite3:#{File.expand_path(config.get("general.db"), home: true)}" do |db|
db.exec "create table if not exists snippets (
local_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
cloud_id TEXT NULL,
@@ -26,6 +29,41 @@ module SniplineCli::Services
rescue ex : DB::Error
db.exec "insert into schema (version) values (?)", 1
end
+
+ # Import 0.2.0 snippets from JSON file
+ if File.exists?(File.expand_path(config.get("general.file"), home: true))
+ # Get the snippets
+ json = File.read(File.expand_path(config.get("general.file"), home: true))
+ # import into DB
+ p "Importing JSON snippets into SQLite Database"
+ Array(SnippetParser).from_json(json).each do |snippet_json|
+ p "#{snippet_json.inspect}"
+ snippet = Snippet.new
+ snippet.cloud_id = snippet_json.id
+ snippet.name = snippet_json.name
+ snippet.real_command = snippet_json.real_command
+ snippet.documentation = snippet_json.documentation
+ snippet.tags = (snippet_json.tags) ? snippet_json.tags.not_nil!.join(",") : nil
+ snippet.snippet_alias = snippet_json.snippet_alias
+ snippet.is_pinned = snippet_json.is_pinned
+ snippet.is_synced = false
+ changeset = Snippet.changeset(snippet)
+ unless changeset.valid?
+ p "Could not import snippet #{snippet.name} from the old 0.2.0 JSON file to the new 0.3.0+ SQLite database.".colorize(:red)
+ p "Reasons given:".colorize(:red)
+ changeset.errors.each do |error|
+ puts "#{error.inspect}".colorize(:red)
+ end
+ p ""
+ p "Please fix this error and re-run the init command".colorize(:red)
+ abort()
+ end
+ if changeset.valid?
+ Repo.insert(changeset)
+ end
+ end
+ File.delete(File.expand_path(config.get("general.file"), home: true))
+ end
end
end
end
From 1fc5003b4f40ce3f79888ba16e7ad3e9b966b08b Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 19 Dec 2019 12:06:30 +0000
Subject: [PATCH 37/47] Upgrade to Crystal 0.32.1 and run formatter
---
.tool-versions | 2 +-
shard.yml | 2 +-
spec/services/migrator_spec.cr | 54 ++++++++++-----------
src/snipline_cli.cr | 2 +-
src/snipline_cli/config.cr | 10 ++--
src/snipline_cli/services/migrator.cr | 70 +++++++++++++--------------
6 files changed, 69 insertions(+), 71 deletions(-)
diff --git a/.tool-versions b/.tool-versions
index a2c7d83..4991363 100644
--- a/.tool-versions
+++ b/.tool-versions
@@ -1 +1 @@
-crystal 0.32.0
+crystal 0.32.1
diff --git a/shard.yml b/shard.yml
index 3ebd92c..2717f1c 100644
--- a/shard.yml
+++ b/shard.yml
@@ -8,7 +8,7 @@ targets:
cli2:
main: src/cli.cr
-crystal: 0.32.0
+crystal: 0.32.1
license: MIT
diff --git a/spec/services/migrator_spec.cr b/spec/services/migrator_spec.cr
index ab811c1..c8769c8 100644
--- a/spec/services/migrator_spec.cr
+++ b/spec/services/migrator_spec.cr
@@ -1,33 +1,31 @@
describe SniplineCli::Services::Migrator do
+ after_each do
+ if File.exists?("./snippets.json")
+ File.delete("./snippets.json")
+ end
+ if File.exists?("./test.db")
+ File.delete("./test.db")
+ end
+ end
- after_each do
- if File.exists?("./snippets.json")
- File.delete("./snippets.json")
- end
- if File.exists?("./test.db")
- File.delete("./test.db")
- end
- end
+ it "should create and migrate a DB from scratch" do
+ File.exists?("./test.db").should eq(false)
+ SniplineCli::Services::Migrator.run
+ File.exists?("./test.db").should eq(true)
+ DB.open "sqlite3:./test.db" do |db|
+ db.scalar("select count(*) from snippets").should eq(0)
+ end
+ end
- it "should create and migrate a DB from scratch" do
- File.exists?("./test.db").should eq(false)
- SniplineCli::Services::Migrator.run
- File.exists?("./test.db").should eq(true)
- DB.open "sqlite3:./test.db" do |db|
- db.scalar("select count(*) from snippets").should eq(0)
- end
- end
-
- it "should import any previously created json snippets" do
- # File.write("./snippets.json", File.read("./spec/fixtures/snippets.json"))
- FileUtils.cp({"./spec/fixtures/snippets.json"}, "./")
- File.exists?(File.expand_path(SniplineCli.config.get("general.file"), home: true)).should eq(true)
- SniplineCli::Services::Migrator.run
- DB.open "sqlite3:./test.db" do |db|
- db.scalar("select count(*) from snippets").should eq(2)
- end
+ it "should import any previously created json snippets" do
+ # File.write("./snippets.json", File.read("./spec/fixtures/snippets.json"))
+ FileUtils.cp({"./spec/fixtures/snippets.json"}, "./")
+ File.exists?(File.expand_path(SniplineCli.config.get("general.file"), home: true)).should eq(true)
+ SniplineCli::Services::Migrator.run
+ DB.open "sqlite3:./test.db" do |db|
+ db.scalar("select count(*) from snippets").should eq(2)
+ end
#
- File.exists?("./snippets.json").should eq(false)
- end
-
+ File.exists?("./snippets.json").should eq(false)
+ end
end
diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr
index 063669f..508d72a 100644
--- a/src/snipline_cli.cr
+++ b/src/snipline_cli.cr
@@ -21,7 +21,7 @@ module Repo
config do |conf|
conf.adapter = Crecto::Adapters::SQLite3
- conf.database = File.expand_path(SniplineCli.config.get("general.db"), home: true)
+ conf.database = File.expand_path(SniplineCli.config.get("general.db"), home: true)
end
end
diff --git a/src/snipline_cli/config.cr b/src/snipline_cli/config.cr
index 9df3019..e98554a 100644
--- a/src/snipline_cli/config.cr
+++ b/src/snipline_cli/config.cr
@@ -24,9 +24,9 @@ module SniplineCli
else
@api = {"url" => "https://api.snipline.io/api", "token" => ""}
@general = {
- "db" => "~/.config/snipline/snipline.db",
- "file" => "~/.config/snipline/snippets.json",
- "temp_dir" => "~/.config/snipline",
+ "db" => "~/.config/snipline/snipline.db",
+ "file" => "~/.config/snipline/snippets.json",
+ "temp_dir" => "~/.config/snipline",
}
end
end
@@ -39,9 +39,9 @@ module SniplineCli
when "api.token"
@api["token"].as(String)
when "general.db"
- @general.has_key?("db") ? @general["db"].as(String) : "~/.config/snipline/snipline.db"
+ @general.has_key?("db") ? @general["db"].as(String) : "~/.config/snipline/snipline.db"
when "general.file"
- @general.has_key?("file") ? @general["file"].as(String) : "~/.config/snipline/snippets.json"
+ @general.has_key?("file") ? @general["file"].as(String) : "~/.config/snipline/snippets.json"
when "general.temp_dir"
@general.has_key?("temp_dir") ? @general["temp_dir"].as(String) : "~/.config/snipline"
else
diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr
index ca161f2..aa84977 100644
--- a/src/snipline_cli/services/migrator.cr
+++ b/src/snipline_cli/services/migrator.cr
@@ -7,7 +7,7 @@ module SniplineCli::Services
# Keeps the database structure up to date
class Migrator
def self.run
- config = SniplineCli.config
+ config = SniplineCli.config
File.write(File.expand_path(config.get("general.db"), home: true), "", mode: "w") unless File.exists?(File.expand_path(config.get("general.db"), home: true))
DB.open "sqlite3:#{File.expand_path(config.get("general.db"), home: true)}" do |db|
db.exec "create table if not exists snippets (
@@ -30,40 +30,40 @@ module SniplineCli::Services
db.exec "insert into schema (version) values (?)", 1
end
- # Import 0.2.0 snippets from JSON file
- if File.exists?(File.expand_path(config.get("general.file"), home: true))
- # Get the snippets
- json = File.read(File.expand_path(config.get("general.file"), home: true))
- # import into DB
- p "Importing JSON snippets into SQLite Database"
- Array(SnippetParser).from_json(json).each do |snippet_json|
- p "#{snippet_json.inspect}"
- snippet = Snippet.new
- snippet.cloud_id = snippet_json.id
- snippet.name = snippet_json.name
- snippet.real_command = snippet_json.real_command
- snippet.documentation = snippet_json.documentation
- snippet.tags = (snippet_json.tags) ? snippet_json.tags.not_nil!.join(",") : nil
- snippet.snippet_alias = snippet_json.snippet_alias
- snippet.is_pinned = snippet_json.is_pinned
- snippet.is_synced = false
- changeset = Snippet.changeset(snippet)
- unless changeset.valid?
- p "Could not import snippet #{snippet.name} from the old 0.2.0 JSON file to the new 0.3.0+ SQLite database.".colorize(:red)
- p "Reasons given:".colorize(:red)
- changeset.errors.each do |error|
- puts "#{error.inspect}".colorize(:red)
- end
- p ""
- p "Please fix this error and re-run the init command".colorize(:red)
- abort()
- end
- if changeset.valid?
- Repo.insert(changeset)
- end
- end
- File.delete(File.expand_path(config.get("general.file"), home: true))
- end
+ # Import 0.2.0 snippets from JSON file
+ if File.exists?(File.expand_path(config.get("general.file"), home: true))
+ # Get the snippets
+ json = File.read(File.expand_path(config.get("general.file"), home: true))
+ # import into DB
+ p "Importing JSON snippets into SQLite Database"
+ Array(SnippetParser).from_json(json).each do |snippet_json|
+ p "#{snippet_json.inspect}"
+ snippet = Snippet.new
+ snippet.cloud_id = snippet_json.id
+ snippet.name = snippet_json.name
+ snippet.real_command = snippet_json.real_command
+ snippet.documentation = snippet_json.documentation
+ snippet.tags = (snippet_json.tags) ? snippet_json.tags.not_nil!.join(",") : nil
+ snippet.snippet_alias = snippet_json.snippet_alias
+ snippet.is_pinned = snippet_json.is_pinned
+ snippet.is_synced = false
+ changeset = Snippet.changeset(snippet)
+ unless changeset.valid?
+ p "Could not import snippet #{snippet.name} from the old 0.2.0 JSON file to the new 0.3.0+ SQLite database.".colorize(:red)
+ p "Reasons given:".colorize(:red)
+ changeset.errors.each do |error|
+ puts "#{error.inspect}".colorize(:red)
+ end
+ p ""
+ p "Please fix this error and re-run the init command".colorize(:red)
+ abort()
+ end
+ if changeset.valid?
+ Repo.insert(changeset)
+ end
+ end
+ File.delete(File.expand_path(config.get("general.file"), home: true))
+ end
end
end
end
From df6e81fa4dd1d57e698b56df2547506f7748f79d Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Mon, 23 Dec 2019 11:54:23 +0000
Subject: [PATCH 38/47] Update version number in Snapcraft yml file
---
snap/snapcraft.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index 25e66f1..531b14d 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -1,5 +1,5 @@
name: snipcli
-version: 0.2.0
+version: 0.3.0
summary: Shell Snippet organiser
description: >
Snipcli is a commandline interface for managing shell commands. Sync commands with your Snipline account or use in guest mode. Snipline lets you dynamically change command parameters easily so you never have to remember how to build a command.
From 3ad7e43c52454d2b194e4574a8b440784b6d440f Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Mon, 23 Dec 2019 11:59:01 +0000
Subject: [PATCH 39/47] Align example image to center
---
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index df3df0a..689f9ad 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,9 @@
Snipline CLI is the command-line tool for [Snipline](https://snipline.io).
-![SnipCLI Preview](https://f002.backblazeb2.com/file/snipline/2019-10-14+12.02.35.gif)
+
+
+
Snipline CLI allows you to organise your favourite shell commands from the terminal. It can optionally sync to your [Snipline](https://snipline.io) account.
From dc6b3a6605ac655eb2be3d9d079d007508122ca4 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Mon, 23 Dec 2019 12:01:11 +0000
Subject: [PATCH 40/47] Fix alignment on image
---
README.md | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 689f9ad..0e4245f 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,10 @@
# Snipline CLI
-Snipline CLI is the command-line tool for [Snipline](https://snipline.io).
+Snipline CLI allows you to organise and use your favourite shell commands from the terminal. It can optionally sync to your [Snipline](https://snipline.io) account.
-
+
-
-
-Snipline CLI allows you to organise your favourite shell commands from the terminal. It can optionally sync to your [Snipline](https://snipline.io) account.
+
## Installation
From e14921893d2897cfc1099e8d8a85677d091c4e2e Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Wed, 8 Jan 2020 14:24:59 +0000
Subject: [PATCH 41/47] Update fuzzy match
---
shard.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/shard.yml b/shard.yml
index bc0f7da..803ad0a 100644
--- a/shard.yml
+++ b/shard.yml
@@ -33,7 +33,7 @@ dependencies:
fuzzy_match:
github: acoustep/fuzzy_match.cr
branch: master
- version: ~> 0.2.0
+ version: ~> 0.3.0
development_dependencies:
From 2ddb474dd901ab79b2c65aa6001602a3a917ac8e Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 9 Jan 2020 09:21:55 +0000
Subject: [PATCH 42/47] Revert to Crystal 0.31.1
---
.tool-versions | 2 +-
shard.lock | 12 ++++++------
shard.yml | 7 +++----
spec/services/migrator_spec.cr | 2 +-
src/snipline_cli.cr | 2 +-
src/snipline_cli/commands/init.cr | 10 +++++-----
src/snipline_cli/commands/login.cr | 4 ++--
src/snipline_cli/commands/new.cr | 4 ++--
src/snipline_cli/commands/search.cr | 3 +--
src/snipline_cli/config.cr | 4 ++--
.../services/create_config_directory.cr | 2 +-
src/snipline_cli/services/edit_snippet.cr | 2 +-
src/snipline_cli/services/load_snippets.cr | 4 ++--
src/snipline_cli/services/migrator.cr | 13 ++++++-------
src/snipline_cli/services/store_snippets.cr | 8 ++++----
.../services/temp_snippet_editor_file.cr | 12 ++++++------
16 files changed, 44 insertions(+), 47 deletions(-)
diff --git a/.tool-versions b/.tool-versions
index 4991363..b8cd6d8 100644
--- a/.tool-versions
+++ b/.tool-versions
@@ -1 +1 @@
-crystal 0.32.1
+crystal 0.31.1
diff --git a/shard.lock b/shard.lock
index d3c88b4..a1ec933 100644
--- a/shard.lock
+++ b/shard.lock
@@ -9,8 +9,8 @@ shards:
version: 0.11.0
crecto:
- github: acoustep/crecto
- commit: fcae1f96740970ddf33790bd825eaada30378d62
+ github: Crecto/crecto
+ version: 0.11.2
crest:
github: mamantoha/crest
@@ -18,15 +18,15 @@ shards:
db:
github: crystal-lang/crystal-db
- version: 0.8.0
+ version: 0.7.0
fuzzy_match:
github: acoustep/fuzzy_match.cr
- commit: ce3bff7e29a5062190dcf8618de08072f11cab66
+ commit: fe9eed429118adc8f0f9f6c91de4f11cdca5840e
http-client-digest_auth:
github: mamantoha/http-client-digest_auth
- version: 0.2.0
+ version: 0.3.0
ncurses:
github: JohnDowson/ncurses
@@ -34,7 +34,7 @@ shards:
sqlite3:
github: crystal-lang/crystal-sqlite3
- version: 0.15.0
+ version: 0.14.0
toml:
github: crystal-community/toml.cr
diff --git a/shard.yml b/shard.yml
index 803ad0a..07327d8 100644
--- a/shard.yml
+++ b/shard.yml
@@ -8,7 +8,7 @@ targets:
cli2:
main: src/cli.cr
-crystal: 0.32.1
+crystal: 0.31.1
license: MIT
@@ -25,11 +25,10 @@ dependencies:
github: JohnDowson/ncurses
branch: borders_and_lines
crecto:
- github: acoustep/crecto
- branch: 0320compatability
+ github: Crecto/crecto
sqlite3:
github: crystal-lang/crystal-sqlite3
- version: ~> 0.15.0
+ version: ~> 0.14.0
fuzzy_match:
github: acoustep/fuzzy_match.cr
branch: master
diff --git a/spec/services/migrator_spec.cr b/spec/services/migrator_spec.cr
index c8769c8..02a4f2c 100644
--- a/spec/services/migrator_spec.cr
+++ b/spec/services/migrator_spec.cr
@@ -20,7 +20,7 @@ describe SniplineCli::Services::Migrator do
it "should import any previously created json snippets" do
# File.write("./snippets.json", File.read("./spec/fixtures/snippets.json"))
FileUtils.cp({"./spec/fixtures/snippets.json"}, "./")
- File.exists?(File.expand_path(SniplineCli.config.get("general.file"), home: true)).should eq(true)
+ File.exists?(File.expand_path(SniplineCli.config.get("general.file"))).should eq(true)
SniplineCli::Services::Migrator.run
DB.open "sqlite3:./test.db" do |db|
db.scalar("select count(*) from snippets").should eq(2)
diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr
index 508d72a..979d0a9 100644
--- a/src/snipline_cli.cr
+++ b/src/snipline_cli.cr
@@ -21,7 +21,7 @@ module Repo
config do |conf|
conf.adapter = Crecto::Adapters::SQLite3
- conf.database = File.expand_path(SniplineCli.config.get("general.db"), home: true)
+ conf.database = File.expand_path(SniplineCli.config.get("general.db"))
end
end
diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr
index 42698f8..5375354 100644
--- a/src/snipline_cli/commands/init.cr
+++ b/src/snipline_cli/commands/init.cr
@@ -25,11 +25,11 @@ module SniplineCli
TOML
CreateConfigDirectory.run(SniplineCli.config_file)
- File.write(File.expand_path(SniplineCli.config_file, home: true), toml_contents, mode: "w")
- puts "Configuration saved to #{File.expand_path(SniplineCli.config_file, home: true).colorize.mode(:bold)}"
- unless File.exists?(File.expand_path(config.get("general.db"), home: true))
- File.write(File.expand_path(config.get("general.db"), home: true), "", mode: "w")
- puts "Created SQLite file in #{File.expand_path(config.get("general.db"), home: true).colorize.mode(:bold)}"
+ File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w")
+ puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}"
+ unless File.exists?(File.expand_path(config.get("general.db")))
+ File.write(File.expand_path(config.get("general.db")), "", mode: "w")
+ puts "Created SQLite file in #{File.expand_path(config.get("general.db")).colorize.mode(:bold)}"
end
puts ""
puts "Run #{"snipcli new".colorize.mode(:bold)} to create your first snippet"
diff --git a/src/snipline_cli/commands/login.cr b/src/snipline_cli/commands/login.cr
index 04938a1..5bdd5d7 100644
--- a/src/snipline_cli/commands/login.cr
+++ b/src/snipline_cli/commands/login.cr
@@ -60,8 +60,8 @@ module SniplineCli
TOML
CreateConfigDirectory.run(SniplineCli.config_file)
- File.write(File.expand_path(SniplineCli.config_file, home: true), toml_contents, mode: "w")
- puts "Configuration saved to #{File.expand_path(SniplineCli.config_file, home: true).colorize.mode(:bold)}"
+ File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w")
+ puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}"
puts "To fetch your snippets run #{"snipcli sync".colorize.mode(:bold)}"
end
rescue ex : Crest::NotFound
diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr
index 2f52ef2..91793e3 100644
--- a/src/snipline_cli/commands/new.cr
+++ b/src/snipline_cli/commands/new.cr
@@ -11,7 +11,7 @@ module SniplineCli
def run
config = SniplineCli.config
- unless File.exists?(File.expand_path("#{config.get("general.db")}", home: true))
+ unless File.exists?(File.expand_path("#{config.get("general.db")}"))
abort("Database does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red))
end
Migrator.run
@@ -21,7 +21,7 @@ module SniplineCli
temp_file = TempSnippetEditorFile.new
temp_file.create
loop do
- system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)}")
+ system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}")
snippet_attributes = temp_file.read
snippet = Snippet.new
diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr
index 5c07b3b..80cf119 100644
--- a/src/snipline_cli/commands/search.cr
+++ b/src/snipline_cli/commands/search.cr
@@ -74,8 +74,7 @@ module SniplineCli
# exit(0)
# end
rescue ex
- puts "Error: #{ex.inspect}".colorize(:red)
- abort
+ abort "Error: #{ex.inspect}"
end
DisplayResults.new(snippets)
diff --git a/src/snipline_cli/config.cr b/src/snipline_cli/config.cr
index e98554a..d952f44 100644
--- a/src/snipline_cli/config.cr
+++ b/src/snipline_cli/config.cr
@@ -16,8 +16,8 @@ module SniplineCli
# When a new instance is created the config file is read and parsed.
def initialize
- if File.exists?(File.expand_path(SniplineCli.config_file, home: true))
- config_file = File.read(File.expand_path(SniplineCli.config_file, home: true))
+ if File.exists?(File.expand_path(SniplineCli.config_file))
+ config_file = File.read(File.expand_path(SniplineCli.config_file))
toml = TOML.parse(config_file)
@api = toml["api"].as(Hash(String, TOML::Type))
@general = toml["general"].as(Hash(String, TOML::Type))
diff --git a/src/snipline_cli/services/create_config_directory.cr b/src/snipline_cli/services/create_config_directory.cr
index 2c03135..649e1c2 100644
--- a/src/snipline_cli/services/create_config_directory.cr
+++ b/src/snipline_cli/services/create_config_directory.cr
@@ -3,7 +3,7 @@ module SniplineCli
# Creates a config directory for storing configuration files for SnipCLI.
class CreateConfigDirectory
def self.run(file)
- directory_name = File.expand_path(File.dirname(file), home: true)
+ directory_name = File.expand_path(File.dirname(file))
unless File.directory?(directory_name)
SniplineCli.log.debug("Making config directory #{directory_name}")
Dir.mkdir(directory_name)
diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr
index 0257193..066c7b3 100644
--- a/src/snipline_cli/services/edit_snippet.cr
+++ b/src/snipline_cli/services/edit_snippet.cr
@@ -13,7 +13,7 @@ module SniplineCli
temp_file = TempSnippetEditorFile.new(snippet)
temp_file.create
loop do
- system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)}")
+ system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}")
snippet_attributes = temp_file.read
snippet.name = snippet_attributes.name
snippet.real_command = snippet_attributes.real_command
diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr
index b478ba5..91de8d7 100644
--- a/src/snipline_cli/services/load_snippets.cr
+++ b/src/snipline_cli/services/load_snippets.cr
@@ -10,11 +10,11 @@ module SniplineCli
config = SniplineCli.config
log = SniplineCli.log
log.info("Looking through file #{config.get("general.db")}")
- unless File.readable?(File.expand_path(config.get("general.db"), home: true))
+ unless File.readable?(File.expand_path(config.get("general.db")))
log.warn("Could not read #{config.get("general.db")}")
abort("Run #{"snipline-cli sync".colorize(:green)} first")
end
- # File.open(File.expand_path(config.get("general.db"), home: true)) do |file|
+ # File.open(File.expand_path(config.get("general.db"))) do |file|
# snippets = Array(Snippet).from_json(file)
# end
Repo.all(Snippet)
diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr
index aa84977..f6c4b76 100644
--- a/src/snipline_cli/services/migrator.cr
+++ b/src/snipline_cli/services/migrator.cr
@@ -8,8 +8,8 @@ module SniplineCli::Services
class Migrator
def self.run
config = SniplineCli.config
- File.write(File.expand_path(config.get("general.db"), home: true), "", mode: "w") unless File.exists?(File.expand_path(config.get("general.db"), home: true))
- DB.open "sqlite3:#{File.expand_path(config.get("general.db"), home: true)}" do |db|
+ File.write(File.expand_path(config.get("general.db")), "", mode: "w") unless File.exists?(File.expand_path(config.get("general.db")))
+ DB.open "sqlite3:#{File.expand_path(config.get("general.db"))}" do |db|
db.exec "create table if not exists snippets (
local_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
cloud_id TEXT NULL,
@@ -31,9 +31,9 @@ module SniplineCli::Services
end
# Import 0.2.0 snippets from JSON file
- if File.exists?(File.expand_path(config.get("general.file"), home: true))
+ if File.exists?(File.expand_path(config.get("general.file")))
# Get the snippets
- json = File.read(File.expand_path(config.get("general.file"), home: true))
+ json = File.read(File.expand_path(config.get("general.file")))
# import into DB
p "Importing JSON snippets into SQLite Database"
Array(SnippetParser).from_json(json).each do |snippet_json|
@@ -55,14 +55,13 @@ module SniplineCli::Services
puts "#{error.inspect}".colorize(:red)
end
p ""
- p "Please fix this error and re-run the init command".colorize(:red)
- abort()
+ abort("Please fix this error and re-run the init command")
end
if changeset.valid?
Repo.insert(changeset)
end
end
- File.delete(File.expand_path(config.get("general.file"), home: true))
+ File.delete(File.expand_path(config.get("general.file")))
end
end
end
diff --git a/src/snipline_cli/services/store_snippets.cr b/src/snipline_cli/services/store_snippets.cr
index 88ceb3a..f31b0ab 100644
--- a/src/snipline_cli/services/store_snippets.cr
+++ b/src/snipline_cli/services/store_snippets.cr
@@ -6,13 +6,13 @@ module SniplineCli::Services
# Takes an array of snippets and saves them to the `snippet.json` file.
def store(snippets)
config = SniplineCli.config
- directory = File.dirname(File.expand_path(config.get("general.file"), home: true))
+ directory = File.dirname(File.expand_path(config.get("general.file")))
unless File.directory?(directory)
puts "Creating #{directory} directory"
- Dir.mkdir(File.expand_path(directory, home: true))
+ Dir.mkdir(File.expand_path(directory))
end
- File.write(File.expand_path(config.get("general.file"), home: true), snippets, mode: "w")
- unless File.writable?(File.expand_path(config.get("general.file"), home: true))
+ File.write(File.expand_path(config.get("general.file")), snippets, mode: "w")
+ unless File.writable?(File.expand_path(config.get("general.file")))
raise Exception.new("Sync Failed: File not writable (#{config.get("general.file")}")
end
end
diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr
index b7a7f0b..dda4d18 100644
--- a/src/snipline_cli/services/temp_snippet_editor_file.cr
+++ b/src/snipline_cli/services/temp_snippet_editor_file.cr
@@ -42,14 +42,14 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"}
def create
config = SniplineCli.config
- unless File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true))
- File.write(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true), @template)
+ unless File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"))
+ File.write(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"), @template)
end
end
def read
config = SniplineCli.config
- toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)))
+ toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml")))
SnippetAttributeParser.new(
name: toml["name"].as(String),
real_command: toml["real_command"].as(String),
@@ -71,14 +71,14 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"}
def sync_to_cloud?
config = SniplineCli.config
- toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)))
+ toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml")))
toml["sync_to_cloud"].as(Bool)
end
def delete
config = SniplineCli.config
- if File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true))
- File.delete(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true))
+ if File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"))
+ File.delete(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"))
end
end
end
From b1b07a9a989941d2bd529685f41a38763f570c4e Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 9 Jan 2020 10:30:03 +0000
Subject: [PATCH 43/47] Update changelog for new release
---
CHANGELOG.md | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index db6ea21..248457b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,36 @@
# Changelog
+## 0.3.0
+
+### Features
+
+* Upgraded Crystal to 0.31.1
+* Overhauled the search command
+ * New NCurses TUI
+ * Fuzzy match searching.
+ * Deleting snippets via search.
+ * Editing snippets via search.
+ * Copy/run snippets via search
+* Ability to edit and delete commands through the search interface.
+* Moved from JSON storage to Sqlite - including a built in migration process
+* Syncing snippets improvements:
+ * New local-only snippets will sync back to Snipline Cloud.
+ * Snipline Cloud snippets will now delete locally on sync.
+ * Locally edited snippets will sync back to Snipline Cloud.
+ * New `--dry-run` flag to see what will change during sync.
+ * New `--verbose` flag to see what has changed during sync.
+
+### Changes
+
+* Refactoring and testing to various classes.
+* Snippets are now stored in an Sqlite database rather than JSON file.
+* `sync` command now migrates the Sqlite database.
+* Added Crecto for managing snippets from Sqlite.
+
+### Bugfixes
+
+None
+
## 0.2.0
### Features
From 8b3342b26c3d9745b050d5a8e6e8a6f7024d5042 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Thu, 9 Jan 2020 10:33:39 +0000
Subject: [PATCH 44/47] Added removed web command to changelog
---
CHANGELOG.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 248457b..7e73bfc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -44,6 +44,7 @@ None
* `search` command now copies the selected snippet instead of running.
* Updated Crystal to `0.30.1`
* Updated `lodash` dependency for `web` interface.
+* Removed `web` command.
### Bugfixes
From 23cdaf7fd79ee99e17969fb07b537d0da8d75745 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Fri, 10 Jan 2020 13:37:21 +0000
Subject: [PATCH 45/47] Migrate the database on init
---
src/snipline_cli/commands/init.cr | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr
index 5375354..6c65d45 100644
--- a/src/snipline_cli/commands/init.cr
+++ b/src/snipline_cli/commands/init.cr
@@ -10,6 +10,8 @@ module SniplineCli
define_help description: "Initialise Snipline CLI without logging in"
def run
+ puts "Migrating Database..."
+ Migrator.run
config = SniplineCli.config
toml_contents = <<-TOML
title = "Snipline"
From 8737d1811e5ea8d5a56a46ce86e02bbda4e1b444 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Fri, 10 Jan 2020 13:44:32 +0000
Subject: [PATCH 46/47] Adjust password special parameters
---
src/snipline_cli/services/command_builder.cr | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr
index fa171c2..82ad621 100644
--- a/src/snipline_cli/services/command_builder.cr
+++ b/src/snipline_cli/services/command_builder.cr
@@ -38,8 +38,7 @@ module SniplineCli
p q r s t u v w x y z A B C D
E F G H I J K L M N O P Q R S
T U V W X Y Z 1 2 3 4 5 6 7 8
- 9 0 £ * ^ ] [ : ; | ? , .
- ` ~ /}
+ 9 0 £ ] \} : . _ @ }
snippet.uninteractive_params.each do |param|
# todo: use string builder instead
generated_password = ""
From 8fffe56193fc52e1554a24ee9a5a74af4cf1fbf4 Mon Sep 17 00:00:00 2001
From: Mitchell Stanley
Date: Fri, 10 Jan 2020 13:53:51 +0000
Subject: [PATCH 47/47] Run Ameba and fix migrator test
---
spec/services/migrator_spec.cr | 20 ++++++++++++--------
src/snipline_cli/services/command_builder.cr | 3 +--
2 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/spec/services/migrator_spec.cr b/spec/services/migrator_spec.cr
index 02a4f2c..64f2945 100644
--- a/spec/services/migrator_spec.cr
+++ b/spec/services/migrator_spec.cr
@@ -1,12 +1,4 @@
describe SniplineCli::Services::Migrator do
- after_each do
- if File.exists?("./snippets.json")
- File.delete("./snippets.json")
- end
- if File.exists?("./test.db")
- File.delete("./test.db")
- end
- end
it "should create and migrate a DB from scratch" do
File.exists?("./test.db").should eq(false)
@@ -15,6 +7,12 @@ describe SniplineCli::Services::Migrator do
DB.open "sqlite3:./test.db" do |db|
db.scalar("select count(*) from snippets").should eq(0)
end
+ if File.exists?("./snippets.json")
+ File.delete("./snippets.json")
+ end
+ if File.exists?("./test.db")
+ File.delete("./test.db")
+ end
end
it "should import any previously created json snippets" do
@@ -27,5 +25,11 @@ describe SniplineCli::Services::Migrator do
end
#
File.exists?("./snippets.json").should eq(false)
+ if File.exists?("./snippets.json")
+ File.delete("./snippets.json")
+ end
+ if File.exists?("./test.db")
+ File.delete("./test.db")
+ end
end
end
diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr
index 82ad621..b9ab1b7 100644
--- a/src/snipline_cli/services/command_builder.cr
+++ b/src/snipline_cli/services/command_builder.cr
@@ -33,12 +33,11 @@ module SniplineCli
end
end
- # ameba:disable Lint/PercentArrays
password_characters = %w{a b c d e f g h i j k l m n o
p q r s t u v w x y z A B C D
E F G H I J K L M N O P Q R S
T U V W X Y Z 1 2 3 4 5 6 7 8
- 9 0 £ ] \} : . _ @ }
+ 9 0 £ ] \} : . _ @}
snippet.uninteractive_params.each do |param|
# todo: use string builder instead
generated_password = ""