diff --git a/package.json b/package.json index ee3a57b08f..de23642d9a 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "@babel/preset-env": "7.13.5", "@babel/preset-react": "7.12.13", "@babel/preset-typescript": "7.13.0", + "@juanm04/cpx": "2.0.0", "@manypkg/cli": "0.17.0", "@preconstruct/cli": "2.0.5", "@preconstruct/next": "2.0.0", @@ -81,7 +82,6 @@ "@types/flush-write-stream": "1.0.0", "@types/from2": "2.3.0", "@types/fs-extra": "9.0.6", - "@types/fs-readdir-recursive": "1.0.0", "@types/gulp-if": "0.0.33", "@types/htmlescape": "^1.1.1", "@types/ink-spinner": "3.0.0", @@ -122,7 +122,6 @@ "babel-plugin-tester": "10.0.0", "babel-plugin-transform-inline-environment-variables": "0.4.3", "concurrently": "6.0.0", - "cpx": "1.5.0", "cross-env": "7.0.3", "cypress": "6.2.1", "debug": "4.3.1", diff --git a/packages/generator/.gitignore b/packages/generator/.gitignore index 8500a02007..53876f9df8 100644 --- a/packages/generator/.gitignore +++ b/packages/generator/.gitignore @@ -13,3 +13,4 @@ tmp _app !templates/**/.env* +!templates/**/.vscode diff --git a/packages/generator/package.json b/packages/generator/package.json index 6fb7174170..1a1f670fa4 100644 --- a/packages/generator/package.json +++ b/packages/generator/package.json @@ -7,7 +7,7 @@ "scripts": { "dev": "yarn build:templates --watch", "buildpkg": "yarn build:templates", - "build:templates": "cpx --clean \"templates/**/{.*,*}\" dist/templates", + "build:templates": "cpx --clean --include-hidden \"templates/**\" dist/templates", "test": "jest", "test:watch": "jest --watch" }, @@ -40,7 +40,6 @@ "diff": "5.0.0", "enquirer": "2.3.6", "fs-extra": "^9.1.0", - "fs-readdir-recursive": "1.1.0", "got": "^11.8.1", "jscodeshift": "0.11.0", "mem-fs": "1.2.0", diff --git a/packages/generator/src/generator.ts b/packages/generator/src/generator.ts index 92d5e4cb8b..e730aaa562 100644 --- a/packages/generator/src/generator.ts +++ b/packages/generator/src/generator.ts @@ -5,7 +5,6 @@ import {log} from "@blitzjs/display" import Enquirer from "enquirer" import {EventEmitter} from "events" import * as fs from "fs-extra" -import readDirRecursive from "fs-readdir-recursive" import j from "jscodeshift" import {Collection} from "jscodeshift/src/Collection" import {create as createStore, Store} from "mem-fs" @@ -15,6 +14,7 @@ import getBabelOptions, {Overrides} from "recast/parsers/_babel_options" import * as babelParser from "recast/parsers/babel" import {ConflictChecker} from "./conflict-checker" import {pipe} from "./utils/pipe" +import {readdirRecursive} from "./utils/readdir-recursive" const debug = require("debug")("blitz:generator") export const customTsParser = { @@ -33,6 +33,11 @@ export interface GeneratorOptions { useTs?: boolean } +export interface SourceRootType { + type: "template" | "absolute" + path: string +} + const alwaysIgnoreFiles = [".blitz", ".DS_Store", ".git", ".next", ".now", "node_modules"] const ignoredExtensions = [".ico", ".png", ".jpg"] const tsExtension = /\.(tsx?)$/ @@ -132,7 +137,14 @@ export abstract class Generator< unsafe_disableConflictChecker = false returnResults: boolean = false - abstract sourceRoot: string + /** + * When `type: 'absolute'`, it's an absolute path + * When `type: 'template'`, is the path type `templates/`. + * + * @example {type: 'absolue', path: './src/app'} => `./src/app` + * @example {type: 'template', path: 'app'} => `templates/app` + */ + abstract sourceRoot: SourceRootType constructor(protected readonly options: T) { super() @@ -229,7 +241,7 @@ export abstract class Generator< async write(): Promise { debug("Generator.write...") - const paths = readDirRecursive(this.sourcePath(), (name) => { + const paths = await readdirRecursive(this.sourcePath(), (name) => { const additionalFilesToIgnore = this.filesToIgnore() return ![...alwaysIgnoreFiles, ...additionalFilesToIgnore].includes(name) }) @@ -270,8 +282,22 @@ export abstract class Generator< // expose postWrite hook, no default implementation } + preventFileFromLogging(_file: string): boolean { + // no default implementation + return false + } + sourcePath(...paths: string[]): string { - return path.join(this.sourceRoot, ...paths) + if (this.sourceRoot.type === "absolute") { + return path.join(this.sourceRoot.path, ...paths) + } else { + return path.join( + __dirname, + process.env.NODE_ENV === "test" ? "../templates" : "./templates", + this.sourceRoot.path, + ...paths, + ) + } } destinationPath(...paths: string[]): string { @@ -316,9 +342,16 @@ export abstract class Generator< } if (!this.returnResults) { - this.performedActions.sort().forEach((action) => { - console.log(action) - }) + this.performedActions + .sort() + .filter((action) => { + // Each action is something like this: + // "\u001b[32mCREATE \u001b[39m .env" + const actionSplitted = action.split(/ +/g) + const filename = actionSplitted[actionSplitted.length - 1] + return !this.preventFileFromLogging(filename) + }) + .forEach((action) => console.log(action)) } if (!this.options.dryRun) { diff --git a/packages/generator/src/generators/app-generator.ts b/packages/generator/src/generators/app-generator.ts index aabe1c9477..b244edbbc7 100644 --- a/packages/generator/src/generators/app-generator.ts +++ b/packages/generator/src/generators/app-generator.ts @@ -2,9 +2,9 @@ import {log} from "@blitzjs/display" import chalk from "chalk" import spawn from "cross-spawn" import {readJSONSync, writeJson} from "fs-extra" -import {join, resolve} from "path" +import {join} from "path" import username from "username" -import {Generator, GeneratorOptions} from "../generator" +import {Generator, GeneratorOptions, SourceRootType} from "../generator" import {fetchLatestVersionsFor} from "../utils/fetch-latest-version-for" import {getBlitzDependencyVersion} from "../utils/get-blitz-dependency-version" @@ -24,7 +24,7 @@ export interface AppGeneratorOptions extends GeneratorOptions { } export class AppGenerator extends Generator { - sourceRoot: string = resolve(__dirname, "./templates/app") + sourceRoot: SourceRootType = {type: "template", path: "app"} // Disable file-level prettier because we manually run prettier at the end prettierDisabled = true packageInstallSuccess: boolean = false @@ -232,6 +232,10 @@ export class AppGenerator extends Generator { } } + preventFileFromLogging(file: string): boolean { + return file.startsWith(".vscode") || file === ".editorconfig" || file.endsWith("/.keep") + } + commitChanges() { const commitSpinner = log.spinner(log.withBrand("Committing your app")).start() const commands: Array<[string, string[], object]> = [ diff --git a/packages/generator/src/generators/form-generator.ts b/packages/generator/src/generators/form-generator.ts index e0208c9e72..ec4997a713 100644 --- a/packages/generator/src/generators/form-generator.ts +++ b/packages/generator/src/generators/form-generator.ts @@ -1,5 +1,4 @@ -import {join} from "path" -import {Generator, GeneratorOptions} from "../generator" +import {Generator, GeneratorOptions, SourceRootType} from "../generator" import {camelCaseToKebabCase} from "../utils/inflector" export interface FormGeneratorOptions extends GeneratorOptions { @@ -15,7 +14,7 @@ export interface FormGeneratorOptions extends GeneratorOptions { export class FormGenerator extends Generator { static subdirectory = "queries" - sourceRoot = join(__dirname, "./templates/form") + sourceRoot: SourceRootType = {type: "template", path: "form"} private getId(input: string = "") { if (!input) return input diff --git a/packages/generator/src/generators/model-generator.ts b/packages/generator/src/generators/model-generator.ts index 2f0e324488..6da9933d46 100644 --- a/packages/generator/src/generators/model-generator.ts +++ b/packages/generator/src/generators/model-generator.ts @@ -2,7 +2,7 @@ import {log} from "@blitzjs/display" import {spawn} from "cross-spawn" import which from "npm-which" import path from "path" -import {Generator, GeneratorOptions} from "../generator" +import {Generator, GeneratorOptions, SourceRootType} from "../generator" import {Field} from "../prisma/field" import {Model} from "../prisma/model" import {matchBetween} from "../utils/match-between" @@ -15,7 +15,7 @@ export interface ModelGeneratorOptions extends GeneratorOptions { export class ModelGenerator extends Generator { // default subdirectory is /app/[name], we need to back out of there to generate the model static subdirectory = "../.." - sourceRoot: string = "" + sourceRoot: SourceRootType = {type: "absolute", path: ""} unsafe_disableConflictChecker = true async getTemplateValues() {} diff --git a/packages/generator/src/generators/mutation-generator.ts b/packages/generator/src/generators/mutation-generator.ts index db638f9471..ce868d308b 100644 --- a/packages/generator/src/generators/mutation-generator.ts +++ b/packages/generator/src/generators/mutation-generator.ts @@ -1,5 +1,4 @@ -import {join} from "path" -import {Generator, GeneratorOptions} from "../generator" +import {Generator, GeneratorOptions, SourceRootType} from "../generator" import {camelCaseToKebabCase} from "../utils/inflector" export interface MutationGeneratorOptions extends GeneratorOptions { @@ -9,7 +8,7 @@ export interface MutationGeneratorOptions extends GeneratorOptions { export class MutationGenerator extends Generator { static subdirectory = "mutation" - sourceRoot = join(__dirname, "./templates/mutation") + sourceRoot: SourceRootType = {type: "template", path: "mutation"} // eslint-disable-next-line require-await async getTemplateValues() { diff --git a/packages/generator/src/generators/mutations-generator.ts b/packages/generator/src/generators/mutations-generator.ts index 89fec49047..c9755314c2 100644 --- a/packages/generator/src/generators/mutations-generator.ts +++ b/packages/generator/src/generators/mutations-generator.ts @@ -1,5 +1,4 @@ -import {join} from "path" -import {Generator, GeneratorOptions} from "../generator" +import {Generator, GeneratorOptions, SourceRootType} from "../generator" import {camelCaseToKebabCase} from "../utils/inflector" export interface MutationsGeneratorOptions extends GeneratorOptions { @@ -15,7 +14,7 @@ export interface MutationsGeneratorOptions extends GeneratorOptions { export class MutationsGenerator extends Generator { static subdirectory = "mutations" - sourceRoot = join(__dirname, "./templates/mutations") + sourceRoot: SourceRootType = {type: "template", path: "mutations"} private getId(input: string = "") { if (!input) return input diff --git a/packages/generator/src/generators/page-generator.ts b/packages/generator/src/generators/page-generator.ts index e5904779bc..3068c94ac6 100644 --- a/packages/generator/src/generators/page-generator.ts +++ b/packages/generator/src/generators/page-generator.ts @@ -1,5 +1,4 @@ -import {join} from "path" -import {Generator, GeneratorOptions} from "../generator" +import {Generator, GeneratorOptions, SourceRootType} from "../generator" import {camelCaseToKebabCase} from "../utils/inflector" export interface PageGeneratorOptions extends GeneratorOptions { @@ -15,7 +14,7 @@ export interface PageGeneratorOptions extends GeneratorOptions { export class PageGenerator extends Generator { static subdirectory = "pages" - sourceRoot = join(__dirname, "./templates/page") + sourceRoot: SourceRootType = {type: "template", path: "page"} private getId(input: string = "") { if (!input) return input diff --git a/packages/generator/src/generators/queries-generator.ts b/packages/generator/src/generators/queries-generator.ts index a2dac40025..63c0af9ce4 100644 --- a/packages/generator/src/generators/queries-generator.ts +++ b/packages/generator/src/generators/queries-generator.ts @@ -1,5 +1,4 @@ -import {join} from "path" -import {Generator, GeneratorOptions} from "../generator" +import {Generator, GeneratorOptions, SourceRootType} from "../generator" import {camelCaseToKebabCase} from "../utils/inflector" export interface QueriesGeneratorOptions extends GeneratorOptions { @@ -15,7 +14,7 @@ export interface QueriesGeneratorOptions extends GeneratorOptions { export class QueriesGenerator extends Generator { static subdirectory = "queries" - sourceRoot = join(__dirname, "./templates/queries") + sourceRoot: SourceRootType = {type: "template", path: "queries"} private getId(input: string = "") { if (!input) return input diff --git a/packages/generator/src/generators/query-generator.ts b/packages/generator/src/generators/query-generator.ts index e5e13ea799..5cca74a013 100644 --- a/packages/generator/src/generators/query-generator.ts +++ b/packages/generator/src/generators/query-generator.ts @@ -1,5 +1,4 @@ -import {join} from "path" -import {Generator, GeneratorOptions} from "../generator" +import {Generator, GeneratorOptions, SourceRootType} from "../generator" import {camelCaseToKebabCase} from "../utils/inflector" export interface QueryGeneratorOptions extends GeneratorOptions { @@ -9,7 +8,7 @@ export interface QueryGeneratorOptions extends GeneratorOptions { export class QueryGenerator extends Generator { static subdirectory = "query" - sourceRoot = join(__dirname, "./templates/query") + sourceRoot: SourceRootType = {type: "template", path: "query"} // eslint-disable-next-line require-await async getTemplateValues() { diff --git a/packages/generator/src/utils/readdir-recursive.ts b/packages/generator/src/utils/readdir-recursive.ts new file mode 100644 index 0000000000..88919491d4 --- /dev/null +++ b/packages/generator/src/utils/readdir-recursive.ts @@ -0,0 +1,24 @@ +import {promises as fs} from "fs" +import path from "path" + +type Filter = (name: string, dir: string) => boolean + +export async function readdirRecursive(root: string, filter?: Filter, dir = ""): Promise { + const absoluteDir = path.resolve(root, dir) + const dirStats = await fs.stat(absoluteDir) + + if (dirStats.isDirectory()) { + let entries = await fs.readdir(absoluteDir) + + if (filter) { + entries = entries.filter((name) => filter(name, dir)) + } + + const recursiveList = await Promise.all( + entries.map((name) => readdirRecursive(root, filter, path.join(dir, name))), + ) + return recursiveList.flat(Infinity) as string[] + } else { + return [dir] + } +} diff --git a/packages/generator/templates/app/.editorconfig b/packages/generator/templates/app/.editorconfig new file mode 100644 index 0000000000..09d7a33a4f --- /dev/null +++ b/packages/generator/templates/app/.editorconfig @@ -0,0 +1,11 @@ +# https://EditorConfig.org + +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/packages/generator/templates/app/.vscode/extensions.json b/packages/generator/templates/app/.vscode/extensions.json new file mode 100644 index 0000000000..e9ff7b6ac5 --- /dev/null +++ b/packages/generator/templates/app/.vscode/extensions.json @@ -0,0 +1,12 @@ +{ + "recommendations": [ + "dbaeumer.vscode-eslint", + "editorconfig.editorconfig", + "esbenp.prettier-vscode", + "mikestead.dotenv", + "mgmcdermott.vscode-language-babel", + "orta.vscode-jest", + "prisma.prisma" + ], + "unwantedRecommendations": [] +} diff --git a/packages/generator/templates/app/.vscode/settings.json b/packages/generator/templates/app/.vscode/settings.json new file mode 100644 index 0000000000..124dc6d43d --- /dev/null +++ b/packages/generator/templates/app/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } +} diff --git a/packages/installer/src/executors/new-file-executor.tsx b/packages/installer/src/executors/new-file-executor.tsx index 505a5aa861..6546517718 100644 --- a/packages/installer/src/executors/new-file-executor.tsx +++ b/packages/installer/src/executors/new-file-executor.tsx @@ -1,4 +1,4 @@ -import {Generator, GeneratorOptions} from "@blitzjs/generator" +import {Generator, GeneratorOptions, SourceRootType} from "@blitzjs/generator" import {Box, Text} from "ink" import {useEffect, useState} from "react" import * as React from "react" @@ -26,14 +26,14 @@ interface TempGeneratorOptions extends GeneratorOptions { } class TempGenerator extends Generator { - sourceRoot: string + sourceRoot: SourceRootType targetDirectory: string templateValues: any returnResults = true constructor(options: TempGeneratorOptions) { super(options) - this.sourceRoot = options.templateRoot + this.sourceRoot = {type: "absolute", path: options.templateRoot} this.templateValues = options.templateValues this.targetDirectory = options.targetDirectory || "." } diff --git a/yarn.lock b/yarn.lock index 533d2c71be..54811858bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2214,6 +2214,24 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@juanm04/cpx@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@juanm04/cpx/-/cpx-2.0.0.tgz#e7f8a0748fda740cb980dfeb4f8ef3e96bfc88bc" + integrity sha512-MTiIUxpqAe+op8XESIrCzoTgYIiBVLw+AzXf+e4ikX9ox74D348T8SwBkz0ut3q9vOYAIR7uLqws7fCwnWqsfQ== + dependencies: + co "^4.6.0" + debounce "^1.1.0" + debug "^4.3.1" + duplexer "^0.1.1" + fs-extra "^9.1.0" + glob "^7.1.2" + glob2base "0.0.12" + minimatch "^3.0.4" + resolve "^1.8.1" + safe-buffer "^5.1.2" + shell-quote "^1.6.1" + subarg "^1.0.0" + "@lerna/add@3.21.0": version "3.21.0" resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.21.0.tgz#27007bde71cc7b0a2969ab3c2f0ae41578b4577b" @@ -3908,11 +3926,6 @@ dependencies: "@types/node" "*" -"@types/fs-readdir-recursive@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#404f77bdadc6b90cccd3f04d15f6dd85cdde38ef" - integrity sha512-1w3aDEWvddRoBCPm3hdGehNovSvqwe30dxplDH5bjZXoMCDVbntkbNENxfyScS4kYsovJYcwLPxJ9gjN/hh2Xg== - "@types/glob-stream@*": version "6.1.0" resolved "https://registry.yarnpkg.com/@types/glob-stream/-/glob-stream-6.1.0.tgz#7ede8a33e59140534f8d8adfb8ac9edfb31897bc" @@ -5005,14 +5018,6 @@ any-promise@^1.0.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -5123,19 +5128,12 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - 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.0.1, arr-flatten@^1.1.0: +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== @@ -5208,11 +5206,6 @@ array-uniq@^1.0.1: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -5324,7 +5317,7 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async-each@^1.0.0, async-each@^1.0.1: +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== @@ -5587,14 +5580,6 @@ babel-preset-jest@^26.6.2: babel-plugin-jest-hoist "^26.6.2" babel-preset-current-node-syntax "^1.0.0" -babel-runtime@^6.9.2: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - babel-walk@3.0.0-canary-5: version "3.0.0-canary-5" resolved "https://registry.yarnpkg.com/babel-walk/-/babel-walk-3.0.0-canary-5.tgz#f66ecd7298357aee44955f235a6ef54219104b11" @@ -5742,15 +5727,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -6351,22 +6327,6 @@ chokidar@3.5.1, chokidar@^3.5.1: optionalDependencies: fsevents "~2.1.2" -chokidar@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -7115,11 +7075,6 @@ core-js-pure@^3.0.0: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.1.tgz#23f84048f366fdfcf52d3fd1c68fec349177d119" integrity sha512-Se+LaxqXlVXGvmexKGPvnUIYC1jwXu1H6Pkyb3uBM5d8/NELMYCHs/4/roD7721NxrTLyv7e5nXd5/QLBO+10g== -core-js@^2.4.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - core-util-is@1.0.2, 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" @@ -7153,23 +7108,6 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cpx@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" - integrity sha1-GFvgGFEdhycN7czCkxceN2VauI8= - dependencies: - babel-runtime "^6.9.2" - chokidar "^1.6.0" - duplexer "^0.1.1" - glob "^7.0.5" - glob2base "^0.0.12" - minimatch "^3.0.2" - mkdirp "^0.5.1" - resolve "^1.1.7" - safe-buffer "^5.0.1" - shell-quote "^1.6.1" - subarg "^1.0.0" - crc32-stream@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85" @@ -7640,6 +7578,11 @@ dayjs@^1.9.6: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== +debounce@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -8862,13 +8805,6 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -8882,13 +8818,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - expand-tilde@2.0.2, 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" @@ -8953,13 +8882,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -9181,22 +9103,6 @@ filelist@^1.0.1: dependencies: minimatch "^3.0.4" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -9389,13 +9295,6 @@ for-in@^1.0.1, for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - for-own@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" @@ -9548,11 +9447,6 @@ fs-mkdirp-stream@^1.0.0: graceful-fs "^4.1.11" through2 "^2.0.3" -fs-readdir-recursive@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - 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" @@ -9568,7 +9462,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.0.0, fsevents@^1.2.7: +fsevents@^1.2.7: version "1.2.13" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== @@ -9914,7 +9808,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob2base@^0.0.12: +glob2base@0.0.12: version "0.0.12" resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" integrity sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY= @@ -10988,13 +10882,6 @@ is-dotfile@^1.0.0: resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - is-expression@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-4.0.0.tgz#c33155962abf21d0afd2552514d67d2ec16fd2ab" @@ -11052,7 +10939,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^2.0.0, is-glob@^2.0.1: +is-glob@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= @@ -11106,13 +10993,6 @@ is-npm@^4.0.0: resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -11120,11 +11000,6 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -11184,21 +11059,11 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - is-potential-custom-element-name@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - is-promise@^2.0.0, is-promise@^2.1.0: version "2.2.2" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" @@ -13059,11 +12924,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -13242,25 +13102,6 @@ micromatch@4.0.2, micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -13944,7 +13785,7 @@ normalize-package-data@^3.0.0: semver "^7.3.2" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: +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= @@ -14230,14 +14071,6 @@ object.map@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -15451,11 +15284,6 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -15899,15 +15727,6 @@ random-string@0.2.0: resolved "https://registry.yarnpkg.com/random-string/-/random-string-0.2.0.tgz#a46e4375352beda9a0d7b0d19ed6d321ecd1d82d" integrity sha1-pG5DdTUr7amg17DRntbTIezR2C0= -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -16195,7 +16014,7 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" -readdirp@^2.0.0, readdirp@^2.2.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== @@ -16293,11 +16112,6 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - regenerator-runtime@^0.13.4: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" @@ -16310,13 +16124,6 @@ regenerator-transform@^0.14.2: dependencies: "@babel/runtime" "^7.8.4" -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - 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" @@ -16466,7 +16273,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.6.1: +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= @@ -16629,7 +16436,7 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11. is-core-module "^2.1.0" path-parse "^1.0.6" -resolve@^1.19.0: +resolve@^1.19.0, resolve@^1.8.1: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==