From 6c2d200fe8a874930b4afc13d81fee7a79004441 Mon Sep 17 00:00:00 2001 From: Dafne Kiyui Date: Sun, 11 Oct 2020 03:31:33 +0000 Subject: [PATCH] refactor(extension): complete rewrite (#11) --- .eslintrc.yml | 233 ++++ .gitignore | 3 + README.md | 24 +- images/preferences.png | Bin 0 -> 14400 bytes package.json | 41 + .../extension.js | 116 +- .../keybinder.js | 139 -- .../metadata.json | 23 +- ...ons.screenshotlocations.data.gresource.xml | 6 + screenshotlocations.timur@linux.com/prefs.js | 92 +- ...extensions.screenshotlocations.gschema.xml | 10 + .../ui/prefs.ui | 39 + yarn.lock | 1240 +++++++++++++++++ 13 files changed, 1704 insertions(+), 262 deletions(-) create mode 100644 .eslintrc.yml create mode 100644 images/preferences.png create mode 100644 package.json delete mode 100644 screenshotlocations.timur@linux.com/keybinder.js create mode 100644 screenshotlocations.timur@linux.com/org.gnome.shell.extensions.screenshotlocations.data.gresource.xml create mode 100644 screenshotlocations.timur@linux.com/schemas/org.gnome.shell.extensions.screenshotlocations.gschema.xml create mode 100644 screenshotlocations.timur@linux.com/ui/prefs.ui create mode 100644 yarn.lock diff --git a/.eslintrc.yml b/.eslintrc.yml new file mode 100644 index 0000000..1fac260 --- /dev/null +++ b/.eslintrc.yml @@ -0,0 +1,233 @@ +env: + es6: true +extends: 'eslint:recommended' +rules: + array-bracket-newline: + - error + - consistent + array-bracket-spacing: + - error + - never + array-callback-return: error + arrow-parens: + - error + - as-needed + arrow-spacing: error + block-scoped-var: error + block-spacing: error + brace-style: error + # Waiting for this to have matured a bit in eslint + # camelcase: + # - error + # - properties: never + # allow: [^vfunc_, ^on_, _instance_init] + comma-dangle: + - error + - always-multiline + comma-spacing: + - error + - before: false + after: true + comma-style: + - error + - last + computed-property-spacing: error + curly: + - error + - multi-or-nest + - consistent + dot-location: + - error + - property + eol-last: error + eqeqeq: error + func-call-spacing: error + func-name-matching: error + func-style: + - error + - declaration + - allowArrowFunctions: true + indent: + - error + - 4 + - ignoredNodes: + # Allow not indenting the body of GObject.registerClass, since in the + # future it's intended to be a decorator + - 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child' + # Allow dedenting chained member expressions + MemberExpression: 'off' + key-spacing: + - error + - beforeColon: false + afterColon: true + keyword-spacing: + - error + - before: true + after: true + linebreak-style: + - error + - unix + lines-between-class-members: error + max-nested-callbacks: error + max-statements-per-line: error + new-parens: error + no-array-constructor: error + no-await-in-loop: error + no-caller: error + no-constant-condition: + - error + - checkLoops: false + no-div-regex: error + no-empty: + - error + - allowEmptyCatch: true + no-extra-bind: error + no-extra-parens: + - error + - all + - conditionalAssign: false + nestedBinaryExpressions: false + returnAssign: false + no-implicit-coercion: + - error + - allow: + - '!!' + no-invalid-this: error + no-iterator: error + no-label-var: error + no-lonely-if: error + no-loop-func: error + no-nested-ternary: error + no-new-object: error + no-new-wrappers: error + no-octal-escape: error + no-proto: error + no-prototype-builtins: 'off' + no-restricted-properties: + - error + - object: Lang + property: bind + message: Use arrow notation or Function.prototype.bind() + - object: Lang + property: Class + message: Use ES6 classes + - object: imports + property: mainloop + message: Use GLib main loops and timeouts + no-restricted-syntax: + - error + - selector: >- + MethodDefinition[key.name="_init"] > + FunctionExpression[params.length=1] > + BlockStatement[body.length=1] + CallExpression[arguments.length=1][callee.object.type="Super"][callee.property.name="_init"] > + Identifier:first-child + message: _init() that only calls super._init() is unnecessary + - selector: >- + MethodDefinition[key.name="_init"] > + FunctionExpression[params.length=0] > + BlockStatement[body.length=1] + CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"] + message: _init() that only calls super._init() is unnecessary + no-return-assign: error + no-return-await: error + no-self-compare: error + no-shadow: error + no-shadow-restricted-names: error + no-spaced-func: error + no-tabs: error + no-template-curly-in-string: error + no-throw-literal: error + no-trailing-spaces: error + no-undef-init: error + no-unneeded-ternary: error + no-unused-expressions: error + no-unused-vars: + - error + # Vars use a suffix _ instead of a prefix because of file-scope private vars + - varsIgnorePattern: (^unused|_$) + argsIgnorePattern: ^(unused|_) + no-useless-call: error + no-useless-computed-key: error + no-useless-concat: error + no-useless-constructor: error + no-useless-rename: error + no-useless-return: error + no-whitespace-before-property: error + no-with: error + nonblock-statement-body-position: + - error + - below + object-curly-newline: + - error + - consistent: true + object-curly-spacing: error + object-shorthand: error + operator-assignment: error + operator-linebreak: error + # These may be a bit controversial, we can try them out and enable them later + # prefer-const: error + # prefer-destructuring: error + prefer-numeric-literals: error + prefer-promise-reject-errors: error + prefer-rest-params: error + prefer-spread: error + prefer-template: error + quotes: + - error + - single + - avoidEscape: true + require-await: error + rest-spread-spacing: error + semi: + - error + - always + semi-spacing: + - error + - before: false + after: true + semi-style: error + space-before-blocks: error + space-before-function-paren: + - error + - named: never + # for `function ()` and `async () =>`, preserve space around keywords + anonymous: always + asyncArrow: always + space-in-parens: error + space-infix-ops: + - error + - int32Hint: false + space-unary-ops: error + spaced-comment: error + switch-colon-spacing: error + symbol-description: error + template-curly-spacing: error + template-tag-spacing: error + unicode-bom: error + valid-jsdoc: + - error + - requireReturn: false + wrap-iife: + - error + - inside + yield-star-spacing: error + yoda: error +globals: + ARGV: readonly + Debugger: readonly + GIRepositoryGType: readonly + globalThis: readonly + imports: readonly + Intl: readonly + log: readonly + logError: readonly + print: readonly + printerr: readonly + global: readonly + _: readonly + C_: readonly + N_: readonly + ngettext: readonly +parserOptions: + ecmaVersion: 2019 diff --git a/.gitignore b/.gitignore index 58d74a8..14f7f33 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ +node_modules/ screenshotlocations.timur@linux.com.zip +*.compiled +*.gresource diff --git a/README.md b/README.md index 79bb400..cca4a4b 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,13 @@ -# gnome screenshot locations extension -Override GNOME's screenshot functionality to use a custom path as the current gsetting value -does not reflect on the `gnome-screenshot` utility as it used to. +# gnome-screenshot-locations-extension -## download -You can enable the extension [here](https://extensions.gnome.org/extension/1179/screenshot-locations/). +Override GNOME's screenshot functionality to use a user-defined path, in the order of: -## what it does -Upon enabling the extension, it disables all default screenshot keys defined in -`org.gnome.settings-daemon.plugins.media-keys` and overrides the default screenshot -behavior to respect the save directory path. +1. User defined path (added behaviour) +2. Pictures directory (default behaviour) +3. Home directory (default behaviour) -The save directory path and extension are defined under `org.gnome.gnome-screenshot` -with the keys `auto-save-directory` and `default-file-type`. You can customize the -save directory with the extension preference tool. A valid example would be -`/home/timur/Pictures/Screenshots` for instance. +![extension preferences](./images/preferences.png) -## acknowledgement -This extension makes use of the excellent [gnome-shell-keybinder](https://github.com/rliang/gnome-shell-keybinder) library. +## installation + +Available from GNOME extensions website [here](https://extensions.gnome.org/extension/1179/screenshot-locations/). diff --git a/images/preferences.png b/images/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..7b250e2a797a4d544618092ffaedde7c84d91cd3 GIT binary patch literal 14400 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%0At<|Zaz+x%U&R62a$EVTfA8KsCBRnT;^Ou{ zr-%id>e|{`M)$tHzUws7C>1&>PDmr_cGK+&v~YfY4*V;nEV;>yx}gER2xtnOp$FjO zyEq8+|5h;^s}z_$@TT^kFOuuNRru_hg85U@^>w$pfAjSh3f=Rl%;CEFKNY0Hh2I>Yz%YIT!BvNsNb#+bHBZGlX0;ELHf?+fUQmaad>2F%W-+S zi#^{OMaKK8Z28ME43sH=yMekdh>lr6v;reUOjT7?$OgH+WM~6yAWhb3>Q7XfEL<4u zF$lR`0|U8$w*yOaTN`9Xl>rqI{Z298pi#Zs%O^2(?kD%?N1XG~ zyixw^B(kCVnVK3KAm5Wj?1szjG#YKhT#+dto6;cP=Bp)m{IXMaP%aMAxkGRWBC$O5%t}bT4JI)2)rUL7XOHJ(qwG&DIBQ8L| zSlii^!?q0%4i4-=)d7fjT(bqlK3mIBd+ z@alKb2C(@yr#rL89$oB;U&$C5cM(Ntm4T+FX&q9SWzIC>PMukgKLCat8=Nw%Vq#;H zweDccf-bio0wLdh{CH&WHXj@$*hkmD-fwT`7XaD|p!Eq*O42v=V-Fc915Eb2s3;2{ z`=+pGu6Nb)_4)RrTt3M+g@`zwO58F9Jrn zs}$*!7db!OQwj%PSA0$_jYLm^KeeAq0VTYOEVy333&^j?Iu0e`s$<{$>`ECgz{~_S z&-5Q8UO)fRFazrX#MK_~Gbu6?z&w#-DZj>v?|L)o#8K)X{Bp=!BCaB~x4u^0^guu7 z;?0}4S_o4*zUdz%`i&M5VNFRt830D9psOWx5~qdL($~(Kx@Z=udb^2U#WcMZPXwaFOf^sWy2cv!mrj;>zsH(Ro2J{I@-nuLXz++nZ)i*Sr*Wvkh<Wi0~>Y%X7!lJA3U&;2rdhY+O-u{mQ zFUEfb;s2}d`~NQg-?i}nr<4DulmDYR;{Pv$kdO^+a;qf=Z63efr=|>!?>Z<{zhXhn z93IzW0tYAeRGAv@#t2h*kS7RwF0>>=EAz=+JReLynlCnwK>P1L!|9p#UnvnCnptUPpEx2iuQCY;OyOiJCsbA+-JaoPI{BXDL_LTp)!OpH$vzJ zJ4g^go4508!AO=1=g9DNW}F;B*Lw8-8bHXG7_h>?9d4IKLoGys+YEyepbO>GZ!#w% zqfFSiHWSVX)f3lR+%1=QAo720<*V`kAboe0&44LqO( zjqr0+oy&Q3d=t;WQs2cZzB1aN!Q&~*N7@+~lcSjT?n7rdjmW>SvaopYdk~_h!5DSA z4C)8*_$lpoLs$tWUT}=qGqpMk!xJU^9Hk@|7WD4knb;FU64l+lgQaez(BSrTVVUQROV)KsRyyO(v?@L!LL<_kp$KG{ITnRK&-9!p`IOCkVM5b* zS0r7r`<*(;Fg(0M!+@2IVj*F)5-zjBE0=hfNCr6VBa)+{a0T?xO^A|4Jw}Y#MOs)W z+{2w1iiDB*Zc^W!N}r~hri;DJtoG_K(algyZp4^r-G}*Q;du0P7R{stR}s*T%{ok| z%*^6SDUkfda&hPhInGRYD5B%*4z*ieFF*Qt=-U`9hVDq{DcYMNbmH)JYEAGm)u*Z6 z=^b=4S?$Y>tB{Jg-4^o&Lzm9`3t}^%X<+usa&J&hAAE2FnmFAOsXL#6Y z443%OPy%6$uw7<1*NOUQQ!hgFqUd@>^Lpq8J(#xq1yeWydQ#ms&)%Q@5M3BSC_)p0 zghOOf@u-OrJEy>{Ue_u-3ca+_h)39foxvI(ag-68N~3{~Uw$Qo;$Z`arS;o<;nT>d zD%dn|tNzfUYmaOTf|Q}>CG<9-#A zSRBGdaQEsLSEA;;zx)J5GgA=KEcPc<{9mZ}MJR*fe;a2Pu0Xq~Kzpqa%Ym>6VYNALy95C5e{U2yesgt+Q@A}LBKc8jey<4=} Ys50i&cORaExBDPZAFC@DDVc};FKeY%-T(jq literal 0 HcmV?d00001 diff --git a/package.json b/package.json new file mode 100644 index 0000000..afe1438 --- /dev/null +++ b/package.json @@ -0,0 +1,41 @@ +{ + "name": "gnome-shell-screenshotlocations-extension", + "description": "Change the default GNOME screenshot directory", + "scripts": { + "build:resources": "glib-compile-resources --sourcedir screenshotlocations.timur@linux.com/ screenshotlocations.timur@linux.com/org.gnome.shell.extensions.screenshotlocations.data.gresource.xml", + "build:schema": "glib-compile-schemas screenshotlocations.timur@linux.com/schemas/", + "build:link": "ln -s $(pwd)/screenshotlocations.timur@linux.com/ ~/.local/share/gnome-shell/extensions/", + "build:zip": "cd screenshotlocations.timur@linux.com/ && zip -r ../screenshotlocations.timur@linux.com.zip ./*", + "build": "npm run build:resources && npm run build:schema && npm run build:zip" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/kiyui/gnome-shell-screenshotlocations-extension.git" + }, + "keywords": [ + "gnome", + "gjs", + "screenshot", + "extension" + ], + "author": "Dafne Kiyui", + "license": "GPL-2.0", + "bugs": { + "url": "https://github.com/kiyui/gnome-shell-screenshotlocations-extension/issues" + }, + "homepage": "https://github.com/kiyui/gnome-shell-screenshotlocations-extension#readme", + "devDependencies": { + "eslint": "^7.8.1", + "husky": ">=4", + "lint-staged": ">=10" + }, + "dependencies": {}, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "*.js": "eslint --fix" + } +} diff --git a/screenshotlocations.timur@linux.com/extension.js b/screenshotlocations.timur@linux.com/extension.js index b27203b..125cb8b 100644 --- a/screenshotlocations.timur@linux.com/extension.js +++ b/screenshotlocations.timur@linux.com/extension.js @@ -1,68 +1,66 @@ -/* global imports print */ +/* extension.js + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ -const Me = imports.misc.extensionUtils.getCurrentExtension() -const Gio = imports.gi.Gio -const GLib = imports.gi.GLib -const Keybinder = Me.imports.keybinder.keybinder.default +/* exported init */ -const screenshotKeys = [ - { - name: 'area-screenshot', - shortcut: 'Print', - command: 'gnome-screenshot -a' - }, - { - name: 'area-screenshot-clip', - shortcut: 'Print', - command: 'gnome-screenshot -a -c' - }, - { - name: 'screenshot', - shortcut: 'Print', - command: 'gnome-screenshot' - }, - { - name: 'screenshot-clip', - shortcut: 'Print', - command: 'gnome-screenshot -c' - }, - { - name: 'window-screenshot', - shortcut: 'Print', - command: 'gnome-screenshot -w' - }, - { - name: 'window-screenshot-clip', - shortcut: 'Print', - command: 'gnome-screenshot -w -c' - } -] +const {Gio, GLib} = imports.gi; +const Main = imports.ui.main; +const ExtensionUtils = imports.misc.extensionUtils; -const schema = new Gio.Settings({ - schema: 'org.gnome.gnome-screenshot' -}) +class Extension { + constructor() { + this._preferences = ExtensionUtils.getSettings(); + } + + enable() { + GLib.timeout_add(GLib.PRIORITY_DEFAULT, 0, () => { + Main.shellDBusService._screenshotService._original_resolveRelativeFilename = Main.shellDBusService._screenshotService._resolveRelativeFilename; + Main.shellDBusService._screenshotService._resolveRelativeFilename = this._resolveRelativeFilenameOverride.bind(this); + }); + } + + disable() { + Main.shellDBusService._screenshotService._resolveRelativeFilename = Main.shellDBusService._screenshotService._original_resolveRelativeFilename; + delete Main.shellDBusService._screenshotService._original_resolveRelativeFilename; + } + + *_resolveRelativeFilenameOverride(filename) { + filename = filename.replace(/\.png$/, ''); + + let path = [ + this._preferences.get_string('save-directory'), + GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_PICTURES), + GLib.get_home_dir(), + ].find(p => GLib.file_test(p, GLib.FileTest.EXISTS)); + + if (!path) + return null; -const shortcutSchema = new Gio.Settings({ - schema: 'org.gnome.settings-daemon.plugins.media-keys' -}) + yield Gio.File.new_for_path( + GLib.build_filenamev([path, `${filename}.png`])); -function enable () { // eslint-disable-line no-unused-vars - const keybinder = new Keybinder('screenshotlocations', GLib.get_tmp_dir()) - screenshotKeys.map(screenshotKey => { - if (shortcutSchema.set_string(screenshotKey.name, '')) { - Gio.Settings.sync() - keybinder.add(screenshotKey.name, screenshotKey.shortcut, function () { - GLib.spawn_command_line_async(screenshotKey.command) - }) + for (let idx = 1; ; idx++) { + yield Gio.File.new_for_path( + GLib.build_filenamev([path, `${filename}-${idx}.png`])); + } } - }) - keybinder.enable() } -function disable () { // eslint-disable-line no-unused-vars - const keybinder = new Keybinder('screenshotlocations', GLib.get_tmp_dir()) - screenshotKeys.map(screenshotKey => { - shortcutSchema.reset(screenshotKey.name) // Reset all screenshot keys - }) - keybinder.disable() +function init() { + return new Extension(); } diff --git a/screenshotlocations.timur@linux.com/keybinder.js b/screenshotlocations.timur@linux.com/keybinder.js deleted file mode 100644 index 27bbb47..0000000 --- a/screenshotlocations.timur@linux.com/keybinder.js +++ /dev/null @@ -1,139 +0,0 @@ -(function (global, factory) { - if (typeof define === "function" && define.amd) { - define(['exports'], factory); - } else if (typeof exports !== "undefined") { - factory(exports); - } else { - var mod = { - exports: {} - }; - factory(mod.exports); - global.keybinder = mod.exports; - } -})(this, function (exports) { - 'use strict'; - - Object.defineProperty(exports, "__esModule", { - value: true - }); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - const Gio = imports.gi.Gio; - const GLib = imports.gi.GLib; - const Shell = imports.gi.Shell; - const Main = imports.ui.main; - - /** - * Manages a set of keybindings identified by an ID. - * - * GNOME Shell can only apply new configuration entries from a compiled schema - * file. When applying the keybinds, a schema is generated and compiled with - * the "glib-compile-schemas" executable, then loaded and applied. - * - * @see {@link add} - * @see {@link enable} - * @see {@link disable} - */ - - let Keybinder = function () { - - /** - * @param {String} id the ID of the keybinding set, should be unique for each - * extension. - */ - function Keybinder(id, directory = GLib.get_tmp_dir()) { - _classCallCheck(this, Keybinder); - - this.id = 'org.gnome.shell.extensions.' + id; - this.dir = directory; - this.bindings = []; - } - - /** - * Adds a keybinding. - * - * @param {String} name the unique name of the binding. - * @param {String|Array} sequences the key sequence(s). - * @param {Function} handler the handler. - */ - - - _createClass(Keybinder, [{ - key: 'add', - value: function add(name, sequences, handler) { - sequences = sequences instanceof Array ? sequences : [sequences]; - this.bindings.push({ name: name, sequences: sequences, handler: handler }); - } - }, { - key: 'render', - value: function render({ name, sequences }) { - const value = sequences.map(s => GLib.markup_escape_text(s, s.length)); - const markup = '' + JSON.stringify(value) + ''; - return '' + markup + ''; - } - }, { - key: 'build', - value: function build() { - const path = this.id.replace(/\./g, '/'); - const entries = this.bindings.map(b => this.render(b)).join(''); - const schema = '' + entries + ''; - const content = '' + schema + ''; - Gio.file_new_for_path(this.dir).get_child(this.id + '.gschema.xml').replace_contents(content, null, false, 0, null); - } - }, { - key: 'compile', - value: function compile() { - const exec = ['glib-compile-schemas', this.dir]; - GLib.spawn_sync(this.dir, exec, null, GLib.SpawnFlags.SEARCH_PATH, null); - } - }, { - key: 'load', - value: function load() { - const fb = Gio.SettingsSchemaSource.get_default(); - const src = Gio.SettingsSchemaSource.new_from_directory(this.dir, fb, false); - return new Gio.Settings({ settings_schema: src.lookup(this.id, true) }); - } - }, { - key: 'enable', - value: function enable() { - this.build(); - this.compile(); - const settings = this.load(); - const modes = Shell.ActionMode.NORMAL | Shell.ActionMode.MESSAGE_TRAY; - for (let { name, handler } of this.bindings) Main.wm.addKeybinding(name, settings, 0, modes, handler); - } - }, { - key: 'disable', - value: function disable() { - for (let { name } of this.bindings) Main.wm.removeKeybinding(name); - } - }]); - - return Keybinder; - }(); - - exports.default = Keybinder; -}); diff --git a/screenshotlocations.timur@linux.com/metadata.json b/screenshotlocations.timur@linux.com/metadata.json index 800cac8..4d18827 100644 --- a/screenshotlocations.timur@linux.com/metadata.json +++ b/screenshotlocations.timur@linux.com/metadata.json @@ -1,14 +1,13 @@ { - "name": "Screenshot Locations", - "description": "Change the default GNOME screenshot directory", - "uuid": "screenshotlocations.timur@linux.com", - "url": "https://github.com/TimurKiyivinski/gnome-shell-screenshotlocations-extension", - "shell-version": [ - "3.26", - "3.24", - "3.22", - "3.20", - "3.18", - "3.16" - ] + "uuid": "screenshotlocations.timur@linux.com", + "name": "Screenshot Locations", + "description": "Change the default GNOME screenshot directory", + "data-gresource": "org.gnome.shell.extensions.screenshotlocations.data.gresource", + "settings-schema": "org.gnome.shell.extensions.screenshotlocations", + "version": 7, + "shell-version": [ + "3.36", + "3.38" + ], + "url": "https://github.com/kiyui/gnome-shell-screenshotlocations-extension" } diff --git a/screenshotlocations.timur@linux.com/org.gnome.shell.extensions.screenshotlocations.data.gresource.xml b/screenshotlocations.timur@linux.com/org.gnome.shell.extensions.screenshotlocations.data.gresource.xml new file mode 100644 index 0000000..eb87252 --- /dev/null +++ b/screenshotlocations.timur@linux.com/org.gnome.shell.extensions.screenshotlocations.data.gresource.xml @@ -0,0 +1,6 @@ + + + + ui/prefs.ui + + diff --git a/screenshotlocations.timur@linux.com/prefs.js b/screenshotlocations.timur@linux.com/prefs.js index f58b5bc..a4ebf63 100644 --- a/screenshotlocations.timur@linux.com/prefs.js +++ b/screenshotlocations.timur@linux.com/prefs.js @@ -1,49 +1,67 @@ -/* global imports print */ +/* prefs.js + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ -const Gio = imports.gi.Gio -const Gtk = imports.gi.Gtk +/* exported buildPrefsWidget init */ -function buildPrefsWidget () { // eslint-disable-line no-unused-vars - // Get screenshot save location - const schema = new Gio.Settings({ - schema: 'org.gnome.gnome-screenshot' - }) +imports.gi.versions.Gtk = '3.0'; +imports.gi.versions.Handy = '0.0'; +const {GObject, GLib, Gio, Gtk, Handy} = imports.gi; - const location = schema.get_string('auto-save-directory') +const ExtensionUtils = imports.misc.extensionUtils; +const Me = ExtensionUtils.getCurrentExtension(); - const vbox = new Gtk.Box({ - orientation: Gtk.Orientation.VERTICAL, - border_width: 10, - margin: 20, - spacing: 20 - }) +// Register resources +const resource = Me.metadata['data-gresource']; +const resourceFile = Me.dir.get_child(resource); +Gio.resources_register(Gio.Resource.load(resourceFile.get_path())); - // Create children objects - const entry = new Gtk.Entry({ text: location }) +var ScreenshotLocationsExtensionPrefs = GObject.registerClass({ + GTypeName: 'ScreenshotLocationsExtensionPrefs', + Template: 'resource:///org/gnome/shell/extensions/screenshotlocations/ui/prefs.ui', + InternalChildren: [ + 'path_chooser', + ], +}, class ScreenshotLocationsExtensionPrefs extends Gtk.ListBox { + _init(preferences) { + super._init(); + this._preferences = preferences; + this._sync(); - const save = new Gtk.Button({ label: 'Save' }) - - // Add objects to frame - vbox.add(new Gtk.Label({ label: 'Screenshot Path' })) - vbox.add(entry) - vbox.add(save) - - // Handle events - save.connect('clicked', function () { - const newLocation = entry.text - print('Changing screenshot location to: ' + newLocation) + this._preferences.connect('changed', this._sync.bind(this)); + this._path_chooser.connect('file-set', + self => this._preferences.set_string('save-directory', self.get_file().get_path())); + } - if (schema.set_string('auto-save-directory', newLocation)) { - Gio.Settings.sync() - print('Updated screenshot location to: ' + newLocation) - Gtk.main_quit() + _sync() { + const p = this._preferences.get_string('save-directory'); + if (GLib.file_test(p, GLib.FileTest.EXISTS)) { + const file = Gio.File.new_for_path(p); + this._path_chooser.set_file(file); + } } - }) +}); - vbox.show_all() - return vbox +function buildPrefsWidget() { + const preferences = ExtensionUtils.getSettings(); + return new ScreenshotLocationsExtensionPrefs(preferences); } -function init () { // eslint-disable-line no-unused-vars - print('Initilize screenshot location extension configuration window') +function init() { + Gtk.init(null); + Handy.init(null); } diff --git a/screenshotlocations.timur@linux.com/schemas/org.gnome.shell.extensions.screenshotlocations.gschema.xml b/screenshotlocations.timur@linux.com/schemas/org.gnome.shell.extensions.screenshotlocations.gschema.xml new file mode 100644 index 0000000..2d55a9a --- /dev/null +++ b/screenshotlocations.timur@linux.com/schemas/org.gnome.shell.extensions.screenshotlocations.gschema.xml @@ -0,0 +1,10 @@ + + + + + '' + Screenshot directory + Manage where screenshots are saved + + + diff --git a/screenshotlocations.timur@linux.com/ui/prefs.ui b/screenshotlocations.timur@linux.com/ui/prefs.ui new file mode 100644 index 0000000..22cbb48 --- /dev/null +++ b/screenshotlocations.timur@linux.com/ui/prefs.ui @@ -0,0 +1,39 @@ + + + + + + + diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..afee106 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1240 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@eslint/eslintrc@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" + integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +acorn-jsx@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: + version "6.12.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" + integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.0, 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" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +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" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +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= + +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@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chalk@^2.0.0: + 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" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +color-convert@^1.9.0: + 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-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +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.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commander@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz#f8d722b78103141006b66f4c7ba1e97315ba75bc" + integrity sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA== + +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + +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= + +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^4.0.1, debug@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== + dependencies: + ms "2.1.2" + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-is@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@^2.3.5, enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.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" + +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@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint@^7.8.1: + version "7.10.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.10.0.tgz#494edb3e4750fb791133ca379e786a8f648c72b9" + integrity sha512-BDVffmqWl7JJXqCjAK6lWtcQThZB/aP1HXSH1JKwGwv0LQEdvpR7qzNrUT487RM39B5goWuboFad5ovMBmD8yA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.1.3" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.3.0" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.19" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" + integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" + +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== + +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +execa@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" + integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +figures@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-versions@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +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= + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +glob-parent@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + 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" + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +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-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +husky@>=4: + version "4.3.0" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.0.tgz#0b2ec1d66424e9219d359e26a51c58ec5278f0de" + integrity sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA== + dependencies: + chalk "^4.0.0" + ci-info "^2.0.0" + compare-versions "^3.6.0" + cosmiconfig "^7.0.0" + find-versions "^3.2.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^4.2.0" + please-upgrade-node "^3.2.0" + slash "^3.0.0" + which-pm-runs "^1.0.0" + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.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= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +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: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +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-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@^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-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1: + 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@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +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= + +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-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +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== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +lint-staged@>=10: + version "10.4.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.4.0.tgz#d18628f737328e0bbbf87d183f4020930e9a984e" + integrity sha512-uaiX4U5yERUSiIEQc329vhCTDDwUcSvKdRLsNomkYLRzijk3v8V9GWm2Nz0RMVB87VcuzLvtgy6OsjoH++QHIg== + dependencies: + chalk "^4.1.0" + cli-truncate "^2.1.0" + commander "^6.0.0" + cosmiconfig "^7.0.0" + debug "^4.1.1" + dedent "^0.7.0" + enquirer "^2.3.6" + execa "^4.0.3" + listr2 "^2.6.0" + log-symbols "^4.0.0" + micromatch "^4.0.2" + normalize-path "^3.0.0" + please-upgrade-node "^3.2.0" + string-argv "0.3.1" + stringify-object "^3.3.0" + +listr2@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-2.6.2.tgz#4912eb01e1e2dd72ec37f3895a56bf2622d6f36a" + integrity sha512-6x6pKEMs8DSIpA/tixiYY2m/GcbgMplMVmhQAaLFxEtNSKLeWTGjtmU57xvv6QCm2XcqzyNXL/cTSVf4IChCRA== + dependencies: + chalk "^4.1.0" + cli-truncate "^2.1.0" + figures "^3.2.0" + indent-string "^4.0.0" + log-update "^4.0.0" + p-map "^4.0.0" + rxjs "^6.6.2" + through "^2.3.8" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash@^4.17.14, lodash@^4.17.19: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +log-symbols@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== + dependencies: + chalk "^4.0.0" + +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +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@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +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== + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +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" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +opencollective-postinstall@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" + integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +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== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" + integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +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-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picomatch@^2.0.5: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +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" + +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== + +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.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" + +rxjs@^6.6.2: + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== + dependencies: + tslib "^1.9.0" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + +semver@^7.2.1: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^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= + +string-argv@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.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@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tslib@^1.9.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.0.tgz#d624983f3e2c5e0b55307c3dd6c86acd737622c6" + integrity sha512-+Zw5lu0D9tvBMjGP8LpvMb0u2WW2QV3y+D8mO6J+cNzCYIN4sVy43Bf9vl92nqFahutN0I8zHa7cc4vihIshnw== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +uri-js@^4.2.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + dependencies: + punycode "^2.1.0" + +v8-compile-cache@^2.0.3: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +yaml@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==